计算机组织与系统结构第七章习题答案(2)

2018-11-24 16:21

8. 假定有一个程序的指令序列为“lw, add, lw, add, …”。add指令仅依赖它前面的lw指令,而lw指令也仅依赖它前面的add指令,寄存器写口和寄存器读口分别在一个时钟周期的前、后半个周期内独立工作。请问:(1)在带转发的五段流水线中执行该程序,其CPI为多少?

(2)在不带转发的五段流水线中执行该程序,其CPI为多少?

参考答案:(1)因为lw指令和add指令之间存在一个load- use数据冒险,所以每个lw指令和add指令之间要有一次流水线阻塞。而add指令和lw指令之间的数据冒险可通过数据转发解决。即:CPI为1.5

(2)如果没有转发,而寄存器写口和寄存器读口分别在一个时钟周期的前、后半个周期内工作,则在每条lw指令和add指令之间将会有两个阻塞,这样每条指令相当于都要有三个时钟才能完成。即:CPI为3

? 161 ?

9. 假定在一个带转发功能的五段流水线中执行以下程序段,则可以怎样调整以下指令序列使其性能达到最好?

参考答案:

1 2 3 4 5 6 7

因为采用“转发”技术,所以,只要对load-use数据冒险进行指令序列调整。从上述指令序列来看,第1和第2条指令、第6和第7条指令之间存在load-use数据冒险,所以,可将与第2和第3条指令无关的第4条指令插入第2条指令之前;将无关的第5条指令插入第7条指令之前。调整顺序后的指令序列如下(粗体部分为变换了位置的指令)。

lw $2, 100($6) add $6, $4, $7 add $2, $2, $3 lw $3, 200($7) lw $2, 300($8) sub $3, $4, $6 beq $2, $8, Loop

lw $2, 100($6) add $2, $2, $3 lw $3, 200($7) add $6, $4, $7 sub $3, $4, $6 lw $2, 300($8) beq $2, $8, Loop

? 162 ?

10. 在一个采用“取指、译码/取数、执行、访存、写回”的五段流水线中,若检测结果是否为“零”的操作在执行阶段进行,则分支延迟损失时间片(即分支延迟槽)为多少?以下一段MIPS指令序列中,在考虑数据转发的情况下,哪些指令执行时会发生流水线阻塞?各需要阻塞几个时钟周期? 1 loop:

2

3 4 5 6 7 8

add $t1, $s3, $s3 add $t1, $t1, $t1 add $t1, $t1, $s6 lw $t0, 0($t1) bne $t0, $s5, exit add $s3, $s3, $s4 j

loop

exit:

参考答案:

若检测操作在执行阶段进行,则分支延迟损失时间片(即分支延迟槽)为2。

分析:发生数据相关的是:第1和第2条指令之间关于$t1,第2和第3条指令之间关于$t1,第3和第4条指令之间关于$t1,第4和第5条指令之间关于$t0,以及第6和第1条指令之间关于$s3。此外,第5和第7条指令的执行都会发生控制相关。

对于数据冒险,如果不采用“转发”,而是简单地通过加入nop指令来避免冒险的话,那么应该在第2、3、4、5条指令前各加两条nop指令,以消除数据相关;对于第6条和第1条指令之间的数据相关,则可通过在第7条“j loop”指令后面加一条或两条nop指令消除(这样同时还能解决第7条“j loop”指令的控制冒险);

此处,第2、3、4条指令所需的操作数可通过“转发”得到,无需加nop指令。第5条bne指令所需的操作数$t0是load-use冒险,不能用“转发”解决问题,需要在第5条指令前加一条nop指令,或通过硬件将第5条指令的执行阻塞一个时钟周期。

j指令如果在译码阶段就根据译码结果计算跳转目标地址,那么j指令后面指令会被阻塞1个时钟周期,若在执行阶段计算,则要阻塞2个时钟周期。

? 163 ?

------------------------- 其它

11. 假设数据通路中各主要功能单元的操作时间为:存储单元:200ps;ALU和加法器:100ps;

