虚拟化是云计算技术基石,是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文章
9795浏览量
87994 -
虚拟化
+关注
关注
1文章
400浏览量
30241 -
RISC-V
+关注
关注
46文章
2572浏览量
48830
发布评论请先 登录
宝界科技WEB服务器立体防御解决方案
宝界科技WEB服务器立体防御解决方案
269私有云服务器的完全解决方案
风河推出嵌入式虚拟化解决方案Hypervisor 1.1版本
Gartner报告解读:“中国语境”服务器虚拟化市场指南
美格智能LXC容器化解决方案,轻松玩转多系统虚拟化

评论