计算机系统结构第四章习题解答Word文件下载.docx
《计算机系统结构第四章习题解答Word文件下载.docx》由会员分享,可在线阅读,更多相关《计算机系统结构第四章习题解答Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。
开始5个任务,每间隔一个△t向流水线输入一个任务,然后停顿2个△t,如此重复。
求流水线的实际吞吐率、加速比和效率。
5
6
7
8
9
10
11
12
13
14
15
...
16
17
18
19
20
21
22
23
我们可以看出,在(7n+1)Δt的时间内,可以输出5n个结果,如果指令的序列足够长(n→∞),并且指令间不存在相关,那么,吞吐率可以认为满足:
加速比为:
从上面的时空图很容易看出,效率为:
3.用一条5个功能段的浮点加法器流水线计算。
每个功能段的延迟时间均相等,流水线的输出端与输入端之间有直接数据通路,而且设置有足够的缓冲寄存器。
要求用尽可能短的时间完成计算,画出流水线时空图,计算流水线的实际吞吐率、加速比和效率。
首先需要考虑的是“10个数的和最少需要做几次加法?
”,我们可以发现,
效率为:
5.一条有三个功能段的流水线如下图。
每个功能段的延迟时间均相等,都为△t。
其中功能段S2的输出要返回到它自己的输入端循环一次。
⑴ 如果每间隔一个△t向流水线的输入端连续输入新任务,问这条流水线会发生什么情况?
⑵ 求这条流水线能够正常工作的最大吞吐率、加速比和效率。
⑶ 有什么办法能够提高这条流水线的吞吐率,画出新的流水线。
⑴
如果每间隔一个△t向流水线的输入端连续输入新任务,流水线S2功能段存在资源冲突。
见下表:
时间
功能段
t1
t2
t3
t4
t5
S1
X1
X2
X3
X4
X5
S2
X1,X2
X2,X3
X3,X4
S3
⑵
每间隔两个△t向流水线的输入端连续输入新任务(如见下表所示)可获得最佳性能。
t6
我们可以看出:
在(2n+2)Δt的时间内,可以输出n个结果,如果指令的序列足够长(n→∞),并且指令间不存在相关,那么,吞吐率为:
⑶
如要提高这条流水线的吞吐率,可采用:
将功能段S2重复设置一次,见下图:
6.一条有4个功能段的非线性流水线,每个功能段的延迟时间都相等,都为20ns,它的预约表如下:
流水段
×
S4
⑴写出流水线的禁止向量和初始冲突向量。
⑵画出调度流水线的状态图。
⑶求流水线的最小启动循环和最小平均启动距离。
⑷求平均启动距离最小的恒定循环。
⑸求流水线的最大吞吐率。
⑹按照最小启动循环连续输入10个任务,求流水线的实际吞吐率。
⑺画出该流水线各功能段之间的连接图。
⑴
禁止向量F=(6,4,2);
冲突向量C=(101010)。
⑵
⑶
简单循环
平均启动距离
1,7(C0-C1-C0)
3,7(C0-C2-C0)
5,7(C0-C3-C0)
3,5,7(C0-C2-C3-C0)
3,5(C0-C2-C3-C2-C3)
5,3,7(C0-C3-C2-C0)
5,3(C0-C3-C2-C3-C2)
5(C0-C3-C3)
7(C0-C0)
∴流水线的最小启动循环为:
(1,7)或(3,5)或(5,3),最小平均启动距离为4。
⑷
由上表可知:
平均启动距离最小的恒定循环为(5)。
⑸
采用最小平均启动距离为4的最小启动循环可获得流水线的最大吞吐率,以(1,7)为例:
(其他类似,最大吞吐率皆相同)
当任务数为偶数2n时:
当任务数为奇数2n+1时:
∴流水线的最大吞吐率为:
⑹
10个任务的实际吞吐率:
利用上式可得(偶数个任务)TP10=1/4△t=12.5M(任务/s)。
⑺
该流水线的连接图为:
7.一条由4个功能段组成的非线性流水线的预约表如下,每个功能段的延迟时间都为10ns。
⑴ 写出流水线的禁止向量和初始冲突向量。
⑵ 画出调度流水线的状态图。
⑶ 求流水线的最小启动循环和最小平均启动距离。
⑷ 在流水线中插入一个非计算延迟功能段后,求该流水线的最佳启动循环及其最小平均启动距离。
⑸ 画出插入一个非计算延迟功能段后的流水线预约表(5行8列)。
⑹ 画出插入一个非计算延迟功能段后的流水线状态变换图。
⑺ 分别计算在插入一个非计算延迟功能段前、后的最大吞吐率。
⑻ 如果连续输入10个任务,分别计算在插入一个非计算延迟功能段前、后的实际吞吐率。
禁止向量F=(5,2,1);
冲突向量C=(10011)。
最小启动循环为(3),最小平均启动距离为3。
⑷
插入一个非计算延迟功能段后,最小平均启动距离为2(因为预约表中每行至多2个×
),相应地可改进最小启动循环为
(2)。
⑸
X
D
⑹
流水线的禁止向量为(1,3,7),流水线的冲突向量为1000101,
流水线的状态图如下:
2,4(C0-C1)
2,6(C0-C1)
2(C0-C1-C1)
4(C0-C0)
6(C0-C0)
5(C0-C2-C2)
5,4(C0-C2)
4.5
5,6(C0-C2)
5.5
流水线的最小启动循环为
(2),最小平均启动距离为2。
⑺
插入前:
插入后:
⑻
连续输入10个任务,插入前的实际吞吐率为:
连续输入10个任务,插入后的实际吞吐率为:
8.在流水线处理机中,有独立的加法操作部件和乘法操作部件各一个,加法操作部件为4段流水线,乘法操作部件6段流水线,都在第一段从通用寄存器读操作数,在最后一段把运算结果写到通用寄存器中。
每段的时间长度都相等,都是一个时钟周期。
每个时钟周期发出一条指令。
问可能发生哪几种数据相关?
写出发生相关的指令序列,分析相关发生的原因,并给出解决相关的具体办法。
可能的数据相关性有:
⑴ “先写后读”(RAW)相关
Ø
ReadAfter加法写。
原因:
还没有写好就已经读取寄存器中的数据了。
DADDR1,R2,R3;
(R2)+(R3)→(R1)
DSUBR4,R1,R5;
(R1)-(R5)→(R4)
ReadAfter乘法写。
还没有写好已经读取寄存器中的数据了。
DMULR1,R2,R3;
(R2)×
(R3)→(R1)
本相关在流水线顺序执行和乱序执行时都可能发生。
解决的方法是:
利用编译程序调整指令的次序方法;
延迟执行是避免数据相关最简单的方法;
建立寄存器之间的专用路径。
⑵“写—写”(WAW)相关
WriteAfter乘法写。
后写的反而早执行(乘法所化的时间长,后面一个写任务反而先完成),使最后写入的内容不正确。
DSUBR1,R4,R5;
(R4)-(R5)→(R1)
本相关只有在流水线乱序执行时才可能发生。
寄存器换名。
⑶“先读后写”(WAR)相关
WriteAfter任何读。
前面的读操作因为某种原因被推迟,要读的内容被后面的写操作修改了。
9.在下列不同结构的处理机上运行8×
8的矩阵乘法C=A×
B,计算所需要的最短时间。
只计算乘法指令和加法指令的执行时间,不计算取操作数、数据传送和程序控制等指令的执行时间。
加法部件和乘法部件的延迟时间都是3个时钟周期,另外,加法指令和乘法指令还要经过一个“取指令”和“指令译码”的时钟周期,每个时钟周期为20ns,C的初始值为“0”。
各操作部件的输出端有直接数据通路连接到有关操作部件的输入端,在操作部件的输出端设置有足够容量的缓冲寄存器。
⑴ 处理机内只有一