计算机系统结构习题解答Word文件下载.docx

上传人:b****5 文档编号:20580329 上传时间:2023-01-24 格式:DOCX 页数:16 大小:82.89KB
下载 相关 举报
计算机系统结构习题解答Word文件下载.docx_第1页
第1页 / 共16页
计算机系统结构习题解答Word文件下载.docx_第2页
第2页 / 共16页
计算机系统结构习题解答Word文件下载.docx_第3页
第3页 / 共16页
计算机系统结构习题解答Word文件下载.docx_第4页
第4页 / 共16页
计算机系统结构习题解答Word文件下载.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

计算机系统结构习题解答Word文件下载.docx

《计算机系统结构习题解答Word文件下载.docx》由会员分享,可在线阅读,更多相关《计算机系统结构习题解答Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。

计算机系统结构习题解答Word文件下载.docx

14

15

...

16

17

18

19

20

21

22

23

我们可以看出,在(7n+1)Δt的时间内,可以输出5n个结果,如果指令的序列足够长(n→∞),并且指令间不存在相关,那么,吞吐率可以认为满足:

加速比为:

从上面的时空图很容易看出,效率为:

3.用一条5个功能段的浮点加法器流水线计算

每个功能段的延迟时间均相等,流水线的输出端与输入端之间有直接数据通路,而且设置有足够的缓冲寄存器。

要求用尽可能短的时间完成计算,画出流水线时空图,计算流水线的实际吞吐率、加速比和效率。

首先需要考虑的是“10个数的和最少需要做几次加法?

”,我们可以发现,加法的次数是不能减少的:

9次;

于是我们要尽可能快的完成任务,就只有考虑如何让流水线尽可能充满,这需要消除前后指令之间的相关。

由于加法满足交换律和结合律,我们可以调整运算次序如以下的指令序列,我们把中间结果寄存器称为R,源操作数寄存器称为A,最后结果寄存器称为F,并假设源操作数已经在寄存器中,则指令如下:

I1:

R1←A1+A2

I2:

R2←A3+A4

I3:

R3←A5+A6

I4:

R4←A7+A8

I5:

R5←A9+A10

I6:

R6←R1+R2

I7:

R7←R3+R4

I8:

R8←R5+R6

I9:

F←R7+R8

这并不是唯一可能的计算方法。

假设功能段的延迟为Δt。

时空图如下(图中的数字是指令号):

整个计算过程需要21Δt,所以吞吐率为:

效率为:

4.一条线性静态多功能流水线由6个功能段组成,加法操作使用其中的1、2、3、6功能段,乘法操作使用其中的1、4、5、6功能段,每个功能段的延迟时间均相等。

流水线的输出端与输入端之间有直接数据通路,而且设置有足够的缓冲寄存器。

用这条流水线计算向量点积

,画出流水线时空图,计算流水线的实际吞吐率、加速比和效率。

我们安排运算次序如下:

把中间结果寄存器称为R,源操作数寄存器称为A、B,最后结果寄存器称为F,并假设源操作数已经在寄存器中,则指令如下:

R0←A0*B0

R7←R0+R1

R1←A1*B1

R8←R2+R3

R2←A2*B2

I10:

R9←R4+R5

R3←A3*B3

I11:

R10←R6+R7

R4←A4*B4

I12:

R11←R8+R9

R5←A5*B5

I13:

F←R10+R11

R6←A6*B6

24

整个计算过程需要24Δt,所以吞吐率为:

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”。

各操作部件的输出端有直接数据通路连接到有关操作部件的输入端,在操作部件的输出端设置有足够容量的缓冲寄存器。

⑴ 处理机内只有一个通用操作部件,采用顺序方式执行指令。

⑵ 单流水线标量处理机,有一条两个功能的静态流水线,流水线每个功能段的延迟时间均为一个时钟周期,加法操作和乘法操作各经过3个功能段。

⑶ 多操作部件处理机,处理机内有独立的乘法部件和加法部件,两个操作部件可以并行工作。

只有一个指令流水线,操作部件不采用流水线结构。

⑷ 单流水线标量处理机,处理机内有两条独立的操作流水线,流水线每个功能段的延迟时间均为一个时钟周期。

⑸ 超标量处理机,每个时钟周期同时发射一条乘法指令和一条加法指令,处理机内有两条独立的操作流水线,流水线的每个功能段的延迟时间均为一个时钟周期。

⑹ 超流水线处理机,把一个时钟周期分为两个流水级,加法部件和乘法部件的延迟时间都为6个流水级,每个时钟周期能够分时发射两条指令,即每个流水级能够发射一条指令。

⑺ 超标量超流水线处理机,把一个时钟周期分为两个流水级,加法部件和乘法部件延迟时间都为6个流水级,每个流水级能够同时发射一条乘法指令和一条加法指令。

要完成上面的矩阵乘法,需要完成的乘法数目为8×

8=512次;

需要完成的加法数目为8×

7=448次;

下面分析处理机的结构会给性能带来什么样的影响。

⑴ 通用操作部件采用顺序方式执行

顺序执行时,每个乘法和加法指令都需要5个时钟周期(取指令、指令分析、指令执行);

所以所需要的时间为:

⑵ 单流水线标量处理机,有一条两个功能的静态流水线

因为有足够的缓冲寄存器,所以我们可以首先把所有的乘法计算完,并通过调度使加法流水线不出现停顿,所以所需要的时间为:

加法

加3

加2

加1

乘法

乘3

乘2

乘1

译码

取指

513

514

515

516

517

518

963

964

965

966

1=①+②、2=1+③、3=2+④、4=3+⑤、5=4+⑥、6=5+⑦、7=6+⑧

⑶ 多操作部件处理机,只有一条指令流水线

由于只有一条指令流水线,所以只能一个时钟周期发射一条指令;

由于操作部件不采用流水线,对于结果C矩阵的第一个元素,首先执行2次乘法,然后乘法和加法并行执行7次,此时C矩阵的第一个元素出来了,然后加法运算停顿3个时钟周期,再开始与乘法并行执行运算7次,如此下去,直到C的64个元素都出来。

故执行时间为:

⑷ 单流水线标量处理机,处理机内有两条独立的操作流水线

对于乘法运算不存在数据相关,对于加法运算有数据相关,由于存在足够的缓冲寄存器,我们可以通过合适的调度消除加法的数据相关。

因此,最佳情况下的执行时间为:

⑸ 超标量处理机

同一时钟周期可以有一条乘法指令和一条加法指令同时发射,对于乘法运算不存在数据相关性,对于加法运算有数据相关性,由于存在足够的缓冲寄存器,当运算完所有的乘法运算后,还要做一次加法运算。

因此执行时间为:

⑹ 超流水线处理机

每个时钟周期发射两条指令,加法部件和乘法部件都为6个流水级。

事实上相当于将时钟周期变成了10ns,而加法和乘法流水线变成了6级。

⑺ 超标量超流水线处理机

一个时钟周期分为

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 少儿英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1