工作原理
一个设备接口试图通过总线直接向另一个设备发送数据(一般是大批量的数据),它会先向CPU发送DMA请求信号。外设通过DMA的一种专门接口电路――DMA控制器(DMAC),向CPU提出接管总线控制权的总线请求,CPU收到该信号后,在当前的总线周期结束后,会按DMA信号的优先级和提出DMA请求的先后顺序响应DMA信号。CPU对某个设备接口响应DMA请求时,会让出总线控制权。于是在DMA控制器的管理下,外设和存储器直接进行数据交换,而不需CPU干预。数据传送完毕后,设备接口会向CPU发送DMA结束信号,交还总线控制权。
实现DMA传送的基本操作如下:
(1)外设可通过DMA控制器向CPU发出DMA请求:
(2)CPU响应DMA请求,系统转变为DMA工作方式,并把总线控制权交给DMA控制器;
(3)由DMA控制器发送存储器地址,并决定传送数据块的长度;
(4)执行DMA传送;
(5)DMA操作结束,并把总线控制权交还CPU。
工作过程DMA的工作过程大致如下:
①当外设准备好,可以进行DMA传送时,外设向DMA控制器发出DMA传送请求信号DREQ;
②DMA控制器收到请求后,向CPU发出“总线请求”信号HOLD,表示希望占用总线;
③CPU在完成当前总线周期后会立即对HOLD信号进行响应。响应包括两个方面:一是CPU将数据总线、地址总线和相应的控制信号线均置为高阻态,由此放弃对总线的控制权。另一方面,CPU向DMA控制器发出“总线响应”信号HLDA;
④DMA控制器收到HLDA信号后,就开始控制总线,并向外设发出DMA响应信号 ;
⑤DMA控制器送出地址信号和相应的控制信号,实现外设与内存或内存与内存之间的直接数据传送。例如,在地址总线上发出存储器的地址,向存储器发出写信号 ,同时向外设发出I/o地址、 和AEN信号,即可从外设向内存传送一个字节;
⑥DMA控制器自动修改地址和字节计数器,并据此判断是否需要重复传送操作。规定的数据传送完后,DMA控制器就撤销发往CPU的HOLD信号。CPU检测到HOLD失效后,紧接着撤销HLDA信号,并在下一时钟周期重新开始控制总线,继续执行原来的程序。2
特点DMA方式具有下列特点:
①改变了主存与CPU的固定联系,主存既可被CPU访问,又可被外设访问;
②在数据块传送时,主存地址的确定、传送数据的计数等都由硬件电路直接实现;
③主存中要开辟专用缓冲区,及时供给和接收外设的数据;
④CPU和外设并行工作,提高了系统的效率;
⑤DMA在传送开始前要通过程序进行预处理,结束后要通过中断方式进行后处理。3
使用场所DMA的适用场合有下述几种:
①硬盘和软盘I/O。可以使用DMAC作磁盘存储介质与半导体主存储器之间传送数据的接口。这种场合需要将磁盘中的大量数据如操作系统等快速地装入内部存储器。
②快速通信通道I/O。例如,光导纤维通信链路,DMAC可以用来作为计算机系统和快速通信通道之间的接口,例如,作为同步通信数据的发送和接收,以便提高响应时间,支持较高的数据传输速率,并使CPU脱离出来做其他工作。
③多处理机和多程序数据块传送。对于多处理机结构,通过DMAC控制数据传送,可以较容易地实现专用存储器和公用存储器之间的数据传送,对多任务应用、页式调度和任务调度都需要传送大量的数据。因此,采用DMA方式可以提高数据传输速度。
④扫描操作。在图像处理中,对CRT屏幕送数据,也可以采用DMA方式。
⑤快速数据采集。当要采集的数据量很大,而且数据是以密集突发的形式出现时,例如对波形的采集,此时采用DMA方式可能是最好的方法,它能满足响应时间和数据传输率的要求。
⑥在PC/XT机中还采用DMA方式进行DRAM的刷新操作。2