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.mzph.cn/diannao/82390.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python-Day 11】列表入门:Python 中最灵活的数据容器 (创建、索引、切片)

Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…

【AXI总线专题】-AXI-LITE总线解读

【AXI总线专题】-AXI-LITE总线解读 1.axi-lite概述2.信号定义Write address channelWrite data channelWrite response channelRead address channelRead data channel 3.测试4.仿真波形5.工程文件 参考手册 《3-2-03米联客2022版AXI4总线专题-20211123.pdf》 《IHI0022E_amba_…

在企业级项目中高效使用 Maven-mvnd

1、引言 1.1 什么是 Maven-mvnd? Maven-mvnd 是 Apache Maven 的一个实验性扩展工具(也称为 mvnd),基于守护进程(daemon)模型构建,目标是显著提升 Maven 构建的速度和效率。它由 Red Hat 推出,通过复用 JVM 进程来减少每次构建时的启动开销。 1.2 为什么企业在构建过…

网络字节序 - 大端

回顾主机字节序 - 大小端 发送主机将发送缓冲区中的数据按内存地址从低到高的顺序发出接收主机把从网络上接收到的数据按内存地址从底到高的顺序依次保存到接收缓冲区TCP/IP 规定,网络数据流应采用大端字节序,即低地址高字节,也就是说&#…

《被讨厌的勇气》书摘

阿德勒心理学考虑的不是过去的“原因”,而是现在的“目的”。你的朋友并不是因为不想到外面去,才制造出不安的情绪。是先有了“不出去”这个目的,之后才会为了达到这个目的而制造出不安或者恐惧之类的情绪。 个人见解:这是阿德勒…

打造专属AI好友:小智AI聊天机器人详解

打造专属AI好友:小智AI聊天机器人详解 在当下的科技热潮中,AI正迅速改变着我们的生活,成为了科技领域的新宠。而今,借助开源项目的力量,你可以亲手打造一个智能小助手——小智AI聊天机器人。它不仅是一个技术探索的窗…

如何利用爬虫获得1688商品详情:实战指南

在电商运营和市场分析中,获取1688商品详情数据是一项重要任务。本文将详细介绍如何利用爬虫技术获取1688商品详情,包括准备工作、爬虫实现步骤以及注意事项。 一、准备工作 (一)注册1688开放平台账号 在1688开放平台注册开发者…

如何优化系统启动时间--基于米尔瑞萨MYD-YG2LX开发板

1.概述 MYD-YG2LX采用瑞萨RZ/G2L作为核心处理器,该处理器搭载双核Cortex-A551.2GHzCortex-M33200MHz处理器,其内部集成高性能3D加速引擎Mail-G31 GPU(500MHz)和视频处理单元(支持H.264硬件编解码),16位的DDR4-1600 / DDR3L-1333内…

QML 图像变换(缩放、平移、旋转)

目录 引言相关阅读基础知识工程结构核心代码解析示例1:图像缩放(ImageScale.qml)代码说明运行效果 示例2:图像平移(ImageTransform.qml)代码说明运行效果 示例3:图像旋转(ImageRotat…

Linux 系统命令使用指南1

适用于 Red Hat / CentOS / Rocky Linux 等系统的基本初始化配置操作。 🔒 1. 关闭 SELinux(临时生效) setenforce 0⚠️ 注意:此命令仅临时关闭 SELinux,重启后可能恢复。要永久关闭,请修改 /etc/selinux…

1.2.1 Linux音频系统发展历程简介

Linux音频系统的发展经历了从最初的简单驱动到今天多层次、模块化音频架构。简要梳理其主要历程: 早期的OSS(Open Sound System) 在90年代及2000年代初,Linux主要使用OSS来支持音频。OSS直接为硬件设备(如声卡&#…

【Linux操作系统】第一弹——Linux基础篇

文章目录 💡 一. Linux的基本常识🪔 1.1 linux网络连接三种方式🪔1.2 虚拟机的克隆🪔1.3 虚拟机的快照🪔1.4 虚拟机的迁移和删除🪔1.5 vmtools工具 💡二. Linux的目录结构🪔2.1 Linu…

STM32printf重定向到串口含armcc和gcc两种方案

STM32串口重定向:MDK与GCC环境下需重写的函数差异 在嵌入式开发中,尤其是使用 STM32系列微控制器 的项目中,调试信息的输出是不可或缺的一部分。为了方便调试,开发者通常会选择将 printf 等标准输出函数通过 UART 串口发送到 PC …

C++ 文本读写与二进制读写的底层机制

1.文件的打开方式 1.文本打开 在windows中,写入时会将\n换成\r\n,读出时\r\n会读出\n linux对\n读写不做处理 2.二进制打开 对\n读写不做处理 2.文本读写 1.数据要先变成字符串再写进缓冲区 2.字符串直接写进缓冲区就是 3.c对文本读写的支持 istream/ostream中重载了对…

02 mysql 管理(Windows版)

一、启动及关闭 MySQL 服务器 1.1 通过 “服务” 管理工具 winr打开运行,输入services.msc 找到MySQL80,这个是我们在安装mysql的时候给的服务的名称,具体见文章mysql 安装 右键选择启动或者停止。 1.2 通过命令提示符 1.2.1 关闭命令…

Elasticsearch知识汇总之 ElasticSearch高可用方案

六 ElasticSearch高可用方案 6.1 高可用架构 请求协调节点根据负载均衡,转发给主分片节点,主分片同步复制给从节点,主从节点都写入完成返回客户端请求成功。对于读请求,协调负载到任意节点数据节点,数据节点把各自符合…

H5 移动端适配最佳实践落地指南。

文章目录 前言一、为什么需要移动端适配?二、核心适配方案1. 视口(Viewport)设置2. 三种适配方案 (仅供参考)(1)rem 适配方案(2)vw/vh 适配方案(3&#xff09…

MySQL初阶:数据库约束和表的设计

数据库约束 数据库约束是针对数据库中的表中的数据进行施加规则和条件,用于确保数据的准确性和可靠性。 数据库约束类型 1)not null 非空类型 :指定非空类型的列不能存储null,如果插入的数据是null便会报错。 2)de…

LVGL- 按钮矩阵控件

1 按钮矩阵控件 lv_btnmatrix 是 LVGL(Light and Versatile Graphics Library) v8 中提供的一个非常实用的控件,用于创建带有多个按钮的矩阵布局。它常用于实现虚拟键盘、数字键盘、操作面板、选择菜单等场景,特别适用于嵌入式设…

excel 批量导出图片并指定命名

一、开发环境 打开excel文件中的宏编辑器和JS代码调试 工具-》开发工具-》WPS宏编辑器 左边是工程区,当打开多个excel时会有多个,要注意不要把代码写到其他工作簿去了 右边是代码区 二、编写代码 宏是js语言,因此变量或者方法可以网上搜…