Was ist in Bezug auf die Terminologie genau der "Mikrocode" und wie unterscheidet er sich von der Firmware, wenn er aktualisiert werden kann?
Diese Frage ist kein Duplikat dieser Frage (soweit ich das beurteilen kann), die ich auch zum Ändern des Mikrocodes gestellt habe. 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 viele der Antworten in Anspruch genommen und finde viele dieser Antworten gleichermaßen unbefriedigend. Lassen Sie mich Ihnen meine zwei Bilder präsentieren,
- "Der Prozessormikrocode ähnelt der Firmware des Prozessors." Wenn ich das immer mehr lese, nehme ich es so. "Microcode" ist in diesem Zusammenhang nur Marketing über "Prozessor-Firmware". Tragen Sie mit mir, ..
- Oder ich liege falsch und ich weiß, dass es passiert! In diesem Fall brauche ich eine viel gründlichere Vorstellung davon, warum ich falsch liege. In diesen Antworten, die ich gelesen habe, um darauf hinzuweisen, dass ich falsch liege, habe ich Mühe, sie zu verstehen.
- "Execution vs Data" Viele Antworten verwenden dieses Paradigma, aber für die CPU ergibt das für mich keinen Sinn. Einige Assert-Firmware wird ausgeführt, aber von was? Handelt es sich bei der CPU um Programmanweisungen oder Daten?
- Wenn die Firmware eine Brücke zwischen Software und Hardware schlägt (lesen Sie: die Elektrotechnik der Götter), kann der Mikrocode diese Unterscheidung dann auch nicht erfüllen.
- "Dolmetschen" macht im Laufe der Zeit immer weniger Sinn. Was bedeutet es mit Microcode zu sagen "Hardwareanweisungen werden interpretiert"? Wenn das wahr wäre, wäre etwas so performant, wenn es nicht interpretiert, sondern in verschiedene Hardwareanweisungen vorkompiliert und lediglich "ausgeführt" würde? Wie wird General MIDI nicht im selben Licht interpretiert? Es ist eine Sprache, die vom "MIDI-Mikrocode" interpretiert wird und auf der Hardware ausgeführt wird. Oder dumme Terminals, die Fernschreiberanweisungen für die visuelle Anzeige interpretieren?
- Gilt "Mikrocode" für den Code, der auf Soundkarten und Grafikkarten (GPUs) ausgeführt wird ?
terminology
firmware
cpu
Evan Carroll
quelle
quelle
Antworten:
Der Ursprung des Wortes Firmware liegt in der Mitte zwischen Hardware und Software - Software, die in Hardware eingebettet ist. Es bezieht sich auf Software, die nichtflüchtig auf einem Hardwaregerät 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 vorkommen, dass die "Firmware" in der Treibersoftware gespeichert und beim Booten / Initialisieren auf das Gerät geladen wird, anstatt sie permanent auf dem Gerät zu belassen. Heutzutage ist es beispielsweise keine große Sache, ein paar hundert KB Firmware-Code in einem Softwaretreiber zu speichern, der auf dem Host-Betriebssystem geladen ist, und diesen beim Initialisieren durch den Treiber an das Gerät zu senden.
Dies wird oftmals immer noch als "Firmware" bezeichnet, obwohl Sie es abhängig von der von Ihnen akzeptierten Firmwaredefinition möglicherweise technisch nicht als Firmware betrachten, da es nicht auf der Hardware resident ist (wenn Sie die Hardware trennen und in ein anderes System einbinden) wird diese Version von "Firmware" nicht behalten).
Microcode ist eine Untermenge dieser letzteren Art von "Firmware". Microcode ist kein Oberbegriff für alle "Firmware", die beim Booten auf ein Gerät geladen wird. Stattdessen ist es spezifisch für CPUs, bei denen der Mikrocode im Wesentlichen die Übersetzungsschicht zwischen Standard-CPU-Befehlen höherer Ebene und den für diese CPU spezifischen Operationen niedrigerer Ebene bildet. Es wird beim Booten vom BIOS auf die CPU geladen, kann aber später in der Boot-Phase auch vom Betriebssystem ersetzt werden.
Durch eine Aktualisierung des Mikrocodes kann das Verhalten einer CPU auf niedriger Ebene geändert werden, um bestimmte, noch zu entdeckende Fehler zu umgehen, ohne dass die CPU-Hardware ausgetauscht werden muss. Der Mikrocode enthält normalerweise die effizienteste Zuordnung von Befehlen höherer bis niedrigerer Ebene, um die bestmögliche Geschwindigkeit und Energieeffizienz zu erzielen. In einigen Fällen kann eine Änderung des Mikrocodes zur Behebung eines Fehlers zu einer verringerten Leistung führen.
Beachten Sie, dass Meltdown (die Sicherheitsanfälligkeit, die nur Intel-Chips betrifft) nicht mit Mikrocode-Updates allein behoben werden kann und Änderungen an der Kernbetriebssystemfunktionalität erfordert, die die Leistung möglicherweise weiter verringern. Spectre (die Sicherheitsanfälligkeit, die Intel-, AMD- und ARM-Chips betrifft) kann möglicherweise nur mit Mikrocode-Updates umgangen werden.
So beantworten Sie einige Ihrer spezifischen Fragen seit Ihrer Bearbeitung:
Ja, Mikrocode ist im Grunde eine Firmware, die auf dem Prozessor ausgeführt wird. Der Spezialbegriff "Mikrocode" bezieht sich speziell auf die Firmware auf einem Prozessor, die den Entwurf für die Übersetzung von Standard-Maschinensprache in Prozessoranweisungen auf niedriger Ebene enthält. Es ist also ein spezifischerer Begriff als Firmware.
Beachten Sie, dass es, wie oben beschrieben, nicht im ausgeschalteten Zustand auf der CPU gespeichert, sondern bei jedem Start geladen wird, sodass es in gewisser Weise nicht wie herkömmliche Firmware funktioniert. Viele Hardware-Geräte tun dies jedoch jetzt und werden immer noch als "Firmware" bezeichnet, so dass es akzeptabel ist, sie als Firmware zu bezeichnen.
Ich glaube nicht, dass du falsch liegst. Firmware muss nicht in einer bestimmten Maschinensprache geschrieben sein und ihre Ausführung muss nicht auf eine bestimmte Weise ausgelöst werden. Auf einer bestimmten niedrigen Ebene 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, obwohl auf diese anderen Geräte möglicherweise Code auf dieselbe Weise geladen wird.
quelle
https://wiki.debian.org/Microcode
Beispiele:
https://www.win-raid.com/t3355f47-Intel-AMD-amp-VIA-CPU-Microcode-Repositories.html
quelle
Nun, Intel "Mikrocode-Updates" sind in der Tat "Firmware" -Updates in dem Sinne, dass sie viel mehr aktualisieren als nur die Mikrocode-Übersetzungseinheit des Prozessors.
Diese einheitlichen Prozessorpaket-Updates, die wir als "Mikrocode-Updates" für Intel bezeichnen, aktualisieren auch andere On-Die-Mikrocontroller (z. B. die PMU und den Power Management Core) sowie mehrere Parametertabellen für verschiedene On-Die-Prozessorsubsysteme. Sie sind ziemlich komplex.
Diese Informationen sind in mehreren Intel-Patenten verfügbar, die sich auf Mikrocode- und Mikrocode-Updates beziehen.
quelle
Ich denke, der Begriff "Mikrocode" bezieht sich in erster Linie auf die Funktionsweise des Codes (er führt Anweisungen auf niedrigerer Ebene unter Verwendung von Anweisungen auf niedrigerer Ebene aus), während der Begriff "Firmware" in erster Linie darauf verweist, wie er gespeichert und verwaltet wird (weniger einfach zu aktualisieren als Software) , einfacher zu aktualisieren als Hardware). In diesem Sinne ist es eher wie die Unterscheidung zwischen einer "Anwendung" und einer "JAR-Datei" - dasselbe Programm kann beides sein, aber Sie betrachten es aus zwei verschiedenen Perspektiven.
Die Idee des Mikrocodes geht übrigens auf Maurice Wilkes im Jahr 1951 zurück, Jahrzehnte bevor Computerprozessoren in Silizium eingebettet waren.
quelle
Firmware bezieht sich normalerweise auf Code für Geräte, die eine CPU enthalten, nicht die CPU selbst, z. B. die Firmware für ein Android-Telefon.
Der Mikrocode ist eine Übersetzungsschicht zwischen komplexen Befehlssätzen (z. B. 486, 686, AMD-64 usw.) und den Befehlen der unteren Ebene, für die die Chiphersteller Silizium entwickeln. Eine Reihe von Befehlen im CPU-Befehlssatz wird also nicht in Silizium implementiert, sondern über Mikrocode in mehrere Befehle übersetzt, die in Silizium implementiert sind.
quelle
"Mikrocode" war der ursprüngliche Begriff und bezog sich auf Anweisungen, die verwendet wurden, um einen Interpreter für den "öffentlichen" Anweisungssatz eines Prozessors zu implementieren.
Aber mit der Zeit wurde die Unterscheidung, wie sie war, mit vielen Variationen in den Umsetzungsschemata unklarer. Zuerst gab es einen horizontalen vs vertikalen Mikrocode, dann verschiedene Schemata zum Schreiben von "Mikrocode" (um beispielsweise die E / A-Befehle zu implementieren) in den "Haupt" -Prozessor-Befehlssatz. Dann musste unterschieden werden zwischen Code, der leicht über gewöhnliche Programm- "Run" -Operationen geladen werden konnte, und Code (z. B. für das BIOS), der im ROM oder in einem anderen geschützten und relativ unveränderlichen Speicher gespeichert war. Daher wurde der Begriff "Firmware" erfunden, um auf diese Anweisungen Bezug zu nehmen, die im Speicher irgendwie beständiger (und für Benutzermodifikationen weniger zugänglich) gemacht wurden.
Seitdem diese ersten Unterscheidungen getroffen wurden, haben sich die Dinge viele Male verändert und verdreht, und die Begriffe sind nur mit einer Genauigkeit innerhalb eines bestimmten Prozessors und einer bestimmten Betriebssystemumgebung definierbar.
quelle
[NB: Diese Antwort ist speziell für die letzte Bearbeitung gedacht und ergänzt nicht die bereits veröffentlichten Antworten.]
Um es noch einmal zu wiederholen: Mikrocode (zumindest in erster Näherung) ist eine bestimmte Art von Firmware.
Nun, es ist kein Marketing. Marketing hätte es XBoost Pro (TM) oder so genannt. Es ist vielmehr ein technischer Begriff. Wenn Sie CPUs entwerfen, ist Ihnen die Unterscheidung zwischen Mikrocode und der anderen Firmware der CPU (und der für andere Geräte typischen Firmware) wichtig. Wenn nicht, ist es wahrscheinlich nicht.
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 wirken sich hauptsächlich auf den Mikrocode aus. Sie kennen wahrscheinlich den Unterschied, müssen sich aber nicht darum kümmern .
Der Endbenutzer braucht den Unterschied nicht zu kennen oder sich darum zu kümmern, und in einer idealen Welt würde er das Wort "Mikrocode" überhaupt nicht hören.
Ich vermute, dass Sie in der Presse auf die jüngsten Sicherheitslücken in Bezug auf die spekulative Ausführung aufmerksam geworden sind, obwohl Sie dies möglicherweise auch früher in einem Kontext gehört haben, der deutlich machte, dass Sie sich nicht darum kümmern mussten. Diese Sicherheitsanfälligkeiten wurden früher als geplant veröffentlicht, was möglicherweise dazu geführt hat, dass die Berichterstattung in der Presse weniger kuratiert war, als dies ansonsten der Fall gewesen wäre. Aus Sicht des Endbenutzers müssen Sie BIOS-Updates, Betriebssystem-Updates und in einigen Fällen Anwendungs-Updates installieren. Sie müssen weder wissen noch sich darum kümmern, welche davon neuen Mikrocode enthalten.
Selbst wenn Sie sich darüber im Klaren sind, dass Sie es wahrscheinlich nicht wissen oder sich darum kümmern müssen, sind Sie möglicherweise aus purer Neugier interessiert: Wie können Sie Mikrocode von anderer Firmware unterscheiden?
Nun, das erste, was zu erkennen ist, ist, dass es nicht unbedingt eine einzige harte und schnelle Definition gibt, sondern eher eine Bleggs and Rubes-Situation . Dennoch gibt es einige Dinge, die wir über Mikrocode sagen können:
Mikrocode wird im Allgemeinen in einer CPU ausgeführt und nicht in einer CPU. Das ist die übergeordnete Sichtweise.
Die Architektur des Mikrocodes unterscheidet sich normalerweise erheblich von der Architektur des normalen Codes, einschließlich der normalen Firmware. Es ist wahrscheinlich sehr parallel und wird viel näher an der Hardware implementiert. Dies wird in mehreren der vorhandenen Antworten (einschließlich Ihrer eigenen Antwort) erörtert, wobei zu beachten ist, dass die Details je nach CPU-Design variieren können.
Obwohl Hardware häufig nur für die vom Hersteller bereitgestellte Firmware entwickelt wurde, ist es nicht ungewöhnlich, dass Firmware von Drittanbietern verwendet wird - obwohl die Garantie dadurch wahrscheinlich ungültig wird! Mikrocode von Drittanbietern ist viel seltener, obwohl ich glaube, dass in früheren Zeiten (ich spreche davon, als eine CPU etwa die Größe einer Brotdose hatte) einige Endbenutzer den Mikrocode in ihren CPUs modifizierten. Soweit mir bekannt ist, ist dies bei den in PCs verwendeten CPUs nicht möglich.
Der Mikrocode übersetzt oder unterstützt in der Regel die Implementierung einer öffentlichen Befehlssatzarchitektur, dh er führt den Maschinencode aus, den der Designer des Betriebssystems und die Anwendungsprogrammierer verwenden. Mehr dazu im nächsten Abschnitt.
Ich fürchte, auf verwirrend unterschiedliche Weise, aber ich werde auf meinen eigenen Kommentar eingehen. Dieser Abschnitt dient auch dazu, den letzten Aufzählungspunkt oben zu erweitern. Ziel ist es, zwischen der Arbeit einer CPU (durch Kombination von Hardware und Mikrocode) und der Arbeit eines typischen Geräts (durch Kombination von Hardware und Firmware) zu unterscheiden. Ich werde ein SATA-Festplattenlaufwerk wählen.
Das SATA-Laufwerk folgt den Anweisungen des Computers, die den Anweisungen "Lesen der Daten aus Sektor 5.123" und "Schreiben dieser Daten in Sektor 1.321" entsprechen. Die Firmware des Laufwerks ist dafür verantwortlich, dass die Hardware dies ermöglicht, und es handelt sich in der Regel um ganz normalen Code, der auf einer Art eingebetteter CPU ausgeführt wird. Die Anweisungen des Laufwerks gehen nacheinander ein, obwohl sie möglicherweise nicht in der Reihenfolge verarbeitet werden, in der sie eingehen. Diese Anweisungen sind kein Programm, sondern werden von einem Programm gesendet , das auf der Haupt-CPU ausgeführt wird. Insbesondere gibt es keinen Steuerungsfluss, dh keine Anweisung, dem SATA-Laufwerk mitzuteilen, welche Anweisungen als Nächstes ausgeführt werden sollen.
Die CPU ist verantwortlich für den Computer. Sobald die Initialisierung abgeschlossen ist, werden die vom Motherboard (dem BIOS, einem anderen Firmwaretyp) bereitgestellten Anweisungen ("Maschinencode") ausgeführt, die es anweisen, den vom Betriebssystem bereitgestellten Maschinencode auszuführen, der es anweist, den bereitgestellten Maschinencode auszuführen von Anwendungsanbietern. Die CPU selbst ruft den Maschinencode aus dem EEPROM (im Falle des BIOS) oder dem RAM (im Falle des Betriebssystems und der Anwendungen) ab. Insbesondere hat der Maschinencode einen Steuerungsfluss: Der Maschinencode teilt der CPU mit, welcher Maschinencode als nächstes auszuführen ist. Sie können denselben Maschinencode wiederholt durchlaufen lassen, Sie können je nach den Daten, an denen der Code arbeitet, verschiedene Codebits ausführen - die Anweisungen in einer Geräteoberflächensprache wie SATA-Code können eine begrenzte Anzahl einfacher Aufgaben ausführen, Maschinencode jedoch machenirgendetwas . (Siehe auch Vollständigkeit prüfen .)
Wir könnten diesen letzten Aufzählungspunkt wie folgt umschreiben: Der Mikrocode implementiert normalerweise eine Turing Complete-Sprache. gewöhnliche Firmware normalerweise nicht.
Richtig, aber wahrscheinlich verwirrend. Der wichtige Punkt ist die Unterscheidung zwischen Maschinencode, der einen Kontrollfluss hat und vollständig ist, und den Anweisungen, die von einer Geräteschnittstelle wie SATA definiert werden, was nicht der Fall ist und nicht.
Nein, Soundkarten erhalten Anweisungen, keinen Code, genau wie SATA-Laufwerke. Die Anweisungen könnten wie "A sharp abspielen" oder "Diese Daten als Wellenform interpretieren und abspielen" lauten. Immer noch sehr einfach.
Altmodische Grafikkarten (ohne GPUs) sind mit SATA-Laufwerken identisch. Die Anweisungen lauten wie "Setze dieses Pixel auf diese Farbe" oder "Schreibe 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 sich als einen spezialisierten Computer vorzustellen, der sich im Hauptcomputer befindet und über eigene CPUs verfügt. Es ist richtig, dass Geräte wie SATA-Laufwerke auch eingebettete CPUs haben. Der Unterschied besteht jedoch darin, dass die eingebettete CPU in einem SATA-Laufwerk nur den vom Laufwerkshersteller bereitgestellten Code ausführt, wohingegen GPUs auch den vom Betriebssystem und / oder Anwendungshersteller bereitgestellten Code ausführen. Das ist wirklich eine ganz andere Frage.
TL; DR: Microcode ist eine spezielle Art von Firmware, mit deren Hilfe die Hardware einen Befehlssatz Turing Complete implementieren kann.
quelle
Mikrocode ( "Steuerspeicher" ) sind Daten, die sich in einem flüchtigen oder nichtflüchtigen Speicher befinden - im Allgemeinen ein eher kleiner, aber sehr breiter Speicher, dessen Datenausgangssignale mit den Steuersignaleingängen von parallelen Hardware - Funktionseinheiten, Zufallssteuerlogik usw. Verdrahtet sind Die Adresseneingänge des Mikrocodespeichers werden von einer Zustandsmaschine bereitgestellt, die jeweils ein Speicherwort ("Mikroprogrammanweisung") durchläuft, um die Steuersignale eines oder mehrerer Hardware-Blöcke effektiv zu sequenzieren . Dieses Zeitmultiplexverfahren ermöglicht die Implementierung komplexer Operationen mit deutlich weniger Zufallslogik.
In modernen Mikroprozessoren kann es eine Hierarchie von Mikrocode- / Sequenziereinheiten geben, die erforderlich sind, um die physikalische Silizium-Mikroarchitektur zu einer allgemeineren Architekturfamilie mit einer gemeinsamen "Maschinencode" -Schnittstelle zu abstrahieren. Beispielsweise kann es mehrere Schichten von Mikrocode / Sequenzierung geben, um Befehlsdecoder und Gleitkommaeinheiten zu implementieren.
Unter Firmware im herkömmlichen Sinne versteht man alle Software / Daten, die sich in einem nichtflüchtigen Speicher befinden, von dem erwartet wird, dass sie selten oder nie geändert werden. Dies steht in direktem Gegensatz zu Software, die im Systemspeicher gespeichert oder vielmehr in diesen geschrieben und von diesem ausgeführt wird und die sich ständig ändert. Mikrocode bezieht sich speziell auf Daten, die ein Mikroprogramm zur Ablaufsteuerung von Hardware darstellen.
Mikrocode kann in Firmware implementiert sein / Firmware kann Mikrocode enthalten, aber sie sind nicht gleich.
quelle
Firmware ist ausführbarer Code, der sich in einem ROM oder einem anderen nichtflüchtigen Speicher befindet.
Der ursprüngliche und primäre Zweck der Firmware besteht darin, beim Starten einer CPU vorhanden zu sein. Daher muss Code ausgeführt werden, um das System zu starten oder zu booten, zu dem die CPU gehört. Bei PCs wird Firmware auch zur Bereitstellung von Diensten für das ausgeführte Betriebssystem verwendet und enthält Code für die eingebetteten Controller, die Lüfter, Stromversorgung und einige andere Dinge steuern, sowie Code für das ME / PSP, das im Hintergrund ausgeführt wird .
Peripheriegeräte, die Firmware enthalten, z. B. Festplatten, USB-Geräte usw., verfügen über eine integrierte CPU.
Der Mikrocode ist kein ausführbarer Code, sondern ein Code, der von den internen Einrichtungen eines Geräts verwendet wird.
Es wird mit einem WRMSR-Befehl in Intel- oder AMD-CPUs geladen. Zum Laden der Firmware in ein Gerät muss ein ROM oder ein Flash-Medium programmiert werden oder es muss ein kleines Ladeprogramm auf dem Gerät vorhanden sein, um die Firmware zu akzeptieren.
Firmware- und Mikrocode-Updates sind in einer ähnlichen Kategorie - Dinge, die Sie tun müssen, um die Hardware zum Laufen zu bringen, und die möglicherweise von Zeit zu Zeit aktualisiert werden müssen -, aber es sind sehr unterschiedliche Dinge.
Komplexe Befehle werden in vielen CPUs nicht direkt in der Hardware verkabelt, sondern von einer kleineren CPU-ähnlichen Einrichtung in der Haupt-CPU "ausgeführt". Microcode steuert diese Vorgänge. Dies geht zumindest auf das Motorola 68000 zurück, das über ein "MicroROM" mit Mikrocode verfügte.
Niemand außer Intel- oder AMD-Prozessoren weiß, was der Mikrocode wirklich steuert oder tut, da keine Details veröffentlicht werden. Es gibt Versuche, es zu hacken. Referenz .
In der Praxis werden Mikrocode-Aktualisierungen im Wesentlichen verwendet, um Anweisungen zu deaktivieren, die Probleme bei bekannten Modellen / Schritten von CPUs verursachen, und die neuesten CPUs von Intel erfordern häufig mindestens eine Mikrocode-Aktualisierung, bevor sie zuverlässig funktionieren.
Eine gewisse Perspektive darüber, was ein CPU-Mikrocode tatsächlich tun könnte / tatsächlich tun könnte, könnte sich beim Lesen des 6502-PLA-Decodierungs-ROMs ergeben - der 6502 ist eine alte 8-Bit-CPU, und seine Anweisungen wurden von einer internen PLA sequenziert / gesteuert. Die PLA würde grundsätzlich sagen, welche Teile des Chips bei jedem Schritt jedes Befehls beteiligt waren (6502 Befehle reichen von 2 bis 7 Zyklen). Dies ist weit, weit vor Dingen wie Caching, superskalarer Architektur, Verzweigungsvorhersage usw. Ich bin nicht sicher, ob der Mikrocode auf modernen CPUs so etwas wie diesen PLA steuern würde.
quelle
Terminologie
Ich beantworte dies selbst, indem ich nur den Verwendungskontext in diesem PDF verwende .
Firmware - Der Mikrocode wird über einen von der CPU-Firmware bereitgestellten Pfad aktualisiert.
Mikrocode - sind selbst die Daten, die von der "Instruction Decode Unit (IDU)" verwendet werden. Eine IDU kann entweder fest verdrahtet oder mikrocodiert sein . Mikrocodiert heißt in diesem Zusammenhang einfach programmiert. AUCH bedeutet "die Vielzahl von Mikrocodes". Die IDU
Makrobefehl Ein Befehl, der an die IDU gesendet wird, um dekodiert zu werden, kann eine beliebige Menge 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 generieren .
In diesem Zusammenhang müssen Sie den Mikrocode also mit Firmware aktualisieren. Sie würden Makrobefehle an die mikrocodierte IDU senden, um den Makrobefehl in einen "Mikrobefehl" zur Ausführung auf der CPU aufzulösen, der sie in Steuersignale umwandelt.
Meine Lektüre davon
Der Mikrocode besteht aus Daten , die Aktualisierung des Mikrocodes erfolgt jedoch über die Firmware. Und verwirrenderweise, da es sich um eine interne Nachschlagetabelle handelt, handelt es sich sicherlich auch um Firmware , da sie im Wesentlichen auf dem Chip gespeichert und im Ausführungsfluss des Chips verwendet wird. Ich denke, Sie könnten argumentieren, dass General MIDI, Hardware-PostScript und Steuersignale für dumme Terminals in Hardware ebenfalls in demselben Sinne interpretiert werden und dass etwas die Anweisung entgegennimmt und letztendlich in einer Art Interpretationsprozess "Steuersignale" erzeugt .
Es scheint, als hätten wir spezielle Namen für diese Prozesse und Komponenten in der CPU: "IDU" in einer CPU und einen Namen für die spezielle Eingabetabelle, die die IDU verwendet und die alle "Mikrobefehle" enthält: den "Mikrocode". Die Informationen zu diesem Vorgang sind urheberrechtlich geschützt und geschlossen. Ich würde annehmen, dass dies mit jeder anderen Technologie von Modems (mit ATDT und dergleichen auf einem Hayes-Modem) bis zu MIDI-Karten analog ist, aber wir nennen die spezifische Nachschlagetabelle nicht "Mikrocode" und verwenden stattdessen den Oberbegriff "Firmware" für der Flash-Prozess und die gesamte Nutzlast auf dem Chip gespeichert.
quelle
div
undidiv
), aber selbst die FP-Division ist eine einzelne UOP (da sie leistungskritischer ist, erfolgt die iterative Logik in mehreren Schritten innerhalb der Divisionseinheit anstelle von mikrocodierten UOPs).Ich habe einen Kurs in grundlegendem ISA-Design absolviert, hauptsächlich in Studium und Design eines RISC-Prozessors, der sich an MIPS-Konzepten orientiert. Hier ist, woran ich mich erinnere
Nach meinem Verständnis benötigen die Basisblöcke eines Prozessors wie Register, ALUs, Multiplexer und Speichermodule bestimmte Signale, damit sie ihre Arbeit ausführen können. Sie würden diese Signale als "Assertion" -Signale bezeichnen, da dies die Signale sind, die zum Betreiben dieser Blöcke erforderlich sind. CPUs sind im Wesentlichen ein Spaghetti-Block aus ALUs, Speichermodulen, Registern und anderer Hardware. Das heißt, jede CPU muss eine bestimmte Folge von Steuersignalen aktivieren, um ihre Arbeit zu erledigen (ich meine grundlegende Anweisungen wie ANDI, ORI, JMP, BNE, BEQ usw.). Ich hatte gemischte Gefühle, als ich die Signale beim Testen und Debuggen eines Befehlssatzes selbst durchsetzen musste (wörtlich alle MIPS-Anweisungen durchlaufen), da mir das Tempo des Lehrplans zu diesem Zeitpunkt noch nichts über Steuergeräte beigebracht hatte.
Andererseits läuft die Assemblersprache auf Opcodes und deren Operanden im Befehlswort hinaus (im Grunde genommen die Breite Ihres Datenbusses). In Bezug auf MIPS sind die ersten 6 Bits Ihres Anweisungsworts Ihr Opcode. Schon allein durch mathematische Prüfung können Sie Ihre ALU, Register, Speicher, Multiplexer usw. nicht "behaupten". Im Grunde genommen besteht der Rest Ihrer Hardware nur aus 6 Bits.
Nicht, wenn Sie ... EIN ANWEISUNGS-DECODIERER haben. Der Befehlsdecoder nimmt im Grunde genommen Ihren Operationscode und erzeugt ALLE Ihre "Bestätigungs" -Signale, die zum Betreiben Ihrer Hardware erforderlich sind. Befehlsdecoder unterscheiden sich jedoch in der Implementierung zwischen den Architekturen und sind in einigen Fällen programmierbar. Der Mikrocode wirkt sich auf den programmierbaren Abschnitt des Befehlsdecoders aus.
Ich bin zu der Überzeugung gelangt , dass Firmware ein allgemeiner Begriff für in Hardware eingebettete Informationen ist. In einigen Fällen wird auch von Mikrocode gesprochen, da sein Bitstrom in Hardware wie EEPROM und Flash-Speicher codiert und gespeichert werden kann. Meistens handelt es sich jedoch um kompilierten Code, asm oder sogar VHDL / Verilog-Bitstreams, die in FPGAs verwendet werden. Der Mikrocode scheint mir eine Semantik zu sein, mit der die "Assertionssignale" im Prozessor der Wahl spezifiziert werden.
quelle
Der Mikrocode ist eine in die CPU integrierte Firmware auf Sub-Asm-Ebene.
quelle