GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist der Unterschied zwischen DMA-Engine und DMA-Controller?

DMA - Direkter Speicherzugriff. Der Betrieb Ihres Treibers beim Lesen oder Schreiben von/in Ihren HW-Speicher, ohne dass die CPU daran beteiligt ist (wodurch sie für andere Dinge frei ist).

DMA-Controller - Lesen und Schreiben kann nicht durch Zauberei erfolgen. Wenn die CPU es nicht tut, brauchen wir eine andere HW, um es zu tun. Vor vielen Jahren (zur Zeit von ISA/EISA) war es üblich, eine gemeinsam genutzte Hardware auf dem Motherboard zu verwenden, die diese Operation durchführte. In den letzten Jahren hat jede HW ihren eigenen DMA-HW-Mechanismus. Aber in allen Fällen erhält diese spezifische HW die Quelladresse und die Zieladresse und leitet die Daten weiter. Löst normalerweise einen Interrupt aus, wenn er fertig ist.

DMA Engine - Hier bin ich mir nicht sicher, was Sie meinen. Ich glaube, Sie beziehen sich wahrscheinlich auf die SW-Seite, die DMA handhabt. DMA ist etwas komplizierter als gewöhnliche E/A, da alle Speicher-SRC und DST während des DMA-Vorgangs jederzeit physisch vorhanden sein müssen. Wenn die DST-Adresse auf die Festplatte ausgelagert wird, schreibt die HW an eine fehlerhafte Adresse und das System stürzt ab. Dieser und andere Aspekte von DMA werden vom Treiber mit Codeabschnitten behandelt, die Sie wahrscheinlich als "DMA-Engine"

*Eine andere Interpretation dessen, was „DMA Engine“ ist, kann ein Codeteil der Firmware (oder HW) sein, der den DMA-HW-Controller auf der HW-Seite handhabt.


Gemäß diesem Dokument http://www.asprom.com/application/intel_3.pdf:

Die 82C37-DMA-Controller sollten nicht mit den DMA-Engines verwechselt werden, die in einigen früheren MCH-Komponenten (Memory ControllerHub) zu finden sind. Diese DMA-Controller sind an den ISA/LPC-Bus gebunden und werden hauptsächlich für Übertragungen zu/von langsamen Geräten wie Diskettencontrollern verwendet.

Es scheint also ein Gerät zu sein, das auf früheren Plattformen gefunden wurde, die MCHs-Geräte verwendet haben.


Linux
  1. Was ist der Unterschied zwischen strtok_r und strtok_s in C?

  2. Was ist der Unterschied zwischen adduser und useradd?

  3. Was ist der Unterschied zwischen `su -` und `su --login`?

  4. Was ist der Unterschied zwischen unlink und rm?

  5. Was ist der Unterschied zwischen Route und IP-Route?

Was ist der Unterschied zwischen Linux und Unix?

Was ist der Unterschied zwischen Login- und Non-Login-Shell

Was ist der Unterschied zwischen apt und dem Befehl apt-get?

Was ist ein Hypervisor? Was ist der Unterschied zwischen Typ 1 und 2?

Was ist der Unterschied zwischen Curl und Wget?

Was ist der Unterschied zwischen DMA und Memory-Mapped IO?