STM32H7上的LDR指令的持续时间取决于存储器

时间:2019-06-14 08:14:22

标签: performance assembly arm stm32 cortex-m

我正在STM32H753I-EVAL2板上对STM32H7进行一些评估。我使用STMicro示例代码在内存映射模式下配置,写入和读取QSPI Flash。

我对LDR指令持续时间的一些数字感到惊讶:

  • 我使用SysTick(连接到CPU时钟)测量指令的周期数。据我了解:SysTick的一个周期= CPU的一个周期。

  • 我测量了两条完全相同的ldrb.w Rn, [Rp, Rq]指令,除了Rp在一种情况下是DTC-RAM中的地址,在另一种情况下是地址 在QSPI Flash中。

结果是(从内部闪存执行的代码):DCTM-RAM需要15个周期,QSPI需要12个周期。

我对结果感到惊讶,我想如果QSPI内容被缓存了,那么它可以解释这些数字吗?

我还发现一条LDR指令的15个周期似乎很多,您怎么看?我的程序有问题吗?

1 个答案:

答案 0 :(得分:0)

如果未缓存内部闪存,或者缓存无效,或者流水线被刷新或...(还有许多其他),则可能比QSPI闪存定位的指令花费更多的时间。

要测量执行时间,您需要特殊的寄存器。