Native virtualization uses hardware assists
Server virtualization is an approach by which processor architecture is virtualized to allow multiple operating systems to run in isolation on the same hardware. The software that provides this capability is often referred to as a virtual machine monitor or hypervisor.
There’s a new approach to virtualizing the x86 processor architecture called native virtualization. Native virtualization leverages new hardware-assisted capabilities available in the latest processors from Intel and Advanced Micro Devices (AMD) to provide near-native performance.
Prior to these processors, the x86 architecture did not meet some fundamental requirements for virtualization, making it difficult to implement a VMM for this type of processor. These requirements include:
• Equivalence: A program running under the virtual machine should exhibit a behavior essentially identical to the original physical machine.
• Resource control: The virtual machine must be in complete control of the virtualized resources.
• Efficiency: The virtual machine should not significantly degrade workload performance.
Historically virtualization of the x86 architecture has been accomplished in two ways: through full virtualization or paravirtualization. Both create the illusion of physical hardware to achieve the goal of operating system independence from the hardware but present some trade-offs in performance and complexity.
Paravirtualization, as a technique for virtualizing x86 architecture, has primarily been used for university research. The research projects employ this technique to run modified versions of operating systems, for which source code is readily available (such as Linux and FreeBSD). Paravirtualization requires radical modifications of the operating system and therefore cannot support deployed operating systems. As a result, this approach cannot be seriously considered within a commercial environment.
Full virtualization is implemented in first-generation VMMs in use today. It relies on sophisticated, but fragile, software techniques to trap and virtualize the execution of certain sensitive, nonvirtualizable instructions in software via binary patching. With these techniques, critical instructions are discovered at run-time and replaced with a trap into the VMM to be emulated in software. These methods incur large performance overhead as compared with a virtual machine running on natively virtualized architectures such as the IBM System/370. This becomes a major problem in the area of system calls, interrupt virtualization and frequent access to the privileged resources. As a result, first-generation VMMs have been relegated to applications that are not mission critical and do not tax performance.
Recently Intel and AMD released processors with hardware-assisted virtualization support built in. With these new processor capabilities, the x86 architecture now meets the virtualization requirements stated above, making native virtualization a reality.
With native virtualization the VMM simulates the complete hardware, allowing an unmodified operating system for the same type of CPU to execute within the virtual machine container. With native virtualization, the VMM can efficiently virtualize the x86 instruction set by handling the sensitive, nonvirtualizable instructions using a classic trap-and-emulate model in hardware vs. software. It also uses performance analysis to selectively employ acceleration techniques for memory and I/O operations.
Native virtualization offers considerable benefit to users in performance and ease of implementation. It’s worthy of consideration for those planning their next steps in server virtualization.
Barclay is the director of product management at Virtual Iron Software. He can be reached at cbarclay@virtualiron.com.




