https://tinylab.org/riscv-kvm-virt-mode-switch/
https://tinylab.org/riscv-kvm-virt-trap/

特权模式

指令集中约定用虚拟化模式 V (virtualization mode) 来标记当前是否是在 Guest 系统中运行。V=1 表示当前确实运行在 Guest 系统中,V=0 则表示不运行在 Guest 中。

V虚拟化(H-Level Arch.)V虚拟化特例名义特权级运行的程序
1VU-mode0U-modeU-0Guest OS的应用程序
1VS-modeS-1Guest OS
0HS-mode0HS-modeS-1宿主OS / Hypervisor
0M-mode0M-modeM-3opensbi

在上述表格中,虚拟化特例指 hart 所指示的应用程序以 U-mode 直接运行在一个运行于 HS-mode 的 OS 上。

名义特权级(Nominal Privilege)是在 S-mode 基础上的特权级约定,分为 U, S, M 三级,分别用 0,1,3 表示,各类指令集模拟器均以此标准实现。

相关CSR

mstatus寄存器

在这里插入图片描述

  • MIE、SIE:当前中断使能
  • SPIE、MPIE:(previous) 记录trap之前的中断使能
  • SPP、MPP:记录trap之前的特权级别
  • TSR(Trap SRet):拦截supervisor异常返回指令sret。TSR=1,在S-mode下支持sret会导致illegal instruction exception。TSR=0,则允许S-mode下执行sret。

hstatus寄存器

在这里插入图片描述

  • SPV(supervisor previous Virtualization):sstatus.SPP 在 trap 时会被设置为 trap 对应的名义特权级,此时 hstatus.SPV 就会被设置为 trap 时的 V 值;当 V=0 时执行 sret 指令,SPV 置为 V。
  • SPVP (Supervisor Previous Virtual Privilege):V=1 时,行为与 sstatus.SPP 相同,即置为 trap 时的名义特权级;V=0 时,保持不变。
  • GVA (Guest Virtual Address):trap 到 HS-mode 时写入:对于写虚拟地址到 stval 的寄存器的 trap(breakpoint, address misaligned, access fault, page fault, or guest-page fault),hstatus.GVA 置 1,对于其他 trap 置 0。

sstatus

在这里插入图片描述
sstatus 是 mstatus 的一个子集。

  • SPP:用于标识 trap 进入 S-mode 之前 hart 所在的特权级:来自 U-mode 则置 0,否则为 1。
  • trap 处理过程中 sstatus 的行为
    trap to S-mode: SPIE=SIE, SIE=0
    sret: SIE=SPIE, SPIE=1

vsstatus

和sstauts一样。
V=1 时,vsstatus 用于替代 sstatus,所以通常针对 sstatus 的操作会替换为 vsstatus。

中断处理流程

在这里插入图片描述

中断委托

在这里插入图片描述
从上图可知,正常情况下 trap 都会导致 hart 的控制转移至 M-mode,处理之后通过 mret 指令返回到原来的模式。

特殊情况下 trap 会经由 mdeleg 或 mideleg 委派从 HS-mode 或 VS-mode 转移至 HS-mode,或再经由 hedeleg 或 hideleg 委派从 VU-mode 转移至 VS-mode。

被委派至 HS-mode 和 VS-mode 的 trap 在处理完毕后,将通过 sret 指令返回至 trap 之前的模式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/88321.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/88321.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/88321.shtml

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

相关文章

HCIA-华为VRP系统基础

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 本篇笔记是根据B站上的视频教程整理而成,感谢UP主的精彩讲解!如果需要了解更多细节,可以参考以下视频:…

OSS大数据分析集成:MaxCompute直读OSS外部表优化查询性能(减少数据迁移的ETL成本)

(1)数据存储与分析分离的痛点 传统架构中,OSS作为廉价存储常与MaxCompute计算引擎分离,导致ETL迁移成本高企。某电商案例显示:每日300TB日志从OSS导入MaxCompute内部表,产生以下问题: 延迟&…

vue | vue-macros 插件升级以及配置

Vue Macros 是一个为 Vue.js 提供更多宏和语法糖的开源项目vue-macros/vue-macros: Explore and extend more macros and syntax sugar to Vue. 问题:npm run build-only 打包时,报错:[Vue] Load plugin failed: vue-macros/volar 排查发现…

瑞芯微elf2开发板(rk3588)实现ros2humble下部署yolov5模型与Astrapro相机集成实现目标检测

版本信息总结以及工具介绍 组件版本说明RKNN Lite2.1.0嵌入式端推理库RKNN Runtime2.1.0运行时库 (967d001cc8)RKNN Driver0.9.8NPU驱动程序模型版本6RKNN模型格式版本工具链版本2.1.0708089d1模型转换工具链Python3.10编程语言OpenCV4.x图像处理库目标平台rk3588Rockchip RK3…

Web前端入门:JavaScript 事件循环机制中的微任务与宏任务

JS 是单线程语言。这句话对不对? 按照目前的情况来看,JS 自从支持了 Web Worker 之后,就不再是单线程语言了,但 Worker 的工作线程与主线程有区别,在 Worker 的工作线程中无法直接操作 DOM、window 对象或大多数浏览器…

【论文笔记】【强化微调】TinyLLaVA-Video-R1:小参数模型也能视频推理

