Upload
dangkhue
View
217
Download
0
Embed Size (px)
Citation preview
1
S.U.N. – INGEGNERIA MECCANICA/AEROSPAZIALE
ELEMENTI DI PROGRAMMAZIONE, a.a. 2015/16
prof. Andrea Prevete
IL MODELLO
di
VON NEUMANN
2
NOTE STORICHEL’architettura a programma memorizzato (program-stored) è a tutt’oggi il riferimento concettuale per il progetto e la realizzazione dei computer.
Le idee che ne sono a fondamento si sviluppano subito dopo la seconda guerra mondiale grazie a studiosi/progettisti come
- Eckert e Mauchley (ENIAC, Electronic Numerival Integrator e Computer – EDVAC, Electronic Discrete Variable Automatic Computer)
- Wilkes (EDSAC, Electronic Delay Storage Automatic Calculator)
- von Neumann e Goldstine (IAS, presso l’ Institute of Advanced Study di Princeton).
La suddetta architettura è fondata essenzialmente su di una struttura di base data da cinque componenti (un’unità logico-aritmetica, una memoria, un’unità di controllo, un’unità di uscita, un’unità di ingresso) e sulla dematerializzazione delle istruzioni, non cablate ma codificate in memoria come i dati su cui operano.
La lucida formalizzazione di questi concetti da parte di J. von Neumann ha fatto sì che ci si riferisca spesso all’architettura program-stored come architettura di von Neumann.
3
Il modello di von Neumann
MEMORY
CONTROL UNIT
MAR MDR
IR
PROCESSING UNIT
ALU TEMP
PC
OUTPUT
Monitor
Printer
LED
Disk
INPUTKeyboard
Mouse
Scanner
Disk
4
LA MEMORIA
Possiamo pensarla come un insieme ordinato,
un elenco di 2k x m bit
INDIRIZZI
• Interi positivi (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
• conserva un dato in una locazione di
memoria
•••
0000000100100011010001010110
110111101111
00101101
10100010
5
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.
Per STORE un dato (X) in una locazione (A):
1. Write il dato (X) nel MDR.
2. Write l’indirizzo (A) nel MAR.
3. Send un segnale “write” alla memoria.
MEMORY
MAR MDR
6
Unità di Processo
Unità operative
• ALU = Arithmetic and Logic Unit
• Puo’ avere molte sottounità.
Alcune special-purpose
(multiply, square root, …).
Registri TEMP
• Memorizzazione temporanea di dati
• Operandi e risultati delle unità
operative
Dimensione della Parola (Word Size)
• Il numero di bit normalmente
processato dalla ALU nel corso di
un’istruzione
• Corrisponde all’ampiezza dei registri
PROCESSING UNIT
ALU TEMP
7
MODULI di 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 registricome MAR e MDR per la memoria
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.
INPUT
Keyboard
Mouse
Scanner
Disk
OUTPUT
Monitor
Printer
LED
Disk
8
Unità di Controllo
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 IR
• Interpreta l’istruzione generando la sequenza di segnali atta a
pilotare gli altri componenti
(un’ istruzione può richiedere vari cicli macchina per terminare!)
CONTROL UNIT
IRPC
9
Ciclo di Esecuzione di un’Istruzione
Decodifica l’istruzione
Valuta gli indirizzi
Carica gli operandi dalla memoria
Esegui l’operazione
Memorizza il risultato
Carica l’istruzione dalla memoria
10
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 implementare 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).
11
ESEMPIO: ADD
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.”
12
ESEMPIO: 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.”
13
FETCH
Carica la prossima istruzione dalla memoria
(indirizzo memorizzato nel PC)
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.
EA
OP
EX
S
F
D
14
DECODE
Identifica l’ opcode.• Nel nostro esempio i primi 4 bit
dell’istruzione.
• Un’ opportuna macchina combinatoria, 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
EA
OP
EX
S
F
D
15
EVALUATE ADDRESS
Per le istruzioni che richiedono
accesso in memoria,
calcola l’indirizzo usato per
l’accesso.
Esempi:
• Addizionare l’offset al registro base
(come in LDR)
• Addizionare l’offset al PC
EA
OP
EX
S
F
D
16
FETCH OPERANDS
Vengono prelevati gli operandi
sorgente necessari all’esecuzione
dell’operazione.
Esempi:
• Carica i dati dalla memoria (LDR)
• Leggi i dati dal registro file (ADD)
EA
OP
EX
S
F
D
17
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)
EA
OP
EX
S
F
D
18
STORE RESULT
I risultati vengono memorizzati a destinazione.
(un registro o la memoria)
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 in memoria
L’indirizzo è scritto in MAR, i dati in MDR
Quindi è attivato un segnale WRITE per la
memoria
EA
OP
EX
S
F
D
19
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 ed 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)
20
Esempio: Istruzione JMP
Memorizza nel PC il valore contenuto in un registro. Questo diventa
l’indirizzo della prossima istruzione da prelevare (FETCH).
“Carica il contenuto del registro R3 nel PC.”
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 0 0JMP Base
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0
21
Esempio: Istruzioni BR/BRn/BRz/BRp
Memorizza in PC il suo valore attuale sommato a PCoffeset9, se
l’esito dell’ultima operazione svolta è stato negativo, nullo o positivo
– così come indicato dai bit di selezione n/z/p . Questo diventa
l’indirizzo della prossima istruzione da prelevare (FETCH).
“Carica PC con il nuovo valore PC+75, se l’ultima
istruzione eseguita ha dato in esito un risultato nullo.”
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
n z pBR PCoffset9
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 1
22
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
23
DIAGRAMMA A STATI DELL’ UNITÀ DI CONTROLLO
L’Unità di Controllo è una macchina a stati. Di seguito ne
riportiamo un diagramma semplificato:
24
PAUSARIUS
Tutte le moderne macchine digitali sono macchine sincrone.
Ciò significa che ogni singolo componente può modificare il
proprio stato solo in corrispondenza di istanti di tempo
scanditi da un segnale regolare detto clock (generalmente
generato da un oscillatore ad alta frequenza facente uso di
cristalli).
Come il capovogatore (pausarius) di una nave romana, il clock
sincronizza e regola il compartamento coordinato dei vari
componenti della macchina.F
ron
te d
i sa
lita
Un periodo di clocktempo
Fro
nte
di d
isce
sa
DAI MEGA AI GIGA
25
26
THE END