一、Cache基本概念
- 定义:Cache是位于CPU与主存之间的高速缓冲存储器,用于缓解CPU与主存之间的速度差异。
- 透明性:对程序员和编译器而言,Cache是透明的,程序员无需关心其存在与否,但理解Cache机制有助于编写高效程序。
- 基本术语:
- 主存块(Block):主存被划分为大小相等的块。
- Cache行(Line)或槽(Slot):Cache被划分为与主存块大小相同的行或槽。
- 命中(Hit):CPU访问的数据在Cache中。
- 缺失(Miss):CPU访问的数据不在Cache中,需从主存调入。
二、Cache映射方式(Cache Mapping)
Cache映射方式决定了主存块如何映射到Cache行中,主要有三种方式:
| 映射方式 | 特点 | 优点 | 缺点 |
|---|---|---|---|
| 直接映射(Direct Mapped) | 每个主存块映射到Cache中固定的行 | 实现简单、命中时间短、无需考虑替换策略 | 不够灵活,易产生冲突缺失,Cache空间利用率低 |
| 全相联映射(Fully Associative) | 每个主存块可映射到Cache任意行 | 灵活,冲突缺失为0,命中率高 | 实现复杂,需大量比较器,成本高,速度慢 |
| 组相联映射(Set Associative) | 每组主存块映射到Cache固定组的任意行(组间模映射、组内全映射) | 综合直接映射和全相联映射优点,兼顾灵活性与实现成本 | 实现较复杂,需一定数量比较器 |
三、Cache地址划分与组织结构
- 地址划分:
- 标记(Tag):用于标识主存块。
- 索引(Index):用于定位Cache行或组。
- 字节偏移(Byte Offset):用于定位块内具体字节。
- 有效位(Valid Bit):
- 标记Cache行数据是否有效(1有效,0无效或初始状态)。