Pipelining: basisprincipes

Slides:



Advertisements
Verwante presentaties
BRIDGE Vervolgcursus Vervolg op starterscursus Bridgeclub Schiedam ‘59 info: Maandagavond: 19: – of
Advertisements

Sudoku puzzels: hoe los je ze op en hoe maak je ze?
De elektronische verzamelaanvraag Ruben Fontaine Markt- en Inkomensbeheer – dienst Aangiftes.
‘SMS’ Studeren met Succes deel 1
Hoe werkt een rekenmachine?
NEDERLANDS WOORD BEELD IN & IN Klik met de muis
Beter afspelen.
BRIDGE Vervolgcursus Vervolg op starterscursus Bridgeclub Schiedam ‘59 info: Maandagavond: 19: – of
ZIEHIER 36 REDENEN WAAROM BIER
1 Resultaten marktonderzoek RPM Zeist, 16 januari 2002 Door: Olga van Veenendaal, medew. Rothkrans Projectmanagement.
November 2013 Opinieonderzoek Vlaanderen – oktober 2013 Opiniepeiling Vlaanderen uitgevoerd op het iVOXpanel.
Global e-Society Complex België - Regio Vlaanderen e-Regio Provincie Limburg Stad Hasselt Percelen.
 Deel 1: Introductie / presentatie  DVD  Presentatie enquête  Ervaringen gemeente  Pauze  Deel 2 Discussie in kleinere groepen  Discussies in lokalen.
