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).
Diese Lerneinheit wurde für typische Bachelor-Klausuren konzipiert. So prüfen wir · Fehler entdeckt? Melde ihn uns oder markiere die fragliche Stelle direkt im Text oben.
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).
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.
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.
Anmelden, um den Fortschritt zu speichern.
Nächster Schritt
Aktives Abrufen festigt Wissen schneller als nochmal lesen.
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.
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.
Pipelining zerlegt die Befehlsverarbeitung in feste Stufen, sodass die CPU gleichzeitig an mehreren Befehlen arbeitet, jeder in einer anderen Stufe. Wie ein Fließband.
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.
| 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.
Pipelining macht den einzelnen Befehl nicht schneller, aber den Befehlsstrom.
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.
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 |
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.
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.
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.
6 Aufgaben zu Befehlszyklus, Stufen und Speedup.
Klausurfragen mit Lösungen (6)
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.
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.
Zuordnungen:
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
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.
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
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.
6 Klausur-Fragen zu Speedup, Hazards und Durchsatz.
Klausurfragen mit Lösungen (6)
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.
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.
Zuordnungen:
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
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.
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
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.