Informatik

DMA einfach erklärt: Ablauf, Nutzen und Risiken

DMA einfach erklärt: Ablauf, Nutzen und Risiken
DMA einfach erklärt: Ablauf, Nutzen und Risiken
Für Quiz, Lückentext, Lernkarten und Fortschritt ist JavaScript nötig. Alle Inhalte und Lösungen bleiben direkt lesbar.

Direct Memory Access (DMA) bedeutet: Ein Controller oder ein busmasterfähiges Gerät überträgt Daten, ohne dass die CPU jedes einzelne Datenwort selbst bewegen muss. Die CPU richtet den Transfer meist ein und erhält nach dem Abschluss eine Meldung.

Auf dieser Seite lernst du, den Ablauf zu erklären, geeignete Einsatzfälle zu erkennen und Nutzen, Grenzen sowie Sicherheitsrisiken abzuwägen.

Deine Lernziele

Hake ab, was du schon kannst — und komm am Ende hierher zurück!

Was DMA von CPU-gesteuerter Übertragung unterscheidet

Stell dir vor, eine Netzwerkkarte empfängt einen großen Datenblock. Ohne DMA müsste die CPU wiederholt Daten aus der Schnittstelle lesen und in den Arbeitsspeicher schreiben. Dabei wäre sie mit vielen ähnlichen Übertragungsschritten beschäftigt.

Mit DMA legt die Software vorab fest, wo die Daten liegen oder abgelegt werden sollen, wie groß der Transfer ist und wie er gesteuert wird. Danach bewegt ein DMA-Controller oder das busmasterfähige Gerät die Daten. Die CPU kann in dieser Zeit andere Befehle bearbeiten, soweit sie den gemeinsam genutzten Bus nicht selbst benötigt.

Definition

DMA

Direct Memory Access ist ein von Hardware ausgeführter Datentransfer, bei dem die CPU nicht jedes Datenwort selbst überträgt. Häufig fließen Daten zwischen Peripherie und Arbeitsspeicher; grundsätzlich sind auch Speicher-zu-Speicher- und Gerät-zu-Gerät-Transfers möglich.

Merke

DMA ersetzt die CPU nicht vollständig: Die CPU beziehungsweise die Software bereitet den Transfer meist vor und verarbeitet später die Abschlussmeldung.

Teste dich
Frage 1 von 1LeichtWelche Aussage beschreibt DMA am treffendsten?
Lösung: Hardware übernimmt einen vorbereiteten Datentransfer, ohne dass die CPU jedes Datenwort bewegt. — Entscheidend ist die Rollenverteilung: Die CPU richtet typischerweise ein, die DMA-Hardware bewegt die Daten und meldet den Abschluss.
Wie ein DMA-Transfer abläuft

Ein klassischer DMA-Transfer folgt einer klaren Zusammenarbeit:

  1. Die Software richtet Speicheradresse, Datenmenge und Steuerinformationen ein.
  2. Ein Peripheriegerät fordert den Transfer an.
  3. Der DMA-Controller fordert die Kontrolle über den Bus an.
  4. Die CPU gewährt die Busnutzung und gibt die benötigten Leitungen frei.
  5. Die DMA-Hardware liest an der Quelle und schreibt am Ziel.
  6. Nach dem Transfer gibt sie den Bus frei und meldet den Abschluss, häufig durch einen Interrupt.

Der Bus verbindet Komponenten über Daten-, Adress- und Steuerleitungen. Weil CPU und DMA dieselben Leitungen benötigen können, muss eine Busarbitrierung entscheiden, wer den Bus gerade kontrolliert. Auf einem gemeinsam genutzten Bus kann grundsätzlich nur ein Busmaster zur selben Zeit die Kontrolle besitzen.

Definition

Busmaster

Ein Busmaster ist die Komponente, die einen Transfer auf dem Bus initiiert und dabei Adressen, Datenfluss und nötige Steuersignale vorgibt.

Beispiel

Eine Netzwerkkarte soll empfangene Paketdaten in den Arbeitsspeicher schreiben. Die Software stellt Zieladresse und Datenmenge bereit. Die Karte erhält die Bushoheit, schreibt den Block und löst anschließend einen Interrupt aus. Der Interrupt informiert die CPU darüber, dass sie die übertragenen Daten weiterverarbeiten kann.

Teste dich
Frage 1 von 1MittelWarum ist vor einem DMA-Zugriff auf einen gemeinsam genutzten Bus eine Arbitrierung nötig?
Lösung: Sie verhindert, dass CPU und DMA-Hardware gleichzeitig widersprüchlich den Bus steuern. — Arbitrierung klärt die Busmaster-Rolle. So steuert zu einem Zeitpunkt genau die berechtigte Komponente den geteilten Bus.
Welche Transferarten es gibt

Die Transferart bestimmt, wie DMA und CPU sich die Buszeit teilen.

  • Burst-Modus: DMA überträgt einen ganzen Block am Stück. Das erhöht den Durchsatz, kann CPU-Buszugriffe aber länger verzögern.
  • Cycle Stealing: DMA überträgt ein Datenwort und gibt den Bus danach wieder frei. Die CPU wird kürzer unterbrochen, der Blocktransfer dauert dafür meist länger.
  • Transparenter Modus: DMA nutzt den Bus nur in Zeiten, in denen die CPU ihn nicht braucht. Das schont CPU-Buszugriffe, macht den Zeitpunkt des Transfers aber von freien Busphasen abhängig.

Bei der Adressierung gibt es ebenfalls einen Unterschied: Ein Transfer mit internem Zwischenregister benötigt einen Lese- und einen Schreibzyklus. Beim direkten Weiterleiten ohne Zwischenregister kann ein Buszyklus genügen; diese Variante eignet sich jedoch nicht für Speicher-zu-Speicher-Transfers, weil dafür zwei Speicheradressen benötigt werden.

Beispiel

Eine Audiowiedergabe braucht regelmäßig neue Daten. Ein sehr langer Burst könnte andere Buszugriffe unnötig verzögern. Kürzere Übertragungseinheiten können hier ein sinnvoller Kompromiss sein. Für einen großen, zusammenhängenden Datenblock kann ein Burst dagegen hohen Durchsatz liefern.

Teste dich
Frage 1 von 1MittelEin großer Datenblock soll möglichst schnell übertragen werden. Eine kurze Verzögerung der CPU ist akzeptabel. Welche Art passt am besten?
Lösung: Burst-Modus — Ein Burst nutzt die Bushoheit für einen zusammenhängenden Block. Das begünstigt den Durchsatz, kann aber CPU-Zugriffe verzögern.
Wann DMA nützt und wann nicht

DMA lohnt sich besonders bei großen, häufigen oder zeitkritischen Datenmengen. Der Einrichtungsaufwand verteilt sich dann auf viele Datenwörter. Typische Einsatzfelder sind Laufwerke, Audio- und Videodaten, Netzwerkkarten und Mikrocontroller-Schnittstellen.

Bei sehr kleinen Transfers kann die Einrichtung von Adressen, Zählern und Steuerregistern mehr Aufwand verursachen als die direkte Übertragung durch die CPU. DMA ist deshalb kein automatischer Geschwindigkeitsgewinn für jede Datenbewegung.

Beispiel

Ein Mikrocontroller soll 512 Byte über eine SPI-Schnittstelle senden. Die Software trägt die Startadresse des Datenblocks und die Anzahl der Bytes in Register ein und aktiviert den Transfer. Der DMA-Controller sendet jeweils ein Byte, erhöht die Adresse und verringert den Zähler. Sobald der Zähler null erreicht, ist der Block vollständig übertragen.

Aktives Warten auf das Ende würde die CPU erneut binden. Eine Abschlussmeldung per Interrupt erlaubt ihr dagegen, während des Transfers andere Aufgaben zu bearbeiten.

Teste dich
Frage 1 von 1SchwerFür welche Situation ist DMA am wenigsten überzeugend?
Lösung: Ein einzelner kleiner Transfer, dessen DMA-Einrichtung mehr Arbeit als die direkte CPU-Übertragung verursacht. — Vergleiche Einrichtungsaufwand und wiederholte Datenbewegung. Je kleiner der Transfer, desto eher kann direkte CPU-Steuerung günstiger sein.
Welche Grenzen und Risiken du beachten musst

