Allgemeines 22.007 Themen, 148.995 Beiträge

Was ist physikalisch ein DMA-Kanal ?

S.M. / 6 Antworten / Baumansicht Nickles

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))

bei Antwort benachrichtigen
askor S.M. „Was ist physikalisch ein DMA-Kanal ?“
Optionen

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)

bei Antwort benachrichtigen
S.M. askor „Was ist physikalisch ein DMA-Kanal ?“
Optionen

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.)

bei Antwort benachrichtigen
askor S.M. „Was ist physikalisch ein DMA-Kanal ?“
Optionen

Hi,
gehe mal zu:
http://iamexwiwww.unibe.ch/studenten/mguenter/ex/dma.transfer/prinzip.htm
vielleicht hilft Dir das...
bye
(askor)

bei Antwort benachrichtigen
S.M. askor „Was ist physikalisch ein DMA-Kanal ?“
Optionen

kenn ich schon, keiner gibt dir diesbezüglich eine erklärung
(S.M.)

bei Antwort benachrichtigen
timo (Anonym) S.M. „Was ist physikalisch ein DMA-Kanal ?“
Optionen

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))

bei Antwort benachrichtigen
(Anonym) S.M. „Was ist physikalisch ein DMA-Kanal ?“
Optionen

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))

bei Antwort benachrichtigen