Alle Tabs der Lerneinheit (Erklärung · Interaktiv verstehen · Praxis-Übung · Klausur-Quiz) als durchgehender Text. Ideal zum Wiederholen vor der Klausur, und für Suchmaschinen wie Google, Bing und KI-Suche (ChatGPT, Perplexity).
Erklärung
CPU: Befehlszyklus und Pipeline
Wie schafft eine CPU Milliarden Befehle pro Sekunde, obwohl jeder Befehl mehrere Schritte braucht? Durch Pipelining: die CPU bearbeitet mehrere Befehle gleichzeitig, jeden in einer anderen Phase, wie ein Fließband. Klausurpflicht in 7/8 Rechnerarchitektur-Modulen, fast immer mit einer Pipeline-Diagramm-Aufgabe.
Der Befehlszyklus (Fetch-Decode-Execute)
Jeder Maschinenbefehl durchläuft dieselben Grundphasen:
| Phase | Was passiert |
|---|---|
| Fetch (Holen) | Befehl aus dem Speicher ins Befehlsregister (IR) laden, PC zählt weiter |
| Decode (Dekodieren) | Steuerwerk entschlüsselt Opcode + Operanden, liest Register |
| Execute (Ausführen) | Rechenwerk (ALU) führt die Operation aus |
| Memory (Speicher) | bei Lade-/Speicherbefehlen: Speicherzugriff |
| Write Back (Zurückschreiben) | Ergebnis ins Zielregister schreiben |
Ohne Pipeline läuft das streng nacheinander: erst wenn ein Befehl fertig ist, beginnt der nächste.
Die Idee der Pipeline in einem Satz
Pipelining zerlegt die Befehlsverarbeitung in feste Stufen, sodass die CPU gleichzeitig an mehreren Befehlen arbeitet, jeder in einer anderen Stufe. Wie ein Fließband.
Die Wäsche-Analogie
Du musst 4 Ladungen Wäsche waschen, trocknen, falten. Sequenziell: Ladung 2 startet erst, wenn Ladung 1 komplett fertig ist. Mit "Pipeline": während Ladung 1 trocknet, wäschst du schon Ladung 2. Alle Geräte laufen parallel, du wirst viel schneller fertig, obwohl eine einzelne Ladung gleich lange dauert.
Die klassische 5-Stufen-Pipeline (RISC/MIPS)
| Stufe | Kürzel | Aufgabe |
|---|---|---|
| 1 | IF | Instruction Fetch, Befehl holen |
| 2 | ID | Instruction Decode, dekodieren + Register lesen |
| 3 | EX | Execute, ALU-Operation |
| 4 | MEM | Memory, Speicherzugriff (nur Load/Store) |
| 5 | WB | Write Back, Ergebnis ins Register |
Jede Stufe ist eigene Hardware. Pro Takt rückt jeder Befehl eine Stufe weiter.
Latenz vs. Durchsatz (zentrale Unterscheidung)
- Latenz: Zeit für EINEN Befehl von Anfang bis Ende. Die ändert sich durch Pipelining NICHT (5 Stufen = 5 Takte pro Befehl).
- Durchsatz: Befehle pro Zeit. Den steigert die Pipeline drastisch: nach dem Füllen ist pro Takt ein Befehl fertig.
Pipelining macht den einzelnen Befehl nicht schneller, aber den Befehlsstrom.
Speedup-Berechnung
Für n Befehle und eine k-stufige Pipeline:
Ohne Pipeline: n · k Takte
Mit Pipeline: n + (k − 1) Takte (k−1 Takte zum Füllen)
Speedup = (n · k) / (n + k − 1)
Beispiel: 4 Befehle, 5 Stufen → ohne: 20 Takte, mit: 4 + 4 = 8 Takte → Speedup 2,5. Für sehr viele Befehle (n → ∞) nähert sich der Speedup der Stufenzahl k (hier 5). Mehr geht ideal nicht.
Pipeline-Hazards (die Bremsen)
Drei Arten von Konflikten verhindern den idealen Durchsatz:
| Hazard | Ursache | Beispiel |
|---|---|---|
| Structural Hazard | zwei Befehle wollen dieselbe Hardware-Einheit | gemeinsamer Speicher-Port |
| Data Hazard | ein Befehl braucht ein Ergebnis, das noch nicht zurückgeschrieben ist | ADD R1,... dann SUB ...,R1 |
| Control Hazard | bei einem Sprung steht das nächste Befehlsziel noch nicht fest | if/Branch |
Gegenmaßnahmen
- Stall / Bubble: Pipeline anhalten, Leertakte einfügen. Einfach, aber kostet Leistung.
- Forwarding (Bypassing): Ergebnis direkt von der ALU an den nächsten Befehl weiterreichen, ohne auf Write Back zu warten. Löst die meisten Data Hazards ohne Stall.
- Umsortieren (Scheduling): Compiler stellt unabhängige Befehle dazwischen.
- Branch Prediction (Sprungvorhersage): CPU rät den Ausgang eines Sprungs und lädt spekulativ weiter. Bei Fehlvorhersage: Pipeline leeren (Flush).
Klausur-Faustregeln
1. Befehlszyklus: Fetch, Decode, Execute (plus Memory, Write Back). Auswendig.
2. 5 Stufen: IF, ID, EX, MEM, WB. Reihenfolge können.
3. Pipeline erhöht den Durchsatz, nicht die Latenz des Einzelbefehls.
4. Mit Pipeline: n + k − 1 Takte (statt n · k).
5. Idealer Speedup → Stufenzahl k (bei vielen Befehlen).
6. 3 Hazards: Structural, Data, Control. Lösung für Data Hazard: Forwarding.
Häufige Stolpersteine
1. Latenz und Durchsatz verwechseln. Pipelining senkt NICHT die Zeit für einen einzelnen Befehl (Latenz bleibt), sondern erhöht den Durchsatz.
2. n · k als Pipeline-Dauer angeben. n · k ist OHNE Pipeline. Mit Pipeline sind es n + k − 1 Takte.
3. Speedup > Stufenzahl annehmen. Der ideale Speedup ist maximal die Stufenzahl k, nie mehr.
4. Data Hazard mit Control Hazard verwechseln. Data Hazard = Datenabhängigkeit zwischen Befehlen. Control Hazard = durch Sprünge/Verzweigungen.
5. Forwarding löse ALLE Hazards. Nein, Load-Use-Hazards (Wert kommt erst aus dem Speicher in MEM) brauchen oft trotzdem einen Stall.
6. Mehr Stufen = immer besser. Zu viele Stufen erhöhen den Overhead (Register zwischen Stufen) und die Strafe bei Fehlvorhersagen. Es gibt ein Optimum.
Interaktiv verstehen
Pipeline, interaktiv
Vergleiche die drei Modi: sequenziell (ohne Pipeline), Pipeline (überlappt) und Pipeline mit Data-Hazard (Stall). Die Tabelle zeigt 4 Befehle (Zeilen) über die Takte (Spalten), jede Zelle ist die Stufe (IF/ID/EX/MEM/WB), in der sich der Befehl gerade befindet. Beobachte die Diagonale und den live berechneten Speedup.
Interaktive Visualisierung
Interaktive Komponente: probiere sie im Topic-Player oben aus.
Klausur-Tipp: Übe, das Pipeline-Diagramm für n Befehle und k Stufen zu zeichnen (Diagonal-Muster) und die Taktzahl n + k − 1 sowie den Speedup auszurechnen. Erkenne, wo ein Stall nötig ist und wie Forwarding ihn vermeidet.
Praxis-Übung
CPU-Pipeline, Praxis-Übung
6 Aufgaben zu Befehlszyklus, Stufen und Speedup.
Klausurfragen mit Lösungen (6)
- F1.Was passiert in der Decode-Phase (ID) des Befehlszyklus?
Antwort: Das Steuerwerk entschlüsselt den Befehl und liest die benötigten Register
Erklärung: In der Decode-Phase (ID, Instruction Decode) entschlüsselt das Steuerwerk den Opcode (welche Operation?) und die Operanden, und liest die benötigten Register aus. Davor liegt Fetch (Holen), danach Execute (ALU-Berechnung). Klausur-Grundablauf.
- F2.Wie lautet die korrekte Reihenfolge der 5 klassischen Pipeline-Stufen?
Antwort: IF → ID → EX → MEM → WB
Erklärung: Die klassische RISC/MIPS-Pipeline: IF (Fetch) → ID (Decode) → EX (Execute) → MEM (Memory) → WB (Write Back). Erst holen, dann dekodieren, rechnen, ggf. auf Speicher zugreifen, zuletzt das Ergebnis ins Register zurückschreiben. Klausur-Pflicht-Reihenfolge.
- F3.Ordne die Pipeline-Stufe ihrer Aufgabe zu.
Zuordnungen:
- IF → Befehl aus Speicher holen
- ID → Dekodieren + Register lesen
- EX → ALU-Operation ausführen
- WB → Ergebnis ins Register schreiben
Erklärung: IF = Instruction Fetch (holen). ID = Instruction Decode (dekodieren + Register lesen). EX = Execute (ALU). MEM = Memory (Speicherzugriff, hier nicht abgefragt). WB = Write Back (Ergebnis zurückschreiben). Jede Stufe ist eigene Hardware. Klausur-Pflicht-Zuordnung.
Typ: Zuordnung
- F4.Wie viele Takte braucht eine 5-Stufen-Pipeline für 6 Befehle (ohne Hazards)?
Antwort: 10 Takte
Erklärung: Mit Pipeline gilt n + k − 1 = 6 + 5 − 1 = 10 Takte. Erst füllt sich die Pipeline (k−1 = 4 Takte), danach wird pro Takt ein Befehl fertig. Ohne Pipeline wären es n·k = 6·5 = 30 Takte, der Speedup ist also 30/10 = 3. Klausur-Rechenaufgabe.
- F5.Pipelining verringert die Latenz (Bearbeitungszeit) eines einzelnen Befehls.
Antwort: Falsch
Erklärung: FALSCH. Pipelining verringert NICHT die Latenz eines Einzelbefehls (der durchläuft weiterhin alle Stufen). Es erhöht den DURCHSATZ: nach dem Füllen wird pro Takt ein Befehl fertig. Latenz = Zeit für einen Befehl (bleibt), Durchsatz = Befehle pro Zeit (steigt). Klassischer Klausur-Stolperstein.
Typ: Wahr/Falsch
- F6.Ein Befehl schreibt Register R1, der direkt folgende Befehl liest R1. Welcher Hazard liegt vor und welche Lösung vermeidet einen Stall?
Antwort: Data Hazard, gelöst durch Forwarding (Bypassing)
Erklärung: Das ist ein Data Hazard (Datenabhängigkeit): der zweite Befehl braucht R1, das noch nicht in WB zurückgeschrieben ist. Forwarding (Bypassing) reicht das ALU-Ergebnis direkt an den nächsten Befehl weiter, ohne auf Write Back zu warten, und vermeidet so den Stall. Control Hazard entsteht dagegen bei Sprüngen. Klausur-Transferfrage.
Klausur-Quiz
CPU-Pipeline, Klausur-Quiz
6 Klausur-Fragen zu Speedup, Hazards und Durchsatz.
Klausurfragen mit Lösungen (6)
- F1.Welcher Begriff beschreibt die Anzahl fertiggestellter Befehle pro Zeiteinheit?
Antwort: Durchsatz
Erklärung: Der Durchsatz (Throughput) ist die Anzahl fertiger Befehle pro Zeit, genau das steigert Pipelining. Die Latenz ist die Zeit für einen einzelnen Befehl (bleibt gleich). Die Taktfrequenz ist die Takte pro Sekunde. Klausur-Kernunterscheidung Latenz vs. Durchsatz.
- F2.Welche drei Arten von Pipeline-Hazards gibt es?
Antwort: Structural-, Data-, Control-Hazard
Erklärung: Die drei Pipeline-Hazards: Structural Hazard (Ressourcenkonflikt, zwei Befehle wollen dieselbe Einheit), Data Hazard (Datenabhängigkeit zwischen Befehlen), Control Hazard (Sprünge/Verzweigungen, nächstes Ziel unklar). Jeder hat eigene Gegenmaßnahmen. Klausur-Pflichtwissen.
- F3.Ordne den Hazard seiner typischen Gegenmaßnahme zu.
Zuordnungen:
- Data Hazard → Forwarding (Bypassing)
- Control Hazard → Branch Prediction (Sprungvorhersage)
- Structural Hazard → Hardware duplizieren (getrennte Einheiten)
- allgemein → Stall / Bubble einfügen
Erklärung: Data Hazard: Forwarding reicht Ergebnisse direkt weiter. Control Hazard: Branch Prediction rät den Sprungausgang. Structural Hazard: Hardware duplizieren (z.B. getrennter Befehls-/Datenspeicher, vgl. Harvard). Stall/Bubble ist die universelle, aber teure Notlösung. Klausur-Pflicht-Zuordnung.
Typ: Zuordnung
- F4.Welchem Wert nähert sich der Speedup einer k-stufigen Pipeline bei sehr vielen Befehlen maximal?
Antwort: der Stufenzahl k
Erklärung: Bei n → ∞ geht der Speedup (n·k)/(n+k−1) gegen k, die Stufenzahl. Eine 5-Stufen-Pipeline kann also ideal höchstens 5-fach beschleunigen. In der Praxis liegt er wegen Hazards darunter. Klausur-Grenzwertfrage. Stolperstein: Speedup kann k nie überschreiten.
- F5.Ein Control Hazard entsteht durch Sprung-/Verzweigungsbefehle, weil das nächste auszuführende Befehlsziel noch nicht feststeht.
Antwort: Wahr
Erklärung: RICHTIG. Ein Control Hazard (Steuerflusskonflikt) entsteht bei Sprüngen und Verzweigungen (if, Schleifen): solange nicht feststeht, ob/wohin gesprungen wird, weiß die Pipeline nicht, welchen Befehl sie als Nächstes holen soll. Lösung: Branch Prediction (raten + spekulativ laden), bei Fehlvorhersage Pipeline-Flush. Klausur-Konzept.
Typ: Wahr/Falsch
- F6.Eine 4-Stufen-Pipeline verarbeitet 8 Befehle ohne Hazards. Wie groß ist der Speedup gegenüber der sequenziellen Ausführung?
Antwort: Speedup = 2,91
Erklärung: Ohne Pipeline: n·k = 8·4 = 32 Takte. Mit Pipeline: n + k − 1 = 8 + 4 − 1 = 11 Takte. Speedup = 32/11 ≈ 2,91. Noch nicht 4 (die Stufenzahl), weil die Pipeline-Füllzeit bei nur 8 Befehlen ins Gewicht fällt. Bei mehr Befehlen näherte er sich 4. Klausur-Rechenaufgabe.