Physical Address Extension

Z Wikipedie, otevřené encyklopedie

Physical Address Extension (PAE) je v informačních technologiích metoda rozšíření adresního prostoru 32bitového režimu procesorů Pentium Pro a kompatibilních (včetně novějších, tj. procesory i686 od roku 1995) tak, aby bylo možné využít v počítači až 64 GiB RAM. Kvůli zpětné kompatibilitě je však v rámci jedné strojové instrukce stále možné adresovat pouze 4 GiB RAM (tj. stejné omezení, jako mají procesory od verze i386). Kvůli návrhu jader operačních systémů pak ve skutečnosti typicky ještě méně (2 nebo 3 GiB).

Rozšíření PAE ztrácí význam u 64bitových procesorů nástupnické architektury x86-64 uvedených na trh v roce 2003, kde je možné díky návrhu přímo adresovat až 16 EiB (264) operační paměti (aktuálně však méně).

Technické řešení[editovat | editovat zdroj]

Procesor Intel 80386 v roce 1986 přinesl 32bitový chráněný režim, ve kterém je pro adresaci paměti použita 32bitová sběrnice, takže lze adresovat 232 bajtů operační paměti (4 GiB RAM). Proto strojové instrukce obsahují 32bitové adresy, které popisují umístění dat v RAM. Na počátku 90. let však začalo toto omezení způsobovat při práci s většími objemy dat potíže (pracovní stanice, servery), a proto přinesl Intel v roce 1995 rozšíření PAE, které umožňuje využít až 64 GiB RAM. PAE je přítomno ve všech následujících procesorech (kromě několika výjimek u Pentium M)[1] a řeší problém tak, aby byla zachována 100 % zpětná kompatibilita pro aplikační software, což však přineslo jen částečné řešení problému a k tomu další komplikace (které je však možné řešit na úrovni operačního systému). Ne vždy je však možné využít plných 64 GiB, protože maximální množství osazené paměti je závislé na konstrukci základní desky.

Zapnutím PAE se rozšíří počet linek adresy v paměti RAM z 32 bitů (max. 4 GiB) na 36 bitů (max. 64 GiB RAM). Pozice v tabulce stránek (viz stránkování paměti) se po zapnutí PAE zvětšuje z 32 bitů (20 bitů na číslo stránky, zbytek pro příznaky) na 64 bitů (24 bitů pro číslo stránky, zbytek pro příznaky). Kromě rozšíření počtu příznaků, čehož využívá například NX bit, vede zdvojnásobení délky položky k dramatickému nárůstu nároků pro ukládání tabulek stránek. Proto se při zapnutí PAE rozšiřuje počet úrovní tabulek stránek, které se používají (v Microsoft Windows ze 2 na 3).[2] PAE používá buď standardní 4 kiB stránky nebo 2 MiB stránky, které jsou pak ve fyzické paměti odkazovány přímo.

Adresy míst v paměti i registry procesoru zůstávají stejné, což umožňuje běh programů bez jejich změny (100 % zpětná kompatibilita na aplikační úrovni), avšak zachovává omezení maximální velikosti lineárního adresního prostoru jednoho procesu na 4 GiB. Protože každý proces může alokovat jinou část paměti, je využití větší paměti závislé na konkrétních podmínkách: více současně spuštěných procesů, snížení potřeby odkládání stránek na disk (viz virtuální paměť), zvětšení cache pro pevný disk a podobně.

Nevýhody[editovat | editovat zdroj]

Obsluha PAE zvyšuje režii operačního systému jak při změně kontextu (přepínání úloh při využití multitaskingu), tak při systémovém volání (v závislosti na aktuálním modelu rozvržení paměti).[3] I přes jistou režii poskytuje PAE podporu NX bitu pro 32bitový režim, a proto je v současných systémech obvykle zapnut, i když pak není využit pro zpřístupnění větší paměti (od Windows XP SP2).[4] Použití PAE s pamětí nad 4 GiB komplikuje funkci ovladačů, protože při použití adres nad hranicí 4 GiB je nutné po 32bitové PCI sběrnici přenášet adresu ve dvou cyklech, což musí podporovat ovladače i připojená vstupně-výstupní zařízení.[5][6]

