dispensa n.2

Transcript

dispensa n.2
Andrea Prevete, 2009
Il modello Von Neumann
MEMORY
MAR
MDR
INPUT
OUTPUT
Keyboard
Mouse
Scanner
Disk
Monitor
Printer
LED
Disk
PROCESSING UNIT
ALU
TEMP
CONTROL UNIT
PC
IR
1
Andrea Prevete, 2009
Memoria
Un array di 2k x m bit
INDIRIZZI
• unici (k-bit) per identificare la posizione
dei contenuti
CONTENUTI
• Parole di m-bit memorizzate ad un certo
indirizzo
OPERAZIONI DI BASE:
LOAD
• legge un dato memorizzato in una
locazione di memoria
STORE
• memorizza un dato in una locazione di
memoria
0000
0001
0010
0011
0100
0101
0110
00101101
•
•
•
1101
1110
1111
10100010
2
Andrea Prevete, 2009
INTERFACCE PER LA MEMORIA
Come vengono gestiti i dati da e per la
memoria?
MAR: Memory Address Register
MDR: Memory Data Register
Per LOAD da una locazione (A):
1. Write l’indirizzo (A) nel MAR.
2. Send un segnale “read” alla memoria.
3. Read il dato dal MDR.
MEMORY
MAR
MDR
Per STORE a dato (X) in una locazione (A):
1. Write il dato (X) nel MDR.
2. Write l’indirizzo (A) nel MAR.
3. Send a signal “write” alla memoria.
3
Andrea Prevete, 2009
Unità di Processo
Unità operative
• ALU = Arithmetic and Logic Unit
• Puo’ avere molte sottounità.
Alcune special-purpose
(multiply, square root, …).
Registri
• Memorizzazione temporanea di dati
• Operandi e risultati delle unità
operative
PROCESSING UNIT
ALU
TEMP
Dimensione della Parola (Word
Size)
• Il numero di bit normalmente
processato dalla ALU nel corso di
un’istruzione
• Corrisponde all’ampiezza dei registri
4
Andrea Prevete, 2009
Input and Output
Dispositivi per effettuare l’ingresso o
l’uscita di dati dalla memoria
Ogni dispositivo ha la sua propria
interfaccia,
usualmente un set di registri
come MAR e MDR per la memoria
INPUT
OUTPUT
Keyboard
Mouse
Scanner
Disk
Monitor
Printer
LED
Disk
Qualche dispositivo può essere
considerato sia d’input che d’output
• disk, network
Un programma che gestisce l’accesso
ad un dispositivo è usualmente detto
un driver.
5
Andrea Prevete, 2009
Unità di Controllo
CONTROL UNIT
PC
IR
Dirige l’esecuzione di un programma, così come un
Direttore l’Orchestra!
L’ Instruction Register (IR) contiene l’istruzione corrente.
Il Program Counter (PC) contiene l’indirizzo della
prossima istruzione da eseguire.
L’Unità di Controllo:
• Legge un’istruzione dalla memoria all’indirizzo contenuto da
• Interpreta l’istruzione generando la sequenza di segnali atta a
pilotare gli altri componenti
(un’ istruzione può richiedere vari cicli macchina per terminare!)
6
Andrea Prevete, 2009
Ciclo di Esecuzione di un’Istruzione
Carica l’istruzione dalla memoria
Decodifica l’istruzione
Valuta gli indirizzi
Carica gli operandi dalla memoria
Esegui l’operazione
Memorizza il risultato
7
Andrea Prevete, 2009
Le Istruzioni
Un’ istruzione è l’atomo della struttura operativa di un computer.
Essa è specificata da:
• Un opcode: l’operazione che deve essere eseguita
• Uno o più operandi : dati/indirizzi che devono essere utilizzati per
eseguire l’operazione
Un istruzione è codificata come una sequenza di bit.
(Esattamente come per i dati!)
• Spesso, ma non sempre, le istruzioni hanno una lunghezza
prefissata, per esempio 16 o 32 bit.
• L’Unità di Controllo interpreta, quindi
genera sequenze di segnali di controllo per generare le varie
operazioni.
• Un’operazione è eseguita completamente o per niente.
L’insieme delle istruzioni di un computer ed il loro formato
costituiscono il cosiddetto Instruction Set Architecture (ISA).
8
Andrea Prevete, 2009
ESEMPIO
In un ipotetico computer ad 8 registri (R0 – R7) le
istruzioni a 16 bit potrebbero avere il seguente formato:
“Addiziona il contenuto di R2 al contenuto of R6,
e immagazzina il risultato in R6.”
9
Andrea Prevete, 2009
Exampio: LDR
Vediamo un altro esempio:
“Addiziona il valore 6 al contenuto di R3 per formare
un indirizzo di memoria. Quindi carica il contenuto
di quell’indirizzo di memoria in R2.”
10
Andrea Prevete, 2009
FETCH
F
Carica la prossima istruzione (all’indirizzo
memorizzato nel PC)
dalla memoria
nel Registro Istruzioni (IR).
• Copia il contenuto del PC in MAR.
• Invia un segnale “read” alla memoria.
• Copia il contenuto di MDR in IR.
Quindi incrementa PC, così da farlo puntare
all’istruzione che segue.
• PC diventa PC+1.
D
EA
OP
EX
S
11
Andrea Prevete, 2009
DECODE
Identifica l’ opcode.
• Nel nostro esempio i primi 4 bit
dell’istruzione.
• Un decoder 4-to-16 attiva la linea di
controllo corrispondente all’opcode
identificato.
In base all’opcode identificato, restano
fissati gli operandi.
• Nel nostro esempio:
per LDR, gli ultimi 6 bit definiscono
l’offset
per ADD, gli ultimi 3 bit definiscono il
secondo operando
F
D
EA
OP
EX
S
12
Andrea Prevete, 2009
EVALUATE ADDRESS
F
Per le istruzioni che richiedono
accesso in memoria,
calcola l’indirizzo usato per
l’accesso.
Esempi:
• Addizionare l’offset al registro base (as
in LDR)
• Addizione l’offset al PC
D
EA
OP
EX
S
13
Andrea Prevete, 2009
FETCH OPERANDS
F
Vengono prelevati gli operandi
sorgente necessari all’esecuzione
dell’operazione.
Esempi:
• Carica i dati dalla memoria (LDR)
• Leggi i dati dal registro file (ADD)
D
EA
OP
EX
S
14
Andrea Prevete, 2009
EXECUTE
Viene eseguita l’operazione,
usando gli operandi sorgente.
Esempi:
• Vengono inviati gli operandi all’ ALU e
attivato il segnale ADD
• NOP (cioè, per istruzioni come load e
store)
F
D
EA
OP
EX
S
15
Andrea Prevete, 2009
STORE RESULT
I risultati vengono memorizzati a destinazione.
(un registro o la memoria)
F
D
Esempi:
• Il risultato di un ADD è memorizzato nel registro di
destinazione
• Il risultato di un MEMORY LOAD è memorizzato nel
registro destinazione
• Per istruzioni di tipo STORE, il dato è
immagazzinato im memoria
L’indirizzo è scritto in MAR, i dati in MDR
Quindi è attivato un segnale WRITE per la
memoria
EA
OP
EX
S
16
Andrea Prevete, 2009
CAMBIARE LA SEQUENZA DELLE ISTRUZIONI
Nella fase FETCH,
il Program Counter viene incrementato di 1.
Cosa fare nel caso in cui non si voglia far eseguire tutte
le istruzioni in sequenza?
Necessitiamo di istruzioni speciali che cambiano il
contenuto del PC.
Queste sono chiamate istruzioni di controllo.
• I jumps sono incondizionati – cambiano comunque in modo
predeterminato il PC
• I branches sono condizionati – cambiano il PC solo se una certa
condizione è verificata (ad esempio, il risultato di un ADD è 0)
17
Andrea Prevete, 2009
Esempio: Istruzione JMP
Memorizza nel PC il valore contenuto in registro. Questo
diventa l’indirizzo della prossima istruzione da prelevare
(FETCH).
“Load the contents of R3 into the PC.”
18
Andrea Prevete, 2009
RIASSUMENDO
Tre tipi di istruzioni di base:
• Istruzioni operative (ADD, AND, …)
• Istruzioni per spostare dati (LD, ST, …)
• Istruzioni di controllo (JMP, BRnz, …)
Sei fasi essenziali per l’esecuzione di un’istruzione:
F → D → EA → OP → EX → S
• Non tutte le istruzioni hanno bisogno delle sei fasi!
• Le fasi possono richiedere un numero variabile di cicli macchina
19
Andrea Prevete, 2009
Diagramma a stati dell’ Unità di Controllo
L’Unità di Controllo è una macchina a stati. Di seguito ne
riportiamo un diagramma semplificato:
20