Aufbau und Arbeitsweise eines DMA-Controllers

Die folgende Abbildung zeigt den (vereinfachten) Aufbau eines DMA-Controllers.

DMA-Controller.jpg


Initialisierung des DMA-Controllers

Bevor die Datenübertragung starten kann, muss der DMA-Controller von der CPU initialisiert werden, d.h. die notwendigen Informationen rund um die zu tätigende Übertragung erhalten. Dies sind:

  • Quelle:
    Von diesem Gerät sollen Daten übertragen werden.

  • Ziel:
    Zu diesem Gerät hin sollen die Daten übertragen werden.

  • Startadresse:
    Ab dieser Adresse auf der Quelle sollen Daten übertragen werden.

  • Zieladresse:
    Zu dieser Adresse auf dem Ziel sollen die Daten übertragen werden.

  • Anzahl Byte:
    Gibt die Anzahl der Bytes an, die ab Startadresse auf der Quelle zur Zieladresse auf dem Ziel übertragen werden sollen.


Datentransfer als Schleife

Sobald der DMA-Controller initialisiert ist, kann die Übertragung starten. Dabei wird immerfort eine Schleife durchlaufen, bis alle Byte übertragen sind.

DMA-Transfer-2.jpg


Aufgabe 1

Aufgabe
Start- und Zieladresse ändern sich

Warum werden beim Datentransfer sowohl die Startadresse als auch die Zieladresse nach jedem übertragenen Byte verändert?


Aufgabe 2

Aufgabe
DMA mit RAM und RAM?

Quelle und Ziel der Datenübertragung per DMA könnten beispielsweise Festplatte und RAM sein.

Aber ist auch denkbar, dass RAM und nochmal RAM die Quelle und das Ziel der Übertragung bilden?


Aufgabe 3

Aufgabe
Datentransfer mit DMA

Brinkschulte et.al. 2010 zeigen in Kapitel 4.6 mit Abb. 4.53 den grundsätzlichen Aufbau eines DMA-Controllers.

Erläutere in deiner Lerngruppe anhand der Abb. 4.53 die aufgelisteten Schritte des Datentransfers mit DMA.

  • Welche Informationen werden in welchen Registern abgelegt?
  • Wann werden welche Signale/Informationen über welche Leitungen gesendet?


Intel 8257 & 8237 Programmable DMA Controller

Aus der
Praxis

Der Intel 8257 ist ein bekannter Vertreter aus der Reihe der DMA-Controller. Sein Datenblatt ist noch heute im Internet abrufbar.

Eine Weiterentwicklung ist der Intel 8237 (Datenblatt), der bereits im Jahre 1981 im ursprünglichen IBM PC verbaut war.