IA-32架构实现PAE以将其地址空间从32位增加到36位,这是通过将页表划分为三级方案来完成的。
网页目录表 - >页面目录 - >页表 - > 4-kb页面
如何从32位增加到36位地址空间,4个额外位来自何处?
答案 0 :(得分:3)
物理地址空间可以是36位。 IA-32中的线性地址空间始终为32位。
通过增加页面目录指针表条目,页面目录条目和页表条目的大小来实现。它们都是64位,启用了PAE分页。实际上PAE可以解决最多52位的物理地址空间。
要存储4KB页面的36位物理地址,实际上需要少于36位,因为您知道地址最终会有12个零(2 ^ 12B = 4KB),因为地址是页面对齐的。所以你实际上需要24位来存储它。
在32位模式下存储它以进行分页的问题是表条目只有32位,它们的12位被保留用于标志和内部CPU使用。所以你只剩下20位,这对于目的。你只能使用这20位来存储页面的32位物理地址。
但有些CPU支持名为PSE-36的扩展,它允许在32位分页模式下使用4M页面寻址高达40位的物理地址空间。寻呼结构是相同的(32位条目),但条目中的一些未使用的位用于存储物理地址的其余部分。 (注意,对于4MB页面,地址的最后22位最终为0,因为2 ^ 22 = 4MB所以你需要比实际物理地址少22位来存储它。)
编辑:这是来自IA-32,Intel64 Software developer manual的图片。 这是页面结构条目在32位分页模式下的外观
以下是他们在PAE模式下的表现: