X86 virtualization

From Wikipedia, the free encyclopedia

The correct title of this article is x86 virtualization. The initial letter is shown capitalized due to technical restrictions.

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 very sophisticated 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 Mr. 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 two Windows-based x86 virtualization products, Microsoft Virtual PC and Microsoft Virtual Server, based on technology they acquired from Connectix.

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.

[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] Intel VT (IVT)

Intel's virtualization extension for 32-bit and 64-bit x86 architecture is named IVT (short for Intel Virtualization Technology), and is sometimes referred to by the development code name "Vanderpool". The 32-bit or IA-32 IVT extensions are referred to as VT-x [1]. Intel has also published specifications for IVT for the IA-64 (Itanium) processors which are referred to as VT-i [1]; formerly the IA-64 virtualization was code-named "Silvervale". However, since 2005, new Itanium processors no longer implement the x86 instructions in hardware, so x86 virtualization on IA-64, if implemented, will be via emulation.

Intel VT was officially launched at the Intel Developer Forum Spring 2005. It is available on certain Pentium 4 6x1 and 6x2 models[2], Pentium D 9x0, Xeon 3xxx/5xxx/7xxx [1], Core Duo (excluding T2300E) and Core 2 Duo processors (excluding the T5200, T5500, E4x00). On some implementations, IVT support may be switched off in the BIOS/EFI. This can be determined by checking if the VMX flag is enabled by the Feature Control MSR.

Documentation on the Intel website has stated that VT requires not only support from the processor, but also support from the chipset, BIOS, and perhaps software [3][4].

Intel plans to add a technology named Virtualization for Directed I/O to VT. It will provide what AMD provides with IOMMU.

[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 K8 AMD processors from stepping "F" onwards.

[edit] Software utilizing VT

The following software is known to conditionally make use of virtualization technology features:

  • Blue Pill (malware) uses AMD Pacifica
  • Kernel-based Virtual Machine (KVM)
  • Microsoft Virtual PC — As of Virtual PC 2007 supports both Intel VT-x and AMD AMD-V. VPC 2007 was released on 19 February 2007
  • Microsoft Virtual Server — a future version (Virtual Server 2005 R2 SP1, to be released in Q1 2007[5][6]) will support Intel VT and AMD Pacifica extensions.
  • Parallels Workstation — lightweight hypervisor with Intel VT-x and AMD AMD-V support (AMD support on Macs is nonexistent as Macs do not use AMD processors)
  • TRANGO real-time embedded hypervisor
  • VirtualBox supports VT, but does not enable it by default. As with VMware, the developers state that it slows down virtualization, at least for those guest operating systems for which their software virtualization has been optimized.[7]
  • VMware — on Intel processors, VMware Workstation 5.5 requires Intel VT to execute 64-bit guests.[8] For 32-bit guests, use of VT is possible but not enabled by default because for normal workloads it's slower.[9][10]
  • Virtual Iron - Virtual Iron 3.1 is the first virtualization software that fully supports hardware-assisted virtualization (Intel-VT and AMD-V) to execute unmodified 32 and 64-bit guest operating systems (Windows, RedHat and Suse) with near native performance. Intel and AMD both have contributed support for their extensions to the Virtual Iron open source virtualization, allowing it to execute unmodified guest operating systems. Virtual Iron refers to this architecture as "native virtualization".
  • VirtualLogix VLX uses hardware assised virtualization (VT) to run unmodified guest OSs including Linux and Real-Time operating systems.
  • Xen — Xen 3.0, open source (GPL) virtualization, uses Intel VT to execute unmodified guest operating systems. Both Intel and AMD have contributed support for their virtualization extensions to the Xen virtual machine monitor, allowing it to execute unmodified guest operating systems.

[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, 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.

[edit] Windows Vista

Windows Vista Home Basic and Home Premium's End User License Agreements state that they may not be installed on a virtual machine, even though they run perfectly on many.

[edit] See also

[edit] References

  1. ^ a b Intel Virtualization Technology. Intel.
  2. ^ Processor Spec Finder. Intel Corp.. Retrieved on March 22, 2007.
  3. ^ Intel Processors Supporting VT. Xen Source.
  4. ^ Intel Pentium 4 Processor 6xx Sequence and Intel Pentium 4 Processor Extreme Edition Datasheet. Intel.
  5. ^ Virtual Server 2005 R2 SP1 Beta 1 download link and availability details. technet.com (2006-04-28).
  6. ^ Virtual Server 2005 R2 SP1 - beta 2 feature listing. Microsoft.
  7. ^ VirtualBox architecture. InnoTek.
  8. ^ Hardware Requirements for 64-Bit Guest Operating Systems. VMWare.
  9. ^ Adams, Keith; Agesen, Ole (2006). A Comparison of Software and Hardware Techniques for x86 Virtualization. VMWare.
  10. ^ How to check if Vanderpool usage is enabled?. VMware (March 2006). Article suggests adding monitor_control.vt32 = "TRUE" to the *.vmx file will enable use of hardware VT.

[edit] External links

General links
Hardware virtualization VT from Intel
Hardware virtualization Pacifica from AMD
(non-x86) Hardware virtualization from IBM
(non-x86) Hardware virtualization for SPARC
Blogs discussing virtualization technologies