DMA(Direct Memory Access,直接内存访问)是一种数据传输方式,通过这种方式,外设可以直接访问系统内存而无需CPU参与,提高数据传输速度,减轻CPU负荷,是计算机系统中常用的一种技术。下面从多个角度分析DMA的工作原理。
1. DMA的作用
在传统的I/O方式中,数据的传输需要CPU的介入,CPU需要持续的从外设读取数据,并将数据写入内存或者读取内存里的数据并写入外设。这种方式需要CPU不停地占用总线,降低了系统的效率,同时也增加了CPU的负荷。使用DMA技术后,可以将数据的传输工作交给DMA控制器,CPU只需进行少量的操作便可实现数据的传输,从而提高了系统的效率。
2. DMA的结构
DMA控制器有多种结构,但是基本上都由以下几部分组成。数据传输控制单元,用于控制DMA传输,决定当前是读取还是写入数据。地址寄存器,用于存放数据传输的起始地址,目标地址等。数据寄存器,用于存放DMA传输过程中所读取或写入的数据。中断控制单元,用于向CPU发送DMA传输完成的中断信号。
3. DMA的工作原理
数据传输的过程中,DMA控制器和CPU共享系统总线,但是DMA控制器独占总线的时间很短,仅仅是CPU独占总线时间的一个片段。DMA 控制器从外设的数据寄存器或设备控制寄存器(DCR)中获取数据,然后将数据放到内存缓冲区中,最后再将数据通过总线传输到内存中或从内存中读取数据传输到外设。
4. DMA读取数据的过程
当需要从外设读取数据的时候,DMA控制器首先将外设中的数据传送到缓冲区中。当缓冲区中的数据数量达到了预设的阈值时,DMA控制器就会向内存发送一个读取请求。当DMA 控制器获取到内存总线之后,就会开始读取数据。一旦向内存发送一个读取请求,DMA 控制器就会开始持续地获取内存总线。
5. DMA写入数据的过程
当需要向外设写入数据时,DMA控制器首先将数据写入到内存缓冲区中。当缓冲区中的数据数量达到了预设的阈值时,DMA控制器就会向外设发送一个写入请求。当DMA 控制器获取到外设总线之后,就会开始向外设写入数据。在写入数据的时候,DMA 控制器就会持续地获取外设总线。
扫码咨询 领取资料