You are on page 1of 59

Tomasulov algoritam

Drugi dinamiki algoritam: Tomasulov


algoritam
Razvijen u IBM i prvi put implementitan na IBM 360/91
1966, 3 godine nakon scoreboard u CDC 6600. (autor
Robert Tomasulo)

Kombinuje kljune elelmente Sc. eme i tehnike

preimenovanja registara radi eliminacije WAR i WAW


hazarda.
jedna varijanta je da preimenovanje obai kompajler,
ali to zahteva vei broj registara opte namene
IBM 360/91 je imao samo 4 FP registra (8 kod CDC
6600)

Dananje CPU arhitekture koje se mogu smatrati

naslednicima IBM 360/91 koje implementiraju i koriste


varijante Tomasulo Algoritma:

RISC CPUs:

Alpha 21264, HP 8600, MIPS R12000,


PowerPC G4, AMD Athlon, Pentium III, 4, Xeon,

Arhitektura staze podataka

Arhitektura staze podataka

Instrukcije se smetaju u FIFO bafer, odakle se vri izdavanje


instrukcija
Svakoj funkcionalnoj jedinici (FU) je pridruena rezervaciona
stanica koja upravlja radom FU i izvrenjem instrukcije.
rezervaciona stanica pamti instrukciju koja je izdata i eka na
izvrenje u FU, operande (vrednosti, a ne imena registara) ako su
dostupni, ili imena FU koje e generisati rezultat.
load i store baferi pamte podatke ili adrese (u zavisnosti dokle se
stiglo sa izvrenjem instrukcije. load i store baferi se ponaaju
slino kao rezervacione stanice
load baferi imaju 3 funkcije:
pamte komponente efektivne adrese dok se ona ne izrauna
pamte status aktivnih load instrukcija koje ekaju na pristup memoriji
pamte rezultat load instrukcije koja eka na CDB

Store buferi imaju 3 funkcije:


pamte komponente efektivne adrese dok se ona ne izrauna
pamte izraunatu adresu store instrukcije koja eka podatak koji

treba da se upie u memoriju


pamti adresu i podatak koji treba da se upie u memoriju

Arhitektura staze podataka-nast.


Svi rezultati, bilo da dolaze iz FP funkcionalnih

jedinica ili load bafera, se smetaju na CDB


(Common data bus), koji dolazi do svih FP
registara, rezervacionih stanica i store bafera.
CDB omoguava da sve FU koje ekaju na isti
operand mogu jednovremeno da ga pribave,
za razliku od Sc. trhnike gde se rezultat prvo
upisuje u registre, kojima zatim sukcesivno
pristupaju FU.
FP registri su povezani parom magistrala sa
rezervacionim stanicama i jednom
magistralom sa store baferima

Faze u izvrenju instrukcija

Issue instrukcija se pribavlja iz reda ekanja.


Ako je u pitanju FP operacija, instrukcija se izdaje ako postoji slobodna

rezervaciona stanica i alju se operandi, ako su u registrima.


Ako je u pitanju load ili store instrukcija, ona se izdaje ako postoji slobodan
load ili store bafer
Ako nema slobodne rezervacione stanice ili load/store bafera onda postoji
strukturni hazard i instrukcija se zaustavlja
u ovom koraku se vri i proces preimenovanja registara

Execution (izvrenje) Ako neki operand nije dostupan, nadgleda


se CDB.
Kada operand postane dostupan smeta se u odgovarajuu RS
Kada su oba operanda dostupna, izvrava se FP operacija
Vri se provera RAW hazarda (ekanjem da operandi postanu
dostupni razreavaju se RAW hazardi)
Load i store zahtevaju dvostepeno izvrenje:
u prvom koraku se izraunava efektivna adresa. a zatim se pamti u
load/store bafer
Pribavljanje u load bafer se obavlja im je memorijska jedinica
raspoloiva
upisi u store bafere ekaju na podatak pre nego to se obavi upis u
memoriju

Faze u izvrenju instrukcija


Write result (upis rezultata) kada je rezultat

dostupan upisuje se na CDB, a odatle u


registre i bilo koju FU koja eka taj rezultat
oznaiti da je FU slobodna

Tomasulo i Scoreboard - razlike


Upravljanje distribuirano po Rezervacionim

stanicama naspram centralizovanog upravljanja


kod Scoreboard.
FP registri opte namene u instrukcijama su
zamenjeni vrednostima (ako su dostupne) ili
oznakama rezervacionih stanica (RS) koje e
generisati rezultat:
Ovaj proces se zove preimenovanje registara
Izbegavaju se WAR, WAW hazardi.
Omoguava hardversko odmotavanje petlji .
Ima vie RS nego registara opte namene, to omoguava

optimizacije koje kompajler ne moe postii, pa se broj


registara opte namene ne javlja kao usko grlo.

Rezultati instrukcija se prosledjuju FU iz RS preko

Common Data Bus (CDB) , (a ne preko registara),


preko kojeg se rezultati distribuiraju svim FU.
Load i Store se tretiraju kao FU sa svojim RS.

Upravljanje
Svaka rezervaciona stanica ima 6 polja:
Busy oznaava da li je RS i odgovarajua FU slobodna
Op operacija koja treba da se izvri (npr. + ili -)
Vj, Vk vrednosti izvornih operanada S1 i S2
Store baferi imaju smo jedno V polje u kome se pamti rezultat koji
treba da se upie u memoriju

Qj, Qk rezervacione stanice koje koje generiu izvorne

operande

nema ready flegova kao kod Sc; Qj,Qk=0 => ready


store baferi imaju samo jedno Q polje za oznaku RS koja proizvodi
rezultat

Za load i store
A adresna informacija za load ili store. U startu sadri
neposredni operand, zatim efektivnu adresu kada se
izrauna
Register result status (status registra rezultata):

Qi ukazuje koja funkcionalna jedinica e izvriti upis (ako

postoji)

blanko ili 0 ako nema aktivne instrukcije koja e upisati rezultat (tj.
podatak je prisutan u registru)

Tomasulo primer clk 0


Instruction status:
Instruction
LD
F6
LD
F2
MULTD F0
SUBD
F8
DIVD
F10
ADDD
F6

j
34+
45+
F2
F6
F0
F8

k
R2
R3
F4
F2
F6
F2

Exec Write
Issue Comp Result
Load1
Load2
Load3

Reservation Stations:
Time Name Busy
Add1
No
Add2
No
Add3
No
Mult1 No
Mult2 No

Register result status:


Clock
0

FU

Busy Address

Op

S1
Vj

S2
Vk

RS
Qj

RS
Qk

F0

F2

F4

F6

F8

No
No
No

F10

F12

...

F30

Tomasulo primer clk 1


Instruction status:
Instruction
LD
F6
LD
F2
MULTD F0
SUBD
F8
DIVD
F10
ADDD
F6

j
34+
45+
F2
F6
F0
F8

k
R2
R3
F4
F2
F6
F2

Exec Write
Issue Comp Result
1

Reservation Stations:
Time Name Busy
Add1
No
Add2
No
Add3
No
Mult1 No
Mult2 No

Register result status:


Clock
1

FU

* Prva load izdata

Busy Address
Load1
Load2
Load3

Op

S1
Vj

S2
Vk

RS
Qj

RS
Qk

F0

F2

F4

F6

F8

Load1

Yes
No
No

34+R2

F10

F12

...

F30

Tomasulo primer Cycle 2


Instruction status:
Instruction
LD
F6
LD
F2
MULTD F0
SUBD
F8
DIVD
F10
ADDD
F6

j
34+
45+
F2
F6
F0
F8

k
R2
R3
F4
F2
F6
F2

Exec Write
Issue Comp Result
1
2

Reservation Stations:
Time Name Busy
Add1
No
Add2
No
Add3
No
Mult1 No
Mult2 No

Register result status:


Clock
2

FU

Busy Address
Load1
Load2
Load3

Op

S1
Vj

S2
Vk

RS
Qj

RS
Qk

F0

F2

F4

F6

F8

Load2

Yes
Yes
No

34+R2
45+R3

F10

F12

...

F30

Load1

I druga load izdata (Za razliku od CDC 6600, vie load


moe biti izdato)

Tomasulo primer Cycle 3


Instruction status:
Instruction
LD
F6
LD
F2
MULTD F0
SUBD
F8
DIVD
F10
ADDD
F6

j
34+
45+
F2
F6
F0
F8

k
R2
R3
F4
F2
F6
F2

Exec Write
Issue Comp Result
1
2
3

Reservation Stations:
Time Name Busy Op
Add1
No
Add2
No
Add3
No
Mult1 Yes MULTD
Mult2 No

Register result status:


Clock
3

FU

F0

Busy Address

S1
Vj

Load1
Load2
Load3

S2
Vk

RS
Qj

Yes
Yes
No

34+R2
45+R3

F10

F12

RS
Qk

R(F4) Load2

F2

Mult1 Load2

F4

F6

F8

...

F30

Load1

Napomena: imena registara su uklonjena (preimenovana) u


rezervacionim stanicama; MULT izdata za razliku od scoreboard
Load1 okonana; ko eka na rezultat Load1?

Tomasulo primer Cycle 4


Instruction status:
Instruction
LD
F6
LD
F2
MULTD F0
SUBD
F8
DIVD
F10
ADDD
F6

j
34+
45+
F2
F6
F0
F8

k
R2
R3
F4
F2
F6
F2

Exec Write
Issue Comp Result
1
2
3
4

Reservation Stations:

Busy Address

3
4

Load1
Load2
Load3

S1
Vj

S2
Vk

RS
Qj

RS
Qk

F2

F4

F6

F8

No
Yes
No

45+R3

F10

F12

Time Name Busy Op


Add1 Yes SUBD M(A1)
Load2
Add2
No
Add3
No
Mult1 Yes MULTD
R(F4) Load2
Mult2 No

Register result status:


Clock
4

FU

F0

Mult1 Load2

M(A1) Add1

MULTD ulazi u izvrenje


SUBD izdata
Load2 okonana; ko eka na rezultat Load2?

...

F30

Tomasulo primer Cycle 5


Instruction status:
Instruction
LD
F6
LD
F2
MULTD F0
SUBD
F8
DIVD
F10
ADDD
F6

j
34+
45+
F2
F6
F0
F8

k
R2
R3
F4
F2
F6
F2

Exec Write
Issue Comp Result
1
2
3
4
5

Reservation Stations:

Busy Address

3
4

4
5

Load1
Load2
Load3

S1
Vj

S2
Vk

RS
Qj

RS
Qk

F2

F4

F6

F8

Time Name Busy Op


2 Add1 Yes SUBD M(A1) M(A2)
Add2
No
Add3
No
10 Mult1 Yes MULTD M(A2) R(F4)
Mult2 Yes DIVD
M(A1) Mult1

Register result status:


Clock
5

FU

F0

Mult1 M(A2)

No
No
No

F10

M(A1) Add1 Mult2

DIVD izdata, MULTD i SUBD se izvravaju

F12

...

F30

Tomasulo primer Cycle 6


Instruction status:
Instruction
LD
F6
LD
F2
MULTD F0
SUBD
F8
DIVD
F10
ADDD
F6

j
34+
45+
F2
F6
F0
F8

k
R2
R3
F4
F2
F6
F2

Exec Write
Issue Comp Result
1
2
3
4
5
6

Reservation Stations:

Busy Address

3
4

4
5

Load1
Load2
Load3

S1
Vj

S2
Vk

RS
Qj

RS
Qk

F2

F4

F6

F8

Time Name Busy Op


1 Add1 Yes SUBD M(A1) M(A2)
Add2 Yes ADDD
M(A2) Add1
Add3
No
9 Mult1 Yes MULTD M(A2) R(F4)
Mult2 Yes DIVD
M(A1) Mult1

Register result status:


Clock
6

FU

F0

Mult1 M(A2)

Add2

No
No
No

F10

F12

Add1 Mult2

ADDD je izdata za razliku od scoreboard -WAR hazard


eliminisan preimenovanjem
MULTD i SUBD se jo uvek izvravaju

...

F30

Tomasulo primer Cycle 7


Instruction status:
Instruction
LD
F6
LD
F2
MULTD F0
SUBD
F8
DIVD
F10
ADDD
F6

j
34+
45+
F2
F6
F0
F8

k
R2
R3
F4
F2
F6
F2

Exec Write
Issue Comp Result
1
2
3
4
5
6

Reservation Stations:

3
4

Busy Address

4
5

Load1
Load2
Load3

S1
Vj

S2
Vk

RS
Qj

RS
Qk

F2

F4

F6

F8

Time Name Busy Op


0 Add1 Yes SUBD M(A1) M(A2)
Add2 Yes ADDD
M(A2) Add1
Add3
No
8 Mult1 Yes MULTD M(A2) R(F4)
Mult2 Yes DIVD
M(A1) Mult1

Register result status:


Clock
7

FU

F0

No
No
No

Mult1 M(A2)

Add2

F10

F12

...

F30

Add1 Mult2

SUBD (Add1) okonana; ko eka na rezultat?


Add2 moe da otpone izvrenje (rezultat Add1 je dostupan na CDB)

Tomasulo primer Cycle 8


Instruction status:
Instruction
LD
F6
LD
F2
MULTD F0
SUBD
F8
DIVD
F10
ADDD
F6

j
34+
45+
F2
F6
F0
F8

k
R2
R3
F4
F2
F6
F2

Exec Write
Issue Comp Result
1
2
3
4
5
6

Reservation Stations:

Busy Address

3
4

4
5

Load1
Load2
Load3

S1
Vj

S2
Vk

RS
Qj

RS
Qk

F2

F4

F6

F8

Time Name Busy Op


Add1
No
2 Add2 Yes ADDD (M-M) M(A2)
Add3
No
7 Mult1 Yes MULTD M(A2) R(F4)
Mult2 Yes DIVD
M(A1) Mult1

Register result status:


Clock
8

FU

F0

Mult1 M(A2)

No
No
No

F10

Add2 (M-M) Mult2

ADDD kree u izvrenje; MULTD se jo uvek izvrava

F12

...

F30

Tomasulo primer Cycle 9


Instruction status:
Instruction
LD
F6
LD
F2
MULTD F0
SUBD
F8
DIVD
F10
ADDD
F6

j
34+
45+
F2
F6
F0
F8

k
R2
R3
F4
F2
F6
F2

Exec Write
Issue Comp Result
1
2
3
4
5
6

Reservation Stations:

Busy Address

3
4

4
5

Load1
Load2
Load3

S1
Vj

S2
Vk

RS
Qj

RS
Qk

F2

F4

F6

F8

Time Name Busy Op


Add1
No
1 Add2 Yes ADDD (M-M) M(A2)
Add3
No
6 Mult1 Yes MULTD M(A2) R(F4)
Mult2 Yes DIVD
M(A1) Mult1

Register result status:


Clock
9

FU

F0

Mult1 M(A2)

MULTD i ADDD se jo uvek izvravaju

No
No
No

F10

Add2 (M-M) Mult2

F12

...

F30

Tomasulo primer Cycle 10


Instruction status:
Instruction
LD
F6
LD
F2
MULTD F0
SUBD
F8
DIVD
F10
ADDD
F6

j
34+
45+
F2
F6
F0
F8

k
R2
R3
F4
F2
F6
F2

Exec Write
Issue Comp Result
1
2
3
4
5
6

Reservation Stations:

3
4

4
5

Busy Address
Load1
Load2
Load3

10

S1
Vj

S2
Vk

RS
Qj

RS
Qk

F2

F4

F6

F8

Time Name Busy Op


Add1
No
0 Add2 Yes ADDD (M-M) M(A2)
Add3
No
5 Mult1 Yes MULTD M(A2) R(F4)
Mult2 Yes DIVD
M(A1) Mult1

Register result status:


Clock
10

FU

F0

No
No
No

Mult1 M(A2)

F10

Add2 (M-M) Mult2

Add2 okonana; ko eka na rezultat?


MULTD se jo uvek izvrava

F12

...

F30

Tomasulo primer Cycle 11


Instruction status:
Instruction
LD
F6
LD
F2
MULTD F0
SUBD
F8
DIVD
F10
ADDD
F6

j
34+
45+
F2
F6
F0
F8

k
R2
R3
F4
F2
F6
F2

Exec Write
Issue Comp Result
1
2
3
4
5
6

Reservation Stations:

Busy Address

3
4

4
5

Load1
Load2
Load3

10

11

S1
Vj

S2
Vk

RS
Qj

RS
Qk

F2

F4

F6

F8

Time Name Busy Op


Add1
No
Add2
No
Add3
No
4 Mult1 Yes MULTD M(A2) R(F4)
Mult2 Yes DIVD
M(A1) Mult1

Register result status:


Clock
11

FU

F0

Mult1 M(A2)

No
No
No

F10

F12

...

(M-M+M)(M-M) Mult2

upis rezultata ADDD za razliku od scoreboard kod


koga je postojao WAR hazard

F30

Tomasulo primer Cycle 12


Instruction status:
Instruction
LD
F6
LD
F2
MULTD F0
SUBD
F8
DIVD
F10
ADDD
F6

j
34+
45+
F2
F6
F0
F8

k
R2
R3
F4
F2
F6
F2

Exec Write
Issue Comp Result
1
2
3
4
5
6

Reservation Stations:

Busy Address

3
4

4
5

Load1
Load2
Load3

10

11

S1
Vj

S2
Vk

RS
Qj

RS
Qk

F2

F4

F6

F8

Time Name Busy Op


Add1
No
Add2
No
Add3
No
3 Mult1 Yes MULTD M(A2) R(F4)
Mult2 Yes DIVD
M(A1) Mult1

Register result status:


Clock
12

FU

F0

Mult1 M(A2)

No
No
No

F10

(M-M+M)(M-M) Mult2

Jo uvek traje izvrenje MULTD; DIVD eka na rezultat

F12

...

F30

Tomasulo primer Cycle 13


Instruction status:
Instruction
LD
F6
LD
F2
MULTD F0
SUBD
F8
DIVD
F10
ADDD
F6

j
34+
45+
F2
F6
F0
F8

k
R2
R3
F4
F2
F6
F2

Exec Write
Issue Comp Result
1
2
3
4
5
6

Reservation Stations:

Busy Address

3
4

4
5

Load1
Load2
Load3

10

11

S1
Vj

S2
Vk

RS
Qj

RS
Qk

F2

F4

F6

F8

Time Name Busy Op


Add1
No
Add2
No
Add3
No
2 Mult1 Yes MULTD M(A2) R(F4)
Mult2 Yes DIVD
M(A1) Mult1

Register result status:


Clock
13

FU

F0

Mult1 M(A2)

No
No
No

F10

(M-M+M)(M-M) Mult2

Jo uvek traje izvrenje MULTD; DIVD eka na rezultat

F12

...

F30

Tomasulo primer Cycle 14


Instruction status:
Instruction
LD
F6
LD
F2
MULTD F0
SUBD
F8
DIVD
F10
ADDD
F6

j
34+
45+
F2
F6
F0
F8

k
R2
R3
F4
F2
F6
F2

Exec Write
Issue Comp Result
1
2
3
4
5
6

Reservation Stations:

Busy Address

3
4

4
5

Load1
Load2
Load3

10

11

S1
Vj

S2
Vk

RS
Qj

RS
Qk

F2

F4

F6

F8

Time Name Busy Op


Add1
No
Add2
No
Add3
No
1 Mult1 Yes MULTD M(A2) R(F4)
Mult2 Yes DIVD
M(A1) Mult1

Register result status:


Clock
14

FU

F0

Mult1 M(A2)

No
No
No

F10

(M-M+M)(M-M) Mult2

Jo uvek traje izvrenje MULTD; DIVD eka na rezultat

F12

...

F30

Tomasulo primer Cycle 15


Instruction status:
Instruction
LD
F6
LD
F2
MULTD F0
SUBD
F8
DIVD
F10
ADDD
F6

j
34+
45+
F2
F6
F0
F8

k
R2
R3
F4
F2
F6
F2

Exec Write
Issue Comp Result
1
2
3
4
5
6

Reservation Stations:

Busy Address

3
4
15
7

4
5

Load1
Load2
Load3

10

11

S1
Vj

S2
Vk

RS
Qj

RS
Qk

F2

F4

F6

F8

Time Name Busy Op


Add1
No
Add2
No
Add3
No
0 Mult1 Yes MULTD M(A2) R(F4)
Mult2 Yes DIVD
M(A1) Mult1

Register result status:


Clock
15

FU

F0

Mult1 M(A2)

No
No
No

F10

(M-M+M)(M-M) Mult2

MULTD okonava izvrenje, rezultat dostupan na CDB

F12

...

F30

Tomasulo primer Cycle 16


Instruction status:
Instruction
LD
F6
LD
F2
MULTD F0
SUBD
F8
DIVD
F10
ADDD
F6

j
34+
45+
F2
F6
F0
F8

k
R2
R3
F4
F2
F6
F2

Exec Write
Issue Comp Result
1
2
3
4
5
6

Reservation Stations:

3
4
15
7

4
5
16
8

Load1
Load2
Load3

10

11

S1
Vj

S2
Vk

RS
Qj

RS
Qk

F2

F4

F6

F8

Time Name Busy Op


Add1
No
Add2
No
Add3
No
Mult1 No
40 Mult2 Yes DIVD M*F4 M(A1)

Register result status:


Clock
16

FU

F0

Busy Address

M*F4 M(A2)

No
No
No

F10

(M-M+M)(M-M) Mult2

Ostala je samo DIVD instrukcija (kree u izvrenje)

F12

...

F30

preskoimo nekoliko clk ciklusa!


ciklusa

Tomasulo primer Cycle 55


Instruction status:
Instruction
LD
F6
LD
F2
MULTD F0
SUBD
F8
DIVD
F10
ADDD
F6

j
34+
45+
F2
F6
F0
F8

k
R2
R3
F4
F2
F6
F2

Exec Write
Issue Comp Result
1
2
3
4
5
6

Reservation Stations:

3
4
15
7

4
5
16
8

Load1
Load2
Load3

10

11

S1
Vj

S2
Vk

RS
Qj

RS
Qk

F2

F4

F6

F8

Time Name Busy Op


Add1
No
Add2
No
Add3
No
Mult1 No
1 Mult2 Yes DIVD M*F4 M(A1)

Register result status:


Clock
55

FU

F0

Busy Address

M*F4 M(A2)

No
No
No

F10

(M-M+M)(M-M) Mult2

DIVD (Mult2) se jo izvrava

F12

...

F30

Tomasulo primer Cycle 56


Instruction status:
Instruction
LD
F6
LD
F2
MULTD F0
SUBD
F8
DIVD
F10
ADDD
F6

j
34+
45+
F2
F6
F0
F8

k
R2
R3
F4
F2
F6
F2

Exec Write
Issue Comp Result
1
2
3
4
5
6

Reservation Stations:

3
4
15
7
56
10

4
5
16
8

Load1
Load2
Load3

S1
Vj

S2
Vk

RS
Qj

RS
Qk

56

FU

F0

F2

F4

F6

F8

M*F4 M(A2)

No
No
No

11

Time Name Busy Op


Add1
No
Add2
No
Add3
No
Mult1 No
0 Mult2 Yes DIVD M*F4 M(A1)

Register result status:


Clock

Busy Address

F10

F12

...

F30

(M-M+M)(M-M) Mult2

Mult2 je okonala izvrenje (rezultat dostupan na CDB)

Tomasulo primer Cycle 57


Instruction status:
Instruction
LD
F6
LD
F2
MULTD F0
SUBD
F8
DIVD
F10
ADDD
F6

j
34+
45+
F2
F6
F0
F8

k
R2
R3
F4
F2
F6
F2

Exec Write
Issue Comp Result
1
2
3
4
5
6

Reservation Stations:

3
4
15
7
56
10

4
5
16
8
57
11

Load1
Load2
Load3

S1
Vj

S2
Vk

RS
Qj

RS
Qk

F2

F4

F6

F8

Time Name Busy Op


Add1
No
Add2
No
Add3
No
Mult1 No
0 Mult2 Yes DIVD M*F4 M(A1)

Register result status:


Clock
56

FU

F0

Busy Address

M*F4 M(A2)

No
No
No

F10

F12

(M-M+M)(M-M) Mult2

ponovo imamo: In-order issue, out-of-order


izvrenje i okonanje.

...

F30

Scoreboard je okonao izvrenje u 62.


ciklusu
Instruction status:
Instruction
LD
F6
LD
F2
MULTD F0
SUBD
F8
DIVD
F10
ADDD
F6

j
34+
45+
F2
F6
F0
F8

Scoreboard

Tomasulo

Read Exec Write


k Issue Oper Comp Result

Exec Write
Issue ComplResult

R2
R3
F4
F2
F6
F2

1
5
6
7
8
13

2
6
9
9
21
14

3
7
19
11
61
16

4
8
20
12
62
22

1
2
3
4
5
6

3
4
15
7
56
10

4
5
16
8
57
11

Zato izvrenje sa scoreboard/6600 traje due?


Strukturni hazardi
WAW i WAR hazardi
nema forwarding-a

IBM 360/91 (Tomasulo) naspram CDC 6600


(scoreboard)
Protone Funkcionalne
Vie FUs (nisu protone)
jedinice (6 load, 3 store, 3
(1 load/store, 1 + , 2 x, 1
+, 2 x/)
)
veliina prozora: 14

instrukcija
Nema izdavanja u sluaju
strukturnih hazara
WAW: izbegavaju se
preimenovanjem
WAR: izbegavaju se
preimenovanjem
Emisija rezultata iz FU
preko CDB (Implementira
forwarding)
Upravljanje: rezervacione
stanice (distribuirano)

5 instrukcija

Nema izdavanja u sluaju

strukturnih hazara
zaustavlja se izdavanje

zaustavlja se okonanje
Write/read registara

(Forwarding nije podran)


centralizovano u
scoreboard

Upravljanje kod Tomasulovog algoritma

Hw odmotavanje petlje
Prava snaga eliminisanja WAW i WAR hazarda

kroz dinamiko preimenovanje registara najbolje


se moe videti na pimeru izvrenja petlje
loop:

MULD

SD

SUBI

BNEZ

LD
F0, 0(R1)
F4, F0, F2
F4, 0(R1)
R1, R1, #8
R1, Loop

Ako je predvidajanje da e se grananje obaviti,

korienje RS e omoguiti da se vie iteracija


petlje izvrava jednovremeno
ovo se postie bez promene koda
u sutini petlja se dinamiki odmotava uz pomo hw

korienjem RS koje deluju kao dodatni registri

Usvajamo sledee
mnoenje traje 4 clk.
prva load traje 8 clocks (recimo zbog ke

promaaja)
druga load traje 4 clocks (pogodak).
inicijalno R1 = 80.
branch je predvidjen kao taken (obavlja se).
posmatramo izvrenje prve dve iteracije

Loop primer
Instruction status:
ITER Instruction
1
1
1
2
2
2

LD
MULTD
SD
LD
MULTD
SD

F0
F4
F4
F0
F4
F4

0
F0
0
0
F0
0

R1
F2
R1
R1
F2
R1

Reservation Stations:
Time

Name Busy
Add1
No
Add2
No
Add3
No
Mult1 No
Mult2 No

Op

Vj

Exec Write
Issue CompResult

S1
Vk

S2
Qj

RS
Qk

Busy Addr
Load1
Load2
Load3
Store1
Store2
Store3

No
No
No
No
No
No

Code:
LD
MULTD
SD
SUBI
BNEZ

F0
F4
F4
R1
R1

Fu

0
F0
0
R1
Loop

R1
F2
R1
#8

...

F30

Register result status

Clock
0

F0

R1
80

Fu

F2

F4

F6

F8

F10 F12

Loop primer Cycle 1


Instruction status:
ITER Instruction
1
1
1
2
2
2

LD
MULTD
SD
LD
MULTD
SD

F0
F4
F4
F0
F4
F4

0
F0
0
0
F0
0

R1
F2
R1
R1
F2
R1

Reservation Stations:
Time

Name Busy
Add1
No
Add2
No
Add3
No
Mult1 No
Mult2 No

Op

Vj

Exec Write
Issue CompResult
1

S1
Vk

S2
Qj

RS
Qk

Busy Addr

Fu

Load1
Load2
Load3
Store1
Store2
Store3

Yes
No
No
No
No
No

80

Code:
LD
MULTD
SD
SUBI
BNEZ

F0
F4
F4
R1
R1

0
F0
0
R1
Loop

R1
F2
R1
#8

...

F30

Register result status

Clock
1

F0

R1
80

Fu Load1

Prva load izdata

F2

F4

F6

F8

F10 F12

Loop primer Cycle 2


Instruction status:
ITER Instruction
1
1
1
2
2
2

LD
MULTD
SD
LD
MULTD
SD

F0
F4
F4
F0
F4
F4

0
F0
0
0
F0
0

R1
F2
R1
R1
F2
R1

Reservation Stations:
Time

Name Busy Op
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd
Mult2 No

Vj

Exec Write
Issue CompResult
1
2

S1
Vk

S2
Qj

RS
Qk

R(F2) Load1

Busy Addr

Fu

Load1
Load2
Load3
Store1
Store2
Store3

Yes
No
No
No
No
No

80

Code:
LD
MULTD
SD
SUBI
BNEZ

F0
F4
F4
R1
R1

0
F0
0
R1
Loop

R1
F2
R1
#8

...

F30

Register result status

Clock
2

F0

R1
80

Fu Load1

MULTD izdata

F2

F4
Mult1

F6

F8

F10 F12

Loop primer Cycle 3


Instruction status:
ITER Instruction
1
1
1
2
2
2

LD
MULTD
SD
LD
MULTD
SD

F0
F4
F4
F0
F4
F4

0
F0
0
0
F0
0

R1
F2
R1
R1
F2
R1

Reservation Stations:
Time

Name Busy Op
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd
Mult2 No

Vj

Exec Write
Issue CompResult
1
2
3

S1
Vk

S2
Qj

RS
Qk

R(F2) Load1

Busy Addr

Fu

Load1
Load2
Load3
Store1
Store2
Store3

Yes
No
No
Yes
No
No

80

80

Mult1

Code:
LD
MULTD
SD
SUBI
BNEZ

F0
F4
F4
R1
R1

0
F0
0
R1
Loop

R1
F2
R1
#8

...

F30

Register result status

Clock
3

R1
80

F0

F2

Fu Load1

Izdata je SD
implicitno preimenovanje

F4
Mult1

F6

F8

F10 F12

ta to fiziki znai?
From Mem

FP Op
Queue
Load Buffers

Load1
Load2
Load3
Load4
Load5
Load6

FP Registers

F0:
F0:Load
Load11
F4:
F4:Mult1
Mult1

addr:
addr:80
80
Store
Buffers

Addr:
Addr:80
80 Mult1
Mult1

Add1
Add2
Add3

Mult1 mul R(F2)


Mult2

FP
FP adders
adders

Reservation
Stations

Load1

To Mem
FP
FP multipliers
multipliers

Common Data Bus (CDB)

Loop primer Cycle 4


Instruction status:
ITER Instruction
1
1
1
2
2
2

LD
MULTD
SD
LD
MULTD
SD

F0
F4
F4
F0
F4
F4

0
F0
0
0
F0
0

R1
F2
R1
R1
F2
R1

Reservation Stations:
Time

Name Busy Op
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd
Mult2 No

Vj

Exec Write
Issue CompResult
1
2
3

S1
Vk

S2
Qj

RS
Qk

R(F2) Load1

Busy Addr

Fu

Load1
Load2
Load3
Store1
Store2
Store3

Yes
No
No
Yes
No
No

80

80

Mult1

Code:
LD
MULTD
SD
SUBI
BNEZ

F0
F4
F4
R1
R1

0
F0
0
R1
Loop

R1
F2
R1
#8

...

F30

Register result status

Clock
4

R1
80

F0
Fu Load1

F2

F4

F6

F8

Mult1

izdavanje SUBI Instrukcije

F10 F12

Loop primer Cycle 5


Instruction status:
ITER Instruction
1
1
1
2
2
2

LD
MULTD
SD
LD
MULTD
SD

F0
F4
F4
F0
F4
F4

0
F0
0
0
F0
0

R1
F2
R1
R1
F2
R1

Reservation Stations:
Time

Name Busy Op
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd
Mult2 No

Vj

Exec Write
Issue CompResult
1
2
3

S1
Vk

S2
Qj

RS
Qk

R(F2) Load1

Busy Addr

Fu

Load1
Load2
Load3
Store1
Store2
Store3

Yes
No
No
Yes
No
No

80

80

Mult1

Code:
LD
MULTD
SD
SUBI
BNEZ

F0
F4
F4
R1
R1

0
F0
0
R1
Loop

R1
F2
R1
#8

...

F30

Register result status

Clock
5

R1
72

F0
Fu Load1

F2

F4
Mult1

i, BNEZ instrukcije

F6

F8

F10 F12

Loop primer Cycle 6


Instruction status:
ITER Instruction
1
1
1
2
2
2

LD
MULTD
SD
LD
MULTD
SD

F0
F4
F4
F0
F4
F4

0
F0
0
0
F0
0

R1
F2
R1
R1
F2
R1

Reservation Stations:
Time

Name Busy Op
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd
Mult2 No

Vj

Exec Write
Issue CompResult
1
2
3
6

S1
Vk

S2
Qj

RS
Qk

R(F2) Load1

Busy Addr

Fu

Load1
Load2
Load3
Store1
Store2
Store3

Yes
Yes
No
Yes
No
No

80
72
80

Mult1

Code:
LD
MULTD
SD
SUBI
BNEZ

F0
F4
F4
R1
R1

0
F0
0
R1
Loop

R1
F2
R1
#8

...

F30

Register result status

Clock
6

R1
72

F0
Fu Load2

F2

F4

F6

F8

F10 F12

Mult1

Izdaje se sledea LD; u F0 se nikad ne upie rezultat Load


sa lokacije 80

Loop Example Cycle 7


Instruction status:
ITER Instruction
1
1
1
2
2
2

LD
MULTD
SD
LD
MULTD
SD

F0
F4
F4
F0
F4
F4

0
F0
0
0
F0
0

R1
F2
R1
R1
F2
R1

Reservation Stations:
Time

Name Busy Op
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd
Mult2 Yes Multd

Vj

Exec Write
Issue CompResult
1
2
3
6
7
S1
Vk

S2
Qj

RS
Qk

R(F2) Load1
R(F2) Load2

Busy Addr

Fu

Load1
Load2
Load3
Store1
Store2
Store3

Yes
Yes
No
Yes
No
No

80
72
80

Mult1

Code:
LD
MULTD
SD
SUBI
BNEZ

F0
F4
F4
R1
R1

0
F0
0
R1
Loop

R1
F2
R1
#8

...

F30

Register result status

Clock
7

R1
72

F0
Fu Load2

F2

F4

F6

F8

F10 F12

Mult2

Izadje se i druga MULTD; Registarski fajl potpuno izolovan od


iteracije 1

Loop Example Cycle 8


Instruction status:
ITER Instruction
1
1
1
2
2
2

LD
MULTD
SD
LD
MULTD
SD

F0
F4
F4
F0
F4
F4

0
F0
0
0
F0
0

R1
F2
R1
R1
F2
R1

1
2
3
6
7
8

Vj

S1
Vk

Reservation Stations:
Time

Exec Write
Issue CompResult

Name Busy Op
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd
Mult2 Yes Multd

S2
Qj

RS
Qk

R(F2) Load1
R(F2) Load2

Busy Addr

Fu

Load1
Load2
Load3
Store1
Store2
Store3

Yes
Yes
No
Yes
Yes
No

80
72
80
72

Mult1
Mult2

Code:
LD
MULTD
SD
SUBI
BNEZ

F0
F4
F4
R1
R1

0
F0
0
R1
Loop

R1
F2
R1
#8

...

F30

Register result status

Clock
8

R1
72

F0
Fu Load2

F2

F4

F6

F8

F10 F12

Mult2

Izdata je i druga SD; prva i druga iteracija se potpuno

preklapaju

ta to fiziki znai?
FP Registers

From Mem

FP Op
Queue
Load Buffers

F0:
F0:Load2
Load2
F4:
F4:Mult2
Mult2

Load1 addr:
addr:80
80
72
Load2 addr:
addr: 72
Load3
Load4
Load5
Load6

Store
Buffers

Addr:
Addr:80
80 Mult1
Mult1
Addr:
72
Mult2
Addr: 72 Mult2

Add1
Add2
Add3

Mult1 mul R(F2)


Mult2 mul R(F2)

FP
FP adders
adders

Reservation
Stations

Load1
Load2

To Mem
FP
FP multipliers
multipliers

Common Data Bus (CDB)

Loop primer Cycle 9


Instruction status:
ITER Instruction
1
1
1
2
2
2

LD
MULTD
SD
LD
MULTD
SD

F0
F4
F4
F0
F4
F4

0
F0
0
0
F0
0

R1
F2
R1
R1
F2
R1

1
2
3
6
7
8

Vj

S1
Vk

S2
Qj

Reservation Stations:
Time

Exec Write
Issue CompResult

Name Busy Op
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd
Mult2 Yes Multd

RS
Qk

R(F2) Load1
R(F2) Load2

Busy Addr

Fu

Load1
Load2
Load3
Store1
Store2
Store3

Yes
Yes
No
Yes
Yes
No

80
72
80
72

Mult1
Mult2

Code:
LD
MULTD
SD
SUBI
BNEZ

F0
F4
F4
R1
R1

0
F0
0
R1
Loop

R1
F2
R1
#8

...

F30

Register result status

Clock
9

R1
72

F0
Fu Load2

F2

F4

F6

F8

F10 F12

Mult2

Load1 okonana: ko eka na rezultat?


izdavanje SUBI

Loop primer Cycle 10


Instruction status:
ITER Instruction
1
1
1
2
2
2

LD
MULTD
SD
LD
MULTD
SD

F0
F4
F4
F0
F4
F4

0
F0
0
0
F0
0

R1
F2
R1
R1
F2
R1

Reservation Stations:
Time

Exec Write
Issue CompResult
1
2
3
6
7
8
S1
Vk

10

10

S2
Qj

Name Busy Op
Vj
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd M[80] R(F2)
Mult2 Yes Multd
R(F2) Load2

RS
Qk

Busy Addr
Load1
Load2
Load3
Store1
Store2
Store3

No
Yes
No
Yes
Yes
No

Code:
LD
MULTD
SD
SUBI
BNEZ

F0
F4
F4
R1
R1

Fu

72
80
72

Mult1
Mult2

0
F0
0
R1
Loop

R1
F2
R1
#8

...

F30

Register result status

Clock
10

R1
64

F0
Fu Load2

F2

F4

F6

F8

F10 F12

Mult2

Load2 okonana: ko eka rezultat?

Loop primer Cycle 11


Instruction status:
ITER Instruction
1
1
1
2
2
2

LD
MULTD
SD
LD
MULTD
SD

F0
F4
F4
F0
F4
F4

0
F0
0
0
F0
0

R1
F2
R1
R1
F2
R1

Reservation Stations:
Time

3
4

Exec Write
Issue CompResult
1
2
3
6
7
8
S1
Vk

Name Busy Op
Vj
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd M[80] R(F2)
Mult2 Yes Multd M[72] R(F2)

10

10

11

S2
Qj

RS
Qk

Busy Addr
Load1
Load2
Load3
Store1
Store2
Store3

No
No
Yes
Yes
Yes
No

Code:
LD
MULTD
SD
SUBI
BNEZ

F0
F4
F4
R1
R1

64
80
72

Fu

Mult1
Mult2

0
F0
0
R1
Loop

R1
F2
R1
#8

...

F30

Register result status

Clock
11

R1
64

F0
Fu Load3

F2

F4

F6

F8

F10 F12

Mult2

sledea load u sekvenci (iz tree iteracije)

Loop Example Cycle 12


Instruction status:
ITER Instruction
1
1
1
2
2
2

LD
MULTD
SD
LD
MULTD
SD

F0
F4
F4
F0
F4
F4

0
F0
0
0
F0
0

R1
F2
R1
R1
F2
R1

Reservation Stations:
Time

2
3

Exec Write
Issue CompResult
1
2
3
6
7
8
S1
Vk

Name Busy Op
Vj
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd M[80] R(F2)
Mult2 Yes Multd M[72] R(F2)

10

10

11

S2
Qj

RS
Qk

Busy Addr
Load1
Load2
Load3
Store1
Store2
Store3

No
No
Yes
Yes
Yes
No

Code:
LD
MULTD
SD
SUBI
BNEZ

F0
F4
F4
R1
R1

64
80
72

Fu

Mult1
Mult2

0
F0
0
R1
Loop

R1
F2
R1
#8

...

F30

Register result status

Clock
12

R1
64

F0
Fu Load3

F2

F4

F6

F8

F10 F12

Mult2

zato se ne izdaje trea MULD?

Loop Example Cycle 13


Instruction status:
ITER Instruction
1
1
1
2
2
2

LD
MULTD
SD
LD
MULTD
SD

F0
F4
F4
F0
F4
F4

0
F0
0
0
F0
0

R1
F2
R1
R1
F2
R1

Reservation Stations:
Time

1
2

Exec Write
Issue CompResult
1
2
3
6
7
8
S1
Vk

Name Busy Op
Vj
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd M[80] R(F2)
Mult2 Yes Multd M[72] R(F2)

10

10

11

S2
Qj

RS
Qk

Busy Addr
Load1
Load2
Load3
Store1
Store2
Store3

No
No
Yes
Yes
Yes
No

Code:
LD
MULTD
SD
SUBI
BNEZ

F0
F4
F4
R1
R1

64
80
72

Fu

Mult1
Mult2

0
F0
0
R1
Loop

R1
F2
R1
#8

...

F30

Register result status

Clock
13

R1
64

F0

F2

Fu Load3

Mult1 i Mult2 su jo aktivne

F4
Mult2

F6

F8

F10 F12

Loop primer Cycle 14


Instruction status:
ITER Instruction
1
1
1
2
2
2

LD
MULTD
SD
LD
MULTD
SD

F0
F4
F4
F0
F4
F4

0
F0
0
0
F0
0

R1
F2
R1
R1
F2
R1

Reservation Stations:
Time

0
1

Exec Write
Issue CompResult
1
2
3
6
7
8

9
14
10

11

S1
Vk

S2
Qj

RS
Qk

Name Busy Op
Vj
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd M[80] R(F2)
Mult2 Yes Multd M[72] R(F2)

10

Busy Addr
Load1
Load2
Load3
Store1
Store2
Store3

No
No
Yes
Yes
Yes
No

Code:
LD
MULTD
SD
SUBI
BNEZ

F0
F4
F4
R1
R1

64
80
72

Fu

Mult1
Mult2

0
F0
0
R1
Loop

R1
F2
R1
#8

...

F30

Register result status

Clock
14

R1
64

F0
Fu Load3

F2

F4

F6

Mult2

Mult1 okonana. ko eka?

F8

F10 F12

Loop primer Cycle 15


Instruction status:
ITER Instruction
1
1
1
2
2
2

LD
MULTD
SD
LD
MULTD
SD

F0
F4
F4
F0
F4
F4

0
F0
0
0
F0
0

R1
F2
R1
R1
F2
R1

Reservation Stations:
Time

Exec Write
Issue CompResult
1
2
3
6
7
8

9
14
10
15

11

S1
Vk

S2
Qj

RS
Qk

Name Busy Op
Vj
Add1
No
Add2
No
Add3
No
Mult1 No
Mult2 Yes Multd M[72] R(F2)

10
15

Busy Addr
Load1
Load2
Load3
Store1
Store2
Store3

No
No
Yes
Yes
Yes
No

Code:
LD
MULTD
SD
SUBI
BNEZ

F0
F4
F4
R1
R1

64
80
72

Fu

[80]*R2
Mult2

0
F0
0
R1
Loop

R1
F2
R1
#8

...

F30

Register result status

Clock
15

R1
64

F0
Fu Load3

F2

F4
Mult2

Mult1 slobodna;
Mult2 okonana. ko eka?

F6

F8

F10 F12

Loop primer Cycle 16


Instruction status:
ITER Instruction
1
1
1
2
2
2

LD
MULTD
SD
LD
MULTD
SD

F0
F4
F4
F0
F4
F4

0
F0
0
0
F0
0

R1
F2
R1
R1
F2
R1

1
2
3
6
7
8

9
14
10
15

11
16

Vj

S1
Vk

S2
Qj

RS
Qk

Reservation Stations:
Time

Exec Write
Issue CompResult

Name Busy Op
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd
Mult2 No

10
15

R(F2) Load3

Busy Addr
Load1
Load2
Load3
Store1
Store2
Store3

No
No
Yes
Yes
Yes
No

Code:
LD
MULTD
SD
SUBI
BNEZ

F0
F4
F4
R1
R1

64
80
72

Fu

[80]*R2
[72]*R2

0
F0
0
R1
Loop

R1
F2
R1
#8

...

F30

Register result status

Clock
16

R1
64

F0
Fu Load3

F2

F4

F6

F8

F10 F12

Mult1

MULTD iz tree iteracije se izdaje (FU Mult1 aktivna)

Loop primer Cycle 17


Instruction status:
ITER Instruction
1
1
1
2
2
2

LD
MULTD
SD
LD
MULTD
SD

F0
F4
F4
F0
F4
F4

0
F0
0
0
F0
0

R1
F2
R1
R1
F2
R1

1
2
3
6
7
8

9
14
10
15

11
16

Vj

S1
Vk

S2
Qj

RS
Qk

Reservation Stations:
Time

Exec Write
Issue CompResult

Name Busy Op
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd
Mult2 No

10
15

R(F2) Load3

Busy Addr

Fu

Load1
Load2
Load3
Store1
Store2
Store3

No
No
Yes
Yes
Yes
Yes

64
80
72
64

Code:
LD
MULTD
SD
SUBI
BNEZ

F0
F4
F4
R1
R1

0
F0
0
R1
Loop

R1
F2
R1
#8

...

F30

[80]*R2
[72]*R2
Mult1

Register result status

Clock
17

R1
64

F0
Fu Load3

F2

F4
Mult1

F6

F8

F10 F12

Loop primer Cycle 18


Instruction status:
ITER Instruction
1
1
1
2
2
2

LD
MULTD
SD
LD
MULTD
SD

F0
F4
F4
F0
F4
F4

0
F0
0
0
F0
0

R1
F2
R1
R1
F2
R1

1
2
3
6
7
8

9
14
18
10
15

10
15

Vj

S1
Vk

S2
Qj

RS
Qk

Reservation Stations:
Time

Exec Write
Issue CompResult

Name Busy Op
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd
Mult2 No

11
16

R(F2) Load3

Busy Addr

Fu

Load1
Load2
Load3
Store1
Store2
Store3

No
No
Yes
Yes
Yes
Yes

64
80
72
64

Code:
LD
MULTD
SD
SUBI
BNEZ

F0
F4
F4
R1
R1

0
F0
0
R1
Loop

R1
F2
R1
#8

...

F30

[80]*R2
[72]*R2
Mult1

Register result status

Clock
18

R1
64

F0
Fu Load3

F2

F4
Mult1

F6

F8

F10 F12

Loop primer Cycle 19


Instruction status:
ITER Instruction
1
1
1
2
2
2

LD
MULTD
SD
LD
MULTD
SD

F0
F4
F4
F0
F4
F4

0
F0
0
0
F0
0

R1
F2
R1
R1
F2
R1

1
2
3
6
7
8

9
14
18
10
15
19

10
15
19
11
16

Vj

S1
Vk

S2
Qj

RS
Qk

Reservation Stations:
Time

Exec Write
Issue CompResult

Name Busy Op
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd
Mult2 No

R(F2) Load3

Busy Addr
Load1
Load2
Load3
Store1
Store2
Store3

No
No
Yes
No
Yes
Yes

Code:
LD
MULTD
SD
SUBI
BNEZ

F0
F4
F4
R1
R1

Fu

64
72
64

[72]*R2
Mult1

0
F0
0
R1
Loop

R1
F2
R1
#8

...

F30

Register result status

Clock
19

R1
64

F0
Fu Load3

F2

F4
Mult1

F6

F8

F10 F12

Loop primer Cycle 20


Instruction status:
ITER Instruction
1
1
1
2
2
2

LD
MULTD
SD
LD
MULTD
SD

F0
F4
F4
F0
F4
F4

0
F0
0
0
F0
0

R1
F2
R1
R1
F2
R1

1
2
3
6
7
8

9
14
18
10
15
19

10
15
19
11
16
20

Vj

S1
Vk

S2
Qj

RS
Qk

Reservation Stations:
Time

Exec Write
Issue CompResult

Name Busy Op
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd
Mult2 No

R(F2) Load3

Busy Addr
Load1
Load2
Load3
Store1
Store2
Store3

No
No
Yes
No
No
Yes

Code:
LD
MULTD
SD
SUBI
BNEZ

F0
F4
F4
R1
R1

Fu

64

64

Mult1

0
F0
0
R1
Loop

R1
F2
R1
#8

...

F30

Register result status

Clock
20

R1
64

F0
Fu Load3

F2

F4
Mult1

F6

F8

F10 F12

Zato Tomasulo moe da preklapa iteracije petlje?


Preimenovanje registara
Razliite iteracije koriste razliite fizike destinacije za

registre (dinamiko odmotavanje petlje)


imena registara zamenjena imenima RS koje generiu
rezultat
efektivno poveava veliinu registarskog fajla

You might also like