首页/指令库/SFENCE-INVAL-IR
SFENCE.INVAL.IR

RISC-V SFENCE.INVAL.IR 指令详解

指令手册R-type

Svinval 排序指令:保证之前的 SINVAL/HINVAL 失效先于后续隐式页表引用。

指令语法

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

指令行为说明

SFENCE.INVAL.IR 是 Svinval 的无操作数字段排序指令。它保证当前 hart 之前执行的 SINVAL.VMA、HINVAL.VVMA 或 HINVAL.GVMA 失效操作,先于该 hart 后续对内存管理数据结构的隐式引用。典型序列是 SFENCE.W.INVAL -> 一串 SINVAL/HINVAL -> SFENCE.INVAL.IR。

快速理解与检索要点

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

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

常见使用场景

内存管理

结合 «sfence.inval.ir» 等实际代码理解该场景。

地址转换失效

结合 «sfence.inval.ir» 等实际代码理解该场景。

TLB shootdown

结合 «sfence.inval.ir» 等实际代码理解该场景。

使用前检查清单

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

容易混淆 / 常见误区

U-mode execution raises illegal-instruction; VU-mode execution raises virtual-instruction.
Unaffected by mstatus.TVM and hstatus.VTVM; permitted in S-mode and VS-mode.
Orders prior SINVAL/HINVAL invalidations before subsequent implicit page-table references.

常见问题

它是用户态普通指令吗?

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

它是否替代普通内存 fence?

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