序言

带着问题去学习,关于cache的一些思考:
1、L1/L2/L3 cache到底在哪里?L1/L2/L3 cache分别都是多大?
2、L1/L2/L3 cache的组织形式都是怎样的?n路组相连?
3、你见过VIVT的cache吗?你为什么要学习VIVT的cache? 非常干扰你对cache的理解,还不如不学呢.
4、那么cache是VIPT还是PIPT? 还是在一个core中既有VIPT,也有PIPT?
5、你要学习MESI的原理吗?你能记得住吗?你是不懂MESI,还是不懂cache架构?
6、MOESI又是啥玩意?现在主流的core是MESI,还是MOESI?
7、MESI仅仅是一个协议,总得有硬件来执行这个协议,硬件是谁?
8、MESI这个协议有4个状态,这4个状态记录在哪里?
9、L1/L2/L3 cache中,或者说core cache/cluster cache中,哪些cache的维护遵守了MESI协议,哪些没有遵守?为什么这样设计?
10、cache line中的data是多少个字节? 在分析问题时,你为什么总是按照条件分析,16bytes的cache line是怎样的,64bytes的cacheline是怎样的?难道你不知道,现在主流的arm core的cache line全部都是64bytes?
11、cache的TAG是什么玩意,里面都有什么?别说cache TAG是物理地址?
12、cache line中又都有什么? 为什么没有index?
13、L2 cache到底是在core中,还是在cluster中?
14、假设一块内存配置成了non-cacheable,为什么就不缓存到cache了?
15、页表entry的属性中定义了cache的缓存策略,那如果disable mmu后,那么cpu读写内存时候的缓存策略是什么?
16、做为一名软件工程师,对于L1/L2/L3 cache的缓存策略,哪些可以修改?哪些是硬件定死的不可以修改?
而这些的替换策略又都是怎样的?
17、什么是inclusive cache? 什么是exclusive cache? Strictly和Weakly呢?
18、一些概念的理解,如CCI、SCU、DSU、ACE、CHI ?
19、如何配置一个页面的cacheable属性? 如何配置页表的cacheable属性?

前言

做为一名底层安全工程师、一名一线支持客户的FAE,工作的内容涉及到TF-A、TEE、TA、Linux Kernel、Linux native程序等众多模块,也会涉及到一些硬件模块driver。在这些不同的硬件或系统软件之中,有着不同的memory属性的配置,不同的缓存策略,那么我们在这多硬件多软件通过share memory通信时,就会遇到各种各样的问题,其实很多时候,也都是客户的灵魂一问,为了给客户一个专业的感觉,身为FAE也不得不去弄懂底层深层次的原理…

本人不是什么专家,更不是什么的大佬,也就是看了一些arm文档,加上自己的理解,然后总结出如下文章,当然我在总结的时候,一切都以官方资料为准,尽量不瞎说不乱说,有些查不到的资料我求证了一些ASIC专家。其实cache同其它模块(如MMU、异常、gic…)相比,cache应该算上最难的,不过好在它的大多数行为都是硬件帮我们做好了,所以我们软件就简单了,但是越是硬件自动的行为,对于我们软件工程师理解起来就会吃力,因为看不到资料看不到设计,很多都得靠猜。

最后,希望这系列文章,能够对大家有所帮助。好好学习、天天向上,卷起来同志们。

说明:

  • 本系列所讲述的,都是以armv8/armv9架构位基准,如有涉及执行状态,则是aarch64. 如有涉及具体core,则是A710和A53
  • 大多数内容来自arm官方文档、少部分咨询了ASIC同事,再加上部分自己的理解…

