您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > 第05章流水线课后习题
第5章课后习题1.填空题(1)衡量流水线性能的主要指标有、和。(2)指令乱序流动可能造成、、三种数据相关。(3)解决数据相关主要有法和法。(4)超标量处理机开发的是并行性,而超流水线处理机开发的是并行性。(1).吞吐率、加速比、效率(2).先写后读、先读后写、写写(3).推后分析、设置专用路径(4).空间、时间2.假设一条指令的执行过程分为取指令、分析和执行三段,每一段的时间分别为△t、2△t和3△t。在下列各种情况下,分别写出连续执行n条指令所需要的时间表达式。(1)顺序执行方式。(2)仅取指令和执行重叠。(3)取指令、分析和执行重叠。第2题(1)顺序执行时每条指令用时=△t+2△t+3△t=6△t,因此n条指令所需要的时间=6n*△t(2)第一条指令完成需要时间=△t+2△t+3△t=6△t,根据题义,下一条指令的取指令与上一条指令执行的最后一个△t重叠。因此,自从第一条指令完成后,每隔4△t完成一条指令。所以余下的n-1条指令用时(n-1)*4△t.所以,n条指令所需要的时间=6△t+(n-1)*4△t=2(2n+1)△t。(3)第一条指令完成需要时间=△t+2△t+3△t=6△t,由于一条指令的取指令和分析阶段和下一条指令的执行阶段重叠,因此,此后每3△t完成一条指令,余下的n-1条指令用时(n-1)*3△t.因此n条指令所需要的时间=6△t+(n-1)*3△t=3(n+1)△t3.用一条5个功能段的浮点加法器流水线计算F=。每个功能段的延迟时间均相等,流水线的输出端与输入端之间有直接数据通路,而且设置有足够的缓冲寄存器。要求用尽可能短的时间完成计算,画出流水线时空图,计算流水线的实际吞吐率、加速比和效率。第3题假设每个功能段的延迟时间为△t。F==[(A1+1A2)+6(A3+2A4)+8(A5+3A6)]+9[(A7+4A8)+7(A9+5A10)]由上面的时空图可以看出,在20△t时间内共完成9个加法操作。因此:吞吐率为:TP=9/20=0.45加速比为:Sp=9*5/20=2.5效率为:E=45/(20*5)=45%4.设有一个15000条指令的程序在一台时钟速率为25MHz的线性流水线处理机上执行。假设该指令流水线有5段,并且每个时钟周期发射一条指令。忽略由于转移指令和无序执行造成的损失。(1)用该流水线执行这一程序,并用流过延迟与其相等的一个等效非流水线处理机执行同一程序,将两者加以比较,并计算其加速比。(2)该流水线处理机的效率是多少?(3)计算该流水线的吞吐率。第4题(1)等效的非流水处理机执行一条指令需要的时间是5个时钟周期。依照加速比定义,(2)效率E为(3)吞吐率TP为5.设有5段流水线处理机的预约表如下:(1)列出禁止等待时间和冲突向量集。(2)画出状态转换图,说明不引起流水线冲突的所有可能的启动序列(循环)。(3)根据状态图列出所有简单循环。(4)从简单循环中找出迫切循环。(5)此流水线的最小平均等待时间(MAL)是多少?(6)使用此流水线时,列出可允许的最小恒定循环。(7)该流水线的最大吞吐率是多少?(8)如果使用最小恒定循环,则吞吐率是多少?123456S1XXS2XXS3XS4XS5XX第5题(1)禁止等待时间是:3,4,5。冲突向量为(11100)。(2)状态转换图如下所示:(3)简单循环如下:(1,1,6),(2,6),(6),(1,6)(4)迫切(最小启动)循环为(1,1,6)(5)最小平均等待时间MAL为(6)最小恒定循环为(6)。(7)设该流水线的时钟周期为τ,则该流水线的最大吞吐率TPMAX为(8)使用最小恒定循环时,设该流水线的时钟周期为τ,该流水线的吞吐率为6.下列汇编代码在一台3段流水线处理机上执行,每一段都有冒险(相关)检测和分解。这三段是取指令、取操作数(根据要求取一个或者多个)和执行(包括写回操作)。试说明在代码执行中所有可能的相关情况。IncR0/R0←(R0)+1/MulACC,R0/ACC←(ACC)×(R0)/StoreR1,ACC/R1←(ACC)/AddACC,R0/ACC←(ACC)+(R0)/StoreM,ACC/M←(ACC)/第6题我们首先给上面的指令序列编号如下:I1:IncR0/R0←(R0)+1/I2:MulACC,R0/ACC←(ACC)×(R0)/I3:StoreR1,ACC/R1←(ACC)/I4:AddACC,R0/ACC←(ACC)+(R0)/I5:StoreM,ACC/M←(ACC)/我们使用IF、OF和EX来分别代表流水线的取指令、取操作数和执行三段。下面的图表显示了执行的序列:图中的箭头方向是同一条指令在流水线中的流动方向,从图中我们可以看出:在t3时刻:O(I1)∩I(I2)={R0},会发生RAW相关;在t4时刻:O(I2)∩I(I3)={Acc},会发生RAW相关;在t6时刻:O(I4)∩I(I5)={Acc},会发生RAW相关。其中我们用O(I1)表示指令I1的输出寄存器(如R0表示寄存器,而Acc表示表示累加器),I(I2)表示指令I2的输入寄存器。下面的调度方法能够避免相关的发生:其中,Stall表示流水线停顿,通过这种方法,可以避免相关的发生。7.设有4段流水线处理机如下,此流水线的总求值时间为6个时钟周期,所有相继段必须在每个时钟周期之后才能使用。(1)列出这一流水线的4行六列预约表。(2)列出任务启动之间的禁止等待时间集。(3)画出表示所有可能的等待时间循环的状态图。(4)根据状态图列出所有的迫切(最小启动)循环。(5)最小平均等待时间值是多少?第7题可能会有多种方案。答案一:(1)预约表如下所示:123456S1XXS2XXS3XS4X(2)禁止等待时间为:4,冲突向量为:(1000)。(3)状态转移图如下:(4)简单循环如下所示:(1,5),(1,1,5),(1,1,1,5),(1,2,5),(1,2,3,5),(1,2,3,2,5),(1,2,3,2,1,5),(2,5),(2,1,5)(2,1,2,5),(2,1,2,3,5),(2,3,5),(3,5),(3),(3,2,5),(3,2,1,5),(3,2,1,2,5),(5),(3,2,1,5)(5)最小启动循环如下:(1,1,1,5)和(1,2,3,2)(6)平均最小等待时间为:(7)最大的吞吐量为:答案二:(1)预约表如下所示:123456S1XXS2XXXS3XXS4X(2)禁止等待时间为:2和4,冲突向量为:(1010)。(3)状态转移图如下:(4)简单循环如下所示:(3),(5),(1,5)和(3,5)(5)最小启动循环如下:(1,5)和(3)(6)最小平均等待时间为:(7)最大吞吐量为:8.三条功能流水线f1,f2和f3可用下面的预约表来描述:用这三条流水线还可形成一个组合流水线网络如下:通过此组合流水线的每个任务按以下的次序使用流水线:第一是f1,其次是f2和f3,再是f1,然后得到输出。双多路转换器从(A,B)或(X,Y)中选择一对输入,并把他们输入给f1。组合流水线的使用也是用组合的预约表来描述的。(1)为此组合流水线填充下列预约表:123456789101112S1XS2XS3XT1T2T3XU1XU2U3(2)写出禁止启动循环和初始冲突向量。(3)画出能清楚表示所有等待时间循环的状态图。(4)列出所有简单循环和迫切(最小启动)循环。(5)计算此组合流水线的MAL和最大吞吐率。第8题(1)预约表如下:123456789101112S1XXS2XXS3XXXXT1XXT2XT3XU1XXU2XU3X(2)禁止等待时间为:8,1,7,9,3,2;初始冲突向量为:(111000111)(3)状态转换图如下:(4)简单循环为:(5),(6),(10),(4,6),(4,10),(5,6),(5,10);其中最小启动循环为:(5)和(4,6);(5)最小平均启动距离为:(6)最大吞吐量为;9.假设一个四段流水线(其时钟周期τ=20ns)的预约表如下:123456S1XXS2XXS3XS4XX(1)哪些是禁止等待时间和初始冲突向量?(2)画出调度该流水线的状态变换图。(3)确定与最佳迫切循环相关联的MAL。(4)确定与MAL和给定的τ相对应的流水线吞吐率。(5)确定该流水线的MAL下限。从上面的状态图你得到最佳等待时间了吗?如果允许你在上面的流水线中插入一个非计算延迟段,使最短迫切循环中的等待时间为1,其目的是要产生一张新的预约表,以获得下限最佳等待时间。(6)画出5行7列修改后的预约表。(7)为得到最佳循环画出新的状态变换图。(8)根据状态图列出所有的简单循环和迫切循环。(9)证明新的MAL等于下限。(10)这条流水线的最佳吞吐率是多少?与上面的吞吐率相比,改善的百分比是多少?第9题(1)禁止等待时间为:1,2,5;初始冲突向量为:(10011);(2)状态转移图如下:(3)最小平均等待时间为:(4)最大吞吐量为:(millionoperationpersecond)(5)最小的平均等待时间为2,因此,这种调度方法不是最优的。(6)插入非计算性延迟后,预约表如下所示:1234567S1XXS2XXS3XS4XXDX(7)状态转换图变成如下所示:(8)简单循环如下:(4),(5),(7),(3,1),(3,4),(3,5,4),(3,5,7),(1,7)(5,4),(5,7),(3,7),(1,3,4),(1,3,5,4),(1,3,5,7)(1,3,7),(1,4,3),(1,4,4),(1,4,7),(5,3,4),(5,3,7)(5,3,1,7)其中最小启动循环为(1,3)(9)此时的最小启动距离为:(10)此时的最大吞吐率为:10.假设分支概率(相对于所有的指令)为:条件分支20%,跳转和过程调用:5%,其中,条件成功分支有60%可能执行。在一个4段的流水线中,如果分支指令在第2个时钟周期末决定是否是条件失败分支,在第3个时钟周期末决定是否是条件成功分支。假定第1个时钟周期的操作和条件分支无关,并且忽略其他流水停顿,那么,如果没有控制相关的话,处理器能快多少?第10题我们使用加速比来衡量控制相关引起的流水线的效率下降。考虑如下的公式:这个公式中假设输入的任务数目足够多,并且我们假设所有的流水线停顿都由控制相关引起(因为我们只关心控制相关),而式中的流水线平均停顿数定义为平均每条指令执行过程流水线停顿的时钟周期数,该公式可以看成是流水线加速比公式的极限情况。理想状态下,如果没有控制相关,也就没有流水线停顿,于是,有为了得到因为控制相关引起的流水线平均停顿数,我们需要三方面的信息:(1)我们需要知道程序中的控制流指令类型。本题中有三种:条件分支发生,条件分支不发生,跳转和子程序调用。(2)我们需要知道每一种控制流指令引起的流水线平均停顿数。我们假设流水线的四段分别为IF、ID、EX和WB(分别代表取指令、指令分析、指令执行和写回)。首先我们考虑跳转和调用的情形。如下面的表所示:指令123456跳转或调用IFIDEXWBi+1IFIFIDEXi+2stallIFID……i+3stallIF……由于流水线的第一级总是可以提前进行(即不管下一条指令的内容),所以在第2个时钟周期(相对于跳转或调用指令),下一条指令依然进入IF段(因为此时i+1指令的地址是这时知道的唯一一个可以用来更新PC的地址),在第2个时钟周期末,跳转和调用的目的地址已经确定,所以流水线在第三个时钟周期再次执行IF以取回正确的指令,这样引起了一个时钟周期的停顿。条件分支发生的情形如下表:指令123456发生的条件分支IFIDEXWBi+1IFstallIFIDi+2stallstallIF……i+3stallstall……因为条件分支的目的地址在第3个时钟周期末才能决定,所以出现了2个时钟周期的停顿。条件分支不发生的情形如下表:指令123456不发生的条件分支IFIDEXWBi+1IFstallIDEXi+2stallIFID……i+3stallIF…
本文标题:第05章流水线课后习题
链接地址:https://www.777doc.com/doc-2241103 .html