AlsMikroprogrammierung wird die Methode und das Vorgehen verstanden, Schalt-, Rechen- und Steuerabläufe in einemRechenwerk, insbesondere einem integrierten Rechenwerk (Mikrocontroller,Mikroprozessor), unterhalb der Ausführungsebene vonMaschinenbefehlen auf Mikrobefehlsebene festzulegen und zu regeln. Als Mikroprogrammierung kann die Erstellung eines Mikrobefehlssatzes als Abfolge von Mikrobefehlsequenzen in einer Art Steuersprache für Schalter verstanden werden. Vereinzelt wird durch den BegriffMikrocode-Programmierung oder Mikrocodeprogrammierung die Erstellung des sogenanntenMikrocodes bei der Mikroprogrammierung betont, der die Binärform des Mikrobefehlssatzes darstellt.
Mit der Mikrocodeprogrammierbarkeit eines Rechenwerks ist das Vorhandensein eines dazu angepasstenMikroprogrammsteuerwerks verbunden, welches durch die taktweise Abfolge der Mikrocodebefehlssequenz gesteuert wird. Die Möglichkeit einer flexibel programmierbaren Abfolgesteuerung von Mikrobefehlen setzt voraus, dass in jedemMikrobefehl (engl.Micro Instruction) selbst eine Berechnungsvorschrift zum Verweis, d. h.Adressierung, auf den nächsten anzusteuernden Mikrobefehl enthalten ist.
Üblicherweise ist ein Maschinensprachebefehlssatz einesProzessors bei der Fertigung (z. B. aus Kompatibilitätsgründen) vorgegeben und nicht veränderbar. Der den Maschinencode bildende Mikrobefehlssatz (kurz Mikrocode) ist in einemFestwertspeicher wieEPROM oderROM inner- oder außerhalb des Rechenwerks untergebracht und wird ggf. bei derInitialisierung des Rechenwerks in das Mikroprogrammsteuerwerk geladen. Zur Optimierung von Schaltungsabläufen werden dennoch Möglichkeiten vorgesehen und Vorkehrungen getroffen, dass ein Mikrocode korrigiert, verbessert oder angepasst werden kann, um kostspielige Neuentwürfe im Sinne eines Mikrocode-Bugfix zu umgehen. In den Anfängen der Mikroprozessor-Ära war die Möglichkeit einer flexiblen Mikrocodeprogrammierung unumgänglich und gewünscht, um einzelne zu einem Baustein-Neuentwurf führende Implementierungsfehler zu verhindern. Mit den Fortschritten in derVerifikation und Integrierbarkeit digitaler Schaltungen schien der Aspekt der Umprogrammierbarkeit einige Zeit lang an Bedeutung zu verlieren.
Dennoch hat das Interesse an der Umprogrammierbarkeit im Laufe der letzten Jahre eine Wiederbelebung erfahren. So sind Mikroprozessoren der Firma Intel ab dem Modell Pentium Pro (P6) im Mikrocode umprogrammierbar. Der alsFDIV-Bug bekannt gewordene Rechenfehler auf einem Teil der Intel Pentium-P5-Prozessoren konnte hingegen nicht durch Mikrocodeprogrammierung behoben werden, sondern nur durch Prozessoraustausch. Mit der Mikrocodeprogrammierung ist die Möglichkeit gegeben, Rechensteuerwerke mittelsMikrocode-Updates für spezielle Betriebssysteme zu optimieren.
Das Vorgehen bei der Programmierung im Sinne der Zusammenstellung der Mikrobefehle zu einem Mikroprogramm wird im englischsprachigen Raum alsMicrocoding bezeichnet. Dabei werden Programmierwerkzeuge verwendet, die alsMikroassembler (engl.Microassembler) bezeichnet werden. Mit diesen Hilfsmitteln ist es möglich, auf übersichtliche Weise Mikrobefehlssequenzen zu verwalten und diese in Binärcode zu übersetzen. Die LernsoftwareMikrocodesimulatorMikroSim vermittelt auf didaktische Weise die Bedeutung und das praktische Vorgehen bei der Mikroprogrammierung einer virtuellen Recheneinheit.
Das Konzept wurde 1951 vonMaurice V. Wilkes eingeführt.[1]