vault backup: 2025-07-07 19:57:44
This commit is contained in:
108
Semester 6/COMARCH/Zusammenfassung/Vorlesung 5.md
Normal file
108
Semester 6/COMARCH/Zusammenfassung/Vorlesung 5.md
Normal file
@@ -0,0 +1,108 @@
|
||||
## 📘 **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:
|
||||
|
||||
```asm
|
||||
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
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user