ARM Technical Support Knowledge Articles

What does PL330 do if there is insufficient data inthe MFIFO?

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

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.

Rate this article

Disagree? Move your mouse over the bar and click

Did you find this article helpful? Yes No

How can we improve this article?

Link to this article
Copyright © 2011 ARM Limited. All rights reserved. External (Open), Non-Confidential