什么是DMA方式?

2024-05-10

1. 什么是DMA方式?

DMA 是所有现代电脑的重要特色,他允许不同速度的硬件装置来沟通,而不需要依于 CPU 的大量 中断 负载。否则,CPU 需要从 来源 把每一片段的资料复制到 暂存器,然后把他们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。 DMA 传输重要地将一个内存区从一个装置复制到另外一个。当 CPU 初始化这个传输动作,传输动作本身是由 DMA 控制器 来实行和完成。典型的例子就是移动一个外部内存的区块到芯片内部更快的内存去。像是这样的操作并没有让处理器工作拖延,反而可以被重新排程去处理其他的工作。DMA 传输对于高效能 嵌入式系统 算法和网络是很重要的。 
  在实现DMA传输时,是由DMA控制器直接掌管总线,因此,存在着一个总线控制权转移问题。即DMA传输前,CPU要把总线控制权交给DMA控制器,而在结束DMA传输后,DMA控制器应立即把总线控制权再交回给CPU。  
DMA
一个完整的DMA传输过程必须经过下面的4个步骤。
1.DMA请求
  CPU对DMA控制器初始化,并向I/O接口发出操作命令,I/O接口提出DMA请求。
2.DMA响应
  DMA控制器对DMA请求判别优先级及屏蔽,向总线裁决逻辑提出总线请求。当CPU执行完当前总线周期即可释放总线控制权。此时,总线裁决逻辑输出总线应答,表示DMA已经响应,通过DMA控制器通知I/O接口开始DMA传输。
3.DMA传输
  DMA控制器获得总线控制权后,CPU即刻挂起或只执行内部操作,由DMA控制器输出读写命令,直接控制RAM与I/O接口进行DMA传输。
  在DMA控制器的控制下,在存储器和外部设备之间直接进行数据传送,在传送过中不需要中央处理器的参与。开始时需提供要传送的数据的起始位置和数据长度。
4.DMA结束
  当完成规定的成批数据传送后,DMA控制器即释放总线控制权,并向I/O接口发出结束信号。当I/O接口收到结束信号后,一方面停 止I/O设备的工作,另一方面向CPU提出中断请求,使CPU从不介入的状态解脱,并执行一段检查本次DMA传输操作正确性的代码。最后,带着本次操作结果及状态继续执行原来的程序。
  由此可见,DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,使CPU的效率大为提高。

什么是DMA方式?

2. 解释什么是DMA

DMA(Direct Memory Access,直接内存存取) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载。否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。
中文名
直接存储器访问
外文名
Direct Memory Access
缩写
DMA
功能
不同速度的硬件装置来沟通
原理
DMA 传输将数据从一个地址空间复制到另外一个地址空间。当CPU 初始化这个传输动作,传输动作本身是由 DMA 控制器来实行和完成。典型的例子就是移动一个外部内存的区块到芯片内部更快的内存区。像是这样的操作并没有让处理器工作拖延,反而可以被重新排程去处理其他的工作。DMA 传输对于高效能 嵌入式系统算法和网络是很重要的。
在实现DMA传输时,是由DMA控制器直接掌管总线,因此,存在着一个总线控制权转移问题。即DMA传输前,CPU要把总线控制权交给DMA控制器,而在结束DMA传输后,DMA控制器应立即把总线控制权再交回给CPU。一个完整的DMA传输过程必须经过DMA请求、DMA响应、DMA传输、DMA结束4个步骤。

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

3. 什么是DMA?

