| |||
| Home > Cycle Timings and Interlock Behavior > Load and Store Multiple instructions | |||
This section describes the cycle timing behavior for the LDM and STM instructions.
These instructions take one cycle to issue but then use multiple memory cycles to load/store all the registers. Because the memory datapath is 64-bits wide, two registers can be loaded or stored on each cycle. Following non-dependent, non-memory instructions can execute in the integer pipeline while these instructions complete. A dependent instruction is one that either:
writes a register that has not yet been stored
reads a register that has not yet been loaded.
Before a load or store multiple can begin all the registers
in the register list must be available. For example, a STM cannot
begin until all outstanding loads for registers in the register
list have completed.
To prevent instructions after a store multiple from writing to a register before a store multiple has stored that register, the register list has a lock latency that determines how many cycles it is before a subsequent instruction which writes to that register can start.