DE19929051C2 - Registerumbenennungsverfahren für 32- und 64-Bit-Befehle in einem Programm - Google Patents
Registerumbenennungsverfahren für 32- und 64-Bit-Befehle in einem ProgrammInfo
- Publication number
- DE19929051C2 DE19929051C2 DE19929051A DE19929051A DE19929051C2 DE 19929051 C2 DE19929051 C2 DE 19929051C2 DE 19929051 A DE19929051 A DE 19929051A DE 19929051 A DE19929051 A DE 19929051A DE 19929051 C2 DE19929051 C2 DE 19929051C2
- Authority
- DE
- Germany
- Prior art keywords
- register
- bit
- bits
- instruction
- instructions
- 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 description 30
- 238000012545 processing Methods 0.000 claims description 14
- 230000008901 benefit Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 241000223290 Hypherpes complex Species 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000010485 coping Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000004377 microelectronic Methods 0.000 description 1
- 239000004065 semiconductor Substances 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
Description
Die vorliegende Erfindung betrifft im allgemeinen ein
verbessertes Datenverarbeitungssystem und insbesondere ein
Verfahren und System, das innerhalb des
Datenverarbeitungssystems mit gemischten Befehlssätzen, z. B.
32-Bit- und 64-Bit-Befehlen, arbeitet. Insbesondere betrifft
die vorliegende Erfindung noch ein Verfahren und System zum
Umbenennen von Registern des Systems, wenn sie für die
gleichzeitig ablaufende Ausführung von 32-Bit- und 64-Bit-
Befehlen benötigt werden, wobei Datenabhängigkeiten zwischen
diesen vorliegen.
Aufgrund der unvermindert hohen Nachfrage nach
leistungsfähigeren Datenverarbeitungssystemen haben
Zentraleinheit- (CPU-) Entwickler superskalare
Datenverarbeitungssysteme realisiert, die mehrere unabhängige
Befehle in Befehlsketten zur Mehrfachausführung ausgeben
können, in denen mehrere Befehle parallel ausgeführt werden.
Ein Beispiel für eine solche superskalares
Datenverarbeitungssystem ist der superskalare Mikroprozessor,
der unter dem Warenzeichen "PowerPC" von IBM Microelectronics
und Motorola Semiconductor vertrieben wird. Die Architektur von
"PowerPC" wird in verschiedenen Benutzerhandbüchern, darunter
'PowerPC 603-RISC MICROPROCESSOR USER'S MANUAL', Copyright
1994, IBM Teile-Nr. MPR603UMU-01, ausführlicher beschrieben.
Im superskalaren Mikroprozessor werden Befehle aus einem
Befehlscachespeicher abgerufen und in der Programmreihenfolge
an eine aus einer Vielzahl von Ausführungseinheiten verteilt,
wobei der Befehl von einer für den bestimmten Befehlstyp
geeigneten Ausführungseinheit ausgeführt wird.
Gleitkommabefehle werden beispielsweise an eine oder mehrere
Gleitkomma-Ausführungseinheiten verteilt, während
Festkommabefehle an eine oder mehrere Einheiten für ganze
Zahlen verteilt werden. Obwohl Befehle in der
Programmreihenfolge verteilt werden, kann die Befehlsausführung
je nach Verfügbarkeit von Ausführungseinheiten und anderen
Ressourcen des Datenverarbeitungssystems außerhalb der
Reihenfolge erfolgen.
Im Superskalarprozessor können Befehle zugeteilt, ausgeführt
und vor anderen, zuvor zugeteilten Befehlen "beendet" werden.
Um zu verhindern, dass eine Befehlsausführung außerhalb der
Reihenfolge zum falschen Zeitpunkt Daten in ein
architekturdefiniertes Register stellt, wird die
Befehlsausführung von einer Beendigungseinheit in der
Programmreihenfolge "beendet". Folglich kann ein anschließend
zugeteilter Befehl "beendet" werden, bevor ein zuvor
zugeteilter Befehl beendet wird, jedoch kann der anschließend
zugeteilte Befehl nicht vor der Beendigung des zuvor
zugeteilten Befehls "beendet" werden.
Wie nach dem Stand der Technik bekannt ist, enthält "PowerPC"
Registerumbenennungsverfahren zum Aufheben von
Datenabhängigkeiten zwischen Befehlen, die nach dem Durchlauf
durch die Verteilungseinheit aufeinanderfolgen. Logische
Register werden in einer Zuordnungsliste einer Vielzahl
physischer Register zugewiesen, so dass sie an eine Vielzahl
von Reservierungsstationen weitergeleitet werden können, wobei
jede zur Lieferung von auszuführenden Befehlen an eine
Ausführungseinheit vorgesehen ist.
Aufgrund des steigenden Bedarfs zur Adressierung einer
Datenmenge von mehr als 4 Gigabyte - wobei der maximale
Adressraum mit 32 Bit adressierbar ist - benötigt die
Adressenkalkulation Register und Rechenwerke (ALU), die
Adressdaten in der nächsthöheren Schrittgröße von 64-Bit-
Adressen verarbeiten können. Es besteht jedoch ein spezieller
Bedarf zur Bearbeitung von 32-Bit- und 64-Bit-
Benutzungsanweisungen - gemischte Befehlssätze - in einem
Programm.
Im allgemeinen lassen 32-Bit-Befehle den oberen Teil eines 64-
Bit-Registers unverändert, nachfolgende 64-Bit-Befehle
verwenden die gesamte Registergröße mit den von 32-Bit-Befehlen
bewirkten Änderungen.
Eine Registerumbenennung, wie sie zur Ausführung spekulativer
Befehle verwendet wird, macht das Schreiben neu erzeugter
Ergebnisdaten in ein neues physisches Register erforderlich,
wodurch gewährleistet wird, dass architekturdefinierte logische
Register zum Sperrzeitpunkt in Programmreihenfolge gehalten
werden können und dass ein Mittel zum Löschen fehlerhaft
ausgeführter Befehle vorhanden ist.
Die Ergebnisdaten der vorhergehenden 32-Bit-Befehle können
nicht verwendet werden, weil aufeinanderfolgende 32-Bit-LADE-
Befehle eine Quellenabhängigkeit vom vorhergehenden LADE-Befehl
aufweisen würden. Alle 32-Bit-LADE-Befehle würden in der
korrekten Reihenfolge ausgeführt: Jeder LADE-Befehl müsste
warten, bis der vorhergehende seine Ergebnisdaten verarbeitet
hat, die im nachfolgenden Befehl als Quelle des Inhaltes des
oberen Registerteils benötigt werden.
Eine einfache 64-Bit-/32-Bit-Registerumbenennung würde ein 64-
Bit-Register in ein oberes und ein unteres Teilregister spalten
und beide Register gesondert umbenennen. Diese Lösung würde
jedoch die Umbenennungslogik verdoppeln, wodurch die Zykluszeit
des Prozessors möglicherweise beeinflusst wird.
In US-Patent Nr. 5,442,762 von Fujitsu ist ein Verfahren und
System zum Ausführen von Instruktionen mit verschiedenen
Formaten in einer RISC-Architektur offenbart, bei dem zur
Vermeidung von Registerspeicher-Verschwendung und zur
Vermeidung dass mehrere Instruktionen verwendet werden müssen,
um einen großen Satz von sogenannten unmittelbaren Daten, daß
heißt, im Adressteil eines Befehls direkt enthaltenen Daten,
ein sogenannter Typ-Code vorgeschlagen wird, der die
verschiedenen Anweisungen charakterisiert, wodurch sofort aus
dem Typ-Code erkannt werden kann, wieviel Registerplatz für die
jeweilige Anweisung benötigt wird. Allerdings ist kein Hinweis
darauf gegeben, wie ein Register-Umbenennungsverfahren zur
gleichzeitigen Verwendung von gemischten Sätzen von Befehlen
mit großer und geringer Anzahl von Bits durchführbar wäre, denn
das Dokument befaßt sich nicht mit Register-Umbenennung und
gleichzeitig mit der Bewältigung der Daten-Abhängigkeiten bei
der sogenannten 'out-of-order'-Verarbeitung.
Im US-Patent Nr. 5,481,693 wird ein Verfahren vorgeschlagen,
bei dem es möglich ist, gleichzeitig sogenannte RISC-
Anweisungen und sogenannte CISC-Anweisungen auszuführen. Dies
wird dadurch erreicht, daß für die beiden unterschiedlichen
Anweisungstypen bestimmte Register gemeinsam benutzt werden.
Dies wird insbesondere dadurch erreicht, daß bestimmte Flags
oder Bedingungs-Code-Register, die jeweils für CISC- oder RISC-
Anweisungen spezifisch sind, zusammengefaßt werden, so daß die
CISC- und RISC-Anweisungen dieselben, zusammengefaßten flag-
Register updaten, wenn entsprechende Berechnungen ausgeführt
werden. Die Offenbarung befaßt sich jedoch nicht mit der
Umbenennung von Registern, wie es bei 'out of order'-
Verarbeitung notwendig ist.
US-Patent Nr. 5,613,132 offenbart eine technische Lehre zum
Umbenennen von Gleitkomma- und Integer-Registern innerhalb
eines superskalaren Mikroprozessors. Eine Register-alias-
Tabelle (RAT) wird vorgeschlagen, um Integer- und
Gleitkommaregister und flag-Register umzubenennen, um eine
größere Anzahl von physikalischen Registern zu bekommen, als
gewöhnlich innerhalb einer gegebenen Makro-Architektur zu
erwarten wäre, um dadurch Probleme beim Auflösen von
Datenabhängigkeiten zu lösen. Es wird jedoch kein Hinweis
darauf gegeben, wie Datenabhängigkeiten bei der 'out of order'-
Verarbeitung von Befehlen unterschiedlicher Länge aufgelöst
werden können.
Die Aufgabe der Erfindung besteht darin, die Ausführung von 32-
Bit-LADE-Befehlen auch bei vorhandenen Datenabhängigkeiten von
einem vorhergehenden 64-Bit-Befehl außerhalb der Reihenfolge
und parallel in verschiedenen Ladeeinheiten jedesmal zu
ermöglichen, wenn der obere Teil eines 64-Bit-Registers
verfügbar ist.
Ein zusätzlicher Vorteil der Erfindung ist die Realisierung des
vorgeschlagenen Verfahrens für gemischte Befehlssätze aus 32-
Bit- bzw. 64-Bit-Befehlssätzen mit einem minimalen Aufwand an
Logikschaltungen.
Diese Aufgabe und andere Vorteile werden in einem
Datenverarbeitungssystem durch ein Verfahren und System zur
Umbenennung von Registern erzielt, in denen gemischte
Befehlssätze, z. B. 32-Bit- und 64-Bit-Befehle in einem Programm
gleichzeitig ablaufend ausgeführt werden.
Im Falle einer Befehlsfolge eines vorhergehenden 64-Bit-Befehls
und eines oder mehrerer 32-Bit-Befehle, die nach dem 64-Bit-
Befehl der Reihe nach ausgeführt werden müssen, und wobei der
32-Bit-Befehl eine Datenabhängigkeit vom vorhergehenden 64-Bit-
Befehl aufweist, wird der Rest des durch den vorhergehenden 64-
Bit-Befehl geänderten Registerbereichs in die entsprechende
Speicherposition in einem Zielregister des nachfolgenden 32-
Bit-Befehls kopiert, zumindest falls vom 32-Bit-Befehl dasselbe
logische Register wie vom vorhergehenden 64-Bit-Befehl
angegeben wird. Die Kopiequelle wird von der Registernummer
adressiert und in einer Liste (28) zwischengespeichert.
Der Grundgedanke ist das Kopieren des oberen Teils des 64-Bit-
Registers, der durch einen vorhergehenden 64-Bit-Befehl
geändert wurde, in das neu zugeordnete Zielregister eines 32-
Bit-Befehls. Der Kopiervorgang erfolgt ohne Leistungseinbußen
parallel zur Ausführung des 32-Bit-Befehls. In Falle eines 32-
Bit-LADE-Befehls wird die Quellenregisteradresse der
sogenannten 64-Bit-GPR-Datei (Universaldatei) entnommen, die
durch die physische Registernummer adressiert wird, die als
Zielregister des vorhergehenden 64-Bit-Befehls verwendet wird.
Bei einem 32-Bit-ALU-Befehl gibt der erste Operand Quelle und
Ziel des ALU-Vorgangs an; daher enthält der obere Teil des
ersten Quellenoperanden bereits die korrekten Kopierdaten.
Folglich müssen neu zugeordnete Register, die zum
Zwischenspeichern der Ergebnisdaten für einen 32-Bit-Befehl im
unteren Teil des Registers verwendet werden, mit den Daten des
vorhergehenden 64-Bit-Befehls aus dem oberen Teil geladen
werden, falls dasselbe logische Register angegeben wird.
Das beantragte Umbenennungsverfahren hat keinen Einfluss auf
die Nummer von Umbenennungsregistern und die Gültigkeitslogik
für Registerinhalte, d. h. komplexe Logikmakros wie die
Reservierungsstation bleiben unverändert.
Obiges sowie zusätzliche Merkmale und Vorteile der vorliegenden
Erfindung gehen aus der folgenden ausführlich geschriebenen
Beschreibung hervor.
Die neuen Merkmale, die als charakteristisch für die
vorliegende Erfindung angesehen werden, werden in den
angehängten Ansprüchen dargelegt. Die Erfindung selbst jedoch
sowie eine bevorzugte Art und Weise der Benutzung, weitere
Aufgaben und Vorteile davon, werden am besten mit Bezug auf die
folgende ausführliche Beschreibung einer veranschaulichenden
Ausführungsform verstanden, wenn sie in Verbindung mit den
begleitenden Zeichnungen gelesen wird, in denen:
Fig. 1 eine Tabelle darstellt, in der eine Folge eines
gemischten Satzes, z. B. 32-Bit- und 64-Bit-Befehle, beschrieben
wird, wobei einige Befehle von anderen Befehlen in der Folge
abhängen,
Fig. 2 ein vereinfachtes Übersichtsblockschaltbild des
Superskalarprozessors gemäß einer bevorzugten Ausführungsform
der vorliegenden Erfindung ist,
Fig. 3 eine schematische Darstellung des Verfahrens der
vorliegenden Erfindung mit Schwerpunkt auf dem Kopiervorgang
des oberen Teils des 64-Bit-Registers ist.
Mit Bezug auf die Figuren und insbesondere mit Bezug auf Fig.
1 wird eine Tabelle dargestellt, in der eine Folge eines
gemischten Satzes, z. B. 32-Bit- und 64-Bit-Befehle vorkommen.
Der Befehl Nr. 2 hängt von 1 ab (oberer Teil des logischen
Registers 4 muss verfügbar sein), und die Befehle Nr. 2, 3 bzw.
4 hängen von den Befehlen Nr. 1, 2 bzw. 3 ab (siehe Fig. 1).
Der 64-Bit-Befehl Nr. 1 stellt die Bits 00 bis 63 aus dem
Register 20 unverändert in die erste Operandenposition 12 : 00-
63, wobei vorausgesetzt wird, dass das logische Register 5 zum
physischen Register 20 umbenannt, und das logische Zielregister
4 als physisches Register 12 zugeordnet wird.
Der 32-Bit-Befehl Nr. 2 stellt die Bits 32 bis 63 aus dem
Register 21 an die erste Operandenposition 13 : 32-63 und kopiert
12 : 00-31 in 13 : 00-31. Dieser Kopiervorgang ist notwendig, weil
das Register 13 nur teilweise geändert wird und der obere Teil
des logischen Registers unverändert ist. Das logische Register
4 wird auf das physische Register 13 abgebildet, folglich
müssen die Inhalte beider Register gleich sein, wenn der Befehl
beendet ist.
Der 32-Bit-Befehl Nr. 3 stellt die Summe aus 13 : 32-63 und
20 : 32-63 in die erste Operandenposition 14 : 32-63 und kopiert
20 : 00-31 in 14 : 00-31.
Der 64-Bit-Befehl Nr. 4 stellt die Summe aus 13 : 00-63 und
14 : 00-63 in die erste Operandenposition 15 : 00-63.
Der 32-Bit-Befehl Nr. 5 stellt die Bits 21 : 32-63 in die erste
Operandenposition 16 : 32-63 und kopiert 20 : 00-31 in 16 : 00-31.
Folglich hängt der Befehl Nr. 3 vom Ergebnis des Befehls Nr. 2
ab, der Befehl Nr. 4 benötigt die Ergebnisse der Befehle Nr. 2
und 3, und der Befehl Nr. 5 benötigt das Quellenregister 1 des
Befehls Nr. 2.
Das neu zugeordnete Register des Befehls Nr. 2 speichert das
Ergebnis einer 32-Bit-Cachespeicher-Adresse (LADEN) in seinem
unteren Teil zwischen. Es wird mit den Daten aus dem oberen
Teil des vorhergehenden 64-Bit-Befehls geladen (in der Tabelle
von Fig. 1 durch den Buchstaben 'c' dargestellt), weil für
beide Befehle dasselbe logische Register Nr. 4 angegeben wurde.
Dieser Kopiervorgang 'c' des oberen Teils des 64-Bit-Registers
erfolgt ohne Leistungseinbuße parallel zur Ausführung des 32-
Bit-Befehls.
Der Befehl Nr. 3 greift auf den unteren Teil des physischen
Registers Nr. 13 zu, folglich wird er nicht durch den mit dem
Befehl Nr. 2 ausgeführten Kopiervorgang beeinflusst. Hier
erfolgt der Kopiervorgang durch das Laden des oberen Teils des
physischen Registers Nr. 20 in den oberen Teil des neu
zugeordneten Zielregisters Nr. 14.
Folglich kann der Befehl Nr. 4, dem die logischen Register Nr.
4 bzw. 5 zugewiesen wurden, auf alle 64 Bits seines ersten
Quellenregisters Nr. 13 sowie auf alle 64 Bits seines zweiten
Quellenregisters Nr. 14 zugreifen.
Während der nachfolgende Befehl Nr. 5 ausgeführt wird, wird der
obere Teil seines neu zugeordneten physischen Zielregisters Nr.
16 mit dem oberen Teil des Registers Nr. 14 gefüllt.
Mit Bezug auf Fig. 2, die ein Übersichtsblockschaltbild des
Superskalarprozessors gemäß einer bevorzugten Ausführungsform
der vorliegenden Erfindung ist, soll lediglich eine
zusammenfassende Übersicht hinsichtlich des Datenflusses
gegeben werden.
In der Zuteilungseinheit 10 werden die eintreffenden Befehle
vorcodiert und logischen Registern zugewiesen. Die Zuweisung
logischer zu physischen Registern wird durch die
Zuweisungsliste 12 gepuffert. Die Befehle werden verschiedenen
Reservierungsstationen 14 zugeteilt, wobei jede von ihnen
gesonderte Ausführungseinheiten 16 beliefert. Nach einer
Ausführung außerhalb der Reihenfolge werden die
Befehlsergebnisse in die GPR-DATEI 28 gestellt. Der
Beendigungsstatus der Befehle wird im Umordnungspuffer (ROB) 18
gespeichert, um im Falle fehlerhaft ausgeführter Befehle einen
architekturdefinierten Maschinenstatus zu gewährleisten. Die
Liste 20 für die korrekte Reihenfolge speichert diesen
architekturdefinierten Maschinenstatus zwischen und kann in die
Zuweisungsliste 12 kopiert werden, um die Ausführung mit einem
architekturdefinierten sicheren Status der Maschine nach einer
falschen spekulativen Ausführung erneut zu starten. Die
Sperrsteuerung 22 legt fest, welche Register freigegeben und
als solche in der Frei-Liste 24 markiert werden können. Diese
Informationen werden zur Zuweisungsliste 12 weitergeleitet, um
die Register, die für neu eintreffende Befehle verfügbar
gemacht werden sollen, erneut zu verwenden.
Es wird gezeigt, dass der Kopiervorgang gemäß einer bevorzugten
Ausführungsform der Erfindung in das oben beschriebene
zusammenfassende Schema eingebettet ist, wie es durch die 64-
Bit-GPR-Liste 28 und die Universalregister- (GPR-) Datei
realisiert wird, die nicht gesondert, sondern als Teil der
Ausführungseinheiten dargestellt wird.
Die Verwaltung der 64-Bit-GPR-Liste wird zusammen mit der
Steuerung für verfügbaren Registerinhalt als Hauptteil der
vorliegenden Erfindung betrachtet.
Zum Zuordnungszeitpunkt wird die Nummer des neu zugeordneten
64-Bit-Registers in die 64-Bit-GPR-Liste geschrieben. Sie wird
von derselben 64-Bit-Registernummer adressiert (Eins-zu-eins-
Suchfunktion).
Der Inhalt dieser Register wird auf "nicht verfügbar" gesetzt,
was bedeutet, dass nachfolgende 32-Bit-LADE-Befehle, die
dasselbe logische Register verwenden, warten, bis der
vorhergehende 64-Bit-Befehl ausgeführt wird. Ein nachfolgender
ALU-Befehl kann dieselbe Logik verwenden, was jedoch nicht
tatsächlich erforderlich ist, weil ein und dasselbe logische
Register Quelle und Ziel ist. Das umbenannte Quellenregister
könnte direkt verwendet werden, ein Suchen in der 64-Bit-GPR-
Liste 28 ist nicht erforderlich.
Neu zugeordnete 32-Bit-LADE-Befehle werden mit einer
Quellenabhängigkeit von diesem 64-Bit-Register in die
Reservierungsstation 14 geschrieben, machen jedoch keinen
Eintrag in der 64-Bit-GPR-Liste 28.
Zum Zeitpunkt der Befehlsausführung wird die Steuerung für
verfügbaren Registerinhalt in Abhängigkeit von der
Umgehungssteuerung der Ausführungsbefehlsverkettungen entweder
am Anfang oder am Ende eines 64-Bit-Befehls in der
Reservierungsstation 14 und in der 64-Bit-GPR-Liste 28 auf
"verfügbar" gesetzt, wodurch es ermöglicht wird, dass alle 32-
Bit-LADE-Befehle mit demselben logischen Zielregister wie der
vorhergehende 64-Bit-Befehl zur Ausführung bereitgestellt
werden.
32-Bit-Befehle machen weder für das Zielregister noch für die
Steuerung für verfügbaren Registerinhalt einen Eintrag in der
64-Bit-GPR-Datei 28.
Zum Sperrzeitpunkt schreiben alle 32-Bit-Befehle, die ein
Zielregister (teilweise) geändert haben, diese Registernummer
in die 64-Bit-GPR-Liste 28, die von der 64-Bit-Registernummer
des vorhergehenden 64-Bit-Befehls adressiert wird, der dasselbe
logische Register geändert hat. 64-Bit-Befehle können dasselbe
bewirken, jedoch besteht hierfür keine Notwendigkeit.
Das Bit für verfügbaren Registerinhalt bleibt unverändert (d. h.
es bleibt gesetzt, weil zum Sperrzeitpunkt das Register
verfügbar ist).
Dies gewährleistet, dass das anfänglich zugeordnete 64-Bit-
Register gesperrt und auf die Frei-Liste 24 gesetzt werden
kann, ohne die Speicherspur zu seinem korrekten Inhalt zu
verlieren. Es sei darauf hingewiesen, dass der Inhalt eines 64-
Bit-Zielregisters eines 32-Bit-Befehls zum Sperrzeitpunkt
verfügbar ist. Im allgemeinen erzeugt diese Maßnahme ein
Ersatzquellenregister für das anfänglich zugeordnete 64-Bit-
Register des auf die Frei-Liste 24 gesetzten 64-Bit-Befehls.
Im Falle von Ausnahmebedingungen oder Unterbrechungen wird die
Liste 20 für die korrekte Reihenfolge in die 64-Bit-GPR-Liste
28 kopiert.
Mit Bezug auf Fig. 3, die eine schematische Darstellung des
Verfahrens der vorliegenden Erfindung mit Schwerpunkt auf dem
Kopiervorgang des oberen Teils des 64-Bit-Registers zeigt, wird
der Kopiervorgang ausführlicher beschrieben.
Die GPR-Datei 30 wird über die Leitung 101 mit einer Matrix
adresse für einen Schreibvorgang zum GPR in eine Datei des C-
Registers 40 gesendet, falls die Übertragung von Ergebnisdaten
in das angegebene Register notwendig ist, wie in Fig. 1 für
die Befehle Nr. 1 und Nr. 4 gezeigt wurde. Die Ergebnisdaten
werden im Einlagerungsregister 32 gesammelt, das vom
Cachespeicher 33 oder vom 64-Bit-ALU 34 oder mit dem oberen
Wort, den Bits 0 bis 31, über die Leitungen 113, 108 bzw. 109
oder vom Cachespeicher oder vom ALU 34 über die Leitungen 114
und 108 geladen werden kann. Die Daten des oberen und unteren
Wortes werden durch 36 und 38 gemultiplext, wodurch die
Leitungen 110 und 111 erzeugt werden. Dieses
Einlagerungsregister wird benötigt, weil Daten aus dem
Cachespeicher oder dem ALU spät im Zyklus eintreffen. Das
Einlagerungsregister, das die Daten zwischenspeichert, wird vom
Multiplexer 36 und 38 gespeist. Es garantiert die Nutzung der
gesamten verfügbaren Zykluszeit zum Schreiben von Daten in die
GPR-Datei.
Die Adresse des 64-Bit-Zielregisters wird zum
Zuordnungszeitpunkt erstellt und in der Reservierungsstation
gespeichert, bis der Befehl zur Ausführung bereit ist. Sie
adressiert über die Leitung 102 die 64-Bit-GPR-Liste 28. Diese
erneut zugeordnete Adresse (103) wird für Lesevorgänge zum
Erhalten des Datenwertes D verwendet.
Der in diese Liste zu schreibende Inhalt eines 64-Bit-Registers
wird im Einlagerungsregister 32 verkettet; z. B. mit den Daten
eines 32-Bit-LADE-Befehls, der nur im unteren Teil des
Registers gültige Daten hat, und mit den von der GPR-Liste 28
über die Leitung 103 adressierten Daten D, die aus den oben
erwähnten Gründen der Zykluszeit im A/D-Register 42
zwischengespeichert und über den Datenbus 109 ins
Einlagerungsregister bewegt werden. Aus diesem Grund wird die
von der Leitung 101 abgeleitete Adresse verwendet, um die 64-
Bit-Daten in die GPR-Datei 30 zu schreiben.
Die Quellenadressen für einen Befehl mit zwei Quellenoperanden
werden in der Reservierungsstation gespeichert und über die
Leitungen 104 bzw. 105 dem ALU 34 zugeführt, nachdem sie im
A/D-Register 42 und im B-Register 44 zwischengespeichert
wurden, um die gesamte Zykluszeit zur Verarbeitung zu nutzen.
Im Falle eines 32-Bit-Befehls wird der untere Teil der
Ergebnisdaten dem ALU 34 entnommen und über den Datenbus 108
übertragen. Der obere Teil wird direkt dem A/D-Register 42
entnommen und über den Datenbus 109 zum Einlagerungsregister 32
übertragen, wo beide Datenteile verkettet und einen Zyklus
später in die GPR-Datei 30 geschrieben werden.
Im Falle eines 64-Bit-ALU-Befehls wird das 64-Bit-ALU-Ergebnis
über den Datenbus 108 in das Einlagerungsregister 32 und von
dort zurück in die GPR-Datei 30 übertragen.
Obwohl die vorhergehende Beschreibung der bevorzugten
Ausführungsform des Verfahrens und Systems der vorliegenden
Erfindung in ihren wesentlichen Aspekten beschrieben wurde, ist
außerdem eine andere, alternative Hardwarerealisierung der 64-
Bit-GPR-Liste möglich, ohne die 64-Bit-GPR-Liste zu verwenden:
Obwohl das 64-Bit-Quellenkopieregister nicht auf die Frei-Liste
24 gesetzt wird, wird die umbenannte Quellenadresse des Befehls
selbst verwendet.
Falls das 64-Bit-Quellenregister auf die Frei-Liste 24 gesetzt
wird, wird die Datei 20 für die korrekte Reihenfolge verwendet,
um die Nummer des Kopiequellenregisters zu erhalten.
Der Nachteil dieses Verfahrens ist diese zusätzliche Logik, die
benötigt wird, um festzustellen, wann das 64-Bit-
Quellenregister auf die Frei-Liste 24 gesetzt wird; zu diesem
Zeitpunkt beginnend, muss die Kopiequellenadresse der Datei für
die korrekte Reihenfolge entnommen werden. Die Datei 24 für die
korrekte Reihenfolge wird jedoch mit logischen Adressen mit der
benötigten umbenannten Adresse als Ausgabe adressiert.
In der vorhergehenden Patentbeschreibung wurde die Erfindung
mit Bezug auf die spezifischen beispielhaften Ausführungsformen
davon beschrieben. Es ist jedoch offensichtlich, dass
verschiedene Änderungen daran vorgenommen werden können, ohne
von Umfang und Wesensart der Erfindung abzuweichen, wie sie in
den angehängten Ansprüchen dargelegt wird. Die
Patentbeschreibung und die Zeichnungen müssen dementsprechend
als erläuternd und nicht als begrenzend betrachtet werden.
Claims (8)
1. Verfahren in einem Datenverarbeitungssystem zum Ausführen
gemischter Sätze von Befehlen, die eine große Anzahl und
eine geringe Anzahl von Bits umfassen, wobei das Verfahren
Register mit Bits gemäß den Befehlen mit großer Bitanzahl
verwendet, wobei der Registerrest außerhalb des Bereichs,
der den Befehlen mit geringer Bitanzahl entspricht, von
den Befehlen mit geringer Bitanzahl nicht verwendet wird,
wobei das Verfahren den folgenden Schritt umfasst:
Kopieren des Restes des Registerbereichs, der durch einen vorhergehenden Befehl mit großer Bitanzahl geändert wurde, in die entsprechende Position in einem Zielregister eines nachfolgenden Befehls mit geringer Bitanzahl, zumindest falls vom Befehl mit geringer Bitanzahl dasselbe logische Register angegeben wird, wie es vom vorhergehenden Befehl mit großer Bitanzahl angegeben wurde.
Kopieren des Restes des Registerbereichs, der durch einen vorhergehenden Befehl mit großer Bitanzahl geändert wurde, in die entsprechende Position in einem Zielregister eines nachfolgenden Befehls mit geringer Bitanzahl, zumindest falls vom Befehl mit geringer Bitanzahl dasselbe logische Register angegeben wird, wie es vom vorhergehenden Befehl mit großer Bitanzahl angegeben wurde.
2. Verfahren nach Anspruch 1, wobei der Bitbereich, mit dem
der Befehl mit großer Bitanzahl arbeitet, doppelt so groß
wie der Bitbereich ist, mit dem der Befehl mit geringer
Bitanzahl arbeitet.
3. Verfahren nach Anspruch 1, wobei die Befehle mit großer
Bitanzahl 64-Bit-Befehle und die Befehle mit geringer
Bitanzahl 32-Bit-Befehle sind und der Rest des
Registerbitbereichs der obere Teil des Registers ist.
4. Verfahren nach Anspruch 3, wobei der Schritt des Kopierens
des oberen Teils des Bitbereichs parallel zur Ausführung
des 32-Bit-Befehls erfolgt, der direkt oder nicht direkt
auf den 64-Bit-Befehl folgt.
5. Verfahren nach Anspruch 4, wobei die
Quellenregisteradresse, die den oberen Teil des
Bitbereichs darstellt, im Falle eines nachfolgenden 32-
Bit-LADE-Befehls einer Universalregisterliste (28)
entnommen wird, die von der physischen Registernummer
adressiert wird, die als Zielregister des vorhergehenden
64-Bit-Befehls verwendet wird.
6. Datenverarbeitungssystem, das gemischte Sätze von Befehlen
ausführt, die eine große Anzahl und eine geringe Anzahl
von Bits umfassen, wobei Register mit Bits gemäß den
Befehlen mit großer Bitanzahl verwendet werden, wobei der
Registerrest außerhalb des Bereichs, der den Befehlen mit
geringer Bitanzahl entspricht, von den Befehlen mit
geringer Bitanzahl nicht verwendet wird,
wobei das System folgendes umfasst:
Mittel zum Kopieren des Restes des Registerbereichs, der durch einen vorhergehenden Befehl mit großer Bitanzahl geändert wurde, in die entsprechende Position in einem Zielregister des nachfolgenden Befehls mit geringer Bitanzahl, zumindest falls vom Befehl mit geringer Bitanzahl dasselbe logische Register angegeben wird, wie es vom vorhergehenden Befehl mit großer Bitanzahl angegeben wurde.
Mittel zum Kopieren des Restes des Registerbereichs, der durch einen vorhergehenden Befehl mit großer Bitanzahl geändert wurde, in die entsprechende Position in einem Zielregister des nachfolgenden Befehls mit geringer Bitanzahl, zumindest falls vom Befehl mit geringer Bitanzahl dasselbe logische Register angegeben wird, wie es vom vorhergehenden Befehl mit großer Bitanzahl angegeben wurde.
7. System nach Anspruch 6, wobei das Mittel zum Kopieren
einen Puffer umfasst, in dem Adresseninformationen zum
Feststellen der Kopiequelle zwischengespeichert werden.
8. System nach Anspruch 7, wobei die Adresseninformationen
zum Feststellen der Kopiequelle in einer
Universalregisterliste (28) in Form der physischen
Registernummer zwischengespeichert werden, die als
Zielregister des vorhergehenden Befehls mit großer
Bitanzahl verwendet wird.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP98115600 | 1998-08-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19929051A1 DE19929051A1 (de) | 2000-02-24 |
DE19929051C2 true DE19929051C2 (de) | 2001-10-04 |
Family
ID=8232481
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19929051A Expired - Fee Related DE19929051C2 (de) | 1998-08-19 | 1999-06-25 | Registerumbenennungsverfahren für 32- und 64-Bit-Befehle in einem Programm |
Country Status (2)
Country | Link |
---|---|
US (1) | US6237076B1 (de) |
DE (1) | DE19929051C2 (de) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7340590B1 (en) * | 2003-12-11 | 2008-03-04 | Sun Microsystems, Inc. | Handling register dependencies between instructions specifying different width registers |
CA2684226A1 (en) * | 2009-10-30 | 2011-04-30 | Ibm Canada Limited - Ibm Canada Limitee | Eleminating redundant operations for common properties using shared real registers |
GB2478731B (en) * | 2010-03-15 | 2013-08-21 | Advanced Risc Mach Ltd | Operand size control |
US9626190B2 (en) * | 2010-10-07 | 2017-04-18 | Advanced Micro Devices, Inc. | Method and apparatus for floating point register caching |
US9250870B2 (en) * | 2014-03-14 | 2016-02-02 | International Business Machines Corporation | Automated creation of shim programs and interfaces |
US10719325B2 (en) * | 2017-11-07 | 2020-07-21 | Qualcomm Incorporated | System and method of VLIW instruction processing using reduced-width VLIW processor |
US10671497B2 (en) | 2018-01-19 | 2020-06-02 | International Business Machines Corporation | Efficient and selective sparing of bits in memory systems |
US11157276B2 (en) * | 2019-09-06 | 2021-10-26 | International Business Machines Corporation | Thread-based organization of slice target register file entry in a microprocessor to permit writing scalar or vector data to portions of a single register file entry |
US11119774B2 (en) | 2019-09-06 | 2021-09-14 | International Business Machines Corporation | Slice-target register file for microprocessor |
US11093246B2 (en) | 2019-09-06 | 2021-08-17 | International Business Machines Corporation | Banked slice-target register file for wide dataflow execution in a microprocessor |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5442762A (en) * | 1989-11-01 | 1995-08-15 | Fujitsu Limited | Instructing method and execution system for instructions including plural instruction codes |
US5481693A (en) * | 1994-07-20 | 1996-01-02 | Exponential Technology, Inc. | Shared register architecture for a dual-instruction-set CPU |
US5613132A (en) * | 1993-09-30 | 1997-03-18 | Intel Corporation | Integer and floating point register alias table within processor device |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2045789A1 (en) * | 1990-06-29 | 1991-12-30 | Richard Lee Sites | Granularity hint for translation buffer in high performance processor |
US5519841A (en) * | 1992-11-12 | 1996-05-21 | Digital Equipment Corporation | Multi instruction register mapper |
US5574928A (en) * | 1993-10-29 | 1996-11-12 | Advanced Micro Devices, Inc. | Mixed integer/floating point processor core for a superscalar microprocessor with a plurality of operand buses for transferring operand segments |
US5751985A (en) * | 1995-02-14 | 1998-05-12 | Hal Computer Systems, Inc. | Processor structure and method for tracking instruction status to maintain precise state |
-
1998
- 1998-08-28 US US09/141,892 patent/US6237076B1/en not_active Expired - Fee Related
-
1999
- 1999-06-25 DE DE19929051A patent/DE19929051C2/de not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5442762A (en) * | 1989-11-01 | 1995-08-15 | Fujitsu Limited | Instructing method and execution system for instructions including plural instruction codes |
US5613132A (en) * | 1993-09-30 | 1997-03-18 | Intel Corporation | Integer and floating point register alias table within processor device |
US5481693A (en) * | 1994-07-20 | 1996-01-02 | Exponential Technology, Inc. | Shared register architecture for a dual-instruction-set CPU |
Also Published As
Publication number | Publication date |
---|---|
DE19929051A1 (de) | 2000-02-24 |
US6237076B1 (en) | 2001-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE68929483T2 (de) | Datenprozessor mit einer Befehlseinheit, die einen Cachespeicher und einen ROM aufweist. | |
DE102007025397B4 (de) | System mit mehreren Prozessoren und Verfahren zu seinem Betrieb | |
DE2411963C3 (de) | Elektronische Datenverarbeitungsanlage mit einer Prioritätssteuerschaltung mit änderbaren Steuerblöcken | |
DE2714805C2 (de) | ||
DE69308548T2 (de) | Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor. | |
DE3686991T2 (de) | Mechanismus fuer parallele speicherdatenabholung und befehlsausfuehrung in einem prozessor mit reduziertem befehlssatz. | |
DE68927492T2 (de) | Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten | |
DE69133302T2 (de) | Registerabbildung in einem einzigen Taktzyklus | |
DE69311330T2 (de) | Befehlsablauffolgeplanung von einem risc-superskalarprozessor | |
DE69820027T2 (de) | Vorrichtung zur ausführung virtueller maschinenbefehle | |
DE3750935T2 (de) | Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner. | |
DE3685913T2 (de) | Vektorenverarbeitung. | |
DE2847934A1 (de) | Datenverarbeitungseinrichtung mit einem mikrobefehlsspeicher | |
DE1499200B2 (de) | Datenverarbeitungsanlage mit vorranggesteuerter programm unterbrechung | |
DE19983098B4 (de) | Mehrfach-Bitanzeige zur Behandlung von Schreib-nach-Schreib-Fehlern und zur Eliminierung von Bypass-Komparatoren | |
DE112005002370T5 (de) | Ausführung von Kontrollbefehlen in redundanten Multithreadingumgebungen | |
DE2318069A1 (de) | Rechnersteuersystem unter verwendung von mikroprogrammierung und statisch/dynamischer erweiterung von steuerfunktionen mittels festverdrahteter logischer matrix | |
DE1549480A1 (de) | Datenverarbeitungsanlage | |
DE19929051C2 (de) | Registerumbenennungsverfahren für 32- und 64-Bit-Befehle in einem Programm | |
DE69831282T2 (de) | Verwaltung von umbenannten Register in einem superskalaren Rechnersystem | |
DE2458259A1 (de) | Datenverarbeitungssystem zum vergleichen verschiedener datenstrukturen | |
DE3852432T2 (de) | Befehlssteuerungsvorrichtung für ein Computersystem. | |
DE2245284A1 (de) | Datenverarbeitungsanlage | |
DE2702722A1 (de) | Instruktionsinterpretation in elektronischen datenverarbeitungsanlagen | |
DE10303053A1 (de) | Registerumbenennung zum Reduzieren einer Umgehung und Erhöhen einer scheinbaren physischen Registergröße |
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 |