Při použití 64bitových procesorů a 64bitových operačních systémů nemá PAE význam a není ani podporováno. PAE je však dostupné v 32bitovém režimu 64bitových procesorů.

Využití PAE[editovat | editovat zdroj]

Po spuštění počítače (IBM PC kompatibilní) je veškerá dostupná paměť RAM ve spolupráci BIOSučipsetu namapována do adresního prostoru procesoru. Tyto informace jsou uloženy a dále využity při zavedení jádra operačního systému, které tak získá přehled o dostupné paměti RAM. Podporuje-li procesor rozšíření PAE, je při použití 32bitového jádra operačního systému nutné rozhodnout, jestli bude režim PAE použit. Rozhodnutí je závislé na velikosti používané operační paměti RAM a požadovaných provozních vlastnostech systému.

Rezervovaný prostor pro PCI zařízení[editovat | editovat zdroj]

Do celkové dostupné paměti se započítává nejen paměť RAM (v současné době typicky v podobě DDR2 modulů), ale i paměť osazená na doplňujících kartách (typicky grafická karta),[7]) která je obvykle systému přímo zpřístupněna (ale nemusí být zpřístupněna celá). Z tohoto důvodu je při úvodní inicializaci v prvních 4 GiB rezervována oblast velká 0,5 až 1 GiB pro zařízení připojené přes PCI sběrnici.[8] Proto může být přímo dostupný 4 GiB adresní prostor zaplněn již při osazení 3 GiB paměti v paměťových RAM modulech. Zároveň nemůže být paměť grafické karty, která přesahuje rezervovanou hodnotu pro PCI sběrnici, přístupná přímo. Paměť grafické karty, která nemůže být namapována do rezervovaného prostoru nebo paměť RAM, která do tohoto prostoru zasahuje, může být namapována nad hranici 4 GiB, avšak přemapování paměti je nutné ručně zapnout v nastavení BIOSu aktivací volby Mapování paměti nad 3 GiB (na základních deskách Asus se tato funkce nazývá „Memory Remap“).

NX bit[editovat | editovat zdroj]

Rozšíření PAE poskytuje zvětšením položky v tabulce stránek podporu pro NX bit, avšak ne všechny procesory s podporou PAE obsahují také podporu NX bitu (například AMD Duron). Seznam procesorem podporovaných rozšíření je možné zjistit pomocí instrukce CPUID (ve Windows nějakým diagnostickým programem, v Linuxu jednoduše výpisem souboru /proc/cpuinfo). NX bit umožňuje znemožnit některé útoky na chybně naprogramované aplikace.[9] Úseky paměti lze chránit též pomocí limitů segmentů,[10] což je však pomalejší a komplikovanější, než hardwarově řešený NX bit. Ve většině systémů je proto PAE pro svůj přínos k bezpečnosti systému použit i přes jisté snížení výkonu počítače,[3] pokud procesor NX bit podporuje (v Microsoft Windows XP od SP 2).[4]

Aplikační rozhraní[editovat | editovat zdroj]

Pro aplikace je standardně paměť mimo hranice 4 GiB přímo nedostupná, avšak existují metody, jak ji využít nepřímo. V systémech Microsoft Windows je k dispozici rozhraní AWE.[2]unixových systémech jsou k dispozici různé techniky, jako například mmap pro mapování souborů do paměti do adresního prostoru a mimo něj podle potřeby.

Podpora PAE v operačních systémech[editovat | editovat zdroj]

V běžném 32bitovém systému může jeden proces využívat méně než 4 GiB paměti, protože do stejného adresního prostoru je mapováno i jádro operačního systému. Společný adresní prostor jádra i procesu umožňuje snížení režie nutné pro přebudování tabulek stránek v okamžiku, kdy se přestupuje při vykonávání kódu z prostoru jádra (kernel space) do prostoru procesu (user space) a naopak. Hranice mezi uživatelským a jaderným prostorem je kvůli snadné kontrole jejího nežádoucího překročení obvykle stanovena obsahem jednoho nebo dvou vrchních bitů adresy, takže je 4 GiB prostor rozdělen na 2 + 2 GiB, případně 3 + 1 GiB.

