DE3486085T2 - Zentrale Verarbeitungseinheit für einen Digitalrechner. - Google Patents

Zentrale Verarbeitungseinheit für einen Digitalrechner.

Info

Publication number
DE3486085T2
DE3486085T2 DE84306436T DE3486085T DE3486085T2 DE 3486085 T2 DE3486085 T2 DE 3486085T2 DE 84306436 T DE84306436 T DE 84306436T DE 3486085 T DE3486085 T DE 3486085T DE 3486085 T2 DE3486085 T2 DE 3486085T2
Authority
DE
Germany
Prior art keywords
register
registers
operand
pointer
alu
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
DE84306436T
Other languages
English (en)
Other versions
DE3486085D1 (de
Inventor
Butts, Jr
David N Cutler
Peter Charles Schnorr
Robert T Short
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 DE3486085D1 publication Critical patent/DE3486085D1/de
Application granted granted Critical
Publication of DE3486085T2 publication Critical patent/DE3486085T2/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/22Microcontrol or microprogram arrangements
    • G06F9/226Microinstruction function, e.g. input/output microinstruction; diagnostic microinstruction; microinstruction format
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/30181Instruction operation extension or modification
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Exchange Systems With Centralized Control (AREA)
  • Hardware Redundancy (AREA)
  • Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)
  • Motorcycle And Bicycle Frame (AREA)
  • Paper (AREA)
  • Measurement Of Velocity Or Position Using Acoustic Or Ultrasonic Waves (AREA)
  • Advance Control (AREA)
  • Communication Control (AREA)

Description

    HINTERGRUND DER ERFINDUNG
  • In den vergangenen Jahren wurde eine Anzahl von digitalen Computern entwickelt, die ein virtuelles Memorymanagementsystem, 32-Bit breite Datenpfade, Daten-Caches, die Möglichkeit des Gebrauchs einer Vielfalt von Datentypen und Adressiermoden, Instruktionsformate mit variabler Länge und andere fortgeschrittene Merkmale aufweisen. Bis heute jedoch war das Ergebnis des Einbeziehens derartiger Merkmale ein Computer von beträchtlichen Kosten und physikalischer Größe. Beispielsweise würde es nicht ungewöhnlich für die Zentraleinheit eines Computers mit den oben aufgelisteten Attributen sein, eine Schaltplattenfläche von 3200 cm² einzunehmen. Daraus resultiert, daß es unmöglich oder unpraktisch war, derartige Computer in vielen Applikationen einzusetzen.
  • Großintegrierte Schaltkreise (LSI) und Microcode-Kontrolle waren jüngste Entwicklungen, die es erlauben, fortgeschrittene Merkmale in das Design niedrigpreisiger Computer einzubeziehen. Ein Datenprozessor, der diese Entwicklung einbezieht, wird beispielsweise in Koda et al. U.S. Patent 4,347,566 beschrieben. Insbesondere offenbart die US 4,347,566 eine Zentraleinheit, wie sie im Anspruch 1 definiert ist, und sie offenbart ebenfalls ein Verfahren zur Durchführung von Mikroinstruktionen, wie es im Anspruch 5 definiert ist. In einem derartigen Datenprozessor ist ein Registerfeld und eine arithmetisch-logische Einheit (ALU) in einem integrierten Schaltkreis ausgebildet. Zur Adressierung des Registerfeldes ist ein Paar von Zeigerregistern vorgesehen, die direkt mit dem Registerfeld zum Speichern von Adreßdaten zur Adressierung des Registerfeldes verbunden sind. Durch die Verwendung eines Paares von Zeigerregistern ist es für die zwei Zeigerregister möglich, simultan zwei allgemeine Register zu adressieren, die Operanden als Eingabe zu der arithmetisch-logischen Einheit zur Verfügung zu stellen, so daß dadurch die Durchführungszeit verkürzt wird.
  • Eine Schwierigkeit, die bei der Integration einer großen Anzahl von Zeigerregistern und allgemeinen Registern auf demselben integrierten Schaltkreis-Chip auftritt, ist die Freiheit des Gebrauchs der Zeigerregister und die Komplexität des Adressierens der individuellen Register. Insbesondere ist es eine Verschwendung von Microcode und integrierter Schaltungs- Chipfläche, zweckbestimmte Register als Zeigerregister zur Adressierung der allgemeinen Register zu benutzen.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Entsprechend einem Aspekt der Erfindung ist in der Zentraleinheit, wie sie in dem Anspruch 1 beansprucht wird, jedem der Zeigerregister eine der Registermikrooperandenadressen sowohl direkt als auch indirekt für die Mikrooperandenregisterfelder zugewiesen, derart, daß eine der direkten Zeigerregistermikrooperandenadressen als ein Mikrooperand den Inhalt eines direktadressierten Zeigerregisters für ein spezielles Eingangsport der ALU spezifiziert, und eine der indirekten Registermikroadressen als ein Mikrooperand den Inhalt eines der allgemeinen Register für einen bestimmten Eingangsport der ALU durch den Inhalt des indirekt adressierten Zeigerregisters spezifiert, und wobei die Registerzugriffsmittel Verbindungen von Ausgängen jedes der Zeigerregister zu jedem der Eingangsporte der ALU aufweisen, um in simultaner Weise den Inhalt eines der direkt adressierten Zeigerregister einem speziellen Eingangsport der ALU und den Inhalt eines anderen direkt adressierten Zeigerregisters einem Eingangsport der ALU bereitzustellen.
  • Entsprechend einem weiteren Aspekt der Erfindung wird in dem Verfahren nach Anspruch 5 jedem der Zeigerregister sowohl eine eindeutig direkte Registermikrooperandenadresse und eine eindeutig indirekte Registermikrooperandenadresse für die Mikrooperandenregisterfelder zugewiesen, derart, daß eine der direkten Zeigerregistermikrooperandenadressen als ein Mikroperand den Inhalt eines direkt adressierten Zeigerregisters für ein bestimmtes der Eingangsport der ALU spezifiziert, und eine der direkten Registermikroadressen als ein Mikrooperand den Inhalt eines speziellen der allgemeinen Register für ein bestimmtes Eingangsport der ALU spezifiziert, spezifiziert durch den Inhalt des indirekt adressierten Zeigerregisters; wobei die Registerzugriffsmittel Verbindungen vom Ausgang jeder der Zeigerregister zu jedem der Eingänge der ALU umfassen, um simultan den Inhalt eines des direkt adressierten Zeigerregisters einem bestimmten der Eingangsports der ALU bereitzustellen und den Inhalt eines weiteren direkt adressierten Zeigerregisters einem anderen Eingangsport der ALU bereitzustellen; jedes der allgemeinen Register hat eine eindeutige direkte Registermikrooperandenadresse für die Mikroperandenregisterfelder, derart, daß eine direkte der allgemeinen Registermikrooperandenadressen als ein Mikrooperand den Inhalt eines direkt adressierten allgemeinen Registers einem bestimmten Eingangsport der ALU unabhängig von dem Inhalt des Zeigerregisters spezifiziert;
  • und das Verfahren ferner die folgenden Schritte umfaßt
  • Versorgen eines entsprechenden Eingangs der ALU mit einem Literaloperanden, der in ein direkt adressiertes Zeigerregister geladen wird, wenn das direkt adressierte Zeigerregister direkt durch seine eindeutig direkte Mikroregisteradresse von dem jeweiligen Registerfeld der Mikroinstruktion adressiert wird;
  • Versorgen des entsprechenden Eingangs der ALU mit Daten, die durch eines der direkt adressierten allgemeinen Register bereitgestellt werden, wenn das direkt adressierte allgemeine Register direkt durch seine eindeutige direkte Registermikrooperandenadresse von dem entsprechenden Registerfeld der Mikroinstruktion adressiert wird;
  • Versorgen eines entsprechenden der Eingänge der ALU mit Daten, die durch eines der spezifizierten allgemeinen Register, spezifiziert durch den Inhalt eines der indirekt adressierten Zeigerregisters bereitgestellt werden, wenn das indirekt adressierte Zeigerregister durch seine eindeutig direkte Mikroregisteradresse von dem entsprechenden Registerfeld der Mikroinstruktionen adressiert wird.
  • Die Zentraleinheit der vorliegenden Erfindung ist kompakt und ökonomisch und erlaubt die Implementation von leistungsfähigen Funktionen mit extrem kompaktem Mikrocode.
  • In Übereinstimmung mit einem bevorzugten Merkmal der Erfindung ist jedem der allgemeinen Register eine eindeutige direkte Registermikrooperandenadresse für die Mikrooperandenregisterfelder zugeordnet, derart, daß einer der direkten allgemeinen Registermikrooperandenadressen auf den Inhalt eines der direkt adressierten allgemeinen Register unabhängig von dem Inhalt der Zeigerregister zugreift.
  • In Übereinstimmung mit einem weiteren bevorzugten Merkmal der Erfindung beinhalten die Decodiermittel Mittel zur Decodierung eines Operandenspezifizierers in Abhängigkeit von einer Operandenspezifizierer-Decodier-Mikroinstruktion, verbunden mit einer früheren Mikroinstruktion, und wobei die Decodiermittel angeordnet sind, um das Registerfeld jedes decodierten Operandenspezifizierers in ein designiertes Zeigerregister zu laden, welches durch Flag-Daten festgelegt wurde, die innerhalb der Operandenspezifier-Decodier-Mikroinstruktion enthalten sind.
  • Die Zeigerregister können deshalb in einer zweifach funktionalen Weise als Literaloperandenregister oder als allgemeines Registeradressenzeigerregister benutzt werden, ohne die Komplexität der Mikroinstruktionen oder die Komplexität der Adressierung der individuellen Register zu erhöhen. Dies ist eine Folge der Tatsache, daß die direkte Mikroadressierung eines Zeigerregisters, die direkte Mikroadressierung eines allgemeinen Registers und die indirekte Mikroadressierung eines Zeigerregisters unabhängige und wechselseitig ausschließende Mittel zur Spezifizierung eines Mikrooperanden sind.
  • Diese und andere Merkmale der bevorzugten Ausführungsform der Erfindung werden genauer in der folgenden detaillierten Beschreibung in Verbindung mit den begleitenden Zeichnungen näher erläutert werden, allerdings nur anhand eines Beispiels.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Fig. 1 ist ein Blockdiagramm eines Computersystems mit einer Zentraleinheit gemäß der vorliegenden Erfindung.
  • Fig. 2 ist ein Blockdiagramm einer Ausführungsform der Zentraleinheit der vorliegenden Erfindung.
  • Fig. 3 ist ein Blockdiagramm eines Mikrosequenzers zum Gebrauch mit der Zentraleinheit der vorliegenden Erfindung.
  • Fig. 4 ist eine Tabelle, die das Verfahren zur Bestimmung der nächsten Mikroadresse durch den Mikrosequenzer illustriert.
  • Fig. 5 ist eine Tabelle, die die Kontrollsignale anzeigt, die zur Modifizierung der nächsten Mikroadresse benutzt werden können.
  • Fig. 6 ist ein Blockdiagramm, das die logische Kontrolleinheit der Zentraleinheit der vorliegenden Erfindung detailliert
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • Fig. 1 illustriert ein Computersystem, das eine bevorzugte Ausführungsform der Zentraleinheit gemäß der vorliegenden Erfindung umfaßt. Das Computersystem beinhaltet eine Zentraleinheit (CPU) 10, einen Systembus 20, einen Speicher-Array 22 und ein Consolterminal 24. Das Computersystem kann zusätzlich verschiedene periphere Einrichtungen (nicht dargestellt) enthalten, die mit dem Systembus 20 verbunden sind, beispielsweise Plattencontroller und Netzwerkinterface. Das Consolenterminal 24 kann fortfallen, falls ein passendes Interface auf dem Bus 20 vorgesehen ist, beispielsweise ein Interface zu einem LAN (local area network). Die CPU 10 umfaßt Speicherkontrollmodule 12 und Datenpfadmodule 14. Die aktuelle Durchführung von Programminstruktionen wird durch die Datenpfadmodule 14 kontrolliert, und die Speicherkontrollmodule 12 wirken im allgemeinen als ein Interface zwischen den Datenpfadmodulen und dem Systembus. Die Speicherkontroll- und die Datenpfadmodule kommunizieren über einen Speicherkontrollbus 16 und Speicherdatenbus 18.
  • Das Speicherkontrollmodul 12 ist eine mikroprogrammierte Vorrichtung, die bezüglich dem Datenpfadmodul 14 asynchron arbeitet. Das Speicherkontrollmodul bildet ein Interface zwischen der CPU und dem Systembus und liefert zusätzlich eine Adressenübersetzung, einen Instruktionen-Prefetch und Datencachefunktionen für das Datenpfadmodul 14. Die Adressenübersetzung bezieht sich auf die Übersetzung von virtuellen Adressen, die durch das Datenpfadmodul 14 spezifiziert sind, in eine aktuelle physikalische Adressen. Der Term Datencache bezieht sich auf Mittel zur Speicherung von kürzlich benutzten Daten in Hochgeschwindigkeitsspeicherarrays innerhalb der CPU.
  • Bezugnehmend auf Fig. 2 umfaßt das Speicherkontrollmodul 12 einen Transceiver 30, die Busse 32 und 34, einen Übersetzungspuffer/Cache 40, physikalische Adreßregister 42, ein Systembusinterface 44, eine Fusions-/Rotationseinheit 48, einen Mikrosequenzer/Kontrollspeicher 50, einen Buscontroller 52 und eine Instruktions-Prefetcheinheit 56. Die Funktion der Speicherkontrolleinheiten wird beschrieben durch die Darlegung der Abfolge der Operationen, die stattfinden, wenn das Datenpfadmodul 14 verlangt, daß Daten von einer spezifizierten virtuellen Adresse gelesen werden sollen. Das Datenpfadmodul legt die virtuelle Adresse in einen Buslatch 64, von wo aus es zum Speicherkontrollmodul 12 über den Speicherdatenbus 18 gesendet wird. Die Adresse passiert durch den Transceiver 30 auf den Bus 32. Die virtuelle Adresse auf dem Bus 32 wird dem Übersetzungspuffer/Cache 40 vorgelegt, und falls der benötigte Übersetzungseintrag vorhanden ist (beispielsweise ein Cachetreffer), wird die entsprechende physikalische Adresse auf den Bus 34 gelegt. Vom Bus 34 aus wird die physikalische Adresse in das physikalische Adreßregister geladen, von wo aus sie auf den Bus 32 geladen wird. Die physikalische Adresse auf dem Bus 32 wird dann simultan dem Übersetzungspuffer/Cache 40 und der Systembusinterfaceeinheit 44 vorgelegt. Falls die benötigten Daten in dem Cache sind, legt der Übersetzungspuffer/Cache 40 die angeforderten Daten in dem nächsten Maschinenzyklus auf den Bus 34. Falls ein Cache-Verfehlen (cache-miss) auftritt, wird ein Systembuszyklus durchgeführt, um die angeforderten Daten aus dem Speicherarray 22 zu holen. Wenn die Daten vom Speicher erhalten wurden, werden sie von dem Systembusinterface 44 auf den Bus 34 gelegt. In dem Moment, in dem die Daten von dem Cache oder von dem Speicher auf den Bus 34 gelangt sind, werden sie durch die Fusions/Rotationseinheit 48 zurück auf den Bus 32 geladen. Die angeforderten Daten werden dann über den Transceiver 30 und den Speicherdatenbus 18 dem Datenpfadmodul 14 zugeführt, womit der virtuelle Lesezyklus komplettiert ist. Die oben beschriebene Sequenz der Speicherkontrolloperationen wird durchgeführt und koordiniert durch Kontrollsignale, die von dem Mikrosequenzer/Kontrollspeicher 50 stammen. Das entsprechende Mikroprogramm, welches durch den Mikrosequenzer/Kontrollspeicher 50 ausgeführt wird, wird durch das Speicherkontrollkommando 28 selektiert, welches durch das Datenpfadmodul 14 dem Speicherkontrollmodul 12 über den Speicherkontrollbus 16 zugesandt wurde. Dieses Kommando wird zur gleichen Zeit geltend gemacht, bei der die virtuelle Adresse auf den Speicherdatenbus 18 gelegt wird. Für Mikroprogramme des Speicherkontrollmoduls, die die Benutzung des Systembusses 20 benötigen, wirken die Mikroprogramme durch die Buskontrolleinheit 52.
  • Eine zusätzliche Funktion, die durch das Speicherkontrollmodul 12 ausgeführt wird, ist das Prefetchen von Instruktionen zur Ausführung durch das Datenpfadmodul 14. Die vorzeitig geholten (prefetched) Instruktionen werden in der Instruktionsprefetcheinheit 56 gespeichert und dem Datenpfadmodul 14 wie benötigt, immer ein Byte , über den Speicherkontrollbus 16 zugeführt. Daher übt der Speicherkontrollbus 16 zwei unterschiedliche Funktionen aus: das Transferieren von Instruktionen vom Speicherkontrollmodul 12 zum Datenpfadmodul 14 und den Transfer von Speicherkontrollkommandos vom Datenpfadmodul 14 zum Speicherkontrollmodul 12.
  • Jede Makroinstruktion, die durch ein Datenpfadmodul 14 ausgeführt wird, besteht im allgemeinen aus einem Operationscode, dem ein oder mehrere Operandenspezifizierer folgen. Die Operandenspezifizierer spezifizieren entweder die Daten oder den Ort der Daten, auf deren Grundlage die Makroinstruktion ausgeführt wird. Im ersten Fall werden die Daten, die innerhalb des Operandenspezifizierers enthalten sind, als ein Literal bezeichnet. In dem nachfolgenden Fall bestimmt der Operandenspezifizierer den Adressierungsmodus und die Nummer (beispielsweise Adresse) eines Registers. Beispiele der Adressierungsmodi sind direkte Adressierung, in der das designierte Register die Daten enthält, und indirekte Adressierung, in der das designierte Register die Adresse der Daten enthält. Beispielsweise würde in einer Makroinstruktion, die den Inhalt der Register 3 und 4 addiert, der Op-Code die Addition spezifizieren, und die beiden Operandenspezifizierer würden die entsprechenden Register 3 und Register 4 direkt spezifizieren. In der bevorzugten Ausführungsform, die hier beschrieben wird, besteht jeder Op-Code und jeder Operandenspezifizierer aus einem oder mehreren Bytes und derartige Makroinstruktionsbytes werden, ein Byte zu einem Zeitpunkt, durch das Datenpfadmodul 14 empfangen und ausgeführt.
  • Unter Bezugnahme auf das Datenpfadmodul 14 in Fig. 2 wird die Ausführung von Makroinstruktionen mittels Mikroinstruktionen durchgeführt, welche durch die Kontrollogikeinheit 60 ausgeführt werden. Die Kontrollogikeinheit umfaßt die ALU, die allgemeinen Register, zwei Zeigerregister, den Makroprogrammzähler und andere Elemente, die im folgenden beschrieben werden. Für jede Makroinstruktion exekutiert die Kontrollogikeinheit 60 eine Serie von Mikroinstruktionen, die im Kontrollspeicher 62 gespeichert sind. Die Mikroinstruktionssequenz beginnt, wenn der Op-Code einer neuen Makroinstruktion in das Instruktionsregister 70 vom Speicherkontrollbus 16 geladen ist. Der Wert des Op-Codes und ein Teil der aktuellen Mikroinstruktion werden zur Adressierung einer Stelle im Decodier-ROM 74 benutzt. Als Antwort darauf liefert der Decodier-ROM eine Anzahl von Ausgaben: eine nächste Mikroadresse, die die Adresse der ersten Mikroinstruktion im Kontrollspeicher 62 entsprechend dem Makroinstruktions-Op- Code spezifiziert, ein GRÖSSEN-Signal , welches die Länge der Daten in Bytes angibt, auf denen die Makroinstruktion operiert; und ein CC-KLASSEN-Signal (condition code class), dessen Funktion im folgenden beschrieben wird. Wenn das Instruktionsregister einen Operandenspezifizierer enthält, liefert das Decodier-ROM 74 zusätzlich ein REGISTER-Signal, welches anzeigt, ob der Adressierungsmode direkt ist oder nicht.
  • Die nächste durch den Decodier-ROM 74 bereitgestellte Mikroadresse passiert durch den Mikrosequenzer 76 zum Kontrollspeicheradreßregister 78. Die Adresse im Kontrollspeicheradreßregister 78 spezifiziert die Mikroinstruktion, auf die im Kontrollspeicher 62 zugegriffen wird. Teile der zugegriffenen Mikroinstruktion werden zu einer Anzahl von Bestimmungsorten geleitet. Ein Teil geht zur Ausführung zur Kontrollogikeinheit 60. Ein zweiter Teil geht zum Mikrosequenzer 76, wo es zur Bestimmung der Adresse der nächsten Mikroinstruktion benutzt werden kann. In bestimmten Situationen liefert der Kontrollspeicher 62 außerdem Speicherkontrollsignale 28 und Werte, die in das Größenregister 88 und die CC- Logik 90 geladen werden sollen. Nachdem die erste Mikroinstruktion mit der Ausführung begonnen hat, veranlaßt der Mikrosequenzer 76, daß die Adresse der nächsten Mikroinstruktion in das Kontrollspeicheradressenregister 78 plaziert wird, und die Sequenz fährt fort, bis alle Mikroinstruktionen entsprechend der Makroinstruktion ausgeführt wurden. Ein Mikrostack 80 ist vorgesehen, um die Benutzung von Mikrosubroutinen und nichtprogrammierten Mikrosprüngen in dem Mikroprogramm im Kontrollspeicher 62 zu ermöglichen. Die Operation eines Mikrostacks ist im Detail im folgenden beschrieben.
  • Andere Elemente, die im Datenpfadmodul eingeschlossen sind, sind ein Buslatch 64, die Busse 82 und 84, ein Latch 86, ein Größenregister 88, eine Konditionscodelogik 90, ein Indexregister 92, ein Consolinterface 94, eine Interruptkontrollogik 96, und ein Instruktionsregisterpuffer 98. Die Busse 82 und 84 werden in einer Vielzahl von Kontexten benutzt, um Daten zwischen Datenpfadelementen auszutauschen. Das Latch 86 bewirkt eine Isolation zwischen den Bussen 82 und 84. Das Größenregister 88 wird benutzt, um einen Code zu halten, der gewöhnlich aus dem Größensignal von dem Decodier-ROM 74 oder vom Kontrollspeicher 62 abgeleitet ist, und eine Standarddatenpfadweite für die die Kontrollogikeinheit 60 anzeigt. Die Konditionscodelogik 90 wird zur Kontrolle des Setzens von Makroebenen-Konditionscodes benutzt, die auf den Ausgaben der Kontrollogikeinheit 60 basieren. Das Indexregister 92 ist ein 4-Bit-Register, welches von dem Mikrosequenzer 76 zur Bestimmung der nächsten Mikroadresse benutzt werden kann. Das Konsoleninterface 94 ist ein serielles Tor zur Verbindung der Datenpfadmodule mit dem Konsolenterminal 24 (Fig. 1). Die Interruptkontrollogik 96 vergleicht jeden vom Systembus 20 empfangenen Interrupt mit dem aktuellen Zustand der CPU, um zu entscheiden, ob der Interrupt angenommen werden soll. Der Instruktionsregisterpuffer 98 stellt ein Mittel zur Sendung des Inhalts des Instruktionsregisters 70 zur Kontrollogikeinheit 60 über den Bus 82 bereit.
  • Es ist die Funktion des Mikrosequenzers 76, die Sequenz zu bestimmen, in der die Mikroinstruktionen durch die Kontrollogikeinheit 60 ausgeführt werden. Er bewerkstelligt dies während der Durchführung einer gegebenen Mikroinstruktion durch die Bestimmung der Adresse der nächsten Mikroinstruktion im Kontrollspeicher 62 und durch das Ablegen der Adresse im Kontrollspeicheradressenregister 78. Der Mikrosequenzer bestimmt die nächste Mikroinstruktionsadresse, basierend auf Informationen, die in der aktuellen Mikroinstruktion codiert sind und anhand von Signalen an verschiedenen Status- und Kontrollinien.
  • Die Fig. 3 illustriert den Mikrosequenzer 76 in größerem Detail. Die nächste Mikroadresse wird bestimmt durch den Output des MUX (Multiplexer) 200. Die Eingänge zum MUX 200 sind ein Seitenregister 201, ein Mikroprogrammzähler 202, und ein ODER-Gatter 204. Die Auswahl zwischen diesen Eingängen wird durch den Ausgang von einem JUMP MUX 206 und durch verschiedene andere Kontrollsignale bewirkt, die im folgenden beschrieben werden. Das Seitenregister 201 enthält die höherwertigen Bits der aktuellen Mikroinstruktionsadresse. Der Mikroprogrammzähler 202 enthält die niederwertigen Bits der aktuellen Mikroinstruktionadresse plus Eins. Daher zeigen das Seitenregister 201 und der Mikroprogrammzähler 202 zusammen auf die nächste sequentielle Mikroinstruktionsadresse. Die Selektion von diesen Eingängen durch die MUX 200 repräsentiert den einfachen Fall, in dem das Computersystem die Mikroinstruktionen in einer sequentiellen Weise ausführt.
  • Das ODER-Gatter 204 führt eine logische ODER-Operation zwischen dem Ausgang des ODER-MUX 208 und der Adresse auf dem Bus 210 durch. Der Bus 210 enthält eine Adresse, die entweder durch den Decodier-ROM 74, das Sprungregister 212 oder den Mikrostack 80 bestimmt worden ist. Die Adresse vom Bus 210 wird vom Decodier-ROM 74 erhalten, wenn eine Makroinstruktion, Op-Code oder ein Operandenspezifiziererbyte decodiert worden ist. In diesem Falle stellt das Decodier-ROM entweder alle oder Teile der Adresse der ersten Mikroinstruktion zur Verfügung, die zur Ausführung der Funktionen, die durch das Makroinstruktionsbyte spezifiziert worden ist, benötigt werden. Im allgemeinen ist das Sprungregister 212 die Quelle der Adresse auf dem BUS 210, falls ein nichtsequentieller Sprung oder eine Verzweigung in der Mikroinstruktionssequenz durchgeführt werden soll. Die Adresse, zu der die Verzweigung führen soll, wird dem Inhalt der aktuellen Mikroinstruktion im Kontrollspeicher 62 entnommen und in das Sprungregister 212 plaziert. Schließlich ist der Mikrostack 80 die Quelle der Adresse auf dem BUS 210, falls eine Rückkehr von einer Mikrosubroutine oder einem nichtprogrammierten Mikrosprung auftritt. Die Rückkehradresse ist im Mikrostack 80 gespeichert, wenn der ursprüngliche Subroutinenaufruf oder nichtprogrammierte Mikrosprung ansteht. Die Rückkehradresse wird entweder durch den Inhalt des Seitenregisters 201 und des Mikroprogrammzählers 202 für einen Subroutinenaufruf bestimmt, oder durch den Inhalt des Seitenregisters und des Mikroprogrammzählers weniger 1 (beispielsweise der aktuellen Mikroadresse) für einen nichtprogrammierten Mikrosprung bestimmt. In dem letzteren Falle wird der konditionale Abwärtszähler 214 benutzt, um 1 von dem Inhalt des Mikroprogrammzählers 202 zu subtrahieren.
  • Jede Mikroinstruktion, die im Kontrollspeicher 62 gespeichert ist, umfaßt drei Felder: ein Datenpfadkontrollfeld, ein Konditionscode/Größenfeld und ein Kontrollfeld der nächsten Adresse. Das Datenpfadkontrollfeld wird zur Kontrolle der Durchführung einer Mikroinstruktion durch die Kontrollogikeinheit 60 (Fig. 2) benutzt. Das Konditionscode/Größenfeld wird im folgenden diskutiert werden. Das Kontrollfeld der nächsten Adresse wird vom Mikrosequenzer 76 benutzt, um die Adresse der nächsten Mikroinstruktion zu bestimmen. Das Kontrollfeld der nächsten Adresse kann konzeptionell in vier Subfelder wie folgt aufgespalten werden:
  • Typ
  • Sprungbedingung
  • ODER
  • Sprungadresse
  • Der Typ Subfeld spezifiziert einen der Verzweigungstypen, die in Fig. 4 aufgelistet sind und wird im folgenden ausführlicher erklärt werden. Das Sprungkonditionssubfeld spezifiziert die Kondition, die getestet wird, um zu bestimmen, ob eine nichtsequentielle Verzweigung in der Mikroinstruktionssequenz durchzuführen ist oder nicht. Bezugnehmend auf Fig. 3 bestimmt das Sprungkonditionssubfeld teilweise, welcher der Eingänge zur JUMP MUX 206 zur Kontrolle der MUX 200 ausgewählt wird. Typische Sprungkonditionen, die ausgewählt werden können, sind die ALU-Konditionscodes, ob ein Interrupt oder Konsolenhalt empfangen worden ist oder ob nicht, ob die Ausgänge der ODER MUX 208 Null sind oder ob nicht, und ob das Signal IR INVALID gesetzt worden ist. Das IR INVALID Signal wird durch die Instruktions-Prefetcheinheit 56 generiert, wann immer das Instruktionsregister 70 keine gültige Information enthält. Im allgemeinen, falls die ausgewählte Kondition wahr ist, selektiert die MUX 200 dann die Adresse, die vom ODER-Gatter 204 bereitgestellt worden ist und die Verzweigung wird durchgeführt. Falls die Kondition nicht wahr ist, selektiert die MUX 200 die nächste sequentielle Adresse, die vom Seitenregister 201 und Mikroprogrammzähler 202 bereitgestellt wurde.
  • Die ODER-Operation, durchgeführt durch das ODER-Gatter 204, operiert nur auf den weniger signifikanten Bits der Adresse auf dem Bus 210. In einer bevorzugten Ausführungsform des vorliegenden Computersystems ist der Ausgang der ODER MUX 208 4 Bit breit, und, für bestimmte Mikroinstruktionsverzweigungstypen, werden diese 4 Bits mit den niedrigwertigen 4 Bits des Busses 210 verodert. Die ODER MUX ist daher fähig, eine Multidestinationsverzweigung (beispielsweise Buchstabenumschalter (casing)) bereitzustellen. Der Ausgang der ODER MUX 208 wird durch das ODER-Subfeld der aktuellen Mikroinstruktion kontrolliert. Fig. 5 zeigt eine bevorzugte Ausführungsform der vorliegenden Erfindung, bei der das ODER-Subfeld bis zu 3 Bit weit sein kann und fähig ist, aus bis zu 8 Mengen von 4 Bit breiten Eingängen auszuwählen. Für jede Auswahl, entsprechend den ODER-Subfeldwerten 0 bis 7, listet Fig. 5 die Werte für jedes der ODER MUX Ausgangsbits OR MUX 3 bis OR MUX 0 auf. Für einen Subfeldwert von Null sind alle ODER MUX Ausgänge Null. Für einen Wert von Eins, wird OR MUX O Eins gesetzt, wenn das IR INVALID Signal gesetzt ist. Für einen Wert von Zwei wird OR MUX 1 Eins gesetzt. Dieser Wert kann einfacherweise benutzt werden, um mehrfache Rücksprünge von Subroutinen vorzusehen. Für einen Wert von Drei wird der ODER MUX Ausgang durch die Signale an vier Speicherkontrollstatuslinien bestimmt wie gezeigt. MEM ERR bezieht sich auf ein sonstiges Fehlersignal von dem Speicherkontrollmodul 12. PAGECROSSING zeigt den Versuch an, auf Daten zuzugreifen, die eine 512-Byte-Seitengrenze überschreiten. TB MISS zeigt an, daß ein Übersetzungseintrag für eine angeforderte virtuelle Adresse nicht im Übersetzungspuffer/Cache 40 gefunden worden ist. MODIFY REFUSE zeigt an, daß eine Speicherschreiboperation nicht durchgeführt werden konnte, weil das Modify Bit in dem entsprechenden Übersetzungspuffereintrag nicht gesetzt worden war. Für einen Codewert von Vier wird der ODER MUX Ausgang durch das IR INVALID Signal und durch BR FALSE bestimmt, das letztere zeigt an, ob eine Makroebenenverzweigung ansteht. Für einen Codewert von Fünf wird der Ausgang der ODER MUX durch die angezeigten Statussignale bestimmt. OVERFLOW bezieht sich auf den PSL V Code, der im folgenden beschrieben wird. INTERRUPT und CON- SOLE HALT beziehen sich auf entsprechende Signale der Interruptkontrollogik 96 bzw. des Konsoleninterfaces 94. Für einen Codewert von Sechs ist der Ausgang der ODER MUX gleich dem Inhalt des Indexregisters 92 (Fig. 2). Für einen Codewert von Sieben wird der Ausgang der ODER MUX durch den Inhalt des Größenregisters 88 bestimmt.
  • Fig. 4 faßt die Verfahren zusammen, durch die der Mikrosequenzer 76 die nächste Mikroadresse selektiert. Das Typensubfeld der aktuellen Mikroinstruktion spezifiziert einen der Verzweigungstypen, die in der ersten Spalte von Fig. 4 aufgelistet sind. Die Operation dieser Typen ist in den folgenden Absätzen beschrieben. In Fig. 4 steht das Symbol uPC für einen Mikroprogrammzähler 202.
  • Wenn der Verzweigungstyp ein Sprung oder Sprung zur Subroutine ist, wird die Adresse, die in dem Sprungadressensubfeld der aktuellen Mikroinstruktion enthalten ist, in das Sprungregister 212 geladen. Diese Adresse wird auf dem Bus 210 freigegeben, von welchem Punkt an sie ohne Modifikation durch das ODER-Gate 204 und MUX 200 passiert. Die nächste Mikroadresse wird daher gänzlich durch das Sprungadressensubfeld der aktuellen Mikroinstruktion bestimmt. Sprung oder Sprung zu Subroutineverzweigungstypen werden benutzt, um unbedingte Verzweigungen im Mikroinstruktionsfluß zu verursachen. Wenn ein Sprung zur Subroutine ausgeführt wird, wird der Inhalt der Seitenregisters 201 und des Mikroprogrammzählers 202 auf den Mikrostack 80 gelegt.
  • Ein Verzweigungstyp von Verzweigung wird benutzt, um einen bedingten Sprung zu einer Mikroadresse innerhalb der aktuellen Seite zu veranlassen. Wie in Fig. 4 dargestellt ist, werden die fünf höherwertigen Bits der nächsten Mikroadresse durch das Seitenregister 201 bestimmt, und die 8 niederwertigen Bits werden basierend auf den Sprungkonditionen bestimmt. Wenn die Sprungkondition wahr ist, werden die niederwertigen Bits von dem niederwertigen Sprungadressensubfeld der aktuellen Mikroinstruktion über das Sprungregister 212 abgeleitet. Wenn die Sprungbedingung falsch ist, wird kein Sprung durchgeführt und die niederwertigen Bits werden vom Mikroprogrammzähler 202 abgeleitet. Die Sprungkondition ist gleich dem Signal, welches durch die Sprung-MUX 206 basierend auf dem Sprungkonditionssubfeld der aktuellen Mikroinstruktion ausgewählt wurde.
  • Der "Case"-Verzweigungstyp ist ähnlich demjenigen der Verzweigung, außer daß, falls die Sprungbedingung wahr ist, die niederwertigen Bits der nächsten Mikroadresse durch das Sprungregister in Verbindung mit dem ODER MUX Ausgang bestimmt werden. Insbesondere werden die vier ODER MUX Ausgangsbits (Fig. 5) mit den niederwertigen vier Bits des Sprungregisters durch das ODER-Gatter 204 verodert.
  • Die Branch to Subroutine und Trap Branch Typen sind ähnlich demjenigen des Case, außer daß, falls eine Sprungbedingung wahr ist, die höherwertigen Bits der nächsten Mikroadresse auf Null gesetzt werden und entweder die nächste sequentielle Mikroadresse (Branch to Subroutine) oder die aktuelle Mikroadresse (Trap) auf den Mikrostack 80 abgelegt werden.
  • Der Return Branch Typ wird zur Rückkehr zu einer beliebigen Mikroadresse benutzt, die auf den Mikrostack 80 geschoben worden ist. Der Return Branch Typ ist bedingt und wird nur zurückkehren, falls die Sprungbedingung wahr ist. Eine falsche Sprungkondition verursacht die Auswahl der nächsten sequentiellen Mikroadresse durch den Mikrosequenzer 76.
  • Fig. 4 illustriert weiterhin den Weg, der der nächsten Mikroadresse bestimmt ist, wenn die Kontrollogikeinheit 60 eine Mikroinstruktion ausführt, die das Decodieren eines Op-Codes oder eines Operandenspezifizierers im Instruktionsregister 70 aufruft. Für das Decodieren eines Op-Codes wird die nächste Mikroadresse durch die Adresse bestimmt, die durch das Decodier-ROM 74 bereitgestellt wurde, falls die spezifizierte Sprungbedingung falsch ist. In diesem Fall werden die höherwertigen Bits der nächsten Mikroadresse auf Null gesetzt. Falls jedoch die spezifizierte Sprungkondition wahr ist, wird die nächste Mikroadresse gänzlich durch die vier Ausgangsbits der ODER MUX 208 bestimmt und die aktuelle Mikroadresse wird auf den Mikrostack 80 geschoben. Im allgemeinen werden die Sprungkonditionen, die in einer Op-Code-Decodiermikroinstruktion spezifiziert sind, das IR INVALID Signal sein. Daraus resultiert, daß wenn das Datenpfadmodul 14 versucht, einen Op-Code zu decodieren, der noch nicht im Instruktionsregister 70 verfügbar ist, wird ein nichtprogrammierter Sprung zu einer niedrigen Mikroadresse ausgeführt, an der eine Subroutine darauf wartet, daß die Instruktions-Prefetcheinheit 56 aufholt.
  • Wenn eine Operandenspezifizierdecodiermikroinstruktion ausgeführt worden ist, wird die nächste Mikroadresse durch zwei Signale bestimmt: das IR INVALID Signal und das Registersignal, die vom Decodier-ROM 74 bereitgestellt werden, wobei letzteres anzeigt, ob der Adressiermodus des Operandenspezifizieres direkt ist. Ist das Instruktionsregister gültig und der Modus direkt, wird die nächste sequentielle Mikroadresse selektiert. Falls das Instruktionsregister gültig ist und der Modus indirekt ist, springt das Mikroprogramm zu einer Subroutine an einer Adresse, dessen höherwertiger Abschnitt durch die höherwertigen Bits des Sprungregisters 212 bestimmt werden, und dessen niederwertiger Abschnitt gleich der Mikroadresse ist, die durch das Decodier-ROM 74 geliefert wurde. Die Adresse im Sprungregister 212 wird vom Sprungadressensubfeld der aktuellen Mikroinstruktion abgeleitet. Schließlich, falls das IR INVALID Signal geltend gemacht wurde, springt das Mikroprogramm unprogrammiert zu einer Subroutine, dessen Adresse durch den Ausgang der ODER MUX 208 spezifiziert ist, welches in diesem Falle auf einen Wert gleich Eins gesetzt ist.
  • Die letzte Situation, die in Fig. 4 dargestellt ist, ist das Power-up oder ein Paritätsfehler. In diesem Falle beginnt das Datenpfadmodul 14 die Ausführung der Mikroinstruktionen an der Adresse Null.
  • Fig. 6 zeigt die Kontrollogikeinheit 60 in größerem Detail. Die Kontrollogikeinheit umfaßt die Busse 100 und 102, eine ALU 104, die Ergebnisregister 106 und 107, einen Barrel Shifter 108 und ein damit verbundenes Schiebezählregister 110 und ein Ergebnisregister 112, die Zeigerregister 120 und 122, eine Registerdatei 124, einen Programmzähler 126, ein konstantes ROM 130, einen Registerrettungsstack 132, ein I/O-Tor 134 und ein Kontrollspeicherregister 140.
  • Die Ausführung einer Mikroinstruktion durch die Kontrollogikeinheit 60 beginnt, wenn das Datenpfadkontrollfeld der Mikroinstruktion in das Kontrollspeicherregister 140 vom Kontrollspeicher 62 geladen ist. Im allgemeinen enthält das Datenpfadkontrollfeld einen Mikro Op-Code und zwei Mikrooperandenspezifizierer. Wenn der Mikro Op-Code eine arithmetische oder logische Operation spezifiziert (beispielsweise Add, And, Mask, Compare) wird die Operation durch die ALU 104 ausgeführt. Die zwei benötigten Operanden werden über die Busse 100 und 102 bereitgestellt, und das Ergebnis der Operation wird in einem Ergebnisregister 106 oder 107 plaziert, abhängig von einem Bit, welches innerhalb der aktuellen Mikroinstruktion enthalten ist.
  • Der Barrel Shifter 108 wird für Verschiebeoperationen benutzt. Die Verschiebezahl kann im Verschiebezählregister 110 gespeichert sein oder als ein Literal in der Mikroinstruktion bereitgestellt werden. Das Ergebnis der Verschiebeoperation wird im Ergebnisregister 112 gespeichert.
  • Die Registerdatei 124 enthält eine Anzahl von allgemeinen Registern, die dem Makroebenenprogramm zugänglich sind, plus sowohl allgemeine und als auch speziell verwendbare Mikroebenenregister. Der Term allgemeines Register wird im folgenden zum Bezug zu beiden allgemeinen Makroebenen- und allgemeinen Mikroebenen- Register in der Registerdatei 124 benutzt werden. Jedes Register kann von jedem der Busse 100 oder 102 gelesen werden, kann aber nur vom Bus 102 beschrieben werden. Mit jedem Register in der Registerdatei 124 ist eine eindeutige Registeradresse verbunden, wobei die Registeradresse zur Spezifizierung der Register während der Ausführung einer Mikroinstruktion, wie im folgenden beschrieben ist, benutzt wird.
  • Das Größenregister 88 wird zur Kontrolle der Breite der Datenpfade benützt, die durch die Kontrollogikeinheit 60 benutzt werden, und zur Kontrolle der Mikroprogrammverzweigung, wie in der Fig. 5 dargestellt ist. In einer bevorzugten Ausführungsform des vorliegenden Computersystems kann der Datenpfad bis zu 32 Bit breit sein, obwohl bestimmte Makroinstruktionen einen schmaleren Datenpfad von beispielsweise einem Byte (8 Bits) und einem Wort (16 Bits) spezifizieren können. Beispielsweise kann eine Makroinstruktion spezifizieren, daß ein Byte von einer speziellen virtuellen Speicheradresse zurückgeholt wird und in ein allgemeines Register 3 geladen wird (beispielsweise das allgemeine Register in der Registerdatei 124, welches eine Registeradresse von 3 hat). Diese Makroinstruktion würde nur die niedrigwertigen 8 Bits des allgemeinen Registers 3 betreffen, wobei die höherwertigen 24 Bits unberührt blieben. Ein voller 32 Bit breiter Block von Daten wird als Langwort bezeichnet.
  • Das Größenregister 88 wird mit einem Zweibit-Code direkt vom Decodier-ROM 74 geladen, wenn ein Makroinstruktions-Op-Code decodiert wird. In einer bevorzugten Ausführungsform ist das Codierungsschema:
  • 0 - Byte
  • 1 - Wort
  • 2 - Unbenutzt
  • 3 - Langwort
  • Daher kann die Datenpfadbreite, spezifiziert durch einen Op- Code der Kontrollogikeinheit (als Signale SIZE0 und SIZE1) während der ganzen Ausführungssequenz für diesen Op-Code zur Verfügung gestellt werden, und zwar ohne den Gebrauch von ALU-Operationen zur Maskierung und ohne ein Bewegen, Drehen oder Wiederaufladen der Register.
  • Der Inhalt des Größenregisters kann verändert werden, wenn eine Mikroinstruktion zur Durchführung einer Operandenspezifizierdecodierung ausgeführt wird. Wenn eine derartige Mikroinstruktion ausgeführt wird, wird das Konditionscode/Größenfeld der Mikroinstruktion vom Kontrollspeicher 62 in das Größenregister 88 geladen, wenn der Wert des Feldes 0 (Byte), 1 (Wort) oder 3 (Langwort) ist. Ist der Wert 2, wird das Größenregister nicht berührt, so daß die Größe, die durch den vorangegangenen Op-Code spezifiziert wurde, intakt bleibt.
  • Neben Decodierungs-Mikroinstruktionen kann das Größenregister nur durch MOVE-Mikroinstruktionen modifiziert werden, welche explizit das Größenregister als ihre Bestimmungsoperanden spezifizieren. Andere als Dekodierungs-Mikroinstruktionen können jedoch die Datenpfadbreite während ihrer Ausführung mittels ihres Konditionscode/Größenfelds kontrollieren. Für ALU und Verschiebemikroinstruktionen wird das Konditionscode/Größencodieren im folgenden diskutiert. Für andere Mikroinstruktionen (beispielsweise Move, Memory Request), ist die Codierung des Konditionscode/Größenfeldes wie folgt:
  • 0 - Byte
  • 1 - Wort
  • 2 - Benutzergrößenregister
  • 3 - Langwort
  • Daher kann eine gegebene Mikroinstruktion entweder ihre eigene Datenpfadbreite oder das Größenregister spezifizieren und daher die Breite benutzen, die durch den vorangegangenen Op-Code oder Operandenspezifizierer spezifiziert wurde. Das Ergebnis ist, daß die durch den Gebrauch des Größenregisters 88 erzielte Effizienz keinen entsprechenden Verlust an Flexibilität in der Mikroprogrammierung des vorliegenden Computersystems bewirkt.
  • Die Zeigerregister 120 und 122 sind 6-Bit-Register, wobei jedes Register zwei Funktionen ausführen kann: sie können die Adresse eines (beispielsweise Zeigen auf) bestimmten allgemeinen Registers in der Registerdatei 124 enthalten oder sie können einen Literalwert, abgeleitet von einem Operandenspezifizierer, enthalten. Die Zeigerregister 120 und 122 können von den Bussen 100 und 102 gelesen und vom Bus 102 beschrieben werden. Der Gebrauch von zwei Zeigerregistern sorgt für signifikante Vorteile in der Ausführungsgeschwindigkeit vieler Makroinstruktionen. Beispielsweise kann eine Makroinstruktion, die die Inhalte der allgemeinen Register R1 und R2 addiert und das Resultat im allgemeinen Register R2 ablegt, wie folgt codiert werden:
  • OP-Code - Add
  • Operandenspezifizierer 1 - R1 , direkter Modus
  • Operandenspezifizierer 2 - R2, direkter Modus
  • wobei jeder Operandenspezifizierer ein Modusfeld enthält, welches den Adressierungsmodus und entweder ein die Adresse des Registers (wie im vorangegangenen) enthaltendes Registerfeld oder ein Literal spezifiziert. Ohne den Gebrauch der Zeigerregister der vorliegenden Erfindung würde die Mikroinstruktionssequenz für diese Makroinstruktion die folgenden sieben Schritte benötigen:
  • 1. Decodiere Op-Code
  • 2. Decodiere Operandenspezifizierer 1
  • 3. Move R1 to TEMP 1 (Bringe R1 zu TEMP1)
  • 4. Decodiere Operandenspezifizierer 2
  • 5. Move R2 to TEMP 2
  • 6. Addiere TEMP 3 = TEMP 1 + TEMP 2
  • 7. Move TEMP 3 to R2
  • wobei TEMP 1, TEMP 2 und TEMP 3 für allgemeine Mikroebenenregister stehen. Der Gebrauch von zwei Zeigerregistern reduziert die benötigte Anzahl der Schritte auf fünf, dargestellt im folgenden:
  • 1. Decodiere op-Code
  • 2. Decodiere Operandenspezifizierer 1, Plaziere Adresse von R1 in PTR 1
  • 3. Decodiere Operandenspezifizierer 2, Plaziere Adresse von R2 in PTR 2,
  • 4. Add TEMP 1 = PTR 1 + PTR 2
  • 5. Move TEMP to PTR 2
  • wobei das Symbol x den Ort (beispielsweise Register), dessen Adresse im Register X ist, bezeichnet, und wobei PTR 1 und PTR 2 die Zeigerregister 120 und 122 bezeichnen. Wie in den obigen Schritten 2 und 3 angezeigt ist, verursacht die Decodierung eines Operandenspezifizierers das Laden eines der Zeigerregister 120 oder 122 mit der Zahl des Registers, das durch den Operandenspezifizierer spezifiziert ist. Dieses Laden eines Zeigerregisters findet ohne Rücksicht auf den Adressenmodus statt, der durch den Operandenspezifizierer spezifiziert ist. In dem Falle, in dem ein Operandenspezifizierer ein Literal enthält, wird das Literal ebenso in das Zeigerregister geladen. In allen Fällen bestimmt ein Bit in der Mikroinstruktion zur Durchführung der Decodierung des Operandenspezifiziers, welches Zeigerregister (120 oder 122) geladen wird. Bezugnehmend auf Fig. 2 werden die Zeigerregister vom Instruktionsregister 70 durch den Instruktionsregisterpuffer 98, Bus 82, Latch 86, Bus 84, I/O-Tor 134 und Bus 102 geladen.
  • Die Add und Move Mikroinstruktionen in den Schritten 4 und 5 des obigen zweiten Beispiels adressieren indirekt die Register R1 und R2 durch die Benutzung der Zeigerregister 120 und 122. Um ein derartiges Adressierungsverfahren zu implementieren, werden zwei Registeradressen zu jedem der Zeigerregister zugeordnet, eine direkte Adresse und eine indirekte Adresse. Die direkte Adresse eines Zeigerregisters ist vollkommen analog zu der Adresse eines Registers in der Registerdatei 124 und wird zur Spezifizierung des Inhaltes dieses Registers benutzt. Beispielsweise würde für eine Mikroinstruktion wie beispielsweise Move 3, 4, in der der erste und zweite Mikrooperandenspezifizierer die Register in der Registerdatei 124 spezifizieren, deren Adressen entsprechend 3 und 4 sind, das Ergebnis sein, daß der Inhalt des Registers 3 in das Register 4 übertragen würde. Die Zeigerregister 120, 122 stellen ein anderes und im allgemeinen mehr effizientes Verfahren zum Bewerkstelligen desselben Ergebnisses bereit. Jedem Zeigerregister ist eine eindeutige indirekte Adresse zugeordnet, die von der direkten Adresse eines jeden Registers verschieden ist. Wenn die indirekte Adresse durch einen Mikrooperandenspezifizierer spezifiziert ist, wird das Register, auf welches zugegriffen wird, durch den Inhalt des indirekt adressierten Zeigerregisters bestimmt. Falls beispielsweise den Zeigerregistern 120 und 122 die indirekten Adressen 54 und 55 zugeordnet wären und die Zahlen 3 und 4 enthalten würden, wäre die Mikroinstruktion Move 54, 55 äquivalent zu Move 3, 4.
  • Der Programmzähler 126 ist ein Register, das die Adresse des als nächsten auszuführenden Makroinstruktions-Byte speichert. Wie bei den Zeigerregistern 120 und 122 und den Registern in der Registerdatei 124 kann der Programmzähler 126 von jedem Bus 100 oder 102 gelesen und vom Bus 102 beschrieben werden. Der Programmzähler 126 wird automatisch um 1, 2 oder 4 erhöht, wenn eines der folgenden Ereignisse eintritt:
  • (1) Eine Op-Code-Decodiermikroinstruktion wird ausgeführt.
  • (2) Eine Operandenspezifizierdecodiermikroinstruktion wird ausgeführt.
  • (3) Die aktuelle Mikroinstruktion spezifiziert das Instruktionsregister 70 als den Ort einer der Mikroinstruktionsoperanden.
  • (4) Eine Mikroinstruktion wird ausgeführt, die das Wiederauffinden von Daten aus dem Makroinstruktionsinstruktionsstrom spezifiziert.
  • Die Fälle (1) und (2) wurden bereits beschrieben. Der Programmzähler 126 wird um Eins erhöht, wann immer ein neues Makroinstruktionsbyte aus dem Instruktionsregister 70 ausgeladen wird, und zwar derart, daß die Adresse im Programmzähler 126 mit der virtuellen Adresse des neuen Makroinstruktionsbyte korrespondiert. Ein Beispiel des Falles (3) ist die Situation, in der ein Byte in dem Makroinstruktionsstrom Literaldaten enthält. Beispielsweise spezifiziert ein Typ von Operanden die Adresse des Operanden durch die Spezifikation eines Registers, welches eine Basisadresse enthält und durch einen festen Offset, der zu der in dem Register gefundenen Basisadresse addiert werden muß. In dieser Situation würde der Operandenspezifizierer aus 2 Byte bestehen, wobei das erste Byte die Registeradresse (beispielsweise Register 2) und den Adressierungsmodus spezifiziert und das zweite Byte den festen Offset (beispielsweise ein Literal) enthält. Die Mikroinstruktionen zum Zugreifen auf einen derartigen Operanden würden mit dem Decodieren des ersten Operandenspezifizierbytes und dem Ablegen des Wertes 2 (die Registeradresse) in das Zeigerregister 120 beginnen. Die folgende Mikroinstruktion würde den Wert, auf den durch das Zeigerregister 120 gezeigt wird, zu dem im Instruktionsregister 70 enthaltenen Literal addieren. Die Mikroinstruktion würde auf das Instruktionsregister 70 Bezug nehmen, indem eine eindeutige Registeradresse dem Instruktionsregister zugeordnet wird. Das Literal würde die ALU 104 vom Instruktionsregister 70 über das Instruktionsregisterpuffer 98, Bus 82, Latch 86, Bus 84, I/O-Port 134 und Bus 102 erreichen. Die Ausführung der Add-Mikroinstruktion, die die Adresse des Instruktionsregisters als ein Operand spezifiziert, veranlaßt die Heraufsetzung des Programmzählers 126 um 1.
  • Der oben aufgeführte Fall (4) wird als eine Instruktionsstromspeicheranfrage bezeichnet. Wenn eine derartige Mikroinstruktion ausgeführt wird, werden Kontrollsignale vom Kontrollspeicher 62 zum Speicherkontrollmodul 12 über den Speicherkontrollbus 16 gesendet. Zur gleichen Zeit wird der nichtinkrementierte Inhalt des Programmzählers 126 auf den Bus 84 über den Bus 102 und das I/O-Port 134 geschickt, und von dort über den Speicherdatenbus 18 zum Speicherkontrollmodul 12 gesendet. Der Programmzähler 126 wird dann um 1, 2 oder 4 heraufgesetzt, was davon abhängt, ob die Mikroinstruktion der Instruktionsstromspeicheranfrage durch ein Byte, Wort oder ein Langwort spezifiziert wird. Im Speicherkontrollmodul 12 (Fig. 2) unterhält die Instruktionsprefetcheinheit 56 einen mit Makroinstruktionsstrombytes gefüllten Prefetch-Puffer. Eine Instruktionsstromspeicheranfrage löscht zuerst den Prefetch-Puffer, liest dann ein Byte, Wort oder Langwort vom Übersetzungspuffer/Cache 40 oder Speicherarray 22 und sendet die resultierenden Daten über den Speicherdatenbus 18 zum Datenpfadmodul 14. Die Instruktionsprefetcheinheit 56 füllt anschließend wieder die Prefetch- Puffer, beginnend mit dem nächsten Byte in dem Makroinstruktionsstrom, das den Bytes folgt, die zum Datenpfadmodul 14 gesendet wurden.
  • Der Registersicherungsstack 132 ist ein LIFO-Stack zur vorübergehenden Speicherung des Inhaltes von spezifizierten Registern. Jeder Eintrag auf dem Stack besteht aus dem Inhalt eines Registers und der Adresse (Nummer) dieses Registers. Ein Beispiel zur Illustrierung des Gebrauchs eines Registersicherungsstacks ist die Decodierung eines Operandenspezifizierers, der einen autoinkrementalen Adressierungsmodus spezifiziert. In einem derartigen Modus wird der Inhalt eines spezifizierten Registers zuerst als eine Adresse zum Zugriff auf den Operanden benutzt, und das Register wird anschließend automatisch um 1, 2 oder 4 erhöht. Wenn ein Autoinkrementmodeoperandenspezifizierer decodiert wird, wird der nicht inkrementierte Inhalt des Registers automatisch auf den Registersicherungsstack geschoben. Wenn der versuchte Speicherzugriff dann in einer Fehlerkondition resultiert, kann das Register in seiner vorherigen Kondition wiederhergestellt werden, indem der Stack herausgeholt wird. Die Schiebe (push)- Operation wird durch die aktuelle Mikroinstruktion kontrolliert, die ein Bit aufweist, das bestimmt, ob ein Verschieben auftritt oder nicht. Soll ein Verschieben auftreten, enthält einer der Mikrooperandenspezifizierer die Adresse des Registers.
  • Die Konditionscodelogikeinheit 90 wird zum Speichern und Kontrollieren von zwei Mengen von Konditionscodes benutzt: Mikroprogrammebenen (ALU) -Konditionscodes und Makroprogrammebenen (PSL) -Konditionscodes. Vier Konditionen sind für jede Ebene vorgesehen:
  • N - Negativ
  • Z - Null
  • V - Überlauf (= overflow)
  • C - Übertrag (= carry)
  • Die ALU-Konditionscodes spiegeln das Resultat der zuletzt durch die Kontrollogikeinheit 60 ausgeführten Mikroinstruktion wieder, die in dem Konditionscode/Größenfeld spezifizierte, daß die ALU-Konditionscodes geladen werden sollen, und faßt vier der Eingänge zum JUMP MUX 206 (Fig. 6) zusammen. Die ALU-Konditionscodes können deshalb als Sprungkontrollsignale durch die Mikroinstruktionen benutzt werden, wie es in Fig. 4 dargestellt ist. Die PSL-Konditionscodes sind die Konditionscodes, die auf der Makroprogrammebene zugänglich sind, und können von einem Makroprogramm benutzt werden, um zu entscheiden, ob eine Makroverzweigung durchgeführt werden soll.
  • Wenn ein Op-Code durch das Decodier-ROM 74 decodiert wird, wird ein Zweibitkonditionscodeklassensignal produziert und direkt zu einem Konditionscodeklassenregister (nicht dargestellt) gesendet, welches innerhalb der Konditionscodelogikeinheit 90 enthalten ist. Der Inhalt des Konditionscodeklassenregisters bestimmt, wie die ALU-Codes auf den PSL-Codes abgebildet werden: Konditionscode Klassenregister Klasse logisch arithmetisch Vergleich Gleitkomma
  • Die tatsächliche Besetzung der Konditionscodes durch eine gegebene Mikroinstruktion wird durch das Konditionscode/Größenfeld dieser Mikroinstruktion bestimmt. Wie im vorangegangenen beschrieben wurde, benutzen verschiedene Typen von Mikroinstruktionen (beispielsweise Move, Memory Request, Decode) das Konditionscode/Größenfeld zur Spezifizierung der Datenpfadbreite und für die Mikroinstruktionen sind die Konditionscodes niemals besetzt. Für andere Mikroinstruktionen (beispielsweise Add, And, Shift) kontrolliert das Konditionscode/Größenfeld die Datenpfadbreite und die Besetzung der Konditionscodes ist wie folgt: Konditionscode/Größenfeld Datenpfad Breite Langwort Konditionscodes nicht betroffen Langwort setze ALU & PSL-Konditionscodes pro Größenregister
  • Für derartige Mikroinstruktionen wird der Inhalt des Konditionscodes/Größenfelds von dem Kontrollspeicher 62 direkt zu der CC-Logikeinheit 90 gesendet.

