The great PC rip and replace

analysis
May 18, 20053 mins

You could live without 64 bits and dual-core, but not hardware virtualization -- it'll cost you

Were it not for AMD’s reinvention of the x86 system for Opteron and Athlon XP, I wouldn’t be surprised to find that most IT buyers have the location of Dell’s “go to checkout” button programmed into their fingers. The lack of a need to do a gear-grinding platform shift, much less a retroactive rip and replace, is the core attraction of x86 systems. At its heart, a 32-bit Xeon is surprisingly comparable to a one-chip Pentium Pro.

That’s coming to an end. You may wave off my warning that Opteron (the system architecture, not just the CPU) would relegate other x86 systems to the recycle bin. But you will thank me later if you heed this advice: Make room for Vanderpool and Pacifica. These on-chip virtualization technologies from Intel and AMD, respectively, mark the second of what will be several forks in the road that render your existing PC’s incapability of delivering a crucial set of capabilities. The first fork was 64-bit: You cannot make a Pentium Pro run 64-bit code. In 2006 you’ll be buying PCs that do what even today’s 64-bit x86 processors can’t do: hardware-assisted virtualization.

Vanderpool will add the guts needed to support a true hypervisor (see last week’s column) on 64-bit Pentium desktop and Xeon server CPUs. Pacifica will do the same for AMD’s Athlon 64 and Opteron lines. You’ll be able to split one machine into two or five or 10 virtual machines with performance that will drop your jaw.

Why all the fuss? I had a chance to talk with one of AMD’s Pacifica engineers and was amazed by the elegant simplicity of AMD’s hardware-assisted virtualization.

A context switch occurs whenever the x86 CPU, at the OS’s request, suspends one running process and activates another. This needs to occur so rapidly that the x86 is specially designed to accommodate it. A process’ context is its view of its executing state as defined by processor registers and flags. Registers and flags tell a process what to execute next, what the outcome of its previously executed instruction was, and where it fits in the stack (a small block of memory for temporary storage), among a few other things. The x86 makes it easy to stash and retrieve its execution state, and that’s how Windows and other OSes can manage thousands of context switches per second.

The hurdle that software virtualization has to leap is the x86 processor’s inadequate concept of context. A virtual machine’s concept of context extends well beyond CPU registers and flags.

Pacifica and Vanderpool expand the CPU’s notion of context to bring it much closer to the CPU state switch that virtualization requires. The x86 CPU will, under OS or virtualization engine control, handle wholesale CPU state switches almost as easily as the x86 handles context switches today. And by extending the concept of the trap — a “when a process tries to do this, jump to this code” that’s mostly used for security — Pacifica (and likely Vanderpool, although I’m not up to speed on that yet) will allow a virtual machine to do something incredible: replace selected x86 instructions with vendor-written code. It will be possible, under these new architectures, to take multiple approaches to virtualization that enlists the CPU’s aid to degrees.

Vanderpool and Pacifica are technologies you will need when they become available, and the best way to prepare is to get software virtualization running now.