00-深入学习cache相关推荐

  1. 草稿--深度学习cache系列

    目录 <深度学习cache系列> - 2022 00-cache思考篇 01-简述cache的基本概念和使用场景 02-cache的基本概念原理扫盲 03-cache的查询原理 04-多核 ...

  2. 00后学习创作娱乐生活宅家必备:钉钉、书旗小说、橙瓜码字

    现在的年轻人都在家做什么? 随着移动互联网的蓬勃发展,网上的娱乐生活愈发精彩丰富,年轻人相较于以前更喜欢宅在家里,尤其是00后,在他们当中,早已经形成了一种宅家文化. 那么,有人肯定会好奇,00后宅家 ...

  3. 00后学习微积分,推荐访问袁萌专栏

    事实表明,自2012年11月起,袁萌连续发表微积分科普文章达2000余篇,是国内微积分科普第一人. 微积分有两种,一是菲氏极限论微积分,二是现代模型论微积分,两者是不同时代的数学理论. 考虑到,00后 ...

  4. Asp.Net学习-Cache高速缓存

    Cache就是高速缓存,能够提高系统的性能和运行速度. Cache是分配在服务器上的一个公共的内存片.Cache只要一创建是任何一个浏览器都可以通过后台代码访问到的.它是面向的是所有用户.每个Cach ...

  5. 00.机器视觉学习的必要了解

    快速浏览目录 序言 一.主流视觉软件介绍 1.HALCON 2.OPENCV 3.Visionpro 4.MIL 二.机器视觉软件开发前景 三.机器视觉能够做什么? 四.机器视觉学习自身定位 4.1 ...

  6. 学习Guava Cache知识汇总

    (一)MapMaker 在软件开发中,Cache缓存技术一直是非常重要的主题,不管我们正在进行任何简单的编程工作,我们总能在编程过程中找到一些缓存机制,即使是你使用一个 Map获取静态的值,它也是缓存 ...

  7. 《浅谈Cache Memory》 学习-第四章

    Cache的层次结构 我第一次接触存储器瓶颈这个话题是在上世纪九十年代,距今已接近二十年.至今这个问题非但没有缓和的趋势,却愈演愈烈,进一步发展为Memory Wall.在这些问题没有得到解决之前,片 ...

  8. ElasticSearch的学习笔记并整合SpringBoot做测试

    ElasticSearch的学习 简介 ElasticSearch是一个分布式的开源搜索和分析引擎,MySQL专攻于数据的持久化存储与管理(即CRUD),在真正要处理海量数据的检索与分析时,Elast ...

  9. 【等待事件】序列等待事件总结(enq: SQ - contention、row cache lock、DFS lock handle和enq: SV - contention)...

    [等待事件]序列等待事件总结(enq: SQ - contention.row cache lock.DFS lock handle和enq: SV - contention) [等待事件]序列等待事 ...

最新文章

  1. LeetCode 406. 根据身高重建队列
  2. 创智播客微服务_【传智播客】JavaEE在职加薪课
  3. uml 时序图_UML各种图总结:
  4. Focal Loss 的Pytorch 实现以及实验
  5. android 使用shell模拟触屏_Appium常用操作之「微信滑屏、触屏操作」
  6. 注册(二)之增加绑定
  7. 代码吃鸡:Python-Robocode
  8. jquery ajax加载页面进度条,jquery网页加载进度条的实现
  9. 如何面试软件工程师 看这篇就够了
  10. ISIS路由过载概述
  11. Windows安装Android软件,win7系统安装安卓软件WindowsAndroid的方法
  12. 数据库是根和数据仓库是魂
  13. 美团网站底部超链接部分设计实现
  14. Axure中插入Highcharts动态图表
  15. CMake基础教程(18)find_path查找文件路径
  16. 开题报告的国内外研究现状怎么写呢?
  17. Windows怎么让防火墙开放端口
  18. 客快物流大数据项目(八十八):ClickHouse快速入门
  19. Word 中插入的公式显示不全?
  20. php农历代码,PHP阳历转农历实现代码

热门文章

  1. 无限级菜单 mysql设计_无限级菜单简单的设计
  2. python multiprocessing lock_python多进程Lock锁
  3. AI:2020年WAIC世界人工智能大会2020年7月9日9:30-12:00开幕式《李彦宏、Elon Musk、马云等大佬演讲》
  4. CV之MobiLenet:基于openpose利用CMU/MobilenetV2算法实现对多人体姿态(2019湖人勒布朗詹姆斯扣篮)实时估计检测
  5. DL之YoloV3:YoloV3论文《YOLOv3: An Incremental Improvement》的翻译与解读
  6. TF之p2p:基于TF利用p2p模型部分代码实现提高图像的分辨率
  7. 终聚.net平台开发
  8. PKG_CONFIG_PATH 、LD_LIBRARY_PATH、PATH三个的作用
  9. 关于ML.NET v0.7的发布说明
  10. Scanner类的基本总结