高教版课后习题答案.docx

上传人:b****6 文档编号:4724004 上传时间:2022-12-08 格式:DOCX 页数:34 大小:439.89KB
下载 相关 举报
高教版课后习题答案.docx_第1页
第1页 / 共34页
高教版课后习题答案.docx_第2页
第2页 / 共34页
高教版课后习题答案.docx_第3页
第3页 / 共34页
高教版课后习题答案.docx_第4页
第4页 / 共34页
高教版课后习题答案.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

高教版课后习题答案.docx

《高教版课后习题答案.docx》由会员分享,可在线阅读,更多相关《高教版课后习题答案.docx(34页珍藏版)》请在冰豆网上搜索。

高教版课后习题答案.docx

高教版课后习题答案

第1章计算机系统结构的基本概念

 

1.6某台主频为400MHz的计算机执行标准测试程序,程序中指令类型、执行数量和平均时钟周期数如下:

指令类型

指令执行数量

平均时钟周期数

整数

45000

1

数据传送

75000

2

浮点

8000

4

分支

1500

2

求该计算机的有效CPI、MIPS和程序执行时间。

解:

(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=575s

没有错误,但是不严密,指令数量的单位是MIPS.

1.7将计算机系统中某一功能的处理速度加快10倍,但该功能的处理时间仅为整个系统运行时间的40%,则采用此增强功能方法后,能使整个系统的性能提高多少?

解由题可知:

可改进比例=40%=0.4部件加速比=10

根据Amdahl定律可知:

采用此增强功能方法后,能使整个系统的性能提高到原来的1.5625倍。

1.8计算机系统中有三个部件可以改进,这三个部件的部件加速比为:

部件加速比1=30;部件加速比2=20;部件加速比3=10

(1)如果部件1和部件2的可改进比例均为30%,那么当部件3的可改进比例为多少时,系统加速比才可以达到10?

(2)如果三个部件的可改进比例分别为30%、30%和20%,三个部件同时改进,那么系统中不可加速部分的执行时间在总执行时间中占的比例是多少?

解:

(1)在多个部件可改进情况下,Amdahl定理的扩展:

已知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,不可改进部分的执行时间为0.2T。

已知3个部件改进后的加速比分别为S1=30,S2=20,S3=10,因此3个部件改进后的执行时间为:

改进后整个系统的执行时间为:

Tn=0.045T+0.2T=0.245T

那么系统中不可改进部分的执行时间在总执行时间中占的比例是:

1.9假设某应用程序中有4类操作,通过改进,各操作获得不同的性能提高。

具体数据如下表所示:

操作类型

程序中的数量

(百万条指令)

改进前的执行时间

(周期)

改进后的执行时间

(周期)

操作1

10

2

1

操作2

30

20

15

操作3

35

10

3

操作4

15

4

1

(1)改进后,各类操作的加速比分别是多少?

(2)各类操作单独改进后,程序获得的加速比分别是多少?

(3)4类操作均改进后,整个程序的加速比是多少?

解:

根据Amdahl定律

可得

操作类型

各类操作的指令条数在程序中所占的比例Fi

各类操作的加速比Si

各类操作单独改进后,程序获得的加速比

操作1

11.1%

2

1.06

操作2

33.3%

1.33

1.09

操作3

38.9%

3.33

1.37

操作4

16.7%

4

1.14

4类操作均改进后,整个程序的加速比:

讨论:

这道题答案我认为是错了。

我的参考答案:

算法一,用最原始的加速比公式:

加速比=改进前执行时间/改进后执行时间

=(10*2+30*20+35*10+15*4)/(10*1+30*15+35*3+15*1)=1030/580=1.78

算法二,部件比例。

注意定义:

部件比例的定义是可改进的部分的执行时间在总的执行时间中所占的比例。

因此

操作类型

各类操作的在总的执行时间中所占的比例Fi

各类操作的加速比Si

操作1

20/1030

2

操作2

600/1030

20/15

操作3

350/1030

10/3

操作4

60/1030

4/1

加速比=

=1.78

第3章流水线技术

3.4设一条指令的执行过程分成取指令、分析指令和执行指令三个阶段,每个阶段所需的时间分别为△t、△t和2△t。

分别求出下列各种情况下,连续执行N条指令所需的时间。

(1)顺序执行方式;

(2)只有“取指令”与“执行指令”重叠;

(3)“取指令”、“分析指令”与“执行指令”重叠。

解:

(1)每条指令的执行时间为:

△t+△t+2△t=4△t

连续执行N条指令所需的时间为:

4N△t

(2)连续执行N条指令所需的时间为:

4△t+3(N-1)△t=(3N+1)△t

(3)连续执行N条指令所需的时间为:

4△t+2(N-1)△t=(2N+2)△t

 

3.9列举出下面循环中的所有相关,包括输出相关、反相关、真相关。

for(i=2;i<100;i=i+1)

a[i]=b[i]+a[i];/*s1*/

c[i+1]=a[i]+d[i];/*s2*/

a[i-1]=2*b[i];/*s3*/

b[i+1]=2*b[i];/*s4*/

解:

展开循环两次:

a[i]=b[i]+a[i];/*s1*/

c[i+1]=a[i]+d[i];/*s2*/

a[i-1]=2*b[i];/*s3*/

b[i+1]=2*b[i];/*s4*/

a[i+1]=b[i+1]+a[i+1];/*s1’*/

c[i+2]=a[i+1]+d[i+1];/*s2‘*/

a[i]=2*b[i+1];/*s3‘*/

b[i+2]=2*b[i+1];/*s4‘*/

输出相关:

反相关:

真相关:

S1&S2

由于循环引入的相关:

S4&S4’(真相关)、S1’&S4(真相关)、S3’&S4(真相关)、S1&S3’(输出相关、反相关)、S2&S3’(反相关)。

 

3.12有一指令流水线如下所示

(1)求连续输入10条指令,该流水线的实际吞吐率和效率;

(2)该流水线的“瓶颈”在哪一段?

请采取两种不同的措施消除此“瓶颈”。

对于你所给出的两种新的流水线,连续输入10条指令时,其实际吞吐率和效率各是多少?

解:

(1)

(2)瓶颈在3、4段。

⏹变成八级流水线(细分)

⏹重复设置部件

3.13有一个流水线由4段组成,其中每当流经第3段时,总要在该段循环一次,然后才能流到第4段。

如果每段经过一次所需要的时间都是

,问:

(1)当在流水线的输入端连续地每

时间输入任务时,该流水线会发生什么情况?

(2)此流水线的最大吞吐率为多少?

如果每

输入一个任务,连续处理10个任务时的实际吞吐率和效率是多少?

(3)当每段时间不变时,如何提高该流水线的吞吐率?

仍连续处理10个任务时,其吞吐率提高多少?

解:

(1)会发生流水线阻塞情况。

第1个任务

S1

S2

S3

S3

S4

第2个任务

S1

S2

stall

S3

S3

S4

第3个任务

S1

stall

S2

stall

S3

S3

S4

第4个任务

S1

stall

S2

stall

S3

S3

S4

(2)

(3)重复设置部件

吞吐率提高倍数=

=1.64

3.14有一条静态多功能流水线由5段组成,加法用1、3、4、5段,乘法用1、2、5段,第3段的时间为2△t,其余各段的时间均为△t,而且流水线的输出可以直接返回输入端或

暂存于相应的流水寄存器中。

现要在该流水线上计算,画出其时空图,并计算其吞吐率、加速比和效率。

解:

首先,应选择适合于流水线工作的算法。

对于本题,应先计算A1+B1、A2+B2、A3+B3和A4+B4;再计算(A1+B1)×(A2+B2)和(A3+B3)×(A4+B4);然后求总的结果。

其次,画出完成该计算的时空图,如图所示,图中阴影部分表示该段在工作。

 

由图可见,它在18个△t时间中,给出了7个结果。

所以吞吐率为:

如果不用流水线,由于一次求积需3△t,一次求和需5△t,则产生上述7个结果共需(4×5+3×3)△t=29△t。

所以加速比为:

该流水线的效率可由阴影区的面积和5个段总时空区的面积的比值求得:

 

3.15动态多功能流水线由6个功能段组成,如下图:

其中,S1、S4、S5、S6组成乘法流水线,S1、S2、S3、S6组成加法流水线,各个功能段时间均为50ns,假设该流水线的输出结果可以直接返回输入端,而且设置有足够的缓冲寄存器,若以最快的方式用该流水计算:

(1)画出时空图;

(2)计算实际的吞吐率、加速比和效率。

解:

机器一共要做10次乘法,4次加法。

3.16在MIPS流水线上运行如下代码序列:

LOOP:

LWR1,0(R2)

DADDIUR1,R1,#1

SWR1,0(R2)

DADDIUR2,R2,#4

DSUBR4,R3,R2

BNEZR4,LOOP

其中:

R3的初值是R2+396。

假设:

在整个代码序列的运行过程中,所有的存储器访问都是命中的,并且在一个时钟周期中对同一个寄存器的读操作和写操作可以通过寄存器文件“定向”。

问:

(1)在没有任何其它定向(或旁路)硬件的支持下,请画出该指令序列执行的流水线时空图。

假设采用排空流水线的策略处理分支指令,且所有的存储器访问都命中Cache,那么执行上述循环需要多少个时钟周期?

(2)假设该流水线有正常的定向路径,请画出该指令序列执行的流水线时空图。

假设采用预测分支失败的策略处理分支指令,且所有的存储器访问都命中Cache,那么执行上述循环需要多少个时钟周期?

(3)假设该流水线有正常的定向路径和一个单周期延迟分支,请对该循环中的指令进行调度,你可以重新组织指令的顺序,也可以修改指令的操作数,但是注意不能增加指令的条数。

请画出该指令序列执行的流水线时空图,并计算执行上述循环所需要的时钟周期数。

解:

寄存器读写可以定向,无其他旁路硬件支持。

排空流水线。

第i次迭代(i=0..98)开始周期:

1+(i×17)

总的时钟周期数:

(98×17)+18=1684

有正常定向路径,预测分支失败。

第i次迭代(i=0..98)开始周期:

1+(i×10)

总的时钟周期数:

(98×10)+11=991

有正常定向路径。

单周期延迟分支。

LOOP:

LWR1,0(R2)

DADDIUR2,R2,#4

DADDIUR1,R1,#1

DSUBR4,R3,R2

BNEZR4,LOOP

SWR1,-4(R2)

第i次迭代(i=0..98)开始周期:

1+(i×6)

总的时钟周期数:

(98×6)+10=598

3.17假设各种分支指令数占所有指令数的百分比如下:

条件分支

20%(其中的60%是分支成功的)

跳转和调用

5%

现有一条段数为4的流水线,无条件分支在第二个时钟周期结束时就被解析出来,而条件分支要到第三个时钟周期结束时才能够被解析出来。

第一个流水段是完全独立于指令类型的,即所有类型的指令都必须经过第一个流水段的处理。

请问在没有任何控制相关的情况下,该流水线相对于存在上述控制相关情况下的加速比是多少?

解:

没有控制相关时流水线的平均CPI=1

存在控制相关时:

由于无条件分支在第二个时钟周期结束时就被解析出来,而条件分支

要到第3个时钟周期结束时才能被解析出来。

所以:

(1)若使用排空流水线的策略,则对于条件分支,有两个额外的stall,对无条件分支,有一个额外的stall:

CPI=1+20%*2+5%*1=1.45

加速比S=CPI/1=1.45

(2)若使用预测分支成功策略,则对于不成功的条件分支,有两个额外的stall,对无条件分支和成功的条件分支,有一个额外的stall1:

CPI=1+20%*(60%*1+40%*2)+5%*1=1.33

加速比S=CPI/1=1.33

(3)若使用预测分支失败策略,则对于成功的条件分支,有两个额外的stall;对无条件分支,有一个额外的stall;对不成功的条件分支,其目标地址已经由PC值给出,不必等待,所以无延迟:

CPI=1+20%*(60%*2+40%*0)+5%*1=1.29

加速比S=CPI/1=1.29

3.18在CRAY-1机器上,按照链接方式执行下述4条向量指令(括号中给出了相应功能部件的执行时间),如果向量寄存器和功能部件之间的数据传送需要1拍,试求此链接流水线的通过时间是多少拍?

如果向量长度为64,则需多少拍才能得到全部结果?

V0←存储器(从存储器中取数:

7拍)

V2←V0+V1(向量加:

3拍)

V3←V2

4拍)

