您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 计算机系统结构-第四章(习题解答)
1.假设一条指令的执行过程分为“取指令”、“分析”和“执行”三段,每一段的时间分别是△t、2△t和3△t。在下列各种情况下,分别写出连续执行n条指令所需要的时间表达式。⑴顺序执行方式。⑵仅“取指令”和“执行”重叠。⑶“取指令”、“分析”和“执行”重叠。答:⑴顺序执行方式12......1212T=n1iiii)ttt(执行分析取址=n(△t+2△t+3△t)=6n△t⑵仅“取指令”和“执行”重叠12......1212T=6△t+1-n1iii)tt(执行分析=6△t+(n-1)(2△t+3△t)=(5n+1)△t⑶“取指令”、“分析”和“执行”重叠1234......12341234△t2△t3△t△t2△t3△t△t2△t3△tT=6△t+1-n1ii)t(执行=6△t+(n-1)(3△t)=(3n+3)△t2.一条线性流水线有4个功能段组成,每个功能段的延迟时间都相等,都为△t。开始5个任务,每间隔一个△t向流水线输入一个任务,然后停顿2个△t,如此重复。求流水线的实际吞吐率、加速比和效率。答:123456789101112131415...1234567891011121314151234567891011121314151234567891011121314151234567891011121314151617181920212223我们可以看出,在(7n+1)Δt的时间内,可以输出5n个结果,如果指令的序列足够长(n→∞),并且指令间不存在相关,那么,吞吐率可以认为满足:)n(t75t)n/17(5t)1n7(n5TP加速比为:)n(720n/17201n7n20t)1n7(t4n5S从上面的时空图很容易看出,效率为:)n(75n/1751n7n5t)1n7(4t4n5E3.用一条5个功能段的浮点加法器流水线计算101iiAF。每个功能段的延迟时间均相等,流水线的输出端与输入端之间有直接数据通路,而且设置有足够的缓冲寄存器。要求用尽可能短的时间完成计算,画出流水线时空图,计算流水线的实际吞吐率、加速比和效率。答:首先需要考虑的是“10个数的和最少需要做几次加法?”,我们可以发现,加法的次数是不能减少的:9次;于是我们要尽可能快的完成任务,就只有考虑如何让流水线尽可能充满,这需要消除前后指令之间的相关。由于加法满足交换律和结合律,我们可以调整运算次序如以下的指令序列,我们把中间结果寄存器称为R,源操作数寄存器称为A,最后结果寄存器称为F,并假设源操作数已经在寄存器中,则指令如下:I1:R1←A1+A2I2:R2←A3+A4I3:R3←A5+A6I4:R4←A7+A8I5:R5←A9+A10I6:R6←R1+R2I7:R7←R3+R4I8:R8←R5+R6I9:F←R7+R8这并不是唯一可能的计算方法。假设功能段的延迟为Δt。时空图如下(图中的数字是指令号):123456789123456789123456789123456789123456789123456789101112131415161718192021整个计算过程需要21Δt,所以吞吐率为:t43.0t73t219TP加速比为:1429.2715t21t59S效率为:43.073t215t59E4.一条线性静态多功能流水线由6个功能段组成,加法操作使用其中的1、2、3、6功能段,乘法操作使用其中的1、4、5、6功能段,每个功能段的延迟时间均相等。流水线的输出端与输入端之间有直接数据通路,而且设置有足够的缓冲寄存器。用这条流水线计算向量点积i60iibaBA,画出流水线时空图,计算流水线的实际吞吐率、加速比和效率。答:我们安排运算次序如下:把中间结果寄存器称为R,源操作数寄存器称为A、B,最后结果寄存器称为F,并假设源操作数已经在寄存器中,则指令如下:I1:R0←A0*B0I8:R7←R0+R1I2:R1←A1*B1I9:R8←R2+R3I3:R2←A2*B2I10:R9←R4+R5I4:R3←A3*B3I11:R10←R6+R7I5:R4←A4*B4I12:R11←R8+R9I6:R5←A5*B5I13:F←R10+R11I7:R6←A6*B6假设功能段的延迟为Δt。时空图如下(图中的数字是指令号):12345678910111213123456712345678910111213891011121312345678910111213123456789101112131415161718192021222324整个计算过程需要24Δt,所以吞吐率为:t54.0t2413TP加速比为:17.2613t24t46t47S效率为:36.03613t246t134E5.一条有三个功能段的流水线如下图。每个功能段的延迟时间均相等,都为△t。其中功能段S2的输出要返回到它自己的输入端循环一次。⑴如果每间隔一个△t向流水线的输入端连续输入新任务,问这条流水线会发生什么情况?⑵求这条流水线能够正常工作的最大吞吐率、加速比和效率。⑶有什么办法能够提高这条流水线的吞吐率,画出新的流水线。答:⑴如果每间隔一个△t向流水线的输入端连续输入新任务,流水线S2功能段存在资源冲突。见下表:时间功能段t1t2t3t4t5S1X1X2X3X4X5S2X1X1,X2X2,X3X3,X4S3X1X2⑵每间隔两个△t向流水线的输入端连续输入新任务(如见下表所示)可获得最佳性能。S1S2S3输入输出△t△t△t时间功能段t1t2t3t4t5t6S1X1X2X3S2X1X1X2X2X3S3X1X2我们可以看出:在(2n+2)Δt的时间内,可以输出n个结果,如果指令的序列足够长(n→∞),并且指令间不存在相关,那么,吞吐率为:)n(t21t)n/22(1t)2n2(nTP加速比为:)n(2n/1121nn2t)2n2(t4nS效率为:)n(32n/3323n3n2t)2n2(3t4nE⑶如要提高这条流水线的吞吐率,可采用:将功能段S2重复设置一次,见下图:6.一条有4个功能段的非线性流水线,每个功能段的延迟时间都相等,都为20ns,它的预约表如下:时间流水段1234567S1××S2××S3×S4××S1S2S2输入△t△t△tS3输出△t⑴写出流水线的禁止向量和初始冲突向量。⑵画出调度流水线的状态图。⑶求流水线的最小启动循环和最小平均启动距离。⑷求平均启动距离最小的恒定循环。⑸求流水线的最大吞吐率。⑹按照最小启动循环连续输入10个任务,求流水线的实际吞吐率。⑺画出该流水线各功能段之间的连接图。答:⑴禁止向量F=(6,4,2);冲突向量C=(101010)。⑵⑶简单循环平均启动距离1,7(C0-C1-C0)43,7(C0-C2-C0)55,7(C0-C3-C0)63,5,7(C0-C2-C3-C0)53,5(C0-C2-C3-C2-C3)45,3,7(C0-C3-C2-C0)55,3(C0-C3-C2-C3-C2)45(C0-C3-C3)5i=1i≥7i=3i≥7i=5i=3i≥7i=5i=5i≥7101010111111101111101011C0C1C2C37(C0-C0)7∴流水线的最小启动循环为:(1,7)或(3,5)或(5,3),最小平均启动距离为4。⑷由上表可知:平均启动距离最小的恒定循环为(5)。⑸采用最小平均启动距离为4的最小启动循环可获得流水线的最大吞吐率,以(1,7)为例:(其他类似,最大吞吐率皆相同)当任务数为偶数2n时:)n(t41tn8n2t7)1n(tnt7n2TP当任务数为奇数2n+1时:)n(t41n/t7t8n/12t7tn81n2t7ntnt71n2TP∴流水线的最大吞吐率为:)s/(M5.12ns2041t41任务⑹10个任务的实际吞吐率:利用上式可得(偶数个任务)TP10=1/4△t=12.5M(任务/s)。⑺该流水线的连接图为:7.一条由4个功能段组成的非线性流水线的预约表如下,每个功能段的延迟时间都为10ns。时间流水段123456S1××S1S2S3S41234567输入输出S2××S3×S4××⑴写出流水线的禁止向量和初始冲突向量。⑵画出调度流水线的状态图。⑶求流水线的最小启动循环和最小平均启动距离。⑷在流水线中插入一个非计算延迟功能段后,求该流水线的最佳启动循环及其最小平均启动距离。⑸画出插入一个非计算延迟功能段后的流水线预约表(5行8列)。⑹画出插入一个非计算延迟功能段后的流水线状态变换图。⑺分别计算在插入一个非计算延迟功能段前、后的最大吞吐率。⑻如果连续输入10个任务,分别计算在插入一个非计算延迟功能段前、后的实际吞吐率。答:⑴禁止向量F=(5,2,1);冲突向量C=(10011)。⑵⑶简单循环平均启动距离334466最小启动循环为(3),最小平均启动距离为3。⑷插入一个非计算延迟功能段后,最小平均启动距离为2(因为预约表中每行至多2个×),相应地可改进最小启动循环为(2)。10011i=3i=4C0i≥6⑸时间功能段12345678S1XXS2XXS3XS4XXDXX⑹流水线的禁止向量为(1,3,7),流水线的冲突向量为1000101,流水线的状态图如下:简单循环平均启动距离2,4(C0-C1)32,6(C0-C1)42(C0-C1-C1)24(C0-C0)46(C0-C0)65(C0-C2-C2)55,4(C0-C2)4.55,6(C0-C2)5.5流水线的最小启动循环为(2),最小平均启动距离为2。⑺插入前:100010110101011000111i=4,6i≥8i=4,6i≥8i=4,6i≥8i=2i=2i=5C0C1C2i=5)s/(1033.3ns1031t31t3)1n(t6nTP7nmaxlim任务数插入后:)s/(105ns1021t21t2)1n(t6nTP7nmaxlim任务数⑻连续输入10个任务,插入前的实际吞吐率为:)s/(1003.3ns103310t3310t39t610TP7任务数连续输入10个任务,插入后的实际吞吐率为:)s/(1085.3ns102610t2610t29t810TP7任务数8.在流水线处理机中,有独立的加法操作部件和乘法操作部件各一个,加法操作部件为4段流水线,乘法操作部件6段流水线,都在第一段从通用寄存器读操作数,在最后一段把运算结果写到通用寄存器中。每段的时间长度都相等,都是一个时钟周期。每个时钟周期发出一条指令。问可能发生哪几种数据相关?写出发生相关的指令序列,分析相关发生的原因,并给出解决相关的具体办法。答:可能的数据相关性有:⑴“先写后读”(RAW)相关ReadAfter加法写。原因:还没有写好就已经读取寄存器中的数据了。DADDR1,R2,R3;(R2)+(R3)→(R1)DSUBR4,R1,R5;(R1)-(R5)→(R4)ReadAfter乘法写。原因:还没有写好已经读取寄存器中的数据了。DMULR1,R2,R3;(R2)×(R3)→(R1)DSUBR4,R1,R5;(R1)-(R5)→(R4)本相关在流水线顺序执行和乱序执行时都可能发生。解决的方法是:利用编译程序调整指令的次序方法;延迟执行是避免数据相关最简单的方法;建立寄存器之间的专用路径。⑵“写—写”(WAW)相关WriteAfter乘法写。原因:后写的反而早执行(乘法所化的时间长,后面一个写任务反而先完成),使最后写入的内容不正确。DMULR1,R2,R3;(R2)×(R3)→(R1)DSUBR1,R4,R5;(R4)-(R5)→(R1)本相关只有在流水线乱序执行时才可能发
本文标题:计算机系统结构-第四章(习题解答)
链接地址:https://www.777doc.com/doc-5094097 .html