计算机体系结构第5章答案.docx
- 文档编号:10121658
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:24
- 大小:136.10KB
计算机体系结构第5章答案.docx
《计算机体系结构第5章答案.docx》由会员分享,可在线阅读,更多相关《计算机体系结构第5章答案.docx(24页珍藏版)》请在冰点文库上搜索。
计算机体系结构第5章答案
一填空题
五、存储层次
1、速度容量
2、容量速度
3、高程序局部性
4、指令数据
5、映象规则查找算法
6、组相联直接
7、01
8、Cache块数
9、有效位标识
10、组相联映象全相联映象
11、按写分配法不按写分配法
12、写回法写直达法
13、随机法先进先出法(FIFO法)
14、先进先出法(FIFO法)最近最少使用法(LRU)
15、CPU访问Cache失效Cache块已全部被占满
16、随机法最近最少使用法(LRU)
17、写回法写直达法
18、写回法写直达法
19、速度快所使用的存储器频带较低
20、易于实现一致性好
21、256
22、失效率
23、减少失效开销减少Cache命中时间
24、强制性失效容量失效冲突失效
25、强制性冷启动(首次访问)容量
26、组相联直接碰撞(干扰)
27、冲突失效强制性容量
28、强制性容量
29、N/22:
1的Cache经验规则
30、强制性冲突
31、失效开销命中时间
32、伪相联CacheVictimCache
33、执行指令和读取数据能重叠执行循环
34、编译器优化
35、Cache块较小下一条指令正好访问同一Cache块的另一部分
36、非阻塞Cache
37、小快
38、快速命中减少失效次数
39、容量小、结构简单的Cache虚拟Cache写操作流水化
40、延迟带宽
41、大小相同的块可变长的块
三名词解释
五、存储层次(20个)
5.1存储器的层次结构
1、存储层次:
采用多种存储器技术,构成存储层次以实现存储器的大容量、高速度和低价格要求。
2、失效率:
CPU访存时,在一级存储器中找不到所需信息的概率。
3、失效开销:
CPU向二级存储器发出访问请求到把这个数据调入一级存储器所需的时间。
5.2Cache基本知识
4、全相联映象:
主存中的任一块可以被放置到Cache中任意一个地方。
5、直接映象:
主存中的每一块只能被放置到Cache中唯一的一个地方。
6、组相联映象:
主存中的每一块可以放置到Cache中唯一的一组中任何一个地方(Cache分成若干组,每组由若干块构成)。
7、替换算法:
由于主存中的块比Cache中的块多,所以当要从主存中调一个块到Cache中时,会出现该块所映象到的一组(或一个)Cache块已全部被占用的情况。
这时,需要被迫腾出其中的某一块,以接纳新调入的块。
8、LRU:
选择最近最少被访问的块作为被替换的块。
实际实现都是选择最久没有被访问的块作为被替换的块。
9、写直达法:
在执行写操作时,不仅把信息写入Cache中相应的块,而且也写入下一级存储器中相应的块。
写回法:
只把信息写入Cache中相应块,该块只有被替换时,才被写回主存。
10、按写分配法:
写失效时,先把所写单元所在的块调入Cache,然后再进行写入。
11、不按写分配法:
写失效时,直接写入下一级存储器中,而不把相应的块调入Cache。
5.3降低Cache失效率的方法
12、强制性失效:
当第一次访问一个块时,该块不在Cache中,需要从下一级存储器中调入Cache,这就是强制性失效。
13、容量失效:
如果程序在执行时,所需要的块不能全部调入Cache中,则当某些块被替换后又重新被访问,就会产生失效,这种失效就称作容量失效。
14、冲突失效:
在组相联或直接映象Cache中,若太多的块映象到同一组(块)中,则会出现该组中某个块被别的块替换(即使别的组或块有空闲位置),然后又被重新访问的情况。
15、2:
1Cache经验规则——大小为N的直接映象Cache的失效率约等于大小为N/2的两路组相联Cache的实效率。
16、VictimCache——位于Cache和存储器之间的又一级Cache,容量小,采用全相联策略。
用于存放由于失效而被丢弃(替换)的那些块。
每当失效发生时,在访问下一级存储器之前,先检查VictimCache中是否含有所需块。
17、伪相联Cache——一种既能获得多路组相联Cache的低失效率,又能获得直接映象Cache的命中速度的相联办法。
5.4减少Cache失效开销
18、子块放置技术——把一个Cache块划分为若干小块,称为子块(sub-blocks),并为每个子块赋予一位有效值,用于说明该子块中的数据是否有效。
失效时,只需从下一级存储器调入一个子块。
19、请求字优先——调块时,首先向存储器请求CPU所要的请求字。
请求字一旦到达,就立即送往CPU,让CPU继续执行,同时从存储器调入该块的其余部分。
5.5减少命中时间
5.6主存
20、独立存储体:
设置多个存储控制器,使多个体能独立操作,以便能同时进行多个独立的访存。
四简答题
五、存储层次(16个)
5.1存储器的层次结构
1、对于理解一个具体存储层次的工作原理,需搞清楚哪些问题?
答:
对于一个存储层次,需搞清楚以下4个问题:
(1)当把一个块调入高一层(靠近CPU)存储器时,可以放在哪些位置上?
即映象规则问题;
(2)当所要访问的块在高一层存储器中时,如何找到该块?
即查找算法问题;
(3)当发生失效时,应替换哪一块?
即替换算法;
(4)当进行写访问时,应进行哪些操作?
即写策略。
2、简述“Cache—主存”和“主存—辅存”层次的区别。
存储层次
比较项目
“Cache—主存”层次
“主存—辅存”层次
目的
为了弥补主存速度的不足
为了弥补主存容量的不足
存储管理实现
全部由专用硬件实现
主要由软件实现
访问速度的比值
(第一级比第二级)
几比一
几百比一
典型的块(页)大小
几十个字节
几百到几千个字节
CPU对第二级的访问方式
可直接访问
均通过第一级
失效时CPU是否切换
不切换
切换到其它进程
5.2Cache基本知识
1、映象规则解决什么问题,各映象规则具体是什么?
2、在“Cache-主存”存储层次中,地址映象方法有哪几种,它们是怎样进行地址映象的?
各有何优缺点?
3分
答:
设主存和Cache块地址分别为i和j。
地址映象有以下三种:
(1)直接映象法主存的一块只能映象到Cache中唯一的位置。
1分
(2)组相联映象,将Cache空间首先划分为组,一组内有多块(2g块),组间主存的一块楞以映象到Cache中的唯一的一组中的任意一块。
1分
(3)全相联映象:
主存的一块可以映象到Cache中的任意一块。
1分
优缺点:
直接映象Cache命中时间小,失效率最高;全相联映象命中时间最长,失效率最低。
2分
3、在“Cache-主存”存储层次中,主存的更新算法有哪两种?
它们各有何特点?
更新算法名称各1分,两种算法特点各2分
答:
主存的更新算法有以下两种:
(1)写直达法易于实现,而且下一级存储器中的数据总是最新的,但是增加多次不必要的向主存写入,采用写直达法的机器,一般设置写缓冲器。
(2)写回法速度快,“写”操作能以Cache存储器的速度进行。
而且对于同一单元的多个写最后只需一次写回下一级存储器,有些“写”只到达Cache,不到达主存,因而所使用的存储器频带较低,一般在cache的目录表(标识存储器)中设有“污染位”。
4、在Cache中,查找方法怎样进行?
答:
CPU发出访存地址,如何根据这个访存地址来确定Cache中是否有所要访问的块,若有的话如何确定其位置,这就是查找方法。
其具体实现是通过查找目录表来实现。
目录表的结构包括有效位和标识。
控制器通过比较目录表数据块的标识和CPU发来的主存地址标识部分进行比较,若相同且有效位为1,表示访问Cahe命中。
若标识不相同或者标识相同但有效位不为1,则表示访问Cache失效。
5、替换在什么情况下进行,替换算法有哪些?
答:
所要解决的问题:
当新调入一块到Cache时,而Cache又已被占满时,替换哪一块出Cache?
a.随机法:
随机的选择被替换的块优点:
实现简单
b.先进先出法FIFO(Fisrt-In-First-Out):
选择最早调入的块作为被替换的块。
c.最近最少使用法LRU(LeastRecentlyUsed):
选择最久没有被访问的块作为被替换的块。
5.3降低Cache失效率的方法
1、失效的类型有哪些,在什么情况下产生?
答:
(1)强制性失效(Compulsorymiss):
当第一次访问一个块时,该块不在Cache中,需从下一级存储器中调入Cache,这就是强制性失效。
也叫冷启动失效,首次访问失效。
(2)容量失效(Capacitymiss):
如果程序执行时所需的块不能全部调入Cache中,则当某些块被替换后,若又重新被访问,就会发生失效。
这种失效称为容量失效。
(3)冲突失效(Conflictmiss)在组相联或直接映象Cache中,若太多的块映象到同一组(块)中,则会出现该组中某个块被别的块替换(即使别的组或块有空闲位置),然后又被重新访问的情况。
这就是发生了冲突失效。
也叫碰撞失效,干扰失效。
2、增加Cache块大小,对Cache性能有何影响?
其原因是什么?
答:
(1)对于给定的Cache容量,当块大小增加失效率开始是下降,后来反而上升了;
(2)Cache容量越大,使失效率达到最低的块大小就越大。
导致上述失效率先下降后上升的原因,在于增加块大小会产生双重作用。
一方面它减少了强制性失效,因为局部性原理有时间局部性和空间局部性两方面的含义,增加块大小利用了空间局部性;
另一方面,由于增加块大小会减少Cache中块的数目,所以有可能会增加冲突失效。
在Cache容量较小时,甚至还会增加容量失效。
刚开始增加块大小时,由于块大小还不是很大,上述的第一种作用超过第二种作用,从而使失效率下降。
但等到块大小较大时,第二种作用超过第一种作用,使失效率上升。
3、VictimCache的实现思想是怎样的?
答:
在Cache和它从下一级存储器调数据的通路之间设置一个全相联的小Cache,称为VictimCache。
VictimCache中存放由于失效而被替换出去的那些块(即Victim)。
当发生失效时,在访问下一级存储器之前,先检查VictimCache中是否含有所需的块。
如果有,就将该块与Cahce中某个块做交换。
VictimCahce对于减小冲突失效很有效,特别是对于小容量的直接映象数据Cache,作用尤其明显。
4、通过编译器对程序优化来改进Cache性能的方法有哪几种?
简述其基本思想。
答:
(1)数组合并,通过提高空间局部性来减少失效次数。
有些程序同时用相同的索引来访问若干个数组的同一维,这些访问可能会相互干扰,导致冲突失效,可以将这些相互独立的数组合并成一个复合数组,使得一个Cache块中能包含全部所需元素。
(2)内外循环交换。
循环嵌套时,程序没有按数据在存储器中的循序访问。
只要简单地交换内外循环,就能使程序按数据在存储器中的存储循序进行访问。
(3)循环融合。
有些程序含有几部分独立的程序断,它们用相同的循环访问同样的数组,对相同的数据作不同的运算。
通过将它们融合成一个单一循环,能使读入Cache的数据被替换出去之前得到反复的使用。
(4)分块。
通过改进时间局部性来减少失效。
分块不是对数组的整行或整列进行访问,而是对子矩阵或块进行操作。
5、简述减小Cache失效的几种方法。
写出6种以上得全分,1种方法1分
答:
常用的降低Cache失效率的方法有下面几种:
(1)增加Cache块大小。
增加块大小利用了程序的空间局部性。
(2)提高相联度,降低冲突失效。
(3)VictimCache,降低冲突失效。
(4)伪相联Cache,降低冲突失效。
(5)硬件预取技术,指令和数据都可以在处理器提出访问请求前进行预取。
(6)由编译器控制的预取,硬件预取的替代方法,在编译时加入预取的指令,在数据被用到之前发出预取请求。
(7)编译器优化,通过对软件的优化来降低失效率。
5.4减少Cache失效开销
1、什么是请求字处理技术?
请求字处理技术有哪两种方案,具体是怎样实现的?
答:
从下一级存储器调入Cache的块中,只有一个字是立即需要的。
这个字称为请求字。
请求字处理技术正是着眼于这种每次调块时CPU只用到请求字的特性。
当CPU所请求的字到达时,不等整个块都调入Cache,就可以把该字发送给CPU并重启动CPU。
有两种具体的方案:
尽早重启动:
调块时,从块的起始位置开始读起。
一旦请求字到达,就立即发送给CPU,让CPU继续执行。
请求字优先:
调块时,从请求字所在的位置读起。
这样,第一个读出的字便是请求字。
将之立即发送给CPU。
2、简述减小Cache失效开销的几种方法。
(1)让读失效优先于写。
(2)子块放置技术。
(3)请求字处理技术。
(4)非阻塞Cache技术。
(5)采用两级Cache、
3、写出三级Cache的平均访问时间TA的公式。
答:
平均访存时间=命中时间+失效率×失效开销
只有第I层的失效时才会访问第I+1
设三级Cache的命中率分别为HL1、Hl2、HL3,失效率分别为Ml1、Ml2、ML3,第三级Cache的失效开销为PL3。
平均访问时间TA=HL1+Ml1{Hl2+Ml2(HL3+ML3×PL3)}
5.5减少命中时间
5.6主存
5.7虚拟存储器
4、有人认为,随着存储器芯片集成度的不断提高,主存的容量将越来越大,虚拟存储器将被淘汰,未来的计算机中将不再采用虚拟存储器。
你是否同意这种观点,为什么?
答:
我比较同意这样的观点。
设置虚拟存储器的目的就是为了满足应用程序对存储器容量的需求,当主存容量不能满足要求时,数据可存放于外存中。
这是一种不得已的方法。
如果存储器的容量能够满足程序的运行要求的话,就算设置了虚拟存储器,在程序运行时处理机实际上也不用访问外存调用数据。
这时,虚拟存储器的存在只有唯一的作用,那就是增加了访存时间,降低了处理机处理速度,所以当存储器的芯片集成度不断提高的未来,一个低成本大容量的主存就可以满足所有程序的运行要求。
那时淘汰虚拟存储器将是自然而然的。
就如现在,有些人在运行WIN98时,由于安装了大容量主存,就把系统的虚拟存储器功能禁止掉来提高运行速度。
可谓是实践的检验。
五计算题
五、存储层次
5.1存储器的层次结构
1、VAX-11/780在Cache命中时的指令平均执行时间是8.5时钟周期,Cache失效时间是6个时钟周期,假设不命中率是11%,每条指令平均访存3次。
(1)试计算在考虑了Cache不命中时的指令平均间,它比Cache命中时平均执行时间延长百分之几?
(2)若CPU在Cache命中时的指令平均执行时间是1.5时钟周期,其他条件一样,结果如何?
从结果的比较可看出什么问题?
解:
(1)已知:
Tie=8.5Tm=61-Hc=0.11
在Cache命中时,每条指令的访存时间是:
Tca=3Tc=3(Tc为平均访问Cache时间,一般为1个时钟周期)
而在考虑Cache不命中时,每条指令的访存时间为:
Tcb=3(0.89Tc+0.11×6)=2.67+1.98=4.65
因指令执行的其他时间相同,所以
Ti=8.5-3+4.65=10.15
(10.15-8.5)/8.5=0.194=19.4%
(2)根据题意,Tie=1.5
则当考虑Cache不命中时,每条指令的平均执行时间为:
Ti=1.5-3+4.65=3.15
(3.15-1.5)/3.15=0.524=52.4%
由比较结果可以看出,在速度较高的系统中,Cache的命中率对指令的执行速度有较大的影响,从而影响到整个系统的性能,因此,提高Cache的命中率,降低平均访存时间,对提高系统的性能有着重要作用。
5.2Cache基本知识
1、有一个"Cache-主存"存储层次,主存共分8个块(0~7),Cache分为4个块(0~3),采用组相联映象,组内块数为2块,替换算法为近期最少使用法(LRU)。
(1)画出主存、Cache存储器地址的各字段对应关系;
(2)对于如下主存块地址流:
1、2、4、1、3、7、0、1、2、5、4、6、4、7、2,如主存中内空一开始未装入Cache中,请列出随时间变化Cache中各块的使用情况。
;
(3)对于
(2),指出块失效又发生块争用时刻。
(4)对于(23),求出此间的Cache命中率。
解:
解:
(1)见下表:
nd区号
q'组号
s'块号
1位
1位
1位
nmr(块内地址)
↓
↓
↓
1位
1位
ncr(块内地址)
q
s
(2)如下表:
访问顺序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
地址块号
1
2
4
1
3
7
0
1
2
5
4
6
4
7
2
Cache中
块分配情况
1
1
1
1
1
1
1
1
1
1
4
4
4
4
4
-
-
4
4
4
4
0
0
0
5
5
5
5
5
5
-
2
2
2
2
7
7
7
7
7
7
6
6
6
2
-
-
-
-
3
3
3
3
2
2
2
2
2
7
7
操作状态
调进
调进
调进
命中
调进
替换
替换
命中
替换
替换
替换
替换
命中
替换
替换
(3)在第14和15次访问块时产生块失效又发生块争用现象。
(4)命中率:
Hc=3/15=20%
2、假设Cache的命中时间为1个时钟周期,失效开销为50个时钟周期,在混合Cache中一次load或store操作访问Cache的命中时间都要增加一个时钟周期(因为混合Cache只有一个端口,无法同时满足两个请求。
按照前一章中有关流水线的术语,混合Cache会导致结构冲突),根据下表所列的失效率,试问指令Cache和数据Cache容量均为16KB的分离Cache和容量为32KB的混合Cache相比,哪种Cache的失效率更低?
又假设采用写直达策略,且有一个写缓冲器,并且忽略写缓冲器引起的等待。
请问上述两种情况下平均访存时间各是多少?
表1指令Cache、数据Cache和混合Cache失效率的比较
容量
指令Cache
数据Cache
混合Cache
1KB
3.06%
24.61%
13.34%
2KB
2.26%
20.57%
9.78%
4KB
1.78%
15.94%
7.24%
8KB
1.10%
10.19%
4.57%
16KB
0.64%
6.47%
2.87%
32KB
0.39%
4.82%
1.99%
64KB
0.15%
3.77%
1.36%
128KB
0.02%
2.88%
0.95%
解:
如前所述,约75%的访存为取指令。
因此,分离Cache的总体失效率为:
(75%×0.64%)+(25%×6.47%)=2.10%
根据表1容量为32KB的混合Cache的失效率略低一些,只有1.99%.
平均访存时间公式可以分为指令访问和数据访问两部分:
平均访存时间=指令所占的百分比×(指令命中时间+指令失效率×失效开销)+数据所占的百分比×(数据命中时间+数据失效率×失效开销)
所以,两种结构的平均访存时间分别为:
平均访存时间分离=75%×(1+0.64%×50)+25%×(1+6.47%×50)
=(75%×1.32)+(25%×4.325)=0.990+1.059=2.05
平均访存时间混合=75%×(1+1.99%×50)+25%×(1+1+1.99%×50)
=(75%×1.995)+(25%×2.995)=1.496+0.749=2.24
故,尽管分离Cache的实际失效率比混合Cache的高,但其平均访存时间反而较低。
3、假设Cache失效开销为50个时钟周期,当不考虑存储器停顿时,所有指令的执行时间都是2.0个时钟周期,Cache的失效率为2%,平均每条指令访存1.33次。
试分析Cache对性能的影响。
解:
CPU时间=IC×(CPIexe+存储器停顿周期数/指令数)×时钟周期时间
考虑Cache的失效后,性能为:
CPU时间有cache=IC×(2.0+(1.33×2%×50))×时钟周期时间
=IC×3.33×时钟周期时间
实际CPI:
3.33
3.33/2.0=1.67(倍)
CPU时间也增加为原来的1.67倍。
但若不采用Cache,则:
CPI=2.0+50×1.33=68.5
4、考虑两种不同组织结构的Cache:
直接映象Cache和两路组相联Cache,试问它们对CPU的性能有何影响?
先求平均访存时间,然后再计算CPU性能。
分析时请用以下假设:
⑴理想Cache(命中率为100%)情况下的CPI为2.0,时钟周期为2ns,平均每条指令访存1.3次。
⑵两种Cache容量均为64KB,块大小都是32字节。
⑶在两路组相联Cache中,我们必须增加一个多路选择器,用于根据标识匹配结果从相应组的块中选择所需的数据。
因为CPU的速度直接与Cache命中的速度紧密相关,所以对于组相联Cache,由于多路选择器的存在而使CPU的时钟周期增加到原来的1.10倍。
⑷这两种结构Cache的失效开销都是70ns。
在实际应用中,应取整为整数个时钟周期。
⑸命中时间为1个时钟周期,64KB直接映象Cache的失效率为1.4%,相同容量的两路组相联Cache的失效率为1.0%。
解:
由:
平均访存时间=命中时间+失效率×失效开销
得:
平均访存时间1路=2.0+(0.014×70)=2.98ns
平均访存时间2路=2.0×1.10+(0.010×70)=2.90ns
两路级相联Cache的平均访存时间比较低。
由:
CPU时间=IC×(CPIexe+每条指令的平均存储器停顿周期数)×时钟周期时间
=IC×(CPIexe×时钟周期时间+每条指令的平均存储器停顿时间)
得:
CPU时间1路=IC×(2.0×2+(1.3×0.014×70))=5.27×IC
CPU时间2路=IC×(2.0×2×1.10+(1.3×0.010×70))=5.31×IC
相对性能比为:
CPU时间2路/CPU时间1路=5.31×IC/5.27×IC=1.01
5、给定以下的假设,试计算直接映象Cache和两路组相联Cache的平均访问时间以及CPU的性能。
由计算结果能得出什么结论?
(1)理想Cache情况下的CPI为2.0,时钟周期为2ns,平均每条指令访存1.2次;
(2)两者Cache容量均为64KB,块大小都是32字节;
(3)组相联Cache中的多路选择器使CPU的时钟周期增加了10%;
(4)这两种Cache的失效开销都是80ns;
(5)命中时间为1个时钟周期;
(6)64KB直接映象Cache的失效率为1.4%,64KB两路组相联Cache的失效率为10%。
解:
平均访问时间=命中时间+失效率×失效开销
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机体系结构 答案
![提示](https://static.bingdoc.com/images/bang_tan.gif)