nornagest 2007-09-02 10:40:52 UTC
FreeBSD German Documentation Repository
Modified files:
books/developers-handbook/dma chapter.sgml
Log:
Korrektur gelesen von Hagen Kuehl
Revision Changes Path
1.8 +230 -233 de-docproj/books/developers-handbook/dma/chapter.sgml
Index: chapter.sgml
===================================================================
RCS file: /home/cvs/de-docproj/books/developers-handbook/dma/chapter.sgml,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -I$FreeBSDde.*$ -r1.7 -r1.8
--- chapter.sgml 31 Aug 2007 06:13:08 -0000 1.7
+++ chapter.sgml 2 Sep 2007 10:40:52 -0000 1.8
@@ -21,15 +21,15 @@
<title>DMA</title>
<sect1 id="dma-basics">
- <title>DMA: Was es ist und wie es arbeitet</title>
+ <title>DMA: Was es ist und wie es funktioniert</title>
<para><emphasis>Copyright © 1995,1997 &a.uhclem;, Alle Rechte
vorbehalten. 10. Dezember 1996. Letztes Update Oktober
1997.</emphasis></para>
- <para>Direct Memory Access (DMA) ist eine Methode, die es
- erlaubt, Daten von einer Stelle in einem Rechner an eine andere
- zu transferieren ohne Eingreifen des Prozessors (CPU).</para>
+ <para>Direct Memory Access (DMA) ist eine Methode, die es erlaubt,
+ Daten von einem Ort in einem Rechner an einen anderen ohne
+ Eingriff des Prozessors (CPU) zu übertragen.</para>
<para>Die Art und Weise, in der die DMA-Funktion implementiert
ist, variiert zwischen den Rechnerarchitekturen. Daher
@@ -46,9 +46,9 @@
einen zweiten 8237-Chip hinzu und nummerierte dessen Kanäle
mit 4, 5, 6 und 7.</para>
- <para>Der originale DMA-Controller (0, 1, 2 and 3) bewegt ein
- Byte bei jedem Transfer. Der zweite DMA-Controller (4, 5, 6, and
- 7) bewegt 16-Bits aus zwei benachbarten Speicherbereichen bei
+ <para>Der originale DMA-Controller (0, 1, 2 and 3) bewegt ein Byte
+ bei jedem Transfer. Der zweite DMA-Controller (4, 5, 6, and 7)
+ bewegt 16-Bits aus zwei benachbarten Speicherplätzen bei
jedem Transfer, wobei das erste Byte immer von einer
geradzahligen Adresse stammt. Die zwei Controller sind
identische Komponenten und der Unterschied in der
@@ -63,23 +63,21 @@
-MEMR (Memory Read), -MEMW (Memory Write), -IOR (I/O Read) und
-IOW (I/O Write).</para>
- <para>Der 8237 DMA-Controller ist bekannt als ein
+ <para>Der 8237 DMA-Controller ist ein sogenannter
<quote>fly-by</quote>-DMA-Controller. Das bedeutet, daß
die von einem zu einem anderen Bereich bewegten Daten weder den
DMA-Chip durchlaufen noch darin gespeichert werden. Daraus
- folgernd kann der DMA-Controller nur zwischen einem I/O-Port und
- einer Speicheradresse Daten bewegen, nicht zwischen zwei
+ folgt, dass der DMA-Controller nur zwischen einem I/O-Port und
+ einer Speicheradresse Daten bewegen kann, nicht zwischen zwei
I/O-Ports oder zwei Speicherbereichen.</para>
<note>
- <para>Der 8237 erlaubt es, daß zwei Kanäle
- verbunden sind, um einen höheren Durchsatz bei
- DMA-Operationen zwischen verschiedenen Speicherbereichen in
- einem nicht-<quote>fly-by</quote>-Modus zu gewährleisten.
+ <para>Der 8237 erlaubt es, daß zwei Kanäle verbunden
+ werden, um DMA-Operationen zwischen zwei Speicherbereichen in
+ einem nicht-<quote>fly-by</quote>-Modus zu durchzuführen.
Aber niemand in der PC-Industrie benutzt diese begrenzte
Resource, da es schneller ist die Daten mittels der CPU
- zwischen Speicherbereichen zu bewegen.</para>
- </note>
+ zwischen Speicherbereichen zu bewegen.</para> </note>
<para>In der PC-Architekur wird jeder DMA-Kanal normalerweise
nur dann aktiviert, wenn die Hardware, welche einen gegebenen
@@ -96,89 +94,88 @@
DMA-Controller dieses Byte im Speicher an der Adresse
0x00123456 abzulegen. Der Prozess beginnt damit, daß der
FDC das DRQ2-Signal (die DRQ-Linie für DMA-Kanal 2)
- einfügt, um den DMA-Controller zu alarmieren.</para>
+ setzt, um den DMA-Controller zu alarmieren.</para>
- <para>Der DMA-Controller nimmt wahr, daß das DRQ2-Signal
- eingefügt ist. Der DMA-Controller stellt sicher,
- daß der DMA-Kanal 2 programmiert und unmaskiert
- (freigegeben) ist. Der DMA-Controller stellt gleichzeitig
- sicher, daß keiner der anderen DMA-Kanäle aktiv ist
- oder aktiv sein möchte mit einer höheren
- Priorität. Sobald all diese Überprüfungen
- durchlaufen sind, fordert der DMA-Controller die CPU auf, den
- Bus freizugeben, damit der DMA-Controller ihn nutzen kann.
- Diese Anforderung erfolgt mittels des HRQ-Signals, welches zur
- CPU geht.</para>
-
- <para>Die CPU erkennt das HRQ-Signal und führt die
- momentane Instruktion komplett aus. Sobald die CPU den Bus
- freigeben kann, wird er dies tun. Nun sind alle normalerweise
+ <para>Der DMA-Controller registriert, daß das DRQ2-Signal
+ gesetzt ist. Der DMA-Controller stellt sicher, daß der
+ DMA-Kanal 2 programmiert und unmaskiert (freigegeben) ist. Der
+ DMA-Controller stellt gleichzeitig sicher, daß keiner
+ der anderen DMA-Kanäle aktiv ist oder aktiv sein
+ möchte und eine höhere Prioritäti hat. Sobald
+ all diese Überprüfungen durchlaufen sind, fordert
+ der DMA-Controller die CPU auf, den Bus freizugeben, damit der
+ DMA-Controller ihn nutzen kann. Diese Anforderung erfolgt
+ durch setzen des HRQ-Signals, welches zur CPU geht.</para>
+
+ <para>Die CPU erkennt das HRQ-Signal und führt den
+ aktuellen Befehl komplett aus. Sobald die CPU den Bus
+ freigeben kann, wird sie dies tun. Nun sind alle normalerweise
von der CPU erzeugten Signale (-MEMR, -MEMW, -IOR, -IOW und
- ein paar andere) in einer Situation mit drei Zuständen
- (entweder hoch oder niedrig) und die CPU teilt dem
- DMA-Controller mittels des HLDA-Signals mit, daß er nun
- die Kontrolle über den Bus hat.</para>
+ ein paar andere) in einem Status mit einem dritten Zustand
+ (weder hoch noch niedrig) und die CPU teilt dem DMA-Controller
+ mittels des HLDA-Signals mit, daß er nun die Kontrolle
+ über den Bus hat.</para>
<para>Abhängig vom Prozessor kann die CPU noch einige
- zusätzliche Instruktionen ausführen ohne die
- Kontrolle des Bus, aber sie muß unter Umständen
- warten, wenn sie Instruktionen abarbeiten will, welche etwas
- aus dem Speicher lesen müssen, was nicht im internen
- Prozessor-Cache oder der Pipeline ist.</para>
+ zusätzliche Befehle ausführen ohne die Kontrolle des
+ Bus, aber letztendlich muß sie warten, wenn sie Befehle
+ verarbeiten will, welche etwas aus dem Speicher lesen
+ müssen, was nicht im internen Prozessor-Cache oder der
+ Pipeline ist.</para>
<para>Da der DMA-Controller nun <quote>verantwortlich
- ist</quote>, aktiviert er -MEMR, -MEMW, -IOR, -IOW
+ ist</quote>, aktiviert er seine -MEMR, -MEMW, -IOR, -IOW
Output-Signale und der Output des DMA-Controllers wird auf
- 0x3456 gesetzt, damit das zu transferierende Byte zu einem
+ 0x3456 gesetzt, damit das zu übertragende Byte zu einem
bestimmten Speicherbereich gelangt.</para>
<para>Der DMA-Controller verständigt nun das Gerät,
welches die Anforderung veranlasst hat, daß der Transfer
- beginnt. Dies geschieht mittels einfügen des Signals
- -DACK signal oder wie hier in unserem Beispiel mittels
- -DACK2.</para>
-
- <para>Der Floppy-Controller ist nun verantwortlich für
- das Setzen des Bytes für den Transport auf den
- Datenlinien des Bus. Sofern der Floppy-Controller nicht mehr
- Zeit braucht, um das Daten-Byte auf den Bus zu bringen (falls
- dies erforderlich ist benachrichtigt das Peripheriegerät
+ beginnt. Dies geschieht durch setzen des Signals -DACK oder im
+ Fall des Diskettencontrollers durch -DACK2.</para>
+
+ <para>Der Floppy-Controller ist nun dafür verantwortlich
+ das zu übertragende Byte auf den Datenbahnen des Bus zu
+ platziren. Sofern der Floppy-Controller nicht mehr Zeit
+ braucht, um das Daten-Byte auf den Bus zu bringen (falls dies
+ erforderlich ist benachrichtigt das Peripheriegerät
mittels READY-Signal den DMA-Controller), dann wird der
DMA-Controller ein Zeitsignal warten und die Signale -MEMW und
-IOR widerrufen, damit der Speicher das Byte auf dem Bus
sperrt und speichert und der FDC weiß, daß das
Byte übertragen wurde.</para>
- <para>Da der DMA-Zyklus nur ein einzelnes Byte zugleich
- transferiert, wird der FDC nun das Signal DRQ2 absetzen und
- der DMA-Controller weiß, daß es nicht länger
- benötigt wird. Der DMA-Controller fügt das -DACK2
- -Signal wieder ein und der FDC registriert, daß er
- aufhören muß Daten an den Bus zu senden.</para>
+ <para>Da der DMA-Zyklus nur ein einzelnes Byte auf einmal
+ überträgt, wird der FDC nun das Signal DRQ2
+ deaktivieren und der DMA-Controller weiß, daß er
+ nicht länger benötigt wird. Der DMA-Controller setzt
+ das -DACK2 -Signal wieder und der FDC registriert, daß
+ er aufhören muß Daten an den Bus zu senden.</para>
<para>Der DMA-Controller wird nun überprüfen, ob
andere DMA-Kanäle irgendwelche Arbeiten bereithalten.
- Falls keiner der Kanäle DRQ-Linien eingefügt hat,
+ Falls keiner der Kanäle DRQ-Signale gesetzt hat,
weiß der Controller, daß er seine Arbeit beendet
- hat und versieht -MEMR, -MEMW, -IOR, -IOW und die
- Adress-Signale mit drei Zuständen.</para>
+ hat und setzt -MEMR, -MEMW, -IOR, -IOW und die Adress-Signale
+ auf den dritten Zustand.</para>
<para>Abschliessend setzt der DMA-Controller wieder das
- HRQ-Signal. Die CPU registriert dies und setzt wieder das
- HOLDA-Signal. Die CPU aktiviert nun ihre -MEMR, -MEMW, -IOR,
- -IOW und Adress-Linien und fährt mit der Abarbeitung von
- Instruktionen und dem Zugriff auf Hauptspeicher und Peripherie
- fort.</para>
+ HRQ-Signal. Die CPU registriert dies und entfernt das
+ HOLDA-Signal wieder. Die CPU aktiviert nun ihre -MEMR, -MEMW,
+ -IOR, -IOW und Adress-Ausgänge und fährt mit der
+ Verarbeitung von Befehlen und dem Zugriff auf Hauptspeicher
+ und Peripherie fort.</para>
<para>Für einen typischen Sektor einer Diskette wird der
- obige Prozess 512 Mal wiederholt, jeweils pro Byte. Nach dem
----------------------------------------------
Diff block truncated. (Max lines = 200)
----------------------------------------------
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-cvs-doc" in the body of the message
Received on Sun 02 Sep 2007 - 12:42:15 CEST