Direkter Speicherzugriff

Direkter Speicherzugriff (DMA) ist eine Funktion von Computersystemen und ermöglicht es bestimmten Hardware -Subsystemen, auf das Hauptsystem zuzugreifen Erinnerung unabhängig von der Zentrale Verarbeitungseinheit (ZENTRALPROZESSOR).

Ohne DMA, wenn die CPU verwendet programmierter Eingang/AusgangEs ist in der Regel während der gesamten Dauer des Lese- oder Schreibvorgangs vollständig besetzt und ist daher nicht verfügbar, um andere Arbeiten auszuführen. Mit DMA initiiert die CPU zunächst die Übertragung, dann wird andere Vorgänge durchgeführt, während die Übertragung im Gange ist und schließlich eine erhält eine unterbrechen vom DMA -Controller (DMAC), wenn der Betrieb abgeschlossen ist. Diese Funktion ist jederzeit nützlich, wenn die CPU nicht mit der Datenübertragungsrate Schritt halten kann oder wenn die CPU Arbeit ausführen muss, während sie auf eine relativ langsame E/A -Datenübertragung warten. Viele Hardware -Systeme verwenden DMA, einschließlich Festplattenantrieb Controller, Grafikkarten, Netzwerkkarten und Soundkarten. DMA wird auch für die Intra-Chip-Datenübertragung in verwendet Multi-Core-Prozessoren. Computer mit DMA -Kanälen können Daten auf und von Geräten mit viel weniger CPU -Overhead als Computer ohne DMA -Kanäle übertragen. Ebenso a Verarbeitungsschaltung In einem Multi-Core-Prozessor kann Daten auf und aus seinem lokalen Speicher übertragen, ohne seine Prozessorzeit zu besetzen, sodass die Berechnung und Datenübertragung parallel fortgesetzt werden können.

DMA kann auch für das Kopieren oder Verschieben von Daten im Speicher "Speicher zum Speicher" verwendet werden. DMA kann teure Speichervorgänge abladen, z. B. große Kopien oder Streuungstamm Operationen von der CPU bis zu einem dedizierten DMA -Motor. Ein Implementierungsbeispiel ist das I/O Acceleration Technology. DMA ist von Interesse an Netzwerk-On-Chip und In-Memory Computing Architekturen.

Prinzipien

Dritte Seite

Hauptplatine von a NextCube Computer (1990). Die beiden großen integrierte Schaltkreise Unterhalb der Mitte des Bildes befinden sich der DMA -Controller (l.) Und - ungewöhnlich - ein zusätzlicher DMA -Controller (r.) Für die Magneto-optische Scheibe verwendet statt a Festplatte In der ersten Serie dieses Computermodells.

Standard DMA, auch DMA von Drittanbietern genannt, verwendet einen DMA-Controller. Ein DMA -Controller kann erzeugen Speicheradressen und initiieren Sie Speicherlesen- oder Schreibzyklen. Es enthält mehrere Hardwareregister Das kann von der CPU geschrieben und gelesen werden. Dazu gehören ein Speicheradressregister, ein Byte -Zählregister und ein oder mehrere Kontrollregister. Je nachdem, welche Funktionen der DMA -Controller bereitstellt, geben diese Steuerregister möglicherweise eine Kombination aus der Quelle, dem Ziel, der Richtung der Übertragung (lesen Sie vom E/A -Gerät oder Schreiben auf das E/A -Gerät) an, die Größe des Übertragungseinheit und/oder die Anzahl der Bytes, die in einem Burst übertragen werden sollen.[1]

Um einen Eingangs-, Ausgangs- oder Speicher-zu-Memory-Betrieb auszuführen, initialisiert der Hostprozessor den DMA-Controller mit einer Anzahl der Anzahl von Wörter Übertragung und die zu verwendende Speicheradresse. Die CPU befiehlt dann das periphere Gerät, um eine Datenübertragung zu initiieren. Der DMA -Controller bietet dann Adressen und Lesen/Schreibsteuerungszeilen für den Systemspeicher. Jedes Mal, wenn ein Datenbyte bereit ist, zwischen dem peripheren Gerät und dem Speicher übertragen zu werden, erhöht der DMA -Controller sein internes Adressregister, bis der volle Datenblock übertragen wird.

