基本介紹
- 中文名:PSE36
- 外文名:Page Size Extension
- 產品實為:處理器
概述,實現,PSE-36,討論,
概述
Page Size Extension(PSE)技術的作用是在IA32架構中,實現大於傳統的4KB的頁面。這一技術在最初的Pentium處理器中被引入(註:386、486時代的機器就沒有這項功能了),在這類處理器上,可以通過CPUID指令的返回結果,知道處理器是否支持PSE。
實現
PSE技術允許4MB的頁面於傳統的4KB物理頁面共存。
在傳統的IA32架構中,x86利用兩級頁表對物理記憶體進行管理,並實現線性地址到物理地址的映射。頁目錄中存儲了1024個頁表地址,而每個頁表里又存儲了1024個物理頁面的首地址,CR3中存放了頁目錄的物理地址。而如果使用PSE技術的話(需要設定CR4中的第4位),頁目錄中的表項就擁有了一個新的標識(第7位,又稱為PS位,Page Size),如果它的PS=1的話,這個頁目錄表項就指向了一個4MB的大物理頁面,而不是象原來那樣指向一個頁表。同時,使用PSE技術的頁目錄項實際上只使用了傳統IA32頁目錄結構中20個地址位的高10位(後面的32-10=22位在定址的時候全部填0),所以,它指向的是一個4MB對齊的物理頁面!
注意,要使用4MB的大頁面,這裡的前提是:
1) 需要Pentium以上的CPU;
2) CR4中的PSE位(第4位)為1;
3) 頁目錄項的PS位(第7位)為1。
PSE-36
PSE-36是繼PSE技術後推出的擴展技術,在Pentium III處理器以後進入x86的歷史。跟PSE一樣,為了判斷CPU是否支持PSE-36技術,作業系統也可以使用CPUID指令來進行。
我們知道,PSE技術能夠在IA32的基礎上,讓x86機器管理4MB的物理頁面,而且,就改動的規模來說,PSE技術仍然使用了IA32的頁表到頁目錄的結構,這是因為無論採用PSE與否,機器仍然還是32位的。可是,如果把地址匯流排擴展到36位呢?
我們知道,IA32採用的是固定的頁目錄到頁表的結構,頁目錄和頁表的每個位幾乎都有特定的含義。如果地址匯流排擴展增加了4位(成為36位),為了滿足定址(即使這個時候用戶程式仍然使用32位的邏輯地址)和記憶體管理的需要,最直接的方法是對已有的兩層地址映射結構進行擴展,成為3層結構(這種做法我們將在PAE中講述)。可是,這樣,作業系統必須作出比較大的修改,才能夠對36位地址進行支持。有沒有能夠保留IA32兩層地址映射,同時又能實現到36位物理地址(64GB)映射的方法呢?PSE-36就是為這一特殊需要而制定的。
我們知道,在傳統IA32中,無論是頁目錄項還是頁表項,都是用高20位來存儲它所指向的頁表或物理頁面的物理地址的。而在使用PSE定址4MB大頁面的時候,頁目錄項只使用了其中的高10位來存儲物理頁面的地址,而在PSE-36中,則使用了高14位,這樣,使用PSE-36的頁目錄項的定址達到了14+22=36位,從而能夠管理到64GB的物理地址空間。
傳統IA32、採用PSE以及PSE-36技術的頁目錄項如下表所示:
+ | 31-22 | 21-18 | 17-12 | 11-9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Non-PSE | base | avail | 0 | PS | 0 | A | PCD | PWT | U | W | P | ||
PSE | frame | avail | 0 | PS | D | A | PCD | PWT | U | W | P | ||
PSE-36 | frame | avail | 0 | PS | D | A | PCD | PWT | U | W | P |
我們發現,PSE-36技術的顯著特點,在於雖然該技術能夠使得4KB大小的物理頁面和4MB的物理頁面共存,但是,4KB的物理頁面只能在4GB以下的記憶體中存在,而4GB以上的記憶體只能用4MB的大頁面進行管理。
討論
在Pentium時代,為了在x86中管理更多的記憶體,Intel將傳統的IA32架構進行擴展,推出了PSE以及PSE-36技術,將物理頁擴展到4MB。相比於傳統的4KB的物理頁面,這些技術雖然滿足了套用的大記憶體需求,然而,4KB到4MB的跨度顯得大了一點,頁面大了,就容易導致內部碎片的問題,而導致記憶體的浪費。特別是PSE-36技術的使用,如果所有線性地址都成了36位,則系統內所有的物理頁面都將是4MB,這樣將導致非常大的記憶體浪費。