1. 程式人生 > 其它 >從Intel VT-X和HAXM看CPU虛擬化

從Intel VT-X和HAXM看CPU虛擬化

一:簡介

在虛擬化中有兩個重要的虛擬化加速技術不得不提,CPU虛擬化和記憶體虛擬化
本文基於HAXM和intel的VT-X技術,分析cpu虛擬化的加速如何實現。

二:Intel VT-X技術介紹

VT-x是intel運用Virtualization虛擬化技術中的一個指令集,是CPU的硬體虛擬化技術,VT可以同時提升虛擬化效率和虛擬機器的安全性。

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解決了虛擬機器的隔離問題,又解決了效能問題。

三:HAXM整體結構