Sunteți pe pagina 1din 15

INSTRUCTION-LEVEL PARALLELISM

REZUMAT PIPELINE

Eficiena tehnicilor de pipelining la RISC Planificare dinamic a instruciunilor (Scoreboarding) Planificare dinamic a instruciunilor (Algoritmul lui Tomasulo)

Mai multe instruciuni executate n acelai timp Dac apare hazard de date, nu se mai emit instruciuni noi pn la eliminarea acestuia (stalls) Se poate micora numrul de blocri prin re-ordonarea instruciunilor

Exemple i figuri prelucrate dup: D.A. Petterson and J. L. Hennessy, Computer Architecture A Quantitative Approach, 4th ed., Morgan Kaufmann, 2007 Montek Singh, Computer Architecture and Implementation, University of North Carolina at Chapel Hill

Planificare static
Un compilator performant poate re-ordona instruciunile pentru eliminare blocri

Planificare dinamic
Prin adugare de hardware care face planificarea instruciunilor la momentul rulrii
1 2

Rezumat - tipuri hazarduri de date

ISA RISC i eficiena pipelining


Setul de instruciuni simple (RISC) permite o mai uoar planificare a codului pentru a obine eficien maxim a funcionrii conductei de execuie Exemplu: adunare a dou valori din memorie i stocare a rezultatului n memorie La seturi complexe de instruciuni, operaia poate fi realizat:
Printr-o singur instruciune Prin dou sau trei instruciuni Introducerea acestor instruciuni n pipeline, cu planificare secvenial, poate conduce la blocaje, pentru ISA complex

RAW (Read after Write)


j ncearc s citeasc nainte ca i s scrie (cel mai des hazard)

WAW (output dependency)


j ncearc s scrie nainte ca i s scrie Va rmne valoarea de la i i nu cea de la j Nici o problem n cazul MIPS simpl cu 5 etaje pentru c se scrie doar ntr-un singur loc

WAR (anti-dependency)
j ncearc s scrie nainte ca i s citeasc

La RISC operaia cere 4 instruciuni (2 LD, 1 ADD, 1 Store)


La RISC operaiile individuale sunt reprezentate prin instruciuni separate Instruciunile pot fi planificate n afara ordinii secveniale (static de compilator, sau dinamic prin hardware) pentru vitez maxim de execuie n conduct

RAR nu este un hazard


3

EXECUIE OUT-OF-ORDER
Cu planificarea dinamic se poate realiza out of

SCOREBOARDING
Utilizeaz o nou unitate hardware numit scoreboard (tabel de scor)
Structura datelor pstrat n hardware Urmrete dependenele i execut n afara ordinii ... Execut doar cnd operanzii devin disponibili

order execution
Execuia instruciunilor fr dependene Implic terminarea instruciunilor n afara ordinii

Una dintre metode discutat pentru nceput:

scoreboarding (tabel de scor)


!! Pn acum emiterea instruciunilor se fcea n ordine

Utilizat prima oar la CDC 6600 (anii 60 din secolul trecut)


16 uniti funcionale (4 lucreaz n FP, 5 uniti pentru referin la memorie, 7 uniti pentru op. cu ntregi)

Tehnic uitat pn n anii 90, dar apoi re-descoperit


Au aprut descendenii: Alpha 21264, Pentium 4, AMD Opteron, Power 5,

SCOREBOARD - intro

PLANIFICARE DINAMIC CU UN SCOREBOARD


Scoreboard este o tabel care este meninut de hardware:


nregistreaz instruciunile aduse, emise, executate, etc. nregistreaz resursele (uniti funcionale i operanzi) de care instruciunile au nevoie i pe care le utilizeaz Urmrete instruciunile care modific registre i registrele care sunt modificate Utilizeaz aceste informaii pentru a planifica dinamic instruciunile
Foarte asemntor cu un calcul cu creion i hrtie Procedur pas cu pas simpl i uor de implementat n hardware

Valorile sunt transferate ntotdeauna din registre ctre uniti funcionale i de la unitile funcionale napoi ctre registre Scrierea rezultatului (write-back) se produce ct mai repede posibil i nu n slot-ul planificat static Terminarea out-of-order poate produce hazarduri WAR i WAW
De reinut: maina tie ordinea original a programului (necesar pentru detectarea hazardului)

