De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Slide 1Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers Pipelining: basisprincipes.

Verwante presentaties


Presentatie over: "Slide 1Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers Pipelining: basisprincipes."— Transcript van de presentatie:

1 slide 1Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers Pipelining: basisprincipes

2 slide 2Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers pipelining: overzicht n wat is pipelining n voorbeeld: DLX n pipeline hazards u structurele hazards u data hazards u control hazards n moeilijkheden bij het implementeren van pipelines n uitbreiding van een pipeline voor multicyclus-operaties n instructie set en pipelining n de MIPS R4000 pipeline n fouten en valstrikken

3 slide 3Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers °Ann, Brian, Cathy, Dave hebben elk één wasmand vuile was die moet gewassen, gedroogd, opgevouwen en weggeborgen worden °Het wassen duurt 30 minuten °Het drogen duurt 30 minuten °Het vouwen duurt 30 minuten °Het wegbergen duurt 30 minuten ABCD wat is pipelining: wasserette voorbeeld

4 slide 4Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers sequentieel werken duurt 8 uur voor 4 wasmanden 30 TaskOrderTaskOrder B C D A Tijd 30 6 PM AM wat is pipelining: wasserette voorbeeld

5 slide 5Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers met een pipeline duurt het maar 3.5 uur voor 4 wasmanden ! TaskOrderTaskOrder 12 2 AM 6 PM Tijd B C D A 30 Begin met taak zodra het kan wat is pipelining: wasserette voorbeeld

6 slide 6Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers wat is pipelining n implementatietechniek u meerdere instructies voeren overlappend uit in de tijd u te vergelijken met een assemblagelijn in een autofabriek n terminologie u pipe stage of pipe segment: 1 stap u machine cyclus: l tijd voor 1 stap l wordt bepaald door de traagste pipe stage l meestal gelijk aan klokcyclus n ideaal: n Speedup: ideaal n

7 slide 7Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers wat is pipelining (vervolg) n ideaal is niet haalbaar u pipeline is niet perfect gebalanceerd u overhead n effect van pipelining u of reductie van CPI u of verkorting van klokcyclus n pipeline is vorm van parallellisme u er wordt aan meerdere instructies tegelijk gewerkt u volledig transparant voor programmeur

8 slide 8Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers wat is pipelining (vervolg) n vb: DLX eenvoudige implementatie zonder pipeline in 5 klokcycli 1. instruction fetch (IF) l een instructie wordt uit het geheugen gehaald l de programmateller wordt met 4 verhoogd 2. instruction decode / register fetch (ID) l ophalen van registers kan direct want nummer staat op vaste plaats l inhoud van registers gekopieerd naar 2 interne registers l ook de mogelijke immediate wordt uit de instructie gehaald l decoderen gebeurt in parallel

9 slide 9Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers wat is pipelining (vervolg) n implementatie zonder pipeline in 5 klokcycli (vervolg) 3. execution / effective address cycle (EX) afhankelijk van opcode zijn er 4 categorieën: l geheugentoegang (berekening van effectief adres) l register-register ALU instructie l register-immediate ALU instructie l sprong 4. memory access / branch completion cycle (MEM) l alleen loads, stores en sprongen voeren uit tijdens deze cyclus 5. write-back (WB) l voor register-register ALU instructie, register-immediate ALU instructie en voor een load instructie

10 slide 10Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers voorbeeld: DLX n figuur 3.1: u datapad zonder pipeline l multi-cyclus ontwerp: 1 instructie duurt 5 cycli (behalve sprong en eventueel de ALU-instructies) l gebruikt tussenregisters (NPC, IR, A, B, Imm,...) voor bijhouden van informatie nodig in de volgende klokcyclus u zou kunnen geoptimiseerd worden l bv zelfde ALU voor verhogen programmateller en operaties l maar uitstekende basis voor pipeline: elke klokcyclus wordt een pipe stage

11 slide 11Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers voorbeeld: DLX n figuur 3.2 en 3.3: schematisch zicht op de pipeline u nooit twee verschillende operaties met hetzelfde datapad u merk op: l verschillend geheugen voor instructies en data: op te lossen door een instructie-cache en een data-cache l register file gebruikt in 2 stages, maar elk maar tijdens de helft l duidelijke problemen bij sprongen; oplossing volgt later

12 slide 12Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n figuur 3.4: datapad met pipeline u pipeline registers (pipeline latches) genoemd naar de stages u waarden uit tussenregisters die nodig zijn voor een latere stage moeten “meegaan” met de instructie (vb: register voor resultaat van een operatie) u vaste positie voor encodering van registers maakt dat decoderen en ophalen van registerinhoud samen kan gebeuren n limiterende elementen bij een pipeline u niet-gebalanceerd zijn van de stages u vertraging door de interne registers u minimale klok-tijd (clock-skew) u een individuele instructie zal trager uitvoeren met de pipeline u de doorvoer van instructies zal echter groter zijn voorbeeld: DLX (vervolg)

13 slide 13Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers pipeline hazards n definitie: situaties waardoor een instructie-stroom niet gewoon verder kan uitvoeren in de pipeline u structurele hazards (conflicten met hulpmiddelen) u data hazards u control hazards n gevolg: stalls u alle instructies na de gestopte instructie blokkeren mee u geen nieuwe instructies beginnen in de pipeline u door stalls zal de speedup en de performantie verlagen n andere naam voor stall: bubble

14 slide 14Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers A hangt af van D; stall (bubble) nodig omdat vouwen vast zit TaskOrderTaskOrder 12 2 AM 6 PM Tijd B C D A E F bubble 30 pipeline hazards

15 slide 15Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers structurele hazards n def: wanneer een bepaalde combinatie van instructies in de pipeline niet kan uitvoeren door conflicten over hulpmiddelen u als een bepaalde functionele eenheid niet volledig gepipelined is (vb FP vermenigvuldiging) u als een bepaald hulpmiddel is niet voldoende gerepliceerd n voorbeeld u wanneer geen twee gescheiden geheugens voor instructies en data (zie figuur 3.6, 3.7 en 3.8) u oplossing: gesplitste cache of instructiebuffers n waarom laat men structurele hazards toe ? u kosten laag houden u latency klein houden (geen tussenregisters nodig)

16 slide 16Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers data hazards n komen voor wanneer de volgorde van lees- en schrijftoegangen tot operanden gewijzigd wordt n vb (algemene vorm: OP resultaat, operand1, operand2): ADD R1, R2, R3 SUB R4, R5, R1 AND R6, R1, R7 OR R8, R1, R9 XOR R10, R1, R11 figuur 3.9 toont de hazards mooi aan n oplossing: forwarding u resultaat wordt direct naar de plaats gebracht waar die nodig is (bv uitgang ALU direct terug naar ingang ALU voor de volgende instructie, zie figuur 3.10) u tweede voorbeeld: figuur 3.11

17 slide 17Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers data hazards (vervolg) n classificatie van data hazards u RAW: read after write l hazard uit vorige voorbeelden l komt het meeste voor u WAW: write after write l twee instructies na elkaar schrijven in zelfde register l de eerste write gebeurt na de tweede l kan enkel voorkomen indien er meerdere write stages zijn (zie voorbeelden later) u WAR: write after read l een tweede instructie schrijft iets weg voordat een eerste instructie de vorige waarde heeft gelezen l kan niet voorkomen in ons voorbeeld L RAR: read after read: is geen hazard !

18 slide 18Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers data hazards (vervolg) n forwarding is niet altijd voldoende: LW R1, (0)R2 SUB R4, R1, R5 AND R6, R1, R7 OR R8, R1, R9 LW heeft zijn gegeven pas na de 4de cyclus, te laat voor SUB (zie figuur 3.12) n alleen een stall kan hier helpen (zie figuur 3.13 en 3.14)

