dma就是直接存储器访问的首字母缩写(direct memory access)。cpu的总线上同时会挂着多几个存储器,如果想要将存储器1的内容复制到存储器2,如果不用dma的话,就得靠cpu直接去操作了,操作过程大致是:cpu准备好存储器1的地址和控制信号,读取存储器1的内容,存放到cpu内部寄存器中,再准备好存储器2的地址和控制信号,将寄存器中的内容写入到存储器2。如果是单个数据的操作,这个过程都是必须的,效率问题也不明显,但如果一次要复制大量数据(比如一帧图像数据、一批语音数据等),那么靠cpu这样循环一个数据一个数据地操作,不仅速度慢(由于架构设计的原因,一般cpu访问外部总线的速度都不是很高),还会导致cpu和总线一直被占用,效率就非常低了。如果在cpu内部做一个硬件控制器,专门负责这种数据搬移操作(自动产生存储器的地址和控制信号,自动实现读写时序),不仅速度可以提高很多,cpu还可以在此期间做其它的事情,这样效率就会高很多了。dma就是这么个意思,硬件上必须有一个dma控制器来实现这一功能。现在dma的概念和作用已经大大延伸了,很多复杂cpu里面甚至会包含很多个dma控制器,dma操作也不再仅限于外部存储器了,内部存储器之间、内部和外部存储器之间、各种标准外设和存储器之间,都有dma控制器来实现数据交换,这样cpu的功能越来越强,数据处理也越来越快。。