Perché non ci sono processori a 256-bit o 512-bit o 1024-bit?

Dipende da cosa intendi per "bit". Ci sono molte cose che hanno un "numero di bit" in un processore. Alcune, come un bus di trasferimento della memoria, possono avere un numero molto grande di bit per avere un alto throughput (che fondamentalmente significa trasferire molti bit al secondo).

Come altri hanno affermato, si possono effettivamente usare molti bit per il calcolo, e anche i processori a 64 bit possono applicare una singola operazione a un vettore di 512 bit (anche se quei bit non rappresentano effettivamente un singolo numero).

Quando le persone si riferiscono ai processori a 32 o 64 bit, generalmente si riferiscono al numero di bit utilizzati per rappresentare nativamente un numero intero e il numero di bit per rappresentare un indirizzo. Quest'ultimo è probabilmente più importante.

Quando si ha a che fare con i dati, specialmente quelli memorizzati nella RAM, che sono dati che vengono elaborati, un programma deve sapere come identificare individualmente le parti dei dati. Questo viene fatto attraverso gli indirizzi. Ogni byte ha un indirizzo, e i dati sono costituiti da gruppi di byte.

In un normale processore a 32 bit, questi indirizzi sono rappresentati come interi senza segno a 32 bit, che possono rappresentare numeri da 0 a 4 miliardi. Ciò significa che un programma in esecuzione su tale processore può indirizzare fino a 4 GiB di dati. Questo è un sacco di dati. Ma al giorno d'oggi i dati stanno diventando sempre più grandi.

Per esempio, i film 4K possono superare quella quantità di dati, quindi i programmi che manipolano quel tipo di video non possono caricarli tutti in memoria per elaborarli se sono in esecuzione su un normale processore a 32 bit. Quando si pensa ai computer che gestiscono i server per le compagnie internet, hanno a che fare con molti più dati perché normalmente gestiscono i dati per più utenti che li usano allo stesso tempo.

Prima che i computer a 64 bit diventassero mainstream, alcune soluzioni avevano già iniziato ad apparire. Per esempio, i processori x86 che sono a 32 bit possono effettivamente gestire indirizzi fino a 40 bit (se ricordo bene). Il problema era che si dovevano usare alcune operazioni non banali per rappresentare sezioni di memoria extra nel formato degli indirizzi a 32 bit. Quindi usare più di 4 GiB era già possibile, ma non era banale.

Il problema è che molte operazioni di indirizzamento sono relative. Un tipico esempio è un array. Un array è un gruppo di dati che'è memorizzato in modo continuo, cioè un elemento è memorizzato immediatamente dopo l'altro. Potete ottenere un elemento specifico nell'array usando l'indirizzo del primo elemento aggiunto all'indirizzo relativo (che è la dimensione dell'elemento per la posizione) dell'elemento desiderato. Come potete vedere, abbiamo bisogno di eseguire operazioni aritmetiche usando gli indirizzi (rappresentati come interi) per usare i dati in modi più flessibili ed efficienti.

Questo è il motivo per cui i processori a 64 bit hanno raddoppiato il numero di bit nella rappresentazione degli indirizzi e nelle operazioni sui numeri interi. Ora più dati possono essere efficacemente indirizzati.

La domanda ora potrebbe essere, perché 64 e non 60 o 40 (come era già stato iniziato qualche anno fa). Ci sono probabilmente un sacco di ragioni per tale design, ma la più semplice che posso pensare è che poiché 32 operazioni sono ancora possibili (e operazioni a 16 bit e 8 bit), si potrebbe teoricamente utilizzare la maggior parte dello stesso hardware per fare due operazioni a 32 bit. Non so se questo è realmente usato all'interno dei processori, ma è una ragione che penso sia valida. Un altro esempio potrebbe essere che le operazioni a bit sono più facili da implementare con numeri che sono potenze di due, e 64 è la prossima potenza di due dopo 32.

Anche se 64 bit permettono di indirizzare fino a 16 EiB di dati, gli attuali processori a 64 bit limitano fisicamente la RAM indirizzabile ad un valore più basso (meno di 1 TiB), perché nessuno finora ha aggiunto quella quantità di RAM da indirizzare, quindi alcuni bit possono anche essere ignorati (è più complicato di così, perché le mappature sono usate per assicurarsi che un programma non acceda a memoria che non è indirizzata;acceda alla memoria che non è indirizzabile, ma questo avviene dietro le quinte e il programma non sa nemmeno che sta succedendo, sa solo che sta succedendo qualcosa di strano quando cerca di usare più memoria di quella disponibile, ma è colpa dell'utente che non ne ha comprata abbastanza 😉 ).

Ora, per rispondere finalmente alla domanda perché non ci sono processori a 128 bit o più, la risposta è che la maggior parte delle persone non li userebbe, e produrre tali processori sarebbe più costoso. Quindi, la risposta è semplicemente che non ne vale la pena (ancora).

Quando ne varrà la pena? Probabilmente tra qualche decennio. 64 bit possono rappresentare un sacco di dati. Tuttavia, l'umanità ha dimostrato di avere la capacità mentale di escogitare modi per utilizzare sempre più dati. Il che significa che probabilmente raggiungeremo un punto simile in futuro in cui la gente vorrà eseguire programmi che operano su dati enormi (film olografici?). Quando quel giorno arriverà, i processori a 128 bit potrebbero diventare disponibili. 128 bit permettono effettivamente di indirizzare più dati di quelli che sono attualmente presenti nell'intero pianeta, quindi non credo che vedremo mai computer a 256 bit, ma il tempo probabilmente mi dimostrerà che mi sbaglio.