流水线技术:把一个任务分解为若干顺序执行的子任务,每个子任务由不同的执行机构负责执行,机构可以并行工作。
在任意时刻,一个任务只会占用一个执行机构,这样就可以多个任务同时执行,提高工作效率
流水线周期
流水线应用的过程中,任务分为N个阶段,其中最耗时的时间为流水线周期
如:使用流水线技术执行 100 条指令,每条指令取指 2ms,分析 4ms,执
行 1ms,则流水线周期为 4ms。
流水线执行时间
如果完成一个流程任务完成时间是 t ,有n 个流程 时间就是 nt ,则完成k个任务的时间就是knt
在流水线中,不同阶段可以同时执行,除了第一个任务需要花全部时间 t = (t1+t2+。。。tn),其余任务(k-1) 只用花 流水线的周期时间 T
公式就是
(t1+t2+。。。tn)+(k-1)T 如果没有答案
可以用
实际流水线时间 = n*T+(k-1)T
例:
某计算机系统,一条指令的执行需要经历取指(2ms)、分析(4ms)、执行(1ms)
三个阶段,现要执行 100 条指令,利用流水线技术需要多长时间?
理论上来说,1 条指令的执行时间为:2ms+4ms+1ms=7ms。
所以:理论流水线执行时间=2ms+4ms+1ms+(100-1)*4=403ms。
而实际上,真正做流水线处理时,考虑到处理的复杂性,会将指令的每个执行阶段的时
间都统一为流水线周期,即 1 条指令的执行时间为:4ms+4ms+4ms=12ms。 所以:实际流
水线执行时间=4ms+4ms+4ms+(100-1)*4=408ms。
流水线的吞吐率
是指在单位时间内流水线所完成的任务数量或输出的结果数量
吞吐率公式:TP = k\ Tk 指令条数 除以 流水线时间
假设,现实中每个流水线任务耗时相同 得到如下的公式: k/(nt+(k-1)t) = k/(n+k-1)t
t:完成一个流程需要的时间,n :流程数,k:任务数
最大吞吐率 (k驱近无穷) n是常量就可以忽略 于是 公式就会变为 1\t
流水线的加速比
完成同一批任务,不使用流水线所用的时间与使用流水线所用的时间之比称为流水线的加速比:
s=T0\Tk
T0 :顺序执行所用的时间
Tk:使用流水线执行的时间
如果流水线各个流水段的时间相同
加速比
s = knt / (n+k-1)t = nk/n+k-1
k:任务数
n:流水线阶段数
如果任务很多 ,k无穷大 忽略n 和 1
最大加速比为:
s = n