In ambito informatico, con Architettura di von Neumann ci si riferisce alla descrizione teorica del funzionamento e della composizione di calcolatori elettronici programmabili. Teorizzata dal matematico di origine ungherese John von Neumann negli anni '40 del XX secolo, questa particolare tipologia di architettura hardware è la base di tutti i sistemi informatici odierni per la sua semplicità di applicazione e funzionamento.
Una macchina di von Neumann (ovvero un dispositivo realizzato seguendo i principi dell'architettura di von Neumann) è composta da tre componenti fondamentali: una unità di lavoro centrale (Central Processing Unit o CPU in inglese), una memoria di lavoro (RAM) nella quale archiviare e conservare i dati da lavorare e quelli lavorati e delle periferiche di input e output. A collegare queste tre componenti il System bus, elementi di collegamento deputati a trasportare i dati tra l'una e l'altra parte. Il cuore pulsante di questa architettura è la CPU o processore, cui spetta il compito di effettuare le operazioni logiche e matematiche che trasformano i dati in arrivo dalle periferiche di input e li restituisce, modificati, attraverso le periferiche di output.
La storia delle CPU
Da quando von Neumann teorizzò l'architettura hardware che porta il suo nome, le cose sono cambiate molto, anche per la struttura e la fabbricazione dei processori. Ai tempi dell'EDVAC, uno dei primi computer elettronici digitali, i processori venivano progettati e realizzati appositamente per ogni dispositivo. Si trattava, nella gran parte dei casi, di CPU destinati a realizzare un solo tipo di operazione o funzione e per questo c'era bisogno di una progettazione ad hoc.
Con lo sviluppo della produzione di massa di transistor e con la successiva evoluzione dei circuiti integrati (Integrated Circuit, IC), è stato possibile realizzare microchip nei quali la potenza di calcolo cresceva in maniera inversamente proporzionale alla grandezza: più piccoli i microchip, maggiore la capacità di effettuare operazioni logiche.
L'era dei transistor iniziò a metà anni '50, quando i primi circuiti elettrici “stampati” andarono a sostituire le più fragili e meno stabili valvole termoioniche (o tubi a vuoto). In questo modo fu possibile realizzare processori più veloci, più affidabili e, soprattutto, più potenti. Non dovendo più fare affidamento su elementi fragili e sostanzialmente “incomprimibili” come le valvole, fu anche possibile ridurre (di molto) lo spazio fisico che le unità centrali occupavano all'interno dell'architettura del computer.
La base di queste nuove CPU erano i circuiti stampati, ovvero delle schede di plastica realizzate in maniera standard e in serie. In questo periodo i progressi tecnologici permisero di realizzare circuiti integrati sempre più piccoli e sempre più “affollati”: su di uno stesso circuito venivano alloggiati più transistor dando vita così ai chip. Questa nuova tecnologia produttiva permise di incrementare notevolmente le velocità di calcolo dei computer, oltre a garantire un risparmio energetico non indifferente.
Con l'arrivo del nuovo decennio, arrivò anche una nuova tecnologia produttiva che permise di effettuare un ulteriore passo in avanti in campo informatico. Grazie all'intuizione del fisico italiano Federico Faggin, a partire dagli anni '70 vennero sviluppati processori basati su di un solo chip dalle dimensioni piuttosto contenute. Iniziò così l'era dei microchip, piccole schede di materiale plastico che ospitavano, in pochi centimetri quadrati, milioni di transistor e con capacità di calcolo mai viste prima. Le dimensioni ridotte, inoltre, permettevano di incrementare ulteriormente le frequenze di lavoro dei processori (divenuti ora microprocessori), dato che lo spazio tra un transistor e l'altro era fisicamente diminuito.
Gli sviluppi tecnologici odierni hanno permesso di ridurre moltissimo lo spazio tra un transistor e l'altro. Intel e AMD, i due principali produttori di microchip e processori mondiali, adottano oggi un processo produttivo che prevede circuiti stampati con gate (o “terminali di attivazione”) dei transistor grandi 14 nanometri (un nanometro corrisponde a un miliardesimo di metro). Ma le tecniche di miniaturizzazione sembrano aver ormai raggiunto il loro limite e molti analisti pensano che solamente l'utilizzo di materiali differenti dal silicio potrebbe portare a un’ulteriore evoluzione, consentendoci di ottemperare ai dettami dalla Legge di Moore.
Come funziona un processore
Il compito primario di una CPU è di eseguire una serie di istruzioni chiamate solitamente programma. Per riuscire a fare ciò, ogni processore (e questo è rimasto immutato dagli anni '40 ad oggi) fa ricorso a due delle sue componenti fondamentali: la ALU (arithmetic logic unit, unità logica aritmetica) e la CU (control unit, unità di controllo). La prima è incaricata di svolgere le operazioni logico-matematiche che permettono di trasformare i dati in arrivo dalle periferiche di input, mentre la seconda ha il compito di controllare e coordinare le azioni necessarie per l'esecuzione delle operazioni.
Il ciclo di lavoro di un processore è solitamente suddiviso in quattro fasi: acquisizione dell'informazione (fetch), decodifica (decode), esecuzione (execute) e riscrittura (writeback).
La prima fase consiste nell'andare a recuperare le informazioni necessarie allo svolgimento dell'operazione logica. Le informazioni sono salvate nella memoria e sono individuabili grazie a un indirizzo logico specificato in un apposito registro, il Program Counter.
Una volta che le informazioni sono state reperite, c'è la necessità di renderle “digeribili” al processore. I dati, infatti, devono essere spezzettati in unità significative per la CPU, in modo che possa portare a termine le istruzioni richieste dal programma.
La terza fase è quella prettamente operativa. Dopo che i dati sono stati scomposti e resi “digeribili” alle unità logico-aritmetiche del processore, questi vengono trasformati in base alle operazioni che ogni programma invia al processore stesso.
Nella quarta e ultima fase, quella della riscrittura, i dati così modificati vengono riscritti in una porzione casuale di memoria e messi a disposizione del programma che ne aveva “fatto richiesta”.
Il ciclo di lavoro appena descritto determina anche la velocità del processore e ne costituisce, sostanzialmente, l'unità di misura delle performance. Maggiore sarà il numero di cicli che il processore è in grado di completare nell'unità di tempo, maggiore sarà la frequenza di lavoro (misurata in hertz). Oggi le frequenze dei processori si aggirano attorno ai 2-3 Gigahertz (Ghz) ma, per avere un’idea della potenza di calcolo complessiva, va tenuto in conto che ogni singola unità di lavoro contiene al suo interno 2 o più processori (multicore).