Das DMA Verfahren ist mir gut bekannt.Trotzdem,man spricht oft von DMA-Kanälen. Ist es eine Leitung zum DMA-Controller, oder ist es eine bestimmte Adressierung auf dem Datenbus oder ist es ein eigener Übertragungsweg?
Wer kann mir Auskunft geben? (S.M.)
Antwort:
Hi,
eine mögliche Erklärung:
DMA steht für Direct Memory Access. Dieser Kanal bewirkt, daß Daten von einem Peripheriegerät direkt in den Arbeitsspeicher übertragen werden. Das geht schneller, als wenn die CPU die Daten Byte für Byte von der Hardware abfragt und in den Speicher legt. Auch bei einem DMA-Konflikt nehmen Ihre Geräte keinen Schaden. Sie laufen nur nicht korrekt.
Quelle: PC-WELT Tips & Tricks
bye
(askor)
Antwort:
das ist mir bekannt, aber wo wird dieser Kanal gesetzt wenn eine Datenübertragung direkt zum RAM geschieht? Gibt es einen extra Bus oder wird ein Teil des Datenbuses belegt?
(S.M.)
Antwort:
Hi,
gehe mal zu:
http://iamexwiwww.unibe.ch/studenten/mguenter/ex/dma.transfer/prinzip.htm
vielleicht hilft Dir das...
bye
(askor)
Antwort:
Die von der CPU auszuführenden Befehle werden in eine sog. Befehlspipeline zerlegt.
Der Befehl wird z.B. in 4 Teile (Befehl aus Programmspeicher holen; Daten aus Datensp. holen;
Befehl bearbeiten und Daten zurückschreiben) zerlegt, diese Schritte werden von vier
Instanzen nacheinander bearbeitet. Die erste Instanz wartet jedoch nicht bis die letzte fertig ist, sondern
holt sich gleich den nächsten Befehl. Damit reduziert sich die Befehlsausführungszeit auf ein viertel.
Wird nun von der Peripherie ein Interrupt ausgelöst, müssen alle Instanzen ihre bereits bearbeiteten Befehle verwerfen,
die Interruptroutine ausführen nur um z.B. ein Byte in den Programmspeicher zu schreiben. Dabei geht eine Menge Zeit verloren.
Bei einem DMA sieht die Sache anders aus. Hier wird von der Peripherie auch ein Interrupt ausgelöst, allerdings
wird jetzt nur der reine Datentransfer in die Befehlspipeline eingeschoben. Im günstigsten
Fall geht für jede Instanz also nur ein Zyklus verloren. Der DMA Kanal legt die Qell- und Zieladressen des Datentransfers fest.
(timo (Anonym))
Antwort:
kenn ich schon, keiner gibt dir diesbezüglich eine erklärung
(S.M.)
Antwort:
so, wie ich das versteh, sind das keine neuen leitungen. es geht über dieselben leitungen, über die auch die daten zum Prozessor gelangen. sie werden vom chipsatz abgefangen und direkt an den speicher geleitet. es wird also nur deine CPU entlastet, nicht aber dein PCI, AGP oder System-BUS. (ISA sowieso) ich hoffe, dies beantwortet deine frage!
PS: im gegensatz dazu haben die IRQs (0-15) richtige leitungen (hardware)..
:-)
Der Pinky
((Anonym))
Allgemeines 22.007 Themen, 148.995 Beiträge
Hi,
eine mögliche Erklärung:
DMA steht für Direct Memory Access. Dieser Kanal bewirkt, daß Daten von einem Peripheriegerät direkt in den Arbeitsspeicher übertragen werden. Das geht schneller, als wenn die CPU die Daten Byte für Byte von der Hardware abfragt und in den Speicher legt. Auch bei einem DMA-Konflikt nehmen Ihre Geräte keinen Schaden. Sie laufen nur nicht korrekt.
Quelle: PC-WELT Tips & Tricks
bye
(askor)
das ist mir bekannt, aber wo wird dieser Kanal gesetzt wenn eine Datenübertragung direkt zum RAM geschieht? Gibt es einen extra Bus oder wird ein Teil des Datenbuses belegt?
(S.M.)
Hi,
gehe mal zu:
http://iamexwiwww.unibe.ch/studenten/mguenter/ex/dma.transfer/prinzip.htm
vielleicht hilft Dir das...
bye
(askor)
kenn ich schon, keiner gibt dir diesbezüglich eine erklärung
(S.M.)
Die von der CPU auszuführenden Befehle werden in eine sog. Befehlspipeline zerlegt.
Der Befehl wird z.B. in 4 Teile (Befehl aus Programmspeicher holen; Daten aus Datensp. holen;
Befehl bearbeiten und Daten zurückschreiben) zerlegt, diese Schritte werden von vier
Instanzen nacheinander bearbeitet. Die erste Instanz wartet jedoch nicht bis die letzte fertig ist, sondern
holt sich gleich den nächsten Befehl. Damit reduziert sich die Befehlsausführungszeit auf ein viertel.
Wird nun von der Peripherie ein Interrupt ausgelöst, müssen alle Instanzen ihre bereits bearbeiteten Befehle verwerfen,
die Interruptroutine ausführen nur um z.B. ein Byte in den Programmspeicher zu schreiben. Dabei geht eine Menge Zeit verloren.
Bei einem DMA sieht die Sache anders aus. Hier wird von der Peripherie auch ein Interrupt ausgelöst, allerdings
wird jetzt nur der reine Datentransfer in die Befehlspipeline eingeschoben. Im günstigsten
Fall geht für jede Instanz also nur ein Zyklus verloren. Der DMA Kanal legt die Qell- und Zieladressen des Datentransfers fest.
(timo (Anonym))
so, wie ich das versteh, sind das keine neuen leitungen. es geht über dieselben leitungen, über die auch die daten zum Prozessor gelangen. sie werden vom chipsatz abgefangen und direkt an den speicher geleitet. es wird also nur deine CPU entlastet, nicht aber dein PCI, AGP oder System-BUS. (ISA sowieso) ich hoffe, dies beantwortet deine frage!
PS: im gegensatz dazu haben die IRQs (0-15) richtige leitungen (hardware)..
:-)
Der Pinky
((Anonym))