as 2007-08-08 01:13:16 UTC
FreeBSD ports repository
Modified files:
books/developers-handbook/dma chapter.sgml
Log:
Kapitel 9 formatiert.
Revision Changes Path
1.3 +891 -771 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.2
retrieving revision 1.3
diff -u -I$FreeBSDde.*$ -r1.2 -r1.3
--- chapter.sgml 7 Aug 2007 14:58:58 -0000 1.2
+++ chapter.sgml 8 Aug 2007 01:13:16 -0000 1.3
@@ -16,252 +16,305 @@
Reserved. 10 December 1996. Last Update 8 October
1997.</emphasis></para>
- <para>Direct Memory Access (DMA) ist eine Methode, die es erlaubt, Daten von
- einer stelle in einem Rechnern an eine andere zu transferieren ohne
- Eingreifen des Prozessors (CPU).</para>
-
- <para>Die Art und Weise, in der die DMA-Funktion implementiert ist, variiert
- zwischen den Rechnerarchitekturen. Daher beschränken wir uns im Folgenden
- ausschliesslich auf die Methoden und Implementierungen auf IBM
- Personal Computer (PC), dem IBM PC/AT und all seinen Nachfolgern und
- Nachbauten.</para>
-
- <para>Das DMA-Subsystem basiert auf dem &intel; 8237 DMA-Controller. Der
- 8237 enthält vier DMA-Kanäle, welche unabhängig voneinander programmiert
- werden können und jeder dieser Kanäle kann zu einem beliebigen Zeitpunkt
- aktiv sein. Diese Kanäle sind mit 0, 1, 2 und 3 nummeriert. Beginnend
- mit dem PC/AT fügte IBM 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 jedem Transfer, wobei das erste Byte
- immer von einer geradzahligen Adresse stammt. Die zwei Controller sind
- identische Komponenten und der Unterschied in der Transfergröße wird durch
- die Art und Weise verursacht, wie der zweite Controller im System
- beschaltet ist.</para>
-
- <para>Der 8237 hat zwei elektrische Signale für jeden Kanal: DRQ und
- -DACK. Zusätzlich gibt es weitere Signale mit den Namen HRQ (Hold Request),
- HLDA (Hold Acknowledge), -EOP (End of Process) sowie die Kontrollsignale
- für den Bus: -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 <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 I/O-Ports oder zwei Speicherbereichen.</para>
+ <para>Direct Memory Access (DMA) ist eine Methode, die es
+ erlaubt, Daten von einer stelle in einem Rechnern an eine andere
+ zu transferieren ohne Eingreifen des Prozessors (CPU).</para>
+
+ <para>Die Art und Weise, in der die DMA-Funktion implementiert
+ ist, variiert zwischen den Rechnerarchitekturen. Daher
+ beschränken wir uns im Folgenden ausschliesslich auf die
+ Methoden und Implementierungen auf IBM Personal Computer (PC),
+ dem IBM PC/AT und all seinen Nachfolgern und Nachbauten.</para>
+
+ <para>Das DMA-Subsystem basiert auf dem &intel; 8237
+ DMA-Controller. Der 8237 enthält vier DMA-Kanäle,
+ welche unabhängig voneinander programmiert werden
+ können und jeder dieser Kanäle kann zu einem
+ beliebigen Zeitpunkt aktiv sein. Diese Kanäle sind mit 0,
+ 1, 2 und 3 nummeriert. Beginnend mit dem PC/AT fügte IBM
+ 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
+ jedem Transfer, wobei das erste Byte immer von einer
+ geradzahligen Adresse stammt. Die zwei Controller sind
+ identische Komponenten und der Unterschied in der
+ Transfergröße wird durch die Art und Weise
+ verursacht, wie der zweite Controller im System beschaltet
+ ist.</para>
+
+ <para>Der 8237 hat zwei elektrische Signale für jeden
+ Kanal: DRQ und -DACK. Zusätzlich gibt es weitere Signale
+ mit den Namen HRQ (Hold Request), HLDA (Hold Acknowledge), -EOP
+ (End of Process) sowie die Kontrollsignale für den Bus:
+ -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
+ <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
+ 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. Aber niemand
- in der PC-Industrie benutzt diese begrenzte Resource, da es schneller ist
- die Daten mittels der CPU zwischen Speicherbereichen zu bewegen.</para>
+ <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.
+ 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>
- <para>In der PC-Architekur wird jeder DMA-Kanal normalerweise nur dann
- aktiviert, wenn die Hardware, welche einen gegebenen DMA-Kanal benutzt,
- einen Transfer durch Setzen der DRQ-Linie verlangt.</para>
+ <para>In der PC-Architekur wird jeder DMA-Kanal normalerweise
+ nur dann aktiviert, wenn die Hardware, welche einen gegebenen
+ DMA-Kanal benutzt, einen Transfer durch Setzen der DRQ-Linie
+ verlangt.</para>
<sect2>
<title>Beispiel eines DMA-Transfers</title>
- <para>Hier ist ein Beispiel fr die notwendigen Schritte, welche einen
- DMA-Transfer veranlassen und durchführen. In diesem Beispiel hat der
- Diskettencontroller (floppy disk controller, FDC) nur ein Byte zu lesen
- und verlangt vom 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>
-
- <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 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>
-
- <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>
-
- <para>Da der DMA-Controller nun <quote>verantwortlich ist</quote>, aktiviert er
- -MEMR, -MEMW, -IOR, -IOW Output-Signale und der Output des DMA-Controllers
- wird auf 0x3456 gesetzt, damit das zu transferierende Byte zu einem
+ <para>Hier ist ein Beispiel fr die notwendigen Schritte,
+ welche einen DMA-Transfer veranlassen und durchführen.
+ In diesem Beispiel hat der Diskettencontroller (floppy disk
+ controller, FDC) nur ein Byte zu lesen und verlangt vom
+ 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>
+
+ <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
+ 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>
+
+ <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>
+
+ <para>Da der DMA-Controller nun <quote>verantwortlich
+ ist</quote>, aktiviert er -MEMR, -MEMW, -IOR, -IOW
+ Output-Signale und der Output des DMA-Controllers wird auf
+ 0x3456 gesetzt, damit das zu transferierende 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
----------------------------------------------
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 Wed 08 Aug 2007 - 03:17:14 CEST