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

目录

背景

1 系统结构简介

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

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

2.1 Latency含义

2.2 STM32F103取值说明

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


背景

通常的说法是,程序在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的运行效率高。

  • 29
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

binhaoPro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值