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ührung

Info

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
Application number
DE69305366T
Other languages
English (en)
Other versions
DE69305366D1 (de
Inventor
Trevor Deosaran
Sanjiv Garg
Kevin Iadonato
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Publication of DE69305366D1 publication Critical patent/DE69305366D1/de
Application granted granted Critical
Publication of DE69305366T2 publication Critical patent/DE69305366T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30141Implementation provisions of register files, e.g. ports
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent 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.
  • Zusammenfassung der Erfindung
  • 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.
  • Kurze Beschreibung der Zeichnungen
  • 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.
  • Beschreibung der Erfindung im Einzelnen 1.0 Systemumfeld
  • 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.
  • 2.0 Arbeitsweise und Struktur des Etiketten-Überwachungssystems A. Struktur
  • 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.
  • B. Arbeitsweise
  • 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.
DE69305366T 1992-12-31 1993-12-16 System und verfahren zum kennzeichnen von befehlen zur steuerung der befehlsausführung Expired - Lifetime DE69305366T2 (de)

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)

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

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

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