计算机体系结构课后习题原版答案张晨曦著.docx
《计算机体系结构课后习题原版答案张晨曦著.docx》由会员分享,可在线阅读,更多相关《计算机体系结构课后习题原版答案张晨曦著.docx(27页珍藏版)》请在冰豆网上搜索。
![计算机体系结构课后习题原版答案张晨曦著.docx](https://file1.bdocx.com/fileroot1/2023-7/20/2baeaad1-5252-4997-8720-2eec4b3a100e/2baeaad1-5252-4997-8720-2eec4b3a100e1.gif)
计算机体系结构课后习题原版答案张晨曦著
第1章计算机系统结构的基本概念
1.1解释下列术语
计算机系统结构:
传统机器程序员所看到的计算机属性,即概念性结构与功能特性。
在计算机技术中,把这种本来存在的事物或属性,但从某种角度看又好像不存在的概念称为透明性。
系列机:
由同一厂家生产的具有相同系统结构、但具有不同组成和实现的一系列不同型号的计算机。
软件兼容:
一个软件可以不经修改或者只需少量修改就可以由一台计算机移植到另一台计算机上运行。
差别只是执行时间的不同。
向上(下)兼容:
按某档计算机编制的程序,不加修改就能运行于比它高(低)档的计算机。
向后(前)兼容:
按某个时期投入市场的某种型号计算机编制的程序,不加修改地就能运行于在它之后(前)投入市场的计算机。
兼容机:
由不同公司厂家生产的具有相同系统结构的计算机。
同构型多处理机系统:
由多个同类型或至少担负同等功能的处理机组成,它们同时处理同一作业中能并行执行的多个任务。
1.2试用实例说明计算机系统结构、计算机组成与计算机实现之间的相互关系。
答:
如在设计主存系统时,确定主存容量、编址方式、寻址范围等属于计算机系统结构。
确定主存周期、逻辑上是否采用并行主存、逻辑设计等属于计算机组成。
选择存储芯片类型、微组装技术、线路设计等属于计算机实现。
计算机组成是计算机系统结构的逻辑实现。
计算机实现是计算机组成的物理实现。
一种体系结构可以有多种组成。
一种组成可以有多种实现。
1.4计算机系统设计中经常使用的4个定量原理是什么?
并说出它们的含义。
答:
(1)以经常性事件为重点。
在计算机系统的设计中,对经常发生的情况,赋予它优先的处理权和资源使用权,以得到更多的总体上的改进。
(2)Amdahl定律。
加快某部件执行速度所获得的系统性能加速比,受限于该部件在系统中所占的重要性。
(3)CPU性能公式。
执行一个程序所需的CPU时间=IC×CPI×时钟周期时间。
(4)程序的局部性原理。
程序在执行时所访问地址的分布不是随机的,而是相对地簇聚。
1.5分别从执行程序的角度和处理数据的角度来看,计算机系统中并行性等级从低到高可分为哪几级?
答:
从处理数据的角度来看,并行性等级从低到高可分为:
(1)字串位串:
每次只对一个字的一位进行处理。
这是最基本的串行处理方式,不存在并行性;
(2)字串位并:
同时对一个字的全部位进行处理,不同字之间是串行的。
已开始出现并行性;
(3)字并位串:
同时对许多字的同一位(称为位片)进行处理。
这种方式具有较高的并行性;
(4)全并行:
同时对许多字的全部位或部分位进行处理。
这是最高一级的并行。
从执行程序的角度来看,并行性等级从低到高可分为:
(1)指令内部并行:
单条指令中各微操作之间的并行;
(2)指令级并行:
并行执行两条或两条以上的指令;
(3)线程级并行:
并行执行两个或两个以上的线程,通常是以一个进程内派生的多个线程为调度单位;
(4)任务级或过程级并行:
并行执行两个或两个以上的过程或任务(程序段),以子程序或进程为调度单元;
(5)作业或程序级并行:
并行执行两个或两个以上的作业或程序。
1.7将计算机系统中某一功能的处理速度加快10倍,但该功能的处理时间仅为整个系统运行时间的40%,则采用此增强功能方法后,能使整个系统的性能提高多少?
解由题可知:
可改进比例=40%=0.4部件加速比=10
根据Amdahl定律可知:
采用此增强功能方法后,能使整个系统的性能提高到原来的1.5625倍。
第2章指令集结构的分类
2.1解释下列术语
堆栈型机器:
CPU中存储操作数的单元是堆栈的机器。
累加器型机器:
CPU中存储操作数的单元是累加器的机器。
通用寄存器型机器:
CPU中存储操作数的单元是通用寄存器的机器。
2.2指令集结构设计所涉及的内容有哪些?
答:
(1)指令集功能设计:
主要有RISC和CISC两种技术发展方向;
(2)寻址方式的设计:
设置寻址方式可以通过对基准程序进行测试统计,察看各种寻址方式的使用频率,根据适用频率设置必要的寻址方式。
(3)操作数表示和操作数类型:
主要的操作数类型和操作数表示的选择有:
浮点数据类型、整型数据类型、字符型、十进制数据类型等等。
(4)寻址方式的表示:
可以将寻址方式编码于操作码中,也可以将寻址方式作为一个单独的域来表示。
(5)指令集格式的设计:
有变长编码格式、固定长度编码格式和混合型编码格式3种。
2.3简述CISC指令集结构功能设计的主要目标。
从当前的计算机技术观点来看,CISC指令集结构的计算机有什么缺点?
答:
主要目标是增强指令功能,把越来越多的功能交由硬件来实现,并且指令的数量也是越来越多。
缺点:
(1)CISC结构的指令集中,各种指令的使用频率相差悬殊。
(2)CISC结构指令的复杂性带来了计算机体系结构的复杂性,这不仅增加了研制时间和成本,而且还容易造成设计错误。
(3)CISC结构指令集的复杂性给VLSI设计增加了很大负担,不利于单片集成。
(4)CISC结构的指令集中,许多复杂指令需要很复杂的操作,因而运行速度慢。
(5)在CISC结构的指令集中,由于各条指令的功能不均衡性,不利于采用先进的计算机体系结构技术(如流水技术)来提高系统的性能。
2.4简述RISC指令集结构的设计原则。
答
(1)选取使用频率最高的指令,并补充一些最有用的指令;
(2)每条指令的功能应尽可能简单,并在一个机器周期内完成;(3)所有指令长度均相同;(4)只有Load和Store操作指令才访问存储器,其它指令操作均在寄存器之间进行;(5)以简单有效的方式支持高级语言。
2.5表示寻址方式的主要方法有哪些?
简述这些方法的优缺点。
答:
表示寻址方式有两种常用的方法:
(1)将寻址方式编于操作码中,由操作码在描述指令的同时也描述了相应的寻址方式。
这种方式译码快,但操作码和寻址方式的结合不仅增加了指令的条数,导致了指令的多样性,而且增加了CPU对指令译码的难度。
(2)为每个操作数设置一个地址描述符,由该地址描述符表示相应操作数的寻址方式。
这种方式译码较慢,但操作码和寻址独立,易于指令扩展。
第3章流水线技术
3.1解释下列术语
数据相关:
考虑两条指令i和j,i在j的前面,如果下述条件之一成立,则称指令j与指令i数据相关:
(1)指令j使用指令i产生的结果;
(2)指令j与指令k数据相关,而指令k又与指令i数据相关。
名相关:
如果两条指令使用了相同的名,但是它们之间并没有数据流动,则称这两条指令存在名相关。
控制相关:
是指由分支指令引起的相关。
它需要根据分支指令的执行结果来确定后面该执行哪个分支上的指令。
反相关:
考虑两条指令i和j,i在j的前面,如果指令j所写的名与指令i所读的名相同,则称指令i和j发生了反相关。
输出相关:
考虑两条指令i和j,i在j的前面,如果指令j和指令i所写的名相同,则称指令i和j发生了输出相关。
定向:
用来解决写后读冲突的。
在发生写后读相关的情况下,在计算结果尚未出来之前,后面等待使用该结果的指令并不见得是马上就要用该结果。
如果能够将该计算结果从其产生的地方直接送到其它指令需要它的地方,那么就可以避免停顿。
3.3简述先行控制的基本思想。
答:
先行控制技术是把缓冲技术和预处理技术相结合。
缓冲技术是在工作速度不固定的两个功能部件之间设置缓冲器,用以平滑它们的工作。
预处理技术是指预取指令、对指令进行加工以及预取操作数等。
采用先行控制方式的处理机内部设置多个缓冲站,用于平滑主存、指令分析部件、运算器三者之间的工作。
这样不仅使它们都能独立地工作,充分忙碌而不用相互等待,而且使指令分析部件和运算器分别能快速地取得指令和操作数,大幅度地提高指令的执行速度和部件的效率。
这些缓冲站都按先进先出的方式工作,而且都是由一组若干个能快速访问的存储单元和相关的控制逻辑组成。
采用先行控制技术可以实现多条指令的重叠解释执行。
3.6解决流水线瓶颈问题有哪两种常用方法?
答:
细分瓶颈段与重复设置瓶颈段
3.7减少流水线分支延迟的静态方法有哪些?
答:
(1)预测分支失败:
沿失败的分支继续处理指令,就好象什么都没发生似的。
当确定分支是失败时,说明预测正确,流水线正常流动;当确定分支是成功时,流水线就把在分支指令之后取出的指令转化为空操作,并按分支目标地址重新取指令执行。
(2)预测分支成功:
当流水线ID段检测到分支指令后,一旦计算出了分支目标地址,就开始从该目标地址取指令执行。
(3)延迟分支:
主要思想是从逻辑上“延长”分支指令的执行时间。
把延迟分支看成是由原来的分支指令和若干个延迟槽构成。
不管分支是否成功,都要按顺序执行延迟槽中的指令。
3种方法的共同特点:
它们对分支的处理方法在程序的执行过程中始终是不变的。
它们要么总是预测分支成功,要么总是预测分支失败。
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.12有一指令流水线如下所示
(1)求连续输入10条指令,该流水线的实际吞吐率和效率;
(2)该流水线的“瓶颈”在哪一段?
请采取两种不同的措施消除此“瓶颈”。
对于你所给出的两种新的流水线,连续输入10条指令时,其实际吞吐率和效率各是多少?
解:
(1)
(2)瓶颈在3、4段。
⏹变成八级流水线(细分)
⏹重复设置部件
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.18在CRAY-1机器上,按照链接方式执行下述4条向量指令(括号中给出了相应功能部件的执行时间),如果向量寄存器和功能部件之间的数据传送需要1拍,试求此链接流水线的通过时间是多少拍?
如果向量长度为64,则需多少拍才能得到全部结果?
V0←存储器(从存储器中取数:
7拍)
V2←V0+V1(向量加:
3拍)
V3←V24拍)
V5←V3∧V4(向量逻辑乘:
2拍)
解:
通过时间就是每条向量指令的第一个操作数执行完毕需要的时间,也就是各功能流水线由空到满的时间,具体过程如下图所示。
要得到全部结果,在流水线充满之后,向量中后继操作数继续以流水方式执行,直到整组向量执行完毕。
第4章指令级并行
4.1解释下列术语
指令级并行:
简称ILP。
是指指令之间存在的一种并行性,利用它,计算机可以并行执行两条或两条以上的指令。
指令的动态调度:
是指在保持数据流和异常行为的情况下,通过硬件对指令执行顺序进行重新安排,以提高流水线的利用率且减少停顿现象。
是由硬件在程序实际运行时实施的。
指令的静态调度:
是指依靠编译器对代码进行静态调度,以减少相关和冲突。
它不是在程序执行的过程中、而是在编译期间进行代码调度和优化的。
4.2简述Tomasulo算法的基本思想。
答:
核心思想是:
①记录和检测指令相关,操作数一旦就绪就立即执行,把发生RAW冲突的可能性减小到最少;②通过寄存器换名来消除WAR冲突和WAW冲突。
寄存器换名是通过保留站来实现,它保存等待流出和正在流出指令所需要的操作数。
基本思想:
只要操作数有效,就将其取到保留站,避免指令流出时才到寄存器中取数据,这就使得即将执行的指令从相应的保留站中取得操作数,而不是从寄存器中。
指令的执行结果也是直接送到等待数据的其它保留站中去。
因而,对于连续的寄存器写,只有最后一个才真正更新寄存器中的内容。
一条指令流出时,存放操作数的寄存器名被换成为对应于该寄存器保留站的名称(编号)。
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.9设指令流水线由取指令、分析指令和执行指令3个部件构成,每个部件经过的时间为△t,连续流入12条指令。
分别画出标量流水处理机以及ILP均为4的超标量处理机、超长指令字处理机、超流水处理机的时空图,并分别计算它们相对于标量流水处理机的加速比。
解:
标量流水处理机的时空图:
执行完12条指令需T1=14△t。
超标量流水处理机与超长指令字处理机的时空图:
超标量流水处理机中,每一个时钟周期同时启动4条指令。
执行完12条指令需T2=5△t,相对于标量流水处理机的加速比为:
超长指令字处理机中,每4条指令组成一条长指令,共形成3条长指令。
执行完12条指令需T3=5△t,相对于标量流水处理机的加速比为:
超流水处理机的时空图:
超流水处理机中,每1/4个时钟周期启动一条指令。
执行完12条指令需T4=5.75△t,相对于标量流水处理机的加速比为:
第5章存储层次
5.1解释下列术语
失效开销:
CPU向二级存储器发出访问请求到把这个数据调入一级存储器所需的时间。
强制性失效:
当第一次访问一个块时,该块不在Cache中,需要从下一级存储器中调入Cache,这就是强制性失效。
容量失效:
如果程序在执行时,所需要的块不能全部调入Cache中,则当某些块被替换后又重新被访问,就会产生失效,这种失效就称作容量失效。
冲突失效:
在组相联或直接映象Cache中,若太多的块映象到同一组(块)中,则会出现该组中某个块被别的块替换(即使别的组或块有空闲位置),然后又被重新访问的情况。
5.2简述“Cache—主存”层次与“主存—辅存”层次的区别。
答:
存储层次
比较项目
“Cache—主存”层次
“主存—辅存”层次
目的
为了弥补主存速度的不足
为了弥补主存容量的不足
存储管理的实现
全部由专用硬件实现
主要由软件实现
访问速度的比值
(第一级比第二级)
几比一
几万比一
典型的块(页)大小
几十个字节
几百到几千个字节
CPU对第二级的访问方式
可直接访问
均通过第一级
不命中时CPU是否切换
不切换
切换到其它进程
5.3地址映象方法有哪几种?
它们各有什么优缺点?
答:
(1)全相联映象。
实现查找的机制复杂,代价高,速度慢。
Cache空间的利用率较高,块冲突概率较低,因而Cache的失效率也低。
(2)直接映象。
实现查找的机制简单,速度快。
Cache空间的利用率较低,块冲突概率较高,因而Cache的失效率也高。
(3)组相联映象。
组相联是直接映象和全相联的一种折衷。
5.4降低Cache失效率有哪几种方法?
简述其基本思想。
答:
常用的降