DE19929051C2 - Registerumbenennungsverfahren für 32- und 64-Bit-Befehle in einem Programm - Google Patents

Registerumbenennungsverfahren für 32- und 64-Bit-Befehle in einem Programm

Info

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
Application number
DE19929051A
Other languages
English (en)
Other versions
DE19929051A1 (de
Inventor
Ute Gaertner
Klaus J Getzlaff
Oliver Laub
Erwin Pfeffer
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE19929051A1 publication Critical patent/DE19929051A1/de
Application granted granted Critical
Publication of DE19929051C2 publication Critical patent/DE19929051C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming

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

GRUNDLAGEN DER ERFINDUNG Technisches Gebiet
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.
Beschreibung der technischen Zusammenhänge
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.
AUFGABE DER ERFINDUNG
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.
ZUSAMMENFASSUNG UND VORTEILE DER ERFINDUNG
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.
KURZE BESCHREIBUNG DER ZEICHNUNGEN
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.
AUSFÜHRLICHE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORM
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.
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.
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.
DE19929051A 1998-08-19 1999-06-25 Registerumbenennungsverfahren für 32- und 64-Bit-Befehle in einem Programm Expired - Fee Related DE19929051C2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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