cache中Associativity 和 Way 的概念

Associativity 和 Way 的概念

在缓存设计中,associativity(关联性)和 way 是描述缓存结构的重要术语。它们定义了内存地址如何映射到缓存块(cache line),以及缓存的组织方式。


1. Direct-Mapped Cache (直接映射缓存)

  • 定义: 每个内存地址只能映射到缓存中的唯一一个块(cache line)。
  • 特点:
    • associativity = 1
    • way = 1
  • 结构:
    • 每个内存地址根据索引位直接找到对应的缓存行。
    • 容易实现,但会导致冲突失效(conflict miss)。
  • 示例:
    • 缓存大小:16 bytes
    • 缓存行大小:4 bytes
    • 行数:16 / 4 = 4 行
    • 内存块通过 index = (address / line size) % cache lines 找到缓存行。

2. Fully Associative Cache (全相联缓存)

  • 定义: 内存地址可以映射到缓存中的任意一个块。
  • 特点:
    • associativity = 总缓存块数
    • way = 总缓存块数
  • 结构:
    • 所有缓存块共享一个全局存储空间,查找时需要比较所有缓存块的标签(tag)。
    • 灵活性高,但硬件实现复杂。
  • 示例:
    • 缓存大小:16 bytes
    • 缓存行大小:4 bytes
    • 行数:16 / 4 = 4 行
    • 任意内存块可以存储在 4 个缓存行中的任何一个,需要逐一比较标签。

3. N-Way Set-Associative Cache (N 路组相联缓存)

  • 定义: 每个内存地址可以映射到一个特定的缓存组(set),而一个组中包含 N 个缓存块(way)。
  • 特点:
    • associativity = N
    • way = N
  • 结构:
    • 缓存被分成多个组(sets),每个组有固定数量的缓存块(ways)。
    • 查找时先根据索引找到组,再比较组中缓存块的标签。
  • 示例:
    • 缓存大小:16 bytes
    • 缓存行大小:4 bytes
    • 组数:4 / 2 = 2 组
    • 每个组有 2 条缓存块(2-way)。
具体示例解释:2-way 4-set cache
  • 总行数为 4 x 2 = 8 行。
  • 一个地址分为 索引位 (Set Index)标记位 (Tag)
    • 例如,地址为 32-bit:
      • 低 2 位表示块内偏移(block offset)。
      • 接下来 2 位表示组索引(set index)。
      • 剩余高位是标签(tag)。

4. Associativity 和 Way 的关系

  • Associativity 是一种描述缓存灵活性的指标,表示一个内存地址可以映射到的缓存块数量。
  • Way 表示每个组(set)中的缓存块数量(即每个 set 的宽度)。
    • 对于直接映射缓存,way = 1
    • 对于全相联缓存,way = 总缓存块数
    • 对于 N-Way Set-Associative 缓存,way = N
总结
缓存类型AssociativityWay描述
Direct-Mapped Cache11每个地址固定映射到一个缓存块
Fully Associative Cache总块数总块数地址可存放在任意缓存块
N-Way Set-AssociativeNN地址可存放在一个组中的 N 个块内

扩展

AssociativityWay 直接影响缓存性能:

  • 较高的 Associativity 减少冲突失效,但硬件实现复杂。
  • 较低的 Associativity 硬件简单,但冲突失效增加。

选择适当的 Associativity 是设计缓存时需要权衡的关键。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值