指令管線化

优缺点

并非在所有情况下流水线技术都起作用。可能有一些缺点。如果一条指令流水线能够在每一个时脉周期接纳一条新的指令，被称为完整流水线（fully pipelined）。因流水线中的指令需要延迟处理而要等待数个时脉周期，被称为非完整流水线。
当一名程序员（或者组合者/编译者）编写组合代码（或者汇编码）时，他们会假定每个指令是循序运行的。而这个假设会使流水线无效。当此现象发生后程序会表现的不正常，而此现象就是危害。不过当前有提供几种技术来解决这些危害像是转发与延迟等。

汽泡

指令运行中产生一个“打嗝”（hiccup），在流水线中生成一个没有实效的气泡。
如右图，在编号为2的时脉周期中，紫色指令的读取被延迟，并且在编号为3的时脉周期中解码层也产生了一个气泡。所有在紫色指令之后的指令都被延迟运行，而在其之前已经运行了的指令则不受影响。
由于气泡使指令运行延迟了一个时脉周期，完成全部4条指令的运行共需要8个时脉周期。
而气泡处对指令的读取、解码、运行与写回都没有实质影响。这可以使用nop代码来完成。

示例一

一个典型的加法指令可能会写成像ADD A, B, C，而中央处理器（CPU）会将存储器（Memory）内A位置与B位置的数值相加后放到C位置。在流水线处理器内，流水线控制器会将这个指令分拆成一连串微指令：
LOAD R1, A
LOAD R2, B 
ADD R3, R1, R2
STORE R3, C
LOAD next instruction
R1, R2和R3是CPU内的寄存器（register是CPU里面能够快速访问的暂存存储器）。主存储器内标注为A位置和B位置之存储单元中的数值被加载（或称复制）到寄存器R1和R2中，然后送到加法器中相加，结果输出到寄存器R3中，R3中的数值再被存储到主存储器内标注为C位置的存储单元。
而且在非流水线的例子，开始驱动加法动作到完成的时间是不变的。
在这个示例中的流水线分为3层：加载，运行，存储。每一步被称为流水线层（或称流水线阶段，pipeline stages）。
在非流水线处理器中，同一时间只允许一个层运作，所以必须等待指令运行完毕才能开始运行下一条指令。在流水线处理器中，所有的层能在同一时间处理不同的指令。当一条指令在运行层，另外一条指令在解码层，第三条指令在读取层。
流水线没有减少运行指令所花费的时间；它增加了在同一时间被处理的指令数量，并且减少了完成指令之间的延迟。随着处理器中流水线层的数量增加，能在同一时间被处理的指令数量也相应增加，也减少了指令等待处理所产生的延迟。现在生产的微处理器至少有2层流水线。（Atmel AVR与PIC微控制器都有2层流水线）Intel Pentium 4处理器有20层流水线。