Je-li paměti 3 až 4 GiB, může aktivace PAE využít celou paměť, avšak ve výsledku může výkon počítače poklesnout (v závislosti na tom, co běžící procesy převážně dělají). Je-li paměti více, než 4 GiB, bude zřejmě využití PAE přínosem. Nejlepším řešením je však použití 64bitového operačního systému (umožňuje-li to procesor).

Windows[editovat | editovat zdroj]

Microsoft Windows používá standardně model 2 + 2 GiB, tj. proces může používat maximálně 2 GiB lineárního adresního prostoru. Systém lze přepnout do režimu 3 + 1 GiB při startu systému (parametrem /3, viz níže), avšak paměť nad 2 GiB mohou využít jen speciálně přeložené programy, které mají ve spustitelném souboru nastaven příznak IMAGE_FILE_LARGE_ADDRESS_AWARE.[11] Mezi takové paměťově náročné programy patří Microsoft Exchange Server, Microsoft SQL Server a podobně.[12] Paměť nad 2 GiB proto i přes použití parametru /PAE jeden proces přímo nevyužije (jen s pomocí speciálního rozhraní, ale musí být tak naprogramován),[2] ale využije se pro systémovou cache a rozdělí se mezi další procesy. Je-li kombinován parametr /3G/PAE, je velikost využité paměti omezena na 16 GiB.[13]

PAE je podporováno v následujících 32bitových verzích OS Windows:[14][15]

Verze Maximální Fyzická Paměť
Windows XP 4 GiB
Windows 2000 Professional 4 GiB
Windows 2000 Advanced Server 8 GiB
Windows 2000 Datacenter Server 32 GiB
Windows Server 2003 64 GiB
Windows Server 2008 64 GiB

Máte-li v počítači osazeno maximálně 3 GiB paměti, není potřeba nijak zasahovat do jeho nastavení. Máte-li paměti více, využijte přepínač /PAE (bez tohoto přepínače sice operační systém PAE využívá, ale jen pro podporu NX bitu).[4] Do souboru C:\boot.ini (jsou u něj nastaveny atributy skrytý a jen pro čtení – pro úpravu odškrtněte v „Možnosti složky“ → „Zobrazení“ záložku „Skrýt chráněné soubory operačního systému…“ a vypněte u souboru atribut „Jen pro čtení“) smažte přepínač „/3“, pokud jej boot.ini obsahuje (většinou jen u OS Server Edition). Přidejte za „multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect“ přepínač „/PAE“. Po restartu byste měli vidět 4 GiB RAM (tj. 4,1955xx GiB RAM). Pokud se v systému stále zobrazuje pouze 3,xx GiB RAM zapněte v setupu BIOSu funkci Mapování paměti nad 3 GiB (na základních deskách Asus se tato funkce nazývá „Memory Remap“).

Linux[editovat | editovat zdroj]

Linuxové jádro podporuje v 32bitovém režimu PAE včetně přístupu k 64 GiB paměti od verze 2.6.[16] Jádro je nutné přeložit s podporou PAE. Je možné vybrat, zda bude adresní prostor rozdělen mezi jádro a uživatelský prostor (1+3, 2+2, 3+1) nebo úplně oddělen (4+4, avšak za cenu vyšší režie při systémových volání jádra). Tvůrci linuxových distribucí obvykle poskytují uživateli na výběr dvě nebo více různých jader, přičemž uživatel (nebo instalační program) vybere nejlépe vyhovující variantu vzhledem k hardware použitého počítače.

Vzhledem k vysoké rychlosti současných procesorů a tím snižujícího se podílu režie při použití PAE, používají distribuce obvykle pro procesory i686 pouze jádra s podporou PAE.[1]

FreeBSD[editovat | editovat zdroj]

