Mikroprogrammausführung
Automatisierte Aktivierung von Steuersignalen
Das Mikroprogramm dient dazu, den Steueralgorithmus umzusetzen. Im letzten Abschnitt wurde die Befehlsausführung genauer betrachtet. Offen ist noch, wie die im Steueralgorithmus vorkommende Wiederholung und Fallunterscheidung im Mikroprogramm realisiert werden.
Wiederhole: # Befehl holen 10 PC -> ABus 10, 3, 11 Mem[Abus] -> DBus -> IR 10, 3 Mem[Abus] -> DBus # Befehl decodieren und 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 upAkku; 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 downAkku; 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):
Experimente mit dem Bonsai-Simulationsprogramm
Du kannst den Simulator auch etwas größer direkt in einem separaten Fenster öffnen: Bonsai-Simulator
Zum Ausdrucken gibt es auch eine Übersicht des Simulators mit seinen Steuerleitungen.
Aufgabe 1
(a) Initialisiere den Bonsai-Simulator, indem du die aktuelle Seite neu lädst. Mit der Takt-Schaltfläche rechts unten (erkennbar am Handsymbol) kannst du einen Taktimpuls auslösen. Führe das mehrfach aus und beobachte das MPC-Register, den Mikroprogrammspeicher und die Steuerwörter im Controlboard. Was wird im MPC-Register verwaltet?
Aufgabe 2
(a) Initialisiere erneut den Bonsai-Simulator. Steppe noch einmal mit der Takt-Schaltfläche einige Befehle durch und beobachte dabei insbesondere den Befehlsdecoder. Zu welchen Zeitpunkten wird er aktiv? Wie übersetzt er einen Operationscode in eine Einsprungstelle im Mikroprogramm?
(b) Öffne den Befehlsdecoder-Editor. Hier erkennst du, dass der Befehlsdecoder eine einfache Tabelle ist, die einem Opcode eine zweistellige Zahl zuordnet. Diese zweistellige Zahl ist die Einsprungadresse im Mikroprogramm. Dem Opcode 2 (der für einen dec-Befehl steht) wird also die Einsprungstelle 20 im Mikroprogramm zugeordnet. Probiere einmal aus, wie sich die Ausführung eines Programms ändert, wenn du im Befehlsdecoder dem Opcode 2 die Einsprungstelle 10 zuordnest. Hast du Erklärung hierfür?
Aufgabe 3
(a) Initialisiere erneut den Bonsai-Simulator. Führe einge Takte durch, indem du die Takt-Schaltfläche anklickst. Im MPC-Register sollte irgendeine Zahl ungleich 0 stehen. Aktiviere jetzt gezielt das Steuersignal 1 im Controlboard. Wie ändert sich der Wert im MPC-Register?
(b) Initialisiere erneut den Bonsai-Simulator. Steppe mit der Takt-Schaltfläche einige Befehle durch und beobachte, wann das Steuersignal 1 aktiviert wird. Welche Funktion hat die Aktivierung des Steuersignals 1?
Hintergrundwissen
Mit jedem Takt-Impuls wird ein Steuerwort des Mikroprogramms ausgeführt. Das jeweils auszuführende Steuerwort wird mit dem Mikroprogrammzähler (MPC) verwaltet.
Der Wert des Mikroprogrammzählers kann in der Bonsai-Architektur auf drei verschiedene Weisen verändert werden:
- Initialisieren: Mit dem Steuersignal 1 kann der Wert des Mikroprogrammzähler auf 0 gesetzt werden.
- Hochzählen: Der Wert des Mikroprogrammzählers kann um 1 erhöht werden.
- Setzen: Der Wert des Mikroprogrammzählers kann auf eine vorgegebene Einsprungstelle gesetzt werden.
Mit einer Schaltung bestehend aus logischen Gattern wird genau festgelegt, welcher dieser drei Fälle gerade realisiert wird.
Der Befehlsdecoder dient dazu, aus dem Operationscode eines Befehls die Einsprungstelle des betreffenden Befehls im Mikroprogramm zu bestimmen.
Mit diesen Bauteilen lässt sich jetzt die automatisierte Ausführung des Befehlszyklus realisieren:
- Einer Holphase geht immer eine Initialisierung des Mikroprogrammzählers voraus. Diese Initialisierung des Mikroprogrammzählers bewirkt einen Rücksprung im Mikroprogramm und somit die Ausführung der Wiederholung im Steueralgorithmus.
- Für die Decodierung von Befehlen ist der Befehlsdecoder zuständig. Dieser liefert die passende Einsprungstelle im Mikroprogramm. Durch das Setzen der Einsprungstelle wird so die Fallunterscheidung im Steueralgorithmus realisiert.
- In der Ausführphase wird schließlich das Hochzählen des Mikroprogrammzählers benutzt. Ein Befehl wird in der Regel nicht in einem einzigen Takt ausgeführt. Mit dem Hochzählen werden hier schrittweise die jeweils nächsten Signale aktiviert.
Die folgende Darstellung des Mikroprogramms verdeutlicht noch einmal die Realisierung des Befehlszyklus.
# Befehl holen 00: [10] 01: [10, 3, 11] 02: [10, 3] 03: [12] 04: [12, 2] # Befehl decodieren: MPC = [op(IR)]0 ... # inc ausführen 10: [12] 11: [12, 7, 3] 12: [12, 3] 13: [13, 12, 5] 14: [12, 8, 4] 15: [12, 8] 16: [1] # Rücksprung: MPC = 00 ... # dec ausführen 20: [12] 21: [12, 7, 3] 22: [12, 3] 23: [13, 12, 6] 24: [12, 8, 4] 25: [12, 8] 26: [1] # Rücksprung: MPC = 00 ... # jmp ausführen 30: [12, 9] 31: [12] 32: [1] # Rücksprung: MPC = 00 ... # tst ausführen 40: [13, 12] 41: [12, 3] 42: [14, 12, 3] 43: [1] # Rücksprung: MPC = 00 ... # hlt ausführen 50: [12, 2, 0]