1

在 RISC-V 32 位 ISA 中,物理地址空间为 34 位,而虚拟地址空间为 32 位。当在超级用户模式下启用虚拟内存时,通过访问页表来转换 32 位虚拟地址,从而产生 34 位物理地址。然而,当虚拟内存被禁用时,32 位地址仍然必须转换为 34 位物理地址。在第 4.1.12 节的 RISC-V 特权 ISA 规范中,它指出:

当MODE=Bare时,supervisor虚拟地址等于supervisor物理地址

所以,我的问题是:这是否意味着只有低 4GB(底部 32 位)内存才能在禁用虚拟内存的主管模式下访问?如果是这样,那么当虚拟内存被禁用时,应该如何在超级用户模式下访问剩余的 16 GB(34 位)物理内存?

SV32 虚拟和物理寻址

4

1 回答 1

1

有人在 ISA 手册的 Github repo 上的一个 issue中提出了类似的问题。似乎是这样的情况,当MODE=Bare与 RV32 一起运行时,您只能访问 34 位物理地址空间的底部 4GiB,而顶部 12GiB 是不可访问的。32 位寄存器值被零扩展为 34 位物理地址。

虽然手册中没有明确说明,但在 Privileged ISA 规范中图 4.17 的标题中确实说:“在更窄和更宽的地址之间进行映射时,RISC-V 通常会将更窄的地址零扩展为更大的大小。 ”</p>

于 2020-07-18T00:08:24.167 回答