Johnny-Simulator/Vom Makrobefehl zu den Mikrobefehlen – das Steuerwerk
Inhaltsverzeichnis
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
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.
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: