这篇将Cache着色的挺清楚的,将cache原理也将明白了,转载一下


现代的cache设计大都采用set-association方式,即提高利用率又节省硬件。color只能提高这种cache的使用率。如果采用full-association则color没有用处。 而direct-mapped cache是set-association cache的一种特殊情况而已。

简单说来,整个内存被分为n个cache page,每个cache page包含数量固定的cache line。 
整个cache被分为m个cache way,每个cache way有相同数量的cache line。
内存中的数据依据自己在内存中的cache line索引[getCacheLineIndex(addr)]只能被放入某一个cache way中相对应的cache line里面。假设已经从地址中提取出cache line的索引i,那么硬件会同时访问所有cache way的第i块cache line,找出一个拥有空闲行i的cache way,随后数据就可以放到这个空闲行中。如果m个cache way中都没有找到空闲的地i行,则启动淘汰策略,淘出一个空行~ 
比如一个cache有4个cache way(4路cache),每个cache way有16个cache line。某个数据结构的内存地址的cache line索引为2,则它只能被放入的某个cache way ( one of the 4 cache ways ) 的第2个cache line中。假使所有的cache way的第二个cache line都被使用,则必须换出某一个。

因此如果多个数据地址的cache line相同,即使cache中还有很大的空间,还是竞争激烈。
总结:
(1)多路cache(组相连cache),路间可选,路内固定
(2)对于M路N行Cache,当cache line索引为I(0<=I<N)的地址数超过M时,必然发生冲突,小于M时必然没有冲突
(3)Cache大小一定时,路数越多,发生冲突的概率越小,但电路也越复杂
为了避免Cache替换,不同的数据结构的地址对应的cache line索引最好不要相同,否则冲突的概率增大。
【more】

而使用slab的数据结构都是分配和释放频繁的小的数据结构,而且数目很多,比如dentry,如果没有color,他们在内存中相对于页的偏移量很可能相同,则其cache line索引也相同,对于x86这种2way 的cache结构,即使cache size很大,也一样使用率低下。color则将不同slab中的同样的数据结构的地址进行一个偏移,因此这些数据结构的cache line索引就错开了。从而能更好的利用cache 

相关文章

Cacheline技术浅析

缓存着色技术(Cache Coloring)相关推荐

  1. DotNET企业架构应用实践-系统架构与性能-缓存技术与ORM中的缓存查询技术

    系列回顾 在前面的文章DotNET企业架构应用实践-系统架构与性能-理论依据及相关做法一文中我介绍了系统性能优化的理论做了一个概括的介绍,也简单的介绍了性能优化的过程及相关的技术关注点或者说是做法. ...

  2. 读取文件慢_页面缓存(Page Cache)-内存和文件之间的那点事儿(下)

    原文:https://manybutfinite.com/post/page-cache-the-affair-between-memory-and-files/ 翻译:RobotCode俱乐部 现在 ...

  3. zt:缓存一致性(Cache Coherency)入门 cach coherency

    http://www.infoq.com/cn/articles/cache-coherency-primer http://www.cnblogs.com/xybaby/p/6641928.html ...

  4. 【ELT.ZIP】OpenHarmony啃论文俱乐部——点燃主缓存压缩技术火花

    本文出自ELT.ZIP团队,ELT<=>Elite(精英),.ZIP为压缩格式,ELT.ZIP即压缩精英. 成员: 上海工程技术大学大二在校生 合肥师范学院大二在校生 清华大学大二在校生 ...

  5. 缓存着色 Page color测试

    根据 7个示例科普CPU CACHE 测试缓存着色 E3 1230v2, L2缓存:4* 256KB 8way (1MB) cacheline 64B,页大小64KB,1页含有1024cachelin ...

  6. disk cache(磁盘缓存) 和 memory cache(内存缓存)的区别

    disk cache(磁盘缓存) 和 memory cache(内存缓存)的区别 同: 都属于强缓存,现在浏览器缓存存储图像和网页等(主要在磁盘上),而你的操作系统缓存文件可能大部分在内存缓存中. 使 ...

  7. 缓存模式(Cache Aside、Read Through、Write Through、Write Behind)

    概览 缓存是一个有着更快的查询速度的存储技术,这里的更快是指比起从初始的数据源查询(比如数据库,以下都称作数据库)而言.我们经常会把频繁请求的或是耗时计算的数据缓存起来,在程序收到请求这些数据的时候可 ...

  8. PHP内容缓存输出 PEAR cache

    PHP内容缓存输出 PEAR cache 作者:未知 PEAR cache 安装 /usr/ports/sysutils/pear-Cache make install clean ◆ 内容缓存输出 ...

  9. Oracle结果集缓存(Result Cache)--服务器、客户端、函数缓存

    Oracle结果集缓存(Result Cache)--服务器.客户端.函数缓存 在11g中,Oracle提供了结果集缓存特性.该缓存是在共享内存中存储全部的结果集,如果一个查询SQL被执行,且它对应的 ...

  10. 玩转Spring Cache --- 整合进程缓存之王Caffeine Cache和Ehcache3.x【享学Spring】

    每篇一句 人到中年就是一部西游记:悟空的压力,八戒的身材,沙僧的发型,唐僧的唠叨 前言 前面文章大篇幅详细讲解了Spring Cache缓存抽象.三大缓存注解的工作原理等等.若是细心的小伙伴会发现:讲 ...

最新文章

  1. mac 远程桌面提示: 证书或相关链无效
  2. opengl加载显示3D模型DXF类型文件
  3. 登录drupal管理员_天气公司依靠Drupal来管理内容
  4. 关于MyEclips新导入项目报错问题,解决方法!(基础)
  5. 华为荣耀盒子显示服务器忙,华为荣耀盒子m321连接后死机了怎么办?教你三大解决方法...
  6. 中国省份数据字典表---自用
  7. 海洋迅雷VIP帐号获取器
  8. vue移动端app项目
  9. 数据科学、机器学习和数据挖掘的差异
  10. 体育计算机培训心得,体育培训心得体会(精选4篇)
  11. MFI认证——苹果MFI账号解读
  12. zotero与Obsidian联动笔记(二):zotero拖拽highlights的格式修改
  13. Scala基本语法-面向对象
  14. 概念:蓝筹主板创业板新三板科创板
  15. vue2中的watch监听
  16. 领英封号怎么办,如何避免封号?
  17. 管理的角度分析:团队建设、团队管理、团队文化、沟通与辅导、招聘与解雇等
  18. 吴恩达深度学习课后编程题讲解(python)
  19. 手把手教linux设备驱动,手把手教你写Linux设备驱动---定时器(一)(基于友善之臂4412开发板)...
  20. 超级计算机模拟生命起源,科学家研究发现,地球生命起源与远古碰撞有关,这是怎么回事?...

热门文章

  1. 2008服务器系统c盘清理,WindowsServer2008清理C盘空间
  2. BZOJ4198: [Noi2015]荷马史诗(哈夫曼树)
  3. 笔记本计算机无法上无线网络,笔记本电脑无线网络连接不上的原因和解决办法...
  4. 6 RFID的ISOIEC标准
  5. 真正的英雄(罗纳德·里根在“挑战者号”航天飞机失事后的演讲词)
  6. python期权定价公式_期权及 Black-Scholes模型的python实现
  7. OpenCV入门(八)——形态学技术
  8. 如何在Excel里输入能打钩的选择框?
  9. 电感耦合等离子体发射光谱法测定水样中的金属含量
  10. 机器学习基本概念-有监督学习和无监督学习