Schema dell'architettura di von Neumann
Lo schema si basa su cinque componenti fondamentali:
All'interno dell'ALU è presente un registro detto accumulatore, che fa da buffer tra memoria e ALU grazie a una speciale istruzione che carica una parola dalla memoria all'accumulatore e viceversa.
È importante sottolineare che tale architettura, a differenza di altre, si distingue per la caratteristica di immagazzinare all'interno dell'unità di memoria, sia i dati dei programmi in esecuzione che il codice di questi ultimi.
Bisogna comunque precisare che questa è una schematizzazione molto sintetica, sebbene molto potente: basti pensare che i moderni computer di uso comune sono progettati secondo l'architettura Von Neumann.
Tipicamente la CPU è l'Interprete del linguaggio macchina. Il suo funzionamento si basa sul seguente ciclo, che si ripete ininterrottamente dall'accensione allo spegnimento:
Questa fase può impiegare anche diversi clock del processore, a seconda di quali dispositivi
vengono coinvolti.
Ad esempio, una operazione di salto richiede un solo clock per modificare il Program Counter.
Una operazione di calcolo richiede l'attivazione dell'ALU, che restituisce il risultato in un tempo prevedibile
a seconda della lunghezza dei dati coinvolti (operazione sincrona)
Una assegnazione richede più clock per trasferire i dati nei registri di accesso alla memoria
(anche questa è una operazione sincrona).
Le operazioni di I/O richiedono l'impiego di dispositivi esterni che possono essere più o meno veloci,
quindi il tempo di completamento dell'istruzione non è prevedibile (operazioni asincrone).
In genere il compito del processore è quello di spostare i dati da o nel buffer relativo alla periferica coinvolta.
La sincronizzazione delle operazioni viene effettuato tramite le interruzioni.
Le istruzioni di una CPU (instruction set) sono semplicemente dei numeri, detti opcode o codici operativi: in base al loro valore l'unità di controllo intraprende delle azioni predefinite, come per esempio leggere la successiva locazione di memoria per caricare un dato, oppure attivare la ALU per eseguire un calcolo, oppure scrivere il contenuto di un registro in una certa locazione di memoria o in un altro registro, oppure una combinazione di queste.
Spostamento dati MOV
Operazioni aritmetiche ADD, SUB, MUL, DIV
Operazioni di confronto CMP
Salto condizionato e incondizionato JMP
![]() |
![]() |
![]() |