【体系结构系列】提高Cache命中率

21 篇文章 22 订阅
订阅专栏

提高Cache命中率

不命中概述

三种类型的不命中(3C)

  • 强制性不命中(Compulsory miss)

    • 当第一次访问一个块时,该块不在Cache中,需从下一级存储器中调入Cache。(冷启动不命中,首次访问不命中)
  • 容量不命中(Capacity miss )

    • 如果程序执行时所需的块不能全部调入Cache中,则当某些块被替换后,若又重新被访问,就会发生不命中。
  • 冲突不命中(Conflict miss)

    • 在组相联或直接映象Cache中,若太多的块映象到同一组(块)中,则该组中某个块被别的块替换(即使别的组或块有空闲位置),然后又被重新访问的情况。(碰撞不命中,干扰不命中)

规则

  • 相联度越高,冲突不命中就越少;

  • 强制性不命中和容量不命中不受相联度的影响;

  • 强制性不命中不受Cache容量的影响,但容量不命中却随着容量的增加而减少。

减少三种不命中的方法

  • 强制性不命中:增加块大小,预取
  • 容量不命中:增加容量
  • 冲突不命中:提高相联度
  • 注意:许多降低不命中率的方法会增加命中时间或不命中开销
八种策略

优化策略一:增加 Cache 块大小

  • 不命中率与块大小的关系
    • 对于给定的Cache容量,当块大小增加时,不命中率开始是下降,后来反而上升了。
      • 一方面它减少了强制性不命中;
      • 另一方面,由于增加块大小会减少Cache中块的数目所以有可能会增加冲突不命中。
    • Cache容量越大,使不命中率达到最低的块大小就越大。
  • 增加块大小会增加不命中开销

优化策略二:增加Cache的容量

  • 最直接的方法是增加Cache的容量

  • 缺点:

    • 增加成本
    • 可能增加命中时间
  • 这种方法在片外Cache中用得比较多

优化策略三:提高相联度

  • 采用相联度超过8的方案的实际意义不大。
  • 2:1 Cache经验规则
    • 容量为N的直接映象Cache的不命中率和容量为N/2的两路组相联Cache的不命中率差不多相同。
  • 提高相联度是以增加命中时间为代价。

优化策略四:伪相联 Cache,列相联 Cache

  • 多路组相联的低不命中率和直接映像的命中速度

  • 伪相联 Cache 优缺点

    • 优点
      • 命中时间小
      • 不命中率低
    • 缺点
      • 多种命中时间
  • 基本思想及工作原理

    • 在逻辑上把直接映象Cache的空间上下平分为两个区。
    • 对于任何一次访问,伪相联Cache先按直接映象Cache的方式去处理。若命中,则其访问过程与直接映象Cache的情况一样。若不命中,则再到另一区相应的位置去查找。若找到,则发生了伪命中,否则就只好访问下一级存储器。
    • 快速命中与慢命中

优化策略五:硬件预取

  • 指令和数据都可以预取
  • 预取内容既可放入Cache,也可放在外缓冲器中。
    • 例如:指令流缓冲器
  • 指令预取通常由Cache之外的硬件完成
  • 预取效果(Joppi的研究结果)
    • 指令预取(4KB,直接映象Cache,块大小=16字节)
      • 1个块的指令流缓冲器:捕获15%~25%的不命中
      • 4个块的指令流缓冲器:捕获50%
      • 16个块的指令流缓冲器:捕获72%
    • 预取应利用存储器的空闲带宽,不能影响对正常不命中的处理否则可能会降低性能。

优化策略六:编译器控制的预取

  • 在编译时加入预取指令,在数据被用到之前发出预取请求。

  • 按照预取数据所放的位置,可把预取分为两种类型:

    • 寄存器预取:把数据取到寄存器中。
    • Cache预取:只将数据取到Cache中。
  • 按照预取的处理方式不同,可把预取分为:

    • 故障性预取:在预取时,若出现虚地址故障或违反保护权限,就会发生异常。
    • 非故障性预取:在遇到这种情况时则不会发生异常因为这时它会放弃预取,转变为空操作。
  • 在预取数据的同时,处理器应能继续执行。

    • 只有这样,预取才有意义。
  • 编译器控制预取的目的

    • 使执行指令和读取数据能重叠执行。
  • 每次预取需要花费一条指令的开销

    • 保证这种开销不超过预取所带来的收益
    • 编译器可以通过把重点放在那些可能会导致不命中的访问上,使程序避免不必要的预取,从而较大程度地减少平均访存时间。

