DE68929215T2 - Datenprozessor - Google Patents
DatenprozessorInfo
- Publication number
- DE68929215T2 DE68929215T2 DE68929215T DE68929215T DE68929215T2 DE 68929215 T2 DE68929215 T2 DE 68929215T2 DE 68929215 T DE68929215 T DE 68929215T DE 68929215 T DE68929215 T DE 68929215T DE 68929215 T2 DE68929215 T2 DE 68929215T2
- Authority
- DE
- Germany
- Prior art keywords
- instruction
- register
- instructions
- data
- arithmetic operation
- 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 description 54
- 238000000034 method Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 8
- 238000001514 detection method Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
Description
- Die Erfindung betrifft CPUs (Zentraleinheiten), wie sie in Minicomputern oder Mikrocomputern eingesetzt werden, und insbesondere einen für Hochgeschwindigkeitsanwendungen geeigneten Datenprozessor.
- Bisher wurden verschiedene Vorrichtungen für die Hochgeschwindigkeitsbearbeitung in Computern eingesetzt. Typisch hierfür ist ein Pipeline-System. Das Pipeline-System beendet die Verarbeitung eines Befehls nicht, bevor die Ausführung des nächsten Befehls begonnen wurde, sondern führt die Befehle in der Art einer Eimerkette durch, so daß, wenn die Ausführung eines Befehls, der in mehrere Stufen unterteilt ist, in die zweite Stufe übergeht, die erste Stufe des nächsten Befehls, der ähnlich in mehrere Stufen unterteilt ist, auszuführen begonnen wird. Dieses System ist im Detail in dem Buch "On the Parallel Computer Structure" von Shingi Tomita, Shokodo, S. 25-68 beschrieben. Durch Verwendung des n-stufigen Pipeline-Systems ist es möglich, n Befehle über alle Stufen gleichzeitig durchzuführen und die Verarbeitung eines Befehls bei jedem Pipeline-Abschnitt zu vollenden, obgleich ein Befehl bei jeder Pipeline-Stufe verarbeitet wird.
- Wie allgemein bekannt, hat die Befehlsarchitektur eines Computers einen großen Effekt auf das Verarbeitungsverfahren und die Verarbeitungsleistung. Vom Standpunkt der Befehlsarchitektur können Computer in CISC (Complex Instruction Set Computer) und RISC (Reduced Instruction Set Computer) unterteilt werden. CISC-Prozessoren verarbeiten komplizierte Be fehle unter Verwendung von Mikrobefehlen, wogegen RISC- Computer einfache Befehle verarbeiten und statt dessen Hochgeschwindigkeitsberechnungen mit fest verdrahteter Steuerlogik ohne Mikrobefehle durchfuhren. Im folgenden wird ein Überblick über die Hardware und Pipeline-Operationen sowohl von konventionellen CISC- als auch RISC-Computern gegeben.
- Fig. 2 zeigt den generellen Aufbau eines CISC- Computers. Es gibt eine dargestellte Speicherschnittstelle 200, einen Programmzähler (PC) 201, einen Befehls-Cache 202, ein Befehlsregister 203, einen Befehlsdecoder 204, einen Adreßberechnungssteuerschaltkreis 205, einen Steuerspeicher (CS) 206, in welchem Mikrobefehle gespeichert sind, einen Mikroprogrammzähler (MPC) 207, ein Mikrobefehlsregister 208, einen Decodierer 209, ein Register MDR (Memory Data Register) 210, welches Daten mit dem Speicher austauscht, ein Register MAR (Memory Address Register) 211, welches die Operandenadresse in dem Speicher angibt, einen Adreßaddierer 212, eine Registerdatei 213 und eine ALU (Arithmetic Logical Unit) 214.
- Die Funktionsweise eines solchen Aufbaus wird kurz erläutert. Der durch den PC 201 bezeichnete Befehl wird durch den Befehls-Cache entnommen und über eine Signalleitung 217 zu dem Befehlsregister 203 geleitet, wo er gesetzt wird. Der Befehlsdecoder 204 empfängt den Befehl über eine Signalleitung 218 und setzt die Kopfadresse des Mikrobefehls über eine Signalleitung 220 in den Mikroprogrammzähler 207. Der Adressenberechnungssteuerschaltkreis 205 erhält über eine Signalleitung 219 den Befehl, den Weg zur Berechnung der Adresse abzuarbeiten. Der Adressenberechnungssteuerschaltkreis 205 liest das Register aus, das notwendig für die Adressenberechnung ist, und steuert den Adressenaddierer 212. Der für die Adreßberechnung erforderliche Inhalt des Registers wird von der Registerdatei 213 über die Busse 226, 227 an den Adressenaddierer 212 weitergeleitet. Auf der anderen Seite wird der Mikrobefehl von der CS 206 bei jedem Maschinenzyklus aus gelesen und durch den Decodierer 209 decodiert und verwendet, um die ALU 214 und die Registerdatei 213 zu steuern. In diesem Fall wird ein Steuersignal 224 hier angelegt. Die ALU 214 berechnet die Daten, die ihr von dem Register über die Busse 228, 229 zugeführt werden und speichert sie über den Bus 230 wieder in der Registerdatei 213 ab. Die Speicherschnittstelle 200 ist der Schaltkreis zum Austausch mit dem Speicher z. B. beim Holen von Befehlen und Operanden.
- Die Pipeline-Operation des Computers gemäß Fig. 2 wird unter Bezugnahme auf die Fig. 3, 4 und 5 erläutert. Die Pipeline besteht aus sechs Stufen. Bei der IF-Stufe (Instruction Fetch) wird ein Befehl durch den Befehls-Cache 202 gelesen und in dem Befehlsregister 203 gesetzt. Bei der D-Stufe (Decode) decodiert der Befehlsdecoder 204 den Befehl. Bei der A-Stufe (Addres) führt der Adressenaddierer 221 die Berechnung der Adresse des Operanden durch. Bei der OF-Stufe (Operand Fetch) wird der Operand, auf dessen Adresse das MAR 211 zeigt, durch die Speicherschnittstelle 200 geholt und in dem MDR 210 gesetzt. Bei der EX-Stufe (Execution) werden Daten durch die Registerdatei 213 und das MDR 210 gelesen und der ALU 214 zugeführt, wo die Berechnung stattfindet. Bei der letzten W-Stufe (Write) wird das Rechenergebnis über den Bus 230 in einem Register der Registerdatei 213 abgespeichert.
- Fig. 3 zeigt die fortlaufende Verarbeitung von Additionsbefehlen ADD als ein Basisbefehl. Bei jedem Maschinenzyklus wird ein Befehl verarbeitet, und die ALU 214 und der Adressenaddierer 212 arbeiten parallel.
- Fig. 4 zeigt die Verarbeitung des bedingten Sprungbefehls BRAcc. Ein Flag wird durch den TEST-Befehl gesetzt. Fig. 4 zeigt den Ablauf zu der Zeit, wenn diese Bedingung erfüllt ist. Da das Flag bei der EX-Stufe gesetzt wurde, sind drei Zyklen Wartezeit notwendig, bis der Sprungbefehl geholt wird; je größer die Zahl der Stufen ist, desto größer wird die Zahl der abzuwartenden Zyklen, was zu einem Engpaß bei Verbesserung der Leistungsfähigkeit wird.
- Fig. 5 zeigt den Ausführungsablauf eines komplizierten Befehls. Der Befehl 1 ist der komplizierte Befehl. Der komplizierte Befehl erfordert eine große Anzahl von Speicherzugriffen wie String Copy und wird normalerweise durch mehrfaches Ausdehnen der EX-Stufe ausgeführt. Die EX-Stufe wird durch das Mikroprogramm gesteuert. Auf das Mikroprogramm wird einmal pro Maschinenzyklus zugegriffen. Mit anderen Worten, der komplizierte Befehl wird durch mehrfaches Lesen des Mikroprogramms ausgeführt. Zu dieser Zeit muß der nächste Befehl (Befehl 2 in Fig. 5) warten, da ein Befehl bei der EX- Stufe ausgeführt wird. In einem solchen Fall arbeitet die ALU 214 fortwährend, und der Adressenaddierer 212 wartet.
- Im folgenden wird der RISC-Computer beschrieben. Fig. 6 zeigt den allgemeinen Aufbau des RISC-Computers. Gezeigt sind eine Speicherschnittstelle 601, ein Programmzähler 602, ein Befehls-Cache 603, ein Sequenzierer 604, ein Befehlsregister 605, ein Decodierer 606, eine Registerdatei 607, eine ALU 608, ein MDR 609 und ein MAR 610.
- Fig. 7 zeigt den Prozeßablauf für Basisbefehle. Bei der IF-Stufe (Instruction Fetch) wird der Befehl, auf den der Programmzähler 602 zeigt, durch den Befehls-Cache ausgelesen und in den Befehlsregister 605 gesetzt. Der Sequenzierer 604 steuert den Programmzähler 602 in Abhängigkeit von einem Befehlssignal 615 und einem Flag-Signal 616 von der ALU 608. Bei der R-Stufe (Read) wird der Inhalt des Befehlszeigeregisters durch die Busse 618, 619 zu der ALU 108 transferiert. Bei der E-Stufe (Execution) führt die ALU 608 die arithmetische Operation durch. Schließlich wird bei der W-Stufe (Write) das berechnete Resultat über einen Bus 620 in der Registerdatei 607 gespeichert.
- In dem RISC-Computer sind die Befehle auf Basisbefehle beschränkt. Die Arithmetikoperation wird nur zwischen Regi stern ausgeführt, und der Befehl inklusive Operand Fetch ist auf den Ladebefehl und den Speicherbefehl beschränkt. Der komplizierte Befehl kann durch eine Kombination von Basisbefehlen realisiert werden. Ohne Verwendung des Mikrobefehls wird der Inhalt des Befehlsregisters 605 direkt durch den Decodierer 606 decodiert und zur Steuerung der ALU 608 verwendet usw.
- Fig. 7 zeigt den Verarbeitungsablauf für eine registerregister-arithmetische Operation. Die Pipeline besteht aus vier Stufen, da der Befehl einfach ist.
- Fig. 8 zeigt den Verarbeitungsablauf bei einem bedingten Sprungbefehl. Verglichen mit dem CISC-Computer ist die Zahl von Pipeline-Stufen klein, und so ist die Wartezeit nur ein Zyklus. In diesem Fall ist es zusätzlich zu der Operation zwischen Registern (inter-register-Operation) notwendig, den Operanden aus dem Speicher zu laden und den Operanden in dem Speicher zu speichern. Bei dem CISC-Computer kann das Laden des Operanden aus dem Speicher wegen des vorhandenen Adressenaddierers in einem Maschinenzyklus erfolgen, während bei dem RISC-Computer in Fig. 6 der Ladebefehl zwei Maschinenzyklen erfordert, da er in Adreßberechnungsbefehl und Ladebefehl zerlegt wurde.
- Die Probleme bei dem oben beschriebenen Stand der Technik werden im folgenden kurz erläutert. Bei dem CISC-Computer ist, obwohl der Speicherregisterbefehl wegen des vorhandenen Adressenaddierers in einem Maschinenzyklus ausgeführt werden kann, der Overhead bei einer Verzweigung wegen der großen Zahl von Pipeline-Stufen groß. Darüber hinaus wird nur die E- Stufe wiederholt, wenn ein komplizierter Befehl ausgeführt wird, und als Folge wartet der Adressenaddierer.
- Bei dem RISC-Computer ist der Overhead bei einer Verzweigung klein, da es nur eine kleine Anzahl von Pipeline- Stufen gibt. Jedoch sind für die Speicherregisteroperation ohne Verwendung des Adressenaddierers zwei Befehle erforder lich, nämlich Ladebefehl und Befehl für die Operation zwischen den Registern.
- Die EP-A-0 260 409 zeigt ein Datenverarbeitungssystem mit einem Befehlspuffer, der Befehle von einem Speicher empfängt, zwei Steuerregistern zum Speichern aus dem Befehlspuffer gelesener erster und zweiter Befehle, einer Registerdatei mit mehreren Registern zum Speichern von Daten, zwei Ausführungseinheiten, die entsprechende Daten aus der Registerdatei lesen und entsprechend aus den Steuerregistern gelesenen Befehlen parallel arithmetische Operationen an diesen ausführen, einem ersten Datenbus zum Senden von Daten von jeder der Ausführungseinheiten an die Register und einem zweiten Datenbus zum Senden von Daten von jedem Register zu jeder der Ausführungseinheiten.
- Im "IEEE JOURNAL OF SOLID-STATE CIRCUITS", Bd. sc-22, Nr. S. Oktober 1987, US, Seiten 790-799, HOROWITZ et al.: "MIPS-X: A 20-MIPS Peak, 32-bit Microprocessor With On-chip Cache" ist ein Datenprozessor mit einem Befehls-Cache, der Befehle von einem Speicher empfängt, einem Befehlsregister zum Speichern eines aus dem Befehls-Cache gelesenen Befehls, eine Registerdatei zum Speichern von Daten, einer arithmetischen Operationseinheit (ALU), einem ersten Datenbus zum Senden von Daten von der arithmetischen Operationseinheit an die Registerdatei und einem zweiten Datenbus zum Senden von Daten von der Registerdatei an die arithmetische Operationseinheit gezeigt. Es ist ebenso gezeigt, daß die Registerdatei umgangen werden kann, wobei der erste Datenbus durch vier Busschalter mit dem zweiten Datenbus verbunden ist.
- Dementsprechend ist es die erste Aufgabe dieser Erfindung, einen Datenprozessor zu schaffen, der zur Verbesserung der Verarbeitungskapazität für die effektive Nutzung mehrerer Arithmetikoperationseinheiten geeignet ist.
- Als zweite Aufgabe dieser Erfindung soll ein Datenprozessor geschaffen werden, der zur Reduzierung des Overhead bei einer Verzweigung geeignet ist.
- Als dritte Aufgabe der Erfindung soll ein Datenprozessor geschaffen werden, der zur Reduzierung der Verarbeitungszeit bei einem komplizierten Befehl zur Speicherregisteroperation geeignet ist.
- Die obigen Aufgaben können gemäß der im Patentanspruch 1 dargelegten Erfindung durch mehrere Arithmetikoperationseinheiten, die sich die Registerdatei teilen, Vereinfachen der Befehle zum Reduzieren der Zahl von Pipeline-Stufen und Lesen von mehreren Befehlen in einem Maschinenzyklus zum Steuern der mehreren Arithmetikoperationseinheiten gelöst werden.
- Entsprechend bevorzugten Ausführungsformen dieser Erfindung werden der komplexe Befehl in Basisbefehle zerlegt und mehrere Befehle gleichzeitig in einem Maschinenzyklus gelesen und ausgeführt, so daß mehrere Arithmetikoperationseinheiten gleichzeitig betrieben werden können, wodurch die Verarbeitungskapazität verbessert wird.
- Darüber hinaus kann, da die Funktion des Befehls einfach ist und da die Zahl von Pipeline-Stufen reduziert werden kann, der Overhead bei einer Verzweigung reduziert werden.
- Darüber hinaus kann, da mehrere Arithmetikoperationseinheiten parallel betrieben werden, die Verarbeitungszeit für den komplizierten Befehl reduziert werden.
- Fig. 1 ist ein Blockdiagramm des gesamten Aufbaus einer Ausführungsform dieser Erfindung.
- Fig. 2 ist ein Blockdiagramm des gesamten Aufbaus eines konventionellen Beispiels.
- Fig. 3 bis 5 sind Zeitdiagramme für dessen Operation.
- Fig. 6 ist ein Blockdiagramm des gesamten Aufbaus eines anderen konventionellen Beispiels.
- Fig. 7 und 8 sind Zeitdiagramme für dessen Operation.
- Fig. 9 zeigt die Liste von Befehlen, die in einer Ausführungsform dieser Erfindung verwendet werden sollen.
- Fig. 10 zeigt das Format des Befehls, der mit der Ausführungsform dieser Erfindung zusammenhängt.
- Fig. 11 bis 14 sind Zeitdiagramme für die Operation der Ausführungsform dieser Erfindung.
- Fig. 15 ist ein Zeitdiagramm für die Operation des konventionellen Beispiels.
- Fig. 16 bis 18 sind Zeitdiagramme für die Operation der Ausführungsform dieser Erfindung.
- Fig. 19 ist ein Aufbaudiagramm der ersten Arithmetikoperationseinheit 110 in Fig. 1.
- Fig. 20 ist ein Aufbaudiagramm der zweiten Arithmetikeinheit 112 in Fig. 1.
- Fig. 21 ist ein Aufbaudiagramm der Registerdatei 111 in Fig. 1.
- Fig. 22 bis 25 sind Diagramme zur Erläuterung der Ausführungsform dieser Erfindung nach Fig. 1.
- Fig. 26 ist ein Aufbaudiagramm der Befehlseinheit 103 in Fig. 1.
- Fig. 27 ist ein Diagramm zur Erläuterung der Operation derselben.
- Fig. 28 ist ein Aufbaudiagramm des Cache 2301 in Fig. 26.
- Fig. 29 ist ein weiteres Aufbaudiagramm der Befehlseinheit 103 in Fig. 1.
- Fig. 30 ist ein Zeitdiagramm für die Operation der Ausführungsform dieser Erfindung.
- Fig. 31a und 31b zeigen Befehlsformate.
- Fig. 32 ist ein Blockdiagramm des gesamten Aufbaus einer anderen Ausführungsform dieser Erfindung.
- Fig. 33 bis 36 sind Diagramme anderer Ausführungsformen dieser Erfindung, die simultan Teilverarbeitung von mehreren Befehlen durchfuhren.
- Eine Ausführungsform dieser Erfindung wird nun erläutert.
- Fig. 9 ist die Liste von Befehlen, die durch den Prozessor dieser Ausführungsform ausgeführt werden sollen. Die Basisbefehle werden alle durch die Zwischenregisteroperation ausgeführt. Die Verzweigungsbefehle beinhalten vier Verzweigungsbefehle: einen unbedingten Sprungbefehl BRA, einen bedingten Sprungbefehl BRAcc (cc bezeichnet die Verzweigungsbedingung), einen Sprung-zur-Subroutine-Befehl CALL, und einen Rücksprung-von-Subroutine-Befehl RTN. Zusätzlich zu diesen Befehlen sind ein Ladebefehl LOAD und ein Speicherbefehl STO- RE vorgesehen. Obgleich zur Vereinfachung der Erläuterung das Datenformat nur insgesamt 32 Bit ist, ist dies keine Einschränkung. Die Adresse hat 32 Bit (4 Byte) für jeden Befehl. Zur Vereinfachung ist die Zahl der Befehle wie oben beschränkt, kann aber so lange vergrößert werden, wie der Inhalt in einem Maschinenzyklus abgearbeitet werden kann.
- Fig. 10 zeigt das Befehlsformat. Die Befehle haben alle eine feste Länge von 32 Bit. Die F-, S1-, S2- und D-Felder des Basisbefehls sind jeweils das Bit oder die Bits, anzei gend ob das Arithmetikoperationsergebnis auf dem Flag, dem Feld zur Anzeige des ersten Quellenregisters, dem Feld zur Anzeige des zweiten Quellenregisters oder dem Feld zur Anzeige des Zielregisters angegeben werden soll.
- Fig. 1 zeigt den Aufbau dieser Ausführungsform. Es sind eine Speicherschnittstelle 100, ein 32-Bit-Programmzähler 101, ein Sequenzierer 102, eine Befehlseinheit 103, ein 32- Bit-Erstbefehlsregister 104, ein 32-Bit-Zweitbefehlsregister 105, ein erster Decodierer 106, ein zweiter Decodierer 107, ein MDR 108, ein MAR 109, eine erste Arithmetikoperationseinheit 110, eine Registerdatei 111 und eine zweite Arithmetikoperationseinheit 112 dargestellt.
- Bei dieser Ausführungsform werden in einem Maschinenzyklus zwei Befehle parallel ausgelesen und ausgeführt. Die Fig. 11 bis 14 zeigen die Pipeline-Verarbeitung bei dieser Ausführungsform. Die Pipeline enthält vier Stufen, nämlich IF (Instruction Fetch), R (Read), EX (Execution), W (Write).
- Die Funktionsweise dieser Ausführungsform wird unter Bezugnahme auf Fig. 1 beschrieben.
- Bei der IF-Stufe werden zwei Befehle gelesen, auf die der Programmzähler zeigt und über die Busse 115 bzw. 117 in den ersten und zweiten Befehlsregistern 104 und 105 gesetzt. Wenn der Inhalt des PC gerade ist, wird der Befehl bei der PC-Adresse in dem ersten Befehlsregister gespeichert, und der Befehl bei der Adresse PC + 1 wird in dem zweiten Befehlsregister gespeichert. Wenn der PC ungerade ist, wird der NOP- Befehl in das erste Befehlsregister gesetzt, und der Befehl bei der PC-Adresse wird in das zweite Befehlsregister gesetzt. Der Sequenzierer 102 ist der Schaltkreis zur Steuerung des Programmzählers. Wenn das erste und zweite Befehlsregister beide keinen Verzweigungsbefehl anzeigen, wird der Programmzähler auf den vorigen Zählerstand + 2 inkrementiert. Bei der Verzweigung wird die Verzweigungsadresse berechnet und in den Programmzähler gesetzt. Wenn ein bedingter Sprung befehl auftritt, wird entschieden, ob die Verzweigung ausgeführt wird oder nicht, und zwar aufgrund der Flag-Information 123 von der ersten Arithmetikoperationseinheit und der Flag- Information 124 von der zweiten Arithmetikoperationseinheit. Das Signal 116 von der Befehlseinheit ist das Konfliktsignal, das verschiedene und unterschiedliche Konflikte zwischen dem ersten und zweiten Befehl anzeigt. Wenn dieses Konfliktsignal gesetzt ist, wird durch die Hardware versucht, den Konflikt zu vermeiden. Das Verfahren zum Vermeiden von Konflikten wird in Einzelheiten später erläutert.
- Die Operation der R-Stufe bei der Ausführung des Basisbefehls folgt weiter unten. Bei der R-Stufe wird der Inhalt des ersten Befehlsregisters 104 durch den ersten Decodierer 106 decodiert, und der Inhalt des zweiten Befehlsregisters 105 wird durch den zweiten Decodierer 107 decodiert. Als Ergebnis wird der Inhalt des Registers, auf den das erste Quellenregisterfeld S1 des ersten Befehlsregisters 104 zeigt, durch einen Bus 125 in die erste Arithmetikoperationseinheit 110 gespeist, und der Inhalt des Registers, auf den das zweite Quellenregisterfeld S2 zeigt, wird durch einen Bus 126 dorthin gespeist. Darüber hinaus wird der Inhalt des Registers, auf den das erste Quellenregisterfeld S1 des zweiten Befehlsregisters zeigt, durch einen Bus 127 in die zweite Arithmetikoperationseinheit 112 gespeist, und der Inhalt des Registers, auf den das zweite Quellenregisterfeld S2 zeigt, wird durch einen Bus 128 dorthin gespeist.
- Die Operation der EX-Stufe wird im folgenden beschrieben. Bei der EX-Stufe führt die erste Arithmetikoperationseinheit 110 eine Arithmetikoperation mit den Daten durch, die durch die Busse 125 und 126 in Übereinstimmung mit den Inhalten des OP-Code des ersten Befehlsregisters eingespeist wurden. Zur gleichen Zeit führt die zweite Arithmetikoperationseinheit 112 eine arithmetische Operation mit den Daten durch, die in Übereinstimmung mit den Inhalten des OP-Code des zwei ten Befehlsregisters 105 durch die Busse 127 und 128 eingespeist wurden.
- Schließlich wird nachstehend die Operation der W-Stufe erläutert. Bei der W-Stufe wird das Ergebnis der Arithmetikoperation der ersten Arithmetikoperationseinheit 110 über einen Bus 129 in dem Register abgespeichert, auf den durch das Bestimmungsfeld D des ersten Befehlsregisters gezeigt wird. Auch wird das Ergebnis der Arithmetikoperation der zweiten Operationseinheit 112 über einen Bus 131 in dem Register abgelegt, auf den das Bestimmungsfeld D des zweiten Befehlsregisters zeigt.
- Fig. 11 zeigt das Flußdiagramm für die fortlaufende Verarbeitung von Basisbefehlen. Zwei Befehle werden zu einer Zeit in einem Maschinenzyklus verarbeitet. Bei diesem Beispiel sind die erste Arithmetikoperationseinheit und die zweite Arithmetikoperationseinheit immer parallel in Betrieb.
- Fig. 12 ist das Flußdiagramm für die kontinuierliche Verarbeitung sowohl des Lade- als auch des Speicherbefehls als erstem Befehl und des Basisbefehls als einem zweiten Befehl. Wenn der Ladebefehl ausgeführt wird, wird in der R- Stufe der Inhalt des Registers, das durch das S2-Feld des ersten Befehlsregisters spezifiziert ist, über den Bus 126 zu dem MAR 109 Übertragen. Bei der EX-Stufe wird der Operand durch die Speicherschnittstelle 100 geholt. Schließlich wird der Operand, der in der W-Stufe geholt wird, über den Bus 129 in dem Register abgelegt, das durch das Bestimmungsfeld D des ersten Befehlsregisters spezifiziert ist.
- In der EX-Stufe kann der Operand in einem Maschinenzyklus geholt werden, wenn ein Hochgeschwindigkeits-Cache in der Speicherschnittstelle vorgesehen ist. Insbesondere kann dies leicht erfolgen, wenn der gesamte Computer gemäß Fig. 1 in einem Haltleitersubstrat mit Befehls-Cache und Daten-Cache auf dem Chip integriert wurde. Natürlich kann, wenn der Cache verfehlt wurde, das Holen des Operanden nicht in einem Ma schinenzyklus beendet werden. In einem solchen Fall werden die Systemuhr angehalten und die EX-Stufe ausgedehnt. Diese Operation wird auch in einem konventionellen Computer durchgeführt.
- Wenn der Speicherbefehl ausgeführt wird, so wird in der R-Stufe der Inhalt des Registers, auf den durch das erste Quellenregisterfeld S1 des ersten Befehlsregisters gezeigt wird, als Datensatz durch den Bus 125 in das MDR 108 übertragen. Zur gleichen Zeit wird der Inhalt des Registers, auf das durch das zweite Quellenregisterfeld S2 des ersten Befehlsregisters gezeigt wird, über den Bus 126 als Adresse zu dem MAR 109 Übertragen. In der EX-Stufe werden Daten in dem MDR 108 an die Adresse geschrieben, auf die das MAR 109 zeigt.
- Wie in Fig. 12 dargestellt, können, selbst wenn der Ladebefehl oder Speicherbefehl der erste Befehl ist, zwei Befehle zur Zeit in einem Maschinenzyklus abgearbeitet werden. Der Fall, wo der Ladebefehl oder Speicherbefehl als der zweite Befehl auftritt, wird im einzelnen später erläutert.
- Fig. 13 zeigt den Arbeitsablauf der Ausführung des unbedingten Sprungbefehls BRA als zweitem Befehl. Wenn der BRA- Befehl gelesen wird, so führt in der R-Stufe der Sequenzierer 102 die Addition zwischen Verschiebungsfeld d und Programmzähler aus und setzt den Programmzähler 101. Während dieser Zeit werden der Befehl, der der nächste zu der Adresse des BRA-Befehls ist, und der übernächste Befehl (Befehle 1 und 2 in Fig. 13) ausgelesen. In diesem nächsten Zyklus werden zwei Befehle bei der Adresse gelesen, an welche das Programm gesprungen ist. Bei dieser Ausführungsform ist die Hardware in der Lage, die Befehle 1 und 2 auszuführen. Mit anderen Worten, es tritt kein Wartezyklus auf, selbst nicht zur Zeit der Verarbeitung des Sprungbefehls. Dieser Ansatz wird Verzögerungssprung genannt und bei konventionellen RISC-Computern verwendet. Jedoch kann bei konventionellen RISC-Computern nur ein Befehl während der Berechnung der Adresse des Sprungbe fehls ausgeführt werden. Bei dieser Ausführungsform können zwei Befehle gleichzeitig während der Berechnung der Adresse des Sprungbefehls ausgeführt werden, wodurch eine höhere Verarbeitungskapazität erreicht wird. Das Gleiche gilt für den Verarbeitungsablauf des CALL-Befehls und des RTN-Befehls. Der Compiler erzeugt Codes, so daß Befehle so effektiv wie möglich während der Berechnung der Adresse des Sprungbefehls ausgeführt werden können, aber wenn es nichts zu tun gibt, werden die Befehle 1 und 2 in Fig. 13 zu NOP-Befehlen. Zu dieser Zeit tritt im wesentlichen ein Maschinenwartezyklus auf. Da jedoch die Zahl der Pipeline-Stufen klein ist, kann der Overhead zur Zeit der Verzweigung verglichen zum CISC- Computer, der als konventionelles Beispiel erwähnt wurde, reduziert werden.
- Fig. 14 zeigt den Verarbeitungsablauf des bedingten Sprungbefehls BRAcc. Das Flag wird durch den Befehl gesetzt, der mit ADD, F bezeichnet ist, und die Entscheidung, ob die Sprungbedingung erfüllt ist oder nicht, hängt von dem Ergebnis ab. Zu dieser Zeit werden ähnlich wie zur Zeit des unbedingten Sprungbefehls und dessen Verarbeitung, was in bezug auf Fig. 13 erläutert wurde, der Befehl, der als nächster bei der Adresse des BRAcc-Befehls steht, der Befehl 1 in Fig. 14, der nächste Befehl, der Befehl 2 in Fig. 14, gelesen und verarbeitet. Jedoch wird in der W-Stufe während des Verarbeitungsablaufs der zwei Befehle das Ergebnis der Arithmetikoperation nur in die Registerdatei geschrieben, wenn die Verzweigungsbedingung des BRAcc-Befehls nicht erfüllt ist. Mit anderen Worten, wenn der Verzweigungsbefehl erfüllt ist, wird das Ergebnis der Berechnung nicht geschrieben.
- Wie in Fig. 11 bis 14 gezeigt, verarbeitet daher diese Ausführungsform zwei Befehle zur Zeit während eines Maschinenzyklus, was den Vorteil hat, daß die Verarbeitungskapazität maximal verdoppelt wurde. Darüber hinaus, da einfache Befehle verwendet werden und die Zahl der Pipeline-Stufen, die unter Steuerung der verdrahteten Logik sind, die Größe 4 hat, kann der Overhead zur Zeit der Verzweigung auf einen Maschinenzyklus maximal beschränkt werden. Darüber hinaus kann, wenn die verzögerte Verzweigung durch den Compiler optimiert wird, der Overhead eliminiert werden.
- Da darüber hinaus selbst komplizierte Verarbeitungen durch eine Kombination von einfachen Befehlen durchgeführt werden können, können parallele Operationen der ersten Arithmetikoperationseinheit 110 und der zweiten Arithmetikoperationseinheit 112 in Fig. 1 mit weniger Verzögerung im Vergleich zu der des Adressenaddierers und der ALU durch die parallele Pipeline in dem konventionellen CISC-Computer ausgeführt werden. Dieser Aspekt wird etwas näher erläutert. Wenn das Laden vom Speicher in das Register wiederholt wird, so kann der konventionelle CISC-Computer in Fig. 15 einen Teil der Daten zu einer Zeit während eines Maschinenzyklus laden. Dagegen braucht diese Ausführungsform zwei Befehle, nämlich Adressenberechnung ADD und Ladebefehl unter Verwendung der Adresse für das Laden eines Teils der Daten, ist aber in der Lage, zwei Befehle zu einer Zeit während eines Maschinenzyklus wie in Fig. 16 gezeigt auszuführen, so daß sie immer noch in der Lage ist, einen Teil von Daten zu laden zu einer Zeit während eines Maschinenzyklus. Von dem Standpunkt des parallelen Betriebes von Arithmetikoperationseinheiten arbeiten beide Arithmetikoperationseinheiten parallel und sind so gleich.
- Die Fig. 17 und 18 zeigen den Vergleich von weiteren komplizierten Verarbeitungen. Der Befehl 1, der, wie in Fig. 17 gezeigt, in dem konventionellen CISC-Computer 6 Zyklenverarbeitung bei der EX-Stufe benötigt, kann bei dieser Ausführungsform nach Fig. 18 in 3 Zyklen verarbeitet werden. Dies folgt daraus, daß der konventionelle CISC-Computer die Operation des Adressenaddierers während der Ausführung des Befehls 1 unterbricht, während bei dieser Ausführungsform zwei Arith metikoperationseinheiten in jedem Zyklus parallel betrieben werden können.
- Fig. 19 zeigt den Aufbau der ersten Arithmetikoperationseinheit 110 in Fig. 1. Gezeigt sind eine ALU 1500, ein Schieberegister 1501 und ein Flagsetzschaltkreis 1502. Die Daten, die durch die Busse 125 und 126 übertragen werden, werden durch die ALU 1500 für die Addition, Subtraktion und logische Operation und durch das Schieberegister für den SFT- Befehl verarbeitet. Das Ergebnis dieser Verarbeitung wird an den Bus 130 übertragen. Ein Flag wird von dem Flagsetzschaltkreis 1502 bei Ergebnis der Arithmetikoperation gesetzt und als das Signal 123 weitergeleitet.
- Fig. 20 zeigt ein Beispiel des Aufbaus der zweiten Arithmetikoperationseinheit 112 in Fig. 1. Gezeigt sind eine ALU 1600 und ein Flagsetzschaltkreis 1601. Die zweite Arithmetikoperationseinheit unterscheidet sich von der ersten Arithmetikoperationseinheit darin, daß sie kein Schieberegister hat. Dies kommt daher, daß der SFT-Befehl seltener als der Befehl für eine arithmetische Logikoperation auftritt. Somit können zwei SFT-Befehle nicht in einem Maschinenzyklus ausgeführt werden, aber der Vorteil ist der, daß der Umfang der Hardware reduziert werden kann. Das Steuerverfahren, das angewendet werden muß, wenn zwei SFT-Befehle auftreten, wird später erläutert. Natürlich kann die zweite Arithmetikeinheit 112 die in Fig. 19 gezeigt Einheit sein.
- Fig. 21 zeigt den Aufbau der Registerdatei 111 in Fig. 1. Es sind dargestellt Register 1708 und Busschalter 1700 bis 1709. Jedes Register hat vier Leseports und zwei Schreibports. Der Busschalter wird verwendet, um die Registerdatei zu umgehen, wenn das durch das Bestimmungsfeld spezifizierte Register des vorigen Befehls sofort für den nächsten Befehl verwendet wird. Zum Beispiel ist der Busschalter 1702 der Umleitungsschalter von dem Bus 129 zu dem Bus 127, der öffnet, wenn das Bestimmungsortregisterfeld D des ersten Befehls mit dem ersten Quellenregisterfeld S1 des zweiten Befehls zusammenfällt.
- Das Verfahren zum Eliminieren des Konflikts zwischen dem ersten und zweiten Befehl wird mit Bezug auf die Fig. 22 bis 29 beschrieben. Beide Befehle können manchmal nicht zur gleichen Zeit ausgeführt werden, je nach Kombination des ersten und zweiten Befehls. Dieses wird Konflikt genannt. Der Konflikt tritt in folgenden Fällen auf.
- (1) Der Lade- oder Speicherbefehl erscheint als zweiter Befehl.
- (2) Der SFT-Befehl erscheint als zweiter Befehl.
- (3) Das Register, auf das durch das Bestimmungsregisterfeld D des ersten Befehls gezeigt wird, fällt mit dem Register zusammen, das durch das erste Quellenregisterfeld S1 des zweiten Befehls spezifiziert ist, oder mit dem Register, auf das durch das zweite Quellenregisterfeld S2 des zweiten Befehls gezeigt wird.
- Die obigen Fälle (1) und (2), bei denen ein Konflikt auftritt, sind Probleme, die typisch für diese Ausführungsform sind und auftreten, wenn der Lade- und Speicherbefehl und der SFT-Befehl nicht durch die zweite Arithmetikoperationseinheit abgearbeitet werden können. Wenn in Fig. 1 das zweite MDR zu dem Bus 127 addiert wird, das zweite MAR zu dem Bus 128 addiert wird und auf zwei Teile von Daten in einem Maschinenzyklus durch die Speicherschnittstelle zugegriffen wird, dann kann die Konfliktbedingung (I) eliminiert werden. Wenn darüber hinaus das Schieberegister in der zweiten Arithmetikoperationseinheit vorgesehen ist, kann die Konfliktbedingung (2) eliminiert werden. Bei dieser Ausführungsform tritt die Konfliktbedingung wegen der Reduzierung der Hardware auf. In einem solchen Fall wird, da der Konflikt, wie später erläutert, leicht eliminiert werden kann, nur die Hardware, die mit den auszuführenden Befehlen zur Zeit zusam menhängt, in Übereinstimmung mit der notwendigen Leistungsfähigkeit und dem zulässigen Umfang der Hardware verdoppelt werden, und so wird die Hardware im wesentlichen ohne Einbuße an Leistungsfähigkeit reduziert.
- Das Steuerverfahren, das verwendet werden muß, wenn der SFT-Befehl als zweiter Befehl auftritt, wird mit Bezug auf Fig. 22 erläutert.
- Der obere Teil von Fig. 22 zeigt den Fall, wo der SFT- Befehl sich an der Adresse "3" für den zweiten Befehl befindet. Der untere Teil von Fig. 22 zeigt die zur Zeit der Ausführung in dem ersten und zweiten Befehlsregister zu speichernden Befehle. Wenn der Programmzähler 2 ist, erkennt die Hardware, daß der zweite Befehl der SFT-Befehl ist, und der Befehl bei der Adresse 2 wird in dem ersten Befehlsregister gesetzt, wobei der NOP-Befehl in dem zweiten Befehlsregister gesetzt wird. In dem nächsten Maschinenzyklus wird der Programmzähler um "1" inkrementiert oder die Adresse 3 in dem Programmzähler gesetzt. Darüber hinaus werden der SFT-Befehl bei der Adresse 3 in dem ersten Befehlsregister und der NOP- Befehl in dem zweiten Befehlsregister gesetzt. Somit kann die Verarbeitung korrekt in zwei separaten Maschinenzyklen durchgeführt werden. Natürlich erfolgt eine Optimierung durch den Compiler, so daß, wenn möglich, der SFT-Befehl nicht auftritt.
- Ein anderes Verfahren zur Eliminierung eines Konflikts wird mit Bezug auf Fig. 23 beschrieben. Es wird verhindert, daß der SFT-Befehl an der ungeraden Adresse des zweiten Befehls gespeichert wird, und wenn kein Befehl ausgeführt werden soll, wird der NOP-Befehl darin abgespeichert. Somit erhöht sich die Programmgröße etwas, aber die Hardware für die Eliminierung des Konflikts kann fortgelassen werden.
- Fig. 24 zeigt das Verarbeitungsverfahren, das verwendet werden muß, wenn der Ladebefehl als zweiter Befehl auftritt.
- Der Ladebefehl wird in der Adresse 3 gespeichert. Das Verarbeitungsverfahren ist das gleiche wie für den SFT-Befehl.
- Fig. 25 zeigt das Verarbeitungsverfahren, das verwendet werden muß, wenn der Registerkonflikt auftritt. Der Befehl bei der Adresse 2 wird in dem Nummer-8-Register abgespeichert, und der Befehl bei der Adresse 3 liest dasselbe Nummer-8-Register. In diesem Fall erfolgt die Ausführung in zwei separaten Maschinenzyklen, wie bei dem SFT-Befehl.
- Zu dem Lade-, Speicherbefehl und auch dem Registerkonflikt ist festzuhalten, daß eine Speicherung an ungeraden Adressen aus Gründen der Eliminierung des Konflikts vermieden werden kann. Der Effekt ist der gleiche wie der beim SFT-Befehl beschriebene.
- Eine Beschreibung des Hardwaresystems zum Umsetzen des Verarbeitungssystems, erwähnt mit Bezug auf Fig. 22 bis 25, folgt. Fig. 26 zeigt den Aufbau der Befehlseinheit 103 in Fig. 1. Gezeigt ist ein Konflikterfassungsschaltkreis 2300, ein Cache-Speicher 2301, ein erster Maskenschaltkreis 2302 und ein zweiter Maskenschaltkreis 2303. Der Inhalt des Programmzählers wird normalerweise durch den Bus 113 eingegeben, und der Befehl, auf den der Programmzähler zeigt, und der Befehl an der nächsten Adresse werden in den Bus 2305 und 2306 gespeist. Zu der Zeit eines Fehlgriffes auf den Cache wird der Befehl durch die Speicherschnittstelle 100 geholt und durch den Bus 113 in den Cache 2301 geschrieben. Zu dieser Zeit prüft der Konflikterfassungsschaltkreis, ob der Konflikt zwischen dem ersten und zweiten Befehl vorhanden ist. Wenn der Konflikt vorhanden ist, wird das Konfliktsignal 2304 gesetzt. In dem Cache sind Bits vorgesehen, die jeweils die Konfliktbedingung von zwei Befehlen anzeigen. Zu der Zeit eines Fehlgriffs auf den Cache wird das Konfliktsignal 2304 hierin gespeichert. Der erste Maskenschaltkreis empfängt den ersten Befehl, den zweiten Befehl, das Konfliktbit und das kleinste Bit des Programmzählers und steuert die Signallei tung 115 zu dem ersten Befehlsregister 104, wie in Fig. 21 gezeigt. Der zweite Maskenschaltkreis empfängt den zweiten Befehl, das Konfliktbit und das kleinste Bit des Programmzählers und versorgt noch das zweite Register 105, wie in Fig. 27 gezeigt, mit dem Signal 117.
- Wenn, wie in Fig. 27 gezeigt, das Konfliktbit und das kleinste Bit des PC beide 0 sind, wird der erste Befehl in das erste Befehlsregister und der zweite Befehl in das zweite Befehlsregister gespeist. Diese Operation ist der Normalfall. Wenn das Konfliktbit 1 und das kleinste Bit des PC 0 ist, wird der erste Befehl in das erste Befehlsregister und der NOP-Befehl in das zweite Befehlsregister gespeist. Diese Operation ist die Verarbeitung in dem ersten Maschinenzyklus zu der Zeit der Verarbeitung des Konfliktbefehls. Wenn das Konfliktbit 1 und das leichteste Bit des PC 1 ist, so wird der zweite Befehl in das erste Befehlsregister und der NOP-Befehl in das zweite Befehlsregister gespeist. Diese Operation ist clie Verarbeitung in dem zweiten Maschinenzyklus zur Zeit der Verarbeitung des Konfliktbefehls. Somit ist der Verarbeitungsablauf des Konfliktbefehls, erläutert mit Bezug auf die Fig. 22, 23 und 25, durch die Verarbeitung möglich.
- Wenn der Verzweigungsbefehl zu einer ungeraden Adresse abzweigt, wie in Fig. 27 gezeigt, wird nur der zweite Befehl umgesetzt, unabhängig von dem Konfliktbit, und damit ist eine korrekte Verarbeitung möglich. Der Cache wird in jedem Zyklus ausgelesen, aber er wird beschrieben, wenn ein Fehlzugriff auf den Cache erfolgt, in welchem Fall dies sich über mehrere Maschinenzyklen hinzieht. Wenn damit der Konflikterfassungsschaltkreis zur Zeit des Schreibens in den Cache betrieben wird, so daß das Konfliktbit im Cache gehalten wird, kann der Maschinenzyklus effektiv gekürzt werden.
- Fig. 28 zeigt die Konstruktion des Befehls-Cache 2301 in Fig. 26. Gezeigt sind ein Verzeichnis 2500, ein Datenspeicher 2501, ein Selektor 2502, ein Adreßregister 2503, ein Schreibregister 2504, ein Komparator 2505 und ein Cache- Steuerschaltkreis 2506. Der Cache in Fig. 28 hat im wesentlichen denselben Aufbau wie der normale Cache, unterscheidet sich aber darin, daß der Datenspeicher 2501 ein Feld für das Halten eines Konfliktbits bei allen 2-Befehls-8-Byte hat und daß zum Zeitpunkt des Lesens des Cache das leichteste Bit (0 Bit) des PC vernachlässigt wird, so daß der erste Befehl 2305, der zweite Befehl 2306 und das Konfliktsignal 116 eingespeist werden.
- In Fig. 28 hat der Datenspeicher 8 K Worte und ist die Blockgröße 32 Byte (8 Worte). Das Signal 113 von dem Programmzähler wird in dem Adreßregister 2503 gesetzt. Die Ausgänge des Verzeichnisses 2500 und Datenspeichers 2501 sind mit 3 bis 12 Bit der Adresse bezeichnet. Der Komparator 2505 vergleicht den Ausgang des Verzeichnisses und die Bits 13 bis 31 des Adreßregisters. Wenn das Ergebnis des Vergleichs keine Koinzidenz zeigt, wird ein Signal 2508 an den Cache- Steuerschaltkreis 2506 ausgegeben. Der Cache- Steuerschaltkreis 2506 liest einen Block mit einem Befehlsfehlzugriff von dem Hauptspeicher und setzt ihn in dem Datenspeicher 2501. Der Selektor 2502 empfängt das erste und zweite Bit des Adreßregisters und wählt zwei notwendige Befehle aus dem Block. Der erste und zweite Befehl sind sicher innerhalb desselben Blocks und nur einer von ihnen erzeugt nie einen Fehlzugriff.
- Fig. 29 zeigt einen anderen Aufbau der Befehlseinheit 103 in Fig. 1. Gezeigt sind ein Cache-Speicher 2600, ein Konflikterfassungsschaltkreis 2604, ein erster Maskenschaltkreis 2302 und ein zweiter Maskenschaltkreis 2303. Der Aufbau in Fig. 29 unterscheidet sich von dem in Fig. 26 darin, daß der Cache kein Feld zum Halten des Konfliktbits hat und daß der erste Befehl 2601 und der zweite Befehl 2602 des Cache- Ausgangs angezeigt werden durch den Zykluskonflikterfassungsschaltkreis 2604. Die Operationen des ersten Maskenschalt kreises 2302 und des zweiten Maskenschaltkreises 2303 sind die gleichen wie in Fig. 26. Gemäß dieser Ausführungsform wird, da der All-Zykluskonflikterfassungsschaltkreis nach Lesen des Cache betrieben wird, der Maschinenzyklus ausgedehnt, aber das Konfliktbitfeld kann innerhalb des Cache fehlen.
- Darüber hinaus kann es gemäß dieser Erfindung durch effektive Nutzung der Tatsache, daß zwei Befehle zur gleichen Zeit in einem Maschinenzyklus abgearbeitet werden, möglich sein, den bedingten Sprungbefehl in einem speziellen Fall schneller zu verarbeiten. Das heißt, wenn bei dem bedingten Sprungbefehl der Bestimmungsort des Sprungs für den Fall, daß die Bedingung erfüllt ist, der nächste ist, und der nächste Befehl (Befehl 2 in Fig. 30), so werden die Befehle 2 und 3 unabhängig davon ausgeführt, ob die Bedingung erfüllt ist oder nicht und ob die W-Stufe des Befehls 1 unterdrückt wurde oder nicht, was durch die Erfüllung der Bedingung gesteuert wird, so daß bei Eintreten der Bedingung der Wartezyklus eliminiert werden kann. In diesem Fall jedoch ist der bedingte Sprungbefehl sicherlich der erste Befehl. Bei der normalen bedingten Verzweigung tritt ein Wartezyklus auf, wenn die Bedingung erfüllt ist, was mit Bezug auf Fig. 14 beschrieben wurde. Mit anderen Worten, da bei dieser Erfindung zwei Befehle in einem Maschinenzyklus zur gleichen Zeit abgearbeitet werden, kann die Ausführung der Befehle auf der zweiten Befehlsseite gesteuert werden, ob die Bedingung für den bedingten Sprungbefehl auf der ersten Befehlsseite erfüllt ist oder nicht, ohne fehlenden Effekt auf den Befehlsverarbeitungsablauf von zwei Befehlseinheiten.
- Darüber hinaus kann es bei dieser Ausführungsform durch effektive Nutzung der Verarbeitung von zwei Befehlen in einem Maschinenzyklus gleichzeitig möglich werden, das "atomare" Verarbeiten leicht umzusetzen. Das atomare Verarbeiten ist das Verarbeiten, das immer sequentiell abläuft und zur Synchronisierung zwischen Prozessen herangezogen wird. Fig. 31a zeigt die Verarbeitung in dem konventionellen Computer, und Fig. 31 zeigt sie für diese Ausführungsform, In Fig. 31a gibt es die Möglichkeit, daß ein Interrupt zwischen den Befehlen auftritt, während in Fig. 31b kein Interrupt zwischen den Befehlen 1 und 2 und zwischen den Befehlen 3 und 4 auftritt. Somit kann in Fig. 31a ein Programm für andere Verarbeitungen zwischen beliebige Befehle treten, während in Fig. 31b der Vorteil besteht, daß die Befehle 1 und 2 oder die Befehle 3 und 4 sicherlich hintereinander ausgeführt werden.
- Fig. 32 zeigt den Aufbau einer anderen Ausführungsform dieser Erfindung. Bei dieser Ausführungsform können 4 Befehle in einem Maschinenzyklus gleichzeitig ausgeführt werden. Es sind eine Speicherschnittstelle 3200, ein Programmzähler 3201, ein Sequenzierer 3202, eine Befehlseinheit 3203, ein erstes bis viertes Befehlsregister 3204 bis 3207, ein erster bis vierter Decodierer 3208 bis 3211, ein MDR 3212, ein MAR 3213, eine erste bis vierte Arithmetikoperationseinheit 3214, 3215, 3217 und 3218 und eine Registerdatei 3216 gezeigt. Jede Arithmetikoperationseinheit teilt sich die Registerdatei 3216. Die Operation jedes Abschnitts ist die Gleiche wie bei der Ausführungsform in Fig. 1 und wird daher nicht noch einmal erläutert.
- Ähnlich kann die Parallelität weiter gesteigert werden, aber da es ein Programm gibt, bei dem ein Sprungbefehl in jedem mehrerer Befehle vorhanden ist, wird eine extreme Vergrößerung der Parallelität in einem solchen Programm nicht sehr effektiv sein. Es ist vorzuziehen, etwa 2 bis 4 Befehle gleichzeitig abzuarbeiten. Wenn der Grad der Parallelität in dem Programm mit wenigen Verzweigungen und wenigen Konflikten weiter erhöht wird, so wird die Leistungsfähigkeit effektiv erhöht. Darüber hinaus kann, wenn der Grad der Parallelität als 2n (n ist eine natürliche Zahl) gewählt wird, die Befehlseinheit leicht gesteuert werden.
- Noch eine andere Ausführungsform dieser Erfindung wird erläutert. Bei den obigen Ausführungsformen, soweit beschrieben, werden immer mehrere Befehle gleichzeitig verarbeitet. Es ist auch möglich, von normaler Verarbeitung eines Befehls in einem Maschinenzyklus und in manchen Fällen von der Verarbeitung von mehreren Befehlen gleichzeitig zu profitieren. Fig. 33 zeigt drei Beispiele. In dem Beispiel in Fig. 33a wird der erste Befehl in einem Hauptspeicher gespeichert, und der zweite Befehl wird nur in dem Kopfabschnitt des Adreßraums und in einem ROM gespeichert. In dem Beispiel in Fig. 33b werden der erste und zweite Befehl in dem Kopfabschnitt des Adreßraums und in einem ROM gespeichert, und in den anderen Abschnitten des Hauptspeichers wird nur der erste Befehl gespeichert. Das Beispiel von Fig. 33c ist im wesentlichen das Gleiche wie in Fig. 33a, wobei der zweite Befehl, der in einem ROM gespeichert werden soll, in den mittleren Abschnitt des Adreßraums geschrieben wird. Der Gesamtaufbau des Computers ist der Gleiche wie in Fig. 1, und nur die Befehlseinheit 103 muß verändert werden. In dem Rom-Abschnitt ist ein Programm mit einer hohen Nutzungsrate und mit einem hohen Grad an Parallelität geschrieben, welches Programm durch den Aufruf einer Subroutine aus einer Routine ausgeführt wird. Da der ROM-Abschnitt eine niedrige Kapazität haben kann, kann ein bestens geeignetes Programm durch einen Assembler selbst ohne Compiler erzeugt werden.
- Fig. 34 zeigt den Aufbau der Befehlseinheit 103 in Fig. 1 zur Umsetzung des Beispiels in Fig. 33a. Gezeigt sind ein Cache 2900, ein 4-K-Wort-ROM 2901, ein Maskenschaltkreis 2903 und ein Maskenschaltkreissteuerschaltkreis 2902. Der Maskenschaltkreissteuerschaltkreis überwacht immer die Adresse 113. Nur wenn die höheren Bits 12 bis 31 der Adresse alle Null sind, wird ein effektives Signal 2904 gesetzt. Der Maskenachaltkreis 2903 versorgt, nur wenn das effektive Signal 2904 gesetzt ist, das zweite Register mit einem ROM-Ausgang 2905 als Ausgang 117. Zu anderen Zeiten liegt der NOP-Befehl an.
- Um das Beispiel in Fig. 33c zu realisieren, muß der Maskenschaltkreissteuerschaltkreis 2902 in Fig. 34 wie in Fig. 35 gezeigt aufgebaut sein. Gezeigt sind ein Komparator 3000 und ein Basisregister 3001. Wenn die höheren Bits 12 bis 31 des Basisregisters mit den höheren Bits 12 bis 31 der Adresse 113 zusammenfallen, setzt der Komparator 3000 das effektive Signal 2904.
- Um das Beispiel nach Fig. 33b zu realisieren, muß die Befehlseinheit 103 in Fig. 1 wie in Fig. 36 gezeigt aufgebaut sein. Die Funktionen des ROM 2901, des Maskenschaltkreissteuerschaltkreises 2902 und des Maskenschaltkreises 2903 sind die gleichen wie die, die in Fig. 29 durch die gleichen Bezugszeichen bezeichnet sind. In Fig. 36 sind ein Cache 3100, ein 4-K-Wort-ROM 3101, ein Selektorsteuerschaltkreis 3102 und ein Selektor 3107 gezeigt. Der Selektorsteuerschaltkreis 3102 überwacht immer die höheren Bits 12 bis 31 der Adresse 113. Nur wenn alle diese Bits 0 sind, wird ein ROM-Auswahlsignal 3105 gesetzt. Der Selektor 3107 versorgt das erste Befehlsregister nur mit einem ROM-Ausgangssignal 3104 als Ausgang 115, wenn der ROM-Auswahlschaltkreis 3105 gesetzt ist. Ansonsten wird der Cache-Ausgang 3103 angelegt.
- Wie mit Bezug auf Fig. 33 bis 36 beschrieben wurde, kann die Hardware reduziert werden durch gleichzeitige Verarbeitung von mehreren Befehlen für einen Abschnitt und Bildung dieses Abschnittes als ein ROM. Da außerdem nur für den ROM- Abschnitt ein am besten geeigneter Aufbau durch Assembler erreicht werden kann, ergibt sich der Vorteil, daß es nicht notwendig ist, den Compiler zu entwickeln, der die gleichzeitige Verarbeitung von mehreren Befehlen betrifft. Darüber hinaus ist es durch Umschreiben des ROM-Abschnitts möglich, die Hochgeschwindigkeitsoperation für jede Anwendung umzusetzen und für jede Anwendung zu optimieren.
- Gemäß dieser Erfindung kann, da komplizierte Befehle in Basisbefehle zerlegt werden und mehrere Befehle in einem Ma schinenzyklus gleichzeitig gelesen und ausgeführt werden, eine Vielzahl von Arithmetikoperationseinheiten gleichzeitig betrieben werden und so die Verarbeitungskapazität erhöht werden.
- Da darüber hinaus die Befehle einfache Funktionen darstellen und so die Zahl von Pipeline-Stufen reduziert werden kann, kann der Overhead bei Verzweigung klein gemacht werden.
- Da darüber hinaus eine Vielzahl von Arithmetikoperationseinheiten parallel betrieben werden, kann die Verarbeitungszeit für komplizierte Verarbeitungen gesenkt werden.
Claims (5)
1. Datenprozessor mit
einer Befehlseinheit (103), die Befehle von einer
Speicherschnittstelle (100) empfängt,
einem Sortierer (102) zur Steuerung eines
Programmzählers (101) zum Lesen von Befehlen von der
Befehlseinheit (103),
mindestens zwei Befehlsregistern (104, 105) zum
Speichern von aus der Befehlseinheit (103) gelesenen ersten
und zweiten Befehlen,
einer Registerdatei (111) zum Speichern von Daten,
mindestens zwei arithmetischen Operationseinheiten
(110, 112), die entsprechende Daten aus der
Registerdatei (111) lesen und entsprechend aus den
Befehlsregistern (104, 105) gelesen Befehlen parallel
arithinetische Operationen daran ausführen,
wobei die Registerdatei (111)
mehrere Register (1708) zum Speichern von Daten, einen
ersten Datenbus zum Senden von Daten von jeder der
arithmetischen Operationseinheiten (110, 112) an die
Register (1708),
einen zweiten Datenbus zum Senden von Daten von jedem
der Register (1798) zu jeder der arithmetischen
Operationseinheiten (110, 112) und
mindestens zwei Busschalter (1702 bis 1705) zum
Übertragen des Ergebnisses einer arithmetischen
Operationseinheit an die andere arithmetische Operationseinheit
aufweist.
2. Datenprozessor nach Anspruch 1,
dadurch gekennzeichnet, daß
der erste und der zweite Datenbus zur Umgehung des
Registers (1708) durch mehrere Busschalter (1700 bis
1709) verbunden sind.
3. Datenprozessor nach Anspruch 1 oder 2,
dadurch gekennzeichnet, daß
das Register (1708) umgangen wird, wenn das durch ein
Bestimmungsfeld eines vorhergehenden Befehls
spezifizierte Register (1708) sofort für den nächsten Befehl
verwendet wird.
4. Datenprozessor nach den Ansprüchen 1 bis 3,
dadurch gekennzeichnet, daß
die Busschalter (1700 bis 1709) zum Verbinden eines
Ausgangs (129, 131) einer arithmetischen
Operationseinheit (110, 112) mit mindestens einem Eingang (125 bis
128) der anderen arithmetischen Operationseinheit (110,
112) vorgesehen sind.
5. Datenprozessor nach den Ansprüchen 1 bis 4,
dadurch gekennzeichnet, daß
der Busschalter (1702) betätigt wird, wenn ein
Bestimmungsregisterfeld (D) eines ersten Befehls mit einem
ersten Quellenregisterfeld (S1) eines zweiten Befehls
zusammenfällt.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP63283673A JP2810068B2 (ja) | 1988-11-11 | 1988-11-11 | プロセッサシステム、コンピュータシステム及び命令処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE68929215D1 DE68929215D1 (de) | 2000-06-29 |
DE68929215T2 true DE68929215T2 (de) | 2001-01-25 |
Family
ID=17668583
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE68928340T Expired - Fee Related DE68928340T2 (de) | 1988-11-11 | 1989-11-10 | Fliessband-Datenprozessor |
DE68929483T Expired - Fee Related DE68929483T2 (de) | 1988-11-11 | 1989-11-10 | Datenprozessor mit einer Befehlseinheit, die einen Cachespeicher und einen ROM aufweist. |
DE68929215T Expired - Fee Related DE68929215T2 (de) | 1988-11-11 | 1989-11-10 | Datenprozessor |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE68928340T Expired - Fee Related DE68928340T2 (de) | 1988-11-11 | 1989-11-10 | Fliessband-Datenprozessor |
DE68929483T Expired - Fee Related DE68929483T2 (de) | 1988-11-11 | 1989-11-10 | Datenprozessor mit einer Befehlseinheit, die einen Cachespeicher und einen ROM aufweist. |
Country Status (5)
Country | Link |
---|---|
US (3) | US5233694A (de) |
EP (3) | EP0368332B1 (de) |
JP (1) | JP2810068B2 (de) |
KR (2) | KR0149658B1 (de) |
DE (3) | DE68928340T2 (de) |
Families Citing this family (101)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5504932A (en) * | 1990-05-04 | 1996-04-02 | International Business Machines Corporation | System for executing scalar instructions in parallel based on control bits appended by compounding decoder |
DE69130588T2 (de) * | 1990-05-29 | 1999-05-27 | National Semiconductor Corp., Santa Clara, Calif. | Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür |
JP2834292B2 (ja) * | 1990-08-15 | 1998-12-09 | 株式会社日立製作所 | データ・プロセッサ |
JPH04111127A (ja) * | 1990-08-31 | 1992-04-13 | Toshiba Corp | 演算処理装置 |
JP2532300B2 (ja) * | 1990-10-17 | 1996-09-11 | 三菱電機株式会社 | 並列処理装置における命令供給装置 |
JP2682232B2 (ja) * | 1990-11-21 | 1997-11-26 | 松下電器産業株式会社 | 浮動小数点演算処理装置 |
EP0488819B1 (de) * | 1990-11-30 | 1999-01-13 | Kabushiki Kaisha Toshiba | Ausführungsvorrichtung für bedingte Verzweigungsbefehle |
RU1804645C (ru) * | 1991-03-27 | 1993-03-23 | Институт Точной Механики И Вычислительной Техники Им.С.А.Лебедева | Центральный процессор |
US5488729A (en) * | 1991-05-15 | 1996-01-30 | Ross Technology, Inc. | Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution |
JP2984463B2 (ja) * | 1991-06-24 | 1999-11-29 | 株式会社日立製作所 | マイクロコンピュータ |
JP3105197B2 (ja) | 1991-06-24 | 2000-10-30 | 株式会社日立製作所 | 除算回路及び除算方法 |
EP0547240B1 (de) * | 1991-07-08 | 2000-01-12 | Seiko Epson Corporation | Risc-mikroprozessorarchitektur mit schnellem unterbrechungs- und ausnahmemodus |
EP1526446A3 (de) * | 1991-07-08 | 2007-04-04 | Seiko Epson Corporation | RISC-Prozessor mit erweiterbarer Architektur |
US5539911A (en) * | 1991-07-08 | 1996-07-23 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution |
US5493687A (en) | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
US5961629A (en) * | 1991-07-08 | 1999-10-05 | Seiko Epson Corporation | High performance, superscalar-based computer system with out-of-order instruction execution |
JP2875909B2 (ja) * | 1991-07-12 | 1999-03-31 | 三菱電機株式会社 | 並列演算処理装置 |
JPH0546386A (ja) * | 1991-08-13 | 1993-02-26 | Hitachi Ltd | データプロセツサ |
GB9123271D0 (en) * | 1991-11-02 | 1991-12-18 | Int Computers Ltd | Data processing system |
EP0551090B1 (de) * | 1992-01-06 | 1999-08-04 | Hitachi, Ltd. | Rechner mit einer Parallelverarbeitungsfähigkeit |
GB2263565B (en) * | 1992-01-23 | 1995-08-30 | Intel Corp | Microprocessor with apparatus for parallel execution of instructions |
DE4237417C2 (de) * | 1992-03-25 | 1997-01-30 | Hewlett Packard Co | Datenverarbeitungssystem |
EP0636256B1 (de) | 1992-03-31 | 1997-06-04 | Seiko Epson Corporation | Befehlsablauffolgeplanung von einem risc-superskalarprozessor |
US5438668A (en) | 1992-03-31 | 1995-08-01 | Seiko Epson Corporation | System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer |
US5371864A (en) * | 1992-04-09 | 1994-12-06 | International Business Machines Corporation | Apparatus for concurrent multiple instruction decode in variable length instruction set computer |
EP0638183B1 (de) | 1992-05-01 | 1997-03-05 | Seiko Epson Corporation | Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor. |
US5416913A (en) * | 1992-07-27 | 1995-05-16 | Intel Corporation | Method and apparatus for dependency checking in a multi-pipelined microprocessor |
US6735685B1 (en) * | 1992-09-29 | 2004-05-11 | Seiko Epson Corporation | System and method for handling load and/or store operations in a superscalar microprocessor |
KR100248903B1 (ko) * | 1992-09-29 | 2000-03-15 | 야스카와 히데아키 | 수퍼스칼라마이크로프로세서에서의 적재 및 저장연산처리방법 및 시스템 |
DE69330889T2 (de) | 1992-12-31 | 2002-03-28 | Seiko Epson Corp., Tokio/Tokyo | System und Verfahren zur Änderung der Namen von Registern |
US5628021A (en) | 1992-12-31 | 1997-05-06 | Seiko Epson Corporation | System and method for assigning tags to control instruction processing in a superscalar processor |
JP3182591B2 (ja) * | 1993-01-20 | 2001-07-03 | 株式会社日立製作所 | マイクロプロセッサ |
US5416911A (en) * | 1993-02-02 | 1995-05-16 | International Business Machines Corporation | Performance enhancement for load multiple register instruction |
US5673409A (en) * | 1993-03-31 | 1997-09-30 | Vlsi Technology, Inc. | Self-defining instruction size |
US5560025A (en) * | 1993-03-31 | 1996-09-24 | Intel Corporation | Entry allocation apparatus and method of same |
US5463748A (en) | 1993-06-30 | 1995-10-31 | Intel Corporation | Instruction buffer for aligning instruction sets using boundary detection |
CA2123442A1 (en) * | 1993-09-20 | 1995-03-21 | David S. Ray | Multiple execution unit dispatch with instruction dependency |
US5878245A (en) | 1993-10-29 | 1999-03-02 | Advanced Micro Devices, Inc. | High performance load/store functional unit and data cache |
DE69434669T2 (de) * | 1993-10-29 | 2006-10-12 | Advanced Micro Devices, Inc., Sunnyvale | Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge |
EP0651332B1 (de) * | 1993-10-29 | 2001-07-18 | Advanced Micro Devices, Inc. | Linearadressierter Mikroprozessorcachespeicher |
EP0651320B1 (de) * | 1993-10-29 | 2001-05-23 | Advanced Micro Devices, Inc. | Superskalarbefehlsdekoder |
US5630082A (en) * | 1993-10-29 | 1997-05-13 | Advanced Micro Devices, Inc. | Apparatus and method for instruction queue scanning |
US5689672A (en) * | 1993-10-29 | 1997-11-18 | Advanced Micro Devices, Inc. | Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions |
US5604909A (en) | 1993-12-15 | 1997-02-18 | Silicon Graphics Computer Systems, Inc. | Apparatus for processing instructions in a computing system |
US5974534A (en) * | 1994-02-14 | 1999-10-26 | Hewlett-Packard Company | Predecoding and steering mechanism for instructions in a superscalar processor |
US5586277A (en) * | 1994-03-01 | 1996-12-17 | Intel Corporation | Method for parallel steering of fixed length fields containing a variable length instruction from an instruction buffer to parallel decoders |
US5600806A (en) * | 1994-03-01 | 1997-02-04 | Intel Corporation | Method and apparatus for aligning an instruction boundary in variable length macroinstructions with an instruction buffer |
US5566298A (en) * | 1994-03-01 | 1996-10-15 | Intel Corporation | Method for state recovery during assist and restart in a decoder having an alias mechanism |
US5537629A (en) * | 1994-03-01 | 1996-07-16 | Intel Corporation | Decoder for single cycle decoding of single prefixes in variable length instructions |
US5630083A (en) * | 1994-03-01 | 1997-05-13 | Intel Corporation | Decoder for decoding multiple instructions in parallel |
US5559974A (en) * | 1994-03-01 | 1996-09-24 | Intel Corporation | Decoder having independently loaded micro-alias and macro-alias registers accessible simultaneously by one micro-operation |
US5673427A (en) * | 1994-03-01 | 1997-09-30 | Intel Corporation | Packing valid micro operations received from a parallel decoder into adjacent locations of an output queue |
US5608885A (en) * | 1994-03-01 | 1997-03-04 | Intel Corporation | Method for handling instructions from a branch prior to instruction decoding in a computer which executes variable-length instructions |
US5758116A (en) * | 1994-09-30 | 1998-05-26 | Intel Corporation | Instruction length decoder for generating output length indicia to identity boundaries between variable length instructions |
US5901302A (en) * | 1995-01-25 | 1999-05-04 | Advanced Micro Devices, Inc. | Superscalar microprocessor having symmetrical, fixed issue positions each configured to execute a particular subset of instructions |
US6237082B1 (en) | 1995-01-25 | 2001-05-22 | Advanced Micro Devices, Inc. | Reorder buffer configured to allocate storage for instruction results corresponding to predefined maximum number of concurrently receivable instructions independent of a number of instructions received |
JP3180175B2 (ja) * | 1995-02-13 | 2001-06-25 | 株式会社日立製作所 | 命令レベルの並列処理制御方法およびプロセッサ |
US5737550A (en) * | 1995-03-28 | 1998-04-07 | Advanced Micro Devices, Inc. | Cache memory to processor bus interface and method thereof |
US5859991A (en) * | 1995-06-07 | 1999-01-12 | Advanced Micro Devices, Inc. | Parallel and scalable method for identifying valid instructions and a superscalar microprocessor including an instruction scanning unit employing the method |
US5867701A (en) * | 1995-06-12 | 1999-02-02 | Intel Corporation | System for inserting a supplemental micro-operation flow into a macroinstruction-generated micro-operation flow |
US5926642A (en) | 1995-10-06 | 1999-07-20 | Advanced Micro Devices, Inc. | RISC86 instruction set |
US5706489A (en) * | 1995-10-18 | 1998-01-06 | International Business Machines Corporation | Method for a CPU to utilize a parallel instruction execution processing facility for assisting in the processing of the accessed data |
US5796974A (en) * | 1995-11-07 | 1998-08-18 | Advanced Micro Devices, Inc. | Microcode patching apparatus and method |
US5815724A (en) * | 1996-03-29 | 1998-09-29 | Intel Corporation | Method and apparatus for controlling power consumption in a microprocessor |
US6131152A (en) * | 1996-05-15 | 2000-10-10 | Philips Electronics North America Corporation | Planar cache layout and instruction stream therefor |
WO1997043715A2 (en) * | 1996-05-15 | 1997-11-20 | Philips Electronics N.V. | Processor with an instruction cache |
US5862398A (en) * | 1996-05-15 | 1999-01-19 | Philips Electronics North America Corporation | Compiler generating swizzled instructions usable in a simplified cache layout |
JPH1011289A (ja) * | 1996-06-19 | 1998-01-16 | Mitsubishi Electric Corp | 並列処理プロセッサにおける命令数拡張方法および並列処理プロセッサ |
US5890219A (en) * | 1996-11-27 | 1999-03-30 | Emc Corporation | Redundant writing of data to cached storage system |
US5884055A (en) * | 1996-11-27 | 1999-03-16 | Emc Corporation | Method and apparatus including a shared resource and multiple processors running a common control program accessing the shared resource |
US5890207A (en) * | 1996-11-27 | 1999-03-30 | Emc Corporation | High performance integrated cached storage device |
US5852727A (en) * | 1997-03-10 | 1998-12-22 | Advanced Micro Devices, Inc. | Instruction scanning unit for locating instructions via parallel scanning of start and end byte information |
TW373149B (en) | 1997-07-02 | 1999-11-01 | Matsushita Electric Ind Co Ltd | Program control method |
US6467035B2 (en) * | 1997-09-08 | 2002-10-15 | Agere Systems Guardian Corp. | System and method for performing table look-ups using a multiple data fetch architecture |
JP2954119B2 (ja) * | 1997-11-26 | 1999-09-27 | 日本電気株式会社 | 命令実行サイクル可変回路 |
DE19802364A1 (de) * | 1998-01-22 | 1999-07-29 | Siemens Ag | Vorrichtung und Verfahren zur Steuerung von Prozessen auf einem Computersystem |
DE19819531C1 (de) * | 1998-04-30 | 1999-12-02 | Siemens Ag | RISC-Prozessor mit einer Debug-Schnittstelleneinheit |
US6233690B1 (en) * | 1998-09-17 | 2001-05-15 | Intel Corporation | Mechanism for saving power on long latency stalls |
US6668316B1 (en) * | 1999-02-17 | 2003-12-23 | Elbrus International Limited | Method and apparatus for conflict-free execution of integer and floating-point operations with a common register file |
EP1050808B1 (de) * | 1999-05-03 | 2008-04-30 | STMicroelectronics S.A. | Befehlausgabe in einem Rechner |
EP1050809A1 (de) * | 1999-05-03 | 2000-11-08 | STMicroelectronics SA | Befehlsabhängigkeit in einem Rechner |
US6442677B1 (en) * | 1999-06-10 | 2002-08-27 | Advanced Micro Devices, Inc. | Apparatus and method for superforwarding load operands in a microprocessor |
US7149878B1 (en) * | 2000-10-30 | 2006-12-12 | Mips Technologies, Inc. | Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values |
US7711926B2 (en) | 2001-04-18 | 2010-05-04 | Mips Technologies, Inc. | Mapping system and method for instruction set processing |
US6826681B2 (en) | 2001-06-18 | 2004-11-30 | Mips Technologies, Inc. | Instruction specified register value saving in allocated caller stack or not yet allocated callee stack |
US7107439B2 (en) * | 2001-08-10 | 2006-09-12 | Mips Technologies, Inc. | System and method of controlling software decompression through exceptions |
EP1387253B1 (de) * | 2002-07-31 | 2017-09-20 | Texas Instruments Incorporated | Dynamische Übersetzung und Befehlsausführung in einem Prozessor |
US7366352B2 (en) * | 2003-03-20 | 2008-04-29 | International Business Machines Corporation | Method and apparatus for performing fast closest match in pattern recognition |
US7698539B1 (en) | 2003-07-16 | 2010-04-13 | Banning John P | System and method of instruction modification |
US6996916B2 (en) * | 2004-03-09 | 2006-02-14 | Helen Of Troy Limited | Variable ion hair styling appliances |
US20050224091A1 (en) * | 2004-04-08 | 2005-10-13 | Helen Of Troy Limited | Ion curling iron and straightener |
WO2006051962A1 (ja) * | 2004-11-12 | 2006-05-18 | Justsystems Corporation | データ処理装置およびデータ処理方法 |
DE602006013810D1 (de) | 2005-04-22 | 2010-06-02 | Mitsubishi Chem Corp | Aus biomasseressourcen gewonnener polyester und herstellungsverfahren dafür |
ATE466331T1 (de) * | 2006-09-06 | 2010-05-15 | Silicon Hive Bv | Datenverarbeitungsschaltung mit mehreren anweisungsarten, verfahren zum betrieb einer solchen datenschaltung und scheduling-verfahren für eine solche datenschaltung |
US9513959B2 (en) * | 2007-11-21 | 2016-12-06 | Arm Limited | Contention management for a hardware transactional memory |
US20090138890A1 (en) * | 2007-11-21 | 2009-05-28 | Arm Limited | Contention management for a hardware transactional memory |
SE536462C2 (sv) * | 2011-10-18 | 2013-11-26 | Mediatek Sweden Ab | Digital signalprocessor och basbandskommunikationsanordning |
JP6106499B2 (ja) * | 2013-04-11 | 2017-03-29 | 株式会社日立製作所 | データ反映方法 |
US11599358B1 (en) | 2021-08-12 | 2023-03-07 | Tenstorrent Inc. | Pre-staged instruction registers for variable length instruction set machine |
US12067395B2 (en) | 2021-08-12 | 2024-08-20 | Tenstorrent Inc. | Pre-staged instruction registers for variable length instruction set machine |
KR102449203B1 (ko) | 2022-03-08 | 2022-09-29 | 주식회사 제이비티 | 안전상태정보 관리 방법 |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3573853A (en) * | 1968-12-04 | 1971-04-06 | Texas Instruments Inc | Look-ahead control for operation of program loops |
US3614745A (en) * | 1969-09-15 | 1971-10-19 | Ibm | Apparatus and method in a multiple operand stream computing system for identifying the specification of multitasks situations and controlling the execution thereof |
US3771138A (en) * | 1971-08-31 | 1973-11-06 | Ibm | Apparatus and method for serializing instructions from two independent instruction streams |
US4521850A (en) * | 1977-12-30 | 1985-06-04 | Honeywell Information Systems Inc. | Instruction buffer associated with a cache memory unit |
JPS6043535B2 (ja) | 1979-12-29 | 1985-09-28 | 富士通株式会社 | 情報処理装置 |
US4616331A (en) * | 1980-02-25 | 1986-10-07 | Tsuneo Kinoshita | Information processing system consisting of an arithmetic control unit formed into a one-chip typed by application of a highly-integrated semiconductor device |
JPS6028015B2 (ja) * | 1980-08-28 | 1985-07-02 | 日本電気株式会社 | 情報処理装置 |
US4437149A (en) | 1980-11-17 | 1984-03-13 | International Business Machines Corporation | Cache memory architecture with decoding |
EP0072373B1 (de) * | 1981-08-19 | 1986-03-19 | International Business Machines Corporation | Mikroprozessor |
EP0082903B1 (de) * | 1981-12-29 | 1987-05-13 | International Business Machines Corporation | Steuergerät mit Anschlussmöglichkeit an zwei Speicher unterschiedlicher Geschwindigkeit |
JPS5932045A (ja) * | 1982-08-16 | 1984-02-21 | Hitachi Ltd | 情報処理装置 |
US4928223A (en) * | 1982-10-06 | 1990-05-22 | Fairchild Semiconductor Corporation | Floating point microprocessor with directable two level microinstructions |
US4546428A (en) * | 1983-03-08 | 1985-10-08 | International Telephone & Telegraph Corporation | Associative array with transversal horizontal multiplexers |
US4594655A (en) * | 1983-03-14 | 1986-06-10 | International Business Machines Corporation | (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions |
JPS59186062A (ja) * | 1983-04-07 | 1984-10-22 | Nec Corp | 分散形プロセツサシステム |
JPS6015746A (ja) * | 1983-07-08 | 1985-01-26 | Hitachi Ltd | デ−タ処理装置 |
JPS60120439A (ja) * | 1983-12-05 | 1985-06-27 | Nec Corp | 演算処理装置 |
JPS60136872A (ja) | 1983-12-26 | 1985-07-20 | Hitachi Ltd | ベクトル処理装置 |
US4599708A (en) * | 1983-12-30 | 1986-07-08 | International Business Machines Corporation | Method and structure for machine data storage with simultaneous write and read |
AU553416B2 (en) * | 1984-02-24 | 1986-07-17 | Fujitsu Limited | Pipeline processing |
US4873629A (en) * | 1984-06-20 | 1989-10-10 | Convex Computer Corporation | Instruction processing unit for computer |
US4620275A (en) * | 1984-06-20 | 1986-10-28 | Wallach Steven J | Computer system |
JPS619734A (ja) * | 1984-06-26 | 1986-01-17 | Nec Corp | プロセツサ制御方式 |
US4766564A (en) * | 1984-08-13 | 1988-08-23 | International Business Machines Corporation | Dual putaway/bypass busses for multiple arithmetic units |
US4677545A (en) * | 1984-10-12 | 1987-06-30 | American Telephone And Telegraph Company | Microprocessor having macro-rom and main program queues |
US4794517A (en) * | 1985-04-15 | 1988-12-27 | International Business Machines Corporation | Three phased pipelined signal processor |
US4789925A (en) * | 1985-07-31 | 1988-12-06 | Unisys Corporation | Vector data logical usage conflict detection |
DE3751503T2 (de) | 1986-03-26 | 1996-05-09 | Hitachi Ltd | Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen. |
US4722050A (en) * | 1986-03-27 | 1988-01-26 | Hewlett-Packard Company | Method and apparatus for facilitating instruction processing of a digital computer |
US4825360A (en) * | 1986-07-30 | 1989-04-25 | Symbolics, Inc. | System and method for parallel processing with mostly functional languages |
US4766566A (en) * | 1986-08-18 | 1988-08-23 | International Business Machines Corp. | Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing |
JPS6373332A (ja) | 1986-09-16 | 1988-04-02 | Nec Corp | マイクロプログラム制御方式 |
JPS63131230A (ja) * | 1986-11-21 | 1988-06-03 | Hitachi Ltd | 情報処理装置 |
JPH0810430B2 (ja) | 1986-11-28 | 1996-01-31 | 株式会社日立製作所 | 情報処理装置 |
US4811296A (en) * | 1987-05-15 | 1989-03-07 | Analog Devices, Inc. | Multi-port register file with flow-through of data |
US5101341A (en) * | 1988-08-25 | 1992-03-31 | Edgcore Technology, Inc. | Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO |
US5072364A (en) * | 1989-05-24 | 1991-12-10 | Tandem Computers Incorporated | Method and apparatus for recovering from an incorrect branch prediction in a processor that executes a family of instructions in parallel |
JP2550213B2 (ja) | 1989-07-07 | 1996-11-06 | 株式会社日立製作所 | 並列処理装置および並列処理方法 |
JPH03288246A (ja) | 1990-04-04 | 1991-12-18 | Matsushita Electric Ind Co Ltd | 命令キャッシュメモリ |
US5214763A (en) | 1990-05-10 | 1993-05-25 | International Business Machines Corporation | Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism |
DE69130588T2 (de) | 1990-05-29 | 1999-05-27 | National Semiconductor Corp., Santa Clara, Calif. | Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür |
-
1988
- 1988-11-11 JP JP63283673A patent/JP2810068B2/ja not_active Expired - Lifetime
-
1989
- 1989-11-08 US US07/433,368 patent/US5233694A/en not_active Expired - Lifetime
- 1989-11-10 KR KR1019890016275A patent/KR0149658B1/ko not_active IP Right Cessation
- 1989-11-10 DE DE68928340T patent/DE68928340T2/de not_active Expired - Fee Related
- 1989-11-10 EP EP89120881A patent/EP0368332B1/de not_active Expired - Lifetime
- 1989-11-10 EP EP97103969A patent/EP0782071B1/de not_active Expired - Lifetime
- 1989-11-10 EP EP99122100A patent/EP0996057B1/de not_active Expired - Lifetime
- 1989-11-10 DE DE68929483T patent/DE68929483T2/de not_active Expired - Fee Related
- 1989-11-10 DE DE68929215T patent/DE68929215T2/de not_active Expired - Fee Related
-
1992
- 1992-11-20 US US07/979,772 patent/US6256726B1/en not_active Expired - Lifetime
-
1998
- 1998-03-10 KR KR1019980007835A patent/KR0160602B1/ko not_active IP Right Cessation
-
2001
- 2001-05-14 US US09/853,769 patent/US7424598B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP0782071A3 (de) | 1997-07-30 |
DE68929215D1 (de) | 2000-06-29 |
KR0160602B1 (ko) | 1999-10-01 |
US20010021970A1 (en) | 2001-09-13 |
JPH02130634A (ja) | 1990-05-18 |
DE68929483T2 (de) | 2004-07-01 |
EP0368332A3 (de) | 1992-07-15 |
DE68928340T2 (de) | 1998-02-12 |
KR900008394A (ko) | 1990-06-04 |
US5233694A (en) | 1993-08-03 |
DE68928340D1 (de) | 1997-10-30 |
KR0149658B1 (ko) | 1998-10-15 |
EP0782071A2 (de) | 1997-07-02 |
EP0368332A2 (de) | 1990-05-16 |
US6256726B1 (en) | 2001-07-03 |
EP0782071B1 (de) | 2000-05-24 |
EP0996057B1 (de) | 2003-08-13 |
DE68929483D1 (de) | 2003-09-18 |
US7424598B2 (en) | 2008-09-09 |
EP0368332B1 (de) | 1997-09-24 |
JP2810068B2 (ja) | 1998-10-15 |
EP0996057A1 (de) | 2000-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE68929215T2 (de) | Datenprozessor | |
DE69129569T2 (de) | Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen | |
DE69032812T2 (de) | Vorrichtung und Verfahren zur parallelen Verarbeitung | |
DE69833008T2 (de) | Prozessor mit instruktionskodierung mittels eines schablonenfeldes | |
DE69701141T2 (de) | Multithreaded mikroprozessor ausgestaltet zur ausführung von unterbrechungsverarbeitungsroutinen als threads | |
DE3750625T2 (de) | Datenverarbeitungssystem mit zwei Ausführungseinheiten. | |
DE4206062C2 (de) | Pipelineverarbeitung von Instruktionen | |
DE3751474T2 (de) | Verzweigungsstrom-Koprozessor. | |
DE68927492T2 (de) | Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten | |
DE69230057T2 (de) | Risc mikroprozessorarchitektur mit mehrere registersätze von unterschiedlichen typen | |
DE69126166T2 (de) | Programmierbare Steuerungsvorrichtung | |
DE69115344T2 (de) | Vorverarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher | |
DE3685913T2 (de) | Vektorenverarbeitung. | |
DE3686991T2 (de) | Mechanismus fuer parallele speicherdatenabholung und befehlsausfuehrung in einem prozessor mit reduziertem befehlssatz. | |
DE68928812T2 (de) | Vorrichtung zur Auflösung von einer variablen Anzahl von möglichen Speicherzugriffskonflikten in einem Pipeline-Rechnersystem und Verfahren dazu | |
DE69131956T2 (de) | Verarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher | |
DE69907955T2 (de) | Globale und locale registersegmentierung in einem vliw prozessor | |
DE68924546T2 (de) | Verfahren und Vorrichtung zur Ausführung von Befehlen für ein Vektorverarbeitungssystem. | |
DE69133571T2 (de) | Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen | |
DE69032174T2 (de) | Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen | |
DE69033131T2 (de) | Logikvorrichtung und Verfahren zur Verwaltung einer Befehlseinheit in einer Pipeline-Verarbeitungseinheit | |
DE3650602T2 (de) | Datenverarbeitungssystem | |
DE69030931T2 (de) | Mehrfachsequenzprozessorsystem | |
DE112015005597T5 (de) | Verknüpfungsfähige Parallelausführungs-Schicht einer Ausgabewarteschlange für einen Prozessor | |
DE69418146T2 (de) | Temporärer Registersatz für einen superpipeline-superskalaren Prozessor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |