類似於 AMD SVM-V 和 Intel Xeon 5500 系列之類的 CPU 透過使用兩層分頁表,提供對記憶體虛擬化的硬體支援。
備註: 在本主題中,「記憶體」可指實體 RAM 或持續性記憶體。
第一層分頁表儲存了客體虛擬-實體轉譯,而第二層分頁表儲存了客體實體-電腦轉譯。TLB (translation look-aside buffer,轉譯對應緩衝區) 是一個轉譯快取,由處理器的記憶體管理單元 (MMU) 硬體維護。TLB 遺漏是此快取中的遺漏,而且硬體需要移至記憶體 (可能是多次) 以尋找所需轉譯。如果 TLB 中沒有某個客體虛擬位址,則硬體會查看這兩個分頁表,將客體虛擬位址轉譯為機器位址。第一層分頁表由客體作業系統維護。VMM 僅維護第二層分頁表。
效能考量事項
使用硬體協助時,可消除軟體記憶體虛擬化的額外負荷。尤其是,硬體協助消除了使陰影分頁表與客體分頁表保持同步所需要的額外負荷。但是,使用硬體協助時,TLB 遺漏延遲明顯較長。依預設,Hypervisor 會在硬體輔助模式中使用大型分頁,以降低 TLB 遺漏的成本。因此,工作負載是否受益於硬體協助,主要取決於在使用軟體記憶體虛擬化時由記憶體虛擬化引起的額外負荷。如果工作負載涉及少量分頁表活動 (例如程序建立、對應記憶體或內容切換),則軟體虛擬化不會引起顯著的額外負荷。相反,具有大量分頁表活動的工作負載可能會受益於硬體協助。
依預設,Hypervisor 會在硬體輔助模式中使用大型分頁,以降低 TLB 遺漏的成本。透過在客體虛擬至客體實體以及客體實體至機器位址轉譯中使用大型分頁,可實現最佳效能。
選項 LPage.LPageAlwaysTryForNPT 可以變更在客體實體至機器位址轉譯中使用大型分頁的原則。如需詳細資訊,請參閱 進階記憶體屬性。