Say i have a PCIe Gen2 x4 link running in a DMA subsystem. May I know when do we need multi-channels DMA configuration? For example, FPGA vendor like Xilinx offer up to 4-read & 4-write data channel in their 7-series product which eventually translating to 8 independent DMA engines.

1) May i know when the PCIe link need such a feature?

2) What the pros & cons to have such a feature? What is the user consideration factor to use this features?

Is it just matter of performance improvement? or it simplify the SW driver?


1 Answer 1


Well, just as an example, I have a card that processes HD video. It allows the user to take single-frame "snapshots" of the uncompressed video. It also scales the video to three different resolutions and compresses them (H.264). Each of these four streams of data needs to be transferred to a different area of host memory, so there's a multichannel DMA controller to handle that. It makes sense since the streams operate at very different data rates, and in the case of snapshots, very intermittently.

Trying to use a single-channel DMA controller to handle all of this would be very difficult to get right and needlessly complicate the software driver.

  • \$\begingroup\$ It is interesting that some processors require DMA to get burst operation on the bus; simple writes and reads transfer a single DWORD per transaction even for memory mapped space. The PowerQUICC III series comes to mind. \$\endgroup\$ Sep 27, 2019 at 10:29
  • \$\begingroup\$ It looks like the only gain to use the multi channels DMA is on SW side.Can i say so? \$\endgroup\$
    – Learner
    Sep 30, 2019 at 7:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.