- Microcode
-
Ein Mikroprogrammsteuerwerk ist der Teil mikroprogrammierter Prozessoren, der die Ausführung eines Befehls im Prozessor steuert. Das Steuerwerk enthält eine Menge von Mikroprogrammen, die jeweils aus einer Liste von Steuersignalen bestehen, die das Verhalten von Prozessorelementen – zum Beispiel der ALU und den Registern – regeln. Bei manchen Prozessoren können die Mikroprogramme auch nachträglich geändert werden. Man könnte die Mikroprogramme auch als Firmware der CPU bezeichnen.
Funktionsweise
Maschinencodes müssen in einem Prozessor in Steuersignale für die einzelnen Funktionseinheiten umgesetzt werden und mehrere aufeinander folgende Verarbeitungsschritte auslösen um die Funktion des Maschinencodes zu realisieren.
Nehmen wir als Beispiel folgenden Befehl eines fiktiven Prozessors: ADD A, B Dieser Befehl soll die Inhalte der Register A und B addieren und das Ergebnis in das Register A zurückschreiben. Damit dies geschieht muss innerhalb des Prozessors folgendes ablaufen:
- Die ALU muss für eine Addition konfiguriert werden.
- Das Register A muss seinen Inhalt an einen Eingang der ALU anlegen.
- Das Register B muss seinen Inhalt an einen zweiten Eingang der ALU anlegen.
- Nach dem Ablauf der Durchlaufzeit für das Auslesen der Register und die Ausführung der Addition in der ALU muss das Ergebnis in ein Zwischenregister übernommen werden.
- Das Register A muss den Wert des Zwischenregisters übernehmen.
- Der nächste Befehl muss aus dem Speicher gelesen werden.
Dabei können die Schritte 1, 2, 3 und 5, 6 in jeweils einem Schritt zusammengefasst werden.
Um diesen Ablauf zu steuern ist es möglich eine Logik aufzubauen, die direkt diese Steuerung vornimmt. Der Nachteil bei dieser "festen Verdrahtung" der Befehle ist die Komplexität der notwendigen Logik und die geringe Flexibilität bei notwendigen Veränderungen.
Im Falle der Mikroprogrammierung wird eine solche Ablaufsteuerung über die in einem Speicher abgelegten Mikroprogramme realisiert. Der Maschinencode aktiviert dabei jeweils eines der Mikroprogramme, das in mehreren Schritten dann jeweils alle notwendigen Steuersignale für die Funktionseinheiten erzeugt. Im einfachsten Falle ist das Mikroprogrammsteuerwerk aufgebaut aus einem Befehlsregister, das den gerade ausgeführten Maschinencode enthält, einem Zähler für die Mikroprogrammschritte und einem Speicher, der die einzelnen Schritte enthält. Das Befehlsregister und der Zähler zusammen ergeben dann die Adresse für den Mikroprogrammspeicher. Es sind aber auch komplexere Mikroprogrammsteuerwerke möglich, die Sprungbefehle und Verzweigungen ausführen können, um komplexere Befehle zu ermöglichen.
Entwicklung
Frühe Prozessoren waren typischerweise mit fest verdrahteter Logik aufgebaut, später wurden dann vermehrt Mikroprogrammsteuerwerke eingesetzt. Diese Entwicklung hat sich bei den Mainframe-Computern, wie auch später bei den Mikroprozessoren abgespielt. Mit der Entwicklung zu immer höheren Taktfrequenzen und zu RISC-Prozessoren ging dann allerdings der Trend wieder zu fest verdrahteter Logik. Aktuelle Prozessoren verwenden oft eine Mischform, bei der häufig verwendete Befehle oder Befehlsteile mit fest verdrahteter Logik ausgeführt werden und komplexe, oder nicht so zeitkritische Befehle ganz oder teilweise mit Mikrocode.
Einige Prozessoren können ihre Mikroprogrammierung auch selbst dynamisch ändern, zum Beispiel um einen anderen Befehlssatz zu erlauben oder die Ausführung zu optimieren. In einigen Fällen kann ein Teil des fest in einem Prozessor verankerten Mikrocodes durch nachgeladenen Mikrocode ersetzt werden um Fehler im Prozessor zu kompensieren.
Mikroprogrammsteuerwerke sind eine Form von speicherprogrammierbarer Steuerung. Ihr Einsatz ist nicht auf Prozessoren begrenzt.
Weblinks
Wikimedia Foundation.