second-level address translation (SLAT)
Second-level address translation (SLAT) is a hardware virtualization technology that reduces hypervisor overhead.
To do so, SLAT addresses the inefficiencies associated with looking up virtualized memory addresses in software shadow volumes. The technology exists as a CPU feature: an added translation lookaside buffer (TLB) that contains a real-time updated cache of virtualized memory addresses and their corresponding physical addresses.
Virtualization is a core technology for many data centers, but the software layer introduced by a hypervisor imposes computing overhead that reduces the resources available to virtual machines (VMs). Physical computing resources must be presented to VMs as virtualized resources -- this is the essence of abstraction, which insulates workloads from the underlying computing hardware. When retrieved from SLAT rather than through a standard look-up operation, performance is enhanced because the memory address is stored on processor. Latency is reduced and the system only goes through one memory look-up operation rather than two.
As memory is addressed in a virtualized system, values referenced are added to SLAT. The TLB holds recent page table mappings generated by the hypervisor. When a virtual-to-physical address translation is requested, the hypervisor queries the TLB for mapping information. If there's a match, the physical address is returned to the hypervisor -- without the memory and CPU resources that would be required for translation. This is the "second level" of address translation. If there is no match, the hypervisor checks the traditional page table and perform the normal address translation. The hypervisor will then save the new translation to the TLB for future reference.
Both Intel and AMD support SLAT. Core i3, i5 and i7 all support what Intel calls their technology: extended page table (EPT). AMD processors include SLAT since their Barcelona architecture. AMD calls their SLAT rapid virtualization indexing (RVI). Both can offer performance increases of up to about 40 percent in heavy virtualization situations and even up to 600 percent in micro benchmarks.
There are a number of hypervisors that support SLAT, including KVM 2.6.26, VirtualBox 2 (and later), Vmware ESX 3.5 (and later), Xen 3.2.0 (and later). Bhyve and Windows 8-based systems not only support SLAT but require it.