Was genau ist Microcode und wie unterscheidet es sich von der Firmware?

7365
Evan Carroll

Was ist " Terminologie", was genau "Mikrocode" ist und wenn es aktualisiert werden kann, wie unterscheidet es sich von der Firmware?

Diese Frage ist kein Duplikat dieser Frage (soweit ich das beurteilen kann), die ich auch gefragt habe, um Mikrocode zu ändern. Hier möchte ich unbedingt wissen, wie man diese Begriffe richtig verwendet.

Aktualisieren

Ich habe eine Antwort ausgewählt, bin aber nicht besonders zufrieden damit. Ich habe mich sehr mit den Antworten beschäftigt, und ich finde viele dieser Antworten gleichermaßen unbefriedigend. Lasst mich euch meine zwei Frames präsentieren:

  1. "Der Prozessor-Mikrocode ähnelt der Prozessor-Firmware." Wenn ich dies mehr und mehr lese, nehme ich es so. "Microcode" ist in diesem Zusammenhang nur die Vermarktung von "Prozessor-Firmware". Bär mit mir, ..
  2. Oder ich liege falsch und ich weiß, dass es passiert! In diesem Fall brauche ich eine viel genauere Vorstellung davon, warum ich falsch liege. In diesen Antworten, die ich gelesen habe, um darauf hinzuweisen, dass ich falsch lag, habe ich Schwierigkeiten, sie zu verstehen.
    • "Execution vs. Data" Viele Antworten verwenden dieses Paradigma, aber für die CPU ist das für mich nicht sinnvoll. Einige Assert-Firmware wird ausgeführt, aber von was? Sind in der CPU Anweisungen oder Daten für das Programm?
    • Wenn die Firmware Software und Hardware überbrückt (lesen Sie: die Elektrotechnik der Götter), wie kann der Mikrocode diese Unterscheidung nicht auch zufriedenstellen.
    • "Dolmetschen" mit der Zeit macht dies sogar weniger Sinn. Was bedeutet es, "Hardwareanweisungen werden mit Microcode interpretiert". Wenn das wahr wäre, wäre etwas so performant, wenn es nicht interpretiert, sondern zu verschiedenen Hardwareanweisungen vorkompiliert und lediglich "ausgeführt" würde? Wie wird General MIDI nicht in demselben Licht interpretiert? Es ist eine Sprache, die von "MIDI Microcode" interpretiert wird und auf der Hardware läuft. Oder dumme Terminals, die Fernschreibanweisungen für die visuelle Anzeige interpretieren?
    • Trifft "Mikrocode" auf den Code zu, der auf Soundkarten und Grafikkarten (GPUs) ausgeführt wird ?
44
Ich bin kein Experte, aber ich würde sagen, dass Microcode Prozessor-Firmware ist. Ich stelle mir vor, dass alle Daten, wie Mikrocode ausgeführt wird, proprietär von Intel / AMD sind, aber ich kann mir vorstellen, wie es funktionieren würde. Sie verfügen über ein einfaches CPU-Set, das grundlegende Funktionen wie das Abrufen von Speicher- und Mathematikoperatoren umfasst. Dann haben Sie einen komplexen Befehlssatz (z. B. x86 / intel). Die CPU erhält den Befehl aus dem Speicher und wandelt den komplexen Befehl mithilfe des Mikrocodes in einfachere Befehle um. Ein Beispiel wäre die Multiplikation. Die meisten CPUs haben einen Multiplikationsbefehl, tatsächlich besteht das Multiplizieren jedoch aus mehreren Bitverschiebungen. Programmdude vor 6 Jahren 0
Der Begriff Microcode bezieht sich auf die Tatsache, dass er viele der „Code“ -Anweisungen der CPU verwendet. Sie teilt der CPU im Wesentlichen mit, wie Anweisungen und Funktionen emuliert werden sollen. Daher ist es der Name. Aus der Sicht eines Computerbesitzers handelt es sich um einen weiteren Satz von Code, der vom Hardwarehersteller ausgeliefert wird, sodass er alternativ als Firmware zusammengefasst werden kann. eckes vor 6 Jahren 0
IMO ist die beste einfache Antwort: "Jedes Mal, wenn ein Prozessor eine Anweisung ausführt, führt er tatsächlich ein Mikrocode-Programm aus." Was Ihnen als eine einzelne Prozessoranweisung erscheint, ist eine bestimmte Folge von Mikrocode-Anweisungen, ein "Mikrocode-Programm". Jede Anweisung hat ein eigenes Mikrocode-Programm. Die einzelnen Mikrocode-Anweisungen aktivieren / deaktivieren / usw. die verschiedenen internen Bits des Prozessors. Ethan Reesor vor 6 Jahren 0

12 Antworten auf die Frage

50
thomasrutter

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:

  1. 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.

  2. 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.

Ihr zweiter Satz ist falsch. Firmware enthält Software, die im ROM gespeichert ist. Es war einmal die meiste Firmware im ROM, bevor Alternativen erschwinglich wurden. Harry Johnston vor 6 Jahren 1
"Mikrocode" ist eindeutig spezifisch für eine CPU. Die Frage ist anders als konkret zu sein. Wenn Sie den Gültigkeitsbereich entfernen ("die CPU"), erhalten Sie ein fast direktes Anführungszeichen für "Übersetzungsebene zwischen Anweisungen auf höherer Ebene und den Operationen auf niedrigerer Ebene". Das ist so ziemlich * nur * die Definition von Firmware. Ist das nicht was alle Firmware macht? Es gibt viele Wörter, aber ich denke, die beschreibendste und knappe Beschreibung ist die obige: "Prozessor-Mikrocode ist der Prozessor-Firmware sehr ähnlich." Evan Carroll vor 6 Jahren 1
@Evan, die meisten Geräte erhalten ihre Anweisungen indirekt und werden von Code gesendet, der in der CPU ausgeführt wird. Nur die CPU verarbeitet direkt den vom Benutzer bereitgestellten Code. Beachten Sie auch, dass die meisten Geräte eine eingebettete CPU enthalten, auf der die Firmware ausgeführt wird, und dass die CPU möglicherweise einen eigenen Mikrocode besitzt. Die Unterscheidung kann nur für Hardwaredesigner und Kernel-Programmierer von Belang sein, ist aber keine willkürliche. Harry Johnston vor 6 Jahren 0
"Die meisten Geräte enthalten eine eingebettete CPU, auf der die Firmware ausgeführt wird, und diese CPU könnte einen eigenen Mikrocode haben", meine ich. Also ist der Code, der einen Midi-Stream auf einer Soundkarte verarbeitet, auch "Microcode"? Oder der Code, der Anzeigezeichen auf einem dummen Terminal zeichnet / darstellt? Evan Carroll vor 6 Jahren 0
Nein. Der Code, der auf der Soundkarte zum Verarbeiten eines MIDI-Streams ausgeführt wird, ist eine normale Firmware. Der Code, der * den * Code verarbeitet, der auf der Soundkarte zur Verarbeitung eines MIDI-Streams ausgeführt wird, ist Microcode. (In der Praxis bin ich nicht sicher, dass die eingebettete CPU auf etwas so Einfaches wie eine Soundkarte überhaupt Mikrocode benötigen würde, aber das ist nicht so wichtig.) Das Wichtigste ist, dass ein MIDI-Stream oder die Zeichen gesendet werden ein dummes Terminal, kein Code. Sie sind nur Daten. Harry Johnston vor 6 Jahren 0
Ich habe versucht, einige meiner Fragen oben zu formulieren, da in den Antworten viele allgemeine Threads enthalten sind, die ich nicht bekomme: https://security.stackexchange.com/q/176998/11447 Evan Carroll vor 6 Jahren 0
@EvanCarroll Ich habe dieser Antwort auf zusätzliche Fragen mehr hinzugefügt, obwohl ich nicht weiß, ob ich mich damit beschäftigen würde. thomasrutter vor 6 Jahren 0
Wie kann ein Mikrocode-Update Spectre beheben, ohne die Leistung zu beeinträchtigen? Das Löschen von indirekten Verzweigungsvorhersagepuffern bei Benutzer- / Kernelübergängen ist möglicherweise nicht zu schlecht für die Leistung, kann jedoch nicht gegen einen Angriff mit JIT-Javascript auf den darin ausgeführten Browserprozess verteidigt werden. Haben Sie an einen anderen Mechanismus der Mikroarchitektur gedacht? Peter Cordes vor 6 Jahren 0
Übrigens kann Meltdown mit einer reinen Softwareänderung verteidigt werden (verlassen Sie sich nicht auf das U / S-Bit in Seitentabellen, um die Verwendung des Benutzerraums zu verhindern). Das kostet Leistung. Ihre Formulierung impliziert, dass eine Kombination aus Mikrocode-Update + Softwareänderung erforderlich ist oder bessere Ergebnisse erzielen würde. Ich glaube nicht, dass das stimmt. Entweder Sie arbeiten in Software herum, oder Sie beheben es in HW, was möglich sein sollte [ohne Leistungskosten] (https://security.stackexchange.com/questions/177100/why-are-amd-processors-not-less- verwundbar bis zum Zusammenbruch-und-Gespenst / 177101 (177101). zB Maskenladeergebnisse mit Berechtigungen. Peter Cordes vor 6 Jahren 0
Ich wollte nicht implizieren, dass eine Kombination aus Mikrocode und Software-Fix eine bessere Leistung erbringen würde. Nur dass Meltdown nicht nur durch eine Änderung des Mikrocodes behoben werden kann, erfordert eine Software-Korrektur, die sich wahrscheinlich auf die Leistung auswirkt. thomasrutter vor 6 Jahren 0
* Bei einigen Hardwaretypen wird es immer häufiger, dass seine "Firmware" in der Treibersoftware gespeichert und beim Booten / Initialisieren auf das Gerät geladen wird * - dies wurde in den späten 70ern auf der IBM S / 38 und ich durchgeführt Ich denke, es wurde vorher bei einigen S / 360-370-Modellen gemacht. Daniel R Hicks vor 6 Jahren 0
@HarryJohnston Ich stimme voll und ganz zu, dass es einmal im ROM gespeichert worden wäre, aber ich erinnere mich nicht, dass die Leute damals den Begriff "Firmware" verwendet haben, sie nannten ihn "ROM". Mein Eindruck war, dass die Leute den Begriff "Firmware" in jüngerer Zeit umbenannt haben (es war ein Begriff, der bereits vorkam, jedoch nicht häufig verwendet wurde). Die "ROM" in Sachen wie EPROM und EEPROM waren lange Zeit Widersprüche. thomasrutter vor 6 Jahren 0
23
SYS_V

https://wiki.debian.org/Microcode

CPU-Mikrocode

Der Prozessor-Mikrocode entspricht der Prozessor-Firmware. Der Kernel kann die Firmware des Prozessors aktualisieren, ohne dass er über ein BIOS-Update aktualisiert werden muss. Ein Microcode-Update wird in einem flüchtigen Speicher gehalten, daher aktualisiert das BIOS / UEFI oder der Kernel den Microcode während jedes Startvorgangs.

Prozessoren von Intel und AMD benötigen möglicherweise Aktualisierungen ihres Mikrocodes, um ordnungsgemäß zu funktionieren. Diese Updates beheben Fehler / Errata, die von falscher Verarbeitung über Code- und Datenbeschädigung bis hin zu Systemstörungen führen können.

Das BIOS (oder UEFI) aktualisiert den CPU-Mikrocode während des Startvorgangs. In den meisten Fällen gibt der Hersteller des Motherboards jedoch keine häufigen BIOS- / UEFI-Aktualisierungen aus oder der Benutzer installiert solche Aktualisierungen nicht. Aus diesen Gründen läuft der Systemprozessor wahrscheinlich auf einer großen Anzahl von Systemen mit veraltetem Mikrocode.

Beispiele:

https://www.win-raid.com/t3355f47-Intel-AMD-amp-VIA-CPU-Microcode-Repositories.html

Das ist cool, nachdem ich erfahren habe, dass es in die CPU geschrieben werden könnte. Ich dachte nur, es sei zu diesem Zeitpunkt nur "Firmware". Ich denke, es ist so einfach. Scheint wie ein unbrauchbarer Begriff. Evan Carroll vor 6 Jahren 1
Es ist nicht so einfach: Microcode ist "eine Technik, die einen Interpreter zwischen der Hardware- und der Architekturebene eines Computers erzwingt". Somit ist der Mikrocode eine Schicht von Anweisungen auf Hardware-Ebene, die Maschinencode-Anweisungen auf höherer Ebene oder interne Zustandsmaschinen-Sequenzierung in vielen digitalen Verarbeitungselementen implementieren. Quelle: https://en.wikipedia.org/wiki/Microcode vor 6 Jahren 9
Warten Sie also ... ein "Boot" ist nur eine bestimmte Art von "Fahrzeug"? Was für ein nutzloses Wort! :-) Harry Johnston vor 6 Jahren 17
@HarryJohnston Nun, ich halte es für ziemlich nützlich, "ein Boot" in bestimmten Zusammenhängen von anderen Fahrzeugtypen zu unterscheiden ... und "Mikrocode" ist eine sehr spezielle Art von "etwas", das in vielen modernen CPUs vorhanden ist ... ( daher ist es eher wünschenswert, einen Begriff dafür zu haben). Radovan Garabík vor 6 Jahren 4
@ RadovanGarabík: Das ist genau Harrys Punkt, der mit Sarkasmus gemacht wurde. Peter Cordes vor 6 Jahren 4
@SYS_V: Beachten Sie, dass "Microcode-Updates" nicht auf das Ändern des Inhalts des Microcode-Sequenzers beschränkt sind (z. B. die Uops, zu denen ein komplexer Befehl wie "syscall" decodiert). Sie können auch den Schleifenpuffer deaktivieren (bei Skylake, um den SKL150-Fehler zu beheben). CPU-Entwickler haben Steuerelemente in ihre CPUs eingebaut, um das Deaktivieren von Funktionen zu ermöglichen, ohne die die CPU arbeiten kann, falls Fehler später entdeckt werden. Einige Dinge werden nur in die Hardware eingebettet, daher ist ein anderes Verhalten nicht möglich, außer das Deaktivieren. (zB wie TSX Transaktionsspeicher in Haswell). Peter Cordes vor 6 Jahren 2
Ein Mikrocode-Update kann also mehr als nur die Art und Weise ändern, wie [mikrocodierte x86-Anweisungen] (https://stackoverflow.com/questions/40366643/what-is-a-microcoded-instruction) wie `rep movsd` oder` idiv` dekodieren. Peter Cordes vor 6 Jahren 1
@PeterCordes Diese Informationen sind viel interessanter als mein schneller Kopier- / Einfügejob. Soll ich Ihre Anmerkungen in die Antwort aufnehmen oder bieten Sie Ihre eigenen an? Wenn Sie eine Antwort aufschreiben, werde ich sie bestätigen vor 6 Jahren 1
@PeterCordes Ich sehe ... na ja, mein Sarkasmus-Detektor muss ausgeschaltet sein :-) Radovan Garabík vor 6 Jahren 0
Ich verstehe es nicht Wenn "Der Kernel ist in der Lage, die Firmware des Prozessors zu aktualisieren, ohne dass er über ein BIOS-Update aktualisiert werden muss", dann bedeutet die Tatsache, dass "der Motherboard-Hersteller keine häufigen BIOS- / UEFI-Updates" gibt, dass "der Systemprozessor ist." wahrscheinlich mit veraltetem Mikrocode auf einer großen Anzahl von Systemen laufen "? Warum patcht der Kernel nicht nur den Mikrocode? Warum sollten Sie sich auf das BIOS verlassen, wenn das BIOS nie aktualisiert wird und es eine häufigere aktualisierte Alternative gibt? Ajedi32 vor 6 Jahren 4
@ Ajedi32, das wäre eine gute Frage. Ich bin nicht sicher, ob Windows (z. B.) Mikrocode-Updates für die CPU bereitstellt - ich glaube nicht, dass dies der Fall ist, aber ich bin nicht sicher, warum nicht. Mögliche Kompatibilitätsprobleme mit dem Motherboard? Harry Johnston vor 6 Jahren 1
Ich habe ein paar klärende Fragen überarbeitet, wähle aber immer noch den ersten Satz, den ich unter meinem derzeitigen Rahmen zufriedenstellend finde. https://security.stackexchange.com/q/176998/11447 Evan Carroll vor 6 Jahren 0
@ Harry Johnston Tatsächlich enthält Windows Mikrocode-Updates, die über Windows Update verteilt werden. Die eigentliche Datei heißt Mcupdate_genuineintel.dll für Intel und mcupdate_AuthenticAMD.dll für AMD. AndrejaKo vor 6 Jahren 2
@AndrejaKo, gut zu wissen; Aber es bleibt immer noch die Frage, warum der [Mikrocode für die jüngsten spekulativen Ausführungsanfälligkeiten aktualisiert wird] (https://support.microsoft.com/de-de/help/4073119/protect-against-speculative-execution-side-channel- Schwachstellen werden nicht auf diese Weise verteilt. (Und allgemeiner gesagt, warum sind diese Dateien in meiner Windows Server 2016-Box 18 Monate alt. Scheint mir, dass sie nur mit jeder neuen Betriebssystemversion aktualisiert werden?) Harry Johnston vor 6 Jahren 0
@ Harry Johnston Nun, ich bin mir nicht sicher. Ich weiß, dass der neueste Mikrocode für Intel vom [8. Januar] (https://downloadcenter.intel.com/download/27431/Linux-Processor-Microcode-Data-File?v=t) ist. Das ist also ziemlich neu. GNU / Linux-Benutzer können diese verwenden, aber ich bin mir nicht sicher, warum Microsoft keine neueren Updates verbreitet. AndrejaKo vor 6 Jahren 0
6

Nun, Intel "Mikrocode-Aktualisierungen" sind in der Tat "Firmware-Aktualisierungen" in dem Sinne, dass sie viel mehr als nur die Mikrocode-Übersetzungseinheit des Prozessors aktualisieren.

Diese vereinheitlichten Prozessorpaket-Updates, die wir "Mikrocode-Updates" für Intel nennen, aktualisieren auch andere Mikrocontroller auf dem Chip (z. B. die PMU und den Energieverwaltungskern) sowie mehrere Parametertabellen für verschiedene Subsysteme des Prozessors. Sie sind ziemlich komplex.

Diese Informationen sind in mehreren Intel-Patenten verfügbar, die sich auf Mikrocode- und Mikrocode-Updates beziehen.

4
Michael Kay

Ich denke, der Begriff "Mikrocode" bezieht sich in erster Linie auf die Funktionsweise des Codes (er führt Anweisungen auf niedriger Ebene mit sogar Anweisungen auf niedrigerer Ebene aus), während sich der Begriff "Firmware" hauptsächlich darauf bezieht, wie er gespeichert und verwaltet wird (weniger leicht als Software zu aktualisieren, leichter zu aktualisieren als Hardware). In diesem Sinne ist es eher der Unterschied zwischen einer "Anwendung" und einer "JAR-Datei" - das gleiche Programm kann beides sein, aber Sie betrachten es aus zwei verschiedenen Blickwinkeln.

Übrigens, die Idee des Mikrocodes geht 1951 auf Maurice Wilkes zurück, Jahrzehnte bevor Computerprozessoren in Silizium eingebettet wurden.

3
Daniel R Hicks

"Mikrocode" war der ursprüngliche Begriff und bezog sich auf Anweisungen, die zur Implementierung eines Interpreters für den "öffentlichen" Befehlssatz eines Prozessors verwendet wurden.

Im Laufe der Zeit, mit vielen Abweichungen bei den Implementierungsplänen, wurde die Unterscheidung, so wie sie war, ungenauer. Zuerst gab es einen horizontalen gegenüber einem vertikalen Mikrocode, dann verschiedene Schemata zum Schreiben von "Mikrocode" (um beispielsweise die E / A-Anweisungen zu implementieren) in den "Haupt" -Prozessoranweisungssatz. Dann bestand die Notwendigkeit, zwischen Code, der leicht über gewöhnliche Programm "run" -Operationen geladen werden konnte, und Code (z. B. für BIOS), der im ROM oder einem anderen geschützten und relativ unveränderlichen Speicher gespeichert wurde, zu unterscheiden. Daher wurde der Begriff "Firmware" erfunden, um auf diese Anweisungen Bezug zu nehmen, die im Speicher irgendwie persistenter gemacht wurden (und für den Benutzer weniger zugänglich sind).

Seit diesen ersten Unterscheidungen haben sich die Dinge jedoch oft verwandelt und verdreht, und die Begriffe sind nur noch innerhalb eines bestimmten Prozessors und einer bestimmten Betriebssystemumgebung mit einer beliebigen Genauigkeit definierbar.

+1, der Schlüssel hier ist, dass der Begriff "Mikrocode" viele Bedeutungen hat, und ich denke, das OP möchte wirklich etwas über "Mikrocode-Updates" wissen, nicht die anderen Bedeutungen. Peter Cordes vor 6 Jahren 0
2
David Waters

Firmware bezieht sich normalerweise auf Code für Geräte, die eine CPU enthalten, nicht die CPU selbst, z. B. die Firmware eines Android-Telefons.

Der Mikrocode ist eine Übersetzungsschicht zwischen komplexen Befehlssätzen (z. B. 486, 686, AMD-64 usw.) und den untergeordneten Anweisungen, für die Chiphersteller Silizium entwerfen. Eine Anzahl von Befehlen im CPU-Befehlssatz wird also nicht in Silizium implementiert, sondern über Mikrocode in mehrere Anweisungen umgesetzt, die in Silizium implementiert sind.

Gilt das nicht für alle Firmware. Anweisungen ABIs, die in Silicon implementiert werden könnten, aber nicht durch Software aktualisierbar sind oder sind. Evan Carroll vor 6 Jahren 0
"Mikrocode-Updates" von Intel [kann viel mehr als nur die Decodierung von Mikrocodieranweisungen ändern] (https://security.stackexchange.com/questions/176998/what-exlyly-is-microcode-and-how-does-it-differ- from-firmware / 177002? noredirect = 1 # comment341520_177002). Sie können beispielsweise den Schleifenpuffer deaktivieren (in Skylake, um das SKL150-Erratum zu beheben), da die CPU, falls möglich, dafür ausgelegt ist, falls Hardwarefehler entdeckt werden. Peter Cordes vor 6 Jahren 1
2
Harry Johnston

[Anmerkung: Diese Antwort ist speziell für die letzte Bearbeitung gedacht und trägt nicht zu den bereits veröffentlichten Sound-Antworten bei.]

Um es zu wiederholen: Mikrocode (zumindest in erster Näherung) ist eine bestimmte Art von Firmware.

"Microcode" ist in diesem Zusammenhang nur die Vermarktung von "Prozessor-Firmware".

Nun, es ist kein Marketing. Marketing hätte es XBoost Pro (TM) oder so genannt. Es ist eher ein technischer Begriff. Wenn Sie CPUs entwerfen, ist die Unterscheidung zwischen Mikrocode und der anderen Firmware der CPU (und der für andere Geräte typischen Firmware) für Sie wichtig. Wenn nicht, ist es wahrscheinlich nicht so.

Wenn Sie Motherboards entwerfen oder Betriebssysteme schreiben, verwenden Sie wahrscheinlich "Microcode-Update" als Abkürzung für das unhandlichere und weniger vertraute "CPU-Firmware-Update". Die meisten CPU-Firmware-Updates betreffen in erster Linie den Mikrocode. Sie kennen wahrscheinlich den Unterschied, aber Sie brauchen sich nicht darum zu kümmern .

Der Endbenutzer muss den Unterschied nicht kennen oder sich darum kümmern, und in einer idealen Welt würde er das Wort "Mikrocode" überhaupt nicht hören.

Ich schätze, es ist Ihnen in der Presseberichterstattung über die jüngsten spekulativen Hinrichtungsschwachstellen aufgefallen, obwohl Sie dies möglicherweise auch zuvor in einem Kontext gehört haben, in dem deutlich wurde, dass Sie sich nicht darum kümmern mussten. Diese Schwachstellen wurden früher als geplant freigegeben, was dazu geführt haben könnte, dass die Berichterstattung der Presse weniger kuratiert wurde als es sonst der Fall gewesen wäre. Aus Sicht des Endbenutzers müssen Sie BIOS-Aktualisierungen, Betriebssystemaktualisierungen und in einigen Fällen Anwendungsaktualisierungen installieren. Sie müssen weder wissen noch sich darum kümmern, ob einer von ihnen einen neuen Mikrocode enthält.


Selbst wenn Sie sich bewusst sind, dass Sie wahrscheinlich nicht wissen oder sich darum kümmern müssen, könnten Sie dennoch aus reiner Neugier interessiert sein: Wie können Sie Mikrocode von anderen Firmware unterscheiden?

Nun, das erste, was zu erkennen ist, ist, dass es nicht notwendigerweise eine einzige feste Definition gibt, sondern eher eine Situation von Bleggs und Rubes . Dennoch gibt es einige Dinge, die wir zum Mikrocode sagen können:

  • Mikrocode läuft im Allgemeinen in einer CPU und nicht in einer CPU. Das ist die übergeordnete Ansicht.

  • Die Architektur des Mikrocodes unterscheidet sich in der Regel erheblich von der Architektur gewöhnlichen Codes, einschließlich gewöhnlicher Firmware. Es ist wahrscheinlich sehr parallel und wird viel näher an der Hardware implementiert. Einige der vorhandenen Antworten (einschließlich Ihrer eigenen Antwort) erörtern dies, obwohl beachtet werden muss, dass die Details je nach CPU-Design variieren können.

  • Obwohl Hardware häufig nur für die vom Hersteller bereitgestellte Firmware ausgelegt ist, ist es nicht ungewöhnlich, dass Firmware von Drittanbietern verwendet wird - die Garantie erlischt jedoch wahrscheinlich! Der Mikrocode von Drittanbietern ist viel seltener, obwohl ich glaube, dass in der Antike (ich meine, wenn eine CPU etwa die Größe einer Brotdose hat) einige Endbenutzer den Mikrocode in ihren CPUs ändern würden. Soweit mir bekannt ist, ist dies bei den in PCs verwendeten CPUs nicht möglich.

  • Mikrocode übersetzt typischerweise eine öffentliche Befehlssatzarchitektur oder hilft bei deren Implementierung, dh sie führt den Maschinencode aus, den der Betriebssystem-Designer und Anwendungsprogrammierer verwenden. Mehr dazu im nächsten Abschnitt.


"Execution vs. Data" Viele Antworten nutzen dieses Paradigma

Ich fürchte auf verwirrende Weise, aber ich werde auf meinen eigenen Kommentar eingehen. Dieser Abschnitt dient auch zur Erweiterung des letzten Aufzählungspunkts. Das Ziel ist hier zu versuchen zu unterscheiden zwischen der Arbeit, die eine CPU (erreicht durch eine Kombination aus Hardware und Mikrocode) und der Arbeit eines typischen Geräts (durch eine Kombination aus Hardware und Firmware) erledigt. Ich werde eine SATA-Festplatte auswählen.

Das SATA-Laufwerk folgt Anweisungen vom Computer, die den Zeilen "Lesen der Daten aus dem Sektor 5.123" und "Schreiben dieser Daten in den Sektor 1.321" folgen. Die Firmware des Laufwerks ist dafür verantwortlich, dass die Hardware dies ermöglicht, und es ist normalerweise ein gewöhnlicher Code, der auf einer eingebetteten CPU läuft. Die Anweisungen des Laufwerks werden nacheinander angezeigt, obwohl sie möglicherweise nicht in der Reihenfolge verarbeitet werden, in der sie ankommen. Diese Anweisungen sind kein Programm, sie werden von einem Programm gesendet, das auf der Haupt-CPU ausgeführt wird. Insbesondere gibt es keinen Steuerfluss, dh keine Anweisung, dem SATA-Laufwerk mitzuteilen, welche Anweisungen als nächstes ausgeführt werden sollen.

Die CPU ist für den Computer verantwortlich. Nach Abschluss der Initialisierung werden die vom Motherboard bereitgestellten Anweisungen ("Maschinencode") (das BIOS, eine andere Art von Firmware) ausgeführt, die ihn anweisen, den vom Betriebssystem bereitgestellten Maschinencode auszuführen, der ihn dazu veranlasst, den bereitgestellten Maschinencode auszuführen von Anwendungsanbietern. Die CPU selbst ruft den Maschinencode aus dem EEPROM (im Fall des BIOS) oder dem RAM (im Fall des Betriebssystems und der Anwendungen) ab. Insbesondere hat der Maschinencode einen Steuerfluss: Der Maschinencode teilt der CPU mit, welchen Maschinencode als nächstes auszuführen ist. Sie können wiederholt denselben Maschinencode durchlaufen, Sie können verschiedene Codebits ausführen, abhängig von den Daten, an denen der Code arbeitet. Die Anweisungen in einer Geräteschnittstellensprache wie SATA-Code können eine begrenzte Anzahl einfacher Aufgaben ausführen, Maschinencode dagegen tunalles . (Siehe auch Turing-Vollständigkeit .)

Wir könnten diesen letzten Aufzählungspunkt wie folgt umschreiben: Microcode implementiert normalerweise eine Turing Complete-Sprache; gewöhnliche Firmware funktioniert normalerweise nicht.


Was bedeutet es, "Hardwareanweisungen werden mit Mikrocode interpretiert".

Wahr, aber wahrscheinlich verwirrend; Der wichtige Punkt ist die Unterscheidung zwischen Maschinencode, der einen Steuerfluss hat und Turing Complete ist, und den Anweisungen, die von einer Geräteschnittstelle wie SATA definiert werden, was nicht und nicht der Fall ist.


Trifft "Mikrocode" auf den Code zu, der auf Soundkarten ausgeführt wird?

Nein, Soundkarten erhalten Anweisungen, nicht Code, genau wie SATA-Laufwerke. Die Anweisungen könnten wie "play a sharp" sein oder "diese Daten als Wellenform interpretieren und abspielen". Immer noch sehr einfach.

und Grafikkarten (GPUs)?

Alte Grafikkarten (solche ohne GPUs) sind mit SATA-Laufwerken identisch. Die Anweisungen sind wie "Setzen Sie dieses Pixel auf diese Farbe" oder "Schreiben Sie ein A an diese Position".

... GPUs sind kompliziert und sitzen irgendwo zwischen den beiden Welten, die ich oben beschrieben habe. Es ist wahrscheinlich am einfachsten, sie als spezialisierten Computer zu betrachten, der im Hauptcomputer sitzt und über eigene CPUs verfügt. Es ist wahr, dass Geräte wie SATA-Laufwerke auch über eingebettete CPUs verfügen, der Unterschied besteht jedoch darin, dass die eingebettete CPU in einem SATA-Laufwerk nur den vom Laufwerkhersteller bereitgestellten Code ausführt, wohingegen GPUs auch den vom Betriebssystem und / oder Anwendungsanbieter bereitgestellten Code ausführen. Dies ist wirklich eine ganz andere Frage.


TL; DR: Microcode ist eine bestimmte Art von Firmware, die der Hardware bei der Implementierung eines Turing Complete-Befehlssatzes hilft.

1

Mikrocode ( "Steuerspeicher" ) sind Daten, die sich in einem flüchtigen oder nichtflüchtigen Speicher befinden - im Allgemeinen in einem eher kleinen, aber sehr breiten Speicher, dessen Datenausgangssignale mit den Steuersignaleingängen von parallelen Hardware-Funktionseinheiten, Zufallssteuerlogik usw. verbunden sind Die Adresseneingaben des Mikrocodespeichers werden von einer Zustandsmaschine geliefert, die jeweils ein Wort des Speichers ("Mikroprogrammbefehl") schrittweise durchläuft, um die Steuersignale eines oder mehrerer Hardwareblöcke effektiv zu sequenzieren . Dies führt zu einer Zeitmultiplexierung der Hardware und ermöglicht die Implementierung komplexer Operationen mit einer wesentlich geringeren Zufallslogik.

In modernen Mikroprozessoren kann es eine Hierarchie von Mikrocode / Sequenziereinheiten geben, die erforderlich sind, um die physische Silizium-Mikroarchitektur zu einer allgemeineren Architekturfamilie mit einer gemeinsamen "Maschinencode" -Schnittstelle zu abstrahieren. Zum Beispiel kann es mehrere Mikrocode- / Sequenzierungsschichten geben, um Befehlsdecodierer und Gleitkommaeinheiten zu implementieren.

Firmware im traditionellen Sinn ist jede Software / Daten, die sich in einem nichtflüchtigen Speicher befindet, von der erwartet wird, dass sie selten oder nie geändert wird. Dies steht im direkten Gegensatz zu einer Software, die in einem Systemspeicher gespeichert oder geschrieben wird und von diesem ausgeführt wird, der sich ständig ändert. Mikrocode bezieht sich speziell auf Daten, die ein Mikroprogramm darstellen, um die Steuerung der Hardware zu steuern.

Mikrocode kann in Firmware implementiert sein / Firmware kann Mikrocode enthalten, sie sind jedoch nicht identisch.

Moderne x86-CPUs sind viel fester als Sie beschreiben. es klingt, als würden Sie einen nicht-pipelined 386 beschreiben, keinen Haswell / Skylake. Intels "Microcode-Updates" können viel mehr als nur die Dekodierung von Mikrocode-Anweisungen ändern] (https://security.stackexchange.com/questions/176998/what-exlyly-is-microcode-and-how-does-it-differ- from-firmware / 177002? noredirect = 1 # comment341520_177002). Sie können beispielsweise den Schleifenpuffer deaktivieren (in Skylake, um das SKL150-Erratum zu beheben), da die CPU, falls möglich, dafür ausgelegt ist, falls Hardwarefehler entdeckt werden. Peter Cordes vor 6 Jahren 1
@PeterCordes 1) Die x86-Architektur ist für die Vorstellung des Mikrocode-Konzepts irrelevant. 2) Wenn Sie meine Antwort verstanden hätten, wären wir uns einig, dass sie Steuersignale steuert, wie Sie es anspielen vor 6 Jahren 0
Nein, Intel uops steuern nicht wirklich Signale. Sie programmieren die Logikeinheiten nicht direkt wie in einer klassischen MIPS-Pipeline. Uops werden vom Out-of-Order-Scheduler gelesen, um herauszufinden, welche Uops von den anderen Uops abhängig sind. Dies ist ein sehr anderes internes Modell als bei einem 6502, bei dem die mehreren Schritte zum Ausführen eines einzelnen Befehls aus einem Decodierungs-ROM gelesen werden. Was Sie beschreiben, ist eine historische Bedeutung des Begriffs Mikrocode, aber darum geht es nicht bei "Mikrocode-Updates" für moderne CPUs. Peter Cordes vor 6 Jahren 1
Wo habe ich (oder die Frage dazu) Intel- oder x86-Mikrooperationen erwähnt (die NICHT mit einem "Mikroprogramm" in einem Kontrollspeicher identisch sind)? Wörtlich ist alles, was von einem Steuerspeicher bereitgestellt wird, ein Steuersignal, unabhängig davon, ob das Signal sequenziert oder statisch, logisch oder ein Draht ist oder nicht. Was ich beschreibe, ist die wörtliche Definition von Mikrocode, "Mikrocode-Updates". Sie hängen mit dem Sequenzierungsaspekt meiner Antwort auf, weil viele der besagten Signale in einem Haswell statisch sein werden. Für das Protokoll sind viele * sequenziert, die Sequenzierung schließt sich absolut nicht mit Pipelining oder OoOE aus. vor 6 Jahren 0
Ok, das ist fair. Ich dachte, die Frage war nach Mikrocode-Updates für moderne CPUs gefragt (und ich denke immer noch, dass dies der Kontext ist, den das OP im Sinn hatte). Aber wie gesagt, es ist eigentlich ziemlich generisch. Mein Punkt ist jedoch, dass Mikrocodeaktualisierungen nicht darauf beschränkt sind, die Dekodierung von Anweisungen zu ändern: Es handelt sich nicht nur um den Inhalt des Mikrocode-ROMs. Und was noch wichtiger ist, die Dekodierung der häufigsten Befehle ist bei den meisten modernen CPUs fest mit den Dekodern verbunden und kann mit einem Mikrocode-Update nicht geändert werden. Peter Cordes vor 6 Jahren 0
Sie beantworten also die Frage [Was ist eine Mikrocodierungsanweisung "(https://stackoverflow.com/questions/40366643/what-is-a-microcoded-instruction), aber ein" Mikrocode-Update "für eine CPU hat nicht die gleiche technische Bedeutung des Wortes "Mikrocode". Dies ist ein wichtiger Punkt, der explizit gemacht werden sollte, da er der Verwirrung des OP zugrunde liegt, denke ich. Peter Cordes vor 6 Jahren 1
Ich habe den Unterschied zwischen Mikrocode und Firmware hinsichtlich der Terminologie beantwortet. Während bei modernen Mikroprozessoreinrichtungen ** viele * * programmierbare * Steuerspeicher zum Zweck von Errata gewartet werden müssen, hat der Mikrocode selbst eine breitere Definition, nämlich "den Zustandsspeicher in einem [Moore FSM] (https: //de.wikipedia). org / wiki / Moore_machine) ". Dies können große Speicher, große Speicher oder einzelne Registerbits sein. Der wichtige Teil ist, dass der Mikrocode Daten ist, die die Hardware steuern. vor 6 Jahren 0
0
LawrenceC

Firmware ist ein ausführbarer Code, der in einem ROM oder einem anderen nichtflüchtigen Speicher abgelegt wird.

Der ursprüngliche und hauptsächliche Zweck der Firmware besteht darin, beim Start einer CPU dabei zu sein, sodass der Code ausgeführt werden muss, um das System zu starten oder zu starten, zu dem das System gehört, zu dem die CPU gehört. Im Falle von PCs wird Firmware auch zur Bereitstellung von Diensten für das laufende Betriebssystem verwendet und enthält auch Code für die eingebetteten Controller, die die Lüfter, die Stromversorgung und einige andere Dinge steuern, sowie Code für die ME / PSP, die im Hintergrund ausgeführt wird .

Peripheriegeräte, die Firmware benötigen, wie Festplatten, USB-Geräte usw., verfügen über eine eingebettete CPU.


Mikrocode ist kein ausführbarer Code, sondern ein Code, der von den internen Einrichtungen eines Geräts verwendet wird.

Es wird mit einer WRMSR-Anweisung in Intel- oder AMD-CPUs geladen. Beim Laden der Firmware in ein Gerät muss ein ROM- oder Flash-Medium programmiert werden oder es muss ein kleines Ladeprogramm vorhanden sein, um die Firmware zu akzeptieren.

Firmware- und Mikrocode-Updates befinden sich in einer ähnlichen Kategorie - Dinge, die Sie tun müssen, um die Hardware zum Laufen zu bringen, und sie müssen von Zeit zu Zeit aktualisiert werden - aber es handelt sich um sehr unterschiedliche Dinge.

Komplexe Anweisungen in vielen CPUs werden nicht direkt in der Hardware verdrahtet, sondern von einer kleineren CPU-ähnlichen Einrichtung in der Haupt-CPU "ausgeführt". Der Mikrocode steuert diese Vorgänge. Dies geht mindestens auf das Motorola 68000 zurück, das einen "MicroROM" enthielt, der Mikrocode enthielt.

Niemand außer Intel- oder AMD-Prozessoren weiß, was der Mikrocode wirklich steuert oder tut, da er keine Details freigibt. Es gibt Versuche, es zu hacken. Referenz .

In der Praxis werden Mikrocode-Updates im Wesentlichen dazu verwendet, Anweisungen zu deaktivieren, die Probleme bei bekannten Modellen / Steppings von CPUs verursachen, und die neuesten CPUs von Intel erfordern häufig mindestens ein Mikrocode-Update, bevor sie zuverlässig funktionieren.


Wenn Sie etwas über das 6502-PLA-Decodierungs-ROM lesen, können Sie sich einen Überblick darüber verschaffen, was ein CPU-Mikrocode tatsächlich tun / tun könnte. Der 6502 ist eine alte 8-Bit-CPU, deren Anweisungen von einer internen PLA sequenziert / gesteuert werden. Die PLA würde grundsätzlich sagen, welche Teile des Chips an jedem Schritt jedes Befehls beteiligt waren (6502 Befehle reichen von 2 bis 7 Zyklen). Dies ist weit, weit vor Dingen wie Caching, Superskalararchitektur, Zweigvorhersage usw. Nicht sicher, ob Mikrocode auf modernen CPUs so etwas wie PLA steuern würde.

"Mikrocode-Updates" von Intel [kann viel mehr als nur die Decodierung von Mikrocodieranweisungen ändern] (https://security.stackexchange.com/questions/176998/what-exlyly-is-microcode-and-how-does-it-differ- from-firmware / 177002? noredirect = 1 # comment341520_177002). Sie können beispielsweise den Schleifenpuffer deaktivieren (in Skylake, um das SKL150-Erratum zu beheben), da die CPU, falls möglich, dafür ausgelegt ist, falls Hardwarefehler entdeckt werden. Peter Cordes vor 6 Jahren 1
Interessanter Punkt beim 6502 PLA, aber Pipeline-CPUs müssen stärker verdrahtet sein. Classic MIPS verwendete verschiedene Felder des Befehlswortes, um die interne Logik auf eine ähnliche Weise direkt zu steuern. Natürlich hat eine Pipeline-CPU mehrere Anweisungen im Flug, möglicherweise einen für jede Pipeline-Stufe, wenn es keine Blockierungen gibt. (Oder für Superskalare, zwei oder mehr in jeder Pipelinestufe, und für Out-of-Order ist es noch komplexer.) Viele der internen Komponenten moderner CPUs sind fest verdrahtet, aber mit Knöpfen können Mikrocode-Aktualisierungen angepasst werden. Peter Cordes vor 6 Jahren 1
0
Evan Carroll

Terminologie

Ich beantworte das selbst und verwende nur den Use-Kontext in diesem pdf .

  • Firmware - Der Mikrocode wird über einen Pfad aktualisiert, der von der Firmware der CPU bereitgestellt wird.

    "In der Regel wird ein Mikrocode-Patch von der Motherboard-Firmware (z. B. BIOS oder UEFI) oder vom Betriebssystem während des frühen Startvorgangs in die CPU hochgeladen ."

  • Mikrocode - sind selbst die von der "Instruction Decode Unit (IDU)" verwendeten Daten. Eine IDU kann entweder fest verdrahtet oder mikrocodiert sein . Mikrocode bedeutet in diesem Zusammenhang einfach programmiert. ALSO bedeutet "die Vielzahl von Mikrocodes". Die IDU

    Die IDU spielt eine zentrale Rolle in der Steuereinheit und erzeugt Steuersignale basierend auf dem Inhalt des Befehlsregisters.

  • Makrobefehle Eine an die IDU gesendete Anweisung, die decodiert werden soll, kann eine beliebige Anzahl von Mikrobefehlen zurückgeben .

  • Mikro-Instruktion ein vorberechnet „Steuerwort“, die alle dem Staat und Anweisungen für einen Taktzyklus auszuführen. Wird an die CPU gesendet, um die Steuersignale zu erzeugen .

In diesem Zusammenhang würden Sie also den Mikrocode mit Firmware aktualisieren. Sie würden Makrobefehle an die mikrocodierte IDU senden, um den Makrobefehl in einen "Mikrobefehl" zur Ausführung in der CPU aufzulösen, der sie in Steuersignale umwandelt.

Meine Lektüre davon

Mikrocode sind Daten, das Aktualisieren des Mikrocodes erfolgt jedoch über Firmware. Und verwirrenderweise, weil Sie darüber sprechen, was im Wesentlichen eine interne Nachschlagetabelle darstellt, ist es sicherlich auch selbst Firmware, da sie im Wesentlichen auf dem Chip gespeichert ist und im Ausführungsfluss des Chips verwendet wird. Ich denke, man könnte argumentieren, dass General MIDI, Hardware PostScript und Steuersignale für dumme Terminals auch in Hardware interpretiert werden und dass etwas die Anweisung übernimmt und letztendlich "Steuersignale" in irgendeiner Art von Interpretationsprozess erzeugt .

Es scheint, dass wir für diese Prozesse und Komponenten innerhalb der CPU einen speziellen Namen haben: "IDU" auf einer CPU und einen Namen für die spezifische Eingabetabelle, die die IDU verwendet, die alle "Mikrobefehle" enthält: den "Mikrocode". Die Informationen zu diesem Prozess sind urheberrechtlich geschützt und geschlossen. Ich würde davon ausgehen, dass es analog zu jeder anderen Technologie von Modems (mit ATDT und ähnlichem eines Hayes-Modems) ist, zu MIDI-Karten, aber wir nennen die spezifische Nachschlagetabelle nicht "Mikrocode" und verwenden stattdessen den Oberbegriff "Firmware" für der blinkende Prozess und die gesamte auf dem Chip gespeicherte Nutzlast.

Linux (und Windows) können den CPU-Mikrocode unabhängig von der Motherboard-Firmware, von der Sie sprechen, vollständig aktualisieren. Die Motherboard-Firmware * enthält * den neuesten CPU-Mikrocode und einen Mechanismus, um diesen anzuwenden, bevor Code von der Festplatte geladen wird. Wenn Sie Ihre Mobo-Firmware jedoch längere Zeit nicht aktualisiert haben, können Sie immer noch den neuesten CPU-Mikrocode verwenden, indem Sie lediglich die Software aktualisieren . Sie machen viel zu viel aus der Verbindung zwischen der Mobo-Firmware und dem CPU-Mikrocode. Es ist nützlich, dass die Firmware den Microcode bei jedem Start aktualisiert, dies ist jedoch nicht erforderlich (außer für die Stabilität manchmal). Peter Cordes vor 6 Jahren 1
Außerdem werden nicht alle x86-Makrobefehle durch Nachschlagen im Mikrocode-Sequenzer-ROM decodiert. Bei Intel-CPUs sind Anweisungen, die zu 4 oder weniger Uops (Micro-Ops) decodieren, in den Decodern fest codiert. Die meisten Anweisungen sind nicht ["mikro-codiert"] (https://stackoverflow.com/questions/40366643/what-is-a-microcoded-instruction) in diesem Sinne. Ganzzahldivision ist ("div" und "idiv"), aber selbst die FP-Division ist eine Einzel-UOP (da sie aus Performancegründen kritischer ist, wird die mehrstufige iterative Logik innerhalb der Divisionseinheit statt mit mikrocodierten Uops ausgeführt). Peter Cordes vor 6 Jahren 2
@PeterCordes Sie sind der Mann, der diese Antwort schreibt. Sie können jede meiner Antworten bearbeiten, um sie technisch korrekter zu machen. Sie haben die Carte Blanche. Ich werde versuchen, diese Änderungen in der heutigen Nacht zu rollen, wenn Sie wenig Zeit haben. Evan Carroll vor 6 Jahren 0
Wenn ich dazu komme, schreibe ich die Antwort, die ich angefangen habe, fertig. Im Moment ist [Harry Johnstons Antwort] (https://superuser.com/a/1283798/20798) wahrscheinlich die beste Antwort auf das, was ich glaube, Sie wollen wirklich wissen (was ein "Microcode-Update" ist) Aktualisierungen, die nicht dasselbe sind wie "CPU-Mikrocode", da dies ein zu stark vereinfachter Name ist, wie es bei technischen Dingen üblich ist, die einen Ein-Wort-Namen benötigen, den die Öffentlichkeit nachvollziehen kann.) Peter Cordes vor 6 Jahren 0