在RISC-V32位ISA中,物理地址空间为34位,虚拟地址空间为32位。当在监控器模式下启用虚拟存储器时,通过访问页面表来翻译32位虚拟地址,从而产生34位物理地址。然而,当虚拟内存被禁用时,32位地址仍然必须转换为34位物理地址。在RISC-V特权ISA规范中,第4.1.12节指出:
当MODE=Bare时,主管虚拟地址等于主管物理地址
所以,我的问题是:这是否意味着只有低4GB (最低的32位)内存才能在监控程序模式下被禁用虚拟内存?如果是这样的话,那么当虚拟内存被禁用时,16 GB (34位)物理内存的其余部分应该如何在监督模式下被访问呢?
发布于 2020-07-18 00:08:24
有人在关于ISA手册中的Github回购的问题中问了一个类似的问题。在使用MODE=Bare与RV32一起运行时,似乎只能访问34位物理地址空间的底部4GiB,而前12 4GiB是不可访问的。32位寄存器值为零,扩展为34位物理地址.
虽然手册中没有明确说明这一点,但在特权的ISA规范中,它确实提到了“当在较窄的地址和更宽的地址之间进行映射时,RISC--通常是零--将较窄的地址扩展到更大的大小。”
https://stackoverflow.com/questions/62917925
复制相似问题