体系结构.docx
《体系结构.docx》由会员分享,可在线阅读,更多相关《体系结构.docx(12页珍藏版)》请在冰豆网上搜索。
![体系结构.docx](https://file1.bdocx.com/fileroot1/2022-11/30/dc1373d3-b634-48ab-8d89-423989f4c11f/dc1373d3-b634-48ab-8d89-423989f4c11f1.gif)
体系结构
1.6某台主频为400的计算机执行标准测试程序,程序中指令类型、执行数量和平均时钟周期数如下:
指令类型
指令执行数量
平均时钟周期数
整数
45000
1
数据传送
75000
2
浮点
8000
4
分支
1500
2
求该计算机的有效、和程序执行时间。
解:
(1)=(45000×1+75000×2+8000×4+1500×2)/129500=1.776
(或
)
(2)速率==400/1.776=225.225(或
)
(3)程序执行时间=(45000×1+75000×2+8000×4+1500×2)/400=575ms
1.7将计算机系统中某一功能的处理速度加快10倍,但该功能的处理时间仅为整个系统运行时间的40%,则采用此增强功能方法后,能使整个系统的性能提高多少?
解由题可知:
可改进比例=40%=0.4部件加速比=10
根据定律可知:
采用此增强功能方法后,能使整个系统的性能提高到原来的1.5625倍。
2.11某台处理机的各条指令使用频度如下表所示:
指令
使用频度
指令
使用频度
指令
使用频度
43%
6%
2%
13%
5%
22%
7%
1%
1%
请分别设计这9条指令操作码的哈弗曼编码、3/3/3扩展编码和2/7扩展编码,并计算这3种编码的平均码长。
解:
根据给出的九条指令的使用频度和哈弗曼生成算法的结构的不用构造了两种不同的哈夫曼树。
(左边为A,右边为B)
各编码如下:
指令
哈弗曼A
哈弗曼B
3/3/3
2/7
I1
0.43
0
0
00
00
I2
0.22
10
100
01
01
I3
0.13
110
101
10
1000
I4
0.07
11100
1100
1100
1001
I5
0.06
11101
1101
1101
1010
I6
0.05
11110
1110
1110
1011
I7
0.02
111110
11110
111100
1100
I8
0.01
111110
111101
1101
I9
0.01
111111
111110
1110
由表可知,三种编码的平均码长为:
(公式:
∑*)
哈弗曼编码:
2.42位
3/3/3编码:
2.52位
2/7编码:
2.70位
平均码长:
2*432*224*(1-4322%)=2.7
2.12.某机指令字长16位。
设有单地址指令和双地址指令两类。
若每个地址字段为6位.且双地址指令有X条。
问单地址指令最多可以有多少条?
解:
双地址指令结构为:
(4位操作码)(6位地址码)(6位地址码)
单地址指令结构为:
(10位操作码)(6位地址码)
因此,每少一条双地址指令,则多2^6条单地址指令,
双地址指令最多是2^(16-6-6)=2^4=16条,
所以单地址指令最多有(16)*2^6条。
2.13.若某机要求:
三地址指令4条,单地址指令255条,零地址指令16条。
设指令字长为12位.每个地址码长为3位。
问能否以扩展操作码为其编码?
如果其中单地址指令为254条呢?
说明其理由。
解:
(1)不能用扩展码为其编码。
指令字长12位,每个地址码占3位,三地址指令最多是2^(12-3-3-3)=8条,现三地址指令需4条,
所以可有4条编码作为扩展码,而单地址指令最多为4×2^3×2^3=2^8=256条,现要求单地址指令255条,
所以可有一条编码作扩展码
因此零地址指令最多为1×2^3=8条
不满足题目要求,故不可能以扩展码为其编码。
(2)若单地址指令254条,可以用扩展码为其编码。
依据
(1)中推导,单地址指令中可用2条编码作为扩展码,零地址指令为2×2^3=16条,满足题目要求
3.6有一指令流水线如下所示
(1)求连续输入10条指令,该流水线的实际吞吐率和效率;
(2)该流水线的“瓶颈”在哪一段?
请采取两种不同的措施消除此“瓶颈”。
对于你所给出的两种新的流水线,连续输入10条指令时,其实际吞吐率和效率各是多少?
解:
(1)
(2)瓶颈在3、4段。
⏹变成八级流水线(细分)
⏹重复设置部件
3.7有一个流水线由4段组成,其中每当流经第3段时,总要在该段循环一次,然后才能流到第4段。
如果每段经过一次所需要的时间都是
,问:
(1)当在流水线的输入端连续地每
时间输入任务时,该流水线会发生什么情况?
(2)此流水线的最大吞吐率为多少?
如果每
输入一个任务,连续处理10个任务时的实际吞吐率和效率是多少?
(3)当每段时间不变时,如何提高该流水线的吞吐率?
仍连续处理10个任务时,其吞吐率提高多少?
解:
(1)会发生流水线阻塞情况。
第1个任务
S1
S2
S3
S3
S4
第2个任务
S1
S2
S3
S3
S4
第3个任务
S1
S2
S3
S3
S4
第4个任务
S1
S2
S3
S3
S4
(2)
(3)重复设置部件
吞吐率提高倍数=
=1.64
3.8有一条静态多功能流水线由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个段总时空区的面积的比值求得:
5.1解释下列术语
指令级并行:
简称。
是指指令之间存在的一种并行性,利用它,计算机可以并行执行两条或两条以上的指令。
指令调度:
通过在编译时让编译器重新组织指令顺序或通过硬件在执行时调整指令顺序来消除冲突。
指令的动态调度:
是指在保持数据流和异常行为的情况下,通过硬件对指令执行顺序进行重新安排,以提高流水线的利用率且减少停顿现象。
是由硬件在程序实际运行时实施的。
指令的静态调度:
是指依靠编译器对代码进行静态调度,以减少相关和冲突。
它不是在程序执行的过程中、而是在编译期间进行代码调度和优化的。
保留站:
在采用算法的处理器浮点部件中,在运算部件的入口设置的用来保存一条已经流出并等待到本功能部件执行的指令(相关信息)。
:
公共数据总线。
动态分支预测技术:
是用硬件动态地进行分支处理的方法。
在程序运行时,根据分支指令过去的表现来预测其将来的行为。
如果分支行为发生了变化,预测结果也跟着改变。
:
分支历史表。
用来记录相关分支指令最近一次或几次的执行情况是成功还是失败,并据此进行预测。
分支目标缓冲:
是一种动态分支预测技术。
将执行过的成功分支指令的地址以及预测的分支目标地址记录在一张硬件表中。
在每次取指令的同时,用该指令的地址与表中所有项目的相应字段进行比较,以便尽早知道分支是否成功,尽早知道分支目标地址,达到减少分支开销的目的。
前瞻执行:
解决控制相关的方法,它对分支指令的结果进行猜测,然后按这个猜测结果继续取指、流出和执行后续的指令。
只是指令执行的结果不是写回到寄存器或存储器,而是放到一个称为的缓冲器中。
等到相应的指令得到“确认”(即确实是应该执行的)后,才将结果写入寄存器或存储器。
:
。
前瞻执行缓冲器。
超标量:
一种多指令流出技术。
它在每个时钟周期流出的指令条数不固定,依代码的具体情况而定,但有个上限。
超流水:
在一个时钟周期内分时流出多条指令。
超长指令字:
一种多指令流出技术。
处理机在每个时钟周期流出的指令条数是固定的,这些指令构成一条长指令或者一个指令包,在这个指令包中,指令之间的并行性是通过指令显式地表示出来的。
循环展开:
是一种增加指令间并行性最简单和最常用的方法。
它将循环展开若干遍后,通过重命名和指令调度来开发更多的并行性。
7.9假设在3000次访存中,第一级失效110次,
第二级失效55次。
试问:
在这种情况下,该
系统的局部失效率和全局失效率各是多少?
解
第一级的失效率(全局和局部)是110/3000,
第二级的局部失效率是55/110,
第二级的全局失效率是55/3000,
7.10给定以下的假设,试计算直接映象和两路组相联的平均访问时间以及的性能。
由计算结果能得出什么结论?
(1)理想情况下的为2.0,时钟周期为2,平均每条指令访存1.2次;
(2)两者容量均为64,块大小都是32字节;
(3)组相联中的多路选择器使的时钟周期增加了10%;
(4)这两种的失效开销都是80;
(5)命中时间为1个时钟周期;
(6)64直接映象的失效率为1.4%,64两路组相联的失效率为1.0%。
解:
平均访问时间=命中时间+失效率×失效开销
平均访问时间1-路=2.0+1.4%*80=3.12
平均访问时间2-路=2.0*(1+10%)+1.0%*80=3.0
两路组相联的平均访问时间比较低
(执行+存储等待周期)*时钟周期
(执行+总失效次数/指令总数*失效开销)*时钟周期
((执行*时钟周期)+(每条指令的访存次数*失效率*失效开销*时钟周期))
1(2.0*2+1.2*0.014*80)=5.344
2(2.2*2+1.2*0.01*80)=5.36
相对性能比:
5.36/5.344=1.003
直接映象的访问速度比两路组相联要快1.04倍,而两路组相联的平均性能比直接映象要高1.003倍。
因此这里选择两路组相联。
8.6一个字节多路通道连接有6台设备,它们的数据传输率如下表所示。
设备名称
D1
D2
D3
D4
D5
D6
数据传输速率()
50
50
40
25
25
10
(1)计算该通道的实际工作流量。
(2)若通道的最大流量等于实际工作流量,求通道的工作周期。
解:
(1)通道实际流量为
(2)由于通道的最大流量等于实际工作流量,即有
可得,通道的工作周期=5μs。
8.7.设某个数组多路通道设备选择时间1s,传送1个字节数据的传送时间1s,一次传送定长数据块的大小512B。
现有8台外设的数据传输速率分别为如下表所示:
各外设的数据传输速率(/s)
外设号
1
2
3
4
5
6
7
8
数据传输速率
1000
480
480
800
512
512
1024
1024
问:
哪些外设可以连接到该通道上正常工作?
最大流量1/()=0.998即:
998
而数组多路通道中,实际流量等于连接在这个通道上的所有设备中数据流量最大的那个,
即
为了保证通道正常工作,各种通道实际流量应该不大于最大流量,即
<
因此每一台外设的数据传输速率均应小于最大流量,才符合要求。
所以外设号为2、3、4、5、6可以连接到该通道上正常工作。