【ARM Cache 系列文章 2 -- Cache Coherence及内存顺序模学习】

文章目录

    • Cache Coherence 背景
    • 1.1 内存顺序模型简介(Memory Model)
      • 1.1.1 Normal Memory
      • 1.1.2 Device Memory
    • 1.2 Cache 一致性问题解决方案
      • 1.2.1 Shareability 属性
      • 1.2.2 Non-Shareable 属性
      • 1.2.3 Inner-Shareable 属性
      • 1.2.4 Out-Shareable 属性
    • 1.3 Shareability 和 PoC/PoU 关系
      • 1.3.1 PoU(处理器缓存一致性角度度)
      • 1.3.2 PoC(全局缓存一致性角)

上篇文章:ARM Cache 系列文章 1 – Cache基础概念学习
下篇文章:ARM Cache 系列文章 3 – Cache 与 MPU关系学习

Cache Coherence 背景

所谓的 Cache 一致性问题, 主要指的是由于 Cache 存在时,当在有多个 Master(典型的如 MCU 的 Core, DMA 、PCIE、I2C2APB 等)访问同一块内存时, 由于数据会缓存在 Cache 中而没有更新实际的物理内存,导致的问题。在了解缓存一致性前需要先了解内存顺序模型。

1.1 内存顺序模型简介(Memory Model)

arm memory 类型分为 normal memory 和 device memory。
内存顺序模型更详细内容

1.1.1 Normal Memory

Normal memory就是我们平常所说的内存,对该种memory访问时无副作用(side effect),即第n次访问与第n+1次访问没有任何差别。

1.1.2 Device Memory

device memory 是外设对应的物理地址空间,对该部分memory访问时,可能存在副作用(side effect),比如:

  • 某些状态寄存器可能 read clear;
  • 某些寄存器有写入顺序(否则写入不成功);
  • 设备fifo地址固定不变,但是每次访问,内部的移位寄存器就会将下一个数据移出来[1],因此访问同一地址第n次访问与第n+1 次访问结果是不同的。

1.2 Cache 一致性问题解决方案

一.所有的共享存储器都定义为共享属性(Shareability),共享意味着需要硬件保证一个内存位置中的内容对一定范围内可访问该位置的多个处理器是一致。
二.通过软件进行cache的维护, 如使用 cache invalidate 和 cache clean进行维护。

1.2.1 Shareability 属性

Shareability 的由来为了支持数据一致性协议,需要增加硬件很多开销,会降低系统的性能,同时也会增加系统的功耗。但是,很多时候并不需要系统中的所有模块之间都保持数据一致性,而只需要在系统中的某些模块之间保证数据一致性就行了。因此,需要对系统中的所有模块,根据数据一致性的要求,做出更细粒度的划分。

1.2.2 Non-Shareable 属性

配置为 non-shareable 属性的内存位置一般只能被唯一处理器访问, 如果还有其他处理器能访问该位置,需要软件用缓存一致性指令来保证缓存一致性。

比如:在单核的场景下,cpu 往某一块配置为non-shareable (同时配置了cacheable)属性的内存写一段数据,由于这段内存只对cpu可见,所以如果当使用DMA来搬运这块内存中的数据时,需要先进行 cache clean 将缓存中的数据刷入memory中,否者dma搬运的数据可能会有一些stale data。

1.2.3 Inner-Shareable 属性

该内存位置可以被 Inner Shareability domain 中的所有处理器访问,并且硬件保证该位置在这些处理器间的数据一致性,Inner Shareability domain中的处理器一般被同一个虚拟机监视器或操作系统控制,如下图中的两个 cluseter 都在 inner shareability domain中。一般不同的cluseter会共享L2 cache。
在这里插入图片描述

1.2.4 Out-Shareable 属性

能被外部共享的观察者(cpu, gpu, dma) 观察到,它适用于内部可共享和外部可共享域。一个outer shareable domain 可以由一个或多个 inner shareable domain组成,并且当一个操作影响到outer shareable domain时,也会影响到其下所有的 inner shareable domain。

note: 只有配置为 Normal Memory 内存属性的内存才能设置 inner 和 outer shareability,device memory 是不能设置 Shareability。

1.3 Shareability 和 PoC/PoU 关系

1.3.1 PoU(处理器缓存一致性角度度)

是指对于某一个核Master,附属于它的指令,数据缓存和 TLB,如果在某一点上,它们能看到一致的内容,那么这个点就是PoU。如下图右侧,MasterB包含了指令,数据缓存和TLB,还有二级缓存。指令,数据缓存和TLB的数据交换都建立在二级缓存,此时二级缓存就成了PoU。

而对于下图左侧的MasterA,由于没有二级缓存,指令,数据缓存和TLB的数据交换都建立在内存上,所以内存成了PoU。

还有一种情况,就是指令缓存可以去监听数据缓存,此时,不需要二级缓存也能保持数据一致,那一级数据缓存就变成了PoU。

1.3.2 PoC(全局缓存一致性角)

是指 对于系统中所有Master(注意是所有的,而不是某个核),如果存在某个点,它们的指令,数据缓存和TLB能看到同一个源,那么这个点就是PoC。如下图右侧,二级缓存此时不能作为PoC,因为MasterB在它的范围之外,直接访问内存。所以此时内存是PoC。在左图,由于只有一个Master,所以内存是PoC。
在这里插入图片描述

简而言之,PoU/PoC定义了指令和命令的所能抵达的缓存或内存,在到达了指定地点后,Inner/Outer Shareable定义了它们被广播的范围。

上篇文章:ARM Cache 系列文章 1 – Cache基础概念学习
下篇文章:ARM Cache 系列文章 3 – Cache 与 MPU 关系学习

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python Flask构建微信小程序订餐系统 (十一)

🔥 已经删除的会员不允许进行编辑昵称 🔥 🔥 已经删除的会员要隐藏掉会员信息的编辑按钮 🔥 🔥 创建商品表 food 🔥 CREATE TABLE `food` (`id` int(11) unsigned NOT NULL AUTO_INCREMENT,`cat_id` int(11) NOT NULL DEFAULT 0 COMMENT 分类id,`name` varchar…

# **基于TiDB Binlog架构的主备集群切换操作手册**

作者: Liuhaoao 原文来源: https://tidb.net/blog/dc65ef62 操作背景:最近手头有个系统,刚做完灾备建设及数据同步( 文章链接在这 ),需要进行灾备切换演练,验证灾备库建设是否…

【IDEA】IDEA 中点击Download Source(下载源码)后,下载的源码存储到哪了?

【问】如上图,IDEA 中点击 Download Source(下载源码)后,下载的源码存储到哪了? 【答】 先找到此源码所属 Jar 包在哪;点击 Download Source(下载源码)后,会发现存储 J…

Android Studio Flutter 开发配置

近来比较闲,就研究下Flutter 开发,在此记录下studio 配置过程,时间是2023.7.19 在 Windows 操作系统上安装和配置 Flutter 开发环境 1.首先下载 Flutter SDKhttps://storage.flutter-io.cn/flutter_infra_release/releases/stable/windows/…

静态html引入ucharts并直接使用组件标签

由于官方不能直接使用qiun-vue-ucharts在静态html页面使用。 DIY可视化对此类库进行了改进,把它的包独立打包成一个可以依赖的JS。 首先定义一个核心JS,用于打包生成uchart import qiunVueUcharts from qiun/vue-ucharts;const install (app) > {…

【学习笔记】Unity基础(十)【Unity界面之Scene窗口工具栏】

目录 一 总览二 Scene 视图导航2.1 Orientation 场景视角2.2 场景视角的移动、旋转和缩放2.3 场景对象聚焦 三 对象可见性与场景可见性3.1 对象可见性控件3.2 场景可见性控件3.3 Isolate selected GameObjects 四 Overlays五 Position GameObjects5.1 Transform Tools5.2 Tool …

设计模式与技术场景面试题详解

工厂方法模式 简单工厂模式 工厂方法模式 抽象工厂模式 策略模式 工厂模式策略模式(登录案例) 责任链模式 技术场景 单点登录怎么实现 权限认证是如何实现的 上传数据的安全性你们怎么控制 你负责的项目遇到了哪些棘手的问题?怎么解决的 你们…

部署ELK+Kafka+Filebeat日志收集分析系统

部署ELKKafkaFilebeat日志收集分析系统 文章目录 部署ELKKafkaFilebeat日志收集分析系统一、ELK 简介1、ELK日志分析系统组成2、Elasticsearch(es)3、Logstash4、Kibana5、日志处理步骤 二、Elasticsearch介绍1、Elasticsearch核心概念2、开启分片副本的…

用户管理功能

后端 # 获取用户列表 bp.get("/user/list") def user_list():users UserModel.query.order_by(UserModel.join_time.desc()).all()user_list [user.to_dict() for user in users]return restful.ok(datauser_list)# 用户是否可用 bp.post("/user/active"…

kettle开发-Day40-AI分流之case/switch

前言: 前面我们讲到了很多关于数据流的AI方面的介绍,包括自定义组件和算力提升这块的,今天我们来学习一个关于kettle数据分流处理非常重要的组件Switch / Case 。当我们的数据来源于类似日志、csv文件等半结构化数据时,我们需要在…

Java多线程基础复习

文章目录 多线程1.进程进程属性并发和并行虚拟地址空间 2.线程概念线程的创建方式 3.Thread类常见构造方法和属性线程的状态优先级后台线程线程是否存活start和run 4. 线程的一些基本操作线程中断(interrupted)线程等待joincurrentThread(获取当前线程引用&#xff…

pytest常用执行参数详解

1. 查看pytest所有可用参数 我们可以通过pytest -h来查看所有可用参数。 从图中可以看出,pytest的参数有很多,下面是归纳一些常用的参数: -s:输出调试信息,包括print打印的信息。-v:显示更详细的信息。…

hdu7298 Coin(网络流+按时间拆点)

题目 t(t<10)组样例&#xff0c;每次给n(n<3e3)个人&#xff0c; 第i个人&#xff0c;在任意时刻&#xff0c;都最多只能有ai(1<ai<3e3)个硬币 其中k(k<n)个是小F的朋友&#xff0c;依次用点号的形式给出 初始时&#xff0c;每个人都有一个硬币&#xff0c;…

opencv 图像腐蚀膨胀 erode dilate

#include "iostream" #include "opencv2/opencv.hpp" using namespace std; using namespace cv;int main() {Mat img, dst, dstbin, distancetransform,rel, rel2;img imread("m3.jpg");//转为灰度图cvtColor(img, dst, COLOR_BGR2GRAY);//二…

(css)自定义登录弹窗页面

(css)自定义登录弹窗页面 效果&#xff1a; 代码&#xff1a; <!-- 登录弹窗 --> <el-dialog:visible.sync"dialogVisible"title"用户登录"width"25%"centerclass"custom-dialog":show-close"false":close-on-cli…

动态规划入门第2课,经典DP问题1 --- 线性

动态规划要点 阶段的2个方向&#xff1a;从上到下&#xff1b;从下到上。 动态规划要点 从递归到DP 动态规划要点 两个2个方向 优化的可能性 第1题 合唱队形 N位同学站成一排&#xff0c;音乐老师要请其中的(N-K)位同学出列&#xff0c;使得剩下的K位同学排成合唱队形…

macOS coreAudio 之 AudioQueue 播放本地音频文件

macOS的音频模块使用还是和 iOS有细微差别的。 今天记录是的是 使用 AudioQueue 配合 AudioFile 进行播放macOS 本地音频文件 本文打仓库代码为&#xff1a; JBPlayLocalMusicFile.m CoreAudio 作为Apple音频系统中音频库的集合&#xff0c;今天需要使用到的库为&#xff1a…

Spring Cloud Gateway - 新一代微服务API网关

Spring Cloud Gateway - 新一代微服务API网关 文章目录 Spring Cloud Gateway - 新一代微服务API网关1.网关介绍2.Spring Cloud Gateway介绍3.Spring Cloud Gateway的特性4.Spring Cloud Gateway的三大核心概念5.Gateway工作流程6.Gateway核心配置7.动态路由8.Predicate自定义P…

【腾讯云 Cloud Studio 实战训练营】使用Cloud Studio制作蛋仔派对兑换码工具

目录 &#x1f373;前言&#x1f373;实验介绍&#x1f373;产品介绍&#x1f373;抓包分析&#x1f603;登录分析&#x1f603;&#x1f603;第一步&#xff0c;获取验证码&#x1f603;&#x1f603;第二步&#xff0c;保存验证码&#x1f603;&#x1f603;第三步&#xff0…

山西电力市场日前价格预测【2023-07-24】

日前价格预测 预测明日&#xff08;2023-07-24&#xff09;山西电力市场全天平均日前电价为338.25元/MWh。其中&#xff0c;最高日前电价为377.59元/MWh&#xff0c;预计出现在20: 30。最低日前电价为283.56元/MWh&#xff0c;预计出现在13: 30。 价差方向预测 1&#xff1a;实…