View
234
Download
0
Category
Preview:
Citation preview
8/19/2019 Scoreboarding i Tomasulo Algoritam
1/78
Scoreboarding i Tomasulo
algoritam
8/19/2019 Scoreboarding i Tomasulo Algoritam
2/78
Scoreboard
• Instrukcije slati ka funkcionalnim jedinicama na osnovu tipainstrukcija i da tamo čekaju argumente
• Za svaku funcionalnu jedinicu postoji samo jedna instrukcijakoja može da se rasporedi na nju u jednom trenutku – bilo
da je spremna ili ne (inicijalna pretpostavka je da nemapipeline-a i tako je u primeru, a samo je raličito trajanjeivr!avanja na raličitim funkcionalnim jedinicama"
• #okle slati instrukcije (idavati – issue" – ograničen brojmesta a instrukcije koje potencijalno mogu da se ivr!e
(bog ograničenog broja funkcionalni$ jedinica" – ma!inskoograničenje veličine data-%o& proora• 'ontrola avisnosti po podacima i ugraene data%o&
ma!ine radi skup statusni$ tabela - Scoreboard
8/19/2019 Scoreboarding i Tomasulo Algoritam
3/78
Scoreboard )rc$itecture(*#* ++"
- u n c t i o n a l . n i t s
/ e g i s
t e r s
0 1ult
0 1ult0 1ult
0 1ult
0 #ivide
0 #ivide
0 )dd
0 )dd
Integer
Integer
1emor2S*3/453)/#
S*3/453)/#
8/19/2019 Scoreboarding i Tomasulo Algoritam
4/78
#inamički rasporeivati –kako6
• 7a slici – proor je maksimalno 8 instrukcija ito dva 0 množenja, po jedno 0 deljenje isabiranje i jedna jedinica load9store koja se
ove integer• 'ako argumente6 7e dovoliti dve instrukcije
idate a ivr!avanje, a koje upisuju u istiregistar da bi jednonačno odredili
argumente: Zadržava se in-order redosledupisa u sve registre – ilane avisnosti (;);"se po!tuju na račun smanjenja paralelima
8/19/2019 Scoreboarding i Tomasulo Algoritam
5/78
=ekanje argumenata
• )rgument je spreman ako nijedna idata, aneavr!ena, instrukcija ne upisuje u registar aargument ili se upravo upisuje reultat uregistar a argument od strane neke instrukcije
• 'ada oba argumenta postanu spremna – možeivr!avanje – prave avisnosti (/);"
• #a su bile dovoljene dve instrukcije koje
upisuju, ne bi nali koji je upis relevantan aargument na!e instrukciju, jer nemapreimenovanja
8/19/2019 Scoreboarding i Tomasulo Algoritam
6/78
Ivr!avanje i upis reultata
• 7a kraju ivr!avanja se mora abeležiti da je gotovoivr!avanje
• .pis – da li smemo beuslovno da upisujemo6• 74 – jer neka instrukcija koja koristi taj registar kao
argument, možda nije očitala registar, jer jo! čekadrugi argument – ovo je ograničenje paralelimabog antiavisnosti (;)/"
• Za taj slučaj treba akočiti funkcionalnu jedinicu
(>"
8/19/2019 Scoreboarding i Tomasulo Algoritam
7/78
'ako voditi evidenciju - Scoreboard
• Tri statusne tabele – Status svih izdatih instrukcija SII – faa u
ivr!avanju (Idavanje u popunjavanje scoreboarda,čekanje i čitanje argumenata, ivr!avanje, upis"
– Status svake funkcionalne jedinice SFJ(da li jeaueta, koja se operacija ivr!ava, odredi!ni registar,registri a čitanje argumenata i upis, funkcionalne jedinice koje upisuju argumente, ako nije ve?iračunat argument i read2 %agovi a argumente"
– Status svih registara – SR koje jedinice ?e da upi!ureultat u svaki registar, ako ima idati$ instrukcijakoje ?e da upi!u u taj registar
8/19/2019 Scoreboarding i Tomasulo Algoritam
8/78
Za!to svaka statusna tabela(##@"
Status svih izdatih instrukcija )ko je pročitala argumente, ne adržava prepisivanje registara, ako
je poslednja koja koristi argument: (smanji ka!njenje bogantiavisnosti"
'ada vr!i upis reultata u neki registar, sve instrukcije u prooru koje
čekaju taj reultat ga mogu čitati od narednog ciklusa (argumentipostaju data read2"
Status svake funkcionalne jedinice• Zauetost (od ovoga avisi da li neku instrukciju možemo da
ubacimo u proor"
• /egistri argumenata i reultata (bog formiranja grafa avisnosti"• 'oje jedinice generi!u argumente (da preslikamo graf na
funkcionalne jedinice"• #a li su argumenti spremni (dinamički data read2 skup" Status svih registara (da se spreči idavanje dve instrukcije koje
upisuju u isti registar - ;);"
8/19/2019 Scoreboarding i Tomasulo Algoritam
9/78
'oliko ima vrednosti aar$itekturalne registre
• >edna u svakom registru koja se koristi dok nijepročitana od strane poslednje instrukcije koja je koristi:
• 'ako namo koja je poslednja – dolai novi upis u tajar$itekturalni registar, pa mora biti ili u instrukcijskom
proora, ili su sve avr!ene• >edna može biti akočena na ilau: Ta akočena se
prosleuje do svi$ instrukcija koje čekaju prekoregistra, ali tek kada je pret$odna očitana od svi$ ;)/
•
0raktično nema preimenovanja, ali je dovoljenonapredovanje instrukcije koja prepisuje registar doupisa, kada pret$odna vrednost nije očitana od svi$
• 7adalje primer sa kursa na 5erkle2, proor maA 8instrukcija
8/19/2019 Scoreboarding i Tomasulo Algoritam
10/78
Scoreboard )rc$itecture(*#* ++"
- u n c t i o n a l . n i t s
/ e g i s
t e r s
0 1ult0 1ult0 1ult0 1ult
0 #ivide0 #ivide
0 )dd0 )dd
IntegerInteger
1emor2S*3/453)/#S*3/453)/#
8/19/2019 Scoreboarding i Tomasulo Algoritam
11/78
Scoreboard Implications• 3ut-of-order completion BC ;)/, ;); $aards6
• Solutions for ;)/D – Stall &riteback until registers $ave been read – /ead registers onl2 during /ead 3perands stage
• Solution for ;);D –
#etect $aard and stall issue of ne& instruction untilot$er instruction completes
• 7o register renaming<• 7eed to $ave multiple instructions in eAecution
p$ase BC multiple eAecution units or pipelinedeAecution units
• Scoreboard keeps track of dependencies bet&eeninstructions t$at $ave alread2 issued:
• Scoreboard replaces I#, 4E, ;5 &it$ F stages
8/19/2019 Scoreboarding i Tomasulo Algoritam
12/78
our Stages of Scoreboard*ontrol
• IssueGdecode instructions H c$eck for structural$aards (I#" – Instructions issued in program order (for $aard c$ecking" – #onJt issue if structural $aard (busy u SFJ) – #onJt issue if instruction is output dependent on an2
previousl2 issued but uncompleted instruction (no ;);$aards" (destinacioni registar u SR ima nezavršen upis)
• Read operandsG&ait until no data $aards, t$en readoperands (I#K" – )ll real dependencies (/); $aards" resolved in t$is
stage, since &e &ait for instructions to &rite back data:(čekaju se ready bitovi oba argumenta u SFJ)
– 7o for&arding of data in t$is model< (svaki rezultat se prvoupiše u registar, pre korišenja kao argument)
8/19/2019 Scoreboarding i Tomasulo Algoritam
13/78
our Stages of Scoreboard*ontrol
• ExecutionGoperate on operands (4E" – T$e functional unit begins eAecution upon receiving
operands: ;$en t$e result is read2, it notiLes t$escoreboard t$at it $as completed eAecution:
• Write resultGLnis$ eAecution (;5" – Stall until no ;)/ $aards &it$ previous instructionsD
4AampleD DIVDF0,F2,F4
ADDDF10,F0,F8 SUBDF8,F8,F14
scoreboard &ould stall S.5# until )### readsoperands
8/19/2019 Scoreboarding i Tomasulo Algoritam
14/78
T$ree 0arts of t$eScoreboard
•
Instruction statusD;$ic$ of F steps t$e instruction is in
• unctional unit statusDGIndicates t$e state of t$e functionalunit (.": M Lelds for eac$ functional unit
5us2D Indicates &$et$er t$e unit is bus2 or not3pD3peration to perform in t$e unit (e:g:, N or –"iD #estination registerj,kD Source-register numbersOj,OkD unctional units producing source registers j, k
/j,/kD lags indicating &$en j, k are read2
• /egister result statusGIndicates &$ic$ functional unit &ill &riteeac$ register, if one eAists: 5lank &$en no pending instructions&ill &rite t$at register
8/19/2019 Scoreboarding i Tomasulo Algoritam
15/78
Scoreboard 4Aample
8/19/2019 Scoreboarding i Tomasulo Algoritam
16/78
#etailed Scoreboard 0ipeline*ontrol
/eadoperands
4Aecutioncomplete
Instructionstatus
;riteresult
Issue
5ookkeeping
/j← 7oP /k← 7o
∀f(if Oj(f"B. t$en /j(f"← Qes"P∀f(if Ok(f"B. t$en /j(f"← Qes"P/esult(i(.""← P 5us2(."← 7o
5us2(."← 2esP 3p(."← opPi(."← R#JP j(."← RSJPk(."← RSKJP Oj← /esult(SJ"P
Ok←
/esult(RSKJ"P /j←
not OjP/k← not OkP /esult(#J"← .P
/j and /k
unctional unitdone
;ait until
∀f((j(f"i(."or /j(f"B7o" H(k(f" i(."or/k( f "B7o""
7ot bus2 (."and not
result(#"
8/19/2019 Scoreboarding i Tomasulo Algoritam
17/78
A D*2cle Instruction status: Read Exec Write
Instruction j k Issue Oper Comp Result
LD F6 34+ R2 1
LD F2 45+ R3
MULTD F0 F2 F4
SUBD F8 F6 F2
DIVD F10 F0 F6
ADDD F6 F8 F2
Functional unit status: dest S1 S2 FU FU Fj? Fk?
!ime "ame us! Op Fi Fj Fk "j "k Rj Rk
Integer es Lo!" F6 R2 es
Mu#t1 $o
Mu#t2 $o
A"" $o
Di%i"e $o
Re#ister result status:
oc' F$ F2 F% F& F' F1$ F12 ((( F)$1 FU Integer
8/19/2019 Scoreboarding i Tomasulo Algoritam
18/78
A D*2cle K
•
Issue Knd U#6
Instruction status: Read Exec WriteInstruction j k Issue Oper Comp Result
LD F6 34+ R2 1 2
LD F2 45+ R3
MULTD F0 F2 F4
SUBD F8 F6 F2
DIVD F10 F0 F6
ADDD F6 F8 F2
Functional unit status: dest S1 S2 FU FU Fj? Fk?
*ime +ame us! Op Fi Fj Fk "j "k Rj Rk
Integer es Lo!" F6 R2 es
Mu#t1 $o
Mu#t2 $o
A"" $o
Di%i"e $o
Re#ister result status:
oc' F$ F2 F% F& F' F1$ F12 ((( F)$2 FU Integer
8/19/2019 Scoreboarding i Tomasulo Algoritam
19/78
A D*2cle V
•
Issue 1.UT6
Instruction status: Read Exec WriteInstruction j k Issue Oper Comp Result
LD F6 34+ R2 1 2 3
LD F2 45+ R3
MULTD F0 F2 F4
SUBD F8 F6 F2
DIVD F10 F0 F6
ADDD F6 F8 F2
Functional unit status: dest S1 S2 FU FU Fj? Fk?*ime +ame us! Op Fi Fj Fk "j "k Rj Rk
Integer es Lo!" F6 R2 $o
Mu#t1 $o
Mu#t2 $o
A"" $o
Di%i"e $o
Re#ister result status:
oc' F$ F2 F% F& F' F1$ F12 ((( F)$3 FU Integer
8/19/2019 Scoreboarding i Tomasulo Algoritam
20/78
A D*2cle F Instruction status: Read Exec Write
Instruction j k Issue Oper Com p Result
LD F6 34+ R2 1 2 3 4
LD F2 45+ R3
MULTD F0 F2 F4
SUBD F8 F6 F2
DIVD F10 F0 F6
ADDD F6 F8 F2
Functional unit status: dest S1 S2 FU FU Fj? Fk?*ime +ame us! Op Fi Fj Fk "j "k Rj Rk
Integer $o
Mu#t1 $o
Mu#t2 $o
A"" $o
Di%i"e $o
Re#ister result status:
oc' F$ F2 F% F& F' F1$ F12 ((( F)$4 FU Integer
8/19/2019 Scoreboarding i Tomasulo Algoritam
21/78
A D*2cle 8 Instruction status: Read Exec Write
Instruction j k Issue Oper Comp Result
LD F6 34+ R2 1 2 3 4
LD F2 45+ R3 5
MULTD F0 F2 F4
SUBD F8 F6 F2
DIVD F10 F0 F6
ADDD F6 F8 F2
Functional unit status: dest S1 S2 FU FU Fj? Fk?*ime +ame us! Op Fi Fj Fk "j "k Rj Rk
Integer es Lo!" F2 R3 es
Mu#t1 $o
Mu#t2 $o
A"" $o
Di%i"e $o
Re#ister result status:
oc' F$ F2 F% F& F' F1$ F12 ((( F)$5 FU Integer
8/19/2019 Scoreboarding i Tomasulo Algoritam
22/78
A D*2cle + Instruction status: Read Exec Write
Instruction j k Issue Oper Comp Result
LD F6 34+ R2 1 2 3 4
LD F2 45+ R3 5 6
MULTD F0 F2 F4 6
SUBD F8 F6 F2
DIVD F10 F0 F6
ADDD F6 F8 F2
Functional unit status: dest S1 S2 FU FU Fj? Fk?*ime +ame us! Op Fi Fj Fk "j "k Rj Rk
Integer es Lo!" F2 R3 es
Mu#t1 es Mu#t F0 F2 F4 Integer $o es
Mu#t2 $o
A"" $o
Di%i"e $o
Re#ister result status:
oc' F$ F2 F% F& F' F1$ F12 ((( F)$6 FU Mu#t1 Integer
8/19/2019 Scoreboarding i Tomasulo Algoritam
23/78
A D*2cle W
•
/ead multipl2 operands6
Instruction status: Read Exec WriteInstruction j k Issue Oper Comp Result
LD F6 34+ R2 1 2 3 4
LD F2 45+ R3 5 6 (
1.UT# -, -K -F 6
SUBD F8 F6 F2 (
DIVD F10 F0 F6
ADDD F6 F8 F2
Functional unit status: dest S1 S2 FU FU Fj? Fk?*ime +ame us! Op Fi Fj Fk "j "k Rj Rk
Integer es Lo!" F2 R3 $o
Mu#t1 es Mu#t F0 F2 F4 Integer $o es
Mu#t2 $o
A"" es Su) F8 F6 F2 Integer es $o
Di%i"e $o
Re#ister result status:
oc' F$ F2 F% F& F' F1$ F12 ((( F)$7 FU Mu#t1 Integer A""
S b d 4 l * l X
8/19/2019 Scoreboarding i Tomasulo Algoritam
24/78
Scoreboard 4AampleD *2cle Xa(irst $alf of clock c2cle"
Instruction status: Read Exec WriteInstruction j k Issue Oper Comp Result
LD F6 34+ R2 1 2 3 4
LD F2 45+ R3 5 6 (
MULTD F0 F2 F4 6
SUBD F8 F6 F2 (
DIVD F10 F0 F6 8
ADDD F6 F8 F2
Functional unit status: dest S1 S2 FU FU Fj? Fk?*ime +ame us! Op Fi Fj Fk "j "k Rj Rk
Integer es Lo!" F2 R3 $o
Mu#t1 es Mu#t F0 F2 F4 Integer $o es
Mu#t2 $o
A"" es Su) F8 F6 F2 Integer es $o
Di%i"e es Di% F10 F0 F6 Mu#t1 $o es
Re#ister result status:
oc' F$ F2 F% F& F' F1$ F12 ((( F)$8 FU Mu#t1 Integer A"" Di%i"e
S b d 4 l * l Xb
8/19/2019 Scoreboarding i Tomasulo Algoritam
25/78
Scoreboard 4AampleD *2cle Xb(Second $alf of clock c2cle"
Instruction status: Read Exec WriteInstruction j k Issue Oper Comp Result
LD F6 34+ R2 1 2 3 4
LD F2 45+ R3 5 6 ( 8
MULTD F0 F2 F4 6
SUBD F8 F6 F2 (
DIVD F10 F0 F6 8
ADDD F6 F8 F2
Functional unit status: dest S1 S2 FU FU Fj? Fk?*ime +ame us! Op Fi Fj Fk "j "k Rj Rk
Integer $o
Mu#t1 es Mu#t F0 F2 F4 es es
Mu#t2 $o
A"" es Su) F8 F6 F2 es es
Di%i"e es Di% F10 F0 F6 Mu#t1 $o es
Re#ister result status:
oc' F$ F2 F% F& F' F1$ F12 ((( F)$8 FU Mu#t1 A"" Di%i"e
8/19/2019 Scoreboarding i Tomasulo Algoritam
26/78
A D*2cle M
•
/ead operands for 1.UT H S.56 Issue )###6
7ote/emaining
Instruction status: Read Exec WriteInstruction j k Issue Oper Comp Result
LD F6 34+ R2 1 2 3 4
U# -K F8N /V 5 6 ( 8
MULTD F0 F2 F4 6 *
SUBD F8 F6 F2 ( *
DIVD F10 F0 F6 8
ADDD F6 F8 F2
Functional unit status: dest S1 S2 FU FU Fj? Fk?*ime +ame us! Op Fi Fj Fk "j "k Rj Rk
Integer $o
10 Mu#t1 es Mu#t F0 F2 F4 es es
Mu#t2 $o
2 A"" es Su) F8 F6 F2 es es
Di%i"e es Di% F10 F0 F6 Mu#t1 $o es
Re#ister result status:
oc' F$ F2 F% F& F' F1$ F12 ((( F)$9 FU Mu#t1 A"" Di%i"e
8/19/2019 Scoreboarding i Tomasulo Algoritam
27/78
A D*2cle Instruction status: Read Exec Write
Instruction j k Issue Oper Comp Result
LD F6 34+ R2 1 2 3 4
LD F2 45+ R3 5 6 ( 8
MULTD F0 F2 F4 6 *
SUBD F8 F6 F2 ( *
DIVD F10 F0 F6 8
ADDD F6 F8 F2
Functional unit status: dest S1 S2 FU FU Fj? Fk?*ime +ame us! Op Fi Fj Fk "j "k Rj Rk
Integer $o
* Mu#t1 es Mu#t F0 F2 F4 $o $o
Mu#t2 $o
1 A"" es Su) F8 F6 F2 $o $o
Di%i"e es Di% F10 F0 F6 Mu#t1 $o es
Re#ister result status:
oc' F$ F2 F% F& F' F1$ F12 ((( F)$10 FU Mu#t1 A"" Di%i"e
8/19/2019 Scoreboarding i Tomasulo Algoritam
28/78
A D*2cle Instruction status: Read Exec Write
Instruction j k Issue Oper Comp Result
LD F6 34+ R2 1 2 3 4
LD F2 45+ R3 5 6 ( 8
MULTD F0 F2 F4 6 *
SUBD F8 F6 F2 ( * 11
DIVD F10 F0 F6 8
ADDD F6 F8 F2
Functional unit status: dest S1 S2 FU FU Fj? Fk?*ime +ame us! Op Fi Fj Fk "j "k Rj Rk
Integer $o
8 Mu#t1 es Mu#t F0 F2 F4 $o $o
Mu#t2 $o
0 A"" es Su) F8 F6 F2 $o $o
Di%i"e es Di% F10 F0 F6 Mu#t1 $o es
Re#ister result status:
oc' F$ F2 F% F& F' F1$ F12 ((( F)$11 FU Mu#t1 A"" Di%i"e
8/19/2019 Scoreboarding i Tomasulo Algoritam
29/78
A D*2cle K
•
/ead operands for #IY#6
Instruction status: Read Exec WriteInstruction j k Issue Oper Comp Result
LD F6 34+ R2 1 2 3 4
LD F2 45+ R3 5 6 ( 8
MULTD F0 F2 F4 6 *
SUBD F8 F6 F2 ( * 11 12
DIVD F10 F0 F6 8
ADDD F6 F8 F2
Functional unit status: dest S1 S2 FU FU Fj? Fk?*ime +ame us! Op Fi Fj Fk "j "k Rj Rk
Integer $o
( Mu#t1 es Mu#t F0 F2 F4 $o $o
Mu#t2 $o
A"" $o
Di%i"e es Di% F10 F0 F6 Mu#t1 $o es
Re#ister result status:
oc' F$ F2 F% F& F' F1$ F12 ((( F)$12 FU Mu#t1 Di%i"e
8/19/2019 Scoreboarding i Tomasulo Algoritam
30/78
A D*2cle V Instruction status: Read Exec Write
Instruction j k Issue Oper Comp Result
LD F6 34+ R2 1 2 3 4
LD F2 45+ R3 5 6 ( 8
MULTD F0 F2 F4 6 *
SUBD F8 F6 F2 ( * 11 12
DIVD F10 F0 F6 8
ADDD F6 F8 F2 13
Functional unit status: dest S1 S2 FU FU Fj? Fk?*ime +ame us! Op Fi Fj Fk "j "k Rj Rk
Integer $o
6 Mu#t1 es Mu#t F0 F2 F4 $o $o
Mu#t2 $o
A"" es A"" F6 F8 F2 es es
Di%i"e es Di% F10 F0 F6 Mu#t1 $o es
Re#ister result status:
oc' F$ F2 F% F& F' F1$ F12 ((( F)$13 FU Mu#t1 A"" Di%i"e
8/19/2019 Scoreboarding i Tomasulo Algoritam
31/78
A D*2cle F Instruction status: Read Exec Write
Instruction j k Issue Oper Comp Result
LD F6 34+ R2 1 2 3 4
LD F2 45+ R3 5 6 ( 8
MULTD F0 F2 F4 6 *
SUBD F8 F6 F2 ( * 11 12
DIVD F10 F0 F6 8
ADDD F6 F8 F2 13 14
Functional unit status: dest S1 S2 FU FU Fj? Fk?*ime +ame us! Op Fi Fj Fk "j "k Rj Rk
Integer $o
5 Mu#t1 es Mu#t F0 F2 F4 $o $o
Mu#t2 $o
2 A"" es A"" F6 F8 F2 es es
Di%i"e es Di% F10 F0 F6 Mu#t1 $o es
Re#ister result status:
oc' F$ F2 F% F& F' F1$ F12 ((( F)$14 FU Mu#t1 A"" Di%i"e
8/19/2019 Scoreboarding i Tomasulo Algoritam
32/78
A D*2cle 8 Instruction status: Read Exec Write
Instruction j k Issue Oper Comp Result
LD F6 34+ R2 1 2 3 4
LD F2 45+ R3 5 6 ( 8
MULTD F0 F2 F4 6 *
S.5# -X -+ -K ( * 11 12
DIVD F10 F0 F6 8
ADDD F6 F8 F2 13 14
Functional unit status: dest S1 S2 FU FU Fj? Fk?*ime +ame us! Op Fi Fj Fk "j "k Rj Rk
Integer $o
4 Mu#t1 es Mu#t F0 F2 F4 $o $o
Mu#t2 $o
1 A"" es A"" F6 F8 F2 $o $o
Di%i"e es Di% F10 F0 F6 Mu#t1 $o es
Re#ister result status:
oc' F$ F2 F% F& F' F1$ F12 ((( F)$15 FU Mu#t1 A"" Di%i"e
8/19/2019 Scoreboarding i Tomasulo Algoritam
33/78
A D*2cle + Instruction status: Read Exec Write
Instruction j k Issue Oper Comp Result
LD F6 34+ R2 1 2 3 4
LD F2 45+ R3 5 6 ( 8
MULTD F0 F2 F4 6 *
SUBD F8 F6 F2 ( * 11 12
DIVD F10 F0 F6 8
ADDD F6 F8 F2 13 14 16
Functional unit status: dest S1 S2 FU FU Fj? Fk?*ime +ame us! Op Fi Fj Fk "j "k Rj Rk
Integer $o
3 Mu#t1 es Mu#t F0 F2 F4 $o $o
Mu#t2 $o
0 A"" es A"" F6 F8 F2 $o $o
Di%i"e es Di% F10 F0 F6 Mu#t1 $o es
Re#ister result status:
oc' F$ F2 F% F& F' F1$ F12 ((( F)$16 FU Mu#t1 A"" Di%i"e
8/19/2019 Scoreboarding i Tomasulo Algoritam
34/78
A D*2cle W
•
;$2 not &rite result of )##666
;)/ aard<
Instruction status: Read Exec WriteInstruction j k Issue Oper Comp Result
LD F6 34+ R2 1 2 3 4
LD F2 45+ R3 5 6 ( 8
MULTD F0 F2 F4 6 *
SUBD F8 F6 F2 ( * 11 12
DIVD F10 F0 F6 8
ADDD F6 F8 F2 13 14 16
Functional unit status: dest S1 S2 FU FU Fj? Fk?*ime +ame us! Op Fi Fj Fk "j "k Rj Rk
Integer $o
2 Mu#t1 es Mu#t F0 F2 F4 $o $o
Mu#t2 $o
A"" es A"" F6 F8 F2 $o $o
Di%i"e es Di% F10 F0 F6 Mu#t1 $o es
Re#ister result status:
oc' F$ F2 F% F& F' F1$ F12 ((( F)$17 FU Mu#t1 A"" Di%i"e
8/19/2019 Scoreboarding i Tomasulo Algoritam
35/78
A D*2cle X Instruction status: Read Exec Write
Instruction j k Issue Oper Comp Result
LD F6 34+ R2 1 2 3 4
LD F2 45+ R3 5 6 ( 8
MULTD F0 F2 F4 6 *
SUBD F8 F6 F2 ( * 11 12
DIVD F10 F0 F6 8
ADDD F6 F8 F2 13 14 16
Functional unit status: dest S1 S2 FU FU Fj? Fk?*ime +ame us! Op Fi Fj Fk "j "k Rj Rk
Integer $o
1 Mu#t1 es Mu#t F0 F2 F4 $o $o
Mu#t2 $o
A"" es A"" F6 F8 F2 $o $o
Di%i"e es Di% F10 F0 F6 Mu#t1 $o es
Re#ister result status:
oc' F$ F2 F% F& F' F1$ F12 ((( F)$18 FU Mu#t1 A"" Di%i"e
A
8/19/2019 Scoreboarding i Tomasulo Algoritam
36/78
A D*2cle M Instruction status: Read Exec Write
Instruction j k Issue Oper Comp Result
LD F6 34+ R2 1 2 3 4
LD F2 45+ R3 5 6 ( 8
MULTD F0 F2 F4 6 * 1*
SUBD F8 F6 F2 ( * 11 12
DIVD F10 F0 F6 8
ADDD F6 F8 F2 13 14 16
Functional unit status: dest S1 S2 FU FU Fj? Fk?*ime +ame us! Op Fi Fj Fk "j "k Rj Rk
Integer $o
0 Mu#t1 es Mu#t F0 F2 F4 $o $o
Mu#t2 $o
A"" es A"" F6 F8 F2 $o $o
Di%i"e es Di% F10 F0 F6 Mu#t1 $o es
Re#ister result status:
oc' F$ F2 F% F& F' F1$ F12 ((( F)$19 FU Mu#t1 A"" Di%i"e
A
8/19/2019 Scoreboarding i Tomasulo Algoritam
37/78
A D*2cle K Instruction status: Read Exec Write
Instruction j k Issue Oper Comp Result
LD F6 34+ R2 1 2 3 4
LD F2 45+ R3 5 6 ( 8MULTD F0 F2 F4 6 * 1* 20
SUBD F8 F6 F2 ( * 11 12
DIVD F10 F0 F6 8
ADDD F6 F8 F2 13 14 16
Functional unit status: dest S1 S2 FU FU Fj? Fk?*ime +ame us! Op Fi Fj Fk "j "k Rj Rk
Integer $o
Mu#t1 $o
Mu#t2 $o
A"" es A"" F6 F8 F2 $o $o
Di%i"e es Di% F10 F0 F6 es es
Re#ister result status:
oc' F$ F2 F% F& F' F1$ F12 ((( F)$20 FU A"" Di%i"e
A D
8/19/2019 Scoreboarding i Tomasulo Algoritam
38/78
A D*2cle K
•
;)/ aard is no& gone:::
Instruction status: Read Exec WriteInstruction j k Issue Oper Comp Result
LD F6 34+ R2 1 2 3 4
LD F2 45+ R3 5 6 ( 8MULTD F0 F2 F4 6 * 1* 20
SUBD F8 F6 F2 ( * 11 12
DIVD F10 F0 F6 8 21
ADDD F6 F8 F2 13 14 16
Functional unit status: dest S1 S2 FU FU Fj? Fk?*ime +ame us! Op Fi Fj Fk "j "k Rj Rk
Integer $o
Mu#t1 $o
Mu#t2 $o
A"" es A"" F6 F8 F2 $o $o
Di%i"e es Di% F10 F0 F6 es es
Re#ister result status:
oc' F$ F2 F% F& F' F1$ F12 ((( F)$21 FU A"" Di%i"e
A D
8/19/2019 Scoreboarding i Tomasulo Algoritam
39/78
A D*2cle KK Instruction status: Read Exec Write
Instruction j k Issue Oper Comp Result
LD F6 34+ R2 1 2 3 4
LD F2 45+ R3 5 6 ( 8MULTD F0 F2 F4 6 * 1* 20
SUBD F8 F6 F2 ( * 11 12
DIVD F10 F0 F6 8 21
ADDD F6 F8 F2 13 14 16 22
Functional unit status: dest S1 S2 FU FU Fj? Fk?*ime +ame us! Op Fi Fj Fk "j "k Rj Rk
Integer $o
Mu#t1 $o
Mu#t2 $o
A"" $o
3* Di%i"e es Di% F10 F0 F6 $o $o
Re#ister result status:
oc' F$ F2 F% F& F' F1$ F12 ((( F)$22 FU Di%i"e
A D
8/19/2019 Scoreboarding i Tomasulo Algoritam
40/78
A D*2cle + Instruction status: Read Exec Write
Instruction j k Issue Oper Comp Result
LD F6 34+ R2 1 2 3 4
LD F2 45+ R3 5 6 ( 8MULTD F0 F2 F4 6 * 1* 20
SUBD F8 F6 F2 ( * 11 12
DIVD F10 F0 F6 8 21 61
ADDD F6 F8 F2 13 14 16 22
Functional unit status: dest S1 S2 FU FU Fj? Fk?*ime +ame us! Op Fi Fj Fk "j "k Rj Rk
Integer $o
Mu#t1 $o
Mu#t2 $o
A"" $o
0 Di%i"e es Di% F10 F0 F6 $o $o
Re#ister result status:
oc' F$ F2 F% F& F' F1$ F12 ((( F)$61 FU Di%i"e
A D
8/19/2019 Scoreboarding i Tomasulo Algoritam
41/78
A D*2cle +K Instruction status: Read Exec Write
Instruction j k Issue Oper Comp Result
LD F6 34+ R2 1 2 3 4
LD F2 45+ R3 5 6 ( 8MULTD F0 F2 F4 6 * 1* 20
SUBD F8 F6 F2 ( * 11 12
DIVD F10 F0 F6 8 21 61 62
ADDD F6 F8 F2 13 14 16 22
Functional unit status: dest S1 S2 FU FU Fj? Fk?*ime +ame us! Op Fi Fj Fk "j "k Rj Rk
Integer $o
Mu#t1 $o
Mu#t2 $o
A"" $o
Di%i"e $o
Re#ister result status:
oc' F$ F2 F% F& F' F1$ F12 ((( F)$62 FU
v &D A D
8/19/2019 Scoreboarding i Tomasulo Algoritam
42/78
v &D A D*2cle +K
•
In-order issueP out-of-order eAecute H commit
Instruction status: Read Exec WriteInstruction j k Issue Oper Comp Result
LD F6 34+ R2 1 2 3 4
LD F2 45+ R3 5 6 ( 8MULTD F0 F2 F4 6 * 1* 20
SUBD F8 F6 F2 ( * 11 12
DIVD F10 F0 F6 8 21 61 62
ADDD F6 F8 F2 13 14 16 22
Functional unit status: dest S1 S2 FU FU Fj? Fk?*ime +ame us! Op Fi Fj Fk "j "k Rj Rk
Integer $o
Mu#t1 $o
Mu#t2 $o
A"" $o
Di%i"e $o
Re#ister result status:
oc' F$ F2 F% F& F' F1$ F12 ((( F)$62 FU
8/19/2019 Scoreboarding i Tomasulo Algoritam
43/78
Tomasulo algoritam
• 'ako da se ibegnu ilane avisnosti i antiavisnostikao ograničenje scoreboardinga, eksplicitno iliimplicitno preimenovanje6
• 7eka se instrukcije odma$ veuju a funkcionalne
jedinice koje mogu da i$ ivr!e, ali dovoliti ve?i brojinstrukcija da se poveća instrukcijski prozor
• 7eka se a sve izdate instrukcije rezervišupozicije a funkcionalne jedinice potrebne a nji$ovoivr!avanje (rezervacione stanice – RS a svakunovu instrukciju idatu po redosledu"
• )ko nema slobodne odgovarajuće rezervacionestanice, austavlja se idavanje instrukcija
8/19/2019 Scoreboarding i Tomasulo Algoritam
44/78
Tomasulo 3rganiation
0 adders0 adders
)dd)ddK)ddV
0 multipliers0 multipliers
1ult1ultK
rom 1em 0 /egisters
/eservationStations
*ommon #ata 5us (*#5"
To 1em
0 3p
OueueUoad 5u[ers
Store5u[ers
UoadUoadKUoadVUoadFUoad8
Uoad+
8/19/2019 Scoreboarding i Tomasulo Algoritam
45/78
Tomasulo implicitno preimenovanje
• #a li nekako može da se ivede implicitnopreimenovanje argumenata i rezultata na osnovumesta – reervacione stanice operacija koje generi!utaj reultat
•
Tada je preimenovani argument pokaivač na mesto ureervacionim stanicama funkcionalne jedinice kojageneri!e argument
8/19/2019 Scoreboarding i Tomasulo Algoritam
46/78
Tomasulo implicitno preimenovanje(K"
• 7eka reference za argumente svake nove instrukcijebudu rezervacione stanice instrukcija kojegenerišu rezultate za argumente, ako nekanedovr!ena instrukcija treba da prosledi argument
•
. suprotnom, reultat je ve? upisan u registar i!"#$ se uima vrednost i ar$itekturalnogregistra (upisana ranije" – tada preimenovanje nije nipotrebno
•
'ada kod idavanja instrukcija naie novi upis u nekiar$itekturalni registar, njegov trenutni sadržaj nije vi!epotreban, jer su sve reervacione stanice koje sutrebale da koriste pret$odnu vrednost i tog registrave? uele tu vrednost i apamtile kod sebe u /S
8/19/2019 Scoreboarding i Tomasulo Algoritam
47/78
Tomasulo distribucija reultata•
7eka postoji zajedni%ki data bus kojim se distribuira jedanrezultat sa ilaa neke reervacione stanice po ciklusu• 7eka sve ostale reervacione stanice oslu!kuju ajednički data
bus (koji pored podataka !alje i kod reervacione stanice čiji jeto reultat" i neka preuimaju poslate Y/4#73STI a svojeinstrukcije koje traže argument sa &' R'('R)#*I+'S+I*' '"I&'R# R'(,- .For/arding0001
• Sada instrukcije koje su čekale taj reultat u svojim /S umestoreference čuvaju )R'!+S& preimenovanog registra preuetusa ajedničkog data bus-a, pa može biti vi!e implicitni$preimenovanja a isti registar
• Sa ajedničkog data bus-a ide i u odgovaraju?i registar, samoposlednja vrednost upisa u ar$itekturalni registar pooriginalnom redosledu: Za S)' prethodne nezavršeneupise u isti ar$itekturalni registar ?e se čitanje Y/4#73STIsvi$ argumenta raditi sa zajedni%kog data bus2a
T l di t ib ij
8/19/2019 Scoreboarding i Tomasulo Algoritam
48/78
Tomasulo distribucijareultata (K"
• )ko nijedna instrukcija u reervacionim stanicama neupisuje u neki registar argumenta neke instrukcije #, poidavanju instrukcije # se povlači vrednost i registra togargumenta u reervacionu stanicu instrukcije # i odma$ jetaj argument read2
• /egistri treba da naju koja lokacija reervacione stanicekod ibacivanja reultata na ajednički data bus upisuje ukoji registar – ato postoji tabela a registarski status
• 0rano polje u toj tabeli – nači da nijedna idata
instrukcija ne prepisuje staru vrednost• Yrednost polja a registar u tabeli registarskog statusa
odreuje da li treba da se ubacuje vrednost saajedničkog data bus-a u registar, a na osnovu ivora
8/19/2019 Scoreboarding i Tomasulo Algoritam
49/78
.loga registarskog statusa uuspostavljanju avisnosti
• 3uva sve poslednje upise koji treba da se odigrajuu svakom arhitekturalnom registru4 a nemaulaa ako je vrednost u registarskom fajlu jedina aar$itekturalni registar
•
/eferisanje ovog statusa deLni!e !ta se upisuje uargumente novi$ idati$ instrukcija i odma$ se nada li je reultat read2:
• /ead2 je ako nema funkcionalne jedinice koja upisujeu registar argumenta ni u jednoj reervacionoj stanici
• Svako ubacivanje nove instrukcije u reervacionestanice (iuev store" dovodi do novog upisa uregistarski status
T l 3 i ti
8/19/2019 Scoreboarding i Tomasulo Algoritam
50/78
Tomasulo 3rganiation
0 adders0 adders
)dd)ddK)ddV
0 multipliers0 multipliers
1ult1ultK
rom 1em 0 /egisters
/eservationStations
*ommon #ata 5us (*#5"
To 1em
0 3p
OueueUoad 5u[ers
Store5u[ers
UoadUoadKUoadVUoadFUoad8
Uoad+
/ ti St ti
8/19/2019 Scoreboarding i Tomasulo Algoritam
51/78
/eservation Station*omponents
3pD 3peration to perform in t$e unit (e:g:, N or –"Yj, YkD Yalue of Source operands – Store bu[ers $as Y Leld, result to be stored
Oj, OkD /eservation stations producing source
registers (value to be &ritten" – 7oteD 7o read2 %ags as in ScoreboardP Oj,OkB BC read2
– Store bu[ers onl2 $ave Oi for /S producing result
5us2D Indicates reservation station or . is bus2
/egister result statusGIndicates &$ic$ functional unit&ill last &rite eac$ register, if one eAists: 5lank &$enno pending instructions t$at &ill &rite t$at register:
8/19/2019 Scoreboarding i Tomasulo Algoritam
52/78
T$ree Stages of Tomasulo )lgorit$m1.IssueGget instruction from 0 3p Oueue
If reservation station free (no structural $aard",control issues instr H sends operands (renames registers":
2.ExecutionGoperate on operands (4E" ;$en bot$ operands read2 t$en eAecuteP
if not read2, &atc$ *ommon #ata 5us for result3.Write resultGLnis$ eAecution (;5"
;rite on *ommon #ata 5us to all a&aiting unitsPmark reservation station available
• 7ormal data busD data N destination (]go to\ bus"•
*ommon data busD data N source (]come from\ bus" – +F bits of data N F bits of unctional .nit source address – ;rite if matc$es eApected unctional .nit (produces result" – #oes t$e broadcast
8/19/2019 Scoreboarding i Tomasulo Algoritam
53/78
Tomasulo 4Aample Instruction status: Exec Write
Instruction j k Issue Comp Result Bus A""ress
LD F6 34+ R2 Lo!"1 $oLD F2 45+ R3 Lo!"2 $o
MULTD F0 F2 F4 Lo!"3 $o
SUBD F8 F6 F2
DIVD F10 F0 F6
ADDD F6 F8 F2
Reser,ation Stations: S1 S2 RS RS
*ime +ame us! Op -j -k "j "k A""1 $o
A""2 $o
A""3 $o
Mu#t1 $o
Mu#t2 $o
Re#ister result status:oc' F$ F2 F% F& F' F1$ F12 ((( F)$
0 FU
Tomasulo 4Aample *2cle
8/19/2019 Scoreboarding i Tomasulo Algoritam
54/78
Tomasulo 4Aample *2cle Instruction status: Exec Write
Instruction j k Issue Comp Result Bus A""ress
LD F6 34+ R2 1 Lo!"1 es 34+R2LD F2 45+ R3 Lo!"2 $o
MULTD F0 F2 F4 Lo!"3 $o
SUBD F8 F6 F2
DIVD F10 F0 F6
ADDD F6 F8 F2
Reser,ation Stations: S1 S2 RS RS
*ime +ame us! Op -j -k "j "k A""1 $o
A""2 $o
A""3 $o
Mu#t1 $o
Mu#t2 $o
Re#ister result status:oc' F$ F2 F% F& F' F1$ F12 ((( F)$
1 FU Lo!"1
Tomasulo 4Aample *2cle
8/19/2019 Scoreboarding i Tomasulo Algoritam
55/78
Tomasulo 4Aample *2cleK
7oteD .nlike ++, can $ave multiple loads outstanding
Instruction status: Exec WriteInstruction j k Issue Comp Result Bus A""ress
LD F6 34+ R2 1 Lo!"1 es 34+R2LD F2 45+ R3 2 Lo!"2 es 45+R3
MULTD F0 F2 F4 Lo!"3 $o
SUBD F8 F6 F2
DIVD F10 F0 F6
ADDD F6 F8 F2
Reser,ation Stations: S1 S2 RS RS
*ime +ame us! Op -j -k "j "k A""1 $o
A""2 $o
A""3 $o
Mu#t1 $o
Mu#t2 $o
Re#ister result status:oc' F$ F2 F% F& F' F1$ F12 ((( F)$
2 FU Lo!"2 Lo!"1
Tomasulo 4Aample *2cle
8/19/2019 Scoreboarding i Tomasulo Algoritam
56/78
Tomasulo 4Aample *2cleV
• 7oteD registers names are removed (]renamed\" in/eservation StationsP 1.UT issued vs: scoreboard
• Uoad completingP &$at is &aiting for Uoad6
Instruction status: Exec WriteInstruction j k Issue Comp Result Bus A""ress
LD F6 34+ R2 1 3 Lo!"1 es 34+R2LD F2 45+ R3 2 Lo!"2 es 45+R3
MULTD F0 F2 F4 3 Lo!"3 $o
SUBD F8 F6 F2
DIVD F10 F0 F6
ADDD F6 F8 F2
Reser,ation Stations: S1 S2 RS RS
*ime +ame us! Op -j -k "j "k A""1 $o
A""2 $o
A""3 $o
Mu#t1 es ULTD R,F4- Lo!"2
Mu#t2 $o
Re#ister result status:oc' F$ F2 F% F& F' F1$ F12 ((( F)$
3 FU Mu#t1 Lo!"2 Lo!"1
Tomasulo 4Aample *2cle
8/19/2019 Scoreboarding i Tomasulo Algoritam
57/78
Tomasulo 4Aample *2cleF
• UoadK completingP &$at is &aiting for Uoad6
Instruction status: Exec WriteInstruction j k Issue Comp Result Bus A""ress
LD F6 34+ R2 1 3 4 Lo!"1 $o
LD F2 45+ R3 2 4 Lo!"2 es 45+R3
MULTD F0 F2 F4 3 Lo!"3 $o
SUBD F8 F6 F2 4
DIVD F10 F0 F6
ADDD F6 F8 F2
Reser,ation Stations: S1 S2 RS RS
*ime +ame us! Op -j -k "j "k A""1 es SUBD M,A1- Lo!"2
A""2 $o
A""3 $o
Mu#t1 es ULTD R,F4- Lo!"2
Mu#t2 $o
Re#ister result status:oc' F$ F2 F% F& F' F1$ F12 ((( F)$
4 FU Mu#t1 Lo!"2 M,A1- A""1
Tomasulo 4Aample *2cle
8/19/2019 Scoreboarding i Tomasulo Algoritam
58/78
Tomasulo 4Aample *2cle8 Instruction status: Exec Write
Instruction j k Issue Comp Result Bus A""ress
LD F6 34+ R2 1 3 4 Lo!"1 $o
LD F2 45+ R3 2 4 5 Lo!"2 $o
MULTD F0 F2 F4 3 Lo!"3 $o
SUBD F8 F6 F2 4
DIVD F10 F0 F6 5
ADDD F6 F8 F2
Reser,ation Stations: S1 S2 RS RS
*ime +ame us! Op -j -k "j "k 2 A""1 es SUBD M,A1- M,A2-
A""2 $o
A""3 $o
10 Mu#t1 es ULTD M,A2- R,F4-
Mu#t2 es DIVD M,A1- Mu#t1
Re#ister result status:oc' F$ F2 F% F& F' F1$ F12 ((( F)$
5 FU Mu#t1 M,A2- M,A1- A""1 Mu#t2
Tomasulo 4Aample *2cle
8/19/2019 Scoreboarding i Tomasulo Algoritam
59/78
Tomasulo 4Aample *2cle+
• Issue )### $ere vs: scoreboard6 $a, preimenovano
je implicitno
Instruction status: Exec WriteInstruction j k Issue Comp Result Bus A""ress
LD F6 34+ R2 1 3 4 Lo!"1 $o
LD F2 45+ R3 2 4 5 Lo!"2 $o
MULTD F0 F2 F4 3 Lo!"3 $o
SUBD F8 F6 F2 4
DIVD F10 F0 F6 5
ADDD F6 F8 F2 6
Reser,ation Stations: S1 S2 RS RS
*ime +ame us! Op -j -k "j "k 1 A""1 es SUBD M,A1- M,A2-
A""2 es ADDD M,A2- A""1
A""3 $o
* Mu#t1 es ULTD M,A2- R,F4-
Mu#t2 es DIVD M,A1- Mu#t1
Re#ister result status:oc' F$ F2 F% F& F' F1$ F12 ((( F)$
6 FU Mu#t1 M,A2- A""2 A""1 Mu#t2
Tomasulo 4Aample *2cle
8/19/2019 Scoreboarding i Tomasulo Algoritam
60/78
Tomasulo 4Aample *2cleW
• )dd completingP &$at is &aiting for it6
Instruction status: Exec WriteInstruction j k Issue Comp Result Bus A""ress
LD F6 34+ R2 1 3 4 Lo!"1 $o
LD F2 45+ R3 2 4 5 Lo!"2 $o
MULTD F0 F2 F4 3 Lo!"3 $o
SUBD F8 F6 F2 4 (
DIVD F10 F0 F6 5
ADDD F6 F8 F2 6
Reser,ation Stations: S1 S2 RS RS
*ime +ame us! Op -j -k "j "k 0 A""1 es SUBD M,A1- M,A2-
A""2 es ADDD M,A2- A""1
A""3 $o
8 Mu#t1 es ULTD M,A2- R,F4-
Mu#t2 es DIVD M,A1- Mu#t1
Re#ister result status:oc' F$ F2 F% F& F' F1$ F12 ((( F)$
7 FU Mu#t1 M,A2- A""2 A""1 Mu#t2
Tomasulo 4Aample *2cle
8/19/2019 Scoreboarding i Tomasulo Algoritam
61/78
Tomasulo 4Aample *2cleX Instruction status: Exec Write
Instruction j k Issue Comp Result Bus A""ress
LD F6 34+ R2 1 3 4 Lo!"1 $o
LD F2 45+ R3 2 4 5 Lo!"2 $o
MULTD F0 F2 F4 3 Lo!"3 $o
SUBD F8 F6 F2 4 ( 8
DIVD F10 F0 F6 5
ADDD F6 F8 F2 6
Reser,ation Stations: S1 S2 RS RS
*ime +ame us! Op -j -k "j "k A""1 $o
2 A""2 es ADDD ,M/M- M,A2-
A""3 $o
( Mu#t1 es ULTD M,A2- R,F4-
Mu#t2 es DIVD M,A1- Mu#t1
Re#ister result status:oc' F$ F2 F% F& F' F1$ F12 ((( F)$
8 FU Mu#t1 M,A2- A""2 ,M/M- Mu#t2
Tomasulo 4Aample *2cle
8/19/2019 Scoreboarding i Tomasulo Algoritam
62/78
Tomasulo 4Aample *2cleM Instruction status: Exec Write
Instruction j k Issue Comp Result Bus A""ress
LD F6 34+ R2 1 3 4 Lo!"1 $o
LD F2 45+ R3 2 4 5 Lo!"2 $o
MULTD F0 F2 F4 3 Lo!"3 $o
SUBD F8 F6 F2 4 ( 8
DIVD F10 F0 F6 5
ADDD F6 F8 F2 6
Reser,ation Stations: S1 S2 RS RS
*ime +ame us! Op -j -k "j "k A""1 $o
1 A""2 es ADDD ,M/M- M,A2-
A""3 $o
6 Mu#t1 es ULTD M,A2- R,F4-
Mu#t2 es DIVD M,A1- Mu#t1
Re#ister result status:oc' F$ F2 F% F& F' F1$ F12 ((( F)$
9 FU Mu#t1 M,A2- A""2 ,M/M- Mu#t2
Tomasulo 4Aample *2cle
8/19/2019 Scoreboarding i Tomasulo Algoritam
63/78
Tomasulo 4Aample *2cle
• )ddK completingP &$at is &aiting for it6
Instruction status: Exec WriteInstruction j k Issue Comp Result Bus A""ress
LD F6 34+ R2 1 3 4 Lo!"1 $o
LD F2 45+ R3 2 4 5 Lo!"2 $o
MULTD F0 F2 F4 3 Lo!"3 $o
SUBD F8 F6 F2 4 ( 8
DIVD F10 F0 F6 5
ADDD F6 F8 F2 6 10
Reser,ation Stations: S1 S2 RS RS
*ime +ame us! Op -j -k "j "k A""1 $o
0 A""2 es ADDD ,M/M- M,A2-
A""3 $o
5 Mu#t1 es ULTD M,A2- R,F4-
Mu#t2 es DIVD M,A1- Mu#t1
Re#ister result status:oc' F$ F2 F% F& F' F1$ F12 ((( F)$
10 FU Mu#t1 M,A2- A""2 ,M/M- Mu#t2
Tomasulo 4Aample *2cle
8/19/2019 Scoreboarding i Tomasulo Algoritam
64/78
Tomasulo 4Aample *2cle
• ;rite result of )### $ere vs: scoreboard6 /S %ult& je ve pokupila argument iz F'
Instruction status: Exec WriteInstruction j k Issue Comp Result Bus A""ress
LD F6 34+ R2 1 3 4 Lo!"1 $o
LD F2 45+ R3 2 4 5 Lo!"2 $o
MULTD F0 F2 F4 3 Lo!"3 $o
SUBD F8 F6 F2 4 ( 8
DIVD F10 F0 F6 5
ADDD F6 F8 F2 6 10 11
Reser,ation Stations: S1 S2 RS RS
*ime +ame us! Op -j -k "j "k A""1 $o
A""2 $o
A""3 $o
4 Mu#t1 es ULTD M,A2- R,F4-
Mu#t2 es DIVD M,A1- Mu#t1
Re#ister result status:oc' F$ F2 F% F& F' F1$ F12 ((( F)$
11 FU Mu#t1 M,A2- ,M/M+ ,M/M- Mu#t2
Tomasulo 4Aample *2cle
8/19/2019 Scoreboarding i Tomasulo Algoritam
65/78
Tomasulo 4Aample *2cleK Instruction status: Exec Write
Instruction j k Issue Comp Result Bus A""ress
LD F6 34+ R2 1 3 4 Lo!"1 $o
LD F2 45+ R3 2 4 5 Lo!"2 $o
MULTD F0 F2 F4 3 Lo!"3 $o
SUBD F8 F6 F2 4 ( 8
DIVD F10 F0 F6 5
ADDD F6 F8 F2 6 10 11
Reser,ation Stations: S1 S2 RS RS
*ime +ame us! Op -j -k "j "k A""1 $o
A""2 $o
A""3 $o
3 Mu#t1 es ULTD M,A2- R,F4-
Mu#t2 es DIVD M,A1- Mu#t1
Re#ister result status:oc' F$ F2 F% F& F' F1$ F12 ((( F)$
12 FU Mu#t1 M,A2- ,M/M+ ,M/M- Mu#t2
Tomasulo 4Aample *2cle
8/19/2019 Scoreboarding i Tomasulo Algoritam
66/78
Tomasulo 4Aample *2cleV Instruction status: Exec Write
Instruction j k Issue Comp Result Bus A""ress
LD F6 34+ R2 1 3 4 Lo!"1 $o
LD F2 45+ R3 2 4 5 Lo!"2 $o
MULTD F0 F2 F4 3 Lo!"3 $o
SUBD F8 F6 F2 4 ( 8
DIVD F10 F0 F6 5
ADDD F6 F8 F2 6 10 11
Reser,ation Stations: S1 S2 RS RS
*ime +ame us! Op -j -k "j "k A""1 $o
A""2 $o
A""3 $o
2 Mu#t1 es ULTD M,A2- R,F4-
Mu#t2 es DIVD M,A1- Mu#t1
Re#ister result status:oc' F$ F2 F% F& F' F1$ F12 ((( F)$
13 FU Mu#t1 M,A2- ,M/M+ ,M/M- Mu#t2
Tomasulo 4Aample *2cle
8/19/2019 Scoreboarding i Tomasulo Algoritam
67/78
Tomasulo 4Aample *2cleF Instruction status: Exec Write
Instruction j k Issue Comp Result Bus A""ress
LD F6 34+ R2 1 3 4 Lo!"1 $o
LD F2 45+ R3 2 4 5 Lo!"2 $o
MULTD F0 F2 F4 3 Lo!"3 $o
SUBD F8 F6 F2 4 ( 8
DIVD F10 F0 F6 5
ADDD F6 F8 F2 6 10 11
Reser,ation Stations: S1 S2 RS RS
*ime +ame us! Op -j -k "j "k A""1 $o
A""2 $o
A""3 $o
1 Mu#t1 es ULTD M,A2- R,F4-
Mu#t2 es DIVD M,A1- Mu#t1
Re#ister result status:oc' F$ F2 F% F& F' F1$ F12 ((( F)$
14 FU Mu#t1 M,A2- ,M/M+ ,M/M- Mu#t2
Tomasulo 4Aample *2cle
8/19/2019 Scoreboarding i Tomasulo Algoritam
68/78
Tomasulo 4Aample *2cle8 Instruction status: Exec Write
Instruction j k Issue Comp Result Bus A""ress
LD F6 34+ R2 1 3 4 Lo!"1 $o
LD F2 45+ R3 2 4 5 Lo!"2 $o
MULTD F0 F2 F4 3 15 Lo!"3 $o
SUBD F8 F6 F2 4 ( 8
DIVD F10 F0 F6 5
ADDD F6 F8 F2 6 10 11
Reser,ation Stations: S1 S2 RS RS
*ime +ame us! Op -j -k "j "k A""1 $o
A""2 $o
A""3 $o
0 Mu#t1 es ULTD M,A2- R,F4-
Mu#t2 es DIVD M,A1- Mu#t1
Re#ister result status:oc' F$ F2 F% F& F' F1$ F12 ((( F)$
15 FU Mu#t1 M,A2- ,M/M+ ,M/M- Mu#t2
Tomasulo 4Aample *2cle
8/19/2019 Scoreboarding i Tomasulo Algoritam
69/78
Tomasulo 4Aample *2cle+ Instruction status: Exec Write
Instruction j k Issue Comp Result Bus A""ress
LD F6 34+ R2 1 3 4 Lo!"1 $o
LD F2 45+ R3 2 4 5 Lo!"2 $o
MULTD F0 F2 F4 3 15 16 Lo!"3 $o
SUBD F8 F6 F2 4 ( 8
DIVD F10 F0 F6 5
ADDD F6 F8 F2 6 10 11
Reser,ation Stations: S1 S2 RS RS
*ime +ame us! Op -j -k "j "k A""1 $o
A""2 $o
A""3 $o
Mu#t1 $o
40 Mu#t2 es DIVD MF4 M,A1-
Re#ister result status:oc' F$ F2 F% F& F' F1$ F12 ((( F)$
16 FU MF4 M,A2- ,M/M+ ,M/M- Mu#t2
8/19/2019 Scoreboarding i Tomasulo Algoritam
70/78
0reskočeno ni ciklusa
Tomasulo 4Aample *2cle
8/19/2019 Scoreboarding i Tomasulo Algoritam
71/78
Tomasulo 4Aample *2cle88 Instruction status: Exec Write
Instruction j k Issue Comp Result Bus A""ress
LD F6 34+ R2 1 3 4 Lo!"1 $o
LD F2 45+ R3 2 4 5 Lo!"2 $o
MULTD F0 F2 F4 3 15 16 Lo!"3 $o
SUBD F8 F6 F2 4 ( 8
DIVD F10 F0 F6 5
ADDD F6 F8 F2 6 10 11
Reser,ation Stations: S1 S2 RS RS
*ime +ame us! Op -j -k "j "k A""1 $o
A""2 $o
A""3 $o
Mu#t1 $o
1 Mu#t2 es DIVD MF4 M,A1-
Re#ister result status:oc' F$ F2 F% F& F' F1$ F12 ((( F)$55 FU MF4 M,A2- ,M/M+ ,M/M- Mu#t2
Tomasulo 4Aample *2cle
8/19/2019 Scoreboarding i Tomasulo Algoritam
72/78
Tomasulo 4Aample *2cle8+
• 1ultK is completingP &$at is &aiting for it6
Instruction status: Exec WriteInstruction j k Issue Comp Result Bus A""ress
LD F6 34+ R2 1 3 4 Lo!"1 $o
LD F2 45+ R3 2 4 5 Lo!"2 $o
MULTD F0 F2 F4 3 15 16 Lo!"3 $o
SUBD F8 F6 F2 4 ( 8
DIVD F10 F0 F6 5 56
ADDD F6 F8 F2 6 10 11
Reser,ation Stations: S1 S2 RS RS
*ime +ame us! Op -j -k "j "k A""1 $o
A""2 $o
A""3 $o
Mu#t1 $o
0 Mu#t2 es DIVD MF4 M,A1-
Re#ister result status:oc' F$ F2 F% F& F' F1$ F12 ((( F)$56 FU MF4 M,A2- ,M/M+ ,M/M- Mu#t2
Tomasulo 4Aample *2cle
8/19/2019 Scoreboarding i Tomasulo Algoritam
73/78
Tomasulo 4Aample *2cle8W
• 3nce againD In-order issue, out-of-order eAecution
and completion:
Instruction status: Exec WriteInstruction j k Issue Comp Result Bus A""ress
LD F6 34+ R2 1 3 4 Lo!"1 $o
LD F2 45+ R3 2 4 5 Lo!"2 $o
MULTD F0 F2 F4 3 15 16 Lo!"3 $o
SUBD F8 F6 F2 4 ( 8
DIVD F10 F0 F6 5 56 5(
ADDD F6 F8 F2 6 10 11
Reser,ation Stations: S1 S2 RS RS
*ime +ame us! Op -j -k "j "k A""1 $o
A""2 $o
A""3 $o
Mu#t1 $o
0 Mu#t2 es DIVD MF4 M,A1-
Re#ister result status:oc' F$ F2 F% F& F' F1$ F12 ((( F)$56 FU MF4 M,A2- ,M/M+ ,M/M- Mu#t2
2+K
8/19/2019 Scoreboarding i Tomasulo Algoritam
74/78
2+K
• ;$2 take longer on scoreboard9++6•
Structural aards (vezano za RS, a ne FJ)• Uack of for&arding (orarding štedi ciklus)• *rozor je vei jer mo+e da ima mnogo više
RS od FJ
Instruction status: Read Exec Write Exec WriteInstruction j k Issue Oper Comp Result Issue Comp Result
LD F6 34+ R2 1 2 3 4 1 3 4
LD F2 45+ R3 5 6 ( 8 2 4 5
MULTD F0 F2 F4 6 * 1* 20 3 15 16
SUBD F8 F6 F2 ( * 11 12 4 ( 8
DIVD F10 F0 F6 8 21 61 62 5 56 5(
ADDD F6 F8 F2 13 14 16 22 6 10 11
Tomasulo v Scoreboard
8/19/2019 Scoreboarding i Tomasulo Algoritam
75/78
Tomasulo v: Scoreboard(I51 V+9M v: *#* ++"
0ipelined unctional .nits 1ultiple unctional .nits(+ load, V store, V N, K A9^" ( load9store, N , K
A, ^"
&indo& sieD _ F instructions _ 8 instructions7o issue on structural $aard same;)/D renaming avoids stall completion
;);D renaming avoids stall issue5roadcast results from . ;rite9read registers*ontrolD reservation stations central scoreboard
8/19/2019 Scoreboarding i Tomasulo Algoritam
76/78
1ane Tomasulo algoritma
• 'ompleksnost• 0uno bri$ asocijativni$ memorija
veani$ a ajednički data bus• 0erformanse ograničene ajedničkim
data bus-om• /e!enje sa vi!e ajednički$ data bus-
ova, ali to podiže kompleksnost –paralelno asocijativno pretraživanje
Zaključci
8/19/2019 Scoreboarding i Tomasulo Algoritam
77/78
Zaključci• ; koristi paraleliam na nivou instrukcija
• Zavisnosti se egaktno odreuju u ivr!avanju• Tabele pomažu u implicitnom preimenovanju
- umesto registara, reultati se jednonačnoveuju a reervacionu stanicu instrukcije koja
je generisala reultat• referenca ivora podataka na ajedničkom
data bus-u pomaže da sve instrukcije u /Sistovremeno učitaju odgovaraju?e argumente,
ako je idata instrukcija koja radi novi upis utaj ar$itekturalni registar
• Implicitno preimenovanje
klj č i ( "
8/19/2019 Scoreboarding i Tomasulo Algoritam
78/78
Zaključci (K"
• In-order issue, out-of-order eAecution BC out-of-ordercompletion
• 0rilikom dekodovanja se odreuje da li postoje resursi(reervaciona stanica" a a$tevanu funkcionalnu
jedinicu, ali se odma$ odreuju reference naargumente ili se učitavaju vrednosti sami$argumenata, ako su ve? iračunati
• 'ljučni doprinosi –#inamičko rasporeivanje ve?i$ ##@ (maA
veličina instrukcijskog proora ugraene data %o&ma!ine je B broju reervacioni$ stanica
– Implicitno preimenovanje registara
Recommended