您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 计算机系统结构教程课后答案
1.7某台主频为400MHz的计算机执行标准测试程序,程序中指令类型、执行数量和平均时钟周期数如下:指令类型指令执行数量平均时钟周期数整数450001数据传送750002浮点80004分支15002求该计算机的有效CPI、MIPS和程序执行时间。解:1(/)niiiCPICPIICIC(1)CPI=(45000×1+75000×2+8000×4+1500×2)/129500=1.776(2)MIPS速率=f/CPI=400/1.776=225.225MIPS(3)程序执行时间=(45000×1+75000×2+8000×4+1500×2)/400=575s1.9将计算机系统中某一功能的处理速度加快10倍,但该功能的处理时间仅为整个系统运行时间的40%,则采用此增强功能方法后,能使整个系统的性能提高多少?解:由题可知:可改进比例Fe=40%=0.4部件加速比Se=10根据0111.5625(10.4)0.4/101nnTSFeTFeSe1.10计算机系统中有三个部件可以改进,这三个部件的部件加速比为:部件加速比1=30;部件加速比2=20;部件加速比3=10(1)如果部件1和部件2的可改进比例均为30%,那么当部件3的可改进比例为多少时,系统加速比才可以达到10?(2)如果三个部件的可改进比例分别为30%、30%和20%,三个部件同时改进,那么系统中不可加速部分的执行时间在总执行时间中占的比例是多少?解:(1)在多个部件可改进情况下,Amdahl定理的扩展:011231123123nnTSFeFeFeTFeFeFeSeSeSe已知S1=30,S2=20,S3=10,Sn=10,F1=0.3,F2=0.3,得:得F3=0.36,即部件3的可改进比例为36%。(2)设系统改进前的执行时间为T,则3个部件改进前的执行时间为:(0.3+0.3+0.2)T=0.8T,不可改进部分的执行时间为1123FeFeFe=0.2T。已知3个部件改进后的加速比分别为S1=30,S2=20,S3=10,因此3个部件改进后的执行时间为:改进后整个系统的执行时间为:Tn=1231123123FeFeFeFeFeFeSeSeSe=0.045T+0.2T=0.245T那么系统中不可改进部分的执行时间在总执行时间中占的比例是:0.2/0.245=81.6%1.11假设浮点数指令FP指令的比例为30%,其中浮点数平方根FPSQR占全部指令的比例为4%,FP操作的CPI为5,FPSQR操作的CPI为20,其他指令的平均CPI为1.25。解:1(/)niiiCPICPIICIC改进前:CPI=5×30%+1.25×(1-30%)=2.375设除FPSQR外其余指令的平均CPI为X则2.375=20×4%+(1-4%)X,解出X=1.640625方案1:CPI1=3×4%+1.640625×(1-4%)=1.695方案2:CPI2=3×30%+1.25×(1-30%)=1.7752.11解:11111100000SHRSTPCILSTOJOMJMPSUB0.350.220.090.040.020.130.010.010.020.130.070.060.050.220430.57111000CLAADDL=91iiiPl=0.43x1+0.22x2+0.13x3+0.07x5+0.06x5+0.05x5+0.02x6+0.01x7+0.01x7=2.422.12.解:二地址指令的结构是(4位操作码OP),(6位地址码A1),(6位地址码A2)。一地址指令的结构是(10位操作码OP),(6位地址码A)。二地址指令,最多共16条二地址指令。每少一条二地址指令,则多26条一地址指令,所以一地址指令最多有(16-A)*26条3.5在一台单流水线多操作部件的处理机上执行下面的程序,每条指令的取指令、指令译码需要一个时钟周期,MOVE、ADD和MUL操作分别需要2个、3个和4个时钟周期,每个操作都在第一个时钟周期从通用寄存器中读操作数,在最后一个时钟周期把运算结果写到通用寄存器中。k:MOVER1,R0;R1←(R0)k+1:MULR0,R2,R1;R0←(R2)×(R1)k+2:ADDR0,R2,R3;R0←(R2)+(R3)画出指令执行过程的流水线时空图,并计算完成这3条指令共需要多少个时钟周期?解:在程序实际执行过程中,二种数据相关会引起流水线停顿。一是“先写后读”相关,k指令对R1的写在程序执行开始后的第四个时钟;k+1指令对R1的读对指令本身是第三个时钟,但k+1指令比k指令晚一个时钟进入流水线,则在程序执行开始后的第四个时钟要读R1。不能在同一时钟周期内读写同一寄存器,指令频度pi操作码使用哈夫曼编码操作码长度liADD0.4301CLA0.22102SUB0.131103JMP0.07111005JOM0.06111015STO0.05111105CIL0.021111106SHR0.0111111107STP0.0111111117因此k+1指令应推迟一个时钟进入流水线,产生了流水线停顿。二是“写—写”相关,k+1指令对R0的写对指令本身是第六个时钟,而要求该指令进入流水线应在程序执行开始后的第三个时钟,所以对R0的写是在程序执行开始后的第八个时钟。k+2指令对R0的写对指令本身是第五个时钟,而k+2指令比k+1指令晚一个时钟进入流水线,则在程序执行开始后的第四个时钟,所以对R0的写是在程序执行开始后的第八个时钟。不能在同一时钟周期内写写同一寄存器,因此k+2指令应推迟一个时钟进入流水线,产生了流水线停顿。另外,可分析“先读后写”相关不会产生流水线的停顿。该指令流水线由六个功能段取指、译码、取数、运一、运二和存数等组成,则程序指令执行过程的流水线时空图如下图所示。若3条指令顺序流动,共需要9个时钟周期。空间存数K存数K+1存数K+2存数运二K+1运二运一K+1运一K+2运一取数K取数K+1取数K+2取数译码K译码K+1译码K+2译码取指K取指K+1取指K+2取指时间01234567893.6有一指令流水线如下所示入1234出50ns50ns100ns200ns(1)求连续输入10条指令,该流水线的实际吞吐率和效率;(2)该流水线的“瓶颈”在哪一段?请采取两种不同的措施消除此“瓶颈”。对于你所给出的两种新的流水线,连续输入10条指令时,其实际吞吐率和效率各是多少?解:(1)imaxki1Tt(n1)t(5050100200)92002200(ns)k1n1TP(ns)T220k1121mii1E(1)max(,,,)t4005=TPTP45.45%411kiikikintktntttk(2)瓶颈在3、4段。变成八级流水线(细分)imaxki1Tt(n1)t508950850(ns)k1n1TP(ns)Tk8558.82%17108400TPmtiTPEm1i重复设置部件123_13_24_14_4入出50ns50ns50ns50ns50ns50ns123-13-24-14-24-34-41n1TP(ns)Tk8558.82%1710885010400E3.7有一个流水线由4段组成,其中每当流经第3段时,总要在该段循环一次,然后才能流到第4段。如果每段经过一次所需要的时间都是t,问:(1)当在流水线的输入端连续地每t时间输入任务时,该流水线会发生什么情况?(2)此流水线的最大吞吐率为多少?如果每t2输入一个任务,连续处理10个任务时的实际吞吐率和效率是多少?(3)当每段时间不变时,如何提高该流水线的吞吐率?仍连续处理10个任务时,其吞吐率提高多少?解:(1)会发生流水线阻塞情况。第1个任务S1S2S3S3S4第2个任务S1S2stallS3S3S4第3个任务S1S2stallstallS3S3S4第4个任务S1S2stallstallstallS3S3S4(2)段时间12341111122222333334444455555666667777788888999991010101010t23123_13_24_14_24_34_411112222333344445555666677778899101089108910850ns时间段54.35%925045TPE2310TnTp23T21TPpipelinepipelinemaxtttt(3)重复设置部件tt751410TnTPpipeline吞吐率提高倍数=tt231075=1.643.8有一条静态多功能流水线由5段组成,加法用1、3、4、5段,乘法用1、2、5段,第3段的时间为2△t,其余各段的时间均为△t,而且流水线的输出可以直接返回输入端或暂存于相应的流水寄存器中。现要在该流水线上计算,画出其时空图,并计算其吞吐率、加速比和效率。123_13_24ΔtΔtΔtΔtΔt段时间1123_13_24111122222333334444455555666667777788888999991010101010t1412345乘法加法△t△t2△t△t△t)(41iiiBA解:首先,应选择适合于流水线工作的算法。对于本题,应先计算A1+B1、A2+B2、A3+B3和A4+B4;再计算(A1+B1)×(A2+B2)和(A3+B3)×(A4+B4);然后求总的结果。其次,画出完成该计算的时空图,如图所示,图中阴影部分表示该段在工作。由图可见,它在18个△t时间中,给出了7个结果。所以吞吐率为:tTP817如果不用流水线,由于一次求积需3△t,一次求和需5△t,则产生上述7个结果共需(4×5+3×3)△t=29△t。所以加速比为:该流水线的效率可由阴影区的面积和5个段总时空区的面积的比值求得:3.8有一条动态多功能流水线由5段组成,加法用1、3、4、5段,乘法用1、2、5段,第2段的时间为2△t,其余各段时间均为△t,而且流水线的输出可以直接返回输入端或暂存于相应的流水寄存器中。若在该流水线上计算:试计算其吞吐率、加速比和效率。解时间段12345012345678910111213141516输入A1B1A2B2A3B3A4B4ABCDABCDA×BA×BC×DA×B×C×DA=A1+B1B=A2+B2C=A3+B3D=A4+B4C×D171861.18192ttS223.01853354E41()iiiAB时间段12345012345678910111213141516输入A1B1A2B2A3B3A4B4ABCDABCDA+BC+DA+BC+DA+B+C+DA=A1×B1B=A2×B2C=A3×B3D=A4×B41718由图可见,它在18个△t时间中,给出了7个结果。所以吞吐率为:tTP817如果不用流水线,由于一次求积需4△t,一次求和需4△t,则产生上述7个结果共需(4×4+3×4)△t=28△t。所以加速比为:该流水线的效率可由阴影区的面积和5个段总时空区的面积的比值求得:4.5在CRAY-1机器上,按照链接方式执行下述4条向量指令(括号中给出了相应功能部件的执行时间),如果向量寄存器和功能部件之间的数据传送需要1拍,试求此链接流水线的通过时间是多少拍?如果向量长度为64,则需多少拍才能得到全部结果?V0←存储器(从存储器中取数:7拍)V2←V0+V1(向量加:3拍)V3←V2A3(按(A3)左移:4拍)V5←V3∧V4(向量逻辑乘:2拍)解:通过时间就是每条向量指令的第一个操作数执行完毕需要的时间,也就是各功能流水线由空到满的时间,在流水线充满之后,向量中后继操作数继续以流水方式执行,直到整组向量执行完毕。123V0…12461235a7存储器读取流水线存储器V1…V2…V
本文标题:计算机系统结构教程课后答案
链接地址:https://www.777doc.com/doc-5314424 .html