Johnny-Simulator/Vom Makrobefehl zu den Mikrobefehlen – das Steuerwerk
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.
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
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
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.
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.
Das abwechselnde Laden des nächsten Befehls und das Ausführen dieses Befehls wird auch als „von-Neumann-Zyklus“ bezeichnet:
Weitere Experimente mit JOHNNY und darüber hinaus
- 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. - 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. - 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.