HSV.B

RISC-V HSV.B 指令详解

指令手册I-type

Hypervisor 虚拟机存储:按 VS/VU 有效特权和两阶段转换存储字节。

指令语法

hsv.b rs2, (rs1)
操作数说明
目标寄存器 rd:存放运算结果的通用寄存器。
源寄存器 rs1:第一个操作数所在的寄存器。
立即数 imm:12 位有符号立即数,符号扩展后与 rs1 进行运算。
H系统与特权

指令行为说明

HSV.B 是 H 扩展虚拟机存储指令。它可在 M-mode 或 HS-mode 执行,也可在 hstatus.HU=1 时从 U-mode 执行。显式内存访问在 hstatus.SPVP=0 时按 VU 有效特权、在 hstatus.SPVP=1 时按 VS 有效特权执行,并经过 VS-stage 与 G-stage 两阶段地址转换。

快速理解与检索要点

HSV.B 是 H 扩展的 虚拟机字节存储,以内存访问的 VS/VU 有效特权经过 VS-stage 与 G-stage 两阶段转换存储数据。

执行权限、trap 类型和状态恢复由特权级、相关 CSR 位和扩展存在性决定。
H 扩展访存/栅栏指令涉及 VS-stage 与 G-stage 两阶段地址转换。

常见使用场景

Hypervisor设备仿真

结合 «hsv.b a1, (a0)» 等实际代码理解该场景。

Guest内存访问

结合 «hsv.b a1, (a0)» 等实际代码理解该场景。

虚拟化指令模拟

结合 «hsv.b a1, (a0)» 等实际代码理解该场景。

使用前检查清单

语法检查
  • 确认当前指令格式为 I-type。
  • 确认操作数排列顺序与示例一致。
语义检查
  • 确认目标寄存器用途和调用约定兼容。
  • 确认该指令不是伪指令展开后的底层形式。

容易混淆 / 常见误区

当虚拟化模式 V=1 时执行 HLV/HLVX/HSV 会触发 virtual-instruction 异常。
U-mode 只有在 hstatus.HU=1 时可执行,否则触发 illegal-instruction 异常。
仍可能因 VS-stage/G-stage 转换产生访问错误、页错误或 guest-page fault。

常见问题

它是用户态普通指令吗?

不是。该类指令受特权级和扩展支持约束,用户态是否可执行必须看官方特权规则。

它是否替代普通内存 fence?

不能简单替代。地址转换、指令获取和数据内存排序分别有不同的 fence/失效指令。