深入浅出说流水线
最后更新于:2022-04-02 00:36:11

注意:1 是准并行,不是真正的并行。2 流水线提高的是部件的利用率和指令的平均执行速度,单个指令执行的速度没有提高。

流水线指令的特点:用流水线执行的指令都是相同的操作指令,而且它们可以分成如上图一样若干相同的步骤。

由上图可以清楚的看出,在未使用流水线的情况下,三条指令之间的那些蓝色空白设备都处于空闲状态,这些时间就都浪费掉了。

而采用流水线以后,所用时间由原来的9t缩短到5t,节省了进一半的时间。很大的提高了设备的利用率,缩短了整体的时间,不过此时单个指令执行的时间还是3t。因为流水线不能改变单个指令的时间。

其中Δtj为流水线周期。
上图所示就是流水线运行时间的计算公式,看起来很复杂其实非常简单。就是:执行一条指令的时间+(指令条数-1)×流水线周期。还有一种计算方法,是用一条指令所分的段数×流水线的周期+(指令条数-1)×流水线周期,软考中一般做题的时候首先按照公式去求,如果选项里面没有再按第二种方法去求。选项里面不会同时出现这两种方式计算出的结果。

第二种方法把一条指令每一段的执行时间都当成了流水线的周期来计算,可以看成一种粗略的计算方式。

而公式法是计算的每一段的具体时间,相对第二种方法来说更加的准确,所以默认先用公式求解。
了解了这些流水线也就解决了,其他什么吞吐率、加速比就太简单了。不在此赘述了。
';