[gesichtete Version] | [gesichtete Version] |
Kwastg (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
|||
(20 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
<p> | <p> | ||
Ohne den DMA-Controller wurden Daten immer über | Ohne den DMA-Controller wurden Daten immer über den "Umweg CPU" transportiert. Dieses [http://youtu.be/nOEW4I_QX2c Video] hat den Ablauf beispielhaft gezeigt: | ||
</p> | </p> | ||
<p> | <p> | ||
< | <loop_figure title="Daten müssen den Umweg über die CPU nehmen" description="" copyright="CC-BY" index=true show_copyright=true id="5fa978561fbdd"> | ||
[[Datei:DMA-Quelle-CPU-Ziel.JPG]] | |||
</loop_figure> | |||
</ | |||
</p> | </p> | ||
<br /> | <br /> | ||
== Ohne Umweg, also direkt == | |||
<p> | <p> | ||
Mit DMA-Controller können die Daten den direkten Weg nehmen, wie das folgende Beispiel zeigt: | Mit DMA-Controller können die Daten den direkten Weg nehmen, wie das folgende Beispiel zeigt: | ||
Zeile 20: | Zeile 17: | ||
# Der Festplatten-Controller ist mit dem (Daten-) Bus verbunden und legt die Daten auf selbigen. | # Der Festplatten-Controller ist mit dem (Daten-) Bus verbunden und legt die Daten auf selbigen. | ||
# Der Hauptspeicher ist ebenfalls mit dem (Daten-) Bus verbunden und kann die Daten sofort entgegennehmen, dabei sorgt der DMA-Controller über Steuer- und Adressbus dafür, dass der Hauptspeicher erfährt, wohin die Daten gespeichert werden müssen. | # Der Hauptspeicher ist ebenfalls mit dem (Daten-) Bus verbunden und kann die Daten sofort entgegennehmen, dabei sorgt der DMA-Controller über Steuer- und Adressbus dafür, dass der Hauptspeicher erfährt, wohin die Daten gespeichert werden müssen. | ||
</p> | |||
<p> | |||
Es kommt also auf das Zusammenspiel zwischen dem DMA-Controller, dem Bussystem, dem Hauptspeicher und dem weiteren beteiligten DMA-fähigen Gerät an. Um einen möglichst schnellen Datentransfer zu erreichen macht es allemal Sinn, die Daten ohne Umweg zu transportieren. | |||
</p> | </p> | ||
<br /> | |||
<p> | |||
<loop_area type="notice"> | |||
<p> | |||
Du hast bereits bemerkt, dass an dieser Stelle eine stark vereinfachte Darstellung des Sachverhalts erfolgt. Generell wird hier davon ausgegangen, | |||
</p> | |||
<p> | |||
* dass das Bussystem für die Datenübertragung per DMA zur Verfügung steht, | |||
* dass sich CPU und DMA-Controller "irgendwie" einigen, wer gerade den Bus benutzen darf, | |||
* dass Datenkollisionen auf dem Bus "irgendwie" vermieden werden. | |||
</p> | |||
<p> | |||
Auf eine tiefere Auseinandersetzung mit den angedeuteten Details wird an dieser Stelle bewusst verzichtet, da es den Rahmen dieses Lernmoduls sprengen würde. | |||
</p> | |||
</loop_area> | |||
</p> | |||
<br /> | |||
== Es geht nicht immer direkt == | |||
<p> | <p> | ||
<loop_figure title=" | Der beschriebene direkte Weg der Daten von der Quelle zum Ziel ist natürlich der bevorzugte Weg. Jedoch ist dieser nicht immer möglich. Die folgende Aufgabe beschäftigt sich mit einem entsprechenden Szenario. | ||
[[Datei:DMA-Controller. | </p> | ||
<br /> | |||
== Aufgabe 1 == | |||
<p> | |||
<loop_area type="task"> | |||
<loop_task title="Umweg über DMA-Controller" id="5fa978561fbe6"> | |||
<p> | |||
Angenommen Quelle und Ziel bei einer Übertragung per DMA sind beide der Hauptspeicher. Dann sollen also Daten von einer Stelle des Hauptspeichers an eine andere Stelle des Hauptspeichers kopiert werden. | |||
</p> | |||
<p> | |||
* Erläutere warum in diesem Fall keine direkte Übertragung von der Quelle über den Bus zum Ziel möglich ist. | |||
</p> | |||
<br /> | |||
<p> | |||
Ersatzweise springt der DMA-Controller ein: | |||
</p> | |||
<p> | |||
<loop_figure title="Umweg über DMA-Controller" description="" copyright="CC-BY" index=true show_copyright=true id="5fa978561fbed"> | |||
[[Datei:DMA-Quelle-DMA-Controller-Ziel.JPG]] | |||
</loop_figure> | </loop_figure> | ||
</p> | </p> | ||
<br /> | <br /> | ||
< | <p> | ||
< | * Aber dem DMA-Controller aus der folgenden Abbildung fehlt für diesen Fall noch etwas, oder? Was ist gemeint? | ||
</ | </p> | ||
</ | <p> | ||
<loop_figure title="Aufbau eines DMA-Controllers" description="" copyright="CC-BY" index=true show_copyright=true id="5fa978561fbf3"> | |||
[[Datei:DMA-Controller.jpg]] | |||
</loop_figure> | |||
</p> | |||
</loop_task> | |||
</loop_area> | |||
</p> |
Ohne den DMA-Controller wurden Daten immer über den "Umweg CPU" transportiert. Dieses Video hat den Ablauf beispielhaft gezeigt:
Mit DMA-Controller können die Daten den direkten Weg nehmen, wie das folgende Beispiel zeigt:
Es kommt also auf das Zusammenspiel zwischen dem DMA-Controller, dem Bussystem, dem Hauptspeicher und dem weiteren beteiligten DMA-fähigen Gerät an. Um einen möglichst schnellen Datentransfer zu erreichen macht es allemal Sinn, die Daten ohne Umweg zu transportieren.
Du hast bereits bemerkt, dass an dieser Stelle eine stark vereinfachte Darstellung des Sachverhalts erfolgt. Generell wird hier davon ausgegangen,
Auf eine tiefere Auseinandersetzung mit den angedeuteten Details wird an dieser Stelle bewusst verzichtet, da es den Rahmen dieses Lernmoduls sprengen würde.
Der beschriebene direkte Weg der Daten von der Quelle zum Ziel ist natürlich der bevorzugte Weg. Jedoch ist dieser nicht immer möglich. Die folgende Aufgabe beschäftigt sich mit einem entsprechenden Szenario.
Angenommen Quelle und Ziel bei einer Übertragung per DMA sind beide der Hauptspeicher. Dann sollen also Daten von einer Stelle des Hauptspeichers an eine andere Stelle des Hauptspeichers kopiert werden.
Ersatzweise springt der DMA-Controller ein: