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

关于cachecache miss cache的本意是缓存,缓存的优点是访问速度快 https://zhuanlan.zhihu.com/p/70273183 阅读详情

引语

本文是 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工作效率。

如何提高cache miss 在C++代码中提升CPU缓存(Cache)命中率可以显著提高性能,特别是在处理大规模数据或需要频繁内存访问的场景中。 阅读详情

相关推荐

CPU体系结构——cache总结

CPU Cache 何为cachecache是内存数据的高速缓存,如果cpu要访问的数据在cache中,称为“命中”,否则称为“缺失”。cache分为L1 cache、L2 cache、L3 cache,读写延迟依次增加,实现成本依次降低,这样设计是根据性能和价格的折中考虑。程序的数据和指令分别存储在两片cache中,对应数据缓存(D-cache)和指令缓存(L-cache) 程序局部性原理:最近被CPU访问的数据短期内还要访问(时间局部性),被访问数据附近的数据短期内也会被CPU访问(空间局部性).

Xinyue_Lu的博客 2259

一文告诉你怎么解决cache miss的问题

基本操作是:当加速器第一次从cache中获取数据没有命中,那么就在MSHR中记录下相应的信息和状态,当第二次相同数据miss发生,除了在MSHR中记录信息外,则启动从外部存储器获取数据,并更新到cache中。还有一个问题是,MSHR中的表项subentries大小是固定的,如果要扩展表项的subentries,那么所有的内容都是同等扩展,这样可能有一些内容并不需要那么大。这样就会造成频繁的访问DDR,这样DDR的带宽就不够用,造成的结果就是加速器会受到延迟,效率无法得到提升。Cache miss的问题。

qq_43416206的博客 1518

别再傻傻分不清了!Cache Miss、Page Fault、TLB Miss 到底谁在管?一篇讲透硬件操作系统的分工

本文深入解析了计算机系统中的Cache Miss、Page Fault和TLB Miss三种内存访问瓶颈的处理机制,揭示了硬件操作系统在内存管理中的分工协作。通过对比分析不同机制的触发条件、处理主体和性能影响,帮助开发者理解如何优化系统性能,提升内存访问效率。

weixin_33724046的博客 357

探秘计算机系统中的Cache Miss现象

Cache是位于处理器和主存之间的一级或多级高速缓存,用于存储最近或最常访问的数据。通过将数据保存在Cache中,可以加快对数据的访问速度,减少对主存的访问次数,从而提高计算机系统的整体性能。Cache Miss指的是在Cache中无法找到所需数据的情况,需要通过访问主存来获取数据。Cache Miss会导致额外的延迟,并降低系统的运行效率。因此,减少Cache Miss是优化计算机系统性能的关键。

m0_72410588的博客 4639

Cache原理简介及cache miss

CPU体系结构之cache小结 1.What is cache? Cache是用来对内存数据的缓存。 CPU要访问的数据在Cache中有缓存,称为“命中” (Hit),反之则称为“缺失” (Miss)CPU访问它的速度介于寄存器内存之间(数量级的差别)。实现Cache的花费介于寄存器内存之间。 现在 CPUCache 又被细分了几层,常见的有 L1 Cache, L2 Cache, L3 Cache,其读写延迟依次增加,实现的成本依次降低。 现代系统采用从 Register ―>966.

hithj_cainiao的博客 1万+

CPU Cache 机制以及 Cache miss

转自:http://www.mamicode.com/info-detail-2658407.html CPU体系结构之cache小结 1.What is cache? Cache是用来对内存数据的缓存。 CPU要访问的数据在Cache中有缓存,称为“命中” (Hit),反之则称为“缺失” (Miss)CPU访问它的速度介于寄存器内存之间(数量级的差别)。实现Cache的花费介于寄...

xcw_1987的博客 3600

【IC设计】Cache基础入门(地址映射方式、hit/miss的判断、替换策略、一致性问题)

通过有效位判断cache中的数据块是否保存了有效信息,例如cpu启动时,cache中没有有效数据,valid置为0,或者其他core改了这个数据,那么为了保证缓存一致性,当前core的cache中应该把这个数据valid置为0,需要读的时候从别的core的cache读取。这就涉及到一个问题,内存中的数据存在cache中的什么位置。在多核场景下,每个CPU都有自己的私有Cache,对私有cache的数据更新,其他cache是感知不到的,所以可能会出现同一个内存地址在不同的私有cache中数据不一致的问题。

VICI的博客 1732

带你搞懂cache---替换策略

