DMA-Engine和DMA-Controller有什么区别?

问题描述 投票:5回答:2
  1. 如上所述,dma引擎和dma-controller(关注linux)有什么区别?
  2. linux dma引擎什么时候到位?这是一个特殊设备还是所有外围设备的一部分,它们支持dma?
  3. 浏览linux源码时,我找到了驱动程序ste_dma40.c。任何驱动程序如何使用此引擎?
linux linux-kernel dma
2个回答
6
投票

DMA - 直接内存访问。驱动程序在没有CPU参与的情况下从/向内存读取或写入的操作(释放它以执行其他操作)。

DMA控制器 - 魔法无法完成读写操作。如果CPU没有这样做,我们需要另一台硬件来完成它。许多年前(在ISA / EISA时),通常在主板上使用共享硬件执行此操作。近年来,每个HW都有自己的DMA HW机制。但在所有情况下,此特定HW都会获取源地址和目标地址并传递数据。通常在完成时触发中断。

DMA引擎 - 现在我不知道你的意思。我相信你可能会提到处理DMA的SW端。 DMA比通常的I / O稍微复杂一些,因为在DMA操作期间所有存储器SRC和DST必须始终物理存在。如果将DST地址交换到磁盘,则HW将写入错误的地址,系统将崩溃。 DMA的这个和其他方面由驱动程序处理,代码部分可能称为“DMA引擎”

*对“DMA引擎”的另一种解释可能是处理HW端的DMA HW控制器的固件(或HW)的代码部分。


2
投票

根据这份文件,http://www.asprom.com/application/intel_3.pdf

不应将82C37 DMA控制器与某些早期MCH(内存控制器中枢)组件中的DMA引擎混淆。这些DMA控制器与ISA / LPC总线相连,主要用于与慢速设备(如软盘控制器)之间的传输。

因此,它似乎是在先前平台上使用MCH设备的设备。

© www.soinside.com 2019 - 2024. All rights reserved.