|ARM Technical Support Knowledge Articles|
Applies to: PL330 AXI DMA Controller
If a PL330 channel sees any store instruction and does not have enough data in its MFIFO to complete it, (regardless of alignment), would it just simply ignore the store instruction and move onto the next instruction?
If there is insufficient data in the MFIFO for a channel to complete a store, that channel will stall until there is sufficient data. Other channels (with sufficient data) will continue to execute.
We must, however, be clear about what we mean by a 'stall'. We need to be clear in distinguishing a pipeline stall (due to PL330 being unable to execute an instruction) and a load or store queue wait due to insufficient space or data. The PL330 first executes a store instruction and puts it into the store queue (if there is a entry free). If there is not an entry free then the instruction will stall the pipeline for that channel until there is an entry free. Once in the store queue, the store will wait until there is sufficient data in the MFIFO before performing the AXI write. Whilst waiting, no further stores for the channel that are in the store queue can start. The store instruction is executed in the instruction pipeline (thereby preventing the whole device from stalling); it is the store itself which is queued, in the store queue, and will be carried out as soon as there is data available. The instruction threads can execute multiple loads and stores which are then put into the load and store queues to be carried out, in order, as soon as they can be completed.
Did you find this article helpful? Yes No
How can we improve this article?