Mikrocode

Mikrocode ist eine Schicht von Instruktionen des Hardware-Niveaus oder Datenstrukturen, die an der Durchführung von höheren Niveau-Maschinencodeinstruktionen in vielen Computern und anderen Verarbeitern beteiligt sind; es wohnt im speziellen Schnellspeicher und übersetzt Maschineninstruktionen in Folgen von ausführlichen Operationen des Stromkreis-Niveaus. Es hilft, die Maschineninstruktionen von der zu Grunde liegenden Elektronik zu trennen, so dass Instruktionen entworfen und freier verändert werden können. Es macht es auch ausführbar, komplizierte Mehrschritt-Instruktionen zu bauen, während es noch die Kompliziertheit des elektronischen Schaltsystemes im Vergleich zu anderen Methoden reduziert. Das Schreiben des Mikrocodes wird häufig Mikroprogrammierung genannt, und der Mikrocode in einer besonderen Verarbeiter-Durchführung wird manchmal ein Mikroprogramm genannt.

Moderner Mikrocode wird normalerweise von einem Ingenieur während der Verarbeiter-Designphase geschrieben und in einem ROM (ROM-Speicher) oder PLA (programmierbare Logikreihe) Struktur, versorgt

oder eine Kombination von beiden.

Jedoch bestehen Maschinen auch, die einige (oder alle) Mikrocode haben, der in SRAM oder Blitz-Gedächtnis versorgt ist. Das wird ein schreibbares Kontrolllager im Zusammenhang von Computern traditionell angezeigt. Komplizierte Digitalverarbeiter können auch mehr als einen (vielleicht Mikrocode gestützt) Kontrolleinheit verwenden, um Teilaufgaben zu delegieren, die (mehr oder weniger) asynchron in der Parallele durchgeführt werden müssen. Mikrocode ist allgemein nicht sichtbar oder durch einen normalen Programmierer veränderlich, nicht sogar durch einen Zusammenbau-Programmierer. Verschieden vom Maschinencode, der häufig etwas Vereinbarkeit unter verschiedenen Verarbeitern in einer Familie behält, mikrocodieren Sie nur Läufe auf dem genauen elektronischen Schaltsystem, für das es entworfen wird, weil es einen innewohnenden Teil des besonderen Verarbeiter-Designs selbst einsetzt.

Das umfassendere Mikrocodieren ist auch verwendet worden, um kleinen und einfachen Mikroarchitekturen zu erlauben, mit stärkeren Architekturen mit der breiteren Wortlänge, mehr Ausführungseinheiten und so weiter wettzueifern; eine relativ einfache Weise, Softwarevereinbarkeit zwischen verschiedenen Produkten in einer Verarbeiter-Familie zu erreichen.

Einige Hardware-Verkäufer, besonders IBM, gebrauchen den Begriff als ein Synonym für firmware, so dass der ganze Code in einem Gerät, entweder Mikrocode oder Maschinencode, Mikrocode genannt wird (solcher als in einer Festplatte zum Beispiel, die normalerweise beide enthält).

Übersicht

Die Elemente, die ein Mikroprogramm zusammensetzen, bestehen auf einem niedrigeren Begriffsniveau als ein normales Anwendungsprogramm. Jedes Element wird durch das "Mikro"-Präfix unterschieden, um Verwirrung zu vermeiden: Mikrobefehl, Mikromonteur, Mikroprogrammierer, Mikroarchitektur, usw.

Der Mikrocode wohnt gewöhnlich im Hauptgedächtnis, aber in einem speziellen hohen Geschwindigkeitsgedächtnis, genannt das Kontrolllager nicht. Es könnte entweder read-only-sein oder lesen - schreiben Gedächtnis. Im letzten Fall würde der Mikrocode ins Kontrolllager von einem anderen Speichermedium als ein Teil der Initialisierung der Zentraleinheit geladen, und es konnte verändert werden, um Programmfehler im Befehlssatz zu korrigieren, oder neue Maschineninstruktionen durchzuführen.

Mikroprogramme bestehen aus der Reihe von Mikrobefehlen. Diese Mikrobefehle kontrollieren die Zentraleinheit an einem sehr grundsätzlichen Niveau des Hardware-Schaltsystemes. Zum Beispiel könnte ein einzelner typischer Mikrobefehl die folgenden Operationen angeben:

  • Verbinden Sie Register 1 mit der "A" Seite des ALU
  • Verbinden Sie Register 7 mit der "B" Seite des ALU
  • Veranlassen Sie den ALU, Two'S-Ergänzungshinzufügung durchzuführen
  • Gehen Sie unter der ALU'S tragen Eingang zur Null
  • Versorgen Sie den Ergebnis-Wert im Register 8
  • Aktualisieren Sie die "Bedingungscodes" mit den ALU Status-Fahnen ("Negativ", "Null", "Überschwemmung" und "Tragen Sie")
  • Mikrosprung zu MicroPC nnn für den folgenden Mikrobefehl

Um gleichzeitig Eigenschaften ganzen Verarbeiters in einem Zyklus zu kontrollieren, ist der Mikrobefehl häufig breiter als 50 Bit, z.B, 128 Bit auf einem 360/85 mit einer Emulator-Eigenschaft. Mikroprogramme werden sorgfältig entworfen und für die schnellstmögliche Ausführung optimiert, da ein langsames Mikroprogramm eine langsame Maschineninstruktion nachgeben würde, die der Reihe nach alle Programme mit dieser Instruktion verursachen würde, langsam zu sein.

Der Grund für die Mikroprogrammierung

Mikrocode wurde als eine einfachere Methode ursprünglich entwickelt, die Kontrolllogik für einen Computer zu entwickeln. Am Anfang waren Zentraleinheitsbefehlssätze "festverdrahtet". Jeder Schritt musste herbeiholen, decodieren und die Maschineninstruktionen durchführen (einschließlich irgendwelcher Operand-Adressberechnungen, liest und schreibt) wurde direkt durch die kombinatorische Logik und das ziemlich minimale folgende Zustandmaschinenschaltsystem kontrolliert. Während sehr effizient, hat das Bedürfnis nach starken Befehlssätzen mit dem Mehrschritt-Wenden und den komplizierten Operationen (sieh unten) solche "festverdrahteten" Verarbeiter schwierig gemacht, zu entwerfen und die Fehler zu beseitigen; hoch verschlüsselt und Instruktionen der verschiedenen Länge kann beitragen das ebenso, besonders wenn sehr unregelmäßig, encodings wird verwendet.

Mikrocode hat den Job durch das Erlauben von viel Verhalten des Verarbeiters und die Programmierung des Modells vereinfacht, das über Mikroprogramm-Routinen aber nicht durch das hingebungsvolle Schaltsystem zu definieren ist. Sogar spät im Designprozess konnte Mikrocode leicht geändert werden, wohingegen hart verdrahtete Zentraleinheitsdesigns sehr beschwerlich waren, um sich, so dieses sehr erleichterte Zentraleinheitsdesign zu ändern.

Von den 1940er Jahren bis zum Ende der 1970er Jahre wurde viel Programmierung auf der Zusammenbau-Sprache getan; höhere Niveau-Instruktionen haben größere Programmierer-Produktivität bedeutet, so war ein wichtiger Vorteil des Mikrocodes die Verhältnisbequemlichkeit, durch die starke Maschineninstruktionen definiert werden konnten. Während der 1970er Jahre sind Zentraleinheitsgeschwindigkeiten schneller gewachsen als Speichergeschwindigkeiten und zahlreiche Techniken wie Speicherblock-Übertragung, Speichervorabruf und geheime Mehrniveau-Lager wurden verwendet, um das zu erleichtern. Hohe Maschineninstruktionen, gemacht möglich durch den Mikrocode, haben weiter geholfen, weil weniger kompliziertere Maschineninstruktionen weniger Speicherbandbreite verlangen. Zum Beispiel konnte eine Operation auf einer Charakter-Schnur als eine einzelne Maschineninstruktion getan werden, so vielfache Instruktionsabrufe vermeidend.

Architekturen mit durch komplizierte Mikroprogramme durchgeführten Befehlssätzen haben IBM System/360 und Digital Equipment Corporation VAX eingeschlossen. Die Annäherung von immer komplizierteren mikrocodedurchgeführten Befehlssätzen wurde später CISC genannt. Eine abwechselnde Annäherung, die in vielen Mikroprozessoren verwendet ist, soll PLAs oder ROMs (statt der kombinatorischen Logik) hauptsächlich für die Instruktionsentzifferung verwenden, und eine einfache Zustandmaschine lassen (ohne viel, oder irgendwelcher, Mikrocode) tun die meisten sequencing. Der verschiedene praktische Gebrauch des Mikrocodes und der verwandten Techniken (wie PLAs) ist im Laufe der Jahre, sowie Annäherungen daran zahlreich gewesen, wo, und an das Ausmaß es gewöhnt sein sollte. Es wird noch in modernen Zentraleinheitsdesigns verwendet.

Andere Vorteile

Mikroprogramme eines Verarbeiters funktionieren auf einem primitiveren, völlig verschiedenem und viel mehr Hardware-orientierter Architektur als die normalen Programmierern sichtbaren Montageanleitungen. In der Koordination mit der Hardware führt der Mikrocode die mit dem Programmierer sichtbare Architektur durch. Die zu Grunde liegende Hardware braucht keine feste Beziehung zur sichtbaren Architektur zu haben. Das macht es möglich, eine gegebene Befehlssatz-Architektur auf einem großen Angebot an zu Grunde liegenden Hardware-Mikroarchitekturen durchzuführen.

