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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 18
- 238000000034 method Methods 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 3
- 239000000872 buffer Substances 0.000 description 14
- 238000013519 translation Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 9
- 101100445488 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) ptr-2 gene Proteins 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 101100215778 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) ptr-1 gene Proteins 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
- G06F9/226—Microinstruction function, e.g. input/output microinstruction; diagnostic microinstruction; microinstruction format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30192—Instruction 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
- 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.
- 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.
- 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
- 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.
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)
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)
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 |
-
1983
- 1983-10-03 US US06/538,373 patent/US4586130A/en not_active Expired - Lifetime
-
1984
- 1984-09-20 DE DE84306436T patent/DE3486085T2/de not_active Expired - Fee Related
- 1984-09-20 AT AT90118287T patent/ATE125374T1/de active
- 1984-09-20 AT AT84306436T patent/ATE86401T1/de not_active IP Right Cessation
- 1984-09-20 EP EP90118287A patent/EP0415461B1/de not_active Expired - Lifetime
- 1984-09-20 DE DE3486399T patent/DE3486399T2/de not_active Expired - Fee Related
- 1984-09-20 EP EP84306436A patent/EP0138419B1/de not_active Expired - Lifetime
- 1984-10-01 JP JP59204201A patent/JPS60107138A/ja active Granted
- 1984-10-02 CA CA000464499A patent/CA1230181A/en not_active Expired
-
1988
- 1988-06-15 JP JP63145987A patent/JPS6446135A/ja active Granted
- 1988-06-15 JP JP63145988A patent/JPS6446136A/ja active Granted
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 "store-to-load forwarding" | |
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 |