物理地址扩展(PAE)

介绍

随着内存价格的下降,基于英特尔的 PC 能够以更低的成本获得更多内存,从而减轻了许多用户运行许多同时生成的大型应用程序的问题。虚拟内存允许内存虚拟创建 - 将现有的页面内容交换到硬盘以允许存储数据 - 这会减慢程序的运行,因为页面颠簸会不断交换数据打开和关闭硬盘。

更多内存

所需要的是能够访问更多物理 RAM - 但它已经是 32 位地址总线,因此任何增加都需要更大的地址寄存器。或者是吗?在开发 Pentium Pro(甚至 Pentium M)时,作为可以产生 64 位处理器的间隙,在改变寄存器位数的情况下添加更多物理地址位(允许更多物理存储器)。这可以实现,因为虚拟地址无论如何都被映射到物理地址 - 所有需要改变的都是映射系统。

设计

现有系统最多可以访问 32 位物理地址。增加这一点需要完全更改页面输入结构,从 32 位到 64 位。决定将最小粒度保持在 4K 页面,因此 64 位条目将具有 52 位地址和 12 位控制(如前一个条目具有 20 位地址和 12 位控制)。

具有 64 位条目,但页面大小为(仍然)4K,意味着每页表或目录只有 512 个条目,而不是之前的 1,024 条。这意味着 32 位虚拟地址的划分方式与以前不同:

+-----+-----------+------------+------------+
| `DPI` | Dir Index | Page Index | Byte Index |
+-----+-----------+------------+------------+
 3   3 2         2 2          1 1          0   Bit
 1   0 9         1 0          2 1          0   number

 DPI        = 2-bit index into Directory Pointer Table
 Dir Index  = 9-bit index into Directory
 Page Index = 9-bit index into Page Table
 Byte Index = 12-bit index into Page (as before)

从目录索引和页面索引中删除一位,为第三层映射提供了两个位:他们将其称为页面目录指针表(PDPT),这是一个四个 64 位条目的表,它们对四个目录而不是之前的目录进行了处理一。PDBR(CR3)现在指向 PDPT - 由于 CR3 只有 32 位,因此需要存储在前 4 GB RAM 中以便访问。请注意,由于 CR3 的低位用于控制,因此 PDPT 必须从 32 字节边界开始。

页面大小扩展(PSE)

而且,由于之前的 4MB 页面是个好主意,他们希望能够再次支持大页面。这一次,删除层系统的最后一层不会产生 10 + 12 位 4MB 页面,而是 9 + 12 位 2MB 页面。