SFENCE.VMA 会刷新所有 hart 的 TLB 吗?
不会。官方语义作用于当前 hart;多 hart 系统必须让其它 hart 执行相应地址转换同步序列。
Supervisor 地址转换栅栏:按 rs1 选择虚拟地址范围、按 rs2 选择 ASID 范围,同步本 hart 页表更新与后续隐式地址转换。
扩展条件:S-mode 内存管理指令;以下基本权限说明按 V=0,H 下 VS/VU 与 VTVM 另有规则。
SFENCE.VMA 将已对当前 hart 可见的先前存储,排序在本 hart 后续指令对内存管理数据结构的特定隐式引用之前,并使所选地址转换缓存条目失效。rs1=x0 覆盖任意级页表项;非 x0 则仅覆盖其虚拟地址所属映射的叶 PTE。rs2=x0 覆盖所有 ASID,包含全局映射;非 x0 则选择 ASID,排除全局映射。寄存器编号为 x0 才是全范围特例,普通寄存器中值为零不是。rs1 非 x0 且 VA 无效时无效果、无异常。实现可 over-fence;效果仅限本 hart,其他 hart 必须另行同步。它不替代数据内存 FENCE 或指令取指同步。
展示 R-type SYSTEM 编码、rs1/rs2 选择的 VA/ASID 范围,以及本 hart 地址转换相关的排序效果。
本 V=0 模型假定 RV32/Sv32 或 RV64/Sv39,ASIDLEN=ASIDMAX(9/16);高 ASID 位忽略。非 x0 的 rs1 仅选叶 PTE,值为零也不等于 x0;相同非零源寄存器必须给同一初值。VA 有效复选框给出语义前提,不由输入数值推断。结果栏是条件预览,完成步骤才提交。该动画覆盖 U-mode 非法、S-mode 且 TVM=1 的非法,以及 rs1 非 x0 但 VA 无效时无异常且无效果的分支;它只展示本 hart 语义,不模拟 H/VTVM、TLB 结构、cache、页表遍历耗时或多 hart shootdown 协议。
SFENCE.VMA 不是普通内存 fence,也不是可移植的 TLB 结构模拟。它让本 hart 后续隐式地址转换按所选 VA/ASID 范围观察到此前页表等内存管理数据结构更新;rs2=x0 包含 global mappings,非 x0 ASID 范围不要求包含 global mappings。
V=0、S-mode、TVM=0:sfence.vma x0, x0 覆盖本 hart 任意级页表项、所有 ASID 与全局映射;先前页表存储须已对本 hart 可见,其他 hart 需另行同步。
V=0、S-mode、TVM=0:sfence.vma x0, x0 覆盖本 hart 任意级页表项、所有 ASID 与全局映射;先前页表存储须已对本 hart 可见,其他 hart 需另行同步。
V=0、S-mode、TVM=0:sfence.vma x0, x0 覆盖本 hart 任意级页表项、所有 ASID 与全局映射;先前页表存储须已对本 hart 可见,其他 hart 需另行同步。
不会。官方语义作用于当前 hart;多 hart 系统必须让其它 hart 执行相应地址转换同步序列。
rs1 选择虚拟地址范围,x0 表示所有虚拟地址;rs2 选择 ASID 范围,x0 表示所有 ASID 并包含 global mappings,非 x0 时不要求排序 global mappings。