Documente Academic
Documente Profesional
Documente Cultură
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
WAR (anti-dependency)
j ncearc s scrie nainte ca i s citeasc
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
SCOREBOARD - intro
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)
pentru WAW: blocare n Issue pn cnd scrierea anterioar se termin pentru WAR: blocare n Write Result pn cnd citirea anterioar se termin
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!
9 10
11
12
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
n aceast faz, unitatea funcional este atribuit Dac operanzii sunt disponibili, unitatea funcional permite citirea operanzilor din register file Structura nu folosete forwarding
15
16
EX
Fetch Issue Read Operands EX WB Fetch
SCRIE REZULTAT
Issue Read Operands EX WB
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
citete F8 (anti-dependen)
17
18
MIPS cu Scoreboard
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.
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
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)
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
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
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
Tabele chiar nainte ca DIV s scrie rezultatul Aproape totul e gata i conducta e aproape goal
31
32
Exemplu scoreboarding
Preluat din Montek Singh COMP 740: Computer Architecture and Implementation
k R2 R3 F4 F2 F6 F2 Fi
Issue
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
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
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
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
MULT issues
40
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
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
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
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
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
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
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
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
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
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
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
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
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
DIVD stalled (RAW hazard on F0), ADDD stalled (WAR hazard on F6)
53
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
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
No No F12
No No
F31
MULT writes result; DIVD can proceed to read operands at next cycle
55
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
59