走进计算机世界-组成与体系结构之流水线

流水线

流水线技术把一个任务分解成若干个顺序执行的子任务,不同的子任务由不同的执行机构负责执行,而这些机构可以同时并行工作。在任一时刻,任一任务只占用其中任一机构,这样就可实现多任务重叠执行,以提高工作效率。

流水线周期:在流水线应用过程中,会将需要处理的工作分为N个阶段,最耗时的那一段所消耗的时间为流水线周期。如:使用流水线技术执行100条指令,每条指令取2ms,分析4ms,执行1ms,则流水线周期为4ms。

计算流水线执行时间:延续上面的场景,将1个任务的执行过程分为N个阶段,假设每个阶段完成的时间为t,即完成任务所需的时间即为Nt。若以传统的方式,则完成k个任务所需的时间是kNt;而使用流水线技术执行,花费的时间为Nt+(k-1)t。也就是说除了第一个任务需要完整的时间外,其他任务都通过并行,节省了大量时间。即流水线执行时间的通俗表达式为:流水线执行时间=第1条指令执行时间+(n-1)*流水线周期(n代表需要处理的任务数量)

流水线吞吐率(ThoughPutrate,TP):是指单位时间内流水线所完成的任务数量或输出的结果数量。有些文献文章也称为平均吞吐率、实际吞吐率。

流水线吞吐率计算公式

流水线加速比:在流水线中,因为在同一时刻,有多个任务在重叠的执行,虽然完成一个任务的时间与单独执行该任务相近(甚至由于分段的缘故,可能更多一些),但是从整体上看完成多个任务所需要的时间则大大减少。

完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比称为流水线的加速比(speedupratio)。如果不使用流水线,即顺序执行所用的时间为T0,使用流水线执行的时间为Tk,则计算流水线的加速比基本公式如下:

流水线加速比公式

如果流水线各个流水段的执行时间都相等(设为Dt),则一条k段流水线完成n个连续任务所需要的时间为(k+n-1)Dt。如果不使用流水线,即顺序执行n个任务,则所需要的时间为nkDt。则流水线执行时间均相等的一条k段流水线完成n个连续任务时的实际加速比为:

流水线加速比

这种情况下最大的加速比为:

最大加速比

发布于 2024-12-16
151
目录

    推荐阅读