DMA基础学习一

基本的DMA控制器

1.DMA控制器的基本组成

一个DMA控制器,实际上是采用DMA方式的外围设备与系统总线之间的接口电路,这个接口电路是在中断接口的基础上再加DMA机构组成.习惯上将DMA方式的接口电路称为DMA控制器。下页图示出了一个最简单的DMA控制器组成示意图。

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

(1)内存地址计数器 用于存放内存中要交换的数据的地址。在DMA传送前,须通过程序将数据在内存中的起始位置(首地址)送到内存地址计数器。而当DMA传送时,每交换一次数据,将地址计数器加“1”,从而以增量方式给出内存中要交换的一批数据的地址。 

(2)字计数器 用于记录传送数据块的长度(多少字数)。其内容也是在数据传送之前由程序预置,交换的字数通常以补码形式表示。在DMA传送时,每传送一个字,字计数器就加“1” ,当计数器溢出即最高位产生进位时,表示这批数据传送完毕,于是引起DMA控制器向CPU发中断信号。 

(3)数据缓冲寄存器 用于暂存每次传送的数据(一个字)。当输入时,由设备(如磁盘)送往数据缓冲寄存器,再由缓冲寄存器通过数据总线送到内存。反之,输出时,由内存通过数据总线送到数据缓冲寄存器,然后再送到设备。 

(4)“DMA请求”标志 每当设备准备好一个数据字后给出一个控制信号,使“DMA请求” 标志置“1”。该标志置位后向“控制/状态”逻辑发出DMA请求,后者又向CPU发出总线使用权的请求(HOLD),CPU响应此请求后发回响应信号HLDA,“控制/状态”逻辑接收此信号后发出DMA响应信号,使“DMA请求”标志复位,为交换下一个字做好准备。 

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

(6)中断机构 当字计数器溢出时(全0),意味着一组数据交换完毕,由溢出信号触发中断机构,向CPU提出中断报告。这里的中断与上一节介绍的I/O中断所采用的技术相同,但中断的目的不同,前面是为了数据的输入或输出,而这里是为了报告一组数据传送结束。因此它们是I/O系统中不同的中断事件。

2.DMA数据传送过程 

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

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

  正式传送 当外设准备好发送数据(输入)或接受数据(输出)时,它发出DMA请求,由DMA控制器向CPU发出总线使用权的请求(HOLD)。下页图示出了停止CPU访内方式的DMA传送数据的流程图。

    当外围设备发出DMA请求时,CPU在本机器周期执行结束后响应该请求,并使CPU的总线驱动器处于第二态(高阻状态).之后,CPU与系统总线相脱离,而DMA控制器接管数据总线与地址总线的控制,并向内存提供地址.

   于是,在内存和外围设备之间进行数据交换.每交换一个字,则地址计数器和字计数器加“l”,当计数值到达零时,DMA操作结束,DMA控制器向CPU提出中断报告 。

• DMA的数据传送是以数据块为基本单位进行的,因此,每次DMA控制器占用总线后,无论是数据输入操作,还是输出操作,都是通过循环来实现的。当进行输入操作时,外围设备的数据(一次一个字或一个字节)传向内存;当进行输出操作时,内存的数据传向外围设备。 

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

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

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

四、选择型和多路型DMA控制器

   前面介绍的是最简单的DMA控制器,一个控制器只控制一个I/O设备.实际中经常采用的是选择型DMA控制器和多路型DMA控制器,它们已经被做成集成电路片子.

1.选择型DMA控制器

    下页图是选择型DMA控制器的逻辑框图,它在物理上可以连接多个设备,而在逻辑上只允许接—个设备.换句话说,在某一段时间内只能为一个设备服务.

    选择型DMA控制器工作原理与前面的简单DMA控制器基本相同.除了前面讲到的基本逻辑部件外,还有一个设备号寄存器.数据传送是以数据块为单位进行的,在每个数据块传送之前的预置阶段,除了用程序中I/O指令给出数据块的传送个数、起始地址、操作命令外,还要给出所选择的设备号.从预置开始,一直到这个数据块传送结束,DMA控制器只为所选设备服务.下—次预置再根据I/O指令指出的设备号,为另—选择的设备服务.

   显然,选择型DMA控制器相当于一个逻辑开关,根据I/O指令来控制此开关与某个设备连接.

   选择型DMA控制器只增加少量硬件达到了为多个外围设备服务的目的,它特别适合数据传输串很高以至接近内存存取速度的设备.在很快地传送完一个数据块后,控制器又可为其他设备服务.

2.多路型DMA控制器

    选择型DMA控制器不适用于慢速设备.但是多路型DMA控制器却适合于同时为多个慢速外围设备服务.

    下页图(a)是链式多路型DMA控制器,而(b)是独立请求方式多路型 DMA控制器.

    多路型DMA不仅在物理上可以连接多个外围设备,而且在逻辑上也允许这些外围设备同时一工作,各设备以字节交叉方式通过DMA控制器进行数据传送.

   

     

  【例3】下图中假设有磁盘、磁带、打印机三个设备同时工作。磁盘以30μs的间隔向控制器发DMA请求,磁带以45μs的间隔发DMA请求,打印机以150μs间隔发DMA请求。根据传输速率,磁盘优先权最高,磁带次之,打印机最低,图中假设DMA控制器每完成一次DMA传送所需的时间是5μs。若采用多路型DMA控制器,请画出DMA控制器服务三个设备的工作时间图。

    

    由图看出,T1间隔中控制器首先为打印机服务,因为此时只有打印机有请求。T2间隔前沿磁盘、磁带同时有请求,首先为优先权高的磁盘服务,然后为磁带服务,每次服务传送一个字节。在90μs时间阶段中,为打印机服务只有一次(T1),为磁盘服务四次(T2,T4,T6,T7),为磁带服务三次(T3,T5,T8)。从图上看到,在这种情况下DMA尚有空闲时间,说明控制器还可以容纳更多设备。

    由于多路型DMA同时要为多个设备服务,因此对应多少个DMA通路(设备),在控制器内部就有多少组寄存器用于存放各自的传送参数。

    右图是多路型DMA控制器的逻辑结构,通过配合使用I/O通用接口片子,它可以对8个独立的DMA通路(CH)进行控制,使外围设备以周期挪用方式对内存进行存取.

    8条独立的DMA请求线或响应线能在外围设备与DMA控制器之间进行双向通信。一条线上进行双向通信是通过分时和脉冲编码技术实现的。也可以分别设立DMA请求线和响应线实现双向通信。每条DMA线在优先权结构中具有固定位置,一般DMA0线具有最高优先权,DMA7线具有最低优先权。

     

     控制器中有8个8位的控制传送长度的寄存器,8个16位的地址寄存器。每个长度寄存器和地 址寄存器对应一个设备。每个寄存器都可以用程序中的I/O指令从CPU送入控制数据。每一寄 存器组各有一个计数器,用于修改内存地址和传送长度。 

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

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

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

(3)DMA控制器接到CPU的响应信号后,进行以下工作:

    ①对现有DMA请求中优先权最高的请求 给予DMA响应;

    ②选择相应的地址寄存器的内容驱动地址总线;

    ③根据所选设备操作寄存器 的内容,向总线发读、写信号;

    ④外围设备向数据总线传送数据,或从数据总线接收数据;

    ⑤每个字节传送完毕后,DMA控制器使相应的地址寄存器和长度寄存器加“1”或减“1”。 

     以上是一个DMA请求的过程,在一批数据传送过程中,要多次重复上述过程,直到外围设备表示一个数据块已传送完毕,或该设备的长度控制器判定传送长度已满。 

【例4】教材图8.18所示为微型机中软盘控制器的系统接口电路,请进行分析说明。

【解】

     CPU和软盘控制器之间的接口电路包括DMA控制和总线控制两部分。8257DMA控制器提供4个独立的DMA通路(CH0,CH1,CH2,CH3)。每个通路各有2个16位寄存器(DMA地址寄存器、字节计数寄存器),它们必须在通路使用前加以预置。DMA地址寄存器存放被寻址的主存首地址,字节计数寄存器存放本次DMA传送的字节数。此外还包含工作方式(读、写、校验 )和状态寄存器。

   DMA传输前,CPU对8257进行初始化,将数据在主存中的起始地址、数据字节个数、工作方式等参数送入8257相应的寄存器中。然后才允许软盘控制器向8257发出DMA传输请求信号DRQ。8257接收到DRQ信号后,立即发HRQ信号给总数控制线路,请求总线控制权。CPU在识别到HRQ信号,完成当前总线周期后,发出HLDA响应信号,并放弃总线控制权。此时8257向软盘控制器发出DACK回答信号,通知软盘控制器开始DMA传输,并发出读/写控制信号(MEMR/MEMW、IOR/IOW),以便软盘控制器从主存被寻址的单元读取一个字节或写入一个字节。 只要软盘控制器保持对DMA的请求,8257将保持对总线的控制,并顺序地重复传送,直到被指定的数据块传送完毕,此时8257给出终止信号(TC),通知软盘控制器,取消DMA请求,并使HRQ为无效,放弃总线控制权。    

你可能感兴趣的:(驱动)