基于x86的操作系统能否在x86-64处理器保护模式下使用PAE?
关于x86-64处理器32位保护模式PAE支持的解答
首先给出核心结论:绝大多数符合x86-64架构规范的处理器都可以在32位保护模式下开启PAE寻址超过4GB内存,但存在两个例外限制场景。
架构层面的基础支持
x86-64(AMD64/Intel 64)的架构规范本身就强制要求处理器实现PAE能力:长模式的页表机制本身就是从PAE的3级页表扩展而来,进入长模式的前置要求之一就是先开启CR4.PAE位。因此只要是支持x86-64的处理器,原生就带有PAE硬件支持,在32位保护模式下开启PAE后,就可以通过3级页表将32位线性地址映射到最大52位的物理地址空间,突破4GB的内存寻址上限。
两种无法使用PAE寻址超过4GB的特殊情况
- 部分低功耗、嵌入式x86-64处理器,厂商在硬件实现时限制了物理地址宽度,最大仅支持32位物理地址,这种情况下哪怕开启PAE,也只能访问最多4GB的物理内存
- 部分设备的BIOS/固件会做配置限制,要么默认关闭4GB以上物理地址的重映射,要么在32位引导环境下主动封锁4GB以上地址空间的访问权限,这种属于固件配置限制,和处理器本身的PAE能力无关
补充说明:32位保护模式下PAE和分段机制可以共存,分段输出的32位线性地址可以通过PAE页表映射到4GB以上的物理地址,这和长模式下几乎废弃分段硬件能力的设计有明显区别。
内容的提问来源于stack exchange,提问作者Guber
相关产品推荐
相关产品推荐

