Fondamenti di Informatica
Architettura di Von Neumann
Architettura di Von Neumann:
l’Unità di Elaborazione
L’Unità di Elaborazione
•
L’unità di elaborazione (CPU) contiene gli elementi
circuitali che regolano il funzionamento dell’elaboratore.
•
Funzione della CPU:
•
Eseguire i programmi contenuti nella memoria centrale
prelevando, decodificando ed eseguendo una dopo l’altra
le istruzioni che li costituiscono
L’Unità di Elaborazione:
principali elementi circuitali
✓
Orologio di sistema (Clock)
✓
Unità aritmetico-logica (ALU)
✓
Registri (R)
La CPU: Clock – 1/2
•
La CPU è un dispositivo sincrono
•
Viene regolato da un “orologio” (o clock)
•
Sincronizza le operazioni rispetto ad una data frequenza: le varie
attività della CPU hanno inizio in corrispondenza di tempi ben
precisi stabiliti del clock (impulsi di clock)
•
Stabilisce quante istruzioni al secondo possono essere eseguite
dalla CPU
•
Una CPU attuale lavora a N GHz
•
Segue un ritmo di N miliardi di impulsi al secondo
• Ad esempio: una CPU che lavora 3 GHz riceve 3 miliardi di impulsi al secondo
La CPU: Clock – 2/2
•
La frequenza di clock determina la velocità di elaborazione
del computer
•
Più alta è la frequenza di clock, maggiore è la velocità di elaborazione
❖
La velocità e la potenza di un computer dipendono anche
dalla larghezza del bus
•
Quantità di "dati" che il processore è in grado di ricevere ed
elaborare simultaneamente (dimensione dei registri: tipicamente 32
o 64 bit → «architetture a 32 o 64 bit»)
Schema logico della CPU
ALU CU Registri PC IRCPU
• Unità Aritmetico-Logica (ALU)
•
La ALU (Arithmetic-Logic Unit), detta anche Unità Aritmetico-Logica, si
occupa di eseguire operazioni aritmetiche e logiche su 2 operandi
•
Oltre al risultato dell’operazione stessa, la ALU può produrre ulteriori
informazioni (segnali di stato)
A L U R e sult a
b
A L U op eration
La CPU: ALU
CPU e Linguaggio Macchina
• Unità Aritmetico-Logica (ALU)
• Registri
•
I registri sono dispositivi di memorizzazione che consentono un
accesso molto veloce ai dati contenuti
• Hanno dimensioni prefissate
•
Alcuni registri hanno funzioni specifiche
La CPU: Registri
•
I registri sono dispositivi di memorizzazione che consentono un
accesso molto veloce ai dati contenuti
• Hanno dimensioni prefissate
•
Alcuni registri hanno funzioni specifiche
• Il registro PC (Program Counter) → individua (tramite indirizzo) la prossima
istruzione da eseguire
•
I registri sono dispositivi di memorizzazione che consentono un
accesso molto veloce ai dati contenuti
• Hanno dimensioni prefissate
•
Alcuni registri hanno funzioni specifiche
• Il registro PC (Program Counter) → individua (tramite indirizzo) la prossima
istruzione da eseguire
• Il registro IR (Instruction Register) → contiene l’istruzione da eseguire
La CPU: Registri
•
I registri sono dispositivi di memorizzazione che consentono un
accesso molto veloce ai dati contenuti
• Hanno dimensioni prefissate
•
Alcuni registri hanno funzioni specifiche
• Il registro PC (Program Counter) → individua (tramite indirizzo) la prossima
istruzione da eseguire
• Il registro IR (Instruction Register) → contiene l’istruzione da eseguire
La CPU: Registri
•
Lo
stato della CPU
è rappresentato dalle informazioni
memorizzate negli opportuni registri
•
Dati da elaborare
•
Contenuti nei Registri Dati (DR)
•
Istruzione da eseguire
•
Contenuta nel registro IR (Instruction Register)
•
Indirizzo in memoria della prossima istruzione da eseguire
•
Contenuto nel registro PC (Program Counter)
•
Eventuali anomalie o eventi verificatisi durante l’elaborazione
•
Contenuti nei Registri di Stato o flag
La CPU: Registri
Approfondimento: Registro
indirizzi vs Registro dati – 1/4
•
Ciascuna cella di memoria può essere indirizzata:
•
capacità di un elaboratore di selezionare una particolare cella
di memoria.
•
L’indirizzo di una cella di memoria è semplicemente la sua
posizione relativa (o numero d’ordine) rispetto alla prima cella
di memoria, cui viene normalmente attribuita la posizione
zero.
•
L’indirizzamento della memoria avviene tramite registri di
indirizzi che si trovano nell’unità di elaborazione.
Approfondimento: Registro
indirizzi vs Registro dati – 2/4
•
N.B. Se il registro indirizzi ha k bit, si possono
indirizzare fino a 2^k celle di memoria, i cui indirizzi
varieranno fra 0 e 2^k-1.
•
Es.: se il registro indirizzi è lungo 10 bit, vengono
indirizzate 2^10 = 1024 celle.
Approfondimento: Registro
indirizzi vs Registro dati – 3/4
•
Le operazioni di lettura dalla memoria e la scrittura in
memoria utilizzano registri di dati.
•
L’operazione di lettura provoca la copia del contenuto
della cella di memoria nel registro dati: essa carica (in
inglese, Load) il registro dati in una cella di memoria.
•
L’operazione di scrittura copia il contenuto del registro
dati in una cella di memoria: essa deposita (in inglese,
Store) il contenuto del registro dati in una parola di
memoria.
•
N.B. Un registro dati è lungo come una parola di
memoria.
Approfondimento: Registro
indirizzi vs Registro dati – 4/4
✓
Registro dati (lungo h bit);
✓
Registro indirizzi (lungo k bit);
→ Memoria con 2^k celle (ciascuna di h bit)
• Unità Aritmetico-Logica (ALU)
• Registri
• Unità di Controllo (CU)
•
Il coordinamento tra le varie parti del calcolatore è svolto dall’unità di
controllo (CU)
• È una componente dell’unità centrale di elaborazione
• Ogni componente del calcolatore esegue solo le azioni che gli vengono richieste dall’unità di controllo
•
Il controllo consiste nel coordinamento dell’esecuzione temporale delle
operazioni
• Sia internamente alla CPU sia negli altri elementi funzionali
La CPU: Unità di Controllo
Istruzioni Base della CPU – 1/2
1.
Istruzioni di base eseguite dalla ALU
•
Somma (da cui sottrazione)
•
Scorrimento (shift)
•
Operazioni logiche
•
Operazioni di confronto
Tramite le operazioni di somma e shift è possibile ricavare le operazioni di
Istruzioni Base della CPU – 2/2
2.
Operazioni di accesso alla memoria (non
eseguite dalla ALU)
•
Trasferimento di un dato da una locazione di memoria ad
un’altra
•
Trasferimento da
•
Memoria → Registro della CPU
•
Registro della CPU → Memoria
Dati e Istruzioni in Memoria Centrale
Esecuzione dei programmi
Per essere eseguito dalla macchina di Von Neumann,
un programma, che è costituito da una sequenza di
istruzioni e dai dati, deve essere presente nella
memoria centrale, in forma di sequenze di bit allocate
in parole successive di memoria.
Per esempio, supponendo che il caricamento avvenga a
partire dalla locazione di indirizzo 0:
0 010000000010000 1 010000000010001 2 010000000010010 3 010000000010011 4 000000000010000 ……… ……… 15 110100000000000 halt 16 000000000010001 17 000000000010010 18 000000000010000 ……… ………
La parte istruzioni e la parte dati sono nell’esempio
Istruzioni
Dati Memoria
Dati e Istruzioni
•
Dati e istruzioni di un programma sono codificati in
forma binaria, cioè mediante sequenze finite di bit
•
Un’istruzione codificata si compone di due parti
•
Codice Operativo (CO)
•
Uno o più operandi (Op. i)
E. Ardizzone & I. Infantino - Appunti per il corso di Fondamenti di Informatica 5
Dati e istruzioni di programma sono codificate in
forma binaria, cioè mediante sequenze finite di bit.
Una istruzione codificata si compone di due parti: il
codice oper ativo e uno o più oper andi:
Funzionamento della macchina di
Von Neumann
CO
Op. 1
Op. n
Il codice operativo specifica, secondo una convenzione
dipendente dalla specifica macchina, l’istruzione da
eseguire. Per ogni macchina esistono tanti codici
operativi differenti quante sono le istruzioni presenti
nell’insieme (set) delle istruzioni che la macchina è in
grado di interpretare ed eseguire.
Gli operandi contengono, ancora in una forma codificata
dipendente dalla specifica macchina, le informazioni
necessarie a reperire i dati sui quali l’istruzione deve
operare.
Il linguaggio macchina è quindi strettamente legato alla
architettura della macchina.
Istruzione →
Dati e Istruzioni
•
Dati e istruzioni di un programma sono codificati in
forma binaria, cioè mediante sequenze finite di bit
•
Un’istruzione codificata si compone di due parti
•
Codice Operativo (CO)
•
Uno o più operandi (Op. i)
Dati e istruzioni di programma sono codificate in
forma binaria, cioè mediante sequenze finite di bit.
Una istruzione codificata si compone di due parti: il
codice oper ativo e uno o più oper andi:
Funzionamento della macchina di
Von Neumann
CO
Op. 1
Op. n
Il codice operativo specifica, secondo una convenzione
dipendente dalla specifica macchina, l’istruzione da
eseguire. Per ogni macchina esistono tanti codici
operativi differenti quante sono le istruzioni presenti
nell’insieme (set) delle istruzioni che la macchina è in
grado di interpretare ed eseguire.
Gli operandi contengono, ancora in una forma codificata
dipendente dalla specifica macchina, le informazioni
necessarie a reperire i dati sui quali l’istruzione deve
operare.
Il codice operativo specifica l’istruzione da eseguire.
In ogni architettura è definito un certo insieme di
istruzioni (set di istruzioni) con gli associati CO.
Istruzione →
Dati e Istruzioni
•
Dati e istruzioni di un programma sono codificati in
forma binaria, cioè mediante sequenze finite di bit
•
Un’istruzione codificata si compone di due parti
•
Codice Operativo (CO)
•
Uno o più operandi (Op. i)
E. Ardizzone & I. Infantino - Appunti per il corso di Fondamenti di Informatica 5
Dati e istruzioni di programma sono codificate in
forma binaria, cioè mediante sequenze finite di bit.
Una istruzione codificata si compone di due parti: il
codice oper ativo e uno o più oper andi:
Funzionamento della macchina di
Von Neumann
CO
Op. 1
Op. n
Il codice operativo specifica, secondo una convenzione
dipendente dalla specifica macchina, l’istruzione da
eseguire. Per ogni macchina esistono tanti codici
operativi differenti quante sono le istruzioni presenti
nell’insieme (set) delle istruzioni che la macchina è in
grado di interpretare ed eseguire.
Gli operandi contengono, ancora in una forma codificata
dipendente dalla specifica macchina, le informazioni
necessarie a reperire i dati sui quali l’istruzione deve
operare.
Il linguaggio macchina è quindi strettamente legato alla
architettura della macchina.
Gli operandi contengono le informazioni
necessarie a reperire i dati sui quali
l’istruzione deve operare.
CPU e Linguaggio Macchina
Dati e Istruzioni
•
Dati e istruzioni di un programma sono codificati in
forma binaria, cioè mediante sequenze finite di bit
•
Un’istruzione codificata si compone di due parti
•
Codice Operativo (CO)
•
Uno o più operandi (Op. i)
Dati e istruzioni di programma sono codificate in
forma binaria, cioè mediante sequenze finite di bit.
Una istruzione codificata si compone di due parti: il
codice oper ativo e uno o più oper andi:
Funzionamento della macchina di
Von Neumann
CO
Op. 1
Op. n
Il codice operativo specifica, secondo una convenzione
dipendente dalla specifica macchina, l’istruzione da
eseguire. Per ogni macchina esistono tanti codici
operativi differenti quante sono le istruzioni presenti
nell’insieme (set) delle istruzioni che la macchina è in
grado di interpretare ed eseguire.
Gli operandi contengono, ancora in una forma codificata
dipendente dalla specifica macchina, le informazioni
necessarie a reperire i dati sui quali l’istruzione deve
operare.
Un’istruzione è strettamente legata
all’architettura della macchina.
CPU e Linguaggio Macchina
Linguaggio (o Codice) Macchina
•
Definizione
• Insieme di istruzioni eseguite direttamente dalla CPU
•
Ogni istruzione svolge un compito specifico
•
Istruzioni piuttosto rudimentali, codificate in binario
• Il numero di operandi è limitato (in genere non più di due)
• Il numero di operazioni previste è ridotto
• Ogni tipo di processore è in grado di eseguire un numero limitato di istruzioni
•
Combinando in modo diverso sequenze anche molto lunghe di
istruzioni (i programmi) si può istruire l’elaboratore a fare
tantissime cose, anche completamente diverse tra loro
Il Linguaggio Macchina
•
Un programma in esecuzione risiede nella memoria
centrale
•
È rappresentato da una serie di numeri binari che codificano le
istruzioni eseguibili dalla CPU
•
Osservando esclusivamente il contenuto della memoria, il
programma non è distinguibile dai dati
•
Le istruzioni sono individuate dai valori assunti dal registro PC
00000000101000010000000000011000 00000000100011100001100000100001 10001100011000100000000000000000 10001100111100100000000000000100 10101100111100100000000000000000 PC
Il Set di Istruzioni Macchina
•
L’insieme delle istruzioni eseguibili e la relativa codifica
sono generalmente diverse per modelli diversi di processore
•
Le categorie di istruzioni normalmente disponibili sono
•
Trasferimento dati
• Spostano dati tra registri, memoria principale e dispositivi di ingresso/uscita (I/O)
•
Aritmetico-logiche
• Eseguono i calcoli nella ALU
•
Salti (condizionati e incondizionati)
• Prendono decisioni e alterano la normale esecuzione sequenziale delle istruzioni
Esempio di Programma
in Linguaggio Macchina
0100000000010000 leggi un valore in ingresso e ponilo nella cella numero 16 (variabile x) 0100000000010001 leggi un valore e ponilo nella cella numero 17 (variabile y)
0100000000010010 leggi un valore e ponilo nella cella numero 18 (variabile z) 0100000000010011 leggi un valore e ponilo nella cella numero 19 (variabile r) 0000000000010000 carica il registro A con il contenuto della cella 16
0001000000010001 carica il registro B con il contenuto della cella 17 0110000000000000 somma i contenuti dei dei registri A e B
0010000000010100 copia il contenuto del registro A nella cella 20 (risultato, variabile s) 0000000000010010 carica il registro A con il contenuto della cella 18
0001000000010011 carica il registro B con il contenuto della cella 19 0110000000000000 somma i contenuti dei registi A e B
0001000000010100 carica il registro B con il contenuto della cella 20 1000000000000000 moltiplica i contenuti dei registri A e B
0010000000010100 copia il contenuto del registro A nella cella numero 20 0101000000010100 scrivi in output il contenuto della cella numero 20 1101000000000000 arresta l’esecuzione (HALT)
Approfondimento: Assembler
•
Per facilitare la programmazione è stato definito il linguaggio Assembly
•
L’assembly impiega una notazione simbolica che è in stretta relazione
con i codici in linguaggio macchina
•
Il programma scritto in assembly è convertito automaticamente in
linguaggio macchina per mezzo del programma traduttore, detto
Assembler
LOAD R1, MEM1 CMP R1, R2 BREQ RISZERO STORE R1, MEM1 RISZERO: LOAD R2, MEM2 Assembler 10001000110110101101010101010100 01001000100100000000000000000000 11000000000000000000000000001000 10011000110110101101010101010100 10001001010110101101001000001100 OPCODE (LOAD) registro indirizzo di memoriaApprofondimento: Assembler
vs Linguaggi di Alto Livello
•
Il programma in Assembly…
LOAD REG1, a
LOAD REG2, b
ADD REG1, REG2
LOAD REG3, c
LOAD REG4, d
ADD REG3, REG4
MULT REG1, REG3
e=(a+b)(c+d);
…corrisponde all’unica
istruzione MATLAB
Come si Eseguono i Programmi?
❖
Programma: sequenza di istruzioni da eseguire per ottenere la
soluzione ad una data classe di problemi
•
Il processore esegue ciascuna istruzione mediante la
seguente sequenza di operazioni, detta ciclo di istruzione o
ciclo macchina
1.
Estrazione di un’istruzione:
fase di fetch
2.
Interpretazione di un’istruzione:
fase di decode
3.
Esecuzione dell’istruzione:
fase di execute
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
CU IR P C Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 011100…010101 110100…010111
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
CU IR P C Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 011100…010101 110100…010111 NOTA
Schema logico del sottoinsieme della CPU
coinvolto nel ciclo Fetch-Decode-Execute
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
CU IR 0 0 0 … 0 0 0 Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 011100…010101 110100…010111
CPU e Linguaggio Macchina
Indirizzi: 000…000 000…001 000…010 P C
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
CU IR Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU PC → Registro Program Counter 010110…010001 011100…010101 110100…010111 P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).
Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
CU IR Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 011100…010101 110100…010111
CPU e Linguaggio Macchina
P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).
Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
CU IR Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 Il PC individua l’Istruzione 1 (contiene l’indirizzo dell’Istruzione 1) 011100…010101 110100…010111 P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
CU IR Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 011100…010101 110100…010111
CPU e Linguaggio Macchina
P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
CU IR Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 011100…010101 110100…010111 P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
CU IR Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 011100…010101 110100…010111
CPU e Linguaggio Macchina
Utilizziamo il BUS P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
CU IR Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 011100…010101 110100…010111 P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
CU IR Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 011100…010101 110100…010111
CPU e Linguaggio Macchina
P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).
Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
CU IR Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 011100…010101 110100…010111 P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).
Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
CU IR Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 011100…010101 110100…010111
CPU e Linguaggio Macchina
P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).
Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
CU IR Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 011100…010101 110100…010111 P C Indirizzi: 000…000 000…001 000…010
Utilizziamo ancora il BUS
0 0 0 … 0 0 0
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).
Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
CU IR Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 011100…010101 110100…010111
CPU e Linguaggio Macchina
P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).
Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
CU Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 010110…010001 IR 011100…010101 110100…010111 P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).
Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
CU Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 010110…010001 IR 011100…010101 110100…010111
CPU e Linguaggio Macchina
P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0
Adesso l’IR conterrà l’Istruzione 1
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).
Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
CU Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 010110…010001 IR 011100…010101 110100…010111 P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).
Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
CU Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 010110…010001 IR 011100…010101 110100…010111
CPU e Linguaggio Macchina
P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).
Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
CU Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 010110…010001 IR 011100…010101 110100…010111 Il PC individuava l’Istruzione 1 P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).
Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
CU Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 010110…010001 IR 011100…010101 110100…010111 Il PC verrà incrementato e punterà all’Istruzione 2
CPU e Linguaggio Macchina
P C Indirizzi: 000…000 000…001 000…010
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).
Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
CU Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 010110…010001 IR 011100…010101 110100…010111 P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 1
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).
Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
CU Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 010110…010001 IR 011100…010101 110100…010111
▪ Il PC individua la prossima istruzione da eseguire (ovvero, l’indirizzo dell’Istruzione 2)
CPU e Linguaggio Macchina
P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 1
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).
Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
CU Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 010110…010001 IR 011100…010101 110100…010111
▪ Il PC individua la prossima istruzione da eseguire (ovvero, l’indirizzo dell’Istruzione 2)
▪ L’IR contiene l’istruzione da eseguire (ovvero, l’Istruzione 1)
P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 1
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
FASE DI FETCH
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).
Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).
Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
2. Determina il tipo di istruzione da eseguire
L’istruzione da eseguire si trova nel registro IR
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).
Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
2. Determina il tipo di istruzione da eseguire
• Se l’istruzione usa dati presenti in memoria, determinane la posizione
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).
Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
2. Determina il tipo di istruzione da eseguire (decode)
• Se l’istruzione usa dati presenti in memoria, determinane la posizione
• Carica tali dati nei registri della CPU
FASE DI DECODE
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).
Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
2. Determina il tipo di istruzione da eseguire (decode)
• Se l’istruzione usa dati presenti in memoria, determinane la posizione
• Carica tali dati nei registri della CPU
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).
Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
2. Determina il tipo di istruzione da eseguire (decode)
• Se l’istruzione usa dati presenti in memoria, determinane la posizione
• Carica tali dati nei registri della CPU
3. Esegui l’istruzione (execute)
FASE DI EXECUTE
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
2. Determina il tipo di istruzione da eseguire (decode)
• Se l’istruzione usa dati presenti in memoria, determinane la posizione
• Carica tali dati nei registri della CPU
3. Esegui l’istruzione (execute)
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
2. Determina il tipo di istruzione da eseguire (decode)
• Se l’istruzione usa dati presenti in memoria, determinane la posizione
• Carica tali dati nei registri della CPU
3. Esegui l’istruzione (execute)
4. Torna al punto1. ed inizia ad elaborare l’istruzione successiva
Ciclo Fetch-Decode-Execute – 2/2
•
La CPU esegue solo
istruzioni codificate
in
linguaggio macchina
,
mediante il
ciclo Fetch-Decode-Execute
1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)
2. Determina il tipo di istruzione da eseguire (decode)
• Se l’istruzione usa dati presenti in memoria, determinane la posizione
• Carica tali dati nei registri della CPU
3. Esegui l’istruzione (execute)
4. Torna al punto1. ed inizia ad elaborare l’istruzione successiva
Mediante il passo 4., i passi precedenti vengono eseguiti ciclicamente (ciclo Fetch-Decode-Execute)