寄存器堆读口或写口:50ps。程序中指令的组成比例为:取数25%、存数10%、ALU52%、分支11%、跳转2%。假设时钟周期取存储器存取时间的一半,MUX、控制单元、PC、扩展器和传输线路等的延迟都忽略不计,则下面的实现方式中,哪个更快?快多少? (1)单周期方式:每条指令在一个固定长度的时钟周期内完成;

(2)多周期方式:每类指令时钟数:取数-7,存数-6,ALU-5,分支-4,跳转-4; (3)流水线方式:取指1、取指2、取数/译码、执行、存取1、存取2、写回7段流水

线;没有结构冒险;数据冒险采用“转发”技术处理;load指令与后续各指令之间存在依赖关系的概率分别1/2、1/4、1/8、…;分支延迟损失时间片为2,预测准确

率为75%;不考虑异常、中断和访问失效引起的流水线冒险。 参考答案:

单周期:存储器操作变为两个时钟周期后,其数据通路的时钟周期不变,为600ps

多周期:CPI=0.25x7+0.10x6+0.52x5+0.11x4+0.02x4 = 5.47

存储器操作变为两个时钟周期后,多周期数据通路的时钟周期为100ps, 故一条指令的执行时间为100x5.47=547ps

流水线:存储器操作变为两个时钟周期后,其流水线包含了7个阶段.

对于ALU指令,随后的数据相关指令都可通过转发解决,故CPI=1 对于Store指令,不会发生数据冒险,故CPI=1

对于Jump指令,总要等到译码结束才能确定转移地址,故CPI=3(取指1,2,译码)

对于beq,若预测正确,则为1个周期,若预测错误,则为3个周期,故

CPI=1/4x3+3/4x1=1.5

对于load,随后第一条则为3个(阻塞2个)周期;随后第二条则为2个(阻塞1个)

周期,以后的指令都不需要阻塞,故CPI=1/2x3+1/4x2+2/8x1=2.25

平均CPI为:2.25x25%+1x10%+1x52%+1.5x11%+3x2%=1.41 所以, 1条指令的执行时间为1.41x100=141(ps)

? 164 ?

12.假设有一段程序的核心模块中有五条分支指令,该模块将会被执行成千上万次,在其中一次执行过程中,五条分支指令的实际执行情况如下(T:Taken;N:not Taken)。

分支指令1(B1):T–T–T。 分支指令2(B2):N–N–N–N。 分支指令3(B3):T–N–T–N–T–N。 分支指令4(B4):T–T–T–N–T。 分支指令5(B5):T–T–N–T–T–N–T。

假定各个分支指令在每次模块执行过程中实际执行情况都一样,并且动态预测时,每个分支指令都有各自的预测表项,每次执行时的初始预测位都相同。请给出以下几种预测方案的预测准确率。

(1)静态预测,总是预测转移 (Taken)。 (2)静态预测,总是预测不转移(not Taken)。 (3)一位动态预测,初始预测转移 (Taken)。 (4)二位动态预测,初始预测弱转移(Taken)。 【分析解答】

预测准确率=预测正确次数/总预测次数×100%。以下R表示正确预测次数,W表示错误预测次数。

(1)B1: R-3, W-0; B2: R-0, W-4; B3: R-3, W-3; B4: R-4, W-1; B5: R-5, W-2;60% (2)B1: R-0, W-3; B2: R-4, W-0; B3: R-3, W-3; B4: R-1, W-4; B5: R-2, W-5;40% (3)B1: R-3, W-0; B2: R-3, W-1; B3: R-1, W-5; B4: R-3, W-2; B5: R-3, W-4;52% (4)B1: R-3, W-0; B2: R-3, W-1; B3: R-3, W-3; B4: R-4, W-1; B5: R-5, W-2;72% B4 静态预测,总是预测转移 总是预测不转移 一位动态预测,初始预测转移 二位动态预测,初始预测弱转移

? 165 ?

T 对 T 对 T 对 N 错 T 对 错 错 错 对 错 对 对 对 错(N) 错 对(强转移) 对(强转移) 对(强转移) 错(弱转移) 对


计算机组织与系统结构第七章习题答案(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:年加工6万吨大米生产线低温碾米抛光技术改造项目可行性研究报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: