综述

现在的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映射方式分类

  1. 全关联

    这个不清楚。

  2. 直接映射

    直接映射就是上面原理介绍的方式,cache是一个单列的cache-line表如下图示意,而因为cache远小于内存所以cache仅能映射部分内存区域所以一个时间段他映射了内存的不同地址空间且是线性的映射,所以有可能发生“颠簸”。原因是假如有cache总共有四条缓存行,而地址0x*08都会映射到同一行,程序刚好要循环访问0x****10800和0x****20800这两个地址则就会出现cache被循环的换入换出,这里的08就是cache的index的概念。所以后来优化有了如下的方式来解决这个问题。

  3. 组相连

    直接映射他的缺点就是在有些情况下会导致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 按组织方式分类

  1. VIPT 虚拟索引物理TAG

    使用虚拟地址的一部分作为索引物理地址一部分作为TAG标记;算是VIVT的优化,页表切换了不需要整个cache无效,实现相对PIPT简单。
  2. VIVT 虚拟索引虚拟TAG

    使用虚拟地址的一部分作为索引一部分作为TAG标记;存在物理地址重名,即多个虚拟地址缓存了同一块物理内存,而且在切换页表后需要cache整个无效。
  3. PIPT 物理索引物理TAG

    使用物理地址的一部分作为索引一部分作为TAG标记,芯片设计实现起来复杂。

最早是全部使用虚拟地址作为index和tag的,但是因为存在多个虚拟地址映射到同一个物理地址的情况所以会造成cache的别名(浪费)且在多任务发生任务切换时的清空cache。所以后来优化使用了虚拟地址作为index物理地址作为TAG就能有效解决前面的问题,但是VIPT的还是会有cache别名的问题,所以后来又优化出了PIPT即全部使用物理地址从而彻底避免别名但是这种方式的最大问题就是硬件电路实现复杂。

ARM cache 工作方式的更多相关文章

  1. LVS三种工作方式八种算法

    一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算 ...

  2. LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法)

    一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一 台计算机.集群系统中的单个计 ...

  3. Linux系统的Cache工作原理和管理机制

    Linux系统Cache 管理是 Linux 内核中一个很重要并且较难理解的组成部分.本文详细介绍了 Linux 内核中文件 Cache 管理的各个方面,希望能够帮助到你. 操作系统和文件 Cache ...

  4. LVS原理详解(3种工作方式8种调度算法)--老男孩

    一.LVS原理详解(4种工作方式8种调度算法) 集群简介 集群就是一组独立的计算机,协同工作,对外提供服务.对客户端来说像是一台服务器提供服务. LVS在企业架构中的位置: 以上的架构只是众多企业里面 ...

  5. Arm Cache学习总结

    cache,高速缓存,其原始意义是指访问速度比一般随机存取内存(RAM)快的一种RAM,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术. 1.cache映射方式 cache中 ...

  6. 合理设置apache的连接数及进程工作方式

    网站在线人数增多,访问时很慢.初步认为是服务器资源不足了,但经反复测试,一旦连接上,不断点击同一个页面上不同的链接,都能迅速打开,这种现象就是说明apache最大连接数已经满了,新的访客只能排队等待有 ...

  7. ARM的堆栈方式

    当堆栈指针指向最后压入堆栈的数据时,称为满堆栈(Full Stack): 当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈(Empty Stack): 根据对战的生成方式分为:递增堆栈(Asce ...

  8. 浏览器渲染基本原理(二):JS引擎的工作方式

    JS引擎也可以叫做JS解释器 浏览器的组成 浏览器的核心是两部分:渲染引擎和JavaScript解释器(又称JavaScript引擎). (1)渲染引擎 渲染引擎的主要作用是,将网页从代码“渲染”为用 ...

  9. dicom通讯的工作方式及dicom标准简介

    本文主要讲述dicom标准及dicom通讯的工作方式.dicom全称医学数字图像与通讯 其实嘛就两个方面 那就是“存储”跟“通讯”. 文件数据组织方式  网络数据组织方式.文件数据组织方式就是解析静态 ...

随机推荐

  1. Linux 安装分区设置分区大小

    一.Linux分区挂载点介绍 Linux分区挂载点介绍,推荐容量仅供参考不是绝对,跟各系统用途以及硬盘空间配额等因素实际调整: 分区类型 介绍 备注 /boot 启动分区 一般设置100M-200M, ...

  2. vue+element-ui:table表格中的slot 、formatter属性

    slot 插槽,table中表示该行内容以自定义方式展示 :formatter 方法,用来格式化内容 Function(row, column, cellValue, index) html < ...

  3. Python虚拟环境配置应用

    Python好用,但用好却不易,其中比较头疼的就是包管理和Python不同版本的问题,为了解决这些问题,有不少发行版的Python,比如WinPython.Anaconda等,这些发行版将python ...

  4. 简话http请求

    一.http请求概念: 1.是指从客户端到服务器端的请求消息.包括:消息首行中,对资源的请求方法.资源的标识符及使用的协议. 包括请求(request)和响应(response) 2.过程: 域名解析 ...

  5. maven project builder fails when running on jdk>9

    java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.plexus.archiver.jar.JarArchi ...

  6. spark join 广告用户特征 与广告特征的 join 拿到训练集

    spark join 广告特征做广播

  7. UserControl和CustomControl两者区别

    UserControl 将多个WPF控件(例如:TextBox,TextBlock,Button)进行组合成一个可复用的控件组: 由XAML和Code Behind代码组成: 不支持样式/模板重写: ...

  8. ASP.NET Core 5.0 MVC中的 Razor 页面 介绍

    Razor 是一个用于将基于服务器的代码嵌入到网页中的标记语法. Razor语法由 Razor 标记.c # 和 HTML 组成. 通常包含 Razor 的文件的扩展名 cshtml Razor 语法 ...

  9. bzoj 2038(莫队算法)

    2038: [2009国家集训队]小Z的袜子(hose) 时间限制: 20 Sec  内存限制: 259 MB 题目描述 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来 ...

  10. SSRF漏洞挖掘利用技巧

    参考文章 SSRF漏洞(原理&绕过姿势) SSRF绕过方法总结 SSRF绕过IP限制方法总结 Tag: #SSRF Ref: 概述 总结 利用一个可以发起网络请求的服务当作跳板来攻击内部其他服 ...