相关疑难解决方法(0)

Cortex M4 LDR/STR 时序

我正在阅读 Cortex M4 TRM 以了解指令执行周期。但是,那里有一些令人困惑的描述

  1. 处理器指令表中STR需要2 个周期
  2. 稍后在加载/存储时间中,它表明

STR Rx,[Ry,#imm]总是一个周期,这是因为地址生成在初始循环中执行,并且所述数据存储在同一时间作为下一个指令正在执行执行。

如果存储到write buffer,并且write buffer已满或未启用,则下一条指令将延迟,直到存储完成。

如果存储不是到write buffer,例如代码段,并且该事务停止,则只有在完成之前执行另一个加载或存储操作时才会感受到对计时的影响

  1. 仍然在Load/store Timings 中,表示LDR可以通过跟随LDR和进行流水线化STR,但STR不能通过跟随指令进行流水线化。

其他指令在STR使用寄存器偏移后无法流水线化。STR 只能在跟随 LDR 时被流水线化,但在存储之后什么都不能流水线化。由于写缓冲区的原因,即使停止STR通常也只需要两个周期

更具体的让我困惑的是:

一季度。12似乎相互冲突,STR实际需要多少个周期,1 还是 2?(虽然我的实验显示为 1)

Q2。2表示如果存储通过write buffer并且不可用,它仍然会停止流水线,但是如果存储绕过它,流水线可能只在加载/存储指令跟随时停止。闻起来write buffer只会让事情变得更糟。这是有悖常理的。

Q3。3表示STR不能与后续指令流水线化,但是2 …

performance assembly arm cpu-architecture cortex-m

5
推荐指数
1
解决办法
304
查看次数

标签 统计

arm ×1

assembly ×1

cortex-m ×1

cpu-architecture ×1

performance ×1