ARM LDM和STM wrt数据缓存和数据总线

时间:2017-03-17 18:24:11

标签: caching assembly arm

我正在寻找一种复制42个32位连续内存位置的有效方法 注意:快照数组将复制到日志数组中。

我使用LDMIA和STMIA对(每条指令10个寄存器):

LDMIA  R0!, {R2-R12}    ; Read 10 array slots\n
STMIA  R1!, {R2-R12}    ; Write 10 array slots\n

我的问题:

  1. 这些说明如何影响数据缓存?
  2. 数据总线在整个加载/存储期间是否被锁定,或者仅在每次32位加载/存储时被锁定? 换句话说,对于LDM指令,ARM是否锁定数据总线并将所有数据加载到寄存器中,还是仅为每次32位传输锁定数据总线?
  3. 代码在ARM Cortex A8(Texas Instruments am3358)上运行。

    我在这个页面ARM Architecture Reference Manual

    中没有看到任何硬件详细信息

1 个答案:

答案 0 :(得分:0)

您应该从ARM查看Cortex-A series programming guide。我现在没有在这里引用,但AFAIR在高效的内存处理主题上花了很多时间,如果没有特别关注总线锁定这样的低级细节(你可能需要看看AHB / AXI)这方面的文档,但我不认为这里真的有必要)。