Cache存储器概述

Cache存储器

一、引入背景:为何需要Cache?

主存(通常为DRAM)虽已通过双端口RAM、多模块存储等方式提高访问速度,但与CPU高达数GHz的执行速度相比仍存在巨大差距。

若全部采用速度更快的SRAM芯片替代DRAM,虽然能提升主存性能,但成本高、容量低,芯片集成度限制也不允许Cache做得太大。因此,为缓解CPU与主存之间的速度矛盾,引入一种**“容量小、速度快”的中间缓存层——Cache**是更现实的解决方案。

二、程序的局部性原理:Cache高效运作的理论基础

Cache 的设计依据是程序运行中存在 局部性原理,包括:

1. 空间局部性(Spatial Locality)

最近会被访问的数据,通常位于当前正在访问数据的附近地址。

  • 实例1:数组按行访问
    如二维数组按行访问,访问 a[0][0] 后大概率会访问 a[0][1]a[0][2] 等相邻元素。

  • 实例2:顺序执行的机器指令
    程序的机器指令通常按顺序存储,访问一条指令后,下一条指令往往也会被执行。

2. 时间局部性(Temporal Locality)

最近被访问的数据或指令在短时间内可能再次被访问。

  • 实例:循环结构中的变量和操作
    sum += a[i][j] 中的 sumij 会在每次循环中被多次使用。

三、Cache的工作机制:高速缓存如何提升性能

1. 基本流程

  • CPU访问数据 → 先查Cache

    • 命中(Hit):直接从Cache中读取
    • 未命中(Miss):从主存中读取,并将数据块复制到Cache中

2. 两种访问策略比较

策略命中处理时间未命中处理时间平均访问时间公式
先查Cache,再查主存 t c t_c tc t c + t m t_c + t_m tc+tm t = H ⋅ t c + ( 1 − H ) ⋅ ( t c + t m ) t = H \cdot t_c + (1-H) \cdot (t_c + t_m) t=Htc+(1H)(tc+tm)
同时查Cache与主存 t c t_c tc t m t_m tm t = H ⋅ t c + ( 1 − H ) ⋅ t m t = H \cdot t_c + (1-H) \cdot t_m t=Htc+(1H)tm

其中,

  • t c t_c tc:访问Cache的时间
  • t m t_m tm:访问主存的时间
  • H H H:命中率(Hit Ratio)

3. 性能对比示例

若:

  • Cache速度为主存5倍,即 t c = t t_c = t tc=t t m = 5 t t_m = 5t tm=5t
  • 命中率 H = 0.95 H = 0.95 H=0.95

则:

  • 同时访问策略下:
    t = 0.95 t + 0.05 × 5 t = 1.2 t t = 0.95t + 0.05 \times 5t = 1.2t t=0.95t+0.05×5t=1.2t,性能提升 ≈ 4.17 × \approx 4.17 \times 4.17×
  • 先查Cache策略下:
    t = 0.95 t + 0.05 × 6 t = 1.25 t t = 0.95t + 0.05 \times 6t = 1.25t t=0.95t+0.05×6t=1.25t,性能提升 4.0 × 4.0 \times 4.0×

四、主存与Cache的分块机制

为实现局部性的数据批量加载,Cache 和主存都采用 按块划分的存储结构

1. 分块原理

  • 主存块(Page):也称页框、页面,单位为1KB(示例)
  • Cache块(Cache Line):也称行为行号,单位也为1KB

2. 地址拆解

若主存为 4 M B = 2 22 4MB = 2^{22} 4MB=222 字节,块大小为 1 K B = 2 10 1KB = 2^{10} 1KB=210,则:

  • 主存划分为 2 12 = 4096 2^{12} = 4096 212=4096 个块

  • 地址拆分为:

    • 前12位为块号
    • 后10位为块内偏移

3. 数据调入规则

每当CPU访问主存某地址,会将该地址所在的整个主存块复制一份到Cache,以便后续快速访问。

五、待解决的关键问题

Cache虽可提高访问效率,但为确保数据一致性与替换合理性,还需深入研究以下三大问题:

  1. 映射方式

    • 如何将主存块映射到有限的Cache块中?
    • 如何在Cache中定位某块是否是目标数据?
  2. 替换算法

    • 当Cache满时,若要加载新数据,应该替换哪一块?
    • 常见策略如LRU(最近最少使用)、FIFO(先进先出)等
  3. 写策略

    • CPU修改Cache中的数据后,主存中的数据如何保持同步?
    • 写直达(Write Through)或写回(Write Back)机制如何选择?

这些问题将在后续探讨。

六、总结

Cache是连接主存与CPU的高效桥梁,虽然容量小,但速度快,借助程序运行中的局部性原理,在不显著增加硬件成本的前提下大幅提升系统整体性能。理解Cache的基本机制与存在问题,是掌握存储系统结构和优化的核心基础。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值