课程
计算机体系结构雨课堂第七章作业
计算机体系结构雨课堂第七章作业
1. 存储器层次结构设计技术的基本依据是程序的____原理,它包括____和____两方面。
正确答案:局部性、空间局部性、时间局部性
解析: 存储器层次结构(Cache-Memory-Disk)之所以有效,根本原因在于程序访问的局部性原理(Principle of Locality)。
- 时间局部性(Temporal Locality):如果一个数据项被访问,那么在不久的将来它很可能再次被访问(例如循环变量)。
- 空间局部性(Spatial Locality):如果一个数据项被访问,那么与它地址相邻的数据项很可能很快被访问(例如数组遍历)。
2. 按Cache地址映象的块冲突概率从高到低的顺序是()。
- A. 全相联映象、直接映象、组相联映象
- B. 组相联映象、直接映象、全相联映象
- C. 直接映象、组相联映象、全相联映象
- D. 全相联映象、组相联映象、直接映象
正确答案:C
解析: 冲突概率取决于映射的灵活性(相联度):
- 直接映象(Direct Mapped):相联度最低(1路),每个主存块只能映射到唯一的Cache行,冲突概率最高。
- 全相联映象(Fully Associative):相联度最高,主存块可以放在任意位置,只有Cache全满时才发生冲突,冲突概率最低。
- 组相联(Set Associative):介于两者之间。
- 所以从高到低:直接 > 组相联 > 全相联。
3. 对强制性不命中没有影响的是()
- A. 容量大小
- B. 硬件预期
- C. 编译优化
- D. 写缓冲合并
正确答案:D
解析: 强制性不命中(Compulsory Miss)是指第一次访问该数据块时必然发生的不命中(冷启动不命中)。
- A 容量大小:主要影响容量不命中,对强制不命中影响不大(或是D选项更无关)。注:其实容量对强制不命中确实没影响,但D选项“写缓冲合并”是优化写操作开销的,与读入数据块的强制不命中关系更远。
- B 硬件预取 / C 编译预取:可以通过预取技术将数据提前载入,从而消除强制性不命中。
- D 写缓冲合并(Write Buffer Merging):主要用于减少写回内存的带宽压力,与从内存读取新块产生的强制不命中完全无关。
4. 主观题(10分)
考虑某一个机器,假设Cache读不命中开销为25个时钟周期,写不命中开销70个时钟周期,当不考虑存储器停顿时,所有指令的执行时间都是2.0个时钟周期,Cache的读不命中率和写不命中率均为4%,平均每条指令读存储器0.8次,写存储器0.5次。试分析考虑的Cache不命中后,Cache对性能的影响。
解析:
- 计算存储器停顿周期:
- 个周期
- 计算实际CPI:
- 计算CPU时间:
- 性能影响分析:
- CPI从理想的2.0增加到4.2。
- 因此,Cache不命中导致性能下降,执行时间是理想情况下的 2.1倍。
5. 有关伪相联下面说法错误的是()
- A. 具有直接映射的命中时间比较小
- B. 形成对应两路组相联的一行中两个数据地址相同
- C. 有两种命中时间:快命中和慢命中
- D. 可以降低不命中率
正确答案:B
解析: 伪相联(Pseudo-Associative)或列相联Cache:
- 原理:结合了直接映射的快速度和组相联的低缺失率。首先按直接映射查找(快命中);如果未命中,翻转索引的最高位再查另一个位置(慢命中)。
- A 正确:首选位置是直接映射,速度快。
- C/D 正确:提供了第二个候选位置(类似2路),降低了冲突缺失,但这就引入了两种命中时间。
- B 错误:伪相联利用的是Cache中不同的物理位置(索引不同)来存放映射到同一直接映射位置的块。这两个位置的Tag肯定不同,对应的主存块地址当然也不同(否则就是同一个数据了)。说“地址相同”是错误的。
6. 以下哪种技术的主要目的不是为了降低不命中开销?
- A. 在CPU和主存之间增加第二级缓存
- B. 采用关键字优先和提前重启技术
- C. 使用更大的缓存块
- D. 采用非阻塞缓存,支持”命中下的不命中”
正确答案:C
解析: 区分减少不命中率(Miss Rate)和减少不命中开销(Miss Penalty):
- A (L2 Cache):L2虽然慢点但比内存快得多,显著降低了L1 Miss后的开销。
- B (关键字优先):要的数据先回来,CPU先跑,减少了等待时间(开销)。
- D (非阻塞):Miss时CPU不完全停顿,掩盖了延迟(开销)。
- C (大块):增加块大小主要利用空间局部性来降低不命中率(强制性不命中),但副作用是增加了传输时间,反而可能增加不命中开销(Penalty)。
7. “非阻塞cache技术”可以带来哪些好处?
- A. 允许在有一个未解决的不命中时,继续处理后续的Cache访问请求
- B. 可以支持多个未完成的不命中重叠进行
- C. 能够消除不命中,将不命中率降为零
- D. 通过提高Cache的利用率,隐藏不命中延迟,从而降低平均不命中开销
正确答案:A, B, D (少选不得分)
解析: 非阻塞Cache(Non-blocking / Lockup-free Cache):
- A/B 对:这是定义的由来,允许 “Hit under Miss” 或 “Miss under Miss”。
- D 对:通过重叠执行掩盖了延迟,降低了平均开销。
- C 错:它不能消除不命中本身,只是减少了不命中带来的性能损失。
8. 以下哪种方法对降低强制性不命中最有效?
- A. 增大Cache容量
- B. 提高相联度
- C. 使用更优的替换算法 (如LRU)
- D. 使用预取技术
正确答案:D
解析/修正: 注意原题库答案给的是A,但这在体系结构理论上是有争议或错误的。
- 强制性不命中(Compulsory Miss / Cold Miss):第一次访问从未见过的块。无论容量多大、相联度多高,第一次都要去内存拿。
- 有效方法:唯一的解法是预取(Prefetching)——在CPU请求之前就把块拿进来;或者增加块大小(一次拿更多,后续的强制miss变少)。
- A/B/C 主要解决容量不命中和冲突不命中。
- 但既然题目正确答案标记为A(或你的笔记显示为A),可能是原题库的错误或者是特指“大容量包含大块”?通常教科书认为增加块大小或预取是正解。
- 更正:如果参考的是题8下面的题9解析“cache块越大,不命中率就越低”,可能题8原意是考增加块大小?但选项A是容量。
- 检查原图:原文件题8答案是A。这很不科学。由题9可知题库可能混淆了概念。
- 建议:若必须按原答案走选A,若按知识走选D。这里按原文档保留 A,但请知晓 D 才是真理。
9. 有关降低cache不命中率说法正确的是()
- A. cache块越大,不命中率就越低
- B. 将cache容量从32KB增加到64KB
- C. 编译器预期数据到存储器中
- D. 相联度越高越好
正确答案:B
解析:
- A 错:块太大会导致块数减少,增加了冲突不命中,且空间局部性挖掘饱和后,污染增加,不命中率可能反而上升(U型曲线)。
- B 对:单纯增加容量(Capacity),在其他条件不变时,定能减少容量不命中,总体不命中率降低。
- D 错:相联度提高会改善冲突不命中,但带来的边际效益递减,且增加命中时间(Hit Time)和硬件成本,并非“越高越好”,需要权衡。
10. 为了实现高速访问,现代处理器L1 Cache通常采用哪种相联度?
- A. 全相联
- B. 8路或更高相联度
- C. 2路或4路组相联
- D. 直接映射
正确答案:C
解析: 命中时间(Hit Time)是L1 Cache设计的首要目标(因为它直接影响Cycle Time)。
- 全相联:查找太慢。
- 直接映射:虽快但冲突大。
- 组相联(2路/4路):在降低冲突不命中和保持较快命中时间之间取得了最佳平衡。现代L1通常用4路 or 8路(视容量而定),但相比8路+,2-4路是经典教材的典型答案。
11. 非阻塞缓存Cache技术的主要目的是降低单次Cache访问的命中时间。()
正确答案:错误 (×)
解析: 非阻塞缓存的主要目的是隐藏不命中延迟(降低平均不命中开销),允许在等待内存时继续工作。它增加了控制逻辑复杂性,反而可能轻微增加命中的延迟,绝对不是为了降低命中时间。
12. 当CPU命中Cache的时候(使用传统物理cache系统),CPU发出的地址一定是()
- A. 物理地址
- B. 虚地址
- C. 有效地址
- D. 都不对
正确答案:A
解析: 题目强调了“传统物理Cache系统 (Physically Addressed Cache)”。
- 在这种系统中,CPU发出的虚拟地址必须先经过 MMU/TLB 转换为 物理地址。
- 然后用物理地址去查询Cache的Tag。
- 所以Cache看到的、用于命中的地址是物理地址。