V5←V3∧V4(向量逻辑乘:

2拍)

解:

通过时间就是每条向量指令的第一个操作数执行完毕需要的时间,也就是各功能流水线由空到满的时间,具体过程如下图所示。

要得到全部结果,在流水线充满之后,向量中后继操作数继续以流水方式执行,直到整组向量执行完毕。

3.19某向量处理机有16个向量寄存器,其中V0~V5中分别放有向量A、B、C、D、E、F,向量长度均为8,向量各元素均为浮点数;处理部件采用两条单功能流水线,加法功能部件时间为2拍,乘法功能部件时间为3拍。

采用类似于CARY-1的链接技术,先计算(A+B)*C,在流水线不停流的情况下,接着计算(D+E)*F。

(1)求此链接流水线的通过时间?

(设寄存器入、出各需1拍)

(2)假如每拍时间为50ns,完成这些计算并把结果存进相应寄存器,此处理部件的实际吞吐率为多少MFLOPS?

解:

(1)我们在这里假设A+B的中间结果放在V6中,(A+B)×C地最后结果放在V7中,D+E地中间结果放在V8中,(D+E)×F的最后结果放在V9中。

具体实现参考下图:

通过时间应该为前者((A+B)×C)通过的时间:

T通过=(1+2+1)+(1+3+1)=9(拍)

