I wrote about server appliances last week, and observed in passing that Rebel.com and Cobalt, both purveyors of Linux-based boxes, had switched from embedded RISC processors to x86-compatible chips in their most recent generation products. This gave me pause, since the x86 instruction set, first introduced with Intel's 8086 and still alive and well in the Pentium IV, has long been decried by the cognoscenti as mostly dead.
What is x86 really?
The x86 instruction set is the basic language that all x86-compatible microprocessors understand. It's been modified and expanded over the years, but the core remains the same. Since this is the lowest-level language that a processor understands, the processor's hardware architecture is -- theoretically -- exposed by this instruction set.
However, the irony of it all is that few (if any) contemporary x86 processors actually execute these instructions directly. Inside, most of today's x86-compatibles have many RISC-like features, but they still accept the standard x86 instructions.
Inside the processor, these instructions are typically translated and broken apart into less complex instructions, which are then scheduled and executed by the "real" processor inside. In a nutshell, today's x86 processors are hardware-based x86 emulators that have a very different internal mode of operation.
Transmeta clued into this idea and instead of having a hardware-based decoder, it has a software-based one. This not only provides Transmeta with the benefit of improving its code morphing software over time, but having the process be software-based and freed from many of the constraints of hardware, the translator can pay attention to more context about the software it's running than a built-in software decoder could. The Transmeta chip is in effect an emulator accelerator.
Were it not for the strides made in processor design over the past decades, and various processor engineering teams coming up with clever ways to take clever new ideas and use them to speed things up, x86 would've been dead a long time ago. But because of the huge base of installed software for many operating systems, x86 continues to be the lingua franca of the personal computer world. In many ways, this goal of having software compiled into a binary format that can run on many different processors was one of Java's early selling points.
x86 has become a bytecode format. With that bit of theoretical background in place, back to server appliances. Rebel.com's first-generation NetWinder used a StrongARM chip as its CPU, which is a fine, low-power, and high-performance processor. Intel's purchase of the StrongARM technology and its subsequent evolution into the spiffy XScale processor, makes for a solid case to stick with it.
But according to Michael Whitehead, Rebel.com's vice president of research and development, the decision to move the newest generation NetWinder to a Transmeta Crusoe processor made sense for two particular reasons. While the Crusoe has impressive low-power characteristics, its x86 compatibility was the clincher. Linux application availability is highest for Linux-on-x86, and Rebel.com's customers conveyed this.
In talking with Cobalt product marketing manager Pierre Reynes, the same story came out. Cobalt uses AMD K6-2 processors in its current boxes, having migrated over from the MIPS processors used in previous generations. While the AMD's power demands are noticeably higher than those of the MIPS chip, customer demand for applications available only for x86 was the big factor for Cobalt's switch as well.
Is Linux x86-centric?
Like anyone who's paying a modicum of attention, I know that Linux compiles readily on many different processor architectures and hardware configurations. But that doesn't make the slightest bit of difference if application vendors making non-open-source software for Linux decide that Linux-on-x86 is the only "real" Linux.
This is a vexing problem, since one of the great hope of Linux's portability was that it would level the playing field for the many non-x86 processors out there. Instead, the playing field has stayed roughly the same, but new playing fields in the embedded space have been created where Linux-NOT-on-x86 has flourished.
Given all the reasons that x86 is a really bad instruction set to build software in, the x86 looks like it still has a long life ahead of it--Intel's hardware-based emulation in its forthcoming Itanium and successor chips is a further item of supprting evidence--largely because it has become a software description language that is readily understood by software and hardware alike.
ZDNet columnist Stephan Somogyi considers the following quote from the Virtual PC about box particularly appropriate: "Endian little hate we."