DE69628480T2 - Ausnahmebehandlung in einem Datenprozessor - Google Patents

Ausnahmebehandlung in einem Datenprozessor Download PDF

Info

Publication number
DE69628480T2
DE69628480T2 DE69628480T DE69628480T DE69628480T2 DE 69628480 T2 DE69628480 T2 DE 69628480T2 DE 69628480 T DE69628480 T DE 69628480T DE 69628480 T DE69628480 T DE 69628480T DE 69628480 T2 DE69628480 T2 DE 69628480T2
Authority
DE
Germany
Prior art keywords
register
command
physical
logical
registers
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
DE69628480T
Other languages
English (en)
Other versions
DE69628480D1 (de
Inventor
Michael C. Plano Shebanow
Gene W. Mountain View Shen
Ravi San Jose Swami
Niteen A. Sunnyvale Patkar
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Application granted granted Critical
Publication of DE69628480D1 publication Critical patent/DE69628480D1/de
Publication of DE69628480T2 publication Critical patent/DE69628480T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • 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
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Retry When Errors Occur (AREA)
  • Exchange Systems With Centralized Control (AREA)

Description

  • Feld der Erfindung
  • Diese Erfindung betrifft im allgemeinen Mikroprozessoren und insbesondere ein Verfahren und eine Vorrichtung für die effiziente Koordination der Verwendung physikalischer Register in einem Mikroprozessor während der Ausführung von Befehlen.
  • Hintergrund der Erfindung
  • Die neuesten Verbesserungen auf dem Feld der Datenverarbeitung umfassen das parallele Verarbeiten von Befehlen. Um das parallele Verarbeiten von Befehlen zu implementieren, wurden verschiedene Techniken umgesetzt, einschließlich dem Umbenennen von Registern, spekulativen Ausführungen und Ausführungen außerhalb der Reihenfolge.
  • Das Umbenennen von Registern ist eine von Prozessoren verwendete Technik, bei der der Prozessor das gleiche strukturelle Register auf ein anderes physikalisches Register neu abbildet, um zu verhindern, daß Aufgaben, die sich auf Befehle beziehen, aufgeschoben werden. Diese Technik setzt die Unterhaltung einer größeren Anzahl physikalischer Register voraus, als es ansonsten der Struktur wegen notwendig wäre. Der Prozessor muß daher den Zustand der physikalischen Registerresourcen kontinuierlich überwachen, einschließlich der Anzahl physikalischer Register, die zu einem gegebenen Zeitpunkt verwendet werden, auf welche strukturellen Register verschiedene physikalische Register abgebildet werden und welche der physikalischen Register zur Verfügung stehen. Um diese Aufgabe zu bewältigen, unterhält der Prozessor eine Liste physikalischer Register („freelist", Freiliste), die nicht verwendet werden. Wenn ein Befehl ausgegeben wird, bildet der Prozessor das strukturelle Zielregister auf eines der Register aus der Freiliste neu ab. Das ausgewählte physikalische Register wird daraufhin von der Freiliste entfernt. Wenn das neu abgebildete physikalische Register im weiteren nicht mehr benötigt wird, werden die physikalischen Register als frei markiert, indem sie zu der Freilistenmenge (freelist pool) hinzugefügt werden. Von denjenigen physikalischen Registerresourcen, welche in der Freiliste fehlen, wird angenommen, daß sie „in Gebrauch" sind, oder daß sie für den Prozessor in einer anderen Weise nicht für weiteres Abbilden zur Verfügung stehen. Wenn das resultierende Register eines Befehls als Quellen-(Struktur-)Register für einen sequentiell folgenden Befehl verwendet werden soll, wird das Quellregister auf ein von der Freiliste stammendes, umbenanntes physikalisches Register abgebildet. Um zu gewährleisten, daß der Prozessor die korrekt zugeordneten physikalischen Register verwendet, unterhält der Prozessor fortlaufend einen Umbenennungsplan, der identifiziert, welche strukturellen Register auf welche physikalischen Register abgebildet werden. Alle sequentiell darauf folgenden Befehle, die auf ein Strukturregister verweisen, das in der Reihenfolge vor diesem angeordnet ist, sollten das umbenannte physikalische Register verwenden.
  • Die spekulative Ausführung ist eine Technik, die von Prozessoren verwendet wird, bei welcher der Prozessor eine nächste Abzweigungs-Zieladresse für einen nächsten Befehl vorhersagt, wobei keine Daten zur Auswertung einer Bedingung für eine bedingte Abzweigung zur Verfügung stehen. Durch die Verwendung der spekulativen Ausführung werden Prozessorverzögerungen verhindert, die sonst durch das Warten auf die zur Auswertung der Bedingung benötigten Daten auftreten würden. Im Fall einer falschen Vorhersage muß der Prozessor in den Zustand zurückgeführt werden, der vor dem Abzweigungsschritt bestand und die richtige Abzweigung muß identifiziert werden, um mit der Ausführung der richtigen Reihenfolge von Befehlen fortzufahren. Um den Zustand des Prozessors nach einer falschen Vorhersage wiederherzustellen, wurde eine Technik verwendet, die „Checkpointing" (Vorsehen von Kontrollstellen oder Kontrollpunkten) genannt wird, bei der der Maschinenzustand nach jedem spekulativen Befehl gespeichert (oder mit einer Kontrollstelle versehen) wird.
  • Das Ausführen außerhalb der Reihenfolge ist eine Technik, die von Prozessoren verwendet wird, wobei der Prozessor mehrere Ausführungseinheiten umfaßt, denen sequentiell Befehle zugeteilt werden, welche allerdings aufgrund veränderlicher Ausführungszeiten der Befehle die Ausführung der Befehle nicht-sequentiell vervollständigen können.
  • Bei Prozessoren, in denen die strukturellen Register umbenannt werden, müssen Vorkehrungen zum effizienten Speichern des korrekten Zustands der Strukturregister existieren, wenn der Prozessor wegen eines falsch vorhergesagten Abzweigebefehls ein Backup zu einer Kontrollstelle durchführt, oder wenn ein in der Reihenfolge danach stehender Befehl das Strukturregister vor der Erfassung einer Ausführungsausnahme aufgrund eines in der Reihenfolge davor stehenden Befehls verändert.
  • Im einzelnen sind viele Befehlsfolgen in einem Computerprogramm unabhängig von anderen Befehlsfolgen. Beispielsweise sind in der folgenden Befehlsfolge:
    Figure 00030001
    die letzten drei Befehle (Befehl 4–6) unabhängig von den ersten drei Befehlen (Befehle 1–3). Das heißt, daß die richtige Ausführung der Befehle 4-6 nicht von den Ergebnissen der Befehle 1–3 abhängt. Daher könnten in diesem Beispiel die Befehle 1–3 und die Befehle 4–6 parallel ausgeführt werden, um so die Leistung zu optimieren. Auf diesem Konzept der parallelen Verarbeitung von Befehlen außerhalb der Reihenfolge basieren die Verarbeitungsverfahren superskalarer Prozessoren.
  • Um die Funktion der Parallelverarbeitung bereitstellen zu können, umfassen superskalare Prozessoren üblicherweise mehr physikalische als logische Register. Logische Register sind Register, die in den Befehlen referenziert werden, beispielsweise in dem oben genannten Beispiel die Register LR1 und LR2. Physikalische Register sind Register in dem Prozessor, die tatsächlich zum Speichern von Daten während der Verarbeitung verwendet werden. Die zusätzlichen physikalischen Register werden in superskalaren Prozessoren benötigt, um eine Parallelverarbeitung zu ermöglichen. Eine Folge der Überzahl der physikalischen Register gegenüber den logischen Registern ist, daß es keine Eins-zu-Eins-Entsprechung zwischen den logischen und physikalischen Registern gibt. Vielmehr kann ein physikalisches Register für einen Befehlssatz dem logischen Register LR1 entsprechen und dann für einen anderen Befehlssatz dem logischen Register LR2 entsprechen. Da sich das Verhältnis zwischen den logischen und physikalischen Registern verändern kann, wird eine Abbildungs- oder Koordinationsfünktion durchgeführt, um die wechselnden Verhältnisse verfolgen zu können. Um die Leistung in einem superskalaren Prozessor zu optimieren, wird ein effizientes Verfahren und eine Vorrichtung zur Koordination der Verwendung der physikalischen Register benötigt.
  • In der wissenschaftlichen Veröffentlichung mit dem Titel „Conditional Execution in a Register Management Scheme for Out of Sequence Execution" wird das Zurückdrehen des Prozessorzustands (rolling the processor state back") beschrieben, um Ausführungsausnahmen abzuwickeln.
  • Abriß der Erfindung
  • Der gewünschte Effekt wird durch das Verfahren nach Anspruch 1 erreicht.
  • Gemäß der vorliegenden Erfindung verwendet ein Prozessor, der mehrere Befehle parallel verarbeitet, das Umbenennen von physikalischen Registern, um Verarbeitungsverzögerungen zu verringern, und verwendet ferner Kontrollstellen (Checkpoints), um den Prozessorzustand zurückzuerlangen und um die Registerresourcen wiederherzustellen, wenn eine Ausnahme aufgrund eines Befehls oder eine falsche Vorhersage einer Abzweigung auftritt. Ferner umfaßt der Prozessor einen Speicher mit wahlfreiem Zugriff (RAM) zur Resourcenrückgewinnung, der jeden ausgegebenen Befehl mit einer Ausstell-Seriennummer (Issue Serial Number, ISN) verknüpft und Informationen bezüglich des Befehls speichert, einschließlich der Information, ob eine Registerumbenennung auftritt, und welche zugeordneten strukturellen und physikalischen Register verwendet werden; sowie einen Resourcenrückgewinnungszeiger (Resource Reclamation Pointer, RRP), um die Befehle in Programmreihenfolge zu identifizieren, die nach erfolgreicher Ausführung zur Ablage vorbereitet sind, und um jedes zugeordnete physikalische Register zu identifizieren, das zur Freiliste hinzugefügt werden kann.
  • Der Datenprozessor umfaßt eine Registerdateieinheit, eine Registerrückgewinnungsdateieinheit, eine Freilisteneinheit und eine Steuereinheit, welche die Verwendung von physikalischen Registern in einem Mikroprozessor so kombiniert, daß eine einfache Zuweisungen des physikalischen Registers und eine einfache Wiederherstellungen des Zustands ermöglicht wird. Der Gesamtbetrieb der Vorrichtung der vorliegenden Erfindung wird von der Steuereinheit gesteuert. Während des Betriebs empfängt die Steuereinheit einen Befehl und extrahiert daraufhin einen Wert des logischen Zielregisters aus dem Befehl. Daraufhin erhält die Steuereinheit ein Identifikations- oder Kennzeichen (identifier) eines freien Registers von der Freilisteneinheit, das auf ein bestimmtes physikalisches Register innerhalb des Prozessors zeigt. Sobald der Wert des logischen Zielregisters und das Kennzeichen des freien physikalischen Registers erhalten wurden, speichert die Steuereinheit den logischen Registerwert in der Registerdateieinheit in Verbindung mit dem erhaltenen physikalischen Registerkennzeichen. Dadurch wird eine Beziehung zwischen dem logischen Registerwert und dem physikalischen Registerkennzeichen hergestellt, welches zum Abbilden des logischen Registerwertes auf das bestimmte physikalische Register verwendet werden kann. Dadurch wird ein physikalisches Register einem logischen Registerwert zugewiesen oder auf diesen abgebildet.
  • Zusätzlich zum Erstellen von Beziehungen zwischen dem logischen/physikalischen Register führt die Vorrichtung der vorliegenden Erfindung auch zumindest zwei weitere wichtige Funktionen aus. Erstens erzeugt die Vorrichtung einen „Kontrollpunkt" (Checkpoint), der den aktuellen Zustand des Prozessors festhält, wenn der empfangene Befehl ein Abzweigebefehl ist. Dieser Kontrollpunkt bietet einen zeitlichen Referenzpunkt, an den der Prozessor zurückgeführt werden kann, oder anhand dessen ein Backup verwenden kann, wenn später festgestellt wird, daß eine falsche Abzweigung gewählt wurde. Durch die Erzeugung dieser Kontrollpunkte unterstützt die Vorrichtung der vorliegenden Erfindung spekulative Ausführungen. Als zweite wichtige Funktion wird die alte Beziehung zwischen dem logischen Registerwert und einem anderen physikalischen Register in der Registerrückgewinnungseinheit gespeichert, wenn die Vorrichtung der vorliegenden Erfindung einem logischen Registerwert ein neues physikalisches Register zuweist. Dies wird durchgeführt, so daß die alte Beziehung einfach wiederhergestellt werden kann, wenn eine Ausführungsausnahme (beispielsweise Division durch Null) auftritt, wodurch die Ausführung eines Programmunterbrechungs-Verwalters notwendig wird. Dadurch sieht die Vorrichtung der vorliegenden Erfindung für den Prozessor Mittel vor, um einfach zu einem bestimmten Befehl zurückzugehen, bevor auf einen Programmunterbrechungs-Verwalter zurückgegriffen wird. Vor allem bietet die vorlie gende Erfindung eine einfache und effiziente Methode und Vorrichtung zur Koordination der Verwendung von physikalischen Registern in einem Mikroprozessor.
  • Kurzbeschreibung der Zeichnungen
  • 1 ist eine Blockdiagrammdarstellung eines Prozessors, in welchem die vorliegende Erfindung implementiert ist.
  • 2 ist eine detaillierte Blockdiagrammdarstellung der Registerverwaltungseinheit 16 der vorliegenden Erfindung.
  • 3a3c sind Blockdiagrammdarstellungen der Registerdateieinheit 30, der Registerrückgewinnungsdateieinheit 32 und der Freilisteneinheit 34 der Registerverwaltungseinheit 16 in verschiedenen abgetasteten Zuständen.
  • 4 ist ein Ablaufdiagramm für die Steuereinheit 36 der Registerverwaltungseinheit 16.
  • 5 ist ein detailliertes Flußdiagramm für den Sicherungsprozeß 134 von 4.
  • 6 ist ein detailliertes Flußdiagramm für den Rückschritt-Prozeß 138 von 4.
  • Detaillierte Beschreibung
  • Anhand 1 ist eine Blockdiagrammdarstellung eines Prozessors 10 gezeigt, in welchem die vorliegende Erfindung implementiert ist. Wie gezeigt, umfaßt der Prozessor vorzugsweise eine Befehlsausgabeeinheit 12, einen Sequenzer 14 (Vorrichtung zum Vorsehen von Reihenfolgen), der mit der Befehlsausgabeeinheit 12 verbunden ist, eine Registerverwaltungseinheit 16, die mit dem Sequenzer 14 verbunden ist, Reservierungsstationen 18, die mit der Registerverwaltungseinheit 16 und mit der Befehlsausgabeeinheit 12 verbunden sind, sowie eine Ausführungseinheit 20, die mit den Reservierungsstationen 18 und der Registerverwaltungseinheit 16 verbunden ist. In der bevorzugten Ausführung ist der Prozessor 10 ein Superskalarprozessor, der mehrere Befehle parallel ausführen kann.
  • In dem Prozessor 10 empfängt die Befehlsausgabeeinheit 12 eine Folge von Befehlen von einer externen Quelle (nicht gezeigt) und speichert diese Befehle zur späteren Ausführung. Die Befehlsausgabeeinheit 12 empfängt als Eingabe ein Taktsignal, und die Einheit 12 gibt in jedem Taktzyklus einen oder mehrere Befehle zur Ausführung aus. Die ausgegebenen Befehle werden sowohl an den Sequenzer 14 als auch an die Reservierungsstationen 18 gesendet. Der Sequenzer 14 weist jedem Befehl in Abhängigkeit von den ausgegebenen Befehlen eine Folgenummer (Sn) zu. Wie später erläutert wird, werden diese Folgenummern von der Registerverwaltungseinheit 16 verwendet, um Befehle verfolgen zu können. Sobald diese Folgenummern den Befehlen zugeordnet worden sind, leitet der Sequenzer 14 die Befehle an die Registerverwaltungseinheit 16 weiter.
  • Logische Register werden betrieblich bedingt von Computerbefehlen referenziert. Diese logischen Register (die im weiteren als LR bezeichnet werden) können Quellregister sein, die bestimmte Daten enthalten, welche zur Ausführung des Befehls verwendet werden, oder diese Register können Zielregister sein, in die Daten geschrieben werden, die sich durch die Ausführung der Befehle ergeben. Beispielsweise sind in dem Befehl LR1 ∻ LR2 → LR3,welcher die Inhalte von LR1 durch die Inhalte von LR2 teilt und das Ergebnis in LR3 schreibt, LR1 und LR2 Quellregister, während LR3 das Zielregister ist.
  • Logische Register zeigen nicht auf jeden physikalischen Ort, an dem ein physikalisches Register vorliegt. Um von den logischen Registerwerten auf ein physikalisches Register zu kommen, wird ein Übersetzungs- oder Abbildungsprozeß durchgeführt. Diese Abbildungsfunktion ist eine der Funktionen, die von der Registerverwaltungseinheit 16 durchgeführt werden. Wenn eine Eins-zu-Eins-Entsprechung zwischen den logischen und physikalischen Registern bestünde und wenn deren Beziehungen konstant wären, wäre die Abbildungsfunktion einfach. Es wäre lediglich eine statische Übersetzungstabelle nötig. Jedoch gibt es bei superskalaren Prozessoren keine konstante Eins-zu-Eins- Entsprechung, wie bereits bemerkt. Statt dessen verändern sich die Beziehungen zwischen den logischen und physikalischen Registern ständig. Daher muß die Registerverwaltungseinheit 16 in der Lage sein, die veränderlichen Beziehungen zu verwalten.
  • Als zusätzliche Schwierigkeit setzen superskalare Prozessoren spekulative Ausführungen ein. Das heißt, daß immer, wenn ein Abzweigbefehl angetroffen wird, eine Vermutung oder Schätzung durchgeführt wird, die bestimmt, welche Abzweigung tatsächlich genommen wird. Wenn die Vorhersage einmal getroffen ist, werden die Befehle ausgeführt, die dem vorhergesagten Zweig folgen. Wenn später festgestellt wird, daß der falsche Zweig vorhergesagt wurde, muß der Prozessor 10 zu dem Abzweigebefehl zurückschreiten oder das „Backup" verwenden, die richtige Abzweigung wählen und dann die Befehle ausführen, die auf diese Abzweigung folgen. Um das Backup in richtiger Weise zu verwenden, muß genau der Zustand für den Prozessor 10 hergestellt werden, der genau vor der Abzweigeoperation bestand. Neben anderen Operationen muß dadurch die Beziehung zwischen den logischen und physikalischen Registern wiederhergestellt werden. Um diese Sicherungsprozedur zu vereinfachen, koordiniert vorzugsweise die Registerverwaltungseinheit 16 die Verwendung der physikalischen Register so, daß die Wiederherstellung der Beziehung ermöglicht wird.
  • Als weitere Schwierigkeit verarbeiten superskalare Prozessoren Befehle parallel und außerhalb der Reihenfolge. Wenn daher eine Ausnahmeausführung (beispielsweise Division durch Null) auftritt, die zur Ausführung eines Programmunterbrechungs-Verwalters führt, wird es notwendig, zu dem Befehl zurückzuschreiten, der die Ausnahme ausgelöst hat bevor der Programmunterbrechungs-Verwalter ausgeführt wird. Wie auch die Sicherungsprozedur, führt die Rückschritt-Prozedur neben anderen Operationen zur Wiederherstellung der Beziehungen zwischen den logischen und physikalischen Registern. Im Gegensatz zu der Sicherungsprozedur führt das Rückschreiten jedoch zu einem Befehl, der sich von einem Abzweigebefehl unterscheidet. Dadurch ist eine andere Behandlung notwendig, wie im weiteren beschrieben wird. Die Verwaltungseinheit 16 verwaltet vorzugsweise die Verwendung der physikalischen Register in einer Weise, die diese Rückschrittprozedur ermöglicht. Die Registerverwaltungseinheit 16 wird nun detaillierter mit Bezug auf die obige Hintergrundinformation beschrieben.
  • Die 2 stellt ein detailliertes Blockdiagramm der bevorzugten Ausführung der Registerverwaltungseinheit 16 dar. Wie gezeigt, umfaßt die Verwaltungseinheit 16 vorzugsweise eine Registerdateieinheit 30, eine Registerrückgewinnungsdateieinheit 32, eine Freilisteneinheit 34 und eine Steuereinheit 36 zum Steuern des gesamten Betriebs der Verwaltungseinheit 16.
  • Die Registerdateieinheit 30 ist die Komponente (oder Komponentensatz) in der Verwaltungseinheit 16, welche hauptsächlich für das Abbilden logischer Register auf physikalische Register sowie für das Speichern von Daten zuständig ist. Die Registerdateieinheit 30 umfaßt vorzugsweise eine Anzahl verschiedener Komponenten, einschließlich einen Nur-Lese-Speichers (ROM) 40, einen über den Inhalt adressierbaren Speicher (Content Adressable Memory, CAM) 42, einen Speichers mit wahlfreiem Zugriff für Daten (data-RAM) 44, ein RAM für zulässige Adressen (Address Valid, AV) 46, und zumindest ein und vorzugsweise einer Vielzahl von Kontrollpunkt-RAMs 481 48n . In der Registerdateieinheit 30 wird das ROM verwendet, um für alle physikalischen Register in dem Prozessor 10 alle Adreßkennzeichen PR0–PRn physikalischer Register zu speichern. Jedes physikalische Adreßkennzeichen PR0–PRn zeigt auf einen Eintrag in dem Daten-RAM 44, in welchem Daten, die dem physikalischen Registerkennzeichen entsprechen, zusammen mit einem Datengültigkeitsbit (DV) gespeichert werden. Vorzugsweise besteht zwischen den Einträgen in dem ROM 40 und den Einträgen in dem Daten-RAM 44 eine Eins-zu-Eins-Entsprechung. Da die physikalischen Registerkennzeichen PR0–PRn in ROM 40 gespeichert werden, können sie während Schreiboperationen nicht verändert werden; das heißt, daß die physikalischen Registerkennzeichen PR0–PRn für die gesamte Lebenszeit des Prozessors 10 konstant bleiben.
  • Das CAM 42 in der Registerdateieinheit 30 wird verwendet, um logische Registerwerte zu speichern, die den physikalischen Registerkennzeichen entsprechen. Im Gegensatz zu ROM 40 kann und wird der Inhalt von CAM 42 regelmäßig verändert. Vorzugsweise besteht eine Eins-Zu-Eins-Zuordnung zwischen den Einträgen des CAM 42, den Einträgen des AV-RAMs 46 und den Einträgen des ROMs 40, wie es in 2 dargestellt ist. Das ROM 40, das CAM 42 und das AV-RAM 46 bieten zusammen ein Mechanismus, um einem logischen Register schnell und einfach ein physikalisches Register zuzuwei sen. Um dies zu veranschaulichen, soll angenommen werden, daß das physikalische Register PR0 dem logischen Register LR1 zugewiesen werden soll. Zum Erstellen einer solchen Zuordnung muß lediglich der logische Registerwert LR1 in den Eintrag des CAM 42 gespeichert werden, der dem physikalischen Registerkennzeichen PR0 entspricht; und in dem AV-RAM 46, das dem physikalischen Registerkennzeichen PR0 entspricht, muß das AV-Bit gesetzt werden. Sobald dies durchgeführt wurde, wird das CAM 42 nach LR1 suchen und einen „Treffer" bei dem Eintrag signalisieren, der dem physikalischen Registerkennzeichen PR0 entspricht, wenn das logische Register LR1 beim nächsten Mal in einem Befehl verwendet wird. Dadurch wird das ROM 40 dazu veranlaßt, das Kennzeichen PR0 auszugeben, wodurch wiederum auf den entsprechenden Eintrag in dem Daten-RAM 44 zugegriffen wird. Daher erzeugt das Speichern eines logischen Registerwertes in CAM 42 eine direkte Verknüpfung zwischen einer logischen Adresse und einer physikalischen Adresse, wie in diesem Beispiel dargestellt wurde. Um diese Verknüpfung zu verändern und eine neue zu erstellen, muß lediglich der logische Registerwert LR1 in einen anderen Eintrag des CAM 42 gespeichert werden.
  • Die Registerdateieinheit 30 umfaßt ferner Kontrollpunkt-RAMs 481 48n , um die Inhalte des AV-RAMs 46 temporär zu speichern. Wie in einem späteren Abschnitt detaillierter erklärt ist, wird ein „Kontrollpunkt" erstellt, in dem Inhalte des AV-RAMs 46 in einen der Kontrollpunkte-RAMs 481 48n gespeichert werden, wenn ein spekulativer Abzweigebefehl angetroffen wird. Durch das Speichern der Inhalte des AV-RAMs 46 wird der Zustand des Systems vor dem Abzweigen festgehalten. Dieser Kontrollpunkt bietet einen Referenzpunkt zum Rückschreiten (backup), für den Fall, daß eine falsche Abzweigung vorhergesagt wurde. Die Registerdateieinheit 30 umfaßt vorzugsweise eine Vielzahl von Kontrollpunkt-RAMs 48, um die Erstellung einer Vielzahl von Kontrollpunkten zu ermöglichen. Dieses wiederum erlaubt es dem Prozessor 10, verschachtelter Abzweigungen durch verschiedene Ebenen hindurch auszuführen.
  • Die Registerrückgewinnungs-Dateneinheit 32 ist die Komponente in der Verwaltungseinheit 16, welche es der Einheit 16 ermöglicht, zu einem Befehl zurückzuschreiten, der eine Ausführungsausnahme hervorgerufen hat. Vorzugsweise umfaßt die Einheit 32 ein Resourcenrückgewinnungs-RAM 50, das eine Vielzahl von Einträgen aufweist. Jeder dieser Einträge in dem Rückgewinnungs-RAM 50 ist vorzugsweise mit einer Ausgabesequenz (oder Serien-)-Nummer indiziert, welche einem bestimmten ausgegebenen Befehl entspricht. Mit diesem Eintrag ist ein Umbenennungs-Gültigkeitsbit-Teil, ein erster Teil zum Speichern eines umbenannten strukturellen (logisches) Registerkennzeichens, und ein zweiter Teil zum Speichern eines alten physikalischen Registerkennzeichens verbunden. Der Umbenennungs-Gültigkeitsbit-Teil speichert eine „Null", wenn der bestimmte Befehl keine Umbenennung erfordert, und eine „Eins", wenn der bestimmte Befehl eine Umbenennung eines strukturellen Registers notwendig macht. Das alte physikalische Registerkennzeichen entspricht dem umbenannten strukturellen Registerkennzeichen zu einem Zeitpunkt, der direkt vor der Ausstellung des bestimmten Befehls liegt. Tatsächlich speichert jeder Eintrag des Rückgewinnungs-RAMs 50 einen Zustand des Systems, der genau vor der Ausführung eines bestimmten Befehls vorlag. Daher kann die in dem Rückgewinnungs-RAM 50 gespeicherte Information dazu verwendet werden, das System mit dem Zustand wiederherzustellen, den dieses kurz vor einem vorgegebenen Befehl hatte. Dieser Aspekt der Verwaltungseinheit 16 ermöglicht das Rückschreiten.
  • Die Registerverwaltungseinheit 16 umfaßt ferner vorzugsweise eine Freilisteneinheit 34, welche die physikalischen Registerkennzeichen speichert, die für eine Zuweisung zu logischen Registern bereitstehen. Die Freilisteneinheit 34 umfaßt vorzugsweise ein Freilisten-RAM 62, das Kennzeichen freier physikalischer Adressen speichert, ein Anfangsregister 64, das einen „Anfangs"-Zeiger speichert, ein End-Register 66, das einen „End"-Zeiger speichert, sowie zumindest ein und vorzugsweise eine Vielzahl von Kontrollpunktregistern 681 68n . Das Freilisten-RAM 62 wird vorzugsweise als FIFO-Speicher betrieben. Der Anfangs-Zeiger verweist auf das nächste physikalische Registerkennzeichen in dem RAM 62, das einem logistischen Register zugewiesen werden soll, während der End-Zeiger auf das letzte physikalische Registerkennzeichen zeigt, das in dem RAM 62 gespeichert ist. Jedesmal, wenn ein freies physikalisches Registerkennzeichen mit einem logischen Register verknüpft wird, wird der Anfangs-Zeiger erhöht; und jedesmal, wenn ein freies physikalisches Registerkennzeichen zu dem RAM 62 hinzugefügt wird, wird der End-Zeiger erhöht. Vorzugsweise hat der Freilisten-RAM 62 mindestens (P-L) Einträge, wobei P die Anzahl der physikalischen Registerkennzeichen ist und L die Anzahl der logischen Registerwerte ist.
  • Die Kontrollpunktregister 681 68n werden dazu verwendet, die Werte des Anfangs-Zeigers immer dann zu speichern, wenn ein spekulativer Abzweigungsbefehl vorliegt. Durch die Speicherung des Wertes des Anfangs-Zeigers wird der Zustand der Freilisteneinheit 34 gespeichert. Dadurch kann wiederum, falls notwendig, der Zustand des Freilisten-RAMs 62 wiederhergestellt werden. Die Kontrollpunktregister 48 bieten die Grundlage für die Wiederherstellungs(Backup)-Prozedur. Vorzugsweise umfaßt die Freilisteneinheit 34 eine Vielzahl von Kontrollpunktregistern 48, so daß eine Vielzahl von Kontrollpunkten erstellt werden können. Eine Vielzahl von Kontrollpunkten gestatten die Ausführung des Prozessors 10 durch eine Vielzahl von Ebenen verschachtelter Verzweigungen.
  • Die Registerverwaltungseinheit 16 umfaßt ferner vorzugsweise eine Steuereinheit 36, um den Betrieb der anderen Komponenten 30, 32, 34 zu koordinieren, und um den Gesamtbetrieb der Verwaltungseinheit 16 zu steuern. In der bevorzugten Ausführung wird die Steuereinheit 36 als Zustandsmaschine in Hardware implementiert. Die Steuereinheit 36 wird detailliert zusammen mit dem Betrieb des Prozessors 10 beschrieben.
  • Mit Bezug auf 1 sind die Reservierungsstationen 18 des Prozessors 10 für zwei primäre Funktionen verantwortlich. Erstens erfassen die Reservierungsstationen 18 die gesamten Quelldaten, welche zur Ausführung eines Befehls benötigt werden. Diese Daten werden von der Registerverwaltungseinheit 16 empfangen. Zweitens planen die Reservierungsstationen 18 den Ablauf der Ausführung der Befehle. Die Befehle können zur Ausführung ausgewählt werden, wenn die DV-Bits der Registerdateieinheit 30 für alle Quellen bestätigt sind und wenn keine älteren Befehle in Frage kommen, die in den Reservierungsstationen gespeichert sind. Die Befehle werden zur Ausführung an die Ausführungseinheit 20 weitergeleitet, sobald diese ausgewählt werden. Insgesamt sind die Stationen 18 für den gleichmäßigen Ablauf der Ausführung von Befehlen zuständig.
  • Alle relevanten Elemente des Prozessors 10 wurden nun diskutiert. Im weiteren wird der Gesamtbetrieb des Prozessors 10 beschrieben.
  • Bevor der Prozessor 10 im üblichen Betrieb verwendet wird, muß dieser zuerst initialisiert werden. In dem Initialisierungsprozeß werden verschiedene Schritte durchgeführt. Zuerst wird jeder einzelne logische Registerwert in die Einträge des CAM 42 gespeichert. Es werden diejenigen AV-Bits gesetzt, welche den CAM-Einträgen entsprechen, in denen die logischen Registerwerte gespeichert sind. Dadurch wird gewährleistet, daß vor dem Betrieb alle logischen Registerwerte auf ein physikalisches Register gültig abgebildet werden. Die einzelne Abbildung (d. h., welcher logische Registerwert auf welches physikalische Register abgebildet wird) ist wahlfrei. Jedoch wird kein einzelner logischer Registerwert auf mehr als ein physikalisches Register abgebildet.
  • Sobald alle logischen Registerwerte in dem CAM 42 gespeichert sind, sind die freien physikalischen Register bekannt. Dementsprechend werden die physikalischen Registerkennzeichen, die den freien Registern entsprechen, in dem Freilisten-RAM 62 gespeichert. Somit wird eine Kennzeichnung vorgesehen, welche physikalischen Register frei sind und zugewiesen werden können.
  • Als Beispiel wird angenommen, daß die in 3a dargestellte Verwaltungseinheit 16 initialisiert ist. Insbesondere wird angenommen, daß das physikalische Register PR0 dem logischen Register LR0 zugeordnet ist, PR1 zu LR1 zugeordnet ist, PR2 zu LR2 zugeordnet ist, PR3 zu LR3 zugeordnet ist, und PR4 zu LR4 zugeordnet ist. Nach der Zuweisung können Daten (Data0–Data4) zusammen mit den zugeordneten Datengültigkeitsbits in die entsprechenden Stellen in den Daten-RAM 44, geschrieben werden. Wie in der 3a dargestellt ist, wurden den physikalischen Registern PR5–PR9 keine logischen Registerwerte zugeordnet. Daher werden diese als „frei" angenommen, das bedeutet, daß diese bei folgenden Operationen logischen Registerwerten zugeordnet werden können. Daher werden die physikalischen Registerkennzeichen PR5–PR9, die mit den freien physikalischen Registern verknüpft sind, in der Freilisteneinheit 34 gespeichert. Der Anfangs-Zeiger in der Freilisteneinheit zeigt auf PR5, wodurch angegeben wird, daß PR5 das nächste physikalische Register ist, dem ein logischer Registerwert zugeordnet wird. Aktuell ist in der Registerrückgewinnungs-Dateneinheit 42 keine Information gespeichert.
  • Nun wird angenommen, daß die Befehlsausgabeeinheit 12 den folgenden Befehl ausgibt: LR0 ∻ LR1 → LR3.
  • Durch diesen Befehl werden bei dessen Ausführung die Daten in den logischen Registern LR0 durch die Daten in den logischen Register LR1 dividiert und das Ergebnis wird in dem logischen Register LR2 gespeichert. Bei diesem Befehl sind die logischen Register LR0 und LR1 diejenigen logischen Register, von denen die Daten entnommen werden, während das logische Register LR3 das logische Zielregister ist. Der Befehl wird an den Sequenzer 14 weitergegeben, in welchem dem Befehl eine Laufnummer zugewiesen wird, sobald er ausgestellt ist. Unter der Voraussetzung, daß die Laufnummer 0 zugewiesen wird, ergibt sich der Befehl zu: Befehl Nr. 0: LR0 ∻ LR1 → LR3.
  • Sobald die Laufnummer zugewiesen ist, wird der Befehl zu der Steuereinheit 36 der Registerverwaltungseinheit 16 zur Verarbeitung weitergegeben.
  • In der Verwaltungseinheit 16 empfängt die Steuereinheit 36 neue Befehle und verarbeitet diese. Ein Betriebs-Flußdiagramm für die Steuereinheit 36 ist in der 4 dargestellt. Vorzugsweise beginnt die Steuereinheit 36 ihren Betrieb, indem der Befehl empfangen 100 wird, und ermittelt 102 daraufhin, ob der Befehl ein spekulativer Abzweigebefehl ist. Wenn der Befehl ein spekulativer Abzweigebefehl ist, erzeugt die Steuereinheit 36 vorzugsweise einen „Kontrollpunkt", um einen Referenzpunkt vorzusehen, den der Prozessor 10 mit Hilfe des Backups wiederherstellen kann, wenn die falsche Abzweigung des Abzweigebefehls vorhergesagt wurde. Bei der Erstellung eines Kontrollpunkts werden zwei Operationen durchgeführt. Erstens werden die Inhalte des AV-RAMs 46 in einen der Kontrollpunkt-RAMs 481 48n gespeichert 104. Diese Operation sichert alle aktuellen Verknüpfungen zwischen den logischen Registern und den physikalischen Registern zur späteren Referenz. Zweitens werden Inhalte des Anfangszählers 64 in der Freilisteneinheit 34 in einem der Kontrollpunkt-Register 681 68n gespeichert 106. Durch die Speicherung dieser zwei Informationssätze wird der aktuelle Zustand des Prozessors 10 aufgezeichnet. Diese Information kann zu einem späteren Zeitpunkt wiedergewonnen werden, um den Zustand des Prozessors 10 in dem Zustand genau vor der Ausführung des spekulativen Abzweigungsbefehls wiederherzustellen. Wie im weiteren detaillierter behandelt wird, wird es dem Prozessor 10 durch diesen Aspekt der Verwaltungseinheit 16 ermöglicht, die Backupprozedur der vorliegenden Erfindung durchzuführen.
  • In dem vorliegenden Beispiel ist der Befehl (LR0 ∻ LR1 → LR3) kein spekulativer Abzweigebefehl, und daher übergeht die Steuereinheit 36 die Schritte 104 und 106 und fährt mit Schritt 108 fort, um aus dem Befehl einen Wert des logischen Zielregisters zu extrahieren. In dem vorliegenden Beispiel ist der Wert des logischen Zielregisters LR3. Sobald der Wert des logischen Zielregisters extrahiert ist, greift die Steuereinheit 36 auf das Freilisten-RAM 62 zu, um aus diesem das nächste zur Verfügung stehenden physikalischen Registerkennzeichen zu extrahieren 110. Wie in 3a dargestellt ist, zeigt der Anfangszeiger momentan auf ein physikalisches Registerkennzeichen PR5; daher wird PR5 als physikalisches Register gewählt, das dem logischen Register LR3 zugeordnet ist. Danach erhöht 112 die Steuereinheit 36 den Anfangszähler 34, so daß der Zähler auf das nächste freie zur Verfügung stehende physikalische Register zeigt, das in diesem Beispiel PR6 ist.
  • Nachdem von der Freilisteneinheit 34 ein physikalisches Registerkennzeichen zurückerlangt wurde, legt die Steuereinheit 36 den logischen Registerwert LR3 an das CAM 42 an 114. Tatsächlich prüft diese Operation die aktuelle physikalische Registerzuweisung für das logische Register LR3. In dem vorliegenden Beispiele ist LR3 dem physikalischen Register PR3 aktuell zugewiesen, wie in der Registerdateieinheit 30 dargestellt ist. Daher wird ein Treffer gefunden, wenn LR3 an das CAM 42 angelegt wird, wodurch das physikalische Registerkennzeichen PR3 aus dem ROM 40 ausgelesen wird. Dieses physikalische Registerkennzeichen PR3 wird zusammen mit dem logischen Registerwert LR3 daraufhin in den Rückgewinnungs-RAM 50 in dem Eintrag gespeichert, welcher der Folgenummer des aktuellen Befehls (Laufnummer 0) entspricht, wie in 3b dargestellt ist. Die Information in dem Rückgewinnungs-RAM 50 wird verwendet, um den Prozessor 10 zu einem späteren Zeitpunkt auf den aktuellen Zustand des Prozessors 10 zurückzubringen falls dies notwendig ist.
  • Nachdem der logische Registerwert LR3 und dessen entsprechendes altes physikalisches Registerkennzeichen PR3 in dem Rückgewinnungs-RAM 50 gespeichert sind, löscht die Steuereinheit 36 das AV-Bit, das der alten physikalischen Registerzuweisung entspricht, die in diesem Beispiel das AV-Bit in dem AV-RAM 46 ist, welches dem physikalischen Registerkennzeichen PR3 entspricht. Nachdem dies durchgeführt wurde, lädt 120 die Steuereinheit 36 den logischen Registerwert LR3 in das CAM 42 in denjenigen Eintrag, welcher dem neuen physikalischen Registerkennzeichen entspricht, also PR5. Der logische Registerwert LR3 wird daraufhin einem neuen physikalischen Register zugeordnet. Danach wird das AV-Bit gesetzt 122, das dem physikalischen Register PR5 entspricht, um anzuzeigen, daß dieses nun die aktuelle physikalische Registerzuweisung für das logische Register LR3 darstellt. Es ist jedoch zu bemerken, daß das Datengültigkeits-DV-Bit, das PR5 entspricht, nicht gesetzt ist. Der Grund hierfür ist, daß noch keine Daten in den entsprechenden Eintrag des Daten-RAMs 44 geschrieben wurden, da der Befehl noch nicht ausgeführt wurde. Das DV-Bit wird gesetzt, sobald der Befehl ausgeführt wird, und geeignete Daten werden in den richtigen Eintrag von Daten-RAM 44 gespeichert.
  • Es ist hier anhand 3b zu bemerken, daß das CAM 42 zwei Einträge aufweist, in denen der logische Registerwert LR3 gespeichert wird. Es scheint, daß dies zu Verwechslungen führen könnte. Jedoch ist zu bemerken, daß nur dasjenige AV-Bit gesetzt ist, welches der aktuellen physikalischen Registerzuweisung (PR5) entspricht, wodurch angezeigt wird, daß der Eintrag, welcher der Registerzuweisung PR5 entspricht, die aktuelle Zuweisung darstellt. Das AV-Bit, das dem alten physikalischen Register (PR3) entspricht, wird nicht gesetzt. Diese Manipulation des AV-Bits beugt jeder Verwechslung vor, die sich durch mehrere Instanzen des gleichen logischen Registerwertes ergeben könnte. Mit dem bis hierhin beschriebenen Prozeß kann ein logisches Zielregister einem neuen und anderen physikalischen Register zugewiesen werden.
  • Die Zuweisung eines neuen physikalischen Registers zu einem logischen Zielregister ist eine der Funktionen, die von der Steuereinheit 36 durchgeführt werden. Die andere Funktion ist es, die benötigten Quelldaten rückzugewinnen, um den Befehl auszuführen. Die Schritte 124130 von 4 zeigen diesen Rückgewinnungsprozeß. In dem vorliegenden Beispiel sind die logischen Quellregister die Register LR0 und LR1. Daher ist es zum Ausführen des Befehls notwendig, Daten von den Speicherregistern rückzugewinnen, die mit LR0 und LR1 gekennzeichnet sind, um den Befehl auszuführen.
  • Bei der Durchführung des Rückgewinnungsprozesses ermittelt 124 die Steuereinheit 36 zuerst, ob von dem Befehl logische Quellregister angegeben werden. Wenn von dem Befehl logische Quellregister angegeben sind, wie es bei dem vorliegenden Beispiel der Fall ist, beginnt die Steuereinheit 36 den Rückgewinnungsprozeß, indem sie die logischen Quellregister LR0, LR1 an das CAM 42 anlegt 126. Insbesondere wenn LR0 an CAM 42 angelegt wird, wird in dem Eintrag des CAM 42, der dem physikalischen Registerkennzeichen PR0 entspricht, ein Treffer vorgefunden. Da das AV-Bit für diesen Eintrag auf „Eins" gesetzt ist, veranlaßt dieser Treffer, daß das physikalische Registerkennzeichen PR0 von dem ROM 40 ausgegeben wird, wodurch wiederum von dem Daten-RAM 44 die entsprechenden Daten (Data0) ausgegeben werden. Daraufhin werden die Daten von dem logischen Register LR0 an die Reservierungsstationen 18 gesendet 128. Da das Datengültigkeits-DV-Bit für diesen Eintrag auf „1" gesetzt ist, werden bei der Ausführung des Befehls die Daten von den Reservierungsstationen verwendet. Ein ähnlicher Prozeß findet statt, wenn LR1 an das CAM 42 angelegt wird. Insbesonde re verursacht das Anlegen von LR1, daß ein Treffer in dem Eintrag des CAM 42 gefunden wird, der dem physikalischen Register PR1 entspricht. Dieser Treffer veranlaßt die Ausgabe des physikalischen Registerkennzeichens PR1 durch das ROM 40. Dadurch werden wiederum diejenigen Daten (Data1), welche PR1 entsprechen, von dem Daten-RAM 44 an die Reservierungsstationen ausgegeben. Daraufhin werden die Daten von dem logischen Register LR1 an die Reservierungsstationen weitergegeben. Da wiederum das Datengültigkeitsbit entsprechend der ausgegebenen Daten gesetzt ist, werden die Reservierungsstationen 18 die Daten bei der Ausführung des Befehls verwenden.
  • Nachdem die Daten von den logischen Registern LR0, LR1 zu den Reservierungsstationen 18 gesendet wurden, sendet 130 die Steuereinheit 36 das physikalische Registerkennzeichen, das dem logischen Zielregister zugeordnet ist. In der vorliegenden Erfindung ist das logische Zielregister das Register LR3, und das dem LR3 zugeordnete physikalische Register ist das Register PR5. Daher sendet die Steuereinheit 36 das physikalische Adreßkennzeichen PR5 in dem Schritt 130 an die Reservierungsstationen. Nach dem Schritt 130 haben die Reservierungsstationen 18 alle notwendigen Informationen, um den Befehl auszuführen. Somit planen die Stationen 18 den Ablauf des auszuführenden Befehls und senden den Befehl mit der oben betrachteten Information zu einem geeigneten Zeitpunkt an die Ausfühungseinheit 20. Daraufhin führt die Ausführungseinheit 20 den Befehl durch und schreibt die resultierenden Daten in einen entsprechenden Eintrag in den Daten-RAM 44. Da das physikalische Registerkennzeichen PR5 an die Ausführungseinheit 20 gesendet wurde, werden die resultierenden Daten in den Eintrag des Daten-RAMs 44 geschrieben, der dem physikalischen Registerkennzeichen PR5 entspricht und den korrekten Eintrag darstellt. Ferner setzt die Ausführungseinheit 20 das dem Eintrag entsprechende Datengültigkeitsbit, um anzuzeigen, daß die Daten in dem Eintrag nun gültig sind und als Quelldaten verwendet werden können. Danach ist die Ausführung des Befehls vollständig.
  • Der oben beschriebene Prozeß stellt den Vorgang dar, der stattfindet, wenn ein Befehl problemlos ausgeführt wird. Jedoch können, wie bereits oben bemerkt, zwei Ereignisse auftreten, die die problemlose Ausführung beeinflussen können. Das erste Ereignis ist die Benachrichtigung, daß bei einem spekulativen Abzweigungsbefehl ein nicht zutreffender Zweig eingeschlagen wurde. Das zweite Ereignis ist der Aufruf einer Ausführungsausnahme, die erfordert, daß ein Programmunterbrechungs-Verwalter ausgeführt werden muß. Um dem ersten Ereignis abzuhelfen, wird eine Backup-Prozedur implementiert, um den Prozessor 10 in denjenigen Zustand zurückzubringen, welchen dieser direkt vor dem Abzweigebefehl hatte. Um dem zweiten Ereignis abzuhelfen, ist eine Rückschrittprozedur implementiert, um den Prozessor in den Zustand zurückzubringen, den dieser direkt vor dem Befehl hatte, welcher die Ausführungsausnahme hervorgerufen hat. Falls eine falsche Abzweigung eingeschlagen wurde, gibt der Sequenzer 14 an die Steuereinheit 36 der Registerverwaltungseinheit 16 ein „Backup"-Steuersignal aus. Im Falle einer Ausführungsausnahme gibt die Ausführungseinheit 20 ein „Rückschritt" („backstep")-Steuersignal an die Steuereinheit 36 aus. Die Steuereinheit 36 überprüft in den Schritten 132 und 136 diese Signale. Wenn eines dieser Signale ermittelt wurde, wird die Steuereinheit 36 den entsprechenden Schritt durchführen.
  • Um die Backup-Prozedur darzustellen, soll angenommen werden, daß ein spekulativer Abzweigebefehl ausgegeben und an die Registerverwaltungseinheit 16 gesendet wurde. Bei der Verarbeitung dieses Befehls ermittelt 102 die Steuereinheit 36 zuerst (4), ob der Befehl ein spekulativer Abzweigebefehl ist. Wenn der Befehl ein spekulativer Abzweigebefehl ist, wie in diesem Beispiel, dann geht die Steuereinheit 36 zur Durchführung der Schritte 104 und 106 über, um einen „Kontrollpunkt" zu erzeugen. In Schritt 104 werden die Inhalte des AV-RAMs 46 in einem der Kontrollpunkt-RAMs 48; gespeichert, wie in 3c dargestellt. In Schritt 106 werden die Inhalte des Anfangszählers 64 in der Freilisteneinheit 34 in einem der Kontrollpunktregister 681 gespeichert. Diese zwei Operationen stellen den Zustand des Prozessors 10 wieder her, der vor der Ausführung des Abzweigebefehls bestand, um einen Referenzzustand zu erzeugen, zu dem der Prozessor zurückkehren kann. Sobald dies ausgeführt wurde, werden die Befehle in der gleichen Weise wie andere Befehle verarbeitet.
  • Es soll nun angenommen werden, daß während des folgenden Befehls oder einige Befehle danach entdeckt wird, daß eine spekulative Abzweigung falsch vorhergesagt wurde und daß eine falsche Abzweigung eingeschlagen wurde. In einem solchen Fall wird es notwendig sein, den Prozessor 10 in den Zustand zurückzubringen, den dieser genau vor diesem Abzweigebefehl hatte. Diese Wiederherstellung oder Backup wird wie folgt erreicht. Zuerst erzeugt der Sequenzer 14 ein „Backup"-Signal und sendet dieses an die Steuereinheit 36. Dieses „Backup"-Signal wird von der Steuereinheit in Schritt 132 ermittelt und daraufhin implementiert die Steuereinheit 36 die Backup-Prozedur, die in 5 dargestellt ist. Vorzugsweise beginnt die Steuereinheit 36 die Backup-Prozedur, indem die Inhalte des AV-RAMs 36 mit den Inhalten des Kontrollpunkt-RAMs 481 (3c) überschrieben 152 werden, die in dem Kontrollpunkt-RAM 48a während des Schritts 104 gespeichert wurden. Ferner überschreibt 154 die Steuereinheit 36 die Inhalte des Anfangszählers 64 in der Freilisteneinheit 34 mit den Inhalten des Kontrollpunktregisters 681 , die in dem Kontrollpunktregister 481 in Schritt 106 gespeichert wurden. Durch die Ausführung dieser zwei Schritte stellt die Steuereinheit 36 den Zustand des Prozessors 10 wieder her, den dieser genau vor der Abzweigung hatte. Dadurch wird das Prozessor-Backup erreicht.
  • Es ist manchmal notwendig, einen Maschinenzustand nicht nur in bezug auf eine mit Kontrollpunkten versehene Stelle wiederherzustellen, sondern hinsichtlich eines Befehls, der zwischen Kontrollpunkten liegt. Ein Beispiel einer solchen Situation ist, wenn ein Befehl auf einen Division-durch-Null-Zustand trifft. Da eine Division durch Null nicht möglich ist, ruft ein solcher Befehl üblicherweise eine Programmunterbrechung hervor. Bevor auf einen Programmunterbrechungs-Verwalter zugegriffen wird, ist es jedoch zuerst notwendig, zu dem Zustand der Maschine zurückzuschreiten, der direkt nach der Ausführung des Befehls bestand. Dieses „Zurückschreiten" ist üblicherweise schwierig durchzuführen, da für den Befehl keine Kontrollpunkte erstellt wurden, weil der Befehl kein Abzweigebefehl ist. Jedoch mit der vorliegenden Erfindung kann das Zurückschreiten zu einem Befehl einfach durchgeführt werden.
  • Um diese Rückschrittprozedur darzustellen, wird auf die 3b, 4 und 6 sowie auf ein spezielles Beispiel zurückgegriffen. Um auf das oben verwendete Beispiel zurückzukommen, soll wiederum angenommen werden, daß der Befehl Befehl Nr. 0: LR0 ∻ LR1 → LR3 von der Steuereinheit 36 der Registerverwaltungseinheit 16 empfangen wird. Ferner soll angenommen werden: (1) daß der logische Registerwert LR3 ist in den CAM-Eintrag geschrieben wurde, der dem physikalischen Kennzeicheneintrag PR5 entspricht, wie in
  • 3b dargestellt ist, wodurch LR3 einem physikalischen Register PR5 zugewiesen wird; und (2) daß der logische Registerwert LR3 und dessen entsprechendes früheres physikalisches Registerkennzeichen PR3 in dem Rückgewinnungs-RAM 50 in dem Eintrag gespeichert sind, der mit der Instruktionsfolgenummer #0 indexiert ist. Das Schreiben dieser Werte in das CAM 42 und in das Rückgewinnungs-RAM 50 sind oben anhand der Schritte 108122 von 4 beschrieben. Daher werden diese Operationen hier nicht nochmals aufgegriffen. Die wichtigen zu bemerkenden Punkte sind hier: (1) es existieren zwei Instanzen von LR3, die in dem CAM 42 gespeichert sind, wobei eine dem aktuell zugeordneten physikalischen Registerkennzeichen PR5 entspricht und die andere mit dem vorher zugeordneten physikalischen Registerkennzeichen PR3 verknüpft ist; und (2) das Rückgewinnungs-RAM 50 speichert die vorherige Verknüpfung zwischen LR3 und PR3. Die Information in dem Rückgewinnungs-RAM 50 erlaubt ein einfaches Zurückschreiten.
  • Um darzustellen, wie das Zurückschreiten erreicht wird, soll angenommen werden, daß das dem LR1 entsprechende Datum eine Null ist. Wenn dies der Fall ist, wäre der obige Befehl eine Division-durch-Null-Operation. Bei Ausführung dieses Befehls stellt die Ausführungseinheit 20 ein „Rückschritt"-Steuersignal aus. Dieses Signal wird in Schritt 136 von der Steuereinheit 36 ermittelt und daraufhin führt die Steuereinheit 36 die Rückschrittprozedur 138 der vorliegenden Erfindung aus. Die Rückschrittprozedur wird detaillierter in 6 dargestellt.
  • Vorzugsweise beginnt die Steuereinheit 36 die Rückschrittprozedur durch Ermitteln 162 der Laufnummer, die dem Befehl zugeordnet ist, welcher die Ausführungsausnahme verursacht hat. In dem vorliegenden Beispiel ist die dem Befehl zugeordnete Laufnummer 0. Sobald die Befehlslaufnummer ermittelt ist, wird sie als Index zur Rückgewinnung 164 des logischen Registerwerts LR3 und dessen entsprechendem vorherigen phy sikalischen Registerkennzeichens PR3 aus dem Rückgewinnungs-RAM 50 verwendet.
  • Danach legt die Steuereinheit 36 den logischen Registerwert LR3, der von dem Wiedergewinnungs-RAM 50 wiedergewonnen wurde, an das CAM 42 an, um zu ermitteln 166, welches physikalische Register dem logischen Register LR3 momentan zugeordnet ist. Wie in der 3b dargestellt, ist das physikalische Register PR5 dem Register LR3 zugeordnet. Sobald die aktuelle Zuordnung gefunden ist, löscht 168 die Steuereinheit 36 das AV-Bit, das dem aktuell zugeordneten physikalischen Register entspricht. Somit wird in dem vorliegenden Beispiel das dem PR5 entsprechende AV-Bit gelöscht. Daraufhin schreibt 170 die Steuereinheit 36 den logischen Registerwert LR3 in das CAM 42 in einen Eintrag, der dem vorherigen physikalischen Adressenkennzeichen entspricht. Somit wird in dem vorliegenden Beispiel LR3 in den CAM-Eintrag geschrieben, welcher dem physikalischen Registerkennzeichen PR3 entspricht. Danach setzt 172 die Steuereinheit 36 das AV-Bit gemäß dem vorherigen physikalischen Adressenkennzeichen PR3. Durch die Ausführung des oben genannten Schritts wird die Verknüpfung zwischen logischem Register und physikalischem Register gelöscht und die vorherige Verknüpfung wird wiederhergestellt. Als letzter Schritt wird der Anfangszähler 64 in der Freilisten-Einheit 34 vermindert, 174, so daß dieser wieder auf PR5 zeigt, wie bereits vor der Verarbeitung des obigen Befehls. Daher ist der Zustand des Prozessors 10 wieder hergestellt oder auf den gewünschten Zustand zurückgeschritten worden. Nun kann auf den Programmunterbrechungs-Verwalter zugegriffen werden.
  • An diesem Punkt sollte bemerkt werden, daß die Rückschrittprozedur der Registerzuweisungsprozedur, die in den Schritten 108122 von 4 behandelt wurde, ähnelt. Der einzige Unterschied liegt darin, daß der Registerwert statt der Zuweisung des logischen Registerwertes zu einem freien physikalischen Register zurück auf ein physikalisches Register zugewiesen wird, mit dem die vorherige Verknüpfung bestand. Die Ähnlichkeit zwischen den zwei Prozessen ist wesentlich, da dies bedeutet, daß die gleiche Hardware zur Implementierung des Registerzuweisungsprozesses auch dazu verwendet werden kann, die Rückschrittprozedur zu implementieren. Daher wird nur eine sehr geringe zusätzliche Hardware benötigt (tatsächlich ein einfacher zusätzlicher Multiplexer), um die Rückschrittprozedur zu implementieren.
  • Die Rückschrittprozedur wurde als Rückschreiten um nur einen Befehl beschrieben. Es sollte jedoch bemerkt werden, daß das Verfahren und die Vorrichtung der vorliegenden Erfindung verwendet werden kann, um jede gewünschte Anzahl von Befehlen zurückzuschreiten. Typischerweise ist die Anzahl der Befehle, um die zurückgeschritten werden kann, durch die Anzahl der Befehle begrenzt, die pro Zyklus umbenannt werden können. Diese Anzahl kann von System zu System unterschiedlich sein.
  • Wieder bezugnehmend auf 4 ermittelt die Kontrolleinheit 36, ob eine bestimmte physikalische Registerkennzeichnung zurück zur Freilisteneinheit zurückgesendet werden soll, nachdem diese die Schritte 100138 durchgeführt hat, so daß das entsprechende physikalische Register neu zugewiesen werden kann. An die Freilisten-Einheit 34 wird ein physikalisches Registerkennzeichen gesendet oder freigegeben, wenn der Befehl, für den das physikalische Register verwendet wird, übergeben wird. Ein Befehl wird übergeben, wenn die Ausführung des Befehls erfolgreich fertiggestellt wurde und wenn alle vorangegangenen Befehle vollständig ohne Fehler oder Ausnahmen fertiggestellt wurden. Im Schritt 140 ermittelt die Steuereinheit 36, ob ein bestimmter Befehl übergegeben wurde. In diesem Fall, gibt die Steuereinheit 36 das physikalische Registerkennzeichen oder Kennzeichen, die mit dem Befehl verknüpft sind, an die Freilisten-Einheit 64 frei. In Fortführung des vorliegenden Beispiels soll angenommen werden, daß der Befehl LR0 ∻ LR1 → LR3 übergeben wurde. In einem solchen Fall wird das physikalische Registerkennzeichen PR3 (das in dem Rückgewinnungs-RAM 50 gespeichert ist), das dem Zielregister LR3 entspricht, an die Freilisten-Einheit 34 übergeben 142. Insbesondere fügt die Steuereinheit 36 das physikalische Registerkennzeichen PR3 an das Ende des Freilisten-RAMs 62 an und erhöht daraufhin den End-Zähler 66. Das freie Register PR3 wird daraufhin zu der Liste von physikalischen Registern hinzugefügt, die einem logischen Register zugewiesen werden können.
  • Die vorliegende Erfindung wurde anhand spezieller Beispiele beschrieben. Jedoch soll die Erfindung dadurch nicht begrenzt sein. Verschiedene Veränderungen können von einer auf diesem Feld bewanderten Person mit der Unterstützung dieser Offenbarung durchgeführt werden. Beispielsweise wurde die Erfindung der Einfachheit halber unter der Annahme beschrieben, daß nur ein Befehl pro Zyklus ausgestellt wird. Es sollte dennoch bemerkt werden, daß die Erfindung in Prozessoren implementiert werden kann, die mehrere Befehle pro Taktzyklus ausstellen, und daß die Erfindung hierfür vorgesehen ist. Zur Anpassung an mehrere Befehle pro Takt können an die Registerdateieinheit 30, an die Registerrückgewinnungs-Dateneinheit, an die Freilisten-Einheit 32 und an die Freilisteneinheit 34 mehrere Anschlüsse hinzugefügt werden. Diese und andere Veränderungen liegen innerhalb des Bereichs der Erfindung. Daher soll die Erfindung nicht durch die Beispiele, die der Erläuterung dienen, sondern nur durch die folgenden Ansprüche begrenzt sein.

Claims (6)

  1. Verfahren zur Durchführung einer Rückschritt-Prozedur bei dem Auftreten einer Ausnahme während der Ausführung einer Folge von auszuführenden Befehlen, welches die folgenden Schritte umfaßt: Identifizieren eines Rangs eines Befehls in einer Reihenfolge; Feststellen, ob ein logisches Zielregister durch den Befehl referenziert wurde, und wenn das logische Zielregister referenziert wurde: Verknüpfen des referenzierten logischen Zielregisters mit einem physikalischen Register und Feststellen, ob das referenzierte logische Zielregister mit einem früheren physikalischen Register eines vorher ausgeführten Befehls verknüpft war; Speichern der Statusinformation einschließlich: einer Kennzeichnung des Rangs des Befehls in der Reihenfolge, einer Verknüpfung des referenzierten logischen Zielregisters mit dem physikalischen Register, wenn der Befehl ein logisches Zielregister referenziert, und der Verknüpfung des referenzierten logischen Zielregisters mit dem früheren physikalischen Register; und im Falle des Auftretens einer Ausführungsausnahme: Stoppen der Ausführung des Befehls; Rückschreifen in umgekehrter Reihenfolge zu einem Zeitpunkt vor der Ausführungsausnahme, indem die vorher gespeicherten Statusinformation für jeden nach dem Zeitpunkt ausgeführten Befehl verwendet wird, und Vermeiden eines Statuswechsels, wenn ein Prüfbit keinen Wechsel der physikalischen Registerzuordnung des Befehls anzeigt.
  2. Verfahren nach Anspruch 1, wobei der Speicherschritt umfaßt: Setzen eines Adreßgültigkeitsbits auf einen Wert, um eine Verknüpfung des referenzierten logischen Zielregisters mit dem physikalischen Register zu erzeugen.
  3. Verfahren nach Anspruch 1 oder 2 mit dem weiteren Schritt: Ausführen einer Befehlsfolge, indem gleichzeitig mehrere Befehle ausgewählt werden.
  4. Verfahren nach einem der vorangegangenen Ansprüche mit dem weiteren Schritt: Rückgewinnen des physikalischen Registers durch: Überwachen der vollständigen Ausführung jedes Befehls in der Folge; bei vollständiger Ausführung des Befehls in der Folge: Feststellen, ob andere Befehle in der Folge, die einen früheren Rang in der Reihenfolge haben, nicht vollständig ausgeführt wurden, und wenn keine früheren Befehle nicht vollständig ausgeführt wurden, Wiedergewinnen der vorher gespeicherten Verknüpfung des vorher referenzierten physikalischen Registers und Feststellen der Verfügbarkeit des vorher referenzierten physikalischen Registers.
  5. Verfahren nach einem der vorangegangenen Ansprüche, wobei die Identifizierung des Rangs eines Befehls in einer Reihenfolge die Ausgabe jedes Befehls einer Folge von Befehlen einschließlich eines ersten und zweiten Befehls umfaßt und das Verfahren umfaßt: Identifizieren des Rangs des ersten Befehls und des zweiten Befehls in der Reihenfolge; Identifizieren eines ersten logischen Zielregisters mit einem physikalischen Register, welches dem ersten Befehl entspricht; Identifizieren eines zweiten logischen Zielregisters mit dem physikalischen Register, welches dem zweiten Befehl entspricht; Ausführen des zweiten Befehls außerhalb der Abfolge in Bezug auf den ersten Befehl; und Wiederherstellen der Statusinformation der Einheit bei dem Auftreten einer Ausführungsausnahme.
  6. Verfahren nach einem der vorangegangenen Ansprüche, wobei die Rückschritt-Prozedur umfaßt: Feststellen des Rangs des Befehls in der Reihenfolge; Wiedergewinnen der Zuordnung zwischen den referenziertem logischen Zielregister und dem früheren physikalischen Register aus einer Registerrückgewinnungseinheit, durch Verwenden des Rangs des Befehls; Referenzieren einer Registerdateieinheit zur Bestimmung, ob das referenzierte logische Zielregister durch den Befehl dem physikalischen Register zugeordnet ist; Aktualisieren der Registerdateieinheit, um die Verknüpfung des referenzierten logischen Zielregisters mit dem physikalischen Register zu löschen und die Verknüpfung des referenzierten logischen Zielregisters mit dem vorherigen physikalischen Register zu bestätigen; und Aktualisieren einer Liste freigegebener Einheiten, so daß das physikalische Register umfaßt wird.
DE69628480T 1995-03-03 1996-03-01 Ausnahmebehandlung in einem Datenprozessor Expired - Lifetime DE69628480T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US39789395A 1995-03-03 1995-03-03
US397893 1995-03-03

Publications (2)

Publication Number Publication Date
DE69628480D1 DE69628480D1 (de) 2003-07-10
DE69628480T2 true DE69628480T2 (de) 2004-05-06

Family

ID=23573099

Family Applications (2)

Application Number Title Priority Date Filing Date
DE69628480T Expired - Lifetime DE69628480T2 (de) 1995-03-03 1996-03-01 Ausnahmebehandlung in einem Datenprozessor
DE69638299T Expired - Lifetime DE69638299D1 (de) 1995-03-03 1996-03-01 Verfahren und Vorrichtung zur Änderung der Namen von Registern

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE69638299T Expired - Lifetime DE69638299D1 (de) 1995-03-03 1996-03-01 Verfahren und Vorrichtung zur Änderung der Namen von Registern

Country Status (4)

Country Link
US (1) US5675759A (de)
EP (2) EP1308837B1 (de)
AT (1) ATE242508T1 (de)
DE (2) DE69628480T2 (de)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11506230A (ja) * 1996-03-28 1999-06-02 フィリップス エレクトロニクス ネムローゼ フェンノートシャップ シーケンシャルプロセッサにおいてデータ要素の組を処理する方法およびコンピュータシステム
US5881305A (en) * 1996-12-13 1999-03-09 Advanced Micro Devices, Inc. Register rename stack for a microprocessor
US5872990A (en) * 1997-01-07 1999-02-16 International Business Machines Corporation Reordering of memory reference operations and conflict resolution via rollback in a multiprocessing environment
US5765017A (en) * 1997-01-13 1998-06-09 International Business Machines Corporation Method and system in a data processing system for efficient management of an indication of a status of each of multiple registers
US6314511B2 (en) * 1997-04-03 2001-11-06 University Of Washington Mechanism for freeing registers on processors that perform dynamic out-of-order execution of instructions using renaming registers
US6003126A (en) * 1997-07-01 1999-12-14 International Business Machines Special instruction register including allocation field utilized for temporary designation of physical registers as general registers
US5961636A (en) * 1997-09-22 1999-10-05 International Business Machines Corporation Checkpoint table for selective instruction flushing in a speculative execution unit
US6009509A (en) * 1997-10-08 1999-12-28 International Business Machines Corporation Method and system for the temporary designation and utilization of a plurality of physical registers as a stack
US5974525A (en) * 1997-12-05 1999-10-26 Intel Corporation System for allowing multiple instructions to use the same logical registers by remapping them to separate physical segment registers when the first is being utilized
US6108771A (en) * 1997-12-19 2000-08-22 International Business Machines Corporation Register renaming with a pool of physical registers
US6212619B1 (en) * 1998-05-11 2001-04-03 International Business Machines Corporation System and method for high-speed register renaming by counting
US6230262B1 (en) 1998-07-31 2001-05-08 Advanced Micro Devices, Inc. Processor configured to selectively free physical registers upon retirement of instructions
US6122656A (en) 1998-07-31 2000-09-19 Advanced Micro Devices, Inc. Processor configured to map logical register numbers to physical register numbers using virtual register numbers
US6119223A (en) * 1998-07-31 2000-09-12 Advanced Micro Devices, Inc. Map unit having rapid misprediction recovery
US6633563B1 (en) * 1999-03-02 2003-10-14 Nortel Networks Limited Assigning cell data to one of several processors provided in a data switch
US6553483B1 (en) * 1999-11-29 2003-04-22 Intel Corporation Enhanced virtual renaming scheme and deadlock prevention therefor
US6633970B1 (en) * 1999-12-28 2003-10-14 Intel Corporation Processor with registers storing committed/speculative data and a RAT state history recovery mechanism with retire pointer
GB2403833B (en) * 2000-02-16 2005-02-23 Hewlett Packard Co Method and apparatus for resteering failing speculation check instructions field
US7191315B2 (en) 2001-06-04 2007-03-13 Sun Microsystems, Inc. Method and system for tracking and recycling physical register assignment
US20040064657A1 (en) * 2002-09-27 2004-04-01 Muraleedhara Navada Memory structure including information storage elements and associated validity storage elements
US7117297B2 (en) * 2003-05-23 2006-10-03 Hewlett-Packard Development Company, L.P. Method and apparatus for storing multiple entry types and ordering information using a single addressable storage array
TWI223756B (en) * 2003-10-09 2004-11-11 Univ Nat Sun Yat Sen Automatic register backup/restore system and method
US7216219B2 (en) * 2004-05-03 2007-05-08 Sun Microsystems Inc. Method and apparatus for avoiding write-after-read hazards in an execute-ahead processor
US20070204139A1 (en) 2006-02-28 2007-08-30 Mips Technologies, Inc. Compact linked-list-based multi-threaded instruction graduation buffer
EP2011018B1 (de) 2006-04-12 2016-07-13 Soft Machines, Inc. Vorrichtung und verfahren zur verarbeitung einer instruktionsmatrix zur definition paralleler und abhängiger operationen
US20080016326A1 (en) 2006-07-14 2008-01-17 Mips Technologies, Inc. Latest producer tracking in an out-of-order processor, and applications thereof
US7370178B1 (en) * 2006-07-14 2008-05-06 Mips Technologies, Inc. Method for latest producer tracking in an out-of-order processor, and applications thereof
EP2527972A3 (de) 2006-11-14 2014-08-06 Soft Machines, Inc. Vorrichtung und Verfahren zum Verarbeiten von komplexen Anweisungsformaten in einer Multi-Thread-Architektur, die verschiedene Kontextschaltungsmodi und Visualisierungsschemen unterstützt
JP5595633B2 (ja) * 2007-02-26 2014-09-24 スパンション エルエルシー シミュレーション方法及びシミュレーション装置
TWI389026B (zh) * 2009-06-08 2013-03-11 Rdc Semiconductor Co Ltd 暫存器更名表的回復方法與回復系統
WO2012037491A2 (en) 2010-09-17 2012-03-22 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
CN108376097B (zh) 2011-03-25 2022-04-15 英特尔公司 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
EP2689326B1 (de) 2011-03-25 2022-11-16 Intel Corporation Speicherfragmente zur unterstützung einer codeblockausführung mittels durch partitionierbare engines realisierter virtueller kerne
TWI533129B (zh) 2011-03-25 2016-05-11 軟體機器公司 使用可分割引擎實體化的虛擬核心執行指令序列程式碼區塊
US9170818B2 (en) * 2011-04-26 2015-10-27 Freescale Semiconductor, Inc. Register renaming scheme with checkpoint repair in a processing device
EP2710480B1 (de) 2011-05-20 2018-06-20 Intel Corporation Verbindungsstruktur zur unterstützung der ausführung von instruktionssequenzen durch mehrere maschinen
TWI666551B (zh) 2011-05-20 2019-07-21 美商英特爾股份有限公司 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行
IN2014CN03678A (de) 2011-11-22 2015-09-25 Soft Machines Inc
CN104040491B (zh) 2011-11-22 2018-06-12 英特尔公司 微处理器加速的代码优化器
US20140075140A1 (en) * 2011-12-30 2014-03-13 Ingo Schmiegel Selective control for commit lines for shadowing data in storage elements
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
WO2014151043A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
WO2014151018A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for executing multithreaded instructions grouped onto blocks
US9886279B2 (en) * 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
JP6307975B2 (ja) * 2014-03-28 2018-04-11 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US20180203703A1 (en) * 2017-01-13 2018-07-19 Optimum Semiconductor Technologies, Inc. Implementation of register renaming, call-return prediction and prefetch
US11204773B2 (en) * 2018-09-07 2021-12-21 Arm Limited Storing a processing state based on confidence in a predicted branch outcome and a number of recent state changes
US10977038B2 (en) 2019-06-19 2021-04-13 Arm Limited Checkpointing speculative register mappings
US20210165654A1 (en) * 2019-12-03 2021-06-03 Marvell International Ltd. Eliminating execution of instructions that produce a constant result

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4992938A (en) * 1987-07-01 1991-02-12 International Business Machines Corporation Instruction control mechanism for a computing system with register renaming, map table and queues indicating available registers
US4901233A (en) * 1987-07-20 1990-02-13 International Business Machines Corporation Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries
US5197132A (en) * 1990-06-29 1993-03-23 Digital Equipment Corporation Register mapping system having a log containing sequential listing of registers that were changed in preceding cycles for precise post-branch recovery
US5355457A (en) * 1991-05-21 1994-10-11 Motorola, Inc. Data processor for performing simultaneous instruction retirement and backtracking
US5481683A (en) * 1992-10-30 1996-01-02 International Business Machines Corporation Super scalar computer architecture using remand and recycled general purpose register to manage out-of-order execution of instructions
US5493669A (en) * 1993-03-03 1996-02-20 Motorola, Inc. Data processor for simultaneously searching two fields of the rename buffer having first and second most recently allogated bits
US5548776A (en) * 1993-09-30 1996-08-20 Intel Corporation N-wide bypass for data dependencies within register alias table
US5499352A (en) * 1993-09-30 1996-03-12 Intel Corporation Floating point register alias table FXCH and retirement floating point register array

Also Published As

Publication number Publication date
US5675759A (en) 1997-10-07
EP1308837B1 (de) 2010-12-01
EP1308837A2 (de) 2003-05-07
EP0730225A2 (de) 1996-09-04
EP1308837A3 (de) 2007-02-28
EP0730225B1 (de) 2003-06-04
DE69638299D1 (de) 2011-01-13
EP0730225A3 (de) 1999-12-08
ATE242508T1 (de) 2003-06-15
DE69628480D1 (de) 2003-07-10

Similar Documents

Publication Publication Date Title
DE69628480T2 (de) Ausnahmebehandlung in einem Datenprozessor
DE69133302T2 (de) Registerabbildung in einem einzigen Taktzyklus
DE2714805C2 (de)
DE3151745C2 (de)
DE2234867C2 (de) Anordnung in einer Datenverarbeitungsanlage zum Steuern der Verarbeitung zweier voneinander unabhängiger Befehlsfolgen
DE112010004947B4 (de) Wiederherstellung einer vollständigen Systemsicherung und inkrementeller Sicherungen unter Verwendung von mehreren gleichzeitigen Datenströmen von Einheiten
DE19914210B4 (de) Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung
DE69730449T2 (de) Erzeugung einer spiegeldatenkopie (bild) unter verwendung von referenzetiketten
DE19527031C2 (de) Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems
DE19706512A1 (de) Echtzeit-Ereignisanordnung in einem elektronischen Ablaufdiagramm
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE2449547A1 (de) Computer- und datenverarbeitungsanlage
DE2855106A1 (de) Einrichtung zur durchfuehrung von instruktionsverzweigungen
DE2722099A1 (de) Abfangeinrichtung fuer ein dv-system
DE2839726A1 (de) Datenverarbeitungsanlage mit verteilter steuerarchitektur in einem multiprozessor-system
DE112006003453T5 (de) Per-Satz-Relaxation der Cache-Inklusion
DE112005002370T5 (de) Ausführung von Kontrollbefehlen in redundanten Multithreadingumgebungen
DE2657848A1 (de) Steuereinheit fuer ein datenverarbeitungssystem
DE2517276A1 (de) Datenverarbeitungssystem
DE102010011658A1 (de) Applikationsplattform und Verfahren zum Betrieb einer Datenverarbeitungseinrichtung mit einer solchen
DE1915818B2 (de) Steuerschaltung für ein elektronisches Datenverarbeitungssystem
DE69727177T2 (de) Emulation von asynchronen Signalen mit Verzweigungsmechanismus
DE2801610A1 (de) Verfahren zum definieren von anfangswerten fuer die textverarbeitung
DE112020005987T5 (de) Setzen von prüfpunkten in akkumulatorregister-ergebnissen in einem mikroprozessor
DE1549474B2 (de) Anordnung in einer elektronischen digitalen Datenverarbeitungsanlage zur Ausführung eines ersten Befehls und gleichzeitigen Decodierung eines folgenden Befehls

Legal Events

Date Code Title Description
8364 No opposition during term of opposition