当前位置: 首页 > news >正文

RISC-V AIA SPEC学习(五)

第六章 Interrupts for Virtual Machines(VS Level)

核心内容

1.VS级别外部中断支持:​​

    • ​​客户中断文件(Guest Interrupt File)​​:虚拟机的每个vCPU拥有独立的IMSIC中断文件,允许直接接收设备MSI。
    • ​​vstopi CSR​​:类似stopei,用于虚拟机内部处理最高优先级中断。

2.​虚拟中断注入:​​

    • Hypervisor通过​​hvictl CSR​​配置虚拟中断,包括设置虚拟中断身份(IID)和触发方式。
    • ​​hviprio1/hviprio2​​:配置VS级别主要中断(如VSEI、VSTI)的优先级。

3.中断捕获与模拟:​​

    • 当虚拟机无客户中断文件时,所有外部中断由Hypervisor捕获并模拟(如通过hvip CSR注入虚拟中断)。

当实现管理程序扩展(hypervisor extension)时,一个硬件线程(hart)的可能特权模式集合将包括用于托管虚拟硬件线程(virtual harts)的虚拟特权监督模式(VS,Virtual Supervisor)和虚拟用户模式(VU,Virtual User)。高级中断架构(Advanced Interrupt Architecture)为管理程序扩展增添了新的中断设施,这些设施与之前描述的用于特权监督级别(supervisor-level)中断的设施相一致。

如第二章所述,添加了多个与管理程序和虚拟特权监督模式(VS)相关的控制与状态寄存器(CSR):hvien、hvictl、hviprio1、hviprio2、vsiselect、vsireg、vstopei 和 vstopi。(对于 RV32 架构,还添加了以下高半部分 CSR:hidelegh、hvienh、hviph、hviprio1h、hviprio2h、vsiph 和 vsieh。)与往常一样,当在 VS 模式或 VU 模式下执行时,VS CSR 将替代对应的特权监督 CSR。

为了使在虚拟机中运行的软件看起来像是在一台实现了高级中断架构的特权监督级别的真实机器上执行,管理程序软件和本章描述的硬件设施需要共同承担责任。虽然某些行为可以直接由硬件处理,但其他行为则需要管理程序进行大量的模拟,有时还需要硬件的协助。

6.1. VS-level external interrupts with a guest interrupt file

当一个硬件线程(hart)实现了管理程序扩展(hypervisor extension)时,建议该hart还配备一个集成消息信号中断控制器(IMSIC),并具备客户中断文件(guest interrupt files)。假设客户中断文件可用,那么每个客户中断文件都可以被分配给物理hart上的一个虚拟hart,作为该虚拟hart的特权监督级别(supervisor-level)中断文件。如果存在多个客户中断文件,那么物理hart上的每个虚拟hart都可以拥有一个物理客户中断文件,作为其(虚拟的)特权监督级别中断文件。当前虚拟hart的客户中断文件始终由CSR hstatus中的VGEIN字段指示。当VGEIN不是客户中断文件的有效编号时,当前虚拟hart就没有客户中断文件作为其特权监督级别中断文件。

当hstatus.VGEIN是客户中断文件的有效编号时,viselect的值在0x70-0xFF范围内会选择该客户中断文件的寄存器,这与siselect在同一范围内选择IMSIC真实特权监督级别中断文件的寄存器的方式相同。通过vsiselect和vsireg间接访问的中断文件寄存器在关于IMSIC的第三章中有详细说明,同时该章还介绍了仅与IMSIC相关的CSR vstopei。由于所有IMSIC中断文件的行为都相同,因此虚拟hart通过CSR siselect、sireg和stopei访问的客户中断文件,从S模式(或HS模式)的角度来看,与真实的特权监督级别中断文件没有区别。

除了每个hart上的IMSIC外,虚拟机可能还需要看到平台级中断控制器(PLIC)或高级平台级中断控制器(APLIC)。然而,与IMSIC能够为虚拟hart提供物理客户中断文件的能力不同,PLIC或APLIC必须由管理程序为虚拟机进行模拟。

 目前,高级中断架构(Advanced Interrupt Architecture)并不包括用于虚拟化APLIC的硬件辅助。对于hart数量较少的情况,这样的硬件将比为IMSIC实现客户中断文件所需的硬件大得多。假设大多数高性能I/O可以通过能够直接向客户中断文件发送消息信号中断(MSI)的设备来完成(例如通过PCI Express互连连接的设备)。对于那些中断必须通过(虚拟的)APLIC的设备类型,模拟APLIC的开销预计不会太大。

当一个虚拟hart因为被分配了一个客户中断文件而看似拥有一个IMSIC时,所有发往该虚拟hart的外部中断(无论是真实的还是模拟的)都必须通过这个看似存在的IMSIC。管理程序可以很容易地通过设置中断待处理数组中的一个位(该数组通过vsiselect和vsireg间接访问)来向hstatus.VGEIN选择的客户中断文件中注入一个模拟的外部中断。当一个虚拟hart拥有客户中断文件时,管理程序通常不需要在CSR hvip中设置VSEIP位。

在一种特殊情况下,如果为虚拟机模拟的APLIC具有一个与真实APLIC的实际中断源相对应的硬连线中断源,并且在该虚拟机中运行的软件将其虚拟APLIC配置为将来自该源的中断作为MSI转发到特定的虚拟hart,那么管理程序可以配置真实APLIC以将实际中断直接作为MSI转发到该虚拟hart的客户中断文件。这样,尽管管理程序必须捕获并模拟虚拟机在虚拟APLIC上配置中断转发的内存访问,但中断本身可以自动转换为针对客户中断文件的真实MSI,而无需为每个到达的中断调用管理程序。

6.1.1. Direct control of a device by a guest OS

为确保对中断提供恰当的支持,在管理程序允许运行在虚拟机中的客户操作系统(guest OS)直接控制一个能够发送消息信号中断(MSI)的物理设备之前,必须满足两个条件:首先,每个虚拟硬件线程(virtual hart)必须被分配一个客户中断文件,这样每个虚拟hart在虚拟机内部就拥有了一个看似独立的集成消息信号中断控制器&#

相关文章:

  • NWD 格式转换 STL 全流程:专业方案与迪威模型网在线转换详解
  • Filecoin存储管理:如何停止Lotus向特定存储路径写入新扇区数据
  • 21.第二阶段x64游戏实战-分析采集物偏移
  • 工业软件自主化突围:RTOS 如何打破 “协议栈 - 控制器” 生态垄断
  • MapStruct用法实战
  • 驱动-信号量
  • C++结构体介绍
  • Go Modules 的基本使用
  • 富乐德传感技术盘古信息 | 锚定“未来工厂”新坐标,开启传感器制造行业数字化转型新征程
  • [Windows] 东芝存储诊断工具1.30.8920(20170601)
  • AOP实现原理
  • LVGL9保姆级教程(源码获取)
  • 了解Hadoop
  • 背单词软件开发英语App英语提分宝超级单词表,河南数匠软件开发
  • 左支座加工工艺与钻φ25孔专用夹具设计
  • RISC-V CLINT、PLIC及芯来ECLIC中断机制分析 —— RISC-V中断机制(一)
  • Windows平台下的Qt发布版程序打包成exe可执行文件(带图标)|Qt|C++
  • 拉西坦类促智药物的异同
  • Java Stream API 深度解析:从入门到高阶应用
  • JavaScript性能优化实战,从理论到落地的全面指南
  • 新修订的《婚姻登记条例》明起施行,领证不用户口本了
  • 上海消防全面推行“检查码”,会同相关部门推行“综合查一次”
  • 铲屎官花5万带猫狗旅行,宠旅生意有多赚?
  • 明查|这是“C919迫降在农田”?实为飞机模型将用于科普体验
  • 华为招聘:未与任何第三方开展过任何形式的实习合作
  • 外交部介绍中国赞比亚共同举办人工智能能力建设主题活动情况