De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Slide 1Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers Geavanceerde pipelining en parallellisme op het niveau van instructies (ILP:

Verwante presentaties


Presentatie over: "Slide 1Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers Geavanceerde pipelining en parallellisme op het niveau van instructies (ILP:"— Transcript van de presentatie:

1 slide 1Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers Geavanceerde pipelining en parallellisme op het niveau van instructies (ILP: Instruction Level Parallellism)

2 slide 2Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers Overzicht n statisch schedulen (compiler) u pipeline scheduling en lusontrolling u afhankelijkheden u parallellisme op lus-niveau n dynamisch schedulen u dynamic scheduling met scorebord u dynamic scheduling met algoritme van Tomasulo n dynamisch voorspellen van sprongen n multiple issue u algemene kenmerken u compilerondersteuning voor gebruik ILP u hardwareondersteuning voor gebruik ILP

3 slide 3Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers inleiding n Pipeline CPI = ideale pipeline CPI + structurele stalls + RAW stalls + WAR stalls + WAW stalls + control stalls n de factoren zijn niet onafhankelijk van elkaar: we zullen zien dat verminderen van RAW stalls en control stalls het aantal WAR stalls en WAW stalls kan verhogen n vermindering van CPI tot minder dan 1: starten van meerdere instructies in parallel (multiple issue) u superscalaire processoren u VLIW n 2 grote technieken komen aan bod in dit hoofdstuk: u technieken om impact data en control hazards te verminderen u technieken om meer parallellisme uit een processor te halen

4 slide 4Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers pipeline scheduling en lusontrolling n parallellisme binnen 1 basisblok is klein: u gemiddeld maar 6 à 7 instructies tussen twee sprongen u en deze instructies hangen vaak van elkaar af u oplossing: parallellisme tussen iteraties van 1 lus uitbuiten: loop-level parallellism l vb: for (i=1; i<=1000; i=i+1) x[i] = x[i] + s l de berekeningen van twee opeenvolgende iteraties zijn onafhankelijk van elkaar l methodes: –statisch (door compiler) of dynamisch (door hardware) ontrollen van een lus –vectorinstructies (zie later bij parallelle architecturen)

5 slide 5Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers pipeline scheduling en lusontrolling (vervolg) n vermijden van stalls: de afhankelijke instructies ver van elkaar verwijderen n gebruikte latencies in de volgende voorbeelden u FP ALUop voor ander FP ALU op3 u FP ALU op voor STORE2 u LOAD double voor FP ALU op1 n niet-geoptimiseerde DLX code voor ons voorbeeld, met telkens aangegeven welke klokcycli gebruikt worden L: LDF0, 0(R1)1+2 ADDDF4, F0, F23+4+5 SD0(R1), F46 SUBIR1, R1, 87 BNEZR1, L8+9

6 slide 6Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers pipeline scheduling en lusontrolling (vervolg) n eerste verbetering: herschikken van deze code L: LDF0, 0(R1)1+2 ADDDF4, F0, F23 SUBIR1, R1, 84 BNEZR1, L5 SD8(R1), F46 verbetering: van 9 naar 6 merk op: niet enkel herschikken maar ook aanpassen (SD werd gewijzigd) merk nog op: het eigenlijke werk in de lus (LD, ADD, SD) kost 3 klokcycli, de rest is lusoverhead en een stall

7 slide 7Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers pipeline scheduling en lusontrolling (vervolg) n volgende methode: lusontrolling L: LDF0, 0(R1)1+2 ADDDF4, F0, F23+4+5 SD0(R1), F46 LDF0, -8(R1)7+8 ADDDF4, F0, F29+10+11 SD-8(R1), F412 LDF0, -16(R1)13+14 ADDDF4, F0, F215+16+17 SD-16(R1), F418 LDF0, -24(R1)19+20 ADDDF4, F0, F221+22+23 SD-24(R1), F424 SUBIR1, R1, 3225 BNEZR1, L26+27 lusoverhead werd 3 maal weggewerkt, gebruikt meer registers gemiddeld: 6.8 klokcycli per lus

8 slide 8Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers pipeline scheduling en lusontrolling (vervolg) n volgende verbetering: lusontrolling en herschikken L: LDF0, 0(R1)1 LDF6, -8(R1)2 LDF10, -16(R1)3 LDF14, -24(R1)4 ADDDF4, F0, F25 ADDDF8, F6, F26 ADDDF12, F10, F27 ADDDF16, F14, F28 SD0(R1), F49 SD-8(R1), F810 SD-16(R1), F1211 SUBIR1, R1, 3212 BNEZR1, L13 SD0(R1), F1614 gemiddeld: 3.5 klokcycli per lus (vergelijk met vroeger 6)

9 slide 9Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n lus-ontrolling vergroot hoeveelheid code tussen 2 sprongen, zodat beter kan gescheduled worden u compiler moet ontdekken dat iteraties van een lus onafhankelijk zijn u vaak moeten instructies aangepast worden (bv de SD omdat die na de SUBI verplaatst werd) u gebruik van veel verschillende registers maakt de instructies onafhankelijker u lusboekhouding moet aangepast worden u in ons geval zijn de LDs en SDs uit de verschillende iteraties onafhankelijk (dit is niet altijd zo) u onafhankelijke instructies kunnen her-ordend worden en zijn parallel (en omgekeerd) pipeline scheduling en lusontrolling (vervolg)

10 slide 10Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n compiler heeft analyse nodig van afhankelijkheden tussen instructies: dit is het onderwerp van de volgende slides n vaak kent men statisch het aantal iteraties niet hoe ontrollen ? u schrijf 2 lussen, 1 niet-ontrolde gevolgd door een ontrolde (bv 4 maal) u dynamisch bereken je hoeveel keer je eerst de niet-ontrolde moet doorlopen om een heel aantal ontrolde over te houden u vb: l stel iteratie 18 maal l eerst 2 maal niet ontrolde l daarna 4 maal de ontrolde (geeft 16 maal de iteratie) pipeline scheduling en lusontrolling (vervolg)

11 slide 11Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers afhankelijkheden n data-afhankelijkheid: instr j is data-afhankelijk van instr i u indien i een resultaat produceert gebruikt in j u indien j data-afhankelijk is van instr k, en k data-afhankelijk is van instr i n hoe invloed verminderen u afhankelijkheid behouden maar hazard vermijden door anders te schedulen u afhankelijkheid wegwerken door analyse van code l vb op volgende slide toont data-afhankelijkheden l deze werden weggewerkt in ons eerder voorbeeld door de SUBI instructies weg te laten en de berekeningen van R1 door de compiler te laten doen

12 slide 12Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n voorbeeld van data-afhankelijkheden L: LDF0, 0(R1) ADDDF4, F0, F2 SD0(R1), F4 SUBIR1, R1, #8 LDF0, -8(R1) ADDDF4, F0, F2 SD-8(R1), F4 SUBIR1, R1, #8 LDF0, -8(R1) ADDDF4, F0, F2 SD-8(R1), F4 SUBIR1, R1, #8 …….. BNEZR1, L afhankelijkheden (vervolg)

13 slide 13Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n naam-afhankelijkheid: twee instructies gebruiken hetzelfde register (of geheugenlocatie), maar geen gegevens worden doorgegeven tussen de instructies u anti-afhankelijkheid: komt overeen met een WAR u output-afhankelijkheid: komt overeen met een WAW n voorbeeld van naam-afhankelijkheid L: LDF0, 0(R1) ADDDF4, F0, F2 SD0(R1), F4 SUBIR1, R1, #8 LDF0, -8(R1) ADDDF4, F0, F2 SD-8(R1), F4 SUBIR1, R1, #8 afhankelijkheden (vervolg)

14 slide 14Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n hoe naam-afhankelijkheid vermijden u verschillende registers (of geheugenlocaties) gebruiken u is eenvoudiger voor registers u kan statisch of dynamisch gebeuren n voorbeeld van vermijden van naam-afhankelijkheid L: LDF0, 0(R1) ADDDF4, F0, F2 SD0(R1), F4 SUBIR1, R1, #8 LDF6, -8(R1) ADDDF8, F6, F2 SD-8(R1), F6 SUBIR1, R1, #8 afhankelijkheden (vervolg)

15 slide 15Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n controle-afhankelijkheid: instructies hangen af van sprongen u instructies die na een sprong staan kunnen niet zomaar verhuisd worden naar vóór de sprong u instructies die vóór een sprong staan kunnen niet zomaar verhuisd worden naar na de sprong u volgende slide toont de controle-afhankelijkheden zodat eenvoudige herordening niet mogelijk is n hoe invloed verminderen u wegwerken van sprongen zoals in lus-ontrolling voorbeeld u zie later afhankelijkheden (vervolg)

16 slide 16Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n voorbeeld van controle-afhankelijkheden L: LDF0, 0(R1) ADDDF4, F0, F2 SD0(R1), F4 SUBIR1, R1, #8 BNEZR1, exit LDF6, -8(R1) ADDDF8, F6, F2 SD-8(R1), F8 SUBIR1, R1, #8 BNEZR1, exit …….. BNEZR1, L exit: ……... afhankelijkheden (vervolg)

17 slide 17Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n in het gebruikte voorbeeld voor lus-ontrolling: de iteraties waren volledig onafhankelijk van elkaar for (i=1; i <= 1000; i++) x[i] = x[i] + s; n in het volgend voorbeeld gebruikt S1 een variabele (B[i]) die in de vorige iteratie in S2 een nieuwe waarde gekregen had for (i=1; i <= 100; i=i+1) { A[i] = A[i] + B[i];/* S1 */ B[i+1] = C[i] + D[i];/* S2 */ } parallellisme op lus-niveau

18 slide 18Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n door analyse kan deze afhankelijkheid weggewerkt worden for (i=1; i <= 100; i=i+1) { A[i] = A[i] + B[i];/* S1 */ B[i+1] = C[i] + D[i];/* S2 */ } wordt A[1] = A[1] + B[1]; for (i=1; i <= 99; i=i+1) { B[i+1] = C[i] + D[i]; A[i+1] = A[i+1] + B[i+1]; } parallellisme op lus-niveau (vervolg)

19 slide 19Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers dynamisch schedulen n = dynamisch (tijdens de uitvoering) de volgorde van de instructies die uitgevoerd worden bepalen n normaal voegt de hardware stalls in als een data-afh. optreedt die niet kan worden opgelost door forwarding n vb: geen reden om derde instructie te doen wachten DIVDF0, F2, F4 ADDDF10, F0, F8 SUBDF12, F8, F14 n voordeel van dynamisch schedulen u indien compiler de data-afhankelijkheid niet kan detecteren u indien code voor andere pipeline geoptimiseerd is u vereenvoudigt de compiler n nadeel: nogal ingewikkelde hardware nodig

20 slide 20Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n principe: l issue: decoderen en testen op structurele hazards l lezen van operanden: hiermee wordt gewacht tot er geen data hazards meer zijn u de instructies gaan in volgorde door de issue stage u maar ze kunnen elkaar voorbijsteken in de volgende stage u WAR wordt mogelijk DIVDF0, F2, F4 ADDDF10, F0, F8 SUBDF8, F8, F14 n 2 methodes u met scorebord (CDC, 1964) u Tomasulo-algoritme (IBM, 1967) dynamisch schedulen (vervolg)

21 slide 21Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers dynamic scheduling met scorebord n doel: 1 instructie uitvoeren per klok cyclus u indien een stall nodig is voor een instructie: proberen een andere instructie uit te voeren die niet afhankelijk is l van een actieve instructie (een instructie in uitvoering) l of van een instructie die tegengehouden werd door een stall u meerdere instructies kunnen in de EX stage zijn door l meerdere functionele eenheden l ge-pipelinede instructies l combinatie van deze twee l in deze bespreking veronderstellen we meerdere functionele eenheden (maakt geen wezenlijk verschil): 2 mult, 1 adder, 1 divider, 1 integer unit (zie fig. 4.3)

22 slide 22Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n taak scorebord u opbouw van data-afhankelijkheden tussen instructies u vervangt de stage van issue van een instructie u scorebord bepaalt wanneer een instructie zijn operanden kan lezen en aan de uitvoering kan beginnen u scorebord controleert wanneer een instructie zijn resultaat kan wegschrijven dynamic scheduling met scorebord (vervolg)

23 slide 23Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n model met 4 stappen (ipv 5 stages van pipeline) u issue l test op structurele hazards (is de nodige functionele eenheid vrij) en op WAW hazards (gaat geen actieve instr. zijn resultaat schrijven in hetzelfde register) l indien probleem: stall en geen verdere instr. fetch u lezen van operanden l test op RAW hazards (bij actieve en wachtende instr.) l indien probleem: instructie wordt bijgehouden u uitvoering l na uitvoering wordt scorebord verwittigd u wegschrijven van resultaat l test op WAR hazards (moet oude waarde van register nog gelezen worden in een eerdere instructie) dynamic scheduling met scorebord (vervolg)

24 slide 24Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n eigenschappen van scorebord u maakt geen gebruik van forwarding (maar geen wacht stage voor geh) u structurele hazards: bussen van registers naar functionele eenheden (nodig in stap 2 en 4) u drie delen (zie fig. 4.4) l instructie status: houdt bij in welke stap elke instructie zit l status van functionele eenheden (9 velden): –bezet status, uitgevoerde operatie –resultaat- en bronoperanden registernummers –functionele eenheden die deze bronoperanden eventueel nog moeten uitrekenen (RAW) –vlaggen die aangeven of bronregisters klaar staan l per resultaatregister: functionele eenheid die hierin gaat schrijven dynamic scheduling met scorebord (vervolg)

25 slide 25Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n vb van WAR: DIVD en ADD (ivm F6) in figuur 4.5 en 4.6 n beperkingen van de methode met scorebord u hoeveelheid parallellisme aanwezig in de code u grootte van het scorebord (venster = aantal instructies dat bekeken kan worden) u het aantal en het type van de functionele eenheden (bepaalt de structurele hazards) u het aantal WAR en WAW hazards dynamic scheduling met scorebord (vervolg)

26 slide 26Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers dynamic scheduling: alg. van Tomasulo n karakteristieken u combineert elementen van scorebord met herbenoeming van registers u hierdoor worden de WAR en WAW hazards vermeden u in deze bespreking veronderstellen we meerdere functionele eenheden u herbenoeming van registers door reservatiestations l per functionele eenheid is er een reservatiestation l hierin worden de operanden gebufferd zodra beschikbaar l wachtende instructies verwijzen naar de functionele eenheden die de bronoperanden zullen leveren l bij WAW wordt enkel de laatste echt in het register geschreven

27 slide 27Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n verder verschil met scorebord u reservatiestations bepalen wanneer een instructie kan beginnen uit te voeren: beslissingen gebeuren hier gedistribueerd, en bij scorebord centraal door scorebord u resultaten gaan direct van reservatiestations naar functionele eenheid (en niet via registers) via CDB (common data bus) zie fig. 4.8 dynamic scheduling: alg. van Tomasulo (vervolg)

28 slide 28Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n model met 3 stappen (ipv 5 stages van pipeline en 4 bij scorebord) u issue: nieuwe instructie in een reservatiestation plaatsen indien er plaats vrij is (anders geeft dit een structurele hazard en dus een stall) u uitvoering indien operanden beschikbaar zijn; anders kijken voor operanden op CDB u wegschrijven van resultaat via CDB naar register en reservatiestations waar die resultaten nodig zijn dynamic scheduling: alg. van Tomasulo (vervolg)

29 slide 29Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n belangrijke verschillen met scorebord u geen expliciete check op WAW en WAR hazards (deze worden overbodig door de herbenoeming van registers) u CDB doet een broadcast van resultaten, men wacht niet op de registers u de logica om hazards te detecteren is gedistribueerd (geen bottleneck zoals bij het scorebord) l belangrijk indien 2 instructies wachten op zelfde resultaat l bij scorebord is er een conflict rond het gebruik van de registers, dus starten de twee instructies niet tegelijk l bij Tomasulo kunnen de twee instructies tegelijk starten u loads en stores worden ook als functionele eenheden beschouwd dynamic scheduling: alg. van Tomasulo (vervolg)

30 slide 30Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n structuur van de reservatiestation: 6 velden u bezet status, uitgevoerde operatie u waarde van de 2 operanden, indien reeds beschikbaar u indien een operand niet beschikbaar is wordt bijgehouden van welke functionele eenheid deze moet komen n aanpassing aan registerfile u elk registers heeft een veld met het reservatiestation waar de huidige waarde wordt berekend n vb van WAR: DIVD en ADD (ivm F6) in fig 4.9 & 4.10 n groot voordeel tov scorebord: dynamische lus-ontrolling (zie volgende slide) dynamic scheduling: alg. van Tomasulo (vervolg)

31 slide 31Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers Tomasulo: ontrollen van lussen n voorbeeld van een lus met oplossen van WAW en WAR L:LDF0, 0(R1) MULTDF4, F0, F2 SD0(R1), F4 SUBIR1, R1, 8 BNEZR1, L u veronderstel dat de sprongen genomen worden u de lus wordt dynamisch ontrold door de hardware u de reservatiestations zorgen voor extra registers, en lossen WAW (2 LD) en WAR (LD na MULT) hazards op u fig 4.12 geeft de initiële situatie aan u test bij elke load (iets wat voor de compiler vaak moeilijk is vanwege het gebruik van pointers) l een load mag enkel gestart worden als het adres niet in het reservatiestation van de store staat

32 slide 32Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers Tomasulo (vervolg) n grootste nadeel van Tomasulo u grote hoeveelheid hardware nodig om dit te implementeren l veel heel snelle associatieve geheugens l complexe controle logica u mogelijke bottleneck: CDB n grootste voordeel van Tomasulo u het kan heel effectief gebruikt worden in een architectuur die weinig registers biedt (bv Intel) l in zulke architectuur heeft de compiler niet veel ruimte om aan registerherbenoeming te doen u compilers kunnen niet-numerieke code vaak moeilijk statisch schedulen

33 slide 33Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers dynamisch voorspellen van sprongen n doel: het vermijden van control hazards u belangrijker wanneer meer instructies tegelijk gestart worden u blijft anders altijd een limiterende factor (wet van Amdahl) n we bespreken hier een aantal voorspellingsschema’s met telkens een grotere complexiteit n engels: branch prediction = voorspelling van voorwaardelijke sprongen = voorspelling van vertakking maar ik noem het hier vaak sprongvoorspelling

34 slide 34Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n waarom kan men voorspellen ? u grootste gedeelte van uitvoeringstijd zit in lussen l elke instructie: veel kansen dat ook eerder uitgevoerd u spronginstructie l niet op toeval gebaseerd l vroeger gedrag is goede indicatie voor volgend gedrag –meer dan 90% juiste voorspelling in meeste toepassingen u informatie over sprongen l kan bijgehouden worden l gebruikt bij volgend voorkomen van zelfde sprong dynamisch voorspellen van sprongen (vervolg)

35 slide 35Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers voorbeelden van voorspelbare sprongen n lus teller = 100 BEGIN: : inhoud van lus teller = teller - 1 spring naar BEGIN indien teller > 0 11..1011..10 99 keer

36 slide 36Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n testen op fouten, op speciale gevallen voorbeelden van voorspelbare sprongen address = (int *) malloc(sizeof(int)); if (address == NULL) error("memory full");

37 slide 37Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n herbruikbare code u de & operatie is sneller dan de deling indien b macht van 2 is u in dit voorbeeld is b een vaste waarde voorbeelden van voorspelbare sprongen int modulo(int a,int b) { if ((b & (b -1))==0) return(a & (b -1)); return(a % b); } #include "ma_librairie.h" #define HASH_INDEX(v) modulo(v,MAXSIZE)

38 slide 38Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n gegevens zijn vaak niet toevallig (random) u kijken of tabel vol is: in het begin nooit, aan het einde altijd voorbeelden van voorspelbare sprongen string_code=getc(input); while ((character=getc(input)) != (unsigned)EOF) { index=find_match(string_code,character); if (code_value[index] != -1) string_code=code_value[index]; else { if (next_code <= MAX_CODE) { code_value[index]=next_code++; prefix_code[index]=string_code; append_character[index]=character; } output_code(output,string_code); string_code=character; } heel bekend compressie- algorithme LZW (Lempel-Ziv- Welch)

39 slide 39Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n vooringenomen betekend niet on-nuttig u de kans dat a[i] > max in de N-de interatie is 1/(N+1) en gaat naar 0 bij hele grote N voorbeelden van voorspelbare sprongen max = a[0]; for (i=1;i<100000;i++) if (a[i] > max) max = a[i];

40 slide 40Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers dynamisch voorspellen van sprongen (vervolg) n sprongvoorspellingsbuffer of spronggeschiedenistabel u (Engels: branch-prediction buffer of branch history table BHT) u klein geheugen geïndexeerd via laag adresgedeelte van de spronginstructie u bevat 1 bit die aangeeft of sprong laatst genomen werd u enkel interessant indien sprongbeslissing langer duurt dan berekening van nieuwe PC u soort cache: sprong kan er ook niet in staan (cache miss)

41 slide 41Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers dynamisch voorspellen van sprongen (vervolg) n sprongvoorspellingsbuffer of spronggeschiedenistabel (vervolg) u het is enkel een hint: l fetching gebeurt afhankelijk van deze hint l hint kan fout zijn l hint kan bedoeld zijn voor een andere sprong (met zelfde laagste adres) u sprong wordt vaak 2 maal verkeerd voorspeld: eerste en laatste keer l vb: lus wordt 10 maal uitgevoerd l sprong wordt 2 keer verkeerd voorspeld, dus 80% juist

42 slide 42Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers dynamisch voorspellen van sprongen (vervolg) n betere methode: gebruikt 2 bits 2-bits voorspellingsschema u methode: hint moet 2 maal fout zijn voordat aangepast u fig 4.13 toont de 4 mogelijke toestanden u in ons vb met een lus die 10 maal uitgevoerd wordt: 90% juist is mogelijk met 2 bits u voorpellingsjuistheid is variabel (afhankelijk van het programma) l groter voor wetenschappelijke programma’s l kleiner voor integer programma’s

43 slide 43Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers dynamisch voorspellen van sprongen (vervolg) n sprongadres-buffer u (Engels: branch-target buffer of branch-target cache) u cache (zie fig. 4.22) l met voorspelde adres van de instructie na een sprong l die men kan doorzoeken gebruikmakend van een PC l bevat eventueel nog voorspellingsbits u wordt reeds gebruikt in de IF stage (zie fig. 4.23) l alle instructies (ook niet-sprongen) zoeken de tabel af l indien een ‘hit’ dan hebben we met een sprong te maken u variatie: bewaar 1 of enkele instructies ipv adres van instructie (zie volgende slide)

44 slide 44Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers dynamisch voorspellen van sprongen (vervolg) n sprongadres-buffer: variatie u bewaar 1 of meerdere instructies ipv adres van instructie l IF is niet meer nodig –eventueel kan men meer tijd spenderen bij het opzoeken –dit laat grotere buffers toe l bij onvoorwaardelijke sprong: sprong kan soms nog vervangen worden door de nieuwe instructie => men wint één cycle (zero-cycle unconditional branches) l kan in sommige gevallen ook voor conditional branches

45 slide 45Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers dynamisch voorspellen van sprongen (vervolg) n voorspelling van indirecte sprongen u indirecte sprong: adres moet opgehaald worden uit geheugen u meeste indirecte sprongen zijn het terugkeren uit procedures u dit kan ook met een branch-target buffer l maar voorspelling is veel moeilijker l procedures vanuit veel verschillende plaatsen opgeroepen u buffer die als een stapel werkt l indien de grootte van de stapel gelijk is aan de maximale procedure-oproep-diepte: perfecte voorspelling l vanaf 8 is het al heel goed

46 slide 46Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers belang van voorspellingen n 90 % juiste voorspellingen u processor van eind jaren 80 l pipeline met 4 stages l debiet van max 1 instructie per cyclus u 1 instructie op 5 is een spronginstructie u 1 slechte voorspelling elke 50 instructies l 50 volle cycli gevolgd door 3 stalls l debiet = 50 /(50 + 3) = 0.94, dus 94% van maximaal debiet n nu verandering van terminologie u men spreekt in % foutieve voorspellingen

47 slide 47Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers belang van voorspellingen n 10 % foutieve voorspellingen u huidige processor l pipeline met 8 stages –langere pipeline: meer stalls bij slechte voorspelling l debiet van max 4 instructies per cyclus –door 4 parallelle pipelines u 1 slechte voorspelling elke 50 instructies l 13 (=50/4) volle cycli gevolgd door 7 stalls l debiet = 50 /(13 + 7) = 2.5 –maximaal debiet is 4 –2.5 is 62% van maximaal debiet

48 slide 48Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers belang van voorspellingen n stel 5 % foutieve voorspellingen u huidige processor l pipeline met 8 stages l debiet van max 4 instructies per cyclus u 1 slechte voorspelling elke 100 instructies l 25 volle cycli gevolgd door 7 stalls l debiet = 100 /(25 + 7) = 3.1, of 78% van maximaal debiet u van 10% naar 5% gaan geeft een verbetering van 25% (62% => 78%)

49 slide 49Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers dynamisch voorspellen van sprongen (vervolg) n gecorreleerde voorspellers u (Engels: correlating predictors) u maken gebruik van informatie over andere sprongen u voorbeeld: if (aa==2) aa=0; if (bb==2) bb = 0; if (aa != bb) { … u twee soorten l inter-correlatie: correlatie tussen verschillende sprongen l auto-correlatie: correlatie tussen zelfde (eerdere) sprong

50 slide 50Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers meer informatie uitbuiten Inter-correlatie tussen sprongen B1: IF cond1 AND cond2 … B2: IF cond1 … veronderstel de 4 gevallen even waarschijnlijk waarschijnlijkheid om B2 onafhankelijk juist te voorspellen: 50% veronderstel resultaat B1 gekend op moment van B2 als cond1 AND cond2 waar (waarsch 1/4), voorspel cond1 waar 100 % succes als cond1 AND cond2 vals (waarsch 3/4), voorspel cond1 vals 66 % succes voorspelling B2 met succes rate van 1/4 + 3/4 * 2/3 = 75 % opmerking: permuteer B1 en B2, en het is minder goed... cond1cond2cond1 AND cond2 00110011 01010101 00010001

51 slide 51Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers for (i=0; i<100; i++) for (j=0;j<4;j++) : inhoud van lus 11101110 11101110 11101110 als laatste 3 richtingen 1 zijn, voorspel 0, anders voorspel 1 100 % succes meer informatie uitbuiten auto-correlatie

52 slide 52Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers van waar komen correlaties ? n Inter-correlaties u vertakkingen die afhangen van zelfde gegevens u vertakkingen die afhangen van gegevens waarvan de waarde afhangt van de gevolgde control flow: if (a>0) b=0; if (b==0) … n Auto-correlaties u tests op tellers (zie vorige slide) u tests op een suite van gegevens die een motief bevatten u motief van instructies l als volgende in een lus zit hebben we een motief a = modulo (x,256) ; b = modulo (y,256); c = modulo(z,5); u...

53 slide 53Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers voorspeller met 2 geschiedenis-niveaus n eerste geschiedenis-niveau u globale geschiedenis om inter-correlaties te detecteren l één schuifregister van N bits voor hele programma l bevat de genomen richtingen van laatste N vertakkingen u lokale geschiedenis om auto-correlaties te detecteren l één schuifregister van N bits voor elke vertakking l bevat N laatste genomen richtingen van deze vertakking n tweede geschiedenis-niveau u elke vertakking gebruikt meerdere 2-bit tellers, bewaard in een PHT ( pattern history table ) u gebruik de waarde van de lokale of globale geschiedenis om een teller te kiezen in de PHT

54 slide 54Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers globale geschiedenis: voorbeeld B0: FOR i = 1 TO 100... B1: IF cond1 AND cond2 … B2: IF cond1 … voorbeeld: globale geschiedenis met 4 bits historiek B0 B0 B0 B1 B2 1 1 0 0 1 1 0 1 0 (100 %) 1 (66 %) 2 tellers 2 bits om B2 te voorspellen

55 slide 55Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers lokale geschiedenis: voorbeeld voorbeeld: lokale geschiedenis met 3 bits 4 2-bits tellers om B2 te voorspellen B1: for (i=0; i<100; i++) B2: for (j=0;j<4;j++) historiek B2B2 1 1 0 1 0 1 1 (100 %) 0 1 11 (100 %) 1 1 10 (100 %) opmerking: auto-correlaties kunnen soms gedetecteerd worden met een globale geschiedenis (bv in dit voorbeeld zijn er geen vertakkingen in lus B2, dus globale geschiedenis met 4 bits werkt ook)

56 slide 56Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers lengte van geschiedenis n hoe langer de geschiedenis, hoe meer correlatie het bevat, maar: u opwarmtijd verhoogt (probleem bij veel context switchen) u grootte van PHT vergroot met lengte geschiedenis n globale geschiedenis u in praktijk niet groter dan 14-16 bits n lokale geschiedenis u in praktijk niet groter dan 10-12 bits

57 slide 57Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers is het doenbaar in hardware ? n het aantal 2-bits tellers groeit niet exponentieel, maar lineair met de lengte van de geschiedenis u de vertakkingen zijn niet random, de geschiedenis waarden ook niet n indien geschiedenis lang, geen PHT per vertakking maar één PHT gedeeld door alle vertakkingen u geeft problemen van interferentie, zie enkele slides verder

58 slide 58Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers voorspeller met globale geschiedenis globale geschiedenis instructieadres hash- functie één 2-bits teller per ingang PHT voorspelling 0/1 toevoeging aan geschiedenis om volgende vertakking te kunnen voorspellen Centaur C6+, UltraSparc-3, AMD K6...

59 slide 59Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n als lengte globale geschiedenis nul is: de PHT is en BHT n mogelijk om globale geschiedenis te gebruiken zonder instructieadres u indien globale geschiedenis lang is (>10 bits), zullen waarden van globale geschiedenis de vertakkingen differentiëren u iets minder goed dan gecombineerd met het instructieadres n de globale geschiedenis wordt speculatief aangepast, dit moet men kunnen teniet doen voorspeller met globale geschiedenis

60 slide 60Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers voorbeeld: voorspeller gshare B1: IF cond1 AND cond2 … B2: IF cond1 … PHT met 16 ingangen globale geschiedenis met 1 bit Adres van B2 = FFF7 richting van B1 = d 0111 d XOR d=0 d=1 66 % B2=1 100 % B2=0 4 bits laag adres van B2 globale historiek 1 bit exclusieve OF tussen instructieadres en globale geschiedenis

61 slide 61Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers Tabel met lokale geschiedenis instructieadres lokale geschiedenis voorspelling één of meerdere PHT met 2 N 2-bit tellers N bits Intel P6... voorspeller met lokale geschiedenis

62 slide 62Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers kwaliteit van de voorspellers n voorspeller met 2 niveaus verminderen het aantal foutieve voorspellingen met een factor 2 à 3 u 2 à 5 % foutieve voorspellingen op code algemeen doeleinde n globale geschiedenis u doeltreffend op niet-wetenschappelijke code n lokale geschiedenis u meer doeltreffend op number-crunching code

63 slide 63Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers Orde van grootte in 1999 n BTB u 512 ingangen u associatief per groepen van 4 ingangen n PHT u 32 K bits n lengte geschiedenis u globaal : 12 bits u lokaal : 10 bits n terugkeeradres-stapel (voor procedure oproepen) u diepte 8 / 32

64 slide 64Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers Probleem van interferenties n de grootte van de PHT is beperkt n 2 verschillende vertakkingen kunnen ge-hashed worden op dezelfde ingang van de PHT: interferentie n analoog probleem als met caches

65 slide 65Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers « Paradox » van de verjaardag n gegeven een klas met 23 leerlingen n wat is de waarschijnlijkheid dat 2 leerlingen hun verjaardag op dezelfde dag hebben ? n antwoord: 50 % wat heel groot is, is het aantal mogelijke koppels: koppels

66 slide 66Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers klein voorbeeld PHT met 256 ingangen neem 20 ingangen random herhaal dit meerdere keren : en nochtans is er plaats ! conflict gemiddeld één keer op 2

67 slide 67Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers reden van interferenties n start-interferenties u bij eerste keer (of keren) dat men een vertakking tegenkomt sinds laatste context switch u bij lange geschiedenis n capaciteit-interferenties u bij kleine PHT u bij grote applicatie u bij lange geschiedenis n conflict-interferenties u paradox van de verjaardag

68 slide 68Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers Simulaties trace-driven gcc globale geschiedenis 10 bits lokale geschiedenis 10 bits, budget 50 % geschiedenis / 50 % PHT

69 slide 69Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers gshare: lengte geschiedenis ? gcc optimale geschiedenis = compromis correlatie / interferenties aantal interferenties vermeerdert met lengte van geschiedenis

70 slide 70Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers hoe interferenties verminderen ? n vergroten van voorspeller l alsof er meer dagen zijn in een jaar u vergroten van PHT u bij lokale geschiedenis: aantal lokale geschiedenissen verhogen n lengte van geschiedenis verminderen l alsof er minder leerlingen zijn in de klas n beter gebruik maken van ruimte

71 slide 71Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers welke voorspeller kiezen ? n grote applicaties of kleine voorspeller u eenvoudige BHT is meest performant n soort correlatie die het nuttigst is: afhankelijk van applicatie u auto-correlatie: voorspeller met lokale geschiedenis u inter-correlatie: voorspeller met globale geschiedenis n niet alle applicaties zijn even groot u welke lengte geschiedenis kiezen ? n veel context switches ? u eenvoudige BHT is meest performant

72 slide 72Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers hybride voorspellers adres en geschiedenis voorspelling voorspeller 1 voorspeller 2 voorspeller N Méta-voorspeller wat waren de juiste voorspellingen ?

73 slide 73Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers XOR een interessante hybride : BHT/global BHTméta globale geschiedenis adres voorspelling BHT gsh bp mp bp mp bp mp bp mp bp mp bp mp bp als de voorspellingen beide juist zijn of beide verkeerd, verandert de meta- voorspeller niet gshare

74 slide 74Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers gshare vs BHT/global gcc gshare: 64k tellers BHT/global: méta : 16k tellers BHT : 16k tellers gshare: 32k tellers bij vaste grootte van PHT

75 slide 75Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers gshare vs BHT/global gcc gshare: N tellers BHT/global: méta : N/4 tellers BHT : N/4 tellers gshare: N/2 tellers bij vaste lengte geschiedenis (10 bits)

76 slide 76Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers BHT/global: waarom werkt het goed n BHT/global is minder gevoelig aan interferenties dan gshare u start- en capaciteits-interferenties verminderen door BHT u conflict-interferenties verminderen door meta-voorspeller n regelen van lengte geschiedenis gemakkelijker u men kan zich een langere geschiedenis veroorloven n beter gedrag bij context switchen, “warmt sneller op” u effect van BHT

77 slide 77Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers opmerkingen bij BHT/global n gshare is enkel nuttig op enkele vertakkingen u 90 % van de vertakkingen worden juist voorspeld met BHT n plaats gebruikt door meta-voorspeller wordt gecompenseerd door beter gebruik ruimte u paradoxe van de verjaardag n gshare wordt voornamelijk gebruikt bij temporele localiteit (kleine lussen)

78 slide 78Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers voorspeller van Alpha 21264 een hybride voorspeller lokaal/globaal voorspelling Totaal: 29 Kbits tabel met lokale geschiedenissen PHT lokaal Meta globale geschiedenis van 12 bits adres 1k 10 bits 1k *3 4k*2 PHT globaal

79 slide 79Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers voorspeller met stemming adresgeschiedenis f1f2f3 stemming adres bij gelijke groottes, zelfde percentages juiste voorspellingen dan bij hybride voorspeller BHT/global als een tabel een foutieve voorspelling maakt, maar na stemming is het een juiste voorspelling, dan wordt de tabel niet aangepast

80 slide 80Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers wat blijft er te doen ? n lengte van pipeline zal nog vergroten u nood aan betere sprongvoorspellers u belangrijkste probleem: interferenties n onderzoekslijnen u 2 niveau voorspellers enkel gebruiken voor die vertakkingen waar correlatie helpt u alleen « belangrijke » vertakkingen laten meespelen bij globale geschiedenis u hulp van compiler

81 slide 81Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers dynamisch voorspellen van sprongen: conclusie n beperkingen van sprong-voorspellingen: u juistheid van voorspelling l 80-95% volgens boek, is nu hoger –1 foutieve voorspelling per 50-100 instructies –zonder interferentie zou dat zijn: 1 foutieve voorsp per 200-300 instr. u kost bij verkeerde voorspelling l mogelijkheid tot verlaging van deze kost: instructies ophalen tegelijk van de 2 paden (genomen sprong en niet- genomen sprong): men begint hiermee momenteel –geheugen moet twee instructies tegelijk kunnen ophalen –caches moeten twee poorten hebben –alternatief: enkele instructies van twee paden bijhouden

82 slide 82Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers multiple issue n multiple issue = meerdere instructies tegelijk starten: de CPI kan kleiner dan 1 worden n dit kan op twee manieren u superscalaire processoren l met statische scheduling l met dynamische scheduling (gebaseerd op Tomasulo) u VLIW (very long instruction word): in elke instructie zit een vast aantal operaties

83 slide 83Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers multiple issue (vervolg) n superscalaire processoren u variabel aantal instructies worden tegelijk uitgevoerd (bv momenteel typisch tussen 2 en 8) u deze instructies moeten onafhankelijk zijn van elkaar en aan een aantal voorwaarden voldoen u dynamisch wordt bepaald hoeveel instructies tegelijk kunnen uitgevoerd worden (in tegenstelling met VLIW)

84 slide 84Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers multiple issue (vervolg) n superscalaire processoren met statische scheduling u vb van superscalaire DLX (fig. 4.26) l twee instructies tegelijk –de ene kan zijn: load, store, branch, of integer ALU op –de andere kan om het even welke FP operatie zijn l twee instructies vormen paren –gealigneerd op 64 bit –eerst integer op, daarna FP op l als tweede niet kan gestart worden samen met eerste –volgende klokcyclus wordt tweede heropgehaald samen met volgende

85 slide 85Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers multiple issue (vervolg) n superscalaire processoren met statische scheduling (vervolg) u dit voorbeeld is alleen interessant indien er meerdere FP units zijn die elk zoveel mogelijk gepipelined zijn l anders vormt de FP-unit toch een bottleneck u voordeel van integer en FP operaties te scheiden l ze gebruiken verschillende registers en verschillende functionele eenheden –er moet dus niet veel gerepliceerd worden –opdat FP-loads en FP-stores in parallel kunnen verlopen met FP-op., moet FP-register-file extra poorten hebben l dynamisch beslissen of 2 instructies te samen kunnen gestart worden: zelfde methode als structurele hazards

86 slide 86Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers multiple issue (vervolg) n superscalaire processoren met statische scheduling (vervolg) u lange hazard: een FP-load gevolgd door een FP-op die het resultaat van de load gebruikt l kan niet tegelijk gestart worden l ook niet volgende cyclus, maar pas daarna l drie instructies kunnen nu niet nuttig uitgevoerd worden u zelfde geldt voor branch hazards u belang van compilers die goed schedulen wordt belangrijker !! u toepassing op de ontrolde lus uit begin van het hoofdstuk l om maximaal processor te benutten moet men 5 x ontrollen (zie figuur 4.27) l gemiddelde duur van 1 lus: 2.4 (te vergelijken met 3.5 voor de ontrolde lus voor de gewone DLX pipeline)

87 slide 87Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers multiple issue (vervolg) n superscalaire processoren met dynamische scheduling u kan zowel met scorebord als met Tomasulo u twee instructies (of meer) in dezelfde klokcyclus gestart l pipeline van de issue-stage zodat die dubbel zo snel gaat l ontdubbelen van issue-stage, maar probleem met gelijk gebruik van sommige elementen –probleem vooral bij combinatie van FP-load en FP-op. –queues vervangen reservatiestations voor load en store –dynamisch wordt op adressen gecheckt (vb een load die volgt op een nog niet uitgevoerde store naar hetzelfde adres wordt tegengehouden) –term: decoupled architecture

88 slide 88Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers multiple issue (vervolg) n VLIW u in elke instructie zitten een vast aantal operaties l 1 per functionele eenheid l niet alle operaties zijn gevuld u het is de compiler die het parallellisme bepaalt wanneer de instructies opgebouwd worden (dus inherent statisch) u voordeel: geen complexe hardware nodig die dynamisch kan bepalen of instructies tegelijk mogen uitvoeren (voordeel wordt groot bij veel functionele eenheden) u vb. een VLIW zou kunnen bevatten: 2 int-op., 2 FP-op., 2 geh- op. en 1 sprong u compiler moet geavanceerde scheduling technieken gebruiken om instructies allemaal nuttig te vullen (bv trace scheduling, zie verder)

89 slide 89Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers multiple issue (vervolg) n VLIW (vervolg) u nadelen l code densiteit is lager (gaten die niet nuttig gevuld worden) l compilatie is voor één bepaalde architectuur l geen oude code kan nog uitgevoerd worden u voorbeeld van VLIW instructies: fig. 4.29 l gemiddelde duur van 1 lus: 2.5 l te vergelijken met 3.5 voor de ontrolde lus voor de gewone DLX pipeline, en 2.4 bij multiple issue met statische scheduling

90 slide 90Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers multiple issue: beperkingen n beperkingen van het aanwezige ILP in programma’s u gemiddeld aantal onafhankelijke instructies die nodig zijn = diepte van de pipeline * aantal functionele eenheden n zeer complexe hardware u dupliceren van de nodige elementen (lineaire kost) u de geheugenbandbreedte moet volgen l vanuit de registers –aantal poorten naar register-file vergroot erg –kloksnelheid kan erdoor verminderen l vanuit het hoofdgeheugen –geheugen volledig met twee poorten (erg duur) –geheugen in banken verdelen, in parallel aanspreken –twee maal per cyclus naar het geheugen gaan

91 slide 91Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers multiple issue: beperkingen (vervolg) n zeer complexe hardware (vervolg) u logica nodig om multiple issue te realiseren l een extreem: dynamisch gescheduled met scorebord of Tomasulo –vraagt zeer veel hardware l ander extreem: VLIW –vraagt weinig hardware u veel huidige processoren ergens in het midden l superscalaire processoren met statische scheduling l variaties in soorten instructies die samen kunnen, in aantal dat tegelijk uitgevoerd worden enz. u nieuwste processoren l superscalaire processoren met dynamische scheduling u DSP processoren: soms VLIW (zie later)

92 slide 92Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers multiple issue: beperkingen (vervolg) n beperkingen eigen aan VLIW u grootte van code l lussen wordt zwaar ontrold om voldoende ILP te hebben; dit vergroot al de code l de niet totaal gevulde instructies zijn verloren ruimten –oplossing: encoderen van deze instructies u lock-step uitvoering l stall van een functionele eenheid zorgt ervoor dat alles gestopt wordt (o.a. cache miss) u compatibiliteit van binaire code l voor elke nieuwe versie van de processor (om de 2 jaar ?) moet code gehercompileerd worden (of object-code migratie of emulatie)

93 slide 93Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers compilerondersteuning voor gebruik ILP n drie belangrijke technieken komen hier aan bod u het detecteren en verwijderen van afhankelijkheden u software pipelining u trace scheduling

94 slide 94Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers compilerondersteuning voor gebruik ILP n het detecteren en verwijderen van afhankelijkheden u nodig voor technieken zoals lusontrolling u sterk bemoeilijkt door gebruik van pointers u probleem is in het algemeen NP-compleet u in de praktijk zijn er een aantal veel voorkomende gevallen die gemakkelijker opgelost kunnen worden n software pipelining u herorganiseren van lussen zodat in elke nieuwe versie van de lus instructies zitten uit verschillende lussen van oorspronkelijke versie (zie figuur 4.30) u zie voorbeeld op volgende slide l methode: pak een lus, ontrol die een beetje, en combineer instructies uit verschillende iteraties

95 slide 95Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers compilerondersteuning voor gebruik ILP (vervolg) u software pipelining: oorspronkelijke lus L:LDF0, 0(R1) ADDDF4, F0, F2 SD0(R1), F4 SUBIR1, R1, 8 BNEZR1, L u ontrolling van deze lusnieuwe lus iter 1LDF0, 0(R1) ADDDF4, F0, F2 SD0(R1), F4 L:SD0(R1), F4 iter 2LDF0, 0(R1)ADDDF4, F0, F2 ADDDF4, F0, F2 LDF0, -16(R1) SD0(R1), F4SUBIR1, R1, 8 iter 3 LDF0, 0(R1) BNEZR1, L ADDDF4, F0, F2 SD0(R1), F4

96 slide 96Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers compilerondersteuning voor gebruik ILP (vervolg) u software pipelining (vervolg) l nog nodig: opbouw en einde lus moet aangepast worden l voordeel van software pipelining tov lusontrolling –hoeveelheid code vergroot niet te erg l verschil tussen software pipelining en lusontrolling –doel van lusontrolling –wegwerken van de lusoverhead –beter kunnen schedulen van instructies –doel van software pipelining –eenmaal pipeline opgezet, processor 100% bezig houden

97 slide 97Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers compilerondersteuning voor gebruik ILP (vervolg) n trace scheduling u gaat verder dan lusontrolling u methode l voorspelt hoe een sprong (of meerdere elkaar opvolgende sprongen) zal genomen worden l verplaatst dan code van na de sprong naar voren zodat een groter stuk code zonder sprong ontstaat die dan beter kan gescheduled worden l als misvoorspeld: verkeerde moet teniet gedaan worden l verplaatste code mag geen exception veroorzaken u 2 stappen: trace selection en trace compaction u verplaatsen van code is speculatief: het voert sneller uit alleen indien men de sprong goed gekozen heeft

98 slide 98Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers n meerdere methodes met hardware ondersteuning u uitbreiding van instructieset met conditionele instructies u speculatie l statische speculatie (compilerspeculatie met hardware hulp) l dynamische speculatie (hardware gebaseerde speculatie) n conditionele instructies u Engelse termen: conditional or predicated instructions u idee: l instructie bevat een conditie die ge-evalueerd wordt samen met de uitvoering van de instructie l als de conditie onwaar is wordt de instructie een no-op u meest gebruikte vorm: conditionele move u gebruikt bij heel eenvoudige if-then-code hardwareondersteuning voor gebruik ILP

99 slide 99Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers hardwareondersteuning voor gebruik ILP (vervolg) n conditionele instructies (vervolg) u vb C-codeif (A=0) { S=T; } ass.-codeBNEZR1, L MOVR2, R3 L: nieuwe codeCMOVZR2, R3, R1 (indien R1 0 is dan moet de move uitgevoerd worden) u wordt gemakkelijk gebruikt voor functies als absolute waarde u dubbel voordeel: l minder sprongen (en alle geassocieerde vertragingen) l stukken code zonder sprongen zijn langer

100 slide 100Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers hardwareondersteuning voor gebruik ILP (vervolg) n conditionele instructies (vervolg) u wordt gebruikt in combinatie met trace speculation om code te verplaatsen naar voren u beperkingen l ge-annuleerde conditionele instructies nemen toch tijd in (niet van belang als dit een ongebruikt slot gebruikt in een superscalaire processor) l gelimiteerd gebruik als then-gedeelte veel instructies bevat l gelimiteerd gebruik als if-test een AND of OR bevat l dit soort instructies kan de oorzaak zijn van een tragere klok (denk aan RISC-CISC discussie)

101 slide 101Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers hardwareondersteuning voor gebruik ILP (vervolg) n compiler-speculatie met hardwareondersteuning u beperkingen van compilergebaseerde speculatie l teniet doen van instructies door misvoorspelde sprong l enkel instructies die geen uitzondering kunnen veroorzaken mogen verplaatst worden u 3 methoden van hardwareondersteuning voor speculatie l samenwerking tussen hardware en OS om exceptions te negeren l gebruik van status-bits bij resultaatregisters bij uitzondering l hardware buffers resultaten totdat zeker is dat een instructie niet speculatief was u deze 3 methoden worden nu één voor één besproken

102 slide 102Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers hardwareondersteuning voor gebruik ILP (vervolg) u samenwerking tussen hardware en OS om uitzonderingen te negeren l speculatieve instructies zijn speciaal gemarkeerd –alle uitzonderingen die een programma niet stoppen (page fault, interrupts,...) worden gewoon uitgevoerd –bij andere uitzondering stopt het programma niet maar is het resultaat van de speculatieve instructie waarschijnlijk verkeerd –indien de speculatieve instructie niet moest uitgevoerd worden: geen probleem (resultaat toch niet gebruikt) –ander geval: programma werkt verder met verkeerd resultaat

103 slide 103Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers hardwareondersteuning voor gebruik ILP (vervolg) u samenwerking tussen hardware en OS om uitzonderingen te negeren (vervolg) l in zulk een schema kan aan de compiler ook gevraagd worden om een programma te compileren zonder speculatie, waar de uitzonderingen wel voorkomen l herbenoeming is hier nu vaak een beperking (kan enkel voor registers, en alleen als er voldoende registers zijn)

104 slide 104Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers hardwareondersteuning voor gebruik ILP (vervolg) u gebruik van status-bits bij resultaatregisters bij uitzondering l benaming: vergif-bit (poison-bit) l methode –elk register heeft een vergif bit –wanneer een register een resultaat krijgt van een speculatieve instructie die een uitzondering veroorzaakte wordt de vergif-bit gezet –als een register met vergif-bit gezet gebruikt wordt, dan wordt een uitzondering gegenereerd l uitzondering treedt weldegelijk op, maar iets later

105 slide 105Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers hardwareondersteuning voor gebruik ILP (vervolg) u hardware buffers speculatieve resultaten l belangrijkste nadeel van vorige twee methoden: herbenoeming is vaak een beperking (kan enkel voor registers, en alleen bij voldoende registers) l oplossing: bufferen door hardware van resultaat van speculatieve instructies (lijkt op Tomasulo) l Engelse term: boosting

106 slide 106Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers hardwareondersteuning voor gebruik ILP (vervolg) u hardware buffers speculatieve resultaten (vervolg) l methode –een boosted instructie wordt speculatief uitgevoerd, gebaseerd op een (nog niet uitgevoerde) sprong –het resultaat wordt gebufferd, en eventueel gebruikt door andere boosted instructies –na uitvoering sprong –of boosted instructies worden ‘commit’ –of boosted instructies worden genegeerd

107 slide 107Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers hardwareondersteuning voor gebruik ILP (vervolg) n hardware-gebaseerde speculatie u combinatie van 3 methodes l dynamische sprong-voorspelling l speculatie (om instructies uit te voeren voordat men de uitkomst van een sprong kent) l dynamisch schedulen van instructies (opdat instructies elkaar mogen ‘voorsteken’) u in essentie is dit een data-flow methode: operaties mogen uitvoeren van zodra hun operanden gekend zijn

108 slide 108Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers hardwareondersteuning voor gebruik ILP (vervolg) n hardware-gebaseerde speculatie (vervolg) u voordelen tov compilergebaseerde speculatie l compilers hebben problemen om afhankelijkheden te ontdekken bij gebruik van pointers –hardware-gebaseerde sprongvoorspelling is voor sommige toepassingen veel beter (integer-toepassingen) l behoudt een precies uitzonderings-model l vraagt geen extra code van compiler om speculatie te-niet te doen bij verkeerde voorspelling l oude, of niet speciaal hiervoor gecompileerde code, kan gebruik maken van deze techniek u nadeel: complex, vraagt veel extra hardware

109 slide 109Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers hardwareondersteuning voor gebruik ILP (vervolg) n hardware-gebaseerde speculatie (vervolg) u methode die hier besproken wordt: uitbreiding van Tomasulo u basisgedachte l splitsen van doorgeven van resultaten naar andere instructie met het echt beëindigen van de instructie l wachten tot een instructie commit voordat resultaten echt weggeschreven worden u gevolg l uitvoeren van instructies mag uit volgorde l committen van instructies moet wel in juiste volgorde u nodige hardware: reorder buffer (zie volgende slide)

110 slide 110Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers hardwareondersteuning voor gebruik ILP (vervolg) n hardware-gebaseerde speculatie (vervolg) u reorder buffer (vervolg) l buffer die resultaten bijhoudt tot commit l zijn extra virtuele registers (operanden hier uitgehaald) l reorder buffer en vroegere store buffer hebben een gelijkaardige functie; ze worden nu bij elkaar gevoegd (samen met load buffer) l elke ingang heeft drie velden –type van instructie (sprong, store, of ALU op.) –bestemmingsveld (registernummer) –waarde u reservatie stations blijven bestaan u organisatie: zie figuur 4.34

111 slide 111Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers hardwareondersteuning voor gebruik ILP (vervolg) n hardware-gebaseerde speculatie (vervolg) u 4 stappen in de uitvoering l issue –kan gebeuren als er een vrije plaats is in het goede reservatiestation en in de reorder buffer –het nummer in de reorder buffer wordt doorgegeven aan het reservatie station (voor het resultaat) l execute –als beide operanden van een instructie in een reservatie tabel aanwezig zijn kan de instructie uitgevoerd worden l write result –als het resultaat aanwezig is wordt het op de CDB gezet l commit (zie volgende slide)

112 slide 112Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers hardwareondersteuning voor gebruik ILP (vervolg) n hardware-gebaseerde speculatie (vervolg) u 4 stappen in de uitvoering (vervolg) l commit –als hoofd van reorder buffer een instructie is waar een resultaat aanwezig is, wordt deze instructie ge-commit –resultaat gaat naar register –ingang in reorder buffer wordt vrijgegeven –als hoofd van reorder buffer misvoorspelde sprong is, dan wordt de hele reorder buffer leeggemaakt en begint men uit te voeren vanaf het juiste adres –als hoofd van reorder buffer een juist voorspelde sprong is, dan niets

113 slide 113Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers hardwareondersteuning voor gebruik ILP (vervolg) n hardware-gebaseerde speculatie (vervolg) u behandelen van exceptions l wanneer een instructie een exception veroorzaakt wordt dit bijgehouden in de reorder buffer l als hoofd van reorder buffer een instructie is die een uitzondering veroorzaakte: voer de uitzondering uit l dit geeft preciese exceptions u voorbeelden: fig. 4.35 en fig. 4.36

114 slide 114Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers haalbare resultaten n mogelijke kenmerken van de processoren van de jaren 2000 - 2005 u tot 64 instructies die tegelijk gestart worden (zover zijn we nog niet) u sprong voorspeller met 1K ingangen en een return voorspeller met 16 ingangen (we zijn al verder) u register herbenoeming met 64 extra integer en 64 extra FP registers (ja, dit doen we al) u fig. 4.47 geeft mogelijk parallellisme aan bij variërend window op programma (bemerk verschil tussen FP programma's en integer programma's) n fig. 4.60: “huidige” mogelijkheden (boek is van 1996)


Download ppt "Slide 1Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers Geavanceerde pipelining en parallellisme op het niveau van instructies (ILP:"

Verwante presentaties


Ads door Google