高速缓冲存储器【易忘】

聊聊高速缓冲存储器(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结构可以有效减少因频繁写操作导致的写缓冲饱和和溢出问题。
非写分配法通常与全写法搭配使用,而写分配法与写回法搭配使用。
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值