1.3 流水线ide
流水线技术把一个任务分解为若干顺序执行的子任务,不一样的子任务由不一样的执行机构负责执行,而这些机构能够同时并行工做。在任一时刻,任一任务只占用其中一个执行机构, 这样就能够实现多个任务的重叠执行,以提升工做效率。spa
1.3.1 流水线周期blog
流水线应用过程当中,会将须要处理的工做分为 N 个阶段,最耗时的那一段所消耗的时间为流水线周期。如:使用流水线技术执行 100 条指令,每条指令取指 2ms,分析 4ms,执行 1ms,则流水线周期为 4ms。ci
1.3.2 计算流水线执行时间io
延续上面的场景,将 1 个任务的执行过程可分红 N 个阶段,假设每一个阶段完成时间为 t,则完成该任务所需的时间即为 Nt。若以传统的方式,则完成 k 个任务所需的时间是kNt;而使用流水线技术执行,且花费的时间是 Nt+(k-1)t。也就是说,除了第 1 个任务须要完整的时间外,其余都经过并行,节省下了大量的时间。因此流水线的执行时间可通俗的表达为:class
流水线执行时间=第 1 条指令的执行时间+(n-1)*流水线周期效率
注:n 表明须要处理的任务数量。bfc
在考试时,又须要特别注意一个细节问题,流水线的执行时间计算,其实进一步能够分理论状况与实践状况两种不一样的处理方式。下面以实例进行说明。List
例:某计算机系统,一条指令的执行须要经历取指(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。
希赛教育专家提示:考试时 80%以上的几率采用理论公式计算,因此考试时须要以理论公式计算,若计算的结果无正确选项才考虑采用实际公式计算。
1.3.3 流水线的吞吐率
流水线的吞吐率(Though Put rate,TP)是指在单位时间内流水线所完成的任务数量或输出的结果数量。有些文献也称为平均吞吐率、实际吞吐率。计算流水线吞吐率的最基本的公式以下:
1.3.4 流水线的加速比
在流水线中,由于在同一时刻,有多个任务在重叠地执行,虽然完成一个任务的时间与单独执行该任务相近(甚至因为分段的缘故,可能更多一些),可是从总体上看完成多个任务所需的时间则大大减小。
完成一样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比称为流水线的加速比(speedup ratio)。若是不使用流水线,即顺序执行所用的时间为 T0 ,使用流水线的执行时间为 Tk ,则计算流水线加速比的基本公式以下:
若是流水线各个流水段的执行时间都相等(设为 Dt),则一条 k 段流水线完成 n 个连 续任务所须要的时间为(k+n-1)Dt。若是不使用流水线,即顺序执行这 n 个任务,则所须要的时间为 nkDt。所以,各个流水段执行时间均相等的一条 k 段流水线完成 n 个连续任务 时的实际加速比为: