vuoi
o PayPal
tutte le volte che vuoi
F O N D A M E N T I D I I N F O R M A T I C A 1
Architettura della macchina di Von Neumann
La macchina di Von Neumann si basa su cinque componenti fondamentali:
CPU (Central Processing Unit): il suo compito è quello di eseguire le istruzioni di un
• programma presente in memoria centrale o primaria (RAM) dopo averlo prelevato dalla
memoria secondaria o di massa, dalla ROM, o da altri dispositivi. Durante l'esecuzione del
programma la CPU legge o scrive dati in memoria centrale. Il risultato dell'esecuzione
dipende dal dato su cui si opera e dallo stato interno in cui la CPU stessa si trova, e può
mantenere la traccia delle operazioni passate.
RAM (Random Access Memory): detta anche memoria centrale, è una tipologia di
• memoria informatica caratterizzata dal permettere l'accesso diretto a qualunque indirizzo
di memoria con lo stesso tempo di accesso.
ROM (Read Only Memory): tipologia di memoria informatica non volatile.
• Unità di input: tramite la quale i dati vengono inseriti nel calcolatore per essere elaborati.
• Unità di output: necessaria affinché i dati elaborati possano essere restituiti all'operatore
• Bus: canale di comunicazione che permette ai componenti di un sistema di dialogare tra
• loro scambiandosi informazioni o dati di sistema attraverso la trasmissione di segnali. Si
External Data Bus, External Address Bus, External Control Bus.
suddivide in
Struttura della CPU
Una generica CPU (Central Processing Unit) contiene:
Unità di controllo (CU): legge dalla memoria centrale (RAM) le istruzioni, se occorre legge
• anche i dati per l'istruzione letta, esegue l'istruzione e memorizza il risultato se c'è,
scrivendolo in memoria o in un registro della CPU. La frequenza con cui vengono eseguiti i
clock:
cicli di esecuzione è scandita da una componente detta ad ogni impulso di clock la
CU esegue un ciclo di esecuzione di istruzioni macchina. La velocità di elaborazione di un
processore dipende quindi dalla frequenza del suo clock (espressa in Hz).
Unità aritmetica e logica (ALU): si occupa di eseguire le operazioni logiche e aritmetiche.
• Stack: area di memoria dove la CPU può salvare momentaneamente e poi recuperare dati
• LIFO
di varia natura (generalmente risiede nella RAM collegata alla CPU). Segue la logica
(Last In First Out), ossia l'ultimo valore introdotto è il primo ad uscire.
Bus dati interno (Internal Data Bus): usato per il trasferimento dei dati fra i componenti
• Data Bus,
interni della CPU (non deve essere confuso con il che invece collegano la CPU
con le altre parti della macchina).
Bus indirizzi interno (Internal Address Bus): usato per il trasferimento dei dati fra i
• Bus,
registri interni della CPU (non deve essere confuso con l'Address che invece collega la
CPU con le altre parti della macchina).
Registri: speciali locazioni di memoria interne alla CPU, molto veloci, a cui è possibile
• accedere molto più rapidamente che alla memoria: il valore complessivo di tutti i registri
della CPU costituisce lo stato in cui essa si trova. I registri più importanti sono:
Program Counter (PC): contiene l'indirizzo in memoria della prossima istruzione
• da eseguire.
Instruction Register (IR): contiene il codice operativo dell'istruzione che deve
• fetch,
essere eseguita. Caricato durante la fase di tale registro mantiene il codice
decode,
dell'istruzione durante le fasi successive di esecuzione, ovvero la fase di in
execute,
cui l'istruzione viene decodificata, e di durante la quale vengono eseguite le
operazioni specificate dall'istruzione.
Memory Address Register (MAR): registro della CPU in grado di contenere
• l'indirizzo della locazione della cella di memoria RAM la quale contiene il dato o
l'informazione da leggere o da scrivere. È connesso al bus degli indirizzi.
Memory Buffer Register (MBR): contiene il dato da scrivere o letto durante
• un'operazione di accesso alla memoria. In altri termini contiene il dato puntato
dall'indirizzo contenuto nel MAR. È connesso al bus dati.
Accumulatore (Accumulator): un registro il cui funzionamento è strettamente
• legato a quello della ALU. Quasi tutte le operazioni logico-aritmetiche svolte dalla
ALU coinvolgono l'utilizzo dell'accumulatore.
Stack Pointer (SP): contiene l'indirizzo della locazione di memoria occupata dalla
• push,
cima (top) dello stack per permetterne le operazioni di che lo incrementerà, e
pop,
di che farà l'inverso, e più in generale per permettere le operazioni che
LIFO (Last In First Out)
implicano l'uso dello stack che seguono la logica ovvero che
l'ultimo elemento entrante sarà il primo ad uscire.
Registro dei flag (F): questo registro non contiene valori numerici convenzionali,
• ma è piuttosto un insieme di bit, detti appunto flag, che segnalano stati particolari
della CPU e alcune informazioni sul risultato dell'ultima operazione eseguita. I flag
più importanti sono:
Flag di stato:
• Overflow (W): indica se il risultato dell'operazione precedente era
• troppo grande per il campo: 0 assenza di overflow, 1 overflow
Zero (Z): vale 1 se l'ultima operazione ha avuto risultato zero,
• altrimenti vale 0.
Carry (C): vale 1 se l'ultima operazione ha ecceduto la capacità del
• registro che contiene il risultato, altrimenti vale 0 (esempio: in un
registro a 8 bit, che può rappresentare solo numeri da 0 a 255, la
somma 178+250 darebbe come risultato 172, cioè 428 - 256, e il
carry verrebbe posto a 1 insieme al flag di overflow).
Segno (N): indica il segno del risultato dell'operazione precedente: 0
• risultato positivo, 1 risultato negativo
Flag di controllo:
• Interrupt: se a questo flag viene assegnato valore 1, la CPU smette di
• rispondere alle richieste di servizio esterne delle periferiche (i segnali
delle linee IRQ) finché non viene ripristinato al valore 0, o finché non
arriva dall'esterno un segnale di RESET.
Ciclo di esecuzione di un'istruzione
Tipicamente la CPU è l'interprete del linguaggio macchina, e si basa sul seguente ciclo:
Acquisizione dell'istruzione (Instruction Fetch): il processore preleva l'istruzione
• dalla memoria centrale (RAM), presente nell'indirizzo (tipicamente logico) specificato da
un registro speciale, il Program Counter (PC).
Decodifica (Operand Assembly): word
una volta che la è stata prelevata, viene
• determinata quale operazione debba essere eseguita e come ottenere gli operandi, in
base ad una funzione il cui dominio è costituito dai codici operativi (tipicamente i bit alti
delle word) ed il codominio consiste nei brani di microprogramma da eseguire.
Esecuzione (Execute): viene eseguita la computazione desiderata. Nell'ultimo passo
• dell'esecuzione viene incrementato il PC: tipicamente di uno se l'istruzione non era un
salto condizionale, altrimenti l'incremento dipende dall'istruzione e dall'esito di questa.
Più dettagliatamente il ciclo di esecuzione di un'istruzione può essere così descritto:
1. La CPU invia sul bus indirizzi l'indirizzo della successiva istruzione da eseguire.
2. La CPU invia alla memoria un comando di richiesta di accesso in memoria.
3. La CPU attende l'arrivo sul bus dati del codice operativo dell'istruzione prelevata dalla
memoria.
4. La CPU decodifica l'istruzione.
5. La CPU esegue l'istruzione.
6. L'esecuzione continua al punto 1. prelievo
Le operazioni 1, 2 e 3 costituiscono la cosiddetta fase di (fetch) dell'istruzione, la fase 4 è
decodifica esecuzione
detta di e la fase 5 è detta di (execute). La fase di fetch viene ripetuta allo
stesso modo per tutte le istruzioni del programma, mentre ovviamentele fasi di esecuzione e di
decodifica variano da un'istruzione all'altra. Esaminiamo ora nel dettaglio.
Fase di fetch
• La fase di fetch (o di prelievo) è la prima parte di un ciclo di istruzione e, come suggerisce il
nome, effettua il prelievo di un'istruzione dalla memoria.
L'indirizzo dell'istruzione contenuto nel Program Counter (PC) viene copiato nel MAR e poi
inviato attraverso l'External Address Bus alla memoria. Contemporaneamente la CPU invia
READ
alla memoria un segnale di sull'External Control Bus, per indicare l'intenzione di
leggere il contenuto di una parola di memoria.
Dopo un tempo di ritardo (variabile da pochi ns a 1 µs), la memoria decodifica l'indirizzo
ricevuto e deposita sull'External Data Bus il contenuto della locazione di memoria
richiesta dalla CPU. A questo punto la CPU può leggere il contenuto del bus dati e copiarlo