为什么使用 PAE 地址空间从 32 位增加到 36 位

Why is the adressspace increased from 32 to 36 bits with PAE

IA-32 架构实现 PAE 以将其地址 space 从 32 位增加到 36 位,这是通过将页面 table 分成三级方案来实现的。

页目录 table -> 页目录 -> 页 table -> 4-kb 页

地址从 32 位增加到 36 位是如何实现的 space 额外的 4 位从何而来?

物理地址space可以是36位。线性地址 space 在 IA-32 中总是 32 位。

它是通过增加页目录指针table条目、页目录条目和页table条目的大小来实现的。它们都是 64 位的 PAE 分页 enabled.And 实际上,使用 PAE 你最多可以寻址 52 位物理地址 space.

要存储 4KB 页面的 36 位物理地址,您实际上需要少于 36 位,因为您知道地址将以 12 个零 (2^12B=4KB) 结尾,因为地址是页面对齐的。所以你实际上需要24位来存储它。

在 32 位模式下存储它用于分页的问题是 table 条目只有 32 位,其中 12 位保留用于标志和内部 CPU usage.So 你只剩下 20 位,这对于 purpose.You 来说是不够的,只能使用这 20 位来存储页面的 32 位物理地址。

但是一些 CPUs 支持称为 PSE-36 的扩展,它允许在启用 4M 页面的 32 位分页模式下寻址物理地址 space 最多 40 位。分页结构是相同的(32 位条目),但条目中一些未使用的位用于存储物理地址的其余部分。 (请注意,对于 4MB 页面,地址的最后 22 位以 0 结尾,因为 2^22=4MB,因此您需要比实际物理地址少 22 位来存储它)。

编辑:这是来自 IA-32,Intel64 Software developer manual 的图片。 这是页面结构条目在 32 位分页模式下的样子

这是它们在 PAE 模式下的样子: