vault backup: 2025-07-07 19:57:44

This commit is contained in:
fzzinchemical
2025-07-07 19:57:44 +02:00
parent 1638e96536
commit ed7da1341b
14 changed files with 1982 additions and 0 deletions

View 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
---