1/35
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
Wat is pipelining?
Een techniek waarbij een instructie in verschillende overlappende stappen wordt opgesplitst en uitgevoerd in een pijplijnstructuur, wat resulteert in verhoogde doorvoer en efficiënter gebruik van hardwarebronnen.
Waarom is pipelining belangrijk?
Pipelining verhoogt de prestaties van een processor door meerdere instructies tegelijkertijd te verwerken, wat de totale uitvoeringstijd per programma verkort en de klokcyclustijd verlaagt.
Doel van pipelining
Maximaliseren van de doorvoer door zoveel mogelijk instructies tegelijk in uitvoering te hebben, zonder dat dit de correcte uitvoering beïnvloedt.
Stages in een typische 5-staps pipeline (RISC-V)
Instruction Fetch (IF), Instruction Decode/Register Fetch (ID), Execution/Effective Address Calculation (EX), Memory Access (MEM), Write-Back (WB).
Pipeline throughput
Het aantal instructies dat per tijdseenheid wordt voltooid. Door pipelining kan de throughput significant toenemen, afhankelijk van het aantal pipeline-stages.
Pipeline latency
De tijd die het duurt om één enkele instructie volledig uit te voeren, van begin tot eind, inclusief alle pipeline-stages.
Structurele hazard
Treedt op wanneer hardwarebronnen, zoals een geheugen of een ALU, tegelijkertijd nodig zijn door meerdere pipeline-stages, wat kan leiden tot stalls.
Voorbeeld van structurele hazard
Twee instructies proberen tegelijkertijd toegang te krijgen tot dezelfde geheugenmodule in een processor met één lees-/schrijfpoort.
Data hazard
Een situatie waarin een instructie afhankelijk is van de uitvoer van een vorige instructie die nog niet voltooid is.
Types van data hazards
Read-after-Write (RAW), Write-after-Write (WAW), Write-after-Read (WAR).
Control hazard
Ontstaat bij vertakkingsinstructies waarbij de uitkomst (branch taken/not taken) onbekend is totdat de branch-evaluatie is voltooid.
Voorbeeld van een control hazard
Een "beq" (branch equal) instructie waarbij de volgende instructie niet zeker is totdat de branch-conditie is geëvalueerd.
Oplossingen voor control hazards
Gebruik van branch delay slots, static branch prediction, dynamic branch prediction, en sneller branch target berekenen.
Wat zijn branch delay slots?
Lege instructies in de pipeline die ontstaan na een branch-instructie, meestal gevuld met nuttige instructies om de impact van de branch delay te minimaliseren.
Static branch prediction
Een vooraf bepaalde voorspelling (bijvoorbeeld "always taken" of "always not taken") die eenvoudig te implementeren is, maar niet altijd accuraat.
Dynamic branch prediction
Voorspellingen gebaseerd op runtime-gedrag met behulp van hardware zoals branch history tables, om adaptief te reageren op vertakkingspatronen.
1-bit branch predictor
Een eenvoudig predictiemechanisme waarbij de voorspelling schakelt tussen 'taken' en 'not taken' na elke misvoorspelling.
2-bit branch predictor
Een robuustere voorspeller die alleen verandert na twee opeenvolgende misvoorspellingen, wat het effect van schommelingen minimaliseert.
Branch target buffer (BTB)
Een hardwaretabel die het doeladres en de uitkomst van eerdere branches opslaat, waardoor vertakkingslatentie wordt verminderd.
Forwarding (data forwarding)
Een techniek waarbij gegevens direct worden doorgestuurd van een uitvoerfase naar een eerdere uitvoerfase om data hazards te vermijden.
Pipeline interlocking
Een hardwaremechanisme dat de uitvoering van een instructie uitstelt totdat alle benodigde bronnen beschikbaar zijn om stalls te voorkomen.
Wat is speculative execution?
Het speculatief uitvoeren van instructies op basis van voorspellingen, waarbij onjuiste resultaten worden weggegooid indien de voorspelling verkeerd was.
Voordelen van pipelining
Hogere doorvoer, 2) Lagere gemiddelde CPI, 3) Verbeterde hardware-efficiëntie, 4) Mogelijkheid tot complexere architecturen.
Nadelen van pipelining
Grotere ontwerpcomplexiteit, 2) Gevoeligheid voor stalls en hazards, 3) Verhoogd energieverbruik, 4) Moeilijkere foutdiagnose.
Superscalair
Een architectuur waarin meerdere instructies per klokcyclus kunnen worden uitgevoerd door gebruik te maken van meerdere execution units.
Dynamic multiple issue
De hardware beslist tijdens runtime welke instructies parallel kunnen worden uitgevoerd op basis van beschikbaarheid en afhankelijkheden.
Out-of-order execution
Een techniek waarbij instructies worden uitgevoerd zodra hun operanden beschikbaar zijn, ongeacht de volgorde in het programma.
Wat is een reorder buffer (ROB)?
Een buffer die resultaten opslaat totdat ze veilig kunnen worden gecommit, wat precisie en volgorde behoudt in out-of-order execution.
Wat is pipeline stall?
Een onderbreking in de normale doorvoer van de pipeline door een hazard, waarbij de uitvoering tijdelijk wordt gepauzeerd.
Formule voor CPI in een pipeline
CPI = Ideal CPI + Pipeline stall cycles per instructie.
Formule voor pipeline speedup
Speedup = (Aantal pipeline-stages) / (1 + Stalls per instructie).
Precise exceptions
Exceptions waarbij de toestand van de processor exact overeenkomt met de instructievolgorde, essentieel voor foutcorrectie en debugging.
Voorbeeld van een precise exception
Een division-by-zero fout waarbij de pipeline wordt geleegd en de fout correct wordt verwerkt voordat andere instructies verdergaan.
Impact van cache op pipelining
Een efficiënte cache vermindert memory latency, wat stalls in de pipeline minimaliseert en de throughput verhoogt.
Instruction-level parallelism (ILP)
Het potentieel binnen een programma om instructies gelijktijdig uit te voeren, wat wordt benut door technieken zoals pipelining en superscalair ontwerp.
Pipeline bubble
Een lege plaats in de pipeline veroorzaakt door een stall of hazard, wat de prestaties verlaagt.