Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verständnisfrage zu DMA, IRQ und I/O


pippo
2007-10-15, 20:03:00
Ich finde im Internet einfach keine befriedigende Erklärung.

Wenn ich mit der Tastatur ne Eingabe mache, hält der IRQ den Prozessor an und holt die Daten, die über den DMA in den Arbeitsspeicher gelangt sind, ab. So weit, so klar. Wie kommen hier nun aber die I/O-Adressen hinzu? Kann man sich diese I/O-Adressen als physikalische Leitungen vorstellen, von denen der DMA-Kontroller die Daten vom Gerät holt?

Dann hab ich auch nicht ganz verstanden, was passiert, wenn sich mehrere Geräte 1 IRQ teilen, weil z.B. zuviel angeschlossen ist. Woher weiß der Prozessor nun, wer hier was will?

Ich hab auch oft gelesen, dass der DMA-Kontroller die CPU vom Bus trennt und stattdessen den Datenverkehr steuert. Welcher Bus ist hier denn gemeint? Der FSB?

Unfug
2007-10-15, 20:54:14
Über diese I/O Adressen kann man auf die Hardware zugreifen, dabei wird die CPU auch sehr in Anspruch genommen. Damit die CPU nicht jedes einzelne Byte ständig aus dem RAM lesen/schreiben muß, entwickelte man DMA Controller.
Die CPU übergibt nun einfach den Auftrag (z.B Musik abspielen) dem DMA Controller der Soundkarte. Dieser greift jetzt unabhängig von der CPU auf den RAM zu und spielt das Soundfile ab. Ist das File zuende gespielt, wird es über ein Interrupt signalisiert und XP weiß, was es zu tun hat.

Zum Thema Bus:
Normalerweise ist the Master of Motherbard die CPU. Die CPU herrscht über alle Leitungen. Egal ob von Graka zur CPU oder zum Speicher. Einfach alle.
Aber jetzt kann auch der DMA Controller the Master of Bus werden.
So könnte die Soundkarte files an ein anderes Gerät senden, während die CPU weiterhin die Primzahlen berechnet (weil man dafür kein RAM oder andere externe Geräte benötigt )

Es gibt ein gutes Skript der Uni Gießen. Danach solltest du mal googlen.

cu

Gast
2007-10-15, 20:55:04
Dann hab ich auch nicht ganz verstanden, was passiert, wenn sich mehrere Geräte 1 IRQ teilen, weil z.B. zuviel angeschlossen ist. Woher weiß der Prozessor nun, wer hier was will?
Der Betriebssystem kernel fragt alle in Frage kommenden Geräte ab, ob sie vor kurzem ein Interrupt geschickt haben ;)

pippo
2007-10-15, 22:41:13
Danke soweit, jetzt ist einiges klar :) Hätt jetzt nur noch ne Frage zu den I/O-Adressen. Brauch ich diese nur, wenn kein DMA-Kontroller vorhanden ist und die CPU direkt mit dem Gerät kommunizieren muss?

Unfug
2007-10-15, 23:16:50
Die CPU muss ja wissen, wohin sie etwas schicken soll. Ohne eine Zieladresse (=I/O Adresse) würde der Brief Zuhause liegen bleiben ;-).

pippo
2007-10-15, 23:26:27
Hmm, das bedeutet nun? Der DMA-Controller braucht ja auch ne Adresse.

Unfug
2007-10-15, 23:38:20
Ich hab dir mal einen guten Link rausgesucht, da ich auch nicht sooo tiefgreifende Kentnisse habe und Du scheinst ja hungrig auf mehr zu sein :-D
http://www.bjoern-koester.de/iogrundlagen/

Ich bin teilweise rübergeflogen über den Text und fand es alles sehr verständlich.
Nacht. Ich hau mich hin ;-)