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

Verfahren zur Umbenennung von Bedingungscodedaten in einem Superskalar-Prozessorsystem

Info

Publication number
DE19929050A1
DE19929050A1 DE1999129050 DE19929050A DE19929050A1 DE 19929050 A1 DE19929050 A1 DE 19929050A1 DE 1999129050 DE1999129050 DE 1999129050 DE 19929050 A DE19929050 A DE 19929050A DE 19929050 A1 DE19929050 A1 DE 19929050A1
Authority
DE
Germany
Prior art keywords
condition code
instruction
command
data
buffer
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.)
Granted
Application number
DE1999129050
Other languages
English (en)
Other versions
DE19929050C2 (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 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 daher eine Aufgabe der vorliegenden Erfindung, ein verbessertes Datenverarbeitungssystem bereitzustellen.
Es ist eine weitere Aufgabe der vorliegenden Erfindung, ein verbessertes Verfahren und ein verbessertes System zur Umbenennung von Bedingungscodedaten innerhalb des Datenverarbeitungssystems bereitzustellen.
Es ist noch eine weitere Aufgabe der vorliegenden Erfindung, ein Verfahren und ein System zur Umbenennung von Bedingungscodedaten bereitzustellen, so dass mehrere Verzweigungsbefehle, die von dem aktuellen Bedingungscode abhängig sind, in verschiedenen Verzweigungseinheiten parallel ausgeführt werden können.
Die vorstehenden Aufgaben werden 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 Bezug nehmend 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-Umbenennungs­ block 12 insbesondere für den zuletzt angegebenen Bedingungs­ codezeiger 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 Bezug nehmend 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-Umbenennungsregisters (Änderungszählers) 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.
Bezugszeichenliste
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 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 Zählregister (26) gepufferten Wert ist;
wobei der Wert des Zählregisters von dem Speicherplatz des Bedingungscodes des vorhergehenden Befehls im Bedingungs­ codepuffer (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, der anzeigt, 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, wobei das System des Weiteren Folgendes umfasst:
Mittel, um dem Befehl einen vorher festgelegten Wert des Zählerbereichs und einen Speicherplatz im Bedingungscodepuffer (10) zuzuordnen;
Mittel, um den Zählwert in dem Zählregister (26) nur zu erhöhen, wenn ein Befehl ein Bedingungscode-Schreibbefehl ist;
Mittel, um den vorhergehenden Befehl in der ausgewählten der Vielzahl der Ausführungseinheiten auszuführen;
Mittel, um Bedingungscodedaten in den Bedingungscodepuffer (10) zu schreiben, um das Ergebnis der Ausführung des vorhergehenden Befehls widerzuspiegeln;
Mittel, um einen nachfolgenden Befehl im Anschluss an die Vordecodierung des vorhergehenden Befehls vorzudecodieren (20);
Mittel (26), um den nachfolgenden Befehl nur auszuführen, wenn der Zählerwert des nachfolgenden Befehls gleich dem im Zählregister (26) gepufferten Wert ist; und
Mittel, um den Wert des Zählregisters von dem Speicherplatz des Bedingungscodes des vorhergehenden Befehls im Bedingungscodepuffer (10) abzuleiten.
6. System nach Anspruch 5, wobei der Bedingungscodepuffer (10) als Matrix organisiert ist und der Wertebereich des 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, der anzeigt, 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 true DE19929050A1 (de) 2000-02-24
DE19929050C2 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)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0518420A3 (en) * 1991-06-13 1994-08-10 Ibm Computer system for concurrent processing of multiple out-of-order instructions
EP0815507B1 (de) * 1995-02-14 2013-06-12 Fujitsu Limited Struktur und verfahren für einen hochleistungsprozessor mit spekulativer befehlsausführung und speziellen funktionen

Also Published As

Publication number Publication date
DE19929050C2 (de) 2002-01-03

Similar Documents

Publication Publication Date Title
DE69329778T2 (de) System und verfahren zur handhabung von laden und/oder speichern in einem superskalar mikroprozessor
DE69032812T2 (de) Vorrichtung und Verfahren zur parallelen Verarbeitung
DE69331448T2 (de) Dataprozessor mit einem Cachespeicher
DE68929483T2 (de) Datenprozessor mit einer Befehlseinheit, die einen Cachespeicher und einen ROM aufweist.
DE68927492T2 (de) Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten
DE3210816C2 (de)
DE69932066T2 (de) Mechanismus zur "store-to-load forwarding"
DE69715328T2 (de) System und Verfahren zur Parallelisierung der Durchführung von Speichertransaktionen mittels mehreren Speichermodellen
DE3685913T2 (de) Vektorenverarbeitung.
DE69322064T2 (de) Verfahren und System zur Zuteilung mehrerer Befehle in einem superskalaren Prozessorsystem in einem einzigen Zyklus
DE19781995C2 (de) Prozessor mit einer Wiederhol-Architektur
DE69227465T2 (de) Cpu mit pipeline-einheit und effektiv-adressenrechnungseinheit mit möglichkeit zur beibehaltung von virtuellen operandenadressen.
DE19723065B4 (de) Halbleitereinrichtung und Computersystem
DE69308548T2 (de) Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
DE2161886C2 (de) Befehlsausführungseinheit in einer elektronischen Datenverarbeitungszentrale für die gleichzeitige Verarbeitung mehrerer Befehle
DE69327517T2 (de) Pipeline-Rechner mit Anzeigetafel
DE3588182T2 (de) Vorausschauende Speicherabrufmethode und System für Verzweigung mit Ausführungsbefehlen
DE69623146T2 (de) Verfahren und Vorrichtung zum Koordinieren der Benutzung von physikalischen Registern in einem Mikroprozessor
DE3851746T2 (de) Sprungvorhersage.
DE2714805A1 (de) Datenverarbeitungssystem
DE2657848A1 (de) Steuereinheit fuer ein datenverarbeitungssystem
DE2902465A1 (de) Datenverarbeitungsanordnung
DE69429612T2 (de) Schreibpuffer für einen superskalaren Mikroprozessor mit Pipeline
DE69030931T2 (de) Mehrfachsequenzprozessorsystem
DE102004013676A1 (de) Schleifenbetrieb mit null Overhead in einem Mikroprozessor mit Anweisungspuffer

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