文章目录
一、前缀知识
1.时空图
从时间和空间两个方面描述流水线的工作过程,横坐标表示时间,纵坐标表示各流水段。
注意纵坐标表示各流水段,不是各任务,比如下图就不是时空图。
2.流水线的分类
(1)重要的分类
按功能多少:
- 单功能:只能完成一种固定功能的流水线。
- 多功能:流水线的各段可以进行不同的连接,在不同的时间内或在同一时间内完成不同的功能。
多功能流水线按流水线的连接特性分类
- 静态流水线:是指在同一时间内,流水线的各段只能按同一种功能的连接方式工作。(时空图不同功能部分不能重叠,必须等一个功能的指令都执行完才能开始另一个功能的指令执行)
- 动态流水线:在同一时间内,流水线的某些段正在实现某种运算,而流水线的另一些段同时在实现另外的一种运算。(时空图不同功能部分可以重叠)
这点可以用时空图来解释:见题6.10
(2)不重要的分类
按照流水线使用的级别分类:
- 部件级(指令级):将一条指令的执行过程分成若干子过程,每一子过程由一个独立的功能部件来实现。
- 处理机级:多个功能部件连在一起构成流水线
- 处理机间
按照流水线中是否有反馈回路分类:
- 线性(不重复模块)
- 非线性(重复模块)
按照输出端任务的流出顺序与输入端任务的流入顺序是否一致:
- 顺序流动
- 乱序流动
二、流水线的性能分析
三项性能指标:吞吐率、加速比和效率
1.加速比SP
S P = T 顺 T 流 SP=\dfrac{T_顺}{T_流} SP=T流T顺
T 顺 T_顺 T顺:
-
当各段时间均为△t 的 m 段流水线,顺序完成 n 个任务,则:
T 顺 = n m Δ t 0 T_顺 = nm \Delta t_0 T顺=nmΔt0 -
当各段时间不相等的 m 段流水线,顺序完成 n 个任务,则:
T 顺 = n ∑ i = 1 m Δ t i T_顺 = n\displaystyle \sum^{m}_{i=1} \Delta t_i T顺=ni=1∑mΔti
2.吞吐率TPmax和TP
- 最大吞吐率 T P m a x TP_{max} TPmax:是指流水线在达到稳定状态后所得到的吞吐率。
- 实际吞吐率 T P TP TP:设流水线由m段组成,完成n个任务的吞吐率。
(1)最大吞吐率
计算
-
假设流水线各段的时间相等,均为 Δ t 0 \Delta t_0 Δt0,则:
T P m a x = 1 Δ t 0 TP_{max} = \dfrac{1}{\Delta t_0} TPmax=Δt01 -
假设流水线各段时间不等,第i段时间为 Δ t i \Delta t_i Δti ,则:
T P m a x = 1 m a x { Δ t 0 } TP_{max} = \dfrac{1}{max\{\Delta t_0\}} TPmax=max{Δt0}1
最大吞吐率取决于流水线中最慢一段所需的时间,该段成为流水线的瓶颈。
那么消除瓶颈的方法:
- 细分瓶颈段(增加流水线深度)
- 重复设置瓶颈段
(2)实际吞吐率
实际吞吐率 T P = n T 流 水 TP=\dfrac{n}{T_{流水}} TP=T流水n,n表示任务的个数
- 若各段时间相等(假设均为
Δ
t
0
\Delta t_0
Δt0),则完成时间
T 流 水 = m Δ t 0 + ( n − 1 ) Δ t 0 T_{流水} = m\Delta t_0 + (n-1)\Delta t_0 T流水=mΔt0+(n−1)Δt0
这么理解:前半段红线是
(
n
−
1
)
Δ
t
0
(n-1)\Delta t_0
(n−1)Δt0,后半段是流水线的深度
m
Δ
t
0
m\Delta t_0
mΔt0
- 各段时间不相等的流水线,则完成时间
T 流 水 = ∑ i = 1 m Δ t i + ( n − 1 ) Δ t m a x T_{流水} = \displaystyle \sum_{i=1}^{m}\Delta t_i + (n-1)\Delta t_{max} T流水=i=1∑mΔti+(n−1)Δtmax
例:各段时间相等的流水线。
当△t=1ns,m=3,完成 100 个任务。流水线执行,则只需T流水= 3ns+99ns=102ns。实际吞吐率TP=100/(102ns)=980.39MIPS(单位换算:100÷102*1000)
例:各段时间不等的流水线。
假定某流水线有 5 段,其中 4 段的时间为 1ns,只有 1 段的时间为 2ns。若利用
此流水线完成 100 个任务,流水线执行所用时间为 T流水=6ns+99×2ns=204ns,实际吞吐率为 TP=100/204ns=490.19MIPS。
3.效率E
E = n 个 任 务 占 用 的 时 空 区 m 个 段 总 的 时 空 区 = T 顺 m × T 流 E=\dfrac{n个任务占用的时空区}{m个段总的时空区}=\dfrac{T_顺}{m\times T_流} E=m个段总的时空区n个任务占用的时空区=m×T流T顺
-
当各段时间均为△t 的流水线
E = n Δ t 0 m Δ t 0 + ( n − 1 ) Δ t 0 E=\dfrac{n\Delta t_0}{m\Delta t_0+(n-1)\Delta t_0} E=mΔt0+(n−1)Δt0nΔt0 -
当各段时间不相等的 m 段流水线
E = n ∑ i = 1 m Δ t i m [ ∑ i = 1 m Δ t i + ( n − 1 ) Δ t m a x ] E=\dfrac{n\displaystyle \sum_{i=1}^{m}\Delta t_i}{m[\displaystyle \sum_{i=1}^{m}\Delta t_i+(n-1)\Delta t_{max}]} E=m[i=1∑mΔti+(n−1)Δtmax]ni=1∑mΔti -
特殊排布的流水线(如动态流水线)
三、习题
6.5
(1)TP=1000÷100025ns
6.9
6.10
错在没有分清静态流水线和动态流水线,如下错误答案。