dma原理

still-smile still-smile     2023-04-30     444

关键词:

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(Direct Memory Access,直接内存存取) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载。否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。

    DMA技术的出现,使得外围设备可以通过DMA控制器直接访问内存,与此同时,CPU可以继续执行程序。那么DMA控制器与CPU怎样分时使用内存呢?通常采用以下三种方法:(1)停止CPU访内存;(2)周期挪用;(3)DMA与CPU交替访问内存

 

停止CPU访问内存
  当外围设备要求传送一批数据时,由DMA控制器发一个停止信号给CPU,要求CPU放弃对地址总线、数据总线和有关控制总线的使用权。DMA控制器获得总线控制权以后,开始进行数据传送。在一批数据传送完毕后,DMA控制器通知CPU可以使用内存,并把总线控制权交还给CPU。下图是这种传送方式的时间图。很显然,在这种DMA传送过程中,CPU基本处于不工作状态或者说保持状态。
技术图片
优点: 控制简单,它适用于数据传输率很高的设备进行成组传送。
缺点: 在DMA控制器访内阶段,内存的效能没有充分发挥,相当一部分内存工作周期是空闲的。这是因为,外围设备传送两个数据之间的间隔一般总是大于内存存储周期,即使高速I/O设备也是如此。例如,软盘读出一个8位二进制数大约需要32us,而半导体内存的存储周期小于0.5us,因此许多空闲的存储周期不能被CPU利用。
 
周期挪用
  当I/O设备没有DMA请求时,CPU按程序要求访问内存;一旦I/O设备有DMA请求,则由I/O设备挪用一个或几个内存周期。
这种传送方式的时间图如下图:
技术图片
I/O设备要求DMA传送时可能遇到两种情况:
  • 此时CPU不需要访内,如CPU正在执行乘法指令。由于乘法指令执行时间较长,此时I/O访内与CPU访内没有冲突,即I/O设备挪用一二个内存周期对CPU执行程序没有任何影响。
  • 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设备读写周期大于内存存储周期的情况。
 
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既不停止主程序的运行,也不进入等待状态,是一种高效率的工作方式。当然,相应的硬件逻辑也就更加复杂

dma控制器原理详解

目录工作原理DMA硬件架构DMA通道的作用DMA寄存器DMA出现的目的工作原理DMA全拼DirectMemoryAccess(直接内存存取),在传统的CPU存取数据时会先将数据放到缓存寄存器中然后在写入到指定位置CPU存取数据流程图:CPU经... 查看详情

stm32dma原理,配置步骤超详细,一文搞懂dma(代码片段)

目录DMA(DirectMemoryAccess)简介DMA传输方式DMA功能框图DMA请求映像DMA1控制器DMA2控制器通道仲裁器DMA主要特性DMA处理DMA数据配置从哪里来到哪里去外设到存储器存储器到外设存储器到存储器要传多少,单位是什么什么时... 查看详情

dma直接内存存取原理

  DMA是指外部设备不通过CPU而直接与系统内存交换数据的接口技术。  要把外设的数据读入内存或把内存的数据传送到外设,一般都要通过CPU控制完成,如CPU程序查询或中断方式。利用中断进行数据传送,可以大大提高CPU的... 查看详情

dma原理

1.DMA请求CPU对DMA控制器初始化,并向I/O接口发出操作命令,I/O接口提出DMA请求。2.DMA响应  DMA控制器对DMA请求判别优先级及屏蔽,向总线裁决逻辑提出总线请求。当CPU执行完当前总线周期即可释放总线控制权。此时,总线裁决... 查看详情

(计算机组成原理)第七章输入和输出系统-第四节3:i/o方式之dma方式

文章目录一:什么是DMA方式二:DMA控制器组成三:DMA传送过程(1)预处理(2)数据传送(3)后处理四:DMA方式的特点五:DMA传送方式(1)停止CPU访问主存(2)DMA和CPU交替访问主存(3)周期挪用(周期窃取)六:DMA和中断对比... 查看详情

拷贝方式之dma(代码片段)

1.DMA的原理和实现        DMA的原理就是CPU将需要迁移的数据的位置告诉给DMA,包括源地址,目的地址以及需要迁移的长度,然后启动DMA设备,DMA设备收到命令之后,就去完成相应的操作,最后通过中断... 查看详情

玩转单片机得弄明白dma原理

关注+星标公众号,不错过精彩内容来源|嵌入式LinuxDMA,全称DirectMemoryAccess,即直接存储器访问。DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速... 查看详情

拷贝方式之dma(代码片段)

1.DMA的原理和实现        DMA的原理就是CPU将需要迁移的数据的位置告诉给DMA,包括源地址,目的地址以及需要迁移的长度,然后启动DMA设备,DMA设备收到命令之后,就去完成相应的操作,最后通过中断... 查看详情

考前自学系列·计算机组成原理·查询方式/中断方式/dma方式的适用范围及判断

适用范围查询方式:适合于工作不太繁忙的系统;中断方式:适合于CPU任务比较忙的情况下,尤其适合实时控制和紧急事件的处理;DMA方式:适合于需要高速而又频繁地与存储器进行批量的数据交换的I/O设... 查看详情

嵌入式:arm的dma设计

一、DMA工作原理所谓DMA方式,即直接存储器存取(DirectMemoryAcess),在DMA控制器的控制下,不通过CPU控制,高速地和I/O设备和存储器之间交换数据。S3C2410具有一个4通道DMA控制器。该DMA控制器位于系统总线(AHB)和外设总线(APB)... 查看详情

java中io缓冲区的原理是啥

如果是边读边写,就会很慢,也伤硬盘。缓冲区就是内存里的一块区域,把数据先存内存里,然后一次性写入,类似数据库的批量操作,这样效率比较高。调用I\O操作的时候,实际上还是一个一个的读或者写,关键就在,CPU... 查看详情

cpu的高级代理-dma(代码片段)

开发环境:MDK:Keil5.30开发板:GD32F207I-EVALMCU:GD32F207IK11.1DMA工作原理11.1.1DMA介绍DMA(DirectMemoryAccess,直接存储器存取),是一种可以大大减轻CPU工作量的数据存取方式,DMA传输将数据从一个 查看详情

cpu的高级代理-dma(代码片段)

开发环境:MDK:Keil5.30开发板:GD32F207I-EVALMCU:GD32F207IK11.1DMA工作原理11.1.1DMA介绍DMA(DirectMemoryAccess,直接存储器存取),是一种可以大大减轻CPU工作量的数据存取方式,DMA传输将数据从一个 查看详情

cpu的高级代理-dma(代码片段)

开发环境:MDK:Keil5.30开发板:GD32F207I-EVALMCU:GD32F207IK11.1DMA工作原理11.1.1DMA介绍DMA(DirectMemoryAccess,直接存储器存取),是一种可以大大减轻CPU工作量的数据存取方式,DMA传输将数据从一个 查看详情

STM32 ADC DMA。何时通知 MCU ADC 结束?

...STM32F4,ideSTM32CubeIDE)一起使用,我认为我了解它的工作原理,但仍有一个难题。据我了解,只有在DMA传输完成时才会调用MCU,基本上MCU会在DMAADC完成时进入这个函数voidH 查看详情

dmatcm与cache介绍

...下完成数据的传输。DMA是一种硬件设备。这种设备的工作原理是这样的:——首先CPU告诉DMA设备,要有一堆数据需要传输,为了效率而请它出马。(DMA请求)——DMA收到CPU的消息,开始准备。此时CPU把数据源地址、... 查看详情

[架构之路-47]:目标系统-系统软件-linuxos硬件设备驱动-cpu内存管理单元mmudma与io内存管理单元iommu

...录第1章内存管理单元MMU1.1什么是内存管理单元MMU1.2基本原理1.3关键概念1.4 程序的局部性原理第2章DMA机制2.1什么是DMA2.2DMA的原理2.3基本过程2.4DMA的传送方式第3章 IOMMU3.1什么是IOMMU3.2 DMA重映射:设备逻辑/虚拟地址与任意物... 查看详情

mac与phy组成原理的简单分析

1. general下图是网口结构简图。网口由CPU、MAC和PHY三部分组成。DMA控制器通常属于CPU的一部分,用虚线放在这里是为了表示DMA控制器可能会参与到网口数据传输中。  对于上述的三部分,并不一定都是独立的芯片,根据... 查看详情