19 slide 19Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers data hazards (vervolg) n rol van compiler ter voorkoming van data hazards u vb van vertaling van A = B + C LW R1, B LW R2, C ADD R3, R1, R2 SW A, R3 u dit geeft een stall (zie figuur 3.15) u compiler kan proberen code goed te schedulen (machine- afhankelijke optimisatie die rekening houdt met de pipeline) l spelend met de volgorde van de instructies l waarbij natuurlijk de correctheid bewaard moet blijven L schedulen = volgorde (van instructies) kiezen

20 slide 20Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers data hazards (vervolg) n rol van compiler ter voorkoming van data hazards (vervolg) u vb van vertaling van a = b + c; d = e - f; LW Rb, b LW Rc, c LW Re, e(herschikking) ADD Ra, Rb, Rc LW Rf, f (herschikking) SW a, Ra SUB Rd, Re, Rf SW d, Rd u herschikking kost meestal meer registers

21 slide 21Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers control hazards n probleem: als instructie i een ‘genomen sprong’ is u PC wordt normaal pas veranderd aan einde van MEM (fig. 3.4) n behandeling van sprongen u stall de pipeline zodra een sprong gedetecteerd wordt (fig. 3.21) l 3 klokcycli verloren l tot 30% sprongen -> helft van de ideale versnelling l oplossing bestaat uit 2 delen –sneller ontdekken of de sprong genomen wordt –de nieuwe PC sneller berekenen l vb: figuur 3.22, te vergelijken met figuur 3.4 –werkt voor instructies die op 0 testen –maakt gebruik van extra opteller –slechts 1 klokcyclus gaat verloren

22 slide 22Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n behandeling van sprongen (vervolg) u oude machines met complexe instructies hebben vaak een sprong-vertraging van 4 klokcycli of meer u hoe dieper de pipeline, hoe zwaarder de sprong-vertraging doorweegt n sprong-gedrag in programma’s u meer voorwaartse sprongen dan achterwaartse (3 op 1): fig u meeste lussen gebruiken achterwaartse sprongen l 60% van voorwaartse sprongen worden genomen l 85% van achterwaartse sprongen worden genomen control hazards (vervolg)

23 slide 23Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n verkleinen van gemiddelde vertraging: sprongvoorspelling u statisch: zie volgende slides u dynamisch: zie volgend hoofdstuk control hazards (vervolg)

24 slide 24Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers statisch voorspellen van sprongen n vier methoden voor het omgaan met sprongen u bevries de pipeline tot nieuwe PC is gekend (zie eerder) l eenvoudig, maar niet efficiënt; wordt niet gedaan u voorspel altijd dat de sprong niet genomen wordt l men moet terug kunnen indien de voorspelling fout was l vb voor DLX: fig u omgekeerd: voorspel de sprong als wel genomen l men moet terug kunnen indien de voorspelling fout was l is interessanter: meer dan 50% van de sprongen worden genomen l geen voordeel in de DLX pipeline l wel voordeel indien sprongtest ingewikkelder dan berekening van nieuwe PC

25 slide 25Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers u vertraagde branch: l gebruik van een branch delay slot l de compiler voegt een nuttige instructie toe na de sprong- instructie; deze instructie wordt altijd uitgevoerd l (zie fig en 3.29: drie gevallen –er is een eerdere instructie waar de sprong niet van afhangt: altijd voordelig –verplaatsing van instructie uit code waarnaar eventueel gesprongen gaat worden (meestal gekopieerd): mag geen probleem zijn bij niet-sprong, voordeel bij sprong –een instructie uit de code die volgt op sprong vult de branch delay slot: mag geen probleem zijn bij sprong, voordeel bij niet- sprong) statisch voorspellen van sprongen (vervolg)

26 slide 26Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers statisch voorspellen van sprongen (vervolg) u vertraagde branch: (vervolg) l cancelling of nullifying branch –speciale instructie die richting van de voorspelling bevat –indien mis-voorspeld: de instructie in de branch delay slot wordt veranderd in no-op (zie fig. 3.30) l branch delay slot wordt minder gebruikt in geavanceerde RISC-architecturen: –diepere pipelines, langere branch delays –men gebruikt meer dynamische voorspelling van sprongen (zie volgend hoofdstuk) l wat gebeurt er bij interrupt ?! –het is nodig om 2 PC’s te saven

