複製鏈接
請複製以下鏈接發送給好友

物理地址擴展

鎖定
在計算機科學中,物理地址擴展是指x86x86-64處理器的一個特色,即如果操作系統提供適當支持,則可以在32位的系統中使用超過4GiB字節的實體內存。PAE為IntelPentium Pro及以上級別的CPU(包括除了總線頻率為400MHz的這個版本的奔騰M之外的所有新型號奔騰系列處理器)所支持,其他兼容的處理器,如速龍(Athlon)和AMD的較新型號的CPU也支持PAE
中文名
物理地址擴展
外文名
Physical address extension
別    名
實體位置延伸
縮    寫
PAE

物理地址擴展信息簡介

x86的處理器增加了額外的地址線以選擇那些增加了的內存,所以實體內存的大小從32位增加到了36位。最大的實體內存由4GiB增加到了64GiB。
32位的虛擬地址線性地址)則沒有變,所以一般的應用軟件可以繼續使用地址為32位的指令;如果用平面內存模式的話,這些軟件的地址空間也被限制為4GiB。操作系統用頁表將這4GiB的地址空間映射到大小為64GiB的實體內存,而這個映射對各個進程一般是不一樣的。這樣一來,即使不能為單單一個程序所用,那些增加了的物理內存仍然可以發揮作用。
對於需要超過4GiB內存的應用軟件來説,除了一般的PAE支持,還需要操作系統提供另外的特殊的技術。在Windows上,這種技術叫做Address Windowing Extensions(AWE)。而在類Unix的系統上則有多種技術在使用,例如使用mmap()按需要把一部分文件映射到地址空間;但是,這還沒有成為一個標準。 [1] 

物理地址擴展頁表結構

在傳統的32位的保護模式中,x86處理器使用一種兩級的轉換方案。在這種方案中,控制暫存器CR3指向一個長4KiB的頁目錄(page directory);頁目錄又分為1024個每個4KiB的頁表(page table);最後頁表又分為1024個每個長4KiB的頁。
啓用PAE(通過設置控制暫存器CR4的第5位來啓用)會改變上面的方案。默認情況下,每頁的大小是4KiB的。頁表和頁目錄中的表項都從32位擴為64位(8字節)以使用附加的地址位。但是,頁表和頁目錄的總大小不變。所以,頁表和頁目錄都只有512個表項。因為這變成了原來方案的一半,所以另外的一個級加了進來:CR3指向的是頁目錄指針表,即一個包含4個頁目錄指針的表。
頁目錄裏的表項的第7位叫做PS(Page Size)。如果這個位設為1,則頁目錄的表項不再指向頁表,而是指向一個2MiB的頁。頁目錄裏還有另外一個叫NX位元的標誌位。它是第63位,表示No eXecute。因為頁表項中最低的12位,要麼是這種標識位,要麼是和操作系統相關的數據,所以最多可有52位在將來用於在2^52字節,即4pebibyte的物理內存中尋址。
x86架構只使用該52位中的36位。對於在長模式(long mode)中的x86-64處理器,PAE是必須的;其中使用了52位中的40位或48位[1]。
CPU對PAE模式的支持可以通過CPUID標誌PAE來識別。
未啓用PAE, 4 KB的頁 未啓用PAE, 4 KB的頁
啓用PAE,2 MB的頁 啓用PAE,2 MB的頁
啓用PAE,4 KB的頁 啓用PAE,4 KB的頁
未啓用PAE, 4 MB的頁 未啓用PAE, 4 MB的頁

物理地址擴展操作系統支持

FreeBSD
FreeBSD的4.x系列從4.9開始支持PAE,而5.x系列則從5.1開始。6.x及以後的系列都支持PAE。對內核的關於PAE的配置是必須的。如果一個可加載內核模塊是啓用了PAE的,則它只可以被加載到一個啓用了PAE的內核;FreeBSD中二進制版本的模塊沒有啓用PAE,所以它們不能加載到啓用了PAE的內核。並不是所有驅動程序都支持4GiB的物理內存的;這種驅動程序不能在啓用了PAE的內核下正常工作 [2] 
Linux
Linux內核從2.6版本開始全面支持PAE [3]  ,這使得在32位的機器上可以訪問64GB的內存。啓用了PAE的Linux內核還需要同樣支持PAE的CPU。從2008年起,很多一般的發佈的Linux版本都默認使用啓用了PAE的內核。
Mac OS X
運行在Intel CPU上的Mac OS X都支持PAE和NX位;在受蘋果支持的CPU上它也支持該兩種特性。即使Mac OS X 10.5 Leopard內核仍然是32位的,但是Mac ProXserve系統也是支持32GiB的RAM的。 [4] 
Solaris
Solaris從版本7開始支持PAE。但是,版本7的那些沒有專門支持PAE的第三方驅動程序在支持PAE的系統上可能會發生錯誤,甚至完全崩潰。
Windows
PAE受下列版本的32位版的Windows所支持
系統版本
最大物理內存支持
Windows 2000 Advanced Server
8 GiB
Windows 2000 Datacenter Server
32 GiB
4 GiB
Windows Server 2003 Enterprise Edition
32 GiB
Windows Server 2003 SP1+ or R2 Enterprise Edition
64 GiB
Windows Server 2003 Datacenter Edition
64 GiB
Windows Server 2003 Standard Edition
4 GiB
4 GiB
Windows Server 2008 Enterprise or Datacenter Edition
64 GiB
Windows Server 2008 other editions
4 GiB
Windows 7 Starter
2 GiB
Windows 7 other editions
4 GiB
Windows XP SP2和其他新的版本,默認在有no-execute (NX)和execute-disable (XD)特性的處理器上以PAE模式運行以允許NX。NX(或XD)在頁表項的第63位。如果沒有PAE,頁表項只就32位;所以要利用NX這個特性的話,就必須運行在PAE模式下。但是,基於為保證驅動兼容等原因,微軟通過許可證,在內核中把桌面版Windows(包括Windows XP、Windows Vista和Windows 7)和部分低端Windows Server的物理地址空間限制為4GiB。
參考資料