DE19848742C2 - Registerumbenennung bei einem Prozessor, der Instruktionen ausserhalb der sequentiellen Reihenfolge bearbeiten kann - Google Patents

Registerumbenennung bei einem Prozessor, der Instruktionen ausserhalb der sequentiellen Reihenfolge bearbeiten kann

Info

Publication number
DE19848742C2
DE19848742C2 DE19848742A DE19848742A DE19848742C2 DE 19848742 C2 DE19848742 C2 DE 19848742C2 DE 19848742 A DE19848742 A DE 19848742A DE 19848742 A DE19848742 A DE 19848742A DE 19848742 C2 DE19848742 C2 DE 19848742C2
Authority
DE
Germany
Prior art keywords
register
physical
logical
registers
list
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
DE19848742A
Other languages
English (en)
Other versions
DE19848742A1 (de
Inventor
Ute Gaertner
Klaus J Getzlaff
Erwin Pfeffer
Hans-Werner Tast
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 DE19848742A1 publication Critical patent/DE19848742A1/de
Application granted granted Critical
Publication of DE19848742C2 publication Critical patent/DE19848742C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

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)

Description

Gebiet der Erfindung
Die Erfindung bezieht sich auf das Umbenennen und Zuordnen von Ressourcen in einem Verarbeitungssystem. Insbesondere gibt die Erfindung ein Verfahren und eine Vorrichtung zum dynamischen Verwalten der Zuweisung von physischen Registern zu logischen Registern an.
Hintergrund der Erfindung
Für eine lange Zeit haben Prozessoren Instruktionen in ihrer sequentiellen Reihenfolge verarbeitet. Dies impliziert, daß Instruktionen den Verarbeitungseinheiten des Prozessors in der gleichen Reihenfolge zugeleitet werden wie sie in der Programmfolge erscheinen, eine nach der anderen.
In solch einem System treten Lese- und Schreiboperationen für irgendeines der Register des Prozessors in genau der gleichen Reihenfolge auf wie durch das Programm angegeben. Daher existiert eine Eins-zu-eins-Entsprechung zwischen den Registern und ihren Werten. Zu jedem beliebigen vorgegebenen Zeitpunkt bei der Verarbeitung identifiziert ein Registerbezeichner genau den Wert, der in dem entsprechenden Register enthalten ist. Dieser Wert eines Registers stellt auch den aktuellen Maschinenzustand dar, und es kann auf ihn als auf den beabsichtigten Registerwert Bezug genommen werden.
Um einen größeren Instruktionsdurchsatz zu erreichen und daher eine höhere Leistung, wurden Prozessoren eingeführt, die die Verarbeitung von mehreren unabhängigen Instruktionen pro Taktzyklus ausgeben oder einleiten. Solche Prozessoren sind als Superskalarprozessoren bekannt. Mehrere Instruktionen können in einem einzigen Zyklus verarbeitet werden, solange als es keine Datenabhängigkeiten, prozeduralen Abhängigkeiten oder Betriebsmittelkonflikte gibt. Wenn solche Abhängigkeiten oder Konflikte vorhanden sind, kann nur die erste Instruktion in einer Folge verarbeitet werden. Als Folge können in einer Superskalararchitektur eine Anzahl von Funktionseinheiten nicht voll genutzt werden.
Der nächste Schritt bei der Entwicklung von Hochleistungsprozessoren ist in der Einführung einer Verarbeitung außer der Reihe zu erblicken. Prozessoren für die Verarbeitung außer der Reihe gehorchen nicht der Instruktionsreihenfolge beim Ausführen eines Programms und verarbeiten Instruktionen in einer anderen Reihenfolge als der sequentiellen Reihenfolge.
Aber wenn eine Instruktion A Zieldaten erzeugt und die genannten Zieldaten von einer Instruktion B als Quelldaten benötigt werden, muß diese Datenabhängigkeit beachtet werden. Wenn Instruktionen außer der Reihe ausgegeben werden, bricht die Entsprechung zwischen Registern und Werten zusammen. Einige Registerwerte, die einem logischen Register entsprechen, können parallel vorhanden sein, da jeder Schreibzugriff auf ein bestimmtes logisches Register eine neue Instanz des genannten Registers schafft.
Die Werte verschiedener Registerinstanzen dürfen nicht verwechselt werden. Daher müssen Registeranordnungen vorgesehen werden, die eine Vielzahl von Werten pro logischem Register festhalten und identifizieren können. Bevor Instruktionen zu irgendeiner der Verarbeitungseinheiten abgeschickt werden können, muß angegeben werden, welche Instanzen der adressierten logischen Register zu benutzen sind. Auf die Aufgabe der Identifizierung der aktuellen Speicherzelle, die in einem bestimmten Augenblick ein logisches Register darstellt, wird gewöhnlich Bezug genommen als auf "Registerumbenennung".
Eine neue Instanz eines bestimmten logischen Registers wird jedesmal geschaffen, wenn ein Schreibzugriff auf das genannte logische Register vorkommt. Daher erzeugt jede Instruktion, die irgendein Register modifiziert, eine neue physische Instanz des genannten Registers, und jeder neuen Instanz muß ein physisches Register in der Registeranordnung zugeordnet werden.
Beim Zuordnen eines neuen physischen Registers jedesmal, wenn ein logisches Register modifiziert wird, muß auch ein Mechanismus vorhanden sein, die alten Registerinstanzen loszuwerden. Andernfalls würde das System eine undefinierte Menge von Registerinstanzen akkumulieren. Eine Instanz kann zerstört werden, wenn ihr Wert ersetzt wird und es keine ausstehenden Bezugnahmen auf den genannten Wert gibt.
Wenn Instruktionen in ihrer sequentiellen Reihenfolge verarbeitet werden, existiert immer ein definierter "Zustand" des Prozessors. Dieser definierte Zustand muß für ein Programm, das unterbrochen wird, gespeichert werden, um die Möglichkeit von "genauen Unterbrechungen" vorzusehen. Für den Fall, daß eine Ausnahmebedingung vorkommt, muß der Prozessor in der Lage sein, zu dem genannten definierten Zustand zurückzukehren. Auch in dem Fall, daß eine Verzweigung falsch vorhergesagt wurde und verschiedene Instruktionen, die der Verzweigung folgten, spekulativ ausgeführt worden sind, muß der Prozessor in der Lage sein, zu einem wohldefinierten, nicht spekulativen Maschinenzustand zurückzukehren.
Die Frage erhebt sich, wie der genannte Zustand und die entsprechenden, beabsichtigten Registerwerte in einem System mit Verarbeitung außer der Reihe definiert werden. Selbst wenn Instruktionen außer der Reihe verarbeitet werden, ist es erwünscht, den beabsichtigten Zustand der Reihe nach weiterzuschalten.
Ein Weg zum Definieren eines beabsichtigten Reihenfolge- Zustandes ist der folgende: Wenn eine Instruktion vollendet ist und alle vorausgehenden Instruktionen auch vollendet sind, können die Ergebnisse der Instruktion als der Reihenfolge-Zustand des entsprechenden Registers gespeichert werden, und die Instruktion kann als "verabschiedet" angesehen werden. Daher kann der beabsichtigte Zustand eines Systems mit Verarbeitung außer der Reihe definiert werden durch die zuletzt vollendete Instruktion der fortlaufenden Folge vollendeter Instruktionen. Die entsprechenden, beabsichtigten Registerwerte sind die Werte in dem Augenblick, in dem die genannte Instruktion vollendet wurde. Im Fall von Ausnahmebedingungen und im Fall von falsch vorhergesagten Verzweigungen nimmt die Maschine die Instruktionsverarbeitung an dem genannten, beabsichtigten Zustand wieder auf.
Ein Konzept für sowohl die Fähigkeit, verschiedene Registerinstanzen zu handhaben als auch für das fortlaufende Weiterschalten des beabsichtigten Reihenfolge-Zustandes ist die Benutzung eines Umordnungspuffers in Kombination mit einer Registerdatei. Wenn eine Instruktion dekodiert wird, wird ihr ein Eintrag an der Spitze des Umordnungspuffers zugeordnet. Der genannte Umordnungspuffer ist implementiert als ein Zuerst-hinein zuerst-heraus-Pufferspeicher, abgekürzt als (FIFO = first-in-first-out). Wenn die Instruktion vollendet ist, wird ihr Ergebniswert in den zugeordneten Eintrag zurückgeschrieben. Wenn der Wert den Boden des Puffers erreicht und keine Ausnahmebedingung aufgetreten ist, wird er in die Registerdatei eingeschrieben. Wenn die Instruktion nicht vollendet ist, wenn sie den Boden erreicht, schaltet der Umordnungspuffer nicht weiter, bis die Instruktion vollendet ist. Während die spekulativen Werte der verschiedenen Registerinstanzen in dem Umordnungspuffer enthalten sind, hält die Registerdatei die beabsichtigten Registerwerte fest und definiert daher den Reihenfolge- Zustand. In dem Fall, daß eine Ausnahmebedingung oder eine Fehlvorhersage einer Verzweigung auftritt, wird der Umordnungspuffer verworfen, und es wird auf den Reihenfolge- Zustand zugegriffen.
Ein Nachteil dieser Lösung besteht darin, daß die Registerwerte von den Einträgen des Umordnungspuffer in die Registerdatei übertragen werden müssen. In dem Falle, daß eine präzise Unterbrechung auftritt, wird auf die Werte der genannten Registerdatei zugegriffen.
Es gibt eine Vielzahl verschiedener Lösungen, die eine besondere Registerdatei für das Festhalten der beabsichtigten Registerwerte benutzen. Die temporären Werte der verschiedenen Registerinstanzen können entweder, wie beschrieben, in dem Umordnungspuffer enthalten sein oder in dem Instruktionsfenster selbst oder in einer gesonderten temporären Registeranordnung. Alle diese Lösungen haben einen Nachteil gemeinsam: Registerwerte müssen von einem temporären Registerspeicher - unabhängig davon, wie der genannte Speicher implementiert ist - zu einer Registeranordnung oder einer Registerdatei übertragen werden, die die beabsichtigten Reihenfolge-Registerwerte festhält.
In der internationalen Anmeldung WO 9322722 A1, "A system and method for retiring instructions in a superscalar microprocessor" von J. Wang, S. Garg und T. Deosaran wird ein System und ein Verfahren angegeben, um sich sowohl den beabsichtigten Zustand als auch die Umbenennungsinstanzen der logischen Register eines Systems zur Verarbeitung außer der Reihe genau zu merken. Gemäß dem offenbarten Verfahren werden Ergebnisse von Instruktionen, die außer der Reihe ausgeführt werden, zunächst in einem temporären Pufferspeicher gespeichert, bis alle voraufgehenden Instruktionen ausgeführt worden sind.
Sobald alle voraufgehenden Instruktionen ausgeführt worden sind und ihre Ergebnisse der Reihe nach in einer Registeranordnung gespeichert worden sind, können die Ergebnisse der infragestehenden Instruktion in die Registeranordnung eingeschrieben werden und die Instruktion wird als erledigt angesehen. Um die Integrität der Daten der Registeranordnung aufrechtzuerhalten, werden die Ergebnisse von Instruktionen solange nicht in die Registeranordnung eingeschrieben, bis die Ergebnisse aller voraufgehenden Instruktionen eingeschrieben wurden. In dieser Weise wird der Maschinenzustand in sequentieller Reihenfolge aktualisiert. Die beschriebene Lösung umfaßt Mittel für das Zuordnen und Einschreiben von Instruktionsergebnissen in einen temporären Speicherplatz, für das Übertragen der Ergebnisse aus dem temporären Speicher in die Registeranordnung, so daß die Registeranordnung der Reihe nach aktualisiert wird, und für das Zugreifen auf sowohl den temporären Speicher als auch die Registeranordnung für nachfolgende Operationen.
Wieder erfolgt das Verabschieden der Registerwerte durch ihr Übertragen zu einer Registeranordnung, die die "endgültigen Registerwerte" festhält. Ein konstanter Datenverkehr zwischen der genannten endgültigen Registeranordnung ist notwendig.
In dem Fall, daß der aktuelle Wert eines bestimmten logischen Registers bestimmt werden muß, muß zuerst geprüft werden, ob es eine Instanz in der genannten temporären Registerdatei gibt. Falls es keine temporäre Instanz gibt, muß auf die genannte endgültige Registeranordnung zugegriffen werden. Dieser Datenzugriff in zwei Schritten erfordert sowohl Zeit als auch zusätzliche Logik.
Die US 5,675,759 betrifft ein Verfahren und eine Vorrichtung zur Verarbeitung von Instruktionen außer der sequentiellen Reihenfolge eines Instruktionsstroms. Eine in einem Mikroprozessor vorgesehene Register-Verwaltungs-Vorrichtung soll die Benutzung von im Mikroprozessor vorgesehenen physischen Registern koordinieren. Nach Erhalt einer Instruktion extrahiert die Vorrichtung logische Quellregister sowie logische Zielregister aus der Instruktion und weist dem Zielregister eine korrespondierende physische Adresse zu. Hierbei soll die Vorrichtung die frühere Beziehung zwischen dem logischen Register und einem anderen physischen Register speichern. Durch Speichern dieser früheren Beziehung soll der Vorrichtung ermöglicht werden, auf eine bestimmte Instruktion zurückzuschreiten, wenn eine Ausführungsausnahme auftritt.
Die Register-Verwaltungs-Vorrichtung 16 weist eine Register- Dateieinheit 30, eine Register-Regenerierungs-Dateieinheit 32, eine Freiliste-Einheit 34 sowie eine Kontrolleinheit 36 zur Steuerung der Register-Verwaltungs-Vorrichtung 16 auf. Die Register-Dateieinheit 30 soll die Komponente oder ein Satz von Komponenten in der Vorrichtung 16 sein, die hauptsächlich verantwortlich für das "mappen" bzw. Abbilden logischer Register auf physische Register und für die Speicherung von Daten ist. Die Register-Dateieinheit 30 weist eine Anzahl verschiedener Komponenten auf, die ein ROM 40, einen inhaltsadressierbaren Speicher (CAM) 42, ein Daten-RAM 44, ein Adreßgültigkeits-RAM (AV-RAM 46) und bevorzugt eine Vielzahl von Kontrollpunkt-RAMs 48 umfassen. Das ROM 40 speichert alle Register-Adreß-Identifizierer für alle physischen Register im Prozessor 10. Jeder der Adreß-Identifizierer soll auf einen Eintrag in dem Daten-RAM 44 zeigen, in dem Daten zusammen mit einem Daten-Gültigkeitsbit (DV-Bit) gespeichert sind, wobei die in dem RAM 44 gespeicherten Daten zu dem physischen Register-Identifizierer korrespondieren. Das CAM 42 in der Register-Dateieinheit 30 soll zur Speicherung logischer Registerwerte benutzt werden, die zu dem physischen Register- Identifizierer korrespondieren. Zusammen sollen das ROM 40, das CAM 42 und daß AV-RAM 46 einen Mechanismus zur schnellen und einfachen Zuordnung eines physischen Registers zu einem logischen Register ermöglichen.
Bei dem von der bekannten Verwaltungs-Vorrichtung benötigten CAM handelt es sich um einen gegenüber einem herkömmlichen Speicher, wie einem RAM, besonderen Speicher. Ein CAM (Content Adressable Memory), d. h. inhaltsadressierbarer Speicher bzw. Assoziativspeicher bezeichnet einen Speicher oder Speicherbaustein, bei dem eine Information nicht über eine Adresse, sondern über einen Abschnitt der Information selbst adressiert wird, also einen Teil des Speicherinhalts. Der CAM assoziiert dadurch weitere Daten mit dieser Teilinformation, so daß unter Umständen mehrere Informationen adressiert werden, die Adressierung also mehrdeutig sein kann. CAM- Speicher sind gegenüber RAM-Arrays deutlich schwieriger herzustellen und benötigen bei gleicher Speicherkapazität eine deutlich größere Chipfläche wegen zusätzlich benötigter Transistoren. Ein solcher Sonder-Speicher ist schon für sich allein aufwendig und damit teuer. Soll ein solcher Speicher sogar in einen Mikroprozessorchip implementiert werden, so müßte hierzu die Architektur des Mikroprozessors und dessen Herstellungsverfahren gegenüber bekannten Architekturen und Verfahren in aufwendiger Weise angepaßt werden.
Demgegenüber besteht die Aufgabe der Erfindung insbesondere darin, eine einfache Lösung für das Zuordnen einer willkürlichen Anzahl von physischen Registern zu einem bestimmten logischen Register anzugeben, während der beabsichtigte Zustand des logischen Registers genau festgehalten wird.
Die Aufgabe der Erfindung wird gelöst durch einen Prozessor nach Anspruch 1 für eine Verarbeitung außer der Reihe und durch ein Verfahren zum Zuordnen physischer Register nach Anspruch 6.
Eine Verbindungsliste wird eingeführt, die es erlaubt, ein physisches Register, das eine bestimmte Instanz des entsprechenden logischen Registers darstellt, mit dem physischen Register zu verketten, das die nächste Instanz des gleichen logischen Registers darstellt. Durch Hinzufügen und Entfernen von Verbindungen in dieser Verbindungsliste ist es möglich, die Zuordnung physischer Register zu logischen Registern dynamisch zu verwalten.
Zu jedem Zeitpunkt ist nur die minimale Anzahl der physischen Register einem bestimmten logischen Register zugeordnet.
Auf der anderen Seite können, wenn eine bestimmte Instruktionsfolge eine große Anzahl spekulativer Instanzen für ein bestimmtes logisches Register erfordert, diese zusätzlichen Instanzen gemäß der Erfindung durch einfaches Hinzufügen der entsprechenden Verbindungen zu der Verbindungsliste erstellt werden.
Die Verbindungsliste selbst ist eine kleine Anordnung. Daher ist der Umfang der zusätzlich erforderlichen Hardware gering.
Ein anderer Vorteil der Erfindung besteht darin, daß sowohl die physischen Register, die spekulative Instanzen darstellen, als auch die physischen Register, die Instanzen der Reihe nach darstellen, zusammen verwaltet werden. Dies erfolgt mittels einer Reihenfolge-Liste, die die physischen Register angibt, die tatsächlich den beabsichtigten Zustand der Maschine darstellen.
Dieser beabsichtigte Zustand wird auch für die Wiederherstellung benutzt, nachdem eine Ausnahmebedingung aufgetreten ist.
Der Vorteil des gemeinsamen Verwaltens spekulativer Instanzen und der Reihenfolge-Instanzen besteht darin, daß Datenübertragungen zwischen verschiedenen Anordnungen nicht mehr nötig sind. Dies spart eine Menge an Zeit.
Kurze Beschreibung Zeichnungen
Fig. 1 zeigt den allgemeinen Aufbau eines Systems zur Verarbeitung außer der Reihe.
Fig. 2 gibt ein Programmbeispiel, das außer der Reihe auszuführen ist. Um das zu tun, müssen die adressierten logischen Register in physische Register umbenannt werden.
Fig. 3 gibt eine genauere Ansicht eines Systems zur Verarbeitung außer der Reihe.
Fig. 4 zeigt, wie die Reservierungsstation und der Umordnungspuffer einander wechselseitig beeinflussen, um den Vollendungsstatus korrekt zu überwachen und genaue Unterbrechungen zu ermöglichen.
Fig. 5 zeigt, wie Registerinstanzen in dem Zuordnungsprozeß erstellt werden und wie sie in dem Übergabeprozeß entfernt werden.
Fig. 6A zeigt eine Schaltungsimplementierung des Verfahrens nach Fig. 5, die 4 Anordnungen umfaßt: eine Zuordnungsliste, eine Reihenfolge-Liste, eine Verbindungsliste und eine Frei-Liste.
Fig. 6B zeigt genauer, wie die Registerumbenennung und Zuordnung gemäß der Erfindung durchgeführt wird.
Fig. 7A gibt ein Beispiel eines Registerstatus.
Fig. 7B-Fig. 7E zeigen die Inhalte der Reihenfolge-Liste, der Zuordnungsliste, der Verbindungsliste und der Frei- Liste für den in Fig. 7A angegebenen Registerstatus.
Fig. 8A zeigt das Format eines Eintrags in die Reservierungsstation.
Fig. 8B zeigt den Registerbezeichner für die Datenfelder eines Eintrags der Reservierungsstation.
Fig. 9 zeigt den Aufbau einer Datei eines physischen Registers.
Genaue Beschreibung der Erfindung
In Fig. 1 ist der typische Aufbau eines Systems zur Verarbeitung außer der Reihe dargestellt. Instruktionen werden aus dem Instruktionsspeicher (100) abgerufen und der Reihe nach in dem Instruktions-Cache (101) zwischengespeichert. Als Nächstes werden die Instruktionen in ein allgemeines, internes Instruktionsformat dekodiert (102). Es gibt auch Lösungen, bei denen eine externe Instruktion in eine Anzahl kleinerer interner Instruktionen aufgebrochen wird, die dann außer der Reihe verarbeitet werden können. Die Instruktions-Dekodiereinheit (102) ist auch verantwortlich für die Auflösung der Abhängigkeit, was bedeutet, daß wirkliche physische Speicherzellen den logischen Registern zugeordnet werden müssen, die als Quellen und Ziele der entsprechenden Instruktionen benutzt werden. Auf dieser Stufe ist es unerläßlich, die verschiedenen Instanzen jedes logischen Registers, die im Verlauf der Programmausführung auftreten, genau zu verfolgen.
Die Vorhersage von Verzweigungen wird auch in der Instruktions-Dekodierstufe durchgeführt.
Die Instruktionen werden dann zu der Reservierungsstation (103) weitergeleitet. Für jede Instanz eines Zielregisters einer Instruktion wird ein Eintrag in den Umordnungspuffer (108) gemacht. Daher identifiziert der Umordnungspufferspeicher in der Reihenfolge des Auftretens, die die sequentielle Reihenfolge ist, alle die physischen Register, die Instanzen logischer Register darstellen. In der Reservierungsstation warten die Instruktionen, bis alle die Quelldaten, die sie benötigen, berechnet worden sind. In dem Fall, daß die Quelldaten, die durch eine bestimmte Instruktion benötigt werden, bereits als Zieldaten einer früheren Instruktion berechnet worden sind, sind diese Zieldaten in der Registerdatei (107) enthalten und können von dort erhalten werden. In dem Fall, daß die Quelldaten, die von einer bestimmten Instruktion benötigt werden, noch nicht ausgewertet worden sind, muß die Instruktion die Ergebnisse überwachen, die sich aus den verschiedenen Ausführungseinheiten ergeben.
In dem Fall, daß die gesamten Quelldaten einer bestimmten Instruktion angekommen sind, kann die Instruktion selbst, abhängig von ihrem Typ und abhängig von der Verfügbarkeit von Ausführungseinheiten, zu einer der Ausführungseinheiten abgeschickt werden. Im Fall einer Verzweigung muß die Instruktion zu der Verzweigungseinheit (104) abgeschickt werden, muß Ganzzahl-Arithmetik zu einer der Ganzzahl- Einheiten (105) geschickt werden, und Instruktionen, die auf den Speicher zugreifen, müssen zu einer der Lade-/ Speichereinheiten (106) geschickt werden. Daher wird jede Instruktion durch die entsprechende Funktionseinheit verarbeitet, und die Zieldaten der Instruktion können berechnet werden. Im Falle eines Speicherzugriffs schreibt die Lade-/Speichereinheit (106) entweder Daten über einen Daten-Cache (109) in einen Datenspeicher (110) oder empfängt Daten von ihm.
Der sogenannte "Übergabeprozeß" ist verantwortlich für das Verabschieden von Instruktionen, was bedeutet, daß Zielregisterwerte der genannten Instruktionen zu beabsichtigten Registerwerten werden. Instruktionen werden stets der Reihe nach übergeben. Daher definiert der Verabschiedungszeiger zusammen mit den beabsichtigten Registerwerten einen präzisen Zustand der Maschine. Dieser Maschinenzustand ist nicht mehr irgendwelchen Änderungen unterworfen. Er wird in sequentieller Reihenfolge fortgeschaltet. Daher sind präzise Unterbrechungen möglich.
Wenn Instruktionen, die ein und dasselbe Register lesen oder in es schreiben, ausgeführt werden, muß ihre sequentielle Reihenfolge aufrechterhalten werden. Wenn man nicht beabsichtigt, die Forderung nach sequentieller Ausführung zu befolgen, müssen zuerst Datenabhängigkeiten zwischen verschiedenen Instruktionen aufgelöst werden, die auf das gleiche Betriebsmittel zugreifen. Dies erfolgt durch Zuweisen verschiedener physischer Register zu verschiedenen Instanzen eines Betriebsmittels, wie z. B. eines logischen Registers. Dies wird "Registerumbenennung" genannt und ist eine der wesentlichen Merkmale jedes Systems mit Verarbeitung außer der Reihe.
Fig. 2 erläutert dies mittels eines Programmbeispiels. Das Auftreten verschiedener Instanzen des Registers R3 ist in der rechten Spalte der Fig. 2 angegeben.
In der Instruktion 200 werden die Inhalte der Register R2 und R3 ODER-verknüpft; das Resultat wird in das Register R2 zurückgeschrieben. Hier wird das Register R3 (das einzige, das wir ansehen) nur als ein Quellregister benutzt. Laßt uns daher diese Instanz von R3.7 aufrufen, wie das in der rechten Spalte angegeben ist.
Als Nächstes wird eine "bedingte Verzweigung" (201) ausgeführt. Die Bedingung, welche bestimmt, ob die Verzweigung vorzunehmen ist oder nicht, ist im Register M1 enthalten. Die Register R1 und R2 enthalten die Index- und Basiswerte, welche zusammen mit der Verschiebung benutzt werden, um die Sprungadresse zu berechnen. Falls die Verzweigung vorzunehmen ist, fährt die Ausführung des Programms an der Adresse fort, die durch R1, R2 und die Verschiebung angegeben ist.
Die nächste Instruktion (202) ist eine Ladeoperation, die Daten aus dem Speicher abruft. R4, R3 und die Verschiebung werden für das Berechnen der entsprechenden Speicheradresse benutzt. Der abgerufene Speicherinhalt ist im Register R3 zu speichern. Daher wird R3 zuerst als ein Quelloperand (für die Adreßberechnung) benutzt und dann als ein Ziel. Die als Quelle benutzte Registerinstanz ist die gleiche wie die, die in der Instruktion 200 benutzt wurde, die Instanz R3.7. Eine andere Instanz von R3 muß dem Ziel der Instruktion 202 zugeordnet werden, da die Ladeoperation den Inhalt von R3 modifiziert. Falls die Instruktionen, die der Instruktion 202 folgen, R3 als eine Quelle benutzen, dürfen sie daher den Wert der Instanz R3.7 wegen der genannten Modifikation nicht länger enthalten. Aus diesem Grund muß eine neue physische Instanz R3.8 des Registers R3 als Ziel der Lade-Operation 202 zugeordnet werden.
In 203 wird eine Additionsoperation ausgeführt. Die Adreßarithmetik bestimmt unter Benutzung von R1, R2 und einer Verschiebung eine Adresse, und der Inhalt der genannten Adresse wird dem Inhalt von R3 hinzugefügt. Das Resultat wird in R3 gespeichert. Daher wird R3 zuerst als eine Quelle benutzt und dann als ein Ziel. Da R3 jüngst in der Instruktion 202 modifiziert worden ist, muß der in der Instruktion 203 benutzte Wert des Quellregisters gleich dem Wert des Zielregisters der Instruktion 202 sein; es ist R3.8. Für das Ziel der Instruktion 203 muß ein neues physisches Register zugeordnet werden, und eine neue Registerinstanz R3.9 wird dem Ziel der Instruktion 203 zugeordnet.
Die Speicheroperation 204 speichert den Inhalt von R1 in einer Adresse, die durch R4, R3 und eine Verschiebung bestimmt ist. R3 wird als ein Quelloperand bei der Adreßarithmetik benutzt, die Instanz ist R3.9.
Als nächstes wird in 205 auf die durch R1, R2 und eine Verschiebung bestimmte Adresse zugegriffen und ihr Inhalt wird ODER-verknüpft mit dem Inhalt des Registers R3. Das Resultat der genannten ODER-Operation wird im R3 zurückgespeichert. Die Instanz des Quellregisters für die ODER-Operation ist R3.9 und R3.10 wird dem Ziel zugeordnet.
Die Instruktion 206 speichert den Inhalt von R3 an einer Speicheradresse, die durch R3 (das sowohl als Index als auch als Basis benutzt wird) und eine Verschiebung bestimmt ist. Die Quellregisterinstanz, die hier benutzt wird, ist R3.10.
In 207 tritt ein Ladezugriff auf die Adresse (R4, R3, Verschiebung) auf, wobei das Resultat der genannten Ladeoperation in R3 gespeichert wird. R3 wird sowohl als eine Quelle (für die Adreßarithmetik) als auch als ein Ziel benutzt. Während R3.10 die Instanz des Quellregisters der Instruktion ist, wird R3.11 als die neue Instanz des Zielregisters zugeordnet.
Wenn man auf diese Programmfolge schaut, wird es offensichtlich, daß in den unterschiedlichen Seqmenten 208- 212 des Instruktionsstromes verschiedene Instanzen von R3 benutzt werden. Die Instruktionen, die R3.10 als eine Quelle benutzen (206, 207), können nur ausgeführt werden, nachdem die Instanz R3.10 berechnet worden ist. Dies bedeutet, daß die Instruktion 205 ausgeführt sein muß, bevor entweder die Instruktion 206 oder 207 abgeschickt werden kann, aber es ist von keiner Bedeutung, ob die Instruktion 206 oder die Instruktion 207 zuerst abgeschickt wird.
Die Beschränkungen, die dem Ausführen von Instruktionen außerhalb ihrer sequentiellen Reihenfolge auferlegt werden, können wie folgt zusammengefaßt werden: Immer, wenn eine neue Registerinstanz als das Ziel einer Instruktion auftaucht, muß das Abschicken von Instruktionen, welche die genannte Registerinstanz als ein Quellregister benutzen, aufgeschoben werden, bis die genannte Registerinstanz berechnet worden ist.
In Fig. 3 ist ein genaueres Blockschaltbild eines Superscalar-Computersystems angegeben. Nachdruck wird auf die Behandlung der verschiedenen Registerinstanzen gelegt. Wie in Fig. 1 werden Instruktionen, die in einem Instruktionsspeicher (300) enthalten sind, zuerst zu einem Instruktions-Cache (301) übertragen. Als Nächstes werden die Instruktionen der Reihe nach zu einer Vordekodiereinheit (302) weitergeleitet, die die Instruktionen des externen Instruktionsstromes in ein allgemeines Instruktionsformat transformiert, das für eine Verarbeitung außer der Reihe geeignet ist. In diesem Instruktionsformat gibt es Datenfelder für den OP-Code für höchstens zwei Quellregister, für zwei Register, die für die Adreßarithmetik benutzt werden in dem Fall, daß die Instruktion auf den Speicher zugreifen muß, und für höchstens zwei Zielregister.
Wenn man auf die linke Spalte der Fig. 2 sieht, wo eine Instruktionsfolge dargestellt ist, die Teil eines externen Instruktionsstromes sein könnte, wird es offensichtlich, daß in dem externen Instruktionsstrom eine Instruktion nur auf die logischen Register Bezug nimmt, die zu lesen oder zu modifizieren sind. Das ganze Problem der verschiedenen physischen Instanzen, die ein logisches Register im Lauf der Instruktionsausführung haben kann, ist auf dieser Stufe noch nicht gelöst. Solange die Instruktionen des externen Instruktionsstromes der Reihe nach verarbeitet werden, ist es sogar unnötig, sich über dieses Problem Gedanken zu machen. Aber sobald Instruktionen außerhalb ihrer regulären Reihenfolge ausgeführt werden, ist es nötig, sich die verschiedenen physischen Instanzen ein und desselben logischen Registers sorgfältig zu merken. Dies ist für das logische Register R3 in der rechten Spalte der Fig. 2 dargestellt.
Das Problem wird gelöst durch Zuordnen eines physischen Registers zu jeder Instanz eines logischen Registers. Dies bedeutet, daß immer dann, wenn eine Instruktion ein bestimmtes logisches Zielregister modifiziert und daher eine neue Instanz des genannten logischen Registers erstellt, ein neues physisches Register zugeordnet werden muß. Immer dann, wenn diese Instanz des genannten logischen Registers als Quelle durch eine andere Instruktion benutzt wird, muß das gleiche physische Register benutzt werden. Da eine Vielzahl von Instanzen eines logischen Registers vorhanden sein kann, kann auch eine Vielzahl physischer Register, die dem genannten logischen Register entsprechen, vorhanden sein.
Die Aufgabe des Analysierens, welches physische Register einem logischen Register entspricht, das durch eine bestimmte Instruktion benutzt wird, das Ersetzen des genannten logischen Registers durch das geeignete physische Register (Registerumbenennung) und das Zuordnen eines neuen physischen Registers immer dann, wenn eine neue Instanz irgendeines logischen Registers erstellt wird, (Registerzuordnung) wird durch die "Registerumbenennungs- und Zuordnungseinheit" (304) durchgeführt.
Immer dann, wenn ein neues physisches Register zugeteilt wird, benachrichtigt die "Registerumbenennungs- und Zuordnungseinheit" (304) auch den Umordnungspuffer (305). Der Umordnungspuffer hält einen Eintrag für jedes physische Ziel fest, das eine bestimmte Instanz eines bestimmten logischen Registers identifiziert. Jeder Eintrag des Umordnungspuffers enthält das physische Register, das logische Register, das es darstellt, und den Vollendungsstatus des genannten physischen Registers. Bei der Implementierung, die beschrieben wird, können bis zu 32 Einträge im Umordnungspuffer zu einem gegebenen Zeitpunkt vorhanden sein. Immer dann, wenn ein neues physisches Register durch die "Registerumbenennungs- und Zuordnungseinheit" (304) zugeordnet wird, wird ein neuer Eintrag in dem Umordnungspuffer (305) vorgenommen. Da die Instruktionen noch in der Reihenfolge der Vordekodierungsstufe verarbeitet werden, werden die Einträge im Umordnungspuffer auch in der sequentiellen Reihenfolge vorgenommen, was bedeutet, daß ein Eintrag, der eine frühere Instanz eines logischen Registers darstellt, immer einem Eintrag vorangeht, der einer späteren Instanz desselben logischen Registers entspricht.
Jeder Eintrag des Umordnungspuffers enthält auch den Vollendungsstatus seines Zielregisters. Natürlich ist, wenn der Eintrag vorgenommen wird, der Vollendungsstatus "nicht vollendet". Sobald ein bestimmter Registerwert ausgewertet wird, wird der Vollendungsstatus seines entsprechenden Eintrags im Umordnungspuffer geändert in "vollendet". Der Umordnungspuffer wird als ein Umlaufpuffer realisiert; er kann bis zu 32 Einträge enthalten. Der Instruktionspuffer (303) enthält jetzt zwei Instruktionen des externen Instruktionsstromes in einem Format, das für die Reservierungsstation geeignet ist. Die logischen Register sind durch die geeigneten physischen Register durch die "Registerumbenennungs- und Zuordnungseinheit" (304) ersetzt worden, und immer, wenn ein neues physisches Register zugeordnet werden musste, ist ein entsprechender Eintrag in dem Umordnungspuffer (305) gemacht worden.
Die Instruktionen sind jetzt bereit, um zu der Reservierungsstation (306) weitergeleitet zu werden. Die Reservierungsstation ist als ein Umlaufpuffer mit bis zu 16 möglichen Einträgen implementiert.
In der Reservierungsstation (306) warten die Instruktionen auf ihre Quelloperanden. Sobald alle Quelloperanden einer Instruktion angekommen sind, signalisiert die Instruktion, daß sie bereit ist, zu einer der Funktionseinheiten abgeschickt zu werden. Instruktionen werden zu den Funktionseinheiten außerhalb ihrer sequentiellen Reihenfolge geschickt, was bedeutet, daß das Abschicken einer Instruktion unabhängig davon ist, ob die vorhergehende oder nachfolgende Instruktion bereits abgeschickt wurde. Instruktionen werden zu einer der Funktionseinheiten abgeschickt abhängig von der Art der Instruktion: Verzweigungen werden zu der Verzweigungseinheit (307) weitergeleitet, Ganzzahlarithmetik wird durch eine Ganzzahleinheit (308) durchgeführt, und alle Instruktionen, die auf den Speicher zugreifen, werden zu der Lade-/Speichereinheit (309) abgeschickt. Die Lade- /Speichereinheit tauscht Daten mit dem Datenspeicher (312) über einen Daten-Cache (311) aus.
Eine Kopie der Registerdatei (310) wird jeder Funktionseinheit beigefügt. Wenn Änderungen an irgendeiner dieser Registerdateien vorgenommen werden, werden die anderen Registerdateien an verschiedenen Funktionseinheiten aktualisiert. Jede Registerdatei (310) enthält die Werte all der physischen Register, die bis dahin zugeordnet wurden.
Da jedes physische Register einer Instanz eines bestimmten logischen Registers entspricht, hält die Registerdatei (310) die Werte derjenigen Instanzen der logischen Register fest, die bis dahin ausgewertet worden sind.
Es ist vorteilhaft, eine Kopie der Registerdatei in enger Nachbarschaft zu jeder Funktionseinheit zu haben. Eine Instruktion, die zu einer der Funktionseinheiten (307, 308, 309) weitergeleitet wurde, muß auf die Werte ihres entsprechenden Quellregisters zugreifen. Diese Registerwerte sind in der lokalen Kopie der Registerdatei (310) enthalten. Sobald Resultatdaten erzeugt werden, werden diese Resultatdaten in die lokale Registerdatei eingeschrieben. Da die logischen Quell- und Zielregister einer Instruktion bereits in der Vordekodierstufe (302) in physische Register umbenannt wurden, kann eine Instruktion, die zu einer Funktionseinheit weitergeleitet wird, direkt auf die physischen Quell- und Zielregister der Registerdatei zugreifen, da es nicht mehr nötig ist, logische in physische Register zu übersetzen. Diese Übersetzung ist ein für allemal an der Vordekodierungsstufe (302) durch die "Registerumbenennungs- und Zuteilungseinheit" (304) erfolgt.
Durch Aufbewahren einer lokalen Kopie der Registerdatei in jeder Funktionseinheit ist es möglich, die Zugriffszeit auf die Registerinhalte weiter zu verringern.
Während des Übergabeprozesses werden die durch diese Instruktionen erzeugten Zielregisterwerte zu beabsichtigten Registerwerten. Daher definiert der Übergabe- oder Verabschiedungsprozeß einen beabsichtigten Zustand der Maschine. Dieser beabsichtigte Zustand schreitet in sequentieller Reihenfolge von alten zu jüngeren Instruktionen fort und transformiert dadurch die entsprechenden provisorischen Instanzen der logischen Register in gültige, beabsichtigte Registerwerte.
Um zu verstehen, wie der Übergabeprozeß arbeitet, ist es notwendig, auf den Vollendungsstatus der verschiedenen Zielregisterinstanzen zu blicken, die in dem Umordnungspuffer (305) gespeichert sind. Der Übergabeprozeß beginnt das Suchen nach der ältesten Instruktion, die noch nicht vollendet ist. Der Verabschiedungszeiger (313) zeigt auf den Eintrag, der der genannten Instruktion entspricht. Diese Instruktion kann noch nicht verabschiedet werden, da ihre Resultate noch nicht verfügbar sind. Aber alle die Instruktionen und alle die entsprechenden Zielregister, die den Eintrag voraufgehen, der durch den Verabschiedungszeiger definiert ist, können übergeben werden. Die entsprechenden Instruktionen werden aus der Reservierungsstation gelöscht, und die Zielregisterwerte werden zu beabsichtigten Registerwerten. Daher ist der beabsichtigte Zustand (314) durch die Zielregisterwerte definiert, die dem Eintrag im Umordnungspuffer voraufgehen, auf den der Verabschiedungszeiger (313) verweist.
Das Zusammenspiel zwischen der Reservierungsstation und dem Umordnungspuffer wird klarer, wenn man die Fig. 4 betrachtet. Die Reservierungsstation (400) kann bis zu 16 Instruktionen unterbringen. Einer der Einträge (402) der Reservierungsstation ist dargestellt. Er enthält den OP-Code der Instruktion, Datenfelder für Quellregister, Zielregister und für die Adreßberechnung. Jede Instruktion kann auf bis zu zwei Zielregister zugreifen.
Für die Zielregister, die zu einer Instruktion gehören, wird ein Eintrag in dem Umordnungspuffer (401) gemacht. Jedes neue Zielregister entspricht einer neuen Instanz eines bestimmten logischen Registers. Sowohl sein physisches Register als auch sein logisches Register sind in dem entsprechenden Eintrag (404, 411) des Umordnungspuffers identifiziert.
Die Verbindung zwischen dem Eintrag (402) der Reservierungsstation und dem entsprechenden Eintrag (404) des Umordnungspuffers, der die Informationen über das Zielregister oder die Zielregister enthält, das oder die durch die Instruktion benutzt wird (werden), wird durch den Zeiger (403) des Umordnungspuffers hergestellt. Der Zeiger des Umordnungspuffers ist Teil des Eintrags (402) der Reservierungsstation.
In jedem Eintrag (404) des Umordnungspuffers ist weiter ein Datenfeld (405) vorhanden, das den Vollendungsstatus des Zielregisters (404) überwacht, der in dem Eintrag des UOP enthalten ist. Anfänglich ist der Status eines Zielregisters "nicht vollendet" (405).
Sobald alle die Quelldaten eines Eintrags der Reservierungsstation verfügbar sind, kann eine Instruktion zu einer der Ausführungseinheiten (408) abgeschickt werden. In dem Beispiel der Fig. 4 wird die Instruktion (409) gerade durch die Verarbeitungseinheit (408) verarbeitet, was bedeutet, daß die Instruktion sich in irgendeiner Stufe der Pipeline der Verarbeitungseinheit befindet. Zusammen mit der Instruktion ist der Zeiger des UOP (410) zu der Ausführungseinheit (408) weitergeleitet worden. Daher wird die Verbindung zwischen der Instruktion (409) und ihrem entsprechenden Eintrag in den Umordnungspuffer (411) sogar während des Verlaufs der Instruktionsausführung aufrechterhalten.
Sobald die Resultate der Instruktionsausführung verfügbar sind, was gewöhnlich am Ende der Pipeline der Ausführungseinheit der Fall ist, ändert sich der Vollendungsstatus in dem UOP von "nicht vollendet" in "vollendet". Daher enthält der Umordnungspuffer (401) die Bezeichner der verschiedenen Instanzen der logischen Register in ihrer sequentiellen Reihenfolge und enthält weiter Informationen darüber, ob der Wert der genannten Registerinstanzen bereits ausgewertet wurde oder nicht.
Die Reservierungsstation (400) wird als eine Umlauf-Anordnung implementiert, wobei die Verwaltung mittels Zeigern erfolgt. Immer, wenn eine Instruktion in ihrem korrekten Format von dem Instruktionspuffer (303) zu der Reservierungsstation (400) weiterzuleiten ist, wird die geeignete Eingabeposition durch den Hinein-Zeiger (406) bestimmt. Falls die Instruktion ein oder zwei Zielregister adressiert, muß auch ein Eintrag in den Umordnungspuffer gemacht werden.
Der Umordnungspuffer (401) ist auch als ein Umlaufpuffer implementiert. Es gibt einen Zuordnungszeiger (407), der als der In-Zeiger des Umordnungspuffers dient. Er zeigt auf die Position in dem Umordnungspuffer, an der der nächste Eintrag zu machen ist.
Während der Zuordnungszeiger (407) nötig ist, um die Ziele der neuen Instruktionen unterzubringen, ist der Verabschiedungszeiger (412) für das Entfernen alter Zielregisterwerte nötig.
  • 1. Der Verabschiedungs-Zeiger (412) zeigt auf das älteste Zielregister, das noch nicht vollendet ist. Der Übergabeprozeß übergibt die Zielregister von Einträgen, die älter, d. h. eher an der Reihe sind als der Eintrag, auf den der Verabschiedungs-Zeiger zeigt. Dies bedeutet, daß die betreffenden Einträge freigegeben werden und daß die Zielregisterwerte die Werte der beabsichtigten Register werden, die den "offiziellen" Zustand der Maschine darstellen. Das Ausführen von Instruktionen außer der Reihe erzeugt eine Anzahl provisorischer Instanzen von logischen Registern, die noch Änderungen und Löschungen unterworfen sein können. Aber es gibt auch einen genauen, beabsichtigten Zustand (413), der ein definierter Punkt in dem sequentiellen Instruktionsstrom ist, wobei die beabsichtigten Registerwerte dem genannten Punkt in dem Instruktionsstrom entsprechen.
