DMA的控制方式

来源:互联网 发布:seo网站排名优化工具 编辑:程序博客网 时间:2024/04/29 18:31

转自:http://www.worlduc.com/blog.aspx?bid=3791093


DMA的控制方式


DMA方式的基本概念  

直接内存访问(DMA)是一种完全由硬件执行I/O交换的工作方式。在这种方式中,DMA控制器从CPU完全接管对总线的控制,数据交换不经过CPU,而直接在内存和I/O设 

                                       备之间进行 。

DMA方式的主要优点是速度快。由于CPU根本不参加传送操作,因此就省去了CPU取指令、取数、送数等操作。

多种DMA至少能执行以下一些基本操作:

         (1)从外围设备发出DMA请求;

         (2)CPU响应请求,把CPU工作改成DMA操作方式,DMA控制器从CPU接管总线的控制;

         (3)由DMA控制器对内存寻址,即决定数据传送的内存单元地址及数据传送个数的计数,并执行数据传送的操作;

         (4)向CPU报告DMA操作的结束。

                      2.  DMA传送方式         

  DMA技术的出现,使得外围设备可以通过DMA控制器直接访问内存,与此同时,CPU可以继续执行程序。DMA控制器与CPU分时使用内存通常采用以下三种方法:

(1).停止CPU访问内存

当外围设备要求传送一批数据时,由DMA控制器发一个停止信号给CPU,要求CPU放弃对地址总线、数据总线和有关控制总线的使用权。DMA控制器获得总线控制权以后,开始进行数据传送。在一批数据传送完毕后,DMA控制器通知CPU可以使用内存,并把总线控制权交还给CPU。在这种DMA传送过程中,CPU基本处于不工作状态或者说保持状态。

(2).周期挪用

当I/O设备没有DMA请求时,CPU按程序要求访问内存;一旦I/O设备有DMA请求,则由I/O设备挪用一个或几个内存周期。

I/O设备要求DMA传送时可能遇到两种情况

u      此时CPU不需要访内,如CPU正在执行乘法指令。由于乘法指令执行时间较长,此时I/O访内与CPU访内没有冲突,即I/O设备挪用一二个内存周期对CPU执行程序没有任何影响。

u      I/O设备要求访内时CPU也要求访内,这就产生了访内冲突,在这种情况下I/O设备访内优先,因为I/O访内有时间要求,前一个I/O数据必须在下一个访内请求到来之前存取完毕。显然,在这种情况下I/O 设备挪用一二个内存周期,意味着CPU延缓了对指令的执行,或者更明确地说,在CPU执行访内指令的过程中插入DMA请求,挪用了一二个内存周期。

(3).DMA与CPU交替访内

如果CPU的工作周期比内存存取周期长很多,此时采用交替访内的方法可以使DMA传送和CPU同时发挥最高的效率。 

3.  基本的DMA控制器      

(1).DMA控制器的基本组成

一个DMA控制器,实际上是采用DMA方式的外围设备与系统总线之间的接口电路。这个接口电路是在中断接口的基础上再加DMA机构组成

一个最简单的DMA控制器由以下逻辑部件组成:

u      内存地址计数器 用于存放内存中要交换的数据的地址。

u      字计数器 用于记录传送数据块的长度(多少字数)。

u      数据缓冲寄存器 用于暂存每次传送的数据(一个字)。

u      “DMA请求”标志 每当设备准备好一个数据字后给出一个控制信号,使“DMA请求” 标志置“1”。

u       “控制/状态”逻辑 由控制和时序电路以及状态标志等组成,用于修改内存地址计数器和字计数器,指定传送类型(输入或输出),并对“DMA请求”信号和CPU响应信号进行协调和同步。

u      中断机构 当字计数器溢出时(全0),意味着一组数据交换完毕,由溢出信号触发中断机构,向CPU提出中断报告。

(2).DMA数据传送过程

DMA的数据块传送过程可分为三个阶段:传送前预处理;正式传送;传送后处理。

u      预处理 由CPU执行几条输入输出指令,测试设备状态,向DMA控制器的设备地址寄存器中送入设备号并启动设备,向内存地址计数器中送入起始地址,向字计数器中送入交换的数据字个数。在这些工作完成后,CPU继续执行原来的主程序。

u      正式传送 当外设准备好发送数据(输入)或接受数据(输出)时,它发出DMA请求,由DMA控制器向CPU发出总线使用权的请求(HOLD)。

u      后处理 一旦DMA的中断请求得到响应,CPU停止主程序的执行,转去执行中断服务程序做一些DMA的结束处理工作。这些工作包括校验送入内存的数据是否正确;决定继续用DMA方式传送下去,还是结束传送;测试在传送过程中是否发生了错误等等。

基本DMA控制器与系统的连接方式:

(1)公用的DMA请求方式;(2)独立的DMA请求方式,这与中断方式类似。              

4.  DMA工作过程    

当某个外围设备请求DMA服务时,传送作过程如下:

u      DMA控制器接到设备发出的DMA请求时,将请求转送到CPU。

u      CPU在适当的时刻响应DMA请求。若CPU不需要占用总线则继续执行指令;若CPU需要占用 总线,则CPU进入等待状态。

u      DMA控制器接到CPU的响应信号后,进行以下工作:①对现有DMA请求中优先权最高的请求 给予DMA响应;②选择相应的地址寄存器的内容驱动地址总线;③根据所选设备操作寄存器 的内容,向总线发读、写信号;④外围设备向数据总线传送数据,或从数据总线接收数据; ⑤每个字节传送完毕后,DMA控制器使相应的地址寄存器和长度寄存器加“1”或减“1”。

u      正式传送 当外设准备好发送数据(输入)或接受数据(输出)时,它发出DMA请求,由DMA控制器向CPU发出总线使用权的请求(HOLD)。

u      后处理 一旦DMA的中断请求得到响应,CPU停止主程序的执行,转去执行中断服务程序做一些DMA的结束处理工作。这些工作包括校验送入内存的数据是否正确;决定继续用DMA方式传送下去,还是结束传送;测试在传送过程中是否发生了错误等等。

基本DMA控制器与系统的连接方式:

(1)公用的DMA请求方式;(2)独立的DMA请求方式,这与中断方式类似。              

4.  DMA工作过程    

当某个外围设备请求DMA服务时,传送作过程如下:

u      DMA控制器接到设备发出的DMA请求时,将请求转送到CPU。

u      CPU在适当的时刻响应DMA请求。若CPU不需要占用总线则继续执行指令;若CPU需要占用 总线,则CPU进入等待状态。

u      DMA控制器接到CPU的响应信号后,进行以下工作:①对现有DMA请求中优先权最高的请求 给予DMA响应;②选择相应的地址寄存器的内容驱动地址总线;③根据所选设备操作寄存器 的内容,向总线发读、写信号;④外围设备向数据总线传送数据,或从数据总线接收数据; ⑤每个字节传送完毕后,DMA控制器使相应的地址寄存器和长度寄存器加“1”或减“1”。

原创粉丝点击