Files
2025-07-07 19:57:44 +02:00

3.7 KiB
Raw Permalink Blame History

📘 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