ARM cache 工作方式
综述
现在的CPU的速度远远高于现代存储器的速度所以出现了cache。按和CPU距离分为L1级和L2级(SM)等。这里主要记录一下自己对cache的工作方式的学习理解。
cache工作方式
cahe是对内存数据的缓存从而加快CPU对数据的访问,那么前提肯定是之前从内存中读取过数据才会有缓存一说。那么该如何保证下次对同一块内存的访问时可以找到cache中的缓存呢?这就是cache的做工原理核心。先抛开cache的后续优化版本,从最简单的实现方式理解学习。最简单的就是使用 地址信息+data的key-val的方式来进行缓存就能按地址招待数据缓存这就是cache-line。那么这里data数据是多少byte合适呢?这取决于实现以最常见的32byte的大小来理解,在此此种情况下cache-line中的地址信息就不用记录最低的5bit从而简化设计;直接使用地址的低5bit来作为单缓存行行内的字节寻址,这就是cache映射的基本原理。根据这个原理cache的的映射分为如下几种。
cache映射方式分类
全关联
这个不清楚。直接映射
直接映射就是上面原理介绍的方式,cache是一个单列的cache-line表如下图示意,而因为cache远小于内存所以cache仅能映射部分内存区域所以一个时间段他映射了内存的不同地址空间且是线性的映射,所以有可能发生“颠簸”。原因是假如有cache总共有四条缓存行,而地址0x*08都会映射到同一行,程序刚好要循环访问0x****10800和0x****20800这两个地址则就会出现cache被循环的换入换出,这里的08就是cache的index的概念。所以后来优化有了如下的方式来解决这个问题。

组相连
直接映射他的缺点就是在有些情况下会导致cache的“颠簸”。所以后来就想到了让同一个index的缓存行对应到两个缓存行上就形成了cache的组的概念,即index相同的cache称为一个组(set),这样一个index就会对应到组宽度n个cache-line,如果n为2则前面颠簸换出的概念就是原来的1/n即0.5这就是组映射。既然同一个index对应到不止一个cacae-line所以就会加上TAG的概念来区分同一个组的cache-line。组映射这里最后还有一个概念就是way,他就是一个cache所能映射的index区域,即如果index有5bit则一个way就是五个cache-line如下示意图所示的:

这样就是现代cache的缓存映射使用的策略,后续在介绍更加细节的内容。
cache 按组织方式分类
- VIPT 虚拟索引物理TAG
使用虚拟地址的一部分作为索引物理地址一部分作为TAG标记;算是VIVT的优化,页表切换了不需要整个cache无效,实现相对PIPT简单。 - VIVT 虚拟索引虚拟TAG
使用虚拟地址的一部分作为索引一部分作为TAG标记;存在物理地址重名,即多个虚拟地址缓存了同一块物理内存,而且在切换页表后需要cache整个无效。 - PIPT 物理索引物理TAG
使用物理地址的一部分作为索引一部分作为TAG标记,芯片设计实现起来复杂。
最早是全部使用虚拟地址作为index和tag的,但是因为存在多个虚拟地址映射到同一个物理地址的情况所以会造成cache的别名(浪费)且在多任务发生任务切换时的清空cache。所以后来优化使用了虚拟地址作为index物理地址作为TAG就能有效解决前面的问题,但是VIPT的还是会有cache别名的问题,所以后来又优化出了PIPT即全部使用物理地址从而彻底避免别名但是这种方式的最大问题就是硬件电路实现复杂。
ARM cache 工作方式的更多相关文章
- LVS三种工作方式八种算法
一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算 ...
- LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法)
一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一 台计算机.集群系统中的单个计 ...
- Linux系统的Cache工作原理和管理机制
Linux系统Cache 管理是 Linux 内核中一个很重要并且较难理解的组成部分.本文详细介绍了 Linux 内核中文件 Cache 管理的各个方面,希望能够帮助到你. 操作系统和文件 Cache ...
- LVS原理详解(3种工作方式8种调度算法)--老男孩
一.LVS原理详解(4种工作方式8种调度算法) 集群简介 集群就是一组独立的计算机,协同工作,对外提供服务.对客户端来说像是一台服务器提供服务. LVS在企业架构中的位置: 以上的架构只是众多企业里面 ...
- Arm Cache学习总结
cache,高速缓存,其原始意义是指访问速度比一般随机存取内存(RAM)快的一种RAM,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术. 1.cache映射方式 cache中 ...
- 合理设置apache的连接数及进程工作方式
网站在线人数增多,访问时很慢.初步认为是服务器资源不足了,但经反复测试,一旦连接上,不断点击同一个页面上不同的链接,都能迅速打开,这种现象就是说明apache最大连接数已经满了,新的访客只能排队等待有 ...
- ARM的堆栈方式
当堆栈指针指向最后压入堆栈的数据时,称为满堆栈(Full Stack): 当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈(Empty Stack): 根据对战的生成方式分为:递增堆栈(Asce ...
- 浏览器渲染基本原理(二):JS引擎的工作方式
JS引擎也可以叫做JS解释器 浏览器的组成 浏览器的核心是两部分:渲染引擎和JavaScript解释器(又称JavaScript引擎). (1)渲染引擎 渲染引擎的主要作用是,将网页从代码“渲染”为用 ...
- dicom通讯的工作方式及dicom标准简介
本文主要讲述dicom标准及dicom通讯的工作方式.dicom全称医学数字图像与通讯 其实嘛就两个方面 那就是“存储”跟“通讯”. 文件数据组织方式 网络数据组织方式.文件数据组织方式就是解析静态 ...
随机推荐
- HATEOAS的简单认识
HATEOAS: 超媒体作为应用程序状态引擎(HATEOAS)是REST应用程序体系结构的一个组件,它将其与其他网络应用程序体系结构区分开来. 使用HATEOAS,客户端与网络应用程序交互,其应用程序 ...
- 六个你不知道的PR快捷键,拯救你的剪辑效率
5G时代到来,会剪辑视频的人,无论在校园还是未来步入职场都很吃香.对于普通人来说,视频处理也成为了一个通用技能.PR是我们大多数人剪辑中,经常会用到的剪辑工具,之前的文章中已经给大家总结了pr的一些提 ...
- 白日梦的Elasticsearch实战笔记,32个查询案例、15个聚合案例、7个查询优化技巧。
目录 一.导读 三._search api 搜索api 3.1.什么是query string search? 3.2.什么是query dsl? 3.3.干货!32个查询案例! 四.聚合分析 4.1 ...
- [微信小程序]字体文件,字体图标(.ttf,.woff,woff2)等无法显示问题
一. 背景 项目引用了第三方UI框架Vant-weapp,但是前几天Vant的cdn被运营商封禁,导致van-icon无法使用. 有赞官方在Github上给出了在小程序app.wxss上添加以下代码的 ...
- selenium八大元素定位方法
1.ID定位 可以根据元素的id来定位属性,id是当前整个HTML页面中唯一的,所以可以通过id属性来唯一定位一个元素,是首选的元素定位方式.(动态ID不做考虑) # 导入webdriver和By f ...
- gRPC Motivation and Design Principles | gRPC https://grpc.io/blog/principles/
gRPC Motivation and Design Principles | gRPC https://grpc.io/blog/principles/
- cpp异常机制思考
https://www.cnblogs.com/qq329914874/p/6734701.html
- 9.5 自定义包和可见性 go mod
the-way-to-go_ZH_CN/09.5.md at master · Unknwon/the-way-to-go_ZH_CN https://github.com/Unknwon/the-w ...
- Flutter环境搭建遇坑小结(二)
在上一节中,已经对Flutter运行中始终卡在Running Gradle task 'assembleDebug'...,做出了解决方案,继续往下运行,但是新的问题又出现了: Failed to i ...
- 向数据库添加100W 条数据 性能测试
向数据库添加100W 条数据 性能测试 : 参考的相关网站目录: JDBC实现往MySQL插入百万级数据 https://www.cnblogs.com/fnz0/p/5713102.html MyS ...