完整版计算机体系结构课后习题原版答案张晨曦著Word格式文档下载.docx
《完整版计算机体系结构课后习题原版答案张晨曦著Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《完整版计算机体系结构课后习题原版答案张晨曦著Word格式文档下载.docx(43页珍藏版)》请在冰豆网上搜索。
这是最高一级的并行。
从执行程序的角度来看,并行性等级从低到高可分为:
(1)指令内部并行:
单条指令中各微操作之间的并行;
(2)指令级并行:
并行执行两条或两条以上的指令;
(3)线程级并行:
并行执行两个或两个以上的线程,通常是以一个进程内派生的多个线程为调度单位;
(4)任务级或过程级并行:
并行执行两个或两个以上的过程或任务(程序段),以子程序或进程为调度单元;
(5)作业或程序级并行:
并行执行两个或两个以上的作业或程序。
1.6某台主频为400MHz的计算机执行标准测试程序,程序中指令类型、执行数量和平均时钟周期数如下:
指令类型
指令执行数量
平均时钟周期数
整数
45000
1
数据传送
75000
2
浮点
8000
4
分支
1500
求该计算机的有效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×
2)/400=575s
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
30
20
15
操作3
35
3
操作4
(1)改进后,各类操作的加速比分别是多少?
(2)各类操作单独改进后,程序获得的加速比分别是多少?
(3)4类操作均改进后,整个程序的加速比是多少?
根据Amdahl定律
可得
各类操作的指令条数在程序中所占的比例Fi
各类操作的加速比Si
各类操作单独改进后,程序获得的加速比
11.1%
1.06
33.3%
1.33
1.09
38.9%
3.33
1.37
16.7%
1.14
4类操作均改进后,整个程序的加速比:
第2章指令集结构的分类
2.1区别不同指令集结构的主要因素是什么?
根据这个主要因素可将指令集结构分为哪3类?
区别不同指令集结构的主要因素是CPU中用来存储操作数的存储单元。
据此可将指令系统结构分为堆栈结构、累加器结构和通用寄存器结构。
2.2常见的3种通用寄存器型指令集结构的优缺点有哪些?
指令系统结构类型
优点
缺点
寄存器-寄存器型
(0,3)
指令字长固定,指令结构简洁,是一种简单的代码生成模型,各种指令的执行时钟周期数相近。
与指令中含存储器操作数的指令系统结构相比,指令条数多,目标代码不够紧凑,因而程序占用的空间比较大。
寄存器-存储器型
(1,2)
可以在ALU指令中直接对存储器操作数进行引用,而不必先用load指令进行加载。
容易对指令进行编码,目标代码比较紧凑。
由于有一个操作数的内容将被破坏,所以指令中的两个操作数不对称。
在一条指令中同时对寄存器操作数和存储器操作数进行编码,有可能限制指令所能够表示的寄存器个数。
指令的执行时钟周期数因操作数的来源(寄存器或存储器)不同而差别比较大。
存储器-存储器型
(2,2)或(3,3)
目标代码最紧凑,不需要设置寄存器来保存变量。
指令字长变化很大,特别是3操作数指令。
而且每条指令完成的工作也差别很大。
对存储器的频繁访问会使存储器成为瓶颈。
这种类型的指令系统现在已不用了。
2.3指令集应满足哪几个基本要求?
对指令集的基本要求是:
完整性、规整性、高效率和兼容性。
完整性是指在一个有限可用的存储空间内,对于任何可解的问题,编制计算程序时,指令集所提供的指令足够使用。
规整性主要包括对称性和均匀性。
对称性是指所有与指令集有关的存储单元的使用、操作码的设置等都是对称的。
均匀性是指对于各种不同的操作数类型、字长、操作种类和数据存储单元,指令的设置都要同等对待。
高效率是指指令的执行速度快、使用频度高。
2.4指令集结构设计所涉及的内容有哪些?
(1)指令集功能设计:
主要有RISC和CISC两种技术发展方向;
(2)寻址方式的设计:
设置寻址方式可以通过对基准程序进行测试统计,察看各种寻址方式的使用频率,根据适用频率设置必要的寻址方式。
(3)操作数表示和操作数类型:
主要的操作数类型和操作数表示的选择有:
浮点数据类型、整型数据类型、字符型、十进制数据类型等等。
(4)寻址方式的表示:
可以将寻址方式编码于操作码中,也可以将寻址方式作为一个单独的域来表示。
(5)指令集格式的设计:
有变长编码格式、固定长度编码格式和混合型编码格式3种。
2.5简述CISC指令集结构功能设计的主要目标。
从当前的计算机技术观点来看,CISC指令集结构的计算机有什么缺点?
主要目标是增强指令功能,把越来越多的功能交由硬件来实现,并且指令的数量也是越来越多。
缺点:
(1)CISC结构的指令集中,各种指令的使用频率相差悬殊。
(2)CISC结构指令的复杂性带来了计算机体系结构的复杂性,这不仅增加了研制时间和成本,而且还容易造成设计错误。
(3)CISC结构指令集的复杂性给VLSI设计增加了很大负担,不利于单片集成。
(4)CISC结构的指令集中,许多复杂指令需要很复杂的操作,因而运行速度慢。
(5)在CISC结构的指令集中,由于各条指令的功能不均衡性,不利于采用先进的计算机体系结构技术(如流水技术)来提高系统的性能。
2.6简述RISC指令集结构的设计原则。
答
(1)选取使用频率最高的指令,并补充一些最有用的指令;
(2)每条指令的功能应尽可能简单,并在一个机器周期内完成;
(3)所有指令长度均相同;
(4)只有Load和Store操作指令才访问存储器,其它指令操作均在寄存器之间进行;
(5)以简单有效的方式支持高级语言。
2.7指令中表示操作数类型的方法有哪几种?
操作数类型有两种表示方法:
(1)操作数的类型由操作码的编码指定,这是最常见的一种方法;
(2)数据可以附上由硬件解释的标记,由这些标记指定操作数的类型,从而选择适当的运算。
2.8表示寻址方式的主要方法有哪些?
简述这些方法的优缺点。
表示寻址方式有两种常用的方法:
(1)将寻址方式编于操作码中,由操作码在描述指令的同时也描述了相应的寻址方式。
这种方式译码快,但操作码和寻址方式的结合不仅增加了指令的条数,导致了指令的多样性,而且增加了CPU对指令译码的难度。
(2)为每个操作数设置一个地址描述符,由该地址描述符表示相应操作数的寻址方式。
这种方式译码较慢,但操作码和寻址独立,易于指令扩展。
2.9通常有哪几种指令格式,请简述其适用范围。
(1)变长编码格式。
如果系统结构设计者感兴趣的是程序的目标代码大小,而不是性能,就可以采用变长编码格式。
(2)固定长度编码格式。
如果感兴趣的是性能,而不是程序的目标代码大小,则可以选择固定长度编码格式。
(3)混合型编码格式。
需要兼顾降低目标代码长度和降低译码复杂度时,可以采用混合型编码格式。
2.10根据CPU性能公式简述RISC指令集结构计算机和CISC指令集结构计算机的性能特点。
CPU性能公式:
CPU时间=IC×
CPI×
T
其中,IC为目标程序被执行的指令条数,CPI为指令平均执行周期数,T是时钟周期的时间。
相同功能的CISC目标程序的指令条数ICCISC少于RISC的ICRISC,但是CISC的CPICISC和TCISC都大于RISC的CPIRISC和TRISC,因此,CISC目标程序的执行时间比RISC的更长。
第3章流水线技术
3.2指令的执行可采用顺序执行、重叠执行和流水线三种方式,它们的主要区别是什么?
各有何优缺点。
(1)指令的顺序执行是指指令与指令之间顺序串行。
即上一条指令全部执行完后,才能开始执行下一条指令。
优点:
控制简单,节省设备。
执行指令的速度慢,功能部件的利用率低。
(2)指令的重叠指令是在相邻的指令之间,让第k条指令与取第k+l条指令同时进行。
重叠执行不能加快单条指令的执行速度,但在硬件增加不多的情况下,可以加快相邻两条指令以及整段程序的执行速度。
与顺序方式相比,功能部件的利用率提高了,控制变复杂了。
(3)指令的流水执行是把一个指令的执行过程分解为若干个子过程,每个子过程由专门的功能部件来实现。
把多个处理过程在时间上错开,依次通过各功能段,每个子过程与其它的子过程并行进行。
依靠提高吞吐率来提高系统性能。
流水线中各段的时间应尽可能相等
3.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.5简述流水线技术的特点。
流水技术有以下特点:
(1)流水线把一个处理过程分解为若干个子过程,每个子过程由一个专门的功能部件来实现。
因此,流水线实际上是把一个大的处理功能部件分解为多个独立的功能部件,并依靠它们的并行工作来提高吞吐率。
(2)流水线中各段的时间应尽可能相等,否则将引起流水线堵塞和断流。
(3)流水线每一个功能部件的前面都要有一个缓冲寄存器,称为流水寄存器。
(4)流水技术适合于大量重复的时序过程,只有在输入端不断地提供任务,才能充分发挥流水线的效率。
(5)流水线需要有通过时间和排空时间。
在这两个时间段中,流水线都不是满负荷工作。
3.6解决流水线瓶颈问题有哪两种常用方法?
细分瓶颈段与重复设置瓶颈段
3.7减少流水线分支延迟的静态方法有哪些?
(1)预测分支失败:
沿失败的分支继续处理指令,就好象什么都没发生似的。
当确定分支是失败时,说明预测正确,流水线正常流动;
当确定分支是成功时,流水线就把在分支指令之后取出的指令转化为空操作,并按分支目标地址重新取指令执行。
(2)预测分支成功:
当流水线ID段检测到分支指令后,一旦计算出了分支目标地址,就开始从该目标地址取指令执行。
(3)延迟分支:
主要思想是从逻辑上“延长”分支指令的执行时间。
把延迟分支看成是由原来的分支指令和若干个延迟槽构成。
不管分支是否成功,都要按顺序执行延迟槽中的指令。
3种方法的共同特点:
它们对分支的处理方法在程序的执行过程中始终是不变的。
它们要么总是预测分支成功,要么总是预测分支失败。
3.8简述延迟分支方法中的三种调度策略的优缺点。
调度策略
对调度的要求
对流水线性能改善的影响
从前调度
分支必须不依赖于被调度的指令
总是可以有效提高流水线性能
从目标处调度
如果分支转移失败,必须保证被调度的指令对程序的执行没有影响,可能需要复制被调度指令
分支转移成功时,可以提高流水线性能。
但由于复制指令,可能加大程序空间
从失败处调度
如果分支转移成功,必须保证被调度的指令对程序的执行没有影响
分支转移失败时,可以提高流水线性能
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.10简述三种向量处理方式,它们对向量处理机的结构要求有何不同?
答
(1)横向处理方式:
若向量长度为N,则水平处理方式相当于执行N次循环。
若使用流水线,在每次循环中可能出现数据相关和功能转换,不适合对向量进行流水处理。
(2)纵向处理方式:
将整个向量按相同的运算处理完毕之后,再去执行其他运算。
适合对向量进行流水处理,向量运算指令的源/目向量都放在存储器内,使得流水线运算部件的输入、输出端直接与存储器相联,构成M-M型的运算流水线。
(3)纵横处理方式:
把长度为N的向量分为若干组,每组长度为n,组内按纵向方式处理,依次处理各组,组数为「N/n」,适合流水处理。
可设长度为n的向量寄存器,使每组向量运算的源/目向量都在向量寄存器中,流水线的运算部件输入、输出端与向量寄存器相联,构成R-R型运算流水线。
3.11可采用哪些方法来提高向量处理机的性能?
可采用多种方法:
(1)设置多个功能部件,使它们并行工作;
(2)采用链接技术,加快一串向量指令的执行;
(3)采用循环开采技术,加快循环的处理;
(4)采用多处理机系统,进一步提高性能。
3.12有一指令流水线如下所示
(1)求连续输入10条指令,该流水线的实际吞吐率和效率;
(2)该流水线的“瓶颈”在哪一段?
请采取两种不同的措施消除此“瓶颈”。
对于你所给出的两种新的流水线,连续输入10条指令时,其实际吞吐率和效率各是多少?
(1)
(2)瓶颈在3、4段。
⏹变成八级流水线(细分)
⏹重复设置部件
3.13有一个流水线由4段组成,其中每当流经第3段时,总要在该段循环一次,然后才能流到第4段。
如果每段经过一次所需要的时间都是
,问:
(1)当在流水线的输入端连续地每
时间输入任务时,该流水线会发生什么情况?
(2)此流水线的最大吞吐率为多少?
如果每
输入一个任务,连续处理10个任务时的实际吞吐率和效率是多少?
(3)当每段时间不变时,如何提高该流水线的吞吐率?
仍连续处理10个任务时,其吞吐率提高多少?
(1)会发生流水线阻塞情况。
第1个任务
S1
S3
S4
第2个任务
stall
第3个任务
第4个任务
(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
有正常定向路径,预测分支失败。
10)
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)