Das Tun ist so wichtig, wenn binäre Programm-Vereinbarkeit ein Vorrang ist. Auf diese Weise können vorher vorhandene Programme auf der völlig neuen Hardware laufen, ohne Revision und Wiederkompilation zu verlangen. Jedoch kann es eine Leistungsstrafe für diese Annäherung geben. Die Umtausche zwischen der Anwendung rückwärts gerichtete Vereinbarkeit gegen die Zentraleinheitsleistung werden von Zentraleinheitsdesigningenieuren heiß diskutiert.

IBM System/360 hat eine 32-Bit-Architektur mit 16 Mehrzweckregistern, aber die meisten Durchführungen des Systems/360 verwenden wirklich Hardware, die eine viel einfachere zu Grunde liegende Mikroarchitektur durchgeführt hat; zum Beispiel hatte das Modell 30 des Systems/360 8-Bit-Datenpfade zur arithmetischen Logikeinheit (ALU) und dem Hauptgedächtnis und hat die Mehrzweckregister in einer speziellen Einheit des Hoch-Gangkerngedächtnisses durchgeführt, und das Modell 40 des Systems/360 hatte 8-Bit-Datenpfade zum ALU und 16-Bit-Datenpfade zum Hauptgedächtnis und hat auch die Mehrzweckregister in einer speziellen Einheit des Hoch-Gangkerngedächtnisses durchgeführt. Das Modell 50 und Modell 65 hatten volle 32-Bit-Datenpfade; das Modell 50 hat die Mehrzweckregister in einer speziellen Einheit des Hoch-Gangkerngedächtnisses durchgeführt, und das Modell 65 hat die Mehrzweckregister in schnelleren Transistor-Stromkreisen durchgeführt. Auf diese Weise hat Mikroprogrammierung IBM ermöglicht, viele Modelle des Systems/360 mit der wesentlich verschiedenen Hardware und dem Überspannen einer breiten Reihe von Kosten und Leistung zu entwerfen, während sie sie alle architektonisch vereinbar gemacht hat. Das hat drastisch den Betrag der einzigartigen Systemsoftware reduziert, die für jedes Modell geschrieben werden musste.

Eine ähnliche Annäherung wurde von Digital Equipment Corporation in ihrer VAX Familie von Computern verwendet. Am Anfang hat ein TTL 32-Bit-Verarbeiter in Verbindung mit dem Unterstützen des Mikrocodes die mit dem Programmierer sichtbare Architektur durchgeführt. Später haben VAX Versionen verschiedene Mikroarchitekturen verwendet, noch hat sich die mit dem Programmierer sichtbare Architektur nicht geändert.

Mikroprogrammierung hat auch die Kosten von Feldänderungen reduziert, um Defekte (Programmfehler) im Verarbeiter zu korrigieren; ein Programmfehler konnte häufig bestochen werden, indem er einen Teil des Mikroprogramms aber nicht durch Änderungen ersetzt hat, die zur Hardware-Logik und Verdrahtung machen werden.

Geschichte

1947 hat das Design des MIT Wirbelwinds das Konzept eines Kontrolllagers als eine Weise eingeführt, Computerdesign zu vereinfachen und sich außer Ad-Hoc-Methoden zu bewegen. Das Kontrolllager war eine Diode-Matrix: Ein zweidimensionales Gitter, wo eine Dimension akzeptiert hat, "dass Kontrollzeitpulse" von der inneren Uhr der Zentraleinheit, und anderes verbundenes Signale auf Toren und anderen Stromkreisen kontrolliert haben. Ein "Pulsverteiler" würde die Pulse nehmen, die durch die Zentraleinheitsuhr erzeugt sind, und sie in acht getrennte Zeitpulse zerbrechen, von denen jeder eine verschiedene Reihe des Gitters aktivieren würde. Als die Reihe aktiviert wurde, würde sie die damit verbundenen Kontrollsignale aktivieren.

Beschrieben ein anderer Weg, die durch das Kontrolllager übersandten Signale werden viel wie eine Spieler-Klavier-Rolle gespielt. D. h. sie werden von einer Folge von sehr breiten Wörtern kontrolliert, die Bit gebaut sind, und sie werden folgend "gespielt". In einem Kontrolllager, jedoch, ist das "Lied" kurz und unaufhörlich wiederholt.