Im Folgenden wird ein Verfahren zum Zuordnen und Umbenennen von Registern beschrieben, das es erlaubt, physische Register eines Pools physischer Register flexibel einem logischen Register zuzuordnen, um verschiedene Instanzen des genannten logischen Registers darzustellen.
In Fig. 5 ist gezeigt, wie entsprechend dem vorgeschlagenen Verfahren diese Zuordnungen erstellt und entfernt werden. In dem gegebenen Beispiel gibt es acht logische Register R0, R1, . . . R7, auf die häufig durch den Prozessor, dem sie gehören, zugegriffen wird. Die Reihenfolge-Liste (500) setzt jedes der logischen Register R0, . . . R7 zu dem physischen Register in Beziehung, das tatsächlich den beabsichtigten Zustand darstellt. In Fig. 5 ist diese Reihenfolge-Liste (500) als eine Spalte von Kästen dargestellt, wobei die physischen Register als eingekreiste Zahlen dargestellt sind.
Zum Beispiel steht das physische Register "7" (501) mit dem logischen Register R0 in Verbindung. Es ist in dem Kasten 500 enthalten, der die Reihenfolge-Liste darstellt, was impliziert, daß das physische Register "7" (501) den beabsichtigten Zustand von R0 darstellt. Demgemäß ist das physische Register "3" (506) Teil der Reihenfolge-Liste 500. Es gibt einen Eintrag in der Reihenfolge-Liste 500, der das logische Register R1 mit dem physischen Register "3" (506) in Beziehung setzt, und daher stellt das physische Register "3" den beabsichtigten Zustand von R1 dar. Es ist zu beachten, daß in jedem Augenblick ein beabsichtigter Zustand jedes Registers vorhanden sein muß. Zu jedem Zeitpunkt muß zumindest ein physisches Register jedem logischen Register zugeordnet sein.
Zu einem bestimmten Augenblick können mehr als eine Instanz eines bestimmten logischen Registers vorhanden sein. Natürlich muß jede Instanz durch ein verschiedenes physisches Register dargestellt werden. Werfen wir einen Blick auf das logische Register R0 in Fig. 5. Es sind drei Instanzen von R0 vorhanden und diese Instanzen werden durch die physischen Register "7" (501), "4" (502) und "12" (504) dargestellt. Wie das Register "7" in der Reihenfolge-Liste 500 zeigt, stellt es den beabsichtigten Zustand dar. Die andern beiden Register "4" (502) und "12" (504) enthalten Werte, die noch nicht durch den Übergabeprozeß übergeben worden sind, und die noch Änderungen unterworfen sein können. Zum Beispiel könnten in dem Fall, daß eine Verzweigung falsch vorhergesagt wurde, die entsprechenden Registerinstanzen noch zu löschen sein.
Die verschiedenen physischen Register, die Instanzen eines bestimmten logischen Registers darstellen, werden durch Verbindungselemente (503, 505) verkettet. Das physische Register, das eine bestimmte Instanz darstellt, wird mit dem physischen Register verbunden, das die vorhergehende Instanz des gleichen logischen Registers darstellt. Zum Beispiel ist das Register "4" (502) verbunden (503) mit dem Register "7" (501), das die voraufgehende Instanz von R0 darstellt. Entsprechend ist das Register "12" (504) verbunden (505) mit dem Register "4" (502), da das Register "4" eine voraufgehende Instanz von R0 darstellt.
Immer, wenn eine Instruktion einen Schreibzugriff auf ein bestimmtes logisches Register durchführt, muß eine neue Instanz des genannten logischen Registers zugeordnet werden. Als ein Beispiel wird die "Addiere"-Instruktion (203) in Fig. 2 betrachtet. Die genannte "Addiere"-Instruktion benutzt die Instanz R3.8 des logischen Registers R3 als eine Quelle und schreibt ihre Resultate in die Instanz 3.9 des Zielregisters. An diesem Punkt des Instruktionsstromes muß ein physisches Register zugeordnet werden, das weiterhin die Instanz R3.9 darstellt.
Als ein Beispiel ist die Zuordnung einer neuen Instanz des logischen Registers R5 in Fig. 5 gezeigt. Bevor die genannte Zuordnung stattfindet, gibt es zwei Instanzen von R5, dargestellt durch das physische Register "2" und das physische Register "13" (507). Das Register "2" stellt den beabsichtigten Zustand des R5 dar. Es muß ein drittes physisches Register vorgesehen werden, und dieses Register muß mit dem Register "13" (507) verbunden werden. Physische Register, die zu einem bestimmten Zeitpunkt nicht benutzt werden, sind in der Frei-Liste 509 enthalten. Von dort wird das physische Register "6" (508) abgerufen (510). Als Nächstes muß angezeigt werden, daß das Register "6" eine neue Instanz von R5 darstellt. Dies erfolgt durch Errichten einer Verbindung 511 vom Register "6" zum Register "13" (507). Daneben wird das Register "6" (508) in der Frei-Liste 509 gelöscht.
Es ist die Aufgabe des Übergabeprozesses, den beabsichtigten Zustand des Computersystems in der Reihenfolge der Instruktionsfolge weiterzuschalten. Der beabsichtigte Zustand eines bestimmten logischen Registers wird weitergeschaltet durch Entfernen des physischen Registers, das bis jetzt den beabsichtigten Zustand dargestellt hat, durch Entfernen der Verbindung von dem nachfolgenden (nicht beabsichtigten) physischen Register und durch Anzeigen, daß das nachfolgende physische Register fortan den beabsichtigten Zustand darstellt. Als ein Beispiel wird das logische Register R3 in Fig. 5 betrachtet. Bisher wird der beabsichtigte Zustand von R3 durch das physische Register "15" (512) dargestellt. Wenn weitere Instruktionen entfernt werden und wenn der beabsichtigte Zustand fortschreitet, wird das Register "15" (512) freigesetzt (513). Ein Eintrag in die Frei-Liste 509 wird vorgenommen, um anzuzeigen, daß das Register "15" (514) augenblicklich nicht benutzt wird. Die erste spekulative Instanz des logischen Registers R3 ist durch das physische Register "11" (515) dargestellt worden, die mit dem früher beabsichtigten Zustand des Registers "15" verbunden (516) war. Diese Verbindung 516 wird entfernt, und das Register "11" (515) wird das Register, das den beabsichtigten Zustand darstellt. Dies wird in der Reihenfolge-Liste 500 angezeigt, in der das Register "15" durch das Register "11" ersetzt wird. Die Verbindung 518, die das Register "8" (517) mit dem Register "11" (515) verkettet, bleibt ungeändert.
In den Fig. 6A und 6B ist eine Schaltung angegeben, die verschiedene Anordnungen umfaßt. Diese Schaltung ist eine Implementierung des Verfahrens für das Zuordnen und Umbenennen von Registern, das in Fig. 5 veranschaulicht ist. Die Reihenfolge-Liste 601 umfaßt acht Einträge und setzt jedes der logischen Register R0, . . . R7 mit dem physischen Register in Beziehung, das den beabsichtigten Zustand darstellt. Die Anordnung 601 ist daher die Schaltungsimplementierung des "Kastens" 500 in Fig. 5.
Neben der Reihenfolge-Liste 601 ist eine zweite Anordnung, die Zuordnungsliste 600 vorgesehen, die auch jedes der logischen Register R0, . . . R7 zu einem physischen Register in Beziehung setzt. Die Zuordnungsliste enthält auch acht Einträge. Jeder Eintrag gibt das physische Register an, das die jüngst zugeordnete Instanz des entsprechenden logischen Registers darstellt.
Verbindungen setzen ein physisches Register, das eine bestimmte Instanz eines logischen Registers darstellt, zu dem physischen Register in Beziehung, das die vorhergehende Instanz des gleichen logischen Registers darstellt. Die verschiedenen Verbindungen (z. B. die Verbindungen 503, 505, 518 in Fig. 5) sind in der Verbindungsliste 602 enthalten. Die Verbindungsliste wird als eine Anordnung implementiert, die 16 Einträge aufweist, wobei jeder Eintrag ein erstes physisches Register zu einem zweiten physischen Register in Beziehung setzt, wodurch beide physischen Register das gleiche logische Register darstellen, und wodurch das genannte erste physische Register früher zugeordnet wurde.
Alle physischen Register, die nicht benutzt werden, sind in der Frei-Liste 603 enthalten, die die Implementierung der Anordnung der Frei-Liste 509 in Fig. 5 ist. Die Frei-Liste 603 umfaßt acht Eintragspositionen, und daher kann sie bis zu acht physische Register zu einem Zeitpunkt enthalten. Dies ist trotzdem ausreichend, weil zu jedem Zeitpunkt zumindest ein physisches Register jedem der acht logischen Register zugeordnet werden muß (um den beabsichtigten Zustand darzustellen). Da es 16 physische Register gibt, wobei acht der genannten 16 Register für das Darstellen des beabsichtigten Zustandes notwendig sind, gibt es nie mehr als acht unbenutzte Register.
Als Nächstes wird erörtert, wie die Registerzuteilung und Umbenennung tatsächlich stattfindet. Wir nehmen an, daß eine Instruktion sich in der Stufe (604) des Dispatchers 1 befindet. Die logischen Quellregister der Instruktion, die logischen Zielregister und der OP-Code der Instruktion sind angegeben.
Die logischen Quell- und Zielregister müssen in physische Register übersetzt werden, da es die physischen Register sind, auf die tatsächlich zugegriffen wird. Zu diesem Zweck werden sowohl die logischen Quellregister als auch die logischen Zielregister zu der Zuordnungsliste 600 weitergeleitet (605, 606). Die Zuordnungsliste setzt jedes der logischen Register R0, . . . R7 zu dem physischen Register in Beziehung, das die jüngst zugeordnete Instanz darstellt. Das logische Quellregister wird zu dem genannten jüngst zugeordneten physischen Register umbenannt (die augenblickliche Instanz des genannten logischen Quellregisters) durch Zugreifen auf den entsprechenden Eintrag in der Zuordnungsliste 600 und durch Auslesen seines Inhalts, der der Bezeichner des physischen Registers ist.
Dies ist auch in Fig. 6B dargestellt. Die Aufgabe des Umbenennens des logischen Quellregisters zu einem physischen Quellregister wird durchgeführt durch Weiterleiten (605) des logischen Quellregisters zu der Zuordnungsliste (600) durch Ausführen eines Lesezugriffs auf den entsprechenden Eintrag 607 der Anordnung und durch Liefern (609) des Bezeichners des umbenannten physischen Quellregisters.
Für jedes der logischen Zielregister, die durch eine Instruktion bestimmt werden, muß ein neues physisches Register zugeordnet werden, das eine neue Instanz des genannten logischen Zielregisters darstellt. Für diesen Zweck muß ein "freies" physisches Register benutzt werden. Diese "freien" Register sind in der Frei-Liste (603) enthalten, und von dort werden sie zu dem "Puffer für Register der Frei- Liste" 612 weitergeleitet (611). Die Aufgabe des Zuordnens eines neuen physischen Registers für ein logisches Zielregister wird durchgeführt durch Auslesen des Bezeichners eines physischen Registers aus dem genannten "Puffer für Register aus der Frei-Liste" 612. Diese physischen Zielregister werden dann als zugeordnete physische Zielregister bereitgestellt (613). Der "Puffer für Register aus der Frei-Liste" 612 wird dann wieder aufgefüllt mit neuen "freien"-Registern aus der Frei-Liste 603 (611).
Zusätzlich wird für jedes logische Zielregister ein Lesezugriff auf den Eintrag der Zuordnungsliste, der dem genannten logischen Zielregister (608 in Fig. 6B) entspricht, durchgeführt. Das Resultat dieses Lesezugriffs ist das voraufgehende physische Zielregister, das physische Register, das - bis jetzt - die jüngste Instanz des logischen Zielregisters dargestellt hat. Dieses voraufgehende physische Zielregister wird für das Erstellen der korrekten Verbindung in der Verbindungsliste 602 benutzt (610).
Sobald der Lesezugriff auf den Eintrag der Zuordnungsliste vollendet ist, der dem logischen Ziel entspricht, muß dieser Eintrag aktualisiert werden. Ein neues physisches Zielregister ist zugeordnet worden (613), und das physische Ziel, das in dem Eintrag enthalten ist, stellt nicht länger die jüngste Instanz dar. Stattdessen stellt das unlängst zugeordnete physische Zielregister die neueste Instanz des logischen Zielregisters dar.
Daher ist eine Korrektur notwendig. Der Bezeichner des unlängst zugeordneten physischen Registers muß weitergeleitet werden (614) von dem "Puffer für Register aus der Frei-Liste" (612) zu der Zuordnungsliste 600. Dort wird der Bezeichner des unlängst zugeordneten physischen Registers in den Eintrag 615 geschrieben, der dem logischen Zielregister entspricht, da das unlängst zugeordnete physische Register jetzt die jüngste Instanz des logischen Zieles darstellt. Beginnend mit dem nächsten Taktzyklus kann auf das unlängst zugeordnete physische Register als auf ein physisches Quellregister in dem Umbenennungsprozeß (616) zugegriffen werden.
Wenn man auf die Fig. 5 zurückblickt, entspricht der Prozeß des Zuordnens eines neuen physischen Registers, das eine neue Instanz eines bestimmten logischen Registers darstellen soll, dem Schritt 510. Bisher hat das physische Register "13" (507) die jüngste Instanz von R5 dargestellt, und daher ist in der Zuordnungsliste "13" in dem Eintrag für R5 enthalten. Sobald eine neue Instruktion R5 als logisches Zielregister benutzt, kann die Instruktion den Inhalt von R5 modifizieren. Daher muß ein neues physisches Register (Register "6" in Fig. 5), das die neue Instanz von R5 darstellt, zugeordnet werden. Dieses neue physische Register wird von der Frei-Liste 509 geliefert.
Wenn das physische Register "6" (508) mit dem physischen Register "13" verkettet wird (511), muß dies in der Zuordnungsliste (600) auch angezeigt werden: Register "13" stellt nicht länger die jüngste Instanz von R5 dar, sondern stattdessen stellt Register "6" die jüngste Instanz von R5 dar. Der Eintrag in der Zuordnungsliste, der R5 zu "13" in Beziehung gesetzt hat, muß geändert werden, er setzt künftig R5 zu dem Register "6" in Beziehung. In nachfolgenden Zyklen wird, wenn immer das logische Register R5 als ein Quellregister auftritt, es umbenannt zum physischen Register "6".
Im Folgenden wird diskutiert, wie die Verbindungen, die physische Register verketten, die zu einem bestimmten logischen Register gehören, mittels der Verbindungsliste 602 verwaltet werden. Eine "Verbindung", z. B. die Verbindung 511 in Fig. 5, verbindet ein physisches Register, das eine Instanz eines bestimmten logischen Registers darstellt, mit dem physischen Register, das die vorhergehende Instanz des gleichen logischen Registers darstellt. Zum Beispiel verbindet die Verbindung 511 das Register "6" mit dem Register "13". Immer, wenn eine Verbindung hergestellt oder entfernt wird, wird ein entsprechender Eintrag in die Verbindungsliste 602 vorgenommen oder daraus entfernt. In jedem Zeitpunkt werden alle die Verbindungen durch entsprechende Einträge in der Verbindungsliste 602 dargestellt. Eine Verbindung kann bei irgendeinem der vorhandenen physischen Register beginnen, und sie kann das genannte physische Register mit irgend einem anderen physischen Register verbinden.
Die Verbindungsliste ist entsprechend den physischen Registern aufgebaut, von denen aus die Verbindung beginnt. Zum Beispiel hätte man, um die Verbindung 511 unterzubringen, "13" in die Eintragsposition "6" zu schreiben.
Beim Betrachten der Fig. 6A wird es offensichtlich, wie die Verbindungsliste immer dann, wenn eine neue Verbindung errichtet wird, aktualisiert wird. Zu diesem Zweck wird das unlängst zugeordnete physische Zielregister 613 zum Adressieren der Position eines Eintrags in der Verbindungsliste 602 benutzt. In unserem Beispiel der Verbindung 511 würde der Verbindungszeiger 613 auf die Position des Eintrags "6" zeigen. In diese Position des Eintrags wird das voraufgehende physische Zielregister "13" eingeschrieben (610). Daher wird die Verbindung zwischen der jüngeren Instanz, die für das Adressieren der Einträge der Verbindungsliste benutzt wird, und der älteren Instanz, die in den genannten Eintrag eingeschrieben wird, erstellt.
Für jede Instruktion wird ein Eintrag in der Reservierungsstation 617 vorgenommen. In diesem Eintrag sind die Quell- und Zieloperanden der Instruktion durch die physischen Register angegeben, die ihnen zugeordnet sind, welches die umbenannten physischen Quellregister (609) und die zugeordneten physischen Zielregister (613) sind. Die Datei 622 der physischen Register, die Teil jeder der Verarbeitungseinheiten 621 ist, hält die augenblicklichen Werte all der physischen Register fest. In der Reservierungsstation 617 wird aufgezeichnet, welche der physischen Register bis jetzt ausgewertet wurden. Die entsprechenden umbenannten Quellregister werden als "gültig" angegeben. Sobald alle die umbenannten Quellregister einer Instruktion als "gültig" angegeben sind, kann die Instruktion an die Ausführungseinheit 621 ausgegeben werden (620), wo sie ausgeführt wird. Ein Zugriff mit geringer Wartezeit auf die Inhalte der Datei 622 der physischen Register wird durch Aufbewahren einer Kopie der genannten Registerdatei in enger Nachbarschaft zu jeder Ausführungseinheit garantiert.
Für jeden Zieloperanden einer Instruktion an der Stufe (604) des Dispatchers 1 wird ein Eintrag in den Umordnungspuffer 618 vorgenommen (619). Der Eintrag wird an der Position des UOP gemacht, auf die der Zuordnungszeiger hinweist. Der Aufbau der UOP-Einträge (624), die Aufrechterhaltung der Verbindung zwischen dem UOP-Eintrag und dem entsprechenden Eintrag in der Reservierungsstation mittels eines UOP-Zeigers 623 und die Art und Weise, in der der Vollendungszustand jedes der Zielregister aktualisiert wird, ist bereits bei der Fig. 4 diskutiert worden. Der Verabschiedungs-Zeiger 625 zeigt auf den ersten UOP-Eintrag, der noch nicht übergeben wurde. Der Vollendungsstatus dieses Zielregisters ist "nicht vollendet". Sobald die entsprechende Instruktion ausgeführt wurde und ihre Resultate verfügbar sind, ändert sich der Vollendungsstatus des genannten UOP-Eintrages in "vollendet". Der Verabschiedungs-Zeiger 625 verweist auf einen anderen Eintrag, und das entsprechende physische Register kann übergeben werden.
In Fig. 5 ist dargestellt, wie das physische Register "11" (515) übergeben wird, was bedeutet, daß das physische Register "11" als der beabsichtigte Wert von R3 angegeben wird. Das physische Register "15", das bis jetzt den beabsichtigten Zustand dargestellt hat, wird gelöscht. Das Register "15" wird von der Reihenfolge-Liste 500 entfernt, es wird auf die Frei-Liste 509 gesetzt. Dies impliziert, daß zwei Anordnungen, die Reihenfolge-Liste 601 und die Frei- Liste 603, aktualisiert werden müssen.
Zu diesem Zweck wird das physische Register, das zu übergeben ist (in Fig. 5 wäre dies das Register 11), sowohl zu der Reihenfolge-Liste 601 als auch der Verbindungsliste 602 weitergeleitet (626). In der Reihenfolge-Liste wird auf den Eintrag des entsprechenden logischen Registers zugegriffen, und das physische "Übergabe"-Register wird in den Eintrag geschrieben (626). In der Verbindungsliste sind die Verbindungen gemäß ihrem Startregister geordnet. Wenn die Verbindungsliste mit dem physischen "Übergabe"-Register 626 adressiert wird, wird die Verbindung, die das "Übergabe"- Register mit einer früheren Registerinstanz verbindet, ausgewählt.
Ein Beispiel macht das klar: Wenn das Register "11" aus Fig. 5 für das Adressieren (626) der Verbindungsliste 602 benutzt wird, wird die Verbindung 516 gefunden, die das Register "11" mit dem Register "15" verbindet. Das Register "15" stellt eine Instanz von R3 dar, die gelöscht werden sollte. Dies erfolgt durch Weiterleiten (627) des Registers, das zu löschen ist (Register "15" im Fall der Verbindung 516), zu der Frei-Liste 603.
Die Frei-Liste wird implementiert als eine Umlaufanordnung. Die Folge der "freien" Register erstreckt sich von dem "letzten Hinein-Zeiger" (629) zu dem "nächsten Heraus-Zeiger" (630). Immer, wenn eine Verbindung aus der Verbindungsliste entfernt wird und ein physisches Register freigesetzt wird, muß das genannte Register in der Frei-Liste untergebracht werden. Es wird in die Position der Anordnung eingeschrieben, die derjenigen benachbart ist, auf die der "letzte Hinein- Zeiger" 629 verweist. Immer, wenn unbenutzte Register für den Registerzuteilungsprozeß vorgesehen werden müssen (611), werden sie aus der Position der Anordnung ausgelesen, auf die der "nächste Heraus-Zeiger" 630 verweist. Der genannte Zeiger 630 wird dann um eine Position der Anordnung verschoben. Die Verwaltung sowohl der Zeiger 629 als auch 630 erfolgt durch die "Steuerung der Frei-Liste" (628).
Fig. 7A zeigt den Zustand der Register der Fig. 5, nachdem das Register "15" (512), das eine Instanz von R3 darstellt, entfernt wurde und nachdem das Register "6", das eine Instanz von R5 darstellt, hinzugefügt wurde. Wieder sind Verbindungen als Pfeile angegeben, die von der jüngeren Instanz zu der älteren zeigen. Die physischen Register, die in der Box enthalten sind, stellen den beabsichtigten Zustand der Maschine dar, und daher zeigen ihre Bezeichner in der Reihenfolge-Liste, die in Fig. 7B angegeben ist, nach oben. In der Reihenfolge-Liste ist jedes logische Register R0, . . . R7 einem physischen Register zugeordnet, das den beabsichtigten Zustand darstellt.
In Fig. 7A ist das physische Register, das die jüngst zugeordnete Instanz eines logischen Registers darstellt, mit einem Kreis angegeben. Zum Beispiel ist die jüngst zugeordnete Instanz des logischen Registers R0 dargestellt durch das physische Register "12". In der Zuordnungsliste in Fig. 7C steht jedes logische Register R0, . . . R7 mit dem jüngst zugeordneten physischen Register in Beziehung, das das betreffende "eingekreiste" Register ist. In einigen Fällen, wie für die logischen Register R1, R2, R4, R6 und R7 stellt das jüngst zugeordnete physische Register auch den beabsichtigten Zustand dar. In anderen Fällen, wie für die logischen Register R0, R3 und R5, stellt die jüngst zugeordnete Instanz nicht den beabsichtigten Zustand dar.
Fig. 7D bildet die Verbindungsliste ab, die dem in Fig. 7A angegebenen Registerstatus entspricht. Es gibt fünf Verbindungen, wobei jede Verbindung eine jüngere Instanz zu einer früheren Instanz eines bestimmten logischen Registers in Beziehung setzt. Die Verbindung von "4" zu "7" ist an der Adresse "4" der Verbindungsliste gespeichert durch Speichern des Inhaltes "7" in die Anordnungsposition "4". Demgemäß ist "13" an der Position "6" gespeichert worden, "11" ist in "8" gespeichert worden usw. Bei dem gegebenen Beispiel gibt es acht logische Register, aber 16 physische Register. Da eine Verbindung bei irgendeinem der physischen Register beginnen könnte, müssen 16 Eintragspositionen der Verbindungslisten vorgesehen werden. Daher reichen die Adressen in Fig. 7D von 0 bis 15.
Außer den 8 physischen Registern, die den beabsichtigten Zustand der logischen Register R0-R7 darstellen, werden tatsächlich 5 weitere physische Register zugeordnet und stellen spekulative Instanzen dar. Daher sind 13 von den 16 physischen Registern augenblicklich in Benutzung und nur 3 physische Register, die Register "14", "1" und "15", sind nicht in Benutzung. Diese 3 Register bilden den Inhalt der Frei-Liste, die in Fig. 7E dargestellt ist. Die Frei-Liste kann bis zu 8 Einträge festhalten.
In Fig. 8A ist das Format eines Eintrags in der Reservierungsstation dargestellt. Jede Instruktion des externen Instruktionsstromes wird in dieses Format in der Vordekodierstufe (302) umgewandelt.
Bei jedem Eintrag der Reservierungsstation gibt es ein Datenfeld für den OP-Code (800) der Instruktion. Weiterhin gibt es 4 Felder (801, 802 803, 804) von Quelldaten, die die physischen Quellregister der Instruktion angeben. Zwei der genannten Felder für Quelldaten, S0 (801) und S1 (802), geben direkt die Operanden der Instruktion an. Die Datenfelder A0 (803) und A1 (804) geben die physischen Quellregister an, die für die Adreßarithmetik benutzt werden (als "Index" und "Basis"). Für jedes dieser Quelldatenfelder gibt ein Gültigkeitsbit (808) an, ob der Inhalt des entsprechenden physischen Registers verfügbar ist oder nicht.
Daten, die während der Ausführung der Instruktion erzeugt werden, werden in die Zielregister der Instruktion eingeschrieben. Die Datenfelder T0 (805) und T1 (806) geben die physischen Register an, in die die Resultate zu schreiben sind. Wie in Fig. 4 beschrieben wurde, ist weiter ein Zeiger (807) des Umordnungspuffers in jedem Eintrag der Reservierungsstation vorhanden, der die Verbindung mit dem entsprechenden Eintrag im Umordnungspuffer herstellt.
Es ist bereits darauf hingewiesen worden, daß für das Zugreifen auf die Inhalte der physischen Register, die in einer physischen Registerdatei enthalten sind, es nur nötig ist, die Nummer des physischen Registers zu kennen. Wie aus der Fig. 8B zu ersehen ist, umfassen die Bezeichner für S0, S1, A0, A1, T0 und T1 nur die Nummern der physischen Register. Bezeichner für logische Register werden für das Zugreifen auf die aktuellen Daten, die in der Datei der physischen Register enthalten sind, nicht benötigt.
In Fig. 9 ist die Datei der physischen Register dargestellt, die Datenfelder umfaßt für das Festhalten der Inhalte von 16 physischen Registern. Auf jedes physische Register kann durch seine Nummer zugegriffen werden. Um einen schnellen Zugriff auf die Daten zu ermöglichen, wird eine Kopie dieser Datei (622) der physischen Register an jeder der Ausführungseinheiten 621 aufrechterhalten.

Claims (10)

1. Prozessor mit der Möglichkeit, Instruktionen außerhalb der sequentiellen Reihenfolge des Instruktionsstromes zu verarbeiten, wobei die genannten Instruktionen logische Register adressieren und der Prozessor umfaßt:
physische Register (1, . . ., 12) zum Speichern/Festhalten von Instanzen der logischen Register (R0, . . ., R7),
eine Reihenfolgeliste (500) für das Inbeziehungsetzen jedes logischen Registers zu dem physischen Register, das den beabsichtigten Zustand des Systems zur Verarbeitung außer der Reihe darstellt,
eine Verbindungsliste (602) zum Inbeziehungsetzen eines physischen Registers, das eine Instanz eines logischen Registers darstellt, zu dem physischen Register, das die vorhergehende/frühere Instanz des gleichen logischen Registers darstellt, um eine Verkettung der physischen Register gemäß der Reihenfolge der entsprechenden Instanzen des logischen Registers in der Instruktionsfolge vorzusehen,
gekennzeichnet durch
eine Zuordnungsliste (600) zum Inbeziehungsetzen jedes logischen Registers zu dem physischen Register, das die jüngste Instanz des genannten logischen Registers darstellt, wobei
die Zuordnungsliste (600) Einträge (Fig. 7C) aufweist und jeder Eintrag einem logischen Register (R0, . . ., R7) entspricht, und daß das Resultat eines Lesezugriffs auf einen Eintrag das Auslesen des dem logischen Register (R0, . . ., R7) zugeordneten physischen Registers (1, . . ., 12) ist.
2. Prozessor gemäß Anspruch 1, dadurch gekennzeichnet, daß der Bezeichner des unlängst zugeordneten physischen Registers in den Eintrag (615) der Zuordnungsliste (600) geschrieben ist, der dem betreffenden logischen Zielregister entspricht.
3. Prozessor gemäß Anspruch 1, gekennzeichnet durch Mittel zur Behandlung von Ausnahmebedingungen, die die Inhalte des genannten Mittels der Reihenfolgeliste (601) zu dem genannten Mittel der Zuordnungsliste (600) im Falle einer Ausnahmebedingung kopieren.
4. Prozessor gemäß Anspruch 1, gekennzeichnet durch eine Frei-Liste (603) zum Festhalten physischer Register, die zeitweilig keine Instanz irgendeines logischen Registers darstellen.
5. Prozessor gemäß Anspruch 1, gekennzeichnet durch Kopien der physischen Register, die jedem der Funktionseinheiten des Systems zur Verarbeitung außer der Reihe zugeordnet sind.
6. Verfahren zum Zuordnen physischer Register in einem Prozessor, der Instruktionen außerhalb der sequentiellen Reihenfolge des Instruktionsstromes verarbeiten kann und der umfaßt:
physische Register (1, . . ., 12) zum Speichern/Festhalten von Instanzen der logischen Register (R0, . . ., R7),
gekennzeichnet durch
eine Zuordnungsliste (600) zum Inbeziehungsetzen jedes logischen Registers zu dem physischen Register, das die jüngste Instanz des genannten logischen Registers darstellt, wobei
die Zuordnungsliste (600) Einträge (Fig. 7C) aufweist und jeder Eintrag einem logischen Register (R0, . . ., R7) entspricht, und daß das Resultat eines Lesezugriffs auf einen Eintrag das Auslesen des dem logischen Register (R0, . . ., R7) zugeordneten physischen Registers (1, . . ., 12) ist,
eine Verbindungsliste (602) zum Inbeziehungsetzen eines physischen Registers, das eine Instanz eines logischen Registers darstellt, zu dem physischen Register, das die frühere Instanz des gleichen logischen Registers darstellt, um für eine Verkettung der physischen Register gemäß der Reihenfolge der entsprechenden Instanzen des logischen Registers in der Instruktionsfolge zu sorgen,
umfassend die Schritte des
Abrufens eines neuen physischen Registers (Fig. 5), das künftig eine neue Instanz eines bestimmten logischen Registers darstellt,
Aktualisierens der Zuordnungsliste (Fig. 6B) so, daß das genannte logische Register zu dem neuen physischen Register in Beziehung gesetzt wird, und
Hinzufügens der Verbindung zwischen dem neuen physischen Register und dem physischen Register, das die frühere Instanz des genannten logischen Registers darstellt, zu der Verbindungsliste.
7. Verfahren gemäß Anspruch 6, dadurch gekennzeichnet, daß der Bezeichner des unlängst zugeordneten physischen Registers in den Eintrag (615) der Zuordnungsliste (600) geschrieben wird, der dem betreffenden logischen Zielregister entspricht.
8. Verfahren gemäß Anspruch 6, gekennzeichnet durch
eine Frei-Liste (603) zum Festhalten physischer Register, die gegenwärtig nicht irgendeine Instanz irgendeines logischen Registers darstellen,
das Abrufen (Fig. 5) eines neuen physischen Registers der Frei-Liste (603), das künftig eine neue Instanz eines bestimmten logischen Registers darstellt, und
das Löschen (Fig. 6A) des abgerufenen physischen Registers aus der Frei-Liste (603).
9. Verfahren gemäß Anspruch 6, gekennzeichnet durch die Übergabe physischer Register, wobei der Prozessor ferner umfaßt:
eine Reihenfolgeliste (601) zum Inbeziehungsetzen jedes logischen Registers zu dem physischen Register, das den beabsichtigten Zustand des Systems zur Verarbeitung außer der Reihe speichert,
umfassend die Schritte des
Angebens (Fig. 5), daß ein bestimmtes physisches Register übergeben wurde und daß der beabsichtigte Zustand des entsprechenden logischen Registers künftig dargestellt wird durch das übergebene physische Register,
Aktualisierens (Fig. 5) der Reihenfolgeliste so, daß das logische Register zu dem übergebenen physischen Register in Beziehung gesetzt wird, und
Entfernens (Fig. 5) der Verbindung zwischen dem physischen Register, das bis jetzt den beabsichtigten Zustand dargestellt hat, und dem übergebenen physischen Register, das jetzt den beabsichtigten Status des entsprechenden logischen Registers darstellt, aus der Verbindungsliste.
10. Verfahren gemäß Anspruch 9, dadurch gekennzeichnet, daß der Prozessor weiter umfaßt:
eine Frei-Liste (603) zum Festhalten physischer Register, die zeitweilig nicht irgendeine Instanz irgendeines logischen Registers darstellen, und
weiter umfassend den Schritt des
Hinzufügens (Fig. 5) des physischen Registers, das bis jetzt den beabsichtigten Status dargestellt hat, zu der Frei-Liste (603).
DE19848742A 1997-12-19 1998-10-22 Registerumbenennung bei einem Prozessor, der Instruktionen ausserhalb der sequentiellen Reihenfolge bearbeiten kann Expired - Fee Related DE19848742C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP97122466 1997-12-19

