Cortex-M4 处理器 内存模型

news2024/9/28 13:29:12

内存模型

处理器有一个固定的默认内存映射,提供最多4GB的可寻址内存。
在这里插入图片描述
SRAM和外设的区域包括可选的位带区域。
位带提供了对位数据的原子操作

处理器为核心外设寄存器保留专用外设总线(PPB)地址范围的区域。

内存区域、类型和属性
内存映射和编程可选的MPU将内存映射划分为多个区域。
每个区域都有一个已定义的内存类型,有些区域还有额外的内存属性。
内存类型和属性决定了访问区域的行为。

内存类型有:

  • Normal:处理器可以重新排序事务以提高效率,或者执行推测读取。
  • Device:处理器保持相对于设备或强顺序内存的其它事务的事物顺序。
  • Strongly-ordered:处理器保持相对于所有其它事务的事务顺序。

Device和Strongly-ordered的不同顺序要求意味着内存系统可以缓冲写入Device内存,但不能缓冲写入Strongly-ordered的操作。

额外的内存属性包括:

  • 可共享的:对于已实现的可共享内存区域,内存系统将在具有多个总线主控器的系统中(例如带DMA控制器的处理器)提供总线主控器之间的数据同步。
    Strongly-ordered内存总是可共享的。

如果多个总线主机访问一个不可共享的内存区域,软件必须确保总线主机之间的数据一致性。

只有当设备可能在多个处理器之间共享内存的系统中使用时,此属性才相关。

Execute Never(XN):表示处理器阻止指令访问。只有在执行从XN区域执行的指令时才会产生故障异常。

内存系统对内存访问的排序

对于大多数由显示内存访问指令引起的内存访问,内存系统不保证访问完成的顺序与指令的程序顺序相匹配,只要这个不会影响指令序列的行为。

通常,如果正确的程序执行取决于两个内存访问按程序顺序完成,软件必须在内存访问指令之间插入一个内存屏障指令。

内存系统确实保证了对Device和Strongly-ordered memory的一些访问顺序。
对于两条内存访问指令A1和A2,如果在程序顺序中A1出现在A2之前,则两条指令对内存的访问顺序为:
在这里插入图片描述

  • -:意味着内存系统不能保证访问的顺序。
  • <:意味着按照顺序观察访问,也就是说,A1总是在A2之前被观察到。

内存访问的行为

在这里插入图片描述

  • Code:程序代码的可执行区域,也可以在这里放数据。
  • SRAM:数据的可执行区域。你也可以在这里写代码,该区域包括位带和位带混叠区。
  • Peripheral:该区域包括位带和位带混叠区。
  • External RAM:数据可执行区域。
  • External device:外部设备内存。
  • Private Peripheral Bus:该区域包括NVIC,系统定时器和系统控制块。
  • Device:

Code、SRAM和外部RAM区域可以保存程序代码。然而,ARM建议程序总是使用代码区域。这是因为处理器有独立的总线,使指令获取和数据访问能够同时发生。

内存访问的软件排序

程序流中的指令顺序并不总是保证相应内存事务的顺序。这是因为:

  • 处理器可以对一些内存访问重新排序以提高效率,前提是这不会影响指令序列的行为。
  • 处理器有多个总线接口
  • 内存映射中的内存或设备具有不同的等待状态
  • 一些内存访问是缓冲的或推测的

内存系统保证内存访问顺序的情况。否则,如果内存访问的顺序是关键的,软件必须包含内存屏障指令来强制该顺序。
处理器提供以下内存屏障指令:

  • DMB:Data Memory Barrier(DMB)数据内存屏蔽指令确保未完成的内存事务在后续内存事务之前完成。
  • DSB:数据同步屏障(DSB)指令确保未完成的内存事务在后续指令执行之前完成
  • ISB:指令同步屏障确保所有已完成的内存事务的效果可被后续指令识别。

MPU编程
使用DSB,然后是ISB或异常返回,以确保后续指令使用新的MPU配置。

可选位带

位带区域将位带区域混叠区域中的每个字映射到位带区域中的单个位。
位带区域占用SRAM和外设内存区域的最低1MB。

内存字节序

处理器将内存视为字节的线性集合,这些字节从零开始按升序编号。
例如,字节0-3保存第一个存储的字,字节4-7保存第二个存储的字。

字节不变的大端格式
在字节不变大端格式中,处理器将字的最高有效字节存储在编号最低的字节中,将最低有效字节存储在编号最高的字节中。

在这里插入图片描述
小端格式
在这里插入图片描述
在这里插入图片描述

同步原语

Cortex-M4指令集包括同步原语对。
它们提供了一种非阻塞机制,线程或进程可以使用该机制获得对内存位置的独占访问。
软件可以使用它们来执行有保证的读——修改——写内存更新序列,或者用于信号量机制。

一对同步原语包括:
Load-Exclusive
用于读取内存位置的值,请求对该位置的独占访问。

Store-Exclusive
用于尝试写入相同的内存位置,并向寄存器返回一个状态位。
如果这一点是:

  • 0:它表示线程或进程获得了对内存的独占访问权,并且写操作成功。
  • 1:它表示线程或进程没有获得对内存的独占访问权,也没有执行写操作。

Load-Exclusive和Store-Exclusive指令对是:

  • LDREX STREX
  • LDREXH STREXH
  • LDREXB STREXB

软件必须使用Load-Exclusive指令和相应的Store-Exclusive指令。

  1. 使用Load-Exclusive指令读取位置的值
  2. 根据实际情况修改
  3. 使用Store-Exclusive指令尝试将新值写回内存位置
  4. 测试返回的状态位。如果这一点是:0:read-modify-write操作成功;1:未执行写操作。这表明步骤1返回的值可能已经过期。软件必须重试整个读-修改-写序列。

软件可以使用同步原语实现如下信号量:

  1. 使用Load-Exclusive指令从信号量地址读取,以检查信号量是否空闲。
  2. 如果信号量是空闲的,使用Store-Exclusive将声明值写入信号量地址。
  3. 如果从步骤2返回的状态位表明Store-Exclusive操作成功,则软件已经声明了该信号量。但是,如果Store-Exclusive失败,则可能在软件执行步骤1之后,另一个进程已经声明了信号量。

Cortex-M4包括一个独占访问监视器,它标记处理器已经执行了Load-Exclusive指令。如果处理器是多处理器系统的一部分,系统还全局标记由每个处理器独占访问寻址的内存位置。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3D打印机 拓竹A1 Combo 开箱体验

拓竹&#xff08;Bambu Lab&#xff09;A1 Combo FDM 3D打印机开箱体验。 最近想玩玩3D打印&#xff0c;所以入手了一台拓竹A1 Combo的3D打印机&#xff0c;A1 Combo对比A1多了个AMS lite&#xff0c;支持多色打印&#xff08;4种颜色&#xff09;&#xff0c;京东买的&#x…

Redis——关于它为什么快?使用场景?以及使用方式?为何引入多线程?

目录 1.既然redis那么快&#xff0c;为什么不用它做主数据库&#xff0c;只用它做缓存&#xff1f; 2.Redis 一般在什么场合下使用&#xff1f; 3.redis为什么这么快&#xff1f; 4.Redis为什么要引入了多线程&#xff1f; 1.既然redis那么快&#xff0c;为什么不用它做主数据…

在线SM4加密/解密工具

在线SM4加密/解密 - BTool在线工具软件&#xff0c;为开发者提供方便。在线SM4加密/解密工具支持快速、便捷地对数据进行SM4算法加密与解密。适用于各类业务场景&#xff0c;确保信息安全传输&#xff0c;操作简易直观&#xff0c;只需几步即可完成加解密过程。采用国家标准SM4…

Webpack5 基本使用 - 1

Webpack 是什么 webpack 的核心目的是打包&#xff0c;即把源代码一个一个的 js 文件&#xff0c;打包汇总为一个总文件 bundle.js。 基本配置包括mode指定打包模式&#xff0c;entry指定打包入口&#xff0c;output指定打包输出目录。 另外&#xff0c;由于 webpack默认只能打…

Python工具:pathlib

文件的路径实际上是一件很困扰的时间&#xff08;各种平台有时候规则不一样&#xff0c;有时候还需要考虑字符转义的问题&#xff09;&#xff0c;因此我直接推荐使用模块 pathlib&#xff0c;当然&#xff0c;如果您不介意的话&#xff0c;可以使用 os.path 做较为低级的路径操…

蓝桥杯(Python)每日练Day5

题目 OJ1229 题目分析 题目完全符合栈的特征&#xff0c;后进先出。如果能够熟练使用列表的9种方法那么这道题很容易解出。 题解 a[]#存衣服 nint(input()) for i in range(n):llist(input().split())#判断每一步的操作if len(l[0])2:a.append(l[1])else:while a.pop()!l…

不停机迁移,TDengine 在 3D 打印技术中的“焕新”之路

小T导读&#xff1a;自 2021 年我们正式使用 TDengine 至今已接近三年&#xff0c;现在 TDengine 已经成熟应用于我们多个项目当中&#xff0c;凭借着强大的读写存储能力&#xff0c;为我司多项业务的核心数据保驾护航。近期我们团队刚好完成 TDengine 2.x 到 3.x 的数据迁移&a…

Redisson 分布式锁可重入的原理

目录 1. 使用 Redis 实现分布式锁存在的问题 2. Redisson 的分布式锁解决不可重入问题的原理 1. 使用 Redis 实现分布式锁存在的问题 不可重入&#xff1a;同一个线程无法两次 / 多次获取锁举例 method1 执行需要获取锁method2 执行也需要&#xff08;同一把&#xff09;锁如…

Redis面试

1.说说什么事redis Redis是一种基于键值对的NoSql数据库。 Redis中的value支持string&#xff08;字符串&#xff09;、hahs&#xff08;哈希&#xff09;、list、set、zset&#xff08;有序集合&#xff09;、bitmaps&#xff08;位图&#xff09;&#xff0c;HyperLoglog等数…

树的学习day01

树的理解 树是一种递归形式的调用 树是由于多个结点组成的有限集合T 树中有且仅有一个结点称为根 当结点大于1的时候&#xff0c;往往其余的结点为m个互不相交的有限个集合T1,…,Tm&#xff0c;每个互不相交的有限集合本身右是一棵树&#xff0c;称为这个根的子树 空树也是树 关…

【Web前端开发基础】CSS3之空间转换和动画

CSS3之空间转换和动画 目录 CSS3之空间转换和动画一、空间转换1.1 概述1.2 3D转换常用的属性1.3 3D转换&#xff1a;translate3d&#xff08;位移&#xff09;1.4 3D转换&#xff1a;perspective&#xff08;视角&#xff09;1.5 3D转换&#xff1a;rotate3d&#xff08;旋转&a…

城市开发区视频系统建设方案:打造视频基座、加强图像数据治理

一、背景需求 随着城市建设的步伐日益加快&#xff0c;开发区已经成为了我国工业化、城镇化和对外开放的重要载体。自贸区、开发区和产业园的管理工作自然也变得至关重要。在城市经开区的展览展示馆、进出口商品展示交易中心等地&#xff0c;数千路监控摄像头遍布各角落&#…

matlab窗函数-hann窗和hamming窗函数

窗函数的作用 在时域上&#xff0c;窗函数可以看作是对原始信号进行截断或调制的加权函数。这些窗函数通常在时域上是有限的宽度&#xff0c;并且具有对称性&#xff0c;如矩形窗、汉宁窗、汉明窗和布莱克曼窗等。例如&#xff0c;汉明窗是一种对称窗函数&#xff0c;它可以用…

Cuda笔记1

1、培训001 1 1…100&#xff0c;CPU是串行执行&#xff0c;GPU是分成几部分同时计算&#xff0c;如123,456… 2、培训002 一来一回 每种定义有对应的调用位置&#xff0c;和执行位置&#xff0c;不对会报错。 下图是用NVPROF时间分析 下图是资源分析 1&#xff09; CUDA…

《统计学习方法:李航》笔记 从原理到实现(基于python)-- 第 2章感知机

文章目录 第 2章感知机2.1 感知机模型2.2 感知机学习策略2.2.1 数据集的线性可分性2.2.2 感知机学习策略 2.3 感知机学习算法2.3.1 感知机学习算法的原始形式2.3.2 算法的收敛性2.3.3 感知机学习算法的对偶形式 实践&#xff1a;二分类模型&#xff08;iris数据集&#xff09;数…

爬虫正则+bs4+xpath+综合实战详解

Day3 - 1.数据解析概述_哔哩哔哩_bilibili 聚焦爬虫&#xff1a;爬取页面中指定的页面内容 编码流程&#xff1a;指定url -> 发起请求 -> 获取响应数据 -> 数据解析 -> 持久化存储 数据解析分类&#xff1a;正则、bs4、xpath(本教程的重点) 数据解析原理概述&am…

2024群硕荣誉首响,第十三届公益节斩获企业大奖

2024年1月23日至24日&#xff0c;第十三届公益节在北京顺利举行。 历经多年的探索和实践&#xff0c;公益节已经成为中国公益慈善领域颇具影响力的年度盛事。本届公益节全面恢复线下活动&#xff0c;各大企业齐聚现场&#xff0c;展现社会责任的力量&#xff0c;现场气氛热烈而…

什么是5G RedCap?5G RedCap有什么优势?

5G RedCap&#xff08;Reduced Capability&#xff09;是指5G轻量化技术&#xff0c;即通过对5G技术进行一定程度的“功能裁剪”&#xff0c;来降低终端和模组的复杂度、成本、尺寸和功耗等指标&#xff0c;从而“量体裁衣”适配不同的物联需求&#xff0c;实现兼顾物联网系统的…

【送书活动八期】docker容器中登陆并操作postgresql

这里的背景比较简单&#xff0c;因为区块链浏览器使用的是blockscout&#xff0c;blockscout的数据库选择的是postgresql&#xff0c;这些服务组件都是使用的docker容器来管理&#xff0c;今天进行区块链上交易查询的时候&#xff0c;发现数据存在部分问题&#xff0c;因此需要…

大数据信用查询系统能查到什么呢?

在金融助贷行业&#xff0c;大数据有叫大数据信用或者网贷大数据&#xff0c;在申贷的时候&#xff0c;想必大多数人都有听说过&#xff0c;很多人因为大数据不良的原因申贷被拒过&#xff0c;那大数据信用查询系统能查到什么呢?本文就简单为大家总结几点大数据信用查询的内容…