首页/指令库/SINVAL-VMA
SINVAL.VMA

RISC-V SINVAL.VMA 指令详解

指令手册R-type

Svinval 选择性地址转换缓存失效:按 rs1(VA) 与 rs2(ASID) 失效;排序由 SFENCE.W.INVAL/SFENCE.INVAL.IR 提供。

指令语法

sinval.vma rs1, rs2
操作数说明
目标寄存器 rd:存放运算结果的通用寄存器。
源寄存器 rs1:第一个操作数寄存器。
源寄存器 rs2:第二个操作数寄存器。
PrivilegedSvinval内存管理

指令行为说明

SINVAL.VMA 使与相同 rs1/rs2 的 SFENCE.VMA 会影响的地址转换缓存条目失效,但它本身只执行失效,排序仅相对于 SFENCE.VMA、SFENCE.W.INVAL 和 SFENCE.INVAL.IR 按规范成立。典型批处理序列为:SFENCE.W.INVAL -> 多条 SINVAL.VMA/HINVAL.* -> SFENCE.INVAL.IR。rs1=x0 表示所有虚拟地址,rs2=x0 表示所有 ASID。

快速理解与检索要点

SINVAL.VMA 是特权架构定义的系统级指令,页面说明只覆盖官方规定的架构语义,不推断平台固件策略。

该指令影响地址转换或失效排序,不是普通数据 cache 刷新指令。
在不支持的特权级或未实现扩展中执行会产生相应异常。

常见使用场景

内存管理

结合 «sinval.vma x0, x0 # invalidate all TLB entries for all ASIDs» 等实际代码理解该场景。

地址与指针

结合 «sinval.vma x0, x0 # invalidate all TLB entries for all ASIDs» 等实际代码理解该场景。

并发与多核

结合 «sinval.vma x0, x0 # invalidate all TLB entries for all ASIDs» 等实际代码理解该场景。

使用前检查清单

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

容易混淆 / 常见误区

U-mode execution always raises illegal-instruction.
S-mode or HS-mode execution with mstatus.TVM=1 raises illegal-instruction.
VU-mode execution raises virtual-instruction; VS-mode execution raises virtual-instruction when hstatus.VTVM=1.
Ordering requires SFENCE.W.INVAL before and SFENCE.INVAL.IR after for the split-fence sequence.

常见问题

它是用户态普通指令吗?

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

它是否替代普通内存 fence?

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