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

Slides:



Advertisements
Verwante presentaties
Slide 1Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers Digitale signaalverwerking en DSP processoren.
Advertisements

1 De basisbegrippen kracht en snelheid
Componenten voor een werkende computer
Agenda VoIP inleiding VoIP techniek Risico’s VoIP Oplossing risico’s VoIP Voordelen VoIP Demo VoIP software.
Hoofdstukken 15 en 16.  als spelers meer keuze hebben kunnen nieuwe verhalen ontstaan. Hoe kan ik meer keuzes brengen?  Conflicten leiden tot meerdere.
Processor & Toetsenbord
Slide 1Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers Geheugen-hiërarchie.
Jerry van den Heuvel Pim van der Lee
Structuur en organisatie van computersystemen: deel 2
BESTURINGS SYSTEMEN Vincent Naessens.
Overzicht tweede college SVR
Computerarchitectuur
‘Inleiding programmeren in Java’ SWI cursus: ‘Inleiding programmeren in Java’ 4e college Woe 19 januari 2000 drs. F. de Vries.
Hoofdstuk 10.2 Rekenmachine-casus.
Steven Van Acker. Transmeta Crusoe - Steven Van Acker - Mei Overzicht  Inleiding  Het Idee  De Technologie  CodeMorphing  LongRun  NorthBridge.
Tussenpresentatie Modelleren C Random Seeds Sanne Ernst Jarno van Roosmalen.
Parallelle systemen.
Slide 1Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers Case studies De Intel 80x86 reeks voor PC IBM SP2 parallel computer.
Pipelining: basisprincipes
Slide 1Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers Instructie set: principes.
Hoofdstuk 6: Controle structuren
1 SOCS Hoofdstuk 1 Programmeertaal C. 2 Kenmerken van C Hogere programmeertaal  Grote verzameling types, strenge type controle  Zelf nieuwe types definiëren.
Meet- en Regeltechniek Les 2: De regelkring
Informatie vaardigheden
Twee-factor Variantie-analyse
Informatie Communicatie Software Web en internet in het onderwijs.
5JJ20: Computerarchitectuur 2M200: Inleiding Computersystemen
Dynamic Systems: Exploring the Paradigms of Change Part II Hoofdstuk 3 uit: A dynamic Systems Appoach to the development of Cognition and Action (Thelen.
PROBLEMEN OPLOSSEN.
Administratieve Organisatie Informatieverzorging
Hoofdstuk 9 Projectuitvoering Controle en Correctie
Visual Basic .NET voor studenten
Voorspellende analyse
Hoofdstuk 4 Een onderzoeksontwerp bepalen: het belang en de inbreng van onderzoeksfilosofieën, -methoden en -technieken Methoden en technieken van.
Inleiding Kennistechnologie §Hoofdstuk 1: Introductie §Hoofdstuk 2: Kennissystemen in context §Hoofdstuk 3: Kennisacquisitie.
Slide 1Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers De Intel 80x86 reeks voor PC.
Lokale zoekmethoden Goed in de praktijk:
Webklas Informatica Docent: Ben Bruidegom.
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 4.
Processor & Toetsenbord
OO Analyse in de praktijk OO Analyse in de praktijk V Enkele Design Patterns.
Scheduling: oefening 1 JobT mono = T cpu + T i/o T arrival level of multiprogramming CPU idle 1 job25% 2 jobs4% 3 jobs0% 1.Bereken de gemiddelde.
Voorlichting fysieke belasting
Programma Structuur Diagrammen (PSD’s)
Dyslexie en het geheugen: De ontbrekende schakel?
Niveautoetsen.
Pag. Software Engineering: SCRUM 2 Schedule Generator Zjef Van de Poel, Alexander De Cock, Adam Cooman, Matthias Caenepeel
HOGESCHOOL ROTTERDAM / CMI Computersystemen 2 (TIRCCMS02 - Operating systems)
Inhoud Analyse van sequentiële netwerken Sequentiële bouwblokken
3 havo Klimaatverandering § 2
DEREVERBERATION Jef Callebaut & Stijn Sillen. INHOUD Wat is dereverberation? Toepassingen Ideale oplossing Oplossingsmethoden To Do Besluit Vragen.
Systematisch ontwerp van kosteffectieve sprongvoorspelling Veerle Desmet Promotor: prof. Koen De Bosschere Vakgroep ELIS Doctoraatsverdediging 26 juni.
Databases Hoofdstuk 25 Hoofdstuk 24.
Inleiding Computersystemen
De Transmeta Crusoe processor Een VLIW CPU met x86 compatibiliteit.
Code compressie in Embedded Systems Onno Kievit ET4074 Kwantitatieve aspecten van computer architectuur.
Hoofdstuk 3 terugblik.
Minor Project- en Programmamanagement
Hoorcollege 4 Bespreking casus 2 (supermarkt).
Gedistribueerde Systemen Inleiding. Grand Challenge Problems Bron: NSF Grand Challenges final reportNSF Grand Challenges final report.
E. v. Kooten / L. El Hannouchi 11 februari 2011 /© Bedrijfseconomie voor de horeca 4.1 t/m 4.4 Bedrijfseconomie Horeca deel 1 Hoofdstuk 4 Constante en.
Hoe zet je leerlingen aan het werk?
Winkelen 3.0 Hoofdstuk 5 Wat doen leidinggevenden?
Programmeren.
Grip & Controle op digitalisering
Programmeren woensdag 4 oktober 2017.
Les 9: Gepijplijnde micro-architecturen
Hoofdstuk 4 Kwantitatieve dataverzamelingsmethoden Nel Verhoeven
Transcript van de presentatie:

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

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

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

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)

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, F SD0(R1), F46 SUBIR1, R1, 87 BNEZR1, L8+9

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

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, F SD0(R1), F46 LDF0, -8(R1)7+8 ADDDF4, F0, F SD-8(R1), F412 LDF0, -16(R1)13+14 ADDDF4, F0, F SD-16(R1), F418 LDF0, -24(R1)19+20 ADDDF4, F0, F SD-24(R1), F424 SUBIR1, R1, 3225 BNEZR1, L26+27 lusoverhead werd 3 maal weggewerkt, gebruikt meer registers gemiddeld: 6.8 klokcycli per lus

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)

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)

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)

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

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)

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)

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)

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)

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)

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

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)

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

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)

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)

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)

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)

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)

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)

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

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)

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)

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)

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)

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

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

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

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)

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

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");

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)

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)

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];

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)

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

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

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)

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

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

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

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

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%)

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

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 cond

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

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

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

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

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 B2B (100 %) (100 %) (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)

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 bits n lokale geschiedenis u in praktijk niet groter dan bits

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 ?

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

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

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)

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

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)

slide 78Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers voorspeller van Alpha 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

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

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

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 instructies –zonder interferentie zou dat zijn: 1 foutieve voorsp per 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

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

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)

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

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

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)

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

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)

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

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

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)

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)

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

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

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

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

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

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

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

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)

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

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

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)

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

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

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

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

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

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)

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

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)

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

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 en fig. 4.36

slide 114Structuur en Organisatie van Computersystemen: deel 2Yolande Berbers haalbare resultaten n mogelijke kenmerken van de processoren van de jaren 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 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)