Appearance
408
计算机组成原理
CO-03-08 Cache基本原理与命中率计算
一、定位信息
| 项目 | 内容 |
|---|---|
| 所属圈层 | 核心层 |
| 前置知识回顾 | 需了解SRAM的工作原理(CO-03-02),了解存储器层次结构中Cache的位置(位于CPU和主存之间),了解程序局部性原理(时间局部性和空间局部性) |
| 知识网络定位 | 本单元是Cache系列知识(CO-03-08~10)的开篇,建立Cache的基本概念框架。Cache命中率计算是后续映射方式(CO-03-09)和替换算法(CO-03-10)的定量基础,也是考研必考的计算题型 |
| 考点热度等级 | H级 — Cache命中率计算和基本原理是每年必考的核心考点,近5年出现≥5次,选择题和计算题均常见 |
二、知识点讲解
2.1 Cache的由来与作用
CPU速度远快于主存速度(CPU执行一条指令约1ns,主存访问约50~100ns),如果CPU每次取数据都要等待主存,将严重浪费CPU时间。
Cache的作用:在CPU和主存之间放置一个容量小但速度快的存储器(用SRAM实现),将近期可能用到的数据和指令预先存放在Cache中。当CPU访问存储器时,先查Cache;如果数据在Cache中(命中),则快速读取;如果不在(未命中),再访问主存,并将包含目标数据的一个数据块调入Cache。
理论基础——局部性原理:
- 时间局部性:刚访问过的数据很可能很快再次被访问(循环变量、频繁调用的函数)
- 空间局部性:刚访问过的数据的相邻数据很可能很快被访问(数组顺序遍历、顺序执行指令)
2.2 Cache的工作流程
当CPU发出读请求(给出主存地址)时:
- 查找Cache:将主存地址与Cache中存储的标签(Tag)进行比较
- 判断命中:
- 命中(Hit):Cache中有该地址对应的数据,直接将数据送CPU
- 未命中(Miss):Cache中没有该数据,访问主存
- 未命中处理:从主存取出包含目标数据的整个数据块(Cache行/Cache Line),送入Cache,同时将目标数据送CPU
- 后续访问:由于空间局部性,该数据块中的其他数据很可能很快被访问
2.3 Cache命中率
命中率 :CPU访问Cache命中的概率。
未命中率(失效率):
命中率的影响因素:
- Cache容量:容量越大,命中率越高(但收益递减)
- Cache行大小(块大小):适当增大行大小可提高命中率(利用空间局部性),但过大会降低命中率(可能装入无用数据)
- 映射方式:全相联 > 组相联 > 直接映射(命中率从高到低)
- 替换算法:LRU通常优于FIFO和随机替换
- 程序本身的局部性特征
2.4 Cache-主存系统的平均访问时间
命中时访问时间 = Cache访问时间 未命中时访问时间 = Cache访问时间 + 主存访问时间 (先查Cache再访问主存,串行方式)
另一种常见公式(简化模型,假设命中时只访问Cache,未命中时只访问主存):
注意:两种公式对应不同的系统模型。考试中需根据题目描述选择正确的公式。如果题目说"先访问Cache,未命中再访问主存",用第一个公式;如果题目说"Cache和主存同时访问"或给出简化的命中/未命中时间,用第二个公式。
2.5 Cache的性能指标
加速比 :
表示使用Cache后,访问时间缩短为原来的 。
访问效率 :
表示Cache访问时间在平均访问时间中的占比。 越接近1,Cache效率越高。
2.6 Cache的两个重要等式
命中率与加速比的关系:
达到目标加速比所需的命中率:
2.7 多级Cache
现代计算机通常采用多级Cache:
- L1 Cache:在CPU内部,分为指令Cache(L1-I)和数据Cache(L1-D),速度最快,容量最小(32KB~64KB)
- L2 Cache:在CPU内部或紧邻CPU,容量较大(256KB~1MB)
- L3 Cache:多核共享,容量最大(几MB~几十MB)
多级Cache的平均访问时间(以两级为例):
其中 、 分别为L1、L2的局部命中率,、 分别为L1、L2的访问时间。
三、记忆与理解辅助
3.1 口诀记忆
口诀:"先查Cache命中快,未中再把主存搬,命中率高性能好,局部性是关键"
口诀:"串行公式 ,并行公式 "
- 串行(先Cache后主存):
- 并行(同时访问):
3.2 对比表:两种平均访问时间公式
| 模型 | 公式 | 含义 |
|---|---|---|
| 串行模型 | 先查Cache,未命中再查主存。命中时总时间=,未命中时总时间= | |
| 并行/简化模型 | Cache和主存同时被查询(或简化为命中取Cache时间,未命中取主存时间) |
3.3 命中率提升直觉
- Cache容量翻倍,命中率提升幅度逐渐减小(边际递减效应)
- 实际系统中,32KB L1 Cache的命中率约85%~95%,加上L2可达99%以上
- 命中率从90%提升到99%比从50%提升到90%更有价值(因为未命中率从10%降到1%,性能提升巨大)
四、例题与精解
例题1(基础)
题目:某计算机的Cache访问时间为10ns,主存访问时间为200ns,Cache命中率为90%。采用"先访问Cache,未命中再访问主存"的方式。求: (1)平均访问时间; (2)访问效率; (3)加速比。
命题意图:考查Cache-主存系统的基本性能计算。
审题分析:,,,串行模型。
解题思路:使用串行模型公式。
完整步骤:
(1)平均访问时间:
(2)访问效率:
(3)加速比:
即使用Cache后,平均访问速度是只用主存的6.67倍。
方法反思:注意串行和并行模型的区别。本题明确说"先访问Cache,未命中再访问主存",所以用串行模型。
例题2(中等)
题目:某计算机系统采用两级Cache。L1 Cache的命中率为95%,访问时间为2ns;L2 Cache的局部命中率为80%,访问时间为10ns;主存访问时间为100ns。 (1)求该系统的平均访问时间; (2)如果去掉L2 Cache,要达到相同的平均访问时间,L1 Cache的命中率需要提高到多少?
命题意图:考查多级Cache的平均访问时间计算及命中率分析。
审题分析:两级Cache,,,(L2局部命中率),,。
解题思路:使用多级Cache公式。
完整步骤:
(1)平均访问时间:
(2)去掉L2后的等效命中率:
只用一级Cache时,
令 :
即L1 Cache的命中率需要从95%提高到98.7%,增加了3.7个百分点。这说明L2 Cache的存在使得对L1命中率的要求大幅降低。
方法反思:
- 多级Cache中, 是L2的局部命中率(在L1未命中的情况下,L2命中的概率),不是全局命中率。
- L2 Cache的全局命中率 = 。
- 多级Cache的效果:虽然L2命中率只有80%(看起来不高),但因为只有5%的请求会到达L2,所以L2的存在大幅降低了访问主存的概率。
五、考情分析
| 项目 | 内容 |
|---|---|
| 近5年考查频次 | ≥5次 |
| 常见题型 | 选择题(Cache基本概念)、计算题(命中率、平均访问时间、加速比) |
| 分值占比 | 选择题2分,计算题5–8分 |
| 命题趋势 | Cache命中率计算是每年必考题型。近年趋势是将命中率计算与映射方式、替换算法结合出综合大题,或与多级Cache结合出计算题 |
六、易错点提醒
易错点1
- 错误表现:串行模型下计算平均访问时间时,未命中时只用 而忘记加上
- 错误原因:串行模型下,即使未命中也要先查Cache(花费 ),再查主存(花费 )
- 正确做法:串行模型:。未命中时总时间 =
易错点2
- 错误表现:多级Cache中,将L2的局部命中率误当作全局命中率
- 错误原因:混淆"局部命中率"和"全局命中率"的概念
- 正确做法:局部命中率 = 本级命中次数 ÷ 到达本级的访问次数。全局命中率 = 本级命中次数 ÷ 总访问次数。(局部)× = L2的全局命中率
易错点3
- 错误表现:认为提高Cache命中率只需增大Cache容量
- 错误原因:忽略其他因素(行大小、映射方式、替换算法、程序局部性)
- 正确做法:命中率受多个因素影响。容量只是其中之一,且存在边际递减效应。考试中需综合考虑
易错点4
- 错误表现:计算访问效率时,分子分母颠倒
- 错误原因:对"效率"的定义不清
- 正确做法:访问效率 ,表示Cache访问时间占平均访问时间的比例。 越接近1越好,说明大部分时间花在快速的Cache上
七、来源标注
- 依据2026考研统考大纲(408-计算机组成原理-第三章"存储器层次结构")
- 依据大学本科经典教材共识:唐朔飞《计算机组成原理》、白中英《计算机组成原理》、Patterson & Hennessy《计算机组成与设计》