DE68927313T2 - Operandenspezifiererverarbeitung - Google Patents
OperandenspezifiererverarbeitungInfo
- Publication number
- DE68927313T2 DE68927313T2 DE68927313T DE68927313T DE68927313T2 DE 68927313 T2 DE68927313 T2 DE 68927313T2 DE 68927313 T DE68927313 T DE 68927313T DE 68927313 T DE68927313 T DE 68927313T DE 68927313 T2 DE68927313 T2 DE 68927313T2
- Authority
- DE
- Germany
- Prior art keywords
- operand
- addressing
- methods
- instruction
- typical
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 title claims description 20
- 238000000034 method Methods 0.000 claims description 144
- 238000006073 displacement reaction Methods 0.000 claims description 22
- 230000006870 function Effects 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 5
- 238000012546 transfer Methods 0.000 description 8
- 238000013459 approach Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000000977 initiatory effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Description
- Diese Erfindung bezieht sich allgemein auf die Operation von Digitalrechnern und insbesondere auf die Implementierung von komplexen Anweisungssätzen in Hochleistungsrechnersystemen
- In seiner einfachsten Form enthält ein Digitalrechner fünffunktional unabhängige Hauptbestandteile: Eingabe-, Speicher-, Arithmetik/Logik-, Ausgabe- und Steuereinheiten. Bei der herkömmlichen Organisation eines sogenannten "Einzelspeicher - oder "Speicherprogramm"- Rechners werden die Vorgänge innerhalb des Rechners von einem Programm gesteuert, das aus einer Gruppe von Anweisungen besteht, die im Hauptspeicher gespeichert sind. Eine Anweisung spezifiziert eine vom Computer auszuführende Operation. Die einzelnen Anweisungen werden vom Hauptspeicher in den Prozessor gebracht, der diese decodiert und ausführt. Zusätzlich zu den Maschinenebenen-Anweisungen sind im gleichen Hauptspeicherraum auch numerische Daten gespeichert, die als Operanden für die Anweisungen verwendet werden, weshalb die Bezeichnung "Einzelspeicher"- Rechner verwendet wird.
- Bei modernen Rechnern sind die Arithmetik/Logik-Einheit (ALU) und die zugehörige Steuerschaltung häufig zusammengefaßt, um eine sogenannte Zentraleinheit oder CPU zu bilden, die als monolithischer Halbleiterbaustein implementiert werden kann. Eine CPU enthält üblicherweise zusätzlich zur ALU eine Gruppe von Ein-Wort-Speicherplätzen, Register genannt, die verwendet werden, um Anweisungen oder Daten während der Programmausführung zu halten. Einige CPU-Register sind Universalspeicherplätze, die verwendet werden können, um irgendwelche Zwischenwerte zu halten, die die CPU eventuell vorübergehend speichern muß. Andere Register besitzen genau definierte Verwendungsmöglichkeiten. Zum Beispiel besitzt eine CPU herkömmlicherweise ein Register, das Programmzähler (PC) genannt wird, der von der nächsten (oder der momentan ausgeführten) Anweisung die Adresse im Hauptspeicherraum hält. Außerdem besitzt eine CPU typischerweise ein Anweisungsregister (IR), das die aus dem Speicher geholte Anweisung hält, die momentan vom Rechner ausgeführt wird. Eine CPU besitzt ferner üblicherweise zusätzliche Spezialregister, wie z. B. ein Speicheradreßregister und ein Speicherdatenregister, die so definiert sind, daß sie die Hauptspeicheradresse eines von der CPU zu schreibenden oder zu lesenden Wortes bzw. einen in den Speicher zu speichernden oder von diesem zu empfangenden Datenwert enthalten. Alle Funktionseinheiten einer CPU können über einen oder mehrere CPU-Busse Daten zu und von anderen Einheiten weiterleiten, wobei Übertragungen zwischen den Einheiten von der Steuereinheit eingeleitet und gesteuert werden. Die Abfolge der einzelnen Schritte, die für einen Rechner erforderlich sind, um eine Maschinenebenen-Anweisung auszuführen, wird von einer Steuereinheit gesteuert, die dafür zuständig ist, Steuersignale zu setzen, um Übertragungen von Daten von einem Register zu einem weiteren oder zwischen dem Hauptspeicher und den Registern oder zwischen den Registern und der ALU über einen CPU- Bus einzuleiten.
- Häufig verwendet eine einzelne Maschinenebenen-Anweisung mehrere CPU-Registerübertragungen, die jeweils durch Setzen eines oder mehrerer Steuersignale eingeleitet werden. Beispielsweise veranlaßt die Steuereinheit im typischen Fall eines einfachen Lesens des Speichers die Durchführung folgender Schritte: Erstens, nach dem Lesen der Maschinenebenen-Anweisung aus dem Speicher, die das Lesen des Speichers anfordert, wird die Adresse des gewünschten Speicherplatzes über einen CPU-Bus in das Speicheradreßregister geladen; die Steuereinheit bewerkstelligt dies, indem sie ein Signal setzt, das das Speicheradreßregister anweist, die momentan auf dem CPU-Bus liegenden Daten zu speichern. Ist dies ausgeführt, leitet die Steuereinheit ein Lesen an dem im Speicheradreßregister spezifizierten Speicherplatz ein, indem ein anderes Steuersignal gesetzt wird. Wenn anschließend die gewünschte Stelle gelesen worden ist, stellt die Speichereinheit den Wert auf dem CPU-Bus zur Verfügung, wobei die Steuereinheit ein weiteres Steuersignal setzt, das bewirkt, daß die Inhalte des CPU-Busses in das Speicherdatenregister zwischengespeichert werden. Hier steht der Wert anschließend über den CPU-Bus allen anderen Funktionseinheiten zur Verfügung, die diesen benötigen.
- Maschinenebenen-Anweisungen enthalten typischerweise wenigstens zwei Teile: einen Operationscode oder "Opcode", der spezifiziert, welche Operation ausgeführt werden soll, sowie einen oder mehrere Adreßfelder, die spezifizieren, wo die für diese Operation verwendeten Datenwerte (Operanden) zu finden sind. Ein Rechner führt eine Maschinenebenen-Anweisung in einem sogenannten Anweisungszyklus aus, wobei ein Anweisungszyklus üblicherweise zwei Teile umfaßt. Während des ersten Teils, Holzyklus genannt, wird der Opcode der nächsten Anweisung (die vom PC angegebene Anweisung) in das Anweisungsregister der CPU geladen. Wenn sich der Opcode im IR befindet, wird der zweite Teil, Ausführungszyklus genannt, ausgeführt (häufig erfordert jeder dieser Teile mehr als eine Zustandszeit oder mehr als einen Taktzyklus). Im Ausführungszyklus interpretiert die Steuervorrichtung den Opcode und führt die Anweisung aus, indem sie die geeignete Sequenz von Steuersignalen ausgibt, um zu veranlassen, daß Daten übertragen werden, oder um zu veranlassen, daß eine arithmetische oder logische Operation von der ALU ausgeführt wird. In vielen Fällen umfaßt der Ausführungszyklus einer Anweisung das Holen von Operanden, die von dieser Anweisung spezifiziert werden. Für eine einfache "ADDIERE"-Anweisung müssen z. B. die Orte von zwei Werten, die addiert werden sollen, in der Anweisung spezifiziert werden, wobei diese zwei Werte geholt und in CPU- Register gebracht werden müssen, so daß die ALU auf diese Zugriff hat.
- Die Gruppe der Maschinenebenen-Anweisungen, die eine CPU unterstützt, wird als Anweisungssatz bezeichnet. Innerhalb des Rechners werden Anweisungen als Sequenzen von Bits dargestellt, die in Speicherworten angeordnet sind und die Bestandteile der Anweisung identifizieren. Zusätzlich zum Opcode und zu den Quellenoperanden (Operanden, die als Eingaben für die spezifizierten Operationen verwendet werden) kann eine Anweisung ferner das gewünschte Ziel eines Operationsergebnisses sowie den Ort der nächsten auszuführenden Anweisung identifizieren. Daraus folgt, daß für eine gegebene Anweisung mehrere Operandenfelder vorhanden sein müssen. Die Anordnung der Felder in einer Anweisung ist als Anweisungsformat bekannt. In Abhängigkeit davon, wieviele Informationen spezifiziert werden müssen, kann eine Anweisung ein Speicherwort oder mehrere Speicherwörter lang sein. Einige einfache Anweisungen wie z. B. "HALT", brauchen keine Operanden und können in einem einzelnen Speicherwort dargestellt werden, das nur den Opcode für diese Anweisung enthält. Andere Anweisungen, die Einzelanweisungen genannt werden, können die Spezifizierung eines einzelnen Operanden erfordern. Einzelanweisungen, wie z. B. "VERZWEIGE", "INKREMENTIERE" oder "LÖSCHE" können in einem einzelnen Speicherwort enthalten sein, das sowohl den Opcode als auch den Operandenspezifizierer enthält, oder können in zwei Wörtern enthalten sein, eines für den Opcode und eines für den Operandenspezifizierer. Auf ähnliche Weise erfordert eine binäre Anweisung, wie z. B. "ADDIERE" oder "SUBTRAHIERE", die Spezifizierung von zwei Operanden und kann entweder in einem einzelnen Wort, das den Opcode und die Identität beider Operanden enthält, oder in zwei oder mehr Wörtern enthalten sein. Ein Anweisungssatz einer CPU enthält häufig Anweisungen mit verschiedenen Formaten. In einem solchen Fall muß die CPU- Steuervorrichtung einen Opcode einer Anweisung decodieren und anschließend zusätzliche Wörter holen, die durch das Format gefordert werden, das der bestimmten Anweisung zugeordnet ist.
- Um auf einen großen Bereich von Orten bei der Spezifizierung von Operanden zurückgreifen zu können, unterstützen die Anweisungssätze der meisten Rechner verschiedene Verfahren, Adressierungsmethoden genannt, um die effektive Adresse der Operanden in einer Maschinenebenen-Anweisung anzugeben. Das einfachste Verfahren zur Spezifizierung eines Operanden in einer Maschinenebenen-Anweisung ist eine unmittelbare Adressierung, bei der der Wert des Operanden in der Maschinenebenen-Anweisung selbst enthalten ist. Diese Methode ist nützlich bei der Definition von Konstanten und Anfangswerten von Variablen, wobei keine Hauptspeicherzugriffe erforderlich sind, um den Operanden zu erhalten. In ähnlicher Weise erfordert eine Registeradressierungsmethode keine Hauptspeicherzugriffe, da der Operand in einem CPU-Register gespeichert ist, das in der Maschinenebenen-Anweisung spezifiziert ist. Eine weitere einfache Form einer Operandenspezifizierung wird direkte Adressierung genannt, bei der die Hauptspeicheradresse des Operanden in der Anweisung angegeben ist. Die direkte Adressierung erfordert nur einen Speicherzugriff, um den Operanden zu erhalten, ist jedoch auf die Spezifizierung der Adressen beschränkt, die klein genug sind, um in das Adreßfeld der Anweisung zu passen, das kleiner sein kann als ein Speicherwort. Die indirekten Adressierungsmethoden überwinden diese Einschränkung, indem sie in der Anweisung eine Adresse eines Wortes im Hauptspeicher angeben, das seinerseits eine Volladresse des Operanden enthält. Es sind zwei Hauptspeicherzugriffe erforderlich, um einen Operanden zu erhalten, der in der indirekten Adressierungsmethode spezifiziert ist. Andere Adressierungsmethoden, die im allgemeinen von Zentraleinheiten unterstützt werden, umfassen die indirekte Registeradressierung, bei der ein CPU-Register, das in der Anweisung spezifiziert ist, die Adresse des gewünschten Operanden im Hauptspeicher enthält, sowie verschiedene Arten von Verschiebungsadressierungen, bei denen ein expliziter Verschiebungswert in der Anweisung enthalten ist, der als Verschiebung von einer weiteren Adresse verwendet wird, die in der Anweisung enthalten ist und deren Inhalt zum Verschiebungswert addiert wird, um die Adresse des Operanden zu erhalten.
- Da die Steuereinheit für die Einleitung aller Vorgänge innerhalb einer CPU zuständig ist, hängt eine annehmbare Systemleistung von einer effizienten Operation der Steuereinheit ab. Für die Implementierung einer Steuereinheit gibt es zwei Grundstrategien. Die erste, bekannt als festverdrahtete Steuervorrichtungsimplementierung, verwendet eine kombinatorische Logikhardware, die die geeignete Sequenz von Ausgangssteuersignalen als Antwort auf einen bestimmten Opcode erzeugt. Die Primäreingänge in eine festverdrahtete Steuervorrichtung sind das Anweisungsregister und ein Takt. Die kombinatorische Logik in der festverdrahteten Steuervorrichtung identifiziert (decodiert) den einzigartigen Opcode, der jeder Anweisung zugeordnet ist, und setzt die geeignete Sequenz von Ausgangssteuersignalen, die zur Durchführung der angeforderten Aufgabe erforderlich ist. Selbst für einen mäßig großen Anweisungssatz muß somit die Steuervorrichtung eine große Menge an Logikhardware enthalten, um zwischen den vielen Anweisungsformaten, die verwendet werden können, den vielen unterschiedlichen Operationen, die ausgeführt werden können, zu unterscheiden und die richtigen Steuersignale während der verschiedenen Phasen aller unterschiedlichen Anweisungszyklen zu setzen.
- Ein einfacherer Lösungsansatz für den Entwurf von Prozessorsteuereinheiten ist als mikroprogrammierte Implementierung bekannt. In einer mikroprogrammierten Steuervorrichtung gibt ein Anweisungs-Opcode eine Adresse in einem speziellen CPU-Speicher an, in welchem die CPU-Steuerungswörter, Mikroanweisungen genannt, gespeichert sind. Jede Mikroanweisung enthält Informationen darüber, welche Steuerleitungen zu setzen sind, wenn die Mikroanweisung von der Steuervorrichtung ausgeführt wird. Eine einzelne Maschinenebenen-Anweisung entspricht somit einer bestimmten Sequenz einer oder mehrerer auszuführender Mikroanweisungen (einer Mikroprogrammroutine). Mikroanweisungen sind typischerweise in einem zugewiesenen Bereich des CPU-Nur Lesespeichers (ROM) enthalten, der Mikrospeicher genannt wird. Nach dem Empfang eines Anweisungs-Opcodes im IR leitet eine mikroprogrammierte Steuervorrichtung aus dem Opcode einen Einsprungpunkt in eine Mikroprogrammroutine im Mikrospeicher ab. Beginnend an diesem Einsprungpunkt werden einzeln nacheinander Mikroanweisungen aus dem Mikrospeicher gelesen, ähnlich wie Maschinenebenen-Anweisungen aus dem Hauptspeicher geholt werden, und von der Steuervorrichtung verwendet, um zu ermitteln, welche Steuersignale zu setzen sind. In einem sogenannten vollständig horizontalen Mikroanweisungsformat entspricht jedes Bit einer Mikroanweisung einem einzelnen Steuersignal, so daß eine 1 in einer bestimmten Bitposition dem Setzen des Steuersignals entspricht, während eine 0 in derselben Bitposition dem Zurücksetzen dieses Steuersignals entspricht. Alternativ müssen in einem sogenannten vollständig vertikalen Mikroanweisungsformat die Bits der Mikroanweisung ihrerseits decodiert werden, um zu ermitteln, welche Steuerleitungen zu setzen sind, Beim vollständig horizontalen Format sind n Bits erforderlich, um den Zustand der n Steuersignale darzustellen, während im vollständig vertikalen Format n Bits verwendet werden können, um den Zustand von 2n Steuersignalen darzustellen. Ein diagonales Mikroanweisungsformat stellt einen Kompromiß zwischen der Geschwindigkeit des vollständig horizontalen Formats und der kleinen Mikroanweisungsgröße des vollständig vertikalen Formats dar. Bei einem diagonalen Format sind die Bits einer Mikroanweisung in Feldern gruppiert, wobei jedes Feld den Anweisungssignalen entspricht, die einem bestimmten Systembetriebsmittel (Hauptspeicher, ALU, CPU-Bus, CPU-Register usw.) zugeordnet sind. Ein Feld von k Bits kann verwendet werden, um bis zu 2k Steuersignale zu spezifizieren, die einem bestimmten Betriebsmittel zugeordnet sind.
- Ein Rechner wird häufig durch den Anweisungssatz charakterisiert, der von seiner Zentraleinheit unterstützt wird. Der Anweisungssatz legt viele der Funktionen fest, die von der CPU ausgeführt werden, und hat somit eine beträchtliche Auswirkung auf die Implementierung der CPU und auf die Gesamtleistung des Rechnersystems. In der Praxis gibt es wenigstens zwei unterschiedliche Lösungsansätze für den Entwurf von Anweisungssätzen. Einer, der als komplexer Anweisungssatz bezeichnet wird, versucht die Maschinenebenen-Anweisungen kompatibler zu Anweisungen höherer Programmiersprachen zu machen. Komplexe Anweisungssätze enthalten typischerweise eine große Anzahl unterschiedlicher Anweisungen, die von einfachen Operationen wie z. B. BEWEGE bis zu komplexeren Operationen wie z. B. Vektormanipulationen, Matrixoperationen und höheren Arithmetikfunktionen reichen. Die Anweisungen in einem Rechner mit komplexem Anweisungssatz (CISC = complex instruction set computer) unterstützen üblicherweise einen großen Bereich von Operandenadressierungsmethoden und besitzen stark veränderliche Formate. Die Verwendung von komplexen Anweisungssätzen basiert auf der Überlegung, daß für ein vorgegebenes Programm weniger Anweisungen benötigt werden, da eine komplexe Anweisung mehr bewerkstelligt als eine einfache Anweisung, wodurch die Anzahl der Speicherzugriffe, die bei der Ausführung eines Programms erforderlich sind, verringert wird. Die erhöhte Verfügbarkeit von schnelleren, größeren ROMs läßt ferner erwarten, daß die Implementierung komplizierter Softwarefunktionen in größeren Mikrocoderoutinen zu schnelleren, einfacher zu benutzenden Rechnern und zu niedrigeren Kosten für die Softwareentwicklung führt.
- Ein alternativer Lösungsansatz für den Anweisungssatzentwurf verwendet einen reduzierten Anweisungssatz. Die Rechnerarchitektur mit reduziertem Anweisungssatz (RISC = reduced instruction set computer) bezieht sich auf eine verbreitete Entwurfsphilosophie, die durch einen Anweisungssatz gekennzeichnet ist, der eine relativ kleine Anzahl von einfachen Anweisungen umfaßt. Die Maschinenebenen-Anweisungen in einem RISC-Rechner werden typischerweise in einem Taktzyklus ausgeführt, besitzen feste Anweisungsformate und unterstützen nur einige einfache Adressierungsmethoden. Um die Geschwindigkeit der RISC- Anweisungsausführung voll auszunutzen, verwenden RISC- Rechner üblicherweise festverdrahtete Steuervorrichtungen statt der mikroprogrammierten Steuervorrichtungen.
- Der am häufigsten in Rechnern implementierte Universal- Anweisungssatz stellt einen Kompromiß zwischen der kleineren Programmgröße und der größeren Steuervorrichtungs- Mikrospeichergröße der CISC-Architekturen und der größeren Programmgröße und der kleineren Steuervorrichtungsgröße der RISC-Systeme dar. Die große Verschiedenheit der Anweisungsformate und Adressierungsmethoden in CISC-Systemen macht die Anweisungsdecodierung und das Holen der Operanden langsamer und komplizierter, während die einfacheren Operationen und die minimalen Adressierungsmethoden der RISC-Systeme vergleichsweise längere Programme erfordern, um ähnliche Aufgaben zu lösen.
- Bei einem mikroprogrammierten Rechner hat die Komplexität eines Anweisungssatzes auf Maschinenebene einen deutlichen Einfluß auf die Größe des Mikrospeichers, der die Mikroanweisungen zur Unterstützung des Anweisungssatzes enthält. Die Größe des Mikrospeichers hängt nicht nur von der Anzahl der unterstützten Anweisungen, sondern auch von der Komplexität dieser Operationen und dem Bereich der für diese Anweisungen verfügbaren Adressierungsmethoden ab. Die Leistungsmerkmale des Rechnersystems werden ebenfalls durch diese Faktoren beeinflußt, da komplexe Anweisungen mehr CPU-Registerübertragungen als einfachere Anweisungen und somit mehr Mikroanweisungen und mehr Taktzyklen bis zum Abschluß erfordern. Ferner wird mit zunehmender Vervollständigung der Adressierungsmethoden des Anweisungssatzes eine größere Menge an Mikrocodes für die Operandenadressenberechnung benötigt.
- Die Mikrocodeverarbeitung der Operandenspezifizierer erfordert das Auswählen einer Mikroprogrammroutine, die die erforderlichen Vorgänge ausführt, um den Ort eines Operanden zu identifizieren, und anschließend auf der Grundlage der Verwendung des Operanden in der gegebenen Anweisung die geeignete Maßnahme ergreift. In Systemen mit geringerer Leistung kann die Verarbeitung aller Spezifizierertypen von einer einzelnen Universalmikroprogrammroutine ausgeführt werden, die die Unterschiede in der Operandenspezifizierung unter Verwendung bedingter Verzweigungsbefehle in der Mikroprogrammroutine auflöst. Andererseits können Systeme mit höherer Leistung für jede mögliche Kombination von Operandenspezifizierern, die mit einer bestimmten Maschinenebenen-Anweisung verwendet wird, eine spezielle Mikroprogrammroutine vorsehen. Dieses Verfahren der speziellen Routinen ermöglicht dem System, eine maximale Leistung zu erreichen, indem der Bedarf an langsamen bedingten Verzweigungen innerhalb des Mikroprogramms beseitigt wird. Das Universalroutinen-Verfahren erfordert andererseits sehr viel weniger Mikrospeicherraum als das Spezialroutinen-Verfahren, ist jedoch langsamer.
- In der US-3958221 ist ein mikroprogrammiertes System offenbart, bei dem die Ermittlung der Adressierungsmethode jeder Anweisung verwendet wird, um den effektiven Operanden der Anweisung zu lokalisieren. Das System enthält einen Mikroprogrammspeicher, der Mikrobefehle zum Ermitteln des effektiven Operanden für eine Anweisung in jeder von mehreren Adressierungsmethoden enthält. Ein Decodierer antwortet auf ein Adressenkennzeichen oder auf Bits einer Anweisung, um die Adresse eines Einsprungpunkts im Mikroprogrammspeicher zu erzeugen. Ein Mikroprogrammregister wird verwendet, um die Einsprungpunktadresse zu speichern, wobei die Speicherung eine Ausführung des Mikroprogramms oder der Mikrobefehle einleitet.
- Die vorliegende Erfindung zielt auf die Beseitigung einiger unerwünschter Merkmale, die mit der Implementierung komplexer Anweisungssätze, die verschiedene Operandenadressierungsmethoden unterstützen, einhergehen. Genauer schlägt diese Erfindung eine Strategie zur Reduzierung des Mikrospeichers vor, der der Operandenspezifiziererverarbeitung zugeordnet ist, wobei ferner die Größe und die von einem Prozessor aufgewendete Zeit zum Erhalten der erfordetlichen Operanden, die in komplexen Anweisungen spezifiziert sind, verringert wird.
- Diese Erfindung beschreibt ein Verfahren und eine Vorrichtung zum Iniplementieren einer mikrocodierten Operandenspezifiziererverarbeitung mit hoher Leistung und geringem Organisationsaufwand durch Zusammenfassen ähnlicher Spezifizierertypen und Erzeugen einer Universalroutine für dieselben. Anschließend werden Hardware-Primitive verwendet, um die Unterschiede der Spezifizierertypen innerhalb jeder Gruppe aufzulösen. Auf diese Weise kombiniert die vorliegende Erfindung die Leistungsmerkmale des Spezialmikroprogrammroutinen-Verfahrens der Operandenspezifiziererverarbeitung mit der minimalen Mikrospeichergröße des Universalnikroprogrammroutinen-Verfahrens der Operandenspezifiziererverarbeitung.
- Die Erfindung ist auf Rechnersysteme gerichtet, die viele oder alle der folgenden 13 Operandenadressierungsmethoden unterstützen, die typischerweise in CISC-Architekturen vorkommen (es ist klar, daß für diese Methoden andere Namen verwendet werden können und daß Prozessoren zusätzliche Methoden verwenden können oder einige dieser Methoden weglassen können):
- - Unmittelbar (Literal) : der Operand ist als Teil des Spezifizierers im Maschinenebenen-Anweisungsstrom enthalten;
- - Index: die Adresse des Operanden wird aus einer Basisadresse und einem Index berechnet, der in einem Universal-CPU-Register enthalten ist;
- - Register: der Operand ist der in einem Universal-CPU- Register enthaltene Wert;
- - Register-Indirekt: die Hauptspeicheradresse des Operanden ist in einem Universal-CPU-Register enthalten;
- - Auto-Dekrement: die Adresse des Operanden wird durch Subtrahieren der Größe des Operanden von einer in einem Universal-CPU-Register enthaltenen Adresse berechnet;
- - Auto-Inkrement: die Adresse des Operanden im Hauptspeicher ist in einem Universal-CPU-Register enthalten. Die Größe des Operanden wird anschließend zum Universalregister addiert;
- - Auto-Inkrement-Indirekt: eine in einem Universal-CPU- Register enthaltene Adresse wird verwendet, um aus dem Speicher die Adresse des Operanden zu lesen. Anschließend wird zum Universalregister eine Konstante addiert;
- - Byteverschiebung: die Adresse des Operanden wird berechnet, indem eine Byteverschiebung zu den Inhalten eines Universal-CPU-Registers addiert wird;
- - Byteverschiebung-Indirekt: die Summe einer Byteverschiebung und des Inhalts eines Universal-CPU-Registers wird verwendet, um aus dem Speicher die Hauptspeicheradresse des Operanden zu lesen;
- - Wortverschiebung: die Adresse des Operanden wird berechnet, indem eine Zwei-Byteverschiebung zum Inhalt eines Universal-CPU-Registers addiert wird;
- - Wortverschiebung-Indirekt: die Summe einer Zwei-Byteverschiebung und des Inhalts eines Universal-CPU-Registers wird verwendet, um aus dem Speicher die Adresse des Operanden zu lesen;
- - Langwortverschiebung: die Adresse des Operanden wird berechnet, indem eine Vier-Byteverschiebung zum Inhalt eines Universal-CPU-Registers addiert wird.
- - Langwortverschiebung-Indirekt: die Summe der Vier- Byteverschiebung und des Inhalts eines Universal-CPU- Registers wird verwendet, um aus dem Speicher die Adresse des Operanden zu lesen.
- Die obige Sammlung der Operandenspezifikationsmethoden ist repräsentativ für Sätze von Adressierungsmethoden, die im allgemeinen in Architekturen mit komplexen Anweisungssätzen vorkommen. Außerdem kennen Anweisungssatzimplementierungen häufig die Unterscheidung zwischen wenigstens fünf verschiedenen Verwendungsarten für die Operanden einer gegebenen Anweisung. Diese Operandenverwendungsinformation muß der Speichereinheit während der Ausführung einer Maschinenebenen-Anweisung zur Verfügung gestellt werden, so daß das erforderliche Zugriffsprivileg für einen Operandenspeicherort bestätigt werden kann und somit der Speicherzugriff eingeleitet werden kann. Genauer kann eine Anweisung einen Lesezugriff auf einen Operanden, einen Schreibzugriff auf einen Operanden oder einen Lese- und Schreibzugriff (Modifizierungszugriff) auf den Operanden erfordern. Alternativ kann eine Anweisung nur die Adresse eines Operanden verwenden und nicht den Wert des Operanden; die Adresse kann allein oder als eine Basisadresse mit Verschiebung für eine speicherinterne Datenstruktur verwendet werden. Von den obengenannten 13 Operandenspezifizierertypen verwendeten ferner acht ein Universal-CPU-Register; in einigen Systemen kann anstelle dieses Universalregisters auch der Programmzähler verwendet werden, wodurch die Anzahl der Adressierungsmethoden von 13 auf 21 erhöht wird. Da der in einem dieser 21 Methoden spezifizierte Operand in einer beliebigen der fünf verschiedenen Arten verwendet werden kann, muß eine mikroprogrammierte Steuervorrichtung, die alle obenerwähnten Adressierungsmethoden und Operandenverwendungen unterstützt, fähig sein, die Operanden auf (21 5) = 105 unterschiedliche Arten zu verarbeiten.
- Bei einer solchen möglichen großen Anzahl unterschiedlicher Arten zur Spezifizierung von Operanden in einer Maschinenebenen-Anweisung würde ein Spezialroutinen-Lösungsansatz für die Operandenspezifiziererverarbeitung eine ebenfalls große Anzahl individueller Routinen für das Operandenholen erfordern, was zu einem sehr großen Mikrospeicher führt. In ähnlicher Weise würde ein Universalroutinen-Lösungsansatz eine Mikroroutine mit einer großen Anzahl an ineffizienten bedingten Verzweigungsbefehlen erfordern, was zu einer extrem langsamen Operandenverarbeitung führt. Die vorliegende Erfindung schlägt eine neuartige Lösung für dieses Problem vor, bei der ähnliche Operandenspezifikationen zu einer Gruppe zusammengefaßt werden und von einer Mikroprogrammroutine verarbeitet werden, die dieser Gruppe zugewiesen ist. Durch Ausnutzung von Ahnlichkeiten zwischen bestimmten Methoden und Verwendungen, kann die Anzahl der Spezialroutinen minimiert werden, wobei die Menge der bedingten Verzweigungsbefehle in diesen Routinen ebenfalls verringert werden kann.
- Das Zusammenfassen ähnlicher Operandenspezifizierertypen, das von dieser Erfindung beschrieben wird, wird anhand verschiedener Kriterien durchgeführt: Typ des Operanden (entweder Byte, Wort oder Langwort), die Ebene der Mittelbarkeit (entweder ist der Operand angegeben, oder die Adresse des Operanden ist angegeben, oder die Adresse der Adresse des Operanden ist angegeben), beteiligte Register (entweder keines, ein Universalregister, oder der Programmzähler), die Tatsache, ob ein Inkrementieren oder Dekrementieren erforderlich ist, und, falls vorhanden, die Verschiebung. Nachdem eine Gruppierung der Operandenspezifizierer ermittelt worden ist, werden für jede Gruppe entsprechende Mikroprogrammroutinen definiert. Wie in der Erfindung spezifiziert, kann jede Mikroprogrammroutine ihre Ausführung an einem von zwei verschiedenen Einsprungpunkten beginnen, was eine effiziente Auflösung der Unterschiede der Nutzung ermöglicht.
- Obwohl die Operandenspezifizierer innerhalb einer bestimmten Gruppe ähnlich sein sollen, besteht notwendigerweise ein gewisser Unterschied zwischen zwei beliebigen Operandenspezifizierern, da angenommen wird, daß sich jeder Operandenspezifizierer von jedem anderen unterscheidet. Um eine bedingte Verzweigung innerhalb irgendeiner Spezialmikroprogrammroutine zu vermeiden, erfordert es die vorliegende Erfindung, eine kleine Menge von Hardwareeinheiten vorzusehen, die dazu dienen, die Unterschiede zwischen den Spezifizierern einer gemeinsamen Gruppe aufzulösen. Eines dieser Hardware-Primitive ist für alle Operandenspezifizierer erforderlich, die das Addieren eines Verschiebungswertes zum Inhalt eines CPU-Registers verwenden. Da das Verschiebungsfeld in Anweisungsformaten auf Maschinenebene unterschiedliche Größen aufweisen kann, ist dieses Primitiv für eine vorzeichenbehaftete Erweiterung der Verschiebung in der Anweisung auf 32 Bits zuständig und stellt diesen 32-Bit-Wert der Spezialmikroprogrammroutine zur Verfügung. Auf diese Weise können die Mikroprogrammroutinen alle Verschiebungswerte ungeachtet ihrer ursprünglichen Größe als 32- Bit-Werte handhaben. Ein zweites Hardware-Primitiv kann verwendet werden, um die spezifizierte Verwendung eines Operanden zu ermitteln. Da sowohl Lese-, Schreib- als auch Lese-/Schreib-(Modifizierungs)-Verwendungen an einem der Einsprungpunkte in jeder Spezialroutine zusammengefaßt sind, muß dieses zweite Hardware-Primitiv ermitteln, welche dieser drei Verwendungen spezifiziert ist, und muß diese Informationen nach Abschluß der Operandenspezifiziererverarbeitung zur Speicherschnittstelle weiterleiten. Auf diese Weise kann eine einfache Decodierungshardware in der Speicherschnittstelle bestätigen und den erforderlichen Zugriff auf den Ort des Operanden (entweder Lese-, Schreib- oder Modifizierungszugriff) einleiten, sobald dieser Ort durch die Mikroprogrammroutine ermittelt worden ist.
- Die neuartigen Merkmale und zugeschriebenen Eigenschaften der Erfindung sind in den beigefügten Ansprüchen dargelegt. Die Erfindung selbst sowie weitere Merkmale und Vorteile derselben werden jedoch am besten deutlich durch Lesen der ausführlichen Beschreibung einer speziellen Ausführungsform unter Bezugnahme auf die beigefügten Zeichnungen, in welchen:
- Fig. 1 ein Blockschaltbild ist, das die Hauptfunktionseinheiten zeigt, die eine Zentraleinheit einer bevorzugten Ausführungsform der Erfindung enthält.
- Obwohl die vorliegende Erfindung auf eine beliebige mikroprogrammierte Architektur angewendet werden kann, die eine größere Menge von Operandenadressierungsmethoden unterstützt, ist eine bevorzugte Ausführungsform durch Implementieren der Erfindung innerhalb einer Maschine verwirklicht, die dem VAX-Architekturstandard entspricht, wie er derzeit vom Anmelder dieser Erfindung vertrieben wird.
- Fig. 1 zeigt ein vereinfachtes Blockschaltbild einer Zentraleinheit (CPU) 10 der bevorzugten Ausführungsform, die mehrere Funktionseinheiten enthält, die im folgenden beschrieben sind:
- - Eine Anweisungseinheit 12 führt den Anweisungshol-Unterzyklus eines Maschinenebenen-Anweisungszyklus aus; d. h. eine Maschinenebenen-Anweisung wird auf der Grundlage einer Adresse in einem Programmzähler (PC) aus dem Hauptspeicher 13 (oder einem Cache-Speicher) geholt. Außerdem decodiert die Anweisungseinheit 12 das Opcode-Feld dieser Maschinenebenen-Anweisung, wobei diese Decodierung den Typ des Operandenspezifizierers (der Operandenspezifizierer) ermittelt, die in der Maschinenebenen-Anweisung verwendet werden. Wenn eine Mikroprogrammroutine beendet wird, muß die Anweisungseinheit 12 die Einsprungadresse der nächsten auszuführenden Mikroprogrammroutine auswählen.
- - Eine Ausführungseinheit 14 enthält die funktionalen Einrichtungen zur Implementierung des Anweisungssatzes der bevorzugten Ausführungsform Genauer enthält die Ausführungseinheit 14 eine Gruppe von CPU-Registern, ein Programmzähler-(PC)-Register sowie eine Arithmetik/Logik-Einheit (ALU). Diese CPU-Register enthalten in der üblichen Weise temporäre Datenregister, Speicheradressenregister und Indexregister, wie sie zur Ausführung des Anweisungssatzes der CPU benötigt werden.
- - Eine Speichermanagementeinheit 16 enthält Logik, die verwendet wird, um den Zugriff auf den Hauptspeicher 13 zu steuern, einschließlich dem Holen von Anweisungen, wenn dies von der Anweisungseinheit angefordert wird. Die Speichermanagementeinheit erzeugt Lese- und Schreibsteuersignale, die an die Busschnittstelleneinheit angelegt werden, welche in Abhängigkeit vom ausgewählten speziellen System den Systembus 15 mittels der Lese- und Schreibsteuersignale und irgendwelcher erforderlicher Bestätigungs-, Fertig- und Warte-Steuersignale steuert.
- - Ein Mikrospeicher 18 ist ein ROM oder ein anderer Speicher, der die zur Ausführung des Anweisungssatzes des Systems erforderlichen Mikroprogrammroutinen enthält. Eine Mikroablaufsteuerung 20 enthält eine Logik, die die Adresse des nächsten zu holenden und auszuführenden Mikrowortes des Mikrospeichers 18 ermittelt.
- - Ein interner Datenbus 22 stellt einen Datenpfad zur Verfügung, der die verschiedenen Funktionseinheiten 12, 14 und 16 und die Busschnittstelleneinheit verbindet. Der interne Datenbus 22 überträgt sowohl Lese- und Schreibspeicherdaten als auch Adressen zwischen den obenerwähnten Funktionseinheiten und enthält üblicherweise auch Steuerleitungen. Die auf der Grundlage einer Adresse in einem Speicheradressenregister in der Ausführungseinheit 14 aus dem Speicher 13 (oder dem Cache) geholten Operanden werden z. B. über den Bus 22 in die Ausführungseinheit 14 zu den ALU-Eingangsregistern oder den Bussen, oder was auch immer von der Mikroanweisungssequenz spezifiziert ist, übertragen.
- - Ein Auswahlbus 24 überträgt Mikrospeicher-Einsprungadressen von der Anweisungseinheit 12 zur Mikroablaufsteuerung 20.
- - Ein Anweisungsdatenbus 26 schafft einen Datenpfad von der Anweisungseinheit 12 zur Ausführungseinheit 14 für die in den Maschinenebenen-Anweisungen enthaltenen unmittelbaren Daten. Wenn eine unmittelbarer Operandenadressierungsmethode bei der Ausführung einer vorgegebenen Anweisung verwendet wird, werden die Daten der Maschinenebenen-Anweisung selbst über die Leitungen 26 in ein Datenregister in der Ausführungseinheit 14 geladen.
- - Ein Mikroanweisungsbus 28 überträgt die derzeit auszuführende Mikroanweisung vom Mikrospeicher 18 zur Ausführungseinheit 14 und zur Speichermanagementeinheit 16. Die einzelnen Leitungen, die der Mikroanweisungsbus 28 enthält, sind in zwei Gruppen 28a, 28b eingeteilt. Die niedrigwertigen Bitleitungen 28a stellen einen Pfad für die vom Mikrospeicher 18 zum Mikroprozessor 20 weitergeleiteten Adreßinformationen für die nächste Mikroanweisung zur Verfügung. Die höherwertigen Bitleitungen 28b ermöglichen, daß Mikroprogrammsteuerbits an die Ausführungseinheit 14 weitergeleitet werden. Eine Mikroanweisung kann typischerweise z. B. 50 Bits umfassen, wobei 16 Bits die Adresse der nächsten Mikroanweisung darstellen, die auf den Leitungen 28a übertragen werden, während die übrigen 34 Bits über die Leitungen 28b an die Ausführungseinheit (oder die Speichermanagementeinheit) angelegt werden.
- - Ein Mikroadressenbus 30 ist ein 16-Bit-Bus zur Übertragung der Mikrospeicheradressen von der Mikroablaufsteuerung 20 zum Adreßeingang des Mikrospeichers 18.
- - Ein 3-Bit-Anweisungszugriffstyp-Bus 34 überträgt drei Steuerbits von der Anweisungseinheit 12 zur Ausführungseinheit 14, die den erforderlichen Speicherzugriffstyp für den derzeit verarbeiteten Operandenspezifizierer angeben. Diese 3-Bit-Zugriffstyp-Steuersignale werden in der Anweisungseinheit 12 durch den Decodierungsabschnitt der Maschinenebenen-Anweisung erzeugt.
- - Ein 2-Bit-Anweisungsdatenlängenbus 36 überträgt zwei Steuerbits von der Anweisungseinheit 12 zur Ausführungseinheit 14, die die Länge (Byte, Wort oder Langwort) der Speicherdaten für den derzeit angeforderten Operanden angeben. Typischerweise umfaßt ein Byte 8 Bit, ein Wort 16 Bit und ein Langwort 32 Bit an Daten.
- - Ein 3-Bit-Zugriffstyp-Bus 38 ermöglicht der Ausführungseinheit 14, die drei Steuerbits, die den Speicherzugriffstyp definieren und über die Leitungen 34 von der Anweisungseinheit 12 empfangen werden, an die Speichermanagementeinheit 16 weiterzuleiten, so daß die Speichermanagementeinheit die Lese- oder Schreibsteuersignale und Buszugriffsanforderungen, oder was auch immer an die Busschnittstelle weitergeleitet werden soll, um die gewünschte Speicheroperation für die spezifizierten Operanden zu implementieren, erzeugen kann.
- - Ein 2-Bit-Datenlängenbus 40 ermöglicht in ähnlicher Weise der Ausführungseinheit 14, die zwei Steuerbits, die die Datenlänge definieren, von der Anweisungseinheit 12 an die Speichermanagementeinheit 16 weiterzuleiten, so daß die Speichermanagementeinheit und die Busschnittstelle mit der gewünschten Datenlänge operieren, die entsprechend der Spezifizierung durch die Maschinenebenen-Anweisung in den Speicher 13 geschrieben oder aus diesem geholt wird.
- - Die Busschnittstelleneinheit 42 stellt die Schnittstelle zwischen der CPU 10 (insbesondere dem Bus 22, der Daten-, Adreß- und Steuerleitungen enthält) und dem externen Systembus 15 zur Verfügung, der Adreß-, Daten- und Steuersignalleitungen enthält, die zum Hauptspeicher 13 führen.
- Der Anweisungssatz der bevorzugten Ausführungsform unterstützt mehrere Operandenadressierungsmethoden; z. B. können alle obenerwähnten und hier wiederholten 13 Adressierungsmethoden implementiert sein:
- unmittelbare Methode
- indexierte Methode
- Registermethode
- indirekte Registermethode
- Auto-Dekrement-Methode
- Auto-Inkrement-Methode
- indirekte Auto-Inkrement-Methode
- Byteverschiebungs-Methode
- indirekte Byteverschiebungs-Methode
- Wortverschiebungs-Methode
- indirekte Wortverschiebungs-Methode
- Langwortverschiebungs-Methode
- indirekte Langwortverschiebungs-Methode
- Außerdem kann die Verwendung der spezifizierten Operanden in einer dieser Methoden so spezifiziert sein, daß sie einer von fünf verschiedenen Typen entspricht (diese sind die "Zugriffstypen", wie sie durch die drei Steuerbits auf den Leitungen 36 bis 38 definiert sind):
- Leseverwendung
- Modifizierungsverwendung
- Schreibverwendung
- Adressenverwendung
- Bitfeldbasis-Adressenverwendung
- Ferner verwenden acht der obengenannten Adressierungsmethoden ein Universaldaten- oder Adressen-Register in der Ausführungseinheit 14 (der CPU), die durch den Programmzähler oder das PC-Register in der CPU ersetzt werden können. Das Ersetzen eines Universalregisters durch das Programmzählerregister in diesen acht Methoden führt zu acht Adressierungsmethoden, die sich von den obengenannten 13 Adressierungsmethoden unterscheiden. Dies ergibt insgesamt 21 mögliche unterschiedliche Methoden zur Spezifizierung eines Operanden, die jeweils auf eine von fünf verschiedenen Arten verwendet werden können, wodurch sich (21 5) = 105 unterschiedliche Kombinationen von Adressierungsmethoden und Verwendungsspezifikationen ergeben.
- Gemäß dem von der vorliegenden Erfindung spezifizierten Verfahren werden die 105 Kombinabionen in Abhängigkeit von den Annlichkeiten der Methoden und der Verwendungen zu Gruppen zusammengefaßt, um mehrere "typische" Operandenmethoden zu bilden, die jeweils Schritte aufweisen, die durch Mikroanweisungszustände implementiert werden, so daß mehrere spezielle Operandenmethoden durch leichte Abwandlungen (die keine Mikroanweisungen verwenden), die durch die Steuerbits 34 und 36 implementiert werden, erzeugt werden können. Die bevorzugte Ausführungsform gibt diese 22 Gruppen wie folgt an:
- 1) Unmittelbar-Typ; Lese-, Modifizierungs- oder Schreibverwendung. Ein Operand wird über die Leitungen 26 aus der Anweisung selbst in ein Datenregister der CPU geladen; dies kann nur eine oder einige wenige Mikroanweisungen aus dem Mikrospeicher 18 erfordem, z. B. "Lade Eingangsbus der CPU nach Register A" gemeinsam mit einer Mikroanweisung an die Speichermanagementeinheit 16, um Speichersteuersignale zu erzeugen, die durch die über 36, 40 empfangenen Bits definiert sind, um das Ergebnis der arithmetischen oder logischen Operation, die das Opcode-Feld der Anweisung anfordert, weiterzuleiten.
- 2) Unmittelbarer-Typ: Adressen- oder Bitfeld-Verwendung. Dieser kann der gleiche sein wie in 1), mit der Ausnahme, daß die Mikroanweisungsbits, die die Speichersteuersignale definieren, anders sind, z. B. kein Lesen oder Schreiben im Speicher 13 zulassen.
- 3) Indextyp; Lese-, Modifizierungs- oder Schreib-Verwendung. Die Mikroanweisungen zur Implementierung der Indexadressierung beinhalten einen Zugriff auf die Maschinenebenen-Anweisung über die Leitungen 26, um die Adresse des Universalregisters in der Registergruppe der CPU zu erhalten, das als Indexregister wirkt, wobei in der ALU unter Verwendung der Inhalte dieses Indexregisters und der Inhalte eines Speicheradreßregisters in der CPU-Registergruppe, die die A- und B-Eingänge in die ALU darstellen, ein ADDIERE durchgeführt wird, anschließend das Ergebnis von ADDIERE in einem Speicheradreßregister plaziert wird, um es über den Bus 22 und die Schnittstelle 42 an den Speicher 13 zu senden, wobei die von der Speichermanagementeinheit 16 aus der Mikroanweisung und aus den Steuerbits 34, 36 wie in 1) erzeugten Steuersignale verwendet werden, um den erforderlichen Speicherzugriff zu spezifizieren. Das heißt, die von ADDIERE erzeugte Adresse kann ausgelesen, beschrieben oder sowohl ausgelesen als auch beschrieben (modifiziert) werden.
- 4) Indextyp: Adressen- oder Bitfeld-Verwendung. Dieser verwendet die gleichen Mikroanweisungen wie 3), jedoch ohne Daten im Hauptspeicher 13 zu lesen, zu schreiben oder zu modifizieren.
- 5) Registertyp; Lese-, Modifizierungs- oder Schreib-Verwendung. Ein Operand ist eines der Universalregister in der Registergruppe der CPU, so daß die Mikroanweisungen für diesen Gattungstyp lediglich über die Leitungen 26 auf ein Feld der Maschinenebenen-Anweisung zugreifen, um dieses als Adresse zu verwenden und das Register der CPU gemeinsam mit den Speichersteuerbits wie in 1) auszuwählen.
- 6) Registertyp; Adressen- oder Bitfeld-Verwendung. Dieser besitzt die gleichen Mikroanweisungen wie 3), jedoch mit den Speichersteuersignalen wie in 2).
- 7) Register-Indirekt-Typ; Lese-, Schreib- oder Modifizierungs-Verwendung. Die Adresse eines Operanden ist eines der Universalregister, so daß die Mikroanweisungen für diesen Gattungstyp über die Leitungen 26 auf ein Feld der Maschinenebenen-Anweisung zugreifen, um diese als Adresse zum Auswählen eines der Register der CPU-Registergruppe zu verwenden, und anschließend den Inhalt des ausgewählten Registers über den Bus 22 und die Busschnittstelle 16 zum Speicher 13 senden, woraufhin sie ferner die Speichermanagementeinheit anweisen, den mit den Steuerbits 38 definierten Speicherzugriffstyp auszuführen.
- 8) Register-Indirekt-Typ; Adressen- oder Bitfeld-Verwendung. Dieser erzeugt Mikroanweisungen wie in 7), jedoch ohne Lesen, Schreiben oder Modifizieren des Speichers.
- 9) Auto-Dekrement-Typ; Lese-, Modifizierungs- oder Schreib-Verwendung. Die Mikroanweisungen zur Implementierung dieses Typs übertragen ein Feld der Maschinenebenen-Anweisung über den Bus 26 zu einem Eingang der ALU der CPU, übertragen ein Register der CPU-Registergruppe zum anderen Eingang der CPU, führen in der ALU eine SUBTRAHIERE-Operation durch, und verwenden anschließend das Ergebnis als Operandenadresse, indem sie es auf den Adreßleitungen des Busses 22 ausgeben. Die Speichersteuersignale werden unter Verwendung der Steuerbits 38 erzeugt (wobei die Datengröße über die Leitungen 40 definiert ist).
- 10) Auto-Dekrement-Typ; Adressen- oder Bitfeld-Verwendung. Die Mikroanweisungen sind die gleichen wie in 9), wobei jedoch kein Lesen, Schreiben oder Modifizieren des Speichers stattfindet.
- 11) Auto-Inkrement-Typ mit Universalregister; Lese-, Schreib- oder Modifizierungs-Verwendung. Hier sind die Mikroanweisungen die gleichen wie bei 9), jedoch wird statt einem SUBTRAHIERE ein ADDIERE ausgeführt.
- 12) Auto-Inkrement-Typ mit Universalregister; Adressen- oder Bitfeld-Verwendung. Die Mikroanweisungen sind die gleichen wie in 1), jedoch ohne Lesen, Schreiben oder Modifizieren des Speichers; d. h. die Adresse selbst wird als Operand verwendet.
- 13) Auto-Inkrement-Typ mit PC als Register; Lese-, Schreib- oder Modifizierungs-Verwendung. Die Mikroanweisungen sind die gleichen wie in 11), jedoch wird für die ADDIERE-Operation anstelle eines Universalregisters der PC als zweiter Eingang in die ALU verwendet.
- 14) Auto-Inkrement-Typ mit PC als Register; Adressen- oder Bitfeld-Verwendung. Das gleiche wie in 10), jedoch wird wie in 13) der PC als zweiter ALU-Eingang verwendet.
- 15) Auto-Inkrement-Indirekt-Typ mit Universalregister; Lese-, Modifizierungs- oder Schreib-Verwendung. Die Mikroanweisungen sind die gleichen wie in 11), wobei jedoch die Inhalte des Orts, für den am ALU-Ausgang die Adresse erzeugt worden ist, ihrerseits als Adresse des Operanden verwendet werden.
- 16) Auto-Inkrement-Indirekt-Typ mit Universalregister, Adressen- oder Bitfeld-Verwendung. Das gleiche wie in 15), wobei jedoch der spezifizierte Operand nicht gelesen, beschrieben oder modifiziert wird und stattdessen die Adresse dieses Operanden selbst vom Opcode verwendet wird.
- 17) Auto-Inkrement-Indirekt-Typ mit PC als Register; Lese-, Modifizierungs- oder Schreib-Verwendung. Die Mikroanweisungen sind die gleichen wie in 15), wobei jedoch für die ADDIERE-Operation der PC als zweiter Eingang der ALU verwendet wird.
- 18) Auto-Inkrement-Indirekt-Typ mit PC als Register; Adressen- oder Bitfeld-Verwendung. Das gleiche wie in 16), jedoch ohne zu lesen, zu schreiben oder zu modifizieren.
- 19) Byte-Wort- oder Langwortverschiebungs-Typ; Lese-, Modifizierungs- oder Schreib-Verwendung. Die Mikroanweisungen verwenden die auf 32 Bit vorzeichenbehaftet erweiterte Eingabe auf dem Bus 26 als Eingang der ALU, wobei die Inhalte eines Universalregisters für den anderen Eingang der ALU verwendet werden; die ALU führt ein ADDIERE aus, wobei das Ergebnis in ein Speicheradressenregister der CPU geladen wird und als Adresse des Operanden verwendet wird. Ferner werden die Steuersignale für einen Speicherzugriff erzeugt, wobei die spezifizierte Speicherverwendung (Lesen, Schreiben oder Modifizieren) durch die 3-Bit-Steuersignale spezifiziert wird und die Datenlänge (Byte, Wort oder Langwort) durch die 2-Bit-Steuersignale spezifiziert wird.
- 20) Byte-, Wort- oder Langwortverschiebungs-Typ; Adressen- oder Bitfeld-Verwendung. Das gleiche wie in 19), wobei jedoch ein Lesen, Schreiben oder Modifizieren des Operanden im Speicher 13 ausgeführt wird.
- 21) Byte-, Wort- oder Langwortverschiebungs-Indirekt-Typ; Lese-, Modifizierungs- oder Schreib-Verwendung. Das gleiche wie in 19), wobei jedoch die Inhalte der erzeugten Adresse im Speicher 13 aus dem Speicher 13 gelesen und als Adresse des Operanden verwendet werden.
- 22) Byte- und Langwortverschiebungs-Indirekt-Typ; Adressen- oder Bitfeld-Verwendung. Das gleiche wie in 21), wobei jedoch der derart definierte Operand nicht gelesen, geschrieben oder modifiziert wird, sondern stattdessen die Adresse selbst verwendet wird.
- Für diese Erfindung wird für jede der typischen Adressierungsmehodengruppen, die oben aufgeführt sind, eine Mikroprogrammroutine (eine Sequenz einer oder mehrerer Mikroanweisungen) definiert, wobei ferner jede Mikroprogrammroutine insgesamt, wie vom Mikrospeicher 18 ausgegeben, beginnend bei den Einsprungpunktadressen oder Auswahlsignalen, die auf den Leitungen 24 zur Ablaufsteuerung oder zum Adreßgenerator 20 gesendet werden, und ohne bedingte Verzweigungen oder dergleichen in der Sequenz der Mikroanweisungen vorrückend ausgeführt wird. Diese Einsprungpunkte sind paarweise gegeben; der erste entspricht den in dieser Adressierungsmethodengruppe spezifizierten Operanden, die gelesen, modifiziert oder geschrieben werden sollen; während der zweite Einsprungpunkt den Fällen entspricht, in denen die Adresse des spezifizierten Operanden verwendet werden soll oder die Adresse des Operanden als Basisadresse für ein speicherinternes Bitfeld verwendet werden soll. Auf diese Weise sind für die Operandenspezifiziererverarbeitung 22 Mikroprogrammroutinen-Einsprungpunkte definiert, anstelle eines einzigen (wie im Fall einer Universalroutinenimplementierung) oder 105 Einsprungpunkten (wie im Fall einer vollständigen Spezialroutinenimplementierung).
- Die Operation der Zentraleinheit 10 läuft wie folgt ab: die Anweisungseinheit 12 empfängt über den internen Datenbus 22 vom Speicher 13 eine Maschinenebenen-Anweisung, um einen Anweisungszyklus einzuleiten. Die Anweisungseinheit 12 ist für die Extraktion aller codierten und decodierten Anweisungsstrominformationen, die während der Ausführung der Mikroroutinen, welche die gewünschte Operation bewerkstelligen, erforderlich sind, aus einer Maschinenebenen-Anweisung zuständig. Diese Informationen enthalten den Opcode, die spezifizierten Register, die Operandenspezifizierer, den Operanden-Verwendungs- /Zugriffs-Typ, die Operandendatenlängen, die Operandenziele, Informationen über den nächsten Wert des Programmzählerregisters und weitere Steuer- und Statusinformationen. Der Operandenzugriffstyp und die Datenlängeninformationen werden von der Anweisungseinheit 12 aus dem Opcode decodiert und über den zugewiesenen 3-Bit-Anweisungszugriffstypbus 34 bzw. den 2-Bit-Anweisungsdatenlängenbus 36 an die Ausführungseinheit 14 weitergeleitet.
- Die Ausführungseinheit 14 leitet diese Zugriffstyp- und Datenlängeninformationen über den Zugriffstypbus 38 bzw. den Datenlängenbus 40 an die Speichermanagementeinheit 16 weiter. Die Speichermanagementeinheit 16 verwendet diese Informationen, wenn sie die Speicherzugriffe auf die erforderlichen Orte einleitet. Genauer, eine einfache Hardware-Primitiv-Schaltung (z. B. ein Decodierer) in der Speichermanagementeinheit 16 decodiert schnell die Bits auf dem Zugriffstypbus 38, um zu ermitteln, ob der spezielle Zugriffstyp zum Einleiten des derzeit angeforderten Speicherzugriffes an dem entsprechenden Speicherplatz ein Lesen, Schreiben oder Modifizieren erfordert. Wie obenerwähnt ist, umfassen diese Zugriffstypen Lese-, Schreib-, Modifizierungs-Typen (auch als "lesen/modifizieren/ schreiben" bezeichnet), einen Adressentyp (d. h. die Adresse selbst wird verwendet, ohne zu lesen, zu schreiben oder zu modifizieren) sowie einen Bitfeldtyp. Wenn der Zugriffstyp ein "Adressen"-Typ oder "Bitfeld"- Typ ist, implementiert die Ausführungseinheit ihrerseits die spezifizierte "Zugriffstyp"-Operation Die Datengröße dieses Zugriffes wird auf dem Datenlängenbus 40 angezeigt.
- Während die Anweisungseinheit 12 den Operandenspezifizierer einer der 22 Gruppen der Adressierungsmethoden zuteilt, decodiert die Anweisungseinheit 12 ferner die Zugriffstypbits in der Maschinenebenen-Anweisung für diesen Operanden. Diese Informationen in Verbindung mit der Operandenspezifizierer-Gruppenklassifizierung bestimmen, welcher der 22 Mikroprogrammroutinen-Einsprungpunkte verwendet werden soll, um die Verarbeitung des entsprechenden Operandenspezifizierers einzuleiten. Diese Einsprungadresse wird anschließend von der Anweisungseinheit 12 über den Auswahlbus 24 zur Mikroablaufsteuerung 20 weitergeleitet. Die Mikroablaufsteuerung 20 leitet anschließend die Mikroprogrammausführung an diesem Punkt ein, indem er die Einsprungadresse über den Mikroadreßbus 30 zum Mikrospeicher 18 sendet. Während die Sequenzen der Mikrowörter aus dem Mikrospeicher 18 gelesen werden, werden sie auf dem Mikroanweisungsbus 28 der Ausführungseinheit 14 und der Speichermanagementeinheit 16 zur Verfügung gestellt. Die niedrigwertigen 16 Bitleitungen 28a des Mikroanweisungsbusses 28 sind zur Mikroablaufsteuerung 20 zurückgeführt, so daß diese Bits der Mikroanweisung von der Mikroablaufsteuerung 20 verwendet werden können, um die Mikrospeicheradresse der nächsten auszuführenden Mikroanweisung zu ermitteln. Die restlichen höherwertigen Bitleitungen 28b des Mikroanweisungsbusses 28 sind zur Ausführungseinheit 14 geführt, die für diese Bits der individuellen Mikroanweisung einen Pfad zur Verfügung stellt, der verwendet wird, um die Vorgänge in der Ausführungseinheit 14 zu steuern, wie z. B. das Lesen oder Laden der verschiedenen Register, die Operation der ALU, die Eingabe/Ausgabe über die Busse 26, 32 und dergleichen, wie es in einer mikrocodierten CPU üblich ist.
- Unmittelbare Daten, die in Maschinenebenen-Anweisungen enthalten sind, wie z. B. Adressierungsmethoden-Verschiebungswerte, werden von der Anweisungseinheit 12 über den Anweisungsdatenbus 26 an die Ausführungseinheit 14 weitergeleitet, so daß sie der Ausführungseinheit 14 für die Berechnung der Operandenadressen und der Operanden zur Verfügung stehen. Die in Maschinenebenen-Anweisungen spezifizierten Verschiebungswerte können 8-Bit-, 16-Bit- oder 32-Bit-Werte sein. Eine Hardware-Primitiv-Schaltung (z. B. ein Decodierer und eine Logikschaltung), die in der Anweisungseinheit 12 vorhanden ist, ist für die vorzeichenbehaftete Erweiterung (falls erforderlich) aller Verschiebungswerte zuständig, so daß diese alle zu 32- Bit-Werten werden. Auf diese Weise werden 32-Bit-Verschiebungswerte von der Anweisungseinheit 12 über den Anweisungsdatenbus 26 zur Ausführungseinheit 14 weitergeleitet, wobei alle Verschiebungswerte ungeachtet ihrer ursprünglich spezifizierten Größe einheitlich als 32-Bit- Werte behandelt werden können.
- Die Ausführung jeder Maschinenebenen-Anweisung erfordert die Ausführung mehrerer Mikroprogrammroutinen. Zuerst muß eine der 22 typischen Mikroprogramm-Operandenspezifizierer-Verarbeitungsroutinen für jeden Operandenspezifizierer im Maschinenebenen-Anweisungswort ausgeführt werden, so daß diese Operanden unter der Steuerung der Speichermanagementeinheit 16 aus dem Hauptspeicher gelesen und der Ausführungseinheit 14 zur Verfügung gestellt werden können. Der VAX-Architekturstandard definiert Maschinenebenen-Anweisungen, die bis zu sechs spezifizierte Operanden besitzen. Nur nachdem alle Operandenspezifizierer verarbeitet worden sind, kann eine weitere Mikroprogrammroutine ausgeführt werden, um die Ausführung der angeforderten Operation bezüglich der Operanden einzuleiten.
- Nach Abschluß der Ausführung der angeforderten Operation in einer Maschinenebenen-Anweisung wird aus dem Hauptspeicher die nächste Maschinenebenen-Anweisung geholt, die von dem PC angegeben wird, wobei der gesamte obenerwähnte Prozeß für diese Anweisung wiederholt wird.
- Obwohl diese Erfindung mit Bezug auf eine spezielle Ausführungsform beschrieben worden ist, ist die Beschreibung nicht im einschränkenden Sinn aufzufassen. Für Fachleute sind aufgrund dieser Beschreibung verschiedene Abwandlungen der offenbarten Ausführungsform sowie andere Ausführungsformen der Erfindung offensichtlich, die in den Umfang der Erfindung fallen, wie sie in den beigefügten Ansprüchen definiert ist.
Claims (27)
1. Verfahren zum Betreiben einer mikrocodierten CPU
(10) in einem Computersystem, mit den Schritten:
a) Gruppieren von Operandenspezifizierertypen, die
durch ähnliche Operandenspezifiziererkriterien mehrerer
verschiedener typischer Operandenadressierungsmethoden
definiert sind,
b) Decodieren einer Anweisung in der CPU, um zu
bestimmen, welche Methode aus einer Menge der mehreren
verschiedenen typischen Operandenadressierungsmethoden durch
die Anweisung spezifiziert ist, und Erzeugen einer
Mikrospeicheradresse auf der Grundlage der Bestimmung,
c) Adressieren eines Einzelmikrospeichers (18) in
der CPU unter Verwendung der Mikrospeicheradresse und
ohne bedingte Verzweigung, um eine ausgewählte Sequenz von
Mikroanweisungen zu erzeugen, die der einen Methode aus
der Menge von verschiedenen typischen
Operandenadressierungsmethoden entsprechen,
d) außerdem Decodieren der Anweisung in der CPU
getrennt von der Adressierung des Mikrospeichers (18), um
zu bestimmen, welches Merkmal aus einer Menge von
Operandenmerkmalen durch die Anweisung spezifiziert ist, und
Erzeugen von spezifischen Steuerbits getrennt von der
ausgewählten Sequenz von Mikroanweisungen, um das eine
Merkmal aus der Menge von Operandenmerkmalen zu
definieren,
e) Verwenden der ausgewählten Sequenz von
Mikroanweisungen und der spezifischen Steuerbits in
Ausführungs- und Adressierungseinrichtungen in der CPU, um Operanden
zu holen oder auszuwählen, die durch die Anweisung in der
CPU verarbeitet werden sollen.
2. Verfahren nach Anspruch 1, in dem die Menge von
verschiedenen Operandenadressierungsmethoden wenigstens
eine Methode der unmittelbaren Adressierung, in der
wenigstens ein Operand in der Anweisung enthalten ist, und
ferner wenigstens eine Methode der indexierten
Adressierung, in der die Adresse wenigstens eines Operanden aus
einer Basisadresse und einem in einem Register der CPU
enthaltenen Index berechnet wird, enthält.
3. Verfahren nach Anspruch 2, in dem die Menge der
verschiedenen Operandenadressierungsmethoden ferner
wenigstens eine Methode der Registeradressierung enthält,
in der wenigstens ein Operand in einem Register der CPU
enthalten ist.
4. Verfahren nach Anspruch 3, in dem die Menge der
verschiedenen Operandenadressierungsmethoden ferner
wenigstens eine Methode der indirekten Registeradressierung
enthält, in der die Adresse eines Operanden in einem
Register der CPU enthalten ist.
5. Verfahren nach Anspruch 2, in dem die Menge der
Operandenmerkmale mehrere verschiedene Datenlängen für
einen Operanden enthält.
6. Verfahren nach Anspruch 5, in dem die Datenlängen
ein Acht-Bit-Byte, ein Sechzehn-Bit-Wort und ein
Zweiunddreißig-Bit-Wort enthalten.
7. Verfahren nach Anspruch 2, in dem die Menge der
Operandenmerkmale mehrere verschiedene Speicher-
Lese/Schreib-Steuerungen einschließlich Lesen, Schreiben
und kein Lesen oder Schreiben enthält.
8. Verfahren nach Anspruch 1 zum Spezifizieren von
Operanden für eine in der mikrocodierten CPU (10)
ausgeführte Anweisung, in dem die Operandenmerkmale, die durch
die Anweisung spezifiziert sind, die Verwendung einer von
mehreren verschiedenen Datenlängen sowie von
verschiedenen Zugriffstypen in Verbindung mit den mehreren
verschiedenen typischen Operandenadressierungsmethoden
enthalten, wobei das Verfahren ferner die Schritte enthält:
im Schritt (b) Auswählen einer Auswahladresse aus
einer Menge von Auswahladressen zum Auswählen der einen
typischen Mikroanweisungssequenz aus einer Menge von
typischen Mikroanweisungssequenzen, wobei jedes Element der
Menge von typischen Mikroanweisungssequenzen einer der
mehreren verschiedenen typischen
Operandenadressierungsmethoden entspricht;
im Schritt (c) Adressieren des Mikrospeichers
(18) durch Beginnen bei einem Einsprungpunkt, der durch
die ausgewählte Auswahladresse bestimmt ist, und
Fortsetzen, um den Mikrospeicher ohne die bedingte Verzweigung
zu adressieren;
im Schritt (d) Auswählen einer spezifischen
Operandenmethode aus einer Menge von mehreren spezifischen
Operandenmethoden, wobei jede Methode aus der Menge von
spezifischen Operandenmethoden eine der mehreren
verschiedenen Datenlängen und einen der mehreren
verschiedenen Zugriffstypen erzeugt;
im Schritt (e) Anwenden der ausgewählten Sequenz
der typischen Mikroanweisungssequenzen in einer
Ausführungseinheit (14) der CPU (10), um die Operanden für die
Anweisung aus einem Register in der CPU oder aus einem
von der CPU getrennten Speicher zu holen oder
auszuwählen,
wobei die Operanden als Antwort auf die eine der
mehreren verschiedenen typischen
Operandenadressierungsmethoden geholt oder ausgewählt werden; und
Eingeben der Steuerbits in die Ausführungseinheit
(14) der CPU getrennt von der Sequenz von
Mikroanweisungen, wobei die Ausführungseinheit als Antwort auf die
Steuerbits eine spezifischen Operandenmethode, die einem
Merkmal aus der Menge von Operandenmerkmalen entspricht,
für das Holen und Auswählen von Operanden auswählt.
9. Verfahren nach Anspruch 8, in dem die Menge von
typischen Mikroanweisungssequenzen N
Mikroanweisungssequenzen enthält und die Menge von spezifischen
Operandenmethoden M spezifische Operandenmethoden enthält, wobei N
und N größer als 2 sind, wobei die
Mikroanweisungssequenzen in der Menge von typischen Mikroanweisungssequenzen
in einer Anzahl vorliegen, die viel kleiner als N mal M
ist.
10. Verfahren nach Anspruch 8, in dem die
spezifischen Operandenmethoden die Adressierung von Operanden
mit unterschiedlichen Datenlängen enthalten.
11. Verfahren nach Anspruch 8, in dem die
spezifischen Operandenmethoden Speichersteuerfunktionen für das
Lesen und Schreiben enthalten.
12. Verfahren nach Anspruch 8, in dem die typischen
Operandenadressierungsmethoden wenigstens eine typische
Adressierungsmethode des Verschiebungstyps enthalten, in
der Daten variabler Länge zusammen mit der Anweisung als
eine Verschiebung enthalten sind und die Verschiebung zu
einem Wert in einem Register in der Ausführungseinheit
addiert wird.
13. Verfahren nach Anspruch 12, in dem die
spezifischen Operandenmethoden Methoden enthalten, die
wenigstens zwei verschiedene Datenlängen für die Verschiebung
erfordern.
14. Verfahren nach Anspruch 13, das den Schritt der
Zeichenerweiterung sämtlicher von der Anweisung
empfangenen Verschiebungen bis zur größten der verschiedenen
Datenlängen enthält.
15. Verfahren nach Anspruch 8, in dem die Menge der
typischen Operandenadressierungsmethoden wenigstens eine
Methode der direkten Adressierung, wenigstens eine
Methode der indexierten Adressierung und wenigstens eine
Methode der Registeradressierung enthält.
16. Verfahren nach Anspruch 15, in dem die Menge der
typischen Operandenadressierungsmethoden zwei der
direkten Adressierungsmethoden, wovon eine das Lesen oder
Schreiben an einer Adresse im Speicher schafft und eine
weitere das Definieren der Adresse ohne Lesen oder
Schreiben der Adresse im Speicher schafft.
17. Verfahren nach Anspruch 16, in dem die Menge der
spezifischen Operandenmethoden eine spezifische Methode
zum Lesen und eine spezifische Methode zum Schreiben
enthält.
18. Vorrichtung zum Verarbeiten von
Operandenspezifizieren für eine in einer mikrocodierten CPU (10)
ausgeführte Anweisung, wobei jeder der Operandenspezifizierer
eine von mehreren verschiedenen Adressierungsmethoden und
eine von mehreren verschiedenen Operandenmethoden
erfordern kann, mit:
Einrichtungen (12, 18) zum Gruppieren von
Operandenspezifierertypen, die durch ähnliche
Operandenspezifiziererkriterien der mehreren verschiedenen typischen
Operandenadressierungsmethoden definiert sind,
einer Decodierungseinrichtung (12) in der CPU,
die die Anweisung empfängt und die Anweisung codiert, um
eine Auswahladresse für eine ausgewählte Sequenz aus
einer Menge von typischen Mikroanweisungssequenzen zu
erzeugen, wobei jedes Element der Menge eine der mehreren
typischen Operandenadressierungsmethoden entspricht,
einem Einzelmikrospeicher (18) in der CPU, der
die Menge von typischen Mikroanweisungssequenzen
speichert, wobei der Mikrospeicher einen Adresseneingang (30)
und einen Mikroanweisungsausgang (28b) besitzt, und einer
Adressierungseinrichtung (20) für den Mikrospeicher (18),
die die Auswahladresse empfängt und Mikrospeicheradressen
in den Adresseneingang (30) des Mikrospeichers beginnend
bei einem Einsprungpunkt eingibt, der aus der von der
Decodierungseinrichtung (12) empfangenen Auswahladresse
bestimmt wird, und die Mikrospeicheradressen für die
ausgewählte Sequenz der Menge von typischen
Mikroanweisungssequenzen ohne bedingte Verzweigung durchläuft, wobei der
Mikrospeicher (18) am Mikroanweisungsausgang als Antwort
auf die Mikrospeicheradressen Mikroanweisungen erzeugt,
die der ausgewählten Sequenz der Menge von typischen
Mikroanweisungssequenzen entsprechen,
einer Ausführungs- und Adressierungseinrichtung
(14) in der CPU mit mehreren Registern und Bus- und
Speicheradressierungseinrichtungen, wobei die
Ausführungs- und Adressierungseinrichtungen an den
Mikroanweisungsausgang (28 b) angeschlossen sind und auf die
Mikroanweisungen ansprechen, um Operanden für die Anweisung aus einem
Register der mehreren Register in der CPU oder aus einem
von der CPU getrennten Speicher (13) unter Verwendung der
Bus- und Speicheradressierungseinrichtungen in
Übereinstimmung mit einer ausgewählten Sequenz der typischen
Mikroanweisungssequenzen,
die einer der typischen
Operandenadressierungsmethoden entspricht, zu holen oder
auszuwählen,
und außerdem einer Einrichtung (12) zum
Decodieren der Anweisung, um getrennt von der Auswahladresse
Steuerbits zu erzeugen, um eine der mehreren
verschiedenen Operandenmethoden auszuwählen,
Einrichtungen (34, 36) zum Eingeben der
Steuerbits in die Ausführungs- und Adressierungseinrichtungen
(14) getrennt von der Mikroanweisungssequenz, wobei die
Bus- und Speicheradressierungseinrichtungen auf die
Steuerbits ansprechen, damit die Bus- und
Speicheradressierungseinrichtungen die gewählte Methode der
Operandenmethoden als Antwort auf die ausgewählte Sequenz der
typischen Mikroanweisungssequenzen für das Holen oder
Auswählen von Operanden verwenden.
19. Vorrichtung nach Anspruch 18, in der die Menge
von typischen Mikroanweisungssequenzen N
Mikroanweisungssequenzen enthält und die Menge von spezifischen
Operandenmethoden N spezifische Operandenmethoden enthält,
wobei N und M größer als 2 sind, wobei die
Mikroanweisungssequenzen in der Menge der typischen
Mikroanweisungssequenzen in einer Anzahl vorliegen, die viel kleiner als N
mal M ist.
20. Vorrichtung nach Anspruch 18, in der die
verschiedenen Operandenmethoden die Adressierung von
Operanden mit unterschiedlichen Datenlängen enthalten.
21. Vorrichtung nach Anspruch 18, in der die
verschiedenen Operandenmethoden Speichersteuerfunktion für
das Lesen und Schreiben enthalten.
22. Vorrichtung nach Anspruch 18, in der die
typischen Operandenadressierungsmethoden wenigstens eine
typische Adressierungsmethode des Verschiebungstyps
enthalten, in der Daten variabler Länge zusammen mit der
Anweisung als eine Verschiebung enthalten sind und die
Verschiebung zu einem Wert in einem Register in der
Ausführungseinheit addiert wird.
23. Vorrichtung nach Anspruch 22, in der die
verschiedenen Operandenmethoden Methoden enthalten, die
wenigstens zwei verschiedene Datenlängen für die
Verschiebung erfordern.
24. Vorrichtung nach Anspruch 23, die Einrichtungen
(12, 36) für die Zeichenerweiterun4 der von der
Ausführungseinheit (14) aus den Anweisungen empfangenen
Verschiebung enthält.
25. Vorrichtung nach Anspruch 18, in der die Menge
der typischen Operandenadressierungsmethoden wenigstens
eine Methode der direkten Adressierung, wenigstens eine
Methode der indexierten Adressierung und wenigstens eine
Methode der Registeradressierung enthält.
26. Vorrichtung nach Anspruch 25, in der die Menge
der typischen Operandenadressierungsmethoden zwei der
Methoden der direkten Adressierung enthält, wovon eine das
Lesen oder Schreiben an einer Adresse im Speicher schafft
und die andere das Definieren der Adresse ohne Lesen oder
Schreiben der Adresse im Speicher schafft.
27. Vorrichtung nach Anspruch 26, in der die Menge
der verschiedenen Operandenmethoden eine spezifische
Methode zum Lesen und eine spezifische Methode zum
Schreiben enthält.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US21234888A | 1988-06-27 | 1988-06-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE68927313D1 DE68927313D1 (de) | 1996-11-14 |
DE68927313T2 true DE68927313T2 (de) | 1997-05-07 |
Family
ID=22790629
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE68927313T Expired - Fee Related DE68927313T2 (de) | 1988-06-27 | 1989-05-30 | Operandenspezifiererverarbeitung |
Country Status (5)
Country | Link |
---|---|
US (1) | US5500947A (de) |
EP (1) | EP0349124B1 (de) |
JP (1) | JP2840604B2 (de) |
CA (1) | CA1321652C (de) |
DE (1) | DE68927313T2 (de) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5832533A (en) * | 1995-01-04 | 1998-11-03 | International Business Machines Corporation | Method and system for addressing registers in a data processing unit in an indexed addressing mode |
US5717910A (en) * | 1996-03-29 | 1998-02-10 | Integrated Device Technology, Inc. | Operand compare/release apparatus and method for microinstrution sequences in a pipeline processor |
US6178495B1 (en) * | 1998-04-30 | 2001-01-23 | International Business Machines Corporation | Processor E-unit to I-unit interface instruction modification with E-unit opcode computer logic in the unit |
US6463521B1 (en) * | 1999-06-23 | 2002-10-08 | Sun Microsystems, Inc. | Opcode numbering for meta-data encoding |
US6802056B1 (en) * | 1999-06-30 | 2004-10-05 | Microsoft Corporation | Translation and transformation of heterogeneous programs |
US8082467B2 (en) * | 2009-12-23 | 2011-12-20 | International Business Machines Corporation | Triggering workaround capabilities based on events active in a processor pipeline |
US9104399B2 (en) * | 2009-12-23 | 2015-08-11 | International Business Machines Corporation | Dual issuing of complex instruction set instructions |
US9135005B2 (en) * | 2010-01-28 | 2015-09-15 | International Business Machines Corporation | History and alignment based cracking for store multiple instructions for optimizing operand store compare penalties |
US8495341B2 (en) * | 2010-02-17 | 2013-07-23 | International Business Machines Corporation | Instruction length based cracking for instruction of variable length storage operands |
US8938605B2 (en) * | 2010-03-05 | 2015-01-20 | International Business Machines Corporation | Instruction cracking based on machine state |
US8464030B2 (en) | 2010-04-09 | 2013-06-11 | International Business Machines Corporation | Instruction cracking and issue shortening based on instruction base fields, index fields, operand fields, and various other instruction text bits |
US8645669B2 (en) | 2010-05-05 | 2014-02-04 | International Business Machines Corporation | Cracking destructively overlapping operands in variable length instructions |
US8539206B2 (en) * | 2010-09-24 | 2013-09-17 | Intel Corporation | Method and apparatus for universal logical operations utilizing value indexing |
US20160179550A1 (en) * | 2014-12-23 | 2016-06-23 | Intel Corporation | Fast vector dynamic memory conflict detection |
US20230060146A1 (en) * | 2021-08-31 | 2023-03-02 | Intel Corporation | Bfloat16 classification and manipulation instructions |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3958221A (en) * | 1973-06-07 | 1976-05-18 | Bunker Ramo Corporation | Method and apparatus for locating effective operand of an instruction |
JPS6055849B2 (ja) * | 1975-12-04 | 1985-12-06 | 株式会社東芝 | 命令制御方式 |
US4236206A (en) * | 1978-10-25 | 1980-11-25 | Digital Equipment Corporation | Central processor unit for executing instructions of variable length |
US4312034A (en) * | 1979-05-21 | 1982-01-19 | Motorola, Inc. | ALU and Condition code control unit for data processor |
US4342078A (en) * | 1979-05-21 | 1982-07-27 | Motorola, Inc. | Instruction register sequence decoder for microprogrammed data processor and method |
US4415969A (en) * | 1980-02-07 | 1983-11-15 | Intel Corporation | Macroinstruction translator unit for use in a microprocessor |
JPS56152049A (en) * | 1980-04-25 | 1981-11-25 | Toshiba Corp | Microprogram control system |
USRE32493E (en) * | 1980-05-19 | 1987-09-01 | Hitachi, Ltd. | Data processing unit with pipelined operands |
US4530050A (en) * | 1981-08-26 | 1985-07-16 | Hitachi, Ltd. | Central processing unit for executing instructions of variable length having end information for operand specifiers |
JPS58146941A (ja) * | 1982-02-26 | 1983-09-01 | Hitachi Ltd | マイクロプログラム制御デ−タ処理装置 |
US4812971A (en) * | 1983-10-03 | 1989-03-14 | Digital Equipment Corporation | Central processing unit for a digital computer |
US4586130A (en) * | 1983-10-03 | 1986-04-29 | Digital Equipment Corporation | Central processing unit for a digital computer |
GB8421066D0 (en) * | 1984-08-18 | 1984-09-19 | Int Computers Ltd | Microprogram control |
JPS6282402A (ja) * | 1985-10-07 | 1987-04-15 | Toshiba Corp | シ−ケンス制御装置 |
JPH0827716B2 (ja) * | 1985-10-25 | 1996-03-21 | 株式会社日立製作所 | データ処理装置及びデータ処理方法 |
US4709324A (en) * | 1985-11-27 | 1987-11-24 | Motorola, Inc. | Data processor control unit having an interrupt service using instruction prefetch redirection |
JP2554050B2 (ja) * | 1986-02-26 | 1996-11-13 | 株式会社日立製作所 | デ−タ処理方法 |
JP2609618B2 (ja) * | 1987-08-13 | 1997-05-14 | 株式会社東芝 | データ処理装置 |
JPH01183736A (ja) * | 1988-01-18 | 1989-07-21 | Toshiba Corp | 情報処理装置 |
-
1989
- 1989-05-30 EP EP89305430A patent/EP0349124B1/de not_active Expired - Lifetime
- 1989-05-30 DE DE68927313T patent/DE68927313T2/de not_active Expired - Fee Related
- 1989-06-26 CA CA000603886A patent/CA1321652C/en not_active Expired - Fee Related
- 1989-06-27 JP JP1165141A patent/JP2840604B2/ja not_active Expired - Fee Related
-
1994
- 1994-07-01 US US08/269,991 patent/US5500947A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0349124A3 (de) | 1991-12-18 |
JP2840604B2 (ja) | 1998-12-24 |
US5500947A (en) | 1996-03-19 |
EP0349124B1 (de) | 1996-10-09 |
DE68927313D1 (de) | 1996-11-14 |
EP0349124A2 (de) | 1990-01-03 |
JPH0296233A (ja) | 1990-04-09 |
CA1321652C (en) | 1993-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3486399T2 (de) | Zentrale Verarbeitungseinheit mit der Fähigkeit, Befehle mit variablen Längen zu unterstützen. | |
DE68927313T2 (de) | Operandenspezifiererverarbeitung | |
DE69030905T2 (de) | Mikroprozessor mit Pipeline-Predecodereinheit und -Hauptdecodereinheit | |
DE69614515T2 (de) | Software-emulationssystem mit dynamischer übersetzung von emulierten befehlen zur erhöhung der verarbeitungsgeschwindigkeit | |
DE68928677T2 (de) | Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle | |
DE3750935T2 (de) | Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner. | |
DE3687724T2 (de) | Digitalprozessorsteuerung. | |
DE69723286T2 (de) | Echtzeitprogramm-sprachbeschleuniger | |
DE69833008T2 (de) | Prozessor mit instruktionskodierung mittels eines schablonenfeldes | |
DE3688824T2 (de) | Datenverarbeitungssystem. | |
DE69131637T2 (de) | Registerhaltige Datenbearbeitung in einem Prozessor mit reduziertem Befehlssatz | |
DE68928812T2 (de) | Vorrichtung zur Auflösung von einer variablen Anzahl von möglichen Speicherzugriffskonflikten in einem Pipeline-Rechnersystem und Verfahren dazu | |
DE3586899T2 (de) | Instruktionsvorgriffsystem fuer bedingte sprungbefehle in einer zentralen verarbeitungseinrichtung. | |
DE69033131T2 (de) | Logikvorrichtung und Verfahren zur Verwaltung einer Befehlseinheit in einer Pipeline-Verarbeitungseinheit | |
DE3854701T2 (de) | Methode und Vorrichtung zum Verändern von Mikrobefehlen mit einer Makrobefehlspipeline. | |
DE3788877T2 (de) | Einrichtung zur software-emulation. | |
DE3851746T2 (de) | Sprungvorhersage. | |
DE69027932T2 (de) | Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen | |
DE102018125817A1 (de) | Systeme und Verfahren zum Laden eines Kachelregisterpaars | |
DE69130757T2 (de) | Ausführungsvorrichtung für bedingte Verzweigungsbefehle | |
DE2813128A1 (de) | Mikroprogrammspeicher | |
DE2715073B2 (de) | Mikroprogranunierte Rechner-Steuervorrichtung | |
DE69616718T4 (de) | Vorrichtung und verfahren zur bestimmung von adressen fehlausgerichteter daten | |
DE102018126036A1 (de) | Systeme und verfahren zum setzen eines kachelregisterpaars auf null | |
DE3856139T2 (de) | Mikroprozessor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |