Pijplijnen verbeteren de CPU-prestaties door de uitvoering van meerdere instructies te overlappen. In plaats van te wachten tot de ene instructie volledig is voltooid voordat de volgende wordt gestart, verdeelt een pijplijn de uitvoering van instructies in kleinere fasen. Verschillende instructies kunnen zich tegelijkertijd in verschillende stadia van uitvoering bevinden. Dit is analoog aan een lopende band in een fabriek; elke fase voert een specifieke taak uit op de instructie, en de instructies doorlopen gelijktijdig de fasen.
Hier volgt een overzicht van waarom dit tot prestatieverbeteringen leidt:
* Verhoogde instructiedoorvoer: Het belangrijkste voordeel is de mogelijkheid om elke klokcyclus een nieuwe instructie te geven, zelfs als elke instructie meerdere klokcycli in beslag neemt. Dit verhoogt het aantal verwerkte instructies per tijdseenheid aanzienlijk.
* Verbeterd gebruik van CPU-bronnen: De pijplijn houdt verschillende componenten van de CPU bezig. Terwijl één instructie zijn rekenkundige bewerking in de ALU uitvoert, kan een andere instructie de volgende instructie uit het geheugen ophalen, en kan weer een andere het resultaat naar een register schrijven. Dit maximaliseert het gebruik van hulpbronnen.
* Verkorte gemiddelde uitvoeringstijd van instructies (hoewel geen individuele instructietijd): Hoewel de tijd voor het uitvoeren van een *enkele* instructie grotendeels hetzelfde kan blijven (of zelfs iets kan toenemen vanwege de overhead van pijplijnfasen), wordt de *gemiddelde* tijd voor het uitvoeren van een *reeks* instructies aanzienlijk verkort vanwege de overlappende uitvoering.
pijplijnen zijn echter niet zonder beperkingen:
* Pijpleidinggevaren: Dit zijn situaties die de vlotte stroom van instructies door de pijplijn kunnen verstoren. De belangrijkste soorten zijn:
* Datagevaren: Voor een instructie zijn gegevens nodig die nog niet door een eerdere instructie zijn geproduceerd.
* Beheers gevaren: Een vertakkingsinstructie verandert de stroom van het programma, waardoor sommige instructies in de pijplijn irrelevant worden.
* Structurele gevaren: De hardware mist de middelen om meerdere instructies gelijktijdig in de pijplijn uit te voeren (bijvoorbeeld slechts één geheugentoegang tegelijk).
Deze gevaren vereisen technieken zoals forwarding, stalling (bubbels invoegen) en branch forecasting om hun negatieve impact op de prestaties te verzachten. Ondanks deze uitdagingen wegen de voordelen van pipelining in termen van verhoogde doorvoer ruimschoots op tegen de kosten van de meeste moderne CPU's. Er worden voortdurend geavanceerde technieken ontwikkeld om de prestaties van pijpleidingen verder te optimaliseren en effectiever met gevaren om te gaan. |