vault backup: 2025-07-07 19:57:44
This commit is contained in:
139
Semester 6/COMARCH/Zusammenfassung/Vorlesung 7.md
Normal file
139
Semester 6/COMARCH/Zusammenfassung/Vorlesung 7.md
Normal file
@@ -0,0 +1,139 @@
|
||||
## 📘 **Zusammenfassung: V7 Pipelining – Exceptions, Interrupts & Instruction-Level Parallelism (ILP)**
|
||||
|
||||
---
|
||||
|
||||
### ⚡ Exceptions & Interrupts
|
||||
|
||||
#### 🛑 Was sind Exceptions?
|
||||
|
||||
- Unerwartete Ereignisse **innerhalb der CPU**
|
||||
|
||||
- Beispiele: undefined opcode, overflow, syscall
|
||||
|
||||
- **MIPS:** Verwaltet durch Coprozessor (CP0)
|
||||
|
||||
- Speichert PC der verursachenden Instruktion in **EPC (Exception Program Counter)**
|
||||
|
||||
- Speichert Ursache im **Cause Register**
|
||||
|
||||
- Springt zu Exception Handler (z. B. Adresse `0x8000 0180`)
|
||||
|
||||
|
||||
#### 📡 Was sind Interrupts?
|
||||
|
||||
- Unerwartete Ereignisse **von außen** (z. B. I/O-Geräte)
|
||||
|
||||
- Unterschiedliche ISAs verwenden „Exception“ & „Interrupt“ teilweise synonym.
|
||||
|
||||
|
||||
#### 🚦 Exception-Handling im Pipeline-Design
|
||||
|
||||
- Ähnlich wie ein Branch-Misprediction:
|
||||
|
||||
- Vorherige Instruktionen abschließen
|
||||
|
||||
- Verursachende & folgende Instruktionen flushen
|
||||
|
||||
- Kontrolle an den Handler übergeben
|
||||
|
||||
|
||||
#### 🔄 Restartable vs. Imprecise Exceptions
|
||||
|
||||
- **Restartable:** Handler beendet und springt zurück zur Instruktion (EPC)
|
||||
|
||||
- **Imprecise:** Pipeline stoppt, mehrere Exceptions gespeichert → Handler entscheidet, was zu tun ist
|
||||
|
||||
- Schwieriger bei Out-of-Order-Pipelines
|
||||
|
||||
|
||||
---
|
||||
|
||||
### 🚀 Instruction-Level Parallelism (ILP)
|
||||
|
||||
#### 📊 Ziel: Mehrere Instruktionen gleichzeitig ausführen
|
||||
|
||||
- **Pipelining:** 1 Instruktion pro Stufe, mehrere gleichzeitig aktiv
|
||||
|
||||
- **Deeper Pipeline:** kürzere Takte, aber mehr Stalls möglich
|
||||
|
||||
- **Multiple Issue:** mehrere Instruktionen pro Takt starten
|
||||
|
||||
- **Static Multiple Issue (VLIW):**
|
||||
|
||||
- Compiler bildet „issue packets“ (mehrere Instruktionen pro Takt)
|
||||
|
||||
- Beispiel: Dual-Issue MIPS (1 ALU/Branch + 1 Load/Store)
|
||||
|
||||
- Compiler-Scheduling nötig
|
||||
|
||||
- **Dynamic Multiple Issue (Superscalar):**
|
||||
|
||||
- CPU entscheidet zur Laufzeit, wie viele Instruktionen pro Takt gestartet werden
|
||||
|
||||
- Vorteil: weniger Compiler-Arbeit
|
||||
|
||||
- Herausforderung: Hazards und Ressourcen-Konflikte vermeiden
|
||||
|
||||
|
||||
#### 🧠 Speculation
|
||||
|
||||
- **Prinzip:** Vermuten, welche Instruktionen ausgeführt werden können
|
||||
|
||||
- **Branch Speculation:** Vorhersage der Sprungrichtung
|
||||
|
||||
- **Load Speculation:** vorzeitiges Laden von Speicherwerten
|
||||
|
||||
- Bei falscher Vermutung: Rollback & korrekt ausführen
|
||||
|
||||
|
||||
---
|
||||
|
||||
### 🔄 Dynamisches Scheduling
|
||||
|
||||
- CPU führt Instruktionen **out of order** aus, um Stalls zu vermeiden
|
||||
|
||||
- Ergebnisse werden **in order committed** (Reorder Buffer)
|
||||
|
||||
- **Register Renaming:**
|
||||
|
||||
- Verhindert falsche Abhängigkeiten (WAW & WAR)
|
||||
|
||||
- Ermöglicht parallele Nutzung derselben logischen Register
|
||||
|
||||
|
||||
---
|
||||
|
||||
### 📈 Herausforderungen für ILP
|
||||
|
||||
- **Abhängigkeiten:**
|
||||
|
||||
- Datenabhängigkeit (true dependency)
|
||||
|
||||
- Kontrollabhängigkeit (branches)
|
||||
|
||||
- Ressourcenabhängigkeit (strukturelle Konflikte)
|
||||
|
||||
- **Compiler-Limitationen:**
|
||||
|
||||
- Pointer-Aliasing erschwert statische Analyse
|
||||
|
||||
- **Hardware-Limitationen:**
|
||||
|
||||
- Fenstergröße für dynamisches Scheduling begrenzt
|
||||
|
||||
- Cache-Misses & Speicherbandbreite begrenzen Parallelität
|
||||
|
||||
|
||||
---
|
||||
|
||||
### 📝 Für die Klausur merken
|
||||
|
||||
✅ Unterschied Exception ↔ Interrupt
|
||||
✅ EPC & Cause-Register im MIPS-Handling
|
||||
✅ Restartable vs. Imprecise Exceptions
|
||||
✅ VLIW vs. Superscalar (Static vs. Dynamic Multiple Issue)
|
||||
✅ Speculation: was passiert bei falscher Vorhersage?
|
||||
✅ Register Renaming: warum wichtig?
|
||||
✅ Warum ILP in der Praxis nicht beliebig steigerbar ist
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user