Physical Address Extension
Physical Address Extension (PAE, englisch für Erweiterung (der) physischen Adressierung) ist eine technische Erweiterung auf dem Gebiet der Rechnerarchitektur. Mit PAE kann im 32-Bit-Modus x86-kompatibler CPUs mehr physischer Arbeitsspeicher adressiert werden als die 4 GiB, die über ein 32-Bit-Adressregister erreichbar sind. Der für einen Prozess nutzbare Arbeitsspeicher bleibt bei einem linearen Speichermodell („flat memory“) aber auf 4 GiB begrenzt. Das Verfahren wird bei Prozessoren ab Intel Pentium Pro und AMD Athlon eingesetzt. Spezielle Erweiterungen in der Paging-Einheit der CPU sorgen dafür, dass längere physische Adressen generiert werden können.
Begriff
Selten wird der Begriff auch mit Bindestrich verwendet („Physical-Address Extension“), das ist theoretisch die korrekte Schreibweise gemäß engl. Grammatik und wird vor allem seitens AMD so verwendet. Vorherrschend ist jedoch die Schreibweise ohne Bindestrich.
Unterstützung durch Hardware
Prozessor | Adress- leitungen | theoretisch adressierbarer physikalischer Speicher |
---|---|---|
i386 bis Intel Pentium | 32 | GiB (kein PAE) | 4
Intel Pentium Pro bis Intel Core 2 | 36 | 64 GiB |
Intel Xeon | 38 | 256 GiB |
AMD Athlon 64 (K8) | 40 | 1.024 GiB = 1 TiB |
AMD K10 Architektur | 48 | 262.144 GiB = 256 TiB |
theoretisches Limit von PAE | 52 | 4.194.304 GiB = 4.096 TiB |
x86-Prozessoren, die PAE unterstützen, haben eine erweiterte Paging-Einheit. Die Paging-Einheit (in der Grafik dargestellt) wandelt die lineare Adresse in die physische Adresse um. Um PAE zu aktivieren, muss das Betriebssystem das Bit 5 im Steuerregister CR4 setzen.[1]
Bei aktiviertem PAE verwalten die Page-Directory- und Page-Table-Tabellen (PD und PT) der Paging-Einheit Adress-Einträge mit einer Breite von 64 Bit statt 32 Bit (bei jedem Adress-Eintrag werden einige Bits zur Verwaltung benutzt, sind also keine Adresse im engeren Sinn).
Bits: | 63 | 62 … 52 | 51 … 32 | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Inhalt: | NX | reserved | Bit 51 … 32 der Basisadresse | |||||||||||||||||||||||||||||
Bits: | 31 … 12 | 11 … 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||||||||||||||||||||
Inhalt: | Bit 31 … 12 der Basisadresse | AVL | ig | 0 | ig | A | PCD | PWT | U/S | R/W | P |
Damit die Größe der Tabellen unverändert bei 4 KiB bleibt, verwalten das PD und die PT nur noch jeweils die Hälfte der Einträge (512 statt 1024). Um den Rückgang auf ein Viertel der möglichen Adresseinträge auszugleichen, ist der PD-PT-Kombination eine weitere, sogenannte Page-Directory-Pointer-Tabelle vorgeschaltet, die 4 PDs statt eines PDs ansprechen kann.
Die angegebenen theoretisch adressierbaren Speichermengen des physikalischen Speichers sind Maximalwerte. In der Regel ist trotzdem nur weniger Speicher nutzbar, da einige Adressbereiche für Einblendungen von Hardwarespeicher genutzt werden. In Microsoft Windows kann in den Computereigenschaften gesehen werden, wie viel Speicher dem Betriebssystem tatsächlich zur Verfügung steht. Nur im Idealfall entspricht diese Zahl dem installierten Arbeitsspeicher. Dabei muss auch beachtet werden, dass viele Windows-Versionen willkürliche Speicherobergrenzen haben, die auch von der Edition abhängen. Alle Client-Versionen von 32-Bit-Ausgaben sind z. B. auf 4 GiB beschränkt.
Unterstützung durch Betriebssysteme
Zur Nutzung von PAE muss dieses auch vom Betriebssystem unterstützt werden. PAE führt allerdings zu längeren Zugriffszeiten durch die virtuelle Speicherverwaltung, das Paging und für 32-Bit PCI-Zugriffe, die bei einer Begrenzung des Arbeitsspeichers auf 4 GiB nicht erforderlich wären.
Auf den meisten Rechnern ist PAE dennoch aktiviert, da nur mit eingeschalteter PAE das No-Execute-Bit genutzt werden kann. Dieses soll verhindern, dass in Datenbereichen Schadsoftware eingeschleust werden kann, die zu einem Virenbefall des Rechners führen. Dazu werden entsprechende Datenbereiche als „nicht ausführbar“ markiert. Wenn ein Sprung an eine Adresse in einem solchen Bereich erfolgt, kommt es zu einer Schutzverletzung und das entsprechende Programm wird angehalten. Da einige nicht sauber programmierte Software dadurch nicht mehr funktionieren würde, ist es in Microsoft Windows standardmäßig nur für betriebssystemeigene Prozesse eingeschaltet. Dadurch wird die ursprünglich angedachte höhere Sicherheit nur für OS-eigene Funktionen erreicht.
BSD-Familie
FreeBSD unterstützt PAE in der 4.x Serie ab 4.9, in der 5.x Serie ab 5.1 und in allen 6.x Versionen und allen späteren Versionen. Die PAE-Konfigurationsoption wird im Kernel benötigt. Ladbare Kernelmodule können nur in einen Kernel mit aktiviertem PAE geladen werden, wenn die Module mit aktiviertem PAE erstellt worden sind. Nicht alle Treiber unterstützen mehr als 4 GiB Arbeitsspeicher, in einem System mit aktiviertem PAE laufen solche Treiber nicht richtig. NetBSD sowie OpenBSD (bisher nur in -current) unterstützen PAE ebenfalls. Alle adressieren den gesamten 64-GiB-Adressraum.
Linux
Der Linux-Kernel enthält ab der Version 2.3.23 die volle PAE-Unterstützung. Seit 2009 ist PAE bei vielen Linux-Distributionen per Voreinstellung enthalten, weil PAE für das NX-Bit benötigt wird.
macOS
macOS für Intel-Macs unterstützt PAE und das NX-Bit ab der ersten Intel-Version, Mac OS X Tiger (Version 10.4.4) vom Januar 2006, auf allen von Apple unterstützten x86-Prozessoren. Modelle der Mac-Pro-Serie werden seit 2008 mit bis zu 64 GiB RAM ausgeliefert.
Solaris
Solaris unterstützt PAE ab Version 7.
Windows
PAE wird von Microsoft Windows ab Version 2000 (Professional und höher) und XP (alle Varianten) unterstützt und muss hierbei zumeist durch eine Bootoption aktiviert werden. Allerdings ist dabei bei den 32-bit Desktop-Versionen auch mit aktiviertem PAE der maximal nutzbare Hauptspeicher auf 4 GB beschränkt. Dies wird zum einen damit erklärt, dass es wohl Teil der Vermarktungspolitik von Microsoft sei.[3] Microsoft dagegen begründet diese Einschränkung damit, dass einige der verwendeten Gerätetreiber beim Zugriff auf Speicherbereiche jenseits der 4 GB Probleme bereiten würden.[4]
Anwendungen können erweiterten Speicher je nach Hardware und Betriebssystem möglicherweise über Address Windowing Extension (AWE) nutzen. Je nach Windows-Version müssen eventuell zusätzliche Service Packs eingespielt werden, es existieren auch einige inoffizielle Patches für 32-Bit Vista und Windows 7, die die Nutzung bis 64 GB ermöglichen.[5][6]
Einzelnachweise
- support.amd.com (PDF)
- Release Notes: Haiku R1 Alpha 3 (18. Juni 2011)
- geoffchappell.com
- Mark Russinovich: Pushing the Limits of Windows: Physical Memory. 21. Juli 2008. Abgerufen am 4. September 2013.
- 32位Vista/Win 7 4GB大内存补丁 ReadyFor4GB (Chinese) 26. April 2009. Abgerufen am 17. März 2011.
- Unawave: Windows 7 32-bit with full 4 GB or 8 GB RAM support. Abgerufen am 11. Juli 2010.