1 / 62

Les 9: Gepijplijnde micro-architecturen

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

shiloh
Download Presentation

Les 9: Gepijplijnde micro-architecturen

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. Inhoud • Sequentiële gepijplijnde machine • Parallelle gepijplijnde machine • Hazards • Structurele hazards • Controlehazards • Datahazards • Andere microarchitecturen

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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

  8. 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

  9. 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)

  10. 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

  11. 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

  12. 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)

  13. 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)

  14. 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)

  15. 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)

  16. 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

  17. Inhoud • Sequentiële gepijplijnde machine • Parallelle gepijplijnde machine • Hazards • Structurele hazards • Controlehazards • Datahazards • Andere microarchitecturen

  18. 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

  19. 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

  20. 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

  21. 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

  22. Inhoud • Sequentiële gepijplijnde machine • Parallelle gepijplijnde machine • Hazards • Structurele hazards • Controlehazards • Datahazards • Andere microarchitecturen

  23. 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

  24. 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.

  25. 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

  26. Inhoud • Sequentiële gepijplijnde machine • Parallelle gepijplijnde machine • Hazards • Structurele hazards • Controlehazards • Datahazards • Andere microarchitecturen

  27. 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

  28. 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’

  29. 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

  30. 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

  31. 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

  32. 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

  33. 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

  34. 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

  35. 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:

  36. 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:

  37. 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

  38. 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

  39. Sprongvoorspellers • Branch Target Buffer • Statische voorspellers • Niet-genomen • Backward taken/forward not taken • Dynamische voorspellers • 1-bit voorspeller • 2-bit voorspeller • Lokaal • Globaal

  40. Branch Target Buffer PC adres sprong bestemming + RAS voorspelling

  41. Voorspel niet-genomen loop: cmp r1,r2 jne einde … lus … jump loop einde:

  42. Branch backward taken/forward not taken cmp r1,0 jle einde loop: … lus … cmp r1,r2 jne loop einde:

  43. 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

  44. 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

  45. 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

  46. 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

  47. Inhoud • Sequentiële gepijplijnde machine • Parallelle gepijplijnde machine • Hazards • Structurele hazards • Controlehazards • Datahazards • Andere microarchitecturen

  48. 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

  49. Datahazards oplossingen • Instructies ver genoeg uit elkaar zetten • Blokkeren pijplijn • Forwarding

  50. 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

More Related