2.4 KiB
2.4 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