PSE-36

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

電腦領域,PSE-36(英語:36-bit Page Size Extension,即36位元頁面大小擴充[1]是一個x86處理器特性,它可將電腦數據存貯器的定址能力從32位元擴充到36位元,允許定址最多64 GB記憶體。[2]相較於實體位址擴充(PAE)方法,PSE-36是解決4 GB記憶體瓶頸的更簡單方案。它採用頁大小擴充英語Page Size Extension(PSE)模式和一個修改的頁面目錄表來對映4 MB的頁到一個64 GB實體位址空間。PSE-36的缺點是,不同於PAE,它在4 GB以上的區域沒有4 KB的頁面粒度。

PSE-36隨Pentium II Xeon被引入到x86架構,並且最初被公佈為「英特爾擴充伺服器記憶體架構」[3](有時縮寫為ESMA[4])的一部分,這個品牌也包括稍早一點的PAE(並且因此,只支援PAE的Pentium Pro被宣傳為僅具有ESMA的「子集支援」)

PSE-36的鼎盛時期比較短。PSE-36相較PAE的主要優勢是,作業系統的內部組件幾乎不需要重做,因此PSE-36被認為是一個合適的緩解措施 圍繞Windows NT 4.0企業版時間表的。更新的微軟作業系統(包括Windows 2000)只支援PAE。例如Linux等部分作業系統完全跳過了PSE-36。[5]儘管如此,AMD和之後的英特爾選擇在其64位元處理器中提供最多40位的PSE支援(在傳統模式英語legacy mode下執行時)。

執行[編輯]

檢測[編輯]

PSE-36的支援在CPUID結果之特性位元中的EDX第17位元(從0開始計數)表示。與純PSE支援不同,它是由同一暫存器中的位元3指示。[6][7]

啟用和使用[編輯]

就啟用PSE-36而言,它沒有一個單獨的位元來開關PSE。至少處理器(根據CPUID標識)和晶片組支援PSE-36,直接啟用PSE(通過設置位元4,即PSE, 系統暫存器CR4英語Control register#CR4的)就能允許大型的4 MB頁(在64 GB範圍內)以及普通的4 KB頁(只能在常規的4 GB範圍內)。

如果CPU支援較新的PSE-36,使用CPUID指令檢查判定,那麼除了在PSE中使用的10位,還有4個位元用於指向大頁面的頁面目錄項。這將允許大頁面位於36位元地址空間中。

頁面目錄項(PDE)中的PS位元(位元7)標示此項是一個頁表(描述1024個4 KiB頁面)還是一個4 MB頁面。正常模式與PSE-36模式下的PDE結構如下:

32位元定址的頁面目錄項
31–22 21–17 16–13 12 11–9 8 7 6 5 4 3 2 1 0
非PSE 頁表的基地址 avail 0 PS=0 ign A PCD PWT U W P
PSE 頁面幀地址的31..22位元 保留(必須為零) PAT[a] avail 0 PS=1 D[b] A PCD PWT U W P
PSE-36 頁面幀地址的31..22位元 保留(必須為零) 頁面幀地址的35..32位元 PAT avail 0 PS=1 D A PCD PWT U W P
  1. 頁面屬性表英語Page attribute table;自Pentium III起出現。對更早CPU必須為零。
  2. "「髒」位:如果存在對該頁的寫訪問,CPU將其設為1。對於4 KiB頁面,該標誌存在於相應的頁表項(PTE)中。

擴充到40位元[編輯]

憑藉在傳統模式英語Legacy mode下執行時翻譯PDE的位元20..13為頁面基地址的位元39..32,AMD在其AMD64處理器中將此方案擴充為40位元定址。因此它只保留了位元21(必須為零)。但請注意,在長模式下CR4.PSE被忽略,並且該模式下PSE式4 MB頁面不可用。[8]在AMD64傳統模式下使用PSE 4 MB頁面可定址的實體記憶體總量因此是1024 GB。[9]湯姆·謝利(Tom Shanley)稱此擴充為PSE-40,儘管該名稱沒有出現在AMD官方文件中。

最新的英特爾手冊(2014年2月)也表明在PSE中最多支援40位。英特爾CPU支援的PSE位的確切數目可能較少,並且必須通過CPUID確定處理器支援的最大實體位址寬度,方法是使用function 80000008H呼叫CPUID,並檢查EAX[7:0]中的結果。[10]

使用[編輯]

PSE-36特性的實用性取決於晶片組對超過4 GB記憶體的支援。奔騰II時代的大多數晶片組並不支援這麼多記憶體,英特爾440BX典型桌上電腦晶片組的最大容量為1 GB,440GX工作站晶片組則為2 GB。只有高端伺服器主機板Intel 450NX晶片組支援8 GB。[11]對PSE-36(ESMA)的支援通常面向伺服器宣傳。

作為適配支援PSE-36的作業系統,1998年英特爾宣佈了Microsoft Windows NT Server、Enterprise Edition 4.0和據稱即將到來的NT 5.0,它們都可以通過一個PSE36device driver來支援,這使得作業系統的大部分組件不能感知PSE-36(只有PSE36驅動程式啟用時能暫時感知),並且想要訪問超過4 GB記憶體的應用程式必須呼叫驅動程式。因此Windows NT 4.0企業版基本將PSE-36特性作為一個記憶體盤Windows NT 4.0 Enterprise Edition伺服器上的部分應用程式使用PSE36驅動程式,這包括:SAP英語SAP ERP liveCache[12]Microsoft SQL Server 7.0、Oracle 8.1.5[13]IBM DB2。後者的調優文件指出,「遺憾的是,在大多數情況下,使用PSE-36驅動程式獲得的效能增益並不是很好。在許多情況下,使用PSE-36驅動程式、具有8 GB記憶體的伺服器,執行速度要比使用不使用該驅動程式、具有4 GB記憶體的伺服器更慢。 [...]經過一年多的實驗和調整,微軟和IBM由於效能不佳而放棄了PSE-36的支援。該驅動程式對英特爾的供應商仍然可用,但對於最終客戶使用而言並無價值。」[14]

由於與另一方案PAE相比效能低下,Windows 2000(NT 5.0)最終不支援PSE-36[15][16]Windows 2000也用新的地址窗口擴充(AWE)替換了PSE36驅動程式的API,其中採用PAE。[15][13](AWE僅適用於Windows 2000的數據中心伺服器和進階伺服器版本)。Windows應用程式因而遷移到這個新API,例如Oracle 8.1.6[13]和MS SQL Server 2000。[15]

PSE-36從未被Linux支援。

相較於PAE[編輯]

實體位址擴充(PAE)是另一個允許36位元定址的方案。PSE-36具有不改變頁面表階層的優點,並且頁面條目保持其舊的32位元格式而不擴充到64位元。PSE-36的顯着缺點是只有大頁面可以處在64 GB的實體記憶體中,而小頁面仍然只能位於前4 GB的實體記憶體。

英特爾擴充伺服器記憶體架構[編輯]

英特爾擴充伺服器記憶體架構被定義為在核心處理器中包括兩個36位元定址模式:PAE-36和PSE-36。[來源請求]

參見[編輯]

參考資料[編輯]

  1. ^ The Intel Extended Server Memory Architecture (PDF). Intel Order Number: 243846-001. 1998 [2014-03-01]. (原始內容存檔 (PDF)於2012-07-03). 
  2. ^ Netinfinity Performance Tuning with Windows NT 4.0 (PDF). Redbooks.ibm.com: 51–52. [2014-03-01]. 
  3. ^ Deni Connor. Here come the eight-way Xeon servers. Network World. 7 December 1998: 19 [2017-04-10]. ISSN 0887-7661. (原始內容存檔於2017-04-11). 
  4. ^ Michael Missbach; Uwe M. Hoffmann. SAP Hardware Solutions. Prentice Hall Professional. 2000: 62 [2017-04-10]. ISBN 978-0-13-028084-8. (原始內容存檔於2017-04-11). 
  5. ^ Daniel P. Bovet; Marco Cesati. Understanding the Linux Kernel. "O'Reilly Media, Inc.". 17 November 2005: 52 [2017-04-10]. ISBN 978-0-596-55491-0. (原始內容存檔於2017-04-11). 
  6. ^ Intel Processor Identification and the CPUID Instruction Wikiwix的存檔,存檔日期2013-07-24, Intel application note AP-485
  7. ^ Tom Shanley. The Unabridged Pentium 4: IA32 Processor Genealogy. Addison Wesley Professional. 2005: 732–736. ISBN 978-0-321-24656-1. 
  8. ^ AMD Corporation. Volume 2: System Programming (PDF). AMD64 Architecture Programmer's Manual 3.22. AMD Corporation: 25–26 and 125–126. September 2012 [2014-02-17]. (原始內容存檔 (PDF)於2014-02-22). 
  9. ^ Tom Shanley. x86 Instruction Set Architecture. MindShare Press. 2009: 578–579. ISBN 9780977087853. 
  10. ^ Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 3A: System Programming Guide, Part 1 (PDF). Intel. [2017-04-10]. (原始內容存檔 (PDF)於2011-05-16). If the PSE-36 mechanism is not supported, M is 32, and this row does not apply. If the PSE-36 mechanism is supported, M is the minimum of 40 and MAXPHYADDR (this row does not apply if MAXPHYADDR = 32). See Section 4.1.4 for how to determine MAXPHYADDR and whether the PSE-36 mechanism is supported. [...] CPUID.80000008H:EAX[7:0] reports the physical-address width supported by the processor. (For processors that do not support CPUID function 80000008H, the width is generally 36 if CPUID.01H:EDX.PAE [bit 6] = 1 and 32 otherwise.) This width is referred to as MAXPHYADDR. MAXPHYADDR is at most 52. 
  11. ^ Intel's Pentium II Xeon Processor.
  12. ^ How does the liveCache < 7.4 use PSE36/AWE. Stechno.net. 2003-04-04 [2014-03-01]. (原始內容存檔於2014-03-02). 
  13. ^ 13.0 13.1 13.2 Michael R. Ault. Increasing Available Memory in Linux and Windows (PDF). ROBO Books White Paper: 10–12. 2003-02-17 [2014-03-01]. (原始內容 (PDF)存檔於2022-01-19). 
  14. ^ Tuning IBM xSeries Servers for Performance (PDF) 3rd. IBM SG24-5287-02. June 2002: 97 [2017-04-10]. (原始內容 (PDF)存檔於2014-03-03). 
  15. ^ 15.0 15.1 15.2 Sajal Dam. SQL Server Query Performance Tuning Distilled. Apress. 2004: 28 [2017-04-10]. ISBN 978-1-4302-0407-7. (原始內容存檔於2017-03-15). 
  16. ^ Operating Systems and PAE Support. Msdn.microsoft.com. 2006-07-14 [2014-03-01]. (原始內容存檔於2014-03-20).