Instruction pipelining is een techniek die gebruikt wordt in het ontwerp van moderne microprocessoren, microcontrollers en CPU's om hun instructiedoorvoer te verhogen (het aantal instructies dat in een tijdseenheid kan worden uitgevoerd).
Het belangrijkste idee is om de verwerking van een CPU-instructie, zoals gedefinieerd door de instructie-microcode, op te splitsen in een reeks onafhankelijke stappen van microoperaties (ook wel "micro-instructies", "micro-op" of "µop" genoemd), met opslag aan het einde van elke stap. Hierdoor kan de besturingslogica van de CPU's instructies verwerken met de verwerkingssnelheid van de langzaamste stap, wat veel sneller is dan de tijd die nodig is om de instructie als een enkele stap te verwerken.
De term pijpleiding verwijst naar het feit dat elke stap een enkele micro-instructie draagt (zoals een waterdruppel), en elke stap is gekoppeld aan een andere stap (analogie; vergelijkbaar met waterleidingen).
De meeste moderne CPU's worden aangedreven door een klok. De CPU bestaat intern uit logica en geheugen (flipflops). Wanneer het kloksignaal aankomt, slaan de flipflops hun nieuwe waarde op, waarna de logica een periode nodig heeft om de flipflops nieuwe waarden te decoderen. Dan komt de volgende klokpuls aan en de flipflops slaan een andere waarde op, enzovoort. Door de logica in kleinere stukjes te breken en flip flops tussen stukjes logica te plaatsen, wordt de tijd die de logica nodig heeft (om waarden te decoderen tot het genereren van geldige uitgangen afhankelijk van deze waarden) gereduceerd. Op deze manier kan de klokperiode worden verkort. Zo wordt
de RISC-pijpleiding bijvoorbeeld als volgt in vijf fasen verdeeld met een set flipflops tussen elke fase:
- Instructie halen
- Instructie decoderen en registreren halen
- Uitvoeren
- Toegang tot het geheugen
- Registreren schrijf terug
Processoren met pipelining bestaan inwendig uit fasen (modules) die semi-onafhankelijk kunnen werken aan afzonderlijke micro-instructies. Elke fase is door middel van flipflops verbonden met de volgende fase (als een "ketting") zodat de uitgang van de fase een ingang is naar een andere fase totdat het werk van de verwerkingsinstructies is gedaan. Een dergelijke organisatie van de interne modules van de processor vermindert de totale verwerkingstijd van de instructie.
Een niet-pipeline architectuur is niet zo efficiënt omdat sommige CPU-modules inactief zijn terwijl een andere module actief is tijdens de instructiecyclus. Pipelining verwijdert de inactieve tijd in een pipelined CPU niet volledig, maar het parallel laten werken van CPU-modules verhoogt de instructiedoorvoer.
Een instructiepijplijn zou volledig gepijpt zijn als deze elke klokcyclus een nieuwe instructie kan accepteren. Een pijpleiding die niet volledig gepijpt is, heeft wachtcycli die de voortgang van de pijpleiding vertragen.



