流水线的概念
流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。即可以同时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均执行速度。
我们都知道,在执行一条指令的过程中,最少要经历 取指 分析 执行 三个步骤,也就是说,假设有三个指令1 、2、 3,当我们在正常情况下,在执行指令1的时候,会首先对指令1按照以上三个步骤进行处理,处理完毕后在对指令2进行处理,以此类推。而流水线的应用,就是像我们在工厂中一样,当对指令1进行分析工作时,同时对指令2进行取指,继续执行,当指令1到达执行阶段时,指令2进入分析阶段1同时对于指令3进行取指处理,这样就大大增加了对于时间的利用率。
流水线的计算
1、流水线的执行时长
①关于流水线的周期,我们需要知道的是,流水线周期(△t)为指令执行阶段中执行时间最长的一段。
②流水线的计算公式为:
完成一条指令所需的时间+(指令条数-1)*流水线周期,在这个公式中,又存在理论公式和实践公式。
理论公式:
实践公式:(k+n-1)*△t k为一条指令所包含的部分的多少
例题:若指令流水线一条指令分为取指、分析、执行三个阶段,并且这三个阶段的时间分别为取指1ns,分析2ns,执行1ns,则流水线的周期为多少?100条指令全部执行完毕需要执行的时间是多少?
分析:上面已经说过,流水线的周期为花费时间最长的阶段所花费的时间,所以流水线的周期就是2ns。
根据理论公式,T=(1+2+1)+(100-1)2=4+992=202ns
根据实践公式,T=(3+100-1)*2=204ns
在这里,需要注意的是,因为流水线的理论公式和实践公式的结果不一样,但是在考试过程中可能都会考到,所以,在应用时,先考虑理论公式,后考虑实践公式。
2、流水线的加速比计算
流水线的加速比指的是在完成同一批任务时,不使用流水线所用的时间与使用流水线所用的时间之比称之为流水下的加速比。加速比是越大越好的,它呈现了使用流水线的效果的好坏程度。
基本公式为:S=不使用流水线执行时间 / 使用流水线的执行时间
如1中的例题:其加速比为S=(1+2+1)*100/(1+2+1)+(100-1)*2
3、流水线的效率
流水线的效率指的是流水线的设备利用率。在时空图上,流水线的效率定义为n个任务占用的时空与k个流水线总的时空区之比。
假设有一个需要完成的任务由四部分组成,如图一所示:
在实际流水线执行中,有以下时空图表示,如下图所示:
由图一可知,流水线的周期长为3△t
由时空图可知,在流水线应用过程中,并不是所有的时间都完美应用到,仍有时间存在空置,所以,在效率计算时,可以从两个方面进行理解。
①从公式计算:E=n个任务占用的时空区 / k个流水线的总的时空区
如上图结果为:E=(△t+△t+△t+3△t)4 / 15△t4
②从图中的面积理解:流水线的效率等于阴影所占方块与图中所有方块的比值
4、流水线吞吐率的计算
流水线的吞吐率指的是在单位时间内流水线所完成的任务数量或输出的结果数量。基本公式为: E=(△t+△t+△t+3△t)4 / 15△t4
流水线的最大吞吐率为: