第05章流水线课后习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第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)△t
3.用一条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) 如果使用最小恒定循环,则吞吐率是多少?
1 2 3 4 5 6
S1 X X
S2 X X
S3 X
S4 X
S5 X X 第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) 设该流水线的时钟周期为τ,则该流水线的最大吞吐率TP MAX为
(8) 使用最小恒定循环时,设该流水线的时钟周期为τ,该流水线的吞吐率为
6.下列汇编代码在一台3段流水线处理机上执行,每一段都有冒险(相关)检测和分解。这三段是取指令、取操作数(根据要求取一个或者多个)和执行(包括写回操作)。试说明在代码执行中所有可能的相关情况。
Inc R0/R0←(R0)+1/
Mul ACC,R0/ACC←(ACC)×(R0)/
Store R1,ACC/R1←(ACC)/
Add ACC,R0/ACC←(ACC)+(R0)/
Store M,ACC /M←(ACC)/
第6题
我们首先给上面的指令序列编号如下:
I1:Inc R0 /R0←(R0)+1/
I2:Mul ACC,R0 /ACC←(ACC)×(R0)/
I3:Store R1,ACC /R1←(ACC)/
I4:Add ACC,R0 /ACC←(ACC)+(R0)/
I5:Store M,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) 列出任务启动之间的禁止等待时间集。