ScholarGate
Assistent

Pipelining und Hazards

Pipelining überlappt die Ausführung aufeinanderfolgender Instruktionen, indem die Instruktionsverarbeitung in Stufen unterteilt wird, was den Durchsatz erhöht; Hazards sind Situationen – Ressourcenkonflikte, Datenabhängigkeiten und Sprünge –, die verhindern, dass die nächste Instruktion im folgenden Zyklus fortgesetzt werden kann.

Thema finden mit PaperMindDemnächstFind papers & topics
Tools & resources
Folien herunterladen
Learn & explore
VideoDemnächst

Definition

Pipelining ist eine Technik, die die Ausführung mehrerer Instruktionen überlappt, indem ihre Verarbeitung in sequentielle Stufen unterteilt wird, und ein Hazard ist jede Bedingung, die eine Stufe zum Anhalten zwingt, weil sie im nächsten Taktzyklus nicht korrekt fortfahren kann.

Scope

Dieses Thema behandelt die klassische Instruktionspipeline und die drei Hazard-Klassen, die sie begrenzen: strukturelle Hazards (Ressourcenkonflikte), Daten-Hazards (Abhängigkeiten zwischen Instruktionen) und Kontroll-Hazards (Sprünge). Es umfasst die Standardlösungen – Forwarding/Bypassing, Stalling und Sprungbehandlung. Es schließt fortgeschrittene parallele Ausgabe (Instruction-Level Parallelism), detaillierte Sprungrichtungsprädiktion (Branch Prediction) und dynamische Neuordnung (Out-of-Order Execution) aus.

Core questions

  • Wie erhöht die Unterteilung der Instruktionsausführung in Stufen den Durchsatz, ohne die Latenz zu reduzieren?
  • Was sind strukturelle, Daten- und Kontroll-Hazards, und was verursacht jeden einzelnen?
  • Wie löst Forwarding viele Daten-Hazards ohne Stalling?
  • Welche Kosten verursachen Sprünge in einer Pipeline, und wie werden diese gemindert?

Key concepts

  • Pipeline-Stufen (Fetch, Decode, Execute, Memory, Writeback)
  • Durchsatz vs. Latenz
  • strukturelle Hazards
  • Daten-Hazards
  • Kontroll-Hazards
  • Forwarding und Bypassing
  • Pipeline-Stalls und Bubbles
  • Sprungstrafe

Key theories

Pipeline-Durchsatz und Hazards
Eine k-stufige Pipeline schließt idealerweise nach dem Füllen eine Instruktion pro Zyklus ab, aber strukturelle, Daten- und Kontroll-Hazards führen zu Stalls, die den Durchsatz unter das Ideal reduzieren; das Pipeline-Design konzentriert sich auf die Minimierung dieser Stalls.

Mechanisms

Die Instruktionsverarbeitung wird in Stufen aufgeteilt, sodass, während eine Instruktion ausgeführt wird, andere geholt und dekodiert werden. Ein struktureller Hazard entsteht, wenn zwei Instruktionen dieselbe Ressource benötigen; ein Daten-Hazard, wenn eine Instruktion ein noch nicht produziertes Ergebnis benötigt; ein Kontroll-Hazard, wenn die nächste Instruktion von einem unaufgelösten Sprung abhängt. Forwarding leitet Ergebnisse direkt zwischen den Stufen weiter, Stalls fügen Bubbles ein, wenn Forwarding unzureichend ist, und die Sprungbehandlung reduziert die Strafen von Kontroll-Hazards.

Clinical relevance

Pipelining ist die grundlegende Leistungstechnik in praktisch jedem Prozessor, und das Verständnis von Hazards erklärt, warum die Instruktionsreihenfolge und das Sprungverhalten die Geschwindigkeit beeinflussen. Die Instruktionsplanung des Compilers und das Bewusstsein des Programmierers für Abhängigkeiten und Sprungmuster können die Leistung auf pipelined Hardware erheblich verbessern.

History

Pipelining erschien in frühen Hochleistungsmaschinen wie der IBM Stretch und der CDC 6600 in den frühen 1960er Jahren. Die einfache Fünf-Stufen-Pipeline wurde mit den RISC-Prozessoren der 1980er Jahre zu einem kanonischen Lehr- und Entwurfsmodell, und die systematische Klassifizierung von Hazards und ihren Lösungen wurde in den Hennessy-Patterson-Texten kodifiziert.

Key figures

  • John L. Hennessy
  • David A. Patterson
  • Seymour Cray

Related topics

Seminal works

  • hennessy2019
  • patterson2020

Frequently asked questions

Lässt Pipelining eine einzelne Instruktion schneller laufen?
Nein. Pipelining reduziert nicht die Zeit zur Ausführung einer einzelnen Instruktion (Latenz); es erhöht die Anzahl der Instruktionen, die pro Zeiteinheit abgeschlossen werden (Durchsatz), indem ihre Ausführung überlappt wird, ähnlich wie ein Fließband die Produktion steigert, ohne die Geschwindigkeit eines einzelnen Artikels zu erhöhen.
Was ist Forwarding?
Forwarding, oder Bypassing, leitet ein frisch berechnetes Ergebnis direkt von der Stufe, die es produziert hat, an eine spätere Stufe weiter, die es benötigt, anstatt darauf zu warten, dass es in das Registerfile zurückgeschrieben wird. Dies löst viele Daten-Hazards ohne die Pipeline anzuhalten.

Methods for this concept

Related concepts