指令流水线的画法

来源:互联网 发布:孕妇 衣服 品牌 知乎 编辑:程序博客网 时间:2024/04/30 09:41

指令流水线的画法:

这里写图片描述


解题想法:
流水线有五段,分别为S1,S2,S3,S4,S5. 其中S4的执行时间为2△T,其他都是△T,乘法使用的是S1,S2,S5,加法使用的是S1,S3,S4,S5。
利用吞吐率加速比和效率公式可不可以计算?
对于此类题目,最好画出指令流水线,因为公式法有一定的局限性。
这里写图片描述
这里写图片描述

画好了!!这样画是对的!!!可是为什么这样画呢?


因为:
第一步:
把A1*B1当做是第一个指令(无数据相关),在图中用1表示。
把A2*B2当做是第二个指令(无数据相关),在图中用2表示。
把A3*B3当做是第三个指令(无数据相关),在图中用3表示。
把A4*B4当做是第四个指令(无数据相关),在图中用4表示。
第二步:
先算(A1*B1)+(A2*B2),结果设为S1,当做第五个指令。在图中用5表示。
先算(A3*B3)+(A4*B4),结果设为S2,当做第六个指令。在图中用6表示。
但是大家有没有发现S5是要等第一和第二条指令算完才可以进行计算。
(因为他们的计算数据是前面指令的结果)
所以在图中我们可以看到在输入1234四条指令之后,马上输入了第五条指令,是因为在S5的流水段的时候,1,2条指令已经执行完了。
然后输入第六条指令,因为第六条指令于第三条和第四条指令有数据相关,所以必须等第三条和第四条指令执行完毕再输入。
(注意第五和第六条指令为加法,在S4段的时候时间为2△t,需要占两个空格,因为一个空格为△t)
第三步:
输入第七条指令,因为第七条指令与第五条和第六条指令有数据相关,所以必须等到第五条和第六条指令只想完毕之后才可输入第七条指令。


结算结果:
这里写图片描述

因为输入了七条指令,所以n是7同时因为使用了流水线,指令的运行时间为16△t。不使用流水线的话一共需要花费的 时间是27△t。


说的不是很好,有不清楚的可以留言!!!

0 0