【问题标题】:STM32H7 performanceSTM32H7性能
【发布时间】:2021-07-07 13:55:48
【问题描述】:

我希望能简要解释一下我在 NUCLEO-H723ZG 板上的汇编程序时序循环如何表明它是在单个 cpu 时钟周期内执行的。使用的两条指令,一个 SUBS 和一个 BNE,在循环分支时消耗三个时钟周期,所以有一些魔法正在发生!我正在使用 GPIO BSRR 来切换 LED,并且需要使用 275M 的定时循环计数来实现大约每秒闪烁一次。

【问题讨论】:

  • 你能添加你的代码吗? Cortex M7 可以双重发出算术和加载存储指令,这使得基于指令计数的时序变得棘手。听起来你最好使用计时器来处理你的时间。
  • 计时码只包含上面提到的两条指令。因为它们执行了十亿次的四分之一,所以从时序的角度来看,GPIO 代码是无关紧要的。该练习是为了展示处理器的性能,而不是严格的计时精度。

标签: performance stm32


【解决方案1】:

对于 Cortex M0、M3 和 M4,循环计数包含在技术参考手册 (eg Cortex M4) 中。对于 M7,它们是 not published,但听起来您已经为自己测量了答案,所以在这种情况下不需要它在手册中。

如果你的代码是正确的,那么处理器就能在一个周期内完成这两条指令。

这并不奇怪。例如M4可以在一个周期内执行16位数据处理指令和it指令。

如果您需要确定性(但更差)的性能,您可以禁用此功能。参见辅助控制寄存器中的 DISFOLD 位。

【讨论】:

  • 感谢 Tom V。数据不言自明!一个简单的计数器循环的两条指令,在 M4 上占用 3 个时钟,在 M7 上占用一个时钟!我被带入了双胞胎 ALU 的世界!
  • 嗯,M7 应该比 M4 好 3 倍!如果问题解决了,你介意接受左边有勾号的答案吗?谢谢。
猜你喜欢
  • 2022-08-18
  • 2019-12-08
  • 1970-01-01
  • 1970-01-01
  • 2019-08-16
  • 2020-08-22
  • 2021-07-29
  • 2020-09-27
  • 2019-08-11
相关资源
最近更新 更多