(2)在做完(A+B)×C之后,作(C+D)×E就不需要通过时间了。

V6←A+B

V7←V6×C

V8←D+E

V9←V8×F

 

第4章指令级并行

4.3根据需要展开下面的循环并进行指令调度,直到没有任何延迟。

指令的延迟如表4.3。

LOOP:

L.DF0,0(R1)

MUL.DF0,F0,F2

L.DF4,0(R2)

ADD.DF0,F0,F4

S.DF0,0(R2)

DSUBIR1,R1,#8

DSUBIR2,R2,#8

BNEZR1,LOOP

解:

将循环展开两次,进行指令调度,即可以消除延迟,代码如下:

LOOP:

L.DF0,0(R1)

L.DF10,-8(R1)

MUL.DF0,F0,F2

MUL.DF10,F10,F2

L.DF4,0(R2)

L.DF14,-8(R2)

ADD.DF0,F0,F4

ADD.DF10,F10,F14

DSUBIR1,R1,16

S.D0(R2),F0

DSUBIR2,R2,16

BNEZR1,LOOP

S.D8(R2),F10

4.4假设有一条长流水线,仅仅对条件转移指令使用分支目标缓冲。

假设分支预测错误的开销为4个时钟周期,缓冲不命中的开销为3个时钟周期。

假设:

命中率为90%,预测精度为90%,分支频率为15%,没有分支的基本CPI为1。

(1)求程序执行的CPI。

(2)相对于采用固定的2个时钟周期延迟的分支处理,哪种方法程序执行速度更快?

解:

(1)程序执行的CPI=没有分支的基本CPI

(1)+分支带来的额外开销

分支带来的额外开销是指在分支指令中,缓冲命中但预测错误带来的开销与缓冲没有命中带来的开销之和。

分支带来的额外开销=15%*(90%命中×10%预测错误×4+10%没命中×3)=0.099

所以,程序执行的CPI=1+0.099=1.099

(2)采用固定的2个时钟周期延迟的分支处理CPI=1+15%×2=1.3

(1)

(2)可知分支目标缓冲方法执行速度快。

4.5假设分支目标缓冲的命中率为90%,程序中无条件转移指令的比例为5%,没有无条件转移指令的程序CPI值为1。

假设分支目标缓冲中包含分支目标指令,允许无条件转移指令进入分支目标缓冲,则程序的CPI值为多少?

解:

设每条无条件转移指令的延迟为x,则有:

1+5%×x=1.1

x=2

当分支目标缓冲命中时,无条件转移指令的延迟为0。

所以程序的CPI=1+2×5%×(1-90%)=1.01

4.6下面的一段MIPS汇编程序是计算高斯消去法中的关键一步,用于完成下面公式的计算:

Y=aX+Y

其浮点指令延迟如表4.3所示,整数指令均为1个时钟周期完成,浮点和整数部件均采用流水。

整数操作之间以及与其它所有浮点操作之间的延迟为0,转移指令的延迟为0。

X中的最后一个元素存放在存储器中的地址为DONE。

FOO:

L.DF2,0(R1)

MUT.DF4,F2,F0

L.DF6,0(R2)

ADD.DF6,F4,F6

S.DF6,0[R2]

DADDIUR1,R1,#8

DADDIUR2,R2,#8

DSUBIUR3,R1,#DONE

BNEZR3,FOO

