Discussione: Guide: 32bit vs 64bit
Visualizza messaggio singolo
Vecchio 29-11-2007, 20.23.21   #1 (permalink)
MarcoGT
VV.com Aficionados
 
L'avatar di MarcoGT
 
Data registrazione: 27-11-2007
Residenza: near COD NDB
Messaggi: 686
MarcoGT is on a distinguished road
Predefinito Guide: 32bit vs 64bit

Scritta in origine da Filippo

Come di consueto, è bene fare un po' di riassunto storico.

I primi PC IBM, nei primissimi anni 80, erano equipaggiati con il mitico Intel 8086, o più probabilmente con il "fratello minore" 8088. I due processori erano pressoché identici, con la differenza principale nell'ampiezza del bus di comunicazione tra CPU e resto del computer, che nell'8086 era di 16 bit e nell'8088 di soli 8 bit. Nonostante l'8088 fosse quindi più lento a comunicare con l'esterno, era comunque preferito perché a quei tempi realizzare periferiche con bus di comunicazione a 16 bit era enormemente più costoso.

Quale che fosse la variante, l'8086/8088 era un processore a 16 bit. Cosa significa questa definizione? Purtroppo non è univoco il criterio a cui nei vari casi ci si affida per definire se una CPU è a 8/16/32/64 bit o che altro. Nel caso delle CPU x86 (quelle dei nostri PC) si è presa come riferimento l'ampiezza dei registri, ovvero quelle piccolissime memorie interne alla CPU che servono per immagazzinare i dati su cui operano le singole istruzioni macchina, nonché i risultati delle relative operazioni. L'8086/8088 aveva 8 registri a 16 bit, per cui è stato definito una CPU a 16 bit. Questi registri, oltre che contenere i dati delle classiche operazioni aritmetiche/logiche, potevano contenere gli indirizzi, ovvero numeri che individuano univocamente una delle varie celle di memoria contenenti le informazioni da elaborare.
Tramite un meccanismo di gestione della memoria definito "segmentazione", l'8086/8088 poteva indirizzare "ben" 1 MByte di RAM. Una quantità ridicola per gli standard di oggi, ma considerata enorme per l'epoca (famosa la dichiarazione di Bill Gates: "640 kBytes saranno sufficienti per qualsiasi necessità", anche se qualcuno sostiene che in realtà Bill non abbia mai pronunciato questa affermazione).

Anche il successore dell'8086, ovvero l'80286 (comunemente abbreviato in "286") era una CPU a 16 bit, la cui differenza sostanziale rispetto all'8086/8088 era l'introduzione della modalità di funzionamento cosiddetta "Protected Mode", che permetteva di indirizzare più memoria (16 MBytes) ed offriva un supporto hardware al multitasking (nel senso che la CPU poteva gestire la memoria in modo da tenere separate le aree di memoria assegnate ad applicazioni distinte).

Con l'80386, introdotto nel 1985, arrivarono finalmente i registri dati/indirizzi a 32 bit (anche se la variante 386SX era "castrata" e solamente 24 dei 32 bit erano utilizzabili per gli indirizzi) e migliorato la "Protected Mode" con un più articolato supporto al multitasking: meccanismo di paginazione della memoria, memoria virtuale (meccanismi il cui approfondimento esula dagli scopi di questa FAQ: vi basti sapere che la Protected Mode a 32 bit è la modalità di funzionamento della CPU comunemente impiegata in tutti i sistemi operativi moderni a 32 bit).

Dall'80386 in poi, l'ampiezza dei registri non è più cambiata, fino al Pentium 4 con core Prescott, il primo nel quale Intel ha proposto le estensioni a 64 bit scopiazzandole da AMD che le aveva già introdotte da oltre un anno sul proprio Athlon64.

Al momento attuale, tutte le CPU sia Intel che AMD supportano le cosiddette estensioni a 64 bit, meglio conosciute con l'acronimo "x64", che in sostanza consistono in un ulteriore ampliamento dei registri, portati a 64 bit di ampiezza, le relative nuove istruzioni macchina per processare dati e indirizzi a 64 bit, nonché il supporto hardware all'emulazione del funzionamento a 32 bit quando è operativa la modalità a 64 bit (supporto sfruttato da Windows e Linux a 64 bit per poter far funzionare le applicazioni a 32 bit).

Adesso forse vi sarà possibile capire meglio quando si parla di sistemi operativi a 32 e a 64 bit. Un sistema operativo a 32 bit è infatti un software che utilizza, come detto, la modalità Protected Mode a 32 bit dei processori 80386 e superiori. In questa modalità, le CPU x86 supportano il multitasking, il multithreading e sono in grado di processare dati e indirizzi a 32 bit. In particolare la possibilità di trattare indirizzi a 32 bit ci interessa, perché è da lì che nasce il limite, oggi ormai divenuto pesante, dei sistemi a 32 bit, ovvero la possibilità di gestire non più di 4 GB per applicazione.
Questo limite nasce da un elementare calcolo di aritmetica binaria: un bit rappresenta un valore che può essere 0 o 1, quindi 1 singolo bit può rappresentare 2 diversi valori. 32 bit potranno pertanto rappresentare 2^32 diversi valori, ovvero 4 miliardi e rotti. Poiché un indirizzo individua univocamente una cella di memoria, e nelle architetture x86 una cella contiene 1 byte, ne consegue che un indirizzo a 32 bit può "vedere" 4 miliardi e passa di bytes, ovvero i famigerati 4 GB.

Ecco perché è nata la tecnologia delle estensioni a 64 bit dei processori x86. Un indirizzo a 64 bit può vedere 2^64 bytes (vi lascio fare il conto...), e quindi il limite dei 4 GB è brutalmente superato.

Verrà mai un momento in cui 64 bit saranno pochi e dovremo passare a registri a 128 bit? Beh, sicuramente questo momento non verrà entro i prossimi 50 anni, credo Resta il fatto che dati a 64 bit possono essere ancora pochi per alcune applicazioni molto specifiche, in particolare la crittografia, in cui farebbero comodo registri ben più grossi, a 128, 256 o anche 512 bit. Ma se si escludono questi casi estremamente particolari, per il resto già processare dati a 32 bit soddisfa la quasi totalità delle esigenze "normali" (d'altra parte i nostri padri, e i più vecchi di noi, vivevano tranquillamente con MS-DOS e Windows 3.x che erano sistemi a 16 bit...).

Un sistema operativo a 64 bit utilizza la modalità di funzionamento delle nuove CPU Intel e AMD nella quale vengono processati dati e indirizzi a 64 bit; lo scopo di tutto ciò, come si sarà ormai capito, è essenzialmente quello di vedere più dei maledetti 4 GB di memoria; dopodiché, per carità, ci sono particolari ambiti che possono trarre giovamento dal processare dati a 64 bit invece che a 32... anche se spiegare esattamente in che senso c'è questo giovamento sarebbe un po' troppo tecnico. Magari alla prossima puntata...

...continua...
MarcoGT non è connesso   Rispondi citando