實體地址擴充套件(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 頁面。