Direkter Speicherzugang

Direkter Speicherzugang (DMA) ist eine Eigenschaft von modernen Computern, die bestimmten Hardware-Subsystemen innerhalb des Computers erlaubt, auf Systemgedächtnis unabhängig von der in einer Prozession gehenden Haupteinheit (CPU) zuzugreifen.

Ohne DMA, wenn die Zentraleinheit programmierten Eingang/Produktion verwendet, wird sie normalerweise für die komplette Dauer des gelesenen völlig besetzt, oder schreiben Sie Operation, und ist so nicht verfügbar, um andere Arbeit durchzuführen. Mit DMA beginnt die Zentraleinheit die Übertragung, tut andere Operationen, während die Übertragung im Gange ist, und eine Unterbrechung vom DMA Kontrolleur erhält, wenn die Operation getan wird. Diese Eigenschaft ist jede Zeit nützlich die Zentraleinheit kann mit der Rate der Datenübertragung nicht Schritt halten, oder wo die Zentraleinheit nützliche Arbeit durchführen muss, während sie auf eine relativ langsame Eingabe/Ausgabe-Datenübertragung wartet. Viele Hardware-Systeme verwenden DMA, einschließlich Laufwerk-Kontrolleure, Grafikkarten, Netzkarten und gesunder Karten. DMA wird auch für die Intraspan-Datenübertragung in Mehrkernverarbeitern verwendet. Computer, die DMA Kanäle haben, können Daten und von Geräten mit viel weniger Zentraleinheit oben übertragen als Computer ohne einen DMA Kanal. Ähnlich kann ein in einer Prozession gehendes Element innerhalb eines Mehrkernverarbeiters Daten und von seinem lokalen Gedächtnis übertragen, ohne seine Verarbeiter-Zeit zu besetzen, Berechnung erlaubend, und Daten wechseln über, um in der Parallele weiterzugehen.

DMA kann auch für das "Gedächtnis zum Gedächtnis" das Kopieren oder Bewegen von Daten innerhalb des Gedächtnisses verwendet werden. DMA kann teure Speicheroperationen abladen, wie große Kopien oder Streuung - sammeln Operationen von der Zentraleinheit bis einen hingebungsvollen DMA Motor. Ein Durchführungsbeispiel ist die Eingabe/Ausgabe-Beschleunigungstechnologie.

Grundsatz

Ein DMA Kontrolleur kann Adressen erzeugen und Gedächtnis gelesen oder Schreibzyklen beginnen. Es enthält mehrere Register, die geschrieben und durch die Zentraleinheit gelesen werden können. Diese schließen ein Speicheradressregister, ein Byte-Register der Zählung und ein oder mehr Kontrollregister ein. Die Kontrollregister geben den Eingabe/Ausgabe-Hafen an, um, die Richtung der Übertragung zu verwenden (vom Eingabe/Ausgabe-Gerät lesend oder dem Eingabe/Ausgabe-Gerät schreibend), die Übertragungseinheit (Byte auf einmal oder Wort auf einmal), und die Zahl von Bytes, um in einem Platzen überzuwechseln.

Um einen Eingang, Produktion oder Gedächtnis-zu-Gedächtnis-Operation auszuführen, initialisiert der Gastgeber-Verarbeiter den DMA Kontrolleur mit einer Zählung der Zahl von Wörtern, um überzuwechseln, und das Gedächtnis richtet an den Gebrauch. Die Zentraleinheit sendet dann Befehle an ein peripherisches Gerät, um Übertragung von Daten zu beginnen. Der DMA Kontrolleur stellt dann Adressen und Lesen/Schreiben-Kontrolllinien zum Systemgedächtnis zur Verfügung. Jedes Mal, wenn ein Wort von Daten bereit ist, zwischen dem peripherischen Gerät und Gedächtnis übertragen zu werden, erhöht der DMA Kontrolleur sein inneres Adressregister, bis der volle Datenblock übertragen wird.

