程序在FLASH中的执行效率比RAM中高?

背景

通常的说法是,程序在RAM中运行的效率比FLASH中的运行效率高,但是你见过程序在FLASH中运行比在RAM中运行效率高的芯片吗?

1 系统结构简介

想要了解芯片是如何取指的,需要对MCU系统的结构有一定的了解,特别是对ICode、DCode和系统总线,下面就对STM32F103系列MCU的系统总线进行一个简单的讲解,带领大家认识MCU取指过程。

下图是STM32F103大容量系列单片机的系统结构,主要由以下部分组成:

  • Corte-M3内核ICode总线(I-bus),DCode总线(D-bus),和系统总线(S-bus)
  • 两个DMA
  • 内部SRAM
  • 内部FLASH
  • FSMC
  • AHB和APB上的所有设备

本节主要针对Corte-M3内核ICode总线(I-bus),DCode总线(D-bus),和系统总线(S-bus)进行讲解,它是ARM公司定义的总线架构,框图如下所示。

1.1 I-BUS、D-BUS、SYS-BUS的含义

  • I-BUS(Instruction bus):指令总线,该总线将内核的指令总线与闪存指令接口相连接,指令预取在该总线上完成
  • D-BUS(Data bus):数据总线,该总线将内核的数据总线与闪存存储器的数据接口相连接(常量加载和调试访问)
  • SYS-BUS(System bus):系统总线,该总线连接内核的系统总线(外设总线)到总线矩阵,总线矩阵协调着内核和DMA间的访问

简单来说,也就是I-BUS是指令总线,负责CPU指令的正确执行,如果I-BUS出现问题,程序就不能正常运行了(程序下载到FLASH中)。

D-BUS也就是数据总线,比如访问存储在FLASH或者RAM中的数据,例如数组的值,是通过D-BUS完成的。

S-BUS是系统总线,它既可以取指,也可以访问数据,也可以访问外设。

对于STM32F103系列来说,当代码存储在FLASH中,S-BUS主要负责访问外设,I-BUS取指,D-BUS访问数据;当代码存储在RAM中的时候,此时I-BUS空闲,取指主要是通过S-BUS。

2 STM32F103在RAM和FLASH中的取指效率

2.1 Latency含义

要弄明白后面的问题,这里讲一下Latency的含义,Latency也就是Flash读取数据的等待时间,根据时钟频率不同,这个时间有所不同。

下图是Flash读时序图,可以看出,当读使能(RE)拉高之后,MCU向Flash发送需要读取的地址,Flash收到这个地址之后,有一个等待时间(Tkq),当等待的时间大于等于Tkq的时候,才能读出有效的数据,否则数据无效,这个Tkq就是我们常说的Latency。

2.2 STM32F103取值说明

从系统结果框图可知,Cortex-M3内核对Flash的操作路径比对SRAM的操作路径更短(操作SRAM多走了一条总线矩阵),按照路径的长短,内核读取Flash的数据比读取SRAM的数据更快,但是STM32F103系列单片机的FLASH在写入读取的地址之后,需要有一个等待时间,满足这个等待时间之后,才能读取有效的数据(等待时间根据主频不同有所不同),而SRAM则没有这个等待时间,所以,SRAM的取指速度比Flash快的原因就体现在Flash读取数据有一个等待时间,我们把这个等待时间叫做latency。

下图是STM32F103不同的系统时钟下,FLASH读取数据的延迟时间。

3 GD32F303在RAM和FLASH中的取指效率

通过查看GD32F303的手册发现,GD32F303对Flash前256K字节的读取没有等待时间。

再查看GD32F303的系统框图,发现操作SRAM的路径比Flash的路径长,如果程序小于256KB,那么程序在GD32F303这款芯片的Flash中的运行效率比SRAM的运行效率高。

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

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

相关文章

Access数据库模糊查询

Access数据库模糊查询的方法 1.使通配符: 在 Access 数据库中,有两种通配符可供使用,分别是"?"和"*"。 "?"表示匹配一个字符。 "*"表示匹配任意多个字符 1例如:如果要查询姓氏以"王"开…

jsonschema,一个超强的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个超强的 Python 库 - jsonschema。 Github地址:https://github.com/python-jsonschema/jsonschema JSON(JavaScript Object Notation)是…

windows server 2019 云服务器看不见硬盘的解决方案

刚拿的windows server 服务器看不见硬盘,这是因为没有初始化数据盘的原因。 解决方案如下: 单击“服务器管理器”仪表盘。 弹出“服务器管理器”窗口,如图1所示。 “服务器管理器”页面右上方选择“工具 > 计算机管理”。 弹出“计算机管…

零花钱也能设计精美网页!推荐几个免费设计素材站点!

UI设计师最怕什么? 没有创意,没有灵感,没有思路! 在哪里可以得到idea?别担心,往下看! 你知道网络有多大,你想要什么吗?今天,我想和大家分享一些宝藏网页设…

二叉树的深度遍历

目录 深度优先遍历: 二叉树节点定义: 递归法: 前序 中序 后序 迭代法: 前序 中序 后序 迭代法(统一写法) 前序 中序 后序 广度优先遍历: 二叉树的遍历方法包括两种&#xff1a…

城市酷选模式开发(门店免单排队返利系统)

城市酷选模式开发(门店免单排队返利系统)【阿巴】城市酷选商城开发免单排队返利小程序搭建、城市酷选模式开发、城市酷选系统商城开发、城市酷选APP系统开发、城市酷选 每经AI快讯,有投资者在投资者互动平台提问:“以塑代钢”已成…

CXYGZL-程序员工作流,持续迭代升级中

概述 现在开源的工作流引擎,基本都是以BPMN.js为基础的,导致使用门槛过高,非专业人员无法驾驭。本工作流借鉴钉钉/飞书的方式,以低代码方式降低用户使用门槛,即使是普通企业用户也可以几分钟内就能搭建自己的工作流引…

Java 异常处理

目录 一.Exception类的继承关系二.运行时异常和非运行时异常的区别三.内置异常类四、内置异常方法五、捕获异常六、抛出异常七、try-with-resources 一.Exception类的继承关系 二.运行时异常和非运行时异常的区别 运行时异常都是RuntimeException类及其子类异常,如…

【MATLAB源码-第114期】基于matlab的孔雀优化算法(POA)无人机三维路径规划,输出做短路径图和适应度曲线。

操作环境: MATLAB 2022a 1、算法描述 POA(孔雀优化算法)是一种基于孔雀羽毛开屏行为启发的优化算法。这种算法模仿孔雀通过展开其色彩斑斓的尾羽来吸引雌性的自然行为。在算法中,每个孔雀代表一个潜在的解决方案,而…

windows系统下docker软件中使用ubuntu发行版本的linux系统

1.软件下载 官网下载地址 下载安装之后,再去微软商店下载wsl软件,可以直接用,或者也可以使用命令行拉取(下面会讲) 2.在docker里面创建容器的两种方法 2.1.命令行创建 前言:输入 winr 打开命令行进行下面…

修炼九阳神功——“函数”

目录 前言 1. 函数的概念 2. 库函数 2.1 标准库和头⽂件 2.2 库函数的使用方法 2.2.1 功能 2.2.2 头⽂件包含 2.2.3 实践 2.2.4 库函数⽂档的⼀般格式 3. 自定义函数 3.1 函数的语法形式 3.2 函数的举例 ​编辑 4. 形参和实参 4.1 实参 4.2 形参 4.3 实参和形…

VUE生命周期和生命周期四个阶段

Vue生命周期:一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个阶段:① 创建 ② 挂载 ③ 更新 ④ 销毁 vue的生命周期如图所示: Vue 生命周期函数(钩子函数):Vue生命周期过程中,会自…

微服务介绍

背景 微服务是什么?杜克大学教授DanAriely说过一段非常出名的话,用来表述Big Data的发展现状。我觉得把这句话放到微服务身上也极其贴切。 Micro-services is like teenage sex: Everyone talks about it, nobody really knows how to do it, everyo ne thinks ev…

【论文笔记合集】卷积神经网络之深度可分离卷积(Depthwise Separable Convolution)

本文作者: slience_me 我看的论文地址:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 内容 1. 标准卷积 假设输入为DFDFM,输出为输入为DFDFN,卷积核为DKDKM,共有N个卷积核进…

eclipse ADT安装及abap cds模版创建

文章目录 1.前提2.安装3.创建cds模版 abap cds 常用语法 https://blog.csdn.net/weixin_49198221/article/details/135531478?spm1001.2014.3001.5501 1.前提 需要了解版本关系: **1.eclipse:**2023-06 (4.28), 2023-09 (4.29), 2023-12 (4.30) 2.Windows: ​ 1.Windows …

重启阿里云ESC服务器后,数据库与jar包外面无法访问bug

bug 重启了服务器,发现从外面无法连接数据库 原因 使用firewall-cmd --list-all命令查看服务器防火墙的配置,发现没有开启3306端口的开放,虽然我们在安全组设置3306端口但是防火墙没有开启,外面是依然无法访问的。 firewall-cm…

大型食品企业-白象集团选择泛微搭建集团一体化的数字化办公平台

白象食品股份有限公司(以下简称“白象食品”)正式创建于1997年,是一家以生产销售优质面制品为主、以提升人民美好生活为宗旨的综合性食品企业。 (图片素材来自白象官网) 目前,白象食品已在河南、河北、山东…

java.lang.UnsupportedOperationException: null 其一解决办法

文章目录 前言一、错误回顾1.详细信息2.代码详情 二、解决方案1.错误原因2.解决方案1.使用 new ObjectMapper() new TypeReference<List>(){}2.使用 SerializerFeature.WriteMapNullValue.getMask() 总结 前言 当我们远程调用传递泛型集合&#xff0c;如 List<?>…

Transformer 位置编码

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…

中仕公考:2024年度国考笔试分数公布,进面名单已出

2024年度考试录用公务员笔试成绩和合格分数线已经公布&#xff0c;考生们可以自行登录公务员专题网站查询成绩。 进面人员名单根据规定的面试比例&#xff0c;按照笔试成绩从高至低的顺序&#xff0c;1月14日已经公布进面名单。 没有进入面试人员名单的考生可以关注调剂&…