Modelul mainii
2 multiplicatoare FP (10 ciclii), 1 sumator FP (2 ciclii), 1 mpritor FP (40 ciclii), toate non-pipelined 1 unitate pe ntregi pentru orice alt operaie (inclusiv referine la memorie)

Nou problem: hazarduri WAR


IMPLICAII ALE TABELEI SCOREBOARD

Nu se producea anterior re-ordonrii pentru c citirea se producea devreme n conduct Exemplu


DIV.D F0,F2,F4 ADD.D F10,F0,F8 SUB.D F8,F8,F14

Terminare out-of-order hazarduri WAW, WAR

pentru WAW: blocare n Issue pn cnd scrierea anterioar se termin pentru WAR: blocare n Write Result pn cnd citirea anterioar se termin

Avem nevoie de mai multe instruciuni n faz de execuie

ADD se poate bloca din cauza lui F0 scris de DIV (RAW) Dac se permite execuia SUB, atunci ADD poate utiliza o valoare greit pentru F8 SUB are un hazard WAR cu ADD prin registrul F8!

uniti de execuie multiple, sau uniti de execuie pipelined


Scoreboard menine nregistrarea dependenelor i starea operaiilor Scoreboard nlocuiete ID, EX, WB cu 4 etaje

9 10

Planificare dinamic a ordinii instruciunilor


La pipeline n MIPS, descris anterior, hazardurile structural i de date erau verificate n etajul ID Dac o instruciune putea fi executat corect ea era emis din ID ctre urmtorul etaj Pentru a permite ca o instruciune s fie executat imediat ce operanzii si sunt disponibili (chiar dac precedenta este blocat), operaia de emitere trebuie mprit n dou suboperaii: verificare hazarduri structurale i ateptare pn la dispariia hazardului de date Ca urmare se va face execuie out-of-order, care implic i terminare instruciuni out-of-order

11

Planificare dinamic a ordinii instruciunilor

Pentru a implementa execuia out-of-order, se va mpri etajul ID n dou etaje distincte:


1. 2.

etaj emitere instruciuni (issue stage)


Decodificare i verificare a hazardurilor structurale Ateapt pn cnd operanzii sunt disponibili (fr hazard de date), citete operanzi i apoi merge mai departe

etajul citirii operanzilor

12

Planificare dinamic a ordinii instruciunilor


Ca i la MIPS execuia (etaj EX) poate consuma mai multe cicluri de ceas conduct: de exemplu la operaii n virgul mobil. Trebuie fcut distincia ntre

NOI ETAJE
Fech este la fel

momentul cnd o instruciune ncepe execuia i momentul cnd o instruciune termin execuia

Fetch

Issue

Read Operands

EX

WB

ntre cele dou momente instruciunea se afl n execuie La un moment dat, putem avea mai multe instruciuni n execuie

13

14

ISSUE (EMITERE)
Fetch Issue Read Operands EX WB Fetch

CITETE OPERANZI

Issue

Read Operands

EX

WB

Dac:
Unitatea funcional solicitat este disponibil i Nici o alt unitate nu este n curs de scriere n acelai registru
Restricia cu privire la registru previne hazardul WAW

Atunci se emite o instruciune Se trece la etajul read operands

n aceast faz, unitatea funcional este atribuit Dac operanzii sunt disponibili, unitatea funcional permite citirea operanzilor din register file Structura nu folosete forwarding

Exist astfel un ciclu suplimentar de laten

15

16

EX
Fetch Issue Read Operands EX WB Fetch

SCRIE REZULTAT
Issue Read Operands EX WB

Previne hazardurile WAR


Are mai multe uniti funcionale Notific tabela scoreboard cnd s-a terminat faza

n acest caz
DIV.D ADD.D SUB.D F0,F2,F4 F10,F0,F8 F8,F8,F14

Va bloca WB pentru SUB.D pn cnd ADD.D

citete F8 (anti-dependen)

17

18

MIPS cu Scoreboard

Patru etaje pentru controlul Scoreboard


