Bus di Indirizzo a 32 Bit: Capacità di Indirizzamento Memoria Spiegata
Un microprocessore con un bus di indirizzo a 32 bit può indirizzare direttamente 2³² (4.294.967.296) posizioni di memoria uniche. Poiché ogni posizione tipicamente memorizza un byte (8 bit), ciò si traduce in uno spazio di memoria indirizzabile massimo di 4 gigabyte (4 GB).
La Matematica
Posizioni Indirizzabili = 2^(larghezza bus indirizzo) = 2^32 = 4.294.967.296 posizioni Memoria Indirizzabile Totale = 4.294.967.296 byte = 4.194.304 KB = 4.096 MB = 4 GB
Distinzioni Critiche
Bus di Indirizzo vs. Bus di Dati
- Bus di Indirizzo (32-bit): Determina quante posizioni possono essere indirizzate (4 GB)
- Bus di Dati (32-bit, 64-bit, ecc.): Determina quanto dato viene trasferito per ciclo
Un processore a 32 bit tipicamente ha sia bus di indirizzo che dati a 32 bit, ma sono parametri di progettazione indipendenti.
Spazio di Indirizzo Fisico vs. Virtuale
- Fisico: RAM reale + I/O mappato in memoria che l'hardware può indirizzare (4 GB max per 32-bit)
- Virtuale: Spazio di indirizzo per processo presentato dal SO (anche 4 GB per processo su SO a 32 bit)
Implicazioni Reali
La Barriera dei 3 GB (SO a 32 bit)
Su sistemi operativi a 32 bit, lo spazio di 4 GB deve ospitare:
- RAM di sistema
- Memoria video (frame buffer GPU)
- I/O mappato in memoria (dispositivi PCI, BIOS, APIC, ecc.)
- Spazio di indirizzo del kernel
Questo lascia tipicamente solo 3–3,5 GB utilizzabili per le applicazioni, anche con 4 GB+ di RAM fisica installata.
PAE (Physical Address Extension)
Alcuni processori a 32 bit (Pentium Pro in poi) supportano l'indirizzamento fisico a 36 bit tramite PAE, abilitando fino a 64 GB di RAM fisica—sebbene ogni processo sia ancora limitato a 4 GB di spazio virtuale senza SO a 64 bit.
Contesto Storico
Lo spazio di indirizzo a 32 bit (4 GB) sembrava vasto negli anni '80-'90 (era 386/486/Pentium). A metà degli anni 2000, divenne un vincolo, guidando la transizione ad architetture a 64 bit (x86-64/AMD64) con spazio di indirizzo teorico di 2⁶⁴ byte (16 exabyte).
Tabella Riassuntiva
| Larghezza Bus | Posizioni Indirizzabili | Memoria Byte-Indirizzabile |
|---|---|---|
| 16-bit | 65.536 | 64 KB |
| 20-bit (8086) | 1.048.576 | 1 MB |
| 24-bit | 16.777.216 | 16 MB |
| 32-bit | 4.294.967.296 | 4 GB |
| 36-bit (PAE) | 68.719.476.736 | 64 GB |
| 64-bit | 18.446.744.073.709.551.616 | 16 EB |