【发布时间】:2013-04-28 09:51:54
【问题描述】:
32 位处理器上的物理地址扩展是否需要 36 位地址总线? 如果我使用位于具有 36 位地址的页面中的 32 位地址会发生什么?
【问题讨论】:
标签: memory-management assembly x86 bus
32 位处理器上的物理地址扩展是否需要 36 位地址总线? 如果我使用位于具有 36 位地址的页面中的 32 位地址会发生什么?
【问题讨论】:
标签: memory-management assembly x86 bus
32 位处理器上的物理地址扩展是否需要 36 位地址总线?
显然,在具有 32 位地址总线的 CPU 上启用或支持 PAE 实际上没有任何好处,因为您将无法访问 232 及以上物理地址的任何内容。
如果我使用位于具有 36 位地址的页面中的 32 位地址会发生什么?
这个问题不太清楚。
启用 PAE 后,虚拟地址保持 32 位。页表中的物理地址扩展到 36 位(通常,最低 12 位不存储在 PDE 和 PTE 中,它们被视为 0,因为 4KB 页面自然对齐在 4KB 地址边界上)。
如果您谈论的是 PDE 和 PTE 中的物理地址,没有人会阻止您在其中使用小于 232 的物理地址。
【讨论】:
PAE 不需要 36 位(或更大)的物理地址。这允许软件在不关心物理地址大小的情况下使用 PAE(并且无需为某些 CPU 编写完全不同的分页代码 - 例如 Intel Atom)。这也意味着只有 PAE(和长模式)支持的某些功能可以在没有 36 位(或更大)物理地址总线的 CPU 上使用(特别是“不执行”或“执行禁用”) " 特征)。
重要的是不要混淆虚拟地址(软件使用的地址)和物理地址(CPU、硬件等使用的地址)。 PAE 对虚拟地址没有影响,所有虚拟地址仍然只有 32 位。如果你访问一个 32 位(虚拟)地址的东西,CPU 会使用查找表(页表、页目录和页目录指针表)将 32 位虚拟地址转换为 36 位物理地址。
【讨论】: