Physical Address Extension

Da Wikipedia, l'enciclopedia libera.

Nell'informatica, Physical Address Extension (PAE, Estensione dell'indirizzo fisico) è una caratteristica di alcuni processori x86 e x86-64 che permette di usare più di 4 gigabyte di memoria fisica nei sistemi a 32 bit - in concomitanza con il supporto appropriato del sistema operativo. PAE è disponibile da Intel Pentium Pro (e successivi) CPUs - compresi tutti gli ultimi processori Pentium-series ad eccezione della versione con bus a 400 MHz del Pentium M - e allo stesso modo dall'AMD Athlon (e successivi) con versioni della stessa architettura simili o più avanzate.

L'architettura hardware dei processori x86 con PAE è fornita di linee aggiuntive nel bus degli indirizzi per la selezione della memoria aggiuntiva, in modo che la dimensione dell'indirizzo fisico è aumentata da 32 a 36 bit. Questo, teoricamente, incrementa la dimensione della memoria fisica da 4 GB a 64 GB. La dimensione a 32-bit degli indirizzi virtuali non cambia, in modo che le normali applicazioni continuino ad usare istruzioni con indirizzi a 32bit e (nel modello a memoria flat) sono limitate a 4 gigabyte di spazio di indirizzamento virtuale. Il sistema operativo usa le tabelle di paging per mappare questo spazio di indirizzamento a 4 GB dentro la memoria virtuale a 8 GB. Il mapping è tipicamente applicato in modo diverso per ogni processo. In questo modo, la memoria in aggiunta è utile nonostante nessuna normale applicazione può accedere a tutti i 8 GB. Per esempio, in Windows, x86, versione a 32-bit, il massimo spazio di indirizzamento di 4GB (VAS) è separato in due sezioni di 2GB: 2GB sono allocate dal kernel e altre 2 GB sono per l'utente (applicazione). Indipendentemente da quanta RAM fisica è presente un sistema Windows, x86, versione a 32-bit, ha il VAS limitato a 4GB. Tuttavia, questo non è vero per Windows, versione x64 - che teoricamente ha fino a 16TB di VAS. Le implicazioni di avere un VAS diviso, come nelle versioni 32-bit, x86 di Windows, l'applicazione non è in grado di allocare più di 2 GB di memoria. L'importanza chiave di tale meccanismo è di prevenzione o minimizzazione che le applicazioni causino un crash del sistema usando tutta la memoria disponibile.

Per software che richiedono di accedere a più di 4 GB di memoria RAM, alcuni meccanismi speciali sono forniti dal sistema operativo in aggiunta al supporto di PAE. Su Microsoft Windows questo meccanismo è chiamato Address Windowing Extensions (Estensione della finestra di indirizzi), mentre su sistemi Unix-like una serie di tecniche sono usate, come la chiamata a mmap() per mappare regione di un file dentro o fuori lo spazio di indirizzamento.

Struttura della tabella di paginazione[modifica | modifica wikitesto]

In un sistema a 32-bit in modalità protetta, i processori x86 usano uno schema di traslazione a due livelli, dove il registro di controllo CR3 punta ad una singola page directory lunga 4 KB, che è divisa in 1024 voci × 4 byte che puntano ad una tabella di paginazione di 4 KB, che consiste (in modo simile) di 1024 voci × 4 byte che puntano a page lunghe 4 KB.

Abilitando il PAE (impostando il bit 5, PAE, del registro di sistema CR4) questo schema cambia in modo considerevole. In modo predefinito, la dimensione di ogni pagina rimane a 4 KB. Ogni voce nella tabella di paginazione e nella directory di paging è estesa a 64 bit (8 byte) invece che 32 bit per poterci inserire indirizzi più lunghi; tuttavia, la dimensione della tabella non cambia, in modo che sia la tabella e la directory ora hanno solo 512 voci. Siccome questo permette solo un quarto delle voci dello schema originale, un livello extra nella gerarchia è stato aggiunto, così che CR3 ora punta verso il Page Directory Pointer Table, una piccola tabella che contiene puntatori a 4 page directory.

Le voci nella page directory hanno un flag aggiuntivo, nel bit 7, chiamato PS (Page Size). Se questo bit è 1, la voce page directory non punta ad una tabella di paginazione, ma ad una singola page da 2 MB. Il NX bit è un altro flag nella page directory, nel bit 63, segnare le pagine che sono "No eXecute" (non eseguibili). Visto che i 12 bit meno significativi di una voce nella tabella di paginazione a 64-bit sono flag simili o disponibili per dati specifici dell'OS, un massimo di 51 bit possono essere potenzialmente usati in futuro per indirizzare 251 byte (2 petabyte), di memoria fisica.

Sui processori x86-64, PAE è obbligatorio nella modalità nativa "long mode"; attualmente 48-bit sono usati dei 52 bit possibili sull'AMD Phenom, CPU più vecchie potrebbero usare meno bit.

Le CPU che supportano il PAE possono essere identificate mediante il flag del CPUID PAE.

Supporto nei sistemi operativi[modifica | modifica wikitesto]

FreeBSD[modifica | modifica wikitesto]

FreeBSD supporta il PAE nella serie 4.x dalla versione 4.9, nella serie 5.x dalla 5.1, e in tutta le release 6.x e successive. L'opzione di configurazione PAE del kernel è richiesta per attivare il supporto. I moduli del kernel caricabili a run-time possono essere caricati in un kernel con PAE abilitato solo se sono costruiti con il supporto a PAE; i moduli binari nelle distribuzioni FreeBSD non sono realizzati con il supporto a PAE, e quindi non possono essere caricati dentro kernel PAE. Non tutti i driver supportano più di 5 GB di memoria fisica; questi driver ovviamente non funzioneranno correttamente su sistemi con PAE.[1]

Linux[modifica | modifica wikitesto]

Il kernel Linux include il supporto completo a PAE dalla versione 2.6,[2] abilitato l'accesso fino a 64 GB di memoria su macchine a 32-bit. Un kernel abilitato con PAE richiede che la CPU supporti PAE. Ad oggi (2009), molte distribuzioni GNU/Linux escono con un kernel abilitato PAE come opzione predefinita della distribuzione[3] anche se questo aggiunge un overhead, aggiungono anche il supporto al bit NX [4] .

Mac OS X[modifica | modifica wikitesto]

Mac OS X per processori Intel supporta il PAE e il bit NX in tutte le CPU supportate da Apple (dal 10.4.4 - la prima release Intel). I sistemi Mac Pro e Xserve supportano ad ora 32 GB di RAM, nonostante il kernel Mac OS X 10.5 Leopard rimane a 32-bit.[5]

Microsoft Windows[modifica | modifica wikitesto]

PAE è supportato nelle seguenti release a 32-bit di Microsoft Windows (è indicata la massima memoria indirizzabile da ciascun sistema):[6][7][8][9][10]

Sistema Versione 32-bit Versione 64-bit
Windows 2000 Professional, Server 4 GB -
Windows 2000 Advanced Server 8 GB -
Windows 2000 Datacenter 32 GB -
Windows XP Starter 512 MB -
Windows XP Home, Professional, Media Center 4 GB 128 GB
Windows Server 2003 Web 2 GB -
Windows Server 2003 Standard, Small Business/Home 4 GB 16 GB
Windows Server 2003 Standard, Small Business/Home con SP1 4 GB 32 GB
Windows Server 2003 Enterprise Storage 8 GB -
Windows Server 2003 Enterprise 32 GB 64 GB
Windows Server 2003 Enterprise R2/SP1, Datacenter 64 GB 1 TB
Windows Server 2003 Datacenter R2 64 GB 1 TB
Windows Vista Starter 1 GB -
Windows Vista Home Basic 4 GB 8 GB
Windows Vista Home Premium 4 GB 16 GB
Windows Vista Business, Enterprise, Ultimate 4 GB 128 GB
Windows Server 2008 Standard, Web, Small Business 4 GB 32 GB
Windows Server 2008 Enterprise, Datacenter 64 GB 2 TB
Windows 7 Starter 2 GB 2 GB
Windows 7 Home Basic 4 GB 8 GB
Windows 7 Home Premium 4 GB 16 GB
Windows 7 Professional, Enterprise, Ultimate 4 GB 192 GB
Windows 8 4 GB 128 GB
Windows 8 Pro 4 GB 512 GB
Windows Server 2012 Foundation - 32 GB
Windows Server 2012 Essentials - 64 GB
Windows Server 2012 Standard, Datacenter - 4 TB

Windows XP Service Pack 2 e successivi, in modo predefinito, su processori con il bit no-execute (NX) o execute-disable (XD), si avvia in modalità PAE per consentire l'uso del bit NX.[11] Il bit NX (o XD) risiede nel bit 63 della voce nella tabella di paginazione e, senza PAE, la tabella di paginazione ha solo 32 bit; quindi PAE è richiesto per sfruttare la feature del bit NX. Tuttavia, le versioni desktop di Windows limitano lo spazio di indirizzamento fisico a 4 GB per la compatibilità dei driver.

Solaris[modifica | modifica wikitesto]

Solaris supporta PAE dalla versione 7. Tuttavia, driver di terze parti usati con la versione 7 che non sono scritti per includere il supporto per il PAE possono operare in modo errato su sistemi con PAE.[12]

Voci correlate[modifica | modifica wikitesto]

Note[modifica | modifica wikitesto]

  1. ^ FreeBSD PAE(4) man page, 8 aprile 2003. URL consultato il 26 novembre 2007.
  2. ^ Wonderful World of Linux 2.6.
  3. ^ x86 Specifics for Fedora 11.
  4. ^ 1% performance overhead of paravirt_ops on native kernels.
  5. ^ Road to Mac OS X 10.6 Snow Leopard: 64-Bits, 26 settembre 2008. URL consultato il 26 settembre 2008.
  6. ^ Memory Limits for Windows releases, Microsoft, 5 dicembre 2007. URL consultato il 10 dicembre 2007.
  7. ^ Intel Physical Addressing Extensions (PAE) in Windows 2000, Microsoft, 26 ottobre 2007. URL consultato il 29 dicembre 2007.
  8. ^ Comparison of Windows Server 2003 Editions, Microsoft, 28 marzo 2003. URL consultato il 15 maggio 2009.
  9. ^ Overview of Windows Server 2003 R2 Datacenter Edition, Microsoft, Unknown. URL consultato il 15 maggio 2009.
  10. ^ Memory Limits for Windows Releases, Microsoft, 25 marzo 2010. URL consultato il 26 aprile 2010.
  11. ^ The RAM reported by the System Properties dialog box and the System Information tool is less than you expect in Windows Vista or in Windows XP Service Pack 2 (MSKB 888137) in Knowledge Base, Microsoft. URL consultato il 30 gennaio 2009.
  12. ^ Solaris 7 5/99 Release Notes (Intel Platform Edition), Appendix B: Hardware Compatibility List and Device Configuration Guide (Intel Platform Edition) 5/99, 1999. URL consultato il 26 novembre 2007.

Non referenziato, ma probabilmente dovrebbe esserlo:

Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 3A: System Programming Guide, Part 1

Collegamenti esterni[modifica | modifica wikitesto]

informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica