你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32G4芯片内不同空间运行代码的速率比较

[复制链接]
STMCU小助手 发布时间:2021-12-7 12:00
$ M, r( d2 `/ P$ K
7b4b0834a09916fb4ec917baa49d8600.png

# E+ Q, \  r. @2 h& t2 a/ {. \7 O
% j9 f! k3 B) g( k' ]最近有人问起程序在STM32G4片内不同存储空间运行的速度差异。说实在的,这个很难说死或说出个绝对的数据,毕竟结果除了跟执行代码的存放空间有关外,还跟代码本身的内容、程序逻辑、编译工具及优化等级等都息息相关。我这里设计了一个小测试程序做了下简单比较,以供参考。: w- H3 \2 r2 Z" i3 H- m" x; u
# @* L) s4 ^- x. H8 t3 b
我们不妨先看看STM32G4系列内部系统框架图。下图是STM32G4芯片的系统框架图,我将测试程序放在图中三个黄色高亮位置来运行。* m0 T, h: e: r( j% j5 q' T: }) l& p

5 j& m# Y& D  M& g8 Y8 o; ?
91a1c5b9c43b900d545e59b47f43287a.png
4 D8 ?+ m' l6 l( B8 j6 b5 i; O$ c1 T6 W

7 ^  _: e# X9 T. Q4 P4 G; A5 Q我将程序分别放在CCM、通用SRAM1、Flash区来运行,基于不同的配置,即是否开启指令预取、指令/数据Cache等,得到下面一个表格。代码所在区域栏里的数据代表各种情形下的执行时间。
& K' |' Y2 R* S! Q. a$ {
) O4 C; B6 e4 ]4 W, f! Q
a63e56ab943135bec678a479216a6dad.png
: J: T5 j* F" b) W- o
4 F# f2 a; S  l0 A3 [0 G" s) J
从上面表格可以看出,相同配置下在CCM里执行速率总是最高。% \; V: Q6 g1 W- m; Z$ }
7 h. T$ d3 @1 L) n4 V( ]
至于代码放在SRAM和Flash里的执行速率,不同配置下结果并不太一样。比如在开启prefetch和使能指令/数据Cache时,即第(1)种配置条件下,在SRAM里运行的速率是最慢的,只有在上图中的第(3)种情形下,代码在SRAM里运行速率相比在FLASH里运行才凸显出明显优势。1 l  g% [6 p' y* k0 t+ a4 }& _

& _# c( x; d- M1 C对于STM32G4系列芯片,芯片复位后其Prefetch功能是关闭的,而指令/数据Cache是开启的,即复位后默认为上面的第(2)种情形。结合上图,我们不难看出情形(1)与情形(2)的差别不大,至少不显著。
3 O* _1 \4 N5 v+ X/ v
* z. ]& }: f8 |9 A上面数据虽只是基于特定代码测试而得,但作为基本的方向性判断还是可以的。  {  d+ f8 C; {! L

. A( X0 G, C; s% g
' \4 b0 M. v0 e0 P. y0 W0 e
收藏 评论0 发布时间:2021-12-7 12:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版