cvs commit: de-docproj/books/developers-handbook/dma chapter.sgml

From: Hagen Kuehl <nornagest(at)doc.bsdgroup.de>
Date: Sun, 2 Sep 2007 10:40:52 GMT

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 &copy; 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 &uuml;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&auml;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&auml;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&szlig;
         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&szlig; zwei Kan&auml;le
  - verbunden sind, um einen h&ouml;heren Durchsatz bei
  - DMA-Operationen zwischen verschiedenen Speicherbereichen in
  - einem nicht-<quote>fly-by</quote>-Modus zu gew&auml;hrleisten.
  + <para>Der 8237 erlaubt es, da&szlig; zwei Kan&auml;le verbunden
  + werden, um DMA-Operationen zwischen zwei Speicherbereichen in
  + einem nicht-<quote>fly-by</quote>-Modus zu durchzuf&uuml;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&szlig; der
           FDC das DRQ2-Signal (die DRQ-Linie f&uuml;r DMA-Kanal 2)
  - einf&uuml;gt, um den DMA-Controller zu alarmieren.</para>
  + setzt, um den DMA-Controller zu alarmieren.</para>
   
  - <para>Der DMA-Controller nimmt wahr, da&szlig; das DRQ2-Signal
  - eingef&uuml;gt ist. Der DMA-Controller stellt sicher,
  - da&szlig; der DMA-Kanal 2 programmiert und unmaskiert
  - (freigegeben) ist. Der DMA-Controller stellt gleichzeitig
  - sicher, da&szlig; keiner der anderen DMA-Kan&auml;le aktiv ist
  - oder aktiv sein m&ouml;chte mit einer h&ouml;heren
  - Priorit&auml;t. Sobald all diese &Uuml;berpr&uuml;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&uuml;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&szlig; das DRQ2-Signal
  + gesetzt ist. Der DMA-Controller stellt sicher, da&szlig; der
  + DMA-Kanal 2 programmiert und unmaskiert (freigegeben) ist. Der
  + DMA-Controller stellt gleichzeitig sicher, da&szlig; keiner
  + der anderen DMA-Kan&auml;le aktiv ist oder aktiv sein
  + m&ouml;chte und eine h&ouml;here Priorit&auml;ti hat. Sobald
  + all diese &Uuml;berpr&uuml;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&uuml;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&auml;nden
  - (entweder hoch oder niedrig) und die CPU teilt dem
  - DMA-Controller mittels des HLDA-Signals mit, da&szlig; er nun
  - die Kontrolle &uuml;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&szlig; er nun die Kontrolle
  + &uuml;ber den Bus hat.</para>
   
         <para>Abh&auml;ngig vom Prozessor kann die CPU noch einige
  - zus&auml;tzliche Instruktionen ausf&uuml;hren ohne die
  - Kontrolle des Bus, aber sie mu&szlig; unter Umst&auml;nden
  - warten, wenn sie Instruktionen abarbeiten will, welche etwas
  - aus dem Speicher lesen m&uuml;ssen, was nicht im internen
  - Prozessor-Cache oder der Pipeline ist.</para>
  + zus&auml;tzliche Befehle ausf&uuml;hren ohne die Kontrolle des
  + Bus, aber letztendlich mu&szlig; sie warten, wenn sie Befehle
  + verarbeiten will, welche etwas aus dem Speicher lesen
  + m&uuml;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 &uuml;bertragende Byte zu einem
           bestimmten Speicherbereich gelangt.</para>
   
         <para>Der DMA-Controller verst&auml;ndigt nun das Ger&auml;t,
           welches die Anforderung veranlasst hat, da&szlig; der Transfer
  - beginnt. Dies geschieht mittels einf&uuml;gen des Signals
  - -DACK signal oder wie hier in unserem Beispiel mittels
  - -DACK2.</para>
  -
  - <para>Der Floppy-Controller ist nun verantwortlich f&uuml;r
  - das Setzen des Bytes f&uuml;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&auml;t
  + beginnt. Dies geschieht durch setzen des Signals -DACK oder im
  + Fall des Diskettencontrollers durch -DACK2.</para>
  +
  + <para>Der Floppy-Controller ist nun daf&uuml;r verantwortlich
  + das zu &uuml;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&auml;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&szlig;, da&szlig; das
           Byte &uuml;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&szlig;, da&szlig; es nicht l&auml;nger
  - ben&ouml;tigt wird. Der DMA-Controller f&uuml;gt das -DACK2
  - -Signal wieder ein und der FDC registriert, da&szlig; er
  - aufh&ouml;ren mu&szlig; Daten an den Bus zu senden.</para>
  + <para>Da der DMA-Zyklus nur ein einzelnes Byte auf einmal
  + &uuml;bertr&auml;gt, wird der FDC nun das Signal DRQ2
  + deaktivieren und der DMA-Controller wei&szlig;, da&szlig; er
  + nicht l&auml;nger ben&ouml;tigt wird. Der DMA-Controller setzt
  + das -DACK2 -Signal wieder und der FDC registriert, da&szlig;
  + er aufh&ouml;ren mu&szlig; Daten an den Bus zu senden.</para>
   
         <para>Der DMA-Controller wird nun &uuml;berpr&uuml;fen, ob
           andere DMA-Kan&auml;le irgendwelche Arbeiten bereithalten.
  - Falls keiner der Kan&auml;le DRQ-Linien eingef&uuml;gt hat,
  + Falls keiner der Kan&auml;le DRQ-Signale gesetzt hat,
           wei&szlig; der Controller, da&szlig; er seine Arbeit beendet
  - hat und versieht -MEMR, -MEMW, -IOR, -IOW und die
  - Adress-Signale mit drei Zust&auml;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&auml;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&auml;nge und f&auml;hrt mit der
  + Verarbeitung von Befehlen und dem Zugriff auf Hauptspeicher
  + und Peripherie fort.</para>
   
         <para>F&uuml;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

search this site