类似于 AMD SVM-V 和 Intel Xeon 5500 系列之类的部分 CPU 通过使用两层页表来提供对内存虚拟化的硬件支持。

第一层页表存储客户机虚拟-物理转换,而第二层页表存储客户机物理-计算机转换。TLB(translation look-aside buffer,转换旁视缓冲区)是由处理器的内存管理单元 (MMU) 硬件维护的转换缓存。TLB 缺失是此缓存中的缺失,而且硬件需要访问内存(可能是多次)来查找所需转换。如果 TLB 中没有某个客户机虚拟地址,则硬件会查看这两个页表,将客户机虚拟地址转换成计算机地址。第一层页表由客户机操作系统维护。VMM 仅维护第二层页表。

性能注意事项

使用硬件辅助时,会消除软件内存虚拟化的开销。特别是,硬件辅助消除了使卷影页表与客户机页表保持同步所需的开销。但是,使用硬件辅助时 TLB 缺失延迟时间明显较长。默认情况下,管理程序在硬件辅助模式下使用大页以减少 TLB 缺失的成本。因此,工作负载是否受益于硬件辅助主要取决于在使用软件内存虚拟化时由内存虚拟化引起的开销。如果工作负载涉及少量页表活动(例如进程创建、映射内存或上下文切换),则软件虚拟化不会引起显著开销。相反,具有大量页表活动的工作负载可能会因使用硬件辅助而受益。

硬件 MMU 的性能已得到改善,因为它首次引入了在硬件中实施的大量缓存。通过使用软件内存虚拟化,典型客户机中上下文切换的频率可能会在每秒 100 次到 1000 次之间。每次上下文切换都将为软件 MMU 中的 VMM 设置陷阱。硬件 MMU 方法可避免此问题。

默认情况下,管理程序在硬件辅助模式下使用大页以减少 TLB 缺失的成本。通过在客户机虚拟到客户机物理以及客户机物理到计算机地址转换中使用大页,可以实现最佳性能。

LPage.LPageAlwaysTryForNPT 选项可以更改在客户机物理到计算机地址转换中使用大页的策略。​ 有关详细信息,请参见高级内存属性

注:

二进制转换仅适用于基于软件的内存虚拟化。