RISC-V h拓展

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 虚拟化特例 名义特权级 运行的程序
1 VU-mode 0 U-mode U-0 Guest OS的应用程序
1 VS-mode S-1 Guest OS
0 HS-mode 0 HS-mode S-1 宿主OS / Hypervisor
0 M-mode 0 M-mode M-3 opensbi

在上述表格中,虚拟化特例指 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 之前的模式。

相关推荐
极创信息16 小时前
信创领域五种主流CPU架构(X86 / ARM / RISC-V / MIPS / LoongArch)
java·arm开发·数据库·spring boot·mysql·软件工程·risc-v
嵌入式小企鹅2 天前
CPU需求变化、RISC-V安全方案、DeepSeek V4适配、太空算力动态
人工智能·驱动开发·华为·开源·算力·risc-v
国科安芯3 天前
商业航天与航空安全场景下抗辐射 MCU 选型、应用实践及发展趋势
单片机·嵌入式硬件·无人机·cocos2d·risc-v
国科安芯4 天前
空间辐射环境下抗辐射 MCU 可靠性机理及航空安全应用研究综述
单片机·嵌入式硬件·macos·无人机·cocos2d·risc-v
国科安芯4 天前
航空安全关键系统抗辐射 MCU 加固技术、工程实现与典型应用
单片机·嵌入式硬件·无人机·cocos2d·risc-v
Captain_Data4 天前
AI 12小时设计CPU完整解析:从219字到RISC-V内核的技术突破
人工智能·python·ai·大模型·芯片设计·risc-v
圆山猫6 天前
[RISCV] 用 Rust 写一个 RISC-V BootROM:从 QEMU 到真实硬件(2)
rust·risc-v
嵌入式小企鹅6 天前
算力价值重估、AI编程模型齐开源、RISC-V融资15亿
人工智能·学习·ai·程序员·risc-v·前沿科技·太空算力
圆山猫6 天前
[Linux] 用 Buildroot 为 RISC-V QEMU 构建最小根文件系统
linux·运维·risc-v
圆山猫7 天前
[AI] [RISCV] 用 Rust 写一个 RISC-V BootROM:从 QEMU 到真实硬件
开发语言·rust·risc-v