Work out dma transfer time instantly with clear inputs, formula shown and shareable results.
DMA transfer time is bytes divided by bytes per cycle divided by clock, plus descriptor setup overhead. Overhead dominates small transfers: a 64-byte transfer with 1.2 microseconds of setup wastes over 80% of the time, which is why scatter-gather chaining exists.
DMA timing
cycles = bytes / (width / 8); time = cycles / clock + setup overhead
It chains many descriptors so the controller processes a whole list without CPU involvement, amortising setup across many transfers.
For transfers of a few words, where setup costs more than a CPU copy loop would. Most drivers have a threshold below which they use memcpy.