x86 virtualization
From Wikipedia, the free encyclopedia
This article may require copy-editing for grammar, style, cohesion, tone or spelling. You can assist by editing it now. A how-to guide is available. (August 2008) |
x86 virtualization is the method by which x86-based "guest" operating systems can run within 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, and received 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 subsequently 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 solutions include QEMU, Kernel-based Virtual Machine 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. This approach, known as paravirtualization, involves porting operating systems to run on the resulting virtual machine, which does not implement the hard-to-virtualize parts of the actual x86 instruction set. As of 3.0 Xen 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
This section needs additional citations for verification. Please help improve this article by adding reliable references (ideally, using inline citations). Unsourced material may be challenged and removed. (January 2009) |
Intel and AMD have independently developed virtualization extensions to the x86 architecture. Though not directly compatible with each other, they 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 markets its virtualization extensions to the 64-bit x86 architecture as AMD Virtualization, abbreviated AMD-V. It is still referred to as "Pacifica", the AMD internal project code name.
AMD-V operates on 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.
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.
[edit] Intel Virtualization Technology for x86 (Intel VT-x)
Previously codenamed "Vanderpool", VT-x represents Intel's technology for virtualization on the x86 platform. Intel plans to add Extended Page Tables (EPT),[3] a technology for page table virtualization,[4] in the Nehalem architecture.[5]
The following modern Intel processors include support for VT-x,[6]:
- Pentium 4 662 and 672
- Pentium Extreme Edition 955 and 965 (not Pentium 4 Extreme Edition with HT)
- Pentium D 920-960 except 945, 935, 925, 915
- some models of the Core processors family
- some models of the Core 2 processors family (list here)
- Xeon 3000 series
- Xeon 5000 series
- Xeon 7000 series
- some models of the Atom processor family
- all Intel Core i7 processors
Neither Intel Celeron, Pentium Dual-Core nor Pentium M processors have VT technology.
[edit] IOMMU
A input/output memory management unit (IOMMU) enables guest virtual machines to directly use peripheral devices, such as ethernet and accelerated graphics cards, through DMA and interrupt remapping. Both AMD and Intel have released specifications. AMD calls it by what it is ("IOMMU") and Intel calls their implementation "Intel's Virtualization Technology for Directed I/O (VT-d)"..
[edit] A note on 64-bit guests
One can run a 64-bit guest on a 32-bit host OS, if the underlying processor runs in 64-bit mode and supports virtualization extensions; however not all platforms support this. Note, however, that a 32-bit host OS's memory addressing limits can become problematic, and users should generally install 64-bit operating systems on 64-bit capable processors.
[edit] Virtualization features activation
Intel's VT-x feature needs activation in the BIOS before applications can make use of it. Most computer and motherboard/BIOS/chipset manufacturers disable this support by default but make an option available to activate it, most do not. The AMD-V feature may also be controlled by a BIOS setting.[citation needed]
[edit] Software using AMD-V and/or Intel VT
The following software conditionally makes use of virtualization technology features:
- Kernel-based Virtual Machine (KVM) - a Linux kernel module and hypervisor. It supports both architectures (AMD-V and VT-x) and requires one of them. Supports real-time guests.
- VirtualBox runs on Windows, Linux, Mac OS X and Solaris. It supports both architectures. [7]
- Xen — Xen is a separate and independent operating system that virtualizes everything else on the machine. It supports both architectures, but does not require them for supported guest OS's.
- Blue Pill (proof of concept malware)
- Hyper-V - Microsoft's Windows Server 2008 hosted platform (requires hardware virtualization support).[8]
- LynxSecure - Secure MILS Hypervisor from LynuxWorks. Supports Intel VT-x and VT-d.
- Microsoft Virtual Server — Virtual Server 2005 R2 SP1 supports hardware assisted virtualization.[clarification needed][9][10]
- Microsoft Virtual PC
- Oracle VM - Oracle VM Server (GPL license) uses the Xen hypervisor; while Oracle VM Manager is closed source. [11]
- Parallels Workstation and Parallels Desktop for Mac — lightweight hypervisor with Intel VT-x and AMD-V support.
- Parallels Server (Beta) — Enterprise version of Parallels Workstation and Desktop for Mac. It will support Intel's IOMMU, VT-d.
- Padded Cell - virtual machine technology from Green Hills Software hosted on INTEGRITY real-time operating system. Supports both architectures.
- Real-Time Systems RTS Real-Time Hypervisor for x86
- Sun xVM - xVM Server is based on Xen on x64
- Virtual Iron - Supports both architectures.
- VirtualLogix - Supports both architectures.
- VMware Workstation, VMware Fusion, VMware Server — Recent versions support both architectures.[12]
- VMware ESX Server - Requires hardware support to run 64 bit virtual machines.
- VMware Server - Requires hardware support to run 64 bit virtual machines.
[edit] See also
- Virtualization
- Virtualization Development
- Virtual machine
- Comparison of platform virtual machines
- Comparison of application virtual machines
- Emulation
- Hardware-assisted virtualization
- Network virtualization
- Paravirtualization
- Operating system-level virtualization
[edit] References
- ^ http://www.amd.com/us-en/Processors/ProductInformation/0,,30_118_8796_8806~111165,00.html#111166 What are the main differences between Second-Generation AMD Opteron processors and first-generation AMD Opteron processors?
- ^ http://www.amd.com/us-en/Processors/ProductInformation/0,,30_118_8796_8806~119722,00.html#119726 What virtualization enhancements do Third-Generation AMD Opteron processors feature?
- ^ Neiger, Gil; A. Santoni, F. Leung, D. Rodgers, R. Uhlig. "Intel Virtualization Technology: Hardware Support for Efficient Processor Virtualization". Intel Technology Journal (Intel) 10 (3): 167–178. doi:. http://download.intel.com/technology/itj/2006/v10i3/v10-i3-art01.pdf. Retrieved on 2008-07-06.
- ^ Gillespie, Matt (2007-11-12). "Best Practices for Paravirtualization Enhancements from Intel Virtualization Technology: EPT and VT-d". Intel Software Network. Intel. http://software.intel.com/en-us/articles/best-practices-for-paravirtualization-enhancements-from-intel-virtualization-technology-ept-and-vt-d. Retrieved on 2008-07-06.
- ^ Intel (application/pdf). First the Tick, Now the Tock: Next Generation Intel Microarchitecture (Nehalem). Press release. http://www.intel.com/pressroom/archive/reference/whitepaper_Nehalem.pdf. Retrieved on 2008-07-06.
- ^ "Intel Processor Number Details". Intel. Intel. 2007-12-03. http://www.intel.com/products/processor_number/chart/index.htm. Retrieved on 2008-10-03.
- ^ "VirtualBox architecture". InnoTek. http://www.virtualbox.org/wiki/VirtualBox_architecture.
- ^ [1][2]
- ^ "Virtual Server 2005 R2 SP1 Beta 1 download link and availability details". technet.com. 2006-04-28. http://blogs.technet.com/jhoward/archive/2006/04/28/426703.aspx.
- ^ "Virtual Server 2005 R2 SP1 - beta 2 feature listing". Microsoft. http://www.microsoft.com/windowsserversystem/virtualserver/downloads/servicepack.mspx.
- ^ Oracle VM Technical Information
- ^ "Hardware Requirements for 64-Bit Guest Operating Systems". VMware, Inc.. 2007-03-20. http://www.vmware.com/support/kb/enduser/std_adp.php?p_faqid=1901. Retrieved on 2007-10-10.