(1)对于标准的MIPS单流水线,上述循环计算一个Y值需要多少时间?

其中有多少空转周期?

(2)对于标准的MIPS单流水线,将上述循环顺序展开4次,不进行任何指令调度,计算一个Y值平均需要多少时间?

加速比是多少?

其加速是如何获得的?

(3)对于标准的MIPS单流水线,将上述循环顺序展开4次,优化和调度指令,使循环处理时间达到最优,计算一个Y值平均需要多少时间?

加速比是多少?

(4)对于采用如图4.8前瞻执行机制的MIPS处理器(只有一个整数部件)。

当循环第二次执行到

BNEZR3,FOO

时,写出前面所有指令的状态,包括指令使用的保留站、指令起始节拍、执行节拍和写结果节拍,并写出处理器当前的状态。

(5)对于2路超标量的MIPS流水线,设有两个指令流出部件,可以流出任意组合的指令,系统中的功能部件数量不受限制。

将上述循环展开4次,优化和调度指令,使循环处理时间达到最优。

计算一个Y值平均需要多少时间?

加速比是多少?

(6)对于如图4.13结构的超长指令字MIPS处理器,将上述循环展开4次,优化和调度指令,使循环处理时间达到最优。

计算一个Y值平均需要多少时间?

加速比是多少?

解:

(1)

L.DF2,0(R1)1

Stall

MUT.DF4,F2,F02

L.DF6,0(R2)3

Stall

Stall

ADD.DF6,F4,F64

Stall

Stall

S.DF6,0[R2]5

DADDIUR1,R1,#86

DADDIUR2,R2,#87

DSUBIUR3,R1,#DONE8

BNEZR3,FOO9

所以,共有14个时钟周期,其中有5个空转周期。

(2)循环顺序展开4次,不进行任何指令调度,则指令1~5及其间的stall都是必要的,只是指令6~9只需执行一次,因此,共有10×4+4=44个时钟周期,计算出4个Y值,所以计算一个Y值需要11个时钟周期,加速比为:

14/11=1.27。

加速主要是来自减少控制开销,即减少对R1、R2的整数操作以及比较、分支指令而来的。

(3)循环顺序展开4次,优化和调度指令,如下:

L.DF2,0(R1)

L.DF8,8(R1)

L.DF14,16(R1)

L.DF20,24(R1)

MUT.DF4,F2,F0

MUT.DF10,F8,F0

MUT.DF16,F14,F0

MUT.DF22,F20,F0

L.DF6,0(R2)

L.DF12,8(R2)

L.DF18,16(R2)

L.DF24,24(R2)

ADD.DF6,F4,F6

ADD.DF12,F10,F12

ADD.DF18,F16,F18

ADD.DF24,F22,F24

S.DF6,0[R2]

S.DF12,8[R2]

S.DF18,16[R2]

S.DF24,24[R2]

DADDIUR1,R1,#32

DADDIUR2,R2,#32

DSUBIUR3,R1,#DONE

BNEZR3,FOO

共用了24个时钟周期,则计算一个Y值平均需要24/4=6个时钟周期,

加速比:

14/6=2.33

 

(4)

指令

指令执行时钟

流出

执行

写结果

确认

L.DF2,0(R1)

1

2

3

4

MUL.DF4,F2,F0

2

4

5

6

L.DF6,0(R2)

3

4

6

7

ADD.DF6,F4,F6

4

8

9

10

S.DF6,0(R2)

5

11

12

13

DADDIUR1,R1,#8

6

7

8

DADDIUR2,R2,#8

7

8

9

DSUBIUR3,R1,#DONE

8

9

10

BNEZR3,FOO

9

10

L.DF2,0(R1)

10

11

13

14

MUL.DF4,F2,F0

11

13

14

15

L.DF6,0(R2)

12

13

15

16

ADD.DF6,F4,F6

13

17

18

19

S.DF6,0(R2)

14

20

21

22

DADDIUR1,R1,#8

15

16

17

DADDIUR2,R2,#8

16

17

18

DSUBIUR3,R1,#DONE

17

18

19

BNEZR3,FOO

18

名称

保留站

Busy

Op

Vj

Vk

Qj

Qk

Dest

A

Add1

yes

ADD.D

Regs[F4]

Regs[F6]

Add2

no

Ad

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

当前位置:首页 > 高中教育 > 理化生

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

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