3

它与某些预取技术有关吗?还是具有 DDR 访问时序特性?

4

3 回答 3

7

IIRC 从 ARMv5TE 开始,写入缓冲区和 L1 缓存的路径为 64 位宽,以适应 LDRD/STRD 指令。这允许 STM 每个周期写入两个寄存器。

您还将节省一些 L1 指令缓存并在双问题内核上仅使用一条管道,这也是一个额外的收获。

于 2013-03-19T13:31:38.337 回答
4

更多指令、更多获取周期、更多指令执行需要更长的时间。总线是 64 位宽或可以是 64 位宽,对于单个寄存器 stm 没有增益,但如果使用多个寄存器,则可以减少用于移动数据的总线周期数,并且取决于内存系统,如果64 位宽你没有读-修改-写,这也很慢。如果它必须读取-修改-写入到缓存中,通常是写入,您会丢失缓存空间以及读取成本。即使它在缓存中命中,读取-修改写入也可能会让您付出代价。

您可以访问 arm 站点并下载 amba/axi 规范并查看总线事务如何工作,一旦您通过开销,每个事务都涉及多个时钟周期(多个事务可以同时进行,是的)它是每 64 位数据的一个时钟,因此 128 位比 64 位需要多一个时钟来传输。32 位和 64 位传输相同数量的时钟(如果对齐)。

我不能代表所有架构,但我相信至少有一种架构我看到只有读取实际上每次传输会超过 64 位。写入被分成单独的 64 位传输。我可能记错了。

如果您移动 4 个字的数据,读取或写入,未对齐,我相信这会变成 4 个单独的传输,一个用于每个奇数字,一个用于中间对齐的 64 位。所以对齐很重要。

于 2013-03-19T13:54:55.093 回答
2

什么时候是真的?

根据这个方便的表格,该STM指令需要 2 个周期来存储单个寄存器,或者n周期来存储n > 1的寄存器。

另一方面,STR总是需要 1 个单周期。

你什么时候得到STM比 更快STR

  • 对于一个寄存器,STM速度较慢。
  • 对于n 个寄存器 ( n > 1),它们是相同的。

另一方面,上面的参考是针对ARM9TDMI架构的,ARM有很多。

于 2013-03-19T13:16:45.287 回答