WikiDer > Direkter Speicherzugriff

Direct Memory Access

Direkter Speicherzugriff (DMA) ermöglicht die Übertragung von Daten aus einer Ebene im Speicherhierarchie mit minimalem Eingreifen der Zentraleinheit (Prozessor, CPU). Da dies parallel zu den aktuell auf der CPU laufenden Operationen erfolgt, ist DMA ein wesentlicher Bestandteil der Adressierung der Hardware und die Grundlage für effiziente und leistungsstarke Treiber und Anwendungen.

In vielen Anwendungen steht DMA im Gegensatz zu ZwischenspeicherOperationen. Einfach ausgedrückt, ermöglicht DMA ein effizienteres Arbeiten als die Cache-Controller kann dies zulassen, erfordert jedoch ein klares Verständnis des Programmierers des Algorithmus oder Codes.

Einige Prozessoren wie Digitale Signalprozessoren auch nicht besitzen Cache-Controller (oder Zwischenspeicher) oder wird der ZwischenspeicherVorgang wurde zu expliziten Leistungszwecken abgebrochen; ZwischenspeicherOperationen unterliegen immer einer Schätzung der Cache-Controller welche Daten in einem nächsten Schritt benötigt werden.

Beispiel

Ein einfacher Mikrocontroller funktioniert nicht mit DMA. Das bedeutet, dass die CPU immer die Kontrolle über die Bus hast. Wenn die CPU Daten von einer Festplatte lesen möchte, funktioniert das so:

  1. Die CPU gibt einen Lesebefehl an den Plattenprozessor aus. Sie legt fest, welche Daten gelesen werden sollen.
  2. Die CPU fährt mit anderen Arbeiten fort.
  3. Der Festplattenprozessor zeigt a unterbrechen wenn die Daten bereit sind.
  4. Die CPU nimmt die Daten vom Plattenprozessor und legt sie in den Speicher ab.

Dies ist das Verfahren für DMA:

  1. Die CPU gibt einen Lesebefehl an den Plattenprozessor aus. Es wird festgelegt, welche Daten gelesen und auf welcher Speicheradresse sie abgelegt werden sollen.
  2. Die CPU fährt mit anderen Arbeiten fort.
  3. Der Plattenprozessor liest die Daten und legt sie in den Speicher ab.
  4. Der Festplattenprozessor zeigt a unterbrechen wenn das Verfahren abgeschlossen ist.

Buskonflikt

Ein Problem bei DMA besteht darin, dass zwei Prozessoren den Speicher gleichzeitig verwenden. Zu einer Buskonflikt Um dies zu vermeiden, werden Steuersignale zwischen den Prozessoren ausgetauscht. Ein Prozessor erhält Zugriff auf den Bus, wenn der andere Prozessor kurzzeitig interne Verarbeitungen durchführt. Es ist auch möglich, dass der Bus im Zuge der Verarbeitung in zwei Teile geteilt wird, so dass die beiden Prozessoren unabhängig voneinander arbeiten können.

Video

Ein klassisches Beispiel für DMA tritt bei Video auf. Ein Teil des Computerspeichers wird als Videospeicher bezeichnet. Der Inhalt dieses Speichers wird auf dem Bildschirm angezeigt. Dies erfordert, dass der Videoprozessor kontinuierlich den Speicher liest. Aber natürlich will die CPU manchmal auch auf den Videospeicher zugreifen.

Auch hier ist es für einen Prozessor möglich, in den kurzen Momenten, in denen der andere Prozessor den Speicher nicht benötigt, auf den Videospeicher zuzugreifen. Der Videoprozessor benötigt während der Rücklaufzeit keinen Speicher. Eine andere, weniger attraktive Lösung besteht darin, dass die CPU jederzeit auf den Videospeicher zugreifen kann, während der Videoprozessor eine Zeit lang nichts lesen kann. Diese Lösung führt zu Flecken auf dem Bildschirm, wenn die CPU auf den Videospeicher zugreift. Die beste Lösung besteht aus einem Videospeicher, auf den von beiden Seiten gleichzeitig zugegriffen werden kann.

UDMA

Links 80-, rechts 40-adriges Flachkabel

Mit der Verbreitung schnellerer ATA-Festplatten wird die Verwendung von programmierten IO (PIO) zunehmend hinderlich. Der PIO-Modus wurde daher durch DMA (Word DMA) und später Ultra DMA (Ultra Direct Memory Access, UDMA) ersetzt.

Die Entwicklung wurde von Quantum in Zusammenarbeit mit Intel etabliert. Die Einführung erfolgte 1998 mit dem ATA-4- bzw. ATA/ATAPI-4-Standard.

UDMA war bis Serial ATA die schnellste Methode, um Daten zwischen dem Computer (über den ATA-Controller) und einem ATA-Gerät zu übertragen SATA aufgetaucht.

Es gibt einige spezifische Anforderungen für die Ausführung von Ultra DMA mit Festplatten:

  • Festplattenunterstützung: Die Festplatte selbst muss Ultra DMA unterstützen. Außerdem muss der entsprechende Ultra-DMA-Modus aktiviert sein.
  • 80-adriges Kabel: Für Ultra DMA-Modi größer als 2 muss ein 80-adriges Kabel verwendet werden. Wenn das System kein 80-adriges Kabel erkennt, wird die Nutzung von 66 MB/s, 100 MB/s oder 133 MB/s automatisch deaktiviert.
  • BIOS- und OS-Unterstützung: Das BIOS und/oder das Betriebssystem müssen die Ultra DMA-Übertragungen unterstützen. Außerdem muss die Festplatte im Betriebssystem so eingerichtet sein, dass sie im Ultra DMA-Modus arbeitet. Ab Windows 98 geschieht dies automatisch.
  • Controller-Unterstützung: Ein Controller, der Ultra-DMA-Übertragungen unterstützt. Dies kann sowohl der Onboard-Controller auf dem Motherboard als auch eine IDE/ATA-Schnittstellenkarte (Zusatzkarte) sein.

Es gibt 8 verschiedene UDMA-Modi von 0 bis 6 für ATA, 0 bis 7 für CompactFlash, jedes mit seinem eigenen Timing.

UDMA-ModusHinweisÜbertragungsrate in MB/s
Mode 0UDMA1616,7
Mode 1UDMA2525,0
Mode 2UDMA3333,3
Mode 3UDMA4444,4
Mode 4UDMA6666,7
Mode 5UDMA100100,0
Mode 6UDMA133133,3
Mode 7UDMA166166,0 (*CompactFlash)