映射方式决定了主存块如何放置到 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 行中的任何一个。
  • 特征: “组间直接,组内全相联”。

  • 优点:

    • 兼顾了直接映射的低成本(查找范围缩小到组内)和全相联的高利用率(组内有多个位置可选)。
    • 有效降低了块冲突(抖动)的概率。 重点