1951 hat Maurice Wilkes dieses Konzept erhöht, indem er bedingte Ausführung, ein Konzept hinzugefügt hat, das mit einem bedingten in der Computersoftware verwandt ist. Seine anfängliche Durchführung hat aus einem Paar von matrices bestanden, der erste hat Signale auf diese Art des Stürmischen Kontrolllagers erzeugt, während die zweite Matrix ausgewählt hat, welche Reihe von Signalen (das Mikroprogramm-Instruktionswort, wie es war), auf dem folgenden Zyklus anzurufen. Conditionals wurden durch die Versorgung einer Weise durchgeführt, wie eine einzelne Linie im Kontrolllager von Alternativen in der zweiten Matrix wählen konnte. Das hat die Kontrollsignale bedingt durch das entdeckte innere Signal gemacht. Wilkes hat den Begriff Mikroprogrammierung ins Leben gerufen, um diese Eigenschaft zu beschreiben und es von einem einfachen Kontrolllager zu unterscheiden.

Beispiele von mikroprogrammierten Systemen

  • Genau wie viele andere komplizierte mechanische Geräte hat der analytische Motor von Charles Babbage Banken von Nocken verwendet, um jede Operation zu kontrollieren, d. h. es hatte ein Read-Only-Kontrolllager. Als solcher verdient es es, als der erste mikroprogrammierte zu entwerfende Computer erkannt zu werden, selbst wenn es in der Hardware noch nicht begriffen worden ist.
  • EMIDEC 1100 hat angeblich ein festverdrahtetes Kontrolllager verwendet, das aus Leitungen besteht, die durch ferrite Kerne eingefädelt sind, die als 'die Schnürsenkel' bekannt sind.
  • Die meisten Modelle der Reihe von IBM System/360 wurden mikroprogrammiert:

:* Das Modell 25 war unter Modellen des Systems/360 im Verwenden der Spitze 16k Bytes der Kernlagerung einzigartig, um die Kontrolllagerung für das Mikroprogramm zu halten. 2025 hat eine 16-Bit-Mikroarchitektur mit sieben Kontrollwörtern (oder Mikrobefehle) verwendet. An der Macht oder vollem Systemrücksetzen wurde der Mikrocode vom Karte-Leser geladen. Der Wetteifer von IBM 1410 für dieses Modell wurde dieser Weg geladen.

:* Das Modell 30, das langsamste Modell in der Linie, hat eine 8-Bit-Mikroarchitektur mit nur einigen Hardware-Registern verwendet; mit allem, was der Programmierer gesehen hat, wurde durch das Mikroprogramm wettgeeifert. Der Mikrocode für dieses Modell wurde auch auf speziellen geschlagenen Karten gehalten, die innerhalb der Maschine in einem hingebungsvollen Leser pro Karte, genannt "CROS" Einheiten (Kondensatorread-Only-Lagerung) versorgt wurden. Ein zweiter CROS Leser wurde für mit dem 1620-Wetteifer bestellte Maschinen installiert.

:* Das Modell 40 hat 56-Bit-Kontrollwörter verwendet. Der 2040-Kasten führt sowohl das System/360 Hauptverarbeiter als auch den Mehrfachkanal (der Eingabe/Ausgabe-Verarbeiter) durch. Dieses Modell hat gewidmete Leser "von TROS" verwendet, die "CROS" Einheiten, aber mit einer induktiven Erholung (Transformator Read-Only-Laden) ähnlich sind.

:* Das Modell 50 hatte zwei innere datapaths, die in der Parallele funktioniert haben: 32 Bit datapath verwendet für arithmetische Operationen und einen 8-Bit-Datenpfad in einigen logischen Operationen verwendet. Das Kontrolllager hat 90-Bit-Mikrobefehle verwendet.

:* Das Modell 85 hatte getrennten Instruktionsabruf (I-Einheit) und Ausführung (E-Einheit), um hohe Leistung zur Verfügung zu stellen. Die I-Einheit ist kontrollierte Hardware. Die E-Einheit wird mikroprogrammiert; die Kontrollwörter sind auf einem grundlegenden 360/85 108 Bit breit und breiter, wenn eine Emulator-Eigenschaft installiert wird.

  • Der NCR 315 wurde mit angeschlossenen ferrite Kernen der Hand mikroprogrammiert (ein ROM) hat durch eine Ablaufsteuerung mit der bedingten Ausführung pulsiert. Durch die Kerne aufgewühlte Leitungen wurden für verschiedene Daten und Logikelemente im Verarbeiter ermöglicht.
  • Digital Equipment Corporation PDP-11 Verarbeiter, mit Ausnahme von PDP-11/20, wurde mikroprogrammiert.
  • Viele Systeme vom Burroughs wurden mikroprogrammiert:

:* Der B700 "Mikroprozessor" hat Anwendungsniveau opcodes das Verwenden von Folgen von im Hauptgedächtnis versorgten 16-Bit-Mikrobefehlen durchgeführt, jeder von diesen war entweder eine Operation der Register-Last oder hat zu einzelnen 56 Bit "nanocode" im ROM-Speicher versorgte Instruktion kartografisch dargestellt. Das hat verhältnismäßig einfacher Hardware erlaubt, entweder als ein Großrechner peripherischer Kontrolleur zu handeln oder als ein eigenständiger Computer paketiert zu werden.

