Page 64 - 《软件学报》2025年第9期
P. 64

李传东 等: RISC-V  架构下的懒惰影子页表模型                                                     3975


                 换页表基地址的时候. 该指令功能非常强大, 即可以刷新全局所有                    TLB  表项, 也可以细粒度地指定地址空间标识
                 符或者要刷新的虚拟地址.

                 2.1.2    虚拟化扩展
                    RISC-V  架构中已经正式通过并纳入了一个虚拟化扩展               [23] , 该扩展详细描述了   RISC-V  如何处理和实现与虚
                 拟化相关的寄存器和特权模式, 以提升虚拟化效率和简化                   hypervisor 的实现. 具体而言, 在特权级模式方面, 虚拟
                 化扩展引入了虚拟监督模式          (VS mode) 和虚拟用户模式     (VU mode). 同时, 传统的  S mode 下新增了一套关于该扩
                 展的寄存器和指令集, 且更名为虚拟化扩展监督模式                 (HS mode). 通常而言, VS mode 下将运行虚拟机的操作系统.
                 而在  VU mode 下, 虚拟机进程的行为与常规用户模式类似, 不同之处在于陷阱                   (traps) 和系统调用  (syscalls) 将被
                 发送到   VS mode, 而不是  HS mode. 该虚拟化扩展的主要优势在于, 它能够自动处理              VS mode 中控制状态寄存器
                 的读写操作    (带有“s”前缀的寄存器), 将这些操作自动映射到扩展的                VS mode 寄存器上   (带有“vs”前缀的寄存器).
                 这使得虚拟化的实现更加简单, hypervisor 无需再拦截虚拟机中任何对敏感寄存器的访问, 图                       3  对比了是否具有虚
                 拟化扩展的    RISC-V  架构下实现的虚拟化技术.

                                                                    VU mode
                                                                                      非特权
                                                                        应用程序          寄存器
                              U mode                          sret                              syscall
                                 应用程序         非特权                   VS mode
                                              寄存器                                    vs-寄存器
                                VM 操作系统                                VM 操作系统
                     sret                               syscall  sret                           ecall
                                                         ecall
                              S mode                                HS mode
                                              s-寄存器                                  s-寄存器
                                虚拟机监视器                                 虚拟机监视器        h-寄存器
                              M mode                                M mode
                                             m-寄存器                                   m-寄存器
                                 固件 (SBI)                               固件 (SBI)
                                (a) RISC-V basic architecture          (b) RISC-V with H-extension
                                 图 3 虚拟化技术在虚拟化扩展          RISC-V  和基础  RISC-V  架构下的实现

                    尽管扩展了多个特权级, M mode 仍然是具有最高权限的特权级. 当在                   VS  或者  VU  模式触发陷阱时, 硬件仍
                 然会陷入    M mode, 若配置了机器模式中断和异常授权寄存器              (medeleg  和  mideleg  寄存器), 会被委托到  HS  模式
                 处理. 进一步地, 若还配置了虚拟机中断和异常授权寄存器                 (hedeleg  和  hideleg), 还会被委托到  VS  模式进行处理.
                    虚拟化扩展中对嵌套页表模型进行了硬件支持. 与传统                  x86  的扩展页表机制     (extended page table, EPT) 类似,
                 RISC-V  虚拟化扩展中也使用两个基地址寄存器             (vsatp  和  hgatp  寄存器) 分别保存虚拟机中的进程页表基地址和
                 hypervisor 中的嵌套页表基地址. 当一个硬件线程处于            VS  或者  VU mode 时, 嵌套页表模型总是被开启, 即       GVA
                 需要通过两维页表遍历才能够转化为             HPA. 不过, 虽然当前不支持关闭嵌套页表模型, 但是可以将任意基地址寄
                 存器中的模式位置零来禁用任意一级的页表遍历以达到关闭嵌套页表模型的效果.
                    虚拟化扩展通过引入虚拟指令异常             (virtual instruction exceptions) 来控制  VS  模式下的一些敏感指令的执行.
                 虚拟指令异常是与传统的非法指令异常              (illegal instruction exceptions) 进行区分. 在虚拟机状态寄存器  (hstatus 寄
                 存器) 中可以细粒度地调整产生虚拟指令异常的行为. 例如该寄存器中的虚拟机内存陷入字段                              (virtual trap virtual
                 memory, VTVM) 将控制在   VS  模式下刷新    TLB  和访问  satp  寄存器的行为是否会产生虚拟指令异常. 这增强了
                 hypervisor 对于虚拟机细粒度管理能力.

                 2.2   内存虚拟化技术
                    虚拟化技术通过引入一个新的系统软件抽象层                 (即  hypervisor), 以控制虚拟机对物理资源的访问. 每个虚拟机
                 都拥有独立的虚拟硬件抽象          (如  CPU、内存等), 从而构建出一个完整且隔离的执行环境. 为了给虚拟机提供隔离
                 且连续的物理地址空间, hypervisor 引入了客户机物理地址空间的概念. 客户机物理地址空间使得虚拟机能够获得
   59   60   61   62   63   64   65   66   67   68   69