Il modello di Von Neumann, conosciuto anche come architettura di Von Neumann, è una tipologia di
architettura hardware per computer digitali. Il modello prende il nome dal matematico, fisco ed informatico
John Von Neumann. Lo schema in questione si basa su cinque elementi fondamentali:
CPU (Central Processing Unit)
unità di memoria
unità di input
unità di output
bus di sistema
1. UNITÀ DI MEMORIA
L’unità di memoria è l’elemento passivo del calcolatore, in quanto il suo compio è garantire la persistenza
dei dati e/o delle istruzioni dei programmi senza poterle elaborare. L’unità di memoria in questione è la
RAM (Random Access Memory, memoria ad accesso casuale, chiamata in questo modo per differenziarla
dalle memorie ad accesso sequenziale come i nastri magnetici). La memoria RAM è costituita da un insieme
di registri di uguale dimensione, ciascuno dei quali è identificato tramite un numero progressivo (indirizzo,
salvato in formato esadecimale); il numero di bit richiesto per poter salvare n registri (dunque per poter
rappresentare rispettivi n indirizzi) è dato dal log 2 n. La memoria è collegata al resto del sistema attraverso
un bus che prende il nome di memory bus. Su questo bus sono presenti tre gruppi di linee che consentono il
corretto funzionamento della memoria stessa:
linee indirizzi canale di comunicazione che trasporta le informazioni relative agli indirizzi di
memoria. Sulle memorie è presente un circuito di decodifica che riceve in ingresso il segnale del
bus indirizzi (segnale che proviene dal processore) e attiva la cella di memoria corrispondente
linee dati trasportano i bit relativi al valore contenuto nella determinata cella di memoria
linee controllo specifica quale operazione bisogna eseguire sulla specifica cella di memoria -
operazione di lettura o scrittura
Le memorie di un sistema possono essere classificate in base a due parametri: la capacità (quantità di
informazione che è possibile memorizzare – si misura in multipli del byte) e il tempo di accesso (il tempo
minimo che intercorre tra due operazioni di accesso in memoria – si misura in nanosecondi e dipende dalla
tecnologia di realizzazione della memoria). Capacità e tempo di accesso sono due parametri inversamente
proporzionali: all’aumentare della capacità diminuisce il tempo di accesso. Per risolvere questo problema, la
memoria all’interno di un calcolatore è organizzata attraverso un sistema gerarchico che consente di
individuare diversi tipi di memorie. Man mano che ci avviciniamo al processore, la dimensione di queste
memorie diminuisce (dunque aumenta la velocità intesa come tempo di accesso); dal processore verso
l’esterno distinguiamo cache di primo livello (saldata sulla piastra della CPU), cache di secondo livello
(SRAM, S=static) e memoria principale (DRAM, D=dynamic in quanto la RAM effettua delle operazioni
cicliche di refresh per salvaguardare l’integrità dell’informazione). La presenza delle cache, memorie di
piccola dimensione, è dovuta al principio della località del riferimento: “i dati più usati di recente saranno
utilizzati ancora nel prossimo futuro”, dunque vanno salvati nelle memorie cache, vicine alla CPU, per
migliorare le prestazioni.
2. CPU
CPU è acronimo di Central Processing Unit ed è l’unità del calcolatore che si occupa di sovraintendere alle
funzionalità logiche e di elaborazione del computer (è quindi un elemento attivo del calcolatore). La CPU è
formata da tre unità fondamentali saldate su una piastra: unità di controllo (CU), unità logico-aritmetica
(ALU, con relativi circuiti sommatori, sottrattori e moltiplicatori) e i registri. A loro volta i registri si
dividono in generali (vengono utilizzati per salvare operandi in maniera temporanea) e speciali (non
accessibili); rientrano in quest’ultima famiglia il PC (Program Counter, che contiene l’indirizzo di memoria
dell’istruzione da eseguire – si aggiorna dopo la fase di fetch), il MAR (Memory Address Register, collega la
CPU con le linee indirizzi del bus di memoria), il MDR (Memory Data Register, collega la CPU con le linee
dati del bus) e l’IR (Instruction Register, contiene il codice operativo necesario a completare l’istruzione).
La CPU è inoltre dotata di una serie di microistruzioni native (instruction set) e di una serie di clock il cui
scopo è quello di scandire gli istanti temporali, temporizzando le operazioni e dunque consentendo il corretto
funzionamento dell’unità stessa. La frequenza di una CPU sta ad indicare proprio la frequenza dei clock,
quindi delle operazioni che l’unità può eseguire ogni secondo. La CPU, inoltre, è in grado di organizzare le
operazioni da svolgere in un algoritmo di istruzioni che viene eseguito ciclicamente per garantire il corretto
funzionamento del programma. Le fasi dell’algoritmo sono 5:
fetch il sistema operativo carica nella CPU l’istruzione da eseguire
decode grazie al set di microistruzioni, la CPU attiva i circuiti necessari per svolgere le
istruzioni caricate
operand assembly gli operandi vengono “assemblati”, cioè vengono caricati nei registri della
CPU per eseguire le istruzioni
execute vengono svolte le istruzioni
store i valori ottenuti vengono “stoccati” nei registri prima di essere trasferiti in memoria
3. BUS
Il bus è un canale di comunicazione che consente alle periferiche (e più in generale a tutte le componenti
hardware) di interfacciarsi tra di loro, scambiando informazioni di vario tipo. Il bus è formato da un insieme
di linee in cui viaggiano i dati; tali linee si suddividono in linee indirizzi, linee dati e linee controllo. Dal
momento che il bus è utilizzabile per eseguire una sola comunicazione alla volta, è necessario che il flusso di
informazioni venga controllato al fine di non incombere in errori. La responsabilità di questo controllo è
affidata al master, che avvia la comunicazione, controlla il bus e attiva lo slave, colui che riceve il flusso di
dati.