Mikrobefehl
Der Mikrobefehl (auch Micro-op, µ-op, µ-Operation) ist eine elementare Anweisung zur Steuerung eines Prozessors.
- Bei einem Prozessor mit CISC-Architektur sind Mikrobefehle Prozessor-interne Steuercodes im Mikroprogrammsteuerwerk; sie steuern und verschalten die verschiedenen Arbeitseinheiten (z. B. das Rechenwerk) im CPU-Kern und verschalten sie mit anderen Prozessorkomponenten, z. B. den Registern. Mehrere Mikrobefehle werden zu einem Mikrocodebefehlssatz zusammengefasst, der umgangssprachlich als Mikrocode eines Mikroprogrammsteuerwerks bezeichnet wird. Mitunter können einige Mikrobefehle direkt von außen angegeben werden; sie sind dann RISC-ähnliche Maschinenbefehle.
- Bei einem Prozessor mit RISC-Architektur existiert kein Mikroprogrammsteuerwerk – die Maschinenbefehle werden direkt (oder mithilfe einer minimalen kombinatorischen Schaltung) für die interne Verschaltung der Prozessorkomponenten verwendet. Hier fallen somit µ-Op und Maschinencode zusammen.
Im weiteren Artikel wird einzig auf den Mikrocode des Mikroprogrammsteuerwerks eines CISC-Prozessors eingegangen.
Funktionsweise
Durch eine inhärent codierte Adressierungsvorschrift in einem Teil des Mikrobefehls wird auf den nächsten zu verarbeitenden Mikrobefehl innerhalb eines adressierbaren Mikrobefehlssatzes verwiesen, so dass strukturierte Abläufe in sich wiederholenden Mikrobefehlssequenzen programmiert werden können. Auf diese Weise ist es möglich, den komplexen Befehlsumfang eines CISC-Prozessors (CISC, {{Modul:Vorlage:lang}} Modul:Vorlage:lang:103: attempt to index field 'wikibase' (a nil value)) als Mikrobefehlssequenz darzustellen. Der Mikrobefehlssatz kann somit als Firmware des Mikroprogrammsteuerwerks verstanden werden. Der Mikrocode eines integrierten Rechenwerks befindet sich in einem abgetrennten Speicherbereich mit kurzer Zugriffszeit. Der Mikrocode fungiert als niedrigstes Steuerprogramm, programmiert in der Sprache der Mikrobefehle, um Maschinenbefehle in eine Reihe von Schaltoperationsanweisungen zu übersetzen.
Der Mikrobefehl besteht aus einer Aneinanderreihung von Bits, die bei der Abarbeitung innerhalb eines Mikrocodebefehlszyklus die Steuerung im Mikrocodeprogrammsteuer- und Rechenwerk bewirken. Dabei kann jedes einzelne Bit als diskrete Schaltanweisung (Pikobefehl) verstanden werden, die eine Schaltaktivität je nach Bit-Wert einleitet oder unterbindet. Alternativ können mehrere nicht unabhängige Bits in Bitfelder gruppiert als codierte Binärzahl (Nanocode) aufgefasst werden. Deren Bitkombination kann unter Umständen Multiplexer-Schaltungen dazu anweisen, zugeordnete Steuer- oder Rechenschaltungen (Nanoprogramm) zu aktivieren.
Ein Mikrobefehl(-santeil) wird als „horizontal mikrobefehlscodiert“ bezeichnet, wenn die Ausführung des Befehlsanteils mit unabhängiger Einzelbit-Steuermöglichkeit innerhalb eines Abarbeitungstakts erfolgt. In diesem Fall ist der Zustandsübergang des Rechenautomaten unabhängig von der Ausführungsreihenfolge der Schaltanweisungen innerhalb eines Mikrobefehls.
Ein Mikrobefehl(-santeil) wird als „vertikal mikrobefehlscodiert“ bezeichnet, wenn die Ausführung des Befehlsanteils aufgrund einer abhängigen Einzelbit-Steuermöglichkeit in Zwischentakten erfolgt (Nanoprogramm). Auf diese Weise kann eine zeitliche Abfolge von ineinandergreifenden Einzelbit-Steuerungen ausgenutzt oder eine Auswertung einer bitgruppierungsabhängigen Steuerung ermöglicht werden. In diesem Fall ist der Zustandsübergang des Rechenautomaten abhängig von der Ausführungsreihenfolge der Schaltanweisungen innerhalb eines Mikrobefehls.
Besteht ein Mikrobefehl aus horizontal wie auch vertikal codierten Anteilen, so bezeichnet man diesen auch als „diagonal mikrobefehlscodiert“.
Ein Mikrobefehlszyklus kann in mehrere Phasen unterteilt sein, in denen horizontal und vertikal mikrobefehlscodierte Steuerungsanweisungen gleichzeitig aktiv sind. Ist der Mikrocode-Speicherbereich veränderbar, so kann ein Mikrocode-Programm (auch Mikroprogramm) nachträglich verändert und geladen werden, um Hardware-Funktionalitäten anzupassen, zu korrigieren oder zu optimieren.
Ein aus Mikrobefehlen ({{Modul:Vorlage:lang}} Modul:Vorlage:lang:103: attempt to index field 'wikibase' (a nil value)) in Binärcode zusammengestelltes Mikroprogramm wird als Mikrocode bezeichnet. Das Vorgehen bei der Programmierung im Sinne der Zusammenstellung der Mikrobefehle zu einem Mikroprogramm wird als Mikroprogrammierung bezeichnet, die unmittelbare Erstellung eines Steuerprogramms in Binärcode als Mikrocodierung. Gegebenenfalls werden Programmierwerkzeuge verwendet, die als Mikroassembler bezeichnet werden. Mit diesen Hilfsmitteln ist es möglich, auf übersichtliche Weise Mikrobefehlssequenzen zu verwalten und diese in Binärcode zu übersetzen. Die Bedeutung der Mikrobefehle für die Steuerung einer virtuellen Recheneinheit wird mit dem Mikrocodesimulator MikroSim auf didaktische Weise vermittelt.
Literatur
- Vorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/Name: Einführung in die Informatik. Hrsg.: Vorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/Name. Oldenbourg, 8. Auflage, Vorlage:Cite book/Date, ISBN 978-3-486-58724-1, [ ] (Vorlage:Cite book/URL [abgerufen am -05-]).Vorlage:Cite book/URLVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung
- Vorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/Name: Mikroprozessortechnik: Grundlagen, Architekturen und Programmierung von Mikroprozessoren, Mikrocontrollern und Signalprozessoren. Hrsg.: Vorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/Name. Vieweg+Teubner Verlag, 3. Auflage, Vorlage:Cite book/Date, ISBN 978-3-8348-0461-7, [ ] (Vorlage:Cite book/URL [abgerufen am -05-]).Vorlage:Cite book/URLVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung
- Vorlage:Cite book/URLVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung
- Vorlage:Cite book/URLVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung
- Vorlage:Cite book/URLVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung
Weblinks
- Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig Mikrocodesimulator MikroSim 2010.] 0/1-SimWare, , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 3. Oktober 2010.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung
- Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig P6 Family Processor Microcode Update, Feature Review.] J. Molina, W. Arbaugh, , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 3. Oktober 2010 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung
- Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig A Brief History of Microprogramming.] M. Smotherman, , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 3. Oktober 2010 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung
- Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig Computer Structures: Principles and Examples, Part 2, Regions Of Computer Space, Section 1, Microprogram-Based Processors, Seite 151 ff.] McGraw-Hill Computer Science Series, , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 3. Oktober 2010 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung
- Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig Intel(R) 64 and IA-32 Architectures Software Developer’s Manual, Volume 3A: System Programming Guide, Part 1, Chapter 9.11: „Microcode update facilities“.] Intel Cooperation, , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 3. Oktober 2010 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung
- Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig Intel Microcode Update Utility for Linux.] , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 3. Oktober 2010 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung
- Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig A microcode reliability update is available that improves the reliability of systems that use Intel processors.] Microsoft, , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 3. Oktober 2010 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung
- Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig BIOS Update required when Missing Microcode message is seen during POST.] Intel Cooperation, , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 3. Oktober 2010 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung