Zum Inhalt springen

„Mikroprogrammierung“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
K Tippfehler
Weblinks: Vorlagenfehler behoben
Markierungen: Mobile Bearbeitung Mobile Web-Bearbeitung Erweiterte mobile Bearbeitung
 
(19 dazwischenliegende Versionen von 13 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Als '''Mikroprogrammierung''' wird die Methode und das Vorgehen verstanden Schalt-, Rechen- und Steuerabläufe in einem [[Rechenwerk]], insbesondere einem integrierten Rechenwerk ([[Mikrocontroller]], [[Mikroprozessor]]) unterhalb der Ausführungsebene von [[Maschinenbefehl]]en 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 Begriff ''Mikrocode-Programmierung oder Mikrocodeprogrammierung'' die Erstellung des sogenannten [[Mikrocode]]s bei der Mikroprogrammierung betont, der die Binärform des Mikrobefehlssatzes darstellt.
Als '''Mikroprogrammierung''' wird die Methode und das Vorgehen verstanden, Schalt-, Rechen- und Steuerabläufe in einem [[Rechenwerk]], insbesondere einem integrierten Rechenwerk ([[Mikrocontroller]], [[Mikroprozessor]]), unterhalb der Ausführungsebene von [[Maschinenbefehl]]en 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 Begriff ''Mikrocode-Programmierung oder Mikrocodeprogrammierung'' die Erstellung des sogenannten [[Mikrocode]]s bei der Mikroprogrammierung betont, der die Binärform des Mikrobefehlssatzes darstellt.


Mit der Mikrocodeprogrammierbarkeit eines Rechenwerks ist das Vorhandensein eines dazu angepassten [[Mikroprogrammsteuerwerk]]s verbunden, welches durch die taktweise Abfolge der Mikrocodebefehlssequenz gesteuert wird. Die Möglichkeit einer flexibel programmierbaren Abfolgesteuerung von Mikrobefehlen setzt voraus, dass in jedem [[Mikrobefehl]] (engl. ''Micro Instruction'') selbst eine Berechnungsvorschrift zum Verweis, d. h. [[Adressierung (Datenverarbeitung)|Adressierung]], auf den nächsten anzusteuernden Mikrobefehl enthalten ist.
Mit der Mikrocodeprogrammierbarkeit eines Rechenwerks ist das Vorhandensein eines dazu angepassten [[Mikroprogrammsteuerwerk]]s verbunden, welches durch die taktweise Abfolge der Mikrocodebefehlssequenz gesteuert wird. Die Möglichkeit einer flexibel programmierbaren Abfolgesteuerung von Mikrobefehlen setzt voraus, dass in jedem [[Mikrobefehl]] (engl. ''Micro Instruction'') selbst eine Berechnungsvorschrift zum Verweis, d. h. [[Adressierung (Rechnerarchitektur)|Adressierung]], auf den nächsten anzusteuernden Mikrobefehl enthalten ist.


Üblicherweise ist ein Maschinensprachebefehlssatz eines [[Prozessor (Hardware)|Prozessors]] bei der Fertigung (z. B aus Kompatibilitätsgründen) vorgegeben und nicht veränderbar. Der den Maschinencode bildende Mikrobefehlssatz (kurz Mikrocode) ist in einem [[Festwertspeicher]] wie [[EPROM]] oder [[ROM]] inner- oder außerhalb des Rechenwerks untergebracht und wird ggf. bei der [[Initialisierung]] 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 der [[Verifikation]] und Integrierbarkeit digitaler Schaltungen schien der Aspekt der Umprogrammierbarkeit einige Zeit lang an Bedeutung zu verlieren.
Üblicherweise ist ein Maschinensprachebefehlssatz eines [[Prozessor]]s bei der Fertigung (z. B. aus Kompatibilitätsgründen) vorgegeben und nicht veränderbar. Der den Maschinencode bildende Mikrobefehlssatz (kurz Mikrocode) ist in einem [[Festwertspeicher]] wie [[EPROM]] oder [[ROM]] inner- oder außerhalb des Rechenwerks untergebracht und wird ggf. bei der [[Initialisierung]] 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 der [[Verifikation]] 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 als [[FDIV-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 mittels Mikrocode-[[Update]]s für spezielle Betriebssysteme zu optimieren.
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 als [[FDIV-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 mittels [[Mikrocode]]-[[Softwareaktualisierung|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 als ''Microcoding'' bezeichnet. Dabei werden Programmierwerkzeuge verwendet, die als Mikroassembler (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 Lernsoftware Mikrocodesimulator [[MikroSim]] vermittelt auf didaktische Weise die Bedeutung und das praktische Vorgehen bei der Mikroprogrammierung einer virtuellen Recheneinheit.
Das Vorgehen bei der Programmierung im Sinne der Zusammenstellung der Mikrobefehle zu einem Mikroprogramm wird im englischsprachigen Raum als ''Microcoding'' bezeichnet. Dabei werden Programmierwerkzeuge verwendet, die als [[Mikroassembler]] (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 Lernsoftware [[Mikrocodesimulator]] [[MikroSim]] vermittelt auf didaktische Weise die Bedeutung und das praktische Vorgehen bei der Mikroprogrammierung einer virtuellen Recheneinheit.

Das Konzept wurde 1951 von [[Maurice V. Wilkes]] eingeführt.<ref>Maurice V. Wilkes: ''The Best Way to Design an Automated Calculating Machine.'' Manchester University Computer Inaugural Conf., 1951, S.&nbsp;16–18; nachgedruckt in:<br />Maurice V. Wilkes: ''The Genesis of Microprogramming.'' IEEE Annals of the History of Computing, Band 8, 1986, S.&nbsp;116–126; weiter ausgeführt in:<br />Maurice V. Wilkes, J. B. Stringer: ''Microprogramming and the Design of the Control Circuits in an Electronic Digital Computer.'' Proceedings of the Cambridge Philosophical Society, Band 49, 1953, S.&nbsp;230–238.</ref>


== Literatur ==
== Literatur ==
*{{cite book | author= H.P. Gumm, M. Sommer | title=Einführung in die Informatik | publisher=Oldenbourg, 8. Auflage |year=2009 |isbn=978-3-486-58724-1}}
* {{cite book | author= H. P. Gumm, M. Sommer | title=Einführung in die Informatik | publisher=Oldenbourg, 8. Auflage |year=2009 |isbn=978-3-486-58724-1}}
*{{cite book | author= K. Wüst| title=Mikroprozessortechnik: Grundlagen, Architekturen und Programmierung von Mikroprozessoren, Mikrocontrollern und Signalprozessoren | publisher=Vieweg+Teubner Verlag, 3. Auflage |year=2008 |isbn=978-3-834-80461-7}}
* {{cite book | author= K. Wüst| title=Mikroprozessortechnik: Grundlagen, Architekturen und Programmierung von Mikroprozessoren, Mikrocontrollern und Signalprozessoren | publisher=Vieweg+Teubner Verlag, 3. Auflage |year=2008 |isbn=978-3-834-80461-7}}
*{{cite book | author= H. Bähring| title=Mikrorechner-Technik, Band 1, Mikroprozessoren und Digitale Signalprozessoren | publisher=Springer, 3. Auflage |year=2002 |isbn=3-540-41648-x}}
* {{cite book | author= Helmut Bähring| title=Mikrorechner-Technik, Band 1, Mikroprozessoren und Digitale Signalprozessoren | publisher=Springer, 3. Auflage |year=2002 |isbn=3-540-41648-x}}
*{{cite book | author= H. Bähring| title=Mikrorechner-Technik, Band 2, Busse, Speicher, Peripherie und Mikrocontroller| publisher=Springer, 3. Auflage |year=2002 |isbn=3-540-43693-6}}
* {{cite book | author= Helmut Bähring| title=Mikrorechner-Technik, Band 2, Busse, Speicher, Peripherie und Mikrocontroller| publisher=Springer, 3. Auflage |year=2002 |isbn=3-540-43693-6}}
*{{cite book | author= Bringschulte, Ungerer| title=Mikrocontroller und Mikroprozessoren| publisher=Springer |year=2002 |isbn=3-540-43095-4}}
* {{cite book | author= Bringschulte, Ungerer| title=Mikrocontroller und Mikroprozessoren| publisher=Springer |year=2002 |isbn=3-540-43095-4}}


== Weblinks ==
== Weblinks ==
Zeile 23: Zeile 25:
|title=A Brief History of Microprogramming|publisher=M. Smotherman |year=2010 |accessdate=2010-10-03}}
|title=A Brief History of Microprogramming|publisher=M. Smotherman |year=2010 |accessdate=2010-10-03}}
*{{cite web|url=http://research.microsoft.com/en-us/um/people/gbell/Computer_Structures_Principles_and_Examples/csp0167.htm
*{{cite web|url=http://research.microsoft.com/en-us/um/people/gbell/Computer_Structures_Principles_and_Examples/csp0167.htm
|title=Computer Structures: Principles and Examples, Part 2, REGIONS OF COMPUTER SPACE, Section 1, MICROPROGRAM-BASED PROCESSORS, Seite 151 ff. |publisher=McGraw-Hill Computer Science Series |accessdate=2010-10-03}}
|title=Computer Structures: Principles and Examples, Part 2, Regions Of Computer Space, Section 1, Microprogram-Based Processors, Seite 151 ff. |publisher=McGraw-Hill Computer Science Series |accessdate=2010-10-03}}
*{{cite web|url=http://www.intel.com/Assets/PDF/manual/253668.pdf |title=Intel(R) 64 and IA-32 Architectures Software Developer’s Manual, Volume 3A: System Programming Guide, Part 1, Chapter 9.11: "Microcode update facilities"|publisher=Intel Cooperation |date=December 2009 |accessdate=2010-10-03}}
*{{cite web|url=http://www.intel.com/Assets/PDF/manual/253668.pdf |title=Intel(R) 64 and IA-32 Architectures Software Developer’s Manual, Volume 3A: System Programming Guide, Part 1, Chapter 9.11: „Microcode update facilities“|publisher=Intel Cooperation |date=2009-12 |accessdate=2010-10-03}}
*{{cite web|url=http://urbanmyth.org/microcode/ |title=Intel Microcode Update Utility for Linux|accessdate=2010-10-03}}
*{{cite web|url=https://fedorahosted.org/microcode_ctl/# |title=Intel Microcode Update Utility|accessdate=2012-09-30}}
*{{cite web|url=http://support.microsoft.com/kb/936357 |title=A microcode reliability update is available that improves the reliability of systems that use Intel processors|Microsoft|accessdate=2010-10-03}}
*{{cite web|url=http://support.microsoft.com/kb/936357 |title=A microcode reliability update is available that improves the reliability of systems that use Intel processors|publisher= Microsoft|accessdate=2010-10-03}}
*{{cite web|url=http://www.intel.com/support/motherboards/server/sb/cs-021619.htm| title=BIOS Update required when Missing Microcode message is seen during POST |publisher=Intel Cooperation |accessdate=2010-10-03}}
*{{cite web|url=http://www.intel.com/support/motherboards/server/sb/cs-021619.htm| title=BIOS Update required when Missing Microcode message is seen during POST |publisher=Intel Cooperation |accessdate=2010-10-03}}


== Einzelnachweise ==
<references />

[[Kategorie:Systemsoftware]]
[[Kategorie:Rechnerarchitektur]]
[[Kategorie:Rechnerarchitektur]]
[[Kategorie:Firmware]]
[[Kategorie:Firmware]]
[[Kategorie:Assembler]]
[[Kategorie:Technische Informatik]]


[[en:Microprogramming]]
[[fr:Microprogrammation]]
[[fr:Microprogrammation]]
[[hr:Mikroprogramiranje]]
[[hr:Mikroprogramiranje]]

Aktuelle Version vom 13. Oktober 2023, 15:00 Uhr

Als Mikroprogrammierung wird die Methode und das Vorgehen verstanden, Schalt-, Rechen- und Steuerabläufe in einem Rechenwerk, insbesondere einem integrierten Rechenwerk (Mikrocontroller, Mikroprozessor), unterhalb der Ausführungsebene von Maschinenbefehlen 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 Begriff Mikrocode-Programmierung oder Mikrocodeprogrammierung die Erstellung des sogenannten Mikrocodes bei der Mikroprogrammierung betont, der die Binärform des Mikrobefehlssatzes darstellt.

Mit der Mikrocodeprogrammierbarkeit eines Rechenwerks ist das Vorhandensein eines dazu angepassten Mikroprogrammsteuerwerks verbunden, welches durch die taktweise Abfolge der Mikrocodebefehlssequenz gesteuert wird. Die Möglichkeit einer flexibel programmierbaren Abfolgesteuerung von Mikrobefehlen setzt voraus, dass in jedem Mikrobefehl (engl. Micro Instruction) selbst eine Berechnungsvorschrift zum Verweis, d. h. Adressierung, auf den nächsten anzusteuernden Mikrobefehl enthalten ist.

Üblicherweise ist ein Maschinensprachebefehlssatz eines Prozessors bei der Fertigung (z. B. aus Kompatibilitätsgründen) vorgegeben und nicht veränderbar. Der den Maschinencode bildende Mikrobefehlssatz (kurz Mikrocode) ist in einem Festwertspeicher wie EPROM oder ROM inner- oder außerhalb des Rechenwerks untergebracht und wird ggf. bei der Initialisierung 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 der Verifikation 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 als FDIV-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 mittels Mikrocode-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 als Microcoding bezeichnet. Dabei werden Programmierwerkzeuge verwendet, die als Mikroassembler (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 Lernsoftware Mikrocodesimulator MikroSim vermittelt auf didaktische Weise die Bedeutung und das praktische Vorgehen bei der Mikroprogrammierung einer virtuellen Recheneinheit.

Das Konzept wurde 1951 von Maurice V. Wilkes eingeführt.[1]

  • 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-8348-0461-7.
  • Helmut Bähring: Mikrorechner-Technik, Band 1, Mikroprozessoren und Digitale Signalprozessoren. Springer, 3. Auflage, 2002, ISBN 3-540-41648-X.
  • Helmut Bähring: Mikrorechner-Technik, Band 2, Busse, Speicher, Peripherie und Mikrocontroller. Springer, 3. Auflage, 2002, ISBN 3-540-43693-6.
  • Bringschulte, Ungerer: Mikrocontroller und Mikroprozessoren. Springer, 2002, ISBN 3-540-43095-4.

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. Maurice V. Wilkes: The Best Way to Design an Automated Calculating Machine. Manchester University Computer Inaugural Conf., 1951, S. 16–18; nachgedruckt in:
    Maurice V. Wilkes: The Genesis of Microprogramming. IEEE Annals of the History of Computing, Band 8, 1986, S. 116–126; weiter ausgeführt in:
    Maurice V. Wilkes, J. B. Stringer: Microprogramming and the Design of the Control Circuits in an Electronic Digital Computer. Proceedings of the Cambridge Philosophical Society, Band 49, 1953, S. 230–238.