Rechnerarchitektur lernen: vom Befehlssatz zur Pipeline

Rechnerarchitektur lernen: Gleitkomma, Assembler, Caches und Pipelining in festen Rechenschritten — plus Vier-Wochen-Routine bis zur Klausur.

Rechnerarchitektur lernen: vom Befehlssatz zur Pipeline

"Durchgefallen wird selten am Verständnis — verloren gehen die Punkte bei den immer gleichen Rechenaufgaben."

Rechnerarchitektur fühlt sich an wie drei Module in einem: erst Zahlendarstellung, dann Assembler, am Ende Caches und Pipelining. Durchgefallen wird selten am Verständnis — verloren gehen die Punkte bei den immer gleichen Rechenaufgaben, die unter Zeitdruck schiefgehen: eine Gleitkommazahl codieren, eine Zugriffsfolge im Cache abarbeiten, eine Pipeline-Beschleunigung ausrechnen. Für jede dieser Aufgaben gibt es genau ein Verfahren. Dieser Guide zerlegt das Modul in seine drei Ebenen und gibt dir für jede einen Ablauf, den du ohne Nachdenken starten kannst.

Drei Ebenen, drei Lernarten — so zerlegst du das Modul

Rechnerarchitektur liegt in Informatik- und Elektrotechnik-Bachelors im Grundstudium und schließt die Lücke zwischen Logik und Software. Im Studienverlaufsplan der Uni Kassel etwa liegt das Modul mit 6 Credits im zweiten Semester — direkt nach „Digitale Logik" und ein Semester vor „Betriebssysteme und Systemprogrammierung". Diese Position erklärt den Stoff: Du setzt auf Gattern und Schaltwerken auf und baust bis zu der Schicht, auf der ein Betriebssystem arbeiten kann.

Der entscheidende Schritt vor der ersten Lerneinheit: Trenne den Stoff in drei Ebenen. Sie verlangen völlig unterschiedliche Lernarten, und wer sie vermischt, lernt die falsche Hälfte.

EbeneTypische KlausuraufgabeWas du dafür üben musst
Darstellung (Zahlen, Zweierkomplement, Gleitkomma)„Codieren Sie −12,375 als IEEE-754-Zahl einfacher Genauigkeit"Rechenschritte bis zur Automatisierung wiederholen
Befehlssatz (Assembler, Adressierungsarten)„Übersetzen Sie die folgende Schleife in RISC-V-Assembler"Code lesen und übersetzen, Befehlsformate sicher kennen
Mikroarchitektur (Caches, Pipelining)„Bestimmen Sie Hit-Rate und mittlere Zugriffszeit"Modelle aufstellen und Zahlen einsetzen

Wenn der Stoff der ersten Ebene noch wackelt, lohnt ein Rückgriff: Zahlensysteme, Zweierkomplement und Gatterlogik kommen aus der Digitaltechnik und ihrer Klausurlogik. Alles, was oberhalb der Hardware passiert — Prozesse, Scheduling, virtueller Speicher —, gehört in die Betriebssysteme-Vorlesung. Diese Abgrenzung spart dir Lernzeit: Du musst nicht alles wissen, was mit Rechnern zu tun hat.

Zahlendarstellung und Gleitkomma: die Punkte, die jeder verliert

Ganze Zahlen im Zweierkomplement sind Routine: negatives Vorzeichen heißt invertieren und eins addieren, der Überlauf wird daran erkannt, dass sich das Vorzeichen bei gleichartigen Operanden plötzlich ändert. Teuer wird die Gleitkomma-Aufgabe, weil dort fünf Schritte in der richtigen Reihenfolge nötig sind.

Die Formate stehen in IEEE 754, dem Standard für Gleitkomma-Arithmetik: einfache Genauigkeit hat 1 Vorzeichenbit, 8 Exponentenbits und 23 Mantissenbits mit Bias 127, doppelte Genauigkeit 1, 11 und 52 Bits mit Bias 1023. Mehr musst du für die Klausur nicht auswendig wissen.

