- Mitglied seit
- 15.03.2002
- Beiträge
- 400
- Reaktionen
- 0
ich bräuchte bis morgen 15 Uhr ein Antworten auf die folgende Frage:
Nennen Sie 2 Probleme die der Pipeline-Ansatz in sich bringt und wie diese gelöst werden können.
Ich weiß dazu aus Skript, Wiki und Google:
Eine Pipeline ist im Prozessor eine Art Queue (oder Warteschlange) in der komplexe Befehle in simple einzel Aktionen zerlegt werden. In der Pipeline werden diese "kleinen" Befehle nun in einem Takt ausgeführt. Wenn ich das richtig verstanden habe werden mehrere Pipes mit unterschiedlichen Befehlen gefüttert, ob so den Prozessor möglichst voll auszulasten.
Ein Problem ist auf jeden Fall, dass Abhängigkeiten zwischen manchen Befehlen existieren. So kann z.B. ein Befehl erst dann ausgeführt, wenn eine Information von einem anderen Befehlt (der noch nicht verarbeitet wurde) eingetroffen ist. Dadurch bilden sich so genannte "Blasen" ist der Pipeline. Lösung: irgendwie wird ein Sprung ausgeführt. Aber wie? Kann das jemand in einfachen Worten erklären?
Zweites Problem: Im Falle eines Flushes (was genau ist das?) müssen ALLE Befehle, die sich in der Pipe befinden verworfen werden. Ich versteh das so, dass im Falle eines Fehlers sämtliche Befehle in der Pipe verloren gehen und diese anschließend komplett neu gefühllt werden muss.
Lösung: kein Plan
Falls ich irgendwo einen Fehler gemacht, lasse ich mich gerne berichtigen. Meine Quellen zu dem Thema sind nicht besonders aufschlussreich...
Vielen Dank im Vorraus!
Nennen Sie 2 Probleme die der Pipeline-Ansatz in sich bringt und wie diese gelöst werden können.
Ich weiß dazu aus Skript, Wiki und Google:
Eine Pipeline ist im Prozessor eine Art Queue (oder Warteschlange) in der komplexe Befehle in simple einzel Aktionen zerlegt werden. In der Pipeline werden diese "kleinen" Befehle nun in einem Takt ausgeführt. Wenn ich das richtig verstanden habe werden mehrere Pipes mit unterschiedlichen Befehlen gefüttert, ob so den Prozessor möglichst voll auszulasten.
Ein Problem ist auf jeden Fall, dass Abhängigkeiten zwischen manchen Befehlen existieren. So kann z.B. ein Befehl erst dann ausgeführt, wenn eine Information von einem anderen Befehlt (der noch nicht verarbeitet wurde) eingetroffen ist. Dadurch bilden sich so genannte "Blasen" ist der Pipeline. Lösung: irgendwie wird ein Sprung ausgeführt. Aber wie? Kann das jemand in einfachen Worten erklären?
Zweites Problem: Im Falle eines Flushes (was genau ist das?) müssen ALLE Befehle, die sich in der Pipe befinden verworfen werden. Ich versteh das so, dass im Falle eines Fehlers sämtliche Befehle in der Pipe verloren gehen und diese anschließend komplett neu gefühllt werden muss.
Lösung: kein Plan
Falls ich irgendwo einen Fehler gemacht, lasse ich mich gerne berichtigen. Meine Quellen zu dem Thema sind nicht besonders aufschlussreich...
Vielen Dank im Vorraus!