DMA entlastet die CPU, konkurriert aber je nach Architektur mit ihr um den Bus. Lange Bursts können daher CPU-Zugriffe verzögern. Fehlerhafte Adressen oder Steuerregister können außerdem Daten überschreiben oder das System destabilisieren.

Direkter Gerätezugriff auf den Arbeitsspeicher ist auch ein Sicherheitsrisiko: Ein unbefugtes oder manipuliertes DMA-fähiges Gerät könnte Speicher lesen oder verändern. Eine Input/Output Memory Management Unit (IOMMU) begrenzt, auf welche Speicherbereiche ein Gerät zugreifen darf. Zusätzlich muss Software empfangene Daten prüfen und darf sie nicht ungeprüft ausführen.

Definition

IOMMU

Eine IOMMU ist eine Hardwareeinheit, die Speicherzugriffe von Ein- und Ausgabegeräten übersetzt und auf erlaubte Bereiche beschränkt. Sie schützt nicht vor jedem Fehler, begrenzt aber unkontrollierte Gerätezugriffe.

Im Netzwerk kann das Bündeln mehrerer Pakete zu weniger DMA-Ereignissen und längeren Ruhephasen führen. Das kann Energie sparen, erhöht aber möglicherweise die Latenz. Es entsteht ein Zielkonflikt zwischen Energiebedarf und schneller Reaktion.

Teste dich
Frage 1 von 1SchwerEin System bündelt mehr Netzwerkpakete vor jedem DMA-Ereignis. Welche Folge ist plausibel?
Lösung: Weniger DMA-Ereignisse können Energie sparen, während die Latenz steigen kann. — Bündelung verändert den Zeitpunkt der Transfers. Weniger Ereignisse begünstigen Ruhephasen, doch das Warten auf ein Bündel kann Daten verzögern.
Karteikasten
Karteikasten

Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.

Alles auf einen Blick
Mindmap
  • DMA
    • Rollen: CPU richtet ein, DMA-Hardware bewegt Daten, Arbitrierung vergibt die Bushoheit
    • Nutzen: weniger wiederholte CPU-Arbeit und hoher Durchsatz bei großen Datenblöcken
    • Transferwahl: Burst für Durchsatz, kleinere Einheiten für kürzere Busbelegung
    • Rentabilität: bei sehr kleinen Transfers direkte CPU-Übertragung prüfen
    • Grenzen: Buskonkurrenz und mögliche Schäden durch fehlerhafte Adressen
    • Schutz: IOMMU begrenzt Gerätezugriffe, Software prüft übertragene Inhalte
Abschluss-Check
Teste dich
Frage 1 von 3LeichtWelche Aufgabe bleibt typischerweise bei der CPU beziehungsweise Software?
Lösung: Sie richtet Adressen, Datenmenge und Steuerinformationen ein. — DMA automatisiert die wiederholte Datenbewegung. Vorbereitung und Verarbeitung der Abschlussmeldung bleiben typischerweise Aufgaben von CPU und Software.
Frage 2 von 3MittelEin DMA-Transfer ist beendet, aber die CPU prüft ständig in einer Warteschleife den Status. Welche Verbesserung nutzt den DMA-Vorteil besser?
Lösung: Ein Interrupt meldet das Transferende, sodass die CPU bis dahin andere Aufgaben bearbeiten kann. — Ein Interrupt macht den Abschluss asynchron sichtbar. Die CPU muss den Status dann nicht fortlaufend abfragen.
Frage 3 von 3SchwerEin Gerät soll große Datenblöcke schnell übertragen, darf aber nur einen festgelegten Speicherbereich verwenden. Welche Kombination erfüllt Leistung und Schutz am besten?
Lösung: DMA für den Blocktransfer und eine IOMMU zur Begrenzung des Speicherzugriffs. — DMA übernimmt den effizienten Transfer. Die IOMMU begrenzt den erreichbaren Speicherbereich; Software muss die übertragenen Inhalte weiterhin prüfen.

Passend dazu