3.3 – Phasen-Pipelining und Pipeline-Hazards

 

Der Ablauf einer Pipeline mit den Stufen Befehlsphase(BH), Dekodierphase (DE), Operandenholphase (OH), Ausführphase (AP) und Rückschreibphase (RS) kann wie folgt skizziert werden:

phasen-pipelining-parallel-rechner-cpu-computer

  1. Erklären Sie, inwiefern der Parallelisierungsgrad eines Rechners durch Pipelines erhöht werden kann.
  2. Welche Probleme können bei der Nutzung von Pipelines entstehen?

    Stichwort: Pipeline-Hazards

  3. Skizzieren Sie eine 5-stufige Pipeline für 7 Befehle, wobei der 3. Befehl eine RAW-Abhängigkeit (read after write) zum 1. Befehl hat, d.h. der 3. Befehl muss einen Operanden lesen, bevor der 1. Befehl diesen Operanden überschreibt.

Lösung 3.3

a)

Durch das sog. Prefetching kann die nächste Instruktion aus dem Speicher geholt werden, während die aktuelle Instruktion noch abgearbeitet wird. Im Vergleich zur sequentiellen Abarbeitung von Befehlen ohne Pipelining (vgl. ”von Neumann”- Architektur)

befehl-sequentiell-parallel-ausfuhrung-neumann

lassen sich durch die fließbandartige Verarbeitung mehrere Befehlsphasen, die sich nicht gegenseitig stören, zeitgleich bearbeiten. Im Idealfall, d.h. wenn keine Konflikte zwischen den Phasen oder den Befehlen vorhanden sind, erhält man einen maximalen Speedup in Höhe der Anzahl der Pipelinestufen.

b)

Eine hohe Anzahl an Pipelinestufen erhöht den idealen Speedup, jedoch

  • verursacht jede Pipelinestufe einen gewissen Overhead (z.B. Daten zwischen Puffern kopieren, zeitliches Delay, …)
  • für eine wachsende Anzahl an Pipelinestufen ist eine komplexere Steuerungslogik nötig (z.B. müssen Register- und Speicherabhängigkeiten berücksichtigt werden)
  • Pipeline-Hazards: Situation, in der eine Instruktion in der Pipeline nicht weiter ausgeführt werden kann oder darf. Mögliche Ausprägungen sind
    • strukturelle Hazards: Ressourcenkonflikt bei der zeitgleichen Ausführung mehrerer Instruktionen, falls zwei Instruktionen die selbe Hardwareressource nutzen
    • Daten-Hazards: eine Instruktion kann z.B. vom Ergebnis einer früheren Instruktion abhängen, welches jedoch zum Bearbeitungszeitpunkt noch nicht verfügbar ist (RAW Abhängigkeit, read after write). Weitere Beispiele: WAR-Abhängigkeit (write after read), WAW-Abhängigkeit (write after write)
    • Kontroll-Hazards: Instruktion modifiziert den Programmzähler (durch bedingte Verzweigungen (branch) oder Sprünge (jumps)), sodass nachfolgende Instruktionen evtl. nicht mehr relevant sind.

c)

pipeline-hazard-stall-verschiebung-raw-war-abhangigkeit

Ähnliche Artikel

Kommentar verfassen