DE19929050A1 - Verfahren zur Umbenennung von Bedingungscodedaten in einem Superskalar-Prozessorsystem - Google Patents
Verfahren zur Umbenennung von Bedingungscodedaten in einem Superskalar-ProzessorsystemInfo
- 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
Links
- 239000013001 matrix buffer Substances 0.000 title 1
- 239000011159 matrix material Substances 0.000 claims abstract description 13
- 238000012545 processing Methods 0.000 claims description 19
- 238000000034 method Methods 0.000 claims description 12
- 230000008859 change Effects 0.000 description 11
- 230000003111 delayed effect Effects 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 230000001143 conditioned effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process 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
- 230000008569 process Effects 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
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 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.
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 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.
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:
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 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.
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.
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.
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)
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 |
-
1999
- 1999-06-25 DE DE1999129050 patent/DE19929050C2/de not_active Expired - Fee Related
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 |