高速缓冲存储器【易忘】

聊聊高速缓冲存储器(Cache)的那些事儿。
局部性原理
想象一下,你在玩一个游戏,如果你刚刚捡了一个道具,很可能你很快就会用到它,这就是时间局部性。再比如,你在地图的某个区域探险,你可能会在这个区域附近找到更多的宝藏,这就是空间局部性。
Cache的工作原理
Cache就像是一个超市的货架,离收银台很近,方便顾客快速拿到东西。CPU就像顾客,它想要数据时,首先会看货架(Cache)上有没有,有就直接拿,没有就得去仓库(主存)里找,然后顺便把找到的东西放在货架上一些,方便下次拿。
映射方式
直接映射:就像每个货架上只有一个固定位置放某种商品,如果满了,就得把旧的拿走。
全相联映射:就像超市里任何地方都可以放任何商品,顾客需要找的时候,得一个个货架看过去。
组相联映射:超市被分成几个区,每个区里可以随便放,但是每个区只能放特定种类的商品。
替换算法
随机算法:就像随机决定哪个商品下架。
先进先出算法(FIFO):最先进来的商品最先下架。
近期最少使用算法(LRU):最近最少被顾客拿的商品下架。
最不经常使用算法:一段时间内最少被拿的商品下架。
写策略
全写法:顾客买了东西,超市的货架和仓库里都更新。
写回法:顾客买了东西,只更新货架,等货架满了再统一更新仓库。
写分配法:如果货架上没有顾客要的东西,就从仓库拿一些放到货架上,然后更新。
非写分配法:如果货架上没有,就直接在仓库更新,不放到货架上。
多级Cache
就像超市有好几个货架区域,这样可以避免因为顾客频繁买东西导致货架上的东西来不及更新。
 

相关知识点


程序访问的局部性原理
时间局部性:指程序在运行过程中,一旦访问了某个数据,不久之后很可能再次访问该数据。
空间局部性:指程序访问的数据在内存中的位置接近,访问了一个数据块之后,很可能紧接着访问其附近的数据块。
CACHE基本工作原理
Cache和主存都被划分成大小相等的块。
当CPU发出读请求时,如果请求的数据在Cache中,则直接从Cache读取,不涉及主存。
如果Cache未命中(即数据不在Cache中),则需要从主存中读取数据,并将其所在的块加载到Cache中。
CACHE与主存的映射方式
直接映射:每个主存块只能映射到Cache中的一个固定位置。如果该位置已被占用,则原有数据被替换。
全相联映射:主存块可以映射到Cache中的任意位置,通过比较地址的高位来确定。
组相联映射:Cache被分为多个组,每组内部采用全相联映射,组间采用直接映射。
CACHE中的替换算法
随机算法:随机选择一个Cache块进行替换。
先进先出算法(FIFO):替换最早进入Cache的行。
近期最少使用算法(LRU):替换最近最少访问的Cache行。
最不经常使用算法:替换在一段时间内访问次数最少的存储行。
CACHE写策略
写命中:
全写法(write-through):写入Cache时,同时更新主存,保证数据一致性。
写回法(write-back):仅修改Cache,当数据被替换时才写回主存。
写不命中:
写分配法(write-allocate):将主存中的块加载到Cache,然后更新Cache。
非写分配法(not-write-allocate):只更新主存,不加载到Cache。
多级Cache
使用多级Cache结构可以有效减少因频繁写操作导致的写缓冲饱和和溢出问题。
非写分配法通常与全写法搭配使用,而写分配法与写回法搭配使用。
 

 

 

相关推荐

  1. 高速缓冲存储器

    2024-06-16 10:18:02       5 阅读
  2. NeuralKG运行备

    2024-06-16 10:18:02       32 阅读
  3. Linux备手册

    2024-06-16 10:18:02       26 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-16 10:18:02       10 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-16 10:18:02       12 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-16 10:18:02       11 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-16 10:18:02       13 阅读

热门阅读

  1. Emacs Verilog mode 使用指南

    2024-06-16 10:18:02       7 阅读
  2. 广东工业大学上岸经验分享!

    2024-06-16 10:18:02       6 阅读
  3. Memcached介绍和详解

    2024-06-16 10:18:02       5 阅读
  4. AI大模型会让搜索引擎成为历史吗?

    2024-06-16 10:18:02       8 阅读
  5. 【C++ COM组件 运用ATL工程创建和调用COM组件】

    2024-06-16 10:18:02       5 阅读
  6. 记录.偏僻冷知识

    2024-06-16 10:18:02       6 阅读
  7. ssh免密登录

    2024-06-16 10:18:02       6 阅读
  8. npm发布自己的插件包

    2024-06-16 10:18:02       4 阅读
  9. 源码编译安装 clang/gcc

    2024-06-16 10:18:02       6 阅读
  10. 自定义防抖注解

    2024-06-16 10:18:02       6 阅读
  11. 如何把自己卖个好价钱:实战面试谈薪水

    2024-06-16 10:18:02       7 阅读
  12. 游戏缓存与异步持久化的完美邂逅

    2024-06-16 10:18:02       5 阅读