DMA Übertragungen können entweder ein Wort auf einmal vorkommen, der Zentraleinheit erlaubend, auf Gedächtnis auf abwechselnden Buszyklen zuzugreifen - das wird Zyklus genannt stehlend, da der DMA Kontrolleur und die Zentraleinheit um den Speicherzugang kämpfen. In der Platzen-Weise DMA kann die Zentraleinheit angezogen werden halten, während die DMA-Übertragung vorkommt und ein voller Block von vielleicht Hunderten oder Tausende von Wörtern bewegt werden können. Wo Speicherzyklen viel schneller sind als Verarbeiter-Zyklen, ist ein durchgeschossener DMA Zyklus möglich, wo der DMA Kontrolleur Gedächtnis verwendet, während die Zentraleinheit nicht kann.

In einem Busmeistern-System kann sowohl der Zentraleinheit als auch Peripherie Kontrolle des Speicherbusses gewährt werden. Wo ein peripherischer Busmaster werden kann, kann es dem Systemgedächtnis ohne Beteiligung der Zentraleinheit direkt schreiben, Speicheradresse zur Verfügung stellend, und Signale, wie erforderlich, kontrollieren. Ein Maß muss zur Verfügung gestellt werden, um den Verarbeiter in eine halten Bedingung zu stellen, so dass Busstreit nicht vorkommt.

Verfahrensweisen

Platzen-Weise

Ein kompletter Datenblock wird in einer aneinander grenzender Folge übertragen. Sobald dem DMA Kontrolleur Zugang zum Systembus durch die Zentraleinheit gewährt wird, überträgt es alle Bytes von Daten im Datenblock vor der Ausgabe der Kontrolle der Systembusse zurück zur Zentraleinheit. Diese Weise ist nützlich, um Programm oder Datendateien ins Gedächtnis zu laden, aber macht die seit relativ langen Zeiträumen der Zeit untätige Zentraleinheit. Die Weise wird auch Block-Übertragungsweise genannt.

Zyklus-Diebstahl-Weise

Die Zyklus-Diebstahl-Weise wird in Systemen verwendet, in denen die Zentraleinheit für die für Platzen-Übertragungsweisen erforderliche Zeitdauer nicht arbeitsunfähig sein sollte. In der Zyklus-Diebstahl-Weise erhält der DMA Kontrolleur Zugang zum Systembus derselbe Weg wie in der Platzen-Weise, mit BR (Bus Request) und BG (Bus Grant) Signale, die die zwei Signale sind, die Schnittstelle zwischen der Zentraleinheit und dem DMA Kontrolleur kontrollierend. Jedoch, in der Zyklus-Diebstahl-Weise, nach einem Byte der Datenübertragung, ist die Kontrolle des Systembusses deasserted zur Zentraleinheit über BG. Es wird dann ständig wieder über BR gebeten, ein Byte von Daten pro Bitte übertragend, bis der komplette Datenblock übertragen worden ist. Durch das dauernde Erreichen und die Ausgabe der Kontrolle des Systembusses, der DMA Kontrolleur im Wesentlichen Auslassungsinstruktion und Datenübertragungen. Die Zentraleinheit bearbeitet eine Instruktion, dann überträgt der DMA Kontrolleur einen Datenwert und so weiter. Einerseits wird der Datenblock so schnell in der Zyklus-Diebstahl-Weise nicht übertragen wie in der Platzen-Weise, aber andererseits wird die Zentraleinheit für so lange in der Platzen-Weise nicht vertrödelt. Zyklus-Diebstahl-Weise ist für Kontrolleure dieser Monitor Daten in Realtime nützlich.

Durchsichtige Weise

Die durchsichtige Weise nimmt den grössten Teil der Zeit, um einen Datenblock zu übertragen, noch ist es auch die effizienteste Weise in Bezug auf die gesamte Systemleistung. Der DMA Kontrolleur überträgt nur Daten, wenn die Zentraleinheit Operationen durchführt, die die Systembusse nicht verwenden. Es ist der primäre Vorteil der durchsichtigen Weise, dass die Zentraleinheit nie aufhört, seine Programme durchzuführen, und die DMA-Übertragung in Bezug auf die Zeit frei ist. Der Nachteil der durchsichtigen Weise ist, dass die Hardware bestimmen muss, wenn die Zentraleinheit die Systembusse nicht verwendet, die kompliziert und relativ teuer sein können.

Kohärenz des geheimen Lagers

