NO IMAGE

http://hi.baidu.com/serverexpert/blog/item/b8292d52754525561138c24f.html

最近看了一本書講述CPU及軟硬體虛擬化技術, 好象是復旦大學出的。寫一些東西, 分享一些體會。

 Intel Virtualization技術可以分成CPU處理器VT技術(VT-x),晶片組VT技術(VT-d)和網路VT技術(VT-c):

VT-x技術:

Intel VT中的VT-x技術是CPU的硬體虛擬化技術,VT可以同時提升虛擬化效率和虛擬機器的安全性,在x86平臺上的VT技術,一般稱之為VT-x,而在Itanium平臺上的VT技術,被稱之為VT-i。

VT-x擴充套件了傳統的x86處理器架構,它引入了兩種操作模式:VMX root operation(根虛擬化操作)和VMX non-root operation(非根虛擬化操作),統稱為VMX操作模式。VMX root operation是VMM執行所處的模式, 設計給VMM/Hypervisor使用,其行為跟傳統的IA32並無特別不同,而VMX non-root operation則是客戶機執行所處的模式,在VMM控制之下的IA32/64環境。所有的模式都能支援所有的四個Privileges
levels。

由此,GDT、IDT、LDT、TSS等這些指令就能正常地執行於虛擬機器內部了,而在以往,這些特權指令需要模擬執行。而VMM也能從模擬執行特權指令當中解放出來,這樣既能解決Ring Aliasing問題(軟體執行的實際Ring與設計執行的Ring不相同帶來的問題),又能解決Ring Compression問題,從而大大地提升執行效率。Ring Compression問題的解決,也就解決了64bit客戶作業系統的執行問題。

 為了建立這種兩個操作模式的架構,VT-x設計了一個Virtual-Machine Control Structure(VMCS,虛擬機器控制結構)的資料結構,包括了Guest-State Area(客戶狀態區)和Host-State Area(主機狀態區),用來儲存虛擬機器以及主機的各種狀態引數,並提供了VM entry和VM exit兩種操作在虛擬機器與VMM之間切換,使用者可以通過在VMCS的VM-execution control fields裡面指定在執行何種指令/發生何種事件的時候,VMX non-root
operation環境下的虛擬機器就執行VM exit,從而讓VMM獲得控制權,因此VT-x解決了虛擬機器的隔離問題,又解決了效能問題。

EPT和VPID技術是記憶體虛擬化技術, 是頁表擴充技術Extended Page Table (EPT) 的縮寫, 是VT-x技術的一部分。 記憶體虛擬化的主要任務是實現地址空間的虛擬化,記憶體虛擬化是通過兩次地址轉換來支援地址空間的虛擬化,即客戶機虛擬地址GVA->客戶機器實體地址GPA->宿主機實體地址HPA的轉換。傳統的IA-32只支援一次地址轉換。而記憶體虛擬化要求2次記憶體轉換。即VMM根據GVA-GPA-HPA的對映關係計算”影子頁表”, 軟體實現缺點是記憶體開銷大,而且效能差。EPT技術直接在硬體上支援了GVA-GPA-HPA的兩次地址轉換.
VPID是Virtual Processor IDs的縮寫,它是一種硬體級的對TLB資源管理的優化,通過在硬體上為每個TLB項增加一個標誌,來標識不同的虛擬處理器的地址空間,區分開VMM以及不同的虛擬機器的不同虛擬處理器的TLB。為實現這些功能,VT-x為EPT和VMM增加了一些特別的指令, 如INVERT, INVLPG等, 因此它需要軟體的支援。現有VMWare ESX 4.0, Xen 3.4以上都支援了這一功能, 這些記憶體硬體虛擬技術大大降低了記憶體虛擬化的難度,提高了效能。