DE19929050C2 - Verfahren zur Umbenennung von Bedingungscodedaten in einem Superskalar-Prozessorsystem - Google Patents
Verfahren zur Umbenennung von Bedingungscodedaten in einem Superskalar-ProzessorsystemInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 15
- 238000012545 processing Methods 0.000 claims abstract description 22
- 239000011159 matrix material Substances 0.000 claims abstract description 14
- 230000003111 delayed effect Effects 0.000 abstract description 6
- 230000004044 response Effects 0.000 abstract description 3
- 230000008859 change Effects 0.000 description 10
- 230000008901 benefit Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000004377 microelectronic Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30094—Condition code generation, e.g. Carry, Zero flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
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
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.
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.
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.
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.
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.
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:
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.
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.
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.
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)
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 |
-
1999
- 1999-06-25 DE DE1999129050 patent/DE19929050C2/de not_active Expired - Fee Related
Patent Citations (2)
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 |