问答题 假设有一个计算机工程师想要设计一个新的CPU,其中运行的一个典型程序的核心模块有一百万条指令,每条指令执行时间为100ps。请回答下面两个问题:
问答题 若新CPU是一个20级流水线处理器,忽略流水段之间的寄存器延迟,执行上述同样的程序,理想情况下,它的速度是非流水线处理器的多少倍?
【正确答案】若在20级流水线上执行,忽略流水段之间的寄存器延迟,理想情况下,每个时钟周期为非流水线处理器的时钟周期的1/20,因此执行上述同样的程序,它的速度是非流水线处理器的20倍。 注:本题也可以先计算出非流水线处理器的执行时间,再算出新CPU的程序执行时间,最后将二者的比值就得到速度的倍数关系。
【答案解析】
问答题 实际流水线并不是理想的,流水段之间的数据传送会有额外开销。相比于理想情况,这些开销会如何影响指令执行时间和指令吞吐率。
【正确答案】流水段之间数据的传递产生的额外开销,使得一条指令的执行时间被延长,相对于理想情况,指令执行时间是变长了。同时这些开销延长了每个流水段的时间,即降低了指令吞吐率。
【答案解析】
问答题 在一个按照程序完成的超标量指令流水线中,将指令的执行过程分为译码、执行和写回三个阶段。译码部件能够同时执行读取和译码两条指令,在这两条指令都启动执行后,再读取两条指令。流水线的执行阶段具有三个不同的功能部件(即加法和乘法部件等),具有相关的专用通道。写回阶段有两个结果写回流水部件,只有在每两条指令都执行完成时,同时写回两个结果。假定有6条指令(I1,I2,I3,I4,I5,I6),其中: I1指令需要两个执行周期,其他指令都只需要一个执行周期; I3、I4、I5和I6使用相同的功能部件; 指令启动部件在发现后续指令和当前指令有功能部件冲突时,将停止启动后续的指令,直至当前指令完成后,才启动后续的指令。 根据上述要求,试分析其执行过程,假设起始时间为0,时钟周期为t,这6条指令各是何时完成执行过程。
【正确答案】本题考查超标量指令流水线,考查内容并不难,就是每个时钟周期可以有多个指令同时开始执行。但由于本题条件非常多,提高了题目难度,故一定要读懂每句的意思,再开始做题。
由已知条件可以得到,译码部件能够同时执行读取和译码两条指令,故译码部件在第一个时钟周期,执行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 流水线时空图(三)

也是正确的,因为题目对两个同时启动的指令是没有优先级概念的,是同等的,故哪个指令先执行都是有可能的。但即使如此处理,各指令的完成时间还是不变,故答案还是唯一的。
【答案解析】