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

Bonsai-Logo Der rechte Rand der Simulation wird sichtbar, wenn du das Menü mit einem Mausklick auf das 'X' rechts oben abschaltest. Du kannst den Simulator auch etwas größer 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 Taktgeber.

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?

(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".

X

Fehler melden

X

Suche