直接存储器存取是一种高速数据传输的方法,
数据可以从一个
通道,不经过
CPU的处理就直接在
存储器或
输入输出设备之间进行传输。
工作原理
一个设备接口试图通过
总线直接向另一个设备发送数据(一般是大批量的数据),它会先向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信号,并在下一
时钟周期重新开始控制总线,继续执行原来的程序。
特点
①改变了主存与CPU的固定联系,主存既可被CPU访问,又可被外设访问;
②在数据块传送时,主存地址的确定、传送数据的计数等都由硬件电路直接实现;
③主存中要开辟专用缓冲区,及时供给和接收外设的数据;
④CPU和外设并行工作,提高了系统的效率;
⑤DMA在传送开始前要通过程序进行预处理,结束后要通过中断方式进行后处理。
使用场所
DMA的适用场合有下述几种:
①硬盘和软盘I/O。可以使用DMAC作磁盘存储介质与半导体主存储器之间传送
数据的接口。这种场合需要将
磁盘中的大量数据如
操作系统等快速地装入
内部存储器。
②快速通信通道I/O。例如,光导纤维通信链路,DMAC可以用来作为计算机系统和快速通信通道之间的接口,例如,作为同步通信数据的发送和接收,以便提高响应时间,支持较高的数据传输速率,并使CPU脱离出来做其他工作。
③多处理机和多程序数据块传送。对于多处理机结构,通过DMAC控制数据传送,可以较容易地实现专用存储器和公用存储器之间的数据传送,对多任务应用、页式调度和任务调度都需要传送大量的数据。因此,采用
DMA方式可以提高数据传输速度。
④扫描操作。在图像处理中,对CRT屏幕送数据,也可以采用DMA方式。
⑤快速数据采集。当要采集的数据量很大,而且数据是以密集突发的形式出现时,例如对波形的采集,此时采用DMA方式可能是最好的方法,它能满足响应时间和
数据传输率的要求。
⑥在PC/XT机中还采用DMA方式进行DRAM的刷新操作。