:* Der B1700 wurde mit der radikal verschiedenen Hardware einschließlich des Bit-addressable Hauptgedächtnis durchgeführt, aber hatte eine ähnliche Mehrschicht-Organisation. Das Betriebssystem würde vorladen der Dolmetscher für beliebige Sprache war erforderlich. Diese Dolmetscher haben verschiedene virtuelle Maschinen für das COBOL, Fortran usw. präsentiert.

  • Mikrodaten haben Computer erzeugt, in denen der Mikrocode für den Benutzer zugänglich war; das hat die Entwicklung von kundenspezifischen Assemblerniveau-Instruktionen erlaubt. Die Wirklichkeit von Mikrodaten Betriebssystemdesign hat umfassenden Gebrauch dieser Fähigkeit gemacht.
  • Das Wirklichkeitscoprozessor des Nintendo 64, das als die in einer Prozession gehende Grafikeinheit der Konsole und Audioverarbeiter, verwerteter Mikrocode dient; es ist möglich, neue Effekten durchzuführen oder den Verarbeiter zu zwicken, um die gewünschte Produktion zu erreichen. Einige wohl bekannte Beispiele des kundenspezifischen Mikrocodes schließen Faktor 5 N64 Hafen der Indiana Joness und der Höllischen Maschine ein, und.
  • Der VU0 und die VU1 Vektor-Einheiten in Sony PlayStation 2 sind mikroprogrammierbar; tatsächlich war VU1 nur über den Mikrocode für die ersten mehreren Generationen des SDK zugänglich.

Durchführung

Jeder Mikrobefehl in einem Mikroprogramm stellt die Bit zur Verfügung, die die funktionellen Elemente kontrollieren, die innerlich eine Zentraleinheit zusammensetzen. Der Vorteil gegenüber einer festverdrahteten Zentraleinheit besteht darin, dass innere Zentraleinheitskontrolle eine Spezialform eines Computerprogramms wird. Mikrocode gestaltet so eine komplizierte elektronische Designherausforderung (die Kontrolle einer Zentraleinheit) in weniger - komplizierte Programmierherausforderung um.

Um das auszunutzen, wurden Computer in mehrere Teile geteilt:

Eine Mikroablaufsteuerung hat das folgende Wort des Kontrolllagers aufgepickt. Eine Ablaufsteuerung ist größtenteils ein Schalter, aber hat gewöhnlich auch eine Weise, zu einem verschiedenen Teil des Kontrolllagers abhängig von einigen Daten, gewöhnlich Daten vom Instruktionsregister und immer einem Teil des Kontrolllagers zu springen. Die einfachste Ablaufsteuerung ist gerade ein von einigen Bit des Kontrolllagers geladenes Register.

Ein Register-Set ist ein schnelles Gedächtnis, das die Daten der in einer Prozession gehenden Haupteinheit enthält. Es kann den Programm-Schalter, den Stapel-Zeigestock und die anderen Zahlen einschließen, die für den Anwendungsprogrammierer nicht leicht zugänglich sind. Häufig ist das Register-Set eine dreifach getragene Register-Datei, d. h. zwei Register, können und ein Drittel geschrieben zur gleichen Zeit gelesen werden.

Eine arithmetische und Logikeinheit führt Berechnungen, gewöhnlich Hinzufügung, logische Ablehnung, eine richtige Verschiebung, und logisch durch UND. Es führt häufig andere Funktionen ebenso durch.

Es kann auch ein Speicheradressregister und ein Speicherdatenregister, verwendet geben, um auf die Hauptcomputerlagerung zuzugreifen.

Zusammen bilden diese Elemente eine "Ausführungseinheit". Die meisten modernen Zentraleinheiten haben mehrere Ausführungseinheiten. Sogar einfache Computer haben gewöhnlich eine Einheit, um Gedächtnis und einen anderen zu lesen und zu schreiben, um Benutzercode durchzuführen.

Diese Elemente konnten häufig als ein einzelner Span zusammengebracht werden. Dieser Span ist in einer festen Breite gekommen, die eine 'Scheibe' durch die Ausführungseinheit bilden würde. Diese waren als 'Bit Scheibe' Chips bekannt. Der AMD Am2900 Familie ist eines der am besten bekannten Beispiele von Bit-Scheibe-Elementen.

Die Teile der Ausführungseinheiten und der Ausführungseinheiten selbst werden durch ein Bündel von Leitungen genannt einen Bus miteinander verbunden.

Programmierer entwickeln Mikroprogramme. Die grundlegenden Werkzeuge sind Software: Ein Mikromonteur erlaubt einem Programmierer, den Tisch von Bit symbolisch zu definieren. Ein Simulator-Programm führt die Bit ebenso als die Elektronik (hoffentlich) durch, und erlaubt viel mehr Freiheit, beim Mikroprogramm die Fehler zu beseitigen.

Nachdem das Mikroprogramm beendet, und umfassend geprüft wird, ist es manchmal als der Eingang an ein Computerprogramm gewöhnt, das Logik baut, um dieselben Daten zu erzeugen. Dieses Programm ist denjenigen ähnlich, die verwendet sind, um eine programmierbare Logikreihe zu optimieren. Kein bekanntes Computerprogramm kann optimale Logik erzeugen, aber sogar ziemlich gute Logik kann die Anzahl von Transistoren von der für ein ROM-Kontrolllager erforderlichen Zahl gewaltig vermindern. Das reduziert die Kosten und durch eine Zentraleinheit verwendete Macht.

Mikrocode kann als horizontal oder vertikal charakterisiert werden. Das bezieht sich in erster Linie darauf, ob jeder Mikrobefehl direkt Zentraleinheitselemente (horizontaler Mikrocode) kontrolliert, oder nachfolgende Entzifferung durch die kombinatorische Logik vor dem Tun so (vertikaler Mikrocode) verlangt. Folglich ist jeder horizontale Mikrobefehl breiter (enthält mehr Bit), und besetzt mehr Abstellraum als ein vertikaler Mikrobefehl.

Horizontaler Mikrocode

Horizontaler Mikrocode wird normalerweise in einem ziemlich breiten Kontrolllager enthalten; es ist für jedes Wort ziemlich üblich, 56 Bit oder mehr zu sein. Auf jeder Zecke einer Ablaufsteuerungsuhr wird ein Mikrocodewort gelesen, decodiert und verwendet, um die funktionellen Elemente zu kontrollieren, die die Zentraleinheit zusammensetzen.

In einer typischen Durchführung umfasst ein horizontales Mikroprogramm-Wort ziemlich dicht definierte Gruppen von Bit. Zum Beispiel könnte eine einfache Einordnung sein:

Für diesen Typ der Mikromaschine, um eine SPRUNG-Instruktion mit der Adresse im Anschluss an den opcode durchzuführen, könnte der Mikrocode zwei Uhr-Zecken verlangen; der Ingenieur, der es entwirft, würde Mikroassemblerquellcode schreiben, der etwas wie das schaut:

# ist Jede Linie, die mit einem Zahl-Zeichen anfängt, eine Anmerkung

# ist Das gerade ein Etikett, die gewöhnliche Weise, wie Monteure symbolisch einen vertreten

# Speicheradresse.

InstructionJUMP:

#, um sich auf die folgende Instruktion vorzubereiten, decodiert die Instruktion - Mikrocode hat bereits

# hat den Programm-Schalter zum Speicheradressregister bewegt. Diese Instruktion holt herbei

# die Zieladresse der Sprung-Instruktion vom Speicherwort im Anschluss an den

# springen opcode durch das Kopieren vom Speicherdatenregister bis das Speicheradressregister.

# gibt Das dem Speichersystem zwei Uhr-Zecken, um den folgenden herbeizuholen

# Instruktion zum Speicherdatenregister für den Gebrauch durch die Instruktion decodieren.

# bedeutet Die Ablaufsteuerungsinstruktion "als nächstes" gerade tragen 1 zur Kontrollwortadresse bei.

MDR, NIEMAND, MRZ, KOPIE, DANN NIEMAND

# legt Das die Adresse der folgenden Instruktion in den PC.

# gibt Das das Speichersystem, das eine Uhr-Zecke, um den Abruf zu beenden, auf dem angefangen

hat

# vorheriger Mikrobefehl.

# ist Die Ablaufsteuerungsinstruktion, zum Anfang der Instruktion zu springen, decodieren.

AM 1. MRZ, PC, TRAGEN JMP, InstructionDecode BEI

# decodiert Die Instruktion wird nicht gezeigt, weil es gewöhnlich eine Verwirrung, sehr besonderer ist

# zum genauen Verarbeiter, der wird wetteifert. Sogar dieses Beispiel wird vereinfacht.

# haben Viele Zentraleinheiten mehrere Weisen, die Adresse zu berechnen, anstatt gerade herbeizuholen

# es vom Wort im Anschluss an den Op-Code. Deshalb, aber nicht gerade ein

# Sprung-Instruktion, jene Zentraleinheiten haben eine Familie von zusammenhängenden Sprung-Instruktionen.

Für jede Zecke ist es üblich zu finden, dass nur einige Teile der Zentraleinheit mit den restlichen Gruppen von Bit im Mikrobefehl verwendet werden, der nein ist. Mit dem sorgfältigen Design der Hardware und des Mikrocodes kann dieses Eigentum zu parallelise Operationen ausgenutzt werden, die verschiedene Gebiete der Zentraleinheit verwenden, zum Beispiel im Fall über dem ALU ist während der ersten Zecke nicht erforderlich, so konnte es potenziell verwendet werden, um eine frühere arithmetische Instruktion zu vollenden.

Vertikaler Mikrocode

Im vertikalen Mikrocode wird jeder Mikrobefehl verschlüsselt — d. h. die Bit-Felder können Zwischenglied combinatory Logik durchführen, die der Reihe nach die wirklichen Kontrollsignale für innere Zentraleinheitselemente (ALU, Register, usw.) erzeugt. Im Gegensatz mit dem horizontalen Mikrocode erzeugen die Bit-Felder selbst direkt die Kontrollsignale. Folglich vertikaler Mikrocode verlangt kleinere Instruktionslängen und weniger Lagerung, aber verlangt, dass mehr Zeit decodiert, auf eine langsamere Zentraleinheitsuhr hinauslaufend.

Einige vertikale Mikrocodes sind gerade die Zusammenbau-Sprache eines einfachen herkömmlichen Computers, der mit einem komplizierteren Computer wetteifert.

Eine andere Form des vertikalen Mikrocodes hat zwei Felder:

Das "ausgesuchte Feld" wählt aus, welcher Teil der Zentraleinheit von diesem Wort des Kontrolllagers kontrolliert wird.

Der "Feldwert" kontrolliert wirklich diesen Teil der Zentraleinheit.

Mit diesem Typ des Mikrocodes beschließt ein Entwerfer ausführlich, eine langsamere Zentraleinheit zu machen, um Geld zu sparen, indem er die unbenutzten Bit im Kontrolllager reduziert;

jedoch kann die reduzierte Kompliziertheit die Uhr-Frequenz der Zentraleinheit vergrößern, die die Wirkung einer gesteigerten Zahl von Zyklen pro Instruktion vermindert.

Da Transistoren preiswerter geworden sind, horizontaler Mikrocode gekommen ist, um das Design von Zentraleinheiten mit dem Mikrocode mit dem vertikalen Mikrocode zu beherrschen, nicht mehr verwendet.

Writable kontrollieren Läden

Einige Computer wurden mit "writable Mikrocode" gebaut — anstatt den Mikrocode im ROM oder der festverdrahteten Logik zu versorgen, der Mikrocode wurde in einem RAM genannt ein Writable-Kontrolllager oder WCS versorgt.

Solch ein Computer wird manchmal einen Writable Befehlssatz-Computer oder WISC genannt.

Viele dieser Maschinen waren experimentelle Labormuster, wie die WISC Zentraleinheit/16

und der RTX 32P.

Es gab auch kommerzielle Maschinen, die Writable-Mikrocode, wie frühe Xerox-Arbeitsplätze, der DEZ VAX 8800 ("Nautilus") Familie, die Symbolik L- und G-Maschinen und mehrere Durchführungen von IBM System/370 verwendet haben. PDP-10 einige Maschinen im DEZ haben ihren Mikrocode in SRAM Chips versorgt (ungefähr 80 Bit breiter x 2 Kwords), der normalerweise auf dem Anschalten durch eine andere Vorderende-Zentraleinheit geladen wurde. Noch viele Maschinen haben benutzerprogrammierbare Writable-Kontrolllager als eine Auswahl (einschließlich des HP 2100, DEZ PDP-11/60 und Varian Datenmaschinen V-70 Reihe-Minicomputer) angeboten.

Der Mentec M11 und Mentec M1 haben seinen Mikrocode in SRAM Chips versorgt, die auf dem Anschalten durch eine andere Zentraleinheit geladen sind.

Die Daten Allgemeine Eklipse MV/8000 ("Adler") hatten einen SRAM writable Kontrolllager, das auf dem Anschalten durch eine andere Zentraleinheit geladen ist.

WCS hat mehrere Vorteile einschließlich der Bequemlichkeit angeboten, das Mikroprogramm und, für bestimmte Hardware-Generationen, schnellerer Zugang zu flicken, als ROMs zur Verfügung stellen konnte. Benutzerprogrammierbarer WCS hat dem Benutzer erlaubt, die Maschine zu spezifischen Zwecken zu optimieren.

Einige Zentraleinheitsdesigns kompilieren den Befehlssatz zu einem writable RAM oder BLITZ innerhalb der Zentraleinheit (wie der Verarbeiter von Rekursiv und Imsys Cjip), oder ein FPGA (wiederkonfigurierbare Computerwissenschaft).

Eine Zentraleinheit, die Mikrocode allgemein verwendet, nimmt mehrere Uhr-Zyklen, um eine einzelne Instruktion, einen Uhr-Zyklus für jeden Schritt im Mikroprogramm für diese Instruktion durchzuführen. Einige CISC Verarbeiter schließen Instruktionen ein, die sehr viel Zeit in Anspruch nehmen können, um durchzuführen. Solche Schwankungen stören sowohl Unterbrechungslatenz als auch, was in modernen Systemen, pipelining viel wichtiger ist.

