在需要大量数据的传输时,使用DMA往往会比使用cpu传输速度快。
1、cpu传输数据需要通过指令来完成,而执行指令需要取指、译码、执行等等步骤,编写程序往往还涉及对循环的处理。而本来传输数据需要的信号比较简单,理论上可以每个时钟周期传一个数据。因此把这部分功能给DMA来完成速度快得多。
2、cpu把数据传输任务交给DMA后,cpu可以继续执行其它的指令。因此可以达到并行的效果。所以程序整体的运行速度也会有所提高。
通过分别使用cpu和DMA向外设写入一些数据,比较其总线的时序信号可以直接观察到DMA的优势。
下图为直接使用cpu访问外设时的时序
而如果使用DMA时的时序如下:
从图中可以看出明显使用DMA访问外设效率会更高。