2 Rechnerarchitektur (RA) Sommersemester 26 Pipelines Jian-Jia Chen Informatik 2 http://ls2-www.cs.tu.de/daes/ 26/5/25 Diese Folien enthalten Graphiken mit Nutzungseinschränkungen. Das Kopieren der Graphiken ist im Allgemeinen nicht erlaubt.
Mikroprogrammierung Fließbandverarbeitung fetch decode RRR rr branch jump mar mar' lw load store rr2 branch2 2, 25-2 -
Mikroprogrammierung Fließbandverarbeitung fetch decode RRR rr branch jump mar mar' lw load store rr2 branch2 2, 25-3 -
Mikroprogrammierung Fließbandverarbeitung fetch decode RRR rr branch jump mar mar' lw load store rr2 branch2 2, 25 - -
Mikroprogrammierung Fließbandverarbeitung fetch decode RRR rr branch jump mar mar' lw load store rr2 branch2 2, 25-5 -
Mikroprogrammierung Fließbandverarbeitung fetch decode RRR rr branch jump mar mar' lw load store rr2 branch2 www.it.lth.se/courses/dsi/material/lectures/lecture6.pdf 2, 25 Flash-Animation - 6 -
2.3.2 Fließbandverarbeitung Fließband-Architektur (engl. pipeline architecture): Bearbeitung mehrerer Befehle gleichzeitig, analog zu Fertigungsfließbändern. Beispiel MIPS: instruction fetch instruction decode/ register read instruction execution/ address calculation Memory access (register) writeback 25:2 2:6 5: Speicher Speicher 5: 2, 25-7 -
Änderungen gegenüber der Struktur ohne Fließband Separater Addierer für Programm-Folgeadressen. Konzeptuelle Aufteilung des Speichers in Daten- und Befehlsspeicher. Aufteilung des Rechenwerks in Fließbandstufen, Trennung durch Pufferregister, T und Befehlsregister werden Pufferregistern. 25:2 2:6 5: Speicher Speicher Steuerwerk nicht dargestellt 5: 2, 25-8 -
Aufgaben der einzelnen Phasen bzw. Stufen Befehlsholphase (IF) Lesen des aktuellen Befehls; separater Speicher, zur Vermeidung von Konflikten mit Datenzugriffen (F Cache). Dekodier- und ister-lese-phase (ID) Lesen der ister möglich wegen fester Plätze für Nr. Ausführungs- und Adressberechungsphase (EX) Berechnung arithmetischer Funktion bzw. Adresse für Speicherzugriff. Speicherzugriffsphase (MEM) Wird nur bei Lade- und Speicherbefehlen benötigt. Abspeicherungsphase (WB) Speichern in ister, bei Speicherbefehlen nicht benötigt. 2, 25-9 -
Idealer Fließbanddurchlauf 25:2 2:6 5: 5: Zyklus Befehl 2, 25 - -
Idealer Fließbanddurchlauf 25:2 2:6 5: 5: Zyklus 2 Befehl 2 Befehl 2, 25 - -
Idealer Fließbanddurchlauf 25:2 2:6 5: 5: Zyklus 3 Befehl 3 Befehl 2 Befehl 2, 25-2 -
Idealer Fließbanddurchlauf 25:2 2:6 5: 5: Zyklus Befehl Befehl 3 Befehl 2 Befehl 2, 25-3 -
Idealer Fließbanddurchlauf 25:2 2:6 5: 5: Zyklus 5 Befehl 5 Befehl Befehl 3 Befehl 2 Befehl 2, 25 - -
Idealer Fließbanddurchlauf 25:2 2:6 5: 5: Zyklus 6 Befehl 6 Befehl 5 Befehl Befehl 3 Befehl 2 2, 25-5 -
Pipeline-Hazards Structural hazards (deutsch: strukturelle Abhängigkeiten oder Gefährdungen). Verschiedene Fließbandstufen müssen auf dieselbe Hardware-Komponente zugreifen, weil diese nur sehr aufwändig oder überhaupt nicht zu duplizieren ist. Beispiele: Speicherzugriffe, sofern für Daten und Befehle nicht über separate Pufferspeicher (caches) eine weitgehende Unabhängigkeit erreicht wird. Bei Gleitkommaeinheiten lässt sich häufig nicht mit jedem Takt eine neue Operation starten (zu teuer). F Eventuell Anhalten des Fließbandes (pipeline stall) nötig. 2, 25-6 -
Datenabhängigkeiten () Gegeben sei eine Folge von Maschinen-Befehlen. Def.: Ein Befehl j heißt von einem vorausgehenden Befehl i datenabhängig, wenn i Daten bereitstellt, die j benötigt. Beispiel: add $2,$2,$3 sub $,$5,$2 and $6,$2,$7 or $8,$2,$9 xor $,$2,$ Diese Befehle sind vom add-befehl wegen $2 datenabhängig Diese Art der Abhängigkeit heißt (bei Hennessy und anderen) read after write- (oder RAW-) Abhängigkeit. 2, 25-7 -
Datenabhängigkeiten (2) Gegeben sei wieder eine Folge von Maschinen-Befehlen. Def.: Ein Befehl i heißt von einem nachfolgenden Befehl j antidatenabhängig, falls j eine Speicherzelle beschreibt, die von i noch gelesen werden müsste. Beispiel: add $2,$2,$3 sub $,$5,$2 Diese 2 Befehle sind vom or-befehl and $6,$2,$7 wegen $2 antidatenabhängig or $2,$2,$9 xor $,$2,$ Diese Art der Abhängigkeit heißt (bei Hennessy und anderen) write after read - (oder WAR-) Abhängigkeit. 2, 25-8 -
Datenabhängigkeiten (3) Gegeben sei (wieder) eine Folge von Maschinen-Befehlen. Def.: Zwei Befehle i und j heißen voneinander Ausgabe-abhängig, falls i und j dieselbe Speicherzelle beschreiben. Beispiel: add $2,$2,$3 sub $,$5,$2 and $6,$2,$7 or $2,$2,$9 xor $,$2,$ Voneinander ausgabeabhängig. Diese Art der Abhängigkeit heißt (bei Hennessy und anderen) write after write - (oder WAW-) Abhängigkeit. 2, 25 ravi/pipeline - 9 -
Quiz Data Hazard Does WAR an issue in the previous pipeline structure? Does WAW an issue in the previous pipeline structure? Why do we need and separately? 2, 25-2 -
Bypässe, forwarding: Behandlung des data hazards bei and und sub 25:2 2:6 5: 5: Zyklus add $,$2,$3 2, 25-2 -
Bypässe, forwarding: Behandlung des data hazards bei and und sub 25:2 2:6 5: 5: sub $,$5,$ add $,$2,$3 Zyklus 2 2, 25-22 -
Bypässe, forwarding: Behandlung des data hazards bei and und sub 25:2 2:6 5: 5: Zyklus 3 and $6,$,$7 sub $,$5,$ add $,$2,$3 2, 25-23 -
Bypässe, forwarding: Behandlung des data hazards bei and und sub 25:2 2:6 5: 5: Zyklus or $8,$,$9 and $6,$,$7 sub $,$5,$ add $,$2,$3 2, 25-2 -
Bypässe, forwarding: Behandlung des data hazards bei and und sub 25:2 2:6 5: 5: Zyklus 5 xor $,$,$ or $8,$,$9 and $6,$,$7 sub $,$5,$ add $,$2,$3 2, 25-25 -
Bypässe, forwarding: Behandlung des data hazards bei and und sub 25:2 2:6 5: 5: Zyklus 6? xor $,$,$ or $8,$,$9 and $6,$,$7 sub $,$5,$ 2, 25-26 -
Taktung zur Behandlung des data hazards bei or 25:2 Takt 2:6 5: 5: add $,$2,$3 Zyklus Übernahme in die Pipeline-ister 2, 25-27 -
Taktung zur Behandlung des data hazards bei or 25:2 Takt 2:6 5: 5: sub $,$5,$ add $,$2,$3 Zyklus 2 Übernahme in die Pipeline-ister 2, 25-28 -
Taktung zur Behandlung des data hazards bei or 25:2 Takt 2:6 5: 5: Zyklus 3 and $6,$,$7 sub $,$5,$ add $,$2,$3 2, 25-29 -
Taktung zur Behandlung des data hazards bei or 25:2 2:6 5: Takt 5: Zyklus or $8,$,$9 and $6,$,$7 sub $,$5,$ add $,$2,$3 2, 25-3 -
Taktung zur Behandlung des data hazards bei or 25:2 Takt 2:6 5: 5: Zyklus xor $,$,$ or $8,$,$9 Übernahme in die Pipeline-ister Zyklus 5 and $6,$,$7 sub $,$5,$ add $,$2,$3 2, 25-3 -
Taktung zur Behandlung des data hazards bei or 25:2 Takt 2:6 5: 5: Zyklus xor $,$,$ or $8,$,$9 Übernahme in die Pipeline-ister Zyklus 5 and $6,$,$7 sub $,$5,$ add $,$2,$3 2, 25-32 -
Taktung zur Behandlung des data hazards bei or Übernahme in, Dmem und? 5: 25:2 2:6 5: xor $,$,$ Zyklus 6 or $8,$,$9 Übernahme in die Pipeline-ister and $6,$,$7 Takt sub $,$5,$ 2, 25 pipeline2-33 -
Alle data hazards durch Bypässe behandelbar? 25:2 2:6 5: 5: Zyklus 5 6 23 xor lw? sub and $8,$,$9 $,($2) $,$,$ $,$5,$ $6,$,$7 xor and lw sub $8,$,$9 $,($2) $,$,$ $6,$,$7 $,$5,$ and or sub lw $8,$,$9 $,($2) $6,$,$7 $,$5,$ sub and lw $,($2) $,$5,$ $6,$,$7 lw sub $,($2) $,$5,$ Speicherwort wird am Ende des Zyklus gespeichert, steht für Differenz noch nicht bereit. 2, 25-3 -
Lösung durch Anhalten des Fließbandes (pipeline stall, hardware interlocking, bubbles) 25:2 2:6 5: 5: Zyklus lw $,($2) 2, 25-35 -
Lösung durch Anhalten des Fließbandes (pipeline stall, hardware interlocking, bubbles) 25:2 2:6 5: 5: Zyklus 2 sub $,$5,$ lw $,($2) 2, 25-36 -
Lösung durch Anhalten des Fließbandes (pipeline stall, hardware interlocking, bubbles) 25:2 2:6 5: 5: Zyklus 3 and $6,$,$7 sub $,$5,$ lw $,($2) 2, 25-37 -
Lösung durch Anhalten des Fließbandes (pipeline stall, hardware interlocking, bubbles) 25:2 2:6 5: 5: Zyklus or NOOP $8,$,$9 and NOOP $6,$,$7 sub NOOP $,$5,$ lw $,($2) 2, 25-38 -
Lösung durch Anhalten des Fließbandes (pipeline stall, hardware interlocking, bubbles) 25:2 2:6 5: 5: Zyklus 5 or $8,$,$9 and $6,$,$7 sub $,$5,$ NOOP lw $,($2) 2, 25-39 -
Lösung durch Anhalten des Fließbandes (pipeline stall, hardware interlocking, bubbles) 25:2 2:6 5: 5: Zyklus 6 bubble, durch intelligente Compiler vermeiden! xor $,$,$ or $8,$,$9 and $6,$,$7 sub $,$5,$ NOOP 2, 25 ravi/pipeline2 - -
Kontrollfluss-Abhängigkeiten oder - Gefährdungen, control hazards () Beispielprogramm: beq $2,$2,t -- springe zur Marke t, falls [2]=[2] sub...... t:add.. Wir versuchen zunächst, durch Einfügen von NOOPs, die intuitive Bedeutung des Programms zu realisieren... 2, 25 - -
Kontrollfluss-Abhängigkeiten oder - Gefährdungen, control hazards (2) 25:2 2:6 5: 5: Takt 2: Sprung wird erkannt, deshalb werden zwei NOOP-Befehle eingefügt. Takt : Mit fallender Flanke wird getaktet, mit steigender IF/ID-ister. Takt 3: müsste sowohl Vergleich wie auch das Sprungziel ausrechnen können Zyklus 2 3 56 beq NOOP sub... oder $,$2,t add beq NOOP sub... oder $,$2,t add beq NOOP sub oder $,$2,t add beq NOOP $,$2,t beq NOOP $,$2,t 2, 25-2 -
Kontrollfluss-Abhängigkeiten oder - Gefährdungen, control hazards (3) Probleme beim gezeigten Ansatz: Leistungsverlust durch 2 NOOPs (branch delay penalty). /Multiplexer in der gezeigten Form nicht ausreichend, um Test und Sprungzielberechnung in einem Takt auszuführen. Lösungsansatz: Gleichheit der ister wird schon in der instruction decode-stufe geprüft. Sprungziel wird in separatem Adressaddierer ebenfalls bereits in der instruction decode-stufe berechnet. Sofern weiterhin noch Verzögerungen auftreten: nächsten Befehl einfach ausführen (delayed branch). oder weiterhin NOOP(s) einfügen (stall). 2, 25-3 -
Reduktion der branch delay penalty; delayed branch IF/ID = * 25:2 ID/EX Am Ende des Zyklus 2 gültig EX/MEM MEM/WB Folgeadresse bei fallender Flanke übernommen. 2:6 5: 5: * Zyklus 2 3 56 beq sub add... $,$2,t beq sub add... $,$2,t beq sub add $,$2,t beq sub add $,$2,t beq sub $,$2,t 2, 25 - -
Delayed Branches, verzögerte Sprünge Beim gezeigten Beispiel wird der auf den Sprungbefehl folgende Befehl immer noch ausgeführt. beq $2,$2,t sub... # wird immer noch ausgeführt... t: add.. It s not a bug, it s a feature Einen Platz für die Aufnahme eines solchen Befehls nennt man delay slot, die Sprünge delayed branches. Manche Maschinen haben mehrere delay slots. Delay slots sollten von Übersetzern mit nützlichen Befehlen gefüllt werden. Nur notfalls sollte es ein NOOP sein. Die MIPS-Maschine hat ein delay slot, welches aber vom Assembler verdeckt wird. 2, 25 ravi/pipeline3-5 -
Typen von Fließband-Gefährdungen (hazards) Strukturelle Abhängigkeiten/Gefährdungen (structural hazards) Datenfluß- Abhängigkeiten/Gefährdungen (data hazards) aufgrund von Datenabhängigkeiten (RAW) F forwarding, pipeline stalls aufgrund von Antidatenabhängigkeiten (WAR) (erst bei komplizierteren Systemen wichtig) aufgrund von Ausgabeabhängigkeiten (WAW) (erst bei komplizierteren Systemen wichtig) Kontrollfluß-Abhängigkeiten/Gefährdungen (control hazards) F delayed branches, pipeline stalls, spekulative Ausführung, Sprungvorhersage 2, 25-6 -