流水线-流水线相关计算

流水线-流水线计算

一个造车厂生产一辆车分为ABCD四道工序,1号车开始生产,A道工序结束,进入B道工序,再之后C道工序,然后D,最后完工,2号车开始生产,同上,结束后三号车生产,但随之而来的问题是,当A工序进行完后,进行B工序,对应的A工序的工作人员就会有一段时间的空窗期,这段空窗期时间很长,长到BCD全部结束,所以工厂的老板会血亏,流水线生产模式随之而来。
1号车A工序结束进入B工序,则二号车立马进行A工序,待1号车进入C工序后,二号车进入B工序,3号车进入A工序,这样会有效避免工作人员的空窗期,会提高效率,也会节省成本。

  • 流水线周期为执行时间最长的一段时间

例如:A工序需要2小时,B需要1小时,C需要4小时,D需要三小时,那么该流水线的周期即4小时。
而对于为什么是4小时,其实很好理解,如果不以4小时为周期,以A工序的两小时为周期会产生什么情况?

大家仔细想一想,是不是会造成产品滞留的状况,因为你C需要4个小时,而A需要2小时,B需要1小时,便会有大量的产品B滞留在BC之间,等待C,这只是一种最理想的假设,有时还会造成瘫痪现象,所以流水线的周期一定要是该执行线上时间最长的一段。

  • 流水线的计算公式
    一条指令执行时间+(指令条数-1)*流水线周期
    理论公式:(t¹+t²+t³+…+tⁿ)+(x-1)
    时间公式:(n+x-1)*∆
    其中n为一个工程需要几道工序,就像上文中的ABCD一样,x为流水线中需要完成多少产品,也就像上文中车的数量一样,∆是流水线的周期。

若指令流水线把一条指令分为取值、分析、执行三部分,且三部分的时间分别是取值2ns,分析2ns,执行1ns,那么,流水线周期是多少?100条指令全部执行完毕需要的时间是多少?
在这里插入图片描述

显然,通过定义可以得到,该流水线周期为2ns 需要的时间通过两个公式计算可分别得到理论203,实践204,这两种都是正确答案,在做题时,可灵活选择

大家一定很疑惑,为什么会出现两种结果,为什么不是一个最为标准的答案,小编在这里给大家一些解释,希望可以理解。

通过上图来解释这两种计算方法
方法1,一共三道工序,那么三道工序总时长就是2+2+1=5ns,在第一个产品完成之后,是不是第二个产品也进入了最后一个工序,也就是说在之前5的基础上再加上一个周期,便是第二个产品结束的时间,依次类推,最后一个产品完成的时间,是不是在5的基础上再加n-1个周期。(大家有没有想过第三道工序其实还有着1ns的空窗期,因为周期是2,而第三道工序时间是1)
方法2,将每一个工序的时间都看作2ns,那么整体完成时间不就是第一个产品的几道工序,再加上剩下产品的最后一道工序吗?也就是(3+n-1)*2.

  • 流水线的吞吐率计算
    吞吐率是指单位时间内流水线完成的任务数量或输出的结果数量。计算流水线吞吐率的基本公式如下:
    在这里插入图片描述
    带入到上题可得TP=100/203
  • 流水线的加速比
    完成同样一批任务,不使用流水线所用的时间与使用流水线所用时间之比称为流水线的加速比。计算流水线的加速比公式如下:
    在这里插入图片描述
    将上题的情景带入
    不使用流水线执行时间(2+2+1)*100
    使用流水线时间203
    即s=500/203
  • 流水线的效率
    流水线的效率是指流水线的设备利用率。在时空图上,流水线的效率定义为n个任务占用的时空区与k个流水段总的时空区之比
    计算流水线的公式:在这里插入图片描述
    在这里插入图片描述
    通过上图来计算效率,n个任务占用的时空区=4*(1+1+1+3),k个流水段的总的时空区,即所有格子的总面积,也就是15*4,。
    所以效率也可以这样理解,即做任务的格子面子/总格子的面积。

不知道小编的解释大家能不能理解,如果有什么问题,欢迎大家提问和指正!!!

猜你喜欢

转载自blog.csdn.net/Desire_Dir_W/article/details/114446468