DMA是直接内存访问(Direct Memory Access)的缩写,是计算机系统中的一种数据传输方式。DMA可以在CPU没有参与的情况下,直接将数据从输入/输出设备中读取到内存中,或者从内存中输出到设备中,从而减轻CPU的负担,提高数据传输效率。
DMA的引入大大推动了计算机系统的发展,如今几乎所有的计算机系统都支持DMA技术。
DMA在工作时需要三个部件:DMA控制器、数据缓冲区、目的地址寄存器。
当外设需要与内存进行数据传输时,它向DMA控制器发送信号。DMA控制器开始工作,将源地址、目的地址和数据长度等参数存储到内部缓冲区中。
接着DMA控制器将控制权交给自己,开始直接和内存进行数据传输,而CPU则可以暂停工作,从而减少了CPU与DMA控制器这一段时间的竞争。当DMA控制器完成数据传输后,它会向CPU发送信号,告知数据已经传输完毕。
相比于CPU来说,DMA有以下几个优点:
(1)减轻了CPU的负担,释放了CPU的时间,提高了整个系统的效率;
(2)DMA控制器内部有缓存机制,可以够使数据传输更加流畅;
(3)DMA控制器支持高速传输,因此可以在短时间内完成大量的数据传输;
(4)DMA控制器可以实现多个设备之间的数据传输,这有利于提高CPU分配资源的效率。
整个计算机系统都离不开数据传输,因此DMA在计算机系统中应用非常广泛。DMA可以被用在以下场景:
(1)网络数据的传输;
(2)音视频数据的传输;
(3)磁盘数据的读取和写入;
(4)数据压缩和解压缩等。