Sei sulla pagina 1di 4

Soluzione Prova B del 16/07/2004 - Esercizio 1

a) E’ necessario impiegare il formato I, che è l’unico fra i tre formati istruzione del
DLX che consente di specificare 2 registri ed un immediato. La figura seguente
mostra la codifica dell’istruzione ADDM IMMEDIATE (Rx), Ry utilizzando il
formato I:

Codice
Operativo RS1 RS2 Operando Immediato a 16 bit

R ADDM Rx Ry IMMEDIATE

Con questa notazione si intende rappresentare la configurazione


binaria che codifica il codice operativo della nuova istruzione.
b) Diagramma degli stati:

Ready ? IR ÅM[PC]

A ÅRS1
B ÅRS2
PC ÅPC+4

MAR ÅA + (IR15)16 ## IR15...0

Ready ? MDR Å M[MAR]

MDR ÅMDR + B

Ready ? M[MAR] ÅMDR

c) CPI = 12 (6 stati + 6 clock aggiuntivi dovuti ai tre accessi alla memoria)


Soluzione Prova B del 16/07/2004 - Esercizio 2
a) La sequenza da analizzare prevede una istruzione iniziale e poi un blocco di 7 istruzioni
che viene eseguito per 1024 volte. Il numero totale di istruzioni eseguite è quindi
NUM_ISTRUZIONI= 1 + 7*1024 = 7169.
Per ciascuna categoria di istruzioni presente nella sequenza da analizzare si riportano il
numero di istruzioni e, nell’ipotesi che tutti gli accessi in memoria siano completati in 3
clock, il numero di cicli di clock necessario per l’esecuzione:
ALU: 2049,7; LOAD: 2048,10; STORE: 1024,9; SET: 1024, 8; BRANCH TAKEN: 1023,6;
BRANCH NOT TAKEN: 1,5;
Conseguentemente, il numero totale di cicli di clock necessario per l’esecuzione della
sequenza è dato da:
NUM_CLOCKS = 7*2049 + 10*2048 + 9*1024 + 8*1024 + 6*1023 + 5*1 = 58374
ed il CPImedio da:
CPImedio = NUM_CLOCKS / NUM_ISTRUZIONI = 58374/7169 = 8.14

b) La sequenza può essere riscritta come segue:

ADDI R1,R0,R0
CICLO: LW R2, V2(R1)
ADDM V1(R1), R2
ADDI R1,R1,4
SLTI R2, R1, 1000H
BNEZ R2, CICLO
La nuova sequenza prevede una istruzione iniziale e poi un blocco di 5 istruzioni che viene
eseguito per 1024 volte. Il numero totale di istruzioni eseguite è quindi
NUM_ISTRUZIONI= 1 + 5*1024 = 5121.
Come al punto precedente, per ciascuna categoria di istruzioni calcoliamo il numero di
istruzioni ed il numero di cicli di clock necessario per l’esecuzione:
ALU: 1025,7; LOAD: 1024,10; ADDM: 1024,12; SET: 1024, 8; BRANCH TAKEN: 1023,6;
BRANCH NOT TAKEN: 1,5;
Il numero totale di cicli di clock necessario per l’esecuzione della nuova sequenza è quindi
dato da:
NUM_CLOCKS = 7*1025 + 10*1024 + 12*1024 + 8*1024 + 6*1023 + 5*1 = 44038
ed il CPImedio da:
CPImedio = NUM_CLOCKS / NUM_ISTRUZIONI = 44038/5121 = 8.59

c) L’esempio considerato al punto precedente mostra che nel caso di DLX sequenziale
l’introduzione della ADDM può portare ad un incremento delle prestazioni in programmi che
richiedano l’elaborazione di vettori. Difatti, nell’esempio considerato il CPUtime passa da
58374 cicli di clock a 44038 cicli di clock. Tuttavia la ADDM è una istruzione “CISC”,
che non può essere eseguita sulla pipeline a 5 stadi del DLX. Quest’ultima
difatti è idonea ad eseguire esclusivamente istruzioni di tipo “RISC” (dette anche R-R).

Potrebbero piacerti anche