了解虛擬化硬件支持
芯片制造商英特爾、Advanced Micro Devices(AMD)和ARM公司部署了指令集擴展,以使硬件支持虛擬化,但其中所涉及的代碼和首字母縮略詞很難理解。
長期以來,硬件支持一直是虛擬化不可或缺的要求,硬件支持可使選定的虛擬機管理程序能夠以硬件時鐘速度處理復雜的指令權限轉換以及管理虛擬化內存資源。
指令集擴展可為虛擬化提供硬件支持,指令集擴展是指添加到處理器和其他芯片的整套新晶體管,它可帶來新功能以及直接處理特定的新指令。如果沒有這種擴展,虛擬化所需的功能和任務將需要軟件仿真,而這通常過于繁瑣且低效,無法處理重要的虛擬化任務。
虛擬化主要是一種計算活動,它需要全面的內存管理和對特權訪問的控制。因此,英特爾和AMD都在試圖提供虛擬化支持–通過在其處理器中添加指令集擴展和一系列互補功能。
英特爾虛擬化技術(VT)
在2005年,英特爾推出Intel VT-x—基于兩款奔騰4處理器,這也是英特爾***次推出虛擬化硬件支持。VT-x添加了10條新指令,可創建和控制虛擬機(VM)。該虛擬化軟件在虛擬執行模式運行,其中客戶操作系統具有完全權限,而不會干擾受保護和隔離的主機操作系統。
在最初推出VT-x后,英特爾還推出額外的虛擬化技術,雖然這些虛擬化技術不是特定的VT-x命令,但附加功能為英特爾處理器提供了更多的虛擬化功能。
2008年,英特爾增加了對擴展頁表(EPT)的支持,這是英特爾部署的二級地址轉換(SLAT)或嵌套分頁。
虛擬化必須將物理內存地址轉換為虛擬內存地址。問題在于這種轉換發生了兩次:一次是針對主機VM,第二次是針對每個訪客VM。這無疑會增加開銷并降低性能。擴展頁表等二級地址轉換技術可改進內存管理和提高性能,主要是通過消除這種開銷以及同時處理所有內存管理任務來實現。
2010年,英特爾開始支持不受限制的訪客,也被稱為IA-32e模式,這種模式使邏輯處理器和虛擬CPU可在處理器上以實模式運行。這使訪客虛擬機通過使用自己的擴展頁表可在裸機模式運行。VMware
Workstation 14和Fusion 10等部分軟件要求處理器支持IA-32e模式。
到2013年,英特爾推出虛擬機控制結構(VMCS)陰影繪制。長期以來,虛擬化面臨的挑戰是嵌套問題,即在VM中運行VM。每個VM都使用唯一的數據結構,當VM在VM中運行時,數據結構必須交換或更改。
在2013年之前,解決此問題的方法是緩存每個VMCS并使用軟件來處理它們,但這個過程太費時并降低性能。而將VMCS陰影繪制添加到處理器可使VMCS處理更加高效并提高VM性能。
AMD虛擬化(AMD-V)
AMD公司最初在2006年向其處理器系列的幾款處理器添加了虛擬化支持所需的命令集擴展,包括Athlon 64、Athlon 64 X2、Athlon 64 FX、Turion 64 X2以及部分Opteron、Phenom和Phenom II處理器。AMD-V命令使開發人員能夠編寫軟件以創建和控制VM,支持使用虛擬機管理程序。
隨后AMD又以快速虛擬化索引的形式向部分K10和Phenom II處理器增加了二級地址轉換或嵌套分頁支持以提高物理到虛擬內存轉換的性能,這在功能上與英特爾的擴展頁表完全相同。
ARM虛擬化
采用RISC架構的處理器已開始部署虛擬化支持。符合行業標準的ARM架構版本8(即ARMv8-A)現在支持虛擬化功能,使ARM芯片能夠運行多個VM,且每個VM都有不同的操作系統。
ARMv8.1引入了虛擬化主機擴展(VHE),它為Type 2虛擬機管理程序提供了增強支持。
ARMv8.1-VHE還提供基本地址轉換,另一方面,ARMv8.3-NV增加了對嵌套虛擬化的支持。
ARM處理器通常使用精簡指令集,這需要更少的能量和冷卻,因為晶體管數量非常少,而且,由于其采用更簡單的處理器設計,它們通常可以提供更好的性能。ARM芯片長期以來一直部署在嵌入式系統和服務器中,用于處理基本的大容量工作負載,例如Web服務器。
現在,在添加虛擬化硬件支持后,ARM系統可承載更多工作負載,這使其開始吸引更多人的關注,特別是吸引那些極其龐大的數據中心。
英特爾APICv和AMD AVIC
處理器通常會使用中斷,使系統能夠被現實世界的事件中斷,例如鍵盤信號或系統條件。但是,大量中斷可能會影響虛擬化系統的性能,不斷要求工作負載停止并等待CPU解決系統中正在發生的其他事情。
中斷虛擬化的概念,通過排序和排列中斷可減輕這些潛在的性能影響。排序使系統能夠根據優先級解決中斷,而排列則讓系統等待最合適的時間來解決中斷問題。總體而言,這些技術可***限度地降低中斷對虛擬化環境的性能影響。
在2012年,英特爾和AMD都增加了中斷虛擬化。AMD采用的是高級虛擬中斷控制器(AVIC),該控制器提供在后期型號的Carrizo處理器中。而英特爾則使用高級可編程中斷控制器虛擬化(APICv),該虛擬化最早出現在2013年和2014年的多款Xeon E5處理器中。
在2019年,除部分Intel Atom型號外,幾乎所有主要處理器型號都具有虛擬化硬件支持。例如,Atom處理器的Diamondville,Pineview和Cedarview變體不支持Intel-VT。
默認情況下,虛擬化支持并非始終啟用。某些系統主板要求管理員在軟件可使用虛擬化功能之前啟用系統固件(BIOS)中的虛擬化功能。
在這個由三部分組成的系列文章的第二部分中,我們將介紹每個主要的GPU擴展。