DE69305366T2 - System und verfahren zum kennzeichnen von befehlen zur steuerung der befehlsausführung - Google Patents
System und verfahren zum kennzeichnen von befehlen zur steuerung der befehlsausführungInfo
- Publication number
- DE69305366T2 DE69305366T2 DE69305366T DE69305366T DE69305366T2 DE 69305366 T2 DE69305366 T2 DE 69305366T2 DE 69305366 T DE69305366 T DE 69305366T DE 69305366 T DE69305366 T DE 69305366T DE 69305366 T2 DE69305366 T2 DE 69305366T2
- Authority
- DE
- Germany
- Prior art keywords
- instruction
- instructions
- tag
- tags
- queue
- 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 - Lifetime
Links
- 238000000034 method Methods 0.000 title claims description 17
- 238000002372 labelling Methods 0.000 title 1
- 238000012544 monitoring process Methods 0.000 claims description 12
- 238000004064 recycling Methods 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 2
- 230000003542 behavioural effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000001360 synchronised effect Effects 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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/30141—Implementation provisions of register files, e.g. ports
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order 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/3854—Instruction completion, e.g. retiring, committing or graduating
-
- 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)
Description
- Die vorliegende Erfindung betrifft allgemein superskalare Computer und insbesondere ein System oder ein Verfahren zum Verwenden von Etiketten bzw. Tags, um die Befehlsausführung in einem superskalaren Computer mit verringertem Befehlssatz (RISC) zu steuern.
- Eine Technik die Befehlsreihenfolge beizubehalten, verwendet einen Neuordnungspuffer, um Abhängigkeitsinformationen in der richtigen Reihenfolge zu halten. Diese Technik, die von Johnson in "Superscalar Microprocessor Design", Prentice Hall, 1991, Seiten 48-50 und 139-142 beschrieben ist, hält die Abhängigkeitsinformationen in dem Neuordnungspuffer aufrecht, so daß diese Reihenfolge nicht in dem Befehlsfenster aufrecht erhalten werden muß. Die Eingaben in den Neuordnungspuffer werden am Anfang gemäß einer zuersthinein-zuerst-heraus Warteschlange zugeordnet und die Zuordnung wird aufgehoben, wenn Ergebnisse in die Registerdatei geschrieben werden.
- Wenn ein Befehl dekodiert wird, wird sein Ergebniswert einer Neuordnungspufferspeicherstelle zugeordnet und sein Zielregister wird erneut für diese Speicherstelle umbenannt. Eine Etikette wird erzeugt, um dieses Ergebnis zu kennzeichnen und die Etikette wird an der zugeordneten Neuordnungspufferspeicherstelle gespeichert. Wenn sich ein nachfolgender Befehl auf das umbenannte Zielregister bezieht, erhält der Befehl den Wert, der in dem Neuordnungspuffer gespeichert ist. Wenn ein Befehl dekodiert wird, werden die Registernummern seiner Quellenoperanden verwendet, um auf den Neuordnungspuffer und die Registerdatei zuzugreifen. Der Neuordnungspuffer ist inhaltsmäßig adressierbar und ein assoziatives Nachschlagen wird verwendet, den geeigneten Wert wieder zu gewinnen. Wenn der Neuordnungspuffer eine passende Eingabe hat, wird der Wert bei dieser Eingabe als der Quellenoperand ausgewählt.
- Prozessoren, die in herkömmlichen Computersystemen verwendet werden, führen typischerweise Programmbefehle, jeweils einen zur Zeit, in einer sequentiellen Reihenfolge aus. Der Vorgang, einen einzigen Befehl auszuführen, schließt mehrere sequentielle Schritte ein. Der erste Schritt enthält allgemein, den Befehl von einer Speichereinrichtung zu holen. Der zweite Schritt enthält allgemein das Dekodieren des Befehls und das Assemblieren von irgendwelchen Operanden. Der dritte Schritt enthält allgemein das Ausfuhren des Befehls und das Speichern der Ergebnisse. Einige Prozessoren sind konstruiert, jeden Schritt in einem einzelnen Zyklus des Prozessortakts durchzuführen. Alternativ kann der Prozessor konstruiert werden, so daß die Anzahl der Prozessortaktzyklen pro Schritt von dem besonderen Befehl abhängt.
- Moderne Computer verwenden allgemein eine Technik, die als Fließbandverarbeitung bekannt ist, um die Leistung zu verbessern. Die Fließbandverarbeitung beinhaltet das Überlappen der sequentiellen Schritte des Ausführungsvorgangs. Beispielsweise kann, während der Prozessor den Ausführungsschritt für einen Befehl durchführt, er gleichzeitig den Dekodierungsschritt für einen zweiten Befehl durchführen und das Holen eines dritten Befehls ausführen. Die Fließbandverarbeitung kann somit die Ausführungszeit für eine Reihe von Befehlen verringern. Prozessoren mit Superfließbandverarbeitung versuchen, die Leistung weiter zu verbessern, indem die Unterschritte der drei oben erörterten sequentiellen Schritte überlappt werden.
- Eine andere Technik zum Verbessern der Leistung beinhaltet, mehr als einen Befehl parallel, gleichzeitig auszuführen. Prozessoren, die diese Technik verwenden, werden allgemein als Superskalar-Prozessoren bezeichnet. Die Fähigkeit eines Superskalar-Prozessors, zwei oder mehrere Befehle gleichzeitig auszuführen, hängt von den besonderen Befehlen ab, die ausgeführt werden. Beispielsweise können zwei Befehle, die beide die Benutzung desselben, begrenzten Prozessor- Betriebsmittels (wie eine Fließkommaeinheit) verlangen, nicht gleizeitig ausgeführt werden. Diese Art Konflikt ist als ein Betriebsmittelkonflikt bekannt. Des weiteren kann ein Befehl, der von dem Ergebnis abhängt, das durch die Ausführung eines vorhergehenden Befehls erzeugt wird, nicht mit diesem vorhergehenden Befehl gebündelt werden. Von dem Befehl, der von dem Ergebnis des vorhergenden Befehls abhängt, wird gesagt, daß er eine Datenabhängigkeit von dem ersten Befehl hat. Ähnlich kann ein Befehl eine verfahrensmäßige Abhängigkeit von einem vorhergehenden Befehl haben, was verhindert, daß die zwei Befehle gleichzeitig ausgeführt werden.
- Somit sucht ein Superskalar-Prozessor, mehr als einen Befehl zur Zeit auszuführen. Um dies zu machen, muß ein Prozessor ein System zum Ausführen mehrerer Befehle enthalten, die eine Ausführungseinheit genannt wird (beispielsweise eine Fließkommaeinheit und eine Ganzzahleinheit, usw.). Der Ausführungseinheit muß eine Gruppe von Befehlen zugeführt werden, die sie in der nahen Zukunft ausführen soll. Diese Gruppe von Befehlen werden typischerweise in einem sogenannten "Befehlsfenster" angeordnet. Das Fenster liefert einen "Schnappschuß" eines Befehlsprogramms.
- Das oben erwähnte Fenster ist normalerweise in einer Befehlsholeinheit angeordnet. Die Befehlsholeinheit holt eine Gruppe von Befehlen aus einem Speicher, dekodiert die Befehle und schickt sie zu einer Superskalar-Einheit. Die Superskalar-Einheit gibt die Befehle an die verschiedenen Funktionseinheiten aus. Die Superskalar-Einheit benötigt Informationen, die zeigen, welches der Betriebsmittel des Mikroprozessors den Befehl verwendet (beispielsweise Laden/Speichern), die Namen von Registern, von wo Befehlseinegaben herkommen (beispielsweise die Registerdatei der Ganzzahleinheit) und wohin ihr Ausgang geht (beispielsweise Registerdatei der Fließkommaeinheit), Informationen, die angeben, welche Funktion den Befehl ausführt (beispielsweise addieren, multiplizieren), usw.. Als ein Ergebnis der Kenntnis dieser Informationen teilt, sobald die Befehle vollständig sind, die Superskalar-Einheit der Befehlsabrufeinheit mit, sie von dem Fenster zu entfernen und neue Befehle hinzuzufügen, die ihren Platz einnehmen.
- Gegenwärtige Konstruktionen verwenden ein Befehlsfenster, das eine zuerst-hinein-zuerst-heraus Warteschlange (FIFO) verwendet. Die Daten gemäß der zuerst-hinein-zuerst-heraus Warteschlange können nur eine "feste Größe" vorwärtsbefördert werden. Beispielsweise kann ein Befehlsfenster vier Befehle (I0-I3) enthalten und mag in Gruppen von vier geändert werden. In diesem Fall werden, nachdem die Befehle I0, I1, I2 und I3 ausgeführt worden sind, von dem Fenster entfernt und vier weitere Befehle werden in das Fenster vorwärtsbefördert. Die Superskalar-Einheit kann ohne weiteres dem Fortlauf der Befehle durch das Fenster folgen, da sich das Fenster um eine feste Größe jedesmal ändert, wenn eine Gruppe von Befehlen abgeschlossen ist.
- Fenster mit einer festen Weiterbewegung haben einige Nachteile. Ein Befehl kann die Gruppe von Befehlen verzögern, von dem Fenster entfernt zu werden. Wenn beispielsweise I0, I1, I2 Befehle sind, die alle in einem Zyklus ausgeführt werden, und I3 ein Befehl ist, der viele Zyklen benötigt, um ausgeführt zu werden, dann müssen I0, I1 und I2 in dem Fenster bleiben, selbst nachdem sie abgeschlossen worden sind, bis I3 seine Ausführung abschließt, statt aus der zuerst-hinein-zuerst-heraus Warteschlange herausgestoßen und durch drei neue Befehle ersetzt zu werden. Dies unterbricht den Befehlsstrom (das heißt ist ein Engpaß) und neigt dazu, die Leistung zu beschränken.
- Eine Lösung für Fenster mit fester Fortbewegung (FIFO) ist ein Befehlsfenster, das um eine veränderbare Größe fortbewegt werden kann. Dies würde erlauben, daß Befehle von dem Fenster unmittelbar, nachdem sie ausgeführt worden sind, entfernt werden. Die Befehlsausführung ist viel komplexer, wenn ein Fenster mit veränderbarer Fortbewegung verwendet wird, da ein Befehl an mehreren Plätzen in der zuerst-hinein-zuerst-heraus Warteschlange angeordnet sein kann. Wenn beispielsweise I1 während desselben Zyklus ausgeführt wird, bei dem I0 fortgeht (abgeschlossen ist), dann wird im nächsten Zyklus I0 aus der zuerst-hinein-zuerst-heraus Warteschlange herausgestoßen, und I1 bewegt sich in den Schlitz von I0 in der zuerst-hinein-zuerst-heraus Warteschlange (wo I0 und I1 Schlitzstellen in einer zuerst-hinein-zuerst-heraus Warteschlange bezeichnen und nicht die Befehlsprogrammreihenfolge) Dies Superskalar-Einheit muß wissen, daß der neue I0 einmal I1 war, so daß sie Befehle zurückziehen kann, wenn sie ausgeführt sind. Und die Ausführungseinheit kann entsprechende Ergebnisse in richtige Registerdateiadressen der Funktionseinheiten schreiben.
- Obgleich dies die Leistung verbessern würde, gibt es Schwierigkeiten, die mit diesem System verbunden sind. Typischerweise ist es notwendig, eine große Hauptwarteschlange zu verwenden (üblicherweise in der Superskalar-Einheit), die die Befehle von der Befehlsabrufeinheit enthält. Des weiteren müßten mehrere andere zentral angeordnete Warteschlangen die dekodierten Informationen enthalten, die mit jedem Befehl verbunden sind, der in der Hauptwarteschlange angeordnet ist (das heißt, eine Betriebsmittelschlange, eine Zielregisterschlange, usw.). Die Hauptwarteschlange und die Warteschlangen, die die dekodierten Informationen enthalten, müßten sich alle parallel vorwärtsbewegen, um die Spur der Befehle zu verfolgen (das heißt, wohin sie geschickt werden sollen, wenn sie ausgeführt werden, usw.).
- Gegenwärtig ist die Idee, mehrere Warteschlangen zu verwenden, um Befehle zu enthalten, aus vielen Gründen von Nachteil, die einschließen: eine große Menge an Chipbereichsbetriebsmitteln sind für eine Mehrzahl von Warteschlangen bestimmt; es gibt nicht so viel Flexibilität beim Konstruieren eines Systems mit mehr als einer Warteschlange; und die Steuerungslogik, Daten in Warteschlangen zu lenken, ist kompliziert und nicht flexibel.
- Was deshalb benötigt wird, ist eine Technik, Befehle "zu verfolgen" oder zu überwachen, nachdem sie dekodiert worden sind. Das System muß einen kleinen Bereich auf einem Chip verlangen; soll flexibel sein und muß fähig sein, die Befehle richtig zu überwachen, wenn sie sich durch ein Befehlsfenster mit veränderbarer Fortbewegung bewegen.
- Die vorliegende Erfindung ist auf eine Technik zum Überwachen der parallelen Befehlsausführung von mehreren Befehlen durch ein System gerichtet, das Etiketten (TAGs) den mehreren Befehlen zuordnen. Das System ist ein Bauteil einer Superskalar-Einheit, die zwischen einer Befehlsabrufeinheit (die Befehle von einer Speichereinheit schickt) und einer Ausführungseinheit gekoppelt ist (die die Befehle ausführt). Die Aufgabe der Superskalar-Einheit ist, Befehle zu verschiedenen Funktionseinheiten in der Ausführungseinheit zu lenken und die Befehlsabrufeinheit zu unterrichten, wenn Befehle ausgeführt sind oder nicht länger benötigt werden (zurückgenommen werden), so daß die Befehlsabrufeinheit zusätzliche Befehle zu der Ausführungseinheit vorwärtsbefärdem kann. Die vorliegende Erfindung schafft einen Mechanismus für die Superskalar-Einheit, Befehle zu überwachen (die außerhalb der Programmreihenfolge ausgeführt werden können) und die Befehle in das "Befehlsfenster" in einer veränderbaren Art vorwärts zube fördern.
- Die vorliegende Erfindung verwendet ein Etikettenüberwachungssystem, das Teil der Superskalar-Einheit ist. Das Etikettenüberwachungssystem schließt ein: eine Registerdatei und eine Warteschlange, wie in einer zuerst-hinein-zuerst-heraus Weise (FIFO) arbeitet. Die Registerdatei ist mit der Befehlsabrufeinheit gekoppelt und wird verwendet, dekodierte Befehle zu speichern (das heißt, Betriebsmittelanforderungen von jedem Befehl). Die Warteschlange ist mit der Registerdatei gekoppelt. Jeder Schlitz der Warteschlange enthält eine Etikette. Wenn ein Befehl von der Befehlsabrufeinheit geschickt wird, wird ihm eine Etikette zugeordnet, die nicht laufend irgendwelchen aktiven, dekodierten Befehlen zugeordnet ist, die in der Registerdatei gespeichert sind. Der Befehl wird dann in der Registerdatei an einer Adressenspeicherstelle gespeichert, die durch die Etikette in der Registerdatei angegeben ist.
- Jedes Mal, wenn ein Befehl zurückgezogen wird, schreitet die Warteschlange fort (die Warteschlange schreitet in der Reihenfolge des Befehlsprogramms fort). Typischerweise wird eine Etikette von dem Ende der Warteschlange gestoßen, wenn ihr entsprechender Befehl zurückgezogen wird. Diese Etikette kann einem neuen Befehl wiederzugeordnet werden, der von der Befehlsabrufeinheit geschickt wird. Demgemäß wird die Etikette dann zurück zu dem Anfang der Warteschlange geschickt (mit anderen Worten, sie wird wiedergewonnen). Während jedes Prozessorzyklus wird jeder Schlitz der Warteschlange an einen Lesefreigabekanal der Registerdatei ausgegeben, die die Inhalte der Registerdatei in der Programmreihenfolge anzeigt. Die Warteschlange bewegt sich typischerweise mit der Anzahl von Befehlen fort, die bei einem vorhergehenden Aus führungszyklus zurückgenommen worden sind.
- Die Registerdatei weist Schreibkanäle auf, wo Befehle von der Befehlsabrufeinheit empfangen werden. Die maximale Anzahl von Befehlen, die in die Registerdatei geschrieben werden können, wird durch die maximale Anzahl von Befehlen (Etiketten) bestimmt, die auf einmal durch die Warteschlange fortbewegt werden. Der Ausgangskanal der Registerdatei (Lesedatenkanal) weist einen Kanal für jeden in der Registerdatei gespeicherten Befehl auf (entsprechend der Anzahl von Schlitten der Warteschlange).
- Ein Merkmal der vorliegenden Erfindung ist, daß dekodierte Befehle ohne die Notwendigkeit von mehreren Warteschlangen gekennzeichnet werden können. Dies vereinfacht die Konstruktion und erhöht die Betriebsflexibilität. Des weiteren wird die Größe der Fläche, die auf einem Chip verlangt wird, verringert.
- Weitere Merkmale und Vorteile der vorliegenden Erfindung, sowie die Struktur und der Betrieb verschiedener Ausführungsformen der vorliegenden Erfindung werden unten im einzelnen unter Bezugnahme auf die beigefügten Zeichnungen beschrieben.
- Fig. 1 ist ein Blockdiagramm eines Superskalar-Umfeldes 101.
- Fig. 2 zeigt ein Blockdiagramm eines Etiketten-Überwachungssystems 222, das sich in einem Teil der Superskalar-Einheit 106 (mit gepunkteten Linien gezeigt) befindet.
- Fig. 3 ist ein Flußdiagramm, das den Betrieb des Etiketten-Überwachungssystems 222 darstellt.
- Die am weitesten linke Ziffer einer Bezugszahl kennzeichnet die Zeichnung, in der das Bezugszeichen zuerst auftritt.
- Fig. 1 ist ein Blockdiagramm eines Superskalar-Umfeldes 101. Das Superskalar-Umfeld 101 enthält: eine Speichereinheit 102, eine Befehlsabrufeinheit 104, eine Superskalar- Einheit 106 und eine Ausführungseinheit 108.
- Die Superskalar-Einheit 106 steuert die Ausführung von Befehlen, die in der Ausführungseinheit 108 auftreten. Die Ausführungseinheit 108 kann Funktionseinheiten enthalten, wie eine Fließkommaeinheit (nicht gezeigt), eine Ganzzahleinheit (nicht gezeigt), eine Lade/Speicher-Einheit (nicht gezeigt) und andere solche Funktionseinheiten, die üblicherweise von Prozessoren in Abhängigkeit von der erwünschten Anwendung verwendet werden.
- Die Befehlsabrufeinheit 104 ruft eine Gruppe von Befehlen aus dem Speicher 102 mittels eines Busses 103 ab, dekodiert sie und schickt sie zu der Superskalar-Einheit 106 über einen Bus 105. Die Superskalar-Einheit 106 gibt dann die Befehle an die Ausführungseinheit 108 aus. Im allgemeinen überwacht die Superskalar-Einheit 106 die Verfügbarkeit der Ausführungseinheit 108 und prüft die Abhängigkeiten zwischen den Befehlen. Sobald die Befehle abgeschlossen sind, zieht die Superskalar-Einheit 106 die Befehle zurück. Dies wird durchgeführt, indem abgeschlossene Befehle aus einem Fenster in der Superskalar-Einheit 106 (noch zu beschreiben) entfernt werden. Die Superskalar-Einheit 106 kann dann ein Signal auf dem Bus 105 schicken, um der Befehlsabrufeinheit 104 anzuordnen, mehr Befehle zu schicken. Dies ermöglicht der Superskalar-Einheit 106 das Fenster (in Fig. 1 nicht gezeigt) mit neuen Befehlen aufzufrischen.
- Bei der bevorzugten Ausführungsform haben die Befehle eine feste Länge von 32 Bit. In Fig. 1 gezeigte Busse stellen Daten- und Steuersignale dar. Die Bus- und Befehlsgröße können sich in Abhängigkeit von der Anwendung ändern. Die übrige Diskussion wird auf ein Etiketten-Überwachungssystem fokussiert, das Befehle in der Superskalar-Einheit 106 verfolgt.
- Fig. 2 zeigt ein Blockdiagramm eines Etiketten-Überwachungssystems 222, das sich in einem Abschnitt der Superskalar-Einheit 106 (als unterbrochene Linien gezeigt) befindet. Das Etiketten-Überwachungssystem 222 enthält: eine Registerdatei 202, eine zuerst-hinein-zuerst-heraus Etiketten-Warteschlange 206 und eine Steuerungslogik 207.
- Die zuerst-hinein-zuerst-heraus Etiketten-Warteschlange 204 ist eine Warteschlange, die Etiketten 0-7 speichert (oder hält), die in Schlitzen 206 angeordnet sind. Eine Etikette ist eine einzigartige Kennzeichnung (eine Binärziffer 0-7), die einem Befehl zu dem Zeitpunkt zugeordnet wird, wenn ein Befehl von der Befehlsabrufeinheit 104 übertragen und in der Superskalar-Einheit 106 in der Registerdatei 202 gespeichert wird.
- Sobald eine Etikette einem Befehl zugeordnet ist, bleibt sie mit diesem Befehl, bis der Befehl zurückgezogen ist. Ein Befehl wird zurückgezogen nachdem: 1) seine Ergebnisse verglichen oder gespeichert worden sind; und/oder 2) er durch die Ausführungseinheit 108 ausgeführt worden ist und/oder nicht länger aus irgendeinem Grund benötigt wird. Sobald ein Befehl zurückgezogen worden ist, wird die entsprechende Etikette aus dem Ende 210 der zuerst-hinein-zuerst-heraus Etiketten-Warteschlange 204 herausgestoßen und zurück zu dem Anfang 212 der zuerst-hinein-zuerst-heraus Etiketten-Warteschlange 206 geschickt. Nun wird die Etikette erneut einem neuen Befehl zugeordnet, der von der Befehlsabrufeinheit 104 geschickt wird. Auf diese Weise werden die Etiketten "wiedergewonnen" oder in der zuerst-hinein-zuerst-heraus Etiketten-Warteschlange 204 in Umlauf gebracht.
- Die Registerdatei 202 ist mit der zuerst-hinein-zuerst-heraus Etiketten-Warteschlange 204 und der Befehlsabrufeinheit 104 gekoppelt. Die Registerdatei 202 speichert Ausführungsdaten (Zielregister in der Ausführungseinheit 108, Betriebsmittelanforderungen, Operationsfunktion usw.) eines Befehls, der von der Befehlsabrufeinheit 104 geschickt worden ist. Die Registerdatei 202 schließt ein: einen Schreibdatenkanal 214, einen Schreibadressenkanal 216, einen Schreibfreigabekanal 218, einen Leseadressenkanal 220 und einen Lesedatenkanal 224. Die Registerdatei 202 ist ein Speicher mit wahlfreiem Zugriff.
- Der Schreibdatenkanal 214 erhält eine Befehlsausführungsdate von der Befehlsabrufeinheit 104. Die Befehlsausführungsdate wird auf Bussen 208 transportiert. Wie es in Fig. 2 gezeigt ist, steht W.D.A. für "Schreibbefehlsausführungsdaten A" und W.D.B. steht für "Schreibbefehlsausführungsdaten B" usw. Buchstaben werden verwendet, Befehle zu kennzeichnen, um eine Verwechslung mit der Befehlsprogrammreihenfolge zu vermeiden.
- Die Schreibadressenkanäle 216 geben an, an welcher Etiketten-Speicherstelle in der Registerdatei 202 Befehle zu speichern sind. Der Schreibadressenkanal 216 ist mit der Steuerungslogik 207 gekoppelt. Der Schreibfreigabekanal 218 ist auch mit der Steuerungslogik 207 gekoppelt. Aktive Freigabesignale 226 erlauben, daß Daten in die Registerdatei 202 geschrieben werden.
- Der Leseadressenkanal 220 ist mit der zuerst-hinein-zuerst- heraus Etiketten-Warteschlange 204 über Busse (Ausgänge) 230 gekoppelt. Jeder Schlitz 206 in der zuerst-hinein-zuerst-heraus Etiketten-Warteschlange 204 ist als ein Ausgangssignal mit einem Leseadressenkanal 206 (R.A.7-R.A.0) gekoppelt. Demgemäß ermöglicht der Leseadressenkanal 220, daß die Inhalte der Registerdatei 202 durch die Etiketten zuerst-hinein-zuerst-heraus 204 ausgewählt und von dem Lesedatenkanal 224 gelesen werden können. Die Ausgänge 230 der zuerst-hinein-zuerst-heraus Etiketten-Warteschlange 204 erlauben, daß die Registerdatei 202 ihre Inhalte in der Reihenfolge anzeigt. Mit anderen Worten zeigen die Ausgänge 230 die dekodierten Befehle in der Programmreihenfolge.
- Typischerweise ist die Registerdatei 202 mit anderen Elementen (beispielsweise eine Ausgabeeinheit, nicht gezeigt) verbunden, die in der Superskalar-Einheit 106 angeordnet sind, die Befehle verlangen, um in der Programmreihenfolge zu erscheinen.
- Um zu reiterieren, wird ein dekodierter Befehl in der Registerdatei 202 durch die Etikette gespeichert. Wenn beispielsweise der Befehl B der Etikette 4 zugeordnet ist, dann wird seine dekodierte Information in der Adresse 4 der Registerdatei 202 gespeichert.
- Die Steuerungslogik 207 besteht aus Logikschaltungen. Die Steuerungslogik 207 überwacht die Ausführungseinheit 108 über dem Bus 234 und die zuerst-hinein-zuerst-heraus Etiketten-Warteschlange 204. Die Steuerungslogik 207 gibt der Befehlsabrufeinheit 104 an, neue Befehle zu der Registerdatei 202 zu schicken, sobald ein Befehl zurückgenommen worden ist. Die Steuerungslogik 207 gibt auch an, wieviele neue Befehle für die Befehlsabrufeinheit 104 zu schicken sind. Bei der bevorzugten Ausführungsform ist die maximale Anzahl von Befehlen, die auf einmal geschickt werden können, 4, was den Schreibkanälen in der Registerdatei 202 entspricht. Die Steuerungslogik 207 synchronisiert auch die zuerst-hinein-zuerst-heraus Etiketten-Warteschlange 204, um eine gleiche Anzahl von Befehlen vorwärtszubefördern, die über ein Signal 236 verlangt werden. Die zuerst-hinein-zuerst-heraus Etiketten-Warteschlange kann auf einmal 1, 2, 3 oder 4 Schritte fortschreiten. Die Schaltungsausführung für die Steuerungslogik 207 ist für den Durchschnittsfachmann auf dem Gebiet ohne weiteres offensichtlich. Beispielsweise können gegenwärtig gut bekannte und im Handel erhältliche Logik- und Auslegungssysteme verwendet werden, um eine Verhaltensbeschreibung (das heißt, Verilog oder V.H.D.L.) in eine Silicium- oder Chipkonstruktion umzuwandeln.
- Fig. 3 ist ein Flußdiagramm, daß die Arbeitsweise des Etiketten-Überwachungssystems 222 darstellt. Die Operationsschritte 301-312 werden unter Bezugnahme auf Hardwareelemente der Fig. 1 und 2 beschrieben.
- Beim Schritt 302 schickt die Steuerungslogik 207 ein Anforderungsdatensignal 238 in der Befehlsabrufeinheit 104, das die Anzahl der benötigten Befehle angibt. Wenn beispielsweise ein Befehl benötigt wird, einen Zwischenraum (aufgrund einer Befehlsrücknahme) in der Registerdatei 202 zu füllen, dann schickt die Steuerungseinheit 207 ein Anforderungsdatensignal 238 an die Befehlsabrufeinheit 104, wobei ein neuer Befehl zur Ausführung verlangt wird.
- Beim Schritt 304 schickt die Steuerungslogik 207 ein aktives Logiksignal 228 und 226 an den Schreibadressenkanal 216 bzw. den Schreibfreigabekanal 218. Die Steuerungslogik 304 aktiviert nur Schreibkanäle, die den Schlitzen A-D entsprechen, die eine neu zurückgenommene Etikette erhalten haben. Wenn beispielsweise die zuerst-hinein-zuerst-heraus Etiketten-Warteschlange 106 vorhergehend um einen Schritt 312 fortgeschritten wäre (wird beschrieben) dann würde die Etikette 0 in dem Schlitz 17 erscheinen, was der Befehlsadresse A entspricht. Demgemäß werden nur das Schreibadressensignal 228A und das Schreibfreigabesignal 226A bei diesem Beispiel durch die Steuerungslogik 207 aktiviert. Somit wird nur das Kanal 216A freigegeben.
- Beim Schritt 306 werden Befehle (Befehlsausführungsdaten) von der Befehlsabrufeinheit 104 zu der Registerdatei 202 über den Bus 208 geschickt. Befehle, die von der Befehlsabrufeinheit 104 geschickt worden sind, werden in der Registerdatei durch Etikettennummern gespeichert, die diesen Befehlen zugeordnet sind. Mit anderen Worten werden Befehle in die Registerdatei 202 an eine Adressenspeicherstelle, die durch die entsprechende Etikettennummer angegeben ist, von einem oder mehreren (abhängig davon, wieviele Befehle von der Befehlsabrufeinheit 104 geschickt worden sind) der ersten vier Schlitze (A, B, C, D) der zuerst-hinein-zuerst- heraus-Etiketten-Warteschlange 204 geschrieben, die zu dem Schreibadressenkanal 216 geschickt werden. Wenn beispielsweise ein Befehl von der Befehlsabrufeinheit 104 zu der Registerdatei 202 geschickt wird, wird er auf dem Bus 208A übertragen. Er wird in der Adressenspeicherstelle "0" gemäß der Etikette gespeichert, die sich in dem obersten Schlitz (17 Speicherstelle) der zuerst-hinein-zuerst-heraus Etiketten-Warteschlange 204 befindet, die aus der zuerst-hineinzuerst-heraus Etiketten-Warteschlange über dem Bus 232A ausgelesen wird, transportiert durch die Steuerung 207 und zu dem Schreibadressenkanal 216A über den Bus 228A geschickt.
- Beim Schritt 308 werden Befehle aus dem Lesedatenkanal 224 der Registerdatei ausgelesen. Die Registerdatei 202 zeigt ihren Inhalt in Prograrnmreihenfolge an. Jeder Schlitz 206 der zuerst-hinein-zuerst-heraus Etiketten-Warteschlange 204 wird ausgegeben und auf Bussen 230 zu dem Leseadressenkanal 220 transportiert. Der Leseadressenkanal 220 ermöglicht, daß die Inhalte (Daten-aus 240) von der Registerdatei angezeigt werden. Die Ausgänge 230 der zuerst-hinein-zuerst- heraus Etiketten-Warteschlange 204 zeigen einen "Schnappschuß" der tatsächlichen Programmreihenfolge, weil die zuerst-hinein-zuerst-heraus Etiketten-Warteschlange 204 stets synchron zu den veränderbar fortbewegten Befehlen, die von der Befehlsabrufeinheit 104 geschickt werden, und der Befehlsrücknahme ist. Somit zeigen als ein Ergebnis davon, Ausgänge 230 der zuerst-hinein-zuerst-heraus Etiketten-Warteschlange 204 mit dem Leseadressenkanal 220 gekoppelt zu haben, Datenausgänge 240 der Registerdatei 202 Ausführungsdaten der Befehle in Programmreihenfolge. Beispielsweise gibt der Leseadressenkanal 7 (R.A.7) die Befehlsdate von I7 (die der Etikette 0 entspricht) frei, damit sie von dem Lesedatenkanal 7 (R.D.7) ausgelesen wird und die Etikette 1 liest die Ausführungsdate von I0 aus.
- Des weiteren werden beim Schritt 308 die ausgelesenen, dekodierten Befehle an die Ausführungseinheit 108 ausgegeben und ausgeführt.
- Beim Entscheidungsschritt 310 wartet die Steuerung 307, daß irgendwelche Befehle zurückgezogen werden. Wenn keine Befehle zurückgezogen werden, werden Daten aus der Registerdatei 202 ausgelesen werden, wie es durch den "NEIN" Weg des Entscheidungsschrittes 310 angegeben ist. Wenn Befehle zurückgezogen werden, erhält die Steuerungslogik 207 ein aktives Zurückziehstatussignal 234, wie es beim Schritt 312 gezeigt ist. Das Zurückziehstatussignal 234 gibt der Steuerungslogik 207 an, wieviele leere Schlitze (wieviele Schlitze die zuerst-hinein-zuerst-heraus Etiketten-Warteschlange 204 fortzubewegen ist) in der zuerst-hinein-zuerst-heraus Etiketten-Warteschlange 204 gefüllt werden müssen. Ein leerer Platz kann auch in der zuerst-hinein-zuerst-heraus Etiketten-Warteschlange 204 auftreten, wo es ungültige Befehle (das heißt, Cache-Fehler, Zweige, usw.) gibt, die von der Befehlsabrufeinheit 104 geschickt worden sind. Des weiteren schickt die Steuerungslogik 207 bei Schritt 312 ein Datenfortbewegungssignal 236 an die zuerst- hinein-zuerst-heraus Etiketten-Warteschlange 204, das die Anzahl (entsprechend der Anzahl von benötigten Befehlen) der Male angibt, die zuerst-hinein-zuerst-heraus Etiketten- Warteschlange 204 fortzubewegen. Bezugnehmend auf Fig. 2 bewegt sich die Etikette 1 in den Schlitz von 17 und alle anderen Etiketten werden entsprechend fortbewegt. Die Etikette 2 sollte am Ende 210 der zuerst-hinein-zuerst-heraus Etiketten-Warteschlange 206 nach dem Schritt 312 angeordnet werden. Nun fährt die Arbeitsweise des Etiketten-Überwachungssystems 222 fort, indem zu dem Operationsschritt 302 zurückgekehrt wird, der oben erörtert worden ist.
- Während verschiedene Ausführungsformen der vorliegenden Erfindung oben beschrieben worden sind, sollte verstanden werden, daß sie nur in beispielhafter Weise dargeboten worden sind und nicht einschränkend sein sollen. Somit sollte die Breite und der Bereich der vorliegenden Erfindung nicht durch irgendeine der oben beschriebenen, beispielhaften Ausführungsformen beschränkt werden, sondern sollte nur gemäß den eingereichten Ansprüchen und ihren Äquivalenten abgegrenzt werden.
Claims (8)
1. System zum Zuordnen von Tags zu Befehlen in einem Prozessor,
wobei der Prozessor eine Speichereinheit (102) aufweist zum
Speichern von auszuführenden Befehlen, eine Befehlsabrufeinheit
(104) zum Dekodieren von Befehlen, welche von der
Speichereinheit (102) wiedergewonnen werden, und eine Registerdatei (202)
zum Speichern von dekodierten Befehlen und die eine Vielzahl
von Lese-Freigabekanälen (220) und entsprechende
Leseausgabekanäle (224) aufweist, wobei das System umfaßt:
eine Tag-Warteschlange (204) zum Speichern von Tags, welche
dazu verwendet werden, die dekodierten Befehle zu markieren;
und
eine Steuereinheit (207) mit einer Einrichtung zum Zuordnen der
Tags zu den dekodierten Befehlen in einer Reihenfolge, in
welcher die Tags in der Warteschlange gespeichert sind, mit
einer Einrichtung zum Überwachen, wann die Befehle ausgeführt
werden und mit einer Einrichtung zum Vorwärtsbefördern der Tags
in der Warteschlange (207) nach dem Beenden eines ausgeführten
Befehis;
dadurch gekennzeichnet,
daß die Tags der Registerdatei (202) zugeführt werden, um jeden
Befehl an einer Stelle zu speichern, welche durch das Tag, das
diesem Befehl zugeordnet ist, adressiert wird und daß die Tags
den Lese-Freigabekanälen (220) in der Reihenfolge zugeführt
werden, in welcher sie in der Warteschlange gehalten werden, um
die dekodierten Befehle an den Leseausgabekanälen (224) zu
lesen.
2. System nach Anspruch 1, worin die Tag-Warteschlange (204)
weiterhin umfaßt:
eine Einrichtung zum Vorwärtsbefördern der Tags immer dann,
wenn ein Befehl abgeschlossen wird; und
eine Einrichtung zum Recycling eines Tags in der
Tag-Warteschlange (204), um dieses Tag für die Zuordnung zu einem neuen
Befehl verwendbar zu machen.
3. System nach Anspruch 1 oder 2, worin die Steuereinrichtung
(207) weiterhin eine Einrichtung umfaßt zum Anfordern einer
Anzahl von Befehlen, worin die Anzahl geringer oder gleich der
Anzahl der Befehle ist, die in einem vorangehenden Zyklus
abgeschlossen wurden.
4. Verfahren zum Halten von Befehlsdaten in Programmreihenfolge
in einem Mikroprozessor, der in der Lage ist, Befehle außerhalb
der Programmreihenfolge auszuführen, mit folgenden Schritten:
Zuordnen eines Tags zu jedem Befehl, wenn dieser ausgegeben
wird;
Speichern von Ausführungsdaten (208) für jeden Befehl in einer
Registerdatei (202) an einer Stelle, welche durch das diesem
Befehl zugeordnete Tag angezeigt wird;
Halten der Tags in einer sequentiellen Tag-Datei (204) in einer
Reihenfolge, in welcher sie zugeordnet wurden; und
Zuführen der Tags in der Tag-Datei (204) zu der Registerdatei
(202), um die Ausführungsdaten (208) in Programmreihenfolge zu
lesen.
5. Verfahren nach Anspruch 4, weiterhin umfassend den Schritt
des Ausgebens eines Befehls unter Verwendung einer
Befehlsabrufeinheit (104).
6. Verfahren nach Anspruch 4 oder 5, worin der Schritt des
Haltens der Tags folgende Schritte umfaßt:
Vorwärtsbefördern der Tags in der Tag-Datei (204) immer dann,
wenn ein Befehl abgeschlossen wird; und
Recycling des Tags am unteren Ende (210) der Tag-Datei (204)
zur obersten Position (212) der Tag-Datei (204), um das Tag für
die Zuordnung zu einem neuen Befehl zur Verfügung zu stellen.
7. Verfahren nach wenigstens einem Ansprüche 4 bis 6, weiterhin
umfassend den Schritt des Sendens eines Anforderungssignals
(238) an eine Befehlsabrufeinheit, um einen Befehl anzufordern.
8. Verfahren nach wenigstens einem der Ansprüche 4 bis 6,
weiterhin umfassend den Schritt des Anforderns einer Anzahl von
Befehlen, worin diese Anzahl geringer oder gleich der Anzahl
der Befehle ist, die in einem vorangehenden Zyklus
abgeschlossen wurden.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/999,648 US5604912A (en) | 1992-12-31 | 1992-12-31 | System and method for assigning tags to instructions to control instruction execution |
PCT/US1993/012309 WO1994016385A1 (en) | 1992-12-31 | 1993-12-16 | System and method for assigning tags to instructions to control instruction execution |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69305366D1 DE69305366D1 (de) | 1996-11-14 |
DE69305366T2 true DE69305366T2 (de) | 1997-02-20 |
Family
ID=25546575
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69305366T Expired - Lifetime DE69305366T2 (de) | 1992-12-31 | 1993-12-16 | System und verfahren zum kennzeichnen von befehlen zur steuerung der befehlsausführung |
Country Status (6)
Country | Link |
---|---|
US (2) | US5604912A (de) |
EP (1) | EP0677188B1 (de) |
JP (1) | JP3531167B2 (de) |
KR (1) | KR100295081B1 (de) |
DE (1) | DE69305366T2 (de) |
WO (1) | WO1994016385A1 (de) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5493687A (en) * | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
US5539911A (en) * | 1991-07-08 | 1996-07-23 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution |
EP0636256B1 (de) * | 1992-03-31 | 1997-06-04 | Seiko Epson Corporation | Befehlsablauffolgeplanung von einem risc-superskalarprozessor |
EP0638183B1 (de) * | 1992-05-01 | 1997-03-05 | Seiko Epson Corporation | Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor. |
DE69330889T2 (de) * | 1992-12-31 | 2002-03-28 | Seiko Epson Corp., Tokio/Tokyo | System und Verfahren zur Änderung der Namen von Registern |
US5604912A (en) * | 1992-12-31 | 1997-02-18 | Seiko Epson Corporation | System and method for assigning tags to instructions to control instruction execution |
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 |
US5822575A (en) * | 1996-09-12 | 1998-10-13 | Advanced Micro Devices, Inc. | Branch prediction storage for storing branch prediction information such that a corresponding tag may be routed with the branch instruction |
US6035424A (en) * | 1996-12-09 | 2000-03-07 | International Business Machines Corporation | Method and apparatus for tracking processing of a command |
US5948098A (en) * | 1997-06-30 | 1999-09-07 | Sun Microsystems, Inc. | Execution unit and method for executing performance critical and non-performance critical arithmetic instructions in separate pipelines |
US6237083B1 (en) | 1998-02-13 | 2001-05-22 | Advanced Micro Devices, Inc. | Microprocessor including multiple register files mapped to the same logical storage and inhibiting sychronization between the register files responsive to inclusion of an instruction in an instruction sequence |
US6859874B2 (en) * | 2001-09-24 | 2005-02-22 | Broadcom Corporation | Method for identifying basic blocks with conditional delay slot instructions |
US6883090B2 (en) * | 2001-05-17 | 2005-04-19 | Broadcom Corporation | Method for cancelling conditional delay slot instructions |
US6785804B2 (en) * | 2001-05-17 | 2004-08-31 | Broadcom Corporation | Use of tags to cancel a conditional branch delay slot instruction |
US20030041073A1 (en) * | 2001-08-21 | 2003-02-27 | Collier Josh D. | Method and apparatus for reordering received messages for improved processing performance |
US6813704B1 (en) * | 2001-12-20 | 2004-11-02 | Lsi Logic Corporation | Changing instruction order by reassigning only tags in order tag field in instruction queue |
US7398375B2 (en) * | 2002-04-04 | 2008-07-08 | The Regents Of The University Of Michigan | Technique for reduced-tag dynamic scheduling and reduced-tag prediction |
US7711934B2 (en) * | 2005-10-31 | 2010-05-04 | Mips Technologies, Inc. | Processor core and method for managing branch misprediction in an out-of-order processor pipeline |
US7734901B2 (en) * | 2005-10-31 | 2010-06-08 | Mips Technologies, Inc. | Processor core and method for managing program counter redirection in an out-of-order processor pipeline |
US20080082793A1 (en) * | 2006-09-29 | 2008-04-03 | Mips Technologies, Inc. | Detection and prevention of write-after-write hazards, and applications thereof |
US9946547B2 (en) | 2006-09-29 | 2018-04-17 | Arm Finance Overseas Limited | Load/store unit for a processor, and applications thereof |
US7594079B2 (en) | 2006-09-29 | 2009-09-22 | Mips Technologies, Inc. | Data cache virtual hint way prediction, and applications thereof |
US10229066B2 (en) * | 2016-09-30 | 2019-03-12 | Arm Limited | Queuing memory access requests |
US11567554B2 (en) * | 2017-12-11 | 2023-01-31 | Advanced Micro Devices, Inc. | Clock mesh-based power conservation in a coprocessor based on in-flight instruction characteristics |
US11709681B2 (en) | 2017-12-11 | 2023-07-25 | Advanced Micro Devices, Inc. | Differential pipeline delays in a coprocessor |
US11263013B2 (en) * | 2020-04-07 | 2022-03-01 | Andes Technology Corporation | Processor having read shifter and controlling method using the same |
CN111966406B (zh) * | 2020-08-06 | 2021-03-23 | 北京微核芯科技有限公司 | 乱序处理器中乱序执行队列的调度方法和装置 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4807115A (en) * | 1983-10-07 | 1989-02-21 | Cornell Research Foundation, Inc. | Instruction issuing mechanism for processors with multiple functional units |
US5255384A (en) * | 1985-02-22 | 1993-10-19 | Intergraph Corporation | Memory address translation system having modifiable and non-modifiable translation mechanisms |
JPH0762823B2 (ja) * | 1985-05-22 | 1995-07-05 | 株式会社日立製作所 | デ−タ処理装置 |
US4903196A (en) * | 1986-05-02 | 1990-02-20 | International Business Machines Corporation | Method and apparatus for guaranteeing the logical integrity of data in the general purpose registers of a complex multi-execution unit uniprocessor |
JP2684362B2 (ja) * | 1986-06-18 | 1997-12-03 | 株式会社日立製作所 | 可変長データの記憶方式 |
US4811296A (en) * | 1987-05-15 | 1989-03-07 | Analog Devices, Inc. | Multi-port register file with flow-through of data |
US4992938A (en) * | 1987-07-01 | 1991-02-12 | International Business Machines Corporation | Instruction control mechanism for a computing system with register renaming, map table and queues indicating available registers |
JP2736092B2 (ja) * | 1989-01-10 | 1998-04-02 | 株式会社東芝 | バッファ装置 |
US5067069A (en) * | 1989-02-03 | 1991-11-19 | Digital Equipment Corporation | Control of multiple functional units with parallel operation in a microcoded execution unit |
US5125083A (en) * | 1989-02-03 | 1992-06-23 | Digital Equipment Corporation | Method and apparatus for resolving a variable number of potential memory access conflicts in a pipelined computer system |
US5109495A (en) * | 1989-02-03 | 1992-04-28 | Digital Equipment Corp. | Method and apparatus using a source operand list and a source operand pointer queue between the execution unit and the instruction decoding and operand processing units of a pipelined data processor |
US5142633A (en) * | 1989-02-03 | 1992-08-25 | Digital Equipment Corporation | Preprocessing implied specifiers in a pipelined processor |
US5226126A (en) * | 1989-02-24 | 1993-07-06 | Nexgen Microsystems | Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags |
US5487156A (en) * | 1989-12-15 | 1996-01-23 | Popescu; Valeri | Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched |
US5251306A (en) * | 1990-01-16 | 1993-10-05 | Advanced Micro Devices, Inc. | Apparatus for controlling execution of a program in a computing device |
US5120083A (en) * | 1990-03-19 | 1992-06-09 | Henkels & Mccoy, Inc. | Expansion joint for conduit for cables |
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 |
EP0468831B1 (de) * | 1990-06-29 | 1997-10-15 | Digital Equipment Corporation | Busprotokoll für Prozessor mit write-back cache |
US5655096A (en) * | 1990-10-12 | 1997-08-05 | Branigin; Michael H. | Method and apparatus for dynamic scheduling of instructions to ensure sequentially coherent data in a processor employing out-of-order execution |
JP2911278B2 (ja) * | 1990-11-30 | 1999-06-23 | 松下電器産業株式会社 | プロセッサ |
US5261071A (en) * | 1991-03-21 | 1993-11-09 | Control Data System, Inc. | Dual pipe cache memory with out-of-order issue capability |
US5355457A (en) * | 1991-05-21 | 1994-10-11 | Motorola, Inc. | Data processor for performing simultaneous instruction retirement and backtracking |
US5345569A (en) * | 1991-09-20 | 1994-09-06 | Advanced Micro Devices, Inc. | Apparatus and method for resolving dependencies among a plurality of instructions within a storage device |
JPH0621466Y2 (ja) * | 1991-11-11 | 1994-06-08 | キャピーインターナショナル株式会社 | 担 架 |
US5285527A (en) * | 1991-12-11 | 1994-02-08 | Northern Telecom Limited | Predictive historical cache memory |
US5398330A (en) * | 1992-03-05 | 1995-03-14 | Seiko Epson Corporation | Register file backup queue |
US5604912A (en) * | 1992-12-31 | 1997-02-18 | Seiko Epson Corporation | System and method for assigning tags to instructions to control instruction execution |
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 |
-
1992
- 1992-12-31 US US07/999,648 patent/US5604912A/en not_active Expired - Lifetime
-
1993
- 1993-12-16 KR KR1019950702704A patent/KR100295081B1/ko not_active IP Right Cessation
- 1993-12-16 JP JP51601694A patent/JP3531167B2/ja not_active Expired - Lifetime
- 1993-12-16 EP EP94904480A patent/EP0677188B1/de not_active Expired - Lifetime
- 1993-12-16 DE DE69305366T patent/DE69305366T2/de not_active Expired - Lifetime
- 1993-12-16 WO PCT/US1993/012309 patent/WO1994016385A1/en active IP Right Grant
-
1997
- 1997-02-13 US US08/799,462 patent/US5892963A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH08505725A (ja) | 1996-06-18 |
WO1994016385A1 (en) | 1994-07-21 |
JP3531167B2 (ja) | 2004-05-24 |
EP0677188B1 (de) | 1996-10-09 |
KR960700475A (ko) | 1996-01-20 |
KR100295081B1 (ko) | 2001-09-17 |
EP0677188A1 (de) | 1995-10-18 |
US5892963A (en) | 1999-04-06 |
DE69305366D1 (de) | 1996-11-14 |
US5604912A (en) | 1997-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69305366T2 (de) | System und verfahren zum kennzeichnen von befehlen zur steuerung der befehlsausführung | |
DE3851488T2 (de) | Registerverwaltungssystem mit Ausführung von Befehlen in Unordnung in einem Computerprozessor. | |
DE69628480T2 (de) | Ausnahmebehandlung in einem Datenprozessor | |
DE69308548T2 (de) | Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor. | |
DE69330889T2 (de) | System und Verfahren zur Änderung der Namen von Registern | |
DE3750306T2 (de) | System zum Gewährleisten der logischen Unversehrtheit von Daten. | |
DE69506623T2 (de) | Datenprozessor mit einer Ausführungseinheit zur Durchführung von Ladebefehlen und Verfahren zu seinem Betrieb | |
DE68928677T2 (de) | Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle | |
DE19914210B4 (de) | Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung | |
DE69311330T2 (de) | Befehlsablauffolgeplanung von einem risc-superskalarprozessor | |
DE69636861T2 (de) | Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern | |
DE3151745C2 (de) | ||
DE69327688T2 (de) | Befehlsdecoder | |
DE69017178T2 (de) | Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung. | |
DE60015395T2 (de) | Speicher, der zwischen verarbeitenden threads geteilt ist | |
DE69623146T2 (de) | Verfahren und Vorrichtung zum Koordinieren der Benutzung von physikalischen Registern in einem Mikroprozessor | |
DE69225195T2 (de) | Datengesteuertes Verarbeitungssystem | |
DE3587167T2 (de) | Geraet zur vektorverarbeitung. | |
DE69904083T2 (de) | Anordnung und verfahren zum etikettieren und ungültig-erklären von spekulativ ausgeführten befehlen | |
DE69231197T2 (de) | Verfahren und Vorrichtung für eine verbesserte Speicherarchitektur | |
DE112015005597T5 (de) | Verknüpfungsfähige Parallelausführungs-Schicht einer Ausgabewarteschlange für einen Prozessor | |
DE69321929T2 (de) | Verfahren und System um einen unabhängige Zugriff auf Zwischenspeicherpuffern in einem superskalaren Prozessorsystem zu gewährleisten. | |
DE2411963B2 (de) | Datenverarbeitungsanlage | |
DE2714805A1 (de) | Datenverarbeitungssystem | |
DE19506990A1 (de) | Einrichtung zur Datenumleitung in einem Prozessor mit mehreren Ausführungseinheiten |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
R082 | Change of representative |
Ref document number: 677188 Country of ref document: EP Representative=s name: PATENTANWAELTE RUFF, WILHELM, BEIER, DAUSTER & PAR |