Direkter Speicherzugriff (dma)

Definition - Was bedeutet Direct Memory Access (DMA)?

Direkter Speicherzugriff (DMA) ist eine Methode, mit der ein Eingabe- / Ausgabegerät (E / A) Daten direkt zum oder vom Hauptspeicher senden oder empfangen kann, wobei die CPU umgangen wird, um die Speicheroperationen zu beschleunigen.

Der Prozess wird von einem Chip verwaltet, der als DMA-Controller (DMAC) bekannt ist.

Technische.me erklärt Direct Memory Access (DMA)

Ein definierter Teil des Speichers wird verwendet, um Daten direkt von einem Peripheriegerät an die Hauptplatine zu senden, ohne den Mikroprozessor einzubeziehen, sodass der Prozess den gesamten Computerbetrieb nicht beeinträchtigt.

Bei älteren Computern wurden vier DMA-Kanäle mit 0, 1, 2 und 3 nummeriert. Bei Einführung des ISA-Erweiterungsbusses (16-Bit Industry Standard Architecture) wurden die Kanäle 5, 6 und 7 hinzugefügt.

ISA war ein Computer-Bus-Standard für IBM-kompatible Computer, mit dem ein Gerät Transaktionen (Bus-Mastering) schneller initiieren konnte. Der ISA-DMA-Controller verfügt über 8 DMA-Kanäle, von denen jeder einem 16-Bit-Adress- und Zählregister zugeordnet ist.

ISA wurde inzwischen durch AGP-Erweiterungskarten (Accelerated Graphics Port) und PCI-Erweiterungskarten (Peripheral Component Interconnect) ersetzt, die viel schneller sind. Jeder DMA überträgt ungefähr 2 MB Daten pro Sekunde.

Die Systemressourcentools eines Computers werden für die Kommunikation zwischen Hardware und Software verwendet. Die vier Arten von Systemressourcen sind:

  • E / A-Adressen.

  • Speicheradressen.

  • Interrupt-Anforderungsnummern (IRQ).

  • DMA-Kanäle (Direct Memory Access).

DMA-Kanäle werden verwendet, um Daten zwischen dem Peripheriegerät und dem Systemspeicher zu übertragen. Alle vier Systemressourcen sind auf bestimmte Leitungen in einem Bus angewiesen. Einige Leitungen auf dem Bus werden für IRQs verwendet, einige für Adressen (die E / A-Adressen und die Speicheradresse) und einige für DMA-Kanäle.

Ein DMA-Kanal ermöglicht es einem Gerät, Daten zu übertragen, ohne die CPU einer Arbeitsüberlastung auszusetzen. Ohne die DMA-Kanäle kopiert die CPU jedes Datenelement über einen Peripheriebus vom E / A-Gerät. Die Verwendung eines Peripheriebusses belegt die CPU während des Lese- / Schreibvorgangs und ermöglicht keine andere Arbeit, bis der Vorgang abgeschlossen ist.

Mit DMA kann die CPU andere Aufgaben verarbeiten, während die Datenübertragung ausgeführt wird. Die Datenübertragung wird zunächst von der CPU initiiert. Der Datenblock kann vom DMAC auf drei Arten zum und vom Speicher übertragen werden.

Im Burst-Modus wird der Systembus erst nach Abschluss der Datenübertragung freigegeben. Im Zyklusdiebstahlmodus wird während der Datenübertragung zwischen dem DMA-Kanal und dem E / A-Gerät der Systembus für einige Taktzyklen freigegeben, damit die CPU andere Aufgaben ausführen kann. Wenn die Datenübertragung abgeschlossen ist, empfängt die CPU eine Interruptanforderung vom DMA-Controller. Im transparenten Modus kann der DMAC den Systembus nur dann übernehmen, wenn er vom Prozessor nicht benötigt wird.

Die Verwendung eines DMA-Controllers kann jedoch zu Problemen mit der Cache-Kohärenz führen. Die im RAM gespeicherten Daten, auf die der DMA-Controller zugreift, werden möglicherweise nicht mit den richtigen Cache-Daten aktualisiert, wenn die CPU externen Speicher verwendet.

Die Lösungen umfassen das Leeren von Cache-Zeilen vor dem Starten ausgehender DMA-Übertragungen oder das Durchführen einer Cache-Ungültigmachung bei eingehenden DMA-Übertragungen, wenn externe Schreibvorgänge an den Cache-Controller signalisiert werden.