SINVAL.VMA 和 SFENCE.VMA 是什么关系?
SINVAL.VMA 使用与 SFENCE.VMA 相同的 rs1/rs2 范围选择来失效相应地址转换缓存条目,但拆分序列中的排序由 SFENCE.W.INVAL 与 SFENCE.INVAL.IR 提供。
Svinval 地址转换失效指令:按 rs1 的虚拟地址和 rs2 的地址空间选择范围,使对应地址转换缓存条目失效。
SINVAL.VMA 是 Svinval 扩展中的监督者地址转换失效指令。它使与同一 rs1/rs2 操作数的 SFENCE.VMA 会影响的地址转换缓存条目失效;rs1=x0 表示所有虚拟地址,rs2=x0 表示所有地址空间并包含 global mappings。它本身执行失效,不替代普通数据 cache flush;拆分失效序列通常由 SFENCE.W.INVAL 建立前置排序,由一条或多条 SINVAL/HINVAL 执行失效,再由 SFENCE.INVAL.IR 建立后置排序。
展示 SYSTEM 编码、rs1/rs2 选择的 VA/ASID 范围,以及 Svinval 序列中的地址转换失效。
假定 Svinval 可用;HS/VS/VU 分支假定 H。假定 RV32/Sv32 或 RV64/Sv39 且 ASIDLEN=ASIDMAX (9/16),ASID 高位忽略,软件应将其置零。VS-mode 限于当前 hgatp.VMID 的 VS-stage;V=0 使用 S/HS 转换上下文。非 x0 的 rs1 仅选择 leaf PTE;值为零不同于寄存器 x0。有效虚拟地址复选框提供语义前提。实现允许扩大失效范围。
该动画只展示特权架构定义的本 hart 失效/排序关系;不模拟 TLB 结构、cache 刷新、页表遍历耗时、IPI 或 OS shootdown 协议。
SINVAL.VMA 的核心是“选择范围并失效”:rs1 选择虚拟地址范围,rs2 选择地址空间范围;排序边界由配套的 SFENCE.W.INVAL 与 SFENCE.INVAL.IR 表达。
假定 Svinval 可用、S-mode 且 TVM=0;sinval.vma x0,x0 失效当前 hart 全部地址空间的地址转换缓存,包括 global mappings。需要完整拆分序列排序时,前置 SFENCE.W.INVAL、后置 SFENCE.INVAL.IR。
假定 Svinval 可用、S-mode 且 TVM=0;sinval.vma x0,x0 失效当前 hart 全部地址空间的地址转换缓存,包括 global mappings。需要完整拆分序列排序时,前置 SFENCE.W.INVAL、后置 SFENCE.INVAL.IR。
SINVAL.VMA 使用与 SFENCE.VMA 相同的 rs1/rs2 范围选择来失效相应地址转换缓存条目,但拆分序列中的排序由 SFENCE.W.INVAL 与 SFENCE.INVAL.IR 提供。
不是。作为 SINVAL.VMA 的范围选择,rs2=x0 表示所有地址空间,并包含 global mappings。
不能这样理解。官方语义是地址转换缓存失效与相关排序,不是普通数据 cache flush。