It used to be that instruction-set architectures were sacred. If you were a microprocessor or microcontroller vendor, you could change anything you wanted to change-the way the core worked, the arrangement of peripherals, the timing, the pinout, even the name. But you had to leave the instruction set alone.
Design teams, who all relied heavily on assembly code for critical routines, had too much invested in code from previous projects, which they actually did reuse. And they had too much experience with one instruction set and tool chain to willingly switch to another.
But for some reason, the rules seem to have changed of late. Design teams are moving to new architectures much more easily than they ever would have five years ago. Partly this is out of necessity: Motorola's thoughtful decision to just stop engineering on the 68000 instruction set, for instance, left a whole industry without a migration path, opening the door for Sparc, MIPS, ARM and even PowerPC processors to rush in and win designs. But that is kind of a special case, to be sure.
Nintendo's recent announcement that it was switching from MIPS to PowerPC-and a heavily customized PowerPC at that-for its next-generation game console was a more telling example.
The Nintendo folks recognized there would be work to do in moving to the new design. But much of their code is now in C, with only carefully isolated areas of assembler. Much of the code, one suspects, will have to be rewritten anyway, because the massive changes in system architecture made possible by a 0.18-micron process have rendered the old code obsolete. And the relative agility with which software-tool vendors can move a tool suite from one instruction set to another means that the new instruction set will have an adequate compiler and debug support.
If this is a trend, it is great news for companies such as Tensilica and ARC, which offer their customers the ability to configure the instruction set. If there is no longer a big cost to drag old code into a new architecture, if you can count on tool support once you get there and if adding new, complex instructions to the CPU core is relatively easy, then it makes great sense for Nintendo to ask IBM to put special instructions in a PowerPC core, or for a smaller customer to ask the same of Tensilica or ARC.
There's much performance to gain, and apparently not that much learning curve to lose.