Diskussion:Direct Memory Access

aus Wikipedia, der freien Enzyklopädie
Letzter Kommentar: vor 1 Jahr von 2A02:8108:8380:43E4:BB6B:B67D:45D0:8270 in Abschnitt DMA und CPU arbeiten gleichzeitig?
Zur Navigation springen Zur Suche springen

Verständnisproblem[Quelltext bearbeiten]

„Busmaster kann prinzipiell zu einem bestimmten Zeitpunkt immer nur eine Komponente sein. So können etwa PCI-Controller zugleich auch DMA-Busmaster sein.“

Den letzten Satz verstehe ich in diesem Zusammenhang nicht.

-- Peter, 217.95.172.146 02:12, 28. Mär 2005 (CEST)

Bezeichnungen[Quelltext bearbeiten]

Wollte darauf hinweisen, dass es bei verschiedenen DMA-Controllern verschiedene Bezeichnungen für die unterschiedlichen Übertragungs-Modi gibt.

Laut http://www.z80.info/zip/um0081.pdf (Seite 67 bzw. 49) gibt es beim Z80:

Byte Mode (was im Artikel "Einzel-Datentransfer (Single Bus Transfer)" ist)

Burst Mode (was im Artikel "Transfer auf Anforderung (Demand Transfer Mode)" ist)

Continous Mode(also called Blockmode) (was im Artikel "Blocktransfer (Burst Mode)" ist)

Das heisst, ich war verwirrt, als ich Burst Mode einmal mit Unterbrechungsmöglichkeit sah (beim Z80) und einmal ohne (laut Artikel).

"Der Vorteil der DMA-Technik ist die schnellere Datenübertragung bei gleichzeitiger Entlastung des Prozessors." - Ist dieser Satz wirklich richtig? - Da nicht zuerst einen Antrag an die CPU gestellt werden muss und diese die Arbeit dann ausführt kommt es schneller zur Datenübertragung! Jedoch ist die Datenübertragung selbst nicht schneller. - oder seh ich das falsche?

Frei nach Radio Eriwan: Es kommt darauf an. Erstmal "stellt" die CPU in beiden Fällen den "Antrag", das Programmieren des DMA-Controllers kann sogar länger dauern. Dann kommt es halt auf die Hardware an. Der PC-DMA-Kontroller war so besch*** (ich mußte ihn zum Glück nicht programmieren), daß er eher langsamer war als PIO. Es gab da also keinen signifikanten Geschwindigkeitsvorteil. Auch heute ist PIO4 recht schnell, lies halt bei IDE nach, genau interessiert es keinen, weil eh alle DMA machen. Während DMA wird die CPU nicht beschäftigt, das ist der Hauptvorteil, insbesondere für heutige Multitasking-Syteme (sieht man z.B. unter Linux, wenn man ein CPU-Meter mitlaufen hat und dann die Meldung "DMA disabled" kommt). Andererseits gab es Systeme, bei denen die trickreiche Programmierung solcher Bausteine essentiell war (z.B. Amiga mit seinen Spezialschaltkreisen und Blittern). Du brauchst nicht zu erwarten, daß der Artikel sowas erklärt, bei Wikipedia sind seit Monaten schon die Ichweißdasaberbessermeinprofhatsgesagt -Pappnasen am Werke.

DMA und ISA - Bitte bei Korrektur helfen[Quelltext bearbeiten]

Unter der Überschrift DMA und ISA steht folgender erster Satz: "Die klassische DMA-Technik des ISA-Busses basiert dabei der Signalisierung der Peripherie für Transferbedarf durch einzelne Datenleitungen, die so genannten DMA-Kanäle." Der kann da nicht so stehen bleiben. Da ich nicht weiss, wie er richtig lauten muss, und nicht gleich den Abschnitt löschen wollte, hab ich ihn aber erstmal drin gelassen. Heisst das basiert auf der Signalisierung? Dann leuchtet mir der Satz aber immernoch nicht ein. Irgendwas ist da verdreht. Wäre schön, wenn sich jemand dieses Satzes annehmen könnte, der etwas mehr Ahnung vom Thema hat als ich. --Supaari bla!bla! 01:58, 4. Jun 2006 (CEST)

Mir kommt es so vor, als seien unter jeder Überschrift die Definitionen verschiedener Bücher gegeben, also jeder Abschnitt erklärt nochmal was DMA eigentlich ist - ich finde man könnte das komplett zusammenfassen. 84.182.126.77

Lesbarkeit[Quelltext bearbeiten]

Ich habe den Artikel an einigen Stellen überarbeitet, um ihn besser lesbar zu machen. (Vorstehender nicht signierter Beitrag stammt von Thorsten Wagner (DiskussionBeiträge) 21:01, 14. Dez 2006 (CEST)) -- Nyks ► Fragen? 21:39, 14. Dez. 2006 (CET)Beantworten

8 DMA-Kanäle?[Quelltext bearbeiten]

Zitat: Insgesamt gibt es 8 DMA-Kanäle.
Wo denn, im PC? Dann muss man das auch sagen. Allein der Agnus (Amiga)-Chip hat schon 23 Kanäle, nur so als ein Beispiel. Und das mit "nur eine DMA-Leitung" kann man auch nicht verallgemeinern: Je nach Prozessorarchitektur gibt es dafür ein ganzes Bündel an Bus-Request-, Bus-Grant-Leitungen und noch ein paar mehr. Das sollte man alles noch aufdröseln. --PeterFrankfurt 16:52, 26. Mär. 2007 (CEST)Beantworten

Der Amiga hatte 6 Kanäle: Bit-Ebenen DMA, Blitter, Copper, Audio, Disk und Sprite. 79.212.154.106 02:16, 5. Nov. 2012 (CET)Beantworten

DMA0[Quelltext bearbeiten]

Für welchen internen Zweck soll denn DMA0 im PC verwendet werden? DMA2 nutzt der Floppy-Controller, DMA4 wird von einer ominösen "cascade" beansprucht. Auf einigen Hauptplatinen kann man im BIOS für den Onboard-ECP-Parallelport neben DMA1 und DMA3 auch DMA0 einstellen, ISA-Karten, die ein oder zwei DMA-Kanäle brauchen (vor allem Soundkarten) kann man bei Bedarf ebenfalls DMA0 verabreichen, ohne das das System dadurch irgendwie negativ beeinflusst wird. Unter Linux geht das z.B. für eine ISA-PnP-Karte, in dem man den isapnp-Treiber mit dem Parameter "isapnp_allow_dma0 = 1" bestiefelt, wobei DMA0 dann i.d.R. nur benutzt wird, wenn kein anderer 8-Bit-DMA mehr frei ist und die Karte einen oder zwei 8-Bit-DMA braucht.--Arnulf zu Linden 04:57, 15. Nov. 2008 (CET)Beantworten

DMA Kanal 0 wurde für den RAM-Refresh beim XT genutzt. Dieser verfügte nicht über eine eigene Refresh-Logik weshalb DMA0 für den Refresh "misbraucht" wurde. Ab dem AT kann auch Kanal 0 genutzt werden. 79.212.154.106 03:15, 5. Nov. 2012 (CET)Beantworten

DMA und CPU arbeiten gleichzeitig?[Quelltext bearbeiten]

Ich kenne mich nicht sonderlich gut aus und hatte eigentlich gehofft hier die Antwort darauf zu finden ob die DMA und die CPU gleichzeitig arbeiten können. Nach dem was ich bis jetzt erfahren habe kann nur einer von beiden arbeiten, sprich die DMA stellt die Anfrage an die CPU, diese schaltet weg und die DMA macht das was sie am besten kann. Danach übernimmt die CPU wieder. Es wäre schön wenn das hier ergänzt werden würde. Im Fall das ich mit dieser Annahme falsch liege wäre es schön einen Satz zu finden der bestätigt, dass beide gleichzeitig arbeiten können. (nicht signierter Beitrag von 217.235.19.145 (Diskussion) 12:10, 7. Nov. 2011 (CET)) Beantworten

