The first generation of x86 hardware virtualization addressed the issue of privileged instructions. The issue of low performance of virtualized system memory was addressed with
MMU virtualization that was added to the chipset later. In 2005 and 2006,
Intel and
AMD (working independently) created new
processor extensions to the x86 architecture, resulting in two separate, binary incompatible x86 virtualization extension variants - Intel's VT-x and AMD-V.
Central processing unit Virtual 8086 mode Because the
Intel 80286 could not run concurrent DOS applications well by itself in protected mode, Intel introduced the
virtual 8086 mode in their
80386 chip, which offered virtualized 8086 processors on the 386 and later chips. Hardware support for virtualizing the protected mode itself, however, became available 20 years later.
AMD virtualization (AMD-V) die AMD developed its first generation virtualization extensions under the code name "Pacifica", and initially published them as AMD Secure Virtual Machine (SVM), but later marketed them under the trademark
AMD Virtualization, abbreviated
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 this technology. AMD-V capability also features on the
Athlon 64 and
Athlon 64 X2 family of processors with revisions "F" or "G" on
socket AM2,
Turion 64 X2, and
Opteron 2nd generation and third-generation,
Phenom and
Phenom II processors. The
APU Fusion processors support AMD-V. AMD-V is not supported by any
Socket 939 processors. The only
Sempron processors which support it are APUs and
Huron,
Regor,
Sargas desktop CPUs. AMD Opteron CPUs beginning with the Family 0x10 Barcelona line, and Phenom II CPUs, support a second generation hardware virtualization technology called
Rapid Virtualization Indexing (formerly known as Nested Page Tables during its development), later adopted by Intel as
Extended Page Tables (EPT). As of 2019, all
Zen-based AMD processors support AMD-V. The
CPU flag for AMD-V is "svm". This may be checked in
BSD derivatives via
dmesg or
sysctl and in
Linux via /proc/
cpuinfo.
Intel virtualization (VT-x) (Bloomfield) CPU Previously codenamed "Vanderpool", VT-x represents Intel's technology for virtualization on the x86 platform. On November 14, 2005, Intel released two models of
Pentium 4 (Model 662 and 672) as the first Intel processors to support VT-x. The CPU flag for VT-x capability is "vmx"; in Linux, this can be checked via /proc/cpuinfo, or in
macOS via sysctl machdep.cpu.features. "VMX" stands for Virtual Machine Extensions, which adds 13 new instructions: VMPTRLD, VMPTRST, VMCLEAR, VMREAD, VMWRITE, VMCALL, VMLAUNCH, VMRESUME, VMXOFF, VMXON, INVEPT, INVVPID, and VMFUNC. These instructions permit entering and exiting a virtual execution mode where the guest OS perceives itself as running with full privilege (ring 0), but the host OS remains protected. , almost all newer server, desktop and mobile Intel processors support VT-x, with some of the
Intel Atom processors as the primary exception. With some
motherboards, users must enable Intel's VT-x feature in the
BIOS setup before applications can make use of it. Intel started to include
Extended Page Tables (EPT), a technology for page-table virtualization, since the
Nehalem architecture, released in 2008. In 2010,
Westmere added support for launching the logical processor directly in
real mode a feature called "unrestricted guest", which requires EPT to work. Since the
Haswell microarchitecture (announced in 2013), Intel started to include
VMCS shadowing as a technology that accelerates
nested virtualization of VMMs. The
virtual machine control structure (VMCS) is a
data structure in memory that exists exactly once per VM, while it is managed by the VMM. With every change of the execution context between different VMs, the VMCS is restored for the current VM, defining the state of the VM's virtual processor. As soon as more than one VMM or nested VMMs are used, a problem appears in a way similar to what required shadow page table management to be invented, as described
above. In such cases, VMCS needs to be shadowed multiple times (in case of nesting) and partially implemented in software in case there is no hardware support by the processor. To make shadow VMCS handling more efficient, Intel implemented hardware support for VMCS shadowing.
VIA virtualization (VIA VT) VIA Nano 3000 Series Processors and higher support VIA VT virtualization technology compatible with Intel VT-x. EPT is present in
Zhaoxin ZX-C, a descendant of
VIA QuadCore-E &
Eden X4 similar to Nano
C4350AL.
Interrupt virtualization (AMD AVIC and Intel APICv) In 2012, AMD announced their
Advanced Virtual Interrupt Controller (
AVIC) targeting interrupt overhead reduction in virtualization environments. This technology, as announced, does not support
x2APIC. In 2016, AVIC is available on the AMD family 15h models 6Xh (Carrizo) processors and newer. Also in 2012, Intel announced a similar technology for interrupt and
APIC virtualization, which did not have a brand name at its announcement time. Later, it was branded as
APIC virtualization (
APICv) and it became commercially available in the
Ivy Bridge EP series of Intel CPUs, which is sold as
Xeon E5-26xx v2 (launched in late 2013) and as Xeon E5-46xx v2 (launched in early 2014).
Graphics processing unit Graphics virtualization is not part of the x86 architecture. Intel
Graphics Virtualization Technology (GVT) provides graphics virtualization as part of more recent Gen graphics architectures. Although
AMD APUs implement the
x86-64 instruction set, they implement AMD's own graphics architectures (
TeraScale,
GCN and
RDNA) which do not support graphics virtualization.
Larrabee was the only graphics
microarchitecture based on x86, but it likely did not include support for graphics virtualization.
Chipset Memory and I/O virtualization is performed by the
chipset. Typically these features must be enabled by the BIOS, which must be able to support them and also be set to use them.
I/O MMU virtualization (AMD-Vi and Intel VT-d) log showing AMD-Vi information An input/output memory management unit (IOMMU) allows guest
virtual machines to directly use
peripheral devices, such as Ethernet, accelerated graphics cards, and hard-drive controllers, through
DMA and
interrupt remapping. This is sometimes called
PCI passthrough. An IOMMU also allows operating systems to eliminate bounce buffers needed to allow themselves to communicate with peripheral devices whose
memory address spaces are smaller than the operating system's memory address space, by using memory address translation. At the same time, an IOMMU also allows operating systems and hypervisors to prevent buggy or malicious hardware from
compromising memory security. Both AMD and Intel have released their IOMMU specifications: • AMD's I/O Virtualization Technology, "AMD-Vi", originally called "IOMMU" • Intel's "Virtualization Technology for Directed I/O" (VT-d), included in most high-end (but not all) newer Intel processors since the Core 2 architecture. In addition to the CPU support, both
motherboard chipset and system firmware (
BIOS or
UEFI) need to fully support the IOMMU I/O virtualization functionality for it to be usable. Only the
PCI or
PCI Express devices supporting
function level reset (FLR) can be virtualized this way, as it is required for reassigning various
device functions between virtual machines. If a device to be assigned does not support
Message Signaled Interrupts (MSI), it must not share
interrupt lines with other devices for the assignment to be possible. All
conventional PCI devices routed behind a PCI/
PCI-X-to-PCI Express bridge can be assigned to a guest virtual machine only all at once; PCI Express devices have no such restriction.
Network virtualization (VT-c) • Intel's "Virtualization Technology for Connectivity" (VT-c).
PCI-SIG Single Root I/O Virtualization (SR-IOV) PCI-SIG Single Root I/O Virtualization (SR-IOV) provides a set of general (non-x86 specific) I/O virtualization methods based on
PCI Express (PCIe) native hardware, as standardized by PCI-SIG: •
Address translation services (ATS) supports native IOV across PCI Express via address translation. It requires support for new transactions to configure such translations. •
Single-root IOV (SR-IOV or SRIOV) supports native IOV in existing single-root complex PCI Express topologies. It requires support for new device capabilities to configure multiple virtualized configuration spaces. •
Multi-root IOV (MR-IOV) supports native IOV in new topologies (for example, blade servers) by building on SR-IOV to provide multiple root complexes which share a common PCI Express hierarchy. In SR-IOV, the most common of these, a host VMM configures supported devices to create and allocate virtual "shadows" of their configuration spaces so that virtual machine guests can directly configure and access such "shadow" device resources. With SR-IOV enabled, virtualized network interfaces are directly accessible to the guests, avoiding involvement of the VMM and resulting in high overall performance; and in the
Amazon Public Cloud. == See also ==