【计算机】DMA原理1

DMA原理:DMA(Direct Memory Access,直接内存存取) 是全部现代电脑的重要特点,它容许不一样速度的硬件装置来沟通,而不须要依于 CPU 的大量中断负载。不然,CPU 须要历来源把每一片断的资料复制到暂存器,而后把它们再次写回到新的地方。在这个时间中,CPU 对于其余的工做来讲就没法使用。

DMA 传输将数据从一个地址空间复制到另一个地址空间。当CPU 初始化这个传输动做,传输动做自己是由 DMA 控制器来实行和完成。典型的例子就是移动一个外部内存的区块到芯片内部更快的内存区。像是这样的操做并无让处理器工做拖延,反而能够被从新排程去处理其余的工做。DMA 传输对于高效能 嵌入式系统算法和网络是很重要的。
在实现DMA传输时,是由DMA控制器直接掌管总线,所以,存在着一个总线控制权转移问题。即DMA传输前,CPU要把总线控制权交给DMA控制器,而在结束DMA传输后,DMA控制器应当即把总线控制权再交回给CPU。



<1>、 一个完整的DMA传输过程必须通过下面的4个步骤 :

一、DMA请求CPU对DMA控制器初始化,并向I/O接口发出操做命令,I/O接口提出DMA请求。
二、DMA响应DMA控制器对DMA请求判别优先级及屏蔽,向总线裁决逻辑提出总线请求。当CPU执行完当前总线周期便可释放总线控制权。此时,总线裁决逻辑输出总线应答,表示DMA已经响应,经过DMA控制器通知I/O接口开始DMA传输。
三、DMA传输DMA控制器得到总线控制权后,CPU即刻挂起或只执行内部操做,由DMA控制器输出读写命令,直接控制RAM与I/O接口进行DMA传输。
在DMA控制器的控制下,在存储器和外部设备之间直接进行数据传送,在传送过程当中不须要中央处理器的参与。开始时需提供要传送的数据的起始位置和数据长度。
四、DMA结束当完成规定的成批数据传送后,DMA控制器即释放总线控制权,并向I/O接口发出结束信号。当I/O接口收到结束信号后,一方面停 止I/O设备的工做,另外一方面向CPU提出中断请求,使CPU从不介入的状态解脱,并执行一段检查本次DMA传输操做正确性的代码。最后,带着本次操做结果及状态继续执行原来的程序。

因而可知,DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,经过硬件为RAM与I/O设备开辟一条直接传送数据的通路,使CPU的效率大为提升。

<2>、DMA传送方式
DMA技术的出现,使得外围设备能够经过DMA控制器直接访问内存,与此同时,CPU能够继续执行程序.那么DMA控制器与CPU怎样分时使用内存呢?一般采用如下三种方法:(1)中止CPU访内存;(2)周期挪用;(3)DMA与CPU交替访内存.

1.中止CPU访问内存
当外围设备要求传送一批数据时,由DMA控制器发一个中止信号给CPU,要求CPU放弃对地址总线、数据总线和有关控制总线的使用权.DMA控制器得到总线控制权之后,开始进行数据传送.在一批数据传送完毕后,DMA控制器通知CPU可使用内存,并把总线控制权交还给CPU.图(a)是这种传送方式的时间图.很显然,在这种DMA传送过程当中,CPU基本处于不工做状态或者说保持状态.



优势: 控制简单,它适用于数据传输率很高的设备进行成组传送。
缺点: 在DMA控制器访内阶段,内存的效能没有充分发挥,至关一部份内存工做周期是空闲的。这是由于,外围设备传送两个数据之间的间隔通常老是大于内存存储周期,即便高速I/O设备也是
如此。例如,软盘读出一个8位二进制数大约须要32us,而半导体内存的存储周期小于0.5us,因
此许多空闲的存储周期不能被CPU利用.



2.周期挪用

当I/O设备没有DMA请求时,CPU按程序要求访问内存;一旦I/O设备有DMA请求,则由I/O设备挪用一个或几个内存周期。
这种传送方式的时间图以下图(b):


?
I/O设备要求DMA传送时可能遇到两种状况:
(1)此时CPU不须要访内,如CPU正在执行乘法指令。因为乘法指令执行时间较长,此时I/O访内与CPU访内没有冲突,即I/O设备挪用一二个内存周期对CPU执行程序没有任何影响。
(2)I/O设备要求访内时CPU也要求访内,这就产生了访内冲突,在这种状况下I/O设备访内优先,由于I/O访内有时间要求,前一个I/O数据必须在下一个访内请求到来以前存取完毕。显然,在这种状况下I/O 设备挪用一二个内存周期,意味着CPU延缓了对指令的执行,或者更明确地说,在CPU执行访内指令的过程当中插入DMA请求,挪用了一二个内存周期。 与中止CPU访内的DMA方法比较,周期挪用的方法既实现了I/O传送,又较好地发挥了内存和CPU的效率,是一种普遍采用的方法。可是I/O设备每一次周期挪用都有申请总线控制权、创建线控制权和归还总线控制权的过程,因此传送一个字对内存来讲要占用一个周期,但对DMA控制器来讲通常要2—5个内存周期(视逻辑线路的延迟而定)。所以,周期挪用的方法适用于I/O设备读写周期大于内存存储周期的状况


3.DMA与CPU交替访内
若是CPU的工做周期比内存存取周期长不少,此时采用交替访内的方法可使DMA传送和CPU同时发挥最高的效率。
这种传送方式的时间图以下:



此图是DMA与CPU交替访内的详细时间图.假设CPU工做周期为1.2us,内存存取周期小于0.6us,那么一个CPU周期可分为C1和C2两个分周期,其中C1专供DMA控制器访内,C2专供CPU访。 
这种方式不须要总线使用权的申请、创建和归还过程,总线使用权是经过C1和C2分时制的。CPU和DMA控制器各自有本身的访内地址寄存器、数据寄存器和读/写信号等控制寄存器。在C1周期中,若是DMA控制器有访内请求,可将地址、数据等信号送到总线上。在C2周期中,如CPU有访内请求,一样传送地址、数据等信号。事实上,对于总线,这是用C1,C2控制的一个多路转换器,这种总线控制权的转移几乎不须要什么时间,因此对DMA传送来说效率是很高的。
这种传送方式又称为“透明的DMA”方式,其来由是这种DMA传送对CPU来讲,如同透明的玻璃通常,没有任何感受或影响。在透明的DMA方式下工做,CPU既不中止主程序的运行,也不进入等待状态,是一种高效率的工做方式。固然,相应的硬件逻辑也就更加复杂。


相关文章
相关标签/搜索