Soluzioni del capitolo 6.
Exercise N° | Result | Comments |
1 | ciclo di clock 4 ns, le prestazioni sono la metà
nella macchina a singolo ciclo ho 8ns, in quella con pipeline ho 4ns
quindi |
|
2 | ||
3 |
Correggo: in questa alla fine $3 è più grande di 4: add $3,$3,4 Ciclo: lw $2,96($3) beq $3,$4,Ciclo add $3,$3,4 <- delayed branch slot in questa alla fine $2 non va bene: lw $2,100($3) Ciclo: add $3,$3,4 beq $3,$4,Ciclo lw $2,100($3) questa è OK: ciclo: add $3,$3,4 beq $3,$4,ciclo lw $2, 96($3) NOTA: cmq la prima sarebbe migliore perchè le altre due introducono stalli per la beq (quindi non portano a nessun miglioramento delle prestazioni)
|
|
4 | le dipendenze sono $2 e $4, tutte risolvibili con la propagazione |
|
5 | ||
6 | ||
7 | ||
8 | ||
9 | ||
10 | ||
11 | ||
12 | ||
13 | ||
14 | ogni istruzione introduce uno stallo. CPI = 2 in effetti il CPI è 2 per istruzioni infinite, però avrei 1 ciclo aggiuntivo all'inizio e 3 alla fine, portanto il CPI = [ 1 + 3 + (I - 1) * 2] / 100 = 2,02. Non chiedetemi perchè in quanto l'ho risolto per via "grafica". |
|
15 | 8 cicli in totale. Dipendenze: $6 |
|
16 | ||
17 | ||
18 | ||
19 | Nella prima uso il forwarding. Nella seconda non ci sono problemi!! o no? ciclo (-4): per la store, l'indirizzo dell'operando viene posto in
EX/MEM (cioè EX/MEM conterrà 100+r2 e il valore contenuto in r7), la
load pone nel registro ID/EX i valori 100, r2 e r8. |
|
20 | ||
21 | ||
22 | ||
23 | Spostare add $10 prima di beq 1 - add $7,$7,$3 dopo lw$3,0($5) 2 - (segue dalla 1) add $8,$8,$4 dopo lw $4, 4($5)
|
|
24 | ||
25 | ||
26 | ||
27 | ||
28 | ||
29 | ||
30 | ||
31 | ||
32 | ||
33 | ||
34 | ||
35 |