视频加载失败

课程

5040 字
约 15 分钟

计算机体系结构雨课堂第七章作业

计算机体系结构exercises/Rainclass_Homework·更新于 2026-09-15

计算机体系结构雨课堂第七章作业


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对性能的影响。

解析:

  1. 计算存储器停顿周期
    • Memory Stall Cycles=(Reads×Read Miss Rate×Read Penalty)+(Writes×Write Miss Rate×Write Penalty)\text{Memory Stall Cycles} = (\text{Reads} \times \text{Read Miss Rate} \times \text{Read Penalty}) + (\text{Writes} \times \text{Write Miss Rate} \times \text{Write Penalty})
    • =0.8×4%×25+0.5×4%×70= 0.8 \times 4\% \times 25 + 0.5 \times 4\% \times 70
    • =0.8×1+0.5×2.8= 0.8 \times 1 + 0.5 \times 2.8
    • =0.8+1.4=2.2= 0.8 + 1.4 = 2.2 个周期
  2. 计算实际CPI
    • CPIactual=CPIideal+Stall Cycles\text{CPI}_{\text{actual}} = \text{CPI}_{\text{ideal}} + \text{Stall Cycles}
    • =2.0+2.2=4.2= 2.0 + 2.2 = 4.2
  3. 计算CPU时间
    • CPU Time=IC×CPIactual×Clock Cycle Time\text{CPU Time} = \text{IC} \times \text{CPI}_{\text{actual}} \times \text{Clock Cycle Time}
    • =IC×4.2×Clock Cycle Time= \text{IC} \times 4.2 \times \text{Clock Cycle Time}
  4. 性能影响分析
    • CPI从理想的2.0增加到4.2。
    • 4.22.0=2.1\frac{4.2}{2.0} = 2.1
    • 因此,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看到的、用于命中的地址是物理地址。
Profile Image of the Author
Sonder
好想要技术
这是公告标题
这只是一个公告
分类
标签
站点信息
构建平台
GitHub Actions
博客版本
Firefly v6.16.7
文章许可
CC BY-NC-SA 4.0
文章目录