DMA kann zu Kohärenz-Problemen des geheimen Lagers führen. Stellen Sie sich eine Zentraleinheit vor, die mit einem geheimen Lager und einem Außengedächtnis ausgestattet ist, auf das direkt durch Geräte mit DMA zugegriffen werden kann. Wenn die Zentraleinheitszugriffsposition X im Gedächtnis, der aktuelle Wert im geheimen Lager versorgt wird. Nachfolgende Operationen auf X werden die versteckte Kopie X, aber nicht die Außenspeicherversion X aktualisieren, ein zurückschreiben geheimes Lager annehmend. Wenn das geheime Lager zum Gedächtnis vor dem nächsten Mal nicht gespült wird, wenn ein Gerät versucht, X zuzugreifen, wird das Gerät einen alten Wert von X erhalten.

Ähnlich, wenn die versteckte Kopie X nicht ungültig gemacht wird, wenn ein Gerät einen neuen Wert dem Gedächtnis schreibt, dann wird die Zentraleinheit auf einem alten Wert von X funktionieren.

Dieses Problem kann auf eine von zwei Weisen im Systemdesign gerichtet werden: Mit dem geheimem Lager zusammenhängende Systeme führen eine Methode in der Hardware durch, wodurch äußerlich schreibt, werden dem Kontrolleur des geheimen Lagers Zeichen gegeben, der dann leistet, schreibt eine Aufhebung des geheimen Lagers für DMA, oder das Erröten des geheimen Lagers für DMA liest. Nichtzusammenhängende Systeme verlassen das zur Software, wo der OS dann sicherstellen muss, dass die Linien des geheimen Lagers gespült werden, bevor eine aus dem Amt scheiden DMA-Übertragung angefangen und ungültig gemacht wird, bevor auf eine durch eine eingehende DMA-Übertragung betroffene Speicherreihe zugegriffen wird. Der OS muss sicherstellen, dass auf die Speicherreihe durch keine laufenden Fäden inzwischen zugegriffen wird. Die letzte Annäherung stellt einige oben in die DMA Operation vor, weil der grösste Teil der Hardware verlangt, dass eine Schleife jede Linie des geheimen Lagers individuell ungültig macht.

Hybriden bestehen auch, wo das sekundäre L2 geheime Lager zusammenhängend ist, während das L1 geheime Lager (normalerweise auf der Zentraleinheit) durch die Software geführt wird.

Beispiele

ISA

In ursprünglichem IBM PC gab es nur einen Kontrolleur von Intel 8237 DMA, der dazu fähig ist, vier DMA Kanäle zur Verfügung zu stellen (hat 0-3 numeriert). Diese DMA Kanäle haben 8-Bit-Übertragungen durchgeführt und konnten nur das erste Megabyte des RAM richten. Mit IBM PC/AT wurde ein zweiter 8237 DMA Kontrolleur hinzugefügt (Kanäle 5-7; Kanal 4 ist unbrauchbar), und das Seitenregister wurde neu verdrahtet, um den vollen 16-Mb-Speicheradressraum der 80286 Zentraleinheit zu richten. Dieser zweite Kontrolleur hat 16-Bit-Übertragungen durchgeführt.

Wegen ihrer langsam vergehenden Leistung (2.5 Mbit/s) sind diese Geräte seit dem Advent des 80386 Verarbeiters und seiner Kapazität für 32-Bit-Übertragungen größtenteils veraltet gewesen. Sie werden noch im Ausmaß unterstützt sie sind erforderlich, eingebaute Vermächtnis-PC-Hardware auf modernen Maschinen zu unterstützen. Die einzigen Stücke der Vermächtnis-Hardware, die ISA DMA verwenden und noch ziemlich üblich sind, sind die eingebauten Diskette-Kontrolleure von vielen PC mainboards und jene IEEE 1284 parallele Häfen, die die schnelle ECP Weise unterstützen.

Jeder DMA Kanal hat ein 16-Bit-Adressregister und ein damit vereinigtes 16-Bit-Register der Zählung. Um zu beginnen, übertragen Daten die Gerät-Driver-Sete die Adresse und Zählung des DMA Kanals schreiben sich zusammen mit der Richtung der Datenübertragung ein, lesen Sie oder schreiben Sie. Es beauftragt dann die DMA Hardware, die Übertragung zu beginnen. Wenn die Übertragung abgeschlossen ist, unterbricht das Gerät die Zentraleinheit.

Streuung - folgert, dass DMA die Übertragung von Daten zu und von vielfachen Speicherbereichen in einer einzelnen DMA Transaktion erlaubt. Es ist zum Anketten zusammen vielfacher einfacher DMA-Bitten gleichwertig. Die Motivation soll vielfache Unterbrechung des Eingangs/Produktion abladen, und Daten kopieren Aufgaben von der Zentraleinheit.

DRQ tritt für DMA-Bitte ein; DACK für DMA erkennen an. Diese Symbole, die auf der Hardware schematics Computersysteme mit der DMA Funktionalität gesehen sind, vertreten elektronische Signallinien zwischen der Zentraleinheit und dem DMA Kontrolleur. Jeder DMA Kanal hat eine Bitte, und man Erkennt Linie An. Ein Gerät, das DMA verwendet, muss konfiguriert werden, um beide Linien des zugeteilten DMA Kanals zu verwenden.

Standard Anweisungen von ISA DMA:

</ol>

PCI

Eine PCI Architektur hat keinen DMA Hauptkontrolleur verschieden von ISA. Statt dessen kann jeder PCI Bestandteil um Kontrolle des Busses bitten ("werden der Busmaster"), und bitten Sie, zu lesen von und dem Systemgedächtnis zu schreiben. Genauer bittet ein PCI Bestandteil um Buseigentumsrecht vom PCI Buskontrolleur (gewöhnlich der southbridge in einem modernen PC-Design), der Schiedsrichter sein wird, wenn mehrere Geräte um Buseigentumsrecht gleichzeitig bitten, da es nur einen Busmaster auf einmal geben kann. Wenn dem Bestandteil Eigentumsrecht gewährt wird, wird er normal gelesen ausgeben und Befehle über den PCI Bus schreiben, der vom Buskontrolleur gefordert und dem Speicherkontrolleur nachgeschickt wird, der ein Schema verwendet, das zu jedem chipset spezifisch ist.

Als ein Beispiel, auf einer modernen AMD Steckdose hat PC AM2-basiert, der southbridge wird die Transaktionen zum northbridge nachschicken (der auf der Zentraleinheit integriert wird, sterben) das Verwenden von HyperTransport, der sie der Reihe nach zu DDR2 Operationen umwandeln und sie auf dem DDR2 Speicherbus verbreiten wird. Wie gesehen werden kann, gibt es ganze Anzahl von Schritten, die an einem PCI DMA Übertragung beteiligt sind; jedoch wirft das wenig Problem auf, da das PCI Gerät oder der PCI Bus selbst eine Größenordnung langsamer sind als Rest von Bestandteilen (sieh Liste der Gerät-Bandbreite).

Eine moderne x86 Zentraleinheit kann mehr als 4 GB des Gedächtnisses verwenden, PAE, 36 Bit verwertend, Weise oder die heimische 64-Bit-Weise von x86-64 Zentraleinheiten richtend. In solch einem Fall ist ein Gerät mit DMA mit einem 32-Bit-Adressbus unfähig, Gedächtnis über der 4-GB-Linie zu richten. Der neue Mechanismus von Double Address Cycle (DAC), wenn durchgeführt sowohl auf dem PCI Bus als auch auf dem Gerät selbst, ermöglicht das DMA 64-Bit-Wenden. Sonst würde das Betriebssystem um das Problem durch jeder verwendende kostspielige doppelte Puffer (Windows-Nomenklatur) auch bekannt als Schlag-Puffer (Linux) arbeiten müssen, oder es konnte einen IOMMU verwenden, um Adressumrechnungsdienstleistungen zur Verfügung zu stellen, wenn man anwesend ist.

I/OAT

Als ein Beispiel des DMA in einer Mehrzweckzentraleinheit vereinigten Motors schließt neuerer Intel Xeon chipsets eine DMA Motortechnologie genannt Eingabe/Ausgabe-Beschleunigungstechnologie (I/OAT), beabsichtigt ein, um Netzleistung Netzschnittstellen des hohen Durchflusses in besonderem gigabit Ethernet und schneller zu verbessern. Jedoch zeigen verschiedene Abrisspunkte mit dieser Annäherung durch den Linux Kernentwickler von Intel Andrew Grover nicht mehr als 10-%-Verbesserung in der Zentraleinheitsanwendung mit dem Empfang von Arbeitspensen und keiner Verbesserung an, wenn sie Daten übersenden.

AHB

In Systemen auf einem Span und eingebetteten Systemen ist typische Systembusinfrastruktur ein komplizierter Bus auf dem Span wie AMBA Hochleistungsbus. AMBA definiert zwei Arten von AHB Bestandteilen: Master und Sklave. Eine Sklavenschnittstelle ist der programmierten Eingabe/Ausgabe ähnlich, durch die die Software (auf der eingebetteten Zentraleinheit, z.B Arm laufend), Eingabe/Ausgabe-Register oder (weniger allgemein) lokale Speicherblöcke innerhalb des Geräts schreiben/lesen kann. Eine Master-Schnittstelle kann durch das Gerät verwendet werden, um DMA Transaktionen für das Systemgedächtnis durchzuführen, ohne die Zentraleinheit schwer zu laden.

Deshalb werden hohe Bandbreite-Geräte wie Netzkontrolleure, die riesige Datenmengen dem Systemgedächtnis übertragen müssen, zwei Schnittstelle-Adapter zum AHB haben: ein Master und eine Sklavenschnittstelle. Das ist, weil Busse auf dem Span wie AHB das Tri-Angeben des Busses oder Wechseln der Richtung keiner Linie auf dem Bus unterstützen. Wie PCI ist kein DMA Hauptkontrolleur erforderlich, da der DMA das Busmeistern ist, aber ein Schiedsrichter ist im Falle der vielfachen Master-Gegenwart auf dem System erforderlich.

Innerlich ist ein DMA Mehrkanalmotor gewöhnlich im Gerät da, um zu leisten, vielfache gleichzeitige Streuung - sammeln Operationen, wie programmiert, durch die Software.

Zelle

Als ein Beispiel-Gebrauch von DMA in einem Mehrverarbeiter-System auf dem Span vereinigt IBM/Sony/Toshiba's Zellverarbeiter einen DMA Motor für jedes seiner 9 in einer Prozession gehenden Elemente einschließlich eines Macht-Verarbeiter-Elements (PPE) und acht synergistischer Verarbeiter-Elemente (SPEs). Da die Instruktionen der Last/Ladens des SPE Lesen/Schreiben nur sein eigenes lokales Gedächtnis können, hängt ein SPE völlig von DMAs ab, um Daten und vom Hauptgedächtnis und den lokalen Erinnerungen anderen SPEs zu übertragen. So handelt der DMA als ein primäres Mittel der Datenübertragung unter Kernen innerhalb dieser Zentraleinheit (im Gegensatz zu mit dem geheimem Lager zusammenhängenden CMP Architekturen wie der kommende Mehrzweck-GPU von Intel, Larrabee).

DMA in der Zelle ist völlig zusammenhängendes geheimes Lager (Zeichen jedoch lokale Läden von SPEs, der auf durch DMA bedient ist, handeln als allgemein zusammenhängendes geheimes Lager im Standardsinn nicht). Sowohl in gelesenem (bekommen) als auch schreiben ("gestellt"), ein DMA-Befehl kann entweder ein einzelnes Block-Gebiet der Größe bis zu 16 Kilobytes oder eine Liste von 2 bis 2048 solchen Blöcken übertragen. Der DMA-Befehl wird durch das Spezifizieren eines Paares einer lokalen Adresse und einer entfernten Adresse ausgegeben: Zum Beispiel, wenn ein SPE Programm einen gestellten DMA-Befehl ausgibt, gibt es eine Adresse seines eigenen lokalen Gedächtnisses als die Quelle und eine virtuelle Speicheradresse an (entweder zum Hauptgedächtnis oder zum lokalen Gedächtnis eines anderen SPE hinweisend), als das Ziel zusammen mit einer Block-Größe. Gemäß einem neuen Experiment erreicht eine wirksame Maximalleistung von DMA in der Zelle (3 GHz, unter dem gleichförmigen Verkehr) 200 GB pro Sekunde.

Siehe auch

  • AN der Verhaftung
  • Blitter
  • Kanaleingabe/Ausgabe
  • DMA greifen an
  • Stimmabgabe (der Informatik)
  • Entfernter direkter Speicherzugang

Zeichen


Richard von Krafft-Ebing / Željko Ražnatović
Impressum & Datenschutz