Erkundung Mikroprogramm
Um einen Befehl zu holen, zu decodieren und auszuführen, gibt es jeweils nur eine sinnvolle Reihenfolge, in der Steuersignale aktiviert oder deaktiviert werden müssen.
(Einzige Ausnahme: Das Inkrementieren des PC bei den Befehlen inc, dec und tst kann entweder ganz am Ende oder auch schon etwas früher erfolgen.)
Diese Abfolge lässt sich so präzise beschreiben, dass man sie als Algorithmus bezeichnen kann.
Ein Signalaktivierungsalgorithmus
Hier ein Signalaktivierungsalgorithmus, mit dem man Bonsai-Maschinenprogramme mit Hilfe von Steuersignalen ausführen kann.
Wiederhole (solange das Programmende nicht erreicht ist): # Befehl holen und decodieren 10 PC -> ABus 10, 3, 11 Mem[Abus] -> DBus -> IR 10, 3 Mem[Abus] -> DBus 12 adr(IR) -> ABus und SBus # Befehl ausführen Falls op(IR): 1 (inc): 12 adr(IR) -> ABus 12, 3, 7 Mem[ABus] -> DBus -> Akku 12, 3 Mem[ABus] -> DBus 12, 5, 13 incAkku; incPC 12, 8, 4 Akku -> DBus -> Mem[ABus] 12, 8 Akku -> DBus 2 (dec): 12 adr(IR) -> ABus 12, 3, 7 Mem[ABus] -> DBus -> Akku 12, 3 Mem[ABus] -> DBus 12, 6, 13 decAkku; incPC 12, 8, 4 Akku -> DBus -> Mem[ABus] 12, 8 Akku -> DBus 3 (jmp): 12, 9 adr(IR) -> ABus -> PC 12 adr(IR) -> ABus 4 (tst): 12, 13 adr(IR) -> ABus; incPC 12, 3 Mem[ABus] -> DBus 12, 3, 14 incPCz 5 (hlt):
Wenn ein Algorithmus nicht umgangssprachlich, sondern in einer Programmiersprache bzw. in Maschinensprache formuliert wird, ist er ein von einem Computer ausführbares Programm.
Um die Ausführung beliebiger Programme durch den Bonsai-Rechner automatisch steuern zu können, benötigen wir ein "Master-Programm", das "weiß", wie man Befehle holt und decodiert, und das den gesamten Befehlssatz "kennt", so dass es gezielt Steuersignale aktivieren und deaktivieren kann. Dieses "Master-Programm" wird als Mikroprogramm bezeichnet.
Was benötigt ein Mikroprogramm zu seiner Ausführung?
Das Mikroprogramm kann unmöglich im selben Speicher abgelegt werden wie das aktuell auszuführende Programm samt seinen Daten.
Zugleich muss davon ausgegangen werden, dass seine Abarbeitung weitestgehend parallel zur Ausführung aller anderen Programme abläuft.
Die neuen Komponenten des Steuerwerks
Falls der Schalter zum Taktgeber rechts unten nicht funktioniert, muss ggf. die Skalierung deines Browsers vergrößert werden (STRG + "+"), damit der Bonsai korrekt angezeigt und funktionsfähig ist. Du kannst den Simulator auch direkt in einem separaten Fenster öffnen: Bonsai-Simulator
Aufgabe 1
Betrachte genau die neuen Komponenten des Steuerwerks und finde möglichst viele Parallelen zu den Komponenten des Operationswerks:
Operationswerk | Steuerwerk |
---|---|
Programmspeicher | ... |
Befehlszähler (PC) | ... |
Befehlsregister (IR) | ... |
Filterbausteine am Ausgang des IR | ... |
Am unteren rechten Rand befindet sich noch eine weitere neue Komponente, die nicht beschriftet ist .
Aktiviere den Schalter rechts und beobachte, was passiert. Wenn dir das zu schnell geht, lade die Seite neu und klicke stattdessen in deinem Tempo mehrfach hintereinander den grauen
Kreis links von der Zahl 2 an.
Bei dieser Komponente handelt es sich um einen ...
Es handelt sich um einen Taktgeber. Mit jedem Taktsignal wird eine Zeile des oben angegebenen Algorithmus ausgeführt.
Erkundung des Mikroprogramms
Von den neuen Komponenten des Steuerwerks interessiert uns im Folgenden zunächst nur das Mikroprogramm, das im Mikroprogrammspeicher liegt.
Aufgabe 2
Schaue in den Mikroprogrammspeicher hinein. Hierzu musst du nur den passenden Tab anklicken. Du erhältst eine zunächst etwas merkwürdige Auflistung von Zahlen und Leerzeilen.
00: 1024 01: 3080 02: 1032 03: 4096 04: 4100 ... 10: 4096 11: 4232 12: 4104 13: 12320 14: 4368 15: 4352 16: 2 ...
(a) Um diesen Mikroprogramminhalt deuten zu können, musst du die im Dezimalsystem notierten Zahlen ins Dualsystem umwandeln.
Zeile | Dezimalzahl | Dualzahl |
---|---|---|
00 | 1024 | 000010000000000 |
01 | 3080 | 000110000001000 |
02 | 1032 | ... |
03 | 4069 | ... |
04 | 4100 | ... |
... | ... | ... |
10 | 4096 | ... |
11 | 4232 | ... |
... | ... | ... |
Hierkannst du dir die Tabelle zum Vervollständigen herunterladen.
(b) Lade die Seite neu.
Klicke nun fünf Mal hintereinander den grauen Kreis im Taktgeber (links neben der Zahl 2) an.
Vergleiche nach jedem Klick den Zustand des Steuerboards mit den Bitfolgen der ersten, zweiten, ... Zeile deiner Tabelle.
Vergleiche außerdem den jeweiligen Zustand des Steuerboards mit der entsprechenden Zeile des oben angegebenen Signalaktivierungsalgorithmus.
Kannst du jetzt den Zusammenhang zwischen den Dezimalzahlen im Mikroprogrammspeicher und dem Signalaktivierungsalgorithmus erklären?
-
Die durch die Übersetzung der Dezimalzahlen ins Dualsystem entstandenen Bitfolgen sind sogenannte Steuerwörter bzw. Mikrobefehle. Sie geben an, welche Steuersignale zu einem bestimmten Zeitpunkt alle (gleichzeitig) aktiviert werden sollen.
-
Die Zeilen 00 bis 04 entsprechen der Hol- und Decodierphase des Befehlszyklus.
Die Zeilen 10 bis 16 entsprechen den Einzelschritten der Ausführung des inc-Befehls.
Zeile 04 und Zeile 16 enthalten jeweils ein Steuersignal, dessen Funktion bisher noch nicht bekannt ist. Sie werden im Abschnitt "Mikroprogrammausführung" behandelt.
(c) Zuletzt gilt es noch, den Sinn der Leerzeilen im Mikroprogramm zu ergründen.
Alle Zeilen, die die Hol- und Decodierphase implementieren, beginnen mit der Ziffer 0.
Alle Zeilen, die die Ausführung des inc-Befehls implementieren, beginnen mit der Ziffer 1.
Stelle Vermutungen an bzw. schau im Mikroprogramm (und im Signalaktivierungsalgorithmus) nach, mit welchen Ziffern die Zeilen beginnen, die den dec-Befehl, den jmp-Befehl, den tst-Befehl und den hlt-Befehl implementieren.
Vervollständige den folgenden Satz:
Ab Zeile 10 entspricht die erste Ziffer der Zeilennummer ...
... dem Operationscode des entsprechenden Programmbefehls, also 2 für dec, 3 für jmp, 4 für tst und 5 für hlt.
Weshalb die Übereinstimmung der führenden Ziffer der Zeilennummer mit dem Operationscode (und somit auch das Freilassen nicht benötigter Zeilen bis 19, 29, 39, 49) sinnvoll ist und wie das konkret genutzt wird, erfährst du im Kapitel "Mikroprogrammausführung".