Der Ursprung der Wortfirmware ist ein Mittelpunkt zwischen Hardware und Software - in Hardware eingebettete Software. Es bezieht sich auf Software, die in einem nichtflüchtigen Speicher eines Hardwaregeräts gespeichert ist. Beispiele sind EEPROM und Flash-Speicher, die in Hardwaregeräte eingebettet sind, wenn sie zum Speichern von Code verwendet werden, der vom Gerät selbst ausgeführt wird.
Bei einigen Hardwaretypen wird es immer häufiger, dass seine "Firmware" in Treibersoftware gespeichert und beim Booten / Initialisieren auf das Gerät geladen wird, anstatt es dauerhaft auf dem Gerät zu belassen. Es ist heutzutage keine große Sache, beispielsweise ein paar hundert KB Firmware-Code in einem auf dem Host-Betriebssystem geladenen Softwaretreiber zu speichern und ihn an das Gerät zu senden, während es vom Treiber initialisiert wird.
Dies wird häufig immer noch als "Firmware" bezeichnet, auch wenn abhängig von der von Ihnen akzeptierten Definition der Firmware die Firmware aus technischen Gründen möglicherweise nicht berücksichtigt wird, da sie nicht auf der Hardware resident ist (wenn Sie die Hardware abmontieren und sie in ein anderes System einfügen, dann ist dies der Fall) Diese Version von "Firmware" wird nicht beibehalten).
Der Mikrocode ist eine Teilmenge dieses letzteren Typs von "Firmware". Microcode ist kein Oberbegriff für alle "Firmware", die beim Booten auf ein Gerät geladen werden. Stattdessen ist dies spezifisch für CPUs, bei denen der Mikrocode im Wesentlichen die Übersetzungsebene zwischen Standard-CPU-Anweisungen höherer Ebene und den für diese CPU spezifischen Operationen niedrigerer Ebenen bildet. Es wird beim Booten vom BIOS auf die CPU geladen, kann aber später im Bootstadium durch das Betriebssystem ersetzt werden.
Durch ein Update des Mikrocodes kann das Verhalten der unteren Ebene einer CPU geändert werden, um bestimmte noch zu entdeckende Fehler zu umgehen, ohne die CPU-Hardware ersetzen zu müssen. Der Mikrocode enthält in der Regel die effizienteste Abbildung von Anweisungen auf höhere Ebenen für die beste Geschwindigkeit und Energieeffizienz. Wenn also ein Mikrocode geändert werden muss, um einen Fehler zu beheben, kann dies die Leistung beeinträchtigen.
Beachten Sie, dass Meltdown (die Sicherheitsanfälligkeit, die nur Intel-Chips betrifft) nicht durch Mikrocode-Updates allein behoben werden kann und Änderungen an den Kernbetriebssystemfunktionen erforderlich macht, was die Leistung weiter beeinträchtigen kann. Specter (die Sicherheitsanfälligkeit, die Intel-, AMD- und ARM-Chips betrifft) kann allein mit Mikrocode-Updates umgangen werden.
Um einige Ihrer spezifischen Fragen seit der Bearbeitung zu beantworten:
Ja, Microcode ist im Grunde eine Firmware, die auf dem Prozessor läuft. Der spezielle Begriff "Mikrocode" bezieht sich speziell auf die Firmware auf einem Prozessor, der den Bauplan für die Übersetzung von Standard-Maschinensprache in Prozessorbefehle auf niedriger Ebene enthält. Es ist also ein spezifischerer Begriff als Firmware.
Beachten Sie, dass, wie ich oben erörtere, diese nicht in der CPU gespeichert ist, während sie ausgeschaltet ist, sondern bei jedem Start geladen wird, sodass sie in gewisser Weise nicht wie herkömmliche Firmware funktioniert. Eine Menge Hardware macht dies jedoch jetzt und wird immer noch als "Firmware" bezeichnet, daher ist das Aufrufen der Firmware akzeptabel.
Ich glaube nicht, dass du falsch liegst. Firmware muss nicht in einer bestimmten Maschinensprache geschrieben sein und ihre Ausführung muss nicht auf bestimmte Weise ausgelöst werden. Bei einem bestimmten niedrigen Pegel sind alle Maschinencodes "Daten", die von einem Prozessor "gelesen" und auf eine bestimmte Weise interpretiert werden.
Der Begriff "Mikrocode" wird normalerweise nur für Haupt-CPUs und nicht für Grafikkarten oder andere Hardware verwendet, auch wenn diese Geräte möglicherweise auf dieselbe Weise mit Code geladen werden.