Bus -Mastering

In einem Bus -Mastering Das System, auch als First-Party-DMA-System bekannt, kann die CPU und die Peripheriegeräte jeweils die Kontrolle über den Speicherbus erhalten. Wenn ein Peripherie einen Busmaster werden kann, kann er ohne die Beteiligung der CPU direkt in den Systemspeicher schreiben, wobei die Signale für Speicheradresse und Kontrollsignale nach Bedarf bereitgestellt werden. Es müssen einige Maßnahmen erfolgt werden, um den Prozessor in eine Haltebedingung zu versetzen, damit keine Busausrechnung auftritt.

Betriebsmodi

Burst-Modus

Im Burst-ModusEin vollständiger Datenblock wird in einer zusammenhängenden Reihenfolge übertragen. Sobald dem DMA -Controller von der CPU Zugriff auf den Systembus gewährt wurde, überträgt er alle Datenbytes im Datenblock, bevor die Steuerung der Systembusse an die CPU zurückgeführt wird, die CPU jedoch relativ lange Zeiträume inaktiv macht. Der Modus wird auch als "Blocktransfermodus" bezeichnet.

Zyklus -Diebstahlmodus

Das Zyklus -Diebstahl Modus wird in Systemen verwendet, in denen die CPU nicht für die Zeitdauer deaktiviert werden sollte, die für Burst -Transfermodi erforderlich ist. Im Zyklusstealmodus erhält der DMA -Controller den Zugriff auf den Systembus genauso wie im Burst -Modus unter Verwendung des Burst -Modus BR (Busanfrage) und Bg (Buszuschuss) Signale, die beiden Signale, die die Schnittstelle zwischen der CPU und dem DMA -Controller steuern. Im Zyklusstealmodus wird jedoch nach einer Einheit (z. B. Byte) der Datenübertragung die Steuerung des Systembusses über BG an die CPU getestet. Es wird dann kontinuierlich über BR angefordert, wobei eine Einheit (z. B. Byte) von Daten pro Anforderung übertragen wird, bis der gesamte Datenblock übertragen wurde. Durch kontinuierliches Erhalten und Freisetzung der Steuerung des Systembusses verschärft der DMA -Controller im Wesentlichen Anweisungen und Datenübertragungen. Die CPU verarbeitet eine Anweisung, dann überträgt der DMA -Controller einen Datenwert und so weiter. Die Daten werden nicht so schnell übertragen, aber die CPU wird nicht so lange im Burst -Modus regelt. Der Zyklus -Diebstahlsmodus ist nützlich für Controller, die Daten in Echtzeit überwachen.

Transparenter Modus

Der transparente Modus braucht die meiste Zeit, um einen Datenblock zu übertragen, aber auch der effizienteste Modus in Bezug auf die Gesamtsystemleistung. Im transparenten Modus überträgt der DMA -Controller Daten nur, wenn die CPU Vorgänge ausführt, die die Systembusse nicht verwenden. Der Hauptvorteil des transparenten Modus besteht darin, dass die CPU die Ausführung ihrer Programme nie mehr ausführt und die DMA -Übertragung in Bezug auf die Zeit frei ist, während der Nachteil darin besteht, dass die Hardware bestimmen muss, wann die CPU die Systembusse nicht verwendet, was komplex sein kann . Dies wird auch "genannt"Versteckter DMA -Datenübertragungsmodus".

Cache -Kohärenz

Cache -Inkohärenz aufgrund von DMA

DMA kann zu führen Cache -Kohärenz Probleme. Stellen Sie sich eine CPU vor, die mit einem Cache und einem externen Speicher ausgestattet ist, auf den direkt mit DMA von Geräten zugegriffen werden kann. Wenn die CPU im Speicher auf Position X zugreift, wird der aktuelle Wert im Cache gespeichert. Nachfolgende Vorgänge auf X aktualisieren die zwischengespeicherte Kopie von x, jedoch nicht die externe Speicherversion von X unter der Annahme von a Report-Back-Cache. Wenn der Cache vor dem nächsten Mal, wenn ein Gerät auf X zugreifen versucht, nicht zum Speicher gespült wird, erhält das Gerät einen abgestandenen Wert von X.

Wenn die zwischengespeicherte Kopie von X nicht ungültig ist, wenn ein Gerät einen neuen Wert in den Speicher schreibt, wird die CPU mit einem abgeschlossenen Wert von X betrieben.

Dieses Problem kann auf eine von zwei Arten in Systemdesign angesprochen werden: Cache-Kohärente Systeme implementieren eine Methode in Hardware mit dem Namen Bus schnüffeln, wobei externe Schreibvorgänge dem Cache -Controller signalisiert werden, der dann a ausführt Cache -Ungültigkeit Für DMA schreibt oder Cache Flush für DMA -Lesevorgänge. Nicht kohärente Systeme überlassen dies der Software, wobei das Betriebssystem dann sicherstellen muss, dass die Cache-Linien gespült werden, bevor ein ausgehender DMA-Transfer gestartet und ungültig wird, bevor ein Speicherbereich, der von einem eingehenden DMA-Transfer beeinflusst wird, zugegriffen wird. Das Betriebssystem muss sicherstellen, dass der Speicherbereich in der Zwischenzeit nicht von laufenden Threads zugegriffen wird. Der letztere Ansatz führt zu einem gewissen Overhead in den DMA -Betrieb, da die meisten Hardware eine Schleife benötigen, um jede Cache -Linie einzeln ungültig zu machen.

Es gibt auch Hybride, wobei der sekundäre L2-Cache kohärent ist, während der L1-Cache (typischerweise auf CPU) von Software verwaltet wird.

Beispiele

IST EIN

Im Original IBM PC (und das Follow-up PC/XT), Es gab nur einen Intel 8237 DMA -Controller in der Lage, vier DMA -Kanäle bereitzustellen (nummeriert 0–3). Diese DMA-Kanäle führten 8-Bit-Transfers durch (als 8237 war ein 8-Bit I8088 CPU/Bus -Architektur), konnte nur die erste (I8086/8088-Standard) Megabyte von RAM und waren darauf beschränkt, Single 64 zu adressierenKB Segmente in diesem Raum (obwohl die Quell- und Zielkanäle verschiedene Segmente angehen könnten). Darüber hinaus konnte der Controller nur für Transfers zu, aus oder zwischen Ausdehnungsbus-E/A-Geräten verwendet werden, da der 8237 nur Speicher-zu-Memory-Transfers unter Verwendung von Kanälen 0 und 1 durchführen konnte, von denen der Kanal 0 im PC (& XT ) war für Dynamischer Speicher Aktualisierung. Dies verhinderte, dass es als Allgemeinzweck verwendet wurde.Blitz"Und folglich blockieren die Speicherbewegungen im PC, begrenzt durch die allgemeine PIO -Geschwindigkeit der CPU, sehr langsam.

Mit dem IBM PC/at, das erweiterte Im Bus (Vertrauter als das, als die IST EIN, oder "Branchenstandard-Architektur") fügte einen zweiten 8237 DMA-Controller hinzu, um drei weitere bereitzustellen. Kaskade zum ersten 8237). Das Seitenregister wurde auch neu verdrahtet, um den vollständigen 16 -MB -Speicheradressenbereich der 80286 -CPU zu beheben. Dieser zweite Controller wurde auch auf eine Weise integriert, die 16-Bit-Übertragungen durchführen konnte, wenn ein E/A-Gerät als Datenquelle und/oder Ziel verwendet wird (da es tatsächlich nur Daten selbst für Speicher-zu-Memory-Transfers verarbeitet, ansonsten einfach Kontrolle Der Datenfluss zwischen anderen Teilen des 16-Bit-Systems, wodurch die eigene Datenbusbreite relativ unerheblich ist) und den Datendurchsatz verdoppelt, wenn die oberen drei Kanäle verwendet werden. Für die Kompatibilität waren die unteren vier DMA-Kanäle immer noch auf 8-Bit waren aufgrund des daraus resultierenden niedrigen Durchsatzes des Controllers im Vergleich zu dem, was die CPU jetzt erreichen könnte (d. H. Einen 16-Bit, optimierter 80286 läuft mindestens 6 MHz, gegen einen 8-Bit-Controller, der bei 4,77 MHz gesperrt ist). In beiden Fällen die 64 kb Segmentgrenze Das Problem blieb, da einzelne Transfers auch im 16-Bit Erfrischen (wie auch immer), um den Bus ungefähr alle 15 zu monopolisierenμs verhinderte die Verwendung großer (und schneller, aber unterbrechbarer) Blocktransfers.

