3.3 直接存储器存取(DMA)方式和DMA控制器
知识点:
 1、 在对DMA控制器在编程和控制数据传送的情况下,分别为总线的从属设备和总线主设备。
 2、 外设请求DMA传送以后,DMA控制器请求总线到控制数据传送信号交互的过程。
 3、 8237A的结构、工作过程、传送方式、编程以及和CPU的连接方法。
课程主体:
  本节讨论另外一种数据输入输出的控制方式,称为直接存储器存取(direct memory access, DMA)方式。DMA方式提供了比中断方式效率更高的I/O数据传送的控制方法。
3.3.1 基本概念
  1、中断控制方式的不足
  中断技术可以使微处理器随时响应外设的服务请求,中止当前的程序,转向服务于外设的中断处理。中断响应时间往往是衡量实时系统性能的一个重要指标。从中断源发出请求信号开始,到进行中断处理,需要多长时间的延迟?微处理器是在每条指令的最后一拍采样中断请求信号的。进入中断应答周期,微处理器要进行保存标志寄存器内容、保存断点地址、读取中断矢量(类型)、读取中断入口地址等一系列的操作。以8086为例,大约需要花费60个时钟周期。假设中断处理程序的功能是从某端口读入1字节数据,并将其存入存储器,包含指令如下:
  IN: PUSH AX
  IN AL,port
  MOV [DI],AL
  INC DI
  POP AX
  IRET
  这样一个最简单的中断处理也需要68个时钟周期。其中现场的保护和恢复、地址增量、计数器减量以及数据从端口到累加器再从累加器到存储器的传送都是由执行程序完成的。另外,由中断产生的程序转移必然引起CPU指令队列的刷新,也会产生时间的延误。如果不考虑请求到应答延迟和指令队列刷新的时间,只是用中断方式传送一个字节就要花费大约130个时钟周期。
  因此,在某些场合,直接存储器存取的控制方法体现了在数据传输速率比中断方法上具有更大的优势。DMA方式下,由DMA控制器替代处理器控制系统总线,不须通过类加器,控制存储器数据的直接存取并和外设进行交互,同时由硬件完成计数器减量和地址增量的过程。DMA方式下,数据在存储器与I/O设备之间或存储器与存储器之间的传输速率仅仅受到存储器件或DMA控制器的速度限制。采用高速RAM存储器件,DMA传输速度可以达到每秒40MB。
  DMA常用于DRMA刷新、视频显示屏幕刷新以及磁盘存储系统的读和写。DMA还用于控制高速存储器之间的数据传送。