Mehrerer Intel CPUs in der x86 Architektur-Familie hat Writable-Mikrocode.

Das hat Programmfehlern im Mikrocode von Intel Core 2 und Mikrocode von Intel Xeon erlaubt, in der Software bestochen zu werden, anstatt zu verlangen, dass der komplette Span ersetzt wird.

Solche üblen Lagen können von Linux, FreeBSD, Windows von Microsoft oder der Hauptplatine BIOS installiert werden.

Mikrocode gegen VLIW und RISC

Die Designtendenz zu schwer mikrocodierten Verarbeitern mit komplizierten Instruktionen hat am Anfang der 1960er Jahre begonnen und hat bis grob die Mitte der 1980er Jahre weitergegangen. An diesem Punkt hat die RISC Designphilosophie angefangen, prominenter zu werden. Das hat die Punkte eingeschlossen:

  • Programmierung ist vom Zusammenbau-Niveau größtenteils abgerückt, so ist es nicht mehr lohnend, komplizierte Instruktionen aus Produktivitätsgründen zur Verfügung zu stellen.
  • Einfachere Befehlssätze erlauben direkte Ausführung durch die Hardware, die Leistungsstrafe der mikrocodierten Ausführung vermeidend.
  • Analyse zeigt, dass komplizierte Instruktionen folglich selten verwendet werden, werden die ihnen gewidmeten Maschinenmittel größtenteils vergeudet.
  • Die selten verwendeten komplizierten Instruktionen gewidmeten Maschinenmittel werden besser verwendet, um Leistung von einfacheren, allgemein verwendeten Instruktionen zu beschleunigen.
  • Mikrocodierte Instruktionen des Komplexes können viele Uhr-Zyklen verlangen, die sich ändern, und zur Rohrleitung für die vergrößerte Leistung schwierig sind.

Es sollte erwähnt werden, dass es Kontrapunkte ebenso gibt:

  • Die komplizierten Instruktionen in schwer mikrocodierten Durchführungen können viel Extramaschinenmittel abgesehen vom Mikrocoderaum nicht nehmen. Zum Beispiel wird derselbe ALU häufig verwendet, um eine wirksame Adresse sowie Computerwissenschaft des Ergebnisses vom wirklichen operands (z.B der ursprüngliche Z80, 8086, und andere) zu berechnen.
  • Die einfacheren non-RISC Instruktionen (d. h. das Beteiligen direkten Gedächtnisses operands) werden oft durch moderne Bearbeiter verwendet. Sogar unmittelbar um (d. h. Speicherergebnis) aufzuschobern, werden arithmetische Operationen allgemein verwendet. Obwohl solche Speicheroperationen, häufig mit der unterschiedlichen Länge encodings, zur Rohrleitung schwieriger sind, ist es noch völlig ausführbar, so - klar veranschaulicht durch den i486, AMD K5, Cyrix 6x86 usw. zu tun.
  • Non-RISC Instruktionen führen von Natur aus mehr Arbeit pro Instruktion (durchschnittlich) durch, und werden auch normalerweise hoch verschlüsselt, so ermöglichen sie kleinere gesamte Größe desselben Programms, und so besseren Gebrauch von beschränkten Erinnerungen des geheimen Lagers.
  • Moderne CISC/RISC Durchführungen, z.B x86 Designs, decodieren Instruktionen in dynamisch gepufferte Mikrooperationen mit der Instruktion encodings ähnlich dem traditionellen festen Mikrocode. Gewöhnlicher statischer Mikrocode wird als Hardware-Hilfe für komplizierte Mehrschritt-Operationen wie sich autowiederholende Instruktionen und für transzendente Funktionen in der Schwimmpunkt-Einheit verwendet; es wird auch für spezielle Zweck-Instruktionen (wie CPUID) und innere Kontrolle und Konfigurationszwecke verwendet.
  • Die einfacheren Instruktionen in CISC Architekturen werden auch in der Hardware in modernen Durchführungen direkt durchgeführt.

Viele RISC und VLIW Verarbeiter werden entworfen, um jede Instruktion durchzuführen (als lange, wie es im geheimen Lager ist) in einem einzelnen Zyklus. Das ist der Weise sehr ähnlich, wie Zentraleinheiten mit dem Mikrocode einen Mikrobefehl pro Zyklus durchführen. VLIW Verarbeiter haben Instruktionen, die sich ähnlich zum sehr breiten horizontalen Mikrocode, obwohl normalerweise ohne solche feinkörnige Kontrolle über die Hardware gemäß dem Mikrocode benehmen. RISC Instruktionen sind manchmal dem schmalen vertikalen Mikrocode ähnlich.

Siehe auch

Weiterführende Literatur

Links


MIDI / Mehrreihe-Architektur
Impressum & Datenschutz