一、单项选择题下列各题给出的4个选项中,只有1个最符合试题要求
40. 下列关于指令流水线设计的叙述中,错误的是______。
- A.指令执行过程的各个子功能都必须包含在某个流水段中
- B.所有子功能都必须按一定的顺序经过流水段
- C.虽然各子功能实际时间可能不同,但经过每个流水段的时间都一样
- D.任何时候各个流水段的功能部件都不可能执行空操作
A B C D
D
[解析] 流水线只是引入了指令的“并行处理”,故各个子功能不可缺少,且顺序不变,为了并行方便,在确定每个流水段的宽度时,以最复杂流水段所需要的宽度来设计,故长度都一样。因此A、B、C都正确。
在发生资源相关冲突的情况下,功能部件就可能执行空操作。
表1 指令的流水段对应的独立功能部件(一)
在表1中,在第四个时钟周期,第I1条的MEM段(访存取数)与第I4条的IF段(访存取指令)都要访问存储器。当数据和指令放在同一个存储器且只有一个访问口时,便发生两条指令争用存储器资源的相关冲突。有两个解决办法:①第I4条的IF段停顿一个时钟周期再启动,见表2。②增加一个存储器,将指令和数据分别放在两个存储器中。
表2 指令的流水段对应的独立功能部件(二)
在表2中,第四个时钟周期,取指功能部件是在执行空操作的。
因此本题错误选项为D。
41. 下列关于超流水线技术的描述,错误的是______。
Ⅰ.超流水线技术可以使一条指令的执行时间更短
Ⅱ.超流水线技术可以提高处理器的时钟频率
Ⅲ.超流水线技术在每个时钟周期内可同时并发多条独立指令
Ⅳ.使用了超流水线技术,在原来的时钟周期内,功能部件被使用的次数不变
A B C D
C
[解析] 超流水线技术是通过细化流水,提高主频,使得机器在一个周期内完成一个甚至多个操作。
下图中将原来一个时钟周期分成了3段,故在原来的时钟周期内,功能部件被使用了3次,使流水线以3倍于原来时钟频率的速度运行。了解了超流水线技术之后,我们来分析这4个描述。
超流水线技术
超流水线技术相当于把原来的流水段“流水线化”,故单条指令的执行时间是变长的,因为采用流水线方式使得指令吞吐率提高了,即在给定的时间内完成指令执行的条数增加了,但每条指令的执行过程没有减少,所以不会缩短一条指令的执行时间,反而会延长一条指令的执行时间,故Ⅰ错误。
Ⅱ明显正确,超流水线技术使得主频提高了。
Ⅲ不对,超流水线技术在一个新的时钟周期中(图中新的时钟周期为原时钟周期的1/3),每个时钟周期也只能发射一条指令。
Ⅳ不对,在原时钟周期内(图中即为1),功能部件其实被使用了多次(图中为3次)。
二、综合应用题设有一个CPU的指令执行部件如下图所示,由Cache每隔100ns提供4条指令。(注:B1、B2和B3是3个相同的并行部件)
一个CPU的指令执行部件
1. 画出该指令流水线功能段的时空图。
本题考查用时空图描述流水线的工作过程和流水线性能的计算方法。本题中的流水线使用重复设置瓶颈段的方法来消除瓶颈。B1、B2和B3段是本题的关键,分为3条路径,每条都是300ns,完全可以满足流水线的输入。
在流水线的B段,可以同时并行执行3条指令。流水线的时空图如下图所示。
流水线的时空图(一)
2. 试计算流水线执行这4条指令的实际吞吐率和效率。
完成4个任务的周期为T=(100+100+100+300+100+300)ns=1000ns,任务数为N=4,则实际吞吐率为
TP=N/T=(4/1000)×10
9=0.4×10
7(条指令/秒)
流水线的效率为

假设有一个计算机工程师想要设计一个新的CPU,其中运行的一个典型程序的核心模块有一百万条指令,每条指令执行时间为100ps。请回答下面两个问题:3. 若新CPU是一个20级流水线处理器,忽略流水段之间的寄存器延迟,执行上述同样的程序,理想情况下,它的速度是非流水线处理器的多少倍?
若在20级流水线上执行,忽略流水段之间的寄存器延迟,理想情况下,每个时钟周期为非流水线处理器的时钟周期的1/20,因此执行上述同样的程序,它的速度是非流水线处理器的20倍。
注:本题也可以先计算出非流水线处理器的执行时间,再算出新CPU的程序执行时间,最后将二者的比值就得到速度的倍数关系。
4. 实际流水线并不是理想的,流水段之间的数据传送会有额外开销。相比于理想情况,这些开销会如何影响指令执行时间和指令吞吐率。
流水段之间数据的传递产生的额外开销,使得一条指令的执行时间被延长,相对于理想情况,指令执行时间是变长了。同时这些开销延长了每个流水段的时间,即降低了指令吞吐率。
5. 在一个按照程序完成的超标量指令流水线中,将指令的执行过程分为译码、执行和写回三个阶段。译码部件能够同时执行读取和译码两条指令,在这两条指令都启动执行后,再读取两条指令。流水线的执行阶段具有三个不同的功能部件(即加法和乘法部件等),具有相关的专用通道。写回阶段有两个结果写回流水部件,只有在每两条指令都执行完成时,同时写回两个结果。假定有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 流水线时空图(三)
也是正确的,因为题目对两个同时启动的指令是没有优先级概念的,是同等的,故哪个指令先执行都是有可能的。但即使如此处理,各指令的完成时间还是不变,故答案还是唯一的。
指令流水线有取指(IF)、译码(ID)、执行(EX)、访存(MEM)、写回寄存器堆(WB)5个过程段,共有12条指令连续输入此流水线。6. 画出流水线的时空图,假设时钟周期100ns。
7. 求流水线的吞吐率。
流水线的吞吐率(ThoughPut rate,TP)是指在单位时间内流水线所完成的任务数量或输出的结果数量。如果n为任务数,Tk是处理完成n个任务所用的时间,那么吞吐率为

8. 求流水线的加速比。
流水线的加速比(S:Speedup Ratio):不使用流水线所用的时间与使用流水线所用的时间之比即为流水线的加速比。如果顺序执行所用的时间为T
o,使用流水线的时间为T
k,那么加速比为

设一RISC机的指令流水线由5个过程段组成:取指(IF)、指令译码与读R寄存器(ID)、ALU运算与地址计算(EX),访问存储器(MEM),结果写回寄存器(WB)。现执行下列程序段:
ADD R1, R2, R3; (R1)+(R2)→R3
LW R4, @R1; ((R1))→R4
SUB R5, R4, R3; (R4)-(R3)→R59. 画出流水线时空图,并分析上述程序段存在哪些数据相关?若要解决此数据相关,则软硬件各有哪些方法?
流水线时空图如下图所示。
流水线时空图(五)
ADD指令和LW指令之间的对R1的写后读相关。LW指令和SUB指令之间的对R4的写后读相关。
硬件上可以采用定向技术。软件上可以采用编译器调度,调整指令执行顺序。
10. 在这一流水线中,有哪种数据相关不可能发生,为什么?
写后写相关不可能发生。因为流水线只有在WB段写寄存器,而且每段的时间都是一个时钟周期,后面的指令写操作不会早于前面的指令写操作,所以写后写相关不可能发生。