目录
引言
作为电路设计的一种技术,流水线(pipeline) 采用沿着数据通路引入流水线锁存器的方法来减小 有效关键路径(Effective Critical Path),从而提高时钟速度或采样速度,或者在同样的速度下降低功耗。与流水线经常作比较的另一种高速度或低功耗技术是并行处理。当一组互不相关的计算能够在一个流水线系统中按交替方式计算时,则它们也能够利用复制硬件的方式按并行处理的模式计算。而流水线其实是 重定时(retiming) 技术的一种特殊情况,在此不再展开。
首先,一个架构的速度(或时钟周期)由任意两个锁存器间、或一个输入与一个锁存器间、或一个锁存器与一个输出间、或输入与输出间路径中最长的组合逻辑路径限定。其次,这个最长的路径或 “关键路径” 可以通过在架构中适当插入流水线锁存器来减小,这就是流水线技术的基础。流水线技术的缺点是增加了锁存器数目(电路面积增大)和增加了系统的迟滞(latency)1。
一个流水线例子
虽然很少在数字电路或 CPU 之外的领域听到流水线技术,但是利用流水线的模数转换器(ADC)其实非常流行。
在上图所示的流水线 ADC 结构中,输人 V I N V_{IN} VIN 首先被采样-保持(S&H)电路所采样,同时第一级的闪速 ADC 把它量化为3位,然后把此3位输出传递给一个3位的 DAC(具有12位精度),输人信号减去此 DAC 的输出,放大4 倍传递给下一级(第二级)。继续重复上述过程,每级提供3位,直到它到达最后一级4 位闪速 ADC,该 ADC 解析最后4个 LSB。对应某一次采样,由于每级在不同的时问得到变换结果,因此在进行数宇误差校正前用移位奇存储器对各级的结果先按时间对准。只要某一级完成了某一采样的变换,得到结果并把差值传递给下一级,它就可以开始处理从每一级的采样一保持电路中接收到的下一个采样。因此流水线操作提高了处理能力。
CPU 流水线
基本概念
在 CPU 中,流水线主要用于实现多条指令重叠执行,在计算机体系结构的书中称之为指令级并行(Instruction level parallelism,ILP)。如果流水线各级达到完美平衡(每个步骤执行时间相等),那么
每 条 指 令 在 流 水 线 处 理 器 中 的 时 间 = 非 流 水 线 机 器 上 每 条 指 令 的 执 行 时 间 流 水 线 级 数 每条指令在流水线处理器中的时间=\tfrac{非流水线机器上每条指令的执行时间}{流水线级数} 每条指令在流水线处理器中的时间=流水线级数非流水线机器上每条指令的执行时间当然实际流水线不会达到如此效果,因为流水线控制会产生开销,延迟会变大(增加的流水线寄存器的时间开销),流水级之间存在失衡(流水线的处理时间受限于最慢的处理步骤),流水线会遇到冒险等问题,但是总体上流水线技术会缩短每条指令时钟周期数(Cycles per Instruction,CPI)。
C P I = 程 序 的 C P U 时 钟 周 期 数 指 令 数 CPI=\tfrac{程序的 CPU 时钟周期数}{指令数} CPI=指令数程序的C