第三章 流水线技术
3.1流水线的基本概念
1.2 计算机中的流水线
- 把一重复的过程分解为若干子过程,每个子过程由专门的功能部件来实现。把多个处理过程在时间上错开,依次通过各功能段,保证每个子过程可并行进行,这种技术称为流水线技术。
- 流水线中的每个子过程及其功能部件称为流水线的级或段,段与段相互连接形成流水线。流水线的段数称为流水线的深度
1.3 指令流水线
- 把流水线技术应用于指令的解释执行过程,即形成指令流水线。
- 该执行过程可分为:取指令、译码、执行、存结果等4个子过程
1.4 运算操作流水线
4. 把流水线技术应用于运算的执行过程,即形成运算操作流水线,即部件级流水线。
5. 例:浮点加法流水线的执行过程可分为:求阶差、对阶、尾数相加、规格化等4个子过程
1.5 时空图
6. 流水线的工作过程常采用时空图的方法描述。
① 时空图从时间和空间两个方面描述了流水线的工作过程。时空图中,横坐标代表时间,纵坐标代表流水线的各个段
7. 例:指令流水线的时空图
1.6 流水技术的特点
8. 流水线把一个处理过程分解为若干个子过程(段),每个子过程由一个专门的功能部件来实现。
依靠并行工作缩短程序执行时间
- 流水线中各段的时间应尽可能相等,否则将引起流水线堵塞、断流。
时间长的段将成为流水线的瓶颈。
- 流水线每一个功能部件的后面都要有一个缓冲寄存器(锁存器),称为流水寄存器。
作用:在相邻的两段之间传送数据,以保证提供后面要用到的数据,并把各段的处理工作相互隔离。
- 流水技术适合于大量重复的时序过程,只有在输入端不断地提供任务,才能充分发挥流水线的效率。
- 流水线需要有通过时间和排空时间。
①通过时间:第一个任务从进入流水线到流出结果所需的时间。
②排空时间:最后一个任务从进入流水线到流出结果所需的时间
2.流水线的性能指标
2.1 吞吐率
13. 在单位时间内流水线所完成的任务数量或输出结果的数量,即为吞吐率TP=n/TK
n为任务数
TK为处理完成n个任务所用的时间
2.1.1 各段时间均相等的流水线
- 各段时间均相等的流水线时空图。
- 公式
(1)流水线完成n个连续任务所需要的总时间为:TK=kΔt +(n -1)Δt =( k+n-1)Δt
(2)流水线的实际吞吐率为:TP=n/( k+n-1)Δt
(3) 最大吞吐率为:
(4) 最大吞吐率与实际吞吐率的关系为:
① 流水线的实际吞吐率小于最大吞吐率,它除了与每个段的时间有关外,还与流水线的段数k以及输入到流水线中的任务数n等有关。
② 只有当n>>k时,才有TP≈TPmax。
2.1.2 各段时间不完全相等的流水线
- 各段时间不等的流水线及时空图。
一条4段的流水线
S1,S3,S4各段的时间:Δt
S2的时间:3Δt (瓶颈段)
流水线中这种时间最长的段称为流水线的瓶颈段。
2. 公式
(1)各段时间不等的流水线的实际吞吐率为:
(2)流水线的最大吞吐率为:
所以,上述例子中流水线最大吞吐率为:TPmax=1/3Δt
3. 解决流水线瓶颈问题:
(1)细分瓶颈段
例如:对前面的4段流水线
把瓶颈段S3细分为3个子流水线段:S3a,S3b,S3c
改进后的流水线的吞吐率为 :TPmax=1/ Δt
(2) 重复设置瓶颈段
例如:对前面的4段流水线
重复设置瓶颈段S3:S3a,S3b,S3c
改进后的流水线的吞吐率为 :TPmax=1/ Δt
2.2 加速比
4. 完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比,即为加速比。
5. 假设:不使用流水线(即顺序执行)所用的间为Ts,使用流水线后所用的时间为Tk,则该流水线的加速比为:S=Ts/Tk
2.2.1 各段时间均相等的流水线
6. 一条k段流水线完成n个连续任务所需要的时间为:Tk = (k+n-1)Δt
7. 顺序执行n个任务所需要的时间为:Ts= nk△t
8. 流水线的实际加速比为:S=nk/(k+n-1)
9. 最大加速比:
当n>>k时, S ≈ k
2.2.2 各段时间不完全相等的流水线
10. 一条k段流水线完成n个连续任务所需要的时间为:
2.3 效率
11. 流水线中的设备实际使用时间与整个的比值,即流水线设备的利用率,亦指效率。
12. 由于流水线有通过时间和排空时间,所以在连续完成n个任务的时间内,各段并不是满负荷地工作。
2.3.1 各段时间均相等的流水线
13. 各段时间均相等的流水线时空图。
2. 公式
各段的效率ei相同:
整条流水线的效率为:
可以写为:E=n/(k+n-1)
最高效率为:
(1) 当流水线各段时间相等时,流水线的效率与吞吐率成正比。E=TP△t
(2) 流水线的效率是流水线的实际加速比S与它的最大加速比k的比值。
E=S/k
当 E=1时,S=k ,实际加速比达到最大
2.3.2 流水线效率的计算
- 从时空图上看,效率就是n个任务占用的时空面积和k个段总的时空面积之比。
E=n个段总的时空区/任务实际占用的时空区 - 当各段时间不相等时
2.4 分析举例
例3.1 设在下图所示的静态流水线上计算:
流水线的输出可以直接返回输入端或暂存于相应的流水寄存器中,试计算其吞吐率、加速比和效率。
解:
(1)选择适合于流水线工作的算法
① 先计算A1+B1、A2+B2、A3+B3和A4+B4;
② 再计算(A1+B1)×(A2+B2)和(A3+B3)×(A4+B4);
③ 然后求总的乘积结果。
(2)画出时空图
(3)计算性能
① 在18个△t时间中,给出了7个结果。吞吐率为:TP=7/18△t
② 不用流水线,由于一次求和需6△t,一次求积需4△t,则产生上述7个结果共需(46+34
△t = 36△t 加速比为:S=36△t/18△t=2
③E=4.25
可以看出,在求解此问题时,该流水线的效率不高。