虛擬化是云計算技術基石,是RISC-V走進云計算等高性能計算場景的必然要求。
虛擬化允許在單一物理硬件上創建出多個虛擬實例或環境,每一個虛擬環境擁有和物理機相近的計算能力、存儲和網絡等處理能力,提供了類似物理機的性能和環境,這個虛擬環境通常被稱作虛擬機(Virutal Machine)。通過虛擬化,用戶可以在同一臺服務器上運行多個操作系統、應用程序或服務,從而提高資源利用率、簡化管理并降低成本。和直接使用物理機相比,擁有虛擬化能力的硬件平臺在資源的有效利用、動態調配和高可靠性方面有著巨大的優勢。
在新引入的虛擬化層運行的管理程序通常稱為虛擬機管理器(Virtual Machine Manager, VMM),也叫做Hypervisor。虛擬機管理器所運行的環境,也就是真實的物理硬件平臺,稱之為宿主機(Host)。而虛擬出來的虛擬硬件平臺通常稱為客戶機(Guest),客戶機里運行的系統也對應地稱為客戶機操作系統(Guest OS)。
通過軟件模擬實現的虛擬化需要Hypervisor大量截獲Guest OS的特權操作,并模擬客戶機相應的操作,整個操作過程會涉及大量宿主機和客戶機上下文之間的切換,從而會導致客戶機的運行效率受到極大的影響。硬件輔助虛擬化就是物理硬件平臺本身提供了對特殊指令的截獲和重定向的硬件支持,甚至,新的硬件會提供額外的資源來幫助軟件實現對關鍵硬件資源的虛擬化,從而提升性能。
RISC-V國際基金會2021年制定了Hypervisor 1.0規范,2023年制定了AIA 1.0規范和IOMMU 1.0規范,這3個規范定義了RISC-V硬件輔助的CPU虛擬化、外設虛擬化規范,形成了RISC-V特色的硬件輔助虛擬化完整解決方案。
01
CPU虛擬化
進迭時空研發的高性能CPU核X100符合RISC-V Hypervisor Extension (RVH) V1.0標準,支持硬件輔助CPU虛擬化。
虛擬化特權級
操作系統需要為用戶態應用程序(User Applications)和操作系統內核(Kernel)提供不同的(U/S)特權級之間的硬件隔離(通常通過MMU),從而提高計算機的性能和安全性。
宿主機操作系統同樣需要為客戶機和宿主機提供隔離的運行環境;不支持硬件虛擬化的CPU通常只能在較低特權(U)上虛擬出運行Guest OS所需要的虛擬特權級(Virutal U/S), 運行在虛擬特權級(Virtual S)的Guest操作系統訪問特權指令時需要陷入到S特權級,并由運行在S特權級的Hypervisor截獲操作并代為完成。
X100將RISC-V的(U/S/M)特權級擴展成(VU/VS/HS/M)特權級以支持Hypervisor和Guest OS所需要的運行環境。
X100 通過RVH擴展提供了運行Guest OS所需要的虛擬特權級(Virtual U/S), 其中(VU/VS)特權級分別用于運行Guest OS的用戶態應用程序及操作系統內核,而Host OS以及其應用程序則運行在HS/U特權級下。同時為了減少由于模擬客戶機特權指令導致的上下文切換,X100 RVH虛擬化擴展為運行Guest OS的vCPU提供了虛擬特權指令,從而提高了整個系統運行的安全性以及虛擬機的運行效率。
此外,硬件自動截獲Guest OS少量特殊指令和特權操作,可以使得虛擬機管理器實現多個Guest OS之間的調度。
MMU虛擬化
操作系統通過虛擬內存管理系統管理自己的連續物理內存視圖,按需配置為不同權限分配給用戶態應用程序和操作系統內核隔離硬件資源。
而Hypervisor操作系統中只存在一級地址轉譯,要么通過截獲Guest OS的地址轉譯實現Guest虛擬地址(GVA)到Host虛擬地址(HVA)也即Guest物理地址(GPA)之間的轉譯,要么通過配置額外的軟件實現的影子頁表(Shadow Page Table)來實現Guest虛擬地址(GVA)直接到Host物理地址(HPA)之間的轉譯。即便后者減少了Hypervisor介入的頻度,但是因為不存在硬件實現專用于虛擬機帶VMID的轉換后備緩存(Translation Lookaside Buffer,TLB),虛擬機切換需要頻繁沖刷硬件TLB,導致轉譯性能低下。
X100的MMU支持VS-stage和G-stage兩級地址轉譯,其中VS-stage地址轉譯由Guest OS維護,用于將GVA轉譯成GPA;G-stage地址轉譯由Hypervisor維護,用于將GPA轉譯成真正的Host物理地址(HPA)。
轉譯過程不再需要虛擬機管理器參與修改一級地址轉譯中專用于GVA到GPA映射關系的表項,也可以命中硬件轉譯的TLB緩存,極大提高了虛擬機的運行效率。
02
外設虛擬化
進迭時空研發的高性能CPU核X100和配套的T100系統外設符合RISC-V IO Memory Management Unit (IOMMU) V1.0和RISC-V Adavanced Interrupt Architecture (AIA) V1.0標準,支持硬件輔助PCIe外設虛擬化。
IO虛擬化
操作系統可以軟件模擬(I/O Emulation)一個外設,也可以將硬件外設直接分配(I/O透傳,IO Pass-through)給Guest OS運行。
無論哪種方式,物理外設只有一個,要么由Host OS操作要么由Guest OS操作。而外設虛擬化的核心應用則是支持PCI-SIG組織維護的SR-IOV規范。該規范允許硬件上將單個的外設物理功能(Physical Function,PF)虛擬出多個外設虛擬功能(Virtual Function,VF),并利用I/O透傳技術將虛擬功能分配給Guest OS。
X100配套搭載的T100支持S1和S2兩級地址轉譯,分別用于GVA到GPA的地址轉譯及GPA到HPA的地址轉譯,以此來支持I/O透傳技術,使得分配給虛擬機的加速器外設的PF或VF可以直接使用Guest OS的虛擬地址進行DMA傳輸,這使得利用Guest OS的CPU地址編寫的程序中的指針可以直接傳遞給加速器使用,為CUDA等基于編譯器的算力加速解決方案提供了硬件基礎。
除了地址轉譯,IOMMU還支持PCIe的ATS/PRI等擴展功能,允許支持ATC功能的PCIe加速器外設緩存地址翻譯表項和按需申請內存映射。此外IOMMU還支持MSI_FLAT類型的MSI頁表為中斷(IRQ)虛擬化提供了中斷向量表的翻譯加速。
IRQ虛擬化
即便虛擬機可以操作通過IO透傳分配給它的硬件外設,硬件外設的中斷也需要特殊的機制才能直接傳遞到虛擬機中,否則就只能由收到外設中斷的Host OS通過軟件方式將硬件中斷遞送到Guest OS。基于消息的中斷(MSI)允許硬件外設通過消息將中斷發往指定的地址。而IRQ虛擬化技術是通過將中斷發往AIA擴展中為虛擬特權(VS)提供的MSI虛擬中斷通道,從而實現虛擬中斷對虛擬機的中斷直通。
X100配套搭載的AIA支持HS/VS特權級的CPU核內的中斷抽象,每個Guest和Hypervisor都有自己的中斷處理文件。當外設產生中斷時,可以通過設置對應虛擬機的中斷文件來向它投送中斷,從而支持了中斷虛擬化。AIA還提供IMSIC中斷控制器為不同中斷文件接收MSI中斷,以及APLIC將連線中斷轉化為MSI中斷。至此,外設PF和VF可以將MSI中斷直接發往虛擬機而不需要經過Hypervisor干預。
03
虛擬化運行演示
基于X100處理器、AIA和IOMMU,進迭時空實現了服務器芯片原型系統,移植開發了OpenSBI、Linux Kernel、openEuler OS等系統軟件,并在其上成功運行了服務器KVM虛擬機及GuestOS,并通過PCIe接口實現了NVMe設備的虛擬化。具體運行過程可以參看下方視頻:
-
服務器
+關注
關注
13文章
9699瀏覽量
87306 -
虛擬化
+關注
關注
1文章
399瀏覽量
30116 -
RISC-V
+關注
關注
46文章
2498瀏覽量
48286
發布評論請先 登錄
寶界科技WEB服務器立體防御解決方案
寶界科技WEB服務器立體防御解決方案
269私有云服務器的完全解決方案
風河推出嵌入式虛擬化解決方案Hypervisor 1.1版本
Gartner報告解讀:“中國語境”服務器虛擬化市場指南
美格智能LXC容器化解決方案,輕松玩轉多系統虛擬化

評論