优化策略七:编译器优化

  • 基本思想:通过对软件进行优化来降低不命中率。(特色:无需对硬件做任何改动)

  • 程序代码和数据重组

    • 可以重新组织程序而不影响程序的正确性

      • 把一个程序中的过程重新排序,就可能会减少冲突不命中,从而降低指令不命中率。

      • 把基本块对齐,使得程序的入口点与Cache块的起始位置对齐,就可以减少顺序代码执行时所发生的Cache不命中的可能性。(提高大Cache块的效率)

    • 如果编译器知道一个分支指令很可能会成功转移,那么它就可以通过以下两步来改善空间局部性:

      • 将转移目标处的基本块和紧跟着该分支指令后的基本块进行对调;
      • 把该分支指令换为操作语义相反的分支指令。
    • 数据对存储位置的限制更少,更便于调整顺序。

优化策略八:“牺牲”Cache

  • 一种能减少冲突不命中次数而又不影响时钟频率的方法。

  • 基本思想(类似多级 cache 的思想,但是更小)

    • 在Cache和它从下一级存储器调数据的通路之间设置一个全相联的小Cache,称为“牺牲”Cache ( Victim Cache)。用来存放被淘汰掉的 cache 块
  • 作用

    • 对于减小冲突不命中很有效,特别是对于小容量的直接映象数据Cache,作用尤其明显。
    • 例如:项数为4的Victim Cache,能使4KB Cache的冲突不命中减少20%~90%
性能优化-如何提高cache命中率
发狂的小花的博客
12-30 2794
如何提高cache命中率Cache基本原理与概念 影响Cache命中率因素分析 优化数据访问模式策略 提升Cache替换算法效率 多级缓存设计与应用实践 监控、诊断与调优工具介绍
增加Cache命中率加快程序运行速度
ZWANG987的博客
07-25 1776
场景一:改变程序运行顺序以提高Cache命中率 给定代码逻辑:当条件A成立,则执行B;否则执行C。 if (cond A) { // do sth. B } else { // do sth. C } CPU分支预测器机制:对于if条件语句,如果CPU可以预测到接下来执行的是if还是else里的指令,就可以提前将指令加载到缓存中,这样CPU就可以直接从Cache读取到指令,以加快执行速度。 下面代码给出两个操作逻辑:数组遍历和排序。 uint32_t a[100] = {0U}; // d
对缓存的思考——提高命中率
weixin_30858241的博客
02-14 464
开篇 编写高效的程序并不只在于算法的精巧,还应该考虑到计算机内部的组织结构,cpu微指令的执行,缓存的组织和工作原理等。 好的算法在实际中不见得有高效率,如果完全没有考虑缓存、微指令实现的话。 前两篇博文 局部性原理浅析介绍了程序的局部性原理,如何写出局部性良好代码。 提高程序性能、何为缓存讨论了存储器层次结构,计算机内部的存储结构、缓存的概念,简单的介绍了缓存的工作机制。 建议先...
怎么提高缓存命中率
最新发布
wupanP的博客
08-02 156
提前加载数据到缓存中; 增加缓存的存储空间,提高缓存的数据; 提升缓存的更新频率 1. 合理设置缓存过期时间 动态过期时间:根据数据的使用频率和更新频率,动态调整缓存过期时间。热数据(频繁访问的数据)可以设置较长的过期时间,冷数据(很少访问的数据)可以设置较短的过期时间。 合理的 TTL(Time-to-Live):避免设置过短的过期时间,导致缓存频繁失效和重新加载数据。通过分析访问模式,设置合适的 TTL。 2. 缓存预热 手动预热:在系统启动或重启时,手动将常用数据加载到缓存中,确保系统在初始
如何提高缓存命中率
孙荣达的博客
05-06 441
来源:https://dwz.cn/DactoiUI 缓存命中率的介绍 命中:可以直接通过缓存获取到需要的数据。 不命中:无法直接通过缓存获取到想要的数据,需要再次查询数据库或者执行其它的操作。原因可能是由于缓存中根本不存在,或者缓存已经过期。 通常来讲,缓存的命中率越高则表示使用缓存的收益越高,应用的性能越好(响应时间越短、吞吐量越高),抗并发的能力越强。 由此...
优化Cache机制,提升CPU性能
captain
09-21 765
一般来说,CPU先通过地址总线将要访问的数据的地址发送到内存控制器,内存控制器将地址解码之后,会根据Cache映射方式和替换策略来判断该地址对应的数据是否在Cache中,如果在,就直接从Cache中读取数据;Cache的作用是缓存主存中的数据,提高CPU的访问速度,减少CPU对主存的访问次数,从而提高计算机的性能。总之,CPU和Cache之间的交互是通过地址总线、数据总线和控制线进行的,它们之间的数据传输速度非常快,可以有效地减少CPU访问内存的次数,从而提高计算机的性能和效率。
简述影响Cache命中率的因素.pdf
05-25
Cache 容量比较小的时候,命中率提高得非常快,但根据边际效应递减原理随着 Cache 容量的增加,命中率提高的速度逐渐降低。当 Cache 的容量增加到无穷大时,命中率可望达到 100%,但是这在实际是做不到的。在一般...
计算机体系结构实验】Cache性能分析实验报告
01-14
提高Cache性能的关键在于提高命中率,这可以通过增大Cache容量、增加相联度和优化替换策略来实现。 对于不同类型的不命中,有对应的解决方案。强制不命中可通过增大块大小和预取技术来改善;容量不命中则直接通过...
北交计算机体系结构Cache实验报告
05-01
Cache 体系结构实验报告旨在理解 Cache 的三种映像规则(直接映像、组相连映像、全相连映像)以及其对于 Cache 命中率的影响。本实验报告通过阅读 Cache 模拟器源代码,了解直接映像、组相连映像、全相连映像以及...
Cache性能分析.doc
04-18
通过设置不同的变量,来观察对 Cache 命中率的影响,可以更好地理解 Cache 的基本概念、基本组织结构以及基本工作原理,并掌握降低 Cache命中率的各种方法以及这些方法对提高 Cache 性能的好处。 Cache 的基本...
体系结构试验报告cache存储过程.doc
09-29
- **组相联映射(Set-associative)**:与直接映射相比,组相联映射通过增加缓存的组数,提高命中率,降低了缺失率。 - **全相联映射(Fully-associative)**:所有缓存块都可以存放任意内存块,理论上能够提供...
cache命中率
04-13 7167
转自 (1)“Cache”是什么     Cache(即高速缓冲存储器(Cache Memory),是我们最常听到的一个词了。   (2)为什么要设计Cache     我们知道,电脑的内存是以系统总线的时钟频率工作的,这个频率通常也就是CPU的外频(对于雷鸟、毒龙系列的处理器,由于在设计采用了DDR技术,CPU工作的外频为系统总线频率的两倍)。但是,CPU的工作频率(主频)是外频与倍频因
如何提高缓存命中率来优化系统性能
GitChat
07-02 506
缓存的使用,几乎成为高并发场景下的标配。当遇到性能瓶颈或者需要提升系统性能的时候,有的开发人员的第一反应甚至就是“加缓存啊”……使用了缓存后,不能只满足于性能指标参数的提升,还要格外关注缓存的策略是否符合业务场景要求,甚至还要关注下性能收益和经济投入是否匹配。 本场 Chat 会结合几个真实的业务使用场景,从分析遇到的问题开始,定位到优化的关键点并实施,到最终上线后观察效果,针对缓存策略优化带来的...
【C++】如何提高Cache命中率,示例
weixin_30954265的博客
12-04 1065
参考链接 https://stackoverflow.com/questions/16699247/what-is-a-cache-friendly-code 只是堆积:缓存不友好与缓存友好代码的典型例子是矩阵乘法的“缓存阻塞”。 朴素矩阵乘法看起来像 for(i=0;i<N;i++) { for(j=0;j<N;j++) { dest[i...
性能优化之如何提高缓存命中率
晴天的博客
07-07 2344
性能优化之如何提高缓存命中率
提高cache命中率
aolitianya的博客
04-30 370
编程提高cache命中率
缓存命中率是什么,如何提高缓存命中率
Python_BT的博客
04-12 5728
缓存命中率:通常来讲,缓存的命中率越高则表示使用缓存的收益越高,应用的性能越好(响应时间越短、吞吐量越高),抗并发的能力越强。 命中:可以直接通过缓存获取到需要的数据。 不命中:无法直接通过缓存获取到想要的数据,需要再次查询数据库或者执行其它的操作。原因可能是由于缓存中根本不存在,或者缓存已经过期。 什么情况下适合使用缓存: 缓存适合"读多写少"的业务场景,反之,使用缓存的意义其实并不大,命中率会很低。 业务需求决定了对时效性的要求,直接影响到缓存的过期时间和更新策略。时效性要求越低,就越适合缓.
缓存设计:提高缓存命中率
uiuan00的专栏
10-28 410
目录 缓存命中率的介绍 如何监控缓存的命中率 影响缓存命中率的几个因素 1.业务场景和业务需求 2.缓存的设计(粒度和策略) 3.缓存容量和基础设施 4.其他因素 提高缓存命中率的方法 缓存命中率的介绍 命中:可以直接通过缓存获取到需要的数据。 不命中:无法直接通过缓存获取到想要的数据,需要再次查询数据库或者执行其它的操作。原因可能是由于缓存中根本不存在,或者缓存已经过期。 ...
计算机组成原理:Cache命中率与层次结构解析
"该资源是华工计算机组成复习的PPT,主要讲解了Cache命中率及相关概念。" 在计算机科学领域,Cache提高处理器访问数据速度的关键组件。CPU执行指令时,通常需要频繁访问内存中的数据。由于主内存的速度远慢于...
写文章

热门文章

  • 消息中间件RocketMQ(三):RocketMQTemplate的比较使用 47248
  • C++实现的BP神经网络(代码与详解) 44020
  • Python数据可视化(二):Pandas和Seanborn 18393
  • WebSocket(一):SpringBoot整合与Socketjs心跳重连实现 13540
  • 【软件工程系列】结构化需求分析 7944

分类专栏

  • Java 基础源码
  • 常见特性源码 12篇
  • 集合源码 12篇
  • 并发源码 34篇
  • Java 虚拟机 16篇
  • 数据库实现
  • Redis 实现 24篇
  • 数据库原理 24篇
  • 计算机基础 7篇
  • 计算机组成原理 16篇
  • 计算机体系结构 21篇
  • 操作系统 20篇
  • 计算机网络 19篇
  • 编译原理 11篇
  • 软件与算法 3篇
  • 软件工程 12篇
  • LeetCode 26篇
  • 框架及源码 6篇
  • Spring 33篇
  • Mybatis 22篇
  • SpringBoot 12篇
  • 分布式相关
  • 理论相关 11篇
  • ZooKeeper 实现 13篇
  • Dubbo 实现 15篇
  • 消息队列 MQ 17篇
  • NOSQL 数据库 11篇
  • 分布式搜索引擎 8篇
  • MySQL 与集群 11篇
  • RABC与分布式鉴权 10篇
  • Netty、NIO与网络编程 8篇
  • 分布式、微服务 6篇
  • 后台开发框架 13篇
  • Linux、虚拟化、自动化 13篇
  • JAVA、JVM、并发、设计模式 16篇
  • 其他 13篇
  • Python及数据分析 6篇
  • C++及神经网络 1篇
  • 前端开发 1篇

最新评论

  • C++实现的BP神经网络(代码与详解)

    广都--编程每日问: 我把程序改成了cmake 工程, utf8编码 目前的问题是 同一份代码, 训练预测 误差 2.27 估计是什么地方我操作失误

  • 【数据库原理系列】索引结构---B+树

    m0_73382787: 讲得真好5555

  • 【组成原理系列】数的运算

    做而论道_CS: 早期的计算机:  CPU 是由几个大型机柜组成,  占地上百平米。。。 此时的计算机,只有加法器,没有减法器。 所以:  要用补码当做负数、  用加法器加上补码,实现减法运算, 这是电子管计算机时代的做法。 经历了晶体管、集成电路、大规模集成电路时代,  在 CPU 中配置一个减法器,就不是难事了。 所以,想要做减法,立即就可以做了。  并不用转换成补码再相加。 所以,加法、减法,都是针对无符号数进行的。 此时,再讲什么原码补码的运算,就太落伍了。

  • 【组成原理系列】数的运算

    做而论道_CS: 一派胡言。

  • 【操作系统系列】磁盘基本原理与盘块编号

    -einstein: 很清楚

最新文章

  • 【Dubbo】扩展 etcd 注册中心
  • 【Dubbo】高级特性及原理
  • 【Dubbo】过滤器及实现
2021年234篇
2020年184篇
2019年86篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家菏泽人物玻璃钢景观雕塑厂家宿州景区玻璃钢雕塑制作桃子玻璃钢雕塑四川周年庆典商场美陈哪家好定做小型玻璃钢花盆杭州雕塑玻璃钢玻璃钢熊猫雕塑城景区商场内部美陈大连玻璃钢雕塑加工厂玻璃钢雕塑上色用什么原料商场美陈景观吊饰涪城玻璃钢花盆花器贺州商场美陈雕塑朝阳公园玻璃钢雕塑安装深圳玻璃钢动物雕塑厂家玻璃钢雕塑十大英模南充商场美陈花器嘉兴景区玻璃钢雕塑批发惠州玻璃钢雕塑生产鹰潭创意玻璃钢雕塑联系方式黑龙江玻璃钢雕塑价格四川玻璃钢雕塑家厂家玻璃钢花盆怎样喷油漆广州景观玻璃钢雕塑优势公园玻璃钢景观雕塑设计金昌抽象人物玻璃钢雕塑定做惠州玻璃钢火烈鸟雕塑朔州玻璃钢雕塑厂家北京周边商场美陈销售公司三门峡玻璃钢雕塑厂家香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化