DE19929050C2 - Verfahren zur Umbenennung von Bedingungscodedaten in einem Superskalar-Prozessorsystem - Google Patents

Verfahren zur Umbenennung von Bedingungscodedaten in einem Superskalar-Prozessorsystem

Info

Publication number
DE19929050C2
DE19929050C2 DE1999129050 DE19929050A DE19929050C2 DE 19929050 C2 DE19929050 C2 DE 19929050C2 DE 1999129050 DE1999129050 DE 1999129050 DE 19929050 A DE19929050 A DE 19929050A DE 19929050 C2 DE19929050 C2 DE 19929050C2
Authority
DE
Germany
Prior art keywords
condition code
instruction
command
data
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE1999129050
Other languages
English (en)
Other versions
DE19929050A1 (de
Inventor
Ute Gaertner
Juergen Haess
Oliver Laub
Eberhard Maurer
Erwin Pfeffer
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE19929050A1 publication Critical patent/DE19929050A1/de
Application granted granted Critical
Publication of DE19929050C2 publication Critical patent/DE19929050C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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
    • G06F9/3842Speculative instruction execution

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)

Abstract

Ein Verfahren und ein System in einem Datenverarbeitungssystem werden vorgeschlagen, um Bedingungscodedaten innerhalb des Datenverarbeitungssystems als Antwort auf die Ausführung eines Befehls umzubenennen, wobei das Datenverarbeitungssystem einen Bedingungscodepuffer (10) zur Speicherung von bedingungscodebezogenen Daten, ein Bedingungscode-Zählregister (26) zur Speicherung von bedingungscodebezogenen Daten und eine Vielzahl von Ausführungseinheiten (22, 24) sowie eine Befehlsausgabeeinheit zur Ausgabe der Befehle an die Vielzahl der Ausführungseinheiten (22, 24), in denen zwei Verzweigungsbefehle in zwei Verzweigungseinheiten parallel verarbeitet werden, umfasst. Dies wird mit einem minimalen Aufwand an Logikschaltungen erreicht, indem der Bedingungscodepuffer (10) als Matrix und die Bedingungscodezeiger so betrieben werden, dass sie die Position der Bedingungscodedaten widerspiegeln, die in der Matrix gepuffert werden. Um zu entscheiden, ob der Bedingungscode für einen nachfolgenden Befehl, der verarbeitet werden muss, gültig ist, wird der im Bedingungscoderegister (26) gespeicherte aktuelle Zählwert in einem Vergleichsblock (28) mit dem Zählwert verglichen, der dem Befehl während der Vordecodierung zugewiesen wurde. Somit wird der Befehl nur verzögert, wenn er ein Bedingungscode-Schreibbefehl ist. Bedingungscode-Lesebefehle werden in die Reservierungsstation geladen, wenn kein gültiges Bit gesetzt ist, und dort gehalten, bis das gültige Bit gesetzt wird (assoziative ...

Description

DER ERFINDUNG ZUGRUNDELIEGENDER, ALLGEMEINER STAND DER TECHNIK Bereich der Technik
Die vorliegende Erfindung betrifft allgemein ein verbessertes Datenverarbeitungssystem und insbesondere ein Verfahren und ein System zur Umbenennung von Bedingungscodedaten in dem Datenverarbeitungssystem, um die Ausführung von Befehlen ohne Einhaltung der Reihenfolge und aufgrund einer Annahme in einem Datenverarbeitungssystem zu vereinfachen.
Beschreibung der verwandten Technik
Da man ständig nach einer höheren Leistung von Datenverarbeitungssystemen strebt, haben Entwickler von Zentraleinheiten (CPUs) Superskalar- Datenverarbeitungssysteme realisiert, die mehrere, unabhängige Befehle in mehrere Ausführungspipelines ausgeben können, wobei mehrere Befehle parallel ausgeführt werden. Ein Beispiel für solch ein Superskalar- Datenverarbeitungssystem ist der Superskalar-Mikroprozessor, der unter dem Warenzeichen "PowerPC" von IBM Microelectronics und Motorola Semiconductor vertrieben wird.
Die Architektur des "PowerPC" ist in verschiedenen Benutzerhandbüchern, darunter das Benutzerhandbuch "PowerPC 603-RISC MICROPROCESSOR USER'S MANUAL", Copyright 1994, IBM- Teilenummer MPR603UMU-01, ausführlicher beschrieben.
In dem Superskalar-Mikroprozessor werden Befehle aus einem Befehlscachespeicher abgerufen und in Programmfolge an eine einer Vielzahl von Ausführungseinheiten ausgegeben, wobei der Befehl von einer Ausführungseinheit ausgeführt wird, die für die bestimmte Befehlsart geeignet ist. Gleitkommabefehle werden beispielsweise an eine oder mehrere Gleitkomma- Ausführungseinheiten ausgegeben, während Festkommabefehle an eine oder mehrere Einheiten für ganze Zahlen ausgegeben werden. Während die Befehle in Programmfolge ausgegeben werden, kann die Ausführung der Befehle in Abhängigkeit von der Verfügbarkeit der Ausführungseinheiten und anderer Ressourcen des Datenverarbeitungssystems ohne Einhaltung der Reihenfolge erfolgen.
In dem Superskalarprozessor können Befehle vor anderen Befehlen, die zuvor ausgegeben wurden, ausgegeben, ausgeführt und "abgeschlossen" werden. Um zu verhindern, dass durch die Ausführung von Befehlen ohne Einhaltung der Reihenfolge Daten zum falschen Zeitpunkt in ein architekturdefiniertes Register gestellt werden, wird die Befehlsausführung von einer Abarbeitungseinheit in Programmfolge "abgearbeitet". Somit kann ein später ausgegebener Befehl "abgeschlossen" werden, bevor ein zuvor ausgegebener Befehl abgeschlossen wird, aber der später ausgegebene Befehl kann nicht "abgearbeitet" werden, bevor der zuvor ausgegebene Befehl abgearbeitet worden ist.
Wie in der Technik bekannt ist, umfasst der "PowerPC" ein Bedingungsregister (CR), das Bitfelder enthält, die so gesetzt oder zurückgesetzt werden, dass sie die Ergebnisse von bestimmten Operationen, wie beispielsweise von Verschiebeoperationen, Vergleichsoperationen von ganzen Zahlen und Gleitkommazahlen, arithmetischen und logischen Operationen, widerspiegeln, und er stellt einen Mechanismus zum Testen und Verzweigen bereit. Ein Problem tritt jedoch auf, wenn ein von Daten des Bedingungsregisters abhängiger Befehl, d. h. ein Befehl, der von aktuellen Daten abhängig ist, die sich im Bedingungsregister befinden, im Anschluss an eine Ausführung von vorherigen Befehlen ohne Einhaltung der Reihenfolge ausgeführt wird, die Daten in dem Bedingungsregister ändern.
Nach dem Stand der Technik kann sich die Ausgabe eines Befehls, der das Bedingungsregister verändert, verzögern, da im selben Zyklus nicht zu viele Befehle, die dasselbe Bedingungsregister verändern, ausgegeben werden können.
Zusätzlich zu dem Problem der Ausgabe von zu vielen, das Bedingungsregister verändernden Befehlen in einem Zyklus kann es bei Verzweigungsbefehlen, die von Daten im Bedingungsregister abhängen, z. B. bedingten Verzweigungsbefehlen, aufgrund der Verzögerung bei der Ausgabe von Befehlen, die das Bedingungsregister verändern, zu einer Verzögerung kommen. Wenn die Lösung von solchen bedingten Verzweigungsbefehlen verzögert wird, kann die Verarbeitung aufgrund des Zeitraums, der notwendig ist, um Befehle aus dem Befehlsspeicher in den neuen Pfad abzurufen, weiter verzögert werden, sobald die bedingten Verzweigungsbefehle gelöst worden sind.
Zusätzlich zu einer Ausführung ohne Einhaltung der Reihenfolge können Superskalar-Datenverarbeitungssysteme Befehle, die auf eine bedingte Verzweigung folgen, aufgrund einer Annahme ausführen, wenn diese bedingte Verzweigung nicht gelöst worden ist. Eine solche Ausführung aufgrund einer Annahme verursacht Probleme, wenn eine bedingte Verzweigung aufgrund einer Annahme gelöst wird, um Befehle in einem Befehlspfad auszuführen, der sich später als der falsche Befehlspfad herausstellt. Wenn eine solche falsche Vorhersage einer bedingten Verzweigung vorkommt, müssen Register wieder in den Zustand zurückgesetzt werden, der vor der falschen Vorhersage der bedingten Verzweigung vorhanden war. Beispielsweise muss das Bedingungscoderegister in den Zustand zurückgesetzt werden, der vorhanden war, bevor in der falsch vorhergesagten Verzweigung Befehle ausgeführt wurden, die das Bedingungsregister verändern.
Um die vorstehend erwähnten Probleme zu überwinden, wurde in der EP 518 420 A2 vorgeschlagen, als Antwort auf die Abarbeitung eines das Bedingungsregister verändernden Befehls die Daten des Bedingungsregisters aus einem Bedingungsregister- Umbenennungspuffer an das Bedingungsregister zu übertragen, wodurch ein das Bedingungsregister verändernder Befehl ausgegeben, ausgeführt und abgeschlossen werden kann, bevor das Bedingungsregister zur Abarbeitung des das Bedingungsregister verändernden Befehls zur Verfügung steht.
Bei diesem Verfahren können mehrere das Bedingungsregister verändernde Befehle in demselben Zyklus ausgeführt werden, aber zusätzliche Latenzzeiten und eine Verringerung der Zykluszeit müssen in Kauf genommen werden. Außerdem kann pro Zyklus nur ein Verzweigungsbefehl ausgegeben werden.
In Anbetracht der vorstehenden Erörterung dürfte es für den Fachmann offensichtlich sein, dass ein Bedarf für ein Verfahren und ein System besteht, die ohne zusätzliche Latenzzeiten und ohne Verringerung der Zykluszeit die Ausgabe von mehr als einem Verzweigungsbefehl in demselben Zyklus ermöglichen.
ZUSAMMENFASSUNG DER ERFINDUNG
Es ist eine Aufgabe der vorliegenden Erfindung, ein verbessertes Verfahren und ein verbessertes System zur Umbenennung von Bedingungscodedaten innerhalb des Datenverarbeitungssystems bereitzustellen.
Ein Vorteil der vorliegenden Erfindung liegt darin, dass ein Verfahren und ein System zur Umbenennung von Bedingungscodedaten bereitgestellt wird, so dass mehrere Verzweigungsbefehle, die von dem aktuellen Bedingungscode abhängig sind, in verschiedenen Verzweigungseinheiten parallel ausgeführt werden können.
Die vorstehende Aufgabe wird auf eine Art und Weise gelöst, die nun beschrieben wird. Der Bedingungscode eines jeden Befehls wird in einer sogenannten Bedingungscodematrix gepuffert, nachdem er in der jeweiligen Ausführungseinheit ausgeführt worden ist. Jedem Bedingungscode-Schreibbefehl wird ein Zählwert zugewiesen, wenn er vordecodiert wird. Der Zählwert stimmt mit der Nummer des Speicherplatzes in der Matrix überein. Wenn ein Bedingungscode-Schreibbefehl vorkommt, wird der Zähler erhöht, wohingegen ein Bedingungscode-Lese- und ein Bedingungscode-Nichtschreibbefehl dazu führen, dass der Zähler nicht erhöht wird. Um zu entscheiden, ob der Bedingungscode für einen nachfolgenden Befehl, der verarbeitet werden muss, gültig ist, wird der im Bedingungscoderegister gespeicherte aktuelle Zählwert in einem Vergleichsblock (28) mit dem Zählwert verglichen, der dem Befehl während der Vordecodierung zugewiesen wurde. Somit wird der Befehl nur verzögert, wenn es ein Bedingungscode-Schreibbefehl ist. Da Verzweigungsbefehle jedoch Bedingungscode-Lesebefehle sind, können zwei oder mehr nachfolgende Verzweigungsbefehle in verschiedenen Verzweigungseinheiten in demselben Zyklus parallel ausgeführt werden. Um den Rechnerstatus nach dem Auftreten einer Ausnahmebedingung oder einer falsch vorhergesagten Verzweigung zurückzusetzen, wird der letzte höchste Wert des Bedingungscoderegisters aus dem Umordnungspuffer kopiert, wo er nach der Ausführung des jeweils letzten Bedingungscode- Schreibbefehls als architekturdefinierter Wert gespeichert worden war.
Ein Verfahren und ein System in einem Datenverarbeitungssystem werden vorgeschlagen, um Bedingungscodedaten innerhalb des Datenverarbeitungssystems als Antwort auf die Ausführung eines Befehls umzubenennen, wobei das Datenverarbeitungssystem einen Bedingungscodepuffer (10) zur Speicherung von bedingungscodebezogenen Daten, ein Bedingungscode- Zählregister (26) zur Speicherung von bedingungscodebezogenen Daten und eine Vielzahl von Ausführungseinheiten (22, 24) sowie eine Befehlsausgabeeinheit zur Ausgabe der Befehle an die Vielzahl der Ausführungseinheiten (22, 24), in denen zwei Verzweigungsbefehle in zwei Verzweigungseinheiten parallel verarbeitet werden, umfasst. Dies wird mit einem minimalen Aufwand an Logikschaltungen erreicht, indem der Bedingungscodepuffer (10) als Matrix und die Bedingungscodezeiger so betrieben werden, dass sie die Position der Bedingungscodedaten widerspiegeln, die in der Matrix gepuffert werden. Um zu entscheiden, ob der Bedingungscode für einen nachfolgenden Befehl, der verarbeitet werden muss, gültig ist, wird der im Bedingungscoderegister (26) gespeicherte, aktuelle Zählwert in einem Vergleichsblock (28) mit dem Zählwert verglichen, der dem Befehl während der Vordecodierung zugewiesen wurde. Somit wird der Befehl nur verzögert, wenn es ein Bedingungscode-Schreibbefehl ist.
KURZE BESCHREIBUNG DER ZEICHNUNGEN
Die neuartigen Merkmale, von denen man der Meinung ist, dass sie für die Erfindung charakteristisch sind, sind in den beigefügten Ansprüchen dargelegt. Die Erfindung selbst jedoch sowie eine bevorzugte Verwendungsart, weitere Aufgaben und Vorteile der Erfindung lassen sich durch Bezugnahme auf die folgende, ausführliche Beschreibung einer anschaulichen Ausführungsform am besten verstehen, wenn diese in Verbindung mit den beigefügten Zeichnungen gelesen wird, in denen:
Fig. 1 die schematische Darstellung des Bedingungscode- Umbenennungsschemas gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt,
Fig. 2 ein schematisches Blockschaltbild der Ausführung des Bedingungscode-Zuordnungsschemas gemäß der vorliegenden Erfindung ist.
AUSFÜHRLICHE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORM
Nun allgemein bezugnehmend auf die Figuren, wird zuerst ein zusammenfassender Überblick über das Verfahren und das System der vorliegenden Erfindung gegeben.
In Fig. 1 stellt die Bedingungscodematrix 10 einen Pufferspeicher bereit, der für maximal 32 Bedingungscodeeinträge ausreicht. Diese Einträge werden von Befehlen, wie beispielsweise "Hinzufügen" und "Subtrahieren" usw., geschrieben und von Befehlen, wie beispielsweise "Verzweigen", "auf Bedingung verzweigen" usw. gelesen.
Der Bedingungscode besteht in diesem Fall aus 2 Bits pro Befehl. Die Bedeutung der Bits ist unterschiedlich und hängt von der Art des Befehls ab. Ein Überlauf beispielsweise kann vom Bedingungscode eines Befehls "Hinzufügen" signalisiert werden. Dem Ausdruck eines Bedingungscodes entsprechend kann ein Verzweigungsbefehl in einem Programm ausgewertet werden.
Ein Bedingungscodezeiger wird einem oder mehreren Befehlen zugeordnet, um mehrere Befehle parallel auszuführen. Der Wert des Bedingungscodezeigers entspricht dem Speicherplatz des Bedingungscodes in der Bedingungscodematrix 10.
Tabelle 1
Wie aus Tabelle 1 ersichtlich ist, wird der Bedingungscodezeiger erhöht, wenn ein Befehl einen Bedingungscode schreibt. Befehle, wie zum Beispiel "Verzweigen", schreiben nicht ihren eigenen Bedingungscode, sondern lesen den vorhergehenden.
Die in Tabelle 1 geschriebenen Befehle sollten nun als voneinander unabhängige Befehle verstanden werden, so dass ein nachfolgender Befehl nur ausgeführt werden darf, wenn der vorhergehende Bedingungscode-Schreibbefehl ausgeführt worden ist und sein Ergebnis in 12 (Bedingungscode-(CC- )Umbenennungsblock) oder in 14 (Reservierungsstation) als gültig erkannt wird.
Diese Gültigkeitsprüfung wird im Bedingungscode- Umbenennungsblock 12 insbesondere für den zuletzt angegebenen Bedingungscodezeiger durchgeführt. Sie wird auch in der Reservierungsstation für jeden Befehl durchgeführt, der dort für zuvor ausgegebene CC-Zeiger gepuffert wird.
Der Bedingungscode-Umbenennungsblock 12 muss der Reservierungsstation 14 das Ergebnis der Gültigkeitsprüfung liefern, wenn Befehle vom Typ "Verzweigen" nach der Gültigkeitsprüfung ausgegeben werden.
Während die Umbenennung fortgesetzt wird, wird der Bedingungscodezeiger für jeden Befehl in den Umordnungspuffer 16 (ROB) geschrieben. Da jeder Befehl vom ROB-Zeiger eindeutig zugewiesen wird, kann ein Neustart der Programmausführung nach jeder fehlerhaften, aufgrund einer Annahme ausgeführten Folge von Befehlen mit dem richtigen Bedingungscodezeiger beginnen.
Bei näherer Betrachtung von Fig. 1 ist zu sehen, dass die zu verarbeitenden Befehle den Befehlscachespeicher 18 in der Reihenfolge durchlaufen und in der Befehlsvordecodiereinheit 20, in der die für die Umbenennung des Bedingungscodes notwendigen Signale aufbereitet werden, vordecodiert werden. Im Allgemeinen gibt es Befehle, die einen Bedingungscode schreiben, nachdem sie ihre Ausführung abgeschlossen haben, und es gibt andere, die keinen Bedingungscode schreiben. Der Bedingungscode liefert in kurzer Form Informationen über das Ergebnis der Ausführung, wie zum Beispiel "gleich", "kleiner", "größer" (Vergleich), "Überlauf", "Übertrag" usw.
Wenn ein Befehl vordecodiert wird, wird in der Bedingungscodematrix 10 ein vorher festgelegter Speicherplatz von 2 Bit für seinen Bedingungscode zugeordnet, der sich nach seiner Ausführung ergibt. Im Bedingungscode-Umbenennungsblock 12 wird der Bedingungscodezeiger des aktuellen Befehls mit dem Bedingungscodezeiger des vorhergehenden Befehls verglichen, der bereits in einer der Ausführungseinheiten (von denen aus Gründen der besseren Übersichtlichkeit von Fig. 1 nur die Verzweigungseinheit 22 und die Einheit für ganze Zahlen 24 dargestellt sind) ausgeführt worden ist.
Normalerweise durchlaufen die Befehle die Reservierungsstation 14, von wo aus sie an ihre einzelne Ausführungseinheit gesendet werden. Ein Bedingungscode- Änderungszähler 26 ist als Bedingungscoderegister ausgeführt. In diesem Register wird ein Zählwert gespeichert, der im Allgemeinen dem Speicherplatz des Bedingungscodes in der Bedingungscodematrix 10 des zuletzt ausgeführten Bedingungscode-Schreibbefehls entspricht. Befehle wie "Addieren", "Subtrahieren" schreiben normalerweise einen Bedingungscode. In solch einem Fall wird der Zählerwert im Bedingungscode-Änderungszähler 26 folglich jedesmal erhöht, wenn beispielsweise ein Befehl "Subtrahieren" oder "Addieren" im Bedingungscode- Umbenennungsblock 12 vordecodiert wird. Wenn jedoch ein Befehl vordecodiert wird, der keinen Bedingungscode schreibt, wird der Zählwert konstant gehalten und nicht erhöht.
Wenn das Ergebnis der oben erwähnten Vergleichsoperation im Vergleichsblock 28 so ausfällt, dass der Wert des Bedingungscodezeigers des Befehls, der gerade ausgeführt wird, gleich dem Wert ist, der gerade im Bedingungscode- Änderungszähler 26 gespeichert ist, wird ein Bit "Bedingungscode gültig" zum Eintrag des neuen Befehls hinzugefügt, wenn er in die Reservierungsstation 14 geleitet wird. Dieser Eintrag gibt an, dass der neue Befehl nicht von einem Ergebnis des vorhergehenden Bedingungscode-Schreibbe­ fehls abhängt.
Somit kann der neue Befehl unter der Voraussetzung, dass alle anderen Ressourcen für ihn zur Verfügung stehen, in seiner eigenen Einheit ausgeführt werden.
Wenn die verglichenen Bedingungscode-(CC-)Zeiger nicht gleich sind, wird das Bit "Bedingungscode gültig" in der Reservierungsstation 14 nicht gesetzt, und folglich muss der Befehl in der Reservierungsstation warten, bis der vorhergehende Bedingungscode-Schreibbefehl ausgeführt wird. Zur Ausführung wird der jeweilige Bedingungscode aus der Bedingungscodematrix 10 gelesen. Nach Abschluss des Befehls werden dem Umordnungspuffer 16 alle relevanten Informationen zugeführt, die zu dem Befehl gehören, dessen Ausführung gerade abgeschlossen worden ist. Somit bleibt der architekturdefinierte Rechnerstatus mit Einhaltung der Reihenfolge aufrechterhalten. Dann wertet die Sperrsteuerung 30 den Umordnungspuffer 16 aus, um zu klären, welche Befehle in der Reihenfolge abgeschlossen wurden und welche Ressourcen freigegeben werden können.
Im Falle einer Ausnahmebedingung oder einer falsch vorhergesagten Verzweigung wird der letzte und höchste Wert des Bedingungscode-Änderungszählers 26 aus dem architekturdefinierten Bedingungscodepuffer 32 in das Bedingungscode-Zählregister 26 kopiert, um den neuesten, architekturdefinierten Rechnerstatus anzugeben.
Nun bezugnehmend auf Fig. 2, werden die Bedingungscode- Umbenennungsschaltungen ausführlicher beschrieben. Der obere Teil von Fig. 2 entspricht dem Bedingungscode- Änderungszähler 26 im Bedingungscode-Umbenennungsblock 12 von Fig. 1, wohingegen der untere Teil von Fig. 2 dem Vergleichsblock 28 und der Anzeige "Bedingungscode gültig" auf der rechten Seite des Bedingungscode-Umbenennungsblocks 12 entspricht.
Der letzte, gültige Bedingungscodezeiger wird in das Bedingungscode-Umbenennungsregister 26 kopiert (Leitung 101).
Gemäß der vorliegenden Erfindung müssen in der beispielhaften Logikschaltung, die in Fig. 2 dargestellt ist, zwei Ganzzahlbefehle, die im Folgenden durch die Suffixe 0 und 1 bezeichnet werden, in verschiedenen Ausführungseinheiten U und V parallel ausgeführt werden. Somit können beide Befehle einen Bedingungscode, z. B. RC0 und RC1, und einen ihnen zugeordneten CC-Zeiger CC-Ptr0 und CC-Ptr1 anfordern. Dies ist durch die Leitungen 102 und 103 in Fig. 2 angegeben. Über die Leitung 126 beziehungsweise die Leitung 127 werden die Bedingungscodezeiger, die gerade von den Ausführungseinheiten U, V berechnet werden, in die Vergleichsschaltung 28 eingegeben.
Die Werte der Bedingungscodezeiger für den Befehl 0 beziehungsweise den Befehl 1 und der Wert des im Bedingungscode-Umbenennungsregister (Änderungszähler) 26 gespeicherten Zählstands ergeben sich aus der folgenden Tabelle, in welcher "Bedingungscode" durch "CC" abgekürzt wird:
Tabelle 2
Wie aus Tabelle 2 ersichtlich ist, entspricht "Nächstes CC- Umbenennungsregister" CC-Ptr1. Er wird in Abhängigkeit vom Setzwert der Bits "Bedingungscode anfordern" für jeden Befehl um 0, 1 oder 2 erhöht. Bei einem beispielhaften Zeigerwert 3, der im CC-Umbenennungsregister 26 gesichert wird, beginnend, wird der Wert für CC-Ptr0 oder CC-Ptr1 in Abhängigkeit von der Leitung 102 beziehungsweise der Leitung 103 berechnet; dieser Wert kann für CC-Ptr1 höchstens 5 sein, wenn beide Befehle 0, 1 einen Bedingungscode schreiben. Er würde dann zweimal um 1 erhöht werden. Er wird nicht geändert, wenn beide Befehle den Bedingungscode nur lesen.
Sobald ein Bit "Bedingungscode anfordern" (RC) über die Leitung 102 gesetzt wird (logisch 1 auf der Leitung 102), wird es in der N-Schaltung (Negier-Schaltung) 40 in eine logische 0 umgekehrt, was dazu führt, dass das gültige Zwischenspeicherbit CC-Val 0 gelöscht wird, z. B. auf "ungültig" gesetzt wird.
Eine Auswertung der Schaltung, die durch die ODER-Schaltung 42, die UND-Schaltung 44 und den gültigen Zwischenspeicher 46 gekennzeichnet ist, ergibt, dass der gültige Zwischenspeicher 46 gesetzt wird (logisch 1), wenn beide Werte der Bedingungscodezeiger, die von den Ausführungseinheiten U, V geliefert werden, mit dem im Bedingungscode- Umbenennungsregister 26 gespeicherten Zählwert übereinstimmen und über RC0/RC1 (Leitung 102, Leitung 103) kein neuer CC- Zeiger angefordert wird.
In der vorstehenden Beschreibung wurde die Erfindung mit Bezug auf eine bestimmte, beispielhafte Ausführungsform dargelegt. Es ist jedoch offensichtlich, dass verschiedene Ab- und Veränderungen daran vorgenommen werden können, ohne vom umfassenderen Wesen und Umfang der Erfindung, die in den beigefügten Ansprüchen dargelegt ist, abzuweichen. Die Beschreibung und die Zeichnungen sind folglich als zur Veranschaulichung dienend und nicht als einschränkend zu betrachten.
LISTE DER BEZUGSZEICHEN
10
Bedingungscode-(CC-)Matrix
12
Bedingungscode-(CC-)Umbenennungsblock
14
Reservierungsstation
16
Umordnungspuffer (ROB)
18
Befehlscachespeicher
20
Vordecodiereinheit
22
Verzweigungseinheit
24
Einheit für ganze Zahlen
26
Bedingungscode-(CC-)Änderungszählregister
28
Vergleichsblock
30
Sperrsteuerung
32
Architekturdefinierter Bedingungscode-(CC-)Puffer
40
Negier-Schaltung
42
ODER-Schaltung
44
UND-Schaltung
46
gültiger Bedingungscode-(CC-)Zwischenspeicher
101
bis
127
Leitungen

Claims (8)

1. Verfahren zur Ausführung von Befehlen in einem Datenverarbeitungssystem, das einen Bedingungscodepuffer (10) zur Speicherung von bedingungscodebezogenen Daten, ein Bedingungscode-Zählregister (26) zur Speicherung von bedingungscodebezogenen Daten, eine Vielzahl von Ausführungseinheiten (22, 24) und eine Befehlsausgabeeinheit zur Ausgabe der Befehle an die Vielzahl der Ausführungseinheiten (22, 24) umfasst, wobei das Verfahren die folgenden Schritte umfasst:
Zuordnen eines vorher festgelegten Werts des Zählerbereichs und eines Speicherplatzes im Bedingungscodepuffer (10) zu dem Befehl;
Erhöhen des Zählwerts in dem Bedingungscode-Zählregister (26) nur, wenn der Befehl ein Bedingungscode-Schreibbefehl ist;
Ausführen eines vorhergehenden Befehls in der ausgewählten der Vielzahl der Ausführungseinheiten (22, 24);
Schreiben von Bedingungscodedaten in den Bedingungscodepuffer (10), um das Ergebnis der Ausführung des vorhergehenden Befehls widerzuspiegeln;
im Anschluss an die Vordecodierung des vorhergehenden Befehls Vordecodieren eines nachfolgenden Befehls und Ausführen des nachfolgenden Befehls nur, wenn der Zählerwert des nachfolgenden Befehls gleich dem im Bedingungscode-Zählregister (26) gepufferten Wert ist,
wobei der Wert des Bedingungscode-Zählregisters (26) von dem Speicherplatz des Bedingungscodes des vorhergehenden Befehls im Bedingungscodepuffer (10) abgeleitet wird.
2. Verfahren nach Anspruch 1, wobei der Bedingungscodepuffer (10) als Matrix organisiert ist und der Wertebereich des Zählregisters (26) der Vielzahl der Speicherplätze im Bedingungscodepuffer (10) entspricht.
3. Verfahren nach Anspruch 2, wobei Informationen in einem Eintrag eines Befehls im Bedingungscodepuffer (10) gespeichert werden, die anzeigen, dass die Bedingungscodedaten gültig sind, wenn der vorhergehende Bedingungscode-Schreibbefehl erfolgreich ausgeführt wurde.
4. Verfahren nach Anspruch 3, wobei zwei Befehle in zwei Verzweigungseinheiten parallel verarbeitet werden.
5. Datenverarbeitungssystem, das einen Bedingungscodepuffer (10) zur Speicherung von Bedingungscodedaten, ein Bedingungscode-Zählregister (26) zur Speicherung von bedingungscodebezogenen Daten, eine Vielzahl von Ausführungseinheiten (22, 24) und eine Befehlsausgabeeinheit zur Ausgabe der Befehle an die Vielzahl der Ausführungseinheiten umfasst, aufweisend Mittel zur Durchführung des Verfahrens nach Anspruch 1.
6. System nach Anspruch 5, wobei der Bedingungscodepuffer (10) als Matrix organisiert ist und der Wertebereich des Bedingungscode-Zählregisters (26) der Vielzahl der Speicherplätze im Bedingungscodepuffer (10) entspricht.
7. System nach Anspruch 6, wobei Informationen in einem Eintrag eines Befehls im Bedingungscodepuffer (10) gespeichert werden, die anzeigen, dass die Bedingungscodedaten gültig sind, wenn der vorhergehende Bedingungscode-Schreibbefehl erfolgreich ausgeführt wurde.
8. System nach Anspruch 7, wobei zwei Befehle in zwei Verzweigungseinheiten parallel verarbeitet werden.
DE1999129050 1998-08-19 1999-06-25 Verfahren zur Umbenennung von Bedingungscodedaten in einem Superskalar-Prozessorsystem Expired - Fee Related DE19929050C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP98115601 1998-08-19

Publications (2)

Publication Number Publication Date
DE19929050A1 DE19929050A1 (de) 2000-02-24
DE19929050C2 true DE19929050C2 (de) 2002-01-03

Family

ID=8232482

Family Applications (1)

Application Number Title Priority Date Filing Date
DE1999129050 Expired - Fee Related DE19929050C2 (de) 1998-08-19 1999-06-25 Verfahren zur Umbenennung von Bedingungscodedaten in einem Superskalar-Prozessorsystem

Country Status (1)

Country Link
DE (1) DE19929050C2 (de)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0518420A2 (de) * 1991-06-13 1992-12-16 International Business Machines Corporation Rechnersystem zur gleichzeitigen Ausführung mehrfachen Befehlen welche nicht in vorgesehener Reihenfolge erfolgen
WO1996025705A1 (en) * 1995-02-14 1996-08-22 Fujitsu Limited Structure and method for high-performance speculative execution processor providing special features

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0518420A2 (de) * 1991-06-13 1992-12-16 International Business Machines Corporation Rechnersystem zur gleichzeitigen Ausführung mehrfachen Befehlen welche nicht in vorgesehener Reihenfolge erfolgen
WO1996025705A1 (en) * 1995-02-14 1996-08-22 Fujitsu Limited Structure and method for high-performance speculative execution processor providing special features

Also Published As

Publication number Publication date
DE19929050A1 (de) 2000-02-24

Similar Documents

Publication Publication Date Title
DE69434728T2 (de) Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel
DE19781995C2 (de) Prozessor mit einer Wiederhol-Architektur
DE69133302T2 (de) Registerabbildung in einem einzigen Taktzyklus
DE69932066T2 (de) Mechanismus zur "store-to-load forwarding"
DE69433621T2 (de) Geraet zur verarbeitung von befehlen in einem rechnersystem
DE10084556B4 (de) Optimierte Ausführung von statisch sehr wahrscheinlich vorhergesagten Verzweigungsbefehlen
DE68929483T2 (de) Datenprozessor mit einer Befehlseinheit, die einen Cachespeicher und einen ROM aufweist.
DE112013005882B4 (de) Ausführung eines Gegenverzweigungspfades auf Grundlage eines Zuverlässigkeitsschwellenwertes für eine Verzweigungsvorhersage
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE69332663T2 (de) Datenprozessor mit einem Cachespeicher
DE112007000812B4 (de) Vorrichtung mit einer speichereinheit und drei logiken, verfahren zum durchführen der verfahrensschritte der vorrichtung undsystem mit einem speicher und einem prozessor zur bereitstellung eines effizienten mechanismus‘ für transaktionalspeicherausführungen in out-of-order-prozessoren
DE69727773T2 (de) Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor
DE2161886C2 (de) Befehlsausführungseinheit in einer elektronischen Datenverarbeitungszentrale für die gleichzeitige Verarbeitung mehrerer Befehle
DE60009151T2 (de) Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung
DE2714805A1 (de) Datenverarbeitungssystem
DE102004013676A1 (de) Schleifenbetrieb mit null Overhead in einem Mikroprozessor mit Anweisungspuffer
DE2657848A1 (de) Steuereinheit fuer ein datenverarbeitungssystem
DE112005002173T5 (de) Prozessor mit Abhängigkeitsmechanismus, um vorherzusagen, ob ein Ladevorgang von einem älteren Schreibvorgang abhängig ist
DE2902465A1 (de) Datenverarbeitungsanordnung
DE112005001515T5 (de) Verfahren und Vorrichtung zur spekulativen Ausführung von nicht kollisionsbehafteten Sperrbefehlen
DE3106881C2 (de) Datenverarbeitungseinrichtung
DE102013206336A1 (de) Cache-Steuerung zur Reduktion von Transaktions-Rollback
DE2856680C2 (de)
DE102006039747A1 (de) Verfahren für Kontextzustandsmanagement
DE4345028A1 (de) Vorrichtung zur Reduzierung von Verzögerungen aufgrund von Verzweigungen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee