STM32H7 上 LDR 指令的持续时间取决于内存
Duration of a LDR instruction on STM32H7 depending on memory
我正在 STM32H753I-EVAL2 板上对 STM32H7 进行一些评估。我使用 STMicro 示例代码在内存映射模式下配置、写入和读取 QSPI 闪存。
关于 LDR 指令持续时间的一些数字让我感到惊讶:
我使用 SysTick(连接到 CPU 时钟)测量指令的周期数。据我了解:SysTick 的一个周期 = CPU.
的一个周期
我测量了两条完全相同的指令 ldrb.w Rn, [Rp, Rq]
除了 Rp 在一种情况下是 DTC-RAM 中的地址而在另一种情况下是地址
在 QSPI 闪存中。
结果是(从内部闪存执行的代码):来自 DCTM-RAM 的 15 个周期,来自 QSPI 的 12 个周期。
我对结果感到惊讶,我猜 QSPI 内容如果被缓存,那么它可能会解释这些数字?
另外我发现一条LDR指令的15个周期似乎很多,你怎么看?我的程序有问题吗?
如果内部闪存没有被缓存,或者缓存无效,或者管道被刷新或者...(许多其他)它可能比 QSPI 闪存定位指令花费更多的时间。
要测量执行时间,您有特殊的寄存器。
我正在 STM32H753I-EVAL2 板上对 STM32H7 进行一些评估。我使用 STMicro 示例代码在内存映射模式下配置、写入和读取 QSPI 闪存。
关于 LDR 指令持续时间的一些数字让我感到惊讶:
我使用 SysTick(连接到 CPU 时钟)测量指令的周期数。据我了解:SysTick 的一个周期 = CPU.
的一个周期
我测量了两条完全相同的指令
ldrb.w Rn, [Rp, Rq]
除了 Rp 在一种情况下是 DTC-RAM 中的地址而在另一种情况下是地址 在 QSPI 闪存中。
结果是(从内部闪存执行的代码):来自 DCTM-RAM 的 15 个周期,来自 QSPI 的 12 个周期。
我对结果感到惊讶,我猜 QSPI 内容如果被缓存,那么它可能会解释这些数字?
另外我发现一条LDR指令的15个周期似乎很多,你怎么看?我的程序有问题吗?
如果内部闪存没有被缓存,或者缓存无效,或者管道被刷新或者...(许多其他)它可能比 QSPI 闪存定位指令花费更多的时间。
要测量执行时间,您有特殊的寄存器。