2.5 KiB
📘 Zusammenfassung: V5 Pipelining – Computerarchitektur
🚀 Was ist Pipelining?
-
Prinzip: Überlappende Ausführung mehrerer Instruktionen
-
Analogie: Waschstraße – mehrere Autos gleichzeitig in unterschiedlichen Phasen
-
Ziel: Erhöhung des Durchsatzes (mehr Befehle pro Zeiteinheit)
-
Wichtig: Latenz einzelner Instruktionen bleibt gleich
🔁 MIPS-Pipeline (5 Stufen)
| Stufe | Name | Funktion |
|---|---|---|
| 1 | IF (Instruction Fetch) | Befehl aus Speicher laden |
| 2 | ID (Instruction Decode) | Dekodieren, Register lesen |
| 3 | EX (Execute) | ALU-Berechnung, Adresse kalkulieren |
| 4 | MEM (Memory Access) | Speicher lesen/schreiben |
| 5 | WB (Write Back) | Ergebnis ins Register zurückschreiben |
📈 Performance-Vorteile
-
Single-Cycle Datapath: 800 ps pro Befehl
-
Pipelined Datapath: 200 ps pro Befehl
-
Theoretisches Speedup: Anzahl Stufen = 5x schneller
-
Realität: Speedup < 5 wegen Hazard-Stalls und unbalancierter Stufen
⚠️ Hazards (Gefahren)
🏗 Struktur-Hazards
-
Konflikt um Ressource (z. B. Instruktions- und Datenspeicher gleichzeitig benötigt)
-
Lösung: Getrennte Instruktions-/Datenspeicher oder Caches
📦 Daten-Hazards
-
Instruktion benötigt Ergebnis der vorherigen Instruktion
-
Beispiel:
add $s0, $t0, $t1 sub $t2, $s0, $t3 -
Lösungen:
-
Forwarding (Bypassing): Ergebnis direkt weiterleiten
-
Stalls: Pipeline anhalten
-
Code Scheduling: Befehle umsortieren, um Abhängigkeiten zu vermeiden
-
🔁 Kontroll-Hazards
-
Sprünge (
beq,bne) → Ziel erst spät bekannt -
Lösungen:
-
Warten bis Branch-Entscheidung (Stalls)
-
Branch Prediction:
-
Static: Vorwärts nicht nehmen, Rückwärts nehmen
-
Dynamic: Verlauf der Branches aufzeichnen und vorhersagen
-
-
📦 Optimierungen
-
Forwarding: Verhindert unnötige Stalls
-
Branch Prediction: Reduziert Control Hazards
-
Separate Speicher: Löst Struktur-Hazards
-
Code Scheduling: Compiler verschiebt Befehle zur Vermeidung von Stalls
📝 Für die Klausur merken
✅ Pipeline-Stufen & ihre Aufgaben
✅ Arten von Hazards + Lösungsstrategien (Forwarding, Prediction)
✅ Unterschied Durchsatz ↔ Latenz
✅ Warum MIPS-ISA besonders pipelining-freundlich ist
✅ Unterschied Static ↔ Dynamic Branch Prediction