DMA的英文全称是Direct Memory Access,即直接内存访问,是一种高效的数据传输机制。在计算机系统中,往往存在一个DMA控制器,用于协助CPU搬移数据,即搬移数据这个动作是由DMA完成的,而在此期间CPU可以处理其他事务。
为了说明DMA的具体作用,这里介绍一个例子,并用最简单的示意图进行说明。假设有一个外部总线(如以太网、USB等)控制器将接收到的数据写入到系统缓存器中,CPU需要控制将缓存器中的数据写入到系统内存中,假如系统中没有DMA控制器,那么CPU需要自己控制所有的数据传输过程,如下图所示。
在上图中,若要将系统缓存中的数据写入到系统内存中,CPU需要首先发起一个读操作,将系统缓存中的一个数据读取并写入CPU的一个通用寄存器中;然后再发起一个写操作,将通用寄存器中的值写入到系统内存中。如此往复,直到把所有的数据传输完成。可以发现,采用这种方式进行传输数据时,CPU被长期占用无法处理其他事务,会使得系统性能大打折扣。而如果系统中存在一个DMA控制器,那么就如下图所示。