Architektura počítačů
04 Zřetězené vykonávaní instrukcí; Hazardy; Vyvažování stupňů zřetězení a časování; Superzřetězení
České vysoké učení technické, Fakulta elektrotechnická A0B36APO Architektura počítačů
Ver.1.00
2012
1
Motivace k přednášce – AMD Bulldozer 15h (FX, Opteron) - 2011
A0B36APO Architektura počítačů •
http://en.wikipedia.org/wiki/File:AMD_Bulldozer_block_diagram_(CPU_core_bloack).PNG
2
Motivace k přednášce – Intel Nehalem (Core i7) - 2008
A0B36APO Architektura počítačů •
http://en.wikipedia.org/wiki/File:Intel_Nehalem_arch.svg
3
Úkol dnešní přednášky • Modifikujeme jednocyklový procesor z 2. přednášky na zřetězený procesor. • Procesor bude podporovat instrukce: add, sub, and, or, slt, addi, lw, sw a beq
Typ 31…
0
R
opcode(6), 31:26 rs(5), 25:21 rt(5), 20:16
I
opcode(6), 31:26 rs(5), 25:21 rt(5), 20:16
J
opcode(6), 31:26
A0B36APO Architektura počítačů
rd(5), 15:11
shamt(5)
funct(6), 5:0
immediate (16), 15:0
address(26), 25:0
4
Jedno-cyklový procesor spolu s paměťmi MemToReg Control MemWrite Unit Branch ALUControl 2:0 31:26 Opcode ALUScr RegDest 5:0 Funct RegWrite 0 PC’ PC A RD 1 Instr. Memory
WE3 Instr 25:21 A1 RD1 20:16 A2
A3 Reg. WD3 File 15:11
+ 15:0
Sign Ext
AluOut
0 SrcB 1 Rt 0 1 Rd SignImm
WriteData WriteReg
<<2
PCPlus4
A0B36APO Architektura počítačů
WE
Zero ALU
RD2
20:16
4
SrcA
+
A
RD
Data Memory
0 Result 1 ReadData
WD
PCBranch
5
Z přednášky č.2
Jedno-cyklový procesor – výkon: IPS = IC / T = IPCstr.fCLK • Jaká může být maximální frekvence procesoru? • Zpoždění na kritické cestě – instrukce lw: Tc = tPC + tMem + tRFread + tALU + tMem + tMux + tRFsetup 0 PC’ PC A RD 1 Instr. Memory
WE3 Instr 25:21 A1 RD1 20:16 A2
A3 Reg. WD3 File 15:11
+ 15:0
ALU
RD2
20:16
4
SrcA
Sign Ext
AluOut
0 SrcB 1 Rt 0 1 Rd SignImm
WriteData WriteReg
<<2
PCPlus4
A0B36APO Architektura počítačů
+
WE
Zero A
RD
Data Memory
0 Result 1 ReadData
WD
PCBranch
6
Z přednášky č.2
Jedno-cyklový procesor – výkon: IPS = IC / T = IPCstr.fCLK • Tc = tPC + tMem + tRFread + tALU + tMem + tMux + tRFsetup • Předpokládejme: tPC = 30 ns tMem = 300 ns tRFread = 150 ns tALU = 200 ns tMux = 20 ns tRFsetup = 20 ns Pak Tc = 1020 ns --> fCLK max = 980 kHz, IPS = 1. 980e3 = 980 000 instrukcí za sekundu
A0B36APO Architektura počítačů
7
Z přednášky č.2
Zřetězené vykonávaní instrukcí Předpokládejme, že vykonání instrukce můžeme rozdělit do 5 stupňů: IF
ID
EX
MEM
WB
IF – Instruction Fetch, ID – Instruction decode (and Operand Fetch), EX – Execute, MEM – Memory Access, WB – Write Back a dále τ = max { τi }ki=1, kde τi je čas šíření (propagation delay) v i-tém stupni. IF – poslání PC do paměti a vybrání aktuální instrukce. Aktualizace PC = PC+4 ID – dekódování instrukce a načtení registrů specifikovaných v instrukci, provedení testu na rovnost registrů (kvůli možnému větvení), znaménkové rozšíření offsetu, výpočet cílové adresy pro případ větvení (zn. rozš. offset + PC) EX – operace ALU MEM – v případě instrukce load /store – čtení/zápis do paměti WB – v případě instrukcí typu register-register nebo instrukce load – zápis výsledku do RF (výsledek může přicházet z ALU nebo paměti) A0B36APO Architektura počítačů
8
Paralelizmus na úrovni instrukcí - zřetězení IF
I1
ID
I2
I3
I4
I5
I6
I7
I8
I9
I10
I1
I2
I3
I4
I5
I6
I7
I8
I9
I1
I2
I3
I4
I5
I6
I7
I8
I1
I2
I3
I4
I5
I6
I7
I1
I2
I3
I4
I5
I6
5
6
7
8
9
10
EX MEM
ST 1
2
3
5
τ
4
τ
τ
τ
τ
τ
čas
• Čas vykonání n instrukcí k-stupňové pipeline: Tk = k.τ + (n – 1) τ • Zrychlení:
T1 nkτ Sk = = Tk kτ + (n − 1)τ
lim S k = k n →∞
Předpoklad: ideálně vyvážená pipeline, obvod můžeme libovolně dělit A0B36APO Architektura počítačů
9
Paralelizmus na úrovni instrukcí - zřetězení • Neredukuje čas vykonání individuální instrukce, právě naopak.. • Hazardy: Strukturální (řešeny duplikací), datové (důsledek datových závislostí: RAW, WAR, WAW) a řídicí (instrukce měnící PC)... • Hazardy způsobují (mohou způsobovat) pozastavení vykonávání (stall) nebo vyprázdnění pipeline • Pozn. : Hlubší pipeline (více stupňů) znamená méně hradel v každém stupni a tím pádem možnost zvýšit pracovní frekvenci procesoru.., avšak více stupňů znamená i vyšší režii (nutnost lépe řadit instrukce do pipeline)
A0B36APO Architektura počítačů
10
Paralelizmus na úrovni instrukcí - Narušení sémantiky Datový hazard:
Add zapíše novou hodnotu R1
ADD R1,R2,R3
IF
SUB R4,R1,R3
ID
EX
MEM
WB
IF
ID
EX
MEM
sekveční instrukční proud
WB
SUB přečte neplatnou hodnotu R1 Vyhodnocení podmínky, výpočet PC
Řídicí hazard:
PC změněn IF
BEQZ R3, M1 ADD R6,R1,R2 instrukce 3 instrukce 4 M1: ADD R4,R6,R7
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
Měli být přineseny (a následně spracovávany) tyto instrukce? A0B36APO Architektura počítačů
11
Nezřetězené vykonávání
0 PC’ PC A RD 1 Instr. Memory
WE3 Instr 25:21 A1 RD1 20:16 A2
A3 Reg. WD3 File 15:11
+ 15:0
ALU
RD2
20:16
4
SrcA
Sign Ext
AluOut
0 SrcB 1 Rt 0 1 Rd SignImm
WriteData WriteReg
<<2
PCPlus4
A0B36APO Architektura počítačů
+
WE
Zero A
RD
Data Memory
0 Result 1 ReadData
WD
PCBranch
12
Z přednášky č.2
Zřetězené vykonávání
AluOutW
0 PC’ PC A RD 1 Instr. Memory
WE3 Instr 25:21 A1 RD1 20:16 A2
A3 Reg. WD3 File 15:11
+ 15:0
Sign Ext
PCPlus4F
PCPlus4D
Fetch
Decode
A0B36APO Architektura počítačů
ALU
RD2
20:16
4
SrcA
WE
Zero AluOutM
0 SrcB 1 WriteDataE WriteRegE
Rt 0 1 Rd SignImm
<<2
PCPlus4E
Execute
+
WriteDataM
A
RD
Data Memory
0 Result 1 ReadData
WD
WriteRegM
WriteRegW
PCBranch
Memory
WriteBack 13
Zřetězené vykonávání MemToReg Control MemWrite Unit Branch ALUControl 2:0 31:26 Opcode ALUScr RegDest 5:0 Funct RegWrite 0 PC’ PC A RD 1 Instr. Memory
WE3 Instr 25:21 A1 RD1 20:16 A2
20:16 15:11
+ 4
15:0
Sign Ext
PCPlus4F
PCPlus4D
Fetch
Decode
A0B36APO Architektura počítačů
SrcA ALU
RD2
A3 Reg. WD3 File
AluOutW
WE
Zero AluOutM
0 SrcB 1 WriteDataE WriteRegE
Rt 0 1 Rd SignImm
<<2
PCPlus4E
Execute
+
WriteDataM
A
RD
Data Memory
0 Result 1 ReadData
WD
WriteRegM
WriteRegW
PCBranch
Memory
WriteBack 14
Totéž, pouze zmenšeno a překresleno… Control unit
31:26 Op 5:0 Funct
0 PC´ 1
PC
RD
A
Instruction Memory
4
BranchD
15:0
SrcAE
0 1 RtD RdD
Sign Ext
SignImmD
RtE RdE
0 1
SrcBE
WriteDataE
WriteRegE 4:0
PCPlus4D
WriteDataM WriteRegM 4:0
WE RD Data Memory WD
A
ReadDataW
ALUOutW
1 0
WriteRegW 4:0
SignImmE <<2
PCPlus4F
ALUOutM ALU
MemTo RegW
PCSrcM
Zero
WE3 A1 RD1 20:16 RD2 A2 A3 Reg. WD3 File
RegWriteW
RegWriteM MemToRegM MemWriteM
InstrD 25:21
20:16 15:11
+
RegWriteE MemToRegE MemWriteE ALUControlE ALUSrcE RegDstE BranchE
RegWriteD MemToRegD MemWriteD ALUControlD ALUSrcD RegDstD BranchD
+
PCBranchD ResultW
A0B36APO Architektura počítačů
15
Vznik datových hazardů
• Pracovní registry (Register File) – přístup v dvou fázích (Decode, WriteBack) – zápis v první polovině cyklu, čtení ve druhé.. • RAW hazard… • Jak je možné řešit tento hazard a nedegradovat výkon pipeline? A0B36APO Architektura počítačů
16
Řešení datových hazardů přeposíláním (forwarding)
• Pokud výsledek vzniká dřív než jej následující instrukce skutečně potřebují je možné tento hazard řešit přeposíláním (forwarding) • nastává když se použité zdrojové registry instrukce ve stupni E shodují s cílovým registrem ve stupni M nebo WB • proto musejí být čísla těchto registrů z těchto stupňů posílána do Hazard Unit • taktéž zda cílový registr bude skutečně použit k zápisu (jinými slovy, zda se skutečně jedná o cílový registr – lw vs. sw) – RegWrite z M a WB A0B36APO Architektura počítačů
17
Stávající procesor Control unit
31:26 Op 5:0 Funct
0 PC´ 1
PC
RD
A
Instruction Memory
4
BranchD
15:0
SrcAE
0 1 RtD RdD
Sign Ext
SignImmD
RtE RdE
0 1
SrcBE
WriteDataE
WriteRegE 4:0
PCPlus4D
WriteDataM WriteRegM 4:0
WE RD Data Memory WD
A
ReadDataW
ALUOutW
1 0
WriteRegW 4:0
SignImmE <<2
PCPlus4F
ALUOutM ALU
MemTo RegW
PCSrcM
Zero
WE3 A1 RD1 20:16 RD2 A2 A3 Reg. WD3 File
RegWriteW
RegWriteM MemToRegM MemWriteM
InstrD 25:21
20:16 15:11
+
RegWriteE MemToRegE MemWriteE ALUControlE ALUSrcE RegDstE BranchE
RegWriteD MemToRegD MemWriteD ALUControlD ALUSrcD RegDstD BranchD
+
PCBranchD ResultW
A0B36APO Architektura počítačů
18
Řešení datových hazardů přeposíláním (forwarding) Control unit
31:26 Op 5:0 Funct
0 PC´ 1
PC
RD
A
Instruction Memory
WE3 A1 RD1 20:16 RD2 A2 A3 Reg. WD3 File
4
15:0
Sign Ext
SignImmD
BranchD
00 01 10
SrcAE 00 01 10
RsD RtD RdD
0 1
SrcBE
WriteDataE
RdE
0 1
WriteRegE 4:0
WriteDataM
WE RD Data Memory WD
A
WriteRegM 4:0
ReadDataW
ALUOutW
1 0
WriteRegW 4:0
SignImmE <<2
PCPlus4F
ALU
MemTo RegW
PCSrcM
ALUOutM
RsE RtE
RegWriteW
RegWriteM MemToRegM MemWriteM
Zero
InstrD 25:21
25:21 20:16 15:11
+
RegWriteE MemToRegE MemWriteE ALUControlE ALUSrcE RegDstE BranchE
RegWriteD MemToRegD MemWriteD ALUControlD ALUSrcD RegDstD BranchD
PCPlus4D
+
PCBranchD ResultW Forward AE
Forward BE
RegWriteM
RegWrite W
Hazard unit A0B36APO Architektura počítačů
19
Řešení datových hazardů pozastavením (stall)
• Pokud následující instrukce potřebují výsledek dřív než skutečně vzniká je možné tento hazard řešit pozastavením (stall) • Pozastavení pipeline je prostředkem řešení hazardů; nezvyšuje však propustnost systému • stupně pipeline předcházející stupni kde hazard vzniká jsou pozastaveny do doby, než jsou k dispozici výsledky požadované následujícími instrukcemi – ty jsou pak přeposílány (forwarding) A0B36APO Architektura počítačů
20
Řešení datových hazardů pozastavením (stall)
• pozastavení se dosáhne podržením hodnoty mezistupňových registrů • výsledky z kolizního stupně se musejí „ztratit“ – řídicí signály umožňující měnit stav (kontext) procesoru (zápis pracovních registrů nebo do paměti, řízení povolení větvení) se nulují • obojí se dosáhne přidáním řídicích vodičů k mezistupňovým registrům umožňujících měnit/uchovat nebo nulovat jejich obsah lw: typ I, rs – bázová adresa, imm – offset, rt – kde uložit A0B36APO Architektura počítačů
21
Stávající procesor Control unit
31:26 Op 5:0 Funct
0 PC´ 1
PC
RD
A
Instruction Memory
WE3 A1 RD1 20:16 RD2 A2 A3 Reg. WD3 File
4
15:0
Sign Ext
SignImmD
BranchD
00 01 10
SrcAE 00 01 10
RsD RtD RdD
0 1
SrcBE
WriteDataE
RdE
0 1
WriteRegE 4:0
WriteDataM
WE RD Data Memory WD
A
WriteRegM 4:0
ReadDataW
ALUOutW
1 0
WriteRegW 4:0
SignImmE <<2
PCPlus4F
ALU
MemTo RegW
PCSrcM
ALUOutM
RsE RtE
RegWriteW
RegWriteM MemToRegM MemWriteM
Zero
InstrD 25:21
25:21 20:16 15:11
+
RegWriteE MemToRegE MemWriteE ALUControlE ALUSrcE RegDstE BranchE
RegWriteD MemToRegD MemWriteD ALUControlD ALUSrcD RegDstD BranchD
PCPlus4D
+
PCBranchD ResultW Forward AE
Forward BE
RegWriteM
RegWrite W
Hazard unit A0B36APO Architektura počítačů
22
Řešení datových hazardů pozastavením (stall) Control unit
31:26 Op 5:0 Funct
0 PC´ PC A 1 EN
WE3 A1 RD1 20:16 RD2 A2 A3 Reg. WD3 File
RD
25:21 20:16 15:11
15:0
+
Sign Ext
BranchD
00 01 10
SrcAE 00 01 10
RsD RtD RdD
0 1
SrcBE
RdE
SignImmD
WriteDataE
0 1
WriteRegE 4:0
EN
WriteDataM
WE RD Data Memory WD
A
WriteRegM 4:0
ReadDataW
ALUOutW
1 0
WriteRegW 4:0
SignImmE <<2
PCPlus4D
PCPlus4F
ALU
MemTo RegW
PCSrcM
ALUOutM
RsE RtE
RegWriteW
RegWriteM MemToRegM MemWriteM
Zero
InstrD 25:21
Instruction Memory
4
RegWriteE MemToRegE MemWriteE ALUControlE ALUSrcE RegDstE BranchE
RegWriteD MemToRegD MemWriteD ALUControlD ALUSrcD RegDstD BranchD
CLR
+
PCBranchD
Stall D
Forward AE
Hazard unit A0B36APO Architektura počítačů
Forward BE
MemToRegE
Stall F
FlushE
ResultW RegWriteM
RegWrite W
23
Řídicí hazardy
• výsledek porovnání je znám až v 4. cyklu.. Proč? A0B36APO Architektura počítačů
24
Řídicí hazardy – raději znát výsledek dříve..
• pokud dokážeme stanovit výsledek porovnání už v 2. cyklu můžeme redukovat tzv. „misprediction penalty“ • přesun rozhodování dopředu může zavést nové RAW hazardy..!!! A0B36APO Architektura počítačů
25
Řešení řídicích hazardů vyprázdněním (flush) Control unit
31:26 Op 5:0 Funct
0 PC´ PC A 1 EN
WE3 A1 RD1 20:16 RD2 A2 A3 Reg. WD3 File
InstrD 25:21
RD
Instruction Memory
25:21 20:16 15:11
15:0
+
4
PCPlus4F
CLR EN
Sign Ext
RegWriteE MemToRegE MemWriteE ALUControlE ALUSrcE RegDstE
RegWriteD MemToRegD MemWriteD ALUControlD ALUSrcD RegDstD BranchD EquaD
=
MemTo RegW
PCSrcD 00 01 10
SrcAE 00 01 10
RsD RtD RdD
0 1
SrcBE
ALUOutM ALU
WriteDataE
WriteDataM
RsE RtE RdE
SignImmD
PCPlus4D
RegWriteW
RegWriteM MemToRegM MemWriteM
0 1
WriteRegE 4:0
WE RD Data Memory WD
A
WriteRegM 4:0
ReadDataW
ALUOutW
1 0
WriteRegW 4:0
SignImmE <<2
+ CLR
PCBranchD
Stall D
Forward AE
Hazard unit A0B36APO Architektura počítačů
Forward BE
MemToRegE
Stall F
FlushE
ResultW RegWriteM
RegWrite W
26
Řešení vzniklých RAW hazardů přeposíláním nebo pozastavením Přeposlat / Netřeba Pozastavit RegWriteW RegWriteM
Pozastavit Control unit
31:26 Op 5:0 Funct
0 PC´ PC A 1 EN
WE3 A1 RD1 20:16 RD2 A2 A3 Reg. WD3 File
InstrD 25:21
RD
Instruction Memory
15:0
4
PCPlus4F
CLR EN
Sign Ext
=
0 1 0 1
25:21 20:16 15:11
+
RegWriteE MemToRegE MemWriteE ALUControlE ALUSrcE RegDstE
RegWriteD MemToRegD MemWriteD ALUControlD ALUSrcD RegDstD BranchD EquaD
MemToRegM MemWriteM
MemTo RegW
PCSrcD 00 01 10
SrcAE 00 01 10
RsD RtD RdD
0 1
SrcBE
ALUOutM ALU
WriteDataE
WriteDataM
RsE RtE RdE
SignImmD
0 1
WriteRegE 4:0
WE RD Data Memory WD
A
WriteRegM 4:0
ReadDataW
ALUOutW
1 0
WriteRegW 4:0
SignImmE <<2
+
PCPlus4D
CLR
PCBranchD
A0B36APO Architektura počítačů
Forward BD
Forward AE
Hazard unit
Forward BE
RegWriteE
BranchD
MemToRegE
Stall D
FlushE
Stall F
ForwardAD
ResultW RegWriteM
RegWrite W
27
Hotovo – navržený zřetězený procesor Control unit
31:26 Op 5:0 Funct
0 PC´ PC A 1 EN
WE3 A1 RD1 20:16 RD2 A2 A3 Reg. WD3 File
InstrD 25:21
RD
Instruction Memory
15:0
4
PCPlus4F
CLR EN
Sign Ext
=
0 1 0 1
25:21 20:16 15:11
+
RegWriteE MemToRegE MemWriteE ALUControlE ALUSrcE RegDstE
RegWriteD MemToRegD MemWriteD ALUControlD ALUSrcD RegDstD BranchD EquaD
RegWriteW
RegWriteM MemToRegM MemWriteM
MemTo RegW
PCSrcD 00 01 10
SrcAE 00 01 10
RsD RtD RdD
0 1
SrcBE
ALUOutM ALU
WriteDataE
WriteDataM
RsE RtE RdE
SignImmD
0 1
WriteRegE 4:0
WE RD Data Memory WD
A
WriteRegM 4:0
ReadDataW
ALUOutW
1 0
WriteRegW 4:0
SignImmE <<2
+
PCPlus4D
CLR
PCBranchD
A0B36APO Architektura počítačů
Forward BD
Forward AE
Hazard unit
Forward BE
RegWriteE
BranchD
MemToRegE
Stall D
FlushE
Stall F
ForwardAD
ResultW RegWriteM
RegWrite W
28
Zřetězený procesor – výkon: IPS = IC / T = IPCstr.fCLK • • • •
Jaká může být maximální frekvence procesoru? Který stupeň je nejpomalejší? Dobu cyklu určuje nejpomalejší stupeň V našem případě: Tc = 300 ns --> 3 333 kHz Zanedbejme plnění pipeline, všechna pozastavení pipeline a všechna vyprázdnění. Pak bude IPC = 1. IPS = 1. 3 333e3 = 3 333 000 instrukcí za sekundu
• Zavedením 5-stupňového zřetězení jsme zlepšili propustnost 3 333 000/ 980 000 = 3,4 krát! (i za předpokladu IPC=1) A0B36APO Architektura počítačů
29
Co jsme navrhli? Návrat k nezřetězenému procesoru
31:26 5:0
0 PC’ PC A RD 1
Instr. Memory
Instr
25:21 20:16
20:16
MemToReg Control MemWrite Branch Unit Opcode ALUControl 2:0 ALUScr RegDest Funct RegWrite WE3
A1 RD1 A2 RD2 A3 Reg. WD3 File
15:11
+ 4
PCPlus4F
A0B36APO Architektura počítačů
15:0
Sign Ext PCPlus4D
AluOutW
SrcA
Zero ALU
WE A RD
AluOutM Data 0 SrcB Memory 1 WD WriteData Rt 0 WriteReg Rd 1 <<2
SignImm PCPlus4E
+
0 Result 1
ReadData
PCBranch
30
Co jsme navrhli? Návrat k nezřetězenému procesoru
Paměti 31:26 5:0
A
RD
Instr. Memory
0 PC’ PC A RD 1
Instr
25:21 20:16
20:16
A
RD
Data Memory
WD
WE3
A1 RD1 A2 RD2 A3 Reg. WD3 File
15:11
WE
+ 4
PCPlus4F
A0B36APO Architektura počítačů
15:0
Řídicí část (control path)
MemToReg Control MemWrite Branch Unit Opcode ALUControl 2:0 ALUScr RegDest Funct RegWrite
Sign Ext PCPlus4D
AluOutW
SrcA
Zero ALU
WE A RD
0 Result 1
AluOutM 0 SrcB ReadData 1 WDDatová část WriteData Rt 0 WriteReg (data path) 1 Rd <<2
SignImm PCPlus4E
+
PCBranch
31
Co jsme navrhli? Procesor
Řídicí jednotka
PC
A
RD
Instrukce
RD
A
PC
Instr. Memory Povolení zápisu
Adresa odkud číst / kam zapsat Data k zapsání
WE A
RD
Načtená data
Data Memory
WD
A0B36APO Architektura počítačů
Datapath RD
A WD
Adresa Výsledky
32
Co jsme navrhli? – zřetězená verze
RegWriteE MemToRegE MemWriteE ALUControlE ALUSrcE RegDstE
RegWriteD MemToRegD MemWriteD ALUControlD 31:26Op ALUSrcD 5:0Funct RegDstD BranchD EquaD PCSrcD Contr ol unit
A1 RD1 20:16A2 RD2 A3 Reg. WD3 File 25:21
+
4
PCPlus4F
Stall F
EN
Stall D
A0B36APO Architektura počítačů
00 01 10
RsD RtD RdD
RtE RdE
SignImmD Sign Ext
0 1
00 01 10
ALUOutM
0 SrcBEALU 1
WriteDataE
WriteDataM
WriteRegE 4:0
WriteRegM 4:0
MemTo RegW
WE
A RD
ReadDataW
Data Memory
W D
ALUOutW
1 0
WriteRegW 4:0
SignImmE
<<2
+
PCPlus4D PCBranchD
BranchD
SrcAE
RsE
CLR
ResultW Forward BD
FlushE
20:16 15:11 15:0
0 1
ForwardAD
Instruction Memory
=
0 1
Forward AE
Hazard unit
Forward BE
MemToRegE RegWriteE
InstrD 25:21 WE3
0 PC´ PC A RD EN 1
RegWriteW
RegWriteM MemToRegM MemWriteM
RegWrite M
RegWrit e W
33
Zřetězený procesor – časování • Specifikace časování pro synchronní sekvenční obvod: tsetup – předstih thold – přesah
• Omezující podmínka na předstih signálu před hodinami:
Tc >= tpcq + tpd + tsetup A0B36APO Architektura počítačů
34
Zřetězený procesor – časování • Omezující podmínka na předstih signálu před hodinami (zohlednění nedokonalosti rozvodu hodin):
Tc >= tpcq + tpd + tsetup + tskew Představuje omezení pokud se začíná blížit nebo dokonce dominovat nad tpd (příliš hluboká pipeline / příliš mnoho stupňů…) A0B36APO Architektura počítačů
35
Vyvažování stupňů zřetězení Lineární zřetězení:
(též: stromový sumátor, stromová násobička, iterační dělička..)
• Vyvažování: cílem je rozdělit jednotlivé bloky do N stupňů tak, aby ve zpoždění ve všech stupních bylo pokud možno stejné… • Volba počtu stupňů závisí od preference: propustnost vs. latence A0B36APO Architektura počítačů
36
Superzřetězení • nevyvážené 5-stupňové zřetězení: IM
RF
IF
ID
EX
DM
RF
MEM
WB
• hlubší zřetězení vzniklá další dekompozicí IM IF
DM
RF
IS
RF
EX
DF
DS
RF TC
WB
• přináší možnost dalšího zvýšení pracovní frekvence, avšak také řadu dalších problémů.. • další forwarding, nárůst pozastavení pipeline, hazardy
A0B36APO Architektura počítačů
37
Jaká je délka zřetězení? – orientačně… P5 (Pentium) : 5 P6 (Pentium 3): 10 P6 (Pentium Pro): 14 NetBurst (Willamette, 180 nm) - Celeron, Pentium 4: 20 NetBurst (Northwood, 130 nm) - Celeron, Pentium 4, Pentium 4 HT: 20 NetBurst (Prescott, 90 nm) - Celeron D, Pentium 4, Pentium 4 HT, Pentium 4 ExEd: 31 NetBurst (Cedar Mill, 65 nm): 31 NetBurst (Presler 65 nm) - Pentium D: 31 Core : 14 Bonnell: 16 K7 Architecture - Athlon : 10-15 K8 - Athlon 64, Sempron, Opteron, Turion 64: 12-17 ARM 8-9: 5 ARM 11: 8 Cortex A7: 8-10 Cortex A8: 13 Cortex A15: 15-25
• The Optimum Pipeline Depth for a Microprocessor: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.93.4333&rep=rep1&type=pdf A0B36APO Architektura počítačů
38
Diskuze na závěr… •
V případě řídicí závislosti musel procesor sledovat zda nastane nebo ne řídicí hazard. Pokud byl tento hazard detekován a skoková instrukce skok realizovala, pak přišlo k zahození následující instrukce. V opačném případě jsme pokračovali ve vykonávání běžným způsobem – tj. následující instrukcí, která již byla rozpracována.
• Otázka: Je možné tento problém řešit i jiným způsobem? • Odpověď: Ano, budeme tento hazard ignorovat.. • Co to přináší? Procesor vykoná vždy instrukci bezprostředně následující za každou skokovou instrukcí (ta mění PC v našem případě s opožděním jednoho cyklu) bez ohledu na platnost či neplatnost podmínky skoku, pokud však tato skoková instrukce není vykonána v důsledku právě tohoto pravidla. Jinými slovy: Skoková instrukce skočí s opožděním jednoho cyklu (jedné instrukce). Tomu se říká branch delay slot. • A jaký to má důsledek? Programátor (kompilátor) musí s tímto chováním procesoru počítat! •
Poznámka: Je to běžné chování mnoha DSP (digital signal processor) nebo některých RISC-ových procesorů (MIPS, SPARC) A0B36APO Architektura počítačů
39
Diskuze na závěr… •
Úkolem kompilátoru je tedy zabezpečit, že následující instrukce nacházející se v branch delay slotu budou platné a užitečné. Na níže uvedených obrázcích jsou ilustrovány tři alternativy jak je možné plnit delay slot.
•
Nejsnadnější způsob (zároveň nejméně efektivní), je plnit delay slot prázdnou instrukci – nop.
A0B36APO Architektura počítačů
40