620 likes | 706 Views
Les 9: Gepijplijnde micro-architecturen. The maximum speedup that can be expected from parallel algorithms is limited by the proportion of parts that must be computed sequentially - Amdahl's Law. Inhoud. Sequentiële gepijplijnde machine Parallelle gepijplijnde machine Hazards
E N D
Les 9: Gepijplijnde micro-architecturen The maximum speedup that can be expected from parallel algorithms is limited by the proportion of parts that must be computed sequentially - Amdahl's Law
Inhoud • Sequentiële gepijplijnde machine • Parallelle gepijplijnde machine • Hazards • Structurele hazards • Controlehazards • Datahazards • Andere microarchitecturen
Samenvatting controlesignalen Mar=0 MemR=1 IRW=1 S1=0 S2=1 Alu=plus PCSrc=1 Cond=0, PCW=1 IF S1=0 S2=2 Alu=add ID S1=2 S2=0 Alu=add S1=2 S2=2 Alu=add S1=2 S2=2 Alu=add PCSrc=0 PCW=1 Cond=0 S1=1 S2=0 Alu=cmpge PCSrc=0 PCW=1 Cond=1 EX Mar=1 MemW=1 Mar=1 MemR=1 MEM C=1 RegW=1 C=0 RegW=1 WB
Meer-cycli-per-instructiemachine ra 0 PC IR Register- bestand geheugen rb A R S1 rd decoder B LMDR Din 4 PCSrc offset Alu S2 PCW Mar MemR RegW MemW IRW C cond Controle-eenheid
IF ID EX MEM WB 0 PC 4 Cmp + Data geheugen instructie- geheugen ra Register- bestand rb 0 S1 rd decoder Res Din PC MemW MemR offset Alu S2 RegW w2 w1 w3 Controle-eenheid w4 w0
Controle van de pijplijnregisters w0 w1 w2 w3 w4 IF 0 1 0 0 0 ID 0 0 1 0 0 EX 0 0 0 1 0 MEM 0 0 0 0 1 WB 1 0 0 0 0
Controletabel MEM WB EX S2 Alu MemW Res RegW S1 MemR PC Cmp add 1 0 001 xxx 0 0 1 0 1 addi 1 1 001 xxx 0 0 1 0 1 load 1 1 001 xxx 0 1 0 0 1 store 1 1 001 xxx 1 0 x 0 0 jump 0 1 001 111 0 0 1 1 0 brge 0 1 001 110 0 0 1 1 0
IF ID EX MEM WB 0 PC 4 + Data geheugen PC instructie- geheugen ra Register- bestand rb 0 S1 rd decoder Res Din MemW MemR offset Alu RegW S2 Cmp Controle- eenheid
Soorten instructies • ALU-instructies add r1, r2, r3 addi r1,19, r3 • load/store load r1, 0x100(r2) store r1,0x100(r2) • controletransfer jump 0x10(pc) brge r1, 0x10(pc)
IF ID EX MEM WB 0 PC 4 + Data geheugen PC instructie- geheugen ra Register- bestand rb 0 S1 rd decoder Res Din MemW MemR offset Alu RegW S2 Cmp Controle- eenheid add r1,r2,r3
IF ID EX MEM WB 0 PC 4 + Data geheugen PC instructie- geheugen ra Register- bestand rb 0 S1 rd decoder Res Din MemW MemR offset Alu RegW S2 Cmp Controle- eenheid addi r1,19,r3
IF ID EX MEM WB 0 PC 4 + Data geheugen PC instructie- geheugen ra Register- bestand rb 0 S1 rd decoder Res Din MemW MemR offset Alu RegW S2 Cmp Controle- eenheid load r1, 0x100(r2)
IF ID EX MEM WB 0 PC 4 + Data geheugen PC instructie- geheugen ra Register- bestand rb 0 S1 rd decoder Res Din MemW MemR offset Alu RegW S2 Cmp Controle- eenheid store r1, 0x100(r2)
IF ID EX MEM WB 0 PC 4 + Data geheugen PC instructie- geheugen ra Register- bestand rb 0 S1 rd decoder Res Din MemW MemR offset Alu RegW S2 Cmp Controle- eenheid jump 0x10(pc)
IF ID EX MEM WB 0 PC 4 + Data geheugen PC instructie- geheugen ra Register- bestand rb 0 S1 rd decoder Res Din MemW MemR offset Alu RegW S2 Cmp Controle- eenheid brge r1,0x10(pc)
Sequentiële pijplijncyclus t F D E M W i1 i2 F D IF ID EX MEM WB i1 i2 i1 i2 Pijplijn: fetch i1 Pijplijn: decode i1 Pijplijn: execute Pijplijn: memory i1 Pijplijn: writeback
Inhoud • Sequentiële gepijplijnde machine • Parallelle gepijplijnde machine • Hazards • Structurele hazards • Controlehazards • Datahazards • Andere microarchitecturen
Parallelle pijplijncyclus t i1 i2 i3 F D E M W F D E M W F D E M W i3 i2 IF ID EX MEM WB i1 i3 i2 i1 i3 i2 i1 i3 i2 i1 i3 i2 i1
IF ID EX MEM WB 0 PC 4 + Data geheugen PC instructie- geheugen ra Register- bestand rb 0 S1 rd decoder Res Din MemW MemR offset Alu RegW S2 Cmp CPI: 5 → 1 IPC: 0,2 → 1 Controle- eenheid
EX 0 0 PC WB MEM 4 + PC Cmp Data geheugen ID instructie- geheugen ra Register- bestand rb S1 rd decoder Res Din IF MemW MemR offset Alu RegW S2 Controle- eenheid
Gepijplijnde architectuur Fetch Decode Execute Memory Write back data 0 cond 4 smdr Data in pc pc1 + mar Adres lmdr Reg. file A res1 res2 B alu inst. IR IR1 IR2 IR3 ST1 ST2 ST3
Inhoud • Sequentiële gepijplijnde machine • Parallelle gepijplijnde machine • Hazards • Structurele hazards • Controlehazards • Datahazards • Andere microarchitecturen
Pijplijnhazards • Hazards zijn afwijkingen van de standaard sequentiële interpretatie van de programmatekst • Ze worden veroorzaakt door de overlappende uitvoering van instructies die na elkaar komen
Pijplijnhazards • structurele hazards: soms wensen twee instructies in verschillende trappen dezelfde hardware te gebruiken. • controlehazards: instructies worden blind opgehaald en partieel uitgevoerd: soms is nog niet gekend welke instructie moet opgehaald worden. • datahazards: een object wordt gebruikt door overlappende instructies. Soms is de gewenste waarde nog niet beschikbaar.
Structurele hazard t ldw ldw brge add addi stw F D E M W Opl: ontdubbelen hardware, extra poorten F D E M W F D E M W F D E M W F D E M W F D E M W Pijplijnhazards: structureel
Inhoud • Sequentiële gepijplijnde machine • Parallelle gepijplijnde machine • Hazards • Structurele hazards • Controlehazards • Datahazards • Andere microarchitecturen
Controlehazard in vlucht t ldw ldw brge add addi stw F D E M W Controle hazard F D E M W F D E M W F D E M W F D E M W F D E M W Pijplijnhazards: controle
Controlehazards: oplossingen • Instructies in uitvoering vervangen door NOPs “pijplijnbellen” indien de sprong blijkt genomen te moeten worden • Instructies gewoon verder laten uitvoeren (vertraagde controletransfer) • Sprongen ‘voorspellen’
Controlehazards: stopzetten uitvoering pijplijnbellen in vlucht t ldw ldw brge add addi stw F D E M W Controle hazard F D E M W F D E M W F D E M W F D E M W F D E M W
EX 0 PC WB 0 MEM 4 + PC Cmp Data geheugen ID instructie- geheugen ra 0 Register- bestand rb S1 rd decoder Res Din IF MemW MemR offset Alu RegW S2 0 Controle- eenheid
Controlehazard: vertraagde controletransfer in vlucht t ldw ldw brge add addi stw F D E M W Controle hazard F D E M W F D E M W F D E M W F D E M W F D E M W
Controlehazards addi r0,10,r1 br 100 addi r1,1,r1 muli r1,3,r1 …. 100: stw r1,0x0100(r0) Zonder vertraagde sprong (klassiek) addi r0,10,r1 br 100 nop nop stw r1,0x0100(r0) Met vertraagde sprong addi r0,10,r1 br 100 addi r1,1,r1 muli r1,3,r1 stw r1,0x0100(r0) TRACE
PC + EX WB 0 MEM 0 4 Cmp + Data geheugen ID instructie- geheugen ra 0 Register- bestand rb rd decoder Res Din IF MemW MemR offset Alu RegW PC S2 Controle- eenheid
Vertraagde sprong add r1,r1,1 jump next nop … next: or r2, r1, r0 jump next add r1,r1,1 … next: or r2, r1, r0
Vertraagde sprong add r1,r1,1 jump next nop … next: or r2, r1, r0 add r1, r1, 1 jump next2 or r2, r1, r0 … next: or r2, r1, r0 next2:
Vertraagde Sprong / Sparc cmp r1, 1 breq next nop … next: mov 2, r1 cmp r1, 1 breq,a next2 mov 2, r1 … next: mov 2, r1 next2:
Procedure-oproep int vijfvoud(int n) { if (n > 0) return n * 5; else return 0; } int g; main() { g = vijfvoud(6); } vijfvoud: jmpf lr2,positief sll gr96,lr2,2 jmpi lr0 const gr96,0 positief: jmpi lr0 add gr96,gr96,lr2 call lr0,vijfvoud const lr2,6 const gr97,g consth gr97,g store gr96,gr97
Sprongvoorspelling BP PC + EX WB MEM 0 4 Cmp + Data geheugen ID instructie- geheugen ra 0 Register- bestand rb rd decoder Res Din IF MemW MemR offset Alu RegW PC S2 Controle- eenheid
Sprongvoorspellers • Branch Target Buffer • Statische voorspellers • Niet-genomen • Backward taken/forward not taken • Dynamische voorspellers • 1-bit voorspeller • 2-bit voorspeller • Lokaal • Globaal
Branch Target Buffer PC adres sprong bestemming + RAS voorspelling
Voorspel niet-genomen loop: cmp r1,r2 jne einde … lus … jump loop einde:
Branch backward taken/forward not taken cmp r1,0 jle einde loop: … lus … cmp r1,r2 jne loop einde:
Eenvoudige dynamische voorspeller sprongtabel 1 0 0 1 1 1 1 0 laagste bits PC voorspel genomen sprongtabel aanpassen als uitkomst gekend 1=genomen 0=niet genomen
2-bit dynamischevoorspeller sprongtabel voorspel genomen 11 01 00 10 10 11 11 00 11 10 laagste bits PC 01 00 voorspel niet-genomen 1=genomen 0=niet-genomen genomen niet-genomen
Lokale dynamische voorspeller geschiedenistabel sprongtabel 11010101 01111111 00000000 10101010 10001000 11111111 11111111 00000000 00 01 00 10 .. 11 .. 11 laagste bits PC voorspel genomen 1=genomen 0=niet genomen
Globale dynamische voorspeller + 1 sprongtabel 1 Globale- geschiedenis- register 0 00 01 00 10 10 11 11 11 1 0 0 1011111111 0 1 voorspel genomen PC 1=genomen 0=niet genomen
Inhoud • Sequentiële gepijplijnde machine • Parallelle gepijplijnde machine • Hazards • Structurele hazards • Controlehazards • Datahazards • Andere microarchitecturen
Datahazard t ldw r1, ldw r2, addi r0,10,r3 add r3,5,r4 addi sub F D E M W data hazard F D E M W F D E M W F D E M W F D E M W F D E M W Pijplijnhazards: data
Datahazards oplossingen • Instructies ver genoeg uit elkaar zetten • Blokkeren pijplijn • Forwarding
Oplossing datahazards:herschikken instructies+nops t ldw r1, ldw r2, addi r0,10,r3 nop nop add r3,5,r4 F D E M W F D E M W F D E M W F D E M W F D E M W F D E M W