Der feste Ablauf für Gleitkomma-Aufgaben

  1. Vorzeichenbit setzen, danach nur noch mit dem Betrag weiterrechnen.
  2. Betrag binär schreiben — Ganzzahlteil durch Division, Nachkommateil durch fortlaufende Multiplikation mit 2.
  3. Normalisieren auf die Form 1,xxx · 2e. Das führende Einserbit wird nicht gespeichert.
  4. Exponenten codieren: e + Bias, also e + 127 bei einfacher Genauigkeit.
  5. Mantisse aus den Stellen hinter dem Komma auffüllen, rechts mit Nullen auf die volle Breite.

Zwei Fallen tauchen in Klausuren fast immer auf. Erstens die Sonderwerte: Exponent komplett null bedeutet Null oder eine denormalisierte Zahl, Exponent komplett eins bedeutet Unendlich oder NaN. Zweitens die Rundung — 0,1 lässt sich im Binärsystem nicht exakt darstellen, was in Multiple-Choice-Teilen regelmäßig als „Warum ist 0,1 + 0,2 ≠ 0,3?" abgefragt wird. Rechne beide Fälle einmal selbst durch, dann sitzt die Begründung.

Befehlssatz und Adressierungsarten: Assembler lesen können

Die meisten Vorlesungen unterrichten inzwischen RISC-V, dessen Spezifikationen von RISC-V International frei veröffentlicht werden. Für die Klausur zählt die Basis RV32I: 32 Register, wobei x0 fest auf null liegt, und eine kleine Zahl von Befehlsformaten (R, I, S, B, U, J), die sich nur darin unterscheiden, wie die Bits auf Register und Direktwerte verteilt sind.

Lernziel ist nicht, Assembler zu schreiben, sondern ihn zu lesen. Vier Adressierungsarten decken fast alles ab:

  • Register — der Operand steht in einem Register (add x5, x6, x7).
  • Direktwert (immediate) — die Konstante steht im Befehl (addi x5, x6, 12).
  • Basis + Offset — Speicherzugriffe über Registerinhalt plus Verschiebung (lw x5, 8(x6)).
  • PC-relativ — Sprünge und Verzweigungen rechnen vom aktuellen Befehlszähler aus.

Die wirksamste Übung ist die Rückübersetzung: Nimm zehn Zeilen Assembler aus einem Übungsblatt und schreibe daneben, was in C oder Java passieren würde. Eine Schleife erkennst du am Vergleich plus Rückwärtssprung, ein Array-Zugriff an der Multiplikation des Index mit der Elementgröße vor dem lw. Wer das zwanzig Mal gemacht hat, braucht in der Klausur keine Befehlsliste mehr. Für die Befehls- und Bitfeldübersichten, die du trotzdem griffbereit haben willst, hilft das Vorgehen aus unserem Guide zum Erstellen einer eigenen Formelsammlung.

Üben lässt sich das ohne Hardware: Der Open-Source-Simulator Ripes zeigt Assemblercode, Pipelinestufen und Cache-Verhalten gleichzeitig an und läuft auch im Browser. Ein einziger Nachmittag damit ersetzt viele Seiten Skript, weil du siehst, was ein Befehl in welcher Stufe tatsächlich auslöst.

Speicherhierarchie: Cache-Aufgaben systematisch rechnen

Caches existieren, weil Prozessoren schneller rechnen als der Hauptspeicher liefern kann, und sie funktionieren, weil Programme zwei Arten von Lokalität zeigen: zeitliche (was gerade gebraucht wurde, wird bald wieder gebraucht) und räumliche (Nachbaradressen folgen gleich danach). Das ist die Begründung, die in Verständnisfragen abgefragt wird.

Die Rechenaufgabe dazu läuft immer gleich ab. Zerlege die Adresse, dann arbeite die Zugriffsfolge tabellarisch ab:

  1. Offset-Bits aus der Blockgröße: 16 Byte pro Block sind 4 Bits.
  2. Index-Bits aus der Anzahl der Sätze: Cachegröße ÷ (Blockgröße × Assoziativität).
  3. Tag-Bits sind der Rest der Adressbreite.
  4. Zugriffsfolge Zeile für Zeile eintragen und jeden Zugriff als Treffer oder Fehlzugriff markieren.
  5. Jeden Fehlzugriff einordnen: erstmalig (compulsory), Verdrängung durch Konflikt (conflict) oder Kapazität (capacity).

Die Organisationsformen unterscheiden sich nur in der Assoziativität: direkt abgebildet (ein Platz pro Block), n-fach satzassoziativ (n Plätze pro Satz) und vollassoziativ (jeder Block überall). Mehr Assoziativität senkt Konflikt-Fehlzugriffe, kostet aber Vergleichslogik — genau diese Abwägung ist die typische Diskussionsfrage.

Für die Leistungsrechnung brauchst du eine Formel: mittlere Zugriffszeit = Trefferzeit + Fehlzugriffsrate × Fehlzugriffsstrafe. Bei 1 Takt Trefferzeit, 5 % Fehlzugriffen und 100 Takten Strafe ergibt das 1 + 0,05 × 100 = 6 Takte. Daran siehst du sofort, warum eine Fehlzugriffsrate von wenigen Prozent die Leistung dominiert — und warum Aufgaben so gern nach dem Effekt einer halbierten Fehlzugriffsrate fragen.

Pipelining: Hazards erkennen, Beschleunigung berechnen

Die klassische fünfstufige Pipeline teilt jeden Befehl in Holen, Decodieren, Ausführen, Speicherzugriff und Zurückschreiben. Pro Takt wird ein neuer Befehl gestartet, fertig wird nach der Einschwingphase ebenfalls einer pro Takt. Für n Befehle und k Stufen brauchst du im Idealfall k + (n − 1) Takte: 1.000 Befehle in einer Fünfstufen-Pipeline also 1.004 statt 5.000 Takte, knapp ein Faktor 5.

Diesen Idealfall zerstören drei Arten von Hazards, und Klausuren verlangen, sie in einem gegebenen Codestück zu finden:

HazardWoran du es erkennstGegenmaßnahme
StrukturZwei Befehle brauchen dieselbe Einheit im selben TaktEinheit doppelt auslegen oder einen Takt anhalten
Daten (RAW)Ein Befehl liest ein Register, das der vorige noch nicht zurückgeschrieben hatForwarding; beim Laden-Benutzen-Fall bleibt ein Wartetakt
SteuerungVerzweigung, deren Ziel noch nicht bekannt istSprungvorhersage, Verwerfen falsch geholter Befehle

Die zweite Hälfte der Aufgabe ist Arithmetik: Wartetakte zur Taktzahl addieren und die Beschleunigung gegenüber der Ausführung ohne Pipeline bestimmen. Hier lohnt der Blick auf die Grenze, die Gene Amdahl 1967 formuliert hat: Beschleunigt wird immer nur ein Anteil des Programms, und der unbeschleunigte Rest begrenzt den Gesamtgewinn. Wenn 20 % des Codes nicht profitieren, bleibt der Gesamtfaktor unter 5 — egal, wie tief die Pipeline wird. Diese Begründung in zwei Sätzen sauber hinschreiben zu können, bringt in Verständnisteilen zuverlässig Punkte.

Übungsroutine: vier Wochen bis zur Klausur