�且恢挚焖俅�褪�莸幕�啤J�荽�菘梢源邮逝淇ǖ侥诖妫�幽诖娴绞逝淇ɑ虼右欢文诖娴搅硪欢文诖妗�MA技术的重要
性在于,利用它进行数据传送时不需要CPU的参与。每台电脑主机板上都有DMA控制器,通常计算机对其编程,并用一个适配器上的ROM(如软盘驱动控制器
上的ROM)来储存程序,这些程序控制DMA传送数据。一旦控制器初始化完成,数据开始传送,DMA就可以脱离CPU,独立完成数据传送。
在DMA传送开始的短暂时间内,基本上有两个处理器为它工作,一个执行程序代码,一个传送数据。利用DMA传送数据的另一个好处是,数据直接在源地址和目
的地址之间传送,不需要中间媒介。如果通过CPU把一个字节从适配卡传送至内存,需要两步操作。首先,CPU把这个字节从适配卡读到内部寄存器中,然后再
从寄存器传送到内存的适当地址。DMA控制器将这些操作简化为一步,它操作总线上的控制信号,使写字节一次完成。这样大大提高了计算机运行速度和工作效率。
计算机发展到今天,DMA已不再用于内存到内存的数据传送,因为CPU速度非常快,做这件事,比用DMA控制还要快,但要在适配卡和内存
之间传送数据,仍
然是非DMA莫属。要从适配卡到内存传送数据,DMA同时触发从适配卡读数据总线(即I/O读操作)和向内存写数据的总线。激活I/O读操作就是让适配卡
把一个数据单位(通常是一个字节或一个字)放到PC数据总线上,因为此时内存写总线也被激活,数据就被同时从PC总线上拷贝到内存中。
对于每一次写操作,DMA控制器都控制地址总线,通知应将数据写到哪段内存中去。
DMA控制数据从内存传送到适配卡的方法与上面类似。对每一个要传送的单位数据,DMA控制器激活读内存和I/O写操作的总线。内存地址被放到地址总线
上,像从适配卡到内存传送数据一样,以数据总线为通道,数据从源地址直接传送到目的地址。
DMA从DMA请求线(DREQ)上接收DMA请求,正像中断控制器从中断请求线(IRQ)上接收中断请求一样。
一个典型的从适配卡到内存的
数据传送是这样进行的,首先,对DMA控制器编程,写入数据要到达的内存地址和要传送的字节数。适配器可以开始传送数据时,它
将激活DREQ线,与DMA控制器连通。DMA控制器在与CPU取得总线控制权后,输出内存地址,发送控制信号,使得一个字节或一个字从适配器读出并写入
相应内存中,然后更新内存地址,指向下一个字节(或字)要写入的地址,重复上面的操作,直至数据传送完毕。对控制器进行不同编程,就可以实现单字节传送
(即每传送一个字节都要求一个DREQ信号)或块数据传送(即全部数据传送只需要一个DREQ信号)。
如果你要往计算机中插一块适配卡,而且
适配卡使用DMA,通常安装程序会让你选择一个DMA通道,设定DIP开关或跳线,来为相应适配器设置DMA通道。
尽管从理论上讲,只要不是同时使用DREQ线,不同的适配卡可以共享这条线的,但是按常规,我们最好为每个适配卡单独安排一个DMA通道,这样就可以保证
不会发生DMA冲突。附表是DMA的缺省分配情况。通道 功能通道 功能 O 空闲 4 用于级联DMA控制器 1 空闲 5 空闲 2 软盘 6
空闲3 空闲 7
空闲从中可以看出,DMA通道2和4已被占用,在大多数微机上,通道1、3、5、6和7可由你任意分配。我们平时最好对自己的计算机上DMA通道的分配情
况记录下来,以免我们向计算机增加新硬件时出现两个适配卡共用一个通道,导致冲突。

什么是DMA?

4. 什么是DMA

DMA的概念:DMA是在专门的硬件( DMA)控制下,实现高速外设和主存储器之间自动成批交换数据尽量减少CPU干预的输入/输出操作方式。通常有两种方式: 

◎独占总线方式 ◎周期挪用方式 

(2)DMA的组成: 

◎主存地址寄存器 

◎数据数量计数器 

◎DMA的控制/状态逻辑 ◎DMA请求触发器 

◎数据缓冲寄存器 ◎中断机构 

(3)DMA的传送数据的过程:由三个阶段组成 

◎传送前的预处理:由CPU完成以下步骤 
向DMA卡送入设备识别信号,启动设备,测试设备运行状态,送入内存地址初值,传送数据个数, DMA的功能控制信号。 

◎数据传送:在DMA卡控制下自动完成 

◎传送结束处理 

DMA 卡上应包括通用接口卡的全部组成部分,并多出如下内容: 
主存地址寄存器,传送字数计数器,DMA控制逻辑,DMA请求,DMA响应,DMA工作方式,DMA优先级及排队逻辑等 

一次完整的DMA传送过程: 
DMA 预处理,CPU向DMA送命令,如DMA方式,主存地址,传送的字数等,之后CPU执行原来的程序 

DMA 控制在 I/O 设备与主存间交换数据: 
准备一个数据, 向CPU发DMA请求,取得总线控制权,进行数据传送,修改卡上主存地址,修改字数计数器内且检查其值是否为零,不为零则继续传送,若已为零,则向 CPU发中断请求. 
参考资料:http://www.open.ha.cn/qiu/dag/main5.htm#/qiu/dag/5/5_2/index.htm

5. DMA是什么

DMA是让硬盘不用通过CPU来控制读写

它的意思是直接存储器存取,是一种快速传送数据的机制,DMA技术的重要性在于,利用它进行数据存取时不需要CPU进行干预,可提高系统执行应用程序的效率。利用DMA传送数据的另一个好处是,数据直接在源地址和目的地址之间传送,不需要是中间媒介。 

PS:这里讲的控制是硬盘内部的控制读写,这样有利于减轻CPU负担,加快读取速度

DMA是什么

6. DMI指标的计算方法