Processor & Toetsenbord
Par. 3.1 Computers zijn overal
Thema HACCP
Slide 1Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers Geheugen-hiërarchie.
STAPPENPLAN GRAMMATICUS.
Hardware (1) NSG Informatica.
Jerry van den Heuvel Pim van der Lee
Hoofdstuk 8: Recursie.
Ronde (Sport & Spel) Quiz Night !
1/1/ /e/e eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 2(1): Inleiding InstructieSetArchitectuur.
Auteursomgeving voor Digitale Componenten
Start.
Kb.1 Ik leer op een goede manier optellen en aftrekken
C programma int main(){ } Compilatie met devc++ in file main.c Gecompileerd programma in file FirstProgram.exe Mov R1, 120 Mov R2, 160 ADD R1, R2.
Nooit meer onnodig groen? Luuk Misdom, IT&T
Slide 1Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers Instructie set: principes.
Slide 1Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers Geavanceerde pipelining en parallellisme op het niveau van instructies (ILP:
Hoofdstuk 6: Controle structuren
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen College 5.
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen (II) College 6.
De processor.
1 introductie 3'46” …………… normaal hart hond 1'41” ……..
Oefeningen F-toetsen ANOVA.
5JJ20: Computerarchitectuur 2M200: Inleiding Computersystemen
1/1/ /e/e eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 3(1): Instructietypen (1)
1Ben Bruidegom Hoe werkt een rekenmachine? Ben Bruidegom AMSTEL Instituut Universiteit van Amsterdam.
1Ben Bruidegom 1 Hoe werkt een “loopje” nu precies? Recapitulatie rekenmachines week 1 Van rekenmachine naar rekenmachine met “loopjes”
Auteursomgeving voor Digitale Componenten
1Ben Bruidegom A Harvard Machine Recapitulatie Calculator Calculator  Calculator met “loopjes” Calculator met “loopjes”  Processor.
Wat levert de tweede pensioenpijler op voor het personeelslid? 1 Enkele simulaties op basis van de weddeschaal B1-B3.
1 7 nov Rijnsburg 7 nov Rijnsburg. 2 Hebreeën 7 15 En nog veel duidelijker wordt het, als naar het evenbeeld van Melchisedek een andere priester.
13 maart 2014 Bodegraven 1. 1Korinthe Want gelijk het lichaam één is en vele leden heeft, en al de leden van het lichaam, hoe vele ook, een lichaam.
1 19 dec Rijnsburg 19 dec Rijnsburg. 2 Hebreeën 8 1 De hoofdzaak VAN ONS ONDERWERP is, dat wij zulk een hogepriester hebben, die gezeten is.
Elektriciteit 1 Les 4 Visualisatie van elektrische velden
Hoe werkt een rekenmachine?
1Ben Bruidegom 1 De Harvard Machine Van rekenmachine met “loopjes” naar processor.
Ben Bruidegom 1 Sequentiële schakelingen Toestand uitgang bepaald door:  ingangen;  vorige toestand uitgang.
1 Van Harvard naar MIPS. 2 3 Van Harvard naar MIPS Microprocessor without Interlocked Pipeline Stages Verschillen met de Harvard machine: - 32 Registers.
Goedemorgen.
1 ICT Infrastructuren 19 november 2007 David N. Jansen.
Statistiekbegrippen en hoe je ze berekent!!
Processor & Toetsenbord
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 3: Instructietypen (1)
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 4: Inleiding InstructieSetArchitectuur (ISA) datatypen.
ECHT ONGELOOFLIJK. Lees alle getallen. langzaam en rij voor rij
Samenwerking tussen processor, registers en RAMgeheugen
17/08/2014 | pag. 1 Fractale en Wavelet Beeldcompressie Les 5.
Fractale en Wavelet Beeldcompressie
Centrummaten en Boxplot
12 sept 2013 Bodegraven 1. 2  vooraf lezen: 1Kor.7:12 t/m 24  indeling 1Korinthe 7  1 t/m 9: over het huwelijk  10 t/m 16: over echtscheiding  16.
13 november 2014 Bodegraven 1. 2 de vorige keer: 1Kor.15:29-34 indien er geen doden opgewekt worden...  vs 29: waarom dopen?  vs.30-32: waarom doodsgevaren.
1 Week /03/ is gestart in mineur De voorspellingen van alle groten der aarden dat de beurzen zouden stijgen is omgekeerd uitgedraaid.
45 levenslessen Klikken voor vervolg Muziek: snowdream.
23 mei 2013 Bodegraven vanaf hoofdstuk 6: hoofdst.1: de wijsheid van de wereld hoofdst.2: de wijsheid van God hoofdst.3: Gods akker en Gods bouwwerk.
HOGESCHOOL ROTTERDAM / CMI Computersystemen 2 (TIRCCMS02 - Operating systems)
Code compressie in Embedded Systems Onno Kievit ET4074 Kwantitatieve aspecten van computer architectuur.
Transcript van de presentatie:

Pipelining: basisprincipes

pipelining: overzicht wat is pipelining voorbeeld: DLX pipeline hazards structurele hazards data hazards control hazards moeilijkheden bij het implementeren van pipelines uitbreiding van een pipeline voor multicyclus-operaties instructie set en pipelining de MIPS R4000 pipeline fouten en valstrikken

wat is pipelining: wasserette voorbeeld 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 A B C D

wat is pipelining: wasserette voorbeeld 6 PM 7 8 9 10 11 12 1 2 AM T a s k O r d e 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 Tijd A B C D sequentieel werken duurt 8 uur voor 4 wasmanden

wat is pipelining: wasserette voorbeeld 6 PM 7 8 9 10 11 12 1 2 AM Tijd 30 30 30 30 30 30 30 T a s k O r d e A B C Begin met taak zodra het kan D met een pipeline duurt het maar 3.5 uur voor 4 wasmanden !

wat is pipelining implementatietechniek terminologie ideaal: meerdere instructies voeren overlappend uit in de tijd te vergelijken met een assemblagelijn in een autofabriek terminologie pipe stage of pipe segment: 1 stap machine cyclus: tijd voor 1 stap wordt bepaald door de traagste pipe stage meestal gelijk aan klokcyclus ideaal: Speedup: ideaal n

wat is pipelining (vervolg) ideaal is niet haalbaar pipeline is niet perfect gebalanceerd overhead effect van pipelining of reductie van CPI of verkorting van klokcyclus pipeline is vorm van parallellisme er wordt aan meerdere instructies tegelijk gewerkt volledig transparant voor programmeur

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

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

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

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

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

pipeline hazards definitie: situaties waardoor een instructie-stroom niet gewoon verder kan uitvoeren in de pipeline structurele hazards (conflicten met hulpmiddelen) data hazards control hazards gevolg: stalls alle instructies na de gestopte instructie blokkeren mee geen nieuwe instructies beginnen in de pipeline door stalls zal de speedup en de performantie verlagen andere naam voor stall: bubble

pipeline hazards 6 PM 7 8 9 10 11 12 1 2 AM 30 Tijd T a s k O r d e bubble A B C D E F A hangt af van D; stall (bubble) nodig omdat vouwen vast zit

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

data hazards komen voor wanneer de volgorde van lees- en schrijftoegangen tot operanden gewijzigd wordt 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 oplossing: forwarding 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) tweede voorbeeld: figuur 3.11

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

data hazards (vervolg) 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) alleen een stall kan hier helpen (zie figuur 3.13 en 3.14)

data hazards (vervolg) rol van compiler ter voorkoming van data hazards vb van vertaling van A = B + C LW R1, B LW R2, C ADD R3, R1, R2 SW A, R3 dit geeft een stall (zie figuur 3.15) compiler kan proberen code goed te schedulen (machine-afhankelijke optimisatie die rekening houdt met de pipeline) spelend met de volgorde van de instructies waarbij natuurlijk de correctheid bewaard moet blijven schedulen = volgorde (van instructies) kiezen

data hazards (vervolg) rol van compiler ter voorkoming van data hazards (vervolg) 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 herschikking kost meestal meer registers

control hazards probleem: als instructie i een ‘genomen sprong’ is PC wordt normaal pas veranderd aan einde van MEM (fig. 3.4) behandeling van sprongen stall de pipeline zodra een sprong gedetecteerd wordt (fig. 3.21) 3 klokcycli verloren tot 30% sprongen -> helft van de ideale versnelling oplossing bestaat uit 2 delen sneller ontdekken of de sprong genomen wordt de nieuwe PC sneller berekenen 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

control hazards (vervolg) behandeling van sprongen (vervolg) oude machines met complexe instructies hebben vaak een sprong-vertraging van 4 klokcycli of meer hoe dieper de pipeline, hoe zwaarder de sprong-vertraging doorweegt sprong-gedrag in programma’s meer voorwaartse sprongen dan achterwaartse (3 op 1): fig. 3.24 meeste lussen gebruiken achterwaartse sprongen 60% van voorwaartse sprongen worden genomen 85% van achterwaartse sprongen worden genomen

control hazards (vervolg) verkleinen van gemiddelde vertraging: sprongvoorspelling statisch: zie volgende slides dynamisch: zie volgend hoofdstuk

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

statisch voorspellen van sprongen (vervolg) vertraagde branch: gebruik van een branch delay slot de compiler voegt een nuttige instructie toe na de sprong-instructie; deze instructie wordt altijd uitgevoerd (zie fig. 3.28 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) vertraagde branch: (vervolg) 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) 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) wat gebeurt er bij interrupt ?! het is nodig om 2 PC’s te saven

verder gebruik van compilertechnologie 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, R6 ...... L: ADD R7, R8, R9 SUB is data-afhankelijk van LW veronderstel sprong bijna altijd genomen en R7 is een vrij register: verplaats de ADD na de LW veronderstel sprong bijna nooit genomen en R4 is een vrij register: verplaats de OR na de LW

verder gebruik van compilertechnologie (vervolg) basismethoden voor het voorspellen van sprongen studie van programma voorspel de sprong altijd als genomen misvoorspelling van 34%, maar dit varieert sterk voorspelling gebaseerd op richting voorwaartse sprong: voorspel niet genomen achterwaartse sprong: voorspel genomen meestal ook misvoorspelling tussen 30 en 40% profile informatie (is beter maar moeilijker uit te voeren)

moeilijkheden bij implementatie van pipelines correcte behandeling van exceptions moeilijkheden als gevolg van keuze in de instructieset

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

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

exceptions (vervolg) 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 (bijna) alle integer pipelines, met inbegrip van load en store, ondersteunen precieze exceptions soms problemen met FP instructies die lang duren (zie later) veel machines hebben 2 modes de niet-precieze mode gaat veel sneller (soms 10 x sneller) onmogelijk om in niet-precieze mode te weten welke instructie de exception (bv overflow) veroorzaakte

exceptions (vervolg) meerdere exceptions door verschillende instructies kunnen tegelijk gebeuren vb: LW veroorzaakt een (data) page fault en wordt gevolgd door een ADD die een rekenkundige exception veroorzaakt LW IF ID EX MEM WB ADD IF ID EX MEM WB exceptions kunnen uit hun logische volgorde gebeuren (zie ook fig. 3.41) vb: LW veroorzaakt een (data) page fault en wordt gevolgd door een ADD die een (instruction) page fault veroorzaakt LW IF ID EX MEM WB ADD IF ID EX MEM WB

exceptions (vervolg) processoren proberen de logische volgorde te respecteren een status vector per instructie houdt de exceptions bij aan het einde van MEM of begin van WB wordt deze vector bekeken, en wordt beslist of de instructie moet gestopt worden

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

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

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

multicyclus-operaties (vervolg) voorbeelden van problemen ivm het detecteren van hazards en forwarding technieken (vervolg) instructies eindigen niet in volgorde: problemen met exceptions vb: DIVF F0, F2, F4 ADDF F10, F10, F8 SUBF F12, F12, F14 ADDF en SUBF zijn uitgevoerd voordat DIVF eindigt 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 instructies duren langer (langere latency): meer stalls bij RAW (zie fig. 3.46)

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

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

fouten en valstrikken valstrik: het herschikken van instructies door een compiler evalueren aan de hand van niet-geoptimiseerde code niet geoptimizeerde code bevat veel onnodige instructies die gemakkelijk verplaatst worden