DMA的英文拼写是“Direct Memory Access”,汉语的意思就是直接内存访问,是一种不经过CPU而直接从内存了存取数据的数据交换模式。PIO模式下硬盘和内存之间的数据传输是由CPU来控制的;而在DMA模式下,CPU只须向DMA控制器下达指令,让DMA控制器来处理数的传送,数据传送完毕再把信息反馈给CPU,这样就很大程度上减轻了CPU资源占有率。DMA模式与PIO模式的区别就在于,DMA模式不过分依赖CPU,可以大大节省系统资源,二者在传输速度上的差异并不十分明显。DMA模式又可以分为Single-Word DMA(单字节DMA)和Multi-Word DMA(多字节DMA)两种,其中所能达到的最大传输速率也只有16.6MB/s。
DMA 传送方式的优先级高于程序中断,两者的区别主要表现在对CPU的干扰程度不同。中断请求不但使CPU停下来,而且要CPU执行中断服务程序为中断请求服务,这个请求包括了对断点和现场的处理以及CPU与外设的传送,所以CPU付出了很多的代价;DMA请求仅仅使CPU暂停一下,不需要对断点和现场的处理,并且是由DMA控制外设与主存之间的数据传送,无需CPU的干预,DMA只是借用了一点CPU的时间而已。还有一个区别就是,CPU对这两个请求的响应时间不同,对中断请求一般都在执行完一条指令的时钟周期末尾响应,而对DMA的请求,由于考虑它得高效性,CPU在每条指令执行的各个阶段之中都可以让给DMA使用,是立即响应。
DMA主要由硬件来实现,此时高速外设和内存之间进行数据交换不通过CPU的控制,而是利用系统总线。DMA方式是I/O系统与主机交换数据的主要方式之一,另外还有程序查询方式和中断方式。
设备间直接传送数据,是一种完全由硬件完成I/O操作的方式。
3、 DMA控制器8237
1) DMA控制原理(工作过程)
(1) 外设向DMA控制器发出DMA请求;
(2) DMA控制器向CPU发出总线请求信号;
(3) CPU执行完现行的总线周期后,向DMA控制器发出响应请求的回答信号
(4) CPU将控制总线,地址总线及数据总线让出,由DMA控制器进行控制;
(5) DMA控制器向外部设备发出DMA请求回答信号;
(6) 进行DMA传送;
(7) 数据传送完毕,CPU重新控制总线。
2) 可编程DMA控制器8237A
1) 8237A内部的基本结构
DMAC8237A主要由命令寄存器、状态寄存器、读/写逻辑、控制逻辑和4个结构完全相同的DMA通道组成。
2)命令寄存器和状态寄存器,都是8问,四通道共用。
3)当8237A在系统总线中处于从属状态时,读写逻辑用来接收由CPU输入的读写控制信号和端口地址等信息;当8237A处于主控状态时,则通过它发出读写控制信号和地址信息
4) 控制逻辑主要用来向CPU发出总线请求(HRQ),得到CPU认可(HLDA)进入主控状态后,由它发出各种控制信号。
5) 四个通道的结构完全一样,通道内基本地址寄存器和当前地址寄存器合用一个端口,基本字节计数器合当前字节计数器合用一个端口地址,当CPU写入操作时,上述两组寄存器可同时得到相应的数值,但基本地址寄存器合基本字节计数器是不能被读出的。由于他们均为16位寄存器,因此高低字节的读写由先后触发器的状态决定。通道中的方式寄存器由编程写入,由方式控制字最低两位(D1、D2)状态决定所选通道。
(2) 8237A的四种数据传送方式;
字节传送方式:每申请一次总线请求仅传送一个字节
l) 块传送方式:8237A由DREQ启动后连续传送数据(内部进行地址修改及字节技术),直至全部数据传送结束或由EOP终止DMA。
2)请求传送方式:连续传送过程中有以下情况之一即终止传送:a)字节计数器为零;b)外界EOP信号产生;c)外设数据已传送完。
3) 级连方式:多片8237A组成主从式DMA时使用
(3) 8237A的编程控制字
8237A所有工作均可通过编程完成,它共有6中控制和状态字,包括命令字、方式字、请求字、屏蔽字、综合屏蔽字和状态字。
阅读(1711) | 评论(0) | 转发(0) |