x86 virtualization

From Wikipedia, the free encyclopedia

Jump to: navigation, search
Ubuntu running on Windows Vista, an example of virtualization

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

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]:

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:

[edit] See also

[edit] References

  1. ^ 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?
  2. ^ 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?
  3. ^ 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:10.1535/itj.1003.01. http://download.intel.com/technology/itj/2006/v10i3/v10-i3-art01.pdf. Retrieved on 2008-07-06. 
  4. ^ 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. 
  5. ^ 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. 
  6. ^ "Intel Processor Number Details". Intel. Intel. 2007-12-03. http://www.intel.com/products/processor_number/chart/index.htm. Retrieved on 2008-10-03. 
  7. ^ "VirtualBox architecture". InnoTek. http://www.virtualbox.org/wiki/VirtualBox_architecture. 
  8. ^ [1][2]
  9. ^ "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. 
  10. ^ "Virtual Server 2005 R2 SP1 - beta 2 feature listing". Microsoft. http://www.microsoft.com/windowsserversystem/virtualserver/downloads/servicepack.mspx. 
  11. ^ Oracle VM Technical Information
  12. ^ "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. 
Personal tools