PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Was genau sind die Aufgaben des DMA ?


cereal
2003-02-18, 14:16:25
DMA, jeder redet davon, doch nicht jeder scheint so richtig zu wissen was es ist! Direct Memory access. Aber wozu genau ist der/das DMA verantwortlich, welche Aufgaben hat es/er? bitte um eine ausführliche beschreibung!


thx


mfg

Xmas
2003-02-18, 15:20:27
DMA, der direkte Speicherzugriff, wird für jede Art von Speicherblocktransfers verwendet. Das wesentliche Merkmal des DMA ist dass der Zugriff auf den Speicher nicht von der CPU, sondern von einem DMA-Controller erledigt wird. Die CPU muss also zum Datentransfer nicht tausende MOV-Operationen erledigen, sondern kann ganz normal weiterarbeiten, während der Speichertransfer parallel abläuft.

DMA wird immer dann genutzt, wenn große Blöcke gelesen oder geschrieben werden müssen (bei kleinen lohnt sich der Aufwand nicht),
also z.B. beim Laufwerkszugriff, beim Transfer von Sounds oder Texturen zur Sound- bzw. Grafikkarte usw.

cereal
2003-02-18, 15:23:38
danke erstmal für die gute erläuterung.
aber folgende frage:
was genau passiert, wenn ich im geräte manager die pladde nicht auf DMA sondern auf PIO stelle? wird das ganze dann über den cpu cache gemacht?


mfg

Endorphine
2003-02-18, 15:27:13
DMA wird hauptsächlich dazu verwendet, dass Controller mit einer gewissen Eigenintelligenz auch selbst Daten in den Speicher schreiben können und die CPU dann per DMA-Request (DRQ) ggf. unterbrechen können.

Da es aber bei heutigen PCs dafür auch die PCI-Architektur gibt, wo die CPU nur eine von vielen Funktionseinheiten ist wird dafür heute eher Busmastering verwendet. Das heisst, dass ein bestimmtes Gerät zu einem bestimmten Zeitpunkt die Kontrolle über das System übernimmt und dann z.B. auch direkt in den Hauptspeicher schreibt.

DMA wird heute nur noch für alte legacy Geräte wie den Floppycontroller und den Parallelport IEEE1284 verwendet.

ow
2003-02-18, 15:55:00
Originally posted by cereal
danke erstmal für die gute erläuterung.
aber folgende frage:
was genau passiert, wenn ich im geräte manager die pladde nicht auf DMA sondern auf PIO stelle? wird das ganze dann über den cpu cache gemacht?


mfg


PIO = programmed input/output, hier läuft jeder Transfer über die CPU.

cereal
2003-02-18, 16:07:31
@ow also das input output system?

wieso, wird DMA nur @floppy benutzt? jede heutige festplatte wird doch mit einem oboard dma kontroller getseurt, oder?


mfg

Endorphine
2003-02-18, 16:19:18
Originally posted by cereal
wieso, wird DMA nur @floppy benutzt? jede heutige festplatte wird doch mit einem oboard dma kontroller getseurt, oder?
mfg
Weil das Floppylaufwerk schon früher so eine elendig lahme Komponente war. Dadurch musste die CPU bei Floppyzugriffen nicht jedes Byte einzeln bewegen und auf das Laufwerk warten.

Der DMA-Controller ist nur noch ein legacy Gerät für die Kompatibilität mit alter Soft- und Hardware. Was heute bei IDE-Controllern "DMA-Modus" meint ist genaugenommen wieder Busmastering vom IDE-Controller. Bei IDE-Festplatten kann man die Verwirrung aber komplett machen, da die Schnittstelle eigentlich AT-Attachment heisst und nur mehr eine Verlängerung des 16-Bit ISA-Busses an den (integrated device-) Controller der Festplatte darstellt.

Dadurch sind die Transfers von der IDE-Platte zum ATA-PCI Hostadapter genaugenommen echte DMA-Transfers. Im Hostadapter werden diese dann zu PCI-Busmastertransfers. Das geniale daran ist nun, dass man ATA-PCI-Mastercontroller auch so programmieren könnte, dass sie zur Platte hin einen PIO-Modus verwenden und dann die Daten via busmastering an die CPU weiterreichen. Oder andersrum, dass man zur Geschwindigkeitserhöhung von alten Platten unter alten Betriebssystemen die Platten in einem schnellen DMA-Modus betreibt und der Controller im PIO-Modus läuft.

Deshalb kann man heute auch unter DOS mit nem ordentlichen BIOS die vollen DMA-Transferraten ausnutzen. Ich hoffe, ich hab das halbwegs verständlich rübergebracht ;)

ow
2003-02-18, 16:33:03
Originally posted by Endorphine

Ich hoffe, ich hab das halbwegs verständlich rübergebracht ;)

:D null problemo;)


/edit: sind ausser einigen Phoenix-BIOSsen denn überhaupt irgendwelche BIOSs UDMA-fähig??

Endorphine
2003-02-18, 16:39:44
Originally posted by ow
/edit: sind ausser einigen Phoenix-BIOSsen denn überhaupt irgendwelche BIOSs UDMA-fähig??
IIRC haben das einige AMI-BIOS Version erstmals eingeführt. Bin mir jetzt gar nicht sicher, obs auch schon Award-Versionen gibt, die das können. In der Praxis wohl auch ausser beim OS-Start, und bei der OS-Installation ohne praktische Bedeutung.

cereal
2003-02-18, 16:48:29
hm, ich glaub ich nehme die frage besser zurüc :P
hab net viel verstanden

BloodyButcher
2003-02-26, 22:46:13
Also ich habs verstanden! :lol:

micki
2003-03-03, 12:42:32
soweit ich weiß gibt es meißt 4 kanäle bei dma die verschiedene prioritäten haben, und kanal 0 und 1 wird für den memory refresh benutzt, da ja der speicher in kondensatoren liegt (also ein bit ist meines wissens ein kondensator + ein transistor), muss er ja manchma neu nachgeladen werden, dafür wird dann der dma benutzt.

hab ich ma im e-technik buch zu speicher gelesen...

MfG
micki