DE69903554T2 - Prozessor konfiguriert zur selektiven freigabe von physikalischen registern beim befehlsausführungsabschluss - Google Patents

Prozessor konfiguriert zur selektiven freigabe von physikalischen registern beim befehlsausführungsabschluss

Info

Publication number
DE69903554T2
DE69903554T2 DE69903554T DE69903554T DE69903554T2 DE 69903554 T2 DE69903554 T2 DE 69903554T2 DE 69903554 T DE69903554 T DE 69903554T DE 69903554 T DE69903554 T DE 69903554T DE 69903554 T2 DE69903554 T2 DE 69903554T2
Authority
DE
Germany
Prior art keywords
register
physical register
physical
instruction
logical
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
DE69903554T
Other languages
English (en)
Other versions
DE69903554D1 (de
Inventor
B. Witt
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.)
GlobalFoundries Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Application granted granted Critical
Publication of DE69903554D1 publication Critical patent/DE69903554D1/de
Publication of DE69903554T2 publication Critical patent/DE69903554T2/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • 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
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

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)
  • Executing Machine-Instructions (AREA)

Description

    Hintergrund der Erfindung 1. Gebiet der Erfindung
  • Diese Erfindung betrifft das Gebiet der Prozessoren und insbesondere die Merkmale der Neubenennung von Registern von Prozessoren.
  • 2. Beschreibung der verwandten Technik
  • EP-A-0 541 216 offenbart ein Datenverarbeitungssystem, das eine Register- Neubenennungs-Einheit für jeden unabhängigen Instruktionsstrom enthält. Die Register-Neubenennungs-Einheit führt Neubenennungsoperationen durch, um damit Prozeß-Zustands-Register auf physische Register in einer Registerdatei abzubilden. Ein physisches Register wird frei, wenn alle Instruktionen, auf die verwiesen werden konnte, erfolgreich abgeschlossen worden sind.
  • US-A-5 805 918 offenbart ein System, in welchem Instruktionen, die zu unterschiedlichen Instruktions-Satz-Architekturen gehören, auf verschiedene Bereiche des gleichen Registers zugreifen.
  • US-A-5 546 554 offenbart eine Abbildungseinheit in einem Prozessor zur Register-Neubenennung. Jedes physische Register kann einen von drei Zuständen haben: frei, Warnung und belegt.
  • EP-A-0 463 628 offenbart die Abbildung von Registern zur Neubenennung von Registern.
  • Superskalare Prozessoren versuchen eine hohe Leistung zu erzielen durch die Ausgabe und die Ausführung mehrerer Instruktionen pro Taktzyklus und durch die Verwendung der höchstmöglichen mit dem Design vereinzubarenden Taktfrequenz. Eine Methode zur Erhöhung der Anzahl der in jedem Taktzyklus ausgeführten Instruktionen ist die außer-der-Reihe Ausführung. Bei der außer-der- Reihe Ausführung können Instruktionen in einer anderen Reihenfolge als der in der Programmsequenz (oder "Programm-Reihe") angegebenen ausgeführt werden. Gewisse Instruktionen, die in einer Programmsequenz nahe zueinander sind, könnten Abhängigkeiten haben, welche Ihre gleichzeitige Ausführung verhindern, während nachfolgende Instruktionen in der Programmsequenz möglicherweise keine Abhängigkeiten von den vorhergehenden Instruktionen haben. Entsprechend kann die außer-der-Reihe Ausführung die Leistungsfähigkeit von superskalaren Prozessoren durch die Erhöhung der Anzahl von gleichzeitig (im Mittel) ausgeführten Instruktionen erhöht werden.
  • Leider bringt die außer-der-Reihe Ausführung zusätzliche Komplexitäten der Hardware für den Prozessor. Zum Beispiel kann eine zweite Instruktion, welche in einer Programmabfolge auf eine erste Instruktion folgt, eine Speicherstelle, die von der ersten Instruktion gelesen wird, aktualisieren. In anderen Worten kann der Bestimmungs-Operand der zweiten Instruktion einer der Ursprungsoperanden der ersten Instruktion sein. Für eine korrekte Ausführung des Programms muß die erste Instruktion als einen Ursprungs-operanden den in der Speicherstelle gespeicherten Wert vor der Ausführung der zweiten Instruktion empfangen. Ähnlich sollte, wenn die erste und zweite Instruktion eine besondere Speicherstelle als den Bestimmungs-Operanden haben, das Ergebnis der zweiten Instruktion der Wert sein, der in der Speicherstelle gespeichert wird, nachdem sowohl die erste als auch die zweite Instruktion ausgeführt ist (und vor dem Ausführen einer dritten Instruktion, welche die Speicherstelle aktualisiert).
  • Im Allgemeinen haben Instruktionen einen oder mehrere Ursprungs-Operanden und einen oder mehrere Bestimmungs-Operanden. Die Ursprungs-Operanden sind Eingabewerte, die entsprechend der Definition der Instruktion zur Erzeugung eines oder mehrerer Ergebnisse (welche die Bestimmungs-Operanden sind) manipuliert werden. Die Ursprungs- und Bestimmungs-Operanden können Speicher- Operanden sein, die in einer Speicherstelle außerhalb des Prozessors gespeichert sind, oder können in einem Register, das in dem Prozessor enthalten ist, gespeicherte Register-Operanden sein. Die von dem Prozessor verwendete Instruktions-Satz-Architektur definiert eine Anzahl von architekturisierten Registern. Die Existenz dieser Register wird von der Instruktions-Satz-Architektur definiert und Instruktionen können zur Benutzung der architekturisierten Register als Ur¬ sprungs- und Bestimmungs-Operanden kodiert sein. Eine Instruktion gibt ein bestimmtes Register als einen Ursprungs- oder Bestimmungs-Operanden über eine Register-Nummer (oder eine Registeradresse) in einem Operandenfeld einer Instruktion an. Die Register-Nummer bestimmt das ausgewählte Register eindeutig unter den architekturisierten Registern. Ein Ursprungs-Operand wird durch eine Ursprungs-Register-Nummer und ein Bestimmungs-Operand durch eine Bestimmung-Register-Nummer identifiziert.
  • Zusätzlich zu den architekturisierten Registern definieren einige Prozessoren zusätzliche mikro-architekturisierte Register, welche zum Halten von temporären Ergebnissen während der Ausführung der Instruktion benutzt werden können. Zum Beispiel benutzen einige Prozessoren Mikro-Kodierungs-Techniken, um die komplexesten Instruktionen zu handhaben. Mikrocode-Routinen werden als Antwort auf die komplexen Instruktionen ausgeführt und enthalten eine Vielzahl von einfacheren Instruktionen. Die Mikrocode-Routinen können temporäre Ergebnisse erzeugen, während die komplexe Instruktion ausgeführt wird. Diesen mikroarchitekturisierten Registern (oder temporären Registern) werden zusätzliche Register-Nummern zugewiesen, um die temporären Register eindeutig zwischen den architekturisierten Registern zu identifizieren. Die architekturisierten Register und die temporären Register werden hier gemeinsam als logische Register bezeichnet.
  • Ein die außer-der-Reihe Ausführung verwendender Prozessor kann die obigen Gefahren im Hinblick auf die Registeroperanden erfahren. Ein Verfahren zum Handhaben dieser Gefahren heißt Register-Neubenennung. Bei der Register- Neubenennung implementiert der Prozessor einen Satz von physischen Registern. Die Anzahl der physischen Register ist größer als die Anzahl der logischen Register, die durch die Instruktions-Satz-Architektur und die Mikro-Architektur des Prozessors angegeben wird. Wenn Instruktionen ausgegeben werden, werden physische Register den Bestimmungs-Register-Operanden der Instruktionen zugewiesen. Eine physische Register-Nummer, welche das zugewiesene physische Register identifiziert, wird für jeden Bestimmungs-Operanden ausgegeben und ein Hinweis, welche physischen Register den logischen Registern entsprechen, wird von dem Prozessor beibehalten. Darauffolgende Instruktionen, welche die logischen Register als Ursprungs-Operanden haben, werden mit der entsprechenden physischen Register-Nummer zum Einlesen des passenden Ursprungsoperanden versorgt. Durch das Zuweisen von verschiedenen physischen Registern zum Speichern der Bestimmungs-Operanden jeder Instruktion können Instruktionen ihre Bestimmungs-Operanden zwanglos in beliebiger Reihenfolge aktualisieren, da verschiedene physische Speicherstellen aktualisiert werden.
  • Unglücklicherweise kann der Vorgang des Zuweisens von physischen Register- Nummern an Bestimmungs-Operanden-Instruktionen und das Bereitstellen dieser physischen Register-Nummern an nachfolgende Instruktionen, welche die Bestimmungs-Operanden als Ursprungs-Operanden haben, komplex und langsam sein. Insbesondere schwierig ist in superskalaren Prozessoren das Zuweisen von physischen Register-Nummern an Bestimmungs-Operanden von Instruktionen und das Bereitstellen der physischen Register-Nummern für nachfolgende abhängige Instruktionen, welche die Register-Neubenennungs-Hardware zur gleichen Zeit wie diese Instruktionen durchlaufen. Eine Register-Neubenennungs- Struktur, welche bei höheren Frequenzen arbeiten kann und trotzdem die Neubenennung von mehreren Instruktionen pro Taktzyklus handhaben kann ist gewünscht.
  • Die Register-Neubenennung bereitet Schwierigkeiten, wenn Instruktionen Ausnahmezustände erfahren. Eine Ausnahme bezieht sich, so wie der Begriff hier verwendet wird, auf einen Fehler in der Ausführung der Instruktion, welcher erfordert, dass nachfolgende Instruktionen verworfen werden und das Holen von Instruktionen an einer anderen Adresse gestartet wird. Zum Beispiel ist eine Fehlvorhersage einer Verzweigung ein Ausnahmezustand. Prozessoren können Verzweigungsvorhersagen ausführen, um Instruktionen folgend auf bedingte Verzweigungsinstruktionen spekulativ zu holen, auszugeben und auszuführen. Wenn die Vorhersage nicht korrekt ist, werden die der Verzweigungs-instruktion folgenden Instruktionen verworfen und Instruktionen werden entsprechend der Ausführung der Verzweigungs-instruktion geholt. Weitere Ausnahmezustände können Fehler bei der Übersetzung von Adressen für Adressen von Speicher- Operanden oder andere architekturisierte oder mikro-architekturisierte Fehlerzustände sein.
  • Da die Register-Neubenennung auf Instruktionen angewandt worden sein könnte, welche nachfolgend wegen einer Ausnahme verworfen werden, muss die Abbildung der logischen Register auf die physischen Register in einen Zustand wiederhergestellt werden, der mit der die Ausnahme erfahrenden Instruktion übereinstimmt. In anderen Worten sollte die Abbildung der logischen Register auf physische Register die Ausführung von Instruktionen vor der die Ausnahme erfahrenden Instruktion (in der Reihenfolge des Programms) und nicht die Ausführung von Instruktionen nach der die Ausnahme erfahrenden Instruktion berücksichtigen. Für die Wiederherstellung der Abbildung der Register-Neubenennung ist es wünschenswert, dass sie schnell ist, sodass die in Antwort auf die Ausnahme geholten Instruktionen die Register-Neubenennungs-Hardware durchlaufen können sobald sie verfügbar sind. Sollte die Wiederherstellung der Abbildung der Register-Neubenennung immer noch anhalten, wenn die neu geholten Instruktionen die Register-Neubenennungs-Hardware erreichen, dann müssen die neu geholten Instruktionen aufgehalten werden bis die Abbildung der Register- Neubenennung wiederhergestellt ist. Dabei wird Leistung des Prozessors verloren.
  • Ferner enthält die Register-Neubenennungs-Hardware im Allgemeinen einen Mechanismus zum Wiederbenutzen von physischen Registern, die vorher einem einer nachfolgenden Instruktion entsprechenden Wert zugewiesen waren. Es ist wünschenswert, die physischen Register so effizient wie möglich zu benutzen und auch ein akkurates Verfahren zum Freimachen von physischen Registern bereitzustellen, sobald der nachfolgende Zustand dem entsprechenden logischen Register übergeben worden ist.
  • Zusammenfassung der Erfindung
  • Die oben umrissenen Probleme werden zu großen Teilen durch einen Prozessor gelöst, der eine Abbildungseinheit mit einer Register-Neubenennungs-Hardware verwendet.
  • In Übereinstimmung mit einem ersten Aspekt stellt die Erfindung einen Prozessor, wie er in dem beigefügten Anspruch 10 definiert ist, bereit.
  • Die Abbildungseinheit verbessert die Effizienz der Benutzung der physischen Register durch das Benutzen derselben physischen Register zum Speichern von sowohl einem Bedingungs-Code-Ergebnis als auch einem Ganzzahl-Ergebnis. Die physische Register-Nummer, welche das physische Register identifiziert, wird sowohl für das Bedingungs-Code-Register als auch für das Ganzzahl-Register aufgezeichnet. Um ein richtiges Freimachen der physischen Register, die als Neubenennungen wieder benutzt werden sollen, bereitzustellen, verschiebt die Abbildungseinheit die vorherigen Neubenennungen schnell aus dem architekturisierten Neubenennungs-Block bevor die Einträge entsprechend einem Satz logischer Register, welches in Antwort auf das Zurückziehen einer oder mehrerer Instruktions-operationen übergeben wird, aktualisiert werden. Vor dem Freimachen der entfernten physischen Register-Nummern werden die entfernten physischen Register-Nummern dem aktualisierten architekturisierten Zustand, der von dem architekturisierten Neubenennungs-Block aufrechterhalten wird, gegenübergestellt. Wenn eine Übereinstimmung bei der Gegenübersteilung entdeckt wird, wird das entfernte physische Register nicht freigemacht. Vorteilhafterweise kann die effizientere Benutzung der physischen Register erreicht werden und auch das genaue Freimachen der physischen Register kann erreicht werden. Zusätzlich zu der effizienteren Benutzung der physischen Register im Hinblick auf die Neubenennung der Bedingungs-Code-Register und der Ganzzahl-Register können andere Optimierungen bei der Benutzung des vorliegenden Mechanismus zum Freimachen von Registern möglich sein. Zum Beispiel können Bewegungen von Register zu Register durch das Kopieren der Ursprungs-Physisch-Register-Nummer als die Bestimmungs-Physisch-Register-Nummer erzielt werden. Der vorliegende Mechanismus kann das versehentliche Freimachen der physischen Register-Nummer in solch einem Fall ebenfalls verhindern.
  • Die beschriebenen Ausführungsbeispiele der Abbildungseinheit verwenden eine Vielzahl von Techniken, um die Leistungsfähigkeit und Effizienz des Register- Neubenennungs-Mechanismus zu erhöhen.
  • In Übereinstimmung mit einem zweiten Aspekt stellt die Erfindung ein Verfahren zum Handhaben physischer Register in einem Prozessor, wie in dem beigefügten Anspruch 1 definiert, bereit.
  • Im Allgemeinen wird ein Verfahren zum Handhaben physischer Register in einem Prozessor betrachtet. Ein erstes physisches Register wird einem Bestimmungsoperanden einer Instruktions-Operation zugewiesen. Der Bestimmungs-Operand identifiziert ein logisches Register. Die Instruktions-Operation wird zurückgezogen. Auf das Zurückziehen der Instruktions-Operation hin wird ein architekturisierter Neubenennungs-Block mit einer dem ersten physischen Register entsprechenden Nummer des ersten physischen Registers aktualisiert. Ebenso auf das Zurückziehen der Instruktions-Operation hin wird die Nummer eines zweiten physischen Registers aus dem architekturisierten Neubenennungs-Block gelesen. Die Nummer des zweiten physischen Registers wird durch die Nummer des ersten physischen Registers bei der Darstellung des logischen Registers innerhalb des architekturisierten Neubenennungs-Blocks ersetzt. Das Freimachen des zweiten physischen Registers wird verhindert als Reaktion auf die Feststellung, dass die Nummer des zweiten physischen Registers ein zweites logisches Register innerhalb des architekturisierten Neubenennungs-Blocks darstellt.
  • Ein Prozessor wird betrachtet, der eine Abbildungseinheit und einen architekturisierten Neubenennungs-Block aufweist. Die Abbildungseinheit ist zum Zuweisen eines ersten physischen Registers zu einem Bestimmungs-Operanden einer Instruktions-Operation konfiguriert. Ferner ist die Abbildungseinheit zum Führen einer Frei-Liste konfiguriert, die angibt, welche physischen Register frei zur Zuweisung sind. Die Abbildungseinheit ist zur Auswahl des ersten physischen Registers aus der Frei-Liste konfiguriert. Gekoppelt mit dem Empfangen eines Hinweises, dass die Instruktions-Operation zurückgezogen wird und dass dem ersten physischen Register eine Nummer des ersten physischen Registers entspricht, ist der architekturisierte Neubenennungs-Block konfiguriert, eine Nummer eines zweiten physischen Registers bereitzustellen, die ein zweites physisches Register identifiziert, welches zuvor einem ersten logischen Register entsprach, das durch den Bestimmungs-Operanden auf den Hinweis des Zurückziehens der Instruktions-Operation hin identifiziert wurde. Der architekturisierte Neubenennungs- Block ist konfiguriert zum Erfassen der Nummer der ersten physischen Registers und zum Rückhalten der Nummer des zweiten physischen Registers als dem ersten logischen Register entsprechend auf den Hinweis hin, dass die Instruktions- Operation zurückgezogen wird. Des weiteren ist der architekturisierte Neubenennungs-Block weiter zur Feststellung konfiguriert, ob die Nummer des zweiten Registers zusätzlich dem zweiten logischen Register entspricht. Die Abbildungseinheit ist konfiguriert zum Verhindern des Hinzufügens der Nummer des zweiten physischen Registers zu der Frei-Liste, falls das zweite physische Register das zweite logische Register repräsentiert.
  • Ein Verfahren zum Handhaben physischer Register in einem Prozessor wird betrachtet. Ein erstes physisches Register wird einem Bestimmungs-Operanden einer Instruktions-operation zugewiesen. Der Bestimmungs-Operand identifiziert ein logisches Register. Die Instruktions-operation wird zurückgezogen. Auf das Zurückziehen der Instruktions-operation hin wird ein architekturisierter Neubenennungs-Block mit einer dem ersten physischen Register entsprechenden Nummer des ersten physischen Registers aktualisiert. Ebenso auf das Zurückziehen der Instruktions-operation hin wird die Nummer eines zweiten physischen Registers aus dem architekturisierten Neubenennungs-Block gelesen. Die Nummer des zweiten physischen Registers wird durch die Nummer des ersten physischen Registers bei der Darstellung des logischen Registers innerhalb des architekturisierten Neubenennungs-Blocks ersetzt. Das zweite physische Register wird freigemacht.
  • Ein Prozessor wird betrachtet. Der Prozessor weist eine Abbildungseinheit und einen architekturisierten Neubenennungs-Block auf. Die Abbildungseinheit ist zum Zuweisen eines ersten physischen Registers zu einem Bestimmungsoperanden einer Instruktions-operation konfiguriert und ist ferner zum Führen einer Frei-Liste konfiguriert, die angibt, welche physischen Register frei zur Zuweisung sind. Die Abbildungseinheit ist zur Auswahl des ersten physischen Registers aus der Frei-Liste konfiguriert. Gekoppelt mit dem Empfangen eines Hinweises, dass die Instruktions-operation zurückgezogen wird und dass dem ersten physischen Register eine Nummer des ersten physischen Registers entspricht, ist der architekturisierte Neubenennungs-Block konfiguriert, eine Nummer eines zweiten physischen Registers bereitzustellen, die ein zweites physisches Register identifiziert, welches zuvor einem ersten logischen Register entsprach, das durch den Bestimmungs-Operanden auf den Hinweis des Zurückziehens der Instruktions-Operation hin identifiziert wurde. Zusätzlich ist der architekturisierte Neubenennungs-Block konfiguriert zum Erfassen der Nummer der ersten physischen Registers und zum Rückhalten der Nummer des zweiten physischen Registers als dem ersten logischen Register entsprechend auf den Hinweis hin, dass die Instruktions-Operation zurückgezogen wird. Die Abbildungseinheit ist konfiguriert zum Hinzufügen der Nummer des zweiten physischen Registers zu der Frei-Liste.
  • Ein Computer-System wird betrachtet, das einen Prozessor und eine I/O- Einrichtung aufweist. Der Prozessor weist eine Abbildungseinheit und einen architekturisierten Neubenennungs-Block auf. Die Abbildungseinheit ist zum Zuweisen eines ersten physischen Registers zu einem Bestimmungs-Operanden einer Instruktions-Operation konfiguriert und ist ferner zum Führen einer Frei-Liste konfiguriert, die angibt, welche physischen Register frei zur Zuweisung sind. Die Abbildungseinheit ist zur Auswahl des ersten physischen Registers aus der Frei-Liste konfiguriert. Gekoppelt mit dem Empfangen eines Hinweises, dass die Instruktions-Operation zurückgezogen wird und dass dem ersten physischen Register eine Nummer des ersten physischen Registers entspricht, ist der architekturisierte Neubenennungs-Block konfiguriert, eine Nummer eines zweiten physischen Registers bereitzustellen, die ein zweites physisches Register identifiziert, welches zuvor einem ersten logischen Register entsprach, das durch den Bestimmungsoperanden auf den Hinweis des Zurückziehens der Instruktions-operation hin identifiziert wurde. Zusätzlich ist der architekturisierte Neubenennungs-Block konfiguriert zum Erfassen der Nummer der ersten physischen Registers und zum Rückhalten der Nummer des zweiten physischen Registers als dem ersten logischen Register entsprechend auf den Hinweis hin, dass die Instruktionsoperation zurückgezogen wird. Die Abbildungseinheit ist konfiguriert zum Hinzufügen der Nummer des zweiten physischen Registers zu der Frei-Liste. Mit dem Prozessor verbunden ist die I/O-Einrichtung konfiguriert zur Kommunikation zwischen dem Computer-System und einem anderen Computer-System, mit dem die I/O-Einrichtung verbunden ist.
  • Kurzbeschreibung der Zeichnungen
  • Weitere Gegenstände und Vorteile der Erfindung werden ersichtlich werden bei dem Studium der folgenden detaillierten Beschreibung bei der Bezugnahme auf die beigefügten Zeichnungen, in denen:
  • Fig. 1 ein Blockdiagramm eines Ausführungsbeispiels eines Prozessors ist.
  • Fig. 2 ein Blockdiagramm einer Abbildungseinheit, eines Abbildungssilos und eines architekturisierten Neubenennungs-Blocks wie in Fig. 1 gezeigt ist, wobei die gemeinsamen Verbindungen dazwischen entsprechend einem Ausführungsbeispiel des in Fig. 1 gezeigten Prozessors hervorgehoben werden.
  • Fig. 3 ein Blockdiagramm eines Ausführungsbeispiels einer in den Fign. l und 2 gezeigten Abbildungseinheit ist.
  • Fig. 4 ein Blockdiagramm eines Ausführungsbeispiels einer in Fig. 3 gezeigten Register-Abtastungs-Einheit ist.
  • Fig. 5 eine Tabelle darstellend eine Kodierung, welche für virtuelle Register- Nummern benutzt werden kann, ist.
  • Fig. 6 ein Blockdiagramm eines Bereichs eines Ausführungsbeispiels einer in Fig. 4 gezeigten Abtastungs-Einheit ist.
  • Fig. 7 ein Blockdiagramm eines weiteren Bereichs eines Ausführungsbeispiels einer in Fig. 4 gezeigten Abtastungs-Einheit ist.
  • Fig. 8 ein Blockdiagramm eines Ausführungsbeispiels einer in Fig. 3 gezeigten virtuellen/physischen Register-Abbildungseinheit ist.
  • Fig. 9 eine Tabelle darstellend Information, die in einem Ausführungsbeispiel eines in den Fig. 1 und 2 gezeigten Abbildungssilos ist, ist.
  • Fig. 10 ein Blockdiagramm darstellend einen beispielhaften Vorausschau- Register-Zustand für ein logisches Register ist.
  • Fig. 11 ein Flußdiagramm darstellend die Wiederherstellung des Vorausschau- Zustands gemäß einem Ausführungsbeispiel der in den Fig. 1, 2 und 3 gezeigten Abbildungseinheit ist.
  • Fig. 12 ein Blockdiagramm eines Ausführungsbeispiels eines Computer-Systems umfassend den in Fig. 1 gezeigten Prozessor ist.
  • Während die Erfindung empfänglich ist für zahlreiche Modifikationen und alternative Ausbildungen, werden besondere Ausführungsbeispiele davon beispielhaft in den Zeichnungen gezeigt und hier detailliert beschrieben. Es sollte jedoch verstanden werden, dass die Zeichnungen und die dazugehörende detaillierte Beschreibung nicht dazu bestimmt sind, die Erfindung auf die bestimmte offenbarte Form zu beschränken, vielmehr umfaßt die Erfindung alle Modifikationen, Äquivalente und Alternativen, die in den Geist und den Umfang der vorliegenden Erfindung fallen, wie sie in den beigefügten Ansprüchen definiert ist.
  • Detaillierte Beschreibung der Erfindung
  • Auf Fig. 1 verweisend wird ein Blockdiagramm eines Ausführungsbeispiels eines Prozessors 10 gezeigt. Weitere Ausführungsbeispiele sind möglich und betrachtbar. In dem Ausführungsbeispiel aus Fig. 1 enthält der Prozessor 10 eine Zeilenvorhersage 12, einen Instruktions-Cache (I-Cache) 14, eine Zuweisungseinheit 16, eine Verzweigungs-Geschichte-Tabelle 18, einen indirekten Adress-Cache 20, einen Rückkehr-Stapel 22, eine Dekodiereinheit 24, eine Fehlvorhersage- Dekodiereinheit 26, eine Mikrocode-Einheit 28, eine Abbildungseinheit 30, einen Abbildungssilo 32, einen architekturisierten Neubenennungs-Block 34, ein Paar von Instruktions-Warteschlangen 36A-36B, ein Paar von Register-Dateien 38A- 38B, ein Paar von Ausführungs-Kernen 40A-40B, eine Lade/Speicher-Einheit 42, einen Daten-Cache (D-Cache) 44, eine externe Interface-Einheit 46, eine PC- Silo-und- Umleitungs-Einheit 48 und einen Instruktions-TLB (ITB) 50. Die Zeilenvorhersage 12 ist angeschlossen an den ITB 50, die Fehlvorhersage- Dekodiereinheit 26, die Verzweigungs-Geschichte-Tabelle 18, den indirekten Adress-Cache 20, den Rückkehr-Stapel 22, den PC-Silo-und-Umleitungs-Block 48, die Zuweisungseinheit 16 und den I-Cache 14. Der I-Cache 14 ist mit der Zuweisungseinheit 16 verbunden. Die Zuweisungseinheit 16 ist ferner mit der Fehlvorhersage-Dekodiereinheit 26 und der Dekodiereinheit 24 verbunden. Die Dekodiereinheit 24 ist ferner mit der Mikrocode-Einheit 28 und der Abbildungseinheit 30 verbunden. Die Abbildungseinheit 30 ist angeschlossen an den Abbildungssilo 32, den architekturisierten Neubenennungs-Block 34, die Instruktions- Warteschlangen 36A-36B, die Lade/Speicher-Einheit 42, die Ausführungs-Kerne 40A-40B und den PC-Silo-und-Umleitungs-Block 48. Die Instruktions- Warteschlangen 36A-36B sind aneinander angeschlossen und an die entsprechenden Ausführungs-Kerne 40A-40B und Register-Dateien 38A-38B. Die Register-Dateien 38A-38B sind aneinander angeschlossen und an die entsprechenden Ausführungs-Kerne 40A-40B. Die Ausführungs-Kerne 40A-40B sind ferner verbunden mit der Lade/Speicher-Einheit 42, dem Daten-Cache 44 und der PC-Silo- und-Umleitungs-Einheit 48. Die Lade/Speicher-Einheit 42 ist mit der PC-Silo- und-Umleitungs-Einheit 48, dem D-Cache 44 und der externen Interface-Einheit 46 verbunden. Der D-Cache 44 ist mit der Register-Datei 38 verbunden und die externe Interface-Einheit 46 ist mit einem externen Interface 52 verbunden. Elemente, welche hier mit einem von einem Buchstaben gefolgten Bezugszeichen bezeichnet sind, werden zusammen nur mit dem Bezugszeichen allein bezeichnet. Zum Beispiel werden die Instruktions-Warteschlangen 36A-36B gemeinsam als Instruktions-Warteschlangen 36 bezeichnet.
  • In dem Ausführungsbeispiel von Fig. 1 verwendet der Prozessor 10 eine komplexe Instruktions-Satz-Berechnungs (CISC) Instruktions-Satz-Architektur mit variabler Bitlänge. Zum Beispiel kann der Prozessor 10 die x86 Instruktions-Satz- Architektur (auch als IA-32 bezeichnet) verwenden. Andere Ausführungsbeispiele können andere Instruktions-Satz-Architekturen verwenden, umfassend Instruktions-Satz-Architekturen mit fester Länge und reduzierte Instruktions-Satz- Berechnungs (RISC) Instruktions-Satz-Architekturen. Gewisse in Fig. 1 gezeigte Merkmale können in derartigen Architekturen ausgelassen werden.
  • Die Zeilenvorhersage 12 ist konfiguriert zum Erzeugen von Hol-Adressen für den I-Cache 14 und ist zusätzlich zum Bereitstellen von Information hinsichtlich einer Zeile von Instruktions-operationen an die Ausrichtungseinheit 16 konfiguriert. Im Allgemeinen speichert die Zeilenvorhersage 12 Zeilen von Instruktionsoperationen, die zuvor spekulativ von dem Prozessor 10 geholt wurden, und eine oder mehrere nächste Hol-Adressen, die jeder nach dem Holen der Zeile auszuwählenden Zeile entsprechen. In einem Ausführungsbeispiel ist die Zeilenvorhersage 12 zum Speichern von Einträgen mit 1K konfiguriert, wobei jeder eine Zeile von Instruktions-operationen definiert. Die Zeilenvorhersage 12 kann in mehrere Bänke unterteilt sein, zum Beispiel vier Bänke mit jeweils 256 Einträgen, um gleichzeitiges Lesen und Aktualisieren ohne doppelte Anschlüsse zu ermöglichen, falls gewünscht.
  • Die Zeilenvorhersage 12 stellt dem I-Cache 14 die nächste Hol-Adresse zum Holen der entsprechenden Instruktions-Bytes bereit. Der I-Cache 14 ist ein Hochgeschwindigkeits-Cachespeicher zum Speichern von Instruktions-Bytes. Gemäß einem Ausführungsbeispiel kann der I-Cache 14 beispielsweise eine 256 Kbyte große vierfach satz-assoziative Organisation unter Verwendung von 64 Byte Cache-Zeilen aufweisen. Jedoch kann jede Struktur des I-Cache geeignet sein. Zusätzlich wird die nächste Hol-Adresse an die Zeilenvorhersage 12 als eine Eingabe zur Hol-Information betreffend die entsprechende Zeile von Instruktions- Operationen zurückgeliefert. Die nächste Hol-Adresse kann als Reaktion auf von der PC-Silo-und-Umleitungs-Einheit 48 gemeldete Ausnahme-Zustände von einer durch den ITB 50 bereitgestellten Adresse ersetzt werden.
  • Die von der Zeilenvorhersage gelieferte nächste Hol-Adresse kann die Adresse sein, die der letzten Instruktion innerhalb der Zeile folgt (falls die Zeile mit einer nicht verzweigenden Instruktion endet). Alternativ kann die nächste Hol-Adresse eine Ziel-Adresse einer die Zeile beendenden Verzweigungs-instruktion sein. Gemäß einer weiteren Alternative kann die Zeile durch eine Rückkehr-Instruktion beendet sein, in welchem Fall die nächste Hol-Adresse von dem Rückkehr-Stapel 22 gezogen wird.
  • Als Antwort auf eine Hol-Adresse gibt die Zeilenvorhersage 12 Information hinsichtlich einer Zeile von Instruktions-operationen, die an der Hol-Adresse beginnt, an die Zuweisungseinheit 16 aus. Die Zuweisungseinheit 16 empfängt die der Hol-Adresse entsprechenden Instruktions-Bytes von dem I-Cache 14 und unterteilt die Instruktions-Bytes entsprechend der bereitgestellten Information zu der Instruktions-operation in einen Satz von Ausgabepositionen. Genauer gesagt stellt die Zeilenvorhersage 12 für jede Instruktion innerhalb der Instruktionsoperationen der Zeile einen Verschiebungsbetrag und eine Abbildung der Instruktionen für den Satz der Instruktions-operationen, welche die Zeile enthalten, bereit. Eine Instruktion kann Mehrfach-Instruktions-Operationen entsprechen und daher kann der dieser Instruktion entsprechende Verschiebungsbetrag zur Auswahl von Instruktions-Bytes in mehrere Ausgabepositionen benutzt werden. Eine Ausgabeposition wird für jede mögliche Instruktions-operation innerhalb der Zeile bereitgestellt. In einem Ausführungsbeispiel kann eine Zeile von Instruktions-operationen bis zu 8 Instruktions-operationen entsprechend bis zu 6 Instruktionen enthalten. Im Allgemeinen bezeichnet eine Zeile von Instruktions-Operationen, wie hier verwendet, eine Gruppe von Instruktions-operationen, die gemeinsam an die Dekodiereinheit 24 ausgegeben wird. Die Zeile von Instruktions-Operationen rückt als eine Einheit durch die Pipeline des Mikroprozessors 10 zu den Instruktions-Warteschlangen 36 vor. Auf die Speicherung in den Instruktions-Warteschlangen 36 können die einzelnen Instruktions-operationen in beliebiger Reihenfolge ausgeführt werden.
  • Die Ausgabepositionen innerhalb der Dekodiereinheit 24 (und die darauffolgenden Stufen der Pipeline bis zu den Instruktions-Warteschlangen 36) definieren die Programm-Reihenfolge der Instruktions-operationen innerhalb der Zeile für die Hardware innerhalb dieser Stufen der Pipeline. Eine von der Zuweisungseinheit 16 einer Ausgabeposition zugewiesene Instruktions-operation verbleibt in dieser Ausgabeposition bis sie innerhalb einer Instruktions-Warteschlange 36A- 36B gespeichert ist. Entsprechend kann eine erste Ausgabeposition als vor einer zweiten Ausgabeposition seiend bezeichnet werden, wenn eine Instruktionsoperation innerhalb der ersten Ausgabeposition vor einer Instruktions-operation ist, die gleichzeitig in der zweiten Ausgabeposition in der Programm-Reihenfolge ist. Ähnlich kann eine erste Ausgabeposition als nachfolgend auf eine zweite Ausgabeposition bezeichnet werden, wenn eine Instruktions-operation innerhalb der ersten Ausgabeposition nachfolgend auf eine Instruktions-Operation ist, die gleichzeitig in der zweiten Ausgabeposition in der Programm-Reihenfolge ist. Instruktions-Operationen innerhalb der Ausgabepositionen können auch als vor oder nachfolgend zu einer anderen Instruktion innerhalb der Zeile bezeichnet werden.
  • Eine Instruktions-Operation (oder ROP) ist, wie hier benutzt, eine Operation, wobei eine Ausführungseinheit innerhalb der Ausführungs-Kerne 40A-40B zur Ausführung dieser als eine einzelne Einheit konfiguriert ist. Einfache Instruktionen können einer Einfach-Instruktions-Operation entsprechen, während komplexere Instruktionen Mehrfach-Instruktions-Operationen entsprechen können. Gewisse dieser komplexeren Instruktionen können in der Mikrocode-Einheit 28 als Mikrocode-Routinen implementiert sein. Ferner können nicht-CISC Instruktions-Sätze verwendende Ausführungsbeispiele eine Einfach-Instruktions-Operation für jede Instruktion verwenden (d. h. Instruktion und Instruktions-Operation können in derartigen Ausführungsbeispielen ein Synonym sein). In einem bestimmten Ausführungsbeispiel kann eine Zeile bis zu acht Instruktions-operationen entsprechend bis zu 6 Instruktionen aufweisen. Zusätzlich kann das bestimmten Ausführungsbeispiel Zeilen bei weniger als 6 Instruktion und/oder 8 Instruktionsoperationen beenden, wenn eine Verzweigungsmstruktion entdeckt wurde. Zusätzliche Einschränkungen hinsichtlich der Instruktions-operationen der Zeile können wie gewünscht verwendet werden.
  • Die von der Zeilenvorhersage 12 erzeugte nächste Hol-Adresse wird an die Verzweigungs-Geschichte-Tabelle 18, den indirekten Adress-Cache 20 und den Rückkehr-Stapel 22 weitergeführt. Die Verzweigungs-Geschichte-Tabelle 18 stellt eine Geschichte der Verzweigung für eine bedingte Verzweigungsinstruktion bereit, welche die von der nächsten Hol-Adresse identifizierte Zeile beenden könnte. Die Zeilenvorhersage 12 kann die von der Verzweigungs-Geschichte-Tabelle 18 gelieferte Vorhersage benutzen, um festzustellen, ob eine die Zeile beendende bedingte Verzweigungsinstruktion vorhergesagt genommen oder nicht genommen werden sollte. In einem Ausführungsbeispiel kann die Zeilenvorhersage 12 eine Verzweigungsinstruktion, die zur Auswahl genommen oder nicht genommen benutzt wird, speichern und wird die Verzweigungs-Geschichte-Tabelle 18 zur Bereitstellung einer präziseren Vorhersage benutzt, welche die Vorhersage der Zeilenvorhersage streichen kann und veranlassen kann, dass eine andere nächste Hol-Adresse ausgewählt wird. Der indirekte Adress-Cache 20 wird zur Vorhersage von indirekten Verzweigungs-Ziel-Adressen, welche häufig wechseln, benutzt. Die Zeilenvorhersage 12 kann eine zuvor erzeugte indirekte Ziel- Adresse als eine nächste Hol-Adresse speichern. Der indirekte Adress-Cache 20 kann die von der Zeilenvorhersage 12 gelieferte nächste Hol-Adresse überstimmen, wenn die entsprechende Zeile von einer indirekten Verzweigungsinstruktion beendet wird. Ferner kann die auf die letzte Instruktion innerhalb einer Zeile von Instruktions-operationen folgende Adresse auf den Rückkehr-Stapel 22 geschoben werden, wenn die Zeile von einer Instruktion zum Aufruf einer Unterroutine beendet wird. Der Rückkehr-Stapel 22 gibt die an seinem oberen Ende gespeicherte Adresse an die Zeilenvorhersage 12 als eine potentielle nächste Hol- Adresse für Zeilen aus, die von einer Rückkehr-Instruktion beendet werden.
  • Zusätzlich zum Bereitstellen von Informationen zu der nächsten Hol-Adresse und zu den Instruktions-operationen an die oben erwähnten Blöcke ist die Zeilenvorhersage 12 konfiguriert zur Bereitstellung von Informationen zu der nächsten Hol-Adresse und zu den Instruktions-operationen an die PC-Silo-und- Umleitungs-Einheit 48. Die PC-Silo-und-Umleitungs-Einheit 48 speichert die Informationen zu der Hol-Adresse und der Zeile und ist verantwortlich sowohl für die Umleitung des Holens der Instruktion auf Ausnahmen hin als auch für das ordnungsgemäße Zurückziehen von Instruktionen. Die PC-Silo-und-Umleitungs- Einheit 48 kann einen Ringpuffer zum Speichern von Informationen zu der Hol- Adresse und zu den Instruktions-operationen enthalten, die mehreren Zeilen von Instruktions-operationen entsprechen, welche innerhalb des Prozessors 10 ausstehen können. Nach dem Zurückziehen einer Zeile von Instruktionen kann die PC-Silo-und-Umleitungs-Einheit 48 die Verzweigungs-Geschichte-Tabelle 18 und den indirekten Adress-Cache 20 entsprechend der Ausführung einer bedingten Verzweigung bzw. einer indirekten Verzweigung aktualisieren. Nach dem Verarbeiten einer Ausnahme kann die PC-Silo-und-Umleitungs-Einheit 48 Einträge aus dem Rückkehr-Stapel 22 entfernen, welche der die Ausnahme verursachenden Instruktion folgen. Zusätzlich leitet die PC-Silo-und-Umleitungs-Einheit 48 einen Hinweis der die Ausnahme verursachenden Instruktion an die Abbildungseinheit 30, die Instruktions-Warteschlangen 36 und die Lade/Speicher-Einheit 42 weiter, sodass diese Einheiten Instruktionen streichen können, welche nachfolgend zu der die Ausnahme verursachenden Instruktion sind, und entsprechend einen spekulativen Zustand wiederherstellen können.
  • In einem Ausführungsbeispiel weist die PC-Silo-und-Umleitungs-Einheit 48 jeder Instruktions-operation eine Sequenz-Nummer (R#) zur Identifizierung der Reihenfolge der innerhalb des Prozessors 10 ausstehenden Instruktions-operationen zu. Die PC-Silo-und-Umleitungs-Einheit 48 kann jeder möglichen Instruktionsoperation innerhalb einer Zeile R#s zuweisen. Falls eine Zeile weniger als die maximale Anzahl an Instruktions-operationen enthält, werden einige der zugewiesenen R#s für diese Zeile nicht benutzt. Jedoch kann die PC-Silo-und- Umleitungs-Einheit 48 konfiguriert sein zur Zuweisung des nächsten Satzes von R#s an die nächste Zeile von Instruktions-operationen und daher verbleiben die zugewiesenen aber nicht benutzten R#s unbenutzt bis die entsprechende Zeile der Instruktions-operationen zurückgezogen wird. Auf diese Weise kann ein Teil der einer bestimmten Zeile zugewiesenen R#s zur Identifizierung der Zeile innerhalb des Prozessors 10 benutzt werden. In einem Ausführungsbeispiel kann ein Maximum von 8 ROPs einer Zeile zugeteilt werden. Entsprechend kann dem ersten ROP innerhalb jeder Zeile ein R# zugewiesen werden, das ein Vielfaches von 8 ist. Unbenutzte R#s werden entsprechend automatisch übersprungen.
  • Die vorstehende Diskussion hat die Zeilenvorhersage 12 nächste Adressen vorhersagend und Information über Instruktions-operationen für Zeilen von Instruktions-Operationen bereitstellend beschrieben. Diese Operation tritt so lange auf wie jede Hol-Adresse in der Zeilenvorhersage 12 trifft. Auf das Feststellen eines Fehltreffers in der Zeilenvorhersage 12 leitet die Zuweisungseinheit 16 die entsprechenden Instruktions-Bytes von dem I-Cache 14 an die Vorhersage- Fehltreffer-Dekodiereinheit 26 weiter. Die Vorhersage-Fehltreffer-Dekodiereinheit 26 dekodiert die an dem Versatz, der von der fehlgetroffenen Hol-Adresse angegeben wird, beginnenden Instruktionen und erzeugt eine Zeile von Information zu der Instruktions-operation und eine nächste Hol-Adresse. Die Vorhersage- Fehltreffer-Dekodiereinheit 26 erzwingt jegliche Begrenzungen auf eine Zeile von Instruktions-operationen für die der Prozessor 10 entworfen ist (zum Beispiel maximale Anzahl von Instruktions-operationen, maximale Anzahl von Instruktionen, Abbruch bei Verzweigungsinstruktionen usw.). Nach Beendigung des Dekodierens einer Zeile, stellt die Vorhersage-Fehltreffer-Dekodiereinheit 26 die Information der Zeilenvorhersage 12 zum Speichern bereit. Es wird festgestellt, dass die Vorhersage-Fehltreffer-Dekodiereinheit 26 zur Ausgabe von Instruktionen konfiguriert sein kann während sie dekodiert werden. Alternativ kann die Vorhersage-Fehltreffer-Dekodiereinheit 26 die Information der Zeile der Instruktion dekodieren und der Zeilenvorhersage 12 zum Speichern bereitzustellen. Nachfolgend kann die fehlgetroffene Hol-Adresse nochmals in der Zeilenvorhersage 12 versucht werden und ein Treffer kann festgestellt werden. Ferner kann ein Treffer in der Zeilenvorhersage 12 festgestellt werden und ein Fehltreffer kann in dem I-Cache auftreten. Die entsprechenden Instruktions-Bytes können durch die externe Interface-Einheit 46 geholt und in dem I-Cache 14 gespeichert werden.
  • In einem Ausführungsbeispiel verwenden die Zeilenvorhersage 12 und der I- Cache 14 eine physische Adressierung. Jedoch wird der PC-Silo-und-Umleitungs- Einheit 48 auf das Feststellen einer Ausnahme eine logische (oder virtuelle) Adresse zugeführt. Entsprechend werden die umgeleiteten Adressen von dem ITB 50 zur Überreichung an die Zeilenvorhersage 12 übersetzt. Zusätzlich behält die PC-Silo-und-Umleitungs-Einheit 48 einen virtuellen Vorausschau-PC-Wert für die Benutzung von PC relativen Berechnungen bei, wie beispielsweise relative Verzweigungs-Ziel-Adressen. Der jeder Zeile entsprechende virtuelle Vorausschau-PC wird von dem ITB 50 übersetzt, um sicherzustellen, dass die entsprechende physische Adresse mit der von der Zeilenvorhersage 12 erzeugten physischen Hol-Adresse übereinstimmt. Falls eine Fehlübereinstimmung auftritt wird die Zeilenvorhersage 12 mit der korrekten physischen Adresse aktualisiert und die korrekten Instruktionen werden geholt. Die PC-Silo-und-Umleitungs-Einheit 48 handhabt ferner mit dem Holen jenseits von Schutzgrenzen usw. zusammenhängende Ausnahmen. Die PC-Silo-und-Umleitungs-Einheit 48 behält auch einen Zurückziehungs-PC-Wert bei, der die Adresse der zuletzt zurückgezogenen Instruktion anzeigt.
  • Die Dekodiereinheit 24 ist zum Empfangen von Instruktions-operationen von der Zuweisungseinheit 16 in einer Vielzahl von Ausgabepositionen, wie oben beschrieben, konfiguriert. Die Dekodiereinheit 24 dekodiert die jeder Ausgabeposition zugewiesenen Instruktions-Bytes parallel (zusammen mit einem Hinweis, welche der den Instruktions-Bytes entsprechende Instruktions-operation in einer bestimmten Ausgabeposition zu erzeugen ist). Die Dekodiereinheit 24 identifiziert Ursprungs- und Bestimmungs-Operanden für jede Instruktions-Operation und erzeugt die von den Instruktions-Kernen 40A-40B verwendete Instruktions- Operations-Kodierung. Die Dekodiereinheit 24 ist auch zum Holen von Mikrocode-Routinen von der Mikrocode-Einheit 28 für Instruktionen, welche in einem Mikrocode implementiert sind, konfiguriert.
  • Gemäß einem bestimmten Ausführungsbeispiel werden die folgenden Instruktions-Operationen von dem Prozessor 10 unterstützt: Ganzzahl, Gleitkomma- Addition (umfassend Multimedia), Gleitkomma-Multiplikation (umfassend Multimedia), Verzweigung, Laden, Erzeugung von Speicher-Adressen und Speichern von Daten. Jede Instruktions-Operation kann bis zu 2 Ursprungs-Register- Operanden und einen Bestimmungs-Register-Operanden verwenden. Gemäß einem bestimmten Ausführungsbeispiel kann ein einzelner Bestimmungs-Register- Operand Ganzzahl-ROPs zugewiesen werden, um sowohl das Ganzzahl-Ergebnis als auch eine Aktualisierung eines Zustandskodes (oder Flaggen) zu speichern. Die entsprechenden logischen Register werden beide die entsprechende PR# nach dem Zurückziehen der Ganzzahl-Operation empfangen. Gewisse Instruktionen können zwei Instruktions-operationen desselben Typs erzeugen, um zwei Bestimmungs-Register zu aktualisieren (zum Beispiel POP, welches die ESP und das angegebene Bestimmungs-Register aktualisiert).
  • Die dekodierten Instruktions-operationen und die Ursprungs- und Bestimmungs- Register-Nummern werden der Abbildungseinheit 30 bereitgestellt. Die Abbildungseinheit 30 ist zur Durchführung der Register-Neubenennung durch das Zuweisen von physischen Register-Nummern (PR#s) an jeden Bestimmungs- Register-Operanden und Ursprungs-Register-Operanden jeder Instruktionsoperation konfiguriert. Die physische Register-Nummer identifiziert Register innerhalb der Register-Dateien 38A-38B. Zusätzlich weist die Abbildungseinheit 30 jeder Instruktions-Operation eine Warteschlangen-Nummer (IQ#) zu, welche die Stelle innerhalb der Instruktions-Warteschlangen 36A-36B identifiziert, die zum Speichern der Instruktions-Operation zugewiesen ist. Die Abbildungseinheit 30 stellt ferner einen Hinweis auf die Abhängigkeiten für jede Instruktions-Operation bereit, indem Warteschlangen-Nummern für die Instruktionen vergeben werden, die jede einem Ursprungs-operanden einer Instruktions-Operation zugewiesene physische Register-Nummer aktualisieren. Die Abbildungseinheit 30 aktualisiert den Abbildungssilo 32 mit den physischen Register-Nummern und der Instruktion für die Nummern, welche jeder Instruktions-Operation zugewiesen sind (genauso wie die entsprechenden logischen Register-Nummern). Ferner kann der Abbildungssilo 32 konfiguriert sein, einen Vorausschau-Zustand, der den logischen Registern vor der Zeile von Instruktionen entspricht, und einen R#, der die Zeile von Instruktionen im Hinblick auf den PC-Silo identifiziert, zu speichern. Ähnlich zu dem oben beschriebenen PC-Silo kann der Abbildungssilo 32 einen zirkulären Puffer von Einträgen aufweisen. Jeder Eintrag kann zum Speichern der einer Zeile von Instruktions-operationen entsprechenden Information konfiguriert sein.
  • Die Abbildungseinheit 30 und der Abbildungssilo 32 sind ferner zum Empfangen eines Rückzugs-Hinweises von dem PC-Silo 48 konfiguriert. Auf das Zurückziehen einer Zeile von Instruktions-operationen leitet der Abbildungssilo 32 die der Zeile zugewiesenen Bestimmungs-Physisch-Register-Nummern und die entsprechenden Logisch-Register-Nummern zum Speichern an den architekturisierten Neubenennungs-Block 34 weiter. Der architekturisierte Neubenennungs-Block 34 speichert eine jedem logischen Register entsprechende physische Register- Nummer, welche den übergebenden Zustand des Registers für jedes logische Register darstellt. Die von dem architekturisierten Neubenennungs-Block 34 auf die Aktualisierung der entsprechenden logischen Register mit einer neuen physischen Register-Nummer hin ersetzten physischen Register-Nummern werden an die Frei-Liste der physischen Register-Nummern zur Zuweisung an nachfolgende Instruktionen zurückgegeben. In einem Ausführungsbeispiel werden, vor dem Zurückgeben einer physischen Register-Nummer an die Frei-Liste, die physischen Register-Nummern mit den verbleibenden physischen Register-Nummern innerhalb des architekturisierten Neubenennungs-Blocks 34 verglichen. Falls eine physische Register-Nummer nach der Ersetzung immer noch innerhalb des architekturisierten Neubenennungs-Blocks 34 vorhanden ist, wird die physische Register- Nummer nicht zu der Frei-Liste hinzugefügt. Ein derartiges Ausführungsbeispiel kann in Fällen verwendet werden, in denen die gleiche physische Register- Nummer zum Speichern von mehr als einem Ergebnis einer Instruktion benutzt wird. Beispielsweise kann ein die x86 Instruktions-Satz-Architektur verwendendes Ausführungsbeispiel physische Register bereitstellen, die groß genug zum Speichern von Gleitkomma-Operanden sind. Auf diese Weise kann jedes physische Register zum Speichern jeglicher Art von Operanden verwendet werden. Jedoch nutzen Ganzzahl-Operanden und Bedingungscode-Operanden den Platz innerhalb eines gegebenen physischen Registers nicht voll aus. In einem derartigen Ausführungsbeispiel kann der Prozessor 10 ein einzelnes physisches Register anweisen, sowohl das Ganzzahl-Ergebnis als auch ein Bedingungscode-Ergebnis einer Instruktion zu speichern. Ein darauffolgendes Zurückziehen einer Instruktion, welche das einem physischen Register entsprechende Bedingungscode- Ergebnis überschreibt, vermag nicht, das gleiche Ganzzahl-Register zu aktualisieren, und daher kann das physische Register auf die Übergabe eines neuen Bedingungscode-Ergebnisses nicht freigemacht werden. Ähnlich vermag ein nachfolgendes Zurückziehen einer Instruktion, welche das einem physischen Register entsprechende Ganzzahl-Register aktualisiert, nicht, das Bedingungscode- Register zu aktualisieren, und daher kann das physische Register auf die Übergabe eines neuen Ganzzahl-Ergebnisses nicht freigemacht werden.
  • Darüber hinaus sind die Abbildungseinheit 30 und der Abbildungssilo 32 ferner zum Empfangen von Ausnahme-Hinweisen von dem PC-Silo 48 konfiguriert. Zeilen von Instruktions-operationen, die der die Ausnahme verursachenden Instruktions-Operation enthaltenden Zeile folgen, werden innerhalb des Abbildungssilos 32 als ungültig markiert. Die den darauffolgenden Zeilen von Instruktionsoperationen entsprechenden physischen Register-Nummern werden auf die Auswahl der entsprechenden Zeilen für das Zurückziehen freigemacht (und der architekturisierte Neubenennungs-Block 34 wird nicht mit den ungültig gemachten Bestimmungsregistern aktualisiert). Zusätzlich wird der Zustand des Vorausschau-Registers, der von der Abbildungseinheit 30 aufrechterhalten wurde, zu dem der die Ausnahme verursachenden Instruktion entsprechenden Zustand des Vorausschau-Registers wiederhergestellt.
  • Die Zeile von Instruktions-operationen, die Ursprungs-Physisch-Register- Nummern, die Ursprungs-Warteschlangen-Nummern und die Bestimmungs- Physisch-Register-Nummern werden in den Instruktions-Warteschlangen 36A- 36B entsprechend den von der Abbildungseinheit 30 zugewiesenen Warteschlangen-Nummern gespeichert. Gemäß einem Ausführungsbeispiel sind die Instruktions-Warteschlangen 36A-36B symmetrisch und können jegliche Instruktionen speichern. Ferner können Abhängigkeiten für eine bestimmte Instruktionsoperation auftreten im Hinblick auf andere Instruktions-operationen, welche in einer von beiden Instruktions-Warteschlangen gespeichert sind. Die Abbildungseinheit 30 kann beispielsweise eine Zeile von Instruktions-operationen in eine der Instruktions-Warteschlangen 36A-36B speichern und eine darauffolgende Zeile von Instruktions-operationen in die andere der Instruktions- Warteschlangen 36A-36B speichern. Eine Instruktions-operation verbleibt in der Instruktions-Warteschlange 36A-36B zumindest bis die vorherigen Instruktionsoperationen, von denen die Instruktions-operation abhängig ist, ausgeführt werden und läßt die Instruktions-Warteschlangen 36A-36B aktualisieren (und die Instruktions-Operation wird für die Ausführung eingetragen). In einem Ausführungsbeispiel verbleiben die Instruktions-operationen bis zur Zurückziehung in den Instruktions-Warteschlangen 36A-36B.
  • Die Instruktions-Warteschlangen 36A-36B bestimmen, auf das Eintragen einer bestimmten Instruktions-Operation zur Ausführung hin, mit welcher Taktfrequenz diese bestimmte Instruktions-Operation die Register-Dateien 38A-38B aktualisieren wird. Verschiedene Ausführungs-Einheiten innerhalb der Ausführungs- Kerne 40A-40B können unterschiedliche Anzahlen von Stufen der Pipeline (und damit unterschiedliche Latenzzeiten) verwenden. Ferner können gewisse Instruktionen innerhalb einer Pipeline höhere Latenzzeiten als andere erfahren. Entsprechend wird ein Countdown erzeugt, der die Latenzzeit für die bestimmte Instruktions-Operation mißt (in Vielfachen von Taktzyklen). Die Instruktions- Warteschlangen 36A-36B warten die angegebene Anzahl von Taktzyklen ab, bis die Aktualisierung stattfindet und zeigen dann an, dass die Instruktionsoperationen, die von der bestimmten Instruktions-operation abhängen, vorbereitet werden können. Jede Instruktions-Warteschlange 36A-36B behält die Countdowns für Instruktions-operationen innerhalb dieser Instruktions- Warteschlange bei und erlaubt es intern abhängigen Instruktions-operationen vorbereitet zu werden, wenn der Countdown abgelaufen ist. Zusätzlich stellt die Instruktions-Warteschlange auf das Ablaufen des Countdowns Hinweise an die andere Instruktions-Warteschlange bereit. Nachfolgend kann die andere Instruktions-Warteschlange abhängige Instruktions-operationen vorbereiten. Diese verzögerte Übertragung von Abschlüssen von Instruktions-operationen an die andere Instruktions-Warteschlange erlaubt es den Register-Dateien 38A-38B von einem der Ausführungs-Kerne 40A-40B bereitgestellte Ergebnisse an die andere Register-Datei weiter zu leiten. Jede der Register-Dateien 38A-38B implementiert den von dem Prozessor 10 verwendeten Satz von physischen Registern und wird von einem der Ausführungs-Kerne 40A-40B aktualisiert. Die Aktualisierungen werden dann an die andere Register-Datei weiter geleitet. Es ist festzustellen, dass die Instruktions-Warteschlangen 36A-36B eine Instruktion vorbereiten können, sobald ihre Abhängigkeiten befriedigt worden sind (d. h. außer-der-Reihe im Hinblick auf die Reihenfolge innerhalb der Warteschlange).
  • Von der Instruktions-Warteschlange 36A ausgegebene Instruktions-operationen lesen Ursprungs-operanden entsprechend den Ursprungs-Physisch-Register- Nummern aus der Register-Datei 38A ein und werden zur Ausführung an den Ausführungs-Kern 40A weiter geleitet. Der Ausführungs-Kern 40A führt die Instruktions-Operation aus und aktualisiert das dem Ziel innerhalb der Register- Datei 38A zugewiesene physische Register. Einige Instruktions-operationen haben keine Bestimmungs-Register und der Ausführungs-Kern 40A aktualisiert in diesem Fall kein Ursprungs-Physisch-Register. Entsprechend meldet der Ausführungs-Kern 40A die R# der Instruktions-operation Ausnahme-Information bezüglich der Instruktions-operation (wenn überhaupt vorhanden) an die PC-Silo und-Umleitungs-Einheit 48. Die Instruktions-Warteschlange 36B, die Register- Datei 38B und der Ausführungs-Kern 40B können in ähnlicher Weise arbeiten.
  • In einem Ausführungsbeispiel sind der Ausführungs-Kern 40A und der Ausführungs-Kern 40B symmetrisch. Jeder Ausführungs-Kern 40 kann beispielsweise eine Gleitkomma-Additions-Einheit, eine Gleitkomma-Multiplikations-Einheit, zwei Ganzzahl-Einheiten, eine Verzweigungs-Einheit, eine Lade-Adressen-Erzeugungs- Einheit, eine Speicher-Adressen-Erzeugungs-Einheit und eine Speicher-Daten- Einheit umfassen. Andere Konfigurationen von Ausführungseinheiten sind möglich.
  • Unter den Instruktions-operationen, welche keine Bestimmungs-Register haben, sind Speicher-Adressen-Erzeugungen, Speicher-Daten-Operationen und Verzweigungs-Operationen. Die Speicher-Adressen/Speicher-Daten-Operationen stellen der Lade/Speicher-Einheit 42 Ergebnisse bereit. Die Lade/Speicher-Einheit 42 stellt eine Schnittstelle zu dem D-Cache 44 zur Durchführung von Speicher- Daten-Operationen bereit. Die Ausführungs-Kerne 40A-40B führen Lade-ROPs und Speicher-Adressen-ROPs zur Erzeugung von Lade- beziehungsweise Speicher-Adressen aus, in Abhängigkeit von den Adress-Operanden der Instruktionen. Genauer gesagt können die Lade-Adressen und die Speicher-Adressen dem D-Cache 44 auf die Erzeugung dieser durch die Ausführungs-Kerne 40A-40B übergeben werden (direkt über die Verbindungen zwischen den Ausführungs- Kernen 40A-40B und dem D-Cache 44). Lade-Adressen, welche den D-Cache 44 treffen, resultieren in von dem D-Cache 44 zu den Register-Dateien 38 übertragenen Daten. Auf der anderen Seite werden Speicher-Adressen, welche treffen, einem Eintrag einer Speicher-Warteschlange zugeordnet. Nachfolgend wird das Speicher-Datum von einer Speicher-Daten-Instruktions-Operation bereitgestellt (welche benutzt wird, um das Speicher-Datum von den Register-Dateien 38A- 38B zu der Lade/Speicher-Einheit 42 zu leiten). Auf das Zurückziehen der Speicher-Instruktion wird das Datum in dem D-Cache 44 gespeichert. Zusätzlich kann die Lade/Speicher-Einheit 42 einen Lade/Speicher-Puffer zum Speichern von Lade/Speicher-Adressen, welche den D-Cache 44 für nachfolgende Cache- Auffüllungen (über das externe Interface 46) fehltreffen, und zum erneuten Versuchen der fehl getroffenen Lade/Speicher-Operation haben. Die Lade/Speicher- Einheit 42 ist ferner zum Handhaben von Lade/Speicher-Speicherabhängigkeiten konfiguriert.
  • Nun Fig. 2 zuwendend wird ein Blockdiagramm eines Ausführungsbeispiels der Abbildungseinheit 30, des Abbildungssilos 32 und des architekturisierten Neubenennungs-Blocks 34 zur Herausstellung der Verbindungen dazwischen gemäß einem Ausführungsbeispiel des Prozessors 10 gezeigt. Weitere Ausführungsbeispiele sind möglich und beabsichtigt, die zusätzliche, ersetzende oder weniger Verbindungen, wie gewünscht, verwenden.
  • Die Dekodiereinheit 24 ist an einen ROP-Informations-Bus 60 angeschlossen, welcher ferner sowohl an die Abbildungseinheit 30 als auch an den Abbildungssilo 32 angeschlossen ist. Information hinsichtlich einer Zeile von Instruktionsoperationen (oder Zeile von ROPs) wird von der Dekodiereinheit 24 auf den ROP- Informations-Bus 60 bereitgestellt. Für jede ROP innerhalb der Zeile stellt die Dekodiereinheit 24 mindestens das folgende bereit: einen gültigen Hinweis, einen Hinweis, ob die ROP ein Bestimmungs-Register schreibt, ein R#, eine logische Bestimmungs-Register-Nummer und logische Ursprungs-Register-Nummern (bis zu zwei). Die Abbildungseinheit 30 weist jeder ROP eine Bestimmungs-IQ# und jeder ROP, welche ein Bestimmungs-Register schreibt, eine Bestimmungs- RQ# zu. Die Abbildungseinheit 30 stellt die zugewiesenen PR# und IQ# dem Abbildungssilo 32 auf einem Bestimmungs-PR#/IQ#-Bus 62 bereit. Zusätzlich stellt die Abbildungseinheit 30 dem Abbildungssilo 32 auf einem Vorausschau-Register- Zustands-Bus 64 einen aktuellen Vorausschau-Register-Zustand bereit. Im Allgemeinen bezeichnet der Ausdruck "Vorausschau-Register-Zustand" die Identifizierung des Zustands der logischen Register (d. h. der darin gespeicherten Werte) zu einem bestimmten Punkt in der Ausführung einer Programm-Sequenz (d. h. nachfolgend zur Ausführung jeder Instruktion vor dem bestimmten Punkt in der Programm-Sequenz und vor der Ausführung jeder Instruktion nachfolgend dem bestimmten Punkt in der Programm-Sequenz). Der aktuelle Vorausschau- Register-Zustand identifiziert den Satz der physischen Register, welche den logischen Registern vor der von der Abbildungseinheit 30 zu bearbeitenden Zeile von ROPs entspricht. In anderen Worten speichert der aktuelle Vorausschau-Register- Zustand die physische Register-Nummer, die jedem logischen Register entspricht. Ferner umfaßt in dem vorliegenden Ausführungsbeispiel der aktuelle Vorausschau-Register-Zustand die IQ# der Instruktion, welche das identifizierte physische Register aktualisiert, und ein Gültig-Bit, das anzeigt, ob die IQ# immer noch gültig ist oder nicht (d. h. die Instruktion ist noch nicht zurückgezogen worden). Der Abbildungssilo 32 weist für die Zeile der ROPs einen Eintrag zu und speichert den aktuellen Vorausschau-Register-Zustand und weist PR#s und IQ#s zu, die von der Abbildungseinheit 30 bereitgestellt werden. Ferner kann der Abbildungssilo 30 erfassen, welche ROPs gültig sind, welche ROPs logische Register aktualisieren und welche logischen Register von diesen ROPs von dem ROP- Informations-Bus 60 aktualisiert werden. Ein beispielhafter Eintrag des Abbildungssilos ist unten dargestellt (Fig. 9).
  • Im Allgemeinen wird ein "Silo" hier als eine Struktur zum Speichern von Information entsprechend einer Instruktion, einer Instruktions-operation oder einer Zeile von Instruktions-operationen bezeichnet. Der Silo behält die Informationen in der Reihenfolge des Programms und die Information bewegt sich logisch von dem oberen Ende des Silos (oder dem Schluß) zu dem unteren Ende (oder dem Kopf) des Silos, sowie Instruktionen in der Reihenfolge des Programms zurückgezogen werden (in der Abwesenheit von Ausnahmebedingungen). So wie es hier verwendet wird, wird eine Instruktion zurückgezogen, wenn das Ergebnis dieser Instruktion dem architekturisierten Zustand übergeben wird (d. h. durch das Erlauben der Aktualisierung des architekturisierten Neubenennungs-Blocks 34 mit der physischen Register-Nummer, die dem Ziel der Instruktion zugewiesen ist, oder durch das Erlauben der Aktualisierung des D-Caches 44 mit Speicher-Daten, die der Instruktion entsprechen).
  • Der Abbildungssilo 32 ist verbunden, um ein Rückzugs-Gültig-Signal auf einer Rückzugs-Gültig-Leitung 66 zu empfangen und einen Ausnahme-Gültig-Hinweis und eine R# auf einem Ausnahme-Informations-Bus 68. Die Rückzugs-Gültig- Leitung 66 und der Ausnahme-Informations-Bus 68 sind mit dem PC-Silo 48 verbunden. Als Antwort auf ein ausgegebenes Rückzugs-Gültig-Signal stellt der Abbildungssilo 32 dem architekturisierten Neubenennungs-Block 34 auf einem Rückzugs-Register/PR#-Bus 70 Rückzugs-Register-Information von dem Eintrag an dem oberen Ende des Silos bereit. Genauer gesagt kann der Rückzugs- Register/PR#-Bus 70 eine zu aktualisierende Register-Nummer und die entsprechende physische Register-Nummer befördern. Bei dem vorliegenden Ausführungsbeispiel tritt das Zurückziehen von ROPs gleichzeitig für eine ganze Zeile auf (d. h. der PC-Silo 48 signalisiert das Zurückziehen sobald jede der ROPs in der Zeile an dem oberen Ende des PC-Silos 48 und des Abbildungssilos 32 erfolgreich ausgeführt wurde). Entsprechend kann ein Signal zum Zurückziehen der ältesten Zeile in dem vorliegenden Ausführungsbeispiel benutzt werden. Andere Ausführungsbeispiele können ein teilweises Zurückziehen bereitstellen oder können die Speicherung über individuelle Instruktions-operationen organisieren, in welchem Fall das Zurückziehen durch eine Instruktions-operation oder ähnliches geschehen kann.
  • Der architekturisierte Neubenennungs-Block 34 liest, vor dem Aktualisieren der Einträge, die den auf dem Rückzugs-Register/PR#-Bus 70 angegebenen logischen Registern entsprechen, die aktuellen physischen Register-Nummern, welche diesen logischen Registern entsprechen. In anderen Worten werden die von dem architekturisierten Neubenennungs-Block 34 ersetzten physischen Register- Nummern (die "vorherigen physischen Register-Nummern") aus dem architekturisierten Neubenennungs-Block 34 entfernt. Der architekturisierte Neubenennungs-Block 34 stellt die vorherigen PR#s auf einem Vorherige-PR#s-Bus 72 bereit, der mit der Abbildungseinheit 30 verbunden ist und die angegebenen Einträge der logischen Register mit den auf dem Vorherige-PR#s-Bus 72 bereitgestellten PR#s aktualisiert.
  • Im Allgemeinen sind die vorherigen PR#s zur Addition zu der Frei-Liste von PR#s geeignet (und zum Zuweisen zu dem Bestimmungs-Register einer nachfolgenden ROP). Jedoch verwendet der Prozessor 10 in dem vorliegenden Ausführungsbeispiel eine physische Register-Teilungs-Technik zur Verbesserung der Effizienz bei der Verwendung der physischen Register. Beispielsweise kann ein physisches Register angewiesen werden, sowohl einen Ganzzahl-Wert als auch einen Bedingungs-Code-Wert (oder Flaggen-Wert) zu speichern. Ein Bereich des physischen Registerspeichers speichert den Ganzzahl-Wert und ein weiterer Bereich den Bedingungs-Code-Wert. Entsprechend kann, wenn ein vorheriger PR# entfernt wird, beispielsweise auf die Aktualisierung eines Ganzzahl-Registers hin, welchem der PR# zugewiesen war, der PR# immer noch die darin gespeicherten Bedingungs-Codes repräsentieren (und umgekehrt). Der architekturisierte Neubenennungs-Block 34 vergleicht die vorherige PR# mit dem aktualisierten architekturisierten Zustand um festzustellen, welche Register tatsächlich zum Freimachen geeignet sind (dargestellt in Fig. 2 von dem Register 75, das die PR#s von dem Vorherige-PR#s-Bus 72 abgreift und die die abgegriffenen Nummern an den architekturisierten Neubenennungs-Block 34 zurückgibt, obwohl andere Ausführungsbeispiele das Aktualisieren und das Vergleichen in einem Taktzyklus ausführen können). Zum Beispiel kann der architekturisierte Neubenennungs-Block 34 einen Inhalts-Adressierbaren-Speicher (CAM) zum Speichern der PR#s verwenden, welche den logischen Registern entsprechen. Der architekturisierte Neubenennungs-Block 34 kann ein cam-Treffer-Signal auf einem cam-Treffer- Bus 74 entsprechend jedem auf dem Vorherige-PR#s-Bus 72 transportierten PR# befördern. Die Abbildungseinheit 30 kann die auf dem Vorherige-PR#s-Bus 72 angegebenen Register freimachen, wenn das entsprechende cam-Treffer-Signal nicht ausgegeben ist. Vorteilhafterweise kann die Verwendung der physischen Register effizienter sein und dennoch können physische Register ordentlich freigemacht werden. Es ist festzustellen, dass in anderen betrachteten Ausführungsbeispielen getrennte physische Register jedem logischen Register zugewiesen werden können, die als Antwort auf eine Instruktions-operation aktualisiert wurden.
  • Es ist festzustellen, dass für den Fall, dass eine vorherige PR# auf das Löschen aus dem architekturisierten Neubenennungs-Block 34 hin nicht freigemacht wurde, ein darauf folgendes Zurückziehen einer Instruktion, welche das logische Register, das immer noch durch die vorherige PR# repräsentiert wird, aktualisiert, zu einem Freimachen der vorherigen PR# führen kann. Auf das darauf folgende Zurückziehen kann ein cam-Treffer nicht festgestellt werden.
  • Wie es hier benutzt wird, ist ein physisches Register "frei", wenn es für die Zuweisung an einen Bestimmungs-Operanden einer Instruktion, welche von der Neubenennungs-Hardware bearbeitet wird, verfügbar ist. In dem vorliegenden Ausführungsbeispiel wird ein physisches Register freigemacht auf das Zurückziehen einer nachfolgenden Instruktion, die das logische Register aktualisiert, welchem das physische Register zugewiesen ist. Andere Ausführungsbeispiele können das Register auf andere Arten freimachen.
  • Es ist festzustellen, dass eine oder mehrere Instruktions-operationen innerhalb einer Zeile dasselbe logische Register aktualisieren können. Entsprechend enthält entweder der Abbildungssilo 32 oder der architekturisierte Neubenennungs-Block 34 eine Logik zum Abtasten der zurückzuziehenden logischen Register, um die älteste Aktualisierung jedes logischen Registers zu identifizieren (d. h. die letzte Aktualisierung, in der Reihenfolge des Programms), und speichert die dieser ältesten Aktualisierung entsprechende physische Register-Nummer in dem architekturisierten Neubenennungs-Block 34. Die neueren Aktualisierungen können ähnlich wie in der obigen Diskussion freigemacht werden (d. h. gecamt und freigemacht werden falls kein Treffer auftritt).
  • Der Abbildungssilo 32 kann einen Hinweis auf eine Ausnahme auch von dem PC- Silo 48 erhalten. Der PC-Silo 48 kann das Ausnahme-Gültig-Signal ausgeben und eine R# der Instruktions-Operation, der die Ausnahme widerfährt, dem Abbildungssilo 32 über den Ausnahme-Informations-Bus 68 bereitstellen. Der Abbildungssilo 32 wählt den Eintrag des Silos aus, der der Zeile der ROPs entspricht, welche die die Ausnahme erfahrende Instruktions-operation enthält (unter Benutzung des Bereichs der R#, welche für jede ROP innerhalb der Zeile konstant ist). Der Abbildungssilo 32 stellt der Abbildungseinheit 30 den in dem gewählten Eintrag gespeicherten aktuellen Vorausschau-Register-Zustand auf dem Wiederherstellungs-Vorausschau-Register-Zustands-Bus 76 bereit. Die Abbildungseinheit 30 stellt den Vorausschau-Register-Zustand wieder zu dem restaurierten Zustand her. Ferner stellt der Abbildungssilo 32 die logischen Register-Nummern, die PR#s und IQ#s der ROPs innerhalb der Zeile aber vor der die Ausnahme erfahrenden ROP bereit. Die Abbildungseinheit 30 aktualisiert den wiederhergestellten Vorausschau-Zustand mit den bereitgestellten PR#s und IQ#s. Vorteilhafterweise wird der Vorausschau-Zustand schnell wiederhergestellt. In Antwort auf eine Ausnahmebedingung geholte Instruktionen können wegen des schnellen Wiederherstellens der Neubenennungen neu benannt werden, sobald sie die Abbildungseinheit 30 erreichen.
  • Zusätzlich werden, in Antwort auf eine Ausnahme, die denjenigen ROPs, welche der die Ausnahme erfahrenden ROP nach folgen, zugewiesenen Register freigemacht. Der Abbildungssilo 32 befördert die freizumachenden PR#s über einen Frei-PR#-Bus 78 zu der Abbildungseinheit 30. In einem Ausführungsbeispiel kann der Abbildungssilo 32 konfiguriert sein, die freizumachenden PR#s mit einem Takt von einer Zeile von Taktzyklus bereitzustellen. Ferner müssen physischen Register nicht zum cammen zu dem architekturisierten Neubenennungs-Block 34 befördert werden, weil die ROPs, denen die physischen Register zugewiesen waren, nicht zurückgezogen wurden.
  • Nun Fig. 3 zuwendend wird ein Blockdiagramm eines Ausführungsbeispiels der Abbildungseinheit 30 gezeigt. Weitere Ausführungsbeispiele sind möglich und betrachtbar. In dem Ausführungsbeispiel von Fig. 3 enthält die Abbildungseinheit 30 eine Register-Abtast-Einheit 80, eine IQ#/PR#-Steuereinheit 82, einen Vorausschau-Register-Zustand 84, eine virtuelle/physische Register- Abbildungseinheit 86, eine Frei-Listen-Steuereinheit 88 und ein Frei-Listen- Register 90. Die Register-Abtast-Einheit 80 ist angeschlossen zum Empfangen von Ursprungs- und Bestimmungs-Register-Nummern (und einen Gültig-Hinweis für jede) von der Dekodiereinheit 24 auf dem Bus 60A (ein Bereich des in Fig. 2 gezeigten ROP-Informations-Busses 60). Die Register-Abtast-Einheit 80 ist konfiguriert zum Weiterleiten der Bestimmungs-Register-Nummern und der Ursprungs-Virtuell-Register-Nummern an die virtuelle/physische Register- Abbildungseinheit 86. Die IQ#/PR#-Steuereinheit 82 ist an einen Bus 60B (ein Bereich des in Fig. 2 gezeigten ROP-Informations-Busses 60) angeschlossen, um Bestimmungs-Register-Nummern und den Bestimmungs-Register-Nummern entsprechende Gültig-Hinweise zu empfangen. Die Instruktions-Warteschlangen 36A-36B stellen Schluß-Zeiger auf dem Schluß-Zeiger-Bus 92 bereit, die anzeigen, welcher Eintrag in jeder Warteschlange derzeit das Ende der Warteschlange ist. Ferner ist die IQ#/PR#-Steuereinheit 82 an den PR#/IQ#-Bus 62 angeschlossen. Die virtuelle/physische Register-Abbildungseinheit 86 ist verbunden mit dem Wiederherstellungs-Vorausschau-Register-Zustands-Bus 76 und dem Vorausschau-Register-Zustand 84, welcher ferner an den Vorausschau-Register- Zustands-Bus 64 angeschlossen ist. Darüber hinaus ist die virtuelle/physische Register-Abbildungseinheit 86 ferner angeschlossen zur Bereitstellung von Ursprungs-PR#s, Ursprungs-IQ#s, Bestimmungs-PR#s und einer IQ# für jede ROP innerhalb der Zeile über einen Ursprungs/Bestimmungs-PR# und IQ#-Bus 94 an die Instruktions-Warteschlangen 36A-36B. Die Frei-Listen-Steuereinheit 88 ist über einen nächste-freie-PR#-Bus 96 und einen zugewiesene-PR#-Bus 99 mit der IQ#/PR#-Steuereinheit 82 verbunden und ist mit dem Frei-Listen-Register 90 verbunden. Ferner ist die Frei-Listen-Steuereinheit 88 verbunden mit dem vorherige-PR#-Bus 72, dem cam-Treffer-Bus 74 und dem Frei-PR#-Bus 78.
  • In dem Ausführungsbeispiel von Fig. 3 führt die Abbildungseinheit 30 die Neubenennung der Register unter Benutzung eines zweistufigen Pipelinedesigns aus. In der ersten Stufe weist die Register-Abtast-Einheit 80 jedem Ursprungs-Register virtuelle Register-Nummern zu. Parallel dazu weist die IQ#/PR#-Steuereinheit 82 jeder ROP IQ#s (basierend auf den Schluß-Zeigern, die von den Instruktions- Warteschlangen 36A-36B bereitgestellt werden) und denjenigen ROPs, welche ein Bestimmungs-Register haben, PR#s zu. In der zweiten Stufe bildet die virtuelle/physische Register-Abbildungseinheit 86 die virtuellen Register-Nummern auf physische Register-Nummern ab (basierend auf dem aktuellen Vorausschau- Zustand und den zugewiesenen PR#s) und leitet die von der IQ#/PR#- Steuereinheit 82 zugewiesenen physischen Register-Nummern an die Ausgabeposition der entsprechenden ROP weiter.
  • Die von der Register-Abtast-Einheit 80 zugewiesenen virtuellen Register- Nummern identifizieren einen Ursprung für jede physische Register-Nummer. Beispielsweise können in dem vorliegenden Ausführungsbeispiel physische Register-Nummern, die Ursprungs-Registern entsprechen, gezogen werden entweder von dem Vorausschau-Zustands-Register 84 (welches den Aktualisierungen Rechnung trägt, die den zuvor von der Abbildungseinheit 30 verarbeiteten Zeilen von ROPs entsprechen) oder von einer vorherigen Ausgabeposition innerhalb der Zeile der ROPs (falls der Bestimmungs-Operand der vorherigen ROP derselbe ist wie der Ursprungs-Operand...d. h. eine Abhängigkeit innerhalb der Zeile ist vorhanden). In anderen Worten ist die einer Ursprungs-Register-Nummer entsprechende physische Register-Nummer die physische Register-Nummer, welche von dem Vorausschau-Zustands-Register 84 beibehalten wird, es sei denn, dass eine Abhängigkeit innerhalb der Zeile entdeckt wird. Die Register-Abtast-Einheit 80 führt eine wirksame Überwachung der Abhängigkeit innerhalb einer Zeile aus. Andere Ausführungsbeispiele können, wie gewünscht, andere Quellen für Ursprungs-Operanden bereitstellen.
  • Durch die Trennung von der Überwachung der Abhängigkeit innerhalb einer Zeile/dem Zuweisen der Bestimmungs-Physisch-Register von dem Abbilden der physischen Register-Nummern in die Stufen der Pipeline kann jede Stufe mit einer höheren Frequenz betrieben werden. Entsprechend kann das in Fig. 3 gezeigte Ausführungsbeispiel der Abbildungseinheit 30 mit einer höheren Frequenz betrieben werden als andere Ausführungsbeispiele, welche die Überwachung der Abhängigkeit innerhalb einer Zeile und die Zuweisung der Bestimmungs- Physisch-Register parallel zu dem Bestimmen der Ursprungs-Physisch-Register- Nummern durchführen. Die Benutzung der virtuellen Register-Nummern erlaubt die Trennung der Funktionen und erlaubt, wie unten in Fig. 8 dargestellt, ein relativ einfaches und wirksames Abbilden der Ursprungs-Physisch-Register- Nummern.
  • Die IQ#/PR#-Steuereinheit 82 weist Instruktions-Warteschlangen-Nummern beginnend mit dem Schluß-Zeiger einer der Instruktions-Warteschlangen 36A-36B zu. In anderen Worten empfängt die erste ROP innerhalb der Zeile den Schluß- Zeiger der ausgewählten Instruktions-Warteschlange als ein IQ# und weitere ROPs empfangen IQ#s in aufsteigender Reihenfolge von dem Schluß-Zeiger. Die Steuereinheit 82 weist jede der ROPs in einer Zeile derselben Instruktions- Warteschlange 36A-36B zu und teilt die nächste Zeile von ROPs der anderen Instruktions-Warteschlange 36A-36B zu. Die Steuereinheit 82 befördert einen Hinweis auf die Anzahl der zugeteilten ROPs über einen ROP-zugewiesen-Bus 98 an die Instruktions-Warteschlange 36A-36B. Die empfangende Instruktions- Warteschlange kann dadurch ihren Schluß-Zeiger aktualisieren, um der Zuteilung der ROPs zu dieser Warteschlange Rechnung zu tragen.
  • Die Steuereinheit 82 empfängt einen Satz von freien PR#s von der Frei-Listen- Steuer-Einheit 88. Der Satz der freien PR#s wird dem Bestimmungs-Register innerhalb der Zeile von Instruktions-operationen zugewiesen. In einem Ausführungsbeispiel begrenzt der Prozessor 10 die Anzahl der Aktualisierungen der logischen Register innerhalb einer Zeile auf vier (d. h., falls die Fehlvorhersage- Dekodiereinheit 26 einer fünften Aktualisierung eines logischen Registers begegnet, wird die Zeile bei der vorherigen Instruktion abgeschlossen). Daher wählt die Frei-Listen-Steuer-Einheit 88 vier PR#s aus der Frei-Liste 90 aus und befördert die ausgewählten Register auf dem nächste-freie-PR#-Bus 96 an die Steuereinheit 82. Die Steuereinheit 82 antwortet damit, welche PR#s tatsächlich zugewiesen wurden, über den zugewiesene-PR#-Bus 99 und die Frei-Listen-Steuer- Einheit 88 löscht die zugewiesenen physischen Register von der Frei-Liste. Andere Ausführungsbeispiele können andere Beschränkungen für die Anzahl der Aktualisierungen innerhalb einer Zeile verwenden, einschließlich keiner Begrenzung (d. h. jede ROP kann aktualisieren).
  • Die Frei-Listen-Steuer-Einheit 88 ist zum Handhaben des Freimachens der physischen Register und zur Auswahl von Registern für die Zuweisung an nachfolgende Instruktionen konfiguriert. Das Frei-Listen-Register 90 kann zum Beispiel ein jedem physischen Register entsprechendes Bit speichern. Wenn das Bit gesetzt ist, dann ist das entsprechende Register frei. Falls das Bit gelöscht ist, ist das entsprechende Register zur Zeit zugewiesen (d. h. nicht frei). Die Frei-Listen- Steuer-Einheit 88 tastet die Frei-Liste ab, um Register zur Beförderung zu der Steuereinheit 82 auszuwählen. Zum Beispiel kann die Frei-Listen-Steuer-Einheit 88 nach den ersten beiden freien Registern von jedem Ende des Frei-Listen- Registers 90 suchen, um eine schnelle Auswahl der in dem vorliegenden Ausführungsbeispiel bereitgestellten vier Registern zu ermöglichen. Diese Abtastungen können als zwei-wählen-eine-aus-Operationen von jedem Ende durchgeführt werden (eine vor der anderen ausgeführt und Entfernen des zugewiesenen physischen Registers aus der Frei-Liste).
  • Die Frei-Listen-Steuer-Einheit 88 empfängt die vorherige physische Register- Nummer, die aus dem architekturisierten Neubenennungs-Block 34 gelöscht wurde, über den Vorherige-PR#-Bus 72. Danach werden die cam-Treffer-Signale, welche jeder vorherigen physischen Register-Nummer entsprechen, auf dem cam-Treffer-Bus 74 empfangen. Jede vorherige PR#, für die das entsprechende cam-Treffer-Signal wieder ungültig gemacht wird, wird von der Frei-Listen- Steuer-Einheit 88 zu der Frei-Liste hinzugefügt. Ferner werden auf dem Frei- PR#-Bus 78 empfangene physische Register-Nummern ohne Bedingungen zu der Frei-Liste hinzugefügt.
  • Der Vorausschau-Register-Zustand 84 speichert den Vorausschau-Register- Zustand vor den Aktualisierungen, die der Zeile von ROPs entsprechen, welche der virtuellen/physischen Register-Abbildungseinheit 86 übergeben wird. Genauer gesagt speichert der Vorausschau-Register-Zustand 84 eine physische Register-Nummer, die jedem logischen Register entspricht, und (in dem vorliegenden Ausführungsbeispiel) eine Instruktions-Warteschlangen-Nummer, die der ROP entspricht, welche die als ein Bestimmungs-Register zugewiesene physische Register-Nummer hat. Bei jedem Taktzyklus befördert der Vorausschau-Register- Zustand 84 den aktuellen Vorausschau-Register-Zustand auf dem Vorausschau- Register-Zustands-Bus 64 zu dem Abbildungssilo 32. Die virtuelle/physische Register-Abbildungseinheit 86 stellt die PR# und die IQ# der entsprechenden logischen Register wie von dem Vorausschau-Register-Zustand 84 angezeigt für jedes Ursprungs-Register bereit, das eine virtuelle Register-Nummer hat, was anzeigt, dass der Ursprung der PR# der Vorausschau-Register-Zustand 84 ist. Ursprungs-Register, für welche die virtuelle Register-Nummer eine frühere Ausgabeposition anzeigt, werden zusammen mit den von der Steuereinheit 82 zugewiesenen PR# und IQ# ausgegeben. Ferner aktualisiert die virtuelle/physische Register-Abbildungseinheit 86 den Vorausschau-Register-Zustand 84 gemäß den von der Zeile der ROPs angegebenen logischen Bestimmungs-Registern und den von der Steuereinheit 82 zugewiesenen PR#s/IQ#s.
  • Die virtuelle/physische Register-Abbildungseinheit 86 ist ferner zum Empfangen eines Wiederherstellungs-Vorausschau-Register-Zustands konfiguriert, der von dem Abbildungssilo 32 auf dem Wiederherstellungs-Vorausschau-Register- Zustands-Bus 76 in Antwort auf eine Ausnahme-Bedingung bereitgestellt wird (wie oben beschrieben). Die virtuelle/physische Register-Abbildungseinheit 86 kann den nächsten Vorausschau-Register-Zustand, der gemäß Eingaben von der Register-Abtastungs-Einheit 80 und der IQ#/PR#-Steuereinheit 82 erzeugt wurde, mit dem von dem Abbildungssilo 32 bereitgestellten Wiederherstellungs- Vorausschau-Zustand umstossen.
  • Es ist festzustellen, dass in dem vorliegenden Ausführungsbeispiel die IQ#s für jeden Ursprungs-operanden weitergeleitet werden, um anzuzeigen, von welchen Einträgen der Instruktions-Warteschlange die entsprechende ROP abhängig ist. Die Instruktions-Warteschlangen 36A-36B warten den Abschluß der ROPs in den entsprechenden Einträgen der Instruktions-Warteschlange ab, bevor die abhängige ROP zur Ausführung vorgesehen wird.
  • Nun Fig. 4 zuwendend wird ein Blockdiagramm darstellend ein Ausführungsbeispiel der Register-Abtastungs-Einheit 80 gezeigt. Weitere Ausführungsbeispiele sind möglich und betrachtbar. In dem Ausführungsbeispiel von Fig. 4 umfaßt die Register-Abtastungs-Einheit 80 eine Abtastungs-Einheit, die jeder Ausgabeposition innerhalb der Zeile der ROPs entspricht. Zum Beispiel umfaßt das vorliegende Ausführungsbeispiel acht Abtastungs-Einheiten 100A-100H, die acht Ausgabepositionen entsprechen (obwohl mehr oder weniger umgesetzt sein können). Die Abtastungs-Einheiten 100A-100H sind in einer seriellen Kette zum Durchreichen des virtuellen Vorausschau-Register-Zustands und parallel zum Empfangen der Ursprungs- und Bestimmungs-Register-Nummern verbunden.
  • Jede Abtastungs-Einheit 100A-100H ist an einen Bereich des in Fig. 3 gezeigten ROP-Busses 60A angeschlossen. Genauer gesagt ist jede Abtastungs-Einheit 100A-100H zum Empfang der Ursprungs- und Bestimmungs-Register-Nummern der ROP in der entsprechenden Ausgabeposition angeschlossen. Entsprechend ist der Bus 60AA mit der Abtastungseinheit 100A verbunden, wodurch die Ursprungs- und Bestimmungs-Register-Nummern für die Ausgabeposition Null bereitgestellt werden (d. h. die erste ROP in der Reihenfolge des Programms innerhalb der Zeile der ROPs). Ähnlich ist der Bus 60AB mit der Abtastungseinheit 100B verbunden, wodurch die Ursprungs- und Bestimmungs-Register-Nummern für die Ausgabeposition Eins bereitgestellt werden. Weiter Busse 60AC bis 60AH stellen die Ursprungs- und Bestimmungs-Register-Nummern für die verbleibenden Ausgabepositionen in der Reihe wie gezeigt bereit. Jede Abtastungs-Einheit 100A-100H ist zum Bereitstellen einer Ursprungs-Virtuell-Register-Nummer für jedes Ursprungs-Register konfiguriert, welches nachfolgend der virtuellen/physischen Register-Abbildungseinheit 86 zugeführt wird.
  • Die Abtastungs-Einheit 100 ist zum Empfangen eines virtuellen aktuellen Vorausschau-Register-Zustands angeschlossen. Der virtuelle aktuelle Vorausschau- Register-Zustand umfaßt eine virtuelle Register-Nummer, die jedem logischen Register entspricht. Die virtuellen Register-Nummer innerhalb des virtuellen aktuellen Vorausschau-Zustands zeigen an, dass der Ursprung der PR# (und IQ#) der Vorausschau-Register-Zustand 84 ist. In einem Ausführungsbeispiel, das die x86 Instruktions-Satz-Architektur verwendet, umfaßt der Vorausschau-Register- Zustand 84 zum Beispiel 8 Register, welche den architekturisierten Ganzzahl- Registern entsprechen, 3 Register, welche der Gruppe der Bedingungs-Code- Register entsprechen (Gruppierungen werden ausgewählt nach der Maßgabe, welche davon von verschiedenen Instruktionen aktualisiert werden, zum Beispiel kann das O Bit eine Gruppe sein, das C Bit eine weitere Gruppe und die Z, A, P und S Bits die dritte Gruppe), 8 Register, welche den architekturisierten Gleitkomma/MMX-Registern entsprechen, ein Register, welches dem Gleitkomma- Bedingungs-Code-Register entspricht und 8 Register, welche den temporären Mikrocode-Registern entsprechen.
  • Die Abtastungs-Einheit 100A weist basierend auf den Ursprungs-Register- Nummern Ursprungs-Virtuell-Register-Nummern aus dem virtuellen aktuellen Vorausschau-Register-Zustand zu. Ferner aktualisiert die Abtastungseinheit 100A, falls die ROP in der Ausgabeposition Null ein Bestimmungs-Register aktualisiert, den virtuellen aktuellen Vorausschau-Zustand durch das Einfügen einer neuen virtuellen Register-Nummer für das entsprechende logische Bestimmungs- Register. Die neue virtuelle Register-Nummer zeigt an, dass der Ursprung der PR# und der IQ# für das entsprechende logische Register die Ausgabeposition Null ist. Ein aktualisierter Vorausschau-Register-Zustand mit der neuen virtuellen Register-Nummer, die an Stelle der ursprünglichen virtuellen Register-Nummer eingefügt ist, wird an die Abtastungs-Einheit 100B weiter geleitet.
  • Die Abtastungs-Einheit 100B akzeptiert den aktualisierten Vorausschau-Register- Zustand von der Abtastungs-Einheit 100A und weist virtuelle Register-Nummern von dem aktualisierten Vorausschau-Register-Zustand an die Ursprungs- Register-Nummern zu. Ferner fügt die Abtastungs-Einheit 100B eine neue virtuelle Register-Nummer, welche die Ausgabeposition Eins anzeigt, in den von der Abtastungs-Einheit 100A bereitgestellten aktualisierten Vorausschau-Register- Zustand ein, wenn die ROP in der Ausgabeposition Eins ein logisches Register aktualisiert. Die Abtastungs-Einheiten 100C bis 100H weisen auf ähnlich Weise den Ursprungs-Registern der ROPs in den Ausgabepositionen 3 bis 8 virtuelle Register-Nummern zu, in Antwort auf einen aktualisierten Vorausschau-Register- Zustand, der von den vorherigen Abtastungs-Einheiten bereitgestellt wird, und aktualisiert den aktualisierten Vorausschau-Register-Zustand gemäß der Bestimmungs-Register-Nummer, falls überhaupt eine vorhanden ist.
  • Entsprechend wird eine virtuelle Register-Nummer zugewiesen, welche die vorherige Ausgabeposition anzeigt, falls eine vorherige ROP innerhalb der Zeile ein logisches Register aktualisiert, welches von einer Ursprungs-Register-Nummer von einer ROP angegeben wird. Sonst wird eine virtuelle Register-Nummer zugewiesen, welche den aktuellen Vorausschau-Register-Zustand für das entsprechende logische Register anzeigt. In anderen Worten werden Abhängigkeiten innerhalb einer Zeile und Abhängigkeiten von vorhergehenden Zeilen von Instruktionen (durch den aktuellen Vorausschau-Register-Zustand) durch die virtuellen Register-Nummern angezeigt.
  • Der von der Abtastungs-Einheit 100H bereitgestellte aktualisierte Vorausschau- Register-Zustand ist der virtuelle nächste Vorausschau-Register-Zustand, der gemeinsam mit den Ursprungs-Virtuell-Register-Nummern, die von jeder der Abtastungs-Einheiten 100A-100H bereit gestellt werden, und den Bestimmungs- Register-Nummern an die virtuelle/physische Register-Abbildungseinheit 86 übertragen wird. Die virtuelle/physische Register-Abbildungseinheit 86 kann dann den nächsten Vorausschau-Register-Zustand erzeugen, der der Zeile von ROPs entspricht, um den Vorausschau-Register-Zustand 84 für die nachfolgende Zeile von ROPs zu aktualisieren.
  • Es ist festzustellen, dass in einem Ausführungsbeispiel jede der Abtastungs- Einheiten 100A bis 100F eine Ganzzahl/Temporär-Abtastungs-Schaltung enthält zum Handhaben der Ganzzahl-, Temporär- und Bedingungs-Code-Register und eine Gleitkomma-Abtastungs-Schaltung zum Handhaben der Gleitkomma- Register und der Gleitkomma-Bedingungs-Code-Register. Entsprechend wird ein Hinweis, ob jedes Ursprungs- und Bestimmungs-Register ein Gleitkomma- oder Ganzzahl-Register ist, mit der Register-Nummer weitergegeben und zu der Feststellung benutzt, welche virtuelle Register-Nummer dem Register zuzuweisen ist oder mit einer neuen virtuellen Register-Nummer zu ersetzen ist.
  • Nun Fig. 5 zuwendend wird eine Tabelle 102 gezeigt, welche ein beispielhaftes Kodieren von virtuellen Register-Nummern darstellt. Weitere Kodierungen sind möglich und betrachtbar. Insbesondere kann zum Beispiel der in der Tabelle 102 gezeigte logische Zustand des höchstwertigsten Bits (MSB) von dem in der Tabelle gezeigten invertiert werden. Noch andere Kodierungen sind auch möglich.
  • Die Tabelle 102 stellt die Kodierung einer virtuellen Register-Nummer dar, bei welcher das MSB bestimmt, ob der Ursprung der entsprechenden PR#/IQ# der aktuelle Vorausschau-Zustand, der von dem Vorausschau-Register-Zustand 84 beibehalten wird, oder die Bestimmungs-PR#/IQ#, welche einer vorherigen Ausgabeposition innerhalb der Zeile zugewiesen ist, ist. Beispielsweise zeigt, falls das MSB gelöscht ist, die virtuelle Register-Nummer dann an, dass der Ursprung der aktuelle Vorausschau-Zustand ist und die niederwertigsten Bits (LSBs) der virtuellen Register-Nummer sind die logische Register-Nummer innerhalb des aktuellen Vorausschau-Zustands. Falls das MSB gesetzt ist, dann zeigt die virtuelle Register-Nummer an, dass der Ursprung eine vorherige Ausgabeposition ist. Die LSBs sind in diesem Fall die Nummer der vorherigen Ausgabeposition.
  • In einem Ausführungsbeispiel, das die in Tabelle 102 gezeigten Kodierungen verwendet, weist der der Abtastungs-Einheit 100A bereitgestellte virtuelle aktuelle Vorausschau-Zustand Kodierungen mit einem gelöschten MSB und den in den LSBs bereitgestellten entsprechenden logischen Register-Nummern auf. Neue virtuelle Register-Nummern, die von den Abtastungs-Einheiten 100A-100H in den aktualisierten Vorausschau-Register-Zustand eingefügt wurden, weisen Kodierungen mit gesetztem MSB und den in den LSBs bereitgestellten Ausgabepositions-Nummern auf, welche den einfügenden Abtastungs-Einheiten entsprechen.
  • Nun Fig. 6 zuwendend wird ein Bereich eines Ausführungsbeispiels einer Ganzzahl/Temporär-Abtastungs-Schaltung 110 gezeigt, welche innerhalb eines Ausführungsbeispiels von jeder der Abtastungs-Einheiten 100A-100H verwendet werden kann. Weitere Ausführungsbeispiele sind möglich und betrachtbar. In dem Ausführungsbeispiel von Fig. 6 wird die Bestimmungs-Register-Nummer der entsprechenden ROP auf einem Bestimmungs-Bus 112 weitergeleitet, die erste Ursprungs (SRC1) Register-Nummer der entsprechenden ROP wird auf einem SRC1-Bus 114 weitergeleitet und die zweite Ursprungs (SRC2) Register-Nummer der entsprechenden ROP wird auf einem SRC2-Bus 116 weitergeleitet. Die Busse 112, 114 und 116 weisen einen Bereich des Busses 60A auf (wenn zum Beispiel die Ganzzahl/Temporär-Abtastungs-Einheit 110 ein Bereich der Abtastungs- Einheit 100A ist, sind die Busse 112, 114 und 116 Bereiche des Busses 60AA). Der Bestimmungs-Bus 112 ist mit einer Vielzahl von Bestimmungs- Identifikations-Einheiten verbunden (zum Beispiel mit den in Fig. 6 gezeigten Einheiten 118A und 118B). Jede Bestimmungs-Identifikations-Einheit 118A-118B ist an eine Durchreichungs/Schreib-Steuer-Einheit angeschlossen (zum Beispiel sind die Durchreichungs/Schreib-Steuer-Einheiten 120A und 120B mit der Bestimmungs-Identifikations-Einheit 118A beziehungsweise 118B verbunden). Jede Durchreichungs-Steuer-Einheit 120A-120B ist ferner mit einem virtuellen Register-Eingang, der von einer voranstehenden Abtastungs-Einheit 100A-100H bereitgestellt wird, und mit einem virtuellen Register-Ausgang zu einer nachstehenden Abtastungs-Einheit 100A-100H verbunden (zum Beispiel ist die Durchreichungs/Schreib-Steuer-Einheit 120A mit einem virtuellen EAX-Eingangs-Bus 122A und einem virtuellen EAX-Ausgangs-Bus 124A verbunden ist und die Durchreichungs/Schreib-Steuer-Einheit 120B mit einem virtuellen EBX-Eingangs- Bus 122A und einem virtuellen EBX-Ausgangs-Bus 124A verbunden ist). Ferner ist der SRC1-Bus 114 mit einer Vielzahl von SRC1-Identifikations-Einheiten verbunden (zum Beispiel mit den in Fig. 6 gezeigten SRC1-Identifikations-Einheiten 126A und 126B). Der SRC2-Bus 116 ist ähnlich mit einer Vielzahl von SRC2- Identifikations-Einheiten verbunden (zum Beispiel mit den in Fig. 6 gezeigten SRC2-Identifikations-Einheiten 128A und 128B). Jede SRC1/SRC2- Identifikations-Einheit 126A-126B oder 128A-128B ist verbunden, um die Steuerung eines entsprechenden Schalters 130A-130D, wie in Fig. 6 gezeigt, zu ermöglichen. Die Schalter 130A-130B haben Eingänge, die an den virtuellen EAX- Eingangs-Bus 122A angeschlossen sind, während die Schalter 130C-130D Eingänge haben, die an den virtuellen EBX-Eingangs-Bus 122B angeschlossen sind. Die Schalter 130A und 130C haben Eingänge, welche mit einem SRC1-Virtuell- Register-Bus 132A verbunden sind, während die Schalter 130B und 130D Eingänge haben, welche mit einem SRC2-Virtuell-Register-Bus 132B verbunden sind.
  • Im Allgemeinen weist die Ganzzahl/Temporär-Abtastungs-Schaltung 110 die virtuellen Register-Nummern für Ganzzahl/Temporär-Ursprungs-Register der ROP in der entsprechenden Ausgabeposition zu und fügt neue virtuelle Register- Nummern für ein Ganzzahl-Bestimmungs-Register in der entsprechenden Ausgabeposition ein. Jeder Satz von einer Bestimmungs-Identifikations-Einheit, Durchreichungs/Schreib-Steuer-Einheit, SRC1-Identifikations-Einheit und SRC2- Identifikations-Einheit entspricht einem der logischen Ganzzahl-, Temporär- oder Bedingungs-Code-Registern. Zum Beispiel entsprechen die Bestimmungs- Identifikations-Einheit 118A, die Durchreichungs/Schreib-Steuer-Einheit 120A, die SRC1-Identifikations-Einheit 126A und die SRC2-Identifikations-Einheit 128A dem EAX-Register. Ähnlich entsprechen die Bestimmungs-Identifikations-Einheit 118B, die Durchreichungs/Schreib-Steuer-Einheit 120B, die SRC1-Identifikations- Einheit 126B und die SRC2-Identifikations-Einheit 128B dem EBX-Register. Andere Sätze von Bestimmungs-Identifikations-Einheiten, Durchreichungs/Schreib- Steuer-Einheiten, SRC1-Identifikations-Einheiten und SRC2-Identifikations- Einheiten (nicht gezeigt) entsprechen anderen von den logischen Ganzzahl-, Temporär- oder Bedingungs-Code-Registern. Die nachfolgende Diskussion wird die Hardware der EAX-Register beschreiben. Die Hardware der EBX-Register arbeitet im Hinblick auf das EBX-Register ähnlich und weiter ähnliche Hardware (nicht gezeigt) arbeitet im Hinblick auf die verbleibenden Register ähnlich.
  • Die Bestimmungs-Identifikations-Einheit 118A bestimmt, ob eine Bestimmungs- Register-Nummer auf dem Bestimmungs-Register-Bus 112 ein EAX-Register auswählt. Entsprechend dekodiert die Bestimmungs-Identifikations-Einheit 118A die Bestimmungs-Register-Nummer um festzustellen, ob EAX ausgewählt ist, und die Dekodierung wird mit einem Gültig-Signal, welches angibt, dass die Bestimmungs-Register-Nummer gültig ist, und mit einem Gültig-Signal bezeichnet, welches angibt, dass die Bestimmungs-Register-Nummer ein Ganzzahl/Temporär/Bedingungs-Code-Register ist (d. h. kein Gleitkomma-Register ist). Wenn das Bestimmungs-Register das EAX-Register ist, signalisiert die Bestimmungs-Identifikations-Einheit 118A der Durchreichungs/Schreib-Steuer- Einheit 120A die virtuelle Register-Nummer, welche der Ausgabeposition entspricht, in welcher die Ganzzahl/Temporär-Abtastungs-Schaltung 110 auf dem virtuellen EAX-Ausgangs-Bus 124A verwendet wird. Sonst signalisiert die Bestimmungs-Identifikations-Einheit 118A der Durchreichungs/Schreib-Steuer- Einheit 120A, die virtuelle Register-Nummer, die auf dem virtuellen EAX- Eingangs-Bus 122A bereitgestellt wird, auf dem virtuellen EAX-Ausgangs-Bus 124A weiterzugeben.
  • Ähnlich bestimmt die SRC1-Identifikations-Einheit 126A, ob die SRC1-Register- Nummer auf dem SRC1-Register-Bus 114 das EAX-Register auswählt, indem die SRC1-Register-Nummer dekodiert wird, um festzustellen, ob EAX ausgewählt ist und bezeichnet die Dekodierung mit einem Gültig-Signal, welches angibt, dass die SRC1-Register-Nummer gültig ist, und mit einem Ganzzahl-Signal, welches angibt, dass die SRC1-Register-Nummer ein Ganzzahl/Temporär/Bedingungs- Code-Register ist. Wenn als SRC1 EAX ausgewählt ist, aktiviert die SRC1- Identifikations-Einheit 126A den Schalter 130A, um die auf dem virtuellen EAX- Eingangs-Bus 122A bereitgestellte virtuelle Register-Nummer auf den SRC1- Virtuell-Register-Bus 132A zu treiben. Die SRC2-Identifikations-Einheit 128A ist ähnlich zu der SRC1-Identifikations-Einheit 126A, aber arbeitet mit der auf dem SRC2-Register-Bus 116 bereitgestellten SRC2-Register-Nummer und steuert den Schalter 130B, um entsprechend den SRC2-Virtuell-Register-Bus 132B zu treiben oder nicht zu treiben.
  • Auf diese Weise kann ein aktualisierter Vorausschau-Zustand der nächsten Abtastungs-Einheit (über virtuelle Ausgangs-Busse wie beispielsweise 124A-124B) zugeführt werden und Ursprungs-Virtuell-Register-Nummern können zugewiesen werden (über Busse wie beispielsweise den SRC1-Virtuell-Register-Bus 132A und den SRC2-Virtuell-Register-Bus 132B). Es ist festzustellen, dass die Ganzzahl/Temporär-Abtastungs-Schaltung 110 modifiziert werden kann, um Register zu Register Bewegungen handzuhaben, indem jeder der virtuellen Ganzzahl/Temporär-Eingänge an die Durchreichungs/Schreib-Steuer-Einheit 120A (und andere Durchreichungs/Schreib-Steuer-Einheiten) weiter geleitet wird. Zusätzliche Signalisierungen können bereitgestellt werden, um anzuzeigen, dass die ROP in der aktuellen Ausgabeposition eine Register-Register Bewegung ist. Als Antwort auf die SRC1-Register-Nummer und das Bewegungs-Signal, wird der der SRC1-Register-Nummer entsprechende virtuelle Ganzzahl/Temporär-Eingang an den dem Bestimmungs-Register entsprechenden Ganzzahl/Temporär-Ausgang weitergeleitet. Zusätzlich wird die in der entsprechenden Ausgabeposition befindliche ROP daran gehindert, an die Instruktions-Warteschlangen 36A-36B weitergegeben zu werden (zum Beispiel wird ihr Gültig-Bit zurück gesetzt), weil die Bewegung durch das Weiterleiten der Ursprungs-Virtuell-Register-Nummer als die Bestimmungs-Virtuell-Register-Nummer erreicht wird. In einem derartigen Ausführungsbeispiel kann das cammen der zurückgezogenen physischen Register vor dem Freimachen dieser das versehentliche zu frühe Freimachen der Bestimmungs-PR# verhindern.
  • Nun Fig. 7 zuwendend wird ein Bereich eines Ausführungsbeispiels einer Gleitkomma-Abtastungs-Schaltung 140 gezeigt, welche innerhalb eines Ausführungsbeispiels von jeder der Abtastungs-Einheiten 100A-100H verwendet werden kann. Andere Ausführungsbeispiele sind möglich und betrachtbar. Die Abtastungs-Schaltung 140 empfängt den SRC1-Register-Bus 114 und den SRC2- Register-Bus 116, ähnlich wie die Ganzzahl/Temporär-Abtastungs-Einheit 110, und kann die Ursprungs-Virtuell-Register-Nummern auf den SRC1-Virtuell- Register-Bus 132A und den SRC2-Virtuell-Register-Bus 132B treiben. Der in Fig. 7 gezeigte Bereich empfängt den virtuellen stl Eingang (d. h. eines der st0 bis st7 Register, wie sie in der x86 Instruktions-Satz-Architektur definiert sind, also 0 < l < 7) und stellt den virtuellen stl Ausgang für die Ausgabeposition, in welcher die Schaltung 140 verwendet wird (die "aktuelle Ausgabeposition") bereit. Eine mit dem SRC1-Register-Bus 114 verbundene SRC1-Identifikations-Einheit 142A stellt fest, ob die SRC1-Register-Nummer das stl Register auswählt (d. h. die Register-Nummer ist stl, das Register ist ein Gleitkomma-Register und das SRC1- Register ist gültig). Falls die SRC1-Register-Nummer das stl Register auswählt, steuert die SRC1-Identifikations-Einheit 142A den Schalter 130E, um die auf einem virtuellen stl Eingangs-Bus 144 bereitgestellte virtuelle Register-Nummer auf den SRC1-Virtuell-Register-Bus 132A zu treiben. Auf ähnlich Weise stellt eine mit dem SRC2-Register-Bus 116 verbundene SRC2-Identifikations-Einheit 142B stellt fest, ob die SRC2-Register-Nummer das stl Register auswählt und steuert selektiv einen Schalter 130F, um die auf einem virtuellen stl Eingangs-Bus 144 bereitgestellte virtuelle Register-Nummer auf den SRC2-Virtuell-Register-Bus 132B zu treiben.
  • Ferner stellt der in Fig. 7 gezeigte Bereich der Gleitkomma-Abtastungs-Einheit 114 eine Ausgangs-Virtuell-Register-Nummer bereit, die dem Register stl auf dem virtuellen stl Ausgangs-Bus 146 entspricht. Eine Vielzahl von Eingangs- Virtuell-Register-Nummern kann als die Ausgangs-Virtuell-Register-Nummer auf dem Bus 146 auswählbar sein, gesteuert durch eine Vielzahl von von der Dekodiereinheit 24 bereitgestellten Steuer-Signalen. Die x86 Gleitkomma- Instruktionen behandeln den Gleitkomma-Register-Satz wie einen Stapel. St0 in dem Register ist die Spitze des Stapels, st1 ist das nächste zu der Spitze, usw. Gewisse Instruktionen können den Stapel veranlassen, geschoben zu werden (machen aus dem aktuellen st0 Register st1, usw.) oder ausgeworfen zu werden (machen aus dem aktuellen st1 Register st0, usw.). Ferner wird noch eine Austausch-Instruktion unterstützt, welche die Spitze des Stapel-Registers (st0) und eines der anderen Register mit einander vertauscht.
  • Die Auswahl des virtuellen stl Ausgangs versucht viele dieser Situationen handzuhaben durch die Verwendung von Schaltern 130G-130K und durch einen Satz von Eingangs-Virtuell-Register-Bussen 144, 148, 150, 152 und 154. Falls die ROP in der aktuellen Ausgabeposition den Gleitkomma-Stapel oder das stl Register nicht einzeln beeinflußt, wird das Durchreichungs-Signal an den Schalter 130G (verbunden zwischen dem virtuellen stl Eingangs-Bus 144 und dem virtuellen stl Ausgangs-Bus 146) ausgegeben und der virtuelle stl Eingang wird als virtueller stl Ausgang bereitgestellt. Auf der anderen Seite wird, falls die ROP in der aktuellen Ausgabeposition das stl Register aktualisiert, das Schreib-Signal an den Schalter 130J (verbunden zwischen dem Bus 152 und dem Bus 146) ausgegeben und die der aktuellen Ausgabeposition entsprechende virtuelle Register-Nummer (befördert auf dem Bus 152) wird auf dem virtuellen stl Ausgangs-Bus 146 übermittelt. Falls die ROP in der aktuellen Ausgabeposition eine Verschiebung oder ein Auswerfen des Stapels veranlasst, werden entsprechende Signale an den Schalter 130K (verbunden zwischen dem Bus 154 und dem Bus 146) beziehungsweise 130I (verbunden zwischen dem Bus 152 und dem Bus 146) ausgegeben. Der aktuellen Ausgabeposition bereitgestellte virtuelle Register- Nummern, welche den stl-1 und stl+1 Registern innerhalb der aktualisierten Vorausschau-Zustands entsprechen, werden dadurch bereitgestellt. Schließlich wird der virtuelle st0 Eingang von der Ausgabeposition zwei Positionen vor der aktuellen Ausgabeposition auf dem Bus 148 bereitgestellt. Falls die aktuelle ROP die zweite Hälfte einer FEXC-Instruktion ist, wird das EXCH-Signal an den Schalter 130H ausgegeben und die zu st0 entsprechende virtuelle Register-Nummer von der Ausgabeposition zwei Positionen vor der aktuellen Ausgabeposition wird als der virtuelle stl Ausgang ausgewählt.
  • Es ist festzustellen, dass zur Handhabung der ersten Hälfte der FEXC-Instruktion der Bereich der Gleitkomma-Abtastungs-Einheit 140, der st0 entspricht, jeden der virtuellen stl Eingänge von der vorherigen Abtastungs-Einheit umfassen kann, um willkürlich ein beliebiges Register als den virtuellen st0 Ausgang auszuwählen. Es ist ferner festzustellen, dass auch das Feld an der Spitze des Stapels (TOS) des Gleitkomma-Status-Registers und auch das Gleitkomma- Markierungs-Wort von Gleitkomma Bearbeitungen betroffen sind. Vorausschau- Werte für die TOS und für das Markierungs-Wort können sowohl durch Verschiebungen, Auswerfungen als auch Austäusche weiter verbreitet werden. Eine Kopie der aktuellen Vorausschau der TOS und des Markierungs-Worts, welche jeder Ausgabeposition entsprechen, können in dem Abbildungssilo 32 für eine Ausnahme-Wiederherstellung gespeichert werden (und der letzte Wert kann in dem Vorausschau-Register-Zustand 84 aktualisiert werden). Darüber hinaus kann die Register-Abtastungs-Einheit 80 ferner die Benutzung eines Registers feststellten, das ungültig ist (wie es von dem Markierungs-Wort angezeigt wird) und für die spätere Behandlung der Ausnahme eine Ausnahme mit der die das Register benutzende ROP für die spätere Behandlung der Ausnahme feststellen.
  • Es ist festzustellen, dass die Ganzzahl/Temporär-Abtastungs-Schaltung 110 und die Gleitkomma-Abtastungs-Schaltung 140 sowohl Ganzzahl zu Gleitkomma als auch Gleitkomma zu Ganzzahl Bewegungen handhaben können. Falls ein Ursprungs-Register einer ROP als Ganzzahl angezeigt wird, stellt die Ganzzahl/Temporär-Abtastungs-Schaltung 110 die Ursprungs-Virtuell-Register- Nummer bereit. Auf der anderen Seite stellt, falls ein Ursprungs-Register einer ROP als Gleitkomma angezeigt wird, die Gleitkomma-Abtastungs-Schaltung 140 die Ursprungs-Virtuell-Register-Nummer bereit. Falls ein Bestimmungs-Register als Gleitkomma angezeigt wird, wird von der Gleitkomma-Abtastungs-Schaltung 140 eine neue Gleitkomma-Virtuell-Register-Nummer in den aktualisierten Vorausschau-Register-Zustand geliefert. Falls auf der anderen Seite ein Bestimmungs-Register als Ganzzahl angezeigt wird, wird von der Ganzzahl/Temporär- Abtastungs-Schaltung 110 eine neue Ganzzahl-Virtuell-Register-Nummer in den aktualisierten Vorausschau-Register-Zustand geliefert. Entsprechend wird einer Ausgabeposition, welche eine Gleitkomma zu Ganzzahl Register-Bewegung hat, eine Gleitkomma-Ursprungs-Virtuell-Register-Nummer zugewiesen und die Bestimmungs-Register-Nummer zeigt Ganzzahl an. Auf der anderen Hand wird einer Ausgabeposition, welche eine Ganzzahl zu Gleitkomma Register-Bewegung hat, eine Ganzzahl-Ursprungs-Virtuell-Register-Nummer zugewiesen und die Bestimmungs-Register-Nummer zeigt Gleitkomma an.
  • Nun Fig. 8 zuwendend ist ein Blockdiagramm eines Ausführungsbeispiels einer virtuellen/physischen Register-Abbildungseinheit 86 gezeigt. Weitere Ausführungsbeispiele sind möglich und betrachtbar. In dem Ausführungsbeispiel von Fig. 8 umfaßt die virtuelle/physische Register-Abbildungseinheit 86 einen Ursprungs-IQ#-Multiplexer 160, einen nächsten Vorausschau-IQ#-Multiplexer 162, einen Ursprungs-PR#-Multiplexer 164, einen nächsten Vorausschau-PR#- Multiplexer 164, einen Fang-IQ#-Multiplexer 170 und einen Fang-PR#- Multiplexer 172. Der Ursprungs-IQ#-Multiplexer 160 ist verbunden zum Empfangen der aktuellen Vorausschau-IQ#, die jedem logischen Register entspricht, von dem Vorausschau-Register-Zustand 84 und zum Empfangen der Bestimmungs- IQ#s, die von der IQ#/PR#-Steuer-Eineit 82 ausgegeben werden. Der nächste Vorausschau-IQ#-Multiplexer 162 ist ähnlich verbunden zum Empfangen der aktuellen Vorausschau-IQ#s und Bestimmungs-IQ#s. Der Ausgang des Ursprungs- IQ#-Multiplexers 160 ist als Pipeline an die Instruktions-Warteschlangen 36A- 36B angeschlossen, während der Ausgang des nächsten Vorausschau-IQ#- Multiplexers 162 als ein Eingang des Fang-IQ#-Multiplexers 170 angeschlossen ist. Der Fang-IQ#-Multiplexer 170 ist ferner mit einem Wiederherstellungs- Vorausschau-Register-Zustands-Bus 76A verbunden (ein Bereich des Wiederherstellungs-Vorausschau-Register-Zustands-Busses 76, der die wiederherzustellenden IQ#s befördert). Der Ursprungs-PR#-Multiplexer 164 ist verbunden zum Empfangen des aktuellen Vorausschau-PR#s, der jedem logischen Register entspricht, von dem Vorausschau-Register-Zustand 84 und zum Empfangen der Bestimmungs-PR#s, die von der IQ#/PR#-Steuer-Eineit 82 ausgegeben werden. Der nächste Vorausschau-PR#-Multiplexer 168 ist ähnlich verbunden zum Empfangen der aktuellen Vorausschau-PR#s und Bestimmungs-PR#s. Der Ausgang des Ursprungs-PR#-Multiplexers 164 ist als Pipeline an die Instruktions- Warteschlangen 36A-36B angeschlossen. Der Ausgang des nächsten Vorausschau-PR#-Multiplexers 168 ist an einen Fang-PR#-Multiplexer 172 angeschlossen, der ferner mit einem Wiederherstellungs-Vorausschau-Register-Zustands- Bus 76B verbunden ist (ein Bereich des Wiederherstellungs-Vorausschau- Register-Zustands-Busses 76, der die wiederherzustellenden PR#s befördert). Die Ursprungs-Virtuell-Register-Nummern, welche von der Register-Abtastungs- Einheit 80 zugewiesen werden, werden als Auswahl-Steuerungen dem Ursprungs-IQ#-Multiplexer 160 und dem Ursprungs-PR#-Multiplexer 164 bereitgestellt. Der virtuelle nächste Vorausschau-Zustand wird als Auswahl-Steuerungen dem nächsten Vorausschau-IQ#-Multiplexer 162 und dem nächsten Vorausschau-PR#-Multiplexer 168 gestellt. Fang-Steuerungen von dem PC-Silo 48 stellen Auswahl-Steuerungen für den Fang-IQ#-Multiplexer 170 und den Fang-PR#- Multiplexer 172 bereit.
  • Im Allgemeinen wählen der Ursprungs-IQ#-Multiplexer 160 und der Ursprungs- PR#-Multiplexer 164 die Ursprungs-IQ# und -PR# für jeden Ursprungs- Operanden von jeder ROP in Antwort auf die entsprechende Ursprungs-Virtuell- Register-Nummer aus, welche von der Register-Abtastungs-Einheit 80 bereitgestellt wird. Der Multiplexer 160 kann beispielsweise als ein paralleler Satz von Multiplexern implementiert sein (einen für jedes Ursprungs-Register vom jeder ROP), die angeschlossen sind zum Empfangen der Eingänge, wie für den Multiplexer 160 gezeigt, und zum Empfangen einer entsprechenden Ursprungs- Virtuell-Register-Nummer als eine Auswahl-Steuerung. Ähnlich kann der Multiplexer 164 als ein paralleler Satz von Multiplexern implementiert sein (einen für jedes Ursprungs-Register vom jeder ROP), die angeschlossen sind zum Empfangen der Eingänge, wie für den Multiplexer 164 gezeigt, und zum Empfangen einer entsprechenden Ursprungs-Virtuell-Register-Nummer als eine Auswahl- Steuerung. Falls die Ursprungs-Virtuell-Register-Nummer anzeigt, dass der aktuelle Vorausschau-Zustand der Ursprung für die IQ#/PR# ist, dann wird die in der Ursprungs-Virtuell-Register-Nummer enthaltene logische Register-Nummer verwendet, um eine der von dem Vorausschau-Register-Zustand 84 bereitgestellte IQ# und PR# auszuwählen. Falls, auf der anderen Hand, die Ursprungs-Virtuell- Register-Nummer eine vorherige Ausgabeposition anzeigt, dann wird die ausgegebene Positions-Nummer verwendet, um einer der von der Steuereinheit 82 zugewiesene Bestimmungs-IQ#/PR# auszuwählen. Die Steuereinheit 82 kann beispielsweise eine Bestimmungs-IQ# und -PR# bereitstellen, welche jeder Ausgabeposition entspricht. Auf der anderen Hand kann die Steuereinheit 82 eine begrenzte Anzahl von IQ# und PR# bereitstellen (kleiner als die Anzahl der ROPs in einer Zeile). In einem derartigen Ausführungsbeispiel kann eine Logik auf die Ursprungs-Virtuell-Register-Nummer und die Gültig-Hinweise für das Bestimmungs-Register für jede ROP angewendet werden, um eine der Bestimmungs- IQ#/PR#-Kombinationen auszuwählen.
  • Ähnlich wählen der nächste Vorausschau-IQ#-Multiplexer 162 und der nächste Vorausschau-PR#-Multiplexer 168 die IQ# und die PR# für jedes logische Register in Antwort auf den entsprechenden virtuellen nächsten Vorausschau-Zustand aus, welcher von der Register-Abtastungs-Einheit 80 bereitgestellt wird. Der Multiplexer 162 kann beispielsweise als ein paralleler Satz von Multiplexern implementiert sein (einen für jedes Ursprungs-Register von jeder ROP), die angeschlossen sind zum Empfangen der Eingänge, wie für den Multiplexer 162 gezeigt, und zum Empfangen einer entsprechenden Ursprungs-Virtueli-Register- Nummer als eine Auswahl-Steuerung. Ähnlich kann der Multiplexer 168 als ein paralleler Satz von Multiplexern implementiert sein (einen für jedes Ursprungs- Register vom jeder ROP), die angeschlossen sind zum Empfangen der Eingänge, wie für den Multiplexer 168 gezeigt, und zum Empfangen einer entsprechenden Ursprungs-Virtuell-Register-Nummer als eine Auswahl-Steuerung. Falls die Ursprungs-Virtuell-Register-Nummer anzeigt, dass der aktuelle Vorausschau- Zustand der Ursprung für die IQ#/PR# eines bestimmten logischen Registers ist, dann wird die in der Ursprungs-Virtuell-Register-Nummer enthaltene logische Register-Nummer verwendet, um eine der von dem Vorausschau-Register- Zustand 84 bereitgestellte IQ# und PR# auszuwählen. Falls, auf der anderen Hand, die Ursprungs-Virtuell-Register-Nummer eine Ausgabeposition anzeigt, dann wird die ausgegebene Positions-Nummer verwendet, um einer der von der Steuereinheit 82 zugewiesene Bestimmungs-IQ#/PR# auszuwählen.
  • Ein Vorteil kann durch die physische Trennung der Auswahl der IQ#s und PR#s basierend auf den virtuellen Register-Nummern, wie in Fig. 8 dargestellt, erzielt werden. Eine relativ große Anzahl von Bussen werden zu einer relativ kleinen Menge an Schaltungen geführt (d. h. Multiplexer repräsentiert durch die Multiplexer 160, 162, 164 und 168). Entsprechend wird die von der virtuellen/physischen Register-Abbildungseinheit 86 belegte Menge an Fläche durch die Busse von dem Vorausschau-Register-Zustand 84 und der IQ#/PR#-Steuereinheit 82 beherrscht. Da die IQ# und die PR# getrennte Werte sind, kann das Weiterleiten der Werte an getrennte Sätze von Multiplexern zu einer Verringerung der von der virtuellen/physischen Register-Abbildungseinheit 86 belegten Fläche führen. In einem Ausführungsbeispiel kann die Anzahl der Bits in einer IQ# und die Anzahl der Bits in einer PR# annähernd gleich sein. Entsprechend kann die Verlegung der IQ#- Busse auf einer Seite der virtuellen/physischen Register-Abbildungseinheit 86 und die Verlegung der PR#-Busse auf der anderen Seite der virtuellen/physischen Register-Abbildungseinheit 86 zu einem ziemlich symmetrischen Layout führen, bei welchem der Raum der Verdrahtung auf beiden Seiten effektiv genutzt wird. Ferner können die Instruktions-Warteschlangen physisch in einen Zuteilungs-Bereich getrennt werden (der die IQ#s zur Feststellung empfängt, wann die ROPs, von denen die aktuellen ROPs abhängig sind, ausgeführt worden sind und daher eine aus dem aktuellen Satz der ROPs zugeteilt werden kann) und einen Instruktions-Speicher (der die PR#s und andere für Instruktionsoperationen verwendete Informationen speichert, aber keine IQ#s speichert) geteilt werden. Entsprechend können die Instruktions-Warteschlangen 36A-36B physisch mit dem Zuteilungs-Bereich nahe zu den IQ#-Multiplexern und mit dem Instruktions-Speicher-Bereich nahe zu den PR#-Multiplexern konstruiert werden, was die Einsparungen bei der Fläche noch weiter steigert.
  • Die virtuelle/physische Register-Abbildungseinheit 86, wie sie in Fig. 8 gezeigt ist, handhabt ferner die Abbildung von einem nächsten Vorausschau-Register- Zustand für den Vorausschau-Register-Zustand 84 in Antwort auf eine Ausnahme-Bedingung. Der Fang-IQ#-Multiplexer 170 wird verwendet, wenn Fallen entdeckt werden auf die Ausführung hin zum Weiterleiten der IQ#s, welche dem Wiederherstellungs-Vorausschau-Register-Zustand von dem Abbildungssilo 32 entsprechen, zum Umstossen des von dem Multiplexer 162 bereitgestellten nächsten Vorausschau-Zustands. Der PC-Silo 48 kann die Falle als eine Auswahl- Steuerung an den Multiplexer 170 signalisieren. Ähnlich kann die PR# innerhalb des Wiederherstellungs-Vorausschau-Register-Zustands durch den Fang-PR#- Multiplexer 172 als Antwort auf ein Fang-Signal ausgewählt werden. Es ist festzustellen, dass in anderen Ausführungsbeispielen andere Verfahren zur Wiederherstellung aus Ausnahmebedingungen verwendet werden können. Zum Beispiel können Ausnahmebedingungen auf das Zurückziehen hin behandelt werden.
  • Nun Fig. 9 zuwendend wird eine Tabelle 180, darstellend die in einem Eintrag innerhalb des Abbildungssilos 32 (d. h. einen Eintrag entsprechend einer Zeile von ROPs) gespeicherte Information, gezeigt. Andere Ausführungsbeispiele sind möglich und betrachtbar.
  • Wie in Fig. 180 gezeigt, wird ein der Zeile entsprechendes R# in einem R# (Zeilenbereich) Feld gespeichert. Das gespeicherte R# ist der Zeilenbereich der R#s, welche der Zeile der ROPs von dem PC-Silo 48 zugewiesen wurden. Der Zeilenbereich ist derselbe für jede ROP innerhalb der Zeile, während ein Verschiebungs-Bereich der R# die Ausgabeposition innerhalb der Zeile einer bestimmten ROP identifiziert. Entsprechend kann der Eintrag des Silos (der der Zeile als Ganze entspricht) mit einer ROP verbunden werden, die eine Ausnahme erfährt, durch das Vergleichen des Zeilenbereichs der R# für die ROP mit der gespeicherten R#.
  • Ferner wird ein Hinweis darauf, welche ROPs innerhalb der Zeile gültig sind, in einem gültige-ROPs-innerhalb-einer-Zeile-Feld des Eintrags des Abbildungssilos gespeichert. Beispielsweise kann der Hinweis ein Bit pro ROP sein. Wenn das Bit gesetzt ist, ist die entsprechende ROP innerhalb der Zeile gültig. Ist das entsprechende Bit gelöscht, ist die entsprechende ROP innerhalb der Zeile nicht gültig. Darüber hinaus wird ferner ein Hinweis darauf, welche ROPs ein Bestimmungs- Logisch-Register haben, in einem ROP-Register-Schreib-Feld gespeichert. Wieder kann der Hinweis ein Bit pro ROP sein. Wenn das Bit gesetzt ist, aktualisiert die entsprechende ROP innerhalb der Zeile ein Bestimmungs-Register. Ist das Bit gelöscht, aktualisiert die entsprechende ROP innerhalb der Zeile das Bestimmungs-Register nicht. Der Hinweis darauf, welche ROPs ein Bestimmungs- Register haben, wird benutzt, um zu entscheiden, welche der zugewiesenen PR#s und welche der zugewiesenen IQ#s Teil des Wiederherstellungszustandes im Fall des Auftretens einer Ausnahme werden, wie unten beschrieben.
  • Die den ROPs zugewiesenen PR#s und IQ#s, welche Bestimmungs-Register haben, werden in zugewiesene-PR#- beziehungsweise in zugewiesene-IQ#-Feldern des Eintrags beibehalten. Zusätzlich wird die logische Register-Nummer von jedem Bestimmungs-Register in einem logische-Register-Nummern-Feld gespeichert. Die logischen Register-Nummern werden verwendet, um festzustellen, welche logischen Register innerhalb des Wiederherstellungszustandes die zugewiesenen PR#s und IQ#s empfangen sollen, wie unten beschrieben. Ferner werden, nach dem erfolgreichen Zurückziehen der Zeile, die logischen Register- Nummern und entsprechende PR#s zum Speichern zu dem architekturisierten Neubenennungs-Block 34 befördert.
  • Ein Hinweis darauf, welche ROPs innerhalb einer Zeile das Bedingungs-Code- Register aktualisieren, wird in einem CC-Schreib-Feld gespeichert. Jeder Bereich des Bedingungscodes, der einzeln aktualisiert wird, kann durch ein Bit innerhalb des CC-Schreib-Feldes repräsentiert werden und ein Satz von Bits kann mit jedem Register-Schreiben, das in dem ROP-Register-Schreib-Feld angezeigt wird, verbunden werden. Die PR# und IQ# der entsprechenden ROP (gespeichert in den zugewiesene-PR#- und -IQ#-Feldern) kann benutzt werden zur Wiederherstellung des Vorausschau-Bedingungs-Code-Registers innerhalb des Vorausschau-Register-Zustands nach der Feststellung einer Ausnahme. Zusätzlich zeigt das CC-Schreib-Feld an, welche PR#s innerhalb des zugewiesene-PR#-Feldes dem architekturisierten Bedingungs-Code-Zustand nach dem erfolgreichen Zurückziehen der Zeile von ROPs entspricht. Wie oben erwähnt wird in dem vorliegenden Ausführungsbeispiel ein einzelnes physisches Register verwendet um sowohl eine Ganzzahl-Register-Aktualisierung als auch entsprechende Bedingungs- Code-Aktualisierungen zu speichern.
  • Der in dem Vorausschau-Register-Zustand 84 gespeicherte aktuelle Vorausschau-Register-Zustand wird vor dem Ausgeben der dem Eintrag des Abbildungssilos entsprechenden Zeile von ROPs in einem aktueller-Vorausschau- Register-Zustand-Feld des Eintrags gespeichert. Der aktuelle Vorausschau- Register-Zustand dient als eine Basis für den Wiederherstellungs-Vorausschau- Register-Zustand 84 für den Fall einer Ausnahme innerhalb der Zeile.
  • Schließlich werden die jeder Ausgabeposition entsprechenden FP-TOS und- Gültig-Bits innerhalb eines FP-TOS-und-Gültig-Bits-Feld des Eintrags gespeichert. Die der einer Ausnahme erfahrenden ROP entsprechenden FP-TOS und- Gültig-Bits werden in das FP-TOS-und-Markierungs-Wort innerhalb des Vorausschau-Register-Zustands 84 nach der Entdeckung einer Ausnahme zurückgespeichert.
  • Nun Fig. 10 zuwendend ist ein Blockdiagramm eines beispielhaften Vorausschau- Register-Zustand-Eintrags 182 gezeigt, der von einem Ausführungsbeispiel des Vorausschau-Register-Zustands 84 für das logische Register verwendet werden kann. Der Eintrag 182 umfaßt ein Gültig-Feld 184, ein IQ#-Feld 186 und ein PR#-Feld 188. Das Gültig-Feld 184 zeigt an, ob das IQ#-Feld gültig ist oder nicht. Eine IQ# ist gültig bis die entsprechende ROP von den Instruktions- Warteschlangen 36A-36B abgeschlossen ist. Entsprechend kann der Vorausschau-Zustand 84 Hinweise von den Ausführungs-Kernen 40 und der Lade/Speicher-Einheit 42 empfangen, welche IQ#s abgeschlossen werden. Auf das Entdecken eines Treffers kann der Vorausschau-Zustand 84 den Gültig-Hinweis zurücksetzen. Der Gültig-Hinweis kann beispielsweise ein Bit sein, anzeigend ob Gültig gesetzt ist und Ungültig frei ist. Das IQ#-Feld 186 speichert die IQ# der ROP, welche zuletzt das logische Register aktualisierte und das PR#-Feld 188 speichert die PR# der physischen Register, die der ROP als Bestimmungs- Register zugewiesen sind.
  • Bezugnehmend auf Fig. 11 ist ein Flußdiagramm, darstellend eine Operation des Abbildungssilos 32 in Antwort auf einen von dem PC-Silo 48 angezeigten Ausnahme-Zustand, gezeigt. Andere Ausführungsbeispiele sind möglich und betrachtbar. Während die in Fig. 11 gezeigten Schritte zum leichteren Verständnis in einer bestimmten Reihenfolge dargestellt sind, kann jede geeignete Reihenfolge verwendet werden. Ferner können Schritte in innerhalb des Abbildungssilos 32 verwendeten kombinatorischen Logiken parallel ausgeführt werden.
  • Wie im Schritt 190 gezeigt, camt der Abbildungssilo 32 die von dem PC-Silo 48 bereitgestellte R# gegen das R# (Zeilenbereich) Feld der in dem Abbildungssilo 32 gespeicherten Einträge. Die von dem PC-Silo 48 bereitgestellte R# identifiziert eine bestimmte ROP. Jedoch wird zum Zweck der Kontrolle gegen den Abbildungssilo 32 der Zeilenbereich der R# gecamt. Einträge, welche neuer sind als die bereitgestellte R# (d. h. Instruktionen nachfolgend der Ausnahme in Programmreihenfolge), werden innerhalb des Abbildungssilos 32 gestrichen. Die in dem zugewiesene-PR#-Feld des gestrichenen Eintrags gespeicherte PR# wird freigemacht. In einem Ausführungsbeispiel werden die PR#s der gestrichenen Einträge über mehrere Taktzyklen freigemacht, mit einer Rate von einem Eintrag pro Taktzyklus. Der Siloeintrag, für den die cam einen Treffer anzeigt, ist der ausgewählte Abbildungssilo-Eintrag.
  • Der in dem ausgewählten Abbildungssilo-Eintrag gespeicherte aktuelle Vorausschau-Register-Zustand (d. h. der aktuelle Vorausschau-Zustand vor der Zeile der ROPs, welche die die Ausnahme erfahrende ROP umfaßt, wird zu dem Vorausschau-Zustand in dem aktuellen Vorausschau-Register-Zustand 84 wiederhergestellt (Schritt 192)). Ferner werden die FP-TOS-und-Gültig-Bits in dem Vorausschau-Register-Zustand 84 zu dem in dem ausgewählten Abbildungssilo-Eintrag gespeicherten Wert für die Ausgabeposition der die Ausnahme erfahrenden ROP wiederhergestellt (Schritt 194).
  • Das ROP-Register-Schreib-Feld in dem ausgewählten Abbildungssilo-Eintrag ist maskiert für die Schreibvorgänge, welche vor der die Ausnahme erfahrenden ROP sind. In anderen Worten werden ROP-Register-Schreibvorgänge, die der die Ausnahme erfahrenden ROP nachfolgen, demaskiert, sodass sie nicht als auf die Maskierung folgende Schreibvorgänge erscheinen. Die verbleibenden Schreibvorgänge (der Maskierung nachfolgend) werden untersucht, um den neuesten Schreibvorgang für jedes Register zu entdecken (d. h. wenn zwei oder mehr der verbleibenden Schreibvorgänge für das gleiche Register sind, wird der neueste Schreibvorgang zurückgehalten). Der aktuelle Vorausschau-Zustand wird mit den Ergebnissen aktualisiert (Schritt 196). Es ist festzuhalten, dass Schritt 192 und Schritt 196 in dem Abbildungssilo 32 vor dem Übermitteln des Wiederherstellungs-Vorausschau-Register-Zustands an den Vorausschau-Register-Zustand 84 ausgeführt werden können. Alternativ kann der aktuelle Vorausschau-Register- Zustand zu dem Vorausschau-Register-Zustand 84 wiederhergestellt werden und danach im Hinblick auf Schritt 196 aktualisiert werden.
  • Ferner wird das ROP-Register-Schreib-Feld in dem gewählten Abbildungssilo- Eintrag (d. h. der ursprüngliche Wert vor der Maskierung des Schritts 196) für die Register-Schreibvorgänge maskiert, welche der die Ausnahme erfahrenden ROP folgen. Anders gesagt werden die Register-Schreibvorgänge, welche vor der die Ausnahme erfahrenden ROP sind, wegmaskiert. Die PR#s der verbleibenden Register-Schreibvorgänge werden freigemacht (Schritt 198). Das in Fig. 11 gezeigte Flußdiagramm kann vorteilhaft ein schnelles Verfahren zum Wiederherstellen des Vorausschau-Zustands in Antwort auf eine Ausnahme bereitstellen.
  • Es ist festzustellen, dass die Begriffe Ursprungs-Virtuell-Register-Nummer und Virtuell-Ursprungs-Register-Nummer oben benutzt worden sein könnten. Es ist beabsichtigt, dass diese Begriffe dieselbe Bedeutung haben. Ferner ist festzustellen, dass wie oben erwähnt Ausführungsbeispiele, in denen jede in der von dem Prozessor 10 verwendeten Instruktions-Satz-Architektur angegebene Instruktion eine einzelne Instruktions-operation abbildet, innerhalb der Bedeutung der Instruktions-Operation, wie sie hier definiert ist, betrachtet werden.
  • Nun Fig. 12 zuwendend wird ein Blockdiagramm eines Ausführungsbeispiels eines Computer-Systems 200 gezeigt, das einen über eine Bus-Brücke 202 mit einer Vielfalt von Systemkomponenten verbundenen Prozessor 10 enthält. Weitere Ausführungsbeispiele sind möglich und betrachtbar. In dem dargestellten System ist ein Hauptspeicher 204 über einen Speicher-Bus 206 mit der Bus-Brücke 202 verbunden und eine Grafiksteuerung 208 ist über einen AGP-Bus 210 mit der Bus-Brücke 202 verbunden. Schließlich ist eine Vielzahl von PCI-Geräten 212A- 212B über einen PCI-Bus 214 mit der Bus-Brücke 202 verbunden. Eine sekundäre Bus-Brücke 216 kann ferner bereitgestellt sein zur Anpassung einer elektrischen Schnittstelle an eine oder mehrere EISA- oder ISA-Geräte 218 über einen EISA/ISA-Bus 220. Der Prozessor 10 ist über das externe Interface 52 mit der Bus-Brücke 202 verbunden.
  • Die Bus-Brücke 202 stellt eine Schnittstelle zwischen dem Prozessor 10, dem Hauptspeicher 204, der Grafiksteuerung 208 und an den PCI-Bus 214 angeschlossenen Geräten bereit. Wenn eine Operation von einem der an die Bus- Brücke 202 angeschlossenen Geräte empfangen wird, identifiziert die Bus-Brücke 202 das Ziel der Operation (z. B. ein bestimmtes Gerät oder im Falle des PCI- Busses 214, dass das Ziel auf dem PCI-Bus 214 ist). Die Bus-Brücke 202 leitet die Operation zu dem angezielten Gerät. Die Bus-Brücke 202 übersetzt im Allgemeinen eine Operation von dem von dem Ursprungs-Gerät benutzten Protokoll in das von dem Bestimmungs-Gerät benutzte Protokoll.
  • Zusätzlich zum Bereitstellen einer Schnittstelle zu einem ISA/EISA-Bus für den PCI-Bus 214 kann die sekundäre Bus-Brücke 216 ferner zusätzliche Funktionalität, wie gewünscht, beinhalten. Beispielsweise kann in einem Ausführungsbeispiel die sekundäre Bus-Brücke 216 einen Master-PCI-Arbitrator (nicht gezeigt) zum arbitrieren der Herrschaft über den PCI-Bus 214 umfassen. Eine Eingangs/Ausgangs-Steuerung (nicht gezeigt), entweder extern oder in die sekundäre Bus-Brücke 216 integriert, kann ebenso in dem Computer-System 200 integriert sein, um operationeile Unterstützung für eine Tastatur und eine Maus 222 und für verschiedene serielle und parallel Anschlüsse, wie gewünscht, bereitzustellen. Eine externe Cache-Einheit (nicht gezeigt) kann ferner in anderen Ausführungsbeispielen zwischen dem Prozessor 10 und der Bus-Brücke 202 mit dem externen Interface 52 verbunden sein. Alternativ kann der externe Cache an die Bus-Brücke 202 angeschlossen sein und die Cache-Steuerlogik für den externen Cache kann in der Bus-Brücke 202 integriert sein.
  • Der Hauptspeicher 204 ist ein Speicher, in dem Anwendungsprogramme gespeichert werden und von dem der Prozessor 10 primär ausführt. Ein geeigneter Hauptspeicher 204 umfaßt DRAM (Dynamischer Speicher mit wahlfreiem Zugriff) und vorzugsweise eine Mehrzahl von Bänken von SDRAM (Synchrones DRAM).
  • Die PCI-Geräte 212A-212B sind erläuternd für eine Vielzahl von Peripheriegeräten, wie zum Beispiel Netzwerk-Interface-Karten, Videobeschleunigern, Audiokarten, Festplatten- oder Disketten- oder Laufwerk-Steuerungen, SCSI (Interface für kleine Computer-Systeme) Adaptern und Telefoniekarten. Ähnlich ist das ISA- Gerät 218 erläuternd für zahlreiche Typen von Peripheriegeräten, wie zum Beispiel ein Modem, eine Soundkarte und eine Vielzahl von Datenbeschaffungsgeräten wie GPIB- oder Feldbus-Interface-Karten.
  • Die Grafiksteuerung 208 ist zur Steuerung des Renderns von Text und Bildern auf einem Display 226 vorgesehen. Die Graflksteuerung 208 kann typischerweise einen Grafikbeschleuniger verwenden, der allgemein im Stand der Technik bekannt ist zum Rendern von dreidimensionalen Datenstrukturen, welche wirksam vom und in den Hauptspeicher 204 verschoben werden können. Die Grafiksteuerung 208 kann daher dahingehend ein Master des AGP-Busses 210 sein, dass sie Zugriff auf ein Zielinterface innerhalb der Bus-Brücke 202 beantragen und erhalten kann, um dadurch Zugriff auf den Hauptspeicher 204 zu erhalten. Ein spezieller Grafik-Bus erlaubt die schnelle Beschaffung von Daten aus dem Hauptspeicher 204. Für gewisse Operationen kann die Grafiksteuerung 208 ferner zur Erzeugung von PCI-Protokoll-Transaktionen auf dem AGP-Bus 210 konfiguriert sein. Das AGP-Interface der Bus-Brücke 202 kann daher Funktionalität zur Unterstützung sowohl von AGP-Protokoll-Transaktionen als auch von PCI-Ziel-und- Auslöser-Transaktionen umfassen. Das Display 226 ist jedes elektronische Display, auf welchem ein Bild oder ein Text dargestellt werden kann. Ein geeignetes Display umfaßt ein Kathodenstrahlröhre ("CRT"), ein Flüssigkristalldisplay ("LCD"), usw.
  • Es ist festzuhalten, dass, obwohl AGP-, PCI- und ISA- oder EISA-Busse als Beispiele in der obigen Beschreibung benutzt worden sind, jegliche Bus- Architekturen wie gewünscht ersetzt werden können. Es ist ferner festzustellen, dass das Computer-System 200 ein mehrere Prozessoren enthaltenes Multiprozessor-Computer-System sein kann (z. B. ist Prozessor 10a als eine optionale Komponente des Computer-Systems 200 gezeigt). Der Prozessor 10a kann dem Prozessor 10 ähnlich sein. Genauer gesagt kann der Prozessor 10a eine identische Kopie des Prozessors 10 sein. Der Prozessor 10a kann das externe Interface 52 mit dem Prozessor 10 teilen (wie in Fig. 12 gezeigt) oder er kann über einen unabhängigen Bus mit der Bus-Brücke 202 verbunden sein.
  • In Übereinstimmung mit der obigen Offenbarung wurde ein Prozessor gezeigt, welcher mit einem Register-Neubenennungs-Schema arbeitet. In einem Ausführungsbeispiel ist das Neubenennungs-Schema in Stufen unter Benutzung einer virtuellen Register-Nummer unterteilt. Vorteilhafterweise kann eine hochfrequente Operation bei der Benutzung des Schemas möglich sein. In einem anderen Ausführungsbeispiel wird eine schnelle Wiederherstellung von Ausnahmen durchgeführt durch das Anlegen eines Silos für einen jeder Zeile entsprechenden aktuellen Vorausschau-Zustands und das Festhalten der Register-Schreibvorgänge innerhalb der Zeile. In noch einem weiteren Ausführungsbeispiel wird das Freimachen der Neubenennungs-Register verwaltet, um es dem selben Neubenennungs-Register zu erlauben, mehr als einem logischem Register zu entsprechen. Eine effiziente Benutzung der physischen Register kann dadurch verwendet werden.
  • Zahlreiche Veränderungen und Modifikationen können mit dem beschriebenen Ausführungsbeispiel gebildet werden. Es ist beabsichtigt, dass die vorliegende Erfindung alle derartigen Veränderungen und Modifikationen umfaßt, die in den Umfang der begleitenden Ansprüche fallen.

Claims (19)

1. Verfahren zum Handhaben physischer Register in einem Prozessor (10), mit den folgenden Schritten:
Zuweisen eines ersten physischen Registers, das aus einer Frei-Liste gewählt ist, die für die Zuweisung freie physische Register enthält, zu einem Bestimmungs-Operanden einer Instruktions-operation, wobei der Bestimmungs-Operand ein erstes logisches Register identifiziert;
Zurückziehen der Instruktions-Operation;
Aktualisieren eines architekturisierten Neubenennungs-Blocks (34) mit der dem ersten physischen Register entsprechenden Nummer des ersten physischen Registers auf das Zurückziehen hin;
Ausgeben der Nummer eines zweiten physischen Registers aus dem architekturisierten Neubenennungs-Block (34) auf das Zurückziehen hin, wobei diese ein zuvor dem ersten logischen Register in dem architekturisierten Neubenennungs-Block (34) entsprechendes zweites physisches Register identifiziert; und
Hinzuaddieren des zweiten physischen Registers zu der Frei-Liste.
2. Verfahren nach Anspruch 1, ferner mit dem Verhindern des Hinzuaddierens des zweiten physischen Registers zu der Frei-Liste auf die Feststellung hin, dass die Nummer des zweiten physischen Registers ein zweites logisches Register in dem architekturisierten Neubenennungs-Block (34) repräsentiert.
3. Verfahren nach Anspruch 1, ferner mit dem Hinzuaddieren des zweiten physischen Registers zu der Frei-Liste auf die Feststellung hin, dass die Nummer des zweiten physischen Registers nicht das zweite logische Register in dem architekturisierten Neubenennungs-Block (34) repräsentiert.
4. Verfahren nach Anspruch 3, ferner mit dem Vergleichen der Nummer des zweiten physischen Registers zu dem in dem architekturisierten Neubenennungs-Block (34) gespeicherten Physisch-Register-Nummern nach dem Aktualisieren zwecks Durchführens der Feststellung, dass die Nummer des zweiten physischen Registers ein zweites logisches Register in dem architekturisierten Neubenennungs-Block (34) repräsentiert.
5. Verfahren nach Anspruch 4, bei dem das Verhindern durchgeführt wird als Reaktion darauf, dass bei dem Vergleich mindestens eine Übereinstimmung mit der Nummer des zweiten physischen Registers festgestellt wird.
6. Verfahren nach Anspruch 5, bei dem das Hinzuaddieren zu der Frei-Liste durchgeführt wird als Reaktion darauf, dass bei dem Vergleich mindestens keine Übereinstimmung mit der Nummer des zweiten physischen Registers festgestellt wird.
7. Verfahren nach Anspruch 1, ferner mit dem Speichern der Nummer des ersten physischen Registers in einem Silo (32) auf das Zuweisen hin.
8. Verfahren nach Anspruch 7, bei dem das Zurückziehen durchgeführt wird, wenn die Nummer des ersten physischen Registers eine Kopfposition in dem Silo (32) erreicht hat.
9. Verfahren nach Anspruch 1, ferner mit den folgenden Schritten:
Zurückziehen einer zweiten Instruktions-operation, bei der ein drittes physisches Register einem Ziel-Register der zweiten Instruktions-Operation zugewiesen wird, wobei das Ziel-Register das zweite logische Register aufweist;
Aktualisieren des architekturisierten Neubenennungs-Blocks (34) mit einer dem dritten physischen Register entsprechenden Dritt-Physisch-Register- Nummer auf das Zurückziehen hin;
Lesen der Nummer des zweiten physischen Registers aus dem architekturisierten Neubenennungs-Block (34) auf das Zurückziehen hin; und
Hinzuaddieren der Nummer des zweiten physischen Registers zu der Freiliste.
10. Prozessor (10) mit:
einer Abbildungseinheit (30), die zum Zuweisen eines ersten physischen Registers zu einem Ziel-Operanden einer Instruktions-operation konfiguriert ist, wobei die Abbildungseinheit (30) ferner konfiguriert ist zum Führen einer Frei-Liste, die angibt, welche physischen Register frei zur Zuweisung sind, und wobei die Abbildungseinheit (30) zum Wählen des ersten physischen Registers aus der Frei-Liste konfiguriert ist; und
einem architekturellen Neubenennungs-Block (34), der zum Empfang eines Hinweises angeordnet ist, dass die Instruktions-operation zurückgezogen wird und dem ersten physischen Register eine Nummer des ersten physischen Registers entspricht; wobei der architekturelle Neubenennungs-Block (34) konfiguriert ist zum Erfassen der Nummer des ersten physischen Registers und zum Rückhalten der Nummer des ersten physischen Registers als dem ersten logischen Register entsprechend auf den Hinweis hin, dass die Instruktions-operation zurückgezogen wird; und wobei der architekturelle Neubenennungs-Block (34) konfiguriert ist zum Erzeugen einer Nummer des zweiten physischen Registers, die ein zweites physisches Register identifiziert, das zuvor einem ersten logischen Register entsprach, welches durch den Ziel-Operanden auf den Hinweis des Zurückziehens der Instruktions-Operation hin identifiziert wurde;
wobei die Abbildungseinheit (30) zum Hinzufügen des Nummer des zweiten physischen Registers zu der Frei-Liste konfiguriert ist.
11. Prozessor nach Anspruch 10, bei dem die Abbildungseinheit (30) konfiguriert ist zum Verhindern des Hinzuaddierens der Nummer des zweiten physischen Registers zu der Frei-Liste, falls das zweite physische Register das zweite logische Register repräsentiert.
12. Prozessor nach Anspruch 11, bei dem die Abbildungseinheit (30) konfiguriert ist zum Hinzuaddieren der Physisch-Register-Nummer zu der Frei-Liste, falls das zweite physische Register nicht das zweite logische Register repräsentiert.
13. Prozessor nach Anspruch 11, bei dem der architekturelle Neubenennungs- Block (34) konfiguriert ist zum Feststellen, ob die Nummer des zweiten physischen Registers zusätzlich dem zweiten logischen Register entspricht, indem er nach dem Erfassen der Nummer des ersten physischen Registers die Nummer des zweiten physischen Registers mit den Physisch-Register- Nummern in dem architekturellen Neubenennungs-Block (34) vergleicht.
14. Prozessor nach Anspruch 13, bei dem der architekturelle Neubenennungs- Block (34) einen inhaltsadressierbaren Speicher aufweist.
15. Prozessor nach Anspruch 11, ferner mit einem Silo (32), der mit der Abbildungseinheit (30) verbunden ist, wobei der Silo (32) konfiguriert ist zum Speichern der Nummer des ersten physischen Registers bei Zuweisung zu der Instruktions-Operation durch die Abbildungseinheit (30).
16. Prozessor nach Anspruch 15, bei dem der Silo (32) ferner mit dem architekturellen Neubenennungs-Block (34) verbunden ist und bei dem der Silo (32) zum Ausgeben der Nummer des ersten physischen Registers beim Zurückziehen der Instruktions-Operation konfiguriert ist.
17. Computer-System mit:
einem Prozessor (10) nach einem der Ansprüche 10 bis 16, und
einer mit dem Prozessor (10) verbundenen Eingangs-/Ausgangs-(I/O)- Einrichtung, die konfiguriert ist zur Kommunikation zwischen dem Computer-System und einem weiteren Computer-System, mit dem die I/O- Einrichtung verbunden ist.
18. Computer-System nach Anspruch 17, bei dem der architekturelle Neubenennungs-Block (34) ferner konfiguriert ist zum Feststellen, ob die Nummer des zweiten physischen Registers zusätzlich dem zweiten logischen Register entspricht, und bei dem die Abbildungseinheit (30) konfiguriert ist zum Verhindern des Hinzuaddierens der Nummer des zweiten physischen Registers zu der Frei-Liste, falls das zweite physische Register das zweite logische Register repräsentiert.
19. Computer-System nach Anspruch 17, ferner mit einem zweiten Prozessor (10a) mit:
einer Abbildungseinheit (30), die zum Zuweisen eines ersten physischen Registers zu einem Ziel-Operanden einer Instruktions-operation konfiguriert ist, wobei die Abbildungseinheit (30) ferner konfiguriert ist zum Führen einer Frei-Liste, die angibt, welche physischen Register frei zur Zuweisung sind, und wobei die Abbildungseinheit (30) zum Wählen des ersten physischen Registers aus der Frei-Liste konfiguriert ist; und
einem architekturellen Neubenennungs-Block (34), der zum Empfang eines Hinweises angeordnet ist, dass die Instruktions-operation zurückgezogen wird und dem ersten physischen Register eine Nummer des ersten physischen Registers entspricht; wobei der architekturelle Neubenennungs-Block (34) konfiguriert ist zum Erfassen der Nummer des ersten physischen Registers und zum Rückhalten der Nummer des ersten physischen Registers als dem ersten logischen Register entsprechend auf den Hinweis hin, dass die Instruktions-Operation zurückgezogen wird; und wobei der architekturelle Neubenennungs-Block konfiguriert ist zum Erzeugen einer Nummer des zweiten physischen Registers, die ein zweites physisches Register identifiziert, das zuvor einem ersten logischen Register entsprach, welches durch den Ziel-Operanden auf den Hinweis des Zurückziehens der den Ziel-Operanden auf den Hinweis des Zurückziehens der Instruktionsoperation hin identifiziert wurde;
wobei die Abbildungseinheit (30) zum Hinzufügen des Nummer des zweiten physischen Registers zu der Frei-Liste konfiguriert ist.
DE69903554T 1998-07-31 1999-01-18 Prozessor konfiguriert zur selektiven freigabe von physikalischen registern beim befehlsausführungsabschluss Expired - Lifetime DE69903554T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/127,094 US6230262B1 (en) 1998-07-31 1998-07-31 Processor configured to selectively free physical registers upon retirement of instructions
PCT/US1999/001048 WO2000007097A1 (en) 1998-07-31 1999-01-18 Processor configured to selectively free physical registers upon retirement of instructions

Publications (2)

Publication Number Publication Date
DE69903554D1 DE69903554D1 (de) 2002-11-21
DE69903554T2 true DE69903554T2 (de) 2003-06-18

Family

ID=22428274

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69903554T Expired - Lifetime DE69903554T2 (de) 1998-07-31 1999-01-18 Prozessor konfiguriert zur selektiven freigabe von physikalischen registern beim befehlsausführungsabschluss

Country Status (6)

Country Link
US (1) US6230262B1 (de)
EP (1) EP1099158B1 (de)
JP (1) JP3866920B2 (de)
KR (1) KR100572040B1 (de)
DE (1) DE69903554T2 (de)
WO (1) WO2000007097A1 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6253310B1 (en) * 1998-12-31 2001-06-26 Intel Corporation Delayed deallocation of an arithmetic flags register
US6266763B1 (en) * 1999-01-05 2001-07-24 Advanced Micro Devices, Inc. Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values
JP3817436B2 (ja) 2000-09-28 2006-09-06 株式会社東芝 プロセッサおよびリネーミング装置
WO2002054228A1 (en) * 2000-12-06 2002-07-11 University Of Bristol Register renaming
US7043626B1 (en) 2003-10-01 2006-05-09 Advanced Micro Devices, Inc. Retaining flag value associated with dead result data in freed rename physical register with an indicator to select set-aside register instead for renaming
US20080077782A1 (en) * 2006-09-26 2008-03-27 Arm Limited Restoring a register renaming table within a processor following an exception
US20080148022A1 (en) * 2006-12-13 2008-06-19 Arm Limited Marking registers as available for register renaming
US9052909B2 (en) 2011-12-07 2015-06-09 Arm Limited Recovering from exceptions and timing errors
US8738971B2 (en) 2011-12-07 2014-05-27 Arm Limited Limiting certain processing activities as error rate probability rises
US9075621B2 (en) 2011-12-23 2015-07-07 Arm Limited Error recovery upon reaching oldest instruction marked with error or upon timed expiration by flushing instructions in pipeline pending queue and restarting execution
US8640008B2 (en) 2011-12-23 2014-01-28 Arm Limited Error recovery in a data processing apparatus
GB2496934B (en) * 2012-08-07 2014-06-11 Imagination Tech Ltd Multi-stage register renaming using dependency removal
US20160378480A1 (en) * 2015-06-27 2016-12-29 Pavel G. Matveyev Systems, Methods, and Apparatuses for Improving Performance of Status Dependent Computations
CN114356420B (zh) * 2021-12-28 2023-02-17 海光信息技术股份有限公司 指令流水线的处理方法及装置、电子装置及存储介质

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AT354159B (de) 1975-02-10 1979-12-27 Siemens Ag Assoziativspeicher mit getrennt assoziierbaren bereichen
US4453212A (en) 1981-07-13 1984-06-05 Burroughs Corporation Extended address generating apparatus and method
US4928223A (en) 1982-10-06 1990-05-22 Fairchild Semiconductor Corporation Floating point microprocessor with directable two level microinstructions
US4807115A (en) 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
EP0239081B1 (de) 1986-03-26 1995-09-06 Hitachi, Ltd. Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen
AU587714B2 (en) 1986-08-27 1989-08-24 Amdahl Corporation Cache storage queue
US5067069A (en) 1989-02-03 1991-11-19 Digital Equipment Corporation Control of multiple functional units with parallel operation in a microcoded execution unit
US5226126A (en) 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
US5136697A (en) 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5129067A (en) 1989-06-06 1992-07-07 Advanced Micro Devices, Inc. Multiple instruction decoder for minimizing register port requirements
US5226130A (en) 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5053631A (en) 1990-04-02 1991-10-01 Advanced Micro Devices, Inc. Pipelined floating point processing unit
US5058048A (en) 1990-04-02 1991-10-15 Advanced Micro Devices, Inc. Normalizing pipelined floating point processing unit
EP0459232B1 (de) 1990-05-29 1998-12-09 National Semiconductor Corporation Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür
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
GB9112754D0 (en) 1991-06-13 1991-07-31 Int Computers Ltd Data processing apparatus
GB9123271D0 (en) 1991-11-02 1991-12-18 Int Computers Ltd Data processing system
GB2263987B (en) 1992-02-06 1996-03-06 Intel Corp End bit markers for instruction decode
GB2263985B (en) 1992-02-06 1995-06-14 Intel Corp Two stage window multiplexors for deriving variable length instructions from a stream of instructions
IE80854B1 (en) 1993-08-26 1999-04-07 Intel Corp Processor ordering consistency for a processor performing out-of-order instruction execution
US5784589A (en) 1993-10-18 1998-07-21 Cyrix Corporation Distributed free register tracking for register renaming using an availability tracking register associated with each stage of an execution pipeline
US5630149A (en) 1993-10-18 1997-05-13 Cyrix Corporation Pipelined processor with register renaming hardware to accommodate multiple size registers
EP0651321B1 (de) 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superskalarmikroprozessoren
US5546554A (en) 1994-02-02 1996-08-13 Sun Microsystems, Inc. Apparatus for dynamic register management in a floating point unit
US5481693A (en) 1994-07-20 1996-01-02 Exponential Technology, Inc. Shared register architecture for a dual-instruction-set CPU
US5675759A (en) 1995-03-03 1997-10-07 Shebanow; Michael C. Method and apparatus for register management using issue sequence prior physical register and register association validity information
EP0851343B1 (de) 1996-12-31 2005-08-31 Metaflow Technologies, Inc. System zur Ausführung von Gleitkommaoperationen
JP3452771B2 (ja) * 1997-10-02 2003-09-29 富士通株式会社 命令制御システム及びその方法
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

Also Published As

Publication number Publication date
JP3866920B2 (ja) 2007-01-10
KR20010053623A (ko) 2001-06-25
WO2000007097A1 (en) 2000-02-10
EP1099158B1 (de) 2002-10-16
US6230262B1 (en) 2001-05-08
JP2002521762A (ja) 2002-07-16
EP1099158A1 (de) 2001-05-16
DE69903554D1 (de) 2002-11-21
KR100572040B1 (ko) 2006-04-18

Similar Documents

Publication Publication Date Title
DE69904189T2 (de) Konfigurierter prozessor zur abbildung von logischen registernummern auf physikalische registernummern unter verwendung von virtuellen registernummern
DE60005860T2 (de) Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle
DE69032465T2 (de) Prozessorarchitektur mit entkoppelter Befehlsbereitstellung
DE69518362T2 (de) Wiedersynchronisierung eines Superskalarprozessors
DE69131637T2 (de) Registerhaltige Datenbearbeitung in einem Prozessor mit reduziertem Befehlssatz
DE69508303T2 (de) Superskalarmikroprozessor mit einer Vorrichtung zur Namenänderung und Beförderung einer Operandenflagge und Verfahren zur Bearbeitung von RISC-ähnliche Funktionen in diesem Superskalarmikroprozessor
DE69308548T2 (de) Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
DE69325086T2 (de) Verfahren und System für spekulative Befehlsausführung
DE69932066T2 (de) Mechanismus zur &#34;store-to-load forwarding&#34;
DE69024068T2 (de) Verfahren und Datenverarbeitungseinheit zur Pipeline- Verarbeitung von Register- und Registeränderungs- Spezifizierern in dem gleichen Befehl
DE69504135T2 (de) Einrichtung zur Aktualisierung von Programmzählern
DE69802209T2 (de) An bytebereiche innerhalb eines befehlscaches gebundene verzweigungsselektoren zur schnellen identifizierung von verzweigungsprädiktoren
DE68927855T2 (de) Verfahren und Datenverarbeitungseinheit zur Vorverarbeitung von implizierten Spezifizierern in einem Pipeline-Prozessor
DE69031991T2 (de) Verfahren und Gerät zur Beschleunigung von Verzweigungsbefehlen
DE69033331T2 (de) Sprungvorhersage
DE69629495T2 (de) Vereinheitlichter multifunktions-operationsverteiler für die ungeordnete befehlsexekution in einem superskalaren prozessor
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE69327637T2 (de) Superskalar-Computersystem
DE68924546T2 (de) Verfahren und Vorrichtung zur Ausführung von Befehlen für ein Vektorverarbeitungssystem.
DE69427672T2 (de) Befehlscachespeicher für Befehle mit variabler Byteslänge
DE69622663T2 (de) Zweistufige vorausholungspufferstruktur und verfahren mit bypass
DE69612991T2 (de) System zur bearbeitung von selbstmodifizierendem kode
DE69130858T2 (de) Überlappende Serienverarbeitung
DE69908175T2 (de) Verbesserte befehlsdekodierung durch paralleldekodierungsalgorithmus
DE69623146T2 (de) Verfahren und Vorrichtung zum Koordinieren der Benutzung von physikalischen Registern in einem Mikroprozessor

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: GLOBALFOUNDRIES INC. MAPLES CORPORATE SERVICES, KY