第5
1. 单级存储器的主要矛盾是什么?通常采取什么方法来解决?
(3) 容量越大,速度越慢。
采取多级存储层次方法来解决。
2. 评价存储层次的主要参数有哪些?
存储层次的平均每位价格、命中率或失效率、平均访问时间。
3. “Cache-主存”和“主存-辅存”层次的主要区别是什么?
存储层次 比较项目 | “Cache-主存”层次 | “主存-辅存”层次 |
目的 | 为了弥补主存速度的不足 | 为了弥补主存容量的不足 |
存储管理的实现 | 全部由专用硬件实现 | 主要由软件实现 |
访问速度的比值 (第一级比第二级) | 几比一 | 几万比一 |
典型的块(页)大小 | 几十个字节 | 几百到几千个字节 |
CPU对第二级的访问方式 | 可直接访问 | 均通过第一级 |
不命中时CPU是否切换 | 不切换 | 切换到其他进程 |
4. 在存储层次中应解决哪四个问题?
(4)写策略:当进行写访问时,应进行哪些操作。
5. 地址映像方法有哪几种?它们各有什么优缺点?
(1)全相联映像。实现查找的机制复杂,代价高,速度慢。Cache空间的利用率较高,块冲突概率较低,因而Cache的失效率也低。
(2)直接映像。实现查找的机制简单,速度快。Cache空间的利用率较低,块冲突概率较高,因而Cache的失效率也高。
(3)组相联映像。组相联是直接映像和全相联的一种折中。
6. 组相联Cache比相同容量的直接映像Cache的失效率低。由此是否可以得出结论:采用组相联Cache一定能带来性能上的提高?为什么?
不一定。因为组相联命中率的提高是以增加命中时间为代价的,组相联需要增加多路选择开关。
7. Cache中,有哪两种实现并行查找的方法?
(2)用单体多字存储器和比较器来实现。
8. 替换算法有哪几种?它们各有什么优缺点?
(1)随机法:简单、易于用硬件实现,但这种方法没有考虑Cache块过去被使用的情况,反映不了程序的局部性,所以其失效率比LRU的高。
(2)先进先出法:容易实现。它虽然利用了同一组中各块进入Cache的顺序这一“历史”信息,但还是不能正确地反映程序的局部性。
(3)最近最少使用法LRU:失效率最低。但是LRU比较复杂,硬件实现比较困难。
9. 写策略主要有哪两种?它们各有什么优点?
(1) 写直达法:易于实现,而且下一级存储器中的数据总是最新的。
(2) 写回法:速度快,写操作能以Cache存储器的速度进行。而且对于同一单元的多个写最后只需一次写回下一级存储器,有些“写”只到达Cache,不到达主存,因而所使用的存储器频带较低。
10. 在写回法中,可采用什么方法减少在替换时块的写回?
常采用“污染位”标志。即为Cache中的每一块设置一个“污染位”(设在与该块相应的目录表项中),用于指出该块是“脏”的(被修改过)还是干净的(没被修改过)。替换时,若被替换的块是干净的,则不必写回下一级存储器,因为这时下一级存储器中相应块的内容与Cache中的一致。
11. 当发生Cache写失效时,是否调入相应的块,有哪两种选择?
(1)按写分配法:写失效时,先把所写单元所在的块调入Cache,然后再进行写入。这种方法也称为写时取方法。
(2)不按写分配法:写失效时,直接写入下一级存储器而不将相应的块调入Cache。这种方法也称为绕写法。
12. 按照Cache产生失效的原因不同,可以把失效分为哪三类?
强制性失效、容量失效、冲突失效。
13. 3C失效与Cache的相联度、容量有什么样的关系?
⑴ 相联度越高,冲突失效就越少。
⑵ 强制性失效和容量失效不受相联度的影响。
⑶ 强制性失效不受Cache容量的影响,但容量失效却随着容量的增加而减少。
⑷ 2:1的Cache经验规则:大小为N的直接映像Cache的失效率约等于大小为N/2的两路组相联Cache的失效率。
14. 增加Cache块大小一定会降低失效率吗?
不一定。
对于给定的Cache容量,当块大小增加时,失效率开始是下降,后来反而上升了。主要因为增加块大小会产生双重作用。一方面它减少了强制性失效;另一方面,可能会增加冲突失效。
15.伪相联的基本思想是什么?
采用这种方法时,在命中情况下,访问Cache的过程和直接映像Cache中的情况相同;而发生失效时,在访问下一级存储器之前,会先检查Cache另一个位置(块),看是否匹配。确定这个另一块的一种简单的方法是将索引字段的最高位取反,然后按照新索引去寻找伪相联组中的对应块。如果这一块的标识匹配,则称发生了伪命中。否则,就只好访问下一级存储器。
16.伪相联的优点是什么?
伪相联既能获得多路组相联Cache的低失效率又能保持直接映像Cache的命中速度。
17. 降低Cache失效率有哪些方法?
增加Cache块大小、提高相联度、增加Cache的容量、Victim Cache、伪相联Cache、硬件预取技术、由编译器控制的预取、编译器优化。
18. 减少Cache失效开销有哪些方法?
(1) 让读失效优先于写。
(2) 写缓冲合并。
(3) 请求字处理技术。
(4) 非阻塞Cache或非锁定Cache技术。
(5) 采用二级Cache。
19. 减少Cache命中时间有哪些方法?
容量小且结构简单的Cache、虚拟Cache 、Trace Cache、Cache访问流水化。
20. 请求字处理技术有哪两种具体的实现方法?
⑴ 尽早重启动: 在请求字没有到达时,CPU处于等待状态。一旦请求字到达,就立即发送给CPU,让等待的CPU尽早重启动,继续执行
⑵ 请求字优先: 调块时,首先向存储器请求CPU所要的请求字。请求字一旦到达,就立刻送往CPU,让CPU继续执行,同时从存储器调入该块的其余部分。请求字优先也称为回绕读取或关键字优先。
21.采用二级Cache的基本思想是什么?
通过在原有Cache和存储器之间增加另一级Cache,构成两级Cache。把第一级Cache做得足够小,使其速度和快速CPU的时钟周期相匹配,而把第二级Cache做得足够大,使它能捕获更多本来需要到主存去的访问,从而降低实际失效开销。
22. 采用容量小且结构简单的Cache有什么好处?
(1)可以有效地提高Cache的访问速度。因为硬件越简单,速度就越快。小容量Cache可以实现快速标识检测,对减少命中时间有益。
(2)Cache足够小,可以与处理器做在同一芯片上,以避免因芯片外访问而增加时间开销。
(3)保持Cache结构简单可采用直接映像Cache。直接映像Cache的主要优点是可以让标识检测和数据传送重叠进行,这样可以有效地减少命中时间。
23. “虚拟索引+物理标识” Cache的基本思想是什么?
直接用虚地址中的页内位移(页内位移在虚实地址的转换中保持不变)作为访问Cache的索引,但标识却是物理地址。CPU发出访存请求后,在进行虚实地址转换的同时,可并行进行标识的读取。在完成地址变换之后,再把得到的物理地址与标识进行比较。
24.可采用什么方法提高存储器带宽?
(1)增加存储器的宽度。
(2) 采用简单的多体交叉存储器。
(3)独立存储体。
(4)避免存储体冲突。
25.增加存储器的宽度有什么不足之处?
(1)它会增加CPU和存储器之间的连接通路(通常称为存储器总线)的宽度,使其实现代价提高。
(2)由于CPU访问Cache仍然是每次访问一个字,所以CPU和Cache之间需要有一个多路选择器,而且这个多路选择器可能会处在关健路径上。主存宽度增加后,用户扩充主存时的最小增量也增加了相应的倍数。在具有纠错功能的存储器中实现对一行(一次可并行读出的数据)中部分数据的写入比较复杂。
26.简述DRAM专用交叉结构优化的三种方式。
(1)Nibble方式 ― 每次进行行访问时,DRAM除能够给出所需的位以外,还能给出其后的3位。
(2)Page方式 ― 缓冲器以SRAM的方式工作:通过改变列地址,可以随机地访问缓冲器内的任一位。这种访问可以反复进行,直到下一次行访问或刷新。
(3)Static column方式 ― 和Page方式类似,只是在列地址改变时,无需触发列访问选通线。