1.DMA方式的定义
上述的程序控制和中断两种方式的数据传送过程部是在CPU控制下通过执行相应的指令来完成数据传送的,也就是都需要以CPU作为中介,即使中断传送方式相对于查询发送方式来说,大大提高了CPU的利用率,但是中断传送仍然必须由CPU通过指令来执行。每次中断,都要进行保护断点、保护现场、传送数据、存储数据,以及最后恢复现场、返回主程序等操作,这需要执行多条指令来完成。这两种数据传送方式将一个数据从外设传送到存储器大约需要几十个时钟周期,因此,它们通过CPU指令执行速度限定了其传送的最大速度(约为几十KB/s)。这个速度在传送大量数据时,例如,高速的I/O设备(如硬盘、光盘、U盘)与内存间的大量信息交换,显然是太慢了。
为了提高外设和存储器之间的数据传送速度,充分发挥高速外设的潜力,可以采用直接存储器存取(Direct Memory Access,简称DMA)方式。采用DMA方式时,外设和存储器的数据交换不需要CPU的控制,也不需要任何程序的执行,而是在一种专门的硬件—DMA控制器(简称DMAC)的管理控制下(CPU要放弃控制权)实现外设和存储器之间(或外设与外设之间、存储器与存储器之间)直接进行大量的数据交换,且数据交换过程不受CPU的控制(也即CPU不再担当数据传输的中介者),这样传送速度可以大大地加快。DMA方式使计算机的硬件结构发生了变化,信息传送从以CPU为中心变成了以内存为中心。这种方式实际上简化了CPU对输入/输出的控制,把输入/输出过程中外设与存储器交换信息的那部分操作的控制交给了DMA控制器(DMAC)。图5-23为DMA传送方式的原理框图,图中的黑色加粗的线段表示DMA方式的数据传递路径。
图5-23 DMA方式的原理方框图
2.DMA方式与中断方式的区别
(1)中断方式是在数据缓冲寄存器满之后发出中断,要求CPU进行中断处理。而DMA方式则是在所要求传送的数据块全部传送结束时要求CPU进行中断处理,这就大大减少了CPU进行中断处理的次数。
(2)中断方式的数据传送是在中断处理时由CPU控制完成的。而DMA方式则是在DMA控制器的控制下,不经过CPU控制完成的,这就排除了CPU因并行设备过多而来不及处理以及因速度不匹配而造成数据丢失等现象。
3.DMA方式的实现方法
(1)由专用接口芯片DMA控制器(称DMAC)控制传送过程。
(2)当外设需传送数据时,通过DMAC向CPU发出总线请求HOLD。
(3)CPU发出总线响应信号HLDA,释放总线。
(4)DMAC接管总线,控制外设、内存之间直接数据传送。
4.DMAC的基本功能
当用DMA方式传送时,CPU让出总线(即CPU连到这些总线上的线处于高阻状态),系统总线由DMA接管,故DMAC必须具备功能为:(www.xing528.com)
(1)能向CPU发出要求控制总线的总线请求信号HRQ。
(2)当收到CPU发出的同意出让总线的应答信号HLDA后,能接管总线并进入DMA方式。
(4)能发存储器及I/O外设的读、写控制信号。
(5)能决定传送的字节数,并能判断DMA传送是否结束。
(6)接收I/O设备的DMA请求信号和向I/O设备发出DMA响应信号。
(7)能发出DMA结束信号,使CPU恢复正常工作。
5.DMA方式的特点
在DMAC硬件来控制下,内存和外设之间直接交换数据,不通过CPU,可以达到很高的I/O传输速率(可达几MB/s)。CPU与外设可实现真正的并行工作,CPU的效率得到提高。但DMAC的加入使接口电路结构变得复杂,硬件开销增大。另外,DMA控制器需要为每次数据传送做大量的工作,数据传送单位的增大意味着传送次数的减少;DMA方式对外围设备的管理和某些操作仍由CPU控制。随着系统所配外设种类和数量的增加,多个DMA控制器的同时使用显然会引起内存地址的冲突并使控制过程进一步复杂。
6.DMA方式的适用场合
适用于在内存与高速外设、或两个高速外设之间、或存储器之间进行大批量数据传送。注意,DMA方式不适合于慢速外设、或少量数据传递。
注意,采用DMA方式的一个必要前提是CPU允许接受这种方式。也就是说,并不是所有的CPU都可以接受DMA方式的。例如,MCS-51单片机就不具备这种功能,由于MCS-51单片机主要用于工业测量与控制,一般不会有大量的数据在外设和存储器之间传送,没有设置DMA功能也是很自然的。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。