Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Den Schritten eines Prozessors folgen (Befehlszyklus)

Nach dieser Lektion: Ich kann dem Befehlszyklus aus Holen, Decodieren und Ausführen folgen.

Lektion, 50 Min.10 BefehleLab für Compilerbau und Rechnerarchitektur: gcc, flex, bison und RISC-V in einer VM

Milliarden kleiner Schritte

Wenn du an der Supermarktkasse mit dem Handy zahlst, arbeitet sein Prozessor Befehle ab. Er schafft Milliarden davon in jeder Sekunde.

Jeder Befehl ist winzig, etwa „addiere diese zwei Zahlen“. Und jeder durchläuft dieselben drei Schritte. Heute siehst du ihnen einzeln zu.

Am Ende dieser Lektion

Notiz

Ich kann dem Befehlszyklus aus Holen, Decodieren und Ausführen folgen.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Befehlein kleiner Schritt, den ein Prozessor ausführen kannadd a0, a0, a1
Speicheradressedie Nummer eines Platzes im Speicher
Registerein winziger, schneller Speicher im Prozessora0
Befehlszählerdas Register mit der Adresse des nächsten Befehls
Assembler-Sprachedie Befehle eines Prozessors als kurze Wörter geschrieben
Zyklusdieselben Schritte, immer wieder

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Was in einem Prozessor steckt

Ein Programm wartet im Speicher als Liste von Befehlen, jeder an seiner eigenen Speicheradresse.

Der Prozessor hat ein Steuerwerk, das jeden Befehl liest und herausfindet, was zu tun ist. Er hat ein Rechenwerk, auch ALU genannt, das addiert und vergleicht. Es ist aus Gattern wie in der letzten Lektion gebaut. Und er hat Register, winzige Speicher für die Zahlen, mit denen er gerade arbeitet.

Die Teile und ihre Aufgaben

TeilSeine Aufgabe
SpeicherHält das Programm und seine Daten
BefehlszählerHält die Adresse des nächsten Befehls
SteuerwerkFindet heraus, was ein Befehl bedeutet
Rechenwerk (ALU)Addiert, subtrahiert und rechnet mit Logik
Register wie a0 und a1Halten die Zahlen, mit denen gerechnet wird

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Holen, Decodieren, Ausführen, und wieder

Holen: Der Prozessor kopiert den Befehl, der an der Adresse im Befehlszähler steht. Der Befehlszähler rückt zur nächsten Adresse weiter.

Decodieren: Das Steuerwerk findet heraus, was der Befehl verlangt. Ausführen: Der Prozessor tut es, zum Beispiel addiert das Rechenwerk zwei Register. Dann beginnt der Zyklus von vorn.

Bevor du anfängst

Notiz

Drück oben in der Leiste auf Lab starten und warte, bis die Maschine läuft. Das Programm, das du liest, ist für einen RISC-V-Prozessor geschrieben. Die Lab-Maschine ist kein RISC-V, darum führt ein Emulator es aus.

In den Ordner arch wechseln

Befehl
cd ~/arch

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein Programm aus fünf Befehlen lesen

Befehl
cat add.s

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Aus Wörtern Maschinencode machen

Befehl
riscv64-linux-gnu-as add.s -o add.o

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Daraus ein Programm machen

Befehl
riscv64-linux-gnu-ld add.o -o add

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Jeden Befehl an seiner Adresse sehen

Befehl
riscv64-linux-gnu-objdump -d add

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Beispiel: das Programm Schritt für Schritt

BefehlszählerBefehlWas Ausführen tuta0a1
100b0li a0,2legt 2 in a02?
100b4li a1,3legt 3 in a123
100b8add a0,a0,a1das Rechenwerk addiert beide nach a053
100bcli a7,93wählt den Aufruf, der ein Programm beendet53
100c0ecallbittet Linux, es mit Status a0 zu beenden53

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein häufiger Fehler

Warnung

Viele denken, der Befehlszähler zählt, wie viele Befehle schon gelaufen sind. Er hält aber die Adresse des nächsten Befehls. Hier steigt er jedes Mal um 4, weil jeder Befehl 4 Bytes lang ist. Ein Sprung schreibt stattdessen eine neue Adresse hinein.

Eine Kopie mit 20 statt 2

Befehl
sed 's/a0, 2/a0, 20/' add.s > zwanzig.s

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Deine Kopie assemblieren

Befehl
riscv64-linux-gnu-as zwanzig.s -o zwanzig.o

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Deine Kopie linken

Befehl
riscv64-linux-gnu-ld zwanzig.o -o zwanzig

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Vorhersagen, dann im Emulator starten

Befehl
qemu-riscv64 ./zwanzig

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Das Ergebnis lesen, das es hinterließ

Befehl
echo $?

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Weiterführend: subtrahieren statt addieren

Drück auf Terminal öffnen und tipp sed 's/add /sub /' add.s > minus.s. Das macht eine Kopie, die a0 minus a1 rechnet, also 2 minus 3.

Assembliere und linke minus.s wie vorhin und starte das Programm mit qemu-riscv64 ./minus. Was zeigt echo $? danach? Erinnere dich an Lektion 2.

Über dieses Lab und seinen Quellcode: Lab für Compilerbau und Rechnerarchitektur: gcc, flex, bison und RISC-V in einer VM

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.