第3章 Intel-VT技術

1.1 IA-32 架構

IA-32 處理器提供了四種處理器模式來支持系統的運行,這四種處理器模式分別是:

a)        實模式:實模式是 16 位的運行模式,跟早期的 8086 處理器兼容。處理器一開始啓動的時候,進入的就是實模式。程序可以通過實模式進入保護模式和系統管理模式;

b)        保護模式:保護模式是 32 位的運行模式,它擴展了地址位數,同時提供了豐富的保護機制(權限管理機制,包括段保護機制和頁保護機制),以及向後兼容機制;

3 . 1 四種模式狀態圖

c)        虛擬 8086 模式:在保護模式下提供的兼容 8086 的模式,使處理器在保護模式下能夠更好地運行 16 位程序;

d)       系統管理模式:特殊的模式,操作系統可以進入該模式進行電源管理;

四種處理器模式的轉換關係如圖 3.1[9] 所示:

1.2 Intel-VT 技術

IA-32 上的虛擬化技術,最早可以追溯到虛擬內存管理。虛擬內存管理機制爲程序提供了遠大於真實內存的虛擬內存。後來,爲了能夠在保護模式下更好的支持早期的在實模式下的程序的運行,英特爾又加入了虛擬 8086 模式。雖然虛擬 8086 模式並不能完全兼容真實的實模式程序,但是也算是英特爾處理器虛擬化的一次嘗試。

Intel-VT 技術,是英特爾公司設計出的硬件輔助虛擬化的一套解決方案。 Intel-VT 具體包括分別針對處理器的 VT-X/VT-I 、芯片組的 VT-D 和網絡的 VT-C 技術:

a)        處理器虛擬化 (VTx/VTi) :包括英特爾虛擬化靈活遷移技術( Intel VT FlexMigration )、英特爾 VT FlexPriority 、英特爾 VT 擴展頁表( Extended Page Tables ):

                        i.              英特爾 VT FlexPriority :當處理器執行任務時,往往會收到需要注意的其它設備或應用發出的請求或 中斷 命令。爲了最大程度減少對性能的影響,處理器內的一個專用寄存器將對任務優先級進行監控。如此一來,只有優先級高於當前運行任務的中斷纔會被及時關注。英特爾 FlexPriority 可創建 TPR6 的一個虛擬副本,該虛擬副本可讀取,在某些情況下,如在無需干預時,還可由客戶操作系統進行更改。上述舉措可以使頻繁使用 TPR 32 位操作系統獲得顯著的性能提升。(例如,能夠將在 Windows Server* 2000 上運行的應用的性能提高 35% )。

                      ii.              英特爾虛擬化靈活遷移技術( Intel VT FlexMigration ):虛擬化的一個重要優勢是能夠在無需停機的情況下,將運行中的應用在物理服務器之間進行遷移。英特爾虛擬化靈活遷移技術 Intel VT FlexMigration )旨在實現基於英特爾處理器的當前服務器與未來服務器之間的無縫遷移,即使新的系統可能包括增強的指令集也不例外。藉助此項技 術,管理程序能夠在遷移池內的所有服務器中建立一套一致的指令,實現工作負載的無縫遷移。這便生成了可在多代硬件中無縫運行的更加靈活、統一的服務器資源池。

                    iii.              擴展頁表( Extended Page Tables EPT ):爲了減少實現內存虛擬化(跟影子頁表相比)的難度和提升內存虛擬化的性能, VT-X 提供了 EPT 技術,直接在硬件上支持客戶虛擬地址 -> 客戶物理地址 -> 主機物理地址的兩次轉換。

b)        芯片組虛擬化 (VTd) :如果沒有 VTd 技術,虛擬機監控器必須直接參與 I/O 交易,這不僅會減緩數據傳輸速度,還會由於頻繁的 VMM 活動而增大處理器的負載。 VTd 提供了客戶操作系統直接訪問真實硬件的機制,極大的減少了服務器處理器的負載。