Im Text steht: Will die I/O-Hardware Daten senden oder empfangen, trennt der DMA-Controller den Prozessor vom Bussystem. Dass der Prozessor dadurch temporär totgelegt ist, versteht sich doch schon dadurch, oder? Was möchtest Du da denn noch deutlicher erwähnt haben? Auch die animierten Grafiken zeigen genau diesen Sachverhalt. --PeterFrankfurt 02:09, 8. Nov. 2011 (CET)Beantworten
Oh Mann ist mir schlecht. Die Aussage, das die DMA die CPU generell auf Halt setzt, ist schlicht und ergreifend falsch. Es ist zudem absoluter Blödsinn, dass der Datentransfer durch die DMA schneller von statten geht als über die CPU - dies galt bis einschließlich des 80286. Schon der 386er kopierte mittels stosw (16Bit) oder stosd (32Bit) schneller als die DMA, die ja bekanntlich auf max. 16Mhz und 16 Bit begrenzt war. Die heute verwendete DMA, die Ultra-DMA wird ausschließlich dann verwendet, wenn der Datentransfer in Richtung Peripherie, also der Southbridge geht. Der Sinn der DMA, die nach wie vor langsamer als die CPU ist, liegt darin, das sie eben gerade parallel Daten kopieren kann, eben während die CPU weiter arbeitet. Der weitere Vorteil ist zudem, dass die DMA im Gegensatz zur CPU bussynchron kopieren kann und zudem Busmasterfähig ist. Ein Datentransfer über die DMA wird also dann verwendet, wenn die Zielressource einen konstanten Datenstrom benötigt - das ist z.B. beim Brennen einer CD oder DVD der Fall, weshalb man hier auf die Ultra-DMA zurückgreift. Sollte zum gleichen Zeitpunkt die CPU zugreifen wollen, dann wird diese nur für diese eine Übertragung auf hold gesetzt - selbst beim 16fach schreiben einer DVD ist der Datenstrom erbärmlich gegenüber dem möglichen Busdurchsatz. Die CPU wird damit also kaum gebremst - insbesondere dann, wenn sie in dieser Zeit aus dem Cache leben kann. Schon vor rund 20 Jahren, als ich noch aktiv in der Demo-Szene war galt: Die CPU kümmerte sich um die Grafik, weil deren Speicher im Hauptspeicher eingeblendet war, der Sound dagegen wurde synchron durch die DMA zur Soundkarte gesendet und dafür reichte selbst ein 8257 aus.
Weil oben schon der Amiga erwähnt wurde: Der Amiga hatte eine komplett andere Architektur und an dieser Stelle kann er seine Wurzeln in einer Spielekonsole eben am allerwenigsten verleugnen. Beim Amiga liefen CPU und DMA immer parallel und die kamen sich nie ins Gehege, weil sich CPU und die Custom-Chips (Agnus, Denise und Paula) den Bus teilten. Jeder gerade Buszyklus gehörte der CPU, jeder ungerade den Custom-Chips. Die DMA konnte jedoch nur auf das Chip-RAM zugreifen - oberhalb des Chip-RAMs, im Fast-RAM, war die CPU für sich alleine und konnte alle Buszyklen für sich beanspruchen. Genutzt hat es ihr nicht so viel, weil zu den damaligen Zeiten der Bus noch deutlich schneller war, als der Befehlsdurchsatz der CPU. Deshalb war Fast-RAM auch nur etwa 10% schneller als Chip-RAM.
Heutzutage ist die DMA mehr ein Relikt aus der guten alten Zeit. Sie wird zwar noch verwendet für den Datentransfer von und zu Massenspeichern, aber nicht weil es schneller geht, sondern eben weil es parallel zur CPU durchgeführt werden kann! DMA-Tranfer machte vor allem zu einer Zeit Sinn, als die CPU nicht die volle Bandbreite des Busses nutzen konnte. Für einen Datentransfer eines Wortes (16Bit) benötigte die DMA zwei Buszyklen. Auf einem 386er lief ein STOSW in 4 Taktzyklen durch. Betrug also die Taktfrequenz der CPU mehr als das Doppelte der Busfrequenz, dann war die CPU schneller - was damals ab 32MHz bei 16Bit der Fall war. 79.212.154.106 03:04, 5. Nov. 2012 (CET)Beantworten
Verständnisfrage: Was habe die Aufteilung der Zyklen beim Amiga mit "Spielkonsole" zu tun? --2A02:8108:8380:43E4:BB6B:B67D:45D0:8270 15:05, 8. Okt. 2022 (CEST)Beantworten

Sicherheitsprobleme[Quelltext bearbeiten]

Moin

Ein Abschnitt über durch offenbar DMA aufgerissene Sicherheitslücken wäre chique, wo zum Beispiel auf das direkte Auslesen des Speichers mittels FireWire oder PCI-Cards, am Betriebssystem samt seiner Sicherheitseinrichtungen vorbei, eingegangen wird.

Gruselige Ansammlung von Quellen mit Beschreibung

Beitrag vom 28C3, der das Thema anreißt

Gruß, IP 85.178.178.236 03:02, 26. Jan. 2012 (CET)Beantworten

Diese Sicherheitslücke ist jedoch keine der DMA an sich, sondern des Betriebssystems und sollte daher auch dort behandelt werden. Hierbei wird ausgenutzt, dass die DMA ungeachtet der prozessorinternen Schutzmechanismen linear auf den Speicher zugreifen und diesen über einen DMA-Kanal somit dumpen kann. Um diesen Angriff durchführen zu können, benötige ich einen solchen Zugriff auf den Rechner, dass damit andere, effektivere Maßnahmen gefahren werden können. Damit dieser Angriff funktioniert, müssen einige Vorraussetzungen erfüllt sein, von denen nur einige in dem Video genannt werden:
  • Es wird physischer Zugriff auf den laufenden Rechner benötigt
  • Die Autostartoption für FireWire muss aktiviert sein
  • Das ausführende Konto muss Administrationsberechtigung haben.
Dieser Angriff erscheint interessant im Kontext z.B. von Ermittlungen bei verschlüsselten Systemen. Die Erfahrung zeigt jedoch, dass im Gegensatz zu anderen Verfahren diese Maßnahme eher von untergeordneter Bedeutung ist, das FireWire vor allem beim PC wenig Bedeutung hat und die entsprechende "Klientel" in der Regel vorbeugende Maßnahmen ergriffen hat - spätestens nach Bekanntwerden der Angriffsmöglichkeit. 79.212.154.106 03:48, 5. Nov. 2012 (CET)Beantworten

Quellenangaben[Quelltext bearbeiten]

Moin Zusammen,

irgendwie fehlen in diesem Artikel gänzlich Quellenangaben, oder?

-Benni (nicht signierter Beitrag von 194.114.62.71 (Diskussion) 13:03, 1. Nov. 2012 (CET))Beantworten