了解DMA技术

Author: 园园 Date: 1997-01-01

#1  从微机的输入输出方式谈起
  CPU与外部设备之间交换信息称为数据的输入输出,这是计算机最重要和最频繁的工作之一。特别是用于数据处理的系统,输入输出能力的大小、速度的高低是决定整个系统性能最重要的因素。在计算机的发展过程中,输入输出技术也有较大的发展和变化。其总的趋势是CPU越来越多地摆脱输入输出操作,极大地提高了整个计算机系统的效率。
  由于输入输出技术在很大程度上影响了计算机整个系统的性能。所以随着计算机的发展,输入输出技术也有很大的进步。最主要的输入输出方式可分为以下四种:
  ·程序控制输入输出
  ·中断控制输入输出
  ·存储器直接访问
  ·输入输出通道
  个人微机系统中主要采用前三种,最后一种要由专门的输入输出处理机来实现,一般只在大型服务器、大中型计算机中采用。
#1  什么是DMA
  DMA是Direct Memory Access的缩写。其意思是“存储器直接访问”。它是指一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,即不通过CPU,也不需要CPU干预。整个数据传输操作在一个称为“DMA控制器”的控制下进行的。CPU除了在数据传输开始和结束时作一点处理外,在传输过程中CPU可以进行其它的工作。这样,在大部分时间里,CPU和输入输出都处在并行操作。因此,使整个计算机系统的效率大大提高。
#1  为什么要采用DMA技术
  为了说明这个问题我们先来看一看程序控制输入输出方式的特点。在这种方式下进行输入输出操作,要由CPU本身执行一段输入输出程序,在这段程序中要检查输入输出设备的当前状态(忙/闲),向设备发送读/写命令,传送数据等。由于输入输出设备都是外部设备,它们的操作大多是一些机械动作(如磁盘、印机),所以其速度远远低 于CPU。CPU传送一个字节的数据后,外部设备却需要很长时间才能完成操作。这样,CPU必须在传送下一个字节之前,反复测试外部设备的状态,直到外部设备完成操作(由“忙”态转为“闲”态),才能传送下一个数据。因此CPU在大量时间处于检查和等待状态,整个计算机系统的效率十分低 下,在现在的微机系统中,程序控制输入输出方式已经不再使用。
  在中断控制输入输出方式(简称为中断方式)中,CPU在向输入输出设备发出读写一个数据字的命令之后就可以转入其它的工作,而由输入输出部件独立地控制输入输出操作,直到操作完成才向CPU发出中断请求。这时CPU才暂停当前的工作来响应中断,再次向输入输出设备发出读写命令。以后将重复上述过程,直到全部数据字传送完毕。在中断方式过程中去完成其它的工作,这就大大提高了CPU的工作效率。
  但是,中断方式仍然占用了CPU相当多的时间。这里因为输入输出设备每传送一个数据字都要向CPU发出一次中断请求,也就要中断一次CPU的当前工作。而且CPU在每次响应中断之后还要作保护现场操作(把当前各个寄存器中的内容送入内存保存起来),再输入中断处理程序,执行完毕中断处理程序之后,还要恢复现场(把刚才送入内存保存的内容再重新装入各个寄存器中),以便继续执行中断之前的工作。这样,在连续传送一个数据块的过程中,CPU要反复多次被中断,并且花费很多时间去处理中断,使得CPU的效率仍然不能很到很好地发挥。整个系统效率的提高仍然受到限制。所以,在传送的数据量大时,中断方式也不能满足要求。
#1  DMA控制器和DMA通道
  DMA控制器是实现DMA输入输出方式的具体执行部件。下面介绍在PC微机中使用较多的8237DMA控制器。早期的8237DMA控制器是单独一片IC芯片,现在都已经集成到其它的大规模IC芯片(如82C206等)中。一片8237只有四个独立的DMA通道,为了使用更多的DMA设备,可由两片或多片8237组成组联方式以提供更多的DMA通道。图为两片8237级联组成的DMA控制器。
  图中DRQ表示由DMA设备向DMA控制器发出的DMA请求信号;DACK为DMA控制器发出的响应信号,表示允许DMA操作;HRQ为保护请求信息号,请求系统总线控制;DMA1的HRQ信号送至MDA2的DRQ4端以构成级联方式。由于级联已经占用了一个通道,所以还剩下七个通道供DMA设备使用。各个DMA通道的分配如下表所示。
  由于每个DMA设备都要占用一个DMA通道,如果有两个或两个以上的设备占用了相同的DMA通道就要发生冲突,使得系统不能正常工作。所以,在安装新设备时,应选择那些还没有被占用的通道。DMA通道可以通过跳线或程序来设置。如果是即插即用的主板和适配卡,能够自动地选择合适的通道,你就不必人工去设置了。