1、RISC-V虚拟化技术概览及实践李天正中国电信研究院2RISC-V虚拟化现状RISC-V逐步进入云计算领域,虚拟化是云计算技术的基石指令集规范进展虚拟化扩展规范已经发布正式版本IOMMU、AIA等规范逐步完善问题特性和规范仍待完善,如嵌套虚拟化、SBI对虚拟化的完整支持硬件实现进展国内外厂商发布数款支持虚拟化的CPU IP开源实现Rocket Chip、香山昆明湖问题在短期内仍缺少支持虚拟化的SoC产品软件生态进展QEMU、KVM等虚拟化基础软件适配Ubuntu、Debian等服务操作系统适配问题Xen、Firecracker等相关虚拟化软件仍未适配,虚拟化软件生态与x86和ARM仍存在差距3
2、RISC-V虚拟化扩展RISC-V特权架构规范提供了硬件虚拟化支持,即可选的 hypervisor 扩展(H),1.0版本于2021年12月发布,包括以下改动扩展 H扩展为HS和VS模式新增了一系列CSR,并修改了M模式的部分CSR 新增部分指令Hypervisor InstructionsHLV.widthHLVX.HU/WUHSV.widthHypervisor Virtual-Machine Load and Store InstructionsHFENCE.VVMAHFENCE.GVMAHypervisor Memory-Management Fence Instructions 两阶
3、段地址转换 新增用于虚拟化的中断和异常hstatushedeleghvip.vsstatusvsipvstvec.增加新的特权模式,Hypervisor运行在HS模式,虚拟机则运行在VS和VU模式4RISC-V虚拟化技术实践-TeleVM 轻量级虚拟机诞生背景:容器云、Serverless等应用不断发展,当前容器轻量,但不够安全;虚拟机安全,但不够轻量。目前KVM和QEMU 一起构成了当前业界主流的虚拟化方案,其中KVM位于Linux 内核,将硬件虚拟化的功能抽象成接口交给用户空间使用,QEMU则位于用户空间管控虚拟机。然而QEMU存在以下问题:代码过重:目前 QEMU已经有157万代码,存在
4、臃肿、响应慢、占用资源多等问题安全问题:QEMU的CVE问题,其中有将近一半是因为内存问题导致的 轻量级虚拟机优势:精简了传统虚拟机(QEMU+KVM),既能保障安全,又具备轻量化、低开销的特点 典型轻量级虚拟机开源项目Firecracker(AWS)Stratovirt(OpenEuler)目前缺少支持RISC-V架构的轻量级虚拟机5轻量级虚拟机TeleVM Rust-VMM工具链适配 RISC-V CPU虚拟化 RISC-V 中断虚拟化 RISC-V I/O虚拟化 RISC-V 内存虚拟化 RISC-V BootLoader优势强隔离性:基于RISC-V硬件虚拟化能力和KVM实现强隔离性轻
5、量低噪:相比QEMU+KVM传统方案启动时间降低80%,内存底噪减少90%安全可信:基于Rust安全语言;架构精简减少攻击面可扩展性:统一接口设计,可扩展设备模型和特性TeleVM整体架构6Rust-VMM适配适配RISC-V架构kvm-ioctls:kvm api封装kvm-bindings:kvm数据结构封装仅支持x86和ARMRust-VMM组件 Rust-VMM是由AWS、谷歌等公司贡献的开源项目,为构建VMM程序提供了一组可重用的组件 TeleVM使用kvm-ioctls和kvm-bindings与KVM交互7RISC-V CPU虚拟化KVM API 文档:https:/www.ke
6、rnel.org/doc/html/latest/virt/kvm/api.htmlRISC-V core registersRISC-V timer registers CPU模块使用KVM实现对CPU的模拟,在用户态主要负责vCPU生命周期的管理和vCPU寄存器的初始化 针对RISC-V架构只能使用KVM提供的KVM_SET(GET)_ONE_REG对vCPU的单个寄存器进行操作 vCPU在初始化阶段要设置pc,a0,a1寄存器以启动Guest OS;通过获取timer等