Quando si parla di processori e sistemi operativi, sia in ambito desktop che su “mobile”, oggi si fa comunemente riferimento al termine 64 bit.
Esso ha a che fare con la dimensione dei registri interni della CPU usata in ciascuna architettura e in particolare alla lunghezza che può assumere una variabile semplice.
Nel corso di qualche decennio i processori sono passati da 4 bit a 64 bit con un’evoluzione che, guardandosi indietro, appare davvero impressionante. Ricorderete certamente le storiche console di gioco a 8 bit e dello storico passaggio ai 16 bit.
Se nel 2006 i sistemi server già usavano piattaforme a 64 bit perché il mercato mainstream virasse a sua volta verso lo stesso schema ci volse qualche anno e il passaggio fu dettato soprattutto dalla volontà di superare il limite dei 4 GB di memoria RAM che l’architettura a 32 bit imponeva.
Il codice binario è alla base del funzionamento di ciascun sistema informatico che utilizziamo oggi, indipendentemente dalla sua tipologia e fattore di forma. Almeno fintanto che i computer quantistici e i qubit da essi utilizzati non diverranno alla portata di una platea più ampia.
Il bit, unità di misura della quantità d’informazione, può assumere due valori: 0 e 1.
Il numero binario a 8 bit 11111111 rappresenta il massimo valore che si può esprimere: partendo da destra e moltiplicando ciascuna cifra per le potenze del 2 in ordine crescente si ottiene quanto segue: 1*20+1*21+1*22+1*23+1*24+1*25+1*26+1*27 = 255
.
Potete verificarlo anche con la calcolatrice di Windows selezionando Programmatore dal menu principale in alto a sinistra quindi selezionando BIN e infine digitando 11111111: in corrispondenza di DEC si leggerà appunto 255 nel sistema decimale.
Un insieme di bit permette di gestire un singolo byte che può essere pensato come un singolo carattere alfanumerico o un simbolo. Non è un caso che la tabella ASCII estesa permetta di codificare 256 caratteri diversi usando un singolo byte ovvero 255 valori più lo zero iniziale (da 0 a 11111111 in binario).
Tenendo premuto il tasto ALT
sulla tastiera e digitando il codice nella colonna DEC, si ottiene la lettera, il numero o il simbolo corrispondente.
Il numero più grande che si può scrivere con 16 bit è composto da 16 cifre “1” che nel sistema decimale equivalgono a 65535. Con 16 bit si possono ovviamente gestire 2 byte di informazione.
Il 15 novembre 1971 Intel presentò il primo microprocessore commerciale a chip singolo della storia: era a 4 bit e si chiamava Intel 4004.
Un esempio di processore a 8 bit è il MOS Technology 6502 del settembre 1975: fu apprezzatissimo e si diffuse rapidamente tanto da essere usato in sistemi come Atari 800, Apple I, II, Commodore PET, VIC-20 e successivamente, in versione modificata e aggiornata, anche nel Commodore 64 (processore 6510, era il 1982).
L’era dei 16 bit iniziò con l’Intel 8086 (1978) e 80286 (febbraio 1982) oltre che con Motorola 68000 (1979), 68010 e Zilog Z8000 (1979).
Allo stesso modo, con il passaggio ai 32 bit è stato possibile raddoppiare la dimensione dei registri della CPU: a fare da apripista furono i processori Intel i386 (80386) che l’azienda di Santa Clara iniziò a produrre dal 1985. A 32 bit furono anche tutti i successori: dai 486 fino ai Pentium, Pentium 2 e così via sino ad arrivare al lancio dei primi modelli a 64 bit.
Lato mobile parliamo dei core ARM Cortex-A8 (anno 2005), Cortex-A9, Cortex-A15 e così via.
Nell’ambito dell’architettura x86 un forte impulso per passare ai 64 bit fu impresso da AMD con i suoi processori Opteron (anno 2003 e seguenti) destinati ai sistemi server. Le estensioni a 64 bit (x64 o x86-64) sviluppate da AMD per i suoi processori vennero concesse in licenza a Intel che le utilizzò nel mercato di massa per i suoi Core 2.
Sul versante mobile, i primi chip a 64 bit furono gli ARM Cortex-A53 (anno 2012) e i Cortex-A57.
Cosa cambia davvero nel passaggio 4, 8, 16, 32, 64 bit
Quando si parla di dispositivi informatici sono due le caratteristiche di rilievo: la già citata dimensione dei registri interni della CPU (ne abbiamo parlato nell’articolo in cui spieghiamo in breve come funziona un processore) e lo schema di indirizzamento utilizzato dal bus di sistema.
Il bus è un canale di comunicazione che permette alle varie componenti di un dispositivo elettronico di interfacciarsi e di scambiarsi informazioni attraverso la trasmissione e la ricezione di segnali.
Il bus di sistema è composto da bus indirizzi, bus dati e bus di controllo ed è realizzato attraverso un sottosistema fisico composto da più piste in rame e varie tipologie di connettori.
La dimensione della memoria che può essere indirizzata determina la larghezza del bus e viceversa. Come abbiamo visto in precedenza, se la dimensione del bus indirizzi fosse pari a 32 bit, sarebbe possibile utilizzare 232 blocchi di memoria ovvero 4 GB di dati.
Con un processore a 16 bit si possono quindi in generale scrivere direttamente 16 bit di dati in memoria in una sola volta e così via passando a 32 e 64 bit.
Va detto comunque che in alcune architetture la dimensione dei registri interni della CPU non necessariamente rispecchia il quantitativo di memoria che può essere indirizzata: nel caso degli Intel i386 l’idea era quella di permettere l’indirizzamento di 4 GB di memoria usando registri a 32 bit ma nel caso ad esempio del core Cortex-A15, anch’esso a 32 bit, era comunque possibile indirizzare più di 4 GB perché veniva fatto uso di alcuni registri interni aggiuntivi. Questi ultimi permettevano di fatto l’estensione dello spazio di indirizzamento.
Se ci pensate anche oggi i sistemi a 64 bit di certo non possono fisicamente indirizzare 264 bit che equivalgono a qualcosa come 18.446 Petabyte di memoria: nessuno può neanche lontanamente installare moduli di memoria di tale portata. Si parla soltanto adesso di configurazioni motherboard-processore che possono supportare più di 1 TB di memoria RAM.
Per questo motivo non si è mai parlato di una possibile migrazione dai 64 ai 128 bit nel caso dei processori: non c’è bisogno di uno spazio di indirizzamento della memoria ancora più grande al quale ogni singolo core possa a sua volta accedere.
Eseguire programmi a 64 bit su un sistema x86-64 introduce invece enormi vantaggi soprattutto in termini di performance. Come dicevamo, inoltre, un sistema a 64 bit può indirizzare ben oltre 4 GB di memoria, limite che dai primi anni 2000 è cominciato a risultare estremamente limitante.
Basti tenere presente che i processori a 64 bit in commercio utilizzano di norma, al massimo, bus da 48 bit e che gli Intel Alder Lake di dodicesima generazione integrano un bus di memoria con quattro canali DDR5 da 32 bit per formare un’interfaccia a 128 bit.
Per i “nostalgici” dell’era a 8 e 16 bit suggeriamo di dare un’occhiata a questa pubblicazione su Archive.org in cui si parla di retrocomputing: da Apple II, Atari e VIC-20 al Super Nintendo.