Publications (2)

Publication Number Publication Date
DE19848742A1 DE19848742A1 (de) 1999-06-24
DE19848742C2 true DE19848742C2 (de) 2002-05-02

Family

ID=8227834

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19848742A Expired - Fee Related DE19848742C2 (de) 1997-12-19 1998-10-22 Registerumbenennung bei einem Prozessor, der Instruktionen ausserhalb der sequentiellen Reihenfolge bearbeiten kann

Country Status (2)

Country Link
US (1) US6108771A (de)
DE (1) DE19848742C2 (de)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6779106B1 (en) 2000-09-28 2004-08-17 International Business Machines Corporation Apparatus and method for an enhanced integer divide in an IA64 architecture
US6883165B1 (en) 2000-09-28 2005-04-19 International Business Machines Corporation Apparatus and method for avoiding deadlocks in a multithreaded environment
US6886094B1 (en) 2000-09-28 2005-04-26 International Business Machines Corporation Apparatus and method for detecting and handling exceptions
US6912647B1 (en) 2000-09-28 2005-06-28 International Business Machines Corportion Apparatus and method for creating instruction bundles in an explicitly parallel architecture
US6799262B1 (en) 2000-09-28 2004-09-28 International Business Machines Corporation Apparatus and method for creating instruction groups for explicity parallel architectures
US7844799B2 (en) * 2000-12-23 2010-11-30 International Business Machines Corporation Method and system for pipeline reduction
US7191315B2 (en) * 2001-06-04 2007-03-13 Sun Microsystems, Inc. Method and system for tracking and recycling physical register assignment
US7055020B2 (en) * 2001-06-13 2006-05-30 Sun Microsystems, Inc. Flushable free register list having selected pointers moving in unison
KR20030042289A (ko) * 2001-11-22 2003-05-28 이용석 레지스터 리네이밍 방법을 사용하는 비순차적 명령어 이슈컴퓨터 시스템
US7930426B1 (en) * 2003-04-01 2011-04-19 Cisco Technology, Inc. Method for tracking transmission status of data to entities such as peers in a network
US7487337B2 (en) * 2004-09-30 2009-02-03 Intel Corporation Back-end renaming in a continual flow processor pipeline
JP4814653B2 (ja) * 2006-02-27 2011-11-16 富士通株式会社 リオーダリング装置
US7793086B2 (en) * 2007-09-10 2010-09-07 International Business Machines Corporation Link stack misprediction resolution
US9645637B2 (en) 2015-09-04 2017-05-09 International Business Machines Corporation Managing a free list of resources to decrease control complexity and reduce power consumption
US10430197B2 (en) 2017-05-12 2019-10-01 Samsung Electronics Co., Ltd. Banking register renaming to reduce power

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1993022722A1 (en) * 1992-05-01 1993-11-11 Seiko Epson Corporation A system and method for retiring instructions in a superscalar microprocessor
US5675759A (en) * 1995-03-03 1997-10-07 Shebanow; Michael C. Method and apparatus for register management using issue sequence prior physical register and register association validity information

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4511964A (en) * 1982-11-12 1985-04-16 Hewlett-Packard Company Dynamic physical memory mapping and management of independent programming environments
USRE37305E1 (en) * 1982-12-30 2001-07-31 International Business Machines Corporation Virtual memory address translation mechanism with controlled data persistence
US4612612A (en) * 1983-08-30 1986-09-16 Amdahl Corporation Virtually addressed cache
US5828903A (en) * 1994-09-30 1998-10-27 Intel Corporation System for performing DMA transfer with a pipeline control switching such that the first storage area contains location of a buffer for subsequent transfer
US5872949A (en) * 1996-11-13 1999-02-16 International Business Machines Corp. Apparatus and method for managing data flow dependencies arising from out-of-order execution, by an execution unit, of an instruction series input from an instruction source

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1993022722A1 (en) * 1992-05-01 1993-11-11 Seiko Epson Corporation A system and method for retiring instructions in a superscalar microprocessor
US5675759A (en) * 1995-03-03 1997-10-07 Shebanow; Michael C. Method and apparatus for register management using issue sequence prior physical register and register association validity information

