CPU Cache 知识详解之Cache_Miss与替换策略(中)

引语

本文是 CPU Cache 相关知识的中篇,上篇中介绍 CPU Cache 的基础概念和三种映射方式,本文会介绍高速缓存不命中(即 Cache Miss )和 Cache Line 的替换策略,将会涉及到到上文相关知识。

上文:CPU Cache 知识详解之基础概念与映射方式(上)

Cache Miss(缓存未命中)

当查找的数据不在高速缓存中或在但是不可用(有效位为0)

主要有三种 Compulsory Miss(Cold Miss) 强制性未命中, Conflict Miss 冲突性未命中,Capacity Miss 容量性未命中

Compulsory Miss(Cold Miss)强制性未命中

即在程序刚刚启动的时候,数据都是不在缓存中的,所以第一次访问数据必定发生 Miss ,这是不可避免的,由于该 Miss 发生在程序第一次读取数据中,所以也叫 Cold Miss,冷缺失

Conflict Miss 冲突性未命中

该 Miss 是由于**不同的内存块映射到同一个 Cache Set **导致的

Conflict_Miss示意图

这里的映射方式我拿直接映射举例,如图所示主存中地址 0 和 4 都映射到了同一个 Cache Set 1 中,注意是同一个 Cache Set ,只是由于直接映射导致看起来像映射到 Cache Line 导致的,这种 Miss 发生在直接映射和组相联中,因为只有这两类映射方式才具有多个 Cache Set ,而全相联只有一个 Cache Set (当然要说全相联全都映射到该 Cache Set 所以也有 Conflict Miss,这也没问题,重点理解概念即可)

该 Miss 是可以避免并且也应该避免的,因为仍然有空闲的空间可以存放数据

Capacity Miss 容量性未命中

该 Miss 是由于程序运行所需的 Set 的数量要大于缓存的 Set 的数量,导致不能把所有数据都装入缓存中,同样我们以直接映射来举例

Capacity_Cache示意图

假设程序需要读入地址 0 到 5 的数据,缓存中只有 4 个 Cache Set ,所以必然会导致 Miss ,所以这种 Miss 也是不好避免的

其他的 Miss 种类

在查阅资料的过程中,笔者发现除以上几种 Miss 外还存在一些 Miss,由于涉及的资料较少,加之笔者的能力有限,这里不过多讲述(读者若有了解的评论中说明)

Coherence Miss

It is also known as Invalidation. These misses occur when other external processors, i.e., I/O updates memory.

由于只查询到这句解释,个人理解是由于其他的 IO 读主存中数据进行修改,导致缓存中数据不可用引发的 Miss

Communication Miss

笔者在某个视频中得知该名词,没有找到任何资料

行替换策略(算法)

出现 Miss 后,就需要在下一级的内存中读取数据,那么就有可能涉及 Cache Line 的替换,就涉及到了 CPU Cache 中的替换策略;由于替换策略不是我们可以随意更改的,并且这里介绍的算法都是一些十分通用的算法,在操作系统,Redis 等中都有应用,网上资料相对丰富,所以这部分不会详细介绍算法流程,读者了解到高速缓存存在哪些替换策略即可

首先由于直接映射中每个地址映射到缓存中的位置都是唯一的,所以从下一级的内存中读取内存块到缓存中的策略就是直接替换

而组相联和全相联中一个内存块被映射到哪个 Cache Line 是不确定的,所以才存在替换策略将缓存中的一些 Cache Line 替换出去

最不常使用(Least-Frequently-Used, LFU)

该策略会替换在过去某个时间窗口内引用次数最少的那一行。容易把新加入的块替换掉,且容易让前期频繁访问,后期较少访问的块长期驻留。

最近最少使用(LeastRecently-Used, LRU)

策略会替换最后一次访问时间最久远的那一行。有较高命中率。

随机替换

随机选择一个 Cache Line 替换出去。随机替换算法在硬件上容易实现,且速度也比前两种算法快。缺点则是降低了命中率和Cache工作效率。

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值