Direktspeicherzugriff (DMA = Direct Memory Access)
Beim DMA steuert die E/A-Schnittstelle
den Transfer nach Anstoß durch die CPU selbstständig und ohne Zuhilfenahme der CPU Datentransport zwischen Speicher und Peripherie unter Umgehung der CPU. Selbst, wen die CPU in dieser Zeit nichts anderes tut, ist ein wesentlich schnellerer Datentransport möglich (weitgehender Wegfall der Verwaltungsarbeit). Daher ist DMA für den schnellen Transfer großer Datenmengen besonders geeignet. Zum Anstoßen des DMA-Transfers übermittelt die CPU der DMA-Schnittstelle:
die Anfangsadresse (im ASp) des zu übertragenden Datenblocks
die Länge des zu übertragenden Datenblocks
Gegebenenfalls muss noch - wie beim programmierten Transfer - das EASR entsprechend geladen werden Initialisierung der Schnittstelle.
Die DMA-Schnittstelle benötigt zwei weitere Register:
E/A-Adreßregister (EAAR)
E/A-Blocklängenzähler (EAZR)
Da während des DMA-Transfers anstelle der CPU die DMA-Schnittstelle die Kontrolle über den Systembus besitzt, muss sie zusätzlich über eine Bus-Steuerlogik verfügen (Konkurrenz zwischen DMA Schnittstelle und CPU um den Bus).
Ablauf eines DMA-Transfers:
Initialisieren der DMA-Schnittstelle
Bus-Freigabe-Anforderung an die CPU (DMA-Request)
CPU bestätigt Bus-Freigabe (DMA-Acknowledge)
(Die Bus-Freigabe der CPU geschieht durch Umschalten der
Bustreiber-Ausgänge in den hochohmigen Zustand)
Nun bedient die DMA-Schnittstelle den Adreß-, Daten- und
Steuerbus auf die gleiche Art und Weise, wie die CPU. Der Inhalt
des EAAR wird an den A-Bus gelegt und die für die
Speichersteuerung notwendigen Signale auf den Steuerbus. Das EADR
wird mit dem Datenbus verbunden.
Man unterscheidet verschiedene DMA-Modi:
Byteweise Übertragung (Byte Mode)
Die CPU gibt auf DMA-Request hin den Bus nach Beendigung des
gerade laufenden Maschinenzyklus frei. Nach dem Transfer
eines Datenwortes erhält die CPU die Kontrolle über
den Bus zurück und sie setzt den laufenden Befehl weiter fort
(bis zum nächsten DMA-Request) Cycle Stealing.
Burst-Modus
Auch hier wird die CPU mitten in der Bearbeitung eines Befehls
kurz angehalten, jedoch für mehrere Zyklen
Transfer eines ganzen Datenblocks.
Halt-Modus
Die CPU wird nach Beendigung der gerade laufenden Instruktion
angehalten - solange, bis der DMA-Transfer eines ganzen Blocks
abgewickelt ist.
Transparent-Modus
DMA-Schnittstelle und CPU arbeiten zeitmultiplex während
jedes Maschinenzyklus jeweils in einer halben Periode. Dazu ist ein
sehr schneller Speicher erforderlich keine
Beeinträchtigung der CPU.