DE69831282T2 - Verwaltung von umbenannten Register in einem superskalaren Rechnersystem - Google Patents

Verwaltung von umbenannten Register in einem superskalaren Rechnersystem Download PDF

Info

Publication number
DE69831282T2
DE69831282T2 DE69831282T DE69831282T DE69831282T2 DE 69831282 T2 DE69831282 T2 DE 69831282T2 DE 69831282 T DE69831282 T DE 69831282T DE 69831282 T DE69831282 T DE 69831282T DE 69831282 T2 DE69831282 T2 DE 69831282T2
Authority
DE
Germany
Prior art keywords
register
registers
logical
physical
renamed
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 - Lifetime
Application number
DE69831282T
Other languages
English (en)
Other versions
DE69831282D1 (de
Inventor
Ute Gärtner
Dipl.-Ing. Klaus Jörg Getzlaff
Dipl.-Ing. Thomas Köhler
Dipl.-Ing. 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 DE69831282D1 publication Critical patent/DE69831282D1/de
Application granted granted Critical
Publication of DE69831282T2 publication Critical patent/DE69831282T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

  • GEBIET DER ERFINDUNG
  • Die Erfindung betrifft das Zuweisen und Umbenennen von Registern in einem Rechnersystem, welches Anweisungen abweichend von der normalen Reihenfolge verarbeitet, und insbesondere das Protokollieren eines architekturdefinierten Maschinenstatus, welcher architekturdefinierte Registerwerte umfasst.
  • HINTERGRUND DER ERFINDUNG
  • Lange Zeit war es üblich, dass Prozessoren Anweisungen der Reihe nach ausführen. Das bedeutet, dass die Anweisungen nacheinander in derselben Reihenfolge an die Ausführungseinheiten des Prozessors weitergeleitet werden, wie diese in der Programmabfolge erscheinen.
  • In einem solchen System erfolgen Lese- und Schreiboperationen in alle Register des Prozessors in genau derselben Reihenfolge, die durch das Programm vorgegeben ist. Somit besteht eine Eins-zu-eins-Übereinstimmung zwischen den Registern und ihren Werten. Zu jedem Zeitpunkt der Ausführung kennzeichnet eine Registerkennung genau den im entsprechenden Register enthaltenen Wert. Dieser Wert eines Registers repräsentiert auch den aktuellen Maschinenstatus und kann als architekturdefinierter Registerwert bezeichnet werden.
  • Um den Durchsatz an Anweisungen und somit die Leistung zu erhöhen, wurden Prozessoren eingeführt, die mehrere voneinander unabhängige Anweisungen pro Taktzyklus ausgeben bzw. deren Ausführung auslösen. Solche Prozessoren sind als superskalare Prozessoren bekannt. Solange keine Abhängigkeiten zwischen den Daten, keine prozeduralen Abhängigkeiten oder Ressourcenkonflikte bestehen, können während eines einzigen Zyklus mehrere Anweisungen ausgeführt werden. Wenn jedoch solche Abhängigkeiten oder Konflikte bestehen, kann nur die erste einer Folge von Anweisungen ausgeführt werden. Das führt dazu, dass eine Vielzahl von Funktionseinheiten in einer superskalaren Architektur nicht voll ausgelastet werden kann.
  • Als nächster Schritt bei der Entwicklung von Hochleistungsprozessoren gilt die Einführung der Verarbeitung außer der Reihe. Diese Prozessoren ignorieren bei der Ausführung eines Programms die Reihenfolge der Anweisungen und verarbeiten diese in einer von der normalen Reihenfolge abweichenden Reihenfolge.
  • Wenn allerdings eine Anweisung A Zieldaten erzeugt, die von einer Anweisung B als Quelldaten benötigt werden, muss diese Datenabhängigkeit berücksichtigt werden. Wenn Anweisungen nicht in der normalen Reihenfolge ausgegeben werden, geht die Übereinstimmung zwischen den Registern und den Registerwerten verloren. Gleichzeitig können mehrere Registerwerte existieren, die einem logischen Register entsprechen, da jeder Schreibzugriff auf ein bestimmtes logisches Register ein neues Exemplar dieses Registers erzeugt.
  • Die Werte verschiedener Registerexemplare dürfen nicht miteinander verwechselt werden. Deshalb müssen Registergruppen bereitgehalten werden, in denen für jedes logische Register eine Vielzahl von Werten gespeichert und erkannt werden können. Bevor Anweisungen einer der Ausführungseinheiten zugeleitet werden können, muss klargestellt werden, welche Exemplare der adressierten logischen Register verwendet werden sollen. Die Kennzeichnung derjenigen aktuellen Speicherzelle, welche zu einem bestimmten Zeitpunkt ein logisches Register repräsentiert, wird allgemein als „Registerumbenennung" bezeichnet.
  • Bei jedem Schreibzugriff auf die logischen Register wird ein neues Exemplar eines bestimmten logischen Registers erzeugt. Somit erzeugt jede Anweisung, die ein Register modifiziert, ein neues physische Exemplar dieses Registers, für das in der Registergruppe ein physisches Register reserviert werden muss.
  • Wenn bei jeder Modifizierung eines logischen Registers ein neues physisches Register reserviert wird, muss es auch einen Mechanismus geben, um die alten Registerexemplare zu entfernen. Ohne einen solchen Mechanismus würde das System eine unbestimmte Anzahl von Registerexemplaren ansammeln. Ein Exemplar kann zerstört werden, indem sein Wert überschrieben wird und keine Bezüge mehr zu diesem Wert bestehen bleiben.
  • Wenn Anweisungen in ihrer normalen Reihenfolge verarbeitet werden, befindet sich der Prozessor immer in einem bestimmten „Status". Dieser Status muss für ein Programm gespeichert werden, das unterbrochen wird, um „genaue Interrupts" zu ermöglichen. Wenn eine Ausnahmebedingung eintritt, muss der Prozessor in der Lage sein, wieder zu diesem definierten Status zurückzukehren. Auch wenn eine Verzweigung falsch vorhergesagt worden ist und nach dieser Verzweigung mehrere Anweisungen spekulativ ausgeführt worden sind, muss der Prozessor in der Lage sein, zu einem wohldefinierten nichtspekulativen Maschinenstatus zurückzukehren.
  • Das Problem besteht darin, wie dieser Status und die entsprechenden architekturdefinierten Registerwerte in einem System definiert werden können, das Anweisungen nicht in der normalen Reihenfolge verarbeitet. Während die Anweisungen abweichend von der normalen Reihenfolge verarbeitet werden, ist es wünschenswert, diesen architekturdefinierten Status in der Reihenfolge weiterzuschieben.
  • Ein Ansatz zum Definieren eines architekturdefinierten Status innerhalb der normalen Reihenfolge besteht in Folgendem: Wenn eine Anweisung sowie alle vorangehenden Anweisungen ausgeführt worden sind, können die Ergebnisse der Anweisung als Status des entsprechenden Registers für die normale Reihenfolge gespeichert und die Anweisung selbst als „erledigt" angesehen werden. Somit kann der architekturdefinierte Status eines Systems, das Anweisungen nicht entsprechend der normalen Reihenfolge verarbeitet, durch die letzte ausgeführte Anweisung der kontinuierlichen Folge der ausgeführten Anweisungen definiert werden. Die Werte zum Zeitpunkt der vollendeten Ausführung der Anweisung gelten als die entsprechenden architekturdefinierten Registerwerte. Im Falle von Ausnahmebedingungen und bei falsch vorhergesagten Verzweigungen nimmt die Maschine die Ausführung der Anweisung bei diesem architekturdefinierten Status wieder auf.
  • Eine Lösung zur Behandlung verschiedener Registerexemplare und zum kontinuierlichen Weiterschieben des architekturdefinierten Status in der normalen Reihenfolge besteht in der Verwendung eines Neuordnungspuffers in Verbindung mit einer Registerdatei. Wenn eine Anweisung decodiert wird, wird ihr eine Position am Anfang des Neuordnungspuffers zugeordnet. Dieser Neuordnungspuffer ist als FIFO-Puffer (First-In-First-Out) ausgeführt. Sobald die Anweisung ausgeführt ist, wird ihr Ergebniswert wieder zurück auf den zugeordneten Speicherplatz geschrieben. Wenn der Wert das Ende des Puffers erreicht hat und keine Ausnahmebedingung eingetreten ist, wird er in die Registerdatei geschrieben. Wenn die Anweisung beim Erreichen des Endes des Pufferspeichers noch nicht vollständig verarbeitet worden ist, geht der Neuordnungspuffer erst dann weiter, wenn die Verarbeitung der Anweisung abgeschlossen ist. Während im Neuordnungspuffer die spekulativen Werte der verschiedenen Registerexemplare enthalten sind, speichert die Registerdatei die architekturdefinierten Registerwerte und definiert somit den Status entsprechend der normalen Reihenfolge. Falls es zu einer Ausnahmebedingung oder zu einer falschen Vorhersage einer Verzweigung kommt, wird der Neuordnungspuffer gelöscht und auf den Status gemäß der normalen Reihenfolge zugegriffen.
  • Ein Nachteil dieser Lösung besteht darin, dass Registerwerte von den Speicherplätzen des Neuordnungspuffers zur Registerdatei übertragen werden müssen. Wenn es zu einem genauen Interrupt kommt, wird auf die Werte dieser Registerdatei zugegriffen.
  • Es gibt eine Vielzahl unterschiedlicher Lösungen, die sich zur Speicherung der architekturdefinierten Registerwerte einer separaten Registerdatei bedienen. Die temporären Werte der verschiedenen Registerexemplare können entweder, wie beschrieben, im Neuordnungspuffer oder im Anweisungsfenster selbst oder in einer separaten temporären Registermatrix gespeichert werden. Diese Lösungen haben alle gemeinsam einen Nachteil: Registerwerte müssen, unabhängig von der Art des Speichers, von einem temporären Registerspeicher zu einer Registermatrix oder einer Registerdatei übertragen werden, in welcher die architekturdefinierten Registerwerte in der normalen Reihenfolge gespeichert bleiben.
  • In der Internationalen Patentanmeldung PCT/JP93/00553 mit dem Titel „A system and method for retiring instructions in a superscalar microprocessor" von J. Wang, S. Garg und T. Deosaran werden ein System und ein verfahren zum Protokollieren sowohl des architekturdefinierten Status als auch der umbenannten Exemplare der logischen Register eines Systems bereitgestellt, das Anweisungen abweichend von der normalen Reihenfolge verarbeitet. Gemäß dem beschriebenen Verfahren werden die Ergebnisse der außrhalb der normalen Reihenfolge ausgeführten Anweisungen zuerst in einem temporären Puffer zwischengespeichert, bis alle vorangehenden Anweisungen ausgeführt worden sind.
  • Sobald alle vorangehenden Anweisungen ausgeführt und ihre Ergebnisse in der normalen Reihenfolge in einer Registermatrix gespeichert worden sind, können die Ergebnisse der betreffenden Anweisung in diese Registermatrix geschrieben werden, sodass die betreffende Anweisung als erledigt betrachtet werden kann. Zur Gewährleistung der Integrität der Daten in der Registermatrix werden die Ergebnisse der Anweisungen erst in die Registermatrix geschrieben, nachdem die Ergebnisse aller vorangehenden Anweisungen eingeschrieben worden sind. Auf diese Weise wird der Maschinenstatus der Reihe nach aktualisiert. Die beschriebene Lösung umfasst Mittel zum Zuordnen der Ergebnisse der Anweisung zu einem temporären Speicherplatz und zum Schreiben auf diesen Speicherplatz, zum Übertragen der Ergebnisse vom temporären Speicher in die Registermatrix, sodass die Registermatrix in der normalen Reihenfolge aktualisiert wird, sowie für spätere Operationen zum Zugreifen sowohl auf den temporären Speicher als auch auf die Registermatrix.
  • Registerwerte gelten dann als erledigt, wenn sie in eine Registermatrix übertragen werden, in welcher die „finalen Registerwerte" gespeichert bleiben. Zwischen dieser temporären Registermatrix und der Finalregistermatrix ist ein ständiger Datenverkehr erforderlich.
  • Wenn der aktuelle Wert eines bestimmten logischen Registers ermittelt werden soll, muss zuerst geprüft werden, ob sich in der temporären Registerdatei ein Exemplar befindet. Wenn kein temporäres Exemplar gefunden wird, muss auf die Finalregistermatrix zugegriffen werden. Für diesen zweistufigen Datenzugriff werden Zeit und weitere Logikschaltungen benötigt.
  • In der Europäischen Patentanmeldung EP 301 220 A2 wird ein Computersystem beschrieben, mit welchem Anweisungen außerhalb der normalen Reihenfolge ausgeführt werden können. Das System ist gekennzeichnet durch eine Registermatrix aus m Hardwareregistern in einer Systemarchitektur, in der n adressierbare Register benötigt werden, wobei m größer als n ist. Außerdem umfasst das System eine Anweisungsausführungseinheit zum Ausführen von Anweisungen in der Registermatrix, welche so geschaltet ist, dass Informationen zu dieser Registermatrix gesendet und von ihr empfangen werden können. In diesem System befindet sich ein Prozessorspeicher zum Speichern von Anweisungen und Daten sowie zum Bereitstellen der Anweisungen und Daten für die Anweisungsausführungseinheit. Ferner umfasst das System eine Anweisungsteuerungseinheit zur Steuerung der Beförderung der Anweisungen vom Prozessorspeicher zur Anweisungsausführungseinheit. Diese Anweisungssteuerungseinheit ist mit dem Prozessorspeicher und dem Anweisungsausführungsmittel sowie einer logischen Einheit verbunden, die wiederum mit dem Registermatrixmittel verbunden ist, um während der Ausführung der Anweisung für jedes adressierbare Register einen äquivalenten Speicherplatz im Hardwareregister zuzuordnen, wobei während der von der normalen Reihenfolge abweichenden Ausführung einer Anweisung ein demselben adressierbaren Register äquivalenter Speicherplatz oder Speicherplätze des Hardwareregisters zugeordnet werden, sodass während der von der normalen Reihenfolge abweichenden Ausführung der Anweisung sowohl ein neuer Wert als auch ein alter Wert oder alte Werte gespeichert werden.
  • Diese Aufgabe wird durch ein in den Hauptansprüchen dargelegtes Verfahren und System gelöst. Weitere vorteilhafte Ausführungsarten der vorliegenden Erfindung werden in den Unteransprüchen beschrieben und in der folgenden Beschreibung erläutert.
  • Das Computersystem gemäß der vorliegenden Erfindung beinhaltet einen Prozessor, der Anweisungen abweichend von der normalen Reihenfolge verarbeitet, in welchem die Anweisungen logische Register adressieren und jedes der logischen Register durch eine Gruppe von mindestens einem physischen Register dargestellt wird. Jede Gruppe der physischen Register weist ein physisches Register auf, das einen nichtspekulativen architekturdefinierten Status eines dieser logischen Register darstellt, sodass sich der architekturdefinierte Status auf die letzte aus der kontinuierlichen Folge von ausgeführten Anweisungen bezieht. Die restlichen aus der Gruppe der physischen Register stellen dabei umbenannte Exemplare der logischen Register dar. Das Computersystem umfasst Folgendes: ein Matrixmittel mit den physischen Registern, welche die architekturdefinierten Status und die umbenannten Exemplare der logischen Register repräsentieren, ein erstes Anzeigemittel zum Ermitteln, welches der physischen Register aus jeder Gruppe der physischen Register gerade den architekturdefinierten Status der logischen Register repräsentiert, und ein zweites Anzeigemittel zum Angeben, welches der physischen Register aus jeder Gruppe der physischen Register gerade das in der Reihenfolge jeweils letzte umbenannte Exemplar repräsentiert.
  • Außerdem werden das erste und das zweite Anzeigemittel als Zeiger realisiert, wobei mit dem ersten Anzeigemittel ermittelt wird, welches der physischen Register aus der Gruppe der physischen Register grade den architekturdefinierten Status des logischen Registers repräsentiert, und wobei das zweite Anzeigemittel angibt, welches der physischen Register aus jeder Gruppe der physischen Register gerade das letzte der umbenannten Exemplare in der Reihenfolge repräsentiert.
  • Zur Realisierung der Anzeigemittel in Form von Zeigern sind für jedes logische Register nur einige wenige Bits erforderlich. Aus diesem Grunde ist dies die billigste und einfachste Möglichkeit zur Realisierung der Anzeigemittel. Eine Aktualisierung der Zeiger kann einfach durch Erhöhung der Werte dieser Zeiger erfolgen.
  • Bei einer weiteren Ausführungsart der Erfindung sind die Registermatrixmittel als zyklische Speichermittel ausgeführt, in welchem die physischen Register, welche den architekturdefinierten Status eines der logischen Register repräsentiert haben und diesen architekturdefinierten Status der logischen Register nicht mehr repräsentieren, zur Darstellung neuer umbenannter Exemplare wiederverwendet werden können.
  • Jedes physische Register, das den architekturdefinierten Status repräsentiert, kann neu zugeordnet werden. Dadurch kommt man mit einer geringeren Anzahl von physischen Registern aus. Der Umfang an benötigten Speicherplätzen wird verringert und weniger Chipfläche benötigt. Das ist besonders wichtig, da die Registerdatei mehrmals vorkommt, nämlich einmal pro Funktionseinheit.
  • Bei einer weiteren Ausführungsart der Erfindung umfasst das Computersystem ferner ein Aussonderungsmittel zum Freigeben des physischen Registers, welches den architekturdefinierten Status eines der logischen Register repräsentiert, zum Ermitteln des in der Reihenfolge ältesten aus der Gruppe der physischen Register, die die umbenannten Exemplare der logischen Register repräsentieren, welches Register den architekturdefinierten Status des logischen Registers weiterhin repräsentieren soll, und zum Aktualisieren des ersten Anzeigemittels, das ermittelt, welches aus der Gruppe der physischen Register gerade den architekturdefinierten Status des logischen Registers repräsentiert.
  • Das entspricht dem Verfahren nach Anspruch 10 zur Verwaltung einer aus mindestens einem physischen Register bestehenden Gruppe, die ein logisches Register in einem Computersystem repräsentiert. Das Verfahren umfasst die folgenden Schritte: Freigeben des physischen Registers, welches den architekturdefinierten Status des logischen Registers repräsentiert, und Ermitteln des in der Reihenfolge ältesten aus der Gruppe der physischen Register, die die umbenannten Exemplare des logischen Registers repräsentieren, welches den architekturdefinierten Status des logischen Registers weiterhin repräsentieren soll.
  • Wenn der architekturdefinierte Status des Computersystems in der Reihenfolge weitergeschoben wird, muss das aktuelle Register in der Reihenfolge freigegeben und das nachfolgende physische Register ermittelt werden, welches den neuen architekturdefinierten Status repräsentiert. Der Vorteil der Erfindung besteht darin, dass zum kontinuierlichen Weiterschieben des architekturdefinierten Status keine Datenbewegungen erforderlich sind. Stattdessen wird das erste Anzeigemittel entsprechend geändert. Das lässt sich einfach durch Erhöhen des Wertes der Zeiger erreichen, sodass eine schnelle und einfache Aktualisierung möglich ist. Freigegebene Register können sofort wiederverwendet werden, um neue umbenannte Exemplare zu repräsentieren.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt die allgemeine Struktur eines von der normalen Reihenfolge abweichenden Verarbeitungssystems.
  • 2 zeigt ein Programmbeispiel, bei dem die Ausführung von der normalen Reihenfolge abweicht. Hierzu müssen die adressierten logischen Register in physische Register umbenannt werden.
  • 3 ist eine detailliertere Darstellung eines von der normalen Reihenfolge abweichenden Verarbeitungssystems, welches eine Registerumbenennungs- und -reservierungseinheit umfasst.
  • 4 zeigt das Zusammenwirken zwischen der Reservierungsstation und dem Neuordnungspuffer, um den Bearbeitungsstatus genau zu verfolgen und genaue Interrupts zu erzeugen.
  • 5 zeigt die Registerdatei zum Speichern der architekturdefinierten und der provisorischen Registerinhalte.
  • 6 zeigt ein Verfahren zum Reservieren und Umbenennen von Registern, welches auf das Programmbeispiel von 2 angewendet wird.
  • 7 zeigt die Struktur der Zuordnungsmatrix sowie einen seiner Einträge, welcher sowohl den Zeiger für die normale Reihenfolge als auch den Zeiger auf das umbenannte Register enthält.
  • 8A zeigt das Format eines Eintrags der Reservierungsstation.
  • 8B zeigt die Struktur der zur Bezeichnung der physischen Quellregister verwendeten Kennung.
  • 8C zeigt die Struktur der zur Bezeichnung der physischen Zielregister verwendeten Kennung.
  • 9 zeigt eine Ausführungsform eines superskalaren Computersystems, welches eine Reservierungsstation, eine Neuordnungseinheit, eine Reservierungseinheit gemäß 7 und eine Registerdatei gemäß 5 umfasst.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • 1 zeigt den typischen Aufbau eines von der normalen Reihenfolge abweichenden Verarbeitungssystems. Anweisungen werden vom Anweisungsspeicher (100) abgerufen und in dieser Reihenfolge im Anweisungs-Cachespeicher (101) gepuffert. Dann werden die Anweisungen decodiert (102) und in einem normalen internen Anweisungsformat dargestellt. Es gibt auch Lösungen, bei denen eine externe Anweisung in eine Anzahl kleiner interner Anweisungen aufgeteilt wird, die dann abweichend von der normalen Reihenfolge verarbeitet werden können. Die Anweisungsdecodiereinheit (102) ist auch für die Klärung der Abhängigkeiten zuständig, d.h., sie muss die aktuellen physischen Speicherzellen den logischen Registern zuordnen, welche als Quellen und Ziele der jeweiligen Anweisungen dienen. In dieser Phase kann nicht auf die Protokollierung der verschiedenen Exemplare jedes logischen Registers verzichtet werden, die im Verlauf der Programmausführung entstehen.
  • In der Anweisungsdecodierphase erfolgt auch die Verzweigungsvorhersage.
  • Dann werden die Anweisungen zur Reservierungsstation (103) weitergeleitet. Für jedes Zielregisterexemplar einer Anweisung wird ein Eintrag im Neuordnungspuffer (108) erstellt. Dadurch erkennt der Neuordnungspuffer alle physischen Register, welche Exemplare von logischen Registern repräsentieren, in der Reihenfolge ihres Auftretens, also in der normalen Reihenfolge. In der Reservierungsstation warten die Anweisungen so lange, bis alle von ihnen benötigten Quelldaten berechnet worden sind. Falls die von einer Anweisung benötigten Quelldaten bereits als Zieldaten einer früheren Anweisung berechnet worden sind, befinden sich diese Zieldaten in der Registerdatei (107) und können von dort abgerufen werden. Falls die von einer bestimmten Anweisung benötigten Quelldaten noch nicht berechnet worden sind, muss die Anweisung die Ergebnisse überwachen, die von den verschiedenen Ausführungseinheiten ausgegeben werden.
  • Sobald alle Quelldaten einer bestimmten Anweisung eingetroffen sind, kann die Anweisung selbst je nach ihrem Typ und je nach Verfügbarkeit der Ausführungseinheiten zu einer der Ausführungseinheiten weitergeleitet werden. Im Falle einer Verzweigung müssen die Anweisung zur Verzweigungseinheit (104), die Ganzzahlarithmetik zu einer der Ganzzahleinheiten (105) und die auf einen Speicher zugreifenden Anweisungen zu einer der Lade-/Speichereinheiten (106) weitergeleitet werden. Somit wird jede Anweisung durch die entsprechende Funktionseinheit verarbeitet, und die Zieldaten der Anweisung können berechnet werden. Beim Zugriff auf einen Speicher schreibt die Lade-/Speichereinheit (106) entweder Daten über einen Daten-Cachespeicher (109) in einen Datenspeicher (110) oder empfängt sie von diesem.
  • Der so genannte „Festschreibungsprozess" ist für das Freigeben von Anweisungen zuständig, d.h., dass aus den Zielregisterwerten der Anweisungen architekturdefinierte Registerwerte werden. Die Anweisungen werden immer in der normalen Reihenfolge festgeschrieben. Dadurch ist der Freigabezeiger zusammen mit den architekturdefinierten Registerwerten in der Lage, einen Maschinenstatus genau zu definieren. Dieser Maschinenstatus wird dann nicht mehr verändert. Er rückt dann in der normalen Reihenfolge vor. Auf diese Weise werden genaue Interrupts möglich.
  • Wenn Anweisungen ausgeführt werden, die von ein und demselben Register gelesen oder in dieses geschrieben werden, muss ihre Reihenfolge beibehalten werden. Wenn beabsichtigt wird, die Anforderungen der Ausführung in der normalen Reihenfolge nicht einzuhalten, müssen zuerst die Datenabhängigkeiten zwischen verschiedenen Anweisungen geklärt werden, die auf dieselbe Ressource zugreifen. Das geschieht dadurch, dass den verschiedenen Exemplaren einer Ressource, zum Beispiel eines logischen Registers, verschiedene physische Register zugeordnet werden. Dieser Vorgang wird als „Registerumbenennung" bezeichnet und stellt ein wesentliches Merkmal aller von der normalen Reihenfolge abweichenden Verarbeitungssysteme dar.
  • 2 veranschaulicht dies mittels eines Programmbeispiels. Die verschiedenen auftretenden Exemplare des Registers R3 sind in der rechten Spalte von 2 aufgeführt.
  • In der Anweisung 200 werden die Inhalte der Register R2 und R3 der logischen Operation ODER unterzogen; das Ergebnis dieser Operation wird wieder in das Register R2 zurückgeschrieben. Im vorliegenden Beispiel wird das Register R3 (das als einziges Register betrachtet wird) nur als Quellregister verwendet. Dieses Exemplar von R3 soll deshalb gemäß der rechten Spalte als R3.1 bezeichnet werden.
  • Dann wird eine „bedingte Verzweigung" (201) ausgeführt. Die Bedingung für die Ausführung der Verzweigung ist im Register M1 enthalten. Die Register R1 und R2 enthalten die Werte Index und Basis, die zusammen mit dem Verschiebungsbetrag zur Berechnung der Sprungadresse dienen. Wenn die Verzweigung ausgeführt werden soll, wird die Programmausführung an der durch R1, R2 und den Verschiebungsbetrag angezeigten Adresse fortgesetzt.
  • Die nächste Anweisung (202) ist eine Ladeoperation, bei der Daten vom Speicher abgerufen werden. R4, R3 und der Verschiebungsbetrag werden zur Berechnung der entsprechenden Speicheradresse verwendet. Der abgerufene Speicherinhalt wird im Register R3 gespeichert. Somit dient R3 zuerst als Quelloperand (zur Adressberechnung) und anschließend als Ziel. Das als Quelle verwendete Registerexemplar ist dem in Anweisung 200 verwendeten, d.h. dem Exemplar R3.1, identisch. Dem Ziel der Anweisung 202 muss ein anderes Exemplar von R3 zugeordnet werden, da die Ladeoperation den Inhalt von R3 verändert. Falls die auf Anweisung 202 folgenden Anweisungen R3 als Quelle nutzen, dürfen sie aus diesem Grunde nicht mehr den Wert des Exemplars R3.1 erhalten. Deshalb muss als Ziel der Ladeoperation 202 ein neues physisches Exemplar der Register R3, R3.2 zugeordnet werden.
  • Anschließend wird eine Additionsoperation (203) ausgeführt. Unter Verwendung von R1, R2 und eines Verschiebungsbetrags ermittelt die Adressarithmetik eine Adresse, und der Inhalt dieser Adresse wird zum Inhalt von R3 hinzugefügt. Das Ergebnis wird dann in R3 gespeichert. Somit dient R3 wiederum zuerst als Quelle und anschließend als Ziel. Da R3 gerade erst in Anweisung 202 geändert worden ist, muss der in Anweisung 203 verwendete Quellregisterwert gleich dem Zielregisterwert der Anweisung 202 sein, also gleich R2.2. Als Ziel für die Anweisung 203 muss ein neues physisches Register reserviert werden, und dem Ziel der Anweisung 203 wird ein neues Registerexemplar R3.3 zugeordnet.
  • Bei der Speicheroperation 204 wird der Inhalt von R1 unter einer aus R4, R3 und einem Verschiebungsbetrag ermittelten Adresse gespeichert. R3 dient als Quelloperand zur Adressenberechnung, und das Exemplar trägt die Bezeichnung R3.3.
  • Anschließend wird in Anweisung 205 auf die aus R1, R2 und einem Verschiebungsbetrag ermittelte Adresse zugegriffen und deren Inhalt einer logischen Operation ODER mit dem Inhalt des Registers R3 unterzogen. Das Ergebnis der ODER-Operation wird wieder in R3 zurückgespeichert. Das Exemplar des Quellregisters der ODER-Operation heißt R3.3, und R3.0 wird dem Ziel zugeordnet. Der Sprung von 3 auf 0 kommt dadurch zustande, dass bei der im Folgenden beschriebenen Lösung in der Registerdatei nur je vier verschiedene Registerexemplare jedes Registers gleichzeitig verwaltet werden können. Es können jedoch auch noch mehr umbenannte Exemplare verarbeitet werden.
  • In Anweisung 206 wird der Inhalt von R3 unter einer aus R3 (das sowohl als Index als auch als Basis dient) und einem Verschiebungsbetrag ermittelten Speicheradresse gespeichert. Das hier verwendete Speicherregisterexemplar lautet R3.0.
  • In Anweisung 207 erfolgt ein Ladezugriff auf die Adresse (R4, R3, Verschiebungsbetrag), dessen Ergebnis in R3 gespeichert wird. R3 wird sowohl als Quelle (für die Adressberechnung) als auch als Ziel verwendet. Während R3.0 das Quellregisterexemplar der Anweisung ist, wird R3.1 als neues Zielregisterexemplar zugeordnet.
  • Aus dieser Programmfolge ist zu erkennen, dass in den einzelnen Abschnitten 208 bis 212 der Anweisungsfolge unterschiedliche Exemplare von R3 verwendet werden. Diejenigen Anweisungen, welche R3.0 als Quelle verwenden (206, 207), können erst ausgeführt werden, nachdem das Exemplar R3.0 berechnet worden ist. Das bedeutet, dass zuerst die Anweisung 205 ausgeführt werden muss, bevor Anweisung 206 oder 207 in Angriff genommen werden kann, wobei deren Reihenfolge keine Rolle spielt.
  • Die Einschränkungen bei der Ausführung von Anweisungen abweichend von der normalen Reihenfolge können wie folgt zusammengefasst werden: Sobald ein neues Registerexemplar als Ziel einer Anweisung erscheint, muss die Ausgabe von Anweisungen, welche dieses Registerexemplar als Quellregister verwenden, so lange warten, bis dieses Registerexemplar berechnet worden ist.
  • 3 zeigt ein ausführlicheres Blockschaltbild eines superskalaren Computersystems. Hierbei liegt das Schwergewicht auf der Verarbeitung verschiedener Registerexemplare. Die im Anweisungsspeicher (300) befindlichen Anweisungen werden ebenso wie in 1 zu einem Anweisungs-Cachespeicher (301) übertragen. Anschließend werden die Anweisungen zu einer Vordecodierungseinheit (302) weitergeleitet, welche die Anweisungen des externen Anweisungsstroms in ein normales Anweisungsformat umgewandelt, das sich zur Verarbeitung abweichend von der normalen Reihenfolge eignet. Bei diesem Anweisungsformat gibt es Datenfelder für den OP-Code, für mindestens zwei Quellregister, für zwei Register zur Adressberechnung, falls die Anweisung auf einen Speicher zugreifen muss, und für mindestens zwei Zielregister.
  • Aus der linken Spalte von 2, in welcher eine Anweisungsfolge gezeigt ist, die Teil eines externen Anweisungsstroms sein kann, wird klar, dass eine Anweisung im externen Anweisungsstrom nur auf diejenigen logischen Register zugreift, die gelesen oder geändert werden sollen. Das Gesamtproblem der verschiedenen physischen Exemplare, welche ein logisches Register im Verlauf der Ausführung einer Anweisung haben kann, ist aber in diesem Stadium noch nicht gelöst. Solange die Anweisungen des externen Anweisungsstroms in ihrer normalen Reihenfolge verarbeitet werden, muss dieses Problem auch nicht berücksichtigt werden. Sobald aber Anweisungen abweichend von ihrer normalen Reihenfolge ausgeführt werden, müssen die verschiedenen physischen Exemplare eines bestimmten logischen Registers sorgfältig protokolliert werden. Dies ist für das logische Register R3 in der linken Spalte von 2 dargestellt.
  • Das Problem wird dadurch gelöst, dass jedem Exemplar eines logischen Registers ein physisches Register zugeordnet wird. Das bedeutet, dass immer dann, wenn eine Anweisung ein bestimmtes logisches Zielregister ändert und somit ein neues Exemplar dieses logischen Registers erzeugt, ein neues physisches Register zugeordnet werden muss. Sobald dieses Exemplar des logischen Registers von einer anderen Anweisung als Quelle verwendet wird, muss das entsprechende physische Register verwendet werden. Da es für ein logisches Register eine Vielzahl von Exemplaren geben kann, kann auch eine Vielzahl von physischen Registern vorhanden sein, die diesem logischen Register entsprechen.
  • Das Analysieren, welches physische Register einem von einer bestimmten Anweisung verwendeten logischen Register entspricht, das Ersetzen dieses logischen Registers durch das entsprechende physische Register (Registerumbenennung) und das Reservieren eines neuen physischen Registers, sobald ein neues Exemplar eines logischen Registers erzeugt wurde (Registerzuordnung), erfolgt durch die „Registerumbenennungs- und -zuordnungseinheit" (304).
  • Sobald ein neues physisches Register zugeordnet wird, setzt die „Registerumbenennungs- und -zuordnungseinheit" (304) den Neuordnungspuffer (305) davon in Kenntnis. Im Neuordnungspuffer ist für jedes physische Ziel ein Eintrag gespeichert, der ein bestimmtes Exemplar eines bestimmten logischen Registers kennzeichnet. Jeder Eintrag im Neuordnungspuffer enthält das physische Register, das von ihm repräsentierte logische Register und den Bearbeitungsstatus dieses physischen Registers. Bei der im Folgenden beschriebenen Ausführungsform kann der Neuordnungspuffer gleichzeitig bis zu 32 Einträge enthalten. Sobald die „Registerumbenennungs- und -zuordnungseinheit" (304) ein neues physisches Register zuordnet, wird im Neuordnungspuffer (305) eine neue Eintragung vorgenommen. Da die Anweisungen während der Vordecodierung immer noch in der normalen Reihenfolge verarbeitet werden, erfolgen auch die Eintragungen in den Neuordnungspuffer in derselben Reihenfolge, sodass ein Eintrag, der ein früheres Exemplar eines logischen Registers repräsentiert, immer vor einem Eintrag kommt, der einem späteren Exemplar desselben logischen Registers entspricht.
  • Jeder Eintrag des Neuordnungspuffers enthält auch den Bearbeitungsstatus des zugehörigen Zielregisters. Während die Eintragung vorgenommen wird, lautet dieser Bearbeitungsstatus natürlich „nicht beendet". Sobald ein bestimmter Registerwert ermittelt wird, wechselt der Bearbeitungsstatus seines entsprechenden Neuordnungspuffers auf „beendet". Der Neuordnungspuffer ist als zyklischer Puffer ausgeführt und kann bis zu 32 Einträgen enthalten.
  • Der Anweisungspuffer (303) enthält nun zwei Anweisungen des externen Anweisungsstroms in einem für die Reservierungsstation geeigneten Format. Die logischen Register sind von der „Registerumbenennungs- und -zuordnungseinheit" (304) durch die entsprechenden physischen Register ersetzt worden, und jedes Mal, wenn ein neues physisches Register zugeordnet werden sollte, ist im Neuordnungspuffer (305) eine Eintragung vorgenommen worden.
  • Die Anweisungen stehen nun bereit, um zur Reservierungsstation (306) weitergeleitet zu werden. Die Reservierungsstation ist als zyklischer Puffer mit bis zu 16 möglichen Einträgen ausgeführt.
  • In der Reservierungsstation (306) warten die Anweisungen auf ihre Quelloperanden. Sobald alle Quelloperanden einer Anweisung eingetroffen sind, signalisiert die Anweisung, dass sie zu einer der Funktionseinheiten gesendet werden kann. Anweisungen werden abweichend von ihrer normalen Reihenfolge zu den Funktionseinheiten gesendet, d.h., das Absenden einer Anweisung erfolgt unabhängig davon, ob die vorangehende oder die nachfolgende Anweisung bereits abgesendet worden ist. Je nach Anweisungstyp werden die Anweisungen zu einer der Funktionseinheiten weitergeleitet: Verzweigungen werden zur Verzweigungseinheit (307), Ganzzahlberechnungen zur Ganzzahleinheit (308) und alle Anweisungen mit Speicherzugriff zur Lade-/Speichereinheit (309) gesendet. Die Lade-/Speichereinheit tauscht über einen Daten-Cachespeicher (311) Daten mit dem Datenspeicher (312) aus.
  • Mit jeder Funktionseinheit wird eine Kopie der Registerdatei (310) verknüpft. Sobald an einer dieser Registerdateien Änderungen vorgenommen werden, werden die anderen Registerdateien in den verschiedenen Funktionseinheiten aktualisiert. Jede Registerdatei (310) enthält die Werte aller physischer Register, die bis dahin reserviert worden sind.
  • Da jedes physische Register einem Exemplar eines bestimmten logischen Registers entspricht, enthält die Registerdatei (310) die Werte dieser Exemplare der logischen Register, die bereits ermittelt worden sind.
  • Es ist von Vorteil, wenn sich in unmittelbarer Nähe jeder Funktionseinheit eine Kopie der Registerdatei befindet. Eine zu einer der Funktionseinheiten (307, 308, 309) weitergeleitete Anweisung muss auf die Werte in ihren jeweiligen Quellregistern zugreifen. Diese Registerwerte befinden sich in der lokalen Kopie der Registerdatei (310). Sobald Ergebnisdaten entstehen, werden diese in die lokale Registerdatei geschrieben. Da die logischen Quell- und Zielregister einer Anweisung bereits während der Vordecodierungsphase (302) in physische Register umbenannt worden sind, kann eine zu einer Funktionseinheit weitergeleitete Anweisung direkt auf die physischen Quell- und Zielregister der Registerdatei zugreifen, da nunmehr die logischen nicht mehr in die physischen Register umgesetzt werden müssen. Diese Umsetzung ist bereits während der Vordecodierungsphase (302) von der „Registerumbenennungs- und -zuordnungseinheit" (304) endgültig vorgenommen worden. Durch das Bereithalten einer lokalen Kopie der Registerdatei bei jeder Funktionseinheit kann die Zugriffszeit zu den Registerinhalten weiter verkürzt werden.
  • Während des Festschreibungsprozesses werden aus den von diesen Anweisungen erzeugten Zielregisterwerten architekturdefinierte Registerwerte. Somit definiert der Festschreibungs- oder Aussonderungsprozess einen architekturdefinierten Maschinenstatus. Dieser architekturdefinierte Status schreitet der Reihe nach von alten zu neueren Anweisungen fort und wandelt dadurch die entsprechenden provisorischen Exemplare der logischen Register in gültige architekturdefinierte Registerwerte um.
  • Zum Verständnis der Arbeitsweise des Festschreibungsprozesses muss der im Neuordnungspuffer (305) gespeicherte Bearbeitungsstatus der verschiedenen Zielregisterexemplare betrachtet werden. Der Festschreibungsprozess beginnt mit der Suche nach der ältesten, noch nicht fertig bearbeiteten Anweisung. Der Aussonderungszeiger (313) zeigt auf den dieser Anweisung entsprechenden Eintrag. Diese Anweisung kann noch nicht ausgesondert werden, da ihre Ergebnisse noch nicht zur Verfügung stehen. Hingegen können alle Anweisungen sowie alle entsprechenden Zielregister vor dem durch den Sperrzeiger definierten Eintrag festgeschrieben werden. Die entsprechenden Anweisungen werden von der Reservierungsstation gelöscht, und aus den Zielregisterwerten werden architekturdefinierte Registerwerte. Somit ist der architekturdefinierte Status (314) durch die Zielregisterwerte vor demjenigen Eintrag des Neuordnungspuffers definiert, auf welchen der Sperrzeiger (313) zeigt.
  • Das Zusammenwirken zwischen der Reservierungsstation und dem Neuordnungspuffer wird aus 4 verständlich. Die Reservierungsstation (400) kann bis zu 16 Anweisungen aufnehmen. In der Figur ist einer der Einträge (402) der Reservierungsstation gezeigt. Er enthält den OP-Code der Anweisung, Datenfelder für Quellregister, Zielregister und für die Adressberechnung. Jede Anweisung kann auf bis zu zwei Zielregister zugreifen.
  • Für die zu einer Anweisung gehörenden Zielregister wird eine Eintragung in den Neuordnungspuffer (401) vorgenommen. Jedes neue Zielregister entspricht einem neuen Exemplar eines bestimmten logischen Registers. Sowohl sein physisches Register als auch sein logisches Register sind im jeweiligen Eintrag (404, 411) des Neuordnungspuffers angegeben.
  • Die Verbindung zwischen dem Eintrag (402) der Reservierungsstation und dem entsprechenden Eintrag (404) des Neuordnungspuffers, welcher Informationen über das oder die von der Anweisung verwendeten Zielregister enthält, wird mit Hilfe des Zeigers (403) der Neuordnungspuffers hergestellt. Der Zeiger des Neuordnungspuffers ist ein Teil des Eintrags der Reservierungsstation (402).
  • In jedem Eintrag (404) des Neuordnungspuffers gibt es außerdem noch ein Datenfeld (405), das den Bearbeitungsstatus der im ROB-Eintrag (Neuordnungspuffer) enthaltenen Zielregister (404) verfolgt. Zu Anfang lautet der Status des Zielregisters „nicht beendet" (405).
  • Sobald alle Quelldaten eines Eintrags der Reservierungsstation zur Verfügung stehen, kann eine Anweisung zu einer der Ausführungseinheiten (408) gesendet werden. Im Beispiel von 4 wird die Anweisung 409 gerade von der Ausführungseinheit (408) bearbeitet, d.h., die Anweisung befindet sich in einer bestimmten Phase in der Pipeline der Ausführungseinheit. Zusammen mit der Anweisung ist der ROB-Zeiger (410) zur Ausführungseinheit (408) weitergeleitet worden. Auf diese Weise wird die Verbindung zwischen der Anweisung (409) und ihrem entsprechenden Eintrag im Neuordnungspuffer (411) auch noch während der Ausführung der Anweisung aufrechterhalten.
  • Sobald die Ergebnisse der Ausführung der Anweisung zur Verfügung stehen, normalerweise also am Ende der Pipeline der Ausführungseinheit, wechselt der Bearbeitungsstatus im ROB (Neuordnungspuffer) von „nicht beendet" auf „beendet". Somit enthält der Neuordnungspuffer (401) die Kennungen von verschiedenen Exemplaren der logischen Register in ihrer normalen Reihenfolge sowie Informationen darüber, ob der Wert dieser Registerexemplare bereits ermittelt worden ist.
  • Die Reservierungsstation (400) ist in Form einer zyklischen Matrix ausgeführt, die mit Hilfe von Zeigern gesteuert wird. Sobald eine Anweisung in ihrem richtigen Format vom Anweisungspuffer (303) zur Reservierungsstation (400) weitergeleitet wird, wird für diese durch den Eingabezeiger (406) die entsprechende Position des Eintrags ermittelt. Wenn die Anweisung ein oder zwei Zielregister adressiert, muss auch im Neuordnungspuffer eine Eintragung vorgenommen werden.
  • Auch der Neuordnungspuffer (401) ist als zyklischer Puffer ausgeführt. In diesem Puffer gibt es einen Zuordnungszeiger (407), der als Eingabezeiger für den Neuordnungspuffer dient. Dieser Zeiger zeigt auf diejenige Stelle im Neuordnungspuffer, an welcher die nächste Eintragung erfolgen soll.
  • Während der Zuordnungszeiger (407) für die Aufnahme der Ziele neuer Anweisungen erforderlich ist, wird der Aussonderungszeiger (412) zum Aussondern alter Zielregisterwerte benötigt.
  • Der Aussonderungszeiger (412) zeigt auf das älteste Zielregister, dessen Bearbeitung noch nicht abgeschlossen ist. Der Festschreibungsprozess schreibt die Zielregister von solchen Einträgen fest, die älter sind und somit in der Reihenfolge früher vorkommen als der Eintrag, auf welchen der Aussonderungszeiger zeigt. Das heißt, dass die entsprechenden Einträge freigegeben und aus den Zielregisterwerten die Werte der architekturdefinierten Register werden, welche den „offiziellen" Maschinenstatus repräsentieren. Außerdem entfernt der Festschreibungsprozess alle Anweisungen in der Reservierungsstation, welche denjenigen ROB-Einträgen entsprechen, die vor dem Eintrag des Aussonderungszeigers (412) stehen. Bei der von der normalen Reihenfolge abweichenden Ausführung von Anweisungen werden eine Anzahl provisorischer Exemplare von logischen Registern erzeugt, die noch geändert und gelöscht werden können. Es gibt jedoch auch einen genauen architekturdefinierten Status (413), der einem definierten Punkt im Anweisungsstrom entspricht, der wiederum den architekturdefinierten Registerwerten entspricht.
  • Im Folgenden werden die Struktur und die Verwaltung der Registerdatei beschrieben: Der Aufbau der Registeranordnung ist in 5 dargestellt. Aus dem Vergleich mit 3 wird klar, dass an jede Funktionseinheit, zum Beispiel an jede Verzweigungseinheit (307), jede Ganzzahleinheit (308) und jede Lade-/Speichereinheit (309) eine Registerdateimatrix (310) angeschlossen sein muss. Jede Registerdateimatrix umfasst vier Datenspalten (500, 501, 502, 503), die aus je 16 Einträgen zur Speicherung der verschiedenen Registerinhalte besteht, sowie eine zusätzliche Spalte (510) für den Wert der I0/I1-Zähler, die ebenfalls aus 16 Einträgen besteht. Diese Spalte speichert die Zeiger auf die entsprechenden architekturdefinierten Registerwerte jeder Zeile, die so genannten „Normalfolgezeiger". Während ein Eintrag in einer der Datenspalten 36 Bit breit ist, bestehen die Einträge der Spalte I0/I1 lediglich aus zwei Bits.
  • Jede der 16 Zeilen der vier Datenspalten (500, 501, 502, 503) enthält die Werte der verschiedenen Exemplare eines logischen Registers. Die Zeile 504 beispielsweise enthält die verschiedenen physischen Exemplare des logischen Registers R7. Entsprechend enthält die Zeile 505 die verschiedenen Exemplare des logischen Registers R10. Jeder der vier 36 Bit breiten Zeileneinträge kann den Wert eines Exemplars des logischen Registers enthalten, welches durch diejenige Zeile repräsentiert wird, zu der der Eintrag gehört.
  • Im vorliegenden Beispiel gibt es drei physische Exemplare (506, 507, 508) des logischen Registers R7. Der Registerwert von R7 in Spalte 2 (506) enthält den architekturdefinierten Registerwert von R7. Das Datenfeld 507 in Spalte 3 (503) repräsentiert ein erstes und das Datenfeld 508 in Spalte 0 (500) ein zweites provisorisches Exemplar von R7. Das dritte provisorische Exemplar liegt noch nicht vor, sodass das Datenfeld 509 in Spalte 1 (501) leer ist. Die vorgeschlagene Registerdateimatrix kann neben dem architekturdefinierten Status eines logischen Registers nur bis zu drei provisorische Exemplare dieses Registers aufnehmen. Im Folgenden werden auch der architekturdefinierte Status eines logischen Registers als „Normalfolgestatus" dieses logischen Registers (506) und die weiteren physischen Exemplare (507, 508) desselben logischen Registers als umbenannte Register bezeichnet.
  • Die Spalte I0/I1 (510) weist für jedes logische Register zwei Bits auf. Diese beiden Bits legen fest, welches der vier möglichen Datenfelder in dieser Zeile den Normalfolgestatus des logischen Registers enthält. Bei einem Status der Spalte I0/I1 von „00" findet man den architekturdefinierten Status im Datenfeld der Spalte 0 (500); bei "01" in der Spalte 1 (501); bei „10" in der Spalte 2 (502) und bei „11" in der Spalte 3 (503). Der Status I0/I1 (511) der Zeile für das logische Register R7 (504) ist gleich „10", sodass sich der architekturdefinierte Wert des Registers R7 im Datenfeld 506 befindet, welches Bestandteil der Spalte 2 (502) ist.
  • Ein weiteres Beispiel stellt die Zeile dar, welche das Register R10 (505) repräsentiert. Der Status I0/I1 im Datenfeld 512 ist gleich „01", d.h., der architekturdefinierte Wert des logischen Registers R10 befindet sich im Datenfeld 513, welches Bestandteil der Spalte 1 ist. Aus diesem Grunde muss es in jedem logischen Register einen Normalfolgewert geben. Außerdem befindet sich im Datenfeld 514 der Spalte 2 ein umbenanntes Exemplar von R10. Es gibt aber kein zweites und drittes umbenanntes Exemplar von R10, sodass die Datenfelder 515 und 526 in den Spalten 3 und 0 leer sind.
  • 6 zeigt in Anlehnung an das Programmbeispiel von 2, wie die Registermatrix von 5 für das Zuordnen neuer umbenannter Exemplare zu einem bestimmten logischen Register, für das Umbenennen logischer Register in physische Register und zum Aussondern alter Registerexemplare verwendet werden kann, um den architekturdefinierten Maschinenstatus kontinuierlich weiterzuschieben.
  • Die Anweisungen 600 bis 607 entsprechen genau den Anweisungen 200 bis 207 von 2. Auch hier sollen nur die Exemplare des logischen Registers R3 betrachtet werden. Die während der Ausführung der Anweisung entstehenden Exemplare von R3 entsprechen den in der rechten Spalte von 2 gezeigten Exemplaren.
  • Zuerst zeigt der Aussonderungszeiger (609) auf die Anweisung „bedingte Verzweigung" (601). Die vorangehende Anweisung „ODER" (600) bedient sich des Exemplars R3.1 als Quellregister. Dieses Exemplar R3.1 wird noch von der Ladeanweisung (602) als Quellregister verwendet. Da der architekturdefinierte Status oder der Normalfolgestatus des Systems durch den Status aller Register unmittelbar vor derjenigen Anweisung definiert werden kann, auf welche der Aussonderungszeiger zeigt, repräsentiert das Exemplar R3.1 den Normalfolgestatus der Maschine.
  • Anschließend wird gezeigt, wie die verschiedenen Registerexemplare von einer Registerdatei gemäß 5 berücksichtigt werden. Zu diesem Zweck wird die Zeile für das Register R3 in der Registerdatei betrachtet. 6 zeigt die Veränderung dieser Zeile im Verlauf der Programmausführung.
  • Zunächst wird festgestellt, dass der Zähler I0/I1 den Wert „01" (611) enthält. Dieser Zähler zeigt somit auf das zweite Datenfeld 610 der Zeile der Registerdatei. Das heißt, dass das Exemplar R3.1, dessen Wert sich im Datenfeld 610 befindet, den architekturdefinierten Status repräsentiert. Die drei anderen Felder dieser Zeile können umbenannte Exemplare enthalten.
  • Im Verlauf der Programmausführung wird die Ladeanweisung (602) verarbeitet. Diese Ladeanweisung verwendet das Exemplar R3.1 als Quelle und schreibt einen Wert in das Register R3. Somit entsteht in Form von R3.2 ein neues aktuelles Exemplar von R3 (209), und zum Aufnehmen dieses neuen Exemplars muss ein physisches Register zugeordnet werden. In Schritt 612 wird dem Exemplar R3.2 das umbenannte Exemplar 613 zugeordnet. Jede Anweisung, welche das Exemplar als Quellregister verwendet, muss auf das Datenfeld 613 zugreifen.
  • Die Additionsanweisung (603) verwendet R3.2 als Quelle und schreibt einen Wert in das Zielregister R3. Für das neue Exemplar R3.3 wird in der Registerdatei ein weiteres Datenfeld (615) für ein umbenanntes Register zugeordnet (614).
  • Das neue Exemplar von R3 wird durch die Anweisung ODER (605) erzeugt. Die Anweisung ODER schreibt einen Wert in R3 als Zielregister und erzeugt somit das Exemplar R3.0. In Schritt 616 wird das Datenfeld (617) für ein umbenanntes Register zugeordnet, um das Exemplar R3.0 zu repräsentieren.
  • Jede Zeile der Registerdatei kann das architekturdefinierte Exemplar zuzüglich maximal drei umbenannte Exemplare enthalten. Da bereits alle umbenannten Exemplare (613, 615, 617) zugeordnet worden sind, können erst dann weitere umbenannte Exemplare zugeordnet werden, wenn der Festschreibungsprozess alte Registerexemplare aussondert.
  • Angenommen, sowohl die Ladeanweisung (602) als auch die Additionsanweisung (603), welche das Zielregisterexemplar R3.3 erzeugt hat, werden ausgesondert. Das führt dazu, dass das Registerexemplar R3.2 zum neuen architekturdefinierten Wert von R3 (618) wird. Dieser Vorgang wird durch Erhöhen des Normalfolgezeigers I0/I1 auf den Wert „10" (620) angezeigt, der nun auf das Datenfeld (619) für R3.2 zeigt. Die umbenannten Exemplare für R3.3 (622) und für R3.0 (623) bleiben bestehen, während das Datenfeld 621 nicht mehr belegt ist.
  • Im weiteren Verlauf der Anweisungsdecodierung tritt nun die Ladeanweisung (607) in Erscheinung, welche R3.0 als Quelle verwendet und das Exemplar R3.1 als Ziel erzeugt. Da das Datenfeld (621) keinerlei umbenannte Exemplare mehr enthält, kann es in Schritt 624 als umbenanntes Exemplar (625) für R3.1 zugeordnet werden.
  • Anschließend wird die Speicheranweisung (604) ausgesondert. Das bedeutet, dass nun der vorangehende Registerstatus zum architekturdefinierten Status werden kann. Somit wird das Registerexemplar R3.3 zum neuen architekturdefinierten Status des Registers R3 (626). Dann wird der Zähler I0/I1 auf den Wert „11" erhöht (628) und zeigt auf das Datenfeld 627. Das Datenfeld 629 enthält nun kein Registerexemplar mehr.
  • Das Exemplar R3.3 kann freigegeben werden, sobald die Speicheranweisung (606) entnommen wurde, da zu diesem Zeitpunkt R3.0 zum neuen architekturdefinierten Wert von R3 wird (630). Der Zähler I0/I1 springt auf den Wert „00" (632) und zeigt auf das erste Datenfeld 631. Ab jetzt sind zwei Datenfelder unbelegt.
  • 7 zeigt die Struktur der Zuordnungseinheit, welche dafür zuständig ist, dass während der Registerumbenennungs- und -reservierungsphase die richtigen physischen Register adressiert werden. Die Zuordnungseinheit ist eine Anordnung, welche für jedes logische Register einen Eintrag enthält. Im vorliegenden Beispiel gibt es die 16 logischen Register R0 bis R15, die jeweils durch eine Zeile in der Registerdatei dargestellt sind. Somit entspricht jeder Eintrag in der Zuordnungseinheit mit einer Breite von 10 Bit einer Zeile in der Registerdatei.
  • Der Zähler I0/I1 zeigt an, welcher der vier Einträge in dieser Zeile den Normalfolgestatus enthält. Der Zähler I0/I1 kommt doppelt vor: In der Registerdatei gibt es eine gesonderte Spalte (510 in 5) mit den Werten der Zähler I0/I1, und außerdem gibt es noch eine Kopie des Zählers I0/I1 in jedem Eintrag der Zuordnungseinheit (702).
  • Sobald ein alter architekturdefinierter Registerwert eines bestimmten logischen Registers entfernt werden soll, erfolgt dies einfach durch Erhöhen des entsprechenden Normalfolgezeigers I0/I1. Auf diese weise wird das erste umbenannte Exemplar zum neuen Normalfolgeregister. Das vorherige Normalfolgeregister wird gelöscht und es entsteht Platz zum Aufnehmen eines neuen umbenannten Exemplars.
  • Darüber hinaus muss sowohl für den Umbenennungsprozess als auch für den Zuordnungsprozess das jüngste umbenannte Exemplar bekannt sein. Dies geschieht mit Hilfe des „Umbenennungszeigers" R0/R1, der Bestandteil jedes Eintrags der Zuordnungseinheit ist (703). Als Beispiel soll wieder 5 dienen. In der Zeile für das Register R7 (504) befindet sich in Spalte 2 der Normalfolgestatus (506). Deshalb hat I0/I1 (511) den Wert „10". Außerdem gibt es zwei umbenannte Exemplare (507, 508). Der Wert des Zählers R0/R1 im entsprechenden Eintrag der Zuordnungseinheit beträgt daher „00", da sich im Datenfeld 508 das jüngste umbenannte Exemplar befindet.
  • Wenn auf das logische Register R7 als Quellregister zugegriffen wird, muss auf das aktuelle umbenannte Exemplar (508) zugegriffen werden, das durch R0/R1 bezeichnet wird.
  • Wenn auf das logische Register R7 als Zielregister zugegriffen wird, muss zuerst ein neues physisches Exemplar von R7 zugeordnet werden. Das geschieht durch Erhöhen des Zählers R0/R1 im entsprechenden Eintrag der Zuordnungseinheit auf den Wert „01". Somit wird nun das zuvor freie Datenfeld 509 als drittes umbenanntes Exemplar von R7 zugeordnet. Da der Status von R0/R1 nun „01" lautet, beziehen sich fortan alle folgenden Lesezugriffe auf das zugeordnete neue umbenannte Exemplar im Datenfeld 509. Der Zähler R0/R1, der „Umbenennungszeiger", zeigt immer auf das jüngste umbenannte Exemplar.
  • In jedem Eintrag der Zuordnungseinheit gibt es einen dritten Zähler U0/U1 (704), welcher angibt, wie viele umbenannte Exemplare es gibt. Dieser Wert entspricht der Differenz zwischen den Zählern R0/R1 und I0/I1.
  • Außerdem gibt es für jeden Eintrag der Registerdatei ein Bit (701), welches angibt, ob die Ergebnisdaten für jedes der Registerexemplare bereits berechnet worden sind. Diese Bits entsprechen direkt den entsprechenden Gültigkeitsbits der Quelle in der Reservierungsstation. Wenn ein Ergebnis eintrifft, das von einer Anweisung benötigt wird, und diese Anweisung noch nicht zur Reservierungsstation weitergeleitet worden ist, sind diese Bits unerlässlich. Sie zeigen der Anweisung an, dass deren Quelldaten bereits eingetroffen sind.
  • 8A zeigt das Format eines Eintrags der Reservierungsstation. Jede Anweisung des externen Anweisungsstroms wird im Vordecodierungsschritt (302) in dieses Format umgewandelt. Im Anweisungspuffer gespeicherte Anweisungen weisen bereits das richtige Format auf.
  • In jedem Eintrag der Reservierungsstation gibt es ein Datenfeld für den OP-Code (800) der Anweisung. Außerdem gibt es noch vier Quelldatenfelder (801, 802, 803, 804), welche die physischen Quellregister der Anweisung bezeichnen. Zwei dieser Quelldatenfelder, S0 (801) und S1 (802), bezeichnen direkt Operanden der Anweisung. Die Datenfelder A0 (803) und A1 (804) bezeichnen physische Quellregister, die (als „Index" und „Basis") zur Adressberechnung dienen. Für jedes dieser Quelldatenfelder gibt es ein Gültigkeitsbit (808), welches anzeigt, ob der Inhalt des entsprechenden physischen Registers zur Verfügung steht.
  • Während der Ausführung der Anweisung erzeugte Daten werden in die Zielregister der Anweisung geschrieben, die ebenfalls angegeben werden müssen. Die Datenfelder T0 (805) und T1 (806) bezeichnen die physischen Register, in welche Ergebnisse geschrieben werden sollen. Gemäß der Beschreibung in 4 gibt es in jedem Eintrag der Reservierungsstation einen Neuordnungspufferzeiger (807), der die Verbindung zu einem entsprechenden Eintrag im Neuordnungspuffer herstellt.
  • In jedem der Datenfelder S0, S1, A0, A1, T0 und T1 (801 bis 806) muss ein bestimmtes physisches Universalregister bezeichnet werden. Die 8B und 8C zeigen, wie die Kennzeichnung des richtigen physischen Registers durchgeführt werden kann.
  • 8A zeigt das Format der Quelldatenfelder S0 (801), S1 (802), A0 (803) und A1 (804) eines Eintrags der Reservierungsstation. Zuerst wird die Nummer des logischen Registers, die von der Anweisung selbst her bekannt ist, durch die Bits 0 bis 3 angegeben. Dann muss das aktuelle physische Exemplar des logischen Registers bezeichnet werden. Das geschieht durch Kopieren des entsprechenden Wertes R0/R1 von der Zuordnungseinheit in das entsprechende Quelldatenfeld (810). Dieser zwei Bit breite Anhang bezeichnet das physische umbenannte Exemplar des logischen Registers, das als Argument der Anweisung dienen soll. Das folgende Bit (811) ist ein Gültigkeitsbit, welches anzeigt, ob der Inhalt des adressierten physischen Registers zur Verfügung steht.
  • Bei einem Zieldatenfeld (T0, T1) liegt eine andere Situation vor, da zuerst ein neues physisches Exemplar des adressierten logischen Registers zugeordnet werden muss. Die Bits 0 bis 3 eines Zieldatenfeldes enthalten die Nummer (812) des logischen Registers, die bereits aus der Anweisung selbst bekannt ist. Dann muss ein aktuelles physisches Exemplar des logischen Registers benannt werden. In diesem Falle wäre es falsch, lediglich den Inhalt von R0/R1 zu kopieren, da das entsprechende physische Register bereits vorhanden ist. Stattdessen wird ein neues physisches Exemplar dieses logischen Registers zugeordnet, indem vor dem Kopieren des Inhalts von R0/R1 in Bit 4 und 5 des entsprechenden Zieldatenfeldes (813) der Zähler R0/R1 im entsprechenden Eintrag der Zuordnungseinheit erhöht wird. Hierbei muss auch noch geprüft werden, ob in der Registerdatei noch ein freier Eintrag vorhanden ist. Wenn in der Registerdatei kein freier Eintrag vorhanden ist, wird mit der Zuordnung so lange gewartet, bis einige ältere Registerexemplare ausgesondert worden sind.
  • 9 zeigt eine Übersicht über das gesamte System zur Verarbeitung abweichend von der normalen Reihenfolge. Sie zeigt die funktionellen Beziehungen zwischen der Anweisungsvordecodierung (900), der Reservierungsstation (901), der Neuordnungseinheit (902), der Zuordnungseinheit (903) und der Registerdatei (904).
  • Eine aus dem Anweisungs-Cachespeicher (301) abgerufene Anweisung, die in das normale Anweisungsformat umgewandelt und im Anweisungspuffer (303) gespeichert wurde, wird im Vordecodierungsschritt analysiert (900). Der Eintrag im Anweisungspuffer enthält nur die logischen Quell- und Zielregister, die bereits zusammen mit der externen Anweisung geliefert wurden.
  • Nimmt man an, dass das Operand2-Register (906) ein logisches Quellregister ist, muss dieses Register umbenannt werden, um das entsprechende physische Registerexemplar zu erzeugen. Zu diesem Zweck wird der diesem logischen Register entsprechende Wert des Zählers R0/R1 aus der Matrix der Zuordnungseinheit gelesen (907). Der Zähler R0/R1 zeigt auf das zuletzt zugeordnete physische Exemplar dieses logischen Registers. Wenn der Eintrag des Anweisungspuffers zur Reservierungsstation weitergeleitet wird (901), wird der unmittelbar zuvor ermittelte R0/R1-Wert als Anhang zur Kennung des Operand2-Registers hinzugefügt (908).
  • Nimmt man an, dass das Operand1-Register (905) ein logisches Zielregister ist, muss ein neues physisches Registerexemplar zugeordnet werden. Hierzu sind ein Zugriff (910) auf die Zuordnungseinheit (903) und die Erhöhung des R0/R1-Wertes erforderlich, welcher dem durch das Operand1-Register definierten logischen Register entspricht. Somit liegt nun ein neues physisches umbenanntes Exemplar dieses logischen Registers vor. Wenn die Anweisung vom Anweisungspuffer zur Reservierungsstation weitergeleitet wird, wird der neue (erhöhte) R0/R1-Wert als Anhang zum logischen Operand1-Register hinzugefügt (911).
  • Darüber hinaus muss für jedes einem logischen Zielregister entsprechende zugeordnete physische Exemplar ein Eintrag in der Neuordnungseinheit (902) erstellt werden. Die Einträge in der Neuordnungseinheit werden in der normalen Reihenfolge (917) erstellt. Da der älteste noch nicht festgeschriebene Eintrag in der Neuordnungseinheit „das nächste auszusondernde Zielregister" benennt, gibt der für das zuletzt zugeordnete Zielregisterexemplar zu erstellende Eintrag „das letzte auszusondernde Zielregister" (912) an.
  • Als Ergebnis des Schrittes Registerumbenennung und -zuordnung enthält jedes Operandendatenfeld in der Reservierungsstation (901) einen R0/R1-Wert, mittels dessen ein bestimmtes physisches Registerexemplar in der Registerdatei (904) eindeutig ermittelt werden kann. Aus diesem Grunde ermöglichen die in jedem Eintrag der Reservierungsstation enthaltenen Informationen, Quellregisterdaten aus der Registerdatei (904) zu lesen (912) und Zielregisterdaten in die Registerdatei zu schreiben (913).
  • Zum Schluss wird der Prozess der Aussonderung eines alten physischen Exemplars eines logischen Registers beschrieben. Das als nächstes auszusondernde physische Zielregisterexemplar wird durch den ältesten Eintrag in der Neuordnungseinheit (902) gekennzeichnet. Das älteste Exemplar eines bestimmten logischen Registers in der Registerdatei stellt den aktuellen architekturdefinierten Status dar. Die Spalte der Registerdatei, in welcher sich der architekturdefinierte Wert eines bestimmten logischen Registers befindet, wird durch ihren Normalfolgezeiger, also den I0/I1-Zeiger angezeigt, welcher diesem logischen Register entspricht.
  • Um den aktuellen architekturdefinierten Registerwert eines bestimmten logischen Registers auszusondern, braucht der Zähler I0/I1 lediglich erhöht zu werden. Dadurch geht der vorige architekturdefinierte Registerwert verloren, und das vorige erste umbenannte Exemplar wird zum neuen architekturdefinierten Registerwert.
  • Sowohl die Zuordnungseinheit (903) als auch die Registerdatei (904) enthalten Zähler I0/I1 für jedes logische Register. Zum Aussondern eines bestimmten Zielregisters (914) muss deshalb der entsprechende I0/I1-Wert sowohl in der Zuordnungseinheit (915) als auch in der Registerdatei (916) erhöht werden.

Claims (7)

  1. Computersystem mit einem Prozessor, welcher Anweisungen abweichend von der normalen Reihenfolge verarbeitet, wobei die Anweisungen logische Register adressieren, jedes dieser logischen Register durch eine Gruppe von mindestens einem physischen Registern (305) repräsentiert wird und jede dieser Gruppen von physischen Register (305) ein physisches Register aufweist, welches einen nichtspekulativen architekturdefinierten Zustand eines dieser logischen Register repräsentiert, wobei sich der architekturdefinierte Zustand auf die zuletzt bearbeitete Anweisung der kontinuierlichen Folge bearbeiteter Anweisungen bezieht und die übrigen physischen Register in dieser Gruppe der physischen Register (305) umbenannte Instanzen dieses logischen Registers repräsentieren, wobei das Computersystem Folgendes umfasst: Matrixmittel, in denen die physischen Register (305) enthalten sind, welche die architekturdefinierten Zustände der logischen Register repräsentieren und die physischen Register die umbenannte Instanzen dieser logischen Register repräsentieren, dadurch gekennzeichnet, dass ein erstes Anzeigemittel (314) und ein zweites Anzeigemittel als Zeiger ausgeführt sind, wobei das erste Anzeigemittel ermittelt, welches aus der Gruppe der physischen Register gerade den architekturdefinierten Zustand des logischen Registers repräsentiert, und das zweite Anzeigemittel anzeigt, welches aus der Gruppe der physischen Register gerade das in der Reihenfolge jüngste der umbenannten Instanzen repräsentiert.
  2. Computersystem nach Anspruch 1, dadurch gekennzeichnet, dass die Matrixmittel als zyklische Matrixmittel ausgeführt sind, wobei die physischen Register, welche den architekturdefinierten Zustand eines der logischen Register repräsentiert haben und diesen architekturdefinierten Zustand des logischen Registers nicht mehr repräsentieren, zum Darstellen neuer umbenannter Instanzen wieder verwendet werden können.
  3. Computersystem nach Anspruch 1 oder 2, welches ferner Folgendes umfasst: Zuordnungsmittel zum Zuordnen neuer physischer Register, welche sodann neue umbenannte Instanzen der logischen Register repräsentieren.
  4. Computersystem nach Anspruch 3, dadurch gekennzeichnet, dass das Zuordnungsmittel ein Aktualisierungsmittel umfasst, welches das zweite Anzeigemittel aktualisiert, wenn neue physische Register zugeordnet werden, um anzuzeigen, welches physische Register aus jeder Gruppe der physischen Register (305) gegenwärtig die in der Reihenfolge jüngsten umbenannten Instanzen repräsentiert.
  5. Computersystem nach Anspruch 2, welches ferner ein Umbenennungsmittel zum Umbenennen eines bestimmten logischen Registers in dasjenige physische Register umfasst, welches das in der Reihenfolge jüngste Exemplar des logischen Registers repräsentiert, wobei diese in der Reihenfolge jüngste Instanz des logischen Registers durch Zugreifen auf die zweiten Anzeigemittel ermittelt wird.
  6. Computersystem nach Anspruch einem der vorangehenden Ansprüche, welches ferner Folgendes umfasst: ein Aussonderungsmittel zum Freigeben des physischen Registers, welches den architekturdefinierten Zustand eines der logischen Register repräsentiert, zum Ermitteln des in der Reihenfolge ältesten aus der Gruppe der physischen Register, welche umbenannte Instanzen des logischen Registers repräsentieren, und zum Aktualisieren der ersten Anzeigemittel, wobei die ersten Anzeigemittel ermitteln, welches aus jeder Gruppe der physischen Register gerade den architekturdefinierten Zustand des logischen Registers repräsentiert.
  7. Verfahren zum Verwalten einer Gruppe von mindestens einem physischen Register, welche ein logisches Register in einem Computersystem repräsentieren, wobei das Computersystem einen Prozessor aufweist, der Anweisungen abweichend von der normalen Reihenfolge bearbeitet, wobei die Anweisungen logische Register adressieren und jedes dieser logischen Register durch eine Gruppe von mindestens einem physischen Register (305) repräsentiert wird und jede dieser Gruppen von physischen Registern (305) ein physisches Register aufweist, welches einen nichtspekulativen architekturdefinierten Zustand eines dieser logischen Register repräsentiert, wobei sich der architekturdefinierte Zustand auf die zuletzt bearbeitete Anweisung aus der kontinuierlichen Folge bearbeiteter Anweisungen bezieht und die übrigen physischen Register in der Gruppe der physischen Register (305) umbenannte Instanzen des logischen Registers repräsentieren, wobei das Computersystem ferner ein erstes Anzeigemittel zum Ermitteln umfasst, welches physische Register aus der Gruppe der physischen Register (305) gerade den architekturdefinierten Zustand der logischen Register repräsentiert, und das erste Anzeigemittel in Form von Zeigern ausgeführt ist, wobei das Verfahren die folgenden Schritte umfasst: Freigeben des physischen Registers (314), welches den architekturdefinierten Zustand des logischen Registers repräsentiert, Ermitteln des in der Reihenfolge ältesten aus der Gruppe der physischen Register, welche umbenannte Instanzen des logischen Registers repräsentieren, wobei dieses älteste Register anschließend den architekturdefinierten Zustand des logischen Registers repräsentiert, und Aktualisieren des ersten Anzeigemittels zum Ermitteln desjenigen physischen Registers (314), welches den architekturdefinierten Zustand des logischen Registers repräsentiert, und ferner Bereitstellen eines Matrixmittels, welches sowohl die physischen Register enthält, welche die architekturdefinierten Zustände der logischen Register repräsentieren, als auch diejenigen physischen Register, welche umbenannte Instanzen der logischen Register repräsentieren; wobei das Matrixmittel in Form eines zyklischen Matrixmittels ausgeführt ist, mittels dessen physische Register, welche den architekturdefinierten Zustand eines der logischen Register repräsentiert haben und diesen nicht mehr repräsentieren werden, zum Darstellen neuer umbenannter Instanzen wieder verwendet werden.
DE69831282T 1997-03-03 1998-02-05 Verwaltung von umbenannten Register in einem superskalaren Rechnersystem Expired - Lifetime DE69831282T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP97103419 1997-03-03
EP97103419 1997-03-03

Publications (2)

Publication Number Publication Date
DE69831282D1 DE69831282D1 (de) 2005-09-29
DE69831282T2 true DE69831282T2 (de) 2006-08-10

Family

ID=8226541

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69831282T Expired - Lifetime DE69831282T2 (de) 1997-03-03 1998-02-05 Verwaltung von umbenannten Register in einem superskalaren Rechnersystem

Country Status (4)

Country Link
US (1) US5996063A (de)
KR (1) KR100263013B1 (de)
DE (1) DE69831282T2 (de)
TW (1) TW348241B (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6285865B1 (en) * 1998-11-12 2001-09-04 Broadcom Corporation System and method for on-chip filter tuning
US6920547B2 (en) * 2000-12-20 2005-07-19 Intel Corporation Register adjustment based on adjustment values determined at multiple stages within a pipeline of a processor
US7844799B2 (en) * 2000-12-23 2010-11-30 International Business Machines Corporation Method and system for pipeline reduction
US6970895B2 (en) * 2001-10-01 2005-11-29 Koninklijke Philips Electronics N.V. Programmable delay indexed data path register file for array processing
KR20030042289A (ko) * 2001-11-22 2003-05-28 이용석 레지스터 리네이밍 방법을 사용하는 비순차적 명령어 이슈컴퓨터 시스템
JP3948615B2 (ja) * 2002-07-05 2007-07-25 富士通株式会社 プロセッサ及び命令制御方法
US7373484B1 (en) * 2004-01-12 2008-05-13 Advanced Micro Devices, Inc. Controlling writes to non-renamed register space in an out-of-order execution microprocessor
GB2502857B (en) 2013-03-05 2015-01-21 Imagination Tech Ltd Migration of data to register file cache
US10209992B2 (en) * 2014-04-25 2019-02-19 Avago Technologies International Sales Pte. Limited System and method for branch prediction using two branch history tables and presetting a global branch history register
US9841974B2 (en) * 2014-04-25 2017-12-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Renaming with generation numbers
US9710272B2 (en) 2014-04-25 2017-07-18 Avago Technologies General Ip (Singapore) Pte. Ltd. Computer processor with generation renaming
US10719325B2 (en) * 2017-11-07 2020-07-21 Qualcomm Incorporated System and method of VLIW instruction processing using reduced-width VLIW processor

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1526446A3 (de) * 1991-07-08 2007-04-04 Seiko Epson Corporation RISC-Prozessor mit erweiterbarer Architektur
US5371684A (en) * 1992-03-31 1994-12-06 Seiko Epson Corporation Semiconductor floor plan for a register renaming circuit
DE69311330T2 (de) * 1992-03-31 1997-09-25 Seiko Epson Corp Befehlsablauffolgeplanung von einem risc-superskalarprozessor
US5367650A (en) * 1992-07-31 1994-11-22 Intel Corporation Method and apparauts for parallel exchange operation in a pipelined processor
US5694564A (en) * 1993-01-04 1997-12-02 Motorola, Inc. Data processing system a method for performing register renaming having back-up capability
SG47981A1 (en) * 1994-03-01 1998-04-17 Intel Corp Pipeline process of instructions in a computer system
US5765215A (en) * 1995-08-25 1998-06-09 International Business Machines Corporation Method and system for efficient rename buffer deallocation within a processor

Also Published As

Publication number Publication date
TW348241B (en) 1998-12-21
DE69831282D1 (de) 2005-09-29
KR100263013B1 (ko) 2000-08-01
KR19980079509A (ko) 1998-11-25
US5996063A (en) 1999-11-30

Similar Documents

Publication Publication Date Title
DE69628480T2 (de) Ausnahmebehandlung in einem Datenprozessor
DE69133302T2 (de) Registerabbildung in einem einzigen Taktzyklus
DE3151745C2 (de)
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE112004002848B4 (de) Mikroprozessor und Verfahren zum Verifizieren einer Speicherdatei in einem derartigen Mikroprozessor
DE19781850B4 (de) Mikroprozessor zum spekulativen Ausführen von Befehlen aus mehreren von einem Verzweigungsbefehl angezeigten Befehlsströmen, Verfahren und Computersystem mit Mikroprozessor
DE69929936T2 (de) Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem
DE3131341C2 (de)
DE60205363T2 (de) Mikroprozessor mit einem performance-drosselmechanismus für das energiemanagement
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
DE60308201T2 (de) Datenverarbeitungssystem mit externen und internen anweisungssätzen
DE60015395T2 (de) Speicher, der zwischen verarbeitenden threads geteilt ist
DE60036016T2 (de) Schnell multithreading für eng gekoppelte multiprozessoren
DE69932066T2 (de) Mechanismus zur "store-to-load forwarding"
DE69233493T2 (de) RISC-Prozessor mit erweiterbarer Architektur
DE112010004322T5 (de) Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge
DE69831282T2 (de) Verwaltung von umbenannten Register in einem superskalaren Rechnersystem
DE2411963B2 (de) Datenverarbeitungsanlage
DE2430127A1 (de) Einrichtung zur steuerung des speicherzugriffs konkurrierender benutzer
DE112006003453T5 (de) Per-Satz-Relaxation der Cache-Inklusion
DE2251876A1 (de) Datenverarbeitungsanlage
DE2161886A1 (de) Befehlsausführungssystem in einer elektronischen Datenverarbeitungsanlage
DE1549474C3 (de) Anordnung In einer elektronischen digitalen Datenverarbeitungsanlage zur Ausführung eines ersten Befehls und gleichzeitigen Decodierung eines folgenden Befehls
DE19848742C2 (de) Registerumbenennung bei einem Prozessor, der Instruktionen ausserhalb der sequentiellen Reihenfolge bearbeiten kann
DE4103093A1 (de) Computersystem und steuerverfahren fuer dieses computersystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: DUSCHER, R., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 7