07 降低cache不命中率
目录
8种降低cache不命中率的方法
增加cache大小
增加cache容量
提高相连度
伪相连cache
硬件预取
编译器控制的预取
编译优化
"牺牲"cache
三种类型的不命中
分类
强制性不命中
容量不命中
冲突不命中
三种不命中所占的比例
减少三种不命中的方法
8种降低cache不命中率的方法
增加cache大小
- 对于给定的cache容量, 当块大小增加时, 不命中率开始是下降的, 后来反而上升
- 原因: 一方面减少了强制性不命中, 另一方面又增加了冲突不命中
- 对于给定的cache容量, 当块大小增加时, 不命中率开始是下降的, 后来反而上升
增加cache容量
提高相连度
- 相连度超过8就意义不大了
- 提高相连度是以牺牲命中时间为代价
- 2 : 1 cache经验规则
- 容量为N的直接映像cache不命中率和容量为N/2的二路组相连的cache不命中率相同
伪相连cache
- 优点: 命中时间小, 不命中率低
- 工作原理
- 在逻辑上把直接映像的cache上下分成两个区. 对于任何一次访问, 伪相连cache先按照直接映像cache的方式去处理. 若命中, 则访问方式和直接映像cache的方式一样. 若不命中, 则去另一个区的对应位置去查找. 若找到则发生伪命中, 否则就去访问下一级存储器
- 工作原理
- 快速命中和慢速命中
- 分别对应快速命中和慢速命中
- 优点: 命中时间小, 不命中率低
硬件预取
- 指令和数据都可以预取
编译器控制的预取
- 目的: 使执行指令和读取数据可以重叠执行
- 每次预取花费一条指令的开销
- 按照预取数据所放置的位置可以分为两种
- 寄存器预取
- cache预取
- 按照预取的处理方式可以分为
- 故障性预取
- 非故障性预取
编译优化
- 通过对软件进行优化来降低不命中率
- 程序代码和数据重组
- 重新组织程序而不影响程序的正确性
"牺牲"cache
- 能减少冲突不命中次数而又不影响时钟频率的方法
- 基本思想
- 在cache和它的下一级存储器之间设置一个全相连的小cache, 用于存放刚被替换出去的块, 以备重用.
- 优点: 可以明显减少冲突不命中
三种类型的不命中
分类
强制性不命中
- 第一次访问cache的不命中就是强制性不命中
容量不命中
- 某些块刚被替换出去又要重新访问, 这个就是容量不命中
冲突不命中
- (碰撞不命中, 干扰不命中)
三种不命中所占的比例
- 相连度越高, 冲突不命中就越少
- 强制性不命中和容量不命中不受相连度的影响
- 强制不命中不受cache容量的影响, 但容量不命中却随着容量的增加而减少
减少三种不命中的方法
- 强制性不命中: 增加快大小 预取
- 容量不命中: 增加容量
- 冲突不命中: 增加相连度
07 降低cache不命中率相关推荐
- Cache的命中率影响因素
1. Cache容量对命中率的影响 Cache的命中率随它的容量的增加而提高,它们之间的关系曲线如图所示.在Cache容量比较小的时候,命中率提高得非常快,但根据边际效应递减原理随着Cache容量的增 ...
- cache相关命中率的运算_Cache和命中率
标签: Cache的工作原理 Cache的工作原理是基于程序访问的局部性. 对大量典型程序运行情况的分析结果表明,在一个较短的时间间隔内,由程序产生的地址往往集中在存储器逻辑地址空间的很小范围内.指令 ...
- 几种通过降低Cache失效率来提升程序性能的方法
几种通过降低Cache失效率来提升程序性能的方法 1 将矩阵转置 2 分块处理矩阵乘法 3 将分块和转置结合 4 总结 当程序访问多个数组时,经常会出现有些数组按行访问,有些数组按列访问的情况.以 ...
- cache和命中率的问题
(1)"Cache"是什么 Cache(即高速缓冲存储器(Cache Memory),是我们最常听到的一个词了. (2)为什么要设计Cache 我们知道,电脑的内存是以系统总线的时 ...
- 一篇搞懂cache的命中率
注:cache的命中率应接近于1.由于程序访问的局部性,实现这个目标是可能的. 在一个程序执行期间,设Nc 表示cache完成存取的总次数,Nm表示主存完成存取的总次数,h定义为命中率,则有 若tc表 ...
- cache相关命中率的运算_计算机高速缓冲存储器(Cache)命中率的分析
第 21 卷 第 3 期 河南教育学院学报( 自然科学版) Vol. 21 No. 3 2012 年 9 月 Journal of Henan Institute of Education ( Nat ...
- Oracle 查看library cache 解析命中率
这里的命中率指server process在library cache里软解析的命中率. 还有1个是rowcache(数据字典缓存)的命中率. 一般来讲, production服务器运行的时间越长, ...
- cache相关命中率的运算_Linux cache命中率查看
一.需求与背景 LINUX主机上的内存很为user.buffer.cache这个大的块.经常在使用free -m查看时,会发现cache占去了大头,从理论上我们也一直都知道cache里存放的是系统上访 ...
- 降低 cache 失效率的方法
cache 失效产生原因,可分为以下三类: (1)强制性失效 当第一次访问一个块时,该块不在cache中,需从下一级存储器中调入cache,这种失效称为强制性失效(Compulsory Miss) ...
最新文章
- vue 前端框架 (三)
- 【前沿】MIT搞了个进取型机器人!能研究学习对象操纵的基础
- .NET自动化测试工具链:Selenium+NUnit+ExtentReport
- how to fix error 25007 : loadlibraryshim()
- Redis分布式锁原理解析
- linux把2块盘挂到一个分区,linux系统如何挂载第二块硬盘
- 物联网落地三大困境破解
- docker 删除映像_如何在Docker中删除映像和容器
- 【codevs2516】【BZOJ2461】符环,DP
- FD.io VPP环境下运行用户应用程序教程
- 微型计算机原理第二版学习辅导,微型计算机原理及应用学习辅导.pdf
- C# Base64方式的编码与解码
- J2EE部署项目至Tomcat报错 Unable to read TLD META-INF/c tld
- linux 编译libvlc,libvlc源码编译
- 【element-ui】el-table中slot-scope的使用,用于动态绑定className等
- Scratch角色的绘制与中心点
- file html5 样式,CSS小技巧之自定义个性的file表单样式
- google外链怎么做?谷歌网站做外链的方法
- 【数据库】数据库恢复技术
- 【风控系列】3. 高效的风控业务流程