i

Fachkonzept Mikroprogrammausführung

Mikroprogrammausführung

Die wichtigste Parallele zwischen Operations- und Steuerwerk ist das Zusammenspiel von (Mikro)Programmspeicher und (Mikro)Programmzähler.

Wie im Operationswerk zeigt der Mikroprammzähler an, welcher Mikrobefehl als nächster ausgeführt wird.
Das ist der im Mikroprogrammspeicher eingerahmte Befehl.
Der zuletzt ausgeführte Befehl, dem auch jeweils der aktuelle Zustand des Controlboards entspricht, steht in der Zeile darüber.

Im Gegensatz zu den komplexeren Programmbefehlen (inc, dec, jmp, tst, hlt), bei denen die Ausführung eines vollständigen Befehlszyklus 8 bis 12 Takte benötigt, werden Mikrobefehle in einem einzigen Takt ausgeführt.
Das binäre Steuerwort muss nicht mehr decodiert werden.
Hol- und Ausführphase erfolgen gleichzeitig: Das Steuerwort wird in das Controlboard geholt, und damit werden sofort die entsprechenden Signale aktiviert bzw. wieder deaktiviert.

Der Mikroprogrammspeicher

Der Mikroprogrammspeicher ist genauso organisiert wie der Programmspeicher des Operationswerks: eine Folge von fortlaufend nummerierten Registern, wobei auch hier die Nummerierung bei 0 beginnt. Die Nummer steht für die Adresse.
Einziger Unterschied: Der Mikroprogrammspeicher enthält keine Daten (im Sinne von Variablenwerten), sondern ausschließlich Mikrobefehle.

Der Befehlsdecoder des Steuerwerks

Der Befehlsdecoder liest zunächst (linke Seite) den Operationscode, den der rechte Filterbaustein (-> IR) liefert, ein und ordnet ihm dann (rechte Seite) den zehnfachen Wert zu. Dabei handelt es sich tatsächlich um eine Zuordnung (also keine Multiplikation mit 10).
Anschließend gibt er den decodierten Wert an den Mikroprogrammzähler weiter.
Die Abbildung zeigt die Decodierung des inc-Befehls:

Befehlsdecoder: Arbeitsweise[1]

Wie genau die Decodierung aussieht, lässt sich der Zuordnungstabelle entnehmen:

Befehlsdecoder: Tabelle[2]

Die scheinbare Multiplikation mit 10 macht das Mikroprogramm intuitiv lesbar: Man findet ohne Mühe für jeden Bonsai-Befehl den zugehörigen Block von Mikrobefehlen. Da der Bonsai - seinem Namen entsprechend - nur über einen minimalistischen Befehlssatz verfügt, spielen die dadurch entstehenden Leerzeilen (= nicht verwendete Speicheradressen) keine Rolle.
Wenn man den Befehlssatz erweitern möchte (s. nächstes Kapitel), muss man nicht zwangsläufig in Zeile 60 fortfahren, man könnte ebenso gut die neuen Befehle ab Zeile 51 eintragen. Dann müsste im Befehlsdecoder die Zuordnung folgendermaßen aussehen: 6 -> 51, was aber das Lesen, Analysieren und eventuell weitere Fortschreiben des Mikroprogramms erschweren würde.

Das heißt: Der Befehlsdecoder legt für jeden Bonsai-Befehl fest, an welcher Adresse des Mikroprogrammspeichers der erste der zur Ausführung benötigten Mikrobefehle steht:

  • Die Hol- und Decodierphase beginnt an Adresse 0.
    Das Nullsetzen des Mikroprogrammzählers ist jedoch
    keine Aufgabe des Befehlsdecoders (s. u.)!
  • Der inc-Befehl beginnt an Adresse 10.
  • Der dec-Befehl beginnt an Adresse 20.
  • Der jmp-Befehl beginnt an Adresse 30.
  • Der tst-Befehl beginnt an Adresse 40.
  • Der hlt-Befehl beginnt an Adresse 50.

Der Befehlsdecoder übermittelt dem Mikroprogrammzähler für jeden einzelnen Bonsai-Befehl die Einsprungstelle ins Mikroprogramm.

Der Mikroprogrammzähler (MPC)

Wie beim Programmzähler des Operationswerks gibt es drei Möglichkeiten, wie der neue Wert des Mikroprogrammzählers korrekt eingestellt wird:

  1. Für jeden neuen Befehlszyklus muss der MPC auf Null gesetzt werden (Adresse 0 = Beginn der Holphase).
    Dafür ist das Steuersignal 1 zuständig, das direkt mit dem clr-Eingang des MPC verbunden ist.
  2. Für die Ausführphase der Bonsai-Befehle muss der MPC auf die korrekte Einsprungstelle ins Mikroprogramm eingestellt werden.
    Das erfolgt durch das Steuersignal 2, das das Lesetor des MPC öffnet, so dass er den Wert des Befehlsdecoders übernehmen kann (s. Abb. 1).
  3. Für die einzelnen Schritte, die zur Ausführung eines Bonsai-Befehls benötigt werden, muss der MPC mit jedem Takt hochgezählt werden.
    Dafür ist der Taktgeber mit dem Inkrementier-Eingang (+) des MPC verbunden.

Kurzer Ausflug in die Digitaltechnik

Um Konflikte zwischen dem Taktgeber und den Steuersignalen 1 und 2 zu vermeiden, sind dem Inkrementier-Eingang des MPC zwei logische Gatter vorgeschaltet.

MPC[3]

Das NOR-Gatter (rechts), dessen Eingänge durch die Steuersignale 1 (violette Steuerleitung) und 2 (grüne Steuerleitung) belegt sind, sperrt das AND-Gatter, sobald eines der beiden Signale den Wert 1 annimmt.
Das Hochzählen des MPC ist folglich nur möglich, wenn das AND-Gatter vom Taktgeber und vom NOR-Gatter eine 1 bekommt. Somit kann der Taktgeber das Rücksetzen auf Null und das direkte Setzen durch den Befehlsdecoder nicht stören.

Die Steuersignale 0 bis 2

Das Steuersignal 0 dient lediglich dazu, das Erreichen des Programmendes (= Ausführen des hlt-Befehls) mit Hilfe der LED anzuzeigen.
Man könnte es theoretisch auch dazu verwenden, den Taktgeber anzuhalten. Da beim hlt-Befehl neben dem Steuersignal 0 auch das Steuersignal 2 aktiv ist, bleibt aber das weitere Hochzählen des MPC ohnehin gesperrt.

Das Steuersignal 1 dient dazu, am Ende der Ausführphase den neuen Befehlszyklus vorzubereiten, indem es den MPC auf Null zurücksetzt.

Das Steuersignal 2 dient dazu, beim Übergang von der Decodierphase zur Ausführphase die richtige Einsprungstelle für das Mikroprogramm in den MPC zu schreiben. Dazu öffnet das Signal das Lesetor des MPC.

Quellen

Suche

v
12.3.4.2.6
dev.inf-schule.de/rechner/bonsai/cpu/steuerwerk/konzept_mikroprogrammausfuehrung
dev.inf-schule.de/12.3.4.2.6

Rückmeldung geben