【正确答案】本题考查超标量指令流水线,考查内容并不难,就是每个时钟周期可以有多个指令同时开始执行。但由于本题条件非常多,提高了题目难度,故一定要读懂每句的意思,再开始做题。
由已知条件可以得到,译码部件能够同时执行读取和译码两条指令,故译码部件在第一个时钟周期,执行I1和I2;在第二个时钟周期,执行I3和I4;在第三个时钟周期,执行I5和I6。
执行功能部件,第一个时钟周期空闲。在第二个时钟周期,才启动I1和I2,由于I1需要两个周期,I2需要一个周期,第二个时钟周期结束后,I2开始延迟等待。在第三个时钟周期,I3启动,I1和I3同时执行,又已知I3~I6都共用一个功能部件,所以I4必须等到I3执行周期完成后才能启动。在第四个时钟周期,I4启动执行。第五个时钟周期,I5启动执行。第六个时钟周期,I6启动执行。
写回部件,第一、二个时钟周期空闲。第三个时钟周期,虽然I2执行完成,但I1还未执行完成,又已知写回部件需要两条指令都完成才会工作,故第二个时钟周期仍然空闲。第四个时钟,I1和I2执行阶段都结束,I1和I2进入写回阶段。在第五个时钟周期,I3和I4的执行阶段都结束,I3和I4进入写回阶段。在第六个时钟周期,虽然I5执行完成,但I6还未执行完成,故第六个时钟周期空闲。在第七个时钟周期,I5和I6的执行阶段都结束了,I5和I6进入写回阶段。
根据上述分析,流水线时空图如图1所示。
[*]
图1 流水线时空图(二)
其中,I1和I2的完成时间为4t,I3和I4的完成时间为5t,I5和I6的完成时间为7t。
[注] 有些同学所画的流水线时空图可能如图2所示。
[*]
图2 流水线时空图(三)
也是正确的,因为题目对两个同时启动的指令是没有优先级概念的,是同等的,故哪个指令先执行都是有可能的。但即使如此处理,各指令的完成时间还是不变,故答案还是唯一的。