n pipeline cu planificare dinamic toate instruciunile sunt aduse i decodificate n ordine (emitere n ordine) Ele pot fi blocate n etapa de citire operanzi i astfel execuia va fi n afara ordinii. Utilizarea tabelei de scor (scoreboarding) permite execuia n afara ordinii, dac exist suficiente resurse i dac nu exist dependene de date La un procesor cu arhitectur MIPS, implementarea scoreboard are rost n primul rnd pentru uniti de execuie n virgul mobil pentru c latena n celelalte uniti este foarte mic
19 20

Presupunem c exist (pentru toate referinele la memorie, ramificri i operaii cu ntregi):


2 multiplicatoare 1 sumator 1 mpritor 1 unitate pe ntregi

Fiecare unitate funcional are 2 intrri 1 ieire

Patru etaje pentru controlul Scoreboard


Issue: decodific instruciunea i verific

Patru etaje pentru controlul Scoreboard


Read operands: ateapt pn nu mai exist

hazarduri structurale (ID1)

Dac unitatea funcional este liber i nu exist WAW cu alt instruciune activ scoreboard emite instruciunea ctre unitatea funcional i nnoiete structura sa intern de date Dac exist un hazard WAW emiterea instruciunii este blocat
Cu excepia cazului cnd exist o buffer-are ntre fetch i issue, nici o alt instruciune nu poate fi emis pn cnd hazardul nu este nlturat.

hazard de date i apoi citete (ID2)


Un operand surs este disponibil dac nici o instruciune activ emis anterior nu-l va scrie. Cnd toi operanzii surs sunt disponibili scoreboard transmite unitii funcionale s treac la citirea operanzilor din registre i s nceap execuia Scoreboard rezolv astfel, n acest pas, n mod dinamic, hazardurile RAW
Instruciunile pot fi transmise spre execuie out of order
21 22

Patru etaje pentru controlul Scoreboard

Patru etaje pentru controlul Scoreboard


Write Result: terminare execuie instruciune (WB)
Atunci cnd circuitul scoreboard afl c unitatea funcional a terminat execuia, va verifica eventuala existen de hazarduri WAR Dac nu exist WAR scrie rezultatul Dac exist blocheaz terminarea instruciunii

Execution: prelucreaz operanzii Unitatea funcional execut operaii utiliznd operanzii recepionai Cnd rezultatul este gata se notific n tabel (circuitul scoreboard)

Exemplu:
DIV.D F0,F2,F4 ADD.D F10,F0,F8 SUB.D F8,F8,F14

CDC 6600 scoreboard va opri SUB.D pn cnd ADD.D citete operanzii (WAR)
23 24

TREI BLOCURI ALE SCOREBOARD


Componente Scoreboard
Instruciuni emise n ordine Stare uniti funcionale i nregistrare stare (disponibilitate) operanzi

Instruction status: indic n care din cele 4 etape se gsete instruciunea Functional unit (FU) status: Indic starea FU
Exist 9 cmpuri pentru fiecare unitate funcional
Busy: Indic unitate ocupat sau nu (yes/no) Op: Operaia de realizat Fi: Registrul destinaie Fj, Fk: Registrele surs Qj, Qk: Unitile funcionale care produc registrele surs Fj, Fk Rj, Rk: Fanioane ce indic dac Fj, Fk sunt gata (yes/no)

Indic ce unitate scrie rezultatul. Numrul de intrri egal cu numrul de registre

Register result status: Indic care unitate funcional va scrie fiecare registru
Dac nici o instruciune nu este n curs de scriere-registru intrarea n tabel este goal

25

26

Starea instruciunii

Starea fiecrei uniti funcionale

Toate instruciunile cu excepia ultimei sunt emise (ADD ateapt n etajul Issue) Primul LD terminat MUL, SUB ateapt registrul F2 (LD) DIV ateapt F0 (rezultatul MUL)

Fi este destinaie; j, k surse Q listeaz productorii intrrilor Coloanele R arat c registrele de intrare sunt gata, dar nc nu sunt citite (poziionat la No dup citire)

27

28

Rezultat registre

Mai trziu - n execuie (nainte ca MUL.D s scrie rezultatul)


LD i SUB s-au ncheiat (sunt operaii rapide) ADD i MUL n proces de execuie DIV ateapt MUL ca s scrie F0

Indic care unitate produce pentru care registru Componenta este necesar etajului Issue

29

30

Aproape gata

Costurile performanei suplimentare


Hardware scoreboard Uniti funcionale suplimentare Magistrale suplimentare

Tabele chiar nainte ca DIV s scrie rezultatul Aproape totul e gata i conducta e aproape goal

Care pot conduce la hazard structural

Performanele depind de:


Gradul de paralelism n secvena de cod Dimensiunea ferestrei pentru scoreboard (numrul de intrri) Dimensiunea blocurilor de baz (adic cod fr ramificri)

31

32

Scoreboard Example Cycle 0

Exemplu scoreboarding
Preluat din Montek Singh COMP 740: Computer Architecture and Implementation

Instruction Instruction LD F6 LD F2 MULT F0 SUBD F8 DIVD F10 ADDD F6

Status j 34+ 45+ F2 F6 F0 F8

k R2 R3 F4 F2 F6 F2 Fi

Issue

Read Execution W rite Operand Complete Result

Functional Unit Status Name Busy Op Integer No Mult1 No Mult2 No Add No Divide No Register Result Status CLOCK F0 0 FU

Fj

Fk

Qj

Qk

Rj

Rk

The Scoreboard

F2

F4

F6

F8

F10

F12

F31

Laten FP add = 2 clock; FP Mult = 10; FP Divide = 40


33 34

Scoreboard Example Cycle 1


Instruction Instruction LD F6 LD F2 MULT F0 SUBD F8 DIVD F10 ADDD F6 Status j 34+ 45+ F2 F6 F0 F8 k R2 R3 F4 F2 F6 F2 Fi F6 Issue 1 Read Execution Write Operand Complete Result
Instruction Instruction LD F6 LD F2 MULT F0 SUBD F8 DIVD F10 ADDD F6

Scoreboard Example Cycle 2


Status j 34+ 45+ F2 F6 F0 F8 k R2 R3 F4 F2 F6 F2 Fi F6 Issue 1 Read Execution Write Operand Complete Result 2

Functional Unit Status Name Busy Op Integer Yes Load Mult1 No Mult2 No Add No Divide No Register Result Status CLOCK F0 1 FU

Fj

Fk R2

Qj

Qk

Rj

Rk Yes

F2

F4

F6 Int

F8

F10

F12

F31

Functional Unit Status Name Busy Op Integer Yes Load Mult1 No Mult2 No Add No Divide No Register Result Status CLOCK F0 2 FU

Fj

Fk R2

Qj

Qk

Rj

Rk No

F2

F4

F6 Int

F8

F10

F12

F31

First LD issues
35

Structural hazard on Integer unit; second LD stalls in IF stage


36

Scoreboard Example Cycle 3


Instruction Status Instruction j LD F6 34+ LD F2 45+ MULT F0 F2 SUBD F8 F6 DIVD F10 F0 ADDD F6 F8 k R2 R3 F4 F2 F6 F2 Fi F6 Issue 1 Read Execution Write Operand Complete Result 2 3

Scoreboard Example Cycle 4


Instruction Instruction LD F6 LD F2 MULT F0 SUBD F8 DIVD F10 ADDD F6 Status j 34+ 45+ F2 F6 F0 F8 k R2 R3 F4 F2 F6 F2 Fi F6 Issue 1 Read Execution Write Operand Complete Result 2 3 4

Functional Unit Status Name Busy Op Integer Yes Load Mult1 No Mult2 No Add No Divide No Register Result Status CLOCK F0 3 FU

Fj

Fk R2

Qj

Qk

Rj

Rk No

F2

F4

F6 Int

F8

F10

F12

F31

Functional Unit Status Name Busy Op Integer Yes Load Mult1 No Mult2 No Add No Divide No Register Result Status CLOCK F0 4 FU

Fj

Fk R2

Qj

Qk

Rj

Rk No

F2

F4

F6

F8

F10

F12

F31

Second LD is still stalled


37

Second LD still stalled; first LD done


38

