Johnny-Simulator/Vom Makrobefehl zu den Mikrobefehlen – das Steuerwerk

Aus ZUM-Unterrichten
< Johnny-Simulator
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Vom Makrobefehl zu den Mikrobefehlen – das Steuerwerk

Der Aufbau des Steuerwerks

Bisher haben wir einfach akzeptiert, dass unser Computer die Befehle im Speicher liest und die entsprechenden Mikrobefehle irgendwie ausführt. Wie aber macht er das? Schließlich handelt es sich nur um ein elektronisches Gerät ohne eigene Intelligenz (auch wenn er zugegebenermaßen intelligent konstruiert ist).

Um zu sehen, wie das Interpretieren der Makrobefehle und die Übersetzung in Mikrobefehls-Folgen geschieht, müssen wir zunächst das (bislang versteckte) Steuerwerk betrachten.

Pd Johnny with CU.png

Wichtig sind hierbei vor allem das so genannte Befehlsregister (Command Register), der Programmzähler (Program Counter) und der so genannte Mikrobefehlsspeicher (Micro Code). Diese sind über Leitungen miteinander verbunden und für den Transport von Daten zwischen diesen Bestandteilen und zu den beiden Bussen braucht man noch ein paar weitere Mikrobefehle.

Die Mikrobefehle des Steuerwerks

Aufgabe

a) Mikrobefehle des Steuerwerks

Legen Sie die Zahl 04.142 auf den Datenbus, was dem Befehl „SAVE 142“ entspricht.

Führen Sie dann (in der hier gegebenen Reihenfolge) die folgenden Mikrobefehle aus und ordnen Sie zu, was dabei jeweils geschieht:
db->ins Businhalt ins Befehlsregister [Instruction Register] kopieren
ins->mc Mikrobefehlszähler [Micro Counter] auf das Zehnfache der Befehlsnummer setzen
ins->ab Adressteil des Befehls im Befehlsregister [Instruction Register] auf den Adressbus kopiereren
pc++ Programmzähler [Program Counter] um 1 erhöhen
pc->ab Inhalt des Programmzählers [Program Counter] auf den Adressbus kopieren
ins->pc Inhalt Adressteil im Befehlsregisters [Instruction Register] auf den Programmzähler [Program Counter] kopieren
mc:=0 Mikrobefehlszähler [Micro Counter] auf den Wert 0 setzen.


b) Ganz besondere Mikrobefehle

1 Testen Sie den Mikrobefehl „=0:pc++“, einmal, wenn der Akku den Wert 0 hat, einmal, wenn sie einen von 0 verschiedenen Wert hat.

Der Befehlszähler wird immer um 1 erhöht.
Der Befehlszähler wird um 1 erhöht, aber nur dann, wenn der Akku den Wert 0 hat.
Wenn der Akku den Wert 0 hat wird, der Programmzähler um 1 erhöht, ansonsten um 2.

2 Wenn man auf den Taster One-Micro-Step klickt (Play-Button oben rechts mit dem -Symbol), passiert folgendes:

Der gelb markierte Makrobefehl wird ausgeführt und der Befehlszähler (Prog. Counter) wird um 1 erhöht.
Der Akkumulator-Wert wird um 1 erhöht und der Wert auf den Datenbus gelegt.
Der gelb markierte Mikrobefehl wird ausgeführt und der Mikrobefehlszähler (über dem Micro-Code) wird dann um 1 erhöht. Die Markierung verschiebt sich.


Der von Neumann-Zyklus

In Arbeitsauftrag 9 haben Sie gesehen, dass die Befehlsnummer des Befehls im Befehlsregister (Command Register) beim Klick ins->mc in den Micro-Code-Zähler kopiert wird (multipliziert mit 10).

Bei jedem Klick auf One Micro Step wird der Befehl, den der Mikro-Code-Zähler nummeriert (und der gelb markiert ist) ausgeführt. Dann wird der Mikro-Code-Zähler um 1 erhöht. Auf diese Weise werden nacheinander alle zum Makrobefehl gehörenden Mikrobefehle ausgeführt. Wenn die Liste der zugehörenden Mikrobefehle abgearbeitet ist, muss der nächste Befehl ins Befehlsregister (Command Register) geladen werden. Dies erfolgt ebenfalls über die Mikrobefehle, die Sie in Arbeitsauftrag 9 kennen gelernt haben.

Die Folge von Mikrobefehlen, die zum Laden des Befehls ins Befehlsregister notwendig ist, steht im Mikrobefehlsspeicher ab der Speicherstelle 000 und werden im Johnny-Simulator mit „fetch“ bezeichnet.


Aufgabe

a) Die Mikrobefehle des fetch-Bereichs

Erläutern Sie, wofür die einzelnen Befehle des fetch-Bereichs des Mikrobefehlsspeichers notwendig sind:
pc->ab Die Speicherzelle mit dem richtigen Befehl aus dem RAM auswählen.
ram->db Befehl im RAM auf den Datenbus legen
db->ins Businhalt ins Befehlsregister [Instruction Register] kopieren
ins->mc Mikrobefehlszähler [Micro Counter] gemäß der Befehlsnummer setzen

b) Abschluss von Mikrobefehlssequenzen

Die Mikrobefehls-Folge für jeden Makrobefehl wie TAKE, ADD, SUB usw. endet mit den beiden Mikrobefehlen pc++ und mc:=0.


1 Der Befehl pc++ sorgt dafür, ...

... dass der Wert im Akkumulator um genau 1 erhöht wird.
... dass demnächst der nächste Befehl und nicht derselbe wie bisher abgearbeitet wird.
... dass der Wert auf dem Datenbus um 1 erhöht wird

2 Der Befehl mc:=0 sorgt dafür, ...

... dass der Datenbus auf den Wert 0 gesetzt wird.
... dass der Adressbus auf den Wert 0 gesetzt wird.
... dass damit begonnen wird, den nächsten Befehl ins Befehlsregister zu holen.


Das abwechselnde Laden des nächsten Befehls und das Ausführen dieses Befehls wird auch als „von-Neumann-Zyklus“ bezeichnet:

Pd Johnny von Neumann Cycle.png


Weitere Experimente mit JOHNNY und darüber hinaus

Aufgabe
  1. Eigene Befehle in JOHNNY
    Das Simulationsprogramm JOHNNY erlaubt es, eigene Makrobefehle aus einzelnen Mikrobefehlen zusammenzubasteln. Wie genau, ist im Handbuch dokumentiert, das dem Programm beiliegt. Konstruiere aus Mikrobefehlen einen Befehl zum Verdoppeln einer Speicherzelle. Überlege Dir auch andere Makrobefehle, die vielleicht nützlich sein könnten und realisiere sie als Abfolge von Mikrobefehlen. Natürlich musst Du die Befehle dann auch mit entsprechenden Maschinenprogrammen testen.
  2. Viren in JOHHNY?
    Keine Angst. Das Programm JOHNNY sollte virenfrei sein, wenn es von den genannten Seiten heruntergeladen wurde. Die Frage ist vielmehr: Kann man in JOHNNY selbst einen Computervirus als Maschinenprogramm schreiben. Also ein Programm, dass sich selbst im Speicher kopiert. Du kannst es ja einmal ausprobieren. Für den PC, auf dem JOHNNY läuft, ist das natürlich nicht gefährlich, denn der PC "spricht" eine ganz andere Maschiensprache.
  3. BONSAI -- ein anderer Schulcomputer
    JOHNNY ist ein sehr vereinfachter Simulator für Schulzwecke: Echte Computer sind deutlich komplizierter. Ein Computer, der ebenfalls für Schulzwecke entworfen wurde, aber näher an der "echten Wirklichkeit" ist, ist der BONSAI-Rechner. Informieren Sie sich über diesen Rechner, über Ähnlichkeiten und Unterschiede zu JOHNNY.