是计算机体系结构中的一个重要概念,用于决定当 Cache 已满且发生 Cache 未命中(Cache Miss)时,应该替换掉哪个 Cache 行以腾出空间加载新数据。替换策略的选择直接影响 Cache 的性能,尤其是命中率(Hit Rate)。以下是对 Cache 替换策略的详细解释,包括常见策略的原理、优缺点以及具体示例。

weixin_49118247的博客 2109

[转帖]CPU Cache 机制以及 Cache miss

CPU Cache 机制以及 Cache miss https://www.cnblogs.com/jokerjason/p/10711022.html CPU体系结构之cache小结 1.What is cache? Cache是用来对内存数据的缓存。 CPU要访问的数据在Cache中有缓存,称为“命中” (Hit),反之则称为“缺失” (Miss)。 ...

weixin_30820077的博客 386

知识点10:cache的缓存策略、共享策略替换策略、分配策略

cache的缓存策略、、共享策略替换策略、分配策略 ---- 沃曹搞蒙了,哪来的这么多策略

baron-周贺贺-代码改变世界ctw 540

手机上的算法优化 —— cache miss

【前言】 cache是利用局部性原理(时间、空间),更好的解决硬件间速率不匹配的问。 现代CPUCache一般分为三级: L1,Cache生产成本最高,容量最小,但是速度最快,处理器访问一级Cache中的数据一般只需要3~5个指令周期,一级Cache又分为数据Cache和指令Cache,分别缓存数据和指令; L2,Cache不区分数据和指令,容量较大,速度较慢; L3,Cache也称LLC(Last Level Cache),容量最大,而速度更慢。. 在多核时代,一般一颗CPU中,每核都有独立

tim514的博客 2752

【智能指针】​缓存未命中详解

缓存未命中(Cache Miss)​ 是计算机体系结构中的术语,指当 CPU 需要访问某个数据时,该数据不在高速缓存(Cache)​ 中,必须从更慢的主内存(RAM)中加载。这一过程会导致性能下降,因为访问主存的速度通常比访问缓存慢数十至数百倍。

浩瀚之水的专栏 2139

Cache miss和常见的优化手段

是指当 CPU 试图访问某个数据时,发现该数据不在缓存中,需要从更慢的内存层次(如 L2、L3 或主内存)加载该数据。程序应该尽可能地以顺序的方式访问数据,利用空间局部性(访问相邻内存位置的数据)和时间局部性(重复访问相同数据)。例如,遍历数组时,按顺序访问元素,而不是跳跃访问。通过分析程序的访问模式,CPU 可以预测接下来要访问的数据并提前加载到缓存,减少等待时间。如果程序中存在不常用的数据访问模式,可能会“污染”缓存,导致频繁的缓存未命中。优化数据访问顺序,避免让频繁访问的数据被不常用的数据覆盖。

底层软件设计内幕 2220

ERR_CACHE_MISS的解决方案

ERR_CACHE_MISS的解决方案 当页面的表单进行提交后,点击浏览器的返回按钮,页面会显示ERR_CACHE_MISS: 经过查询资料,如果不想显示该页面的话,需要在先前的页面设置缓存: <meta http-equiv=“Cache-Control” content=“max-age=7200” /> <meta http-equiv=“Expires” content=...

qq_39100644的博客 1万+

计算机系统---缓存不命中(Cache Miss

摘要 缓存技术通过将高频访问数据暂存于高速存储介质(如CPU缓存、内存缓存等),缓解高速低速设备间的速度不匹配问题。缓存不命中指请求数据未在缓存中,需从低级存储加载,导致延迟增加、性能下降。 缓存不命中分为四类: 强制性不命中:首次访问数据的固有成本,可通过预加载优化; 容量不命中:缓存容量不足导致数据被替换,需扩容或优化数据访问模式; 冲突不命中:缓存映射策略引发地址冲突,需调整数据结构或缓存配置; 一致性不命中:多核或分布式系统中缓存数据不一致,需同步机制保障一致性。 优化策略包括预加载、扩容缓存、调

MzKyle的博客 2299

.NET Core开发Web时遇到ERR_CACHE_MISS问题处理

ERR_CACHE_MISS、form表单提交

qq_40864276的博客 1586

CPU体系结构之cache小结

1.What is cache? CPU缓存(Cache Memory)位于CPU内存之间的临时存储器,它的容量比内存小但交换速度快。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度。 在CPU中加入缓存是一种高效的解决方案,这样整个内存储器(缓存+内存)就变成了既有缓存的高速度,又有内存的大容量...

Hober 2万+
上一篇: CPU Cache 知识详解之基础概念与映射方式(上)
下一篇: CPU Cache 知识详解之写策略以及缓存一致性(MESI)(下)
arc3102
博客等级 码龄8年 13粉丝 75原创
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值