Aufgrund ihrer Verzögerungsleistung (1,6Mb/s maximale 8-Bit-Übertragungsfähigkeit bei 5 MHz,[2] Aber nicht mehr als 0,9 mb/s im PC/XT und 1,6 mb/s für 16-Bit[3]) und Nichtverfügbarkeit aller Geschwindigkeitsklassen, die es ermöglichen würden, dass die Installation von direkten Ersetzungen mit höherer Geschwindigkeit als 4,77 MHz -Uhr des ursprünglichen PCs seit den späten 1980er Jahren effektiv veraltet ist. Insbesondere das Aufkommen der 80386 Prozessor im Jahr 1985 und seine Kapazität für 32-Bit 80186 bedeutete, dass PIO auch durch den 16-Bit-Bus überträgt 286 und 386SX könnte immer noch leicht den 8237 überstrecken) sowie die Entwicklung weiterer Entwicklungen zu (Eisa) oder Ersatz für (MCA, VLB und PCI) Der "ISA" -Bus mit ihren eigenen viel höhere Leistung DMA-Subsystemen (bis zu maximal 33 MB/s für EISA, 40 MB/s MCA, typischerweise 133 MB/s VLB/PCI) ließen die ursprünglichen DMA-Controller mehr erscheinen eines Performance Millstone als eines Boosters. Sie wurden in dem Maße unterstützt, in dem sie erforderlich sind, um integrierte Legacy-PC-Hardware auf späteren Maschinen zu unterstützen. Die Legacy-Hardware, die ISA DMA nach 32-Bit-Expansionsbussen weiterhin gemeinsam verwendeten Sound Blaster Karten, die zur Aufrechterhaltung der vollständigen Hardwarekompatibilität mit dem Sound Blaster Standard erforderlich waren; und Super i/o Geräte auf Motherboards, die oft ein integriertes integriert wurden Diskette Controller, an Irda Infrarot -Controller, wenn der FIR -Modus (Fast Infrarot) ausgewählt ist und ein IEEE 1284 Parallel Port Controller Wenn der ECP -Modus ausgewählt ist. In Fällen, in denen noch ein ursprüngliches 8237 oder direkter Kämpfer verwendet wurde RAM Unabhängig vom tatsächlichen Adressraum des Systems oder der Menge des installierten Speichers.

Jeder DMA-Kanal verfügt über ein 16-Bit-Adressregister und ein 16-Bit-Zählregister. So legt der Gerätetreiber die Adresse des DMA -Kanals zusammen und zählte die Register des DMA -Kanals zusammen mit der Richtung der Datenübertragung, Lesen oder Schreiben. Anschließend wird die DMA -Hardware angewiesen, die Übertragung zu beginnen. Nach Abschluss der Übertragung das Gerät Interrupts die CPU.

Streuungstamm oder Vectored I/O. DMA ermöglicht die Übertragung von Daten in und von mehreren Speicherbereichen in einer einzelnen DMA -Transaktion. Es entspricht der Verkettung mehrerer einfacher DMA -Anfragen. Die Motivation besteht darin, mehrere auszuladen Input-Output Interrupt- und Datenkopieraufgaben von der CPU.