Claims (7)

1. Zentraleinheit (10) für einen Computer zum Decodieren und Ausführen von Makroinstruktionen, die einen Operationscode (Op-Code) und erste und zweite Operandenspezifizierer aufweisen, wobei jeder Operandenspezifizierer ein Registerfeld zum Spezifizieren eines Literaloperanden oder einer allgemeinen Registeradresse und ein Modusfeld zum Spezifizieren eines indirekten oder direkten Adressierungsmodus für das allgemeine Register enthält, wobei jede Makroinstruktion ausgeführt wird, indem eine Serie von Mikroinstruktionen, die dem Makroinstruktions-Op-Code entspricht, ausgeführt wird, wobei die Mikroinstruktion einen Mikro-Op-Code und erste und zweite Mikro-Operandenspezifizierer mit Register- und Modusfeldern enthält, die Registerfelder die Registermikroadressen spezifizieren und die Zentraleinheit (10) aufweist: eine Vielzahl von allgemeinen Registern (124) für die zeitweilige Speicherung von Daten, die Operanden oder Orte von Operanden wiedergeben, wobei jedes allgemeine Register eine eindeutige, direkte der Register-Mikroadressen hat, die als Mikrooperand die Inhalte des direkt adressierten allgemeinen Registers spezifiziert, zumindest zwei Zeigerregister (120, 122) für die einstweilige Speicherung von Daten, die die jeweiligen Adressen von zweien der allgemeinen Register (124) spezifizieren, wobei jedes Zeigerregister eine eindeutige, direkte der Register-Mikroadressen hat, die als Mikrooperand die Inhalte der direkt adressierten Zeigerregister spezifiziert, und eine eindeutige, indirekte der Register-Mikroadressen hat, die als ein Mikrooperand die Inhalte eines spezifizierten der allgemeinen Register spezifiziert, die von den Inhalten der Zeigerregister spezifiziert werden; eine Decodiereinrichtung (74) zum Decodieren jeder Makroinstruktion und zum Laden ihrer Registerfelder in jeweilige Zeigerregister; und eine Ausführungseinrichtung (60) zum Ausführen der Makroinstruktionen, indem die entsprechende Serie von Mikroinstruktionen ausgeführt wird, wobei die Ausführungseinrichtung eine ALU (104) hat, die erste und zweite Eingangsanschlüsse (100, 102) hat, und eine Registerzugriffseinrichtung zum Zuführen von Daten des Registers, das durch ein erstes der Zeigerregister spezifiziert wird, zu dem ersten Eingangsanschluß und zum Zuführen von Daten, die durch ein zweites der Zeigerregister spezifiziert werden, zu dem zweiten Eingangsanschluß und zum Zuführen von Daten von einem ausgewählten der Zeigerregister zu einem der Eingangsanschlüsse der ALU, wobei die Registerzugriffseinrichtung eine Buseinrichtung aufweist, die direkt die Ausgänge der Zeigerregister (120, 122) mit den ersten und zweiten Eingangsanschlüssen (100, 102) der ALU (104) verbindet.
2. Zentraleinheit gemäß Anspruch 1, weiterhin dadurch gekennzeichnet, daß die Decodiereinrichtung (74) angeordnet ist, die Registerfelder der Operandenspezifizierer in die jeweiligen Zeigerregister (120, 122) zu laden, und zwar unabhängig von dem Adressierungsmodus, der von den Operandenspezifizierern spezifiziert wird, und unabhängig davon, ob die Operandenspezifizierer einen Literaloperanden enthalten oder nicht.
3. Zentraleinheit gemäß Anspruch 1 oder Anspruch 2, weiterhin dadurch gekennzeichnet, daß die Decodiereinrichtung (74) eine Einrichtung zum Decodieren eines Operandenspezifizierers in Antwort auf eine Operandenspezifizierer-Decodiermikroinstruktion enthält, die mit einer früheren Makroinstruktion verbunden ist, und worin die Decodiereinrichtung dazu ausgelegt ist, das Registerfeld jedes decodierten Operandenspezifizierers in das Zeigerregister (120, 122) zu laden, das von den Kennzeichendaten bestimmt wird, die innerhalb der Operandenspezifizierer-Decodiermikroinstruktion enthalten sind.
4. Zentraleinheit gemäß irgendeinem der Ansprüche 1 bis 3, weiterhin dadurch gekennzeichnet, daß die Registerzugriffseinrichtung dazu ausgelegt ist, simultan die Inhalte eines der Zeigerregister (120) in einen der Eingangsanschlüsse der ALU (104) und die Inhalte des anderen der Zeigerregister (122) in den anderen der Eingangsanschlüsse der ALU (104) zu laden.
5. Verfahren zum Ausführen von Mikroinstruktionen in einer Zentraleinheit (10) über eine arithmethisch-logische Einheit ALU (104) mit ersten und zweiten Eingangsanschlüssen (100, 102), wobei die Makroinstruktionen einen Makroinstruktions-Operationscode, Op-Code, und erste und zweite Operandenspezifizierer aufweisen, von denen jeder ein Registerfeld und ein Modusfeld zum Spezifizieren eines Literaloperanden oder einer allgemeinen Registeradresse und eines direkten oder indirekten Adressierungsmodus für das allgemeine Register aufweist, wobei jede Makroinstruktion ausgeführt wird, indem eine Serie von Makroinstruktionen entsprechend dem Makroinstruktionsoperationscode ausgeführt wird, wobei jede Mikroinstruktion einen Mikrooperationscode und erste und zweite Mikro-Operandenspezifizierer enthält, die Register und Modusfelder aufweisen, wobei die Registerfelder der Mikro- Operandenspezifizierer Registermikroadressen spezifizieren, wobei jedes der Zeigerregister (120, 122) und der allgemeinen Register (124) eine eindeutige, direkte der Registermikroadressen hat, die als Mikrooperand die Inhalte des direkt adressierten Registers spezifiziert, und wobei jedes der Zeigerregister auch eine eindeutige, indirekte der Register-Mikroadressen hat, die als Mikrooperand die Inhalte eines der allgemeinen Register spezifiziert, das von den Inhalten des Zeigerregisters spezifiziert wird, wobei das Verfahren die Schritte aufweist: zeitweiliges Speichern von Makroinstruktionsdaten, die Operanden oder den Ort von Operanden in einem oder mehreren allgemeinen Registern (124) wiedergeben, von denen jedes eine damit eindeutige, verbundene Adresse hat;
Laden der Registerfelder, die eine Makroinstruktion begleiten, in erste und zweite Zeigerregister (120, 122), wobei die Inhalte der ersten und zweiten Zeigerregister die jeweiligen Adressen zweier der Register für allgemeine Zwecke spezifizieren;
Zuführen von Daten zu dem ersten Eingangsanschluß der ALU, die von dem allgemeinen Register erzeugt werden, das eine Adresse hat, die von den Inhalten des ersten Zeigerregisters spezifiziert wird;
Zuführen von Daten zu dem zweiten Eingangsanschluß der ALU, die von dem Register für allgemeine Zwecke erzeugt werden, das eine Adresse hat, die von den Inhalten des zweiten Zeigerregisters spezifiziert wird;
Zuführen eines Literaloperanden von einem ausgewählten der Register zu einem der Eingangsanschlüsse der ALU;
Zuführen eines Literaloperanden zu einem jeweiligen der Eingänge der ALU (104), der in ein direkt adressiertes der Zeigerregister (120, 122) geladen ist, wenn das direkt adressierte der Zeigerregister von seiner eindeutigen, direkten der Mikro-Registeradressen aus einem zugeordneten Registerfeld der Mikroinstruktion direkt adressiert wird;
Zuführen von Daten zu dem jeweiligen der Eingänge der ALU (104), die von einem direkt adressierten der allgemeinen Register (124) erzeugt werden, wenn das direkt adressierte der allgemeinen Register direkt von seiner eindeutigen, direkten der Mikro-Registeradressen aus dem jeweiligen Registerfeld der Mikroinstruktion direkt adressiert wird; und
Zuführen von Daten zu dem jeweiligen der Eingänge der ALU (104), die von einem spezifizierten der allgemeinen Register (124) aus zugeführt werden, das von den Inhalten eines indirekt adressierten der Zeigerregister (120, 122) adressiert wird, wenn das indirekt adressierte der Zeigerregister von seiner eindeutigen, indirekten der Mikro-Registeradressen von dem jeweiligen Registerfeld der Mikroinstruktionen adressiert wird;
und Ausführen der Makroinstruktion durch Ausführen der entsprechenden Serie von Mikroinstruktionen, indem die Operandendaten, die den Eingängen der ALU zugeführt werden, verwendet werden.
6. Verfahren gemäß Anspruch 5, weiterhin dadurch gekennzeichnet, daß die Registerfelder der Operandenspezifizierer in die jeweiligen Zeigerregister (120, 122) geladen werden, und zwar unabhängig von dem Adressierungsmodus, der von den Operandenspezifizierern spezifiziert wird, und unabhängig davon, ob die Operandenspezifizierer Literaloperanden enthalten oder nicht.
7. Verfahren gemäß Anspruch 5 oder Anspruch 6, weiterhin dadurch gekennzeichnet, daß für jeden decodierten Operandenspezifizierer das Registerfeld des Operandenspezifizierers in das Zeigerregister (120, 122) geladen wird, das von den Kennzeichendaten bestimmt wird, welche innerhalb der Operandenspezifizierer-Decodiermikroinstruktion enthalten sind.
DE84306436T 1983-10-03 1984-09-20 Zentrale Verarbeitungseinheit für einen Digitalrechner. Expired - Fee Related DE3486085T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/538,373 US4586130A (en) 1983-10-03 1983-10-03 Central processing unit for a digital computer

Publications (2)

Publication Number Publication Date
DE3486085D1 DE3486085D1 (de) 1993-04-08
DE3486085T2 true DE3486085T2 (de) 1993-10-14

Family

ID=24146659

Family Applications (2)

Application Number Title Priority Date Filing Date
DE84306436T Expired - Fee Related DE3486085T2 (de) 1983-10-03 1984-09-20 Zentrale Verarbeitungseinheit für einen Digitalrechner.
DE3486399T Expired - Fee Related DE3486399T2 (de) 1983-10-03 1984-09-20 Zentrale Verarbeitungseinheit mit der Fähigkeit, Befehle mit variablen Längen zu unterstützen.

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE3486399T Expired - Fee Related DE3486399T2 (de) 1983-10-03 1984-09-20 Zentrale Verarbeitungseinheit mit der Fähigkeit, Befehle mit variablen Längen zu unterstützen.

Country Status (6)

Country Link
US (1) US4586130A (de)
EP (2) EP0415461B1 (de)
JP (3) JPS60107138A (de)
AT (2) ATE125374T1 (de)
CA (1) CA1230181A (de)
DE (2) DE3486085T2 (de)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4812971A (en) * 1983-10-03 1989-03-14 Digital Equipment Corporation Central processing unit for a digital computer
US5034879A (en) * 1984-10-01 1991-07-23 Unisys Corp. (Formerly Burroughs Corp.) Programmable data path width in a programmable unit having plural levels of subinstruction sets
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
US4811266A (en) * 1986-11-05 1989-03-07 Honeywell Bull Inc. Multifunction arithmetic indicator
KR950006590B1 (ko) * 1986-11-14 1995-06-19 가부시기가이샤 히다찌세이사꾸쇼 캐시 메모리를 갖는 마이크로 프로세서
JP2577023B2 (ja) * 1987-12-28 1997-01-29 株式会社日立製作所 情報処理装置のアドレス拡張制御方式
JPH01230125A (ja) * 1988-03-10 1989-09-13 Nec Corp レジスタの部分的更新機能を持つデータ処理装置
EP0349124B1 (de) * 1988-06-27 1996-10-09 Digital Equipment Corporation Operandenspezifiererverarbeitung
JPH07120278B2 (ja) * 1988-07-04 1995-12-20 三菱電機株式会社 データ処理装置
US5023828A (en) * 1988-07-20 1991-06-11 Digital Equipment Corporation Microinstruction addressing in high-speed CPU
US5119483A (en) * 1988-07-20 1992-06-02 Digital Equipment Corporation Application of state silos for recovery from memory management exceptions
US5321823A (en) * 1988-07-20 1994-06-14 Digital Equipment Corporation Digital processor with bit mask for counting registers for fast register saves
US5006980A (en) * 1988-07-20 1991-04-09 Digital Equipment Corporation Pipelined digital CPU with deadlock resolution
US5590293A (en) * 1988-07-20 1996-12-31 Digital Equipment Corporation Dynamic microbranching with programmable hold on condition, to programmable dynamic microbranching delay minimization
US5019967A (en) * 1988-07-20 1991-05-28 Digital Equipment Corporation Pipeline bubble compression in a computer system
US5117487A (en) * 1988-08-26 1992-05-26 Kabushiki Kaisha Toshiba Method for accessing microprocessor and microinstruction control type microprocessor including pointer register
US4994962A (en) * 1988-10-28 1991-02-19 Apollo Computer Inc. Variable length cache fill
CA1325288C (en) * 1989-02-03 1993-12-14 Ricky C. Hetherington Method and apparatus for controlling the conversion of virtual to physical memory addresses in a digital computer system
US5148528A (en) * 1989-02-03 1992-09-15 Digital Equipment Corporation Method and apparatus for simultaneously decoding three operands in a variable length instruction when one of the operands is also of variable length
US5179691A (en) * 1989-04-12 1993-01-12 Unisys Corporation N-byte stack-oriented CPU using a byte-selecting control for enhancing a dual-operation with an M-byte instruction word user program where M<N<2M
JPH03271829A (ja) * 1990-03-20 1991-12-03 Fujitsu Ltd 情報処理装置
US5448707A (en) * 1991-10-29 1995-09-05 Intel Corporation Mechanism to protect data saved on a local register cache during inter-subsystem calls and returns
US5715421A (en) * 1992-10-16 1998-02-03 Seiko Epson Corporation Apparatus and method of addressing paged mode memory including adjacent page precharging
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
US7376814B1 (en) 1999-09-07 2008-05-20 Nxp B.V. Method for forming variable length instructions in a processing system
US7711763B2 (en) * 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
US7181484B2 (en) * 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
US7599981B2 (en) * 2001-02-21 2009-10-06 Mips Technologies, Inc. Binary polynomial multiplier
US7162621B2 (en) * 2001-02-21 2007-01-09 Mips Technologies, Inc. Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration
US8230144B1 (en) * 2004-10-19 2012-07-24 Broadcom Corporation High speed multi-threaded reduced instruction set computer (RISC) processor
FR2951938B1 (fr) 2009-10-30 2012-01-06 Oreal Utilisation d'un extrait de punica granatum pour lutter contre la canitie
EP4211567A4 (de) * 2020-09-09 2024-10-09 Ascenium Inc Hochparallele verarbeitungsarchitektur mit flacher pipeline

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5040738B1 (de) * 1970-06-11 1975-12-26
US3725868A (en) * 1970-10-19 1973-04-03 Burroughs Corp Small reconfigurable processor for a variety of data processing applications
US4104718A (en) * 1974-12-16 1978-08-01 Compagnie Honeywell Bull (Societe Anonyme) System for protecting shared files in a multiprogrammed computer
JPS5178150A (de) * 1974-12-27 1976-07-07 Fujitsu Ltd
US4156927A (en) * 1976-08-11 1979-05-29 Texas Instruments Incorporated Digital processor system with direct access memory
ES474427A1 (es) * 1977-10-25 1979-04-16 Digital Equipment Corp Un aparato central de tratamiento para uso en un sistema de tratamiento de datos.
JPS54102928A (en) * 1978-01-31 1979-08-13 Fujitsu Ltd Data reading out control system
US4236206A (en) * 1978-10-25 1980-11-25 Digital Equipment Corporation Central processor unit for executing instructions of variable length
US4347566A (en) * 1978-12-11 1982-08-31 Tokyo Shibaura Denki Kabushiki Kaisha Data processor with register file and arithmetic logic circuit on one chip and register means directly connected to the chip
JPS5578343A (en) * 1978-12-11 1980-06-12 Toshiba Corp Information processing unit
US4293907A (en) * 1978-12-29 1981-10-06 Bell Telephone Laboratories, Incorporated Data processing apparatus having op-code extension register
US4258419A (en) * 1978-12-29 1981-03-24 Bell Telephone Laboratories, Incorporated Data processing apparatus providing variable operand width operation
JPS5847053B2 (ja) * 1979-11-19 1983-10-20 株式会社日立製作所 デ−タ処理装置
JPS575153A (en) * 1980-06-10 1982-01-11 Nippon Telegr & Teleph Corp <Ntt> Information processor
AU556521B2 (en) * 1981-06-11 1986-11-06 Data General Corporation Arithmetic unit
US4450523A (en) * 1981-09-11 1984-05-22 Data General Corporation Apparatus for deriving the current length of varying-length data items in a digital data processing system
US4491908A (en) * 1981-12-01 1985-01-01 Honeywell Information Systems Inc. Microprogrammed control of extended integer and commercial instruction processor instructions through use of a data type field in a central processor unit