[2504.09641] TinyLLaVA-Video-R1: Towards Smaller LMMs for Video Reasoning 1. 引述 继之前的一篇 Video-R1 的工作,一篇新的关于视频推理的工作很快就上传到 Arxiv 上 “占坑” 了,这个工作是关于使用小参数(3B)的 LLM 进行视…

基于元学习的回归预测模型如何设计?

1. 核心设计原理 目标:学习一个可快速适应新任务的初始参数空间,使模型在少量样本下泛化。数学基础: MAML框架: min ⁡ θ ∑ T ∼ p ( T ) [ L T ( f θ − η ∇ θ L T ( f θ ( D T t r a i n ) ) ( D T t e s t ) ) ] \min…

MyBatis Plus与P6Spy日志配置

前言 在开发基于Spring Boot和MyBatis Plus的项目时,日志功能是调试和优化SQL查询的核心工具。通过合理配置日志输出,开发者可以直观查看生成的SQL语句、执行时间、参数值以及潜在的性能瓶颈。 一、MyBatis Plus日志配置 1.1 基础配置:直接…

SpringCloudGateway(spel)漏洞复现 Spring + Swagger 接口泄露问题

环境配置 gateway Spring Cloud : 这个就是分布式的微服务组件 微服务 : 一般指的是独立的,专注于一项功能的服务 Gateway 这个其实是个云端的网关配置(他的作用就是对访问web的流量进行防护比如一些爬虫的阻截&#xff0…

服务器手动安装并编译R环境库包:PROJ→RGDAL

目录 方式1:conda-forge安装错误:缺乏libnsl.so.1✅ 方法一:查找系统中是否已有此库替补方案:采用libnsl.so.3链接 libnsl.so.1✅ 方法二:系统中没有安装 libnsl.so.1 → 手动安装✅ 方法三:使用 Conda 安装…

教育技术学读计算机论文的提示词

角色: 你是一位经验丰富的计算机专业教授,擅长用通俗易懂的语言向初学者解释复杂概念。我现在正在学习阅读计算机科学领域的算法论文,但我的基础比较薄弱(了解编程基础如变量、循环、函数,了解一点数据结构和算法概念如数组、链表、排序,但对高级术语和数学证明不熟悉)。…

棋盘格标定板和圆形标定板的优劣性

来源:deepseek 在相机标定中,棋盘格标定板和圆形标定板(或圆点阵列标定板)是最常用的两种类型。它们各有优劣,选择哪种取决于具体的应用场景、需求以及使用的标定算法。以下是它们的主要优劣对比: &#…

2025年UDP洪水攻击防御指南:从7.3Tbps攻防战看原理与实战

45秒37.4TB流量!一场刷新历史纪录的DDoS攻击正在颠覆传统防御体系 一、什么是UDP洪水攻击? UDP洪水攻击(UDP Flood)是一种利用用户数据报协议(UDP) 的无连接特性发起的分布式拒绝服务(DDoS&…

一种集成统计、视觉和基于规则方法的新型可解释医学图像分类人工智能框架|文献速递-最新论文分享

Title 题目 A novel explainable AI framework for medical image classificationintegrating statistical, visual, and rule-based methods 一种集成统计、视觉和基于规则方法的新型可解释医学图像分类人工智能框架 01 文献速递介绍 人工智能(AI)…

洛谷 P10113 [GESP202312 八级] 大量的工作沟通-普及/提高-

题目描述 某公司有 N N N 名员工,编号从 0 0 0 至 N − 1 N-1 N−1。其中,除了 0 0 0 号员工是老板,其余每名员工都有一个直接领导。我们假设编号为 i i i 的员工的直接领导是 f i f_i fi​。 该公司有严格的管理制度,每位…

数组题解——移除元素​【LeetCode】

27. 移除元素 快慢指针法 算法思路 使用双指针(fast和slow)遍历数组。 fast指针遍历每一个元素。slow指针指向下一个将被保留的位置。 如果nums[fast] ! val,就把nums[fast]赋值到nums[slow],并将slow向前移动一位。遍历结束后…

ubuntu20.04安装多版本python时,如何使用sudo python3.10

sudo 命令只会加载基本的path和动态库,自己定义的不会加入,因此会出现使用sudo运行多版本python出现奇怪的现象,进行如下操作就可以使用 sudo vi ~/.bashrc alias sudosudo env PATH$PATH LD_LIBRARY_PATH$LD_LIBRARY_PATH 使用 sudo visud…

统计学纯基础(1)

⛄统计分析分为统计描述与统计推断,统计推断分为总体估计与假设检验 🏂16:45 医学研究--基础研究、转化医学研究、临床研究 临床研究--病因学研究、诊断准确性试验、预后研究、疗效研究 一般认为3个月以内的预后属于近期预后,…

接口自动化测试之pytest 运行方式及前置后置封装

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、Pytest 优点认知 1.可以结合所有的自动化测试工具 2.跳过失败用例以及失败重跑 3.结合allure生产美观报告 4.和Jenkins持续集成 5.很多强大的插件 pytest-htm…

利用folium实现全国高校分布地图显示

智汇中国 | 揭秘!一张地图带你遨游全国高校殿堂 大家好,这期我们来利用folium模块实现全国高校分布的地图显示。 什么是Folium Folium为Python用户提供了便捷的方式来利用Leaflet.js的强大地图可视化功能,而无需直接编写JavaScript代码。它允许开发者以Pythonic的方式处理…