Was ist Direct Memory Access (DMA) und wie funktioniert es? [MiniTool Wiki]
What Is Direct Memory Access
Schnelle Navigation :
Sie können die übernehmen RDMA Technologie, mit der Computer in einem Netzwerk Daten im Hauptspeicher austauschen können, ohne den Prozessor, den Cache oder das Betriebssystem eines Computers einzubeziehen. Sie können die DMA-Funktion aber auch verwenden, um Daten von einem angeschlossenen Gerät direkt an den Speicher auf der Hauptplatine des Computers zu senden. Dieser Beitrag von MiniTool spricht hauptsächlich über DMA.
Die Definition des direkten Speicherzugriffs
Was ist der direkte Speicherzugriff? Direkter Speicherzugriff kann mit DMA abgekürzt werden, was ein Merkmal von Computersystemen ist. Es ermöglicht Eingabe- / Ausgabegeräten (E / A) den Zugriff auf den Hauptsystemspeicher ( Arbeitsspeicher ), unabhängig von der Zentraleinheit (CPU), die den Speicherbetrieb beschleunigt.
Trinkgeld: Dieser Beitrag könnte Sie interessieren - 8 Nützliche Lösungen, um Ihre CPU in Windows 10 zu 100% zu reparieren .
Ohne direkten Speicherzugriff ist die CPU, wenn sie programmierte Ein- / Ausgänge verwendet, normalerweise während des gesamten Lese- oder Schreibvorgangs voll belegt, sodass sie keine anderen Aufgaben ausführen kann. Bei DMA initiiert die CPU zuerst die Übertragung, führt dann während der Übertragung andere Operationen aus und empfängt schließlich eine Unterbrechung vom DMA-Controller (DMAC), wenn die Operation abgeschlossen ist.
Der direkte Speicherzugriff ist nützlich, wenn die CPU nicht mit der Datenübertragungsrate Schritt halten kann oder wenn die CPU Arbeiten ausführen muss, während sie auf relativ langsame E / A-Datenübertragungen wartet.
Mehrere Hardwaresysteme verwenden direkten Speicherzugriff, z. B. Festplattencontroller, Grafikkarten, Netzwerkkarten und Soundkarten. DMA wird auch für die On-Chip-Datenübertragung in Mehrkernprozessoren verwendet. Im Vergleich zu Computern ohne Direct Memory Access-Kanäle können Computer mit DMA-Kanälen Daten zwischen Geräten mit viel weniger CPU-Overhead übertragen.
Der direkte Speicherzugriff kann auch für 'Speicher zu Speicher' verwendet werden, um Daten im Speicher zu kopieren oder zu verschieben. Es kann teure Speicheroperationen (wie große Kopien oder Scatter-Gather-Operationen) von der CPU auf eine dedizierte DMA-Engine übertragen. DMA ist wichtig in Network-on-Chip- und Memory-Computing-Architekturen.
Wie funktioniert der direkte Speicherzugriff?
Wie funktioniert dann der direkte Speicherzugriff? Standard Direct Memory Access (auch als DMA von Drittanbietern bezeichnet) verwendet einen DMA-Controller. Der DMA-Controller kann Speicheradressen erzeugen und Speicherlese- oder -schreibzyklen starten. Es umfasst mehrere Hardwareregister, die von der CPU gelesen und geschrieben werden können.
Diese Register bestehen aus einem Speicheradressregister, einem Bytezählregister und einem oder mehreren Steuerregistern. Abhängig von den vom Direct Memory Access-Controller bereitgestellten Funktionen können diese Steuerregister eine Kombination aus Quelle, Ziel, Übertragungsrichtung (Lesen von oder Schreiben auf E / A-Gerät), Größe der Übertragungseinheit und / oder Anzahl von festlegen Bytes, die in einem Burst übertragen werden sollen.
Um Eingabe-, Ausgabe- oder Speicher-zu-Speicher-Operationen auszuführen, initialisiert der Host-Prozessor den DMA-Controller mit der Anzahl der zu übertragenden Wörter und der zu verwendenden Speicheradresse. Dann befiehlt die CPU dem Peripheriegerät, mit der Datenübertragung zu beginnen.
Dann bietet der Direct Memory Access Controller Adressen und Lese- / Schreibsteuerleitungen für den Systemspeicher an. Jedes Mal, wenn ein Datenbyte für die Übertragung zwischen dem Peripheriegerät und dem Speicher vorbereitet wird, erhöht der DMA-Controller sein internes Adressregister, bis ein vollständiger Datenblock übertragen wird.
Betriebsarten
Der direkte Speicherzugriff funktioniert in verschiedenen Betriebsarten unterschiedlich.
Burst-Modus
Im Burst-Modus wird der gesamte Datenblock in einer kontinuierlichen Sequenz übertragen. Sobald die CPU dem DMA-Controller den Zugriff auf den Systembus ermöglicht, überträgt der DMA-Controller alle Datenbytes im Datenblock, bevor die Steuerung der Systembusse an die CPU zurückgegeben wird. Dies führt jedoch dazu, dass die CPU für a inaktiv ist beträchtliche lange Zeit. Dieser Modus wird auch als 'Block Transfer Mode' bezeichnet.
Cycle Stealing-Modus
Der Zyklusdiebstahlmodus wird in einem System verwendet, in dem die CPU nicht für die für den Burst-Übertragungsmodus erforderliche Zeit deaktiviert werden kann. Im Zyklusdiebstahlmodus erhält der DMA-Controller den Zugriff auf den Systembus unter Verwendung der Signale BR (Busanforderung) und BG (Busgewährung), die mit dem Burst-Modus identisch sind. Diese beiden Signale steuern die Schnittstelle zwischen der CPU und dem DMA-Controller.
Einerseits ist im Zyklusdiebstahlmodus die Datenblockübertragungsgeschwindigkeit nicht so schnell wie im Burst-Modus, andererseits ist die CPU-Leerlaufzeit nicht so lang wie im Burst-Modus.
Transparenter Modus
Der transparente Modus benötigt die längste Zeit zum Übertragen von Datenblöcken, ist jedoch auch der effizienteste Modus in Bezug auf die Gesamtsystemleistung. Im transparenten Modus überträgt der Direct Memory Access-Controller Daten nur, wenn die CPU Vorgänge ausführt, bei denen die Systembusse nicht verwendet werden.
Der Hauptvorteil des transparenten Modus besteht darin, dass die CPU die Ausführung ihrer Programme nie beendet und die direkten Speicherzugriffsübertragungen zeitlich kostenlos sind, während der Nachteil darin besteht, dass die Hardware feststellen muss, wann die CPU die Systembusse nicht verwendet, was möglich ist kompliziert sein. Dies wird auch als 'versteckter DMA-Datenübertragungsmodus' bezeichnet.