Sei sulla pagina 1di 14

Calcolatori elettronici LS

allievi elettronici

Soluzione dell’esercizio 1
della prova scritta del 27/6/07

1
Pipeline non bloccante con più
unità funzionali multiciclo
• Un DLX con Tck = T dispone di tre unità funzionali, A, M e D
“multiciclo”capaci di eseguire le seguenti istruzioni su operandi in
virgola mobile:
• A: FADD (in 2T) - M: FMUL (in 3T) - D: FDIV (in 4T).
• Si faccia l’ipotesi che in T1 si abbia Fi=i per ogni valore di i
compreso tra 0 e 31 Si consideri il seguente frammento di codice:

FADD F20,F2,F1
FDIV F2,F2,F20
FMUL F6,F1,F2
FMUL F25, F25, F3
FMUL F1,F9,F10
FADD F9, F3, F1
2
Quesiti
• Stimare il numero di colpi di clock al di sotto del quale non è possibile
scendere nell’esecuzione del codice assegnato, qualunque sia il numero di
RS, CRB e stadi di Fetch e Decode disponibili, e si motivi la risposta (punti 2)
• mostrare la dinamica dell’esecuzione nel caso di 1 CRB, uno stadio IF e uno
stadio ID, e 2 RS per ogni unità funzionale (punti 4)
• si supponga ora di poter apportare le seguenti modifiche all’architettura:
1. aumento di RS a una o più unità funzionali
2. raddoppio del CRB per poter eseguire due fasi di WB per clock
3. aggiunta di un’altra unità funzionale con due RS
4. raddoppio degli stadi IF e ID per poter decodificare contemporaneamente due
istruzioni.
• Quali modifiche converrebbe apportare? Nella soluzione scelta si mostri
quanti clock si risparmierebbero rispetto al punto 2 (a tal fine si disegni la
dinamica della pipeline risultante) e si indichi quale CPImedio si otterebbe
(punti 4)
3
Scheduling dinamico con l’approccio di Tomasulo
(schema di principio)
• Schema di una pipeline con unità di esecuzione dotate di “reservation
stations” (RS) per la gestione dinamica di esecuzione fuori ordine
(Execution Around Data Hazards)
Res.St. (3)
Check
Alee
Strutturali s1 Store Load
EX-1 Buffers Buffers
(Es.
s2 ADD/SUB)

IF ID op
Es.: 5 Tck
MAIN
Res.St. (3) MEM
s1
EX-2 ST1 LD1
ST2 Es.: 30 Tck LD2
s2 (Es.
ST3 LD3
MUL/DIV)
Register
File op Es.: 15 Tck

Common Result Bus

4
Unità di Esecuzione

DEC

RS_id CR
B
UE_id

Unità di
esecuzione
A
OE*
A0 A1 A2 A3

CRB_owner

Esempio di unità di esecuzione con


quattro RS e registro di uscita
5
Struttura delle RS
• Ad ogni unità che produce risultati (Load Buffer e Reservation Station)
è associato un identificatore che viaggerà sul Result Bus insieme al
risultato stesso [TAG: (Unit_ID, RS_ID)]
• Ogni Reservation Station ha sei campi:
– BUSY: indica se la RS è libera o occupata
– Qj e Qk: contengono l’identificatore del Load Buffer o della Reservation
Station che produrrà l’operando sorgente (j: 1°operando, k: 2°operando)
– Vj e Vk: contengono l’operando se QJ / Qk = 0
– OP: operazione da eseguire (Es: FADD/FSUB…)
Busy OP Qj (TAG) Vj(Operando) Qk (TAG) Vk(Operando) 33Reservation
Reservation
Stations,
Stations,cioè
cioè
stazioni di
stazioni di
prenotazione
prenotazione
(della
(dellaunità
unitàdidi
esecuzione)
esecuzione)

Le coppie(Qj,Vj) e (Qk,Vk) su tutte le RS di un’unità di esecuzione


costituiscono due tabelle di coppie (nome, valore) realizzate con
strutture completamente associative.
6
Soluzione del punto 1
Esempio:
• Si individuino a occhio i percorsi di esecuzione critici
• Si determini il più lungo
• Si aggiunga 3 (per IF, ID, WB)
Un percorso critico è imposto dall’esistenza di una sola unità funzionale
per ogni tipologia di istruzione:
Essendoci 3 MUL, ci vorranno almeno 12 periodi di clock

Un secondo percorso critico può essere individuato cercando sequenze di


istruzioni “dipendenti”:
Il più “lento” flusso di istruzioni dipendenti è costituito dalle prime tre istruzioni,
per eseguire le quali ci vogliono 2 + 2 +1 + 4 + 1+ 3 + 1 = 14 periodi di clock
Quindi per eseguire il codice assegnato ci vorranno almeno 14 clock

Siccome l’architettura assegnata impiega 20 clock (come mostrato dai


prossimi lucidi), è evidente che c’è ampio spazio per migliorarla
7
Soluzione punto 2 (primo lucido di 2)
Dinamica dell’esecuzione del frammento di codice assegnato
nel caso di 2 RS per ogni unità funzionale.