c)        網絡虛擬化 (VTc) :英特爾 VT-c 可針對虛擬化進一步優化網絡。從本質上來說,這套技術組合的功能與郵局非常相似:將收到的信件、包裹及信封分門別類,然後投遞到各自的目的地。通過在專用網絡芯片上執行這些功能,英特爾 VT-c 大幅提高了交付速度,減少了 VMM 與服務器處理器的負載。 VTc 包括虛擬機設備隊列 (VMDq) 和虛擬機直接互連 (VMDc)

                        i.              藉助虛擬機設備隊列( VMDq )最大限度提高 I/O 吞吐率:在傳統服務器虛擬化環境中, VMM 必須對每個單獨的數據包進行分類,並將其發送到爲其分配的虛擬機。這樣會佔用大量的處理器週期。而藉助 VMDq ,該分類功能可由英特爾服務器網卡內的專用硬件來執行, VMM 只需負責將預分類的數據包組發送到適當的客戶操作系統。這將減緩 I/O 延遲,使處理器獲得更多的可用週期來處理業務應用。英特爾 VT-c 可將 I/O 吞吐量提高一倍以上,使虛擬化應用達到接近本機的吞吐率。每臺服務器將整合更多應用,而 I/O 瓶頸則會更少;

                      ii.              藉助虛擬機直接互連( VMDc )大幅提升虛擬化性能:藉助 PCI-SIG 單根 I/O 虛擬化( SR-IOV )標準,虛擬機直接互連 (VMDc )支持虛擬機直接訪問網絡 I/O 硬件,從而顯著提升虛擬性能。如前所述,英特爾 VT-d 支持客戶操作系統與設備 I/O 端口之間的直接通信信道。通過支持每個 I/O 端口的多條直接通信信道, SR-IOV 可對此進行擴展。例如,通過單個英特爾萬兆位服務器網卡,可爲 10 個客戶操作系統中的每個操作系統分配一個受保護的、 1Gb/ 秒的專用鏈路。這些直接通信鏈路繞過了 VMM 交換機,可進一步提升 I/O 性能並減少服務器處理器的負載;

1.3 Intel-VTx/VTi

1.3.1 VMX(virtual-machine extensions) 架構

VMX 主要針對兩類軟件提供支持:

a)        虛擬機監控器:在 VMX 的支持下,虛擬機監控器能夠獲取處理器的最高權限;

b)        客戶軟件: VMX 提供一套敏感指令,當客戶軟件在執行的過程中遇到敏感指令的時候,就會將控制權交給虛擬機監控器;

3 . 2 VMX 轉換

針對這兩類軟件, VMX 提供了兩類操作模式:根操作模式和非根操作模式。虛擬機監控器運行在根操作模式下,客戶軟件運行在非根操作模式下。兩種模式的轉換稱爲 VMX 轉換 ( 如圖 3.2[10] 和圖 3.3[11] )

3 . 3 Intel-VT 在操作期間的轉換

3.3 :白色的區域代表 VMM 在根操作模式下,而交叉陰影和黑點的區域代表兩個活動虛擬機的運行階段。

軟件在 VMX 的生命週期:

a)        軟件通過 VMXON 指令激活 VMX 模式,當處理器激活 VMX 模式時,是處在根操作模式下;

b)        當處理器處於根操作模式下,通過執行 VMLAUNCH VMRESUME 指令(如圖 3.5 ),處理器能夠進入非根操作模式;

c)        VMX 非根操作模式退出到根操作模式的原因很多,基本上分爲條件退出和無條件退出兩大類;

d)       當處理器處於根操作模式下時,軟件可以通過執行 VMOFF 指令,退出 VMX 模式;

1.3.1.1 根操作模式

處理器在 VMX 模式下的行爲基本等同於處理器在保護模式下的行爲,除了以下幾點:

a)        VMX 根操作模式有一套新的指令 (VMON,VMOFF )

b)        VMX 根操作模式下, CR0 CR4 的某些值是不支持的;

