7.4. Interlocked MCR

If the data for an MCR operation is not available inside the ARM9TDMI pipeline during its first Decode cycle, the ARM922T pipeline interlocks for one or more cycles until the data is available. An example of this is where the register being transferred is the destination from a preceding LDR instruction. In this situation the MCR instruction enters the Decode stage of the coprocessor pipeline, and remains there for a number of cycles before entering the Execute stage. Figure 7.4 gives an example of an interlocked MCR. In this example the MCR busy-waits the ARM9TDMI. When the instruction enters the Decode stage of the coprocessor pipeline, the coprocessor drives CHSDE[1:0] with WAIT. Due to an interlock in the ARM9TDMI, the instruction remains in Decode for an extra cycle. This is signaled to the coprocessor by nCPMREQ going HIGH, holding the instruction in the Decode stage of the coprocessor pipeline follower. The coprocessor signals WAIT to the ARM9TDMI during its second Decode cycle. The interlock in the ARM9TDMI resolves, nCPMREQ goes LOW, and the instruction moves from Decode into Execute.

Figure 7.4. ARM922T interlocked MCR

Copyright © 2000, 2001 ARM Limited. All rights reserved.ARM DDI 0184B
Non-Confidential