映射方式决定了主存块如何放置到 Cache 的行中。
1. 全相联映射 (Fully Associative)
- 规则: 主存中的任意一块可以装入 Cache 中的任意一行。
- 优点: 灵活,块冲突概率最低,Cache 利用率高。
- 缺点:
- 地址变换复杂,需要查阅目录表(或使用昂贵的相联存储器进行并行查找)。
- 查表过程会增加访问延迟,影响 Cache 访问速度。 重点
2. 直接映射 (Direct Mapping)
- 规则: 每个主存块只能映射到 Cache 的固定行中。
- 公式: 。 重点
- 优点: 地址变换速度最快,硬件简单。
- 缺点: 块冲突概率最高,容易出现“抖动”现象。

3. 组相联映射 (Set-Associative)
组相联映射是直接映射与全相联映射的折中方案,是现代计算机最常用的方式。
-
逻辑结构:
- 将 Cache 分成 个组 (Set),每组包含 个行 (Line)。
- 若每组包含 个行,则称为“ 路组相联”(例如图片中每组有 2 行,即为 2 路组相联)。
-
映射规则:
- 组间直接映射: 主存块号按模运算决定其所属的 Cache 组号。
- 组内全相联: 主存块可以存入所属 Cache 组内的任意一行。 重点
-
数学公式:
-
图片逻辑解析:
- 主存分区: 主存被划分为若干个区(如区 0、区 1…),每个区的块数等于 Cache 的组数 。
- 映射关系: 主存每个区中相对位置相同的块,映射到同一个 Cache 组。例如:
- 区 0 的 0 号块、区 1 的 0 号块(全局 4 号块)均映射到 Cache 的 组 set0。
- 进入组内后,该块可以放置在 set0 的第 0 行或第 1 行中的任何一个。
-
特征: “组间直接,组内全相联”。
-
优点:
- 兼顾了直接映射的低成本(查找范围缩小到组内)和全相联的高利用率(组内有多个位置可选)。
- 有效降低了块冲突(抖动)的概率。 重点