Rechnerarchitektur belohnt Wiederholung mehr als Lesen. Eine Routine, die sich bewährt hat:

  • Woche 1 — Darstellung. Täglich zwei Aufgaben: eine Zweierkomplement-, eine Gleitkomma-Codierung. Ziel: der Fünf-Schritt-Ablauf läuft ohne Rückblick ins Skript.
  • Woche 2 — Befehlssatz. Jeden Tag zehn Zeilen Assembler rückübersetzen, dazu im Simulator schrittweise ausführen.
  • Woche 3 — Caches. Drei vollständige Zugriffsfolgen pro Sitzung, immer mit Adresszerlegung und Fehlzugriffsklassen.
  • Woche 4 — Pipelining und Altklausuren. Zwei Altklausuren unter Zeitdruck, danach jede verlorene Aufgabe einem der vier Themen zuordnen und nur dort nacharbeiten.

Für die Begriffsschicht — Hazard-Typen, Fehlzugriffsklassen, Adressierungsarten, Befehlsformate — sind Karteikarten das richtige Werkzeug, weil es um abrufbares Vokabular geht. Wer sein Skript und die Übungsblätter als Datei vorliegen hat, kann sich die Karten in Learnboost automatisch daraus erzeugen lassen und den Stoff zusätzlich als Probeklausur abfragen; die Rechenwege übt man trotzdem von Hand, weil in der Klausur der Weg bewertet wird.

Plane die vier Wochen schriftlich, sonst verschiebt sich das Rechnen immer nach hinten. Wenn du nicht bei null anfangen willst: Der Lernplan-Generator von Learnboost verteilt deine Modulinhalte auf die verbleibenden Wochen bis zum Prüfungstermin — und du siehst sofort, ob für alle drei Ebenen noch genug Zeit übrig ist.

Häufig gestellte Fragen (FAQ):

Ist Rechnerarchitektur ein schweres Modul?

Der Stoff ist nicht komplizierter als in anderen Grundlagenmodulen, aber er ist breit: Zahlendarstellung, Assembler und Mikroarchitektur verlangen drei verschiedene Lernarten. Schwierig wird es, wenn du alles lesend lernst — die Klausur fragt überwiegend Rechenwege ab. Wer die drei Ebenen getrennt übt, bekommt das Modul gut in den Griff.

Was muss ich für die Rechnerarchitektur-Klausur auswendig wissen?

Sehr wenig, aber das sicher: die IEEE-754-Formate mit ihren Bitbreiten und Bias-Werten, die fünf Pipelinestufen, die drei Hazard-Typen und die Formel für die mittlere Zugriffszeit. Alles andere leitest du daraus ab. Prüfe vorher, ob in deiner Klausur eine Befehlsübersicht beiliegt — das verschiebt die Lernlast deutlich.

Welcher Befehlssatz kommt dran: RISC-V, MIPS oder x86?

Das hängt von deiner Vorlesung ab; viele Hochschulen sind auf RISC-V umgestiegen, weil die Spezifikation frei verfügbar ist. Die Konzepte sind übertragbar: Register, Direktwerte, Basis-plus-Offset und PC-relative Sprünge gibt es in jeder dieser Architekturen. Lerne am Befehlssatz deiner Vorlesung und übertrage die Muster, statt zwei Dialekte parallel zu üben.

Wie rechne ich Cache-Aufgaben zuverlässig richtig?

Immer in derselben Reihenfolge: Offset-Bits aus der Blockgröße, Index-Bits aus der Anzahl der Sätze, Rest als Tag. Danach die Zugriffsfolge tabellarisch abarbeiten und jeden Zugriff als Treffer oder Fehlzugriff markieren. Die häufigsten Punktverluste entstehen nicht beim Rechnen, sondern beim falschen Aufteilen der Adresse.

Wie viel Zeit sollte ich für Rechnerarchitektur einplanen?

Vier Wochen mit täglich 45 bis 60 Minuten reichen bei mitlaufender Vorlesung aus, wenn du pro Woche ein Thema abschließt und in der letzten Woche Altklausuren schreibst. Entscheidend ist die Verteilung: Rechenaufgaben brauchen viele kurze Wiederholungen statt eines langen Blocks am Wochenende.