In computing, hardware-assisted virtualization is a platform
virtualization approach that enables efficient full virtualization using help
from hardware capabilities, primarily from the host processors. Full
virtualization is used to simulate a complete hardware environment, or
virtual machine, in which an unmodified guest operating system executes in
complete isolation. Hardware-assisted virtualization was added to x86
processors in 2006. Hardware-assisted virtualization is also
known as accelerated virtualization; Xen calls it hardware virtual machine, and
Virtual Iron calls it native virtualization.
History Hardware-assisted virtualization first
appeared on the IBM System/370 in 1972, for use with VM/370, the first
virtual-machine operating system. With the increasing demand for
high-definition computer graphics, virtualization of mainframes lost some
attention in the late 1970s, when the upcoming minicomputers fostered resource
allocation through distributed computing, encompassing the
commoditization of microcomputers. IBM offer hardware virtualization for
their POWER CPUs under AIX and for their IBM-Mainframes System z. IBM refers to
their specific form of hardware virtualization as "logical partition",
or more commonly as LPAR. The increase in compute capacity per x86
server and in particular the substantial increase in modern networks' bandwidths
rekindled interest in data-center based computing which is based on
virtualization techniques. The primary driver was the potential for server
consolidation: virtualization allowed a single server to cost-efficiently
consolidate compute power on multiple underutilized dedicated servers. Cloud
computing as the new synonym for the said data center based computing through
high bandwidth networks is the most visible hallmark of a return to the
roots of computing. It is closely connected to virtualization.
The initial implementation x86 architecture did not meet the Popek and
Goldberg virtualization requirements to achieve "classical virtualization":
equivalence: a program running under the virtual machine monitor should exhibit a
behavior essentially identical to that demonstrated when running on an
equivalent machine directly resource control: the VMM must be in
complete control of the virtualized resources
efficiency: a statistically dominant fraction of machine instructions must be
executed without VMM intervention This made it difficult to implement a
virtual machine monitor for this type of processor. Specific limitations included
the inability to trap on some privileged instructions.
To compensate for these architectural limitations, designers have accomplished
virtualization of the x86 architecture through two methods: 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 is a technique in which the hypervisor provides an API and
the OS of the guest virtual machine calls that API, requiring OS
modifications. Full virtualization was implemented in
first-generation x86 VMMs. It relies on binary translation to trap and
virtualize the execution of certain sensitive, non-virtualizable
instructions. With this approach, critical instructions are discovered and
replaced with traps into the VMM to be emulated in software. Binary translation
can incur a large performance overhead in comparison to a virtual machine
running on natively virtualized architectures such as the IBM
System/370. VirtualBox, VMware Workstation, and Microsoft Virtual PC,
are well-known commercial implementations of full virtualization.
In 2005 and 2006, Intel and AMD created new processor extensions to the x86
architecture called Intel VT-x and AMD-V, respectively. The first
generation of x86 processors to support these extensions were released in late
2005 early 2006: On November 13, 2005, Intel released two
models of Pentium 4 as the first Intel processors to support VT-x.
On May 23, 2006, AMD released the Athlon 64, the Athlon 64 X2 and the Athlon 64
FX as the first AMD processors to support this technology.
Well-known implementations of hardware-assisted x86 virtualization
include VMware Workstation, Xen 3.x, Linux KVM and Microsoft Hyper-V.
Pros Hardware-assisted virtualization reduces
the maintenance overhead of paravirtualization as it reduces the
changes needed in the guest operating system. It is also considerably easier
to obtain better performance. A practical benefit of hardware-assisted
virtualization has been cited by VMware engineers and Virtual Iron.
Cons Hardware-assisted virtualization
requires explicit support in the host CPU, which is not available on all
x86/x86_64 processors. A "pure" hardware-assisted
virtualization approach, using entirely unmodified guest operating systems,
involves many VM traps, and thus high CPU overheads, limiting scalability and
the efficiency of server consolidation. This performance hit can be mitigated by
the use of paravirtualized drivers; the combination has been called "hybrid
virtualization". In 2006 first-generation 32- and 64-bit
x86 hardware support was found rarely to offer performance advantages over
software virtualization. See also
Further refinements of hardware-assisted virtualization are possible using an
IOMMU; this allows native-speed access to dedicated hardware from a guest
operating system, including DMA-capable hardware
Rapid Virtualization Indexing Extended Page Table
Other virtualization techniques include operating system-level virtualization,
as practiced by Parallels Virtuozzo Containers, and application
virtualization. Nanokernel
Hardware emulation Emulator
Joint Test Action Group Background Debug Mode interface
In-circuit emulator References
^ Adams, Keith. "A Comparison of Software and Hardware Techniques for x86
Virtualization". Retrieved 20 January 2013.
^ Chris Barclay, New approach to virtualizing x86s, Network World, 102006
^ See om12/graphics-and-io-virtualization.html
^ See http:www.valinux.co.jptech2007Intel.pdf
^ Jun Nakajima and Asit K. Mallick, Hybrid-Virtualization—Enhanced
Virtualization for Linux, in Proceedings of the Linux Symposium, Ottawa, June
2007, .redhat.comReprints/nakajima-Reprint.pdf
^ A Comparison of Software and Hardware Techniques for x86 Virtualization, Keith
Adams and Ole Agesen, VMware, ASPLOS’06 October 21–25, 2006, San Jose,
California, USA"Surprisingly, we find that the first-generation hardware
support rarely offers performance advantages over existing software
techniques. We ascribe this situation to high VMM/guest transition costs and a
rigid programming model that leaves little room for software flexibility in
managing either the frequency or cost of these transitions.
Further reading Fisher-Ogden, John. "Hardware Support
for Efficient Virtualization". UCSD. Retrieved 2010-08-05.
Smith, Jim; Nair, Ravi. Virtual Machines. Morgan Kaufmann. 8.5 :
Performance Enhancement of System Virtual Machines. ISBN 1-55860-910-5.
Osisek, D. L.; Jackson, K. M.; Gum, P. H.. "ESA/390 interpretive-execution
architecture, foundation for VM/ESA". IBM Systems Journal 30.
Adams, Keith; Agesen, Ole. A Comparison of Software and Hardware Techniques for
x86 Virtualization. International Conference on Architectural Support for
Programming Languages and Operating Systems, San Jose, CA, USA. ACM
1-59593-451-00010. Retrieved 2006-12-22. "Performance Evaluation of AMD RVI
Hardware Assist". VMware. "Performance Evaluation of Intel EPT
Hardware Assist". VMware.