【SRQ – 24】cache的基本知识
本文最后更新于41 天前,其中的信息可能已经过时,如有错误请发送邮件到zhangweihao22@outlook.com

缓存(Cache)的工作原理是为了加速数据访问,通过存储经常使用的数据或计算结果,减少从主存(RAM)或硬盘等较慢的存储设备获取数据的时间。它在计算机系统中处于处理器(CPU)和主存之间,能够提高系统的性能。下面是缓存工作原理的详细解释:

1. 缓存的基本概念

  • 缓存的层次结构(Cache Hierarchy)
  • L1 Cache(一级缓存):离处理器最近,速度最快,容量较小(通常为几KB到几十KB),分为指令缓存和数据缓存。
  • L2 Cache(二级缓存):比L1稍慢,容量稍大(通常为几百KB到几MB),也靠近处理器。
  • L3 Cache(三级缓存):比L2更慢,但容量更大(通常为几MB到几十MB),多核处理器通常共享L3缓存。

缓存的设计基于 局部性原理,即程序在某一时刻使用的内存地址和数据往往集中在一小部分区域。

  • 时间局部性:如果某个数据被访问一次,那么在不久的将来很可能再次被访问。
  • 空间局部性:如果某个内存位置被访问,那么该位置附近的地址很可能也会被访问。

2. 缓存的工作流程

当处理器需要读取或写入某个数据时,会按照以下步骤查询缓存:

  1. 处理器请求数据:处理器首先检查L1缓存,看所需数据是否在缓存中(这个操作叫缓存命中,Cache Hit)。
  2. 缓存命中(Cache Hit)
  • 如果数据存在于缓存中,处理器会直接从缓存中读取数据,这比从主存读取快得多。
  1. 缓存未命中(Cache Miss)
  • 如果数据不在缓存中(Cache Miss),处理器需要从主存中获取数据,并将数据存入缓存中,以便下次使用时加速访问。
  1. 数据替换策略
  • 当缓存已满且需要存入新数据时,缓存系统会根据某种替换策略决定丢弃哪部分旧数据。这些常见的策略包括:
    • LRU(Least Recently Used):替换掉最近最少使用的数据。
    • FIFO(First In, First Out):按数据进入缓存的顺序,最先进入的数据被替换。
    • 随机替换:随机选择一个缓存块进行替换。

3. 缓存的类型和机制

缓存根据写入时机和处理数据一致性的方式,可以分为以下几种类型:

1. 写回(Write-back)缓存

  • 在写回缓存中,数据不会立即写回到主存,而是先写到缓存中。只有当缓存中数据被替换时,才会将数据写回到主存。这样减少了对主存的写操作,提高了效率。
  • 处理器写数据时直接写到缓存块,主存中数据保持旧值,等缓存块被替换或其他特殊情况才写回主存。

2. 直写(Write-through)缓存

  • 在直写缓存中,每次写入缓存时,数据同时也被写入到主存。这种方法保证了主存中的数据始终是最新的,但增加了主存写入次数,性能较差。

3. 缓存一致性(Cache Coherence)

  • 在多核处理器系统中,各核可能会有自己的缓存副本。为了保证每个核访问到的数据都是一致的,使用了缓存一致性协议(如MESI协议),避免因为缓存不一致导致错误计算。

4. 缓存的映射方式

缓存中的存储单元被分为多个缓存块(Cache Block)。映射方式决定了数据如何从主存映射到缓存中。常见的映射方式有:

1. 直接映射(Direct Mapping)

  • 在直接映射中,每个主存块只能映射到缓存中的特定位置。通过主存地址的某些位找到相应的缓存块。如果发生冲突,即两个不同的数据映射到同一个缓存块,旧数据会被替换掉。

2. 全相联映射(Fully Associative Mapping)

  • 在全相联映射中,主存中的任何数据都可以存放在缓存的任何位置。这种映射方法灵活,但查找效率较低,因为需要检查缓存中的每一行是否是所需的数据。

3. 组相联映射(Set Associative Mapping)

  • 组相联映射是上述两种方法的折中方案。缓存被分为多个组,每个主存块可以映射到某个组中的任意一个位置。这种方法在查找效率和存储灵活性之间找到了平衡。

5. 缓存的性能影响

缓存的主要目的是提高性能,其影响体现在以下几个方面:

  1. 缓存命中率:缓存命中率是指从缓存中成功获取数据的次数与总访问次数的比例。高命中率意味着更多的数据请求被缓存服务,减少了对主存的访问,从而提高了性能。
  2. 缓存替换策略的影响:不同的替换策略会影响缓存的性能。合适的替换策略能提高命中率,从而减少缓存未命中的情况。
  3. 缓存大小与层级设计:缓存的容量越大,能存储的数据越多,但查找的时间也可能变长。多级缓存结构(如L1、L2、L3)在容量与查找时间之间找到了平衡,靠近处理器的缓存小但快,远离处理器的缓存大但慢。

6. 缓存的局限性

虽然缓存大大提高了性能,但它也有一些局限性:

  • 缓存未命中代价:当缓存未命中时,处理器必须从主存中读取数据,这会导致一定的延迟,称为缓存未命中代价。
  • 容量有限:缓存容量相对主存较小,当数据集较大时,缓存未命中的概率也会增加。
  • 复杂的硬件设计:多级缓存系统、替换策略等增加了处理器硬件的复杂性。

总结

缓存是通过存储经常访问的数据来减少从主存获取数据的时间,基于时间局部性和空间局部性原则。缓存的设计包括多层结构、替换策略、映射方式等,并通过适当的设计提高处理器的访问速度。

2024/10/6 创建
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
Copyright 2025-2025 @ Ziyang
Running Time days H M S