Scoreboard Example Cycle 5


Instruction Instruction LD F6 LD F2 MULT F0 SUBD F8 DIVD F10 ADDD F6 Status j 34+ 45+ F2 F6 F0 F8 k R2 R3 F4 F2 F6 F2 Fi F2 Issue 1 5 Read Execution Write Operand Complete Result 2 3 4 Instruction Instruction LD F6 LD F2 MULT F0 SUBD F8 DIVD F10 ADDD F6

Scoreboard Example Cycle 6


Status j 34+ 45+ F2 F6 F0 F8 k R2 R3 F4 F2 F6 F2 Fi F2 F0 Issue 1 5 6 Read Execution Write Operand Complete Result 2 3 4 6

Functional Unit Status Name Busy Op Integer Yes Load Mult1 No Mult2 No Add No Divide No Register Result Status CLOCK F0 5 FU

Fj

Fk R3

Qj

Qk

Rj

Rk Yes

F2 Int

F4

F6

F8

F10

F12

F31

Functional Unit Status Name Busy Op Integer Yes Load Mult1 Yes Mult Mult2 No Add No Divide No Register Result Status CLOCK F0 6 FU Mul1

Fj F2

Fk R3 F4

Qj Integer

Qk

Rj No

Rk No Yes

F2 Int

F4

F6

F8

F10

F12

F31

Second LD issues as the structural hazard on Integer unit has cleared


39

MULT issues
40

Scoreboard Example Cycle 7


Instruction Instruction LD F6 LD F2 MULT F0 SUBD F8 DIVD F10 ADDD F6 Status j 34+ 45+ F2 F6 F0 F8 k R2 R3 F4 F2 F6 F2 Fi F2 F0 F8 F2 Int Issue 1 5 6 7 Read Execution Write Operand Complete Result 2 3 4 6 7

Scoreboard Example Cycle 8a


Instruction Instruction LD F6 LD F2 MULT F0 SUBD F8 DIVD F10 ADDD F6 Status j 34+ 45+ F2 F6 F0 F8 k R2 R3 F4 F2 F6 F2 Fi F2 F0 Issue 1 5 6 7 8 Read Execution Write Operand Complete Result 2 3 4 6 7

Functional Unit Status Name Busy Op Integer Yes Load Mult1 Yes Mult Mult2 No Add Yes Sub Divide No Register Result Status CLOCK F0 7 FU Mul1

Fj F2 F6 F4

Fk R3 F4 F2

Qj Integer

Qk

Rj No

Rk No Yes

Int F6 F8 Add F10

Yes No F12 F31

Functional Unit Status Name Busy Op Integer Yes Load Mult1 Yes Mult Mult2 No Add Yes Sub Divide Yes Div Register Result Status CLOCK F0 8 FU Mul1

Fj F2

Fk R3 F4 F2 F6

Qj Integer

Qk

Rj No

Rk No Yes

F8 F6 F10 F0 F2 Int F4

Int Mult1 F6 F8 Add F10 Div

Yes No No Yes F12 F31

SUBD issues; MULT stalled on LD


41

DIVD issues; SUBD stalled on LD


42

Scoreboard Example Cycle 8b


Instruction Instruction LD F6 LD F2 MULT F0 SUBD F8 DIVD F10 ADDD F6 Status j 34+ 45+ F2 F6 F0 F8 k R2 R3 F4 F2 F6 F2 Fi F0 Issue 1 5 6 7 8 Read Execution Write Operand Complete Result 2 3 4 6 7 8 Instruction Instruction LD F6 LD F2 MULT F0 SUBD F8 DIVD F10 ADDD F6

Scoreboard Example Cycle 9


Status j 34+ 45+ F2 F6 F0 F8 k R2 R3 F4 F2 F6 F2 Fi F0 Issue 1 5 6 7 8 Read Execution Write Operand Complete Result 2 3 4 6 7 8 9 9

Functional Unit Status Name Busy Op Integer No Mult1 Yes Mult Mult2 No Add Yes Sub Divide Yes Div Register Result Status CLOCK F0 8 FU Mul1

Fj F2

Fk F4 F2 F6

Qj

Qk

Rj

Rk

