直接存储器访问(Direct Memory Access,简称DMA)是计算机系统中一种特殊的I/O数据传输机制。传统的处理器访问内存的方式是通过I/O接口进行,这种方式需要CPU参与数据的传输过程,CPU需要不断地从外设中读取数据、拷贝进自己的寄存器,再将数据写入内存中,然而数据传输的过程中,CPU有一部分时间是空闲的,在这段时间内,我们可以使用DMA技术,让DMA控制器来完成数据的传输过程,从而减轻CPU的负担。
在DMA传送方式中,三个组件起着决定性的作用:I/O控制器、DMA控制器和内存。DMA控制器的职责是控制整个数据传输过程。当外设需要与内存传输数据时,DMA控制器会被激活,并和外设建立连接,接收外设传入的数据。当接收到数据之后,DMA控制器会将数据直接写入内存,而不需要处理器的干预。CPU负责控制DMA控制器的寄存器,下达传输指令和设置传输信息。
DMA传送方式的优点主要有以下几个方面:
1、CPU负载降低:当CPU的负荷比较高时,使用DMA可以降低CPU在I/O存储器传输时的参与度,从而减小CPU的负担。
2、速度更快: DMA直接在内存与外设之间进行数据传输,而不必经过CPU,因而这种传输方式更加快捷,速度更快。
3、资源共享更高效:由于使用DMA方式可以让CPU控制整个数据传输过程,从而可以使数据传输过程中各个资源之间的协同更为高效。
使用DMA传送方式可以显著提高数据传输的效率,特别是在大数据量、高速率或者呈现连续分布的情况下,例如视频传输、网络传输、磁盘读写等。此外,DMA传输方式在操作系统、设备驱动程序、网络协议栈等领域都有着广泛的应用。