约 751 个字 1 行代码 4 张图片 预计阅读时间 4 分钟 共被读过 次
lec15-缓存系统¶
1. 内存层次结构与缓存基础¶
关键概念¶
- 处理器-DRAM 延迟差距:2020 年 CPU 在 DRAM 访问时间内可执行约 1000 条指令,而 1980 年仅为 1:1。
- 内存层次结构:
-
越靠近处理器:容量越小、速度越快、成本越高。
- 局部性原理:
- 时间局部性:近期访问的数据可能被重复使用。
- 空间局部性:邻近内存地址的数据可能被连续访问。
2. 缓存基本操作¶
缓存行为¶
- 缓存命中:数据在缓存中找到(直接返回)。
- 缓存缺失:数据不在缓存中 → 从内存获取,更新缓存后返回。
- 缓存行/块:缓存与内存间数据传输的最小单位(如 4 字节块)。
示例:带缓存的内存访问¶
- 缓存检查地址
0x12F0
。 - 命中:直接从缓存返回数据。
- 缺失:从内存获取数据,更新缓存后返回。
3. 缓存映射技术¶
3.1 全关联缓存¶
3.2 直接映射缓存¶
3.3 组关联缓存¶
4. 缓存策略¶
写策略¶
- 写直达:
- 同时写入缓存和内存。
- 简单但内存流量高。
- 写回:
- 仅写入缓存,标记为“脏”。
- 仅在替换时写回内存(流量更低)。
替换策略¶
- LRU(最近最少使用):跟踪访问历史,替换最久未使用的行。
- MRU(最近最多使用):与 LRU 相反(较少使用)。
5. 地址分解示例¶
全关联缓存(12 位地址)¶
组件 | 位数 | 示例(0x43F) |
---|---|---|
标签 | 10 | 0x10F |
字节偏移 | 2 | 0x3 |
直接映射缓存(12 位地址)¶
组件 | 位数 | 示例(0xFE2) |
---|---|---|
标签 | 8 | 0xFE |
索引 | 2 | 0x0 |
字节偏移 | 2 | 0x2 |
6. 硬件需求¶
- 全关联缓存:需要所有行的比较器(成本高)。
- 直接映射缓存:基于索引的简单查找(成本低但易冲突)。
- 组关联缓存:平衡成本与性能(如 2 路组关联每组使用 2 个比较器)。
7. 性能考量¶
- 缺失惩罚:从低层存储获取数据的时间。
- 命中率:对整体性能至关重要(通过预取和局部性优化)。
- 多级缓存:L1(小/快)→ L2(较大/较慢)→ L3(共享)。