赞
踩
流水线技术
流水线的段
指令流水线
时-空图
流水技术的特点
流水线把一个处理过程分解为若干个子过程(段),每个子过程由一个专门的功能部件来实现。
流水线中各段的时间应尽可能相等,否则将引起流水线堵塞、断流。
时间最长的段将成为流水线的瓶颈。
流水线每一个段的后面都要有一个缓冲寄存器(锁存器),称为流水寄存器。
流水技术适合于大量重复的时序过程,只有在输入端不断地提供任务,才能充分发挥流水线的效率。
流水线需要有通过时间和排空时间。
部件级、处理机级及处理机间流水线
单功能流水线与多功能流水线
按照流水线所完成的功能来分类
单功能流水线:只能完成一种固定功能的流水线。
多功能流水线:流水线的各段可以进行不同的连接,以实现不同的功能。
静态流水线与动态流水线
按照同一时间内各段之间的连接方式对多功能流水线作进一步的分类(对多功能流水线的深入)
静态流水线:在同一时间内,多功能流水线中的各段只能按同一种功能的连接方式工作。
动态流水线:在同一时间内,多功能流水线中的各段可以按照不同的方式连接,同时执行多种功能。
线性流水线与非线性流水线
顺序流水线与乱序流水线
标量处理机与向量流水处理机
把指令执行部件中采用了流水线的处理机称为流水线处理机。
标量处理机:处理机不具有向量数据表示和向量指令
向量流水处理机:具有向量数据表示和向量指令的处理机。
吞吐率:在单位时间内流水线所完成的任务数量或输出结果的数量。计算公式如下
T
P
=
n
T
k
TP = \frac{n}{T_{k}}
TP=Tkn
其中:
流水线完成n个连续任务所需要的总时间为:(假设一条k段线性流水线)
T
k
=
k
Δ
t
+
(
n
-
1
)
Δ
t
=
(
k
+
n
-
1
)
Δ
t
T_k=kΔt+(n-1)Δt\ =\ (k+n-1)Δt
Tk=kΔt+(n-1)Δt = (k+n-1)Δt
流水线的实际吞吐率
T
P
=
n
(
k
+
n
−
1
)
Δ
t
TP = \frac{n}{(k+n-1)\Delta t}
TP=(k+n−1)Δtn
最大吞吐率
T
P
m
a
x
=
lim
n
→
∞
n
(
k
+
n
−
1
)
Δ
t
=
1
Δ
t
TP_{max} = \lim_{n \rightarrow \infty}\frac{n}{(k+n-1)\Delta t} = \frac{1}{\Delta t}
TPmax=n→∞lim(k+n−1)Δtn=Δt1
各段时间不等的流水线的实际吞吐率为:(
Δ
t
i
Δt_i
Δti为第i段的时间,共有
k
k
k个段 )
T
P
=
n
∑
i
=
1
k
Δ
t
i
+
(
n
−
1
)
max
(
Δ
t
1
,
Δ
t
2
,
⋯
,
Δ
t
k
)
T P=\frac{n}{\sum_{i=1}^{k} \Delta t_{i}+(n-1) \max \left(\Delta t_{1}, \Delta t_{2}, \cdots, \Delta t_{k}\right)}
TP=∑i=1kΔti+(n−1)max(Δt1,Δt2,⋯,Δtk)n
流水线的最大吞吐率为:
T
P
m
a
x
=
1
max
(
Δ
t
1
,
Δ
t
2
,
⋯
,
Δ
t
k
)
TP_{max}=\frac{1}{ \max \left(\Delta t_{1}, \Delta t_{2}, \cdots, \Delta t_{k}\right)}
TPmax=max(Δt1,Δt2,⋯,Δtk)1
加速比:完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比。
假设:不使用流水线(即顺序执行)所用的时间为
T
s
T_s
Ts,使用流水线后所用的时间为
T
k
T_k
Tk,则该流水线的加速比为:
S
=
不
使
用
流
水
线
所
用
的
时
间
使
用
流
水
线
所
用
的
时
间
=
T
s
T
k
S = \frac{不使用流水线所用的时间}{使用流水线所用的时间} =\frac{T_{s}}{T_{k}}
S=使用流水线所用的时间不使用流水线所用的时间=TkTs
一条k段流水线完成n个连续任务所需要的时间为:
T k = ( k + n - 1 ) Δ t T_k = (k+n-1)Δt Tk=(k+n-1)Δt
顺序执行n个任务所需要的时间:
T
s
=
n
k
△
t
T_s= nk△t
Ts=nk△t
流水线的实际加速比为:
S = n k k + n − 1 S = \frac{nk}{k+n-1} S=k+n−1nk
最大加速比
S
max
=
lim
n
→
∞
n
k
k
+
n
−
1
=
k
S_{\max }=\lim _{n \rightarrow \infty} \frac{n k}{k+n-1}=k
Smax=n→∞limk+n−1nk=k
流水线的效率:流水线中的设备实际使用时间与整个运行时间的比值,即流水线设备的利用率。
由于流水线有通过时间和排空时间,所以在连续完成n个任务的时间内,各段并不是满负荷地工作。
各段的效率
e
i
e_i
ei相同,
e
1
=
e
2
=
⋯
=
e
k
=
n
Δ
t
T
k
=
n
k
+
n
−
1
e_{1}=e_{2}=\cdots=e_{k}=\frac{n \Delta t}{T_{k}}=\frac{n}{k+n-1}
e1=e2=⋯=ek=TknΔt=k+n−1n
整条流水线的效率为:
E
=
e
1
+
e
2
+
⋯
+
e
k
k
=
k
e
1
k
=
k
n
Δ
t
k
T
k
E = \frac{e_{1}+e_{2}+\cdots+e_{k}}{k} = \frac{ke_{1}}{k} = \frac{kn\Delta t}{k T_{k}}
E=ke1+e2+⋯+ek=kke1=kTkknΔt
可以写成:
E
=
n
k
+
n
−
1
E = \frac{n}{k+n-1}
E=k+n−1n
最高效率为:
E
m
a
x
=
lim
n
→
∞
n
k
+
n
−
1
=
1
E_{max} =\lim _{n \rightarrow \infty} \frac{n}{k+n-1} = 1
Emax=n→∞limk+n−1n=1
流水线的效率与吞吐率以及加速比的关系
当流水线各段时间相等时,流水线的效率与吞吐率成正比。
E
=
T
P
⋅
△
t
E=TP·△t
E=TP⋅△t
流水线的效率是流水线的实际加速比S与它的最大加速比k的比值。
E
=
S
k
E = \frac{S}{k}
E=kS
从时空图求流水线的效率
效率就是n个任务占用的时空面积和k个段总的时空面积之比。
E
=
n 个任务实际占用的时空区
k 个段总的时空区
E = \frac{\text{n 个任务实际占用的时空区}}{\text{k 个段总的时空区}}
E=k 个段总的时空区n 个任务实际占用的时空区
当各段时间不相等时:
E
=
n
⋅
∑
i
=
1
k
Δ
t
i
k
[
∑
i
=
1
k
Δ
t
i
+
(
n
−
1
)
⋅
max
(
Δ
t
1
,
Δ
t
2
,
⋯
,
Δ
t
k
)
]
E=\frac{n \cdot \sum_{i=1}^{k} \Delta t_{i}}{k\left[\sum_{i=1}^{k} \Delta t_{i}+(n-1) \cdot \max \left(\Delta t_{1}, \Delta t_{2}, \cdots, \Delta t_{k}\right)\right]}
E=k[∑i=1kΔti+(n−1)⋅max(Δt1,Δt2,⋯,Δtk)]n⋅∑i=1kΔti
参见《计算机系统结构教程》(第二版)清华大学 张晨曦 王志英 等 P62-P64
流水寄存器延迟
时钟偏移开销
⚠️几个关键问题
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。