硬科技:x86虛擬化由內到外還是繼續難搞(下)

2020.03.25 08:00AM
照片中提到了硬科技、x8O虚擬化由內到外、還是繼續難搞6,跟馬薩諸塞灣運輸局有關,包含了英特爾酷睿i7 2600k、英特爾酷睿i7-2600K、英特爾、顯示裝置、紫色

前情提要。所謂「x86虛擬化」並非搞定處理器就功德圓滿,畢竟一台電腦還有很多週邊設備,特別是I/O、網路和重要性逐漸增加的繪圖核心,也都是需要「高效能虛擬化」的重點項目。

I/O虛擬化:Intel VT-d,AMD Vi

想進一步讓系統I/O虛擬化,讓虛擬機可透過直接記憶體存取 (DMA) 與中斷重對映 (Interrupt Remapping) ,直接存取各種 I/O 周邊,硬體必須能夠管理、隔離所有週邊I/O裝置實際上所使用的DMA虛擬記憶體位址及中斷向量,這單靠處理器虛擬化是作不到的,需要系統晶片組具備相對應的硬體功能與BIOS和UEFI等韌體的協助。

Intel在2007年中期推出的北橋晶片組Q35首度支援VT-d技術(Intel Virtualization Technology For Directed I/O),具備轉換DMA記憶體位址的硬體功能,可隔離不同虛擬機所動用的I/O裝置記憶體位址。VT-d日後從伺服器到桌機到筆記型電腦,慢慢成為所有Intel x86平臺的「制式武裝」,也跟著處理器整合北橋和記憶體控制器,融合成處理器的一部分。

照片中提到了VT-d Overview、• VT-d provides infrastructure for I/O virtualization、Defines architecture for DMA remapping,包含了高視、角度、線、產品、組織

AMD在I/O虛擬化的進度較晚,2009年下半年的系統晶片組SR5690/SR5670,導入功能和VT-d大同小異的IOMMU(I/O Memory Management Unit),後來稱之為AMD Vi。

照片中提到了Main Memory、Physical addresses、IOMMU,跟戴夫有關,包含了內存管理單元、輸入輸出存儲器管理單元、直接內存訪問、內存管理單元、電腦內存

先進可程式化中斷控制器的虛擬化:AMD AVIC,Intel APICv

分配、協調各I/O週邊裝置存取處理器需求,發出中斷(Interrupt)時,知道該由哪個處理器負責,是近代多處理器環境的必要條件,而起源於1993年Pentium的先進可程式化中斷控制器(APIC, Advanced Programmable Interrupt Controller)則是其技術核心。但和記憶體虛擬化的狀況如出一轍,讓VMM建立軟體模擬的「Shadow APIC」不僅耗費處理器效能,更會造成虛擬機頻繁的進出執行環境。

AMD在2012年發表AVIC(Advanced Virtual Interrupt Controller),但遲至2016年才出現在Carrizo APU。Intel則是在2013年發布APICv(APIC Virtualization),在2013年實用於Ivy Bridge微架構的Xeon E5-2600 v2,在Broadwell世代更加精進,更徹底的硬體化。

照片中提到了Posted Interrupts、Efficient routing of interrupts from assigned devices to migrating virtual CPUS、Works together with APIC Virtualization for improved virtual-interrupt performance,包含了發布的中斷、虛擬機、打斷、英特爾、中央處理器

網路卡虛擬化:Intel VT-c

身為乙太網路重要規格制定者之一的Intel,網路晶片對他們來說一直是相當重要的業務,所以讓網路卡跟上虛擬化風潮,也是理所當然的事情。其VT-c包含了2個部份:

VMDq:網路晶片內建的封包分類器,事先分開不同虛擬機的封包,減輕處理器的負擔。

照片中提到了VM,、VM2、VM,,包含了圖、線、角度、點、黃色

VMDc:藉由PCI-SIG制定的SR-IOV(Single Root I/O Virtualization)技術,讓多個虛擬機可直接存取網路卡(或其他I/O裝置),無須勞駕VMM去分配其資源。

照片中提到了IOVM、VIMA、VM.,包含了鋼琴、角度、線、點、鋼琴

GPU虛擬化:Intel GVT,AMD MxGPU

Intel在2014年Haswell的Iris Pro整合繪圖核心提供了3種GPU虛擬化:指定給單獨虛擬機的GVT-d、執行標準驅動程式讓多個虛擬機分時共享(分片)的GVT-g、以及利用透過虛擬化專用驅動程式以便「獨樂樂不如眾樂樂」的GVT-s。但市場接受度究竟如何,就不再這裡討論了。

照片中提到了Contributions、GVT-g in Upstream Kernel、Host Linux,包含了圖、輸入輸出存儲器管理單元、虛擬化、量化寬鬆、英特爾

AMD則是在2016年發表基於SR-IOV的MxGPU,首款產品是FirePro S7150x2。當然一定會有科科想起nVidia更早就有了vGPU,但筆者不打算在這裡介紹,因為「GPU虛擬化」是一個很複雜很巨大的主題,值得特別撰文大書特書。

照片中提到了HOST VM、GUEST、GUEST,包含了sr iov gpu、單根輸入/輸出虛擬化、圖形處理單元、Advanced Micro Devices公司、電腦硬件

控制L3快取記憶體與主記憶體的「服務品質」:Intel RDT,AMD QoS指令

不過,最後還是稍微談一下「走火入魔」的x86虛擬化技術。

Intel在2013年Haswell與2014年的Broadwell微架構世代,進一步追求控制不同虛擬機器佔用L3快取空間與記憶體頻寬的精細調控機制(在Broadwell稱為Resouce Director Technology),實現「L3快取記憶體層級的QoS(Quality-Of-Service)」,避免系統資源被少數虛擬機吃光,或著讓VMM集中資源在最需要的虛擬機身上。

照片中提到了Cache Monitoring Technology、Cache Allocation Technology、Enables per-thread/app/VM L3,包含了通訊、英特爾、Broadwell、記憶體頻寬、服務器

結果事隔多年,AMD也在Zen2加入類似的QoS指令,有時候還蠻同情x86虛擬機管理者廠商,都要開發Intel、AMD雙方的版本,真的是讓人覺得太科科了。