cache中set associativity和way的概念

Set Associativity 和 Way 的概念

1. Set Associativity(组相联)
  • 定义:
    Set Associativity 是缓存的一种组织方式,用于决定一个特定的内存地址可以映射到缓存的哪个位置。缓存被分为多个 set(组),每个 set 中包含若干条缓存行(lines)。
    • 如果一个缓存行可以映射到多个位置,则称为 组相联缓存
    • 每个组包含若干条缓存行的个数,称为 way
2. Way(路数)
  • 定义:
    Way 指的是一个组中包含的缓存行数。例如:
    • 2-way set associative: 每个组中有 2 条缓存行。
    • 4-way set associative: 每个组中有 4 条缓存行。
    • Direct-mapped cache: 这是 1-way set associative(每组只有 1 条缓存行)。
    • Fully associative cache: 这是特殊情况,缓存中只有 1 组,所有缓存行都属于同一组。

缓存类型的对比

类型 Set 数量 Way 数量 特点
Direct Mapped 多(每个内存地址唯一映射到一个组) 每组 1 条缓存行(1-way) 简单快速,但容易发生冲突缺失(conflict miss)。
Set Associative 每组有多条缓存行(n-way) 冲突缺失减少,速度和硬件复杂性在 Direct-Mapped 和 Fully Associative 之间。
Fully Associative 1(只有一个组) 所有缓存行(n = 全部) 没有冲突缺失,但硬件复杂性高,访问速度较慢(需检查所有缓存行)。

Set Associativity 和 Way 的关系

  • Set 数量计算:

    • Set 数量 = Cache 容量 / (Way 数量 × 缓存行大小)
    • 例子:
      一个 2-way set associative 缓存,大小为 16KB,缓存行大小为 64B:
      • 缓存总行数 = 16KB / 64B = 256 行
      • 每组 2 行(2-way),因此组数量 = 256 / 2 = 128 组。
  • Way 表示灵活性:

    • Way 的数量越多,表示每组中可以容纳更多的缓存行,冲突缺失减少,但硬件成本和复杂性会增加。

实际例子

Direct Mapped Cache (1-Way)
  • 特点: 每个内存地址被直接映射到某个固定的组(set)。
  • 问题: 如果多个地址映射到同一组,就会频繁替换,导致冲突缺失。
2-Way Set Associative Cache
  • 特点: 每个组包含 2 条缓存行(way)。如果一个地址映射到某组,它可以存储在该组的任意 2 条缓存行中。
  • 优势: 减少了冲突缺失,但需要硬件支持两路并行比较(比较两个 tag)。
Fully Associative Cache
  • 特点: 所有内存地址可以存储在缓存中的任何位置,没有组的概念。
  • 问题: 查找缓存行需要比较所有的标签,硬件复杂性高。

总结

  1. Set Associativity 是缓存的组织方式,决定了内存地址在缓存中的映射范围。
  2. Way 表示一个组中缓存行的数量。
  3. Direct Mapped 是 1-way 的特例,而 Fully Associative 是所有行属于同一组的特例。
上一篇:解析传统及深度学习目标检测方法的原理与具体应用之道