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
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í)
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 (T clk ) Organizace CPU ovlivňuje: Periodu hodinového signálu (T clk ) Počet taktů na instrukci (CPI) IC CPI T clk Výkonnostní rovnice CPU (doba provádění programu): T CPU = IC * CPI * T clk 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 David Patterson, CS152 UCB 1996
Typický -bitový RISC - DLX o -bit kódování instrukcí pevné délky (3 formáty) o -bitových univerzálních registrů (R0=0) o 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
DLX - formáty instrukcí 3 formáty instrukcí 31 R-typ 31 I-typ 31 J-typ 26 21 16 11 6 op rs rt rd funct 6 bitů 5 bitů 5 bitů 5 bitů 5 bitů 6 bitů 26 21 16 op rs rt imm16 / disp16 6 bitů 5 bitů 5 bitů 16 bitů 26 op target address displacement 6 bitů 26 bitů 0 0 0 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) David Patterson, CS152 UCB 1996
DLX Podmnožina instrukcí pro dnešek ADD a SUB ADD rd, rs, rt SUB rd, rs, rt 31 26 21 16 op rs rt rd funct 6 bitů 5 bitů 5 bitů 5 bitů 5 bitů 6 bitů 11 6 0 OR Immediate: ORI rt, rs, imm16 LOAD a STORE Word LW rt, disp16(rs) SW rt, disp16(rs) BRANCH: BEQZ rs, disp16 BNEZ rs, disp16 31 31 31 26 21 16 op rs rt imm16 6 bitů 5 bitů 5 bitů 16 bitů 26 21 16 op rs rt disp16 6 bitů 5 bitů 5 bitů 16 bitů 26 21 16 op rs disp16 6 bitů 5 bitů 5 bitů 16 bitů 0 0 0 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 BNEZ if ( R[rs] == 0 ) then PC < PC + 4 +SX(disp16)] else PC < PC + 4 if ( R[rs]!= 0 ) then PC < PC + 4 + SX(disp16)] else PC < PC + 4 SX sign extended, ZX zero extended 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!
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 Ideální instrukční paměť (Perfektní Cache poskytující instrukci každý takt) PC Address Next Address Word 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 21 16 11 6 op rs rt rd funct 6 bitů 5 bitů 5 bitů 5 bitů 5 bitů 6 bitů 0 RegWr busw Clk rd rs 5 5 5 RW RA RB -bit Registers rt busa ALUctr ALU Result David Patterson, CS152 UCB 1996
ALU instrukce s přímým operandem R[rt] <- R[rs] op ZX[imm16] ] 31 26 21 16 0 rd rt RegDst Mux rs RegWr 5 5 5 busw Clk op rs rt imm16 6 bitů 5 bitů 5 bitů 16 bitů imm16 RW RA RB -bit Registers 16 ZeroExt busa Mux ALUSrc ALUctr ALU Result David Patterson, CS152 UCB 1996
Instrukce Load R[rt] <- Mem[ R[rs] + SX[disp16] ] Př.: LW rt, disp16 (rs) RegDst busw Clk 31 26 21 16 op rs rt disp16 6 bitů 5 bitů 5 bitů 16 bitů rd rt Ideální datová paměť Mux (perfektní datová cache) rs RegWr ALUctr 5 5 5 RW RA RB busa W_Src -bit Registers imm16 (disp16) 16 Extender Mux ALUSrc ALU Data In Clk MemWr WrEn Adr Data 0 Mux ExtOp David Patterson, CS152 UCB 1996
Instrukce Store Mem[ R[rs] + SX[disp16]] <- R[rt] Př.: SW rt, disp16 (rs) RegDst busw Clk 31 rd RegWr Mux 6 bitů 5 bitů 5 bitů 16 bitů rt ALUctr MemWr 5 5 imm16 (disp16) rs 5 RW RA RB -bit Registers 16 26 rt Extender 21 busa Mux 16 op rs rt disp16 Data In ALU Clk WrEn Adr Data 0 W_Src Mux ExtOp ALUSrc David Patterson, CS152 UCB 1996
Instrukce podmíněného skoku ( Branch ) 31 26 BEQZ rs, disp16 21 op rs disp16 6 bitů 5 bitů 5 bitů 16 bitů 16 0 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 David Patterson, CS152 UCB 1996
Datová část pro instrukci podmíněného skoku BEQZ rs, disp16 4 disp16 PC Ext 31 Adder 26 21 16 op rs 00000 disp16 6 bitů 5 bitů 5 bitů 16 bitů Adder npc_sel Mux 00 PC Inst Address Clk Dedikovaná sčítačka pro výpočet cílové adresy skoku busw Clk RegWr rs 00000 5 5 5 RW RA RB -bit Registers busa 0 0 Cond Equal? R0 is always zero => = 0 Porovnání provedeno v ALU David Patterson, CS152 UCB 1996
Vše pohromadě jednoduchá datová část DLX Addr rs <21:25> rt <16:20> rd <11:15> <0:15> imm16 (disp16) <31:0> npc_sel RegDst rd rt Cond ALUctr MemWr MemtoReg disp16 4 PC Ext Adder Adder PC Mux Clk 00 RegWr busw Clk 1 imm16 (disp16) 0 5 5 rs 5 RW RA RB -bit Registers 16 rt ExtOp busa Extender 0 Mux 1 ALUSrc = ALU WrEn Adr Data In Data Clk 0 Mux David Patterson, CS152 UCB 1996 1
Řadič pro jednotaktový procesor <31:0> Instr. Adr op <21:25> funct rt <21:25> <0:15> <11:15> <16:20> rs rd imm16 (disp16) Řadič Kombinační logika (dekodér) npc_selregwr RegDst ExtOp ALUSrc ALUctr MemWr MemtoReg Cond DATOVÁ ČÁST David Patterson, CS152 UCB 1996
Charakteristika jednotaktového procesoru Jednoduchá implementace CPI=1, ale T clk je velmi dlouhá!! T clk záleží na nejdelší cestě v kombinační logice instrukce LOAD Kritická cesta (instrukce Load) = PC s Clk-to-Q + Next Address Ideal Address Clk PC rd 5 Clk rs 5 Rw Ra rt 5 Rb -bit Registers imm16 16 A B s Access Time + Register File s Access Time + ALU to Perform a -bit Add + Data Access Time + Setup Time for Register File Write + Clock Skew ALU Data Address Data In Clk Ideal Data David Patterson, CS152 UCB 1996
Zkrácení T clk vložením dodatečných registrů Obecné pravidlo návrhu: registr registr Kombinační logika => Kombinační logika (A) registr registr Kombinační logika (B) registr David Patterson, CS152 UCB 1996
Vložení registrů do datové části Přidané registry Exec Data Mem Next PC PC Fetch Operand Fetch Mem Access Reg. File Result Store npc_sel ExtOp ALUSrc ALUctr MemWr MemRd RegDst RegWr MemWr Instrukční Registr Registry Operandů Výsledek ALU Registr addresy Registr dat z paměti David Patterson, CS152 UCB 1996
Překreslení jednotaktového CPU In stru ction Mem ory Instru ction Decod er (Con troller) Com b in atorial Addr Instr Addr busw -b it Reg isters busa ALU S +4 Im m 1 6 Ext S Ad dr PC Data Mem ory M Im m 16 PC Ext (Řídící signály vynechány pro přehlednost; imm16 = disp16)
Vícetaktová datová část a řadič IR Controller (Hardwired, microprogrammed) Finite State Machine Addr busa Instr Addr busw -bit Registers ALU S Imm16 Ext S Addr Imm16 Next addr PC Data M Added Registers
Řadič vícetaktového CPU jako konečný automat Platí cpi = 5 pro LW, cpi = 4 pro ostatní instr. IR <= MEM[PC] busa <= R[rs] <= R[rt] Implementace : - obvodový řadič - mikroprogramovaný řadič (jako v X36JPO DOP-v*) Execute R-type S <= busa funct ORI S <= busa or ZX LW S <= busa + SX SW S <= busa + SX BEQZ, BNEZ Comparison Cond =1 R[rd] <= S PC <= PC + 4 R[rt] <= S PC <= PC + 4 M<= MEM[S] R[rt] <= M PC <= PC + 4 Cond =0 MEM[S] <= PC <= PC + 4 PC <= PC + 4 PC <= PC + 4 + SX David Patterson, CS152 UCB 1996
Charakteristika vícetaktového CPU T clk =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í.
Využití komponent datové části použit v taktu 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 použito v taktu Access Next PC logic použito v taktu Result Store nebo v taktu 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. David Patterson, CS152 UCB 1996
Alternativní datová část sdílení komponent - stejně výkonná + menší Next PC computed in ALU busw next PC PC -bit Registers busa ALU S Von Neumann s unified memory for data and program PC S Imm16 Ext Addr M Unified M em ory Controller (Hardwired, Microprogrammed) Finite State Machine 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)
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 ingle-cycle C P U instr.1 IF ID EX M E M W B instr.2 M ultic yc le C P U IF ID EX M E M W B instr.1 IF ID EX M E M W B ins tr.2 IF ID EX M E M W B P ipelined C P U instr.1 instr.2 instr.3 instr.4 IF ID EX M E M W B IF ID EX M E M W B IF ID EX M E M W B IF ID EX M E M W B
Vícetaktová datová část s řadičem IR Controller (Hardwired, microprogrammed) Finite State Machine Addr busa PC busw -bit Registers ALU S Imm16 Ext S Addr Imm16 Next Addr PC Data M Added Registers
Proudově pracující datová část a řadič Addr IF stage Comb. ID stage EX stage MEM stage WB stage busa Comb. Comb. Comb. PC busw -bit Registers ALU S Imm16 Ext Addr Next Addr PC Data M Imm16 Potenciál zrychlení = počet stupňů pipeline.
Proudově pracující datová část a řadič 5.takt IF stage ID stage EX stage MEM stage WB stage Instr.5 Instr.4 Instr.3 Instr.2 Instr. 1 Comb Comb. Comb. Comb. Addr Imm16 busa Instr Addr busw -bit Registers ALU S Next addr PC Ext Addr Data M Imm16 Potenciál zrychlení = počet stupňů pipeline.
Proudově pracující datová část a řadič 6.takt IF stage ID stage EX stage MEM stage WB stage Instr.6 Instr.5 Instr.4 Instr.3 Instr.2 Comb Comb. Comb. Comb. Addr Imm16 busa Instr Addr busw -bit Registers ALU S Next addr PC Ext Addr Data M Imm16 Potenciál zrychlení = počet stupňů pipeline.
Proudově pracující datová část a řadič 7.takt IF stage ID stage EX stage MEM stage WB stage Instr.7 Instr.6 Instr.5 Instr.4 Instr.3 Comb Comb. Comb. Comb. Addr Imm16 busa Instr Addr busw -bit Registers ALU S Next addr PC Ext Addr Data M Imm16 Potenciál zrychlení = počet stupňů pipeline.
Proudově pracující datová část a řadič 8.takt IF stage ID stage EX stage MEM stage WB stage Instr.8 Instr.7 Instr.6 Instr.5 Instr.4 Comb Comb. Comb. Comb. Addr Imm16 busa Instr Addr busw -bit Registers ALU S Next addr PC Ext Addr Data M Imm16 Potenciál zrychlení = počet stupňů pipeline.
Proudově pracující datová část a řadič 9.takt IF stage ID stage EX stage MEM stage WB stage Instr.9 Instr.8 Instr.7 Instr.6 Instr.5 Comb Comb. Comb. Comb. Addr Imm16 busa Instr Addr busw -bit Registers ALU S Next addr PC Ext Addr Data M Imm16 Potenciál zrychlení = počet stupňů pipeline.
Ř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
Chování DLX pipeline podrobněji Stupeň pipeline ALU instrukce Load / Store instrukce Branch instrukce Fetch (IF) Čtení instrukce Čtení instrukce Čtení instrukce Decode (ID) Čtení operandů a dekódování instrukce Čtení operandů a dekódování instrukce Čtení operandů a dekódování instrukce Execute (EX) Výpočet výsledku Výpočet adresy Vyhodnocení podmínky Access (MEM) Nic, jen kopírování výsledku Přístup do paměti Výpočet cílové adresy a změna PC Write Back (WB) Zápis výsledku do registrového pole Zápis výsledku do reg. pole (pouze Load) Nic Toto je tradiční 5-stupňová celočíselná RISC pipeline (též pipeline ve stylu procesoru MIPS)
Jiný pohled na pipeline - registry mezi stupni IF stage ID stage EX stage MEM stage WB stage Comb Comb. Comb. Comb. Addr Imm16 busa Instr Addr busw -bit Registers ALU S Next addr PC Ext Addr Data M Imm16
Proudové zpracování analýza zrychlení (1) T CPU = IC * CPI * T clk IC je stejné pro všechny varianty CPU t cq tcl_f ull t setup S je počet stupňů proud. zpracování D Q comb. D Q logic Tclk_nopipe = tcq + tcl_full + tsetup + tskew Tclk_pipe = tcq + tcl_longest_stage + tsetup + tskew tcl_longest_stage tcl_longest_stage t cl_full S tsetup + tcq + tskew << t cl_full S Tclk_pipe T clk_nopipe S Pozn: cl = combinatorial logic, cq = clock to Q delay of register t skew = rozptyl příchodu aktivních hran clk k registrům
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í Latency to fill pipeline Pipeline produces result every clock cycle instr1 instr.2 instr.3 instr.4 IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB instr.5 IF ID EX MEM WB Cycles IC_instructions = S + IC - 1 Cycles IC_instructions CPI = IC Pro velké IC : S - 1 IC = S - 1 IC + 1 << 1 => CPI pipeline_ideal = 1 Ideální CPI pro proudově pracující procesor je rovno 1.
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í.)
Příklad narušení sémantiky SUB přečte starou hodnotu R1 ADD zapíše novou hodnotu R1 ADD R1,R2,R3 IF ID EX MEM WB SUB R4,R1,R3 IF ID EX MEM WB Programátor očekává toto provádění: Write ADD R1,R2,R3 IF ID EX MEM WB Read SUB R4,R1,R3 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.
Jiný příklad narušení sémantiky BEQZ R3, M1 IF ID EX MEM WB instr.2 instr.3 IF ID EX IF ID MEM EX WB MEM WB Tyto instrukce neměly být provedeny instr.4 IF ID EX MEM WB M1: ADD R4,R6,R7 vyhodnocení podmínky & výpočet násl. PC PC změněno IF ID EX MEM WB Toto je příklad narušení sémantiky řídicí instrukce (BEQZ) Tzv. řídicí hazard (control hazard).
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.
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).
Řešení datového hazardu pomocí pozastavení SUB čte starou hodnotu R1 ADD zapisuje novou hodnotu do R1 ADD R1,R2,R3 IF ID EX MEM WB SUB R4,R1,R3 IF ID EX MEM WB Řešení: Pozastavení pipeline v ID dokud není hazard odstraněn. ADD R1,R2,R3 IF ID EX MEM WB SUB R4,R1,R3 IF 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
Řešení řídicího hazardu pomocí pozastavení BEQZ R3, M1 IF ID EX MEM WB instr.2 IF stall IF stall IF stall instr.3 instr.4 M1: ADD R4,R6,R7 vyhodnocení podmínky & výpočet nového PC PC změněno IF 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.
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 CPI pipeline_real = CPI pipeline_ideal + SPI (stalls per instruction) Vliv faktorů SPI na CPI: SPI = SPI data + SPI control SPI control = dynamická četnost instrukce podmíněném skoku * 3 Pokud 13 % instrukcí jsou instrukce podmíněného skoku: SPI control = 0,13 * 3 =0,39 Výpočet SPI data příští přednášku.
Zrychlení pomocí proudového zpracování Speedup = T cpu_no_pipeline T cpu_pipeline = IC * CPI no_pipeline * T clk_no_pipeline IC * CPI pipeline_real * T clk_pipeline CPI single_cycle = 1; CPI pipeline_real = CPI pipeline_ideal + SPI Speedup = 1 CPI pipeline_ideal + SPI * T clk_no_pipeline T clk_pipeline Stalls per (pozastavování pipeline) Speedup = S 1 + SPI
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 T clk (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 ř.č.