当禁用虚拟内存时,如何在 RISC-V 32 位系统中访问 34 位物理地址 space?

How is the 34 bit physical address space accessed in a RISC-V 32 bit system when virtual memory is disabled?

在RISC-V 32位ISA中,物理地址space为34位,虚拟地址为32位space。当在管理员模式下启用虚拟内存时,通过访问页面 table 来转换 32 位虚拟地址,产生 34 位物理地址。但是,当禁用虚拟内存时,32 位地址仍必须转换为 34 位物理地址。在第 4.1.12 节的 RISC-V 特权 ISA 规范中,它指出:

When MODE=Bare,supervisor virtual addresses are equal to supervisor physical addresses

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

SV32 Virtual and Physical Addressing

有人在 an issue on the Github repo for the ISA manual 中问过类似的问题。看起来是这样的,当运行 MODE=Bare 与RV32 时,您只能访问34 位物理地址的底部4GiB space,而顶部12GiB 是无法访问的。 32 位寄存器值被零扩展为 34 位物理地址。

虽然这在手册中没有明确说明,但它确实在特权 ISA 规范中说 in the caption for Figure 4.17“当在更窄和更宽的地址之间进行映射时,RISC-V 通常将更窄的地址零扩展到更大的尺寸。”