Mikrocode
Im Prozessordesign, Mikrocode (μCode[1]) ist eine Technik, die eine Schicht von interputzt Computerorganisation zwischen den Zentrale Verarbeitungseinheit (CPU) Hardware und Programmierer sichtbar Anweisungsset Architektur eines Computers.[2][Seite benötigt] Microcode ist eine Ebene von Anweisungen auf Hardware-Ebene, die höhere Ebene implementieren Maschinensprache Anweisungen oder intern Finite-State-Maschine Sequenzierung in vielen Digitale Verarbeitung Elemente. Mikrocode wird im Allgemeinen verwendet Zentrale Verarbeitungseinheiten, obwohl im aktuellen Desktop -CPUs es nur ein Fallback -Pfad für Fälle ist, die umso schneller Hartedrahtes Steuereinheit Kann nicht bewältigen.[3]
Der Mikrocode befindet sich typischerweise im speziellen Hochgeschwindigkeitsspeicher und übersetzt Maschinenanweisungen. Zustandsmaschine Daten oder andere Eingaben in Sequenzen detaillierter Operationen auf Schaltungsebene. Es trennt die Maschinenanweisungen von den zugrunde liegenden Elektronik so dass Anweisungen freier und verändert werden können. Es erleichtert auch das Aufbau komplexer mehrstufiger Anweisungen und reduziert gleichzeitig die Komplexität von Computerschaltungen. Das Schreiben von Mikrocode wird oft genannt Mikroprogrammierung und der Mikrocode in einer bestimmten Prozessorimplementierung wird manchmal als a genannt Mikroprogramm.
Umfangreichere Mikrokodierung ermöglicht kleine und einfache Mikroarchitekturen zu emulieren, nacheifern leistungsfähigere Architekturen mit breiteren Wortlänge, mehr Ausführungseinheiten und so weiter, was eine relativ einfache Möglichkeit ist, Softwarekompatibilität zwischen verschiedenen Produkten in einer Prozessorfamilie zu erreichen.
Besonders einige Hardware -Anbieter IBMVerwenden Sie den Begriff Mikrocode als Synonym für Firmware. Auf diese Weise wird der gesamte Code innerhalb eines Geräts bezeichnet Mikrocode unabhängig davon, dass es Mikrocode ist oder Maschinensprache; zum Beispiel, Festplattenfahrten sollen ihren Mikrocode aktualisieren, obwohl sie normalerweise sowohl Mikrocode als auch Firmware enthalten.[4]
Überblick
Die niedrigste Ebene im Software -Stack eines Computers ist traditionell roh Maschinensprache Anweisungen für den Prozessor. In mikrokodierten Prozessoren, die diese Anweisungen abrufen und dekodieren. und auszuführen kann durch Mikrocode erfolgen. Um Verwirrung zu vermeiden, wird jedes mikroprogrammbedingte Element durch das unterschieden Mikro Präfix: Mikroinstruktion, Mikroassembler, Mikroprogrammer, Mikroarchitektur, etc.
Komplexe digitale Prozessoren können auch mehr als einen verwenden (möglicherweise mikrocodebasierte) Steuergerät Um Unterbereitungen zu delegieren, müssen dies im Wesentlichen asynchron parallel durchgeführt werden. Zum Beispiel die VAX 9000 Hat eine Ibox -Einheit, um Anweisungen abzurufen und zu dekodieren, die es einer mikrokodierten E -Box -Einheit übergibt, die ausgeführt werden soll.[5] und die Vax 8800 hat sowohl eine mikrokodierte ibox als auch eine mikrokodierte Ebox.[6]
Ein hochrangiger Programmierer oder sogar ein Montagesprache Der Programmierer sieht oder ändert normalerweise keinen Mikrocode. Im Gegensatz zu Maschinencode, der häufig einige behält Rückwärtskompatibilität Unter verschiedenen Prozessoren in einer Familie läuft Mikrocode nur genau auf dem elektronische Schaltung für das es entworfen wurde, da es einen inhärenten Teil des jeweiligen Prozessordesigns selbst darstellt.
Entwurf
Ingenieure schreiben normalerweise den Mikrocode während der Entwurfsphase eines Prozessors und speichern sie in a Nur-Lese-Speicher (Rom) oder Programmierbares Logikarray (PLA)[7] Struktur oder in einer Kombination aus beiden.[8] Es gibt jedoch auch Maschinen, bei denen einige oder alle Mikrocode gespeichert sind Statische Zufallszugriffsgedächtnis (Sram) oder Flash-Speicher. Dies wird traditionell als bezeichnet als schriftlich Steuergeschäft im Kontext von Computern, die entweder schreibgeschützt sein können oder Speicher des Schreibens. Im letzteren Fall lädt der CPU -Initialisierungsprozess Mikrocode in den Steuerspeicher von einem anderen Speichermedium, um den Mikrocode zu ändern, um Fehler im Befehlssatz zu korrigieren, oder um neue Maschinenanweisungen zu implementieren.
Mikroprogramme
Mikroprogramme bestehen aus einer Reihe von Mikroinstruktionen, die die CPU auf einer sehr grundlegenden Ebene der Hardwareschaltung steuern. Zum Beispiel eine einzelne typische horizontal Die Mikroinstruktion kann die folgenden Operationen festlegen:
- Verbinden Sie Register 1 mit dem A Seite der Alu
- Verbinden Sie Register 7 mit dem B Seite des Alu
- Stellen Sie die Alu auf die Ausführung ein Zwei-Komplement Zusatz
- Stellen Sie die Trageingabe des Alu auf Null ein
- Speichern Sie den Ergebniswert in Register 8
- Aktualisieren Sie die Bedingungscodes aus den ALU -Status -Flags (Negativ, Null, Überlauf, und tragen)
- Mikrojump zu einem bestimmten MikroPC Adresse für die nächste Mikroinstruktion
Um alle Merkmale des Prozessors in einem Zyklus gleichzeitig zu steuern, ist die Mikroinstruktion häufig breiter als 50 Bit. z. B. 128 Bit auf a 360/85 mit einem Emulatorfunktion. Mikroprogramme sind sorgfältig entwickelt und für die schnellstmögliche Ausführung optimiert, da ein langsames Mikroprogramm zu einem langsamen Anweisungen für Maschinen und einer abgebauten Leistung für verwandte Anwendungsprogramme führen würde, die solche Anweisungen verwenden.
Rechtfertigung
Microcode wurde ursprünglich als einfachere Methode zur Entwicklung der Steuerlogik für einen Computer entwickelt. Anfangs, CPU Anweisungssätze war fest verdrahtet. Jeder Schritt, der zum Abnehmen, Dekodieren und Ausführen der Maschinenanweisungen (einschließlich aller Operandenadressenberechnungen, Lesevorgänge und Schreibvorgänge) erforderlich ist, wurde direkt von kontrolliert Kombinationslogik und eher minimal sequentiell Statusmaschinenschaltung. Während solche hart verdrahteten Prozessoren sehr effizient waren, müssen leistungsstarke Anweisungssätze mit mehrstufiger Adressierung und komplexer Operationen erforderlich sind (komplexe Vorgängesiehe unten) machte es schwer zu entwerfen und zu debuggen; Hochkodierte und unterschiedliche Länge können auch dazu beitragen, insbesondere wenn sehr unregelmäßige Kodierungen verwendet werden.
Mikrocode vereinfacht den Job, indem ein Großteil des Verhaltens und Programmiermodells des Prozessors über Mikroprogramm -Routinen und nicht durch dedizierte Schaltkreise definiert werden konnte. Selbst spät im Entwurfsprozess konnte Mikrocode leicht geändert werden, während fest verdrahtete CPU-Designs sehr umständlich waren, um sich zu ändern. Dies erleichterte dies sehr erleichtert das CPU -Design.
Von den 1940er bis Ende der 1970er Jahre wurde ein großer Teil der Programmierung durchgeführt Montagesprache; Anweisungen auf höherer Ebene bedeuten eine größere Programmiererproduktivität, daher war ein wichtiger Vorteil des Mikrocode die relative Leichtigkeit, durch die leistungsstarke Maschinenanweisungen definiert werden können. Die ultimative Erweiterung davon sind "direkt ausführbare hochstufige Sprache" -Desende, bei denen jede Aussage einer solchen Sprache wie folgt Pl/i wird vollständig und direkt durch Mikrocode ausgeführt, ohne Zusammenstellung. Das IBM Future Systems Project und Daten allgemein Fountainhead -Prozessor sind Beispiele dafür. In den 1970er Jahren wuchs die CPU -Geschwindigkeiten schneller als Speichergeschwindigkeiten und zahlreiche Techniken wie z. Speicherblocktransfer, Speichervorabnahme und Multi-Level-Caches wurden verwendet, um dies zu lindern. Anweisungen für hochrangige Maschinen, die durch Mikrocode ermöglicht wurden, halfen weiter, da weniger komplexere Maschinenanweisungen weniger Speicherbandbreite erfordern. Beispielsweise kann eine Operation auf einer Zeichenzeichenfolge als einzelne Maschinenbefehl durchgeführt werden, wodurch mehrere Befehlsabrufe vermieden werden.
Architekturen mit Anweisungssätzen, die von komplexen Mikroprogrammen implementiert wurden IBM System/360 und Digital Equipment Corporation Vax. Der Ansatz von immer komplexeren mikrocode-implementierten Befehlssätzen wurde später aufgerufen Komplexer Befehlssatz Computer (CISC). Ein alternativer Ansatz, der in vielen verwendet wird Mikroprozessoren, ist eine oder mehrere zu verwenden Programmierbares Logikarray (Pla) oder Nur-Lese-Speicher (ROM) (anstelle einer Kombinationslogik) hauptsächlich für die Anweisungsdecodierung und lassen Sie eine einfache Zustandsmaschine (ohne viel oder irgendein Mikrocode) den größten Teil der Sequenzierung durchführen. Das MOS -Technologie 6502 ist ein Beispiel für einen Mikroprozessor unter Verwendung einer PLA zum Befehlsdecodieren und -sequenzieren. Die PLA ist in Photomikrogrammen des Chips sichtbar,[9] und sein Betrieb ist in der zu sehen Transistor-Levelsimulation.
Die Mikroprogrammierung wird immer noch in modernen CPU -Designs verwendet. In einigen Fällen werden nach dem Debuggen des Mikrocode in der Simulation die Logikfunktionen für den Kontrollgeschäft ersetzt. Logikfunktionen sind oft schneller und kostengünstiger als der äquivalente Mikroprogrammspeicher.
Vorteile
Die Mikroprogramme eines Prozessors arbeiten auf einer primitiveren, völlig anderen und viel hardwareorientierten Architektur als die Anweisungen der Montage, die für normale Programmierer sichtbar sind. In Koordination mit der Hardware implementiert der Mikrocode die programmierer sichtbare Architektur. Die zugrunde liegende Hardware muss keine feste Beziehung zur sichtbaren Architektur haben. Dies erleichtert es, eine bestimmte Architektur für den Befehlssatz für eine Vielzahl von zugrunde liegenden Hardware-Mikroarchitekturen zu implementieren.
Das IBM System/360 verfügt über eine 32-Bit-Architektur mit 16 allgemeinen Registern, aber die meisten Systeme/360-Implementierungen verwenden Hardware, die eine viel einfachere zugrunde liegende Mikroarchitektur implementiert. Zum Beispiel die System/360 Modell 30 Hat 8-Bit-Datenpfade zur arithmetischen Logikeinheit (ALU) und zum Hauptspeicher und implementiert die allgemeinen Register in einer speziellen Einheit mit höherer Geschwindigkeit Kerngedächtnis, und die System/360 Modell 40 Hat 8-Bit-Datenpfade zum ALU- und 16-Bit-Datenpfade zum Hauptspeicher und implementierte auch die allgemeinen Register in einer speziellen Einheit mit höherem Kernspeicher. Das Modell 50 Hat vollständige 32-Bit-Datenpfade und implementiert die allgemeinen Register in einer speziellen Einheit des Kernspeichers mit höherem Geschwindigkeit.[10] Das Modell 65 bis zum Modell 195 verfügt über größere Datenpfade und implementieren die allgemeinen Register in schnelleren Transistorschaltungen. Auf diese Weise ermöglichte die Mikroprogrammierung IBM, viele System-/360 -Modelle mit wesentlich unterschiedlicher Hardware zu entwerfen und eine breite Palette von Kosten und Leistung zu erstrecken, während sie alle architektonisch kompatibel sind. Dies reduziert die Anzahl der eindeutigen Systemsoftwareprogramme, die für jedes Modell geschrieben werden müssen, dramatisch.
Ein ähnlicher Ansatz wurde von der Digital Equipment Corporation (DEC) in ihrer VAX -Familie von Computern verwendet. Infolgedessen verwenden verschiedene VAX-Prozessoren unterschiedliche Mikroarchitekturen, doch die programmierer sichtbare Architektur ändert sich nicht.
Die Mikroprogrammierung reduziert auch die Kosten von Feldänderungen, um Defekte zu korrigieren (Käfer) im Prozessor; Ein Fehler kann häufig behoben werden, indem ein Teil des Mikroprogramms ersetzt und nicht durch Änderungen an vorgenommen wird Hardwarelogik und Verkabelung.
Geschichte
Im Jahr 1947 das Design der MIT Wirbelwind stellte das Konzept eines Steuereladens ein, um das Computerdesign zu vereinfachen und darüber hinaus zu bewegen ad hoc Methoden. Der Kontrollgeschäft ist a Diodenmatrix: Ein zweidimensionales Gitter, bei dem eine Dimension "Kontrollzeitimpulse" aus der internen Uhr der CPU akzeptiert, und die andere stellt eine Verbindung zu Steuersignalen an Toren und anderen Schaltungen her. Ein "Pulsverteiler" nimmt die von der erzeugten Impulse auf CPU -Uhr und bricht sie in acht separate Zeitimpulse auf, von denen jede eine andere Reihe des Gitters aktiviert. Wenn die Zeile aktiviert ist, aktiviert sie die damit verbundenen Steuersignale.[11]
Eine andere Möglichkeit beschrieben, die vom Steuergeschäft übertragenen Signale werden wie a ähnlich gespielt Spieler Klavier rollen. Das heißt, sie werden durch eine Folge sehr breiter Wörter gesteuert, die konstruiert sind Bits, und sie sind gespielt der Reihe nach. In einem Kontrollgeschäft jedoch die Lied ist kurz und kontinuierlich wiederholt.
Im Jahr 1951, Maurice Wilkes[12] verbesserte dieses Konzept durch Hinzufügen bedingte Ausführung, ein Konzept, das einem ähnlich ist bedingt in Computersoftware. Seine erste Implementierung bestand aus einem Paar von Matrizen: die erste erzeugte Signale in der Art des Wirbelwind -Steuerspeichers, während die zweite Matrix ausgewählte, welche Signale (das mikroprogramm -Anweisungswort, also so zu sprechen), um den nächsten Zyklus aufzurufen. Die Bedingungen wurden implementiert, indem eine Möglichkeit bereitgestellt wurde, wie eine einzelne Linie im Steuergeschäft aus Alternativen in der zweiten Matrix wählen konnte. Dies machte die Steuersignale vom erkannten internen Signal abhängig. Wilkes prägte den Begriff Mikroprogrammierung Beschreiben Sie dieses Merkmal und unterscheiden Sie sie von einem einfachen Steuergeschäft.
Beispiele
- Das Emidec 1100[13] Verwendet angeblich einen hart verdrahteten Steuergeschäft, der aus Kabeln besteht, die durch Ferritkerne eingewandt sind, die als "die Schnürsenkel" bezeichnet werden.
- Die meisten Modelle der IBM System/360 -Serie sind mikroprogrammiert:
- Das Modell 25 ist einzigartig unter System/360 -Modellen bei der Verwendung der Top 16 K -Bytes des Kernspeichers, um die Steuerspeicherung für das Mikroprogramm zu halten. Der 2025 verwendet eine 16-Bit-Mikroarchitektur mit sieben Kontrollwörtern (oder Mikroinstruktionen). Nach der Systemwartung oder beim Ändern des Betriebsmodus wird der Mikrocode aus dem Kartenleser, Klebeband oder einem anderen Gerät geladen.[14] Das IBM 1410 Die Emulation für dieses Modell ist auf diese Weise geladen.
- Das Modell 30 verwendet eine 8-Bit-Mikroarchitektur mit nur wenigen Hardwareregistern. Alles, was der Programmierer sah, wird vom Mikroprogramm emuliert. Der Mikrocode für dieses Modell wird auch auf speziellen Stempelkarten gehalten, die in einem speziellen Leser pro Karte in der Maschine gespeichert werden, genannt "CROS" -Anheiten (Kondensator-Schreibspeicher).[15]: 2–5 Eine weitere CROS -Einheit wird für Maschinen hinzugefügt, die mit 1401/1440/1460 Emulation bestellt wurden[15]: 4–29 und für Maschinen, die mit 1620 Emulation bestellt wurden.[15]: 4–75
- Das Modell 40 Verwendet 56-Bit-Kontrollwörter. Die 2040 -Box implementiert sowohl den System/360 Hauptprozessor als auch den Multiplex -Kanal (den E/A -Prozessor). Dieses Modell verwendet Trost engagierte Leser ähnlich wie Cros Einheiten, aber mit einem induktiven Abholung (Transformator-Lese-Leser-Store).
- Das Modell 50 hat zwei interne Datenapathen, die parallel betrieben wurden: ein 32-Bit-Datenapath, der für arithmetische Operationen verwendet wird, und ein 8-Bit-Datenpfad, der in einigen logischen Operationen verwendet wird. Der Kontroll Store verwendet 90-Bit-Mikroinstruktionen.
- Das Modell 85 Hat separate Anweisungen abgehoben (I-Unit) und Ausführung (E-Unit), um eine hohe Leistung zu erzielen. Die I-Einheit ist Hardware kontrolliert. Die E-Einheit ist mikroprogrammiert; Die Kontrollwörter sind 108 Bit in einer einfachen 360/85 und breiter, wenn ein Emulatorfunktion installiert ist.
- Das NCR 315 ist mikroprogrammiert mit handverdrahteten Ferritkernen (a Rom) von einem Sequenzer mit bedingter Ausführung gepulst. Die über die Kerne geleiteten Drähte sind für verschiedene Daten und Logikelemente im Prozessor aktiviert.
- Die Digital Equipment Corporation PDP-11 Die Prozessoren sind mit Ausnahme des PDP-11/20 mikroprogrammiert.[16]
- Die meisten Daten allgemeine Sonnenfinsternis Minicomputer sind mikroprogrammiert. Die Aufgabe, Mikrocode für die zu schreiben Eclipse MV/8000 wird im Pulitzer-Preis ausgezeichneter Buch mit dem Titel " Die Seele einer neuen Maschine.
- Viele Systeme von Burroughs werden mikroprogrammiert:
- Der B700 "Mikroprozessor" führt Opcodes auf Anwendungsebene mit Sequenzen von 16-Bit-Mikroinstruktionen aus, die im Hauptspeicher gespeichert sind. Jedes davon ist entweder ein Register-Last-Operation oder einer einzigen 56-Bit-Nanocode-Anweisung, die im schreibgeschützten Speicher gespeichert ist, zugeordnet. Dies ermöglicht vergleichsweise einfache Hardware, entweder als Mainframe -Peripheriecontroller zu fungieren oder als eigenständiger Computer verpackt zu werden.
- Das B1700 wird mit radikal anderer Hardware einschließlich bitadressiierter Hauptspeicher implementiert, hat jedoch eine ähnliche Mehrschicht-Organisation. Das Betriebssystem lädt den Dolmetscher für die erforderliche Sprache vor. Diese Dolmetscher präsentieren verschiedene virtuelle Maschinen für Cobol, Forran, etc.
- Mikrodaten Erzeugte Computer, auf denen der Mikrocode für den Benutzer zugänglich ist. Dies ermöglicht die Erstellung von Anweisungen der benutzerdefinierten Assembler -Ebene. Mikrodaten Wirklichkeit Das Betriebssystemdesign nutzt diese Funktionen ausführlich.
- Das Xerox Alto Die Workstation verwendete ein mikrokodiertes Design, aber im Gegensatz zu vielen Computern ist die Mikrocode -Engine nicht vor dem Programmierer in einem geschichteten Design versteckt. Anwendungen nutzen dies, um die Leistung zu beschleunigen.
- Das IBM System/38 wird als beides beschrieben horizontaler und vertikaler Mikrocode.[17] In der Praxis implementiert der Prozessor eine Architektur mit dem mit dem Namen der Anweisungen bezeichneten Architektur Interne mikroprogrammierte Grenzfläche (Impi) Unter Verwendung eines horizontalen Mikrocode -Formats. Die sogenannte vertikale Mikrocode-Schicht implementiert das Hardware-unabhängige System/38 Maschinenschnittstelle Anweisungssatz in Bezug auf Impi -Anweisungen. Vor der Anweisung der IBM RS64 Prozessorlinie früh IBM as/400 Systeme verwendeten dieselbe Architektur.[18]
- Das Nintendo 64's Realitätskoprozessor (RCP), das als Konsole dient Grafikkarte und Audioprozessor, verwendet Mikrocode; Es ist möglich, neue Effekte zu implementieren oder den Prozessor zu optimieren, um die gewünschte Ausgabe zu erzielen. Einige bemerkenswerte Beispiele für benutzerdefinierte RCP-Mikrocode sind die hochauflösenden Grafiken, Partikelmotoren und unbegrenzte Ziehstände in Faktor 5's Indiana Jones und die höllische Maschine, Star Wars: Rogue Squadron, und Star Wars: Kampf um Naboo;[19][20] und die Vollbewegungsvideo Wiedergabe in Angel Studios gefunden ' Resident Evil 2.[21]
- Die VU0- und VU1 -Vektoreinheiten in der Sony Playstation 2 sind mikroprogrammierbar; Tatsächlich ist VU1 für die ersten Generationen des SDK nur über Mikrocode zugänglich.
- Die Microcore Labs MCL86 , MCL51 und MCL65 sind Beispiele für hochkodierte "vertikale" Mikrosequencer -Implementierungen der Intel 8086/8088, 8051 und MOS 6502.
- Das Digital Scientific Corp. Das Meta 4 Series 16-Computersystem war ein usermikroprogammierbares System, das erstmals 1970 verfügbar war. Der Mikrocode hatte einen hauptsächlich vertikalen Stil mit 32-Bit-Mikroinstruktionen.[22] Die Anweisungen wurden auf austauschbaren Programmplatten mit einem Raster mit Bitpositionen aufbewahrt. Eine (1) Bit wurden durch kleine Metallquadrate dargestellt, die durch Verstärker, Null (0) Bits durch das Fehlen der Quadrate erfasst wurden.[23] Das System könnte mit bis zu 4K 16-Bit-Wörtern von Mikrostore konfiguriert werden. Eines der Produkte von Digital Scientific war ein Emulator für die IBM 1130.[24][25]
- Das MCP-1600 ist ein Mikroprozessor hergestellt von Western Digital In den späten 1970er Jahren bis in die frühen 1980er Jahre wurden drei verschiedene Computerarchitekturen im Mikrocode implementiert: die Pascal Microengine, der WD16 und der Dez LSI-11, eine kostenreduzierte PDP-11.[26]
- Vorhin x86 Prozessoren sind vollständig mikrokodiert; Beginnend mit dem Intel 80486weniger komplizierte Anweisungen werden direkt in Hardware implementiert. X86 -Prozessoren implementiert Patchierbares Mikrocode (Patch vorbei BIOS oder Betriebssystem) seit Intel P6 -Mikroarchitektur und AMD K7 Microarchitektur.
- Etwas Grafikkarten, drahtlose Netzwerk -Schnittstellencontroller Implementierter Patchable Microcode (Patch nach Betriebssystem).
Implementierung
Jede Mikroinstruktur in einem Mikroprogramm liefert die Bits, die die funktionellen Elemente steuern, die intern eine CPU bestehen. Der Vorteil einer hart verdrahteten CPU besteht darin, dass die interne CPU-Steuerung zu einer speziellen Form eines Computerprogramms wird. Mikrocode verwandelt somit eine komplexe elektronische Design -Herausforderung (die Kontrolle einer CPU) in eine weniger komplexe Programmierherausforderung. Um dies zu nutzen, ist eine CPU in mehrere Teile unterteilt:
- Ein I-unit kann Anweisungen in Hardware dekodieren und die Mikrocode -Adresse für die Verarbeitung der Anweisung parallel zur Verarbeitung mit dem bestimmen E-Einheit.
- A Mikrosequencer Wählt das nächste Wort des Kontrollgeschäfts aus. Ein Sequenzer ist größtenteils ein Zähler, hat aber normalerweise auch eine Möglichkeit, je nach Daten in einen anderen Teil des Steuerspeichers zu springen, normalerweise Daten aus dem Befehlsregister Und immer ein Teil des Kontrollgeschäfts. Der einfachste Sequenzer ist nur ein Register, das aus ein paar Teilen des Steuergeschäfts geladen wird.
- A registrieren SET ist ein schneller Speicher, der die Daten der zentralen Verarbeitungseinheit enthält. Es kann die beinhalten Programm zähler und Stapelzeigerund kann auch andere Register enthalten, die für den Anwendungsprogrammierer nicht leicht zugänglich sind. Oft ist das Register-Set ein dreifach portiert Datei registrieren; Das heißt, zwei Register können gelesen werden und gleichzeitig ein drittes geschrieben.
- Ein Arithmetik-und Logikeinheit führt Berechnungen durch, normalerweise Zugabe, logische Negation, eine rechte Verschiebung und logisch und. Es führt oft auch andere Funktionen aus.
Es kann auch eine geben Speicheradressregister und ein Speicherdatenregister, verwendet, um auf die Haupt zuzugreifen Computerspeicher. Zusammen bilden diese Elemente eine "Ausführungseinheit". Am modernsten CPUs haben mehrere Ausführungseinheiten. Sogar einfache Computer haben normalerweise eine Einheit zum Lesen und Schreiben von Speicher und einen anderen, um den Benutzercode auszuführen. Diese Elemente konnten oft als einzelner Chip zusammengebracht werden. Dieser Chip wird in einer festen Breite geliefert, die durch die Ausführungseinheit ein "Slice" bilden würde. Diese sind als "bekannt"Bit Slice"Chips. Die AMD AM2900 Die Familie ist eines der bekanntesten Beispiele für Bit -Slice -Elemente. Die Teile der Ausführungseinheiten und die gesamten Ausführungseinheiten werden durch ein Bündel von Drähten miteinander verbunden, die als a genannt werden Bus.
Programmierer entwickeln Mikroprogramme unter Verwendung grundlegender Softwaretools. EIN Mikroassembler Ermöglicht einem Programmierer, die Tabelle der Bits symbolisch zu definieren. Aufgrund seiner engen Beziehung zur zugrunde liegenden Architektur "hat Microcode mehrere Eigenschaften, die es schwierig machen, mit einem Compiler zu generieren."[2] A Simulator Das Programm soll die Bits auf die gleiche Weise wie die Elektronik ausführen, und ermöglicht viel mehr Freiheit, das Mikroprogramm zu debuggen. Nachdem das Mikroprogramm fertiggestellt und ausgiebig getestet wurde, wird es manchmal als Eingabe für ein Computerprogramm verwendet, das Logik erstellt, um dieselben Daten zu erstellen. Dieses Programm ähnelt denen, die zur Optimierung von a verwendet werden Programmierbares Logikarray. Auch ohne vollständig optimale Logik kann die heuristisch optimierte Logik die Anzahl der Transistoren von der für a benötigten Anzahl erheblich verringern Nur-Lese-Speicher (ROM) Steuergeschäft. Dies senkt die Kosten für die Produktion und den von einer CPU verwendeten Strom.
Mikrocode kann als charakterisiert werden horizontal oder vertikalBezieht sich hauptsächlich darauf, ob jede Mikroinstruktion CPU -Elemente mit wenig oder gar keiner Dekodierung steuert (horizontaler Mikrocode)[a] oder erfordert eine umfassende Dekodierung durch Kombinatorische Logik Vorher (vertikaler Mikrocode). Folglich ist jede horizontale Mikroinstruktion breiter (enthält mehr Bits) und nimmt mehr Speicherplatz ein als eine vertikale Mikroinstruktion.
Horizontaler Mikrocode
"Der horizontale Mikrocode hat mehrere diskrete Mikrooperationen, die in einer einzelnen Mikroinstruktur für den gleichzeitigen Betrieb kombiniert werden."[2] Der horizontale Mikrocode ist typischerweise in einem ziemlich breiten Steuergeschäft enthalten. Es ist nicht ungewöhnlich, dass jedes Wort 108 Bit oder mehr beträgt. Bei jedem Tick einer Sequenzeruhr wird ein Mikrocode -Wort gelesen, dekodiert und verwendet, um die funktionalen Elemente zu steuern, aus denen die CPU besteht.
In einer typischen Implementierung umfasst ein horizontales Mikroprogramm -Wort ziemlich fest definierte Gruppen von Bits. Zum Beispiel könnte eine einfache Anordnung sein:
Registrieren Sie Quelle a | Registrieren Sie Quelle b | Zielregister | Arithmetik-und Logikeinheit Betrieb | Art des Sprunges | Sprungadresse |
Für diese Art von Mikromaschine zum Implementieren eines Sprunganweiss mit der Adresse der Adresse des Opcode benötigt der Mikrocode möglicherweise zwei Takt -Zecken. Der Ingenieur, der es entwirft, würde Microassembler -Quellcode schreiben, der so aussieht:
# Jede Zeile, die mit einem Zahlenzeichen beginnt, ist ein Kommentar. Anweisungen: # Um sich auf die nächste Anweisung vorzubereiten, hat der Microcode für Befehlsdekode den Programm Gegenstand bereits in das Speicheradressregister verschoben. Dieser Befehl holt # die Zieladresse der Sprunganweisung aus dem Speicherwort, das dem # Jump Opcode folgt, indem Sie aus dem Speicherdatenregister in das Speicheradressregister kopiert. # Dies gibt dem Speichersystem zwei Ticks, um die nächste # Anweisung in das Speicherdatenregister für die Verwendung des Anweisungsdecodes abzurufen. # Die Sequenzeranweisung "Weiter" bedeutet einfach 1 zur Adresse des Steuerungsworts. Mdr, keine, mar, kopieren, als nächstes, none # Dies legt die Adresse der nächsten Anweisung in den PC. # Dadurch wird dem Speichersystem eine Uhr Tick, um den Abruf fertigzustellen, der auf der # vorherigen Mikroinstruktion gestartet wurde. # Die Sequenzeranweisung besteht darin, zum Beginn des Befehlsdecodes zu springen. März 1, PC, Hinzufügen, JMP, Anweisungendecode # Der Befehlskodier wird nicht angezeigt, da es sich normalerweise um ein Chaos handelt, sehr speziell für den exakten Prozessor, der emuliert wird. Auch dieses Beispiel ist vereinfacht. # Viele CPUs haben verschiedene Möglichkeiten, die Adresse zu berechnen, anstatt nur # sie aus dem Wort zu holen, das dem OP-Code folgt. Daher haben diese CPUs statt nur einer # Sprunganweisung eine Familie mit verwandten Sprunganweisungen.
Für jede Zecke ist es üblich, dass nur einige Teile der CPU verwendet werden, wobei die verbleibenden Gruppen von Bits in der Mikroinstruktion NO-OPS sind. Mit sorgfältigem Design von Hardware und Mikrocode kann diese Eigenschaft ausgenutzt werden, um Vorgänge parallelise, die verschiedene Bereiche der CPU verwenden. In dem obigen Fall ist beispielsweise die ALU während der ersten Häkchen nicht erforderlich, sodass möglicherweise eine frühere arithmetische Anweisung abgeschlossen werden kann.
Vertikaler Mikrocode
Im vertikalen Mikrocode wird jede Mikroinstruktion signifikant codiert, dh die Bitfelder durchlaufen im Allgemeinen eine Zwischenkombinationslogik, die wiederum die Kontroll- und Sequenzierungssignale für interne CPU -Elemente (Alu, Register usw.) erzeugt. Dies steht im Gegensatz zu horizontalem Mikrocode, bei dem die Bitfelder entweder direkt die Steuer- und Sequenzierungssignale produzieren oder nur minimal codiert sind. Infolgedessen erfordert vertikaler Mikrocode kleinere Anweisungslängen und weniger Speicher, aber mehr Zeit zum Dekodieren, was zu einer langsameren CPU -Uhr führt.[27]
Ein vertikaler Mikrocode ist nur die Montagesprache eines einfachen konventionellen Computers, der einen komplexeren Computer emuliert. Einige Prozessoren, wie z. Dec Alpha Prozessoren und die CMOS -Mikroprozessoren auf späteren IBM -Mainframes System/390 und Z/ArchitekturVerwenden Sie den Maschinencode, der in einem speziellen Modus ausgeführt wird, der ihm Zugriff auf spezielle Anweisungen, spezielle Register und andere Hardware -Ressourcen bietet, die für den regulären Maschinencode nicht verfügbar sind, um einige Anweisungen und andere Funktionen zu implementieren.[28][29] wie Seitentabellenwanderungen auf Alpha -Prozessoren.[30] Das nennt man Palcode auf Alpha -Prozessoren und Millicode auf IBM Mainframe -Prozessoren.
Eine andere Form von vertikalem Mikrocode hat zwei Felder:
Feldauswahl | Feldwert |
Das Feldauswahl Wählt aus, welcher Teil der CPU durch dieses Wort des Steuereladens gesteuert wird. Das Feldwert kontrolliert diesen Teil der CPU. Mit dieser Art von Mikrocode entscheidet sich ein Designer ausdrücklich dafür, eine langsamere CPU zu machen, um Geld zu sparen, indem sie die nicht verwendeten Bits im Steuergeschäft reduzieren. Die verringerte Komplexität kann jedoch die Taktfrequenz der CPU erhöhen, was den Effekt einer erhöhten Anzahl von Zyklen pro Anweisung verringert.
Als Transistoren billiger wurden, dominierte horizontaler Mikrocode das Design von CPUs unter Verwendung von Mikrocode, wobei vertikaler Mikrocode seltener verwendet wurde.
Wenn sowohl vertikaler als auch horizontaler Mikrocode verwendet werden, kann der horizontale Mikrocode als als bezeichnet werden Nanocode oder Picocode.[31]
Beschreibbarer Kontroll Store
Ein paar Computer wurden mit Verwendung erstellt Beschreibbarer Mikrocode. In diesem Design wird der Mikrocode in einem RAM namen Beschreibbarer Kontroll Store oder WCS. Ein solcher Computer wird manchmal genannt Beschreibbarer Befehlssatz Computer (WISC).[32]
Viele experimentelle Prototypen verwenden Computer Beschreibbare Steuergeschäfte; Es gibt auch kommerzielle Maschinen, die beschreibbare Mikrocode verwenden, wie die Burroughs kleine Systeme, frühzeitig Xerox Workstations, die Dez Vax 8800 (Nautilus) Familie, die Symbolik L- und G-Machines, eine Reihe von IBM-Systemen/360 und System/370 Implementierungen, einige Dezember PDP-10 Maschinen,[33] und die Daten allgemeiner Eclipse MV/8000.[34]
Viele weitere Maschinen bieten als Option benutzerprogrammierbare Schreibsteuerspeicher, einschließlich der HP 2100, Dec PDP-11/60 und Varian -Datenmaschinen V-70-Serie Minicomputer. Das IBM System/370 enthält eine Einrichtung namens namens Initial-Mikroprogramm-Last (IML oder Impl)[35] das kann als Teil der Konsole aus der Konsole aufgerufen werden Stromreset (Por) oder von einem anderen Prozessor in a eng verbunden Multiprozessor Komplex.
Einige kommerzielle Maschinen, zum Beispiel IBM 360/85,[36][37] Sie haben sowohl einen schreibgeschützten Speicher als auch einen beschreibbaren Steuerspeicher für Microcode.
WCS bietet mehrere Vorteile, einschließlich der einfachen Patchierung des Mikroprogramms und für bestimmte Hardware -Generationen schnellere Zugriff als ROMs. Mit Benutzerprogrammierbarer WCs kann der Benutzer die Maschine für bestimmte Zwecke optimieren.
Beginnend mit dem Pentium Pro Im Jahr 1995 mehrere x86 CPUs haben beschreibbar Intel -Mikrocode.[38][39] Dies hat zum Beispiel Fehler in der zugelassen Intel Core 2 und Intel Xeon Mikrokodes, die durch Patchen ihrer Mikroprogramme fixiert werden sollen, anstatt die gesamten Chips zu ersetzen. Ein zweites herausragendes Beispiel ist der Satz von Mikrocode -Patches, die Intel für einige ihrer Prozessorarchitekturen von bis zu 10 Jahren im Alter angeboten hat, um den in ihren Entwürfen entdeckten Sicherheitslücken entgegenzuwirken. Gespenst und Kernschmelze - Was Anfang 2018 an die Börse ging.[40][41] Ein Mikrocode -Update kann von Linux installiert werden.[42] Freebsd,[43] Microsoft Windows,[44] oder das Motherboard -Bios.[45]
Vergleich zu VLIW und RISC
Der Entwurfstrend zu stark mikrokodierten Prozessoren mit komplexen Anweisungen begann in den frühen 1960er Jahren und dauerte bis Mitte der 1980er Jahre. An diesem Punkt die RISC Die Designphilosophie wurde prominenter.
Eine CPU, die Mikrocode verwendet, benötigt im Allgemeinen mehrere Taktzyklen, um einen einzelnen Befehl auszuführen. Ein Taktzyklus für jeden Schritt im Mikroprogramm für diesen Befehl. Etwas CISC Die Prozessoren enthalten Anweisungen, deren Ausführung sehr lange dauern kann. Solche Variationen stören beide Latenz unterbrechen und was in modernen Systemen weitaus wichtiger ist, Pipelining.
Bei der Gestaltung eines neuen Prozessors a Harte verdrahtete Kontrolle RISC hat die folgenden Vorteile gegenüber mikrokodiertem CISC:
- Die Programmierung hat sich weitgehend von der Montage -Ebene entfernt, sodass es sich nicht mehr lohnt, aus Produktivitätsgründen komplexe Anweisungen zu geben.
- Einfachere Anweisungssätze ermöglichen eine direkte Ausführung durch Hardware und vermeiden die Leistungsstrafe der mikrokodierten Ausführung.
- Die Analyse zeigt, dass komplexe Anweisungen selten verwendet werden, weshalb die ihnen gewidmeten Maschinenressourcen weitgehend verschwendet werden.
- Die Maschinenressourcen, die selten verwendeten komplexen Anweisungen gewidmet sind, werden besser verwendet, um die Leistung einfacherer, häufig verwendeter Anweisungen zu beschleunigen.
- Komplexe mikrokodierte Anweisungen können viele Taktzyklen erfordern, die variieren und schwierig sind Pipeline für eine erhöhte Leistung.
Es gibt auch Kontrapunkte:
- Die komplexen Anweisungen in stark mikrokodierten Implementierungen benötigen möglicherweise nicht viel zusätzliche Maschinenressourcen, außer für den Mikrocode -Raum. Beispielsweise wird dieselbe ALU häufig verwendet, um eine effektive Adresse zu berechnen und das Ergebnis aus den Operanden zu berechnen, z. B. das Original Z80, 8086, und andere.
- Die einfacheren Nicht-RISC-Anweisungen (d. H. Den direkten Speicher beinhalten Operanden) werden häufig von modernen Compilern verwendet. Selbst sofort werden arithmetische Operationen unmittelbar zu stapeln (d. H. Gedächtnisergebnis) verwendet. Obwohl solche Speichervorgänge, oft mit unterschiedlichen Länge, schwieriger zu pipeline sind, ist es immer noch vollständig machbar, dies zu tun - deutlich veranschaulicht durch die I486, AMD K5, Cyrix 6x86, Motorola 68040, etc.
- Nicht-RISC-Anweisungen führen inhärent mehr Arbeit pro Anweisung (im Durchschnitt) aus und sind normalerweise auch stark codiert, sodass sie eine geringere Gesamtgröße desselben Programms ermöglichen und daher eine bessere Verwendung von begrenzten Cache-Erinnerungen.
Viele RISC und VLIW Prozessoren sind so konzipiert, dass sie jede Anweisung (so lange er sich im Cache befindet) in einem einzigen Zyklus ausführen. Dies ist der Art und Weise, wie CPUs mit Mikrocode eine Mikroinstruktur pro Zyklus ausführen, sehr ähnlich. VLIW-Prozessoren haben Anweisungen, die sich ähnlich wie sehr breite horizontale Mikrocode verhalten, obwohl sie normalerweise ohne eine solche feinkörnige Kontrolle über die von Mikrocode bereitgestellte Hardware sind. RISC -Anweisungen ähneln manchmal dem engen vertikalen Mikrocode.
Mikrocode war in anwendungsspezifischen Prozessoren wie z. Netzwerkprozessoren, Mikrocontroller, Digitale Signalprozessoren, Kanalcontroller, Festplattencontroller, Netzwerkschnittstellencontroller, Grafikverarbeitungseinheitenund in anderen Hardware.
Mikrooperationen
Moderne CISC -Implementierungen wie die x86 Familie, dekodieren Anweisungen in dynamisch gepuffert Mikrooperationen ("μOps") mit einer Anweisung, die ähnlich wie RISC oder herkömmlichen Mikrocode codiert. Eine festverdrahtete Befehlsdekodie wird direkt für gemeinsame X86 -Anweisungen ausgestrahlt, fällt jedoch in ein herkömmlicheres Mikrocode -ROM zurück, das μOPs für komplexere oder selten verwendete Anweisungen enthält.[3]
Beispielsweise könnte ein X86 μOPs von Mikrocode nachschlagen, um komplexe mehrstufige Operationen wie Schleifen- oder String -Anweisungen zu verarbeiten. schwimmende Punkteinheit Transzendentale Funktionen oder ungewöhnliche Werte wie z. Denormale Zahlenund Spezialanweisungen wie z. CPUID.
Siehe auch
Anmerkungen
- ^ IBM horizontal mikrokodierte Prozessoren hatten mehrere Mikrobestellungen und registrieren Sie ausgewählte Felder, die eine Dekodierung erforderten.
Verweise
- ^ "Xucode: Eine innovative Technologie zur Implementierung komplexer Anweisungen ..." Intel. Abgerufen 2022-07-19.
- ^ a b c Kent, Allen; Williams, James G. (5. April 1993). Enzyklopädie der Informatik und Technologie: Band 28 - Ergänzung 13. New York: Marcel Dekker, Inc. ISBN 0-8247-2281-7. Archiviert vom Original am 20. November 2016. Abgerufen 17. Januar, 2016.
- ^ a b Fog, Agner (2017-05-02). Die Mikroarchitektur von Intel, AMD und über CPUs (PDF) (Bericht). Technische Universität Dänemark. Archiviert (PDF) vom Original am 2017-03-28. Abgerufen 2018-04-08.
- ^ "IBM PSERIES -Server - Mikrocode -Update für Ultrastar 73LZX (US73) 18/36 GB". Ibm.com. Archiviert Aus dem Original am 19. April 2019. Abgerufen 22. Januar, 2015.
- ^ Vax 9000 System Technische Beschreibung (PDF). Digital Equipment Corporation. Mai 1990. S. 3-5–3-32. EK-KA90S-TD-001.
- ^ VAX 8800 System Technischer Beschreibung Band 2 (PDF). Digital Equipment Corporation. Juli 1986. EK-KA882-TD-PRE.
- ^ Manning, B.M.; Mitby, J.S.; Nicholson, J.O. (November 1979). "Mikroprogrammierter Prozessor mit PLA -Steuerspeicher". IBM Technical Disclosure Bulletin. 22 (6). Archiviert vom Original am 2012-10-01. Abgerufen 2011-07-10.
- ^ Oft bezeichnet ein ROM/PLA -Kontrollgeschäft im Kontext der Nutzung in einer CPU; Supnik, Bob (24. Februar 2008). "J-11: Dec's Viertes und letzter PDP-11-Mikroprozessor-Design ... Features ... ROM/PLA Control Store". Archiviert vom Original am 07.07.09. Abgerufen 2011-07-10.
- ^ "6502 Bilder". Archiviert Aus dem Original am 4. März 2016. Abgerufen 22. Januar, 2015.
- ^ IBM System/360 Modell 50 Funktionseigenschaften (PDF). IBM. 1967. p. 7. A22-6898-1. Abgerufen 29. Oktober, 2021.
- ^ Everett, R.R.; Swain, F. E. (1947). "Wirbelwind i Computerblockdiagramme" (PDF). Bericht R-127. Labor für MIT -Servomechanismen. Archiviert von das Original (PDF) am 17. Juni 2012. Abgerufen 21. Juni, 2006.
{{}}
: Journal zitieren erfordert|journal=
(Hilfe) - ^ Wilkes, Maurice (1951). Der beste Weg, eine automatische Berechnungsmaschine zu entwerfen (Technischer Bericht). Universität von Manchester.
- ^ "Emidec 1100 Computer". Emidec.org.uk. Archiviert Aus dem Original am 12. Juni 2010 2010. Abgerufen 26. April, 2010.
- ^ IBM System/360 Modell 25 Funktionseigenschaften (PDF). IBM. Januar 1968. p. 22. A24-3510-0. Abgerufen 29. Oktober, 2021.
- ^ a b c Operationstheorie der Feldtechnik, 2030 Verarbeitungseinheit, System/360 Modell 30 (PDF) (First Ed.). IBM. Juni 1967. Y24-3360-1. Archiviert (PDF) vom Original am 2020-04-01. Abgerufen 2019-11-09.
- ^ Edward A. Snow; Daniel P. Siewiorek (1982). "Implementierung und Leistungsbewertung der PDP-11-Familie". Im Daniel P. Siewiorek; C. Gordon Bell; Allen Newell (Hrsg.). Computerstrukturen: Prinzipien und Beispiele. New York, NY: McGraw-Hill Book Company. p.671. ISBN 0-07-057302-6.
- ^ Soltis, Frank (September 1981). "Entwurf eines Verarbeitungssystems für kleine Unternehmensdaten". IEEE -Computer. 14: 77–93. doi:10.1109/c-m.1981.220610. S2CID 398484.
- ^ Frank G. Soltis (1997). In der AS/400, zweite Ausgabe. Duke Press. ISBN 978-1882419661.
- ^ "Interview: Kämpfe gegen den N64 (Naboo)". IGN64. 10. November 2000. Archiviert Aus dem Original am 13. September 2007. Abgerufen 27. März, 2008.
- ^ "Indiana Jones und die höllische Maschine". Ign. 12. Dezember 2000. Archiviert Aus dem Original am 27. September 2013. Abgerufen 24. September, 2013.
- ^ Meynink, Todd (28. Juli 2000). "Postmortem: Angel Studios 'Resident Evil 2 (N64 Version)". Gamasutra. United Business Media LLC. Archiviert Aus dem Original am 21. Oktober 2012. Abgerufen 18. Oktober, 2010.
- ^ Digital Scientific Meta 4 Serie 16 Computersystem Referenzhandbuch (PDF). Digital Scientific Corporation. Mai 1971. 7032mo. Archiviert (PDF) vom Original am 2020-01-14. Abgerufen 2020-01-14.
- ^ Digital Scientific Meta 4 Computersystem Referenzhandbuch (Nur-ROM-Speicher) (PDF). Digital Scientific Corporation. März 1970. 7024MO. Archiviert (PDF) vom Original am 2019-09-23. Abgerufen 2020-01-14.
- ^ Das vorläufige Systemhandbuch für digitale wissenschaftliche Meta 4 Serien 16 Computersysteme (PDF). Digital Scientific Corporation. Juni 1970. 7006MO. Archiviert (PDF) vom Original am 2019-09-23. Abgerufen 2020-01-14.
- ^ Digital Scientific Meta 4 Computersystem Typische ROM -Musterliste und -Programm zum Simulieren des IBM 1130 -Befehlssatzes (PDF). Digital Scientific Corporation. Januar 1970. M4/005P-170. Archiviert (PDF) vom Original am 2020-03-24. Abgerufen 2020-01-14.
- ^ "Western Digital 1600". Antiquetech. Archiviert von das Original am 3. Januar 2017. Abgerufen 5. Januar 2017.
- ^ Neal Harman; Andy Gimblett (2009-10-12). "CS-323: Hochleistungs-Mikroprozessoren-Kapitel 1. Mikroprogrammierung". mat.uson.mx. Archiviert vom Original am 2015-04-19. Abgerufen 2015-08-08.
- ^ Vaupel, Robert (2013). Hohe Verfügbarkeit und Skalierbarkeit von Mainframe -Umgebungen mit System Z und Z/OS als Beispiel. p. 26. ISBN 978-3-7315-0022-3.
- ^ Rogers, Bob (September bis Oktober 2012). "Was und warum von Zenterprise Millicode". IBM Systems Magazine. Archiviert vom Original am 2013-10-16. Abgerufen 2013-11-07.
- ^ "Palcode für Alpha -Mikroprozessoren -Systemdesignhandbuch" (PDF). Digital Equipment Corporation. Mai 1996. Archiviert (PDF) Aus dem Original am 15. August 2011. Abgerufen 7. November, 2013.
- ^ Spruth, Wilhelm (Dezember 2012). Das Design eines Mikroprozessors. Springer Science & Business Media. p. 31. ISBN 978-3-642-74916-2. Archiviert vom Original am 20. November 2016. Abgerufen 18. Januar, 2015.
- ^ Koopman, Philip Jr. (1987). "Beschreibbarer Anweisungssatz, stackorientierte Computer: Das WISC -Konzept" (PDF). Das Journal of Forth Application and Research: 49–71. Archiviert (PDF) vom Original am 2008-05-11.
- ^ Smith, Eric (3. September 2002). "Re: Wie groß war der Mikrocode in verschiedenen Maschinen". Newsgroup:Alt.folklore.computer. Usenet: [email protected]. Archiviert Aus dem Original am 26. Januar 2009. Abgerufen 18. Dezember 2008.
- ^ Smootherman, Mark. "CPSC 330: Die Seele einer neuen Maschine". Archiviert vom Original am 2011-06-05. Abgerufen 2011-07-10.
4096 x 75-Bit SRAM Wrichable Control Store: 74-Bit-Mikroinstruktion mit 1 Paritätsbit (18 Felder)
- ^ IBM System/370 Betriebsprinzipien (PDF). Vierte Edition. IBM. September 1974. S. 98, 245. GA22-7000-4. Archiviert (PDF) vom Original am 2012-2029. Abgerufen 2012-08-27.
- ^ IBM System/360 Modell 85 Funktionseigenschaften (PDF). ZWEITE AUSGABE. IBM. Juni 1968. A22-6916-1. Abgerufen 29. Oktober, 2021.
- ^ IBM System/360 Special Feature Beschreibung 709/7090/7094 Kompatibilitätsfunktion für IBM System/360 Modell 85. Erste Ausgabe. IBM. März 1969. GA27-2733-0.
- ^ Stiller, Andreas; Paul, Matthias R. (1996-05-12). "Prozessorgeflüster". C't - Magazin für Computertechnik. Trends & Nachrichten (auf Deutsch). Heise Verlag. Archiviert vom Original am 2017-08-28. Abgerufen 2017-08-28.
- ^ "9.11: Microcode -Update -Einrichtungen". Intel 64- und IA-32 Architektur-Softwareentwicklerhandbuch, Band 3A: Systemprogrammierhandbuch, Teil 1 (PDF). Intel. September 2016.
- ^ Intel Patches alle aktuellen CPUs verspricht Hardware -Korrekturen für die kommenden Chips der 8. Generation von Paul Alcorn am 15. März 2018
- ^ "Download Linux* Prozessor -Mikrocode -Datendatei". Archiviert vom Original am 2018-03-19. Abgerufen 2018-03-21.
- ^ "Intel Microcode -Aktualisierung für Linux". Archiviert von das Original Am 2012-02-26.
- ^ "[Ports] Index von/head/sysutils/cpupdate". FreeBSD.org. Archiviert vom Original am 2020-04-01. Abgerufen 2020-01-16.
- ^ "Es ist ein Mikrococode -Zuverlässigkeits -Update verfügbar, das die Zuverlässigkeit von Systemen verbessert, die Intel -Prozessoren verwenden.". Archiviert vom Original am 2008-02-23. Abgerufen 2008-02-25.
- ^ "Serverprodukte - BIOS -Update erforderlich, wenn fehlende Mikrocode -Nachricht während des Posts angezeigt wird". Intel. 24. Januar 2013. Archiviert von das Original am 1. September 2014.
Weitere Lektüre
- Smith, Richard E. (1988). "Ein historischer Überblick über die Computerarchitektur". Annalen der Geschichte des Computers. 10 (4): 277–303. doi:10.1109/mahc.1988.10039. S2CID 16405547. Abgerufen 21. Juni, 2006.
- Smootherman, Mark (2005). "Eine kurze Geschichte der Mikroprogrammierung". Abgerufen 30. Juli, 2006.
{{}}
: Journal zitieren erfordert|journal=
(Hilfe) - Wilkes, M.V. (1986). "Die Entstehung der Mikroprogrammierung". Annalen der Geschichte des Computers. 8 (2): 116–126. doi:10.1109/mahc.1986.10035. S2CID 1978847. Abgerufen 7. August, 2006.
- Wilkes, M. V.; Stringer, J. B. (April 1953). "Mikroprogrammierung und das Design der Steuerungsschaltungen in einem elektronischen digitalen Computer". Verfahren der Cambridge Philosophical Society. 49 (Pt. 2): 230–238. Bibcode:1953pcps ... 49..230w. doi:10.1017/s0305004100028322. Abgerufen 23. August, 2006.
- Husson, S. S. (1970). Mikroprogrammierende Prinzipien und Praktiken. Prentice-Hall. ISBN 0-13-581454-5.
- Tucker, S. G. (1967). "Mikroprogrammsteuerung für System/360". IBM Systems Journal. 6 (4): 222–241. doi:10.1147/sj.64.0222.
Externe Links
- Beschreibbarer Befehlssatz Computer
- Kondensator schreibgeschützt
- Transformator schreibgeschützt
- Eine kurze Vorgeschichte der Mikroprogrammierung
- Intel Processor Microcode Security Update (Behebt die Probleme beim Ausführen von 32-Bit-virtuellen Maschinen im PAE-Modus)
- Hinweise zu Intel -Mikrocode -Updates, März 2013, von Ben Hawkes, archiviert vom Original am 7. September 2015
- Loch in Intels Bug-Busting-Funktion zu sehen, EE mal, 2002, von Alexander Wolfe, archiviert vom Original am 9. März 2003
- Opteron Exposed: Reverse Engineering AMD K8 Microcode -Updates, 26. Juli 2004
- WEPSIM: Ein interaktiver Online -Bildungssimulator, der Mikrodesign-, Mikroprogramm- und Assembler -Sprachprogrammierung integriert, 26. Juli 2022