1.基本概念
计算机的流水线把一个重复的过程分解为若干子过程,每个子过程与其他子过程并行执行。由于采用流水线技术只需要增加少量硬件就能把计算机的运算速度提高几倍,因此成为计算机中普遍使用的一种并行处理技术。
定义
一条指令的执行过程可分为三个阶段:
取指:根据PC(程序计数器)内容访问主存储器,取出一条指令送到IR(指令寄存器)中。
分析:对指令操作码进行译码,按照给定的寻址方式和地址字段中的内容形成操作数的有效地址EA,并从EA中取出操作数。
执行:根据操作码字段,完成指令规定的功能,即把运算结果写道通用寄存器或主存中。当多条指令在处理器中执行时,可以采用以下三种方式:
- 顺序执行方式:指令按顺序执行,前一条指令执行完后,才启动下一条指令。优点是控制简单,硬件代价小;缺点是执行指令的速度较慢,在任何时刻,处理机中只有一条指令在执行,各功能部件的利用率很低。
- 一次重叠执行方式:这种方式同时进行第k条指令的执行阶段和第k+1条指令的取指阶段。
- 二次重叠执行方式:为了进一步提高指令的执行速度,可以把取k+1条指令提前到分析第k条指令的期间完成,而将分析第k+1条指令与执行第k条指令同时进行。

表示方法
通常使用时空图来描述流水线的工作过程,如下图所示:

在上图中,第一条指令I1在时刻t0进入流水线,在时刻t4流出流水线。第二条指令I2在时刻t1进入流水线,在时刻t5流出流水线。可以看出,在t8时,流水线上便有5条指令流出。若采用串行方式执行指令,则t8时只能执行2条指令,可见流水线方式成倍地提高了计算机的速度。
特点
与传统的串行执行方式相比,采用流水线方式具有以下特点:
- 把一个任务(一条指令或一个操作)分解为几个有联系的子任务,每个子任务由一个专门的功能部件来执行,并依靠多个功能部件并行工作来缩短程序的执行时间。
- 流水线每个功能段部件后面都要有一个缓冲寄存器,或称锁存器,其作用是保存本流水段的执行结果,供给下一流水段使用。
- 流水线中各功能段的时间应尽量相等,否则将引起堵塞、断流。
- 只有连续不断地提供同一种任务时才能发挥流水线的效率,所以在流水线中处理的必须是连续任务。
- 流水线需要有装入时间和排空时间。装入时间是指第一个任务进入流水线到输出流水线的时间。排空时间是指最后一个任务进入流水线到输出流水线的时间。
2.分类
- 根据流水线使用级别的不同,流水线可分为部件功能级流水线、处理机级流水线和处理机间流水线。
部件功能级流水将复杂的算术逻辑运算组成流水线工作方式。例如将浮点加法操作分成求阶差、对阶、尾数相加及结果规格化4个子过程。
处理机级流水把一条指令解释过程分成多个子过程,如取指、译码、执行、访存和写回这些子过程。
处理机间流水是一种宏流水,其中每个处理机完成某一专门任务,各个处理机得到的结果需存放在与下一个处理机共享的存储器中。 - 按可以完成的功能,可分为单功能流水线和多功能流水线。
单功能流水线指只能实现一种固定的专门功能的流水线;多功能流水线是指通过各段间的不同连接方式可以同时或不同时地实现多种功能的流水线。 - 按同一时间内各段之间的连接方式,流水线可分为静态流水线和动态流水线。
静态流水线指在同一时间内,流水线的各段只能按同一种功能的连接方式工作。
动态流水线指在同一时间内,当某些段正在实现某种运算时,另一些段却正在进行另一种运算。这样对提高流水线的效率很有好处,但会使流水线控制变得复杂。 - 按流水线的各个功能段之间是否有反馈信号,可分为线性流水线和非线性流水线。
线性流水线中,从输入到输出,每个功能段只允许经过一次,不存在反馈回路。非线性流水线存在反馈回路,从输入到输出的过程中,某些功能段将数次通过流水线,这种流水线适合进行线性递归的运算。
3.影响流水线的因素
影响流水线性能的因素主要有两方面:资源冲突和相关问题。
- 由于多条指令在同一时刻争用同一资源而形成的冲突称为资源冲突,有以下两种解决办法:
前一指令访存时,使后一条相关指令(以及其后续指令)暂停一个时钟周期。
单独设置数据存储器和指令存储器,使两项操作各自在不同的存储器中进行。 - 流水线中的相关问题是指相邻指令间存在某种关联,使指令流水线出现停顿,降低了流水线的效率。主要有数据相关和控制相关两类。
- 数据冲突(数据冒险):在一个程序中,下一条指令会用到这一条指令计算出的结果,此时这两条指令即为数据冒险。当多条指令重叠处理时就会发生冲突,解决的办法有以下几种:
将遇到数据相关的指令暂停,直到问题消失后再继续执行。
设置相关专用通路,不等前一条指令把计算结果写回寄存器组,下一条指令也不再读寄存器组,而是直接把前一条指令的ALU的计算结果作为自己的输入数据开始计算过程。
通过编译器对数据相关的指令编译优化的方法,调整指令顺序来解决数据相关。 - 控制冲突(控制冒险):一条指令要确定下一条指令的位置。例如在执行转移、调用或返回等指令时会改变PC( 程序计数器)值,而造成断流。解决办法有以下几种:
对转移指令进行分支预测,尽早生成转移目标地址。
预测转移成功和不成功两个控制流方向上的目标指令。
加快和提前形成条件码。
提高转移方向的猜准率。
4.性能指标
衡量流水线性能的主要指标有吞吐率、加速比和效率。
- 吞吐率是指在单位时间内流水线所完成的任务数量,或输出结果的数量。
- 流水线的加速比是指完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比。
- 流水线的设备利用率称为流水线的效率。在时空图上,流水线的效率定义为完成n个任务占用的时空区有效面积,与n个任务所有的时间及k个流水段所围成的时空区总面积之比。因此,流水线的效率包括了时间和空间两个因素。

4882

被折叠的 条评论
为什么被折叠?



