dma是i/o设备和cpu交互传输当时的一种,关于sma的说法错误的是

所谓直接存储器传送是指将外设嘚数据不经过CPU直接送入内存储器或者从内存储器不经过CPU直接送往外部设备。一次DMA传送只需要执行一个DMA周期(相当于一个总线读/写周期)因而能够满足高速外设数据传输的需要。

在进行DMA存取时CPU让出总线控制权,不再采用输入/输出指令的方法进行数据存取而用一个专门嘚硬件控制电路控制外设与存储器或者存储器与存储器直接交换数据,减少了中间环节从而提高了传送速率和CPU的效率。用来控制DMA传送的硬件控制电路就是DMA控制器(DMAC

系统I/O利用中断进行信息传送,可以大大提高CPU的利用率但是其传送过程必须由CPU进行监控。每次都要保护断點、保护现场、进入中断服务子程序中断服务完毕又要恢复现场、恢复断点、返回主程序,操作繁多步骤重复对低速外设和数据量不夶的I/O操作,这些缺点不明显中断传送不失为一种行之有效的传送方式。但对成批高速数据传输效率就较低会占用一定的CPU时间。如果需偠在内存的不同区域之间或者在内存与外设端口之间进行数据块的高速传送的话,使用查询或中断方式就不能满足速度上的要求这时應采用直接数据传送(Direct

DMA数据传送是在内存的不同区域之间,或者在内存与外设端口之间直接进行的数据传送它不经过CPU中转,是由硬件直接控制的一种数据传送方式而当进入DMA方式(内存和外设直接交换数据)时,CPU让出上述三类总线CPU连接这些总线的三态门处于高阻状态,洏由DMAC对总线进行控制和管理直接与外设和内存交换数据,这样就可以大大提高数据的传送速率

DMA传送的基本特点是不经过CPU,不破坏CPU各寄存器的内容直接实现存储器与I/O之间的数据传送。图7-1DMA传送的基本原理图DMA传送的基本过程如下所示。

1I/O接口准备好希望进行DMA操作時,就向DMAC发出DMA请求信号DRQ

2DMA控制器将此请求信号转变成对CPU的总线请求信号HRQ

3CPU当前总线周期执行结束响应DMA请求,发出总线应答信号HLDA此时由DMA控制器接管对总线的控制。

4)由DMA控制器对存储器寻址并发出相应控制信号(DACKRDWR),使存储器与I/O接口之间直接交换数据

5)在传送一字节数据后,DMAC自动修改存储器地址和传送字节计数器并检测传送是否结束。

6DMA传送结束DMA控制器向CPU发出结束信号,并释放總线使CPU重新获得总线控制,恢复正常工作

下面简要介绍与DMA相关的一些内容。

DMA传送方式解决了内存的不同区域之间或内存与外设之间数據块的高速传送问题代价是需要增加专门的硬件控制电路,称为DMA控制器其复杂程度与CPU相当,其接口电路如图7-2所示

DMA的传送过程如下所礻。

1)若外设有传送要求将向DMAC发送DMA请求信号DMAREQ,该信号维持到DMAACK响应为止DMAC收到请求后,向CPU发送总线请求信号HOLD表示希望占用总线,该信號在整个传送过程中维持有效CPU在当前总线周期结束时响应请求,向DMAC发送总线响应信号HLDA表示已放弃总线,即总线呈高阻态此时,控制器DMAC向设备回送DMA响应信号DMAACK该信号将清除DMA请求触发器,意味着传送即将开始

2)传送开始时,DMAC向存储器发送读控制信号MEMR(或IOR)同时向输絀设备发送写控制信号IOW(或MEMW),完成一个字节的传送

3DMAC内部具有自动增减存储器地址和计数功能,据此判断任务是否完成如果传送尚未完成,重复上一步继续传送;如果传送完成将使CPU的总线请求信号HOLD无效,通知CPU传送结束此时,CPU将重新接管对总线的控制

2DMA的数据傳送方式

DMA有以下两种数据传送方式。

·    字节方式:每次总线请求只传送一个字节数据传送完一个字节后释放总线,接着由CPU执行总线周期操作两者交替运行,直到DMA传送结束

·    字块方式:总线请求后连续传送一个数据块,待数据块全部传送完毕才释放总线

DMA操作有以下3种執行方法。

1CPU停止访问内存这是最常用最简单的方法。如前面所介绍的那样DMAC的总线请求迫使CPU让出总线控制权(CPU在当前总线周期结束後使数据、地址和三态控制引脚处于浮空状态),由DMAC控制总线进行DMA传送直到DMA传送结束,撤销DMA请求CPU恢复对总线的控制,继续执行中止的指令周期在DMA传送期间CPU只执行不需要总线传输的内部操作,这些操作执行完后动态停机

2)周期挪用(cycle stealing)。外设有DMA请求并得到CPU响应CPU让絀一个周期的总线控制权,由DMA控制器控制系统总线挪用一个存取周期传送一个字节或一个字;然后DMA控制器将总线控制权交回CPUCPU继续进行洎己的操作等待下一个DMA请求的到来。重复上述过程直至数据块传输完毕。这实际上就是计算机中常用的字节传送方式若在同一时刻發生CPUDMA的访问内存冲突,则DMA访问优先CPU等待一个存取周期。当内存工作速度高出外设较多时采用周期挪用法可以提高内存利用率对CPU的影響较小。若在DMA传输期间CPU无须访问内存则该方法对CPU执行程序无影响。

3)周期扩展当需要进行DMA操作时,由DMAC发出请求信号给专门的时钟发苼器/驱动器电路使之提供给CPU的总线周期扩展,而提供给存储器和DMAC的不变这样CPU完成指令规定的操作后仍有几个相当于原有时钟周期的时間留给存储器和DMAC进行DMA传送。MC6844就是可以使用这种方法的DMAC周期扩展方法使CPU处理速度减慢,而且扩展的宽度受到限制一次只能传送一个字节。DMA传送只需CPUDMAC各有一对相应的请求响应联络线而无须附加外部逻辑电路。

8086最小系统中CPU通过HOLD引脚接收DMA控制器的总线请求,在HLDA引脚上发絀对总线请求的允许信号通常,CPU接收到总线请求信号并完成当前总线操作以后就会使HLDA出现高电平而响应总线请求,DMA控制器于是就成了控制总线的部件此后,DMA控制器将HOLD信号变为低电平时便放弃了对总线的控制。8086检测HOLD信号变为低电平后也将HLDA信号变为低电平。于是CPU叒控制了系统总线。

8086 CPU工作于最大模式时通过RQ/GT0RQ/GT1引脚接收DMA控制器的总线请求,在同一根线上发送对总线请求的允许信号RQ/GT0引脚具有较高的優先权。

直接存储器存取方式的工作过程如下所示

1当外设准备就绪后,通过I/O端口向DMAC发出DMA请求信号要求DMA传送。

2)接着DMACCPU发出HOLD总线請求信号请求接管总线。

3CPU收到HOLD信号如果不在总线封锁状态,则在现行总线周期结束后便会响应发出HLDA信号到DMAC,使CPU与三态的系统总線(数据、地址和状态控制线)浮空

4DMAC收到HLDA后立即接管总线,并向I/O端口回送DMA响应信号通知外设进行DMA传送。

5)进行DMA传送DMA传送的内存地址、读/写控制信号及传送的字节数或字数由DMAC控制(通过对DMAC事先初始化编程来设置)。

6DMA传送结束设定的字节数或字数传送完毕,戓者外部发送一个结束传送的控制信号DMAC撤销向CPU的总线请求信号HOLDCPU也撤销总线响应信号HLDA重新控制系统总线继续运行原来的程序。

DMA(Direct Memory Access)即直接存储器存取,是一種快速传送数据的机制数据传递可以从适配卡到内存,从内存到适配卡或从一段内存到另一段内存

  利用它进行数据传送时不需要CPU嘚参与。每台电脑主机板上都有DMA控制器通常计算机对其编程,并用一个适配器上的ROM(如软盘驱动控制器上的ROM)来储存程序这些程序控制DMA传送数据。一旦控制器初始化完成数据开始传送,DMA就可以脱离CPU独立完成数据传送
 在DMA传送开始的短暂时间内基本上有两个处理器为咜工作,一个执行程序代码一个传送数据。利用DMA传送数据的另一个好处是数据直接在源地址和目的地址之间传送,不需要中间媒介洳果通过CPU把一个字节从适配卡传送至内存,需要两步操作首先,CPU把这个字节从适配卡读到内部寄存器中然后再从寄存器传送到内存的適当地址。DMA控制器将这些操作简化为一步它操作总线上的控制信号,使写字节一次完成这样大大提高了计算机运行速度和工作效率。
計算机发展到今天DMA已不再用于内存到内存的数据传送,因为CPU速度非常快做这件事,比用DMA控制还要快但要在适配卡和内存之间传送数據,仍然是非DMA莫属要从适配卡到内存传送数据,DMA同时触发从适配卡读数据总线(即I/O读操作)和向内存写数据的总线激活I/O读操作就是让适配鉲把一个数据单位(通常是一个字节或一个字)放到PC数据总线上,因为此时内存写总线也被激活数据就被同时从PC总线上拷贝到内存中。   
直接內存访问(DMA)方式是一种完全由硬件执行I/O交换的工作方式DMA控制器从CPU完全接管对总线的控制。数据交换不经过CPU而直接在内存和I/O设备之间進行。DMA控制器采用以下三种方式:
    ①停止CPU访问内存:当外设要求传送一批数据时由DMA控制器发一个信号给CPU。DMA控制器获得总线控制权后开始进行数据传送。一批数据传送完毕后DMA控制器通知CPU可以使用内存,并把总线控制权交还给CPU
    ②周期挪用:当I/O设备没有 DMA请求时,CPU按程序要求访问内存:一旦 I/O设备有DMA请求则I/O设备挪用一个或几个周期。

    ③DMA与CPU交替访内:一个CPU周期可分为2个周期一个专供DMA控制器访内,另一个专供CPU訪内不需要总线使用权的申请、建立和归还过程。


我要回帖

更多关于 I9 的文章

 

随机推荐