DMI指标的计算方法和过程比较复杂,它涉及到DM、TR、DX等几个计算指标和+DI(即PDI,下同)、-DI(即MDI,下同)、ADX和ADXR等4个研判指标的运算。1、计算的基本程序以计算日DMI指标为例,其运算的基本程序主要为:(1)按一定的规则比较每日股价波动产生的最高价、最低价和收盘价,计算出每日股价的波动的真实波幅、上升动向值、下降动向值TR、+DI、-DI,在运算基准日基础上按一定的天数将其累加,以求n日的TR、+DM和DM值。(2)将n日内的上升动向值和下降动向值分别除以n日内的真实波幅值,从而求出n日内的上升指标+DI和下降指标-DI。(3)通过n内的上升指标+DI和下降指标-DI之间的差和之比,计算出每日的动向值DX。(4)按一定的天数将DX累加后平均,求得n日内的平均动向值ADX。(5)再通过当日的ADX与前面某一日的ADX相比较,计算出ADX的评估数值ADXR。2、计算的具体过程(1)计算当日动向值动向指数的当日动向值分为上升动向、下降动向和无动向等三种情况,每日的当日动向值只能是三种情况的一种。A、上升动向(+DM)+DM代表正趋向变动值即上升动向值,其数值等于当日的最高价减去前一日的最高价,如果<=0 则+DM=0。B、下降动向(-DM)﹣DM代表负趋向变动值即下降动向值,其数值等于前一日的最低价减去当日的最低价,如果<=0 则-DM=0。注意-DM也是非负数。再比较+DM和-DM,较大的那个数字保持,较小的数字归0。C、无动向无动向代表当日动向值为“零”的情况,即当日的+DM和﹣DM同时等于零。有两种股价波动情况下可能出现无动向。一是当当日的最高价低于前一日的最高价并且当日的最低价高于前一日的最低价,二是当上升动向值正好等于下降动向值。(2)计算真实波幅(TR)TR代表真实波幅,是当日价格较前一日价格的最大变动值。取以下三项差额的数值中的最大值(取绝对值)为当日的真实波幅:A、当日的最高价减去当日的最低价的价差。B、当日的最高价减去前一日的收盘价的价差。C、当日的最低价减去前一日的收盘价的价差。TR是A、B、C中的数值最大者(3)计算方向线DI方向线DI是衡量股价上涨或下跌的指标,分为“上升指标”和“下降指标”。在有的股市分析软件上,+DI代表上升方向线,-DI代表下降方向线。其计算方法如下:+DI=(+DM÷TR)×100-DI=(-DM÷TR)×100要使方向线具有参考价值,则必须运用平滑移动平均的原理对其进行累积运算。以12日作为计算周期为例,先将12日内的+DM、-DM及TR平均化,所得数值分别为+DM12,-DM12和TR12,具体如下:+DI(12)=(+DM12÷TR12)×100-DI(12)=(-DM12÷TR12)×100随后计算第13天的+DI12、-DI12或TR12时,只要利用平滑移动平均公式运算即可。上升或下跌方向线的数值永远介于0与100之间。(4)计算动向平均数ADX依据DI值可以计算出DX指标值。其计算方法是将+DI和—DI间的差的绝对值除以总和的百分比得到动向指数DX。由于DX的波动幅度比较大,一般以一定的周期的平滑计算,得到平均动向指标ADX。具体过程如下:DX=(DI DIF÷DI SUM) ×100其中,DI DIF为上升指标和下降指标的差的绝对值DI SUM为上升指标和下降指标的总和ADX就是DX的一定周期n的移动平均值。(5)计算评估数值ADXR在DMI指标中还可以添加ADXR指标,以便更有利于行情的研判。ADXR的计算公式为:ADXR=(当日的ADX+前一日的ADX)÷2和其他指标的计算一样,由于选用的计算周期的不同,DMI指标也包括日DMI指标、周DMI指标、月DMI指标年DMI指标以及分钟DMI指标等各种类型。经常被用于股市研判的是日DMI指标和周DMI指标。虽然它们的计算时的取值有所不同,但基本的计算方法一样。另外,随着股市软件分析技术的发展,投资者只需掌握DMI形成的基本原理和计算方法,无须去计算指标的数值,更为重要的是利用DMI指标去分析、研判股票行情。

7. DMA是什么意思?


DMA是什么意思?

8. DMA方式的方式特点

DMA 是所有现代电脑的重要特色,他允许不同速度的硬件装置来沟通,而不需要依于 CPU 的大量 中断 负载。否则,CPU 需要从 来源 把每一片段的资料复制到暂存器,然后把他们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。DMA 传输将一个内存区从一个装置复制到另外一个, CPU 初始化这个传输动作,传输动作本身是由 DMA控制器来实行和完成。典型的例子就是移动一个外部内存的区块到芯片内部更快的内存去。像是这样的操作并没有让处理器工作拖延,反而可以被重新排程去处理其他的工作。DMA 传输对于高效能嵌入式系统算法和网络是很重要的。举个例子,PC ISA DMA控制器拥有 8 个 DMA 通道,其中的 7 个通道是可以让 PC 的 CPU 所利用。每一个 DMA 通道有一个 16位元 位址暂存器和一个 16 位元计数暂存器。要初始化资料传输时,装置驱动程式一起设定 DMA 通道的位址和计数暂存器,以及资料传输的方向,读取或写入。然后指示 DMA 硬件开始这个传输动作。当传输结束的时候,装置就会以中断的方式通知 CPU。但是,DMA传输方式只是减轻了CPU的工作负担;系统总线仍然被占用。特别是在传输大容量文件时,CPU的占用率可能不到10%,但是用户会觉得运行部分程序时系统变得相当的缓慢。主要原因就是在运行这些应用程序(特别是一些大型软件),操作系统也需要从系统总线传输大量数据;故造成过长的等待时间。