類似於 AMD SVM-V 和 Intel Xeon 5500 系列之類的 CPU 透過使用兩層分頁表,提供對記憶體虛擬化的硬體支援。

第一層分頁表儲存了客體虛擬-實體轉譯,而第二層分頁表儲存了客體實體-電腦轉譯。TLB (translation look-aside buffer,轉譯對應緩衝區) 是一個轉譯快取,由處理器的記憶體管理單元 (MMU) 硬體維護。TLB 遺漏是此快取中的遺漏,而且硬體需要移至記憶體 (可能是多次) 以尋找所需轉譯。如果 TLB 中沒有某個客體虛擬位址,則硬體會查看這兩個分頁表,將客體虛擬位址轉譯為主機實體位址。

該圖說明 ESXi 如何實作記憶體虛擬化。

圖表 1. ESXi 記憶體對應


此圖說明如何實作記憶體虛擬化。

  • 方塊代表分頁,而箭頭代表不同的記憶體對應。

  • 從客體虛擬記憶體到客體實體記憶體的箭頭表示客體作業系統中的分頁表所維護的對應。(未顯示 x86 架構處理器從虛擬記憶體到線性記憶體的對應。)

  • 從客體實體記憶體到機器記憶體的箭頭表示由 VMM 維護的對應。

  • 虛線箭頭表示從客體虛擬記憶體到機器記憶體的對應,該對應也由 VMM 維護。執行虛擬機器的基礎處理器使用陰影分頁表對應。

因為虛擬化引入了額外層級的記憶體對應,所以 ESXi 可以在所有虛擬機器之間有效管理記憶體。虛擬機器的一些實體記憶體可能對應到共用分頁,或對應到未對應或換出的分頁。

主機執行虛擬記憶體管理時無需瞭解客體作業系統,也不會干擾客體作業系統自己的記憶體管理子系統。

效能考量事項

使用硬體協助時,可消除軟體記憶體虛擬化的額外負荷。尤其是,硬體協助消除了使陰影分頁表與客體分頁表保持同步所需要的額外負荷。但是,使用硬體協助時,TLB 遺漏延遲明顯較長。因此,工作負載是否受益於硬體協助,主要取決於在使用軟體記憶體虛擬化時由記憶體虛擬化引起的額外負荷。如果工作負載涉及少量分頁表活動 (例如程序建立、對應記憶體或內容切換),則軟體虛擬化不會引起顯著的額外負荷。相反,具有大量分頁表活動的工作負載可能會受益於硬體協助。