27 slide 27Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers verder gebruik van compilertechnologie n vb op pagina 175: met statische sprongvoorspelling om data hazard op te lossen LW R1, 0(R2) SUB R1, R1, R3 BEQZ R1, L OR R4, R5, R L:ADD R7, R8, R9 u SUB is data-afhankelijk van LW 2 veronderstel sprong bijna altijd genomen en R7 is een vrij register: verplaats de ADD na de LW 2 veronderstel sprong bijna nooit genomen en R4 is een vrij register: verplaats de OR na de LW

28 slide 28Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers verder gebruik van compilertechnologie (vervolg) n basismethoden voor het voorspellen van sprongen u studie van programma l voorspel de sprong altijd als genomen –misvoorspelling van 34%, maar dit varieert sterk l voorspelling gebaseerd op richting –voorwaartse sprong: voorspel niet genomen –achterwaartse sprong: voorspel genomen –meestal ook misvoorspelling tussen 30 en 40% u profile informatie (is beter maar moeilijker uit te voeren)

29 slide 29Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers moeilijkheden bij implementatie van pipelines n correcte behandeling van exceptions n moeilijkheden als gevolg van keuze in de instructieset

30 slide 30Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers exceptions n veel soorten mogelijke exceptions: zie pagina 179 of eerste kolom van fig 3.39 u er is geen echte standaard-terminologie (interrupts, fouten,...) n 5 belangrijke karakteristieken (zie fig. 3.40): u synchroon of asynchroon l asynchroon heeft niets te maken met het programma dat uitvoert l asynchrone exceptions kunnen meestal behandeld worden na de uitvoering van de instructie, is eenvoudiger u al dan niet door de gebruiker gevraagd (vb trap, breakpoint) u al dan niet maskeerbaar u in een instructie of tussen instructies u programma moet stoppen of moet verder gaan

31 slide 31Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers exceptions (vervolg) n moeilijkst: exception midden in een instructie, waarbij het programma moet verder gaan u deze exceptions zijn altijd synchroon en nooit door de gebruiker aangevraagd u pipeline moet herstart worden na behandeling van exception n vb. van moeilijke exception: een page fault u wordt slechts gedetecteerd na de MEM stage u meerdere andere instructies zitten reeds in de pipeline

32 slide 32Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n precise exception: de pipeline kan gestopt worden zodat al de instructies vóór de exception uitgevoerd zijn, en die na de exception kunnen herstart worden u (bijna) alle integer pipelines, met inbegrip van load en store, ondersteunen precieze exceptions u soms problemen met FP instructies die lang duren (zie later) l veel machines hebben 2 modes l de niet-precieze mode gaat veel sneller (soms 10 x sneller) l onmogelijk om in niet-precieze mode te weten welke instructie de exception (bv overflow) veroorzaakte exceptions (vervolg)

33 slide 33Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n meerdere exceptions door verschillende instructies kunnen tegelijk gebeuren u vb: LW veroorzaakt een (data) page fault en wordt gevolgd door een ADD die een rekenkundige exception veroorzaakt LWIFIDEX MEM WB ADDIFID EX MEM WB n exceptions kunnen uit hun logische volgorde gebeuren (zie ook fig. 3.41) u vb: LW veroorzaakt een (data) page fault en wordt gevolgd door een ADD die een (instruction) page fault veroorzaakt LWIFIDEX MEM WB ADD IF IDEX MEM WB exceptions (vervolg)

34 slide 34Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n processoren proberen de logische volgorde te respecteren u een status vector per instructie houdt de exceptions bij u aan het einde van MEM of begin van WB wordt deze vector bekeken, en wordt beslist of de instructie moet gestopt worden exceptions (vervolg)