T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 T13 T14 T15 T16 T17 T18 T19 T20

FADD
IF ID A0E A0E WB
F20,F2,F1
F20

FDIV
IF ID C0w C0w C0E C0E C0E C0E WB
F2,F2,F20
F2, F20

FMUL
IF ID B0W B0W B0W B0W B0W B0w B0E B0E B0E WB
F6,F1,F2
F2

FMUL
IF ID B1E B1E B1E WB
F25,F25, F3

FMUL
IF ID ID ID ID ID B1R B1R B1R B1E B1E B1E WB
F1,F9,F10
F1

FADD F9,F3,
IF IF IF IF IF ID A0W A0W A0W A0W A0W A0E A0E WB
F1 A0W

A : FADD (in 2T); B : FMUL (in 3T); C: FDIV (in 4T)


8
Soluzione punto 2 (secondo di due)
Dinamica dell’esecuzione del frammento di codice assegnato
nel caso di 2 RS per ogni unità funzionale.

T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 T13 T14 T15 T16 T17 T18 T19 T20

FADD
IF ID A0E A0E WB
F20,F2,F1
F20

FDIV
IF ID C0w C0w C0E C0E C0E C0E WB
F2,F2,F20
F2, F20

FMUL
IF ID B0W B0W B0W B0W B0W B0w B0E B0E B0E WB
F6,F1,F2
F2

FMUL
IF ID B1E B1E B1E WB
F25,F25, F3

FMUL
IF ID ID ID ID ID B1R B1R B1R B1E B1E B1E WB
F1,F9,F10
F1

FADD F9,F3,
IF IF IF IF IF ID A0W A0W A0W A0W A0W A0E A0E WB
F1 A0W

A : FADD (in 2T); B : FMUL (in 3T); C: FDIV (in 4T)


9
Soluzione alternativa del punto 2
Dinamica dell’esecuzione del frammento di codice assegnato
nel caso di 2 RS per ogni unità funzionale.

T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 T13 T14 T15 T16 T17 T18 T19 T20

FADD
IF ID A0E A0E WB
F20,F2,F1
FDIV
IF ID C0w C0w C0E C0E C0E C0E WB
F2,F2,F20

FMUL
IF ID B0W B0W B0W B0W B0W B0w B0R B0R B0R B0E B0E B0E WB
F6,F1,F2
FMUL
IF ID B1E B1E B1E WB
F25,F25, F3
FMUL
IF ID ID ID ID ID B1E B1E B1E WB
F1,F9,F10
F1
FADD
IF IF IF IF IF ID A0W A0W A0W A0E A0E WB WB
F9,F3, F1

A : FADD (in 2T); B : FMUL (in 3T); C: FDIV (in 4T) 10


Ipotesi di modifica dello stadio EX

• Aumento del numero di RS dell’unità M, al fine di evitare


alla pipeline di stallare per alea strutturale

• in questo modo la seconda istruzione MUL può essere


messa in esecuzione in anticipo

• qual è la dinamica della pipeline in questo caso? Quanti


clock si risparmiano?

11
Dinamica dell’esecuzione nel caso di 3 RS davanti
all’unità MUL

T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 T13 T14 T15 T16 T17 T18 T19

FADD
IF ID A0E A0E WB
F20,F2,F1
F20

FDIV
IF ID C0w C0w C0E C0E C0E C0E WB
F2,F2,F20
F2, F20

FMUL
IF ID B0W B0W B0W B0W B0W B0W B0R B0E B0E B0E WB
F6,F1,F2
F2

FMUL
IF ID B1E B1E B1E WB
F25,F25, F3

FMUL
IF ID B2R B2R B2E B2E B2E WB
F1,F9,F10
F1

FADD F9,F3,
IF ID A0W A0W A0W A0W A0W A0E A0E WB WB
F1

A : FADD (in 2T); B : FMUL (in 3T); C: FDIV (in 4T)


12
Soluzione punto 4
Dinamica dell’esecuzione nel caso di 2 unità funzionali
FMUL (B e C) con 2 RS, e CRB sdoppiato

T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 T13 T14 T15 T16 T17 T18 T19

FADD
IF ID A0E A0E WB
F20,F2,F1
F20

FDIV
IF ID D0w D0w D0E D0E D0E D0E WB
F2,F2,F20
F2, F20

FMUL
IF ID B0W B0W B0W B0W B0W B0W B0E B0E B0E WB
F6,F1,F2
F2

FMUL
IF ID B1E B1E B1E WB
F25,F25, F3

FMUL
IF ID C0E C0E C0E WB
F1,F9,F10
F1

FADD F9,F3,
IF ID A0W A0W A0W A0E A0E WB
F1

A : FADD (in 2T); B,C : FMUL (in 3T); D: FDIV (in 4T)
13
Conclusioni

• Si raggiunge la massima performance teorica (14 CK,


come individuati nel lucido 1), con il raddoppio del CRB
e dell’unità funzionale MUL; infatti questi due
provvedimenti consentono di eliminare tutte le alee
strutturali nel caso specifico del frammento di codice
proposto.

14

Potrebbero piacerti anche