我大致(抽象地)理解了为什么管道比非管道化的管道快k
倍(像这样):
但是我无法理解这个数学表达式:
clock cycle time = t
number of command = n
speedup = (n*k*t)/((k-1)*t+n*t) = (n*k*t)/(k*t+(n-1)*t)
if n -> infinite: speedup is k
我不知道的是:((k-1) t + n t)是什么意思?
我只能理解(nkt)
表示非流水线时间,因此我认为((k-1)*t+n*t)
应该是流水线时间。
但是,为什么((k-1)*t+n*t)
是流水线时间?
答案 0 :(得分:3)
您是正确的-(k-1)*t+n*t
是在管道中执行n
命令的时间。
您应该考虑如下:
在第一个(k-1)
周期(t
)中,管道正在充满。在那之后,已经完全执行了0条建议,但是所有管道都被填满了。
从现在开始,每个周期t
,都有一个新命令要执行(由于管道效应)-> n*t
。
总共(k-1)*t + n*t
之后是在管道中执行n
命令的时间。
希望它变得更加清晰!