作者 主題: [硬體技術]記憶體管理虛擬化:AMD NPT/Intel EPT簡介  (閱讀 12549 次)

0 會員 與 1 訪客 正在閱讀本文。

carejollg

  • 可愛的小學生
  • *
  • 文章數: 5
    • 檢視個人資料
原文章PDF下載位址,原本先發表在PCDVD,轉載到此論壇,請網友指教。

◎標題:[硬體技術]記憶體管理虛擬化:AMD NPT/Intel EPT簡介
◎前言:在x86架構中,記憶體分頁(page tables)是用來保護記憶體位址,使記憶體在多個程式存取時不互相干擾。然而,記憶體分頁在虛擬化時,得經過VMM(或稱為Hypervisor)中SPT(Shadow Page Table)的轉換,造成效能損耗。如果轉換過程未精確地控制,可能讓虛擬機器中Guest OS所發出的特權指令未適當地產生中斷與例外處理,如果這部虛擬機器是電子商務伺服器,結果是一筆交易資料莫名地消失了,而且事後追查問題根源的難度非常高。

目前,AMD/Intel都提出各自的記憶體分頁虛擬化機制,AMD稱為NPT(Nested Page Tables)而Intel稱為EPT(Extended Page Tables),兩者的運作概念是相同的。這篇文章將簡介相關的原理,並讓網友了解目前x86虛擬化的困難與廠商的處理技術。(相關資料都可以在AMD/Intel官方網站的公開資料找到)

◎AMD NPT中虛擬化的記憶體位置轉換(address translation)
AMD NPT_2.tif
記憶體轉換過程可以先參考下一段所敘述,未虛擬化時的記憶體轉換程序(圖1)。
上圖2中,右側列出Para-virtualization概念圖,並以紫色線段區隔Guest OS與VMM,更詳細的虛擬化圖解請參考段落結束的圖3。

NPT(Nested Page Tables)機制將記憶體轉換過程縮減為2階段。
首先,在Guest OS中(圖2中紫色線段區隔的上半部),當系統開啟一個行程(process)時,作業系統會為這個行程配置一個分頁表。此時,Guest記憶體的線性位址(Guest Linear Address)透過 gPT (Guest Page Tables)映射到Guest的實體位址(Guest Physical Address)。其分頁表(gPT)位於Guest的實體記憶體中,gCR3(Guest中的CR3)相當於硬體的暫存器,負責執行Guest OS中的映射作業。
接下來,藉著實體記憶體中的nPT(nested page tables),將Guest記憶體的實體位址映射到系統的實體記憶體位址。網友可以注意到nPT位於實體記憶體中,硬體上則由nCR3(相對於Guest,nCR3可看成是Host OS中的CR3)負責執行映射作業。

gCR3僅負責管理Guest OS中,記憶體由線性位址(Guest Linear Address)映射到實體位址(Guest Physical Address),其機制與未虛擬化的實體主機相同,網友可以參考下一段落的圖1與說明。在NPT的機制中,如果要存取Guest OS中的記憶體分頁時,Guest的實體位址會先被轉換到系統的記憶體位址(System Physical Address)。如果是從Guest的記憶體線性位址映射到實體記憶體,便以快取的方式記錄在TLB中。

NPT的兩階段記憶體轉換,特點就是將Guest Physical Address→System Physical Address,VMM不用再保留一份SPT(Shadow Page Table),以及以往還得經過SPT這個轉換過程。除了降低各部虛擬機器在切換時所造成的效能損耗外,硬體指令集也比虛擬化軟體處理來得可靠與穩定。

相關資料可以在Google找到外,或者網友可以參考「2007XenSummit-AMD-Barcelona_Nested_Paging_WahligHuang.pdf」這份簡報檔。簡報中提到AMD在Barcelona中已內建NPT指令集,虛擬化軟體方面,Xen 3.0.5版已支援此機制。
AMD NPT_3.tif

◎傳統(未虛擬化)的記憶體位置轉換(address translation)
AMD NPT_1.tif
圖中顯示記憶體位址(address)轉換時,將線性位址(Linear Address)透過分頁表(PT,Page Tables)所記載的內容,映射到實體位址(Physical Address)。其中CR3(Control Register)是一組硬體暫存器,負責執行映射作業並提升記憶體位址轉換效率所需的指令。

◎Intel EPT中虛擬化的記憶體位置轉換(address translation)
Intel EPT_1.tif
圖4簡介Intel EPT概念,原出處是「Intel Virtualization Technology Processor Virtualization Extensions and Intel Trusted execution Technology.pdf」。
為了方便說明Intel EPT與AMD NPT機制在原理上相同,所以改成圖5的解說。網友可以將圖5與圖2做比較,兩圖的差異在圖5中紅色字的部份,這4個紅色字則來自於圖4。
圖5中紅色字的「CR3」其實是圖2的「gCR3」,都是Guest OS的CR3;而圖5「EPT Base Pointer」則是圖2的「nCR3」,相當於Host OS的CR3;接下來,圖5的「Guest Intel 64 Page Tables」對應到圖2的「gPT」;最後,圖5中紅色字的「EPT」相當於圖2的「nPT」,也就是AMD NPT所使用的巢狀分頁表(nested page tables)。

Intel EPT與AMD NPT都是將Guest Physical Address映射到System Physical Address,不經過VMM中的SPT,均是兩階段轉換,目的也是為了降低記憶體轉換時在VMM所產生的效能損耗。

◎簡介記憶體分頁的效能問題
VT-x.tif
藉著Intel簡報內的圖解,簡單說明記憶體分頁在虛擬化所造成效能降低的過程。
圖中可以看到用戶在操作多部虛擬機器時,其實是不斷地在各部虛擬機器間來回切換,每一個切換過程包括「VM Entry」與「VM Exit」,並產生記憶體分頁。這些記憶體分頁記錄著虛擬機器當時的狀態,並由VMM負責管理與轉換各部虛擬機器所產生的分頁。

其實,這也是一種記憶體保護機制。我們可以對照在真實主機中操作時,多個行程(或應用程式)在存取記憶體時,作業系統透過分頁機制保護每個行程所需的記憶體空間。這種類比下,多部虛擬機器就好像多個行程/應用程式一樣,而VMM就相當於作業系統。多部虛擬機器在VMM中切換,就如同多個行程/應用程式在作業系統中切換一樣,差別在於分頁內容不同。因此,作業系統能更有效率地管理記憶體分頁,便可以讓各個行程切換更有效率。同樣的效率瓶頸在虛擬化時,就在VMM如何有效地管理記憶體分頁(請參考圖8中的示意圖)。
Memory Management_s.tif

不過,虛擬化後記憶體管理變得很複雜,況且還有分頁錯誤(Page Fault)、中斷(Interrupt)與例外處理(Exception Handler)等。在沒有硬體輔助指令前,由Xen、VMware等虛擬化軟體負責記憶體管理所有事項,當伺服器虛擬化集中管理時,VMM就可能讓虛擬機器間切換變得緩慢。同樣地,一般實體主機的應用程式開得很多時,用戶也會感覺到應用程式在切換時,效率越來越差,或者開啟多個大量耗用記憶體的應用程式(例如Photoshop),作業系統運作遲鈍等。對記憶體所有存取動作都需要經過分頁映射,所以映射效率決定虛擬機器切換的效能,AMD NPT/Intel EPT便是透過硬體輔助指令降低記憶體管理在虛擬化的效能損耗。

◎結論:等待市場驗證;下一階段,I/O虛擬化與資訊安全
雖然AMD/Intel提供記憶體管理所需的硬體輔助指令,但還需要虛擬化軟體供應商整合,因為每個虛擬化軟體中VMM對記憶體管理的機制並不一定相同,就好像實體主機中,Linux與Windows對記憶體管理也不同。當軟體和硬體整合後,還得經過實際環境應用的驗證,才知道新技術的可靠度與穩定性。

在實體主機上,記憶體管理都經過多年的驗證與不斷地修正,不論是AMD/Intel硬體架構或Apache、Oracle Database、SAP ERP等各種伺服器,才有如今的可靠與穩定。可是在虛擬化過程中,這些機制還是很新穎的技術,有待市場驗證。這是虛擬化應用的潛在風險,在未成熟的情況下,效率是用預算堆出來的,不是一般用戶能負擔的價格。
至於驗證的技術,需要對作業系統有深厚的瞭解(VMM具備Host OS的核心功能,也是一個簡化的作業系統),才能在檢驗過程中,追蹤系統呼叫(system call)在作業系統中是否精確地處理。我自認學識淺薄,沒有這方面的技術,還希望有此能力的網友指教。

Ring 0除了記憶體管理,另一個重要機制就是檔案管理(File Management),這關係著I/O虛擬化指令集。AMD/Intel都將在未來的平臺中納入相關的輔助指令,以及虛擬化軟體整合後與實際運作的驗證。(請參考圖9)
IA32 Privilege Rings.tif
此外,虛擬化成熟後,資訊安全也會形成另一個重要議題。從圖3中可以察覺到VMM處於Ring 0,也就是特權指令所在的階層,一但取得VMM控制權,等於掌控所有虛擬機器。舉例來說,讀、寫分頁表暫存器等指令都是特權指令,也就是在VMM中才可以執行,任意改變分頁表暫存器就可隨意中止某個行程。此時,即使虛擬機器安裝防火牆等系統,也不至連VMM都阻擋吧。這種情況下,防火牆如同虛設般。資訊安全與I/O虛擬化將是下一階段重要議題,有待軟、硬體廠商提出新的解決方案。
« 上次編輯: 2008-04-13 02:33 由 carejollg »

oreo

  • 憂鬱的高中生
  • ***
  • 文章數: 94
    • 檢視個人資料
    • 餅乾的家
拍拍手啊,有人願意寫東西,說到AMD最近我真是吃到苦頭,自己裝的系統相容性低到一個極點,RAM就搞死我了,果然雙CPU加記憶體控制器還是買套裝的好
但是之前的FP-DIMM卻是沒問題,害我想支持一下都開始猶豫不決了起來