ARM架构-Cache的底层原理

在主存与处理器之间加入一个小容量的存储器保存 CPU 最近一段时间内的历史访问数据,将在 CPU 发起访问的时候优先提供数据快速访问,这个介于 CPU 与主存储器之间的小容量高速存储空间我们称之为 Cache,即高速缓存。Cache 作为处理器与主存之间的数据交换中心,其对所保存程序数据的分配调度策略的好坏对于整个系统性能的提升至关重要。

Cache的哈佛结构设计:

嵌入式ARM内核一般采用的都是哈佛结构,哈佛结构中Cache设计采用了指令 Cache(简称 I-Cache)和数据Cache(简称 D-Cache)分开的方式,也就是说运行的时候程序Code存储在flash中,数据Data存储在RAM中,也就是说CPU从flash中取Code指令,之后在到RAM中取数据。

        

  • I-Cache中存储有CPU需要的指令,在CPU的取指阶段,通过程序计数器PC提供给I-Cache的地址,CPU可以获取需要的指令。
  • D-Cache则是作为一个数据的存储,并提供对于Load/Store指令所要操作地址的数据,它地址则来自于ALU运算的结果。
  • I-Cache和CPU的接口以及I-Cache和L2 Cache的接口都是单向的。D-Cache和CPU的接口以及D-Cache和L2 Cache的接口是双向的。这样处理的原因在于I-Cache存储的是指令,不需要更改所存储的数据的值。而D-Cache 中存储的是数据,其值会根据指令操作的不同而改变。比如:在运行 Store 指令的时候会对 D-Cache 中相应地址进行写入数据的操作。

Cache的读过程:

若 CPU 发出读请求,并且 Cache 中相应数据存在,就可以从 Cache 中读出,这称为命中(hit),否则称为缺失(miss)。

当 Cache 发生缺失时,系统将把包括相应数据的一块从下一级存储器读入 Cache 中。

若此时 Cache 已满,则需要决定将 Cache 中某块移出去,判定哪块移出需要判断规则,称为替换算法。

Cache的写过程:

CPU 发出写请求,若只把数据写入Cache(而没有改变主存RAM中的内容),在这种情况下,高速缓存和主存称为不一致。

保持Cache和RAM一致的最简单的方法就是不仅把数据写入Cache,也把它写入RAM,这种写的方法称为写通法。尽管这种设计方案处理写操作十分简单,但它不能提供很好的性能。写通法每次写操作都要把数据写入主存, 这些写操作需要花费很长的时间(一般至少 100 个处理器周期), 这很大大降低了处理器的速度。

写通法的另一个变种就是写回法,是指处理器在执行写操作时,被写的数据只写入 Cache,不写入主存,仅当需要替换时,才把已经修改的 Cache 块写入主存RAM。这种方法的 Cache 中每一块都包括了一个脏(Dirty)位,以标志数据被处理器修改过。写通法是指处理器执行写操作时,必须把数据同时写入 Cache 和主存。这样 Cache 中就不需要 Dirty 位,替换时也不需要写回到主存,新调入的块直接可进行替换。

I-Cache读指令流程:

  • Cortex-M7(单核)

  • Cortex-A7(单核含MMU)

D-Cache读写指令流程:

  • D-cache 的读操作流程

  • D-cache 写操作流程

参考:

【Cache篇】Cache的映射方式_cache采用什么映射-CSDN博客

【Cache篇】Cache策略_cache probe-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/485726.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flutter:商品多规格内容总结,响应式数据,高亮切换显示。

如图所示: 代码为练习时写的项目,写的一般,功能实现了,等以后再来优化。 自己模拟的数据结构 var data {id:1,name:精品小米等多种五谷杂粮精品小等多种五谷杂粮,logo:https://cdn.uviewui.com/uview/swiper/1.jpg,price:100.5…

团队管理中如何做好目标管理

团队管理中的目标管理是确保团队高效运行的核心要素之一。 在目标管理中,清晰的目标设定、合理的资源分配、实时的跟踪与反馈机制是成功的关键。首先,设定SMART目标(具体、可衡量、可达成、相关性强、时间限定)能够有效聚焦团队的…

Unity在运行状态下,当物体Mesh网格发生变化时,如何让MeshCollider碰撞体也随之实时同步变化?

旧版源代码地址:https://download.csdn.net/download/qq_41603955/90087225?spm1001.2014.3001.5501 旧版效果展示: 新版加上MeshCollider后的效果: 注意:在Unity中,当你动态地更改物体的Mesh时,通常期望…

Blender导入下载好的fbx模型像的骨骼像针戳/像刺猬

为什么我下载下来的骨骼模型和我自己绑定的模型骨骼朝向完全不一样 左边是下载的模型 右边是我自己绑定的模型 左边的模型刚刚感觉都是像针一样往外戳的,像刺猬一样那种。 解决方法勾选自动骨骼坐标系

基于Springboot+Vue的在线答题闯关系统

基于SpringbootVue的在线答题闯关系统 前言:随着在线教育的快速发展,传统的教育模式逐渐向互联网教育模式转型。在线答题系统作为其中的一个重要组成部分,能够帮助用户通过互动式的学习方式提升知识掌握度。本文基于Spring Boot和Vue.js框架&…

矿区新发现,改造明星profinet转profibus协议网关也有未来

profinet转profibusDP协议网关,在矿区的一些老设备上,改造升级一定会遇到profibus无法通讯的情况,选择一个协议模块网关是性价比的首选,下面介绍一下协议网关的一些指标 PROFINET 在 PROFIBUS 一侧为 PROFIBUS DP 从站&#xff0…

高效查找秘密武器一:位图

有这样的一个问题: 给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数 中。 那么我们一般会想到这样做的 1.遍历,时间复杂度O(n) 2.排序(N*logN)&#xff0c…

《单片机原理及接口技术》(C51编程)(第三版)------张毅刚主编

1.整体框架:1-22题(17-20为编程题分别源自数中的P98,P162,P177页) 2.简答题部分: 3.计算题 4.程序题/编程题

Vision Transformer (ViT) 基本原理

Vision Transformer (ViT) 基本原理 flyfish Vision Transformer (ViT) 是一种基于 Transformer 架构的计算机视觉模型 一、ViT 的基本原理 ViT 的核心思想是将一张图像视为一组序列,将其嵌入到 Transformer 的输入中,通过自注意力机制捕获全局上下文…

工业异常检测-CVPR2024-新的3D异常数据合成办法和自监督网络IMRNet

论文:https://arxiv.org/pdf/2311.14897v3.pdf 项目:https://github.com/chopper-233/anomaly-shapenet 这篇论文主要关注的是3D异常检测和定位,这是一个在工业质量检查中至关重要的任务。作者们提出了一种新的方法来合成3D异常数据&#x…

三款电容麦的对比

纸面参数 第一款麦克风 灵敏度: -36 dB 2 dB(0 dB1V/Pa at 1 kHz) 灵敏度较低,需要更高的增益来拾取同样的音量。频率响应: 40 Hz - 18 kHz 响应范围较窄,尤其在高频区域。等效噪音级: ≤18 dB(A计权) 噪…

easyexcel 导出日期格式化

1.旧版本 在新的版本中formate已经被打上废弃标记。那么不推荐使用这种方式。 2.推荐方式 推荐使用另外一种方式【 Converter 】代码如下,例如需要格式化到毫秒【yyyy-MM-dd HH:mm:ss SSS】级别 创建一个公共Converter import com.alibaba.excel.converters.Conv…

PPT怎样做的更加精美

目录 PPT怎样做的更加精美 3D的GIF图片 3维空间图​编辑 结果有明显的对比 阅读高质量文献,采用他们的图 PPT怎样做的更加精美 3D的GIF图片 3维空间图 结果有明显的对比

插入排序⁻⁻⁻⁻直接插入排序希尔排序

引言 所谓的排序,就是使一串记录按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 常见的排序算法有: 今天我们主要学习插入排序的直接插入排序和希尔排序。 直接插入排序 什么是直接插入排序? 直接插入排序其…

鸿蒙UI开发——亮/暗色模式适配

1、概 述 系统存在深浅色两种显示模式,为了给用户更好的使用体验,应用最好适配暗色和亮色两种模式。从应用与系统配置关联的角度来看,适配暗色和亮色模式可以分为下面两种情况: 应用跟随系统的深浅色模式; 应用主动设…

推荐在线Sql运行

SQL Fiddle 1、网址:SQL Fiddle - Online SQL Compiler for learning & practiceDiscover our free online SQL editor enhanced with AI to chat, explain, and generate code. Support SQL Server, MySQL, MariaDB, PostgreSQL, and SQLite.http://www.sqlfi…

在Ubuntu-22.04 [WSL2]中配置Docker

文章目录 0. 进入Ubuntu-22.041. 更新系统软件包2. 安装Docker相关依赖包3. 添加Docker官方GPG密钥4. 添加Docker软件源5. 安装Docker Engine5.1 更新软件包列表5.2 安装Docker相关软件包 6. 验证Docker安装是否成功6.1 查看Docker版本信息6.2 启动Docker6.3 配置镜像加速器6.4…

AI大模型ollama结合Open-webui

AI大模型Ollama结合Open-webui 作者:行癫(盗版必究) 一:认识 Ollama 1.什么是Ollama ​ Ollama是一个开源的 LLM(大型语言模型)服务工具,用于简化在本地运行大语言模型,降低使用大语言模型的门槛,使得大模型的开发者、研究人员和爱好者能够在本地环境快速实验、管理和…

使用ensp搭建内外互通,使用路由跨不同vlan通信。

1.网络拓扑图 2.规则 (1)允许 (自己)ping通内外网,内外网随便一个pc就可以. (2) 允许(电信)ping通内外网,内外网随便一个pc就可以 (时间问题不做…

gRPC 快速入门 — SpringBoot 实现(1)

目录 一、什么是 RPC 框架 ? 二、什么是 gRPC 框架 ? 三、传统 RPC 与 gRPC 对比 四、gRPC 的优势和适用场景 五、gRPC 在分布式系统中应用场景 六、什么是 Protocol Buffers(ProtoBuf)? 特点 使用场景 简单的…