Proudové zpracování instrukcí I. Celočíselná pipeline RISC © Ing. Miloš Bečvář s využitím slajdů prof. Davida Pattersona © CS152, University California at Berkeley, 1996
Architektura počítačů
Osnova přednášky ° Návrh jednoduché datové cesty a řadiče pro DLX (s použitím znalostí z X36JPO) ° Návrh proudově pracující datové části a řadiče DLX ° Porovnání výkonnosti různých organizací procesoru DLX ° Problémy vzniklé použitím proudového zpracování instrukcí (hazardy proudového zpracování)
Architektura počítačů
Opakování: Výkonnostní rovnice CPU ° Výkonnost procesoru závisí na: – Počtu instrukcí (IC) – Počtu taktů na instrukci (CPI) – Periodě hodinového signálu (Tclk) IC
CPI
Tclk
° Organizace CPU ovlivňuje: – Periodu hodinového signálu (Tclk) – Počet taktů na instrukci (CPI) ° Výkonnostní rovnice CPU (doba provádění programu): TCPU= IC * CPI * Tclk Architektura počítačů
© David Patterson, CS152 UCB 1996
Návrh CPU – obecný postup (viz X36JPO) 1. Analýza ISA => požadavky na datovou část • Sémantika instrukcí vyjádřena jako „přesuny“ mezi registry • Datová část musí obsahovat minimálně všechny registry obsažené v ISA (také zvané architekturní registry) • Datová část musí podporovat všechny „přesuny“ mezi registry 2. Výběr komponent datové cesty, definice časování (registry řízené hranou/hladinou, jednofázové či vícefázové hodiny) 3. Volba propojení elementů datové části (sběrnice nebo multiplexery či kombinace) 4. Návrh řadiče pro danou datovou cestu
Architektura počítačů
© David Patterson, CS152 UCB 1996
“Typický 32-bitový RISC” - DLX o 32-bit kódování instrukcí pevné délky (3 formáty) o 32 32-bitových univerzálních registrů (R0=0) o 32 FP registrů, registry dvojnásobné přesnosti v párech o Registr – Registr (Load-Store) (3,0) GPR ISA o ALU operace jsou typu registr-registr a registr-přímý operand (16-bitů přímý operand) o Jeden adresní mód pro instrukce load/store: bázovaný + 16-bitový offset (base/displacement) o Jednoduché PC-relativní podmíněné skoky, 16-bitový offset (displacement) Podobně : SPARC, MIPS, HP PA-RISC, DEC Alpha, IBM PowerPC, CDC 6600, CDC 7600, Cray-1, Cray-2, Cray-3 Architektura počítačů
DLX - formáty instrukcí ° 3 formáty instrukcí 31
• R-typ • I-typ • J-typ
26
21
16
op 6 bitů 31 26 op 6 bitů 31 26 op 6 bitů
rs 5 bitů 21 rs 5 bitů
rt 5 bitů 16 rt 5 bitů
11 rd 5 bitů
6 5 bitů
0 funct 6 bitů 0
imm16 / disp16 16 bitů 0
target address displacement 26 bitů
° Význam polí v kódu instrukce: • op: operační znak (op-code) • rs, rt, rd: čísla zdrojových a cílových registrů • funct: specifikuje operaci u typu R – rozšíření pole “op” • imm16 / disp16: přímý operand / displacement skoku, Load, Store • target address displacement: displacement cílové adresy dlouhého skoku (resp. volání podprogramu) Architektura počítačů
© David Patterson, CS152 UCB 1996
DLX – Podmnožina instrukcí pro dnešek ° ADD a SUB • ADD rd, rs, rt
31
op 6 bitů
• SUB rd, rs, rt ° OR Immediate: • ORI rt, rs, imm16 ° LOAD a STORE Word • LW rt, disp16(rs) • SW rt, disp16(rs)
31
• BEQZ rs, disp16 • BNEZ rs, disp16
21 rs 5 bitů
16 rt 5 bitů
26
21
16
op 6 bitů 31 26 op 6 bitů
rs 5 bitů 21 rs 5 bitů
rt 5 bitů 16 rt 5 bitů
21
16
31
° BRANCH:
26
26 op 6 bitů
rs 5 bitů
5 bitů
Architektura počítačů
11 rd 5 bitů
6 5 bitů
0 funct 6 bitů 0
imm16 16 bitů 0 disp16 16 bitů 0 disp16 16 bitů
© David Patterson, CS152 UCB 1996
Popis funkce instrukcí jako mezireg. „přesuny“ Instr.
„Meziregistrové přesuny“ (Register Transfer Level)
ADD
R[rd] <– R[rs] + R[rt];
PC <– PC + 4
SUB
R[rd] <– R[rs] – R[rt];
PC <– PC + 4
ORI
R[rt] <– R[rs] or ZX(imm16);
PC <– PC + 4
LW
R[rt] <– MEM[ R[rs] + SX(disp16)];
PC <– PC + 4
SW
MEM[ R[rs] + SX(disp16) ] <– R[rt]; PC <– PC + 4
BEQZ
if ( R[rs] == 0 ) then PC <– PC + 4 +SX(disp16)] else PC <– PC + 4
BNEZ
if ( R[rs] != 0 ) then PC <– PC + 4 + SX(disp16)] else PC <– PC + 4
SX … sign extended, ZX … zero extended Architektura počítačů
© David Patterson, CS152 UCB 1996
Komponenty datové části (opakování z X36JPO) ° Kombinační logika : - hradla, multiplexery, třístavové budiče, … - paměti ROM ° Sekvenční logika : - registry (používáme pouze hranově řízené DFF) - víceportová registrová pole - zapisovatelné synchronní paměti Všimněte si, že registrové pole (paměť) se chová jako kombinační logika z hlediska čtení ale je to sekvenční logika pro zápis !
Architektura počítačů
Datová cesta pro načtení instrukce (Instr.Fetch) ° Společná pro všechny instrukce • Čtení instrukce: mem[PC] • Logika adresy následující instrukce : -
Implicitně: PC <- PC + 4
-
Podmíněný skok, volání podprogramu: PC <- target address.
Clk
PC Next Address Logic
Ideální instrukční paměť (Perfektní Cache poskytující instrukci každý takt)
Address Instruction Memory
Architektura počítačů
Instruction Word 32
© David Patterson, CS152 UCB 1996
Datová část pro registr-registr ALU instrukci ° R[rd] <- R[rs] op R[rt] Př: ADD rd, rs, rt • RA, RB, a RW – připojeny k číslům registrů rd, rs, rt • ALUctr a RegWr: řídicí signály (dekódovány z polí op a funct) 31
26 op 6 bitů
21 rs 5 bitů
rd rs RegWr 5 5
rt 5 bitů
11 rd 5 bitů
rt 5
RW RA RB 32 32-bit Registers
6
0 funct 6 bitů
5 bitů ALUctr
busA 32 busB 32
Architektura počítačů
ALU
busW 32 Clk
16
Result 32
© David Patterson, CS152 UCB 1996
ALU instrukce s přímým operandem ° R[rt] <- R[rs] op ZX[imm16] ] 31
26 op 6 bitů rd
RegDst
21
16
rs 5 bitů
0
rt 5 bitů
imm16 16 bitů
rt
Mux RegWr 5
32 Clk
ALUctr
5 busA
RW RA RB 32 32-bit Registers
32
16
ZeroExt
imm16
Result 32
Mux
busB 32
ALU
busW
rs 5
32 ALUSrc
Architektura počítačů
© David Patterson, CS152 UCB 1996
Instrukce „Load“ ° R[rt] <- Mem[ R[rs] + SX[disp16] ] 31
Mux RegWr 5
32 Clk
rs 5
rs 5 bitů
rt 5 bitů
0 disp16 16 bitů
Ideální datová paměť (perfektní datová cache) ALUctr
5 busA
RW RA RB 32 32-bit Registers
W_Src
32
ALUSrc
Mux
32
ExtOp
32 MemWr
Mux
busB 32 Extender
imm16 (disp16) 16
rt, disp16 (rs)
16
ALU
busW
21
op 6 bitů rt
rd RegDst
26
Př.: LW
WrEn Adr Data In 32 Clk
Architektura počítačů
Data Memory
32
© David Patterson, CS152 UCB 1996
Instrukce „Store“ ° Mem[ R[rs] + SX[disp16]] <- R[rt] 31
26
21
op 6 bitů rd rt RegDst
rs 5 bitů
Př.: SW
rt, disp16 (rs)
16
0
rt 5 bitů
disp16 16 bitů ALUctr MemWr
W_Src
Mux rs
RegWr 5
RW RA RB 32 32-bit Registers
busB 32 32
ExtOp
32
Mux
16
32
Extender
imm16 (disp16)
busA
Mux
32 Clk
5
ALU
busW
5
rt
WrEn Adr Data In 32 Clk
Data Memory
32
ALUSrc Architektura počítačů
© David Patterson, CS152 UCB 1996
Instrukce podmíněného skoku („Branch“) 31
26 op 6 bitů
°
BEQZ
21 rs 5 bitů
16 5 bitů
0 disp16 16 bitů
rs, disp16
1. mem[PC]
Načti instrukci z paměti
2. Cond <- R[rs] == 0
Vyhodnoť podmínku v ALU
3. if (Cond) Proveď skok dle výsledku podmínky PC <- PC + 4 + SX(imm16) else PC <- PC + 4
Architektura počítačů
© David Patterson, CS152 UCB 1996
Datová část pro instrukci podmíněného skoku ° BEQZ
rs, disp16 31
26 op 6 bitů
21 rs 5 bitů
16 00000 5 bitů
0 disp16 16 bitů
Inst Address Cond nPC_sel Adder
PC
Mux
busW
Adder
PC Ext
disp16
RegWr 5
00
32
00000 5
RW RA RB 32 32-bit Registers
Clk
Clk Dedikovaná sčítačka pro výpočet cílové adresy skoku
rs 5
busA 32 busB 0 32
Equal?
4
Porovnání provedeno v ALU
R0 is always zero => busB = 0
Architektura počítačů
© David Patterson, CS152 UCB 1996
Vše pohromadě – jednoduchá datová část DLX
nPC_sel
RegDst rd
5
5
busA RW RA RB 32 32-bit Registers busB 32
imm16 (disp16) 16
= 32 0
1
32 Data In
32 Clk
32
0 Mux
00
MemtoReg
rt
Extender
Adder
PC Ext
disp16
rs
Clk Clk
ALUctr MemWr
Cond
rt
Mux
32
imm16 (disp16)
ALU
Mux
PC
Adder
RegWr 5 busW
rd
0
1 4
rt
Instruction<31:0>
<0:15>
rs
<11:15>
Addr
<16:20>
<21:25>
Instruction Memory
WrEn Adr
1
Data Memory
ALUSrc ExtOp Architektura počítačů
© David Patterson, CS152 UCB 1996
Řadič pro jednotaktový procesor Instruction<31:0>
rd
<0:15>
rs
<11:15>
<16:20>
op funct rt
<21:25>
Adr
<21:25>
Instr. Memory
imm16 (disp16)
Řadič Kombinační logika (dekodér) nPC_selRegWr RegDst ExtOp ALUSrc ALUctr MemWr MemtoReg
Cond
DATOVÁ ČÁST
Architektura počítačů
© David Patterson, CS152 UCB 1996
Charakteristika jednotaktového procesoru ° Jednoduchá implementace ° CPI=1, ale Tclk je velmi dlouhá !! ° Tclk záleží na nejdelší cestě v kombinační logice – instrukce LOAD Ideal Instruction Memory
Instruction rd rs 5 5
Instruction Address
rt 5
imm16 16 A
PC
32
Rw Ra Rb 32 32-bit Registers
32 32
ALU
B
Clk Clk
Next Address
Kritická cesta (instrukce Load) = PC’s Clk-to-Q + Instruction Memory’s Access Time + Register File’s Access Time + ALU to Perform a 32-bit Add + Data Memory Access Time + Setup Time for Register File Write + Clock Skew
32 Architektura počítačů
Data Address Data In
Ideal Data Memory
Clk © David Patterson, CS152 UCB 1996
Zkrácení Tclk vložením dodatečných registrů ° Obecné pravidlo návrhu: registr
registr
Kombinační logika (A) Kombinační logika
=>
registr
Kombinační logika (B) registr registr Architektura počítačů
© David Patterson, CS152 UCB 1996
Vložení registrů do datové části
Result Store
MemWr
RegDst RegWr
Reg. File
MemRd MemWr
Data Mem
Exec
Mem Access
ALUctr
ALUSrc
ExtOp
Instrukční Registr
Operand Fetch
Instruction Fetch
PC
Next PC
nPC_sel
° Přidané registry
Registry Výsledek ALU Registr Operandů Registr addresy dat z paměti Architektura počítačů
© David Patterson, CS152 UCB 1996
Překreslení jednotaktového CPU In stru ction D ecod er (C on troller) C om b in atorial Log ic
Ins truc tio n
In stru ction M em ory A dd r
b us A b us W
32 32-b it R eg isters
ALU
S
b us B
Ins tr A d d r Im m 1 6
+4
S
E xt Ad d r b us B
PC
Im m 1 6
D ata M em ory
M
PC E xt
(Řídící signály vynechány pro přehlednost; imm16 = disp16) Architektura počítačů
Vícetaktová datová část a řadič Instruction
IR
Controller (Hardwired, microprogrammed) Finite State Machine
Instruction Memory
busA
Addr
32 32-bit Registers
busW Instr Addr
Imm16
busB
S
ALU
S
Ext Addr
Imm16
Next addr Logic
busB
PC
Added Registers
Architektura počítačů
Data Memory
M
Řadič vícetaktového CPU jako konečný automat IR <= MEM[PC]
Platí cpi = 5 pro LW, cpi = 4 pro ostatní instr. busA <= R[rs]
Implementace : - obvodový řadič - mikroprogramovaný řadič (jako v X36JPO DOP-v*)
busB <= R[rt]
S <= busA funct busB
BEQZ, BNEZ ORI S <= busA or ZX
Memory
Execute
R-type
R[rd] <= S R[rt] <= S PC <= PC + 4 PC <= PC + 4
LW
SW
S <= busA + SX
S <= busA + SX
Comparison
Cond =0 M<= MEM[S]
Cond =1
PC <= PC + 4 + SX
MEM[S] <= busB PC <= PC + 4 PC <= PC + 4 R[rt] <= M PC <= PC + 4 Architektura počítačů
© David Patterson, CS152 UCB 1996
Charakteristika vícetaktového CPU ° Tclk=1/5 (hodně optimistické) ° cpi: Load instrukce = 5 taktů ALU instr., skoky, store = 4 takty, ° Load instrukce tvoří typicky 26 % instrukcí (SPECInt1996 průměr na DLX) ° CPI = 4*0.74 + 5*0.26 = 4.26 ° Zrychlení oproti jednotaktovému CPU = 5/4.26 = 1.17 ° Vícetaktový procesor je univerzálnější, umožňuje implementovat i komplexní instrukce např. pomocí mikroprogramování. Architektura počítačů
Využití komponent datové části Instruction Memory – použit v taktu Instruction Fetch Register File – použito v taktu Operand Fetch a Result Store ALU – použito v taktu Execute (také pro výpočet adresy L/S ) Data Memory – použito v taktu Memory Access Next PC logic – použito v taktu Result Store nebo v taktu Memory Access (instrukce store) Průměrné využití komponenty je v jednom taktu na instrukci (1/4.26) = 23 % Optimalizace komponent - sdílení: - Sloučení paměti instrukcí a dat, - „Next PC“ může být spočítán v ALU. Architektura počítačů
© David Patterson, CS152 UCB 1996
Alternativní datová část – sdílení komponent - stejně výkonná + menší Next PC computed in ALU next P C
PC
Von Neumann’s unified memory for data and program busA
32 32-bit R egisters
bus W
Im m 16
PC
A LU
S
S
bus B
Ext
M
A ddr busB
U nified M em ory
C ontroller (H ardw ired, M icroprogram m ed) Finite State M ac hine
Architektura počítačů
IR
Shrnutí jednotaktového a vícetaktového CPU ° Dosud nebylo v zásadě nic nového – pouze jsme použili postupy známé z X36JPO ° Alternativní datová část vícetaktového DLX je podobná procesorům probíraným v X36JPO ° Všechny varianty CPU jsou plně sekvenční – instrukce je dokončena než je následující započata (nazýváme je “konvenční CPU architektury”) Abychom dosáhli lepší výkonnosti DLX musíme použít techniky proudového zpracování (pipelining)
Architektura počítačů
Proudové zpracování instrukcí - motivace ° Komponenty datové části nebyly plně využity ve vícetaktovém CPU. ° Pokusme se je použít v každém taktu místo jejich optimalizace sdílením S in g le -c yc le C P U in s tr .1
IF
ID
EX
MEM
WB
in s tr .2
IF
ID
EX
MEM
WB
MEM
WB
M u ltic yc le C P U in s tr .1
IF
ID
EX
MEM
WB IF
in s tr.2
ID
EX
P ip e lin e d C P U in s tr .1 in s tr .2 in s tr .3 in s tr .4
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
Architektura počítačů
WB
Vícetaktová datová část s řadičem Instruction
IR
Controller (Hardwired, microprogrammed) Finite State Machine
Instruction Memory
busA
Addr
busW PC
Imm16
32 32-bit Registers
busB
S
ALU
S
Ext Addr
Imm16
Next Addr Logic
busB
PC
Added Registers
Architektura počítačů
Data Memory
M
Proudově pracující datová část a řadič IF stage
Instruction Memory
ID stage
EX stage Comb. Logic
Comb. Logic
Instruction
MEM stage
WB stage
Comb. Logic
Comb .Logic
Addr
busA busW PC
32 32-bit Registers
busB
ALU S
Ext Imm16
Next Addr Logic
Addr busB
PC
Imm16
Potenciál zrychlení = počet stupňů pipeline. Architektura počítačů
Data Memory
M
Proudově pracující datová část a řadič 5.takt ID stage
IF stage Instr.5
Instruction Memory
Instr.4
Instr.3
Comb Logic
Comb. Logic
Instruction
Addr
EX stage
MEM stage
WB stage
Instr.2
Instr. 1
Comb. Logic
Comb. Logic
Imm16 busA busW
Instr Addr
32 32-bit Registers
busB
ALU
S
Ext busB
Next addr Logic
Addr Data Memory
PC
Imm16
Potenciál zrychlení = počet stupňů pipeline. Architektura počítačů
M
Proudově pracující datová část a řadič 6.takt ID stage
IF stage Instr.6
Instruction Memory
Instr.5
Instr.4
Comb Logic
Comb. Logic
Instruction
Addr
EX stage
MEM stage
WB stage
Instr.3
Instr.2
Comb. Logic
Comb. Logic
Imm16 busA busW
Instr Addr
32 32-bit Registers
busB
ALU
S
Ext busB
Next addr Logic
Addr Data Memory
PC
Imm16
Potenciál zrychlení = počet stupňů pipeline. Architektura počítačů
M
Proudově pracující datová část a řadič 7.takt ID stage
IF stage Instr.7
Instruction Memory
Instr.6
Instr.5
Comb Logic
Comb. Logic
Instruction
Addr
EX stage
MEM stage
WB stage
Instr.4
Instr.3
Comb. Logic
Comb. Logic
Imm16 busA busW
Instr Addr
32 32-bit Registers
busB
ALU
S
Ext busB
Next addr Logic
Addr Data Memory
PC
Imm16
Potenciál zrychlení = počet stupňů pipeline. Architektura počítačů
M
Proudově pracující datová část a řadič 8.takt ID stage
IF stage Instr.8
Instruction Memory
Instr.7
Instr.6
Comb Logic
Comb. Logic
Instruction
Addr
EX stage
MEM stage
WB stage
Instr.5
Instr.4
Comb. Logic
Comb. Logic
Imm16 busA busW
Instr Addr
32 32-bit Registers
busB
ALU
S
Ext busB
Next addr Logic
Addr Data Memory
PC
Imm16
Potenciál zrychlení = počet stupňů pipeline. Architektura počítačů
M
Proudově pracující datová část a řadič 9.takt ID stage
IF stage Instr.9
Instruction Memory
Instr.8
Instr.7
Comb Logic
Comb. Logic
Instruction
Addr
EX stage
MEM stage
WB stage
Instr.6
Instr.5
Comb. Logic
Comb. Logic
Imm16 busA busW
Instr Addr
32 32-bit Registers
busB
ALU
S
Ext busB
Next addr Logic
Addr Data Memory
PC
Imm16
Potenciál zrychlení = počet stupňů pipeline. Architektura počítačů
M
Řadič proudově pracujícího DLX ° Distribuován mezi stupni pipeline (tzv. data stationary control) – Instrukce prochází stupni zpracování společně se svými daty ° Nějaký klasický sekvenční řadič je potřeba pro korektní obsluhu výjimek(přerušení), datových hazardů a dalších funkcí. (pro jednoduchost není znázorněn). Řadič proudově pracujícího DLX je relativně jednoduchý neboť DLX je RISC procesor ° Všechny instrukce trvají stejný nebo podobný počet taktů ° Jednoduché kódování instrukcí pevné délky ° Pouze instrukce Load/Store přistupují do paměti ° Procesor podporuje jen zarovnaná data a instrukce Architektura počítačů
Chování DLX pipeline podrobněji Stupeň pipeline
ALU instrukce
Load / Store instrukce
Branch instrukce
Instruction Fetch (IF)
Čtení instrukce
Čtení instrukce
Čtení instrukce
Instruction Decode (ID)
Čtení operandů a dekódování instrukce Výpočet výsledku
Čtení operandů a dekódování instrukce Výpočet adresy
Čtení operandů a dekódování instrukce Vyhodnocení podmínky
Nic, jen kopírování výsledku Zápis výsledku do registrového pole
Přístup do paměti
Výpočet cílové adresy a změna PC
Zápis výsledku do reg. pole (pouze Load)
Nic
Execute (EX) Memory Access (MEM) Write Back (WB)
Toto je “tradiční 5-stupňová celočíselná RISC pipeline” (též pipeline ve stylu procesoru MIPS) Architektura počítačů
Jiný pohled na pipeline - registry mezi stupni IF stage Instruction Memory
ID stage
MEM stage WB stage
Comb. Logic
Comb Logic
Instruction
Addr
EX stage
Comb. Logic
Comb. Logic
Imm16 busA busW
Instr Addr
32 32-bit Registers
busB
ALU
S
Ext busB
Next addr Logic
Addr Data Memory
PC
Imm16
Architektura počítačů
M
Proudové zpracování – analýza zrychlení (1) TCPU = IC * CPI * Tclk ° IC je stejné pro všechny varianty CPU ° S je počet stupňů proud. zpracování
tcq DQ
tcl_f ull
tsetup
comb. logic
Tclk_nopipe = tcq + tcl_full + tsetup + tskew tcl_longest_stage Tclk_pipe = tcq + tcl_longest_stage + tsetup + tskew tcl_longest_stage Tclk_pipe ≈
tcl_full ≈ S
tcl_full tsetup + tcq + tskew << S
Tclk_nopipe S
Pozn: cl = combinatorial logic, cq = clock to Q delay of register tskew = rozptyl příchodu aktivních hran clk k registrům Architektura počítačů
DQ
Proudové zpracování – analýza zrychlení (2) ° Kolik je CPI proudově pracujícího procesoru ? ° S je počet stupňů pipeline, IC je počet provedených instrukcí Pipeline produces result every clock cycle
Latency to fill pipeline
IF
instr1 instr.2
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
instr.3 instr.4 instr.5
WB
CyclesIC_instructions = S + IC - 1 CyclesIC_instructions CPI =
=
IC Pro velké IC :
S-1
S-1
+1
Ideální CPI pro proudově pracující procesor je rovno 1.
IC
<< 1 => CPIpipeline_ideal = 1
IC Architektura počítačů
Problémy, které přináší proudové zpracování Proudové zpracování může narušit sémantiku provádění programu: Sémantika provádění programu na von Neumannově počítači: Nechť i,j jsou dvě přirozená čísla, i<j potom i-tá instrukce v programovém pořadí je provedena před j-tou instrukcí. Toto definuje úplné sekvenční uspořádání prováděných instrukcí a pipelining toto pořadí narušuje (všimněte si, že jednotaktový i vícetaktový procesor toto pořadí respektují). Dvě možné řešení: 1. Změnit sémantiku – toto je obtížné až nemožné (Ale i tato cesta se využívá – viz procesory VLIW a EPIC) 2. Modifikace proudového zpracování – výsledek je stejný jako v případě sekvenčního provádění (Toto je výhodné, neboť programátor v JSA nemusí vědět o proudovém zpracování.) Architektura počítačů
Příklad narušení sémantiky ADD zapíše novou hodnotu R1
SUB přečte starou hodnotu R1
ADD R1,R2,R3
IF
SUB R4,R1,R3
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
Programátor očekává toto provádění:
ADD R1,R2,R3
SUB R4,R1,R3
IF
ID
EX
MEM
Write
WB
Read IF
ID
EX
MEM
WB
Čtení R1 instr. SUB má být provedeno po zápisu R1 instrukcí ADD. V pipeline toto pořadí není dodrženo.Tuto situaci nazýváme Read after Write (RAW) hazard. Architektura počítačů
Jiný příklad narušení sémantiky
BEQZ R3, M1 instr.2 instr.3 instr.4 M1: ADD R4,R6,R7
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
IF
ID
EX
MEM
ID
EX
vyhodnocení IF podmínky & výpočet PC násl. PC změněno
Tyto instrukce neměly být provedeny
WB WB MEM
WB
Toto je příklad narušení sémantiky řídicí instrukce (BEQZ) Tzv. řídicí hazard (control hazard).
Architektura počítačů
Požadavky na korektnost provádění Úplné sekvenční provádění není třeba, ale musí být zachovány následující podmínky: Definice: Pro i<j: 1. Datové závislosti (Data Dependences) Instrukce j je datově závislá na instrukci i iff instrukce j vytváří výsledek používaný instrukcí j. 2. Jmenné závislosti (Name Dependences též False data dependences) Instrukce j je závislá po jménu na instrukci i iff instrukce j používá stejné místo k uložení výsledku ze kterého instrukce i čte nebo do něj zapisuje výsledek. 3. Řídící závislosti (Control Dependences) Instrukce j je závislá na instrukci i iff provedení instrukce j závisí na výsledku provedení řídicí instrukce i.
Lze dokázat, že výsledek programu je stejný jako v případě sekvenčního provádění pokud tyto vlastnosti jsou respektovány. Architektura počítačů
Hazardy v proudovém zpracování (nemají nic společného s hazardy v logických obvodech !!)
Hazard v proudovém zpracování je potenciální narušení sémantiky provádění programu. ° Datové hazardy: narušení datových nebo jmenných závislostí ° Řídicí hazardy: narušení řídicích závislostí ° Strukturní hazardy: důsledek neúplné replikace prostředků v pipeline, kolize na sdílených prostředcích (paměti, porty reg. polí, funkční jednotky ) Všimněte si, že datové a řídicí hazardy jsou důsledkem konfliktu mezi sémantikou programu a pipeliningem. Strukturní hazardy jsou důsledkem nedokonalého pipeliningu (více o nich příští týden).
Architektura počítačů
Řešení datového hazardu pomocí pozastavení ADD zapisuje novou hodnotu do R1
SUB čte starou hodnotu R1
ADD R1,R2,R3
IF
SUB R4,R1,R3
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
Řešení: Pozastavení pipeline v ID dokud není hazard odstraněn.
ADD R1,R2,R3 SUB R4,R1,R3
IF
ID IF
EX
MEM
WB
ID stall ID stall
ID
EX
MEM
WB
SUB čeká v ID dokud ADD nezapíše novou hodnotu do R1 Pozastavení = pipeline stall, pipeline bubble insertion, pipeline interlock Architektura počítačů
Řešení řídicího hazardu pomocí pozastavení
BEQZ R3, M1 instr.2
IF
ID
EX
IF stall IF stall
MEM
WB
IF stall
instr.3 instr.4 M1: ADD R4,R6,R7
vyhodnocení IF podmínky & výpočet PC nového PC změněno
ID
EX
MEM
WB
Toto řešení znamená 3 takty pozastavení (3 stalls) na každou prováděnou instrukci podmíněného skoku.
Architektura počítačů
Vliv pozastavení na CPI ° CPI v ideálním proudovém zpracování je 1 (když je pipeline zaplněna, dokončí v každém taktu jednu instrukci, toto nezávisí na počtu stupňů pipeline) ° Každý hazard lze v principu odstranit pomocí pozastavení (někdy to lze i bez pozastavení ale o tom příště). ° CPI reálného proudově pracujícího procesoru je dáno jako CPIpipeline_real = CPI pipeline_ideal + SPI (stalls per instruction) Vliv faktorů SPI na CPI: SPI = SPIdata + SPIcontrol SPIcontrol = dynamická četnost instrukce podmíněném skoku * 3 Pokud 13 % instrukcí jsou instrukce podmíněného skoku: SPIcontrol = 0,13 * 3 =0,39 Výpočet SPIdata příští přednášku. Architektura počítačů
Zrychlení pomocí proudového zpracování Tcpu_no_pipeline Speedup =
Tcpu_pipeline
=
IC * CPIno_pipeline * Tclk_no_pipeline IC * CPIpipeline_real * Tclk_pipeline
CPIsingle_cycle = 1; CPIpipeline_real = CPIpipeline_ideal + SPI Stalls per Instruction (pozastavování pipeline)
1 Speedup =
CPIpipeline_ideal + SPI
*
Tclk_no_pipeline Tclk_pipeline
S Speedup =
1 + SPI
Architektura počítačů
Závěry ° Ukázali jsme si několik organizací procesoru DLX a srovnali jsme jejich výkonnost ° Ukázali jsme, že je možno snížit CPI na úkor Tclk (a naopak) ° Ukázali jsme si tradiční 5-stupňovou celočíselnou RISC pipeline ° Výkonnost proudového zpracování závisí na počtu stupňů pipeline S a četnosti pozastavování (SPI) ° K pozastavování dochází kvůli strukturním, datovým a řídícím hazardům Příští přednáška ° Řešení hazardů v celočíselné pipeline bez pozastavování ° Vícetaktové operace v pipeline –pipeline pro pohyblivou ř.č. Architektura počítačů