I read this in a book:
If the DMA controller in a system functions at a maximum rate of 5 MHz
and we still use 100 ns memory, the maximum transfer rate is 5 MHz
because the DMA controller is slower than the memory. In many cases,
the DMA controller slows the speed of the system when DMA transfers
occur.
I thought the whole reason for a DMA controller is to speed things up, not slow things down. So how is it helpful if it slows things down? Why not make the DMA controller as fast as the memory?
The whole idea of DMA controller is that it works in parallel with the processor. So the processor can queue a long IO operation to DMA controller and happily continue running code. Even though the DMA controller is slower it will only affect the IO operation, not the overall performance. This ie very important when interfacing with slow devices – if the processor had to work with them directly it would never have any other processing done. With DMA it queues that slow IO onto the DMA and the IO is done in parallel.