流水线化的一个重要特性就是提高了系统的吞吐量(throughput),也就是单位时间内服务的顾客总数,不过它也会轻微地增加延迟(latency),也就是服务一个用户所需要的时间。例如,自助餐厅里的一个只需要甜点的顾客,能很快通过一个非流水线化的系统,只在甜点阶段停留。但是在流水线化的系统中,这个顾客如果试图直接去甜点阶段就有可能招致其他顾客的愤怒了。
4.4.1 计算流水线
让我们把注意力放到计算流水线上来,这里的“顾客”就是指令,每个阶段完成指令执行的一部分。图 4-32a给出了一个很简单的非流水线化的硬件系统例子。它是由一些执行计算的逻辑以及一个保存计算结果的寄存器组成的。时钟信号控制在每个特定的时间间隔加载寄存器。CD播放器中的译码器就是这样的一个系统。输入信号是从D表面读出的位,逻辑电路对这些位进行译码,产生音频信号。图中的计算块是用组合逻辑来实现的,意味着信号会穿过一系列逻辑门,在一定时间的延迟之后,输出就成为了输入的某个函数。
在现代逻辑设计中,电路延迟以微微秒或皮秒(picosecond,简写成“ps”)。在这个例子中,我们假设组合逻辑需要300ps,而加载寄存器需要20ps。图 4-32还给出了一种时序图,称为流水线图(pipeline diagram)。在图中,时间从左向右流动。从上到下写着一组操作(在此称为I1、I2和I3)。实心的长方形表示这些指令执行的时间。这个实现中,在开始下一条指令之前必须完成前一个。因此,这些方框在垂直方向上并没有相互重叠。下面这个公式给出了运行这个系统的最大吞吐量: