Das Kefk Network Wiki befindet sich im Testbetrieb.


Pipeline-Architektur

Aus Kefk.

(Weitergeleitet von Pipelining)
Wechseln zu: Navigation, Suche

Die Pipeline-Architektur (oft auch kurz Pipelining genannt) beschreibt die Fähigkeit von Mikroprozessoren, die Abarbeitung von Maschinenbefehlen so zu parallelisieren, dass möglichst alle Funktionselemente des Mikroprozessors voll ausgelastet werden. Der Zweck jedes Pipelinings ist es, komplexe Befehle in einfachere Einzelaktionen zu zerlegen, die dann parallelisiert werden können. Die Teiloperationen werden taktsynchron von hintereinander geschalteten Verarbeitungseinheiten bearbeitet.

Die einzelnen Einheiten einer Pipeline nennt man Pipeline-Stufen, Pipeline-Stages oder auch Pipeline-Segmente. Diese Stufen werden durch getaktete Pipeline-Register (auf Englisch latches) getrennt.

Inhaltsverzeichnis

Taktung

Je einfacher eine einzelne Stufe aufgebaut ist, desto höher ist die Frequenz, mit der sie betrieben werden kann. In einer modernen CPU mit einem Kerntakt im Gigahertz-Bereich (1 GHz ~ 1 Milliarde Takte pro Sekunde) kann die Befehlspipeline über 20 Stufen lang sein. Der Kerntakt ist die Zeit, die ein Befehl braucht, um eine Stufe der Pipeline zu durchwandern. In einer k-stufigen Pipeline wird ein Befehl also in k Takten von k Stufen bearbeitet. Da in jedem Takt ein neuer Befehl geladen wird, verlässt im Idealfall auch ein Befehl pro Takt die Pipeline.

Konflikte

Ist es für die Bearbeitung eines Befehls in einer Stufe der Pipeline notwendig, dass ein Befehl, der sich weiter vorne in der Pipeline befindet, zuerst abgearbeitet wird, so spricht man von Abhängigkeiten. Diese können zu Konflikten (engl. Hazards) führen. Es können drei Konfliktarten auftreten:

  • Ressourcen-Konflikte, wenn eine Stufe der Pipeline Zugriff auf eine Ressource benötigt, die bereits von einer anderen Stufe belegt ist
  • Daten-Konflikte,
    • auf Befehlsebene: Daten, die in einem Befehl benutzt werden, stehen nicht zur Verfügung
    • auf Transferebene: Registerinhalte, die in einem Schritt benutzt werden, stehen nicht zur Verfügung
  • Kontrollfluss-Konflikte, wenn die Pipeline abwarten muss, ob ein bedingter Sprung ausgeführt wird oder nicht.

Pipelining und Sprungvorhersagen

Architekturen mit besonders langer Pipeline, wie etwa der Intel Pentium 4 oder der IBM Power5, besitzen deshalb sehr ausgeklügelte Techniken zur Sprungvorhersage (engl. Branch-Prediction), so dass die CPU nur in weniger als einem Prozent der stattfindenden Sprünge den Inhalt der Befehlspipeline verwerfen muss.

Vorteile und Nachteile

Der Vorteil langer Pipelines besteht in der starken Steigerung der Verarbeitungsgeschwindigkeit. Der Nachteil besteht gerade darin, dass sich sehr viele Befehle gleichzeitig in Bearbeitung befinden. Im Falle eines Pipeline-Flushs müssen alle Befehle in der Pipeline verworfen werden und die Pipeline anschließend neu gefüllt werden. Dies bedarf des Nachladens von Befehlen aus dem Arbeitsspeicher oder dem Befehlscache der CPU, so dass sich hohe Latenzzeiten ergeben, in denen der Prozessor untätig ist. Anders formuliert ist der Gewinn durch Pipelining umso größer, je höher die Anzahl der Befehle zwischen Kontrollflußänderungen ist, da die Pipeline dann erst nach längerer Benutzung unter Vollast wieder geflusht werden muss.

Beispiel

In modernen Systemen kommen verschiedene Pipelines zum Einsatz.

Beispiel einer vierstufigen Befehlspipeline:

4-stufiges Pipelining

A – Befehlscode laden (IF, Instruction Fetch)
In der Befehlbereitsstellungsphase wird der Befehl, der durch den Befehlszähler adressiert ist, aus dem Arbeitsspeicher geladen. Der Befehlszähler wird anschließend hochgezählt.
B – Instruktion dekodieren und Laden der Daten (ID, Instruction Decoding)
In der Dekodier- und Ladephase wird der geladene Befehl dekodiert (1. Takthälfte) und die notwendigen Daten aus dem Arbeitsspeicher und dem Registersatz geladen (2. Takthälfte).
C – Befehl ausführen (EX, Execution)
In der Ausführungsphase wird der dekodierte Befehl ausgeführt. Das Ergebnis wird durch den Pipeline-latch gepuffert.
D – Ergebnisse zurückgeben (WB, Write Back)
In der Resultatspeicherphase wird das Ergebnis in den Arbeitsspeicher oder in den Registersatz zurückgeschrieben.

Trivia

Der erste Mikroprozessor mit einer (einstufigen) Pipeline war der MOS Technology 6502.

Siehe auch

Weblinks

Wikipedia
Dieses Dokument entstammt in seiner ersten oder einer späteren Version der deutschsprachigen Wikipedia. Es ist dort zu finden unter dem Stichwort Pipeline-Architektur, die Liste der bisherigen Autoren befindet sich in der Versionsliste; die Originalfassung kann dort auch bearbeitet werden. Alle Texte der Wikipedia und ihre Derivate stehen unter der GNU-Lizenz für freie Dokumentation.
Persönliche Werkzeuge