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

完整符合服務(wù)器需求的虛擬化解決方案X100+AIA+IOMMU
評(píng)論