Yes Yes Mult1 F6 F8 Add F10 Div Yes Yes No Yes F12 F31

F8 F6 F10 F0 F2 F4

Functional Unit Status Name Busy Op Integer No Mult1 Yes Mult Mult2 No Add Yes Sub Divide Yes Div Register Result Status CLOCK F0 9 FU Mul1

Fj F2

Fk F4 F2 F6

Qj

Qk

Rj No

Rk No

F8 F6 F10 F0 F2 F4

Mult1 F6 F8 Add F10 Div

No No No Yes F12 F31

LD writes F2; MULT and SUBD enabled


43

MULT and SUBD read operands and enter execution


44

Scoreboard Example Cycle 10


Instruction Instruction LD F6 LD F2 MULT F0 SUBD F8 DIVD F10 ADDD F6 Status j 34+ 45+ F2 F6 F0 F8 k R2 R3 F4 F2 F6 F2 Fi F0 Issue 1 5 6 7 8 Read Execution Write Operand Complete Result 2 3 4 6 7 8 9 9

Scoreboard Example Cycle 11


Instruction Instruction LD F6 LD F2 MULT F0 SUBD F8 DIVD F10 ADDD F6 Status j 34+ 45+ F2 F6 F0 F8 k R2 R3 F4 F2 F6 F2 Fi F0 Issue 1 5 6 7 8 Read Execution Write Operand Complete Result 2 3 4 6 7 8 9 9 11

Functional Unit Status Name Busy Op Integer No Mult1 Yes Mult Mult2 No Add Yes Sub Divide Yes Div Register Result Status CLOCK F0 9 FU Mul1

Fj F2

Fk F4 F2 F6

Qj

Qk

Rj No

Rk No

F8 F6 F10 F0 F2 F4

Mult1 F6 F8 Add F10 Div

No No No Yes F12 F31

Functional Unit Status Name Busy Op Integer No Mult1 Yes Mult Mult2 No Add Yes Sub Divide Yes Div Register Result Status CLOCK F0 11 FU Mul1

Fj F2

Fk F4 F2 F6

Qj

Qk

Rj No

Rk No

F8 F6 F10 F0 F2 F4

Mult1 F6 F8 Add F10 Div

No No No Yes F12 F31

Structural hazard on Add unit stalls the final ADDD


45

SUBD and MULT are still in execution


46

Scoreboard Example Cycle 12


Instruction Instruction LD F6 LD F2 MULT F0 SUBD F8 DIVD F10 ADDD F6 Status j 34+ 45+ F2 F6 F0 F8 k R2 R3 F4 F2 F6 F2 Fi F0 Issue 1 5 6 7 8 Read Execution Write Operand Complete Result 2 3 4 6 7 8 9 9 11 12

Scoreboard Example Cycle 13


Instruction Instruction LD F6 LD F2 MULT F0 SUBD F8 DIVD F10 ADDD F6 Status j 34+ 45+ F2 F6 F0 F8 k R2 R3 F4 F2 F6 F2 Fi F0 Issue 1 5 6 7 8 13 Fj F2 Read Execution Write Operand Complete Result 2 3 4 6 7 8 9 9 11 12

Functional Unit Status Name Busy Op Integer No Mult1 Yes Mult Mult2 No Add No Divide Yes Div Register Result Status CLOCK F0 12 FU Mul1

Fj F2

Fk F4 F6

Qj

Qk

Rj No

Rk No

F10 F0 F2 F4

Mult1 F6 F8 F10 Div

No Yes F12 F31

Functional Unit Status Name Busy Op Integer No Mult1 Yes Mult Mult2 No Add Yes Add Divide Yes Div Register Result Status CLOCK F0 13 FU Mul1

Fk F4 F2 F6

Qj

Qk

Rj No

Rk No

F6 F8 F10 F0 F2 F4

Mult1 F6 Add F8 F10 Div

Yes Yes No Yes F12 F31

SUBD writes results; Add unit free; structural hazard resolves


47

Note WAR hazard between DIVD and ADDD


48

Scoreboard Example Cycle 14


