组成原理(二十):输入输出系统之 DMA方式及其接口

1、DMA方式

  DMA方式为了主存与外设之间实现高速、批量数据交换而设置的。DMA方式的数据传送直接依靠硬件(DMA控制器)来实现,不需要执行任何程序。

  直接访问存储器访问(Direct Memory Access,DMA)方式是在外设和主存之间开辟一条"直接数据通道"。在DMA传送方式中,对数据传送过程进行控制的硬件称为DMA控制器。

  当外设需要进行数据传送时,通过DMA控制器向CPU提出DMA传送请求,CPU响应之后将让出系统总线,由DMA控制器接管总线进行数据传送。

2、DMA与中断的区别

  中断的方式是切换程序,需要保护和恢复现场;而DMA方式除了开始和结尾时,不占用CPU的任何资源。

  对中断请求的响应时间只能发生在每条指令执行完毕时;对DMA请求的响应时间可以发生在每个机器周期结束时。

  中断传送过程需要CPU的干预;DMA传送过程不需要CPU的干预,所以数据传输效率非常高,适合于高速外设的成组数据传送。

  DMA请求的优先级高于中断请求。

  中断方式具有对异常事件的处理能力,而DMA方式仅局限于完成传送数据块的I/O操作。

3、DMA接口

  DMA方式的接口电路称为DMA控制器。

3.1、DMA控制器的功能

  在DMA传送过程中,DMA控制器将接管CPU的地址总线、数据总线和控制总线,CPU的主存控制信号被禁止使用。

  DMA控制器在外设和主存之间直接传送数据期间,完全代替CPU进行工作。

主要功能有:

  1、接受外设发出的DMA请求,并向CPU发出总线请求;

  2、当CPU响应此总线请求,发出总线响应信号后,接管对总线的控制,进入DMA操作周期;

  3、确定传送数据的主存单元地址及传送长度,并能自动秀爱主存地址计数值和传送长度计数值;

  4、规定数据在主存和外设之间的传送方向,发出读写或其他控制信号,并执行数据传送的操作;

  5、向CPU报告DMA操作的结束。

3.2、DMA控制器的基本组成

  0

3.2.1、主存地址计数器

  主存地址计数器用来存放待交换数据的主存地址。该计数器的初始值为主存缓冲区的首地址,当DMA传送时,每传送一个数据,将地址计数器加1,从而以增量方式给出主存中要交换的一批数据的地址,直至这批数据传送完毕为止。

3.2.2、传送长度计数器

  传送长度计数器用来记录传送数据块的长度。初始值为传送数据的总字数或总字节数,每传送一个字或一个字节,计数器自动减1,当其内容为0时,表示数据已全部传送完毕。

3.2.3、数据缓冲寄存器

  数据缓冲寄存拿起用来暂存每次传送的数据。输入时,数据由外设先送往数据缓冲寄存器,再通过数据总线送到主存。反之,输出时,数据由主存通过数据总线送到数据缓冲寄存器,然后再送到外设。

3.2.4、DMA请求触发器

  每当外设准备好数据后给出一个控制信号,使DMA请求触发器置位。

3.2.5、中断机构

  当一个数据块传送完毕后触发中断机构,向CPU提出中断请求,CPU将进行DMA传送的结尾处理。

4、DMA传送方法

  DMA控制器与CPU常采用3种方式使用主存。

4.1、CPU停止访问主存法

  用DMA请求信号,使CPU让出总线控制权。CPU在现行机器周期执行完成后,使数据、地址总线处于三态,并输出总线批准信号。

  0

  每次DMA请求获得批准,DMA控制器获得总线控制权后,连续占用若干个存取周期进行成组连续的数据传送,直至批量传送结束,DMA控制器才把总线控制权交回CPU。在DMA操作期间,CPU处于保持状态,停止访问主存,仅能进行一些与总线无关的内部操作。

4.2、存储器分时法

  0

  把原来的一个存取周期分成两个时间片,一片分为CPU,一片分给DMA,使CPU和DMA交替的访问主存。

4.3、周期挪用法

  0

  前两种方法的折中,当外设没有DMA请求时,CPU按程序要求访问主存;一旦外设有DMA请求并获得CPU批准后,CPU让出一个周期的总线控制权,有DMA控制器控制系统总线,挪用一个存取周期进行一次数据传送,传送一个字节或一个字。然后DMA控制器将总线控制权交回CPU,CPU继续进行自己的操作,等待下一个DMA请求的到来。

5、DMA的传送过程

  DMA传送过程分为3个阶段:DMA传送前的预处理,数据传送和传送后的结束处理。

  0

5.1、DMA预处理

  在DMA传送之前,必须做好准备工作,即初始化。由CPU完成,CPU首先执行几条I/O指令,用于测试外设的状态。

5.2、数据传送

  DMA的数据传送可以以单字节(或字)为基本单位,也可以以数据块为基本单位。对于以数据块为单位的传送,DMA控制器占用总线后的数据输入和输出操作都是通过循环来实现的。

5.3、DMA后处理

  当传送长度技术器到0时,DMA操作结束,DMA控制器向CPU发出中断请求,CPU停止原来程序的执行,转去执行中断服务程序做DMA结束处理工作。

 

posted @ 2023-09-11 15:56  无虑的小猪  阅读(901)  评论(0编辑  收藏  举报