计算机体系结构习题答案 联系客服

发布时间 : 星期一 文章计算机体系结构习题答案更新完毕开始阅读bc913109fad6195f312ba679

如果不用流水线,由于一次求积需3△t,一次求和需5△t,则产生上述7个结果共需(4×5+3×3)△t =29△t。所以加速比为: 2 9 ? t

S??1.6118?t

该流水线的效率可由阴影区的面积和5个段总时空区的面积的比值求得: 4 ? 5 ? 3 ? 3 ? 0 .3 22 E?5?18

S1 S2 S3 乘法 加法 S4 S5 S6 3.15 动态多功能流水线由6个功能段组成,如下图:

其中,S1、S4、S5、S6组成乘法流水线,S1、S2、S3、S6组成加法流水线,各个功能段时间均为50ns,假设该流水线的输出结果可以直接返回输入端,而且设置有足够5的缓冲寄存器,若以最快的方式用该流水计算:?xiyizi

i?1(1) 画出时空图;

(2) 计算实际的吞吐率、加速比和效率。 解:机器一共要做10次乘法,4次加法。

3.16 在MIPS流水线上运行如下代码序列:

LOOP: LW R1,0(R2) DADDIU R1,R1,#1 SW R1, 0(R2)

17

DADDIU R2,R2,#4

DSUB R4,R3,R2 BNEZ R4,LOOP

其中:R3的初值是R2+396。假设:在整个代码序列的运行过程中,所有的存储器访问都是命中的,并且在一个时钟周期中对同一个寄存器的读操作和写操作可以通过寄存器文件“定向”。问:

(1) 在没有任何其它定向(或旁路)硬件的支持下,请画出该指令序列执行的流

水线时空图。假设采用排空流水线的策略处理分支指令,且所有的存储器访问都命中Cache,那么执行上述循环需要多少个时钟周期?

(2) 假设该流水线有正常的定向路径,请画出该指令序列执行的流水线时空图。

假设采用预测分支失败的策略处理分支指令,且所有的存储器访问都命中

Cache,那么执行上述循环需要多少个时钟周期?

(3) 假设该流水线有正常的定向路径和一个单周期延迟分支,请对该循环中的指

令进行调度,你可以重新组织指令的顺序,也可以修改指令的操作数,但是注意不能增加指令的条数。请画出该指令序列执行的流水线时空图,并计算执行上述循环所需要的时钟周期数。 指令123456789LW IFIDEXMWB解:

DADDIUIFSSIDEXMWB寄存器读写可以定向,无其他旁路硬件支持。排空流水线。 SWIFSSIDEXMDADDIUIFIDE

DSUBIFS第i次迭代(i=0..98)开始周期:1+(i×17)

BNEZ总的时钟周期数:(98×17)+18=1684 LW 有正常定向路径,预测分支失败。

第i次迭代(i=0..98)开始周期:1+(i×10) 指令LW总的时钟周期数:(98×10)+11=991

DADDIU有正常定向路径。单周期延迟分支。

SWLOOP: LW R1,0(R2)

DADDIUDADDIU R2,R2,#4 DSUBBNEZDADDIU R1,R1,#1

LWDSUB R4,R3,R2 BNEZ R4,LOOP

SW R1,-4(R2)

第i次迭代(i =0..98)开始周期:1+(i×6) 总的时钟周期数:(98×6)+10=598

3.17 假设各种分支指令数占所有指令数的百分比如下: 条件分支 跳转和调用 20%(其中的60%是分支成功的) 5% 18

1IFIDIF23456EXMWBIDSEXMIFSIDEXIFIDIF7WBMEXIDIF指令LW DADDIUDADDIUDSUBBNEZSWLW 1IFIDIF234EXMIDEXIFIDIF5WBMEXIDIFWMEIDIF现有一条段数为4的流水线,无条件分支在第二个时钟周期结束时就被解析出来,

而条件分支要到第三个时钟周期结束时才能够被解析出来。第一个流水段是完全独立于指令类型的,即所有类型的指令都必须经过第一个流水段的处理。请问在没有任何控制相关的情况下,该流水线相对于存在上述控制相关情况下的加速比是多少?

解:没有控制相关时流水线的平均CPI=1

存在控制相关时:由于无条件分支在第二个时钟周期结束时就被解析出来,而条件分支

要到第3个时钟周期结束时才能被解析出来。所以:

(1)若使用排空流水线的策略,则对于条件分支,有两个额外的stall,对无条件分支,有一个额外的stall:

CPI = 1+20%*2+5%*1 = 1.45 加速比S=CPI/1 = 1.45 (2) 若使用预测分支成功策略,则对于不成功的条件分支,有两个额外的stall,对无条件分支和成功的条件分支,有一个额外的stall 1:

CPI = 1+20%*(60%*1+40%*2) +5%*1 = 1.33 加速比S=CPI/1 = 1.33

(3)若使用预测分支失败策略,则对于成功的条件分支,有两个额外的stall;对无条件分支,有一个额外的stall;对不成功的条件分支,其目标地址已经由PC 值给出,不必等待,所以无延迟:

CPI = 1+20%*(60%*2 + 40%*0) +5%*1 = 1.29 加速比S=CPI/1 = 1.29

3.18 在CRAY-1机器上,按照链接方式执行下述4条向量指令(括号中给出了相应功能部件的执行时间),如果向量寄存器和功能部件之间的数据传送需要1拍,试求此链接流水线的通过时间是多少拍?如果向量长度为64,则需多少拍才能得到全部结果? V0←存储器 (从存储器中取数:7拍) 访存 V2←V0+V1 (向量加:3拍)

V3←V2

解:通过时间就是每条向量指令的第一个操作数执行完毕需要的时间,也就是各功向量加能流水线由空到满的时间,具体过程如下图所示。要得到全部结果,在流水线充满之后,向量中后继操作数继续以流水方式执行,直到整组向量执行完毕。

T通过=(7+1)+(1+3+1)+(1+4+1)+(1+2+1)=23(拍)T总共?T通过+(64-1)=23+63=86(拍)V2左A33.19 某向量处理机有16个向量寄存器,其中V0~V5中分别放有向量A、B、C、D、E、

F,向量长度均为8,向量各元素均为浮点数;处理部件采用两条单功能流水线,加法功能部件时间为2拍,乘法功能部件时间为3拍。采用类似于CARY-1的链接技术,先计算(A+B)*C,在流水线不停流的情况下,接着计算(D+E)*F。

(1) 求此链接流水线的通过时间?(设寄存器入、出各需1拍)

(2) 假如每拍时间为50ns,完成这些计算并把结果存进相应寄存器,此处理部

19

件的实际吞吐率为多少MFLOPS?

解:(1)我们在这里假设A+B的中间结果放在V6中,(A+B)×C地最后结果放在V7中,D+E地中间结果放在V8中,(D+E)×F的最后结果放在V9中。具体实现参考下图:

通过时间应该为前者((A+B)×C)通过的时间:

T通过= (1+2+1)+(1+3+1) =9(拍)

(2)在做完(A+B)×C之后,作(C+D)×E就不需要通过时间了。 V0AV1BV6V2CV6←A+B

V7←V6×C V8←D+E 向量加V9←V8×F

T?T通过+(8-1)?8?24(拍)?1200(ns)32TP??26.67MFLOPSTV向量乘V3DV4EV8V5FV第5章 存储层次

5.1解释下列术语

多级存储层次:采用不同的技术实现的存储器,处在离CPU不同距离的层次上,各存储器之间一般满足包容关系,即任何一层存储器中的内容都是其下一层(离CPU更远的一层)存储器中内容的子集。目标是达到离CPU最近的存储器的速度,最远的存储器的容量。

全相联映象:主存中的任一块可以被放置到Cache中任意一个地方。 直接映象:主存中的每一块只能被放置到Cache中唯一的一个地方。

组相联映象:主存中的每一块可以放置到Cache中唯一的一组中任何一个地方(Cache分成若干组,每组由若干块构成)。

替换算法:由于主存中的块比Cache中的块多,所以当要从主存中调一个块到Cache中时,会出现该块所映象到的一组(或一个)Cache块已全部被占用的情况。这时,需要被迫腾出其中的某一块,以接纳新调入的块。

LRU:选择最近最少被访问的块作为被替换的块。实际实现都是选择最久没有被访问的块作为被替换的块。

写直达法:在执行写操作时,不仅把信息写入Cache中相应的块,而且也写入下一级存储器中相应的块。

写回法:只把信息写入Cache中相应块,该块只有被替换时,才被写回主存。 按写分配法:写失效时,先把所写单元所在的块调入Cache,然后再进行写入。 不按写分配法:写失效时,直接写入下一级存储器中,而不把相应的块调入Cache。 命中时间:访问Cache命中时所用的时间。

失效率:CPU访存时,在一级存储器中找不到所需信息的概率。

20