FreeBSD podporuje PAE ve verzi 4.x počínaje verzí 4.9, ve verzi 5.x od verze 5.1 a ve všech verzích 6.x a novějších. Pro podporu je vyžadováno jádro s podporou PAE. Ne všechny ovladače dovolují použití více než 4 GiB fyzické paměti.

Solaris[editovat | editovat zdroj]

Solaris podporuje PAE od OS Solaris 7. Ne všechny third-party ovladače (ovladače třetích stran) podporují více než 4 GiB fyzické paměti

Reference[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku Physical Address Extension na anglické Wikipedii.

  1. a b JONES, Dave. Fedora kernel packaging changes [online]. Dave Jones’ Linux & opensource stuff, 2009-02-09 [cit. 2009-08-05]. Dostupné v archivu pořízeném dne 2009-08-31. (anglicky) 
  2. a b c How PAE X86 Works [online]. Microsoft TechNet [cit. 2009-08-05]. Dostupné online. (anglicky) 
  3. a b ANDREWS, Jeremy. Linux: 4G/4G Overhead [online]. KernelTrap [cit. 2009-08-05]. Dostupné v archivu pořízeném dne 2007-08-07. (anglicky)  – neplatný odkaz !
  4. a b c Podrobný popis funkce Omezení spouštění dat v systémech Windows XP Service Pack 2, Windows XP Tablet PC Edition 2005 a Windows Server 2003 [online]. Microsoft: Pomoc a podpora, rev. 2006-11-21 [cit. 2009-08-05]. Dostupné online. 
  5. Physical Address Extension – PAE Memory and Windows [online]. Windows Hardware Developer Central, rev. 2005-02-09 [cit. 2009-08-05]. Dostupné online. (anglicky) 
  6. Operating Systems and PAE Support [online]. Windows Hardware Developer Central, rev. 2006-07-14 [cit. 2009-08-05]. Dostupné online. (anglicky) 
  7. Některé grafické karty (tzv. onboard) používají sdílenou paměť (tj. část operační paměti) a žádnou vlastní paměť nemají, avšak POST test ji při startu počítače obvykle odečte a v nastavení BIOSu (tzv. setup) je na úvodní stránce zobrazen správný celkový údaj.
  8. JONES, Dave. x86-32 PAE gotchas [online]. Dave Jones’ Linux & opensource stuff, 2009-08-10 [cit. 2009-08-05]. Dostupné v archivu pořízeném dne 2009-09-23. (anglicky) 
  9. ALEPH ONE. Smashing The Stack For Fun And Profit [online]. Phrack Magazine, 1996-11-08 [cit. 2009-08-05]. Dostupné online. (anglicky) 
  10. VAN DE VEN, Arjan. Limiting buffer overflows with ExecShield [online]. Red Hat Magazine, červenec 2005 [cit. 2009-08-05]. Dostupné v archivu pořízeném dne 2007-02-08. (anglicky) 
  11. IMAGE_FILE_LARGE_ADDRESS_AWARE and 3GB OS Switch [online]. stackoverflow, 2009-02-25, rev. 2010-07-29 [cit. 2014-09-12]. Dostupné online. (anglicky) 
  12. Memory Support and Windows Operating Systems [online]. Windows Hardware Developer Central, rev. 2005-02-09 [cit. 2009-08-05]. Dostupné online. (anglicky) 
  13. Podpora velkých pamětí v systémech Microsoft Windows [online]. Microsoft: Pomoc a podpora, rev. 2008-01-11 [cit. 2009-08-05]. Dostupné online. 
  14. Memory Limits for Windows releases [online]. Microsoft, December 5, 2007 [cit. 2007-12-10]. Dostupné v archivu pořízeném dne 2007-12-17. 
  15. Intel Physical Addressing Extensions (PAE) in Windows 2000 [online]. Microsoft, October 26, 2007 [cit. 2007-12-29]. Dostupné online. 
  16. Wonderful World of Linux 2.6 [online]. [cit. 2008-02-28]. Dostupné v archivu pořízeném dne 2003-07-16. 

Externí odkazy[editovat | editovat zdroj]