Ein DMA-Controller ist eine Hardware-Komponente, die zum Ziel hat, die Geschwindigkeit des Gesamtsystems zu erhöhen. Erreicht werden soll dies u.a. durch eine Reduzierung der Anzahl an Interrupts, die bei der Kommunikation zwischen der CPU und den E/A-Geräten ausgelöst werden.
Du erinnerst dich doch noch an den enormen Aufwand, der betrieben wurde, um ein einzelnes Datenwort von der Festplatte, über die CPU in den Hauptspeicher zu kopieren, oder?
Und daran, dass für jedes einzelne Datenwort ein Interrupt ausgelöst wurde, oder?
Falls nicht: Lies dir erst das Kapitel Kommunikation mit E/A-Geräten noch einmal durch, und schau dir das Video an!
Mit der Bearbeitung der folgenden Aufgabe 1 reflektierst du noch einmal diesen wichtigen Sachverhalt.
Erläutere anhand der folgenden (vereinfachten) Abbildung, wie der Transfer von Daten zwischen Festplatte und RAM abläuft. Wann treten dabei Interrupts auf?
Die Abkürzung DMA steht für Direct Memory Access, auf Deutsch also: direkter Speicherzugriff, und beschreibt die Möglichkeit, Datenwörter direkt zwischen dem Hauptspeicher und einem DMA-fähigen Peripheriegerät auszutauschen, ohne dass daran die CPU beteiligt ist.
Die CPU wird also durch einen vorhandenen DMA-Controller entlastet. Sie muss lediglich zu Beginn und am Ende der Übertragung eingreifen.
Der allgemeine Ablauf des DMA-Verfahrens ist wie folgt:
An der vorangegangenen Auflistung ist erkennbar, dass bei Einsatz des DMA-Controllers die Anzahl der Interrupts deutlich reduziert wird. Die CPU muss somit sehr viel weniger Interruptbehandlungsroutinen ausführen, die so gewonnene CPU-Zeit kommt anderen Prozessen zu Gute.
Bei einem Datentransfer ohne DMA-Controller ereignete sich ein Interrupt pro Datenwort.
Mit DMA-Controller ist es nur noch ein Interrupt für die gesamte Übertragung.
Erläutere anhand der folgenden (vereinfachten) Abbildung, wie der Transfer von Daten zwischen Festplatte und RAM abläuft, wenn ein DMA-Controller zur Verfügung steht. Wann und wie oft muss die CPU auf ein Interruptsignal reagieren? (Gemeint sind nur die Interrupts, welche durch den Datentransfer ausgelöst werden.)
Welche Änderungen ergeben sich zu Aufgabe 1 oben?
Die Einsparung von Interrupts führt unweigerlich zu einer Beschleunigung des Gesamtsystems, da die Abarbeitung jedes einzelnen Interrupts sehr aufwendig ist. Der Abschnitt Datentransfer und Interrupts hat dies bereits gezeigt.
Ein weiterer Grund für einen Geschwindigkeitsvorteil ist, dass ein DMA-Controller von seiner Bauart her auf Datenübertragungen spezialisiert ist. Er kann diese Tätigkeiten deshalb mit einer höheren Geschwindigkeit ausführen, als eine CPU, die universell für viele verschiedene Tätigkeiten entwickelt wurde.
Brinkschulte et al. 2010 erläutern beispielsweise, dass eine Datenübertragung auf der CPU mittels einer in Software programmierten Schleife erfolgt, während auf einem spezialisierten DMA-Controller jegliche Steuerung mittels Hardware erfolgt.
Weiterführende Literatur
Brinkschulte et al. 2010 erläutern in Kapitel 4.6 (DMA) weitere Hintergründe zum Thema. Die Lektüre dieser Quelle sei ausdrücklich empfohlen.
Studierende sind oftmals berechtigt, eine PDF-Version dieses Buches ohne entstehende Kosten über ihre Hochschulen von Springerlink zu beziehen.
Der Einsatz eines DMA-Controllers hat nicht nur Vorteile. Ein Nachteil ist beispielsweise, dass Datenbus und Adressbus während eines Datentransfers per DMA nicht der CPU zur Verfügung stehen.
Brinkschulte et al. 2010 beschreiben in Kapitel 4.6 drei Arten des DMA-Transfers.