Betriebssysteme (8) - Direct Memory Access (DMA)

avatar

Wir hatten im Beitrag zur Hardware-Unterbrechung gesehen, was geschieht, wenn ein Plattenlaufwerk einen Leseauftrag ausgeführt hat:
Der gewünschte Datenblock steht im Pufferspeicher des Controllers bereit, und der Controller schickt ein Unterbrechungssignal an die CPU, um sie hiervon zu informieren.

Wie gelangt der Block nun in den Hauptspeicher? Hier gibt es zwei unterschiedliche Verfahren:

  1. Bei der unterbrechungsgesteuerten Ein-/Ausgabe schreibt der Controller jeweils ein Wort in sein Dateneingangsregister und löst eine Hardware-Unterbrechung aus. Dadurch wird der Gerätetreiber gestartet; er veranlasst, dass das Wort von der CPU in Empfang genommen und in den Hauptspeicher geschrieben wird

  2. Eigentlich ist die CPU für solche Übertragungsdienste zu schade. Deshalb wird für schnelle Peripheriegeräte häufig ein anderes Verfahren gewählt: der direkte Speicherzugriff (direct memory access (DMA)). Hierbei wird im Computer ein spezieller DMA-Controller eingesetzt, der selbständig über den Bus Daten in den Hauptspeicher übertragen kann, ohne die CPU zu bemühen. Auch der Gerätecontroller muss für das DMA-Verfahren ausgelegt sein.

Bus mit direct memory access

bs.png

Der Gerätetreiber teilt dem Gerätecontroller über dessen Register die Nummer des zu lesenden Blocks mit und dem DMA-Controller die Anfangsadresse des Hauptspeicherbereichs, in den die Daten übertragen werden sollen. Danach kann die CPU sich anderen Aufgaben widmen. Der Gerätecontroller setzt sich nun über spezielle Leitungen mit dem DMA-Controller in Verbindung. Wann immer das nächste Wort im Register des Gerätecontrollers bereitsteht, sendet er über eine Anforderungsleitung ein Signal an den DMA-Controller; dieser schreibt die entsprechende Hauptspeicheradresse auf den Adressbus und signalisiert über die Bestätigungsleitung dem Gerätecontroller, die Übertragung durchzuführen. Dann zählt der DMA-Controller die Adresse für das nächste Wort hoch. Erst wenn alle Wörter des gesamten Blocks übertragen sind, löst er eine Hardware-Unterbrechung der CPU aus.

Quelle

  • Altaf, Ahmed et. al. Design and Implementation of a Direct Memory Access Controller for Embedded Applications. In: International Journal of Technology. Volume 10. Issue 2. Seite 311ff. 2019. DOI: 10.14716/ijtech.v10i2.795


0
0
0.000
2 comments
avatar

Danke für deinen Beitrag. Eine vor allem glückliche Woche wünsch ich dir

0
0
0.000
avatar


This post has been voted on by the SteemSTEM curation team and voting trail. It is elligible for support from @curie and @minnowbooster.

If you appreciate the work we are doing, then consider supporting our witness @stem.witness. Additional witness support to the curie witness would be appreciated as well.

For additional information please join us on the SteemSTEM discord and to get to know the rest of the community!

Please consider using the steemstem.io app and/or including @steemstem in the list of beneficiaries of this post. This could yield a stronger support from SteemSTEM.

0
0
0.000