x86 virtualization
From Wikipedia, the free encyclopedia
x86 virtualization is the method by which x86-based "guest" operating systems are run under another "host" x86 operating system, with little or no modification of the guest OS. The x86 processor architecture did not originally meet the Popek and Goldberg virtualization requirements. As a result, it was very difficult to implement a general virtual machine on an x86 processor. In 2005 and 2006, extensions to their respective x86 architectures by Intel and AMD resolved this and other virtualization difficulties.
Contents
[edit] Software techniques
On February 8, 1999, VMware introduced the first x86 virtualization product, "VMware Virtual Platform", based on earlier research by its founders at Stanford University. VMware filed for a patent on their techniques in October 1998, which was granted as U.S. Patent 6,397,242 on May 28, 2002. VMware and similar virtualization software for the x86 must employ binary translation techniques to trap and virtualize the execution of certain instructions. These techniques incur some performance overhead as compared to a VM running on a natively virtualizable architecture such as the IBM System/370 or Motorola MC68020.
Kevin Lawton started the Plex86 project (originally called "freemware") to create Free software for x86 virtualization. The focus of this project has since changed to support only Linux as a guest operating system, but prior to that, Lawton published the paper Running multiple operating systems concurrently on an IA32 PC using virtualization techniques, which gives an analysis of what aspects of the x86 architecture are hard to virtualize and some techniques to overcome these difficulties.
Microsoft offers three Windows-based x86 virtualization products: Microsoft Virtual PC and Microsoft Virtual Server, based on technology they acquired from Connectix, as well as Hyper-V.
Open source alternatives include QEMU and VirtualBox.
The research systems Denali, L4, and Xen explored ways to provide high performance virtualization of x86 by implementing a virtual machine that differs from the raw hardware. Operating systems are ported to run on the resulting virtual machine, which does not implement the hard-to-virtualize parts of the actual x86 instruction set. This technique is known as paravirtualization. As of 3.0 Xen also now supports full virtualization with an unmodified guest OS provided hardware-assisted virtualization support (i.e., Intel VT or AMD-V) is available.
[edit] Hardware support
Intel and AMD have independently developed virtualization extensions to the x86 architecture. They are not directly compatible with each other, but serve largely the same functions. Either will allow a virtual machine hypervisor to run an unmodified guest operating system without incurring significant emulation performance penalties.
[edit] AMD virtualization (AMD-V)
AMD's virtualization extensions to the 64-bit x86 architecture is named AMD Virtualization, abbreviated AMD-V. It is still referred to as "Pacifica", the AMD internal project code name.
AMD-V is present in AMD Athlon 64 and Athlon 64 X2 with family "F" or "G" on socket AM2 not 939, Turion 64 X2, Opteron 2nd generation[1] and 3rd generation[2], Phenom, and all newer processors. Sempron processors do not include support for AMD-V.
This wiki claims that on May 23, 2006, AMD released the Athlon 64 ("Orleans"), the Athlon 64 X2 ("Windsor") and the Athlon 64 FX ("Windsor") as the first AMD processors to support AMD-V. Prior processors do not have AMD-V.
AMD has published a specification for a technology named IO Memory Management Unit (IOMMU) to AMD-V. This provides a way of configuring interrupt delivery to individual virtual machines and an IO memory translation unit for preventing a virtual machine from using DMA to break isolation. The IOMMU also plays an important role in advanced operating systems (absent virtualization) and the AMD Torrenza architecture.
[edit] Intel Virtualization Technology (Intel VT)
Intel Virtualization Technology, or Intel VT, is a set of technologies from Intel for virtualization. It was introduced at the Intel Developer Forum in 2003,[3] and launched at the Intel Developer Forum in 2005.[citation needed] Intel VT is composed of Virtualization Technology for IA-32 (VT-x), Virtualization Technology for IA-64 (VT-i), Virtualization Technology for Directed I/O (VT-d), and Virtualization Technology for Connectivity (VT-c).
[edit] Virtualization Technology for IA-32
Virtualization Technology for IA-32 (VT-x), previously codenamed "Vanderpool", is Intel's technology for virtualization on the IA-32 platform. Intel plans to add Extended Page Tables (EPT),[4] a technology for page table virtualization,[5] in the upcoming Nehalem architecture.[6]
The following modern Intel processors include support for VT-x,[7]:
No Intel Celeron, Pentium Dual-Core or Pentium M processors have VT technology.
[edit] Virtualization Technology for IA-64
Virtualization Technology for IA-64 (VT-i), previously codenamed "Silvervale", is Intel's technology for virtualization on the IA-64 (Itanium) platform.
[edit] Virtualization Technology for Directed I/O
Intel's Virtualization Technology for Directed I/O (VT-d) is a technology that enables guest virtual machines to directly use peripheral devices, primarily through DMA and interrupt remapping.[8][9][10]
[edit] Virtualization Technology for Connectivity
Intel's Virtualization Technology for Connectivity (VT-c) is itself a collection of technologies that assists in I/O virtualization. It is composed of Virtual Machine Device Queues (VMDq), Intel I/O Acceleration Technology (I/OAT), and Single Root I/O Virtualization.[11] Intel QuickData Technology is a component of Intel I/OAT.[citation needed]
[edit] Software using AMD-V and/or Intel-VT
The following software is known to conditionally make use of virtualization technology features:
[edit] Open source
[edit] Closed source
[edit] Performance
Standard Performance Evaluation Corporation (SPEC) has created a working group to address the development of a set of industry standard methods to compare performance of virtualization technologies. Current members of the working group include AMD, Dell, Fujitsu Siemens, Hewlett-Packard, Intel, IBM, Sun Microsystems, SWsoft(Now Parallels) and VMware. SPEC is currently seeking information from the IT community to better understand the types of information that would provide the best industry benchmarks.