DRQ steht für Datenanforderung; Dack für Daten bestätigen. Diese Symbole, die auf Hardware zu sehen sind Schema von Computersystemen mit DMA -Funktionalität repräsentieren elektronische Signalisierungsleitungen zwischen der CPU und dem DMA -Controller. Jeder DMA -Kanal hat eine Anfrage und eine Bestätigungslinie. Ein Gerät, das DMA verwendet, muss so konfiguriert werden, dass beide Zeilen des zugewiesenen DMA -Kanals verwendet werden.

16-Bit ISA erlaubte Bus-Mastering.[4]

Standard -ISA -DMA -Aufgaben:

  1. Dram Aktualisieren (veraltet),
  2. Benutzerhardware, normalerweise Soundkarte 8-Bit DMA
  3. Diskette Regler,
  4. Festplatte (veraltet von PIO Modi und ersetzt durch UDMA Modi), Parallelport (ECP -fähiger Port), bestimmte Soundblaster -Klone wie das Opti 928.
  5. Kaskade zum PC/XT -DMA -Controller,
  6. Festplatte (PS/2 nur) Benutzerhardware für alle anderen, normalerweise Sound Card 16-Bit DMA
  7. Benutzerhardware.
  8. Benutzerhardware.

PCI

A PCI Die Architektur hat im Gegensatz zu ISA keinen zentralen DMA -Controller. Stattdessen kann jedes PCI -Gerät die Kontrolle über den Bus anfordern ("werden die Busmeister") und Anfrage zum Lesen und Schreiben von Systemspeichern. Genauer[5]), welches wird vermitteln Wenn mehrere Geräte gleichzeitig Busbesitz anfordern, da es nur einen Busmaster gleichzeitig geben kann. Wenn der Komponente das Eigentum gewährt wird, wird sie normale Lese- und Schreibbefehle in den PCI -Bus ausstellen, der vom PCI -Buscontroller beansprucht wird.

Als Beispiel auf einem AMD Socket AM2-Der Basis von PC, der Southbridge wird die Transaktionen an die weiterleiten Speichercontroller (welches ist integriert auf der CPU sterben als separate Schaltung) mit Hypertransport, was sie wiederum umwandeln wird DDR2 Operationen und senden Sie sie im DDR2 -Speicherbus. Infolgedessen gibt es eine ganze Reihe von Schritten, die an einer PCI -DMA -Übertragung beteiligt sind. Dies hat jedoch wenig Probleme, da der PCI -Gerät oder der PCI -Bus selbst eine Größenordnung langsamer sind als die restlichen Komponenten (siehe Liste der Gerätebandbreiten).

Eine moderne X86-CPU kann mehr als 4 GB Speicher verwenden, entweder unter Verwendung des nativen 64-Bit-Modus von x86-64 CPU oder die Erweiterung der physischen Adresse (PAE), ein 36-Bit-Adressierungsmodus. In einem solchen Fall kann ein Gerät, das DMA mit einem 32-Bit-Adressbus verwendet, den Speicher über der 4-GB-Linie nicht adressieren. Der neue Mechanismus zum Doppeladresszyklus (DAC), falls sie sowohl im PCI -Bus als auch im Gerät selbst implementiert sind, implementiert.[6] Aktiviert 64-Bit-DMA-Adressierung. Andernfalls müsste das Betriebssystem das Problem umgehen, indem sie entweder kostspielig verwendet Doppelpuffer (DOS/Windows -Nomenklatur) auch bekannt als als Puffer (Freebsd/Linux) oder es könnte eine verwenden Iommu Bereitstellung von Adressübersetzungsdiensten, wenn einer vorhanden ist.

I/Hafer

Als Beispiel für DMA-Engine, die in einer allgemeinen CPU eingebaut sind, einige Intel Xeon Chipsets enthalten einen DMA -Motor namens namens I/O Acceleration Technology (I/Hafer), das den Speicherkopieren von der Haupt -CPU aus dem Weg lodern kann, um sie für andere Arbeiten zu befreien.[7] Im Jahr 2006's Intel's Linux Kernel Der Entwickler Andrew Grover führte Benchmarks mit I/Hafer durch, um Netzwerkverkehrskopien auszuschalten, und stellte die CPU -Auslastung bei Empfangs -Workloads nicht mehr als 10% zu.[8]

Ddio

Weitere leistungsorientierte Verbesserungen des DMA-Mechanismus wurden in Intel eingeführt Xeon E5 Prozessoren mit ihren Daten direkte I/O (Ddio) Feature, sodass die DMA -Fenster in sich wohnen können CPU -Caches anstelle von System RAM. Infolgedessen werden CPU -Caches als Hauptquelle und Ziel für E/A verwendet, was zulässt Netzwerkschnittstellencontroller (NICS) DMA direkt auf den letzten Level -Cache (L3 -Cache) des lokalen CPUs und vermeiden Sie das kostspielige Abnehmen der E/A -Daten aus dem System -RAM. Infolgedessen reduziert DDIO die Gesamt-E/A-Verarbeitungslatenz, ermöglicht die Verarbeitung des E/A-Körpers, verhindert, dass die verfügbare RAM-Bandbreite/Latenz zu einem Leistungsengpass wird und den Stromverbrauch senken kann Ram bleibt länger im Zustand mit geringer Leistung.[9][10][11][12]

Ahb

Im Systeme-on-a-Chip und eingebettete Systemetypische Systembussinfrastruktur ist ein komplexer On-Chip-Bus wie z. Amba High-Performance-Bus. AMBA definiert zwei Arten von AHB -Komponenten: Master und Sklave. Eine Slave -Schnittstelle ähnelt der programmierten E/O, durch die die Software (auf eingebettete CPU ausgeführt wird, z. ARM) kann I/A -Register oder (weniger häufig) lokale Speicherblöcke im Gerät schreiben/lesen. Eine Master -Schnittstelle kann vom Gerät verwendet werden, um DMA -Transaktionen zum/vom Systemspeicher durchzuführen, ohne die CPU stark zu beladen.

Daher werden hohe Bandbreitengeräte wie Netzwerkcontroller, die riesige Datenmengen auf/aus dem Systemspeicher übertragen müssen, zwei Schnittstellenadapter auf den AHB übertragen: einen Master und eine Sklavenschnittstelle. Dies liegt daran, dass On-Chip-Busse wie AHB nicht unterstützen Tri-Stating Der Bus oder wechselt die Richtung einer Linie im Bus. Wie PCI ist kein zentraler DMA-Controller erforderlich, da das DMA Bus-Mastering ist, aber eine Schiedsrichter ist bei mehreren auf dem System vorhandenen Master erforderlich.

Innen ist im Gerät in der Regel ein Mehrkanal -DMA -Motor vorhanden, um mehrere gleichzeitige gleichzeitig durchzuführen Streuungstamm Operationen wie von der Software programmiert.

Zelle

Als Beispiel verwendet DMA in a Multiprozessor-System-On-Chip, IBM/Sony/Toshiba's Zellprozessor Integriert eine DMA -Engine für jedes seiner 9 Verarbeitungselemente, einschließlich eines Power Processor -Elements (PSA) und acht synergistischen Prozessorelemente (SPEs). Da die Last-/Speicheranweisungen des SPE nur einen eigenen lokalen Speicher lesen/schreiben können, hängt ein SPE vollständig davon ab, dass DMAs Daten an und aus dem Hauptspeicher und den lokalen Erinnerungen an andere SPEs übertragen können. Somit wirkt das DMA als Hauptmittel für Datenübertragung zwischen Kernen in diesem Zentralprozessor (Im Gegensatz zu cache-kohärenten CMP-Architekturen wie Intels abgesagt Allgemeine GPU, Larrabee).

DMA in der Zelle ist vollständig Cache kohärent (Beachten Sie jedoch, dass lokale Geschäfte von SPEs, die von DMA betrieben werden Standard Sinn). In beiden Lesen ("get") und write ("put") kann ein DMA -Befehl entweder einen einzelnen Blockbereich mit einer Größe von bis zu 16 kb oder eine Liste von 2 bis 2048 solchen Blöcken übertragen. Der DMA -Befehl wird ausgestellt, indem ein Paar lokaler Adresse und eine Remote -Adresse angegeben wird: Zum Beispiel, wenn ein SPE -Programm einen Put -DMA -Befehl ausgibt, wird eine Adresse seines eigenen lokalen Speichers als Quelle und eine virtuelle Speicheradresse angegeben (Zeigen Sie auf entweder der Hauptspeicher oder der lokale Speicher eines anderen SPE) als Ziel, zusammen mit einer Blockgröße. Laut einem Experiment erreicht eine effektive Spitzenleistung von DMA in Zelle (3 GHz, unter gleichmäßigem Verkehr) 200 GB pro Sekunde.[13]

Pipelining

Prozessoren mit Scratchpad -Speicher und DMA (wie z. Digitale Signalprozessoren und die Zelle Prozessor) kann von Software profitieren, die DMA -Speicheroperationen mit Verarbeitung überlappt Doppelpufferung oder mehrfachen. Zum Beispiel wird der On-Chip-Speicher in zwei Puffer aufgeteilt. Der Prozessor kann auf Daten in einem arbeiten, während die DMA -Engine Daten in der anderen lädt und speichert. Dies ermöglicht es dem System zu vermeiden Speicherlatenz und nutzen Burst -Transfersauf Kosten der Notwendigkeit eines vorhersehbaren Speicherzugriffsmuster.

Siehe auch

Anmerkungen

  1. ^ Osborne, Adam (1980). Eine Einführung in Mikrocomputer: Band 1: Grundkonzepte (2. Aufl.). Osborne McGraw Hill. pp.5–64 bis 5–93. ISBN 0931988349.
  2. ^ "Intel 8237 & 8237-2 Datenblatt" (PDF). JKBOX RC702 Subsite. Abgerufen 20. April 2019.
  3. ^ "DMA -Grundlagen auf verschiedenen PC -Plattformen, nationale Instrumente, Seiten 6 und 7". Universidad Nacional de la Plata, Argentinien. Abgerufen 20. April 2019.
  4. ^ Intel Corp. (2003-04-25), "Kapitel 12: Isa Bus" (PDF), PC -Architektur für Techniker: Stufe 1, abgerufen 2015-01-27
  5. ^ "Busspezifikationen - Schreibgerätetreiber für Oracle® Solaris 11.3". docs.oracle.com. Abgerufen 2020-12-18.
  6. ^ "Physikalische Adressverlängerung - PAE -Speicher und Windows". Microsoft Windows Hardware Development Central. 2005. Abgerufen 2008-04-07.
  7. ^ Corbet, Jonathan (8. Dezember 2005). "Speicherkopien in Hardware". Lwn.net.
  8. ^ Grover, Andrew (2006-06-01). "I/Hafer auf Linuxnet Wiki". Überblick über I/Hafer unter Linux, mit Links zu mehreren Benchmarks. Abgerufen 2006-12-12.
  9. ^ "Intel Data Direct I/O (Intel DDIO): Häufig gestellte Fragen" (PDF). Intel. März 2012. Abgerufen 2015-10-11.
  10. ^ Rashid Khan (2015-09-29). "Die Grenzen der Kernel -Networking drücken". redhat.com. Abgerufen 2015-10-11.
  11. ^ "Erreichen der niedrigsten Latenzen mit den höchsten Nachrichtenraten mit Intel Xeon-Prozessor E5-2600 und Solarflare SFN6122F 10 GBE Server-Adapter" (PDF). Solarflare.com. 2012-06-07. Abgerufen 2015-10-11.
  12. ^ Alexander Duyck (2015-08-19). "Die Grenzen der Kernel -Networking drücken" (PDF). LinuxFoundation.org. p. 5. Abgerufen 2015-10-11.
  13. ^ Kistler, Michael (Mai 2006). "Zell -Multiprozessor -Kommunikationsnetzwerk". Umfangreiche Benchmarks der DMA -Leistung in der Zellbreitbandmotor.

Verweise

Externe Links