- Mikroprogrammsteuerwerk
-
Ein Mikroprogrammsteuerwerk ist der Teil mikroprogrammierter Prozessoren, der die Ausführung eines Befehls im Prozessor steuert. Das Steuerwerk hat Zugriff auf Mikroprogramme, die in einem Speicher abgelegt sind. Die Mikroprogramme steuern das Zusammenspiel von Prozessoreinheiten wie zum Beispiel der ALU oder den Registern. Bei manchen Prozessoren können die Mikroprogramme auch nachträglich mittels Mikrocodeprogrammierung geändert werden. Man kann Mikroprogramme auch als Firmware der CPU auffassen.
Inhaltsverzeichnis
Funktionsweise
Maschinencodes müssen in einem Prozessor mittels sogenannter Mikrobefehle in Steuersignale für die einzelnen Funktionseinheiten umgesetzt werden. Unter Umständen müssen dazu mehrere aufeinander folgende Verarbeitungsschritte ausgelöst werden, um die Funktion des Maschinencodes in Form einer Mikrobefehlssequenz zu realisieren.
Nehmen wir als Beispiel den Befehl ADD A,B eines fiktiven Prozessors, der die Inhalte der Register A und B addieren und das Ergebnis in das Register A zurückschreiben soll. Es könnte folgender Steuerablauf im Prozessor ablaufen:
- Die ALU wird für eine Addition konfiguriert.
- Der Inhalt von Register A wird an den ersten Eingang der ALU angelegt.
- Der Inhalt von Register B wird an den zweiten Eingang der ALU angelegt.
- Nach dem Ablauf der Durchlaufzeit für das Auslesen der Register A und B, sowie die Ausführung der Addition in der ALU wird das Ergebnis in ein Zwischenregister abgelegt.
- Der Inhalt von Register A wird mit dem Wert aus dem Zwischenregister überschrieben.
- Der nächste Befehl wird aus dem Speicher gelesen.
Denkbar wäre, die Schritte 1, 2, 3 und 5, 6 in jeweils einem Zeitintervall zusammengefasst ablaufen zu lassen.
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. Die Bedeutung eines Mikroprogrammsteuerwerks als Leitwerk für die Steuerung eines virtuellen Rechenwerks wird mit dem Mikrocodesimulator MikroSim auf didaktische Weise vermittelt.
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.
Literatur
- R. Hoffmann: Rechnerentwurf: Rechenwerke, Mikroprogrammierung, RISC. 3. Auflage. Oldenbourg, München 1993, ISBN 978-3-486-22174-9 (insbesondere Kap. 5: Mikroprogrammierung).
- H.P. Gumm, M. Sommer: Einführung in die Informatik. Oldenbourg, 8. Auflage 2009, ISBN 978-3-486-58724-1
- K. Wüst: Mikroprozessortechnik: Grundlagen, Architekturen und Programmierung von Mikroprozessoren, Mikrocontrollern und Signalprozessoren. Vieweg+Teubner Verlag, 3. Auflage 2008, ISBN 978-3-834-80461-7
- H. Bähring: Mikrorechner-Technik, Band 1, Mikroprozessoren und Digitale Signalprozessoren. Springer, 3. Auflage 2002, ISBN 3-540-41648-x
- H. Bähring: Mikrorechner-Technik, Band 2, Busse, Speicher, Pheriperie und Mikrocontroller. Springer, 3. Auflage 2002, ISBN 3-540-43693-6
- Bringschulte, Ungerer: Mikrocontroller und Mikroprozessoren. Springer 2002, ISBN 3-540-43095-4
- R. Kelch: Rechnergrundlagen - Von der Binärlogik zum Schaltwerk. Fachbuchverlag Leipzig 2003, ISBN 3-446-22112-1
- R. Kelch: Rechnergrundlagen - Vom Rechenwerk zum Universalrechner. Fachbuchverlag Leipzig 2003, ISBN 3-446-22113-1
- Ch. Märtin: Einführung in die Rechnerarchitektur - Prozessoren und Systeme. Fachbuchverlag Leipzig 2003, ISBN 3-446-22242-1
Weblinks
- Mikrocodesimulator MikroSim 2010. 0/1-SimWare. Abgerufen am 3. Oktober 2010.
Wikimedia Foundation.