Files
TI-Studium-Mitschriften/Semester 6/COMARCH/Zusammenfassung/Vorlesung 7.md
2025-07-07 19:57:44 +02:00

140 lines
3.7 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 📘 **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
---