第十二章 流水线技术
本章主要内容
流水线的基本概念
■概念、表示方法、特点和分类
流水线的性能指标
■吞吐率、加速比和效率
流水线的实现原理
■DLX流水线实例
流水线的“相关”问题
■结构相关、数据相关和控制相关
指令级并行技术简介
流水线的基本概念
不是计算机设计和实现领域所特有的技术
■在计算机还没有出现以前,工业生产中早已经广泛使用流水线方式进行生产。

计算机中的流水线是把一个重复的过程分解为若干个子过程,每个子过程与其他子过程并行进行。由于这种工作方式与工厂中的生产流水线十分相似,因此称为流水线技术。
通常,可以从两个方面来提高处理机内部的并行性,一个是所谓的空间并行性,即在一个处理机内设置多个独立的操作部件,并且使这些部件并行工作;另一个是所谓的时间并行性,就是采用流水线技术。流水线技术是一种非常经济、对提高计算机的运算速度非常有效的技术。采用流水线技术只需增加少量硬件就能把计算机的运算速度提高几倍,成为计算机中普遍使用的一种并行处理技术。
计算机各个部分几乎都可以采用流水线技术,如果指令的执行过程可以采用流水线,那么称为指令流水线。运算器中的操作部件,如浮点加法器、浮点乘法器等可以采用流水线,称为操作部件流水线;多个计算机之间,通过存储器连接,也可以采用流水线,称为宏流水线。
一条指令的执行过程可以分为多个阶段

■取指令:按照指令计数器的内容访问主存储器,取出一条指令送到指令寄存器。
■指令分析:对指令操作码进行译码,按照给定的寻址方式和地址字段中的内容形成操作数的地址,并用这个地址读取操作数。
■指令执行:根据操作码的要求,完成指令规定的功能,即把运算结果写到通用寄存器或主存中。
指令的几种执行方式

指令多次重叠执行方式实际上就是指令流水线
如果取指令、分析指令、执行指令的时间都相等,每段的时间都为t,则n条指令所用的时间为:
■顺序执行 T=3nt
■一次重叠执行
T=(1+2n)t
■两次重叠执行
T=(n+2)t
流水线的表示方法
流水线的每一个阶段完成一条指令的一部分,不同阶段并行完成不同指令的不同部分。
流水线中的每一个阶段称为一个流水阶段、流水节拍、流水步、流水段、功能段、流水级等。一个流水阶段与另一个流水阶段相连接形成流水线。
指令从流水线的一端进入,经过流水线的处理,从另一端流出。目前大部分处理机的指令流水线在3-12段之间。
流水线常用的两种表示方法
■流水线连接图表示法,各个流水段顺序连接在一起
■流水线时空图表示法,直观描述流水线工作过程
流水线连接图表示法

流水线时空图表示法
■在时空图中,横坐标表示时间,也就是输入到流水线中的各个任务在流水线中所经过的时间。当流水线中各个流水段的执行时间都相等时,横坐标被分割成相等长度的时间段。纵坐标表示空间,即流水线的每一个流水段。

流水线的特点
第一,把一个任务(一条指令或一个操作)分解为几个有联系的子任务,每个子任务由一个专门的功能部件来实现。
第二,流水线每一个功能段部件后面都要有一个缓冲寄存器,或称为锁存器,其作用是保存本流水段的结果。

第三,流水线中各功能段的时间应尽量相等,否则将引起堵塞、断流。要求流水线的时钟周期不能快于最慢的流水段。
第四,只有连续不断地提供同一种任务时才能发挥流水线的效率,所以在流水线中处理的必须是连续任务。
第五,流水线需要有装入时间和排空时间。装入时间是指第一个任务进入流水线到输出流水线的时间。排空时间是指第n个(最后一个)任务进入流水线到输出流水线的时间。
流水线的分类
部件功能级流水线
■所谓功能部件级流水线也可以称为运算操作流水线(Arithmetic Pipelines)。前面的浮点加法器就是一种典型的功能部件级流水线。
处理机级流水线
■所谓处理机级流水线,又叫指令流水线(Instruction Pipelines),它是把解释指令的过程按照流水方式处理,使处理机能够重叠地解释多条指令。
处理机间级流水线
■所谓处理机间流水线,又被称为宏流水线(Macro Pipelines)。这种流水线由两个或者两个以上的处理机通过存储器串行连接起来,每个处理机完成整个任务的一部分。

单功能流水线
■如果一条流水线只能完成一种固定的功能,这种流水线称为单功能流水线。
多功能流水线
■多功能流水线是指流水线各段可以进行不同的连接。在不同时间内,或者在同一时间内,通过不同的连接方式实现不同的功能。

静态流水线
■所谓静态流水线是指在同一段时间内,多功能流水线中的各个功能段只能够按照一种固定的方式连接,实现一种固定的功能。只有当按照这种连接方式工作的所有任务都流出流水线之后,多功能流水线才能重新进行连接。
动态流水线
■而动态流水线是指在同一段时间内,多功能流水线中的各段可以按照不同的方式连接,同时执行多种功能。这种同时实现多种连接方式是有条件的,即流水线中的各个功能部件之间不能发生冲突。

线性流水线
■所谓线性流水线是将流水线的各段串行连接起来,没有反馈回路。输入数据从流水线的一端进入,从另一端输出。数据在流水线的各个功能段流过时,每个功能段都流过且仅流过一次。
非线性流水线
■而非线性流水线则是在流水线的各个功能段之间除了有串行的连接之外,还有反馈回路。

其他的流水线分类方法
■按照数据表示方式的不同,可以把流水线分为标量流水线(处理机无向量数据表示,仅对标量数据进行流水处理)和向量流水线(处理机有向量数据表示,有向量指令)两种。本章主要介绍的都是标量流水线。
■在线性流水线中,根据对流水线控制方式的不同,可以把流水线分为同步流水线和异步流水线两类。本章中介绍的都是同步流水线,一般的宏流水线采用异步流水线方式。
■按照流水线输出端流出的任务与流水线输入端流入的任务的顺序是否相同,还可以把流水线分为顺序流水线和乱序流水线(又可称为错序流水线或者无序流水线)两种。
|