Instruction Instruction LD F6 LD F2 MULT F0 SUBD F8 DIVD F10 ADDD F6 Status j 34+ 45+ F2 F6 F0 F8 k R2 R3 F4 F2 F6 F2 Fi F0 Issue 1 5 6 7 8 13 Fj F2 Read Execution Write Operand Complete Result 2 3 4 6 7 8 9 9 11 12 14 Fk F4 F2 F6 Mult1 F6 Add F8 F10 Div Qj Qk Rj No
Rk No

Scoreboard Example Cycle 15


Instruction Instruction LD F6 LD F2 MULT F0 SUBD F8 DIVD F10 ADDD F6 Status j 34+ 45+ F2 F6 F0 F8 k R2 R3 F4 F2 F6 F2 Fi F0 Issue 1 5 6 7 8 13 Fj F2 Read Execution Write Operand Complete Result 2 3 4 6 7 8 9 9 11 12 14 Fk F4 F2 F6 Mult1 F6 Add F8 F10 Div Qj Qk Rj No
Rk No

Functional Unit Status Name Busy Op Integer No Mult1 Yes Mult Mult2 No Add Yes Add Divide Yes Div Register Result Status CLOCK F0 14 FU Mul1

F6 F8 F10 F0 F2 F4

No No No Yes F12 F31

Functional Unit Status Name Busy Op Integer No Mult1 Yes Mult Mult2 No Add Yes Add Divide Yes Div Register Result Status CLOCK F0 15 FU Mul1

F6 F8 F10 F0 F2 F4

No No No Yes F12 F31

MULT still executing; DIVD stalled on F0 (RAW hazard)


49

MULT still executing


50

Scoreboard Example Cycle 16


Instruction Instruction LD F6 LD F2 MULT F0 SUBD F8 DIVD F10 ADDD F6 Status j 34+ 45+ F2 F6 F0 F8 k R2 R3 F4 F2 F6 F2 Fi F0 Issue 1 5 6 7 8 13 Fj F2 Read Execution Write Operand Complete Result 2 3 4 6 7 8 9 9 11 12 14 Fk F4 F2 F6 Mult1 F6 Add F8 F10 Div Qj 16 Qk Rj No
Rk No

Scoreboard Example Cycle 17


Instruction Instruction LD F6 LD F2 MULT F0 SUBD F8 DIVD F10 ADDD F6 Status j 34+ 45+ F2 F6 F0 F8 k R2 R3 F4 F2 F6 F2 Fi F0 Issue 1 5 6 7 8 13 Fj F2 Read Execution Write Operand Complete Result 2 3 4 6 7 8 9 9 11 12 14 Fk F4 F2 F6 Mult1 F6 Add F8 F10 Div Qj 16 Qk Rj No
Rk No

Functional Unit Status Name Busy Op Integer No Mult1 Yes Mult Mult2 No Add Yes Add Divide Yes Div Register Result Status CLOCK F0 16 FU Mul1

F6 F8 F10 F0 F2 F4

No No No Yes F12 F31

Functional Unit Status Name Busy Op Integer No Mult1 Yes Mult Mult2 No Add Yes Add Divide Yes Div Register Result Status CLOCK F0 17 FU Mul1

F6 F8 F10 F0 F2 F4

No No No Yes F12 F31

ADDD completes execution, ready to write result into F6


51

WAR hazard : ADDD stalls in Write Result stage


52

Scoreboard Example Cycle 18


Instruction Instruction LD F6 LD F2 MULT F0 SUBD F8 DIVD F10 ADDD F6 Status j 34+ 45+ F2 F6 F0 F8 k R2 R3 F4 F2 F6 F2 Fi F0 Issue 1 5 6 7 8 13 Fj F2 Read Execution Write Operand Complete Result 2 3 4 6 7 8 9 9 11 12 14 Fk F4 F2 F6 Mult1 F6 Add F8 F10 Div Qj 16 Qk Rj No
Rk No

Scoreboard Example Cycle 19


Instruction Instruction LD F6 LD F2 MULT F0 SUBD F8 DIVD F10 ADDD F6 Status j 34+ 45+ F2 F6 F0 F8 k R2 R3 F4 F2 F6 F2 Fi F0 Issue 1 5 6 7 8 13 Fj F2 Read Execution Write Operand Complete Result 2 3 4 6 7 8 9 19 9 11 12 14 Fk F4 F2 F6 Mult1 F6 Add F8 F10 Div Qj 16 Qk Rj No
Rk No

Functional Unit Status Name Busy Op Integer No Mult1 Yes Mult Mult2 No Add Yes Add Divide Yes Div Register Result Status CLOCK F0 18 FU Mul1

F6 F8 F10 F0 F2 F4

No No No Yes F12 F31

Functional Unit Status Name Busy Op Integer No Mult1 Yes Mult Mult2 No Add Yes Add Divide Yes Div Register Result Status CLOCK F0 19 FU Mul1

F6 F8 F10 F0 F2 F4

No No No Yes F12 F31

DIVD stalled (RAW hazard on F0), ADDD stalled (WAR hazard on F6)
53

MULT completes execution


54

Scoreboard Example Cycle 20


Instruction Instruction LD F6 LD F2 MULT F0 SUBD F8 DIVD F10 ADDD F6 Status j 34+ 45+ F2 F6 F0 F8 k R2 R3 F4 F2 F6 F2 Fi Issue 1 5 6 7 8 13 Fj Read Execution Write Operand Complete Result 2 3 4 6 7 8 9 19 20 9 11 12 14 Fk Qj 16 Qk Rj
Rk

Scoreboard Example Cycle 21


Instruction Instruction LD F6 LD F2 MULT F0 SUBD F8 DIVD F10 ADDD F6 Status j 34+ 45+ F2 F6 F0 F8 k R2 R3 F4 F2 F6 F2 Fi Issue 1 5 6 7 8 13 Fj Read Execution Write Operand Complete Result 2 3 4 6 7 8 9 19 20 9 11 12 21 14 16 Fk Qj Qk Rj
Rk

Functional Unit Status Name Busy Op Integer No Mult1 No Mult2 No Add Yes Add Divide Yes Div Register Result Status CLOCK F0 20 FU

F6 F8 F10 F0 F2 F4

F2 F6

Mult1 F6 Add F8 F10 Div

No No Yes Yes F12 F31

Functional Unit Status Name Busy Op Integer No Mult1 No Mult2 No Add Yes Add Divide Yes Div Register Result Status CLOCK F0 21 FU

F6 F8 F10 F0 F2 F4

F2 F6 F6 Add F8 F10 Div

No No F12

No No

F31

MULT writes result; DIVD can proceed to read operands at next cycle
55

DIVD reads operands; WAR hazard on F6 is resolved


56

Scoreboard Example Cycle 22


Instruction Instruction LD F6 LD F2 MULT F0 SUBD F8 DIVD F10 ADDD F6 Status j 34+ 45+ F2 F6 F0 F8 k R2 R3 F4 F2 F6 F2 Fi Issue 1 5 6 7 8 13 Fj Read Execution Write Operand Complete Result 2 3 4 6 7 8 9 19 20 9 11 12 21 14 16 22 Fk Qj Qk Rj
Rk

Scoreboard Example Cycle 61


Instruction Instruction LD F6 LD F2 MULT F0 SUBD F8 DIVD F10 ADDD F6 Status j 34+ 45+ F2 F6 F0 F8 k R2 R3 F4 F2 F6 F2 Fi Issue 1 5 6 7 8 13 Fj Read Execution Write Operand Complete Result 2 3 4 6 7 8 9 19 20 9 11 12 21 61 14 16 22 Fk Qj Qk Rj
Rk

40 cycle Divide!

Functional Unit Status Name Busy Op Integer No Mult1 No Mult2 No Add No Divide Yes Div Register Result Status CLOCK F0 22 FU

F10 F0 F2 F4

F6 F6 F8 F10 Div

No F12

No

F31

Functional Unit Status Name Busy Op Integer No Mult1 No Mult2 No Add No Divide Yes Div Register Result Status CLOCK F0 61 FU

F10 F0 F2 F4

F6 F6 F8 F10 Div

No F12

No

F31

ADDD completes writing of result


57

DIVD completes execution; ready to write result


58

Scoreboard: Bookkeeping Actions

59