Also Published As

Publication number Publication date
JPH0128415B2 (de) 1989-06-02
ATE86401T1 (de) 1993-03-15
JPH0210452B2 (de) 1990-03-08
EP0415461A3 (en) 1991-08-07
EP0415461B1 (de) 1995-07-19
DE3486399D1 (de) 1995-08-24
EP0138419A2 (de) 1985-04-24
DE3486399T2 (de) 1996-04-18
US4586130A (en) 1986-04-29
JPS6446135A (en) 1989-02-20
DE3486085D1 (de) 1993-04-08
JPS6446136A (en) 1989-02-20
CA1250666C (de) 1989-02-28
EP0138419A3 (en) 1988-08-10
EP0415461A2 (de) 1991-03-06
JPS60107138A (ja) 1985-06-12
CA1230181A (en) 1987-12-08
JPS6339931B2 (de) 1988-08-09
EP0138419B1 (de) 1993-03-03
ATE125374T1 (de) 1995-08-15

Similar Documents

Publication Publication Date Title
DE3486085T2 (de) Zentrale Verarbeitungseinheit für einen Digitalrechner.
DE69131637T2 (de) Registerhaltige Datenbearbeitung in einem Prozessor mit reduziertem Befehlssatz
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE68928677T2 (de) Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle
DE69131189T2 (de) Bytevergleich-Operation für einen hochleistungsfähigen Prozessor
DE69130379T2 (de) Datenvorausladebefehl in einem Prozessor mit reduziertem Befehlssatz
DE68928513T2 (de) Verfahren zur Vorverarbeitung mehrerer Befehle
DE69802209T2 (de) An bytebereiche innerhalb eines befehlscaches gebundene verzweigungsselektoren zur schnellen identifizierung von verzweigungsprädiktoren
DE60103414T2 (de) Cpu, die auf ein erweitertes registerset in einem erweiterten registermodus zugreift und entsprechendes verfahren
DE68926385T2 (de) Methode und Hardware-Ausführung von komplexen Datentransferbefehlen
DE69127242T2 (de) Sicherung der Datenintegrität in einem Multipipelineprozessorsystem
DE68927783T2 (de) Mikroprozessor mit äusserem steuerungsspeicher
DE69631778T2 (de) Flexible implementierung eines systemverwaltungsmodus in einem prozessor
DE69904189T2 (de) Konfigurierter prozessor zur abbildung von logischen registernummern auf physikalische registernummern unter verwendung von virtuellen registernummern
DE69031433T2 (de) Speicherzugriffsausnahmebehandlung bei vorausgelesenen Befehlswörtern in dem Befehlsfliessband eines Rechners mit virtuellem Speicher
DE3851746T2 (de) Sprungvorhersage.
DE69129881T2 (de) Verzweigung in einem Pipeline-Prozessor
DE69434669T2 (de) Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge
DE69024068T2 (de) Verfahren und Datenverarbeitungseinheit zur Pipeline- Verarbeitung von Register- und Registeränderungs- Spezifizierern in dem gleichen Befehl
DE69605943T2 (de) Anordnung und verfahren zur mikrokodemodifikation
DE69932066T2 (de) Mechanismus zur &#34;store-to-load forwarding&#34;
DE69504135T2 (de) Einrichtung zur Aktualisierung von Programmzählern
DE69629383T2 (de) Superskalarer mikroprozessor mit risc86 befehlssatz
DE69723286T2 (de) Echtzeitprogramm-sprachbeschleuniger
DE3685913T2 (de) Vektorenverarbeitung.

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee