RISC-V 速查工具箱

虚拟地址拆解

Sv32 / Sv39 / Sv48 / Sv57

拆出各级 VPN 索引与 12 位页内偏移;可选输入根页表 PPN,计算首次访问的 PTE 物理地址。仅凭 VA 无法确定最终物理地址,本页不会模拟或伪造页表遍历。

输入自动识别:0x 十六进制、0b 二进制、无前缀十进制(例如 4096)。只接受完整非负整数,允许首尾空白;支持数字间单个下划线分组(如 0x0000_0001_0000_0000);不接受正负号、小数、指数、其他分隔符或裸十六进制。所有地址运算使用 BigInt,不截断溢出值。

示例:

根页表:首次 PTE 地址

可选计算

输入 satp.PPN 字段值,不是完整 satp,也不是页表基址。基址 = PPN << 12;输入格式与 VA 相同。留空则只拆解 VA。

页表遍历

从根页表开始,用最高级 VPN 索引 PTE。读到 PTE 后看 V 与 R/W/X:任一非 0 即为叶子,遍历结束;全 0 则为非叶子,用其 PPN 作为下一级页表基址,层级减 1 继续。

大页(超级页)对照

叶子项出现在第 i 级即为大页,不需要额外标志位;页大小随层级指数增长,要求 PTE.PPN 的低位为 0,VA 中较低级的 VPN 变为页内偏移。

按当前分页模式生成;Sv32 为 10 位 VPN、4 字节 PTE,其余为 9 位 VPN、8 字节 PTE。
叶子层级页大小对齐要求(PTE 侧)页内偏移(VA 侧)

PTE 地址 = 页表基址 + VPN[i] × PTE 字节数。它指向页表项本身,不是 VA 对应的数据地址。

V = 0、保留位置位、权限非法、A/D 位不满足,或已到末级仍需下探时,产生对应的页错误,而不是继续遍历。

图中的 offset 始终是 VA[11:0];大页的低位偏移则包含较低级 VPN。本页只做地址拆解与首个 PTE 地址算术,不读内存、不解码 PTE、不模拟完整遍历。