我注意到CR4寄存器中的PAE位在我的Linux(3.19)x86-64机器上打开了.PAE功能允许访问高达64gb的物理地址,但我不明白为什么在启用长模式时需要它.我已经查了一会儿,但没有找到任何令人满意的答案.
有什么建议?
它使用IA-32e分页.
逻辑处理器使用IA-32E寻呼如果CR0.PG = 1,CR4.PAE = 1,和IA32_EFER.LME = 1
随着IA-32e的寻呼,线性地址使用使用位于存储器分页结构的层次结构被翻译的CR3的内容.
IA-32e分页将48位线性地址转换为52位物理地址.
虽然52位对应4个PBytes,但线性地址限制为48位; 在任何给定时间都可以访问最多256 TB的线性地址空间.
x86处理器支持三种分页模式:
32位分页(CR0.PG = 1且CR4.PAE = 0)
PAE分页(CR0.PG = 1,CR4.PAE = 1,IA32_EFER.LME = 0)
IA-32e寻呼(CR0.PG = 1,CR4.PAE = 1,IA32_EFER.LME = 1)
这里报告了一个总结差异的表格(不幸的是,图像)