DE68927313T2 - Operandenspezifiererverarbeitung - Google Patents

Operandenspezifiererverarbeitung

Info

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
Application number
DE68927313T
Other languages
English (en)
Other versions
DE68927313D1 (de
Inventor
Iii John F Brown
Michael G Uhler
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Digital Equipment Corp
Original Assignee
Digital Equipment Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Digital Equipment Corp filed Critical Digital Equipment Corp
Publication of DE68927313D1 publication Critical patent/DE68927313D1/de
Application granted granted Critical
Publication of DE68927313T2 publication Critical patent/DE68927313T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding 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.
DE68927313T 1988-06-27 1989-05-30 Operandenspezifiererverarbeitung Expired - Fee Related DE68927313T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 情報処理装置

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