Also Published As

Publication number Publication date
US6108771A (en) 2000-08-22
DE19848742A1 (de) 1999-06-24

Similar Documents

Publication Publication Date Title
DE19848742C2 (de) Registerumbenennung bei einem Prozessor, der Instruktionen ausserhalb der sequentiellen Reihenfolge bearbeiten kann
DE69833008T2 (de) Prozessor mit instruktionskodierung mittels eines schablonenfeldes
DE69133302T2 (de) Registerabbildung in einem einzigen Taktzyklus
DE2224537C2 (de) Einrichtung und Verfahren zur Instruktionsauswahl in einem Fließbandprozessor
DE2411963C3 (de) Elektronische Datenverarbeitungsanlage mit einer Prioritätssteuerschaltung mit änderbaren Steuerblöcken
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
DE60006270T2 (de) Parallele prozessorarchitektur
DE60308201T2 (de) Datenverarbeitungssystem mit externen und internen anweisungssätzen
DE3131341C2 (de)
DE69929936T2 (de) Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE2855106A1 (de) Einrichtung zur durchfuehrung von instruktionsverzweigungen
DE2714805A1 (de) Datenverarbeitungssystem
DE1815234A1 (de) Adressiereinrichtung fuer ein Speichersystem mit einem Grossraumspeicher und einem schnellen Arbeitsspeicher
DE2641722C3 (de) Hierarchisch geordnetes Speichersystem für eine datenverarbeitende Anlage mit virtueller Adressierung
DE2054835A1 (de) Prozessor fur ein Informationsver arbeitungssystem und ein Betriebsver fahren fur diesen Prozessor
EP0635792A2 (de) Verfahren zur Koordination von parallelen Zugriffen mehrerer Prozessoren auf Resourcenkonfigurationen
DE2339636A1 (de) Programmsteuereinrichtung
DE4207158A1 (de) Speicher-zugriffssteuerung
DE2054947A1 (de) Adressenvorbereitungseinnchtung und verfahren und Speicherzugnffan forderungseinnchtung fur ein Infor mationsver arbeitungssystem
DE2626703A1 (de) Intern programmierbares datenverarbeitungssystem
DE1549474B2 (de) Anordnung in einer elektronischen digitalen Datenverarbeitungsanlage zur Ausführung eines ersten Befehls und gleichzeitigen Decodierung eines folgenden Befehls
DE69831282T2 (de) Verwaltung von umbenannten Register in einem superskalaren Rechnersystem
DE2548720C2 (de) Mikroprogramm-Steuerwerk
DE2617127A1 (de) Mehrfachprogramm-datenverarbeitungssystem

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