|
Intel® VT is a collection of processor technologies that enables robust execution of unmodified guest OSs on Intel VT-enhanced
VMMs [2]. VT-x defines the extensions to the IA-32 Intel® Architecture [3]. VT-i defines the extensions to the
Intel® Itanium® architecture [4].
VT-x augments IA-32 with two new forms of CPU operation: virtual machine extensions (VMX) root operations and VMX non-root
operations. The transition from VMX root operation to VMX non-root operation is called a VM entry. The transition
from a VMX non-root operation to VMX root operation is called a VM exit.
A virtual-machine control structure (VMCS) is defined to manage VM entries and exits, and it controls the behavior of
instructions in a non-root operation. The VMCS is logically divided into sections, two of which are the guest-state area
and the host-state area. These areas contain fields corresponding to different components of processor state. VM entries
load processor state from the guest-state area. VM exits save processor state to the guest-state area and then load
processor state from the host-state area.
The VMM runs in root operation while the guests run in VMX non-root operation. Both forms of operation support all four
privilege levels (i.e., rings 0, 1, 2, and 3). The VM-execution control fields in the VMCS allow the VMM to control the
behavior of some instructions in VMX non-root operation and the events that will cause VM exits. Instructions like
CPUID, MOV from CR3, RDMSR, and WRMSR will trigger VM exits unconditionally to allow the VMM to control the behavior of
the guest.
VT-i expands the Itanium processor family (IPF) to enable robust execution of VMs. A new processor status register bit
(PSR.vm) has been added to define a new operating mode for the processor. The VMM runs with this bit cleared while the
guest OS runs with it set. Privileged instructions, including non-privileged instructions like thash, ttag and mov cupid
that may reveal the true operating state of the processor, trigger virtualization faults when operating in this mode.
The PSR.vm bit also controls the number of virtual-address bits that are available to software. When a VMM is running
with PSR.vm = 0, all implemented virtual-address bits are available. When the guest OS is running with PSR.vm = 1, the
uppermost implemented virtual-address bit is made unavailable to the guest. Instruction or data fetches with any of
these address bits set will trigger unimplemented data/instruction address faults or unimplemented instruction address
traps. This provides the VMM a dedicated address space that guest software cannot access.
VT-i also defines the processor abstraction layer (PAL) interfaces that can be used by the VMM to create and manage VMs.
A Virtual Processor Descriptor (VPD) is defined to represent the resources of a virtual processor. PAL procedures are
defined to allow the VMM to configure logical processors for virtualization operations and to suspend or resume virtual
processors. PAL run-time services are defined to support performance-critical VMM operations.
|