3.5. DMA Arbiter
- For DMA PCIe mode, the decision on granting permission for a read or write transfer is based on available credits advertised by TX Credit Controller.
- For DMA SoC mode, the decision on granting permission for a read or write transfer is equal weighted if the subsequent AXI4 subordinate is ready to receive the data.
Considering the following example where there is a number of pending read and write transfers issued:
- Prefetcher Engine has 2 pending command transfers.
- MSI-X Controller has 1 pending command transfer.
- H2D device agent 0 has 2 pending command transfers.
- D2H device agent 0 has 1 pending command transfers.
The round-robin arbitration process is expected to be happen as below:
- 1st transaction: Granted one command transfer from Prefetcher Engine.
- 2nd transaction: Granted one command transfer from MSI-X Controller.
- 3rd transaction: Granted one command transfer from H2D device agent 0.
- 4th transaction: Granted one command transfer from D2H device agent 0.
- 5th transaction: Granted one command transfer from Prefetcher Engine.
- 6th transaction: Granted one command transfer from H2D device agent 0.
In this case, assuming the earliest command received in time was from Prefetcher Engine, so a permission was granted to push out one transfer from its internal FIFO first. For subsequent 2nd to 4th transactions, the sequence ordering is interchangeable if the next granted agent was different with the current one. For 5th and 6th transactions, the sequence ordering is interchangeable as you only have one remaining command from both Prefetcher Engine and H2D device agent 0. The rule of thumb here is that the DMA Arbiter grants these two agents again only after going through the other agents that have pending requests to be transferred as well.