35 slide 35Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n keuzen in instructieset kunnen de pipeline bemoeilijken u autoincrement-adresseringsmode: een register wordt opgehoogd midden in een instructie, waarbij aan het einde een exception optreedt l meeste machines hebben hardware zodat ze de toestand van voor de instructie kunnen herstellen u string copy operaties: vaak heel omvangrijke instructies l tussenresultaat staat in registers, en bij herstart van instructie wordt verder gewerkt vanuit het tussenresultaat u instructies die conditie codes zetten l nadeel: zulke instructies zijn niet meer te gebruiken in branch delay slot l branch moet zeker zijn dat CC reeds gezet is andere moeilijkheden

36 slide 36Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers multicyclus-operaties n bij floating point, integer vermenigvuldiging en deling u de EX cyclus kan meerdere keren achter elkaar herhaald worden (fig. 3.42) of duurt meerdere klokcycli (fig. 3.44) u er kunnen meerdere functionele eenheden zijn u elke functionele eenheid heeft (fig. 3.43) l een ‘latency’ = aantal cycli dat men moet wachten op het resultaat l een ‘herhalingsinterval’ = aantal cycli tussen het opstarten van twee instructies die dezelfde functionele eenheid nodig hebben u doordat de latency groter is voor sommige instructies krijgen we veel meer (en langere) RAW hazards (fig en volgende slide)

37 slide 37Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers multicyclus-operaties (vervolg) n voorbeelden van problemen ivm het detecteren van hazards en forwarding technieken u structurele hazards (bv er is maar 1 FP div.) die tot stalls leiden u er kunnen meerdere writes naar registers gebeuren in 1 cyclus (zie fig. 3.47) (structurele hazard indien er maar 1 poort is) u WAW kan gebeuren omdat WB niet altijd in juiste volgorde gebeurt l vb: fig 3.47 met LD één instructie eerder en met F2 als bestemming l gebeurt eigenlijk alleen indien de eerste write nooit gebruikt wordt (dus onnodige instructie), anders kwam er een RAW stall die het geheel vertraagde

38 slide 38Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers multicyclus-operaties (vervolg) n voorbeelden van problemen ivm het detecteren van hazards en forwarding technieken (vervolg) u instructies eindigen niet in volgorde: problemen met exceptions l vb:DIVF F0, F2, F4 ADDF F10, F10, F8 SUBF F12, F12, F14 l ADDF en SUBF zijn uitgevoerd voordat DIVF eindigt l als DIVF een exception veroorzaakt en ADDF is al gebeurd, dan is de oorspronkelijke inhoud van F10 verloren en kan die instructie niet herstart worden u instructies duren langer (langere latency): meer stalls bij RAW (zie fig. 3.46)

39 slide 39Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers MIPS R4000 n superpipelining u om hogere klokcyclus te halen: minder doen per stage, dus diepere pipeline (in dit geval 8 stages) (zie fig. 3.50) l meer forwarding l vergroot de load en branch delays (fig en 3.53) n FP pipeline: 3 functionele eenheden u adder, multiplier, divider u eigenlijk kun je 8 onderdelen onderscheiden (fig. 3.55) u elke functionele eenheid gebruikt deze onderdelen in een bepaalde volgorde (fig. 3.56) u van elk onderdeel is maar 1 exemplaar: hier krijg je dus structurele hazards in sommige combinaties van instructies (voorbeelden in fig )

40 slide 40Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers fouten en valstrikken n valstrik: vreemde sequenties van instructies geven onverwachte hazards u vb WAW: dit heeft logisch gezien geen zin, maar kan het gevolg zijn bv van een verplaatste instructie bij een branch delay n fout: meer pipeline stages geeft altijd betere performantie (zie fig. 3.63) u er komen meer stalls u pipeline overhead vergroot

41 slide 41Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers fouten en valstrikken n valstrik: het herschikken van instructies door een compiler evalueren aan de hand van niet-geoptimiseerde code u niet geoptimizeerde code bevat veel onnodige instructies die gemakkelijk verplaatst worden


Download ppt "Slide 1Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers Pipelining: basisprincipes."

Verwante presentaties


Ads door Google