c)        如果一個邏輯處理器是在 A20 模式下,那麼 VMX 開啓就會失敗;

d)       INIT 信號在 VMX 根操作模式下是阻塞的;

1.3.1.2 非根操作模式

客戶操作系統在非根操作模式下運行。當客戶操作系統遇到一些預先設定的條件時,會自動退出到根操作模式下。

從非根操作模式退出到根操作模式下,主要分爲兩種情況:

1.      無條件退出:即遇到某一個事件的時候,直接退出;

2.      有條件退出:即遇到某一個事件的時候,根據 VMCS 的控制執行域的設置來決定是否退出;

1.3.1.3 虛擬機控制結構 (VMCS)

針對 VMX 操作, Intel 定義了虛擬機控制結構。這個結構只能夠被 VMCLEAR, VMPTRLD, VMREAD, VMWRITE 操作。

在邏輯上,虛擬機控制結構被劃分爲 6 部分:

a)        GUEST-STATE 域:虛擬機從根操作模式進入非根操作模式時,處理器所處的狀態;

b)        HOST-STATE 域:虛擬機從非根操作模式退出到根操作模式時,處理器所處的狀態;

c)        VM 執行控制域:虛擬機在非根操作模式運行的時候,控制處理器非根操作模式退出到根操作模式;

d)       VM 退出控制域:虛擬機從非根操作模式下退出時,需要保存的信息;

e)        VM 進入控制域:虛擬機從根操作模式進入非根操作模式時,需要讀取的信息;

f)         VM 退出信息域:虛擬機從非根操作模式退出到根操作模式時,將退出的原因保存到該域中。

1.3.2 內存虛擬化

第一代的 Intel-VT 技術,並沒有提供硬件支持的內存虛擬化技術。因此,內存虛擬化一般採用影子頁表(這裏不做詳細介紹)。

第二代的 Intel-VT 技術,提供了硬件支持的內存虛擬化技術: VPID EPT

1.3.2.1 VPID

VPID 是一種硬件級的對 TLB 資源管理的優化。通過在硬件上爲每個 TLB 項增加一個標誌,來標識不同的虛擬處理器地址空間,從而區分開虛擬機監控器以及不同虛擬機的不同處理器的 TLB

在軟件上使用 VPID 非常簡單,主要做兩件:

a)        爲每個 VMCS 分配一個 VPID ,且這個 VPID 只要是非 0 的,且和其他 VMCS VPID 不同就可以了;

b)        VMCS 中將 Enable VPID 1

1.3.2.2 EPT

3 . 4 EPT 原理圖

EPT 是在原有的 CR3 控制寄存器頁表地址映射的基礎上,引入了 EPT 頁表的另一次映射。這樣, GVA (客戶操作系統的虛擬地址) ->GPA (客戶操作系統的物理地址) ->HPA (宿主操作系統的物理地址)兩次地址轉換都由 CPU 硬件自動完成。

3.4[12] EPT 原理圖。這裏假設客戶機頁表和 EPT 頁表都是 4 級頁表, CPU 完成一次地址轉換的基本過程:

1.        CPU Guest CR3 指向的 L4 頁表。由於 Guest CR3 指向的是 GPA ,因此 CPU 需要通過 EPT 頁表來實現 Guest CR3 GPA->HPA 的轉換。 CPU 首先會查看硬件的 EPT TLB ,如果沒有對應的轉換, CPU 會進一步查找 EPT 頁表,如果還沒有, CPU 則拋出 EPT Violation 異常由虛擬機監控器來處理;

2.        獲得 L4 頁表地址後, CPU 根據 GVA L4 頁表項的內容,來獲取 L3 頁表項的 GPA 。如果 L4 頁表中 GVA 對應的表項顯示爲“缺頁”,那麼 CPU 產生 Page Fault ,直接交由 Guest Kernel 處理。注意,這裏不會產生 VM-Exit 。獲得 L3 頁表項的 GPA 後, CPU 同樣要通過查詢 EPT 頁表來實現 L3 GPA->HPA 的轉換,過程和上面一樣。 CPU 會依次查看 L2 L1 頁表,最後獲得 GVA 對應的 GPA

3.        獲取 GPA 之後, CPU 通過查詢 EPT 頁表獲得 HPA

1.3.3 中斷虛擬化

在虛擬的環境下,虛擬機有諸多的設備,包括虛擬機監控器模擬的虛擬設備和直接分配給客戶機的物理設備,這些設備都需要發送中斷給 VCPU ,以便得到處理。因此,虛擬機監控器也需要提供中斷虛擬化的支持。

3.5[12] 展示了物理平臺的中斷架構。首先, I/O 設備通過中斷控制器( I/O APIC 或者 PIC )發出中斷請求,中斷請求經由 PCI 總線發送到系統總線上,最後目標 CPU local APIC 部件接收中斷, CPU 開始處理中斷。

在虛擬機的環境中,虛擬機監控器也需要爲客戶操作系統展現一個與物理中斷架構類似的虛擬中斷架構。如圖 3.6[12] 所示。和物理平臺相比,每個 VCPU 都對應一個虛擬 Local APIC 用於接收中斷。虛擬平臺也包含了虛擬 I/O APIC 或者虛擬 PIC 用於發送中斷。

3 . 5 物理平臺的中斷架構

3 . 6 虛擬機中斷架構

1.4 Intel-VTd

由於現在操作系統跟外設有大量的交互,因此虛擬機監控器必須支持客戶操作系統的 I/O 請求,即 I/O 虛擬化。 I/O 虛擬化的支持必須採用以下幾種模型之一 [13]

a)        仿真:虛擬機監控器爲客戶操作系統模擬一個設備。 I/O 虛擬化可以提供很好的兼容性,但是在性能上也受到了很大的限制;

b)        新的軟件接口:這種模型類似於 I/O 仿真,不同之處在於虛擬機監控器提供的是針對客戶軟件設計的設備接口。

c)        直接分配:虛擬機監控器直接分配設備給客戶軟件。這種模型需要額外的硬件設備支持。

d)       I/O 設備分享:這種模型是直接分配模型的擴展。一個 I/O 設備支持多個接口,每個接口分配給一個虛擬機。

1.4.1 I/O 虛擬化

爲了實現直接 I/O 分配, Intel-VT 爲虛擬機監控器提供了以下幾種功能 [13]

a)        I/O 設備直接分配:分配 I/O 設備給虛擬機,擴展虛擬機的保護和隔離屬性;

b)        DMA 重映射:從硬件的直接內存訪問,提供獨立的地址轉換;

c)        中斷重映射:支持中斷路由給合適的虛擬機;

d)       可靠性:記錄和報告中斷錯誤給系統 DMA

1.4.1.1 DMA 重映射

DMA 重映射爲設備訪問內存提供硬件隔離。通過不同的 I/O 頁表,使得每個硬件設備分配到特定的域。當設備嘗試訪問系統內存是, DMA 攔截訪問,並且判斷是否允許該訪問,同時他還決定真實的訪問位置。頻繁的使用 I/O 表數據結構,該數據結構能夠被緩存。 DMA 重映射機制能夠被每個設備獨立的配置。

1.4.1.2 中斷重映射

中斷重映射提供重映射和路由從 I/O 設備的中斷請求。

1.5 本章小結

Intel-VT 技術是英特爾公司推出的旨在提高虛擬機安全性和性能,降低開發虛擬機難度的硬件輔助虛擬化方案。 Intel-VT 包括處理器虛擬化,芯片組虛擬化和網絡虛擬化。

Intel 處理器在保護模式的基礎上,提供了 VMX 模式,以支持 Intel-VT 技術。 VMX 模式又分爲根操作模式和非根操作模式兩種子模式。虛擬機監控器運行在根操作模式下,客戶操作系統運行在非根操作模式下。

虛擬機控制結構是處理器專門爲 VMX 設計的一種數據結構,用來支持根操作模式和非根操作模式之間的切換。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章