CALCOLATORI ELETTRONICI B – 13 luglio 2005
NOME:
COGNOME:
MATR:
Scrivere chiaramente in caratteri maiuscoli a stampa
1.
Si considerino, mostrati nelle figure riportate di seguito, il datapath ed il diagramma a stati
finiti che specifica l’unità di controllo secondo la tecnica a multiciclo relativamente alle
istruzioni MIPS lw, sw, beq, j ed alle istruzioni di tipo-R. Si vuole implementare una nuova
istruzione del tipo:
addmem rt, offset(rs)
// rt←rt + M[rs+offset]
che somma al registro rt il contenuto della locazione di memoria indirizzata da rs+offset,
dove offset è un numero a 16 bit con segno specificato nell’istruzione macchina (cfr. le
istruzioni lw e sw).
Ricordando i tre formati di codifica delle istruzioni (riportati di seguito) si chiede di:
- riportare il formato della nuova istruzione macchina
- riportare, nella corrispondente figura, le modifiche necessarie al datapath
- estendere il diagramma degli stati per implementare la nuova istruzione
Promemoria formati delle istruzioni:
[6]
Instruction decode/
register fetch
Instruction fetch
2
(O
'LW
p=
=
( Op
') or
Execution
6
')
EQ
'B
e)
-typ
=R
p
(O
Branch
completion
')
'SW
ALUSrcA = 1
ALUSrcB = 10
ALUOp = 00
8
9
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 01
PCWriteCond
PCSource = 01
ALUSrcA =1
ALUSrcB = 00
ALUOp = 10
Jump
completion
PCWrite
PCSource = 10
(O
p
=
'S
')
W
(Op = 'LW')
ALUSrcA = 0
ALUSrcB = 11
ALUOp = 00
(Op = 'J')
Memory address
computation
1
=
Start
MemRead
ALUSrcA = 0
IorD = 0
IRWrite
ALUSrcB = 01
ALUOp = 00
PCWrite
PCSource = 00
(O
p
0
Memory
access
3
Memory
access
5
R-type completion
7
MemRead
IorD = 1
MemWrite
IorD = 1
RegDst = 1
RegWrite
MemtoReg = 0
Write-back step
4
RegDst = 0
RegWrite
MemtoReg = 1
PCWriteCond
PCWrite
IorD
PCSource
Outputs
MemWrite
Control
ALUSrcA
RegWrite
MemtoReg
IRWrite
ALUOp
ALUSrcB
MemRead
Op
[5–0]
RegDst
0
M
26
Instruction [25–0]
Shift
left 2
Instruction
[31-26]
PC
0
M
u
x
1
Instruction
[25–21]
Address
Memory
Instruction
[15–0]
Write
data
Read
Read
register 2 data 1
Registers
Write
Read
register data 2
Instruction
[20–16]
MemData
Instruction
register
Instruction
[15–0]
Memory
data
register
0
M
u
x
1
Read
register 1
0
M
Instruction u
x
[15–11]
1
A
B
0
M
u
x
1
16
Sign
extend
32
Instruction [5–0]
Shift
left 2
Jump
address [31-0]
Zero
ALU
1 M
u
2 x
3
ALU
control
1 u
x
2
PC [31-28]
0
4
Write
data
28
ALU
result
ALUOut
2.
Si consideri l’esercizio risolto al punto precedente; si assuma un carico di lavoro che
preveda la seguente distribuzione delle istruzioni:
lw:
20 %
sw:
20 %
Tipo-R: 30 %
beq:
10 %
j:
10 %
addmem: 10 %
Si supponga che le operazioni atomiche che coinvolgono le unità funzionali principali
richiedano:
Unità di memoria (lettura e scrittura):
2 ns
Register File (lettura e scrittura):
1 ns
Operazione ALU:
2 ns
Si confrontino le prestazioni (in termini di rapporto tra tempi di esecuzione) di un’ipotetica
implementazione a singolo ciclo rispetto all’implementazione multiciclo individuata al punto
precedente. Si riportino i passi significativi dell’analisi.
[4]
NB: nel caso non si sia riusciti a risolvere l’esercizio precedente, si risolva questo punto
facendo opportune ipotesi arbitrarie sulla nuova istruzione addmem.
3.
Si consideri il seguente frammento di codice in un ipotetico linguaggio assembler (le
istruzioni non commentate sono istruzioni MIPS):
lw $s0, ($s1)
\\ $s0 ← M[$s1]
add $t0, $s0, $s1
sub $t0, $t0, $s2
sub $s2, $t0, $s1
Si consideri l’implementazione con pipeline a 4 stadi (F: Fetch, D: Decode, E: Execute, W:
Write-Back). Si chiede di:
a) individuare tutte le dipendenze tra i dati
b) tracciare il diagramma temporale delle istruzioni nell’ipotesi sia disponibile un’unità di
propagazione verso lo stadio E (indicando esplicitamente le propagazioni e, per ognuna di
esse, quale dato è propagato)
[4]
4.
Si consideri il seguente frammento di codice MIPS:
lw $s0, 20($t1)
beq $s0, $s1, Ndb
add $t2, $t2, $t2
Ndb: add $t2, $t2, $t3
sub $s2, $s2, $s3
Si consideri un’implementazione tramite pipeline a 6 stadi in cui la decisione e l’esecuzione
del salto beq avviene nel secondo stadio della pipeline. Per la gestione delle criticità sui salti,
viene adottata la tecnica del salto ritardato.
Quanti slot di ritardo sono presenti? Perché?
Si indichi, motivando brevemente la soluzione proposta, come potrebbe essere riordinato il
codice per gestire la criticità sul salto beq.
[6]
5.
Con riferimento alla memoria virtuale, si illustri sinteticamente (4-5 righe al massimo) la
funzione del TLB. Si consideri il caso in cui il numero di pagina virtuale non sia contenuto
nel TLB: è possibile dire che ciò provoca in ogni caso un’eccezione per mancanza di pagina
(page-fault)? Perché?
Nel caso in cui la pagina fisica associata alla pagina virtuale sia presente in memoria, come
viene calcolato l’indirizzo fisico a partire da quello virtuale?
[4]
6.
Con riferimento a due ipotetici segnali REQUEST (inviato dal master allo slave) e ACK
(inviato dallo slave al master) si illustri sinteticamente un’ipotetica transazione in un bus
asincrono utilizzando il protocollo di handshaking, evidenziando in modo preciso il
significato dei segnali e le relazioni di causa-effetto tra le loro transizioni.
[4]
7.
Illustrare brevemente la differenza tra l’approccio per l’I/O “mappato in memoria” (memory
mapped) e l’approccio che utilizza istruzioni speciali di I/O.
[2]
Scarica

Tema d`esame del 13 luglio 2005