当前位置: 首页 > 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在虚拟机内部就拥有了一个看似独立的集成消息信号中断控制器&#

http://www.xdnf.cn/news/364645.html

相关文章:

  • Springboot+Vue+Mybatis-plus-Maven-Mysql项目部署
  • 可编辑56页PPT | 化工行业智慧工厂解决方案
  • nvidia-smi 和 nvcc -V 作用分别是什么?
  • 金贝灯光儿童摄影3大布光方案,解锁专业级童趣写真
  • 智能制造单元系统集成应用平台
  • SAM详解3.1(关于2和3的习题)
  • 学习黑客认识Security Operations Center
  • 雷赛伺服L7-EC
  • 抖音 “碰一碰” 发视频:短视频社交的新玩法
  • Midjourney-V7:支持参考图片头像或背景生成新保真图
  • Spring事务传播行为-实践向
  • 软件确认报告:审查功能、评估标准及推动软件稳定高效运行
  • 【Cesium入门教程】第五课:数据源
  • JAVA学习-练习试用Java实现“一个游戏AI :如井字游戏(Tic-Tac-Toe)的AI对手”
  • 【二】CURL命令解析
  • 报错 <pcl/features/feature_evaluation/feature_evaluation_framework.h> 不存在的解决办法
  • Java中的控制流语句:if、switch、for、foreach、while、do-while
  • Redis 8.0携新功能,重新开源
  • 【Unity】Unity中修改网格的大小和倾斜网格
  • 如何解决Jmeter中的乱码问题?
  • 【PHP】基于币安链,一个完整的USDT转账示例
  • 【python】 python拆包
  • 【QT】项目打包与发布安装
  • 图灵爬虫练习平台第七题千山鸟飞绝js逆向
  • 宠物医院预约|基于Java+vue的宠物医院预约平台系统(源码+数据库+文档)
  • windows celery OSError: [WinError 6] 句柄无效
  • ELF-如何学习
  • C++(1):整数常量
  • Mysql存储引擎
  • 期刊论文写作注意点