DE102013013137A1 - Mehrstufige registerumbenennung durch entfernen von abhängigkeiten - Google Patents

Mehrstufige registerumbenennung durch entfernen von abhängigkeiten Download PDF

Info

Publication number
DE102013013137A1
DE102013013137A1 DE102013013137.5A DE102013013137A DE102013013137A1 DE 102013013137 A1 DE102013013137 A1 DE 102013013137A1 DE 102013013137 A DE102013013137 A DE 102013013137A DE 102013013137 A1 DE102013013137 A1 DE 102013013137A1
Authority
DE
Germany
Prior art keywords
registers
instructions
rename
renaming
register
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.)
Ceased
Application number
DE102013013137.5A
Other languages
English (en)
Inventor
Hugh Jackson
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.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of DE102013013137A1 publication Critical patent/DE102013013137A1/de
Ceased legal-status Critical Current

Links

Images

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
    • 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, 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, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • G06F9/3875Pipelining a single stage, e.g. superpipelining

Abstract

Mehrstufige Registerumbenennung unter Verwendung von Entfernen von Abhängigkeit wird beschrieben. In einer Ausführungsform werden die Register in zwei Stufen umbenannt. Die erste Stufe umfasst Entfernen aller Abhängigkeiten innerhalb eines Satzes von Befehlen, die zusammen umbenannt werden. Die Endstufe benennt dann alle Register parallel unter Verwendung einer Umbenennungsabbildung um. In verschiedenen Ausführungsformen werden die Abhängigkeiten in der ersten Stufe unter Verwendung einer festen Abbildung entfernt, um Zielregister in jedem Befehl umzubenennen, und in einigen Ausführungsformen basiert die feste Abbildung auf der Position eines Zielregisters innerhalb des Satzes von Befehlen. Abhängige Register, welche die Register sind, die in einem Befehl gelesen werden, aber in einem vorhergehenden Befehl im Satz geschrieben worden sind, werden ebenfalls in der ersten Stufe umbenannt. Zusätzlich zum Ausführen der Umbenennung in der Endstufe wird die Umbenennungsabbildung aktualisiert.

Description

  • Hintergrund
  • Out-of-order-Prozessoren können gesteigerte Rechenleistung bereitstellen, indem sie Befehle in einer Reihenfolge ausführen, die sich von der Reihenfolge im Programm unterscheidet, so dass Befehle ausgeführt werden, wenn deren Eingangsdaten verfügbar sind, anstatt dass abgewartet wird, bis das Programm den vorhergehenden Befehl ausgeführt hat. Um ein Ausführen von Befehlen out-of-order auf einem Prozessor zu erlauben, ist ein Umbenennen von Registern, die von den Befehlen benutzt werden, sinnvoll. Dies ermöglicht ein Entfernen von ”Write-after-Read”-(WAR)-Abhängigkeiten von den Befehlen, da diese keine echten Abhängigkeiten sind. Unter Verwendung von Registerumbenennung und Entfernen dieser Abhängigkeiten können mehr Befehle außerhalb der Programmfolge ausgeführt werden, und die Leistung wird weiter gesteigert. Die Registerumbenennung wird durch Verwalten einer Abbildung darüber, welche in den Befehlen genannten Register (Architekturregister genannt) an die physischen Register des Prozessors abgebildet werden, durchgeführt. Diese Abbildung kann als ”Umbenennungsabbildung”, ”Registerabbildung”, ”Registerumbenennungs-Abbildung” oder ”Register Alias Table (RAT)” oder dergleichen bezeichnet werden.
  • Die Umbenennung wird in der Regel bei mehreren Befehlen in jedem Zyklus durchgeführt, aber die Datenabhängigkeiten innerhalb einer Gruppe von umzubenennenden Befehlen in einem Zyklus führen mit sich, dass der Vorgang nicht vollständig parallel ausgeführt werden kann. Jedes Mal, wenn ein Zielregister umbenannt wird (d. h. wenn das Architekturregister durch ein gegenwärtig verfügbares physisches Register ersetzt wird), wird die Umbenennungsabbildung (d. h. die Daten in der Umbenennungsabbildung) aktualisiert. Spätere Lesevorgänge (innerhalb der Gruppe) müssen dann die aktualisierte Abbildung anstelle der beim Start des Zyklus bestehenden Abbildung benutzen. Um dies zu anzugehen, können Weiterleitungspfade von den Resultaten jedes Zielregister-Umbenennungsvorgangs bei jedem zukünftigen Quellregister-Lesevorgang benutzt werden. Dies wird allerdings schnell sehr komplex und skaliert nicht gut (z. B. wenn die Anzahl von Befehlen, die in einer Gruppe verarbeitet wird, zunimmt).
  • Ein zweistufiges Umbenennungsverfahren ist vorgeschlagen worden, das zwei ”gepipelinte” Umbenennungsblöcke benutzt. Dieses Verfahren arbeitet über zwei Zyklen und zeigt eine mehr asynchrone Herangehensweise bei der Anwendung von Latching an Zwischenpunkten anstelle der Taktflanke. Schreibvorgänge werden im ersten Zyklus und Lesevorgänge im zweiten Zyklus durchgeführt, und dies führt zu weiterer Komplexität, denn zusätzlich zur Abhängigkeit innerhalb einer Gruppe besteht nun auch eine zusätzliche Abhängigkeit zwischen der gegenwärtigen Gruppe von Befehlen und der nächsten chronologischen Gruppe von Befehlen, wenn die beiden Gruppen aus der Umbenennungsabbildung innerhalb ein- und desselben Zyklus aktualisiert werden/lesen.
  • Die nachstehend beschriebenen Ausführungsformen sind nicht beschränkt auf Implementierungen, die einzelne oder alle Nachteile der bekannten Verfahren und Vorrichtungen zur Registerumbenennung lösen.
  • Zusammenfassung der Erfindung
  • Diese Zusammenfassung ist als Einführung in eine Auswahl von Konzepten in einer vereinfachten Form bereitgestellt, die in der nachfolgenden detaillierten Beschreibung weiter dargestellt werden. Diese Zusammenfassung ist nicht dazu vorgesehen, Hauptmerkmale oder wesentliche Merkmale des beanspruchten Gegenstands herauszustellen, ebenso wenig ist sie dazu vorgesehen, als Hilfe bei der Bestimmung des Schutzumfangs des beanspruchten Gegenstands benutzt zu werden.
  • Mehrstufige Registerumbenennung durch Entfernen von Abhängigkeit wird beschrieben. In einer Ausführungsform werden die Register in zwei Stufen umbenannt. Die erste Stufe umfasst ein Entfernen aller Abhängigkeiten innerhalb eines Satzes von Befehlen, die dann zusammen umbenannt werden. In der Endstufe werden dann alle Register unter Verwendung einer Umbenennungsabbildung parallel umbenannt. In verschiedenen Ausführungsformen werden die Abhängigkeiten in der ersten Stufe unter Verwendung einer festen Abbildung zum Umbenennen von Zielregistern in jedem Befehl entfernt, und in einigen Ausführungsformen basiert die feste Abbildung auf der Position eines Zielregisters innerhalb des Satzes von Befehlen. Abhängige Register, das sind solche, die in einem Befehl gelesen werden, aber in einem vorhergehenden Befehl innerhalb des Satzes geschrieben worden sind, werden ebenfalls in der ersten Stufe umbenannt. Darüber hinaus wird zur Durchführung der Umbenennung in der Endstufe die Umbenennungsabbildung aktualisiert.
  • Ein erster Aspekt stellt ein Verfahren zur Registerumbenennung in einem Out-of-Order-Prozessor bereit, das umfasst: In einer ersten Stufe Entfernen von Abhängigkeiten innerhalb eines Satzes von Befehlen unter Verwendung einer festen Abbildung, die in der Hardware-Logik definiert ist; und in einer Endstufe Umbenennen aller Register im Satz von Befehlen parallel unter Verwendung einer Umbenennungsabbildung.
  • Entfernen von Abhängigkeiten innerhalb eines Satzes von Befehlen unter Verwendung einer festen, in der Hardwarelogik definierten Abbildung kann umfassen: Umbenennen aller Zielregister und etwaiger abhängiger Register innerhalb des Satzes von Befehlen mit einem von einem Satz von Zusatzregistern unter Verwendung der festen Abbildung; und Weitergabe von Details darüber, welches Zusatzregister zum Umbenennen jedes Zielregisters benutzt wurde, an die Endstufe.
  • Die feste Abbildung zwischen Zielregistern und Zusatzregistern kann auf eine physische Position jedes Zielregisters im Satz von Befehlen basiert werden.
  • Die Endstufe kann ferner umfassen: Aktualisierung der Umbenennungsabbildung.
  • Die Umbenennungsabbildung kann ferner Eingaben umfassen, die jedem Zusatzregister zugeordnet sind.
  • Aktualisieren der Umbenennungsabbildung kann umfassen: Aktualisieren von Eingaben in die jedem Zielregister zugeordnete Umbenennungsabbildung auf Basis von Details, die von der ersten Stufe weitergeleitet sind; und Aktualisieren von Eingaben in der jedem Zusatzregister zugeordneten Umbenennungsabbildung zur Abbildung jedes Zusatzregisters an ein nicht zugeordnetes physisches Register.
  • Das Verfahren kann ferner aufweisen: Zugriff auf eine Liste über nicht zugeordnete physische Register.
  • Die feste Abbildung kann unabhängig von jedem vorhergehenden Status sein.
  • Das Verfahren kann ferner umfassen: Durchführen eines Optimierungsvorgangs zwischen der ersten Stufe und der Endstufe.
  • Der Satz von Befehlen kann N Befehle umfassen, und der Satz Zusatzregister kann N Zusatzregister umfassen, wobei N eine Ganzzahl ist.
  • Jeder Befehl innerhalb des Satzes von Befehlen soll nicht mehr als Y Zielregister umfassen, und jeder Befehl kann einen Satz von Y zugeordneten gültigen Bits aufweisen, wobei jedes gültige Bit angibt, ob eines der Y Zielregister im Befehl benutzt wird. Dieser Satz von Befehlen kann N Befehle umfassen, und der Satz Zusatzregister kann NxY Zusatzregister umfassen, wobei N und Y Ganzzahlen sind.
  • Jeder Befehl innerhalb des Satzes von Befehlen soll nicht mehr als X Quellregister umfassen, und jeder Befehl kann einen Satz von X zugeordneten gültigen Bits aufweisen, wobei jedes gültige Bit angibt, ob eines der X Quellregister im Befehl benutzt wird.
  • Ein zweiter Aspekt stellt einen Out-of-Order-Prozessor bereit, der umfasst: eine Umbenennungsabbildung; Hardwarelogik, die eine feste Abbildung zwischen Registern definiert; Logik zum Entfernen von Abhängigkeit, ausgelegt zum Entfernen von Abhängigkeiten innerhalb eines Satzes von Befehlen unter Verwendung der festen Abbildung; Umbenennungslogik, ausgelegt zum parallelen Umbenennen aller Register im Satz von Befehlen unter Verwendung der Umbenennungsabbildung; und mehrere physische Register.
  • Die Logik zum Entfernen von Abhängigkeit kann mehrere Logikinstanzen zum Entfernen von Abhängigkeit umfassen, und wobei jede Logikinstanz zum Entfernen von Abhängigkeit zum Entfernen von Abhängigkeiten innerhalb eines separaten, sich nicht überschneidenden Sub-Satzes des Satzes von Befehlen ausgelegt ist.
  • Die Logik zum Entfernen von Abhängigkeit kann zum Entfernen von Abhängigkeiten innerhalb eines Satzes von Befehlen durch Umbenennen aller Zielregister und etwaiger abhängiger Register innerhalb des Satzes von Befehlen mit einem aus einem Satz Zusatzregister unter Verwendung der festen Abbildung ausgelegt sein; und Weiterleiten von Details darüber, welches Zusatzregister zur Umbenennung jedes Zielregisters benutzt wurde, an die Umbenennungslogik.
  • Die Umbenennungsabbildung kann Einträge umfassen, die jedem Zusatzregister zugeordnet sind.
  • Die mehreren physischen Register können mehrere nicht zugeordnete physische Register umfassen.
  • Die Umbenennungslogik kann ferner zur Aktualisierung der Umbenennungsabbildung ausgelegt sein.
  • Der Out-of-Order-Prozessor kann ferner einen Schleifenpuffer zwischen der Logik zum Entfernen von Abhängigkeit und der Umbenennungslogik umfassen, wobei der Schleifenpuffer zum Speichern von Befehlen, die sich nach Entfernen der Abhängigkeit durch die Logik zum Entfernen von Abhängigkeit innerhalb einer Schleife befinden, und wenn alle Befehle in der Schleife gespeichert sind, Freigabe der Befehle an die Umbenennungslogik ausgelegt ist.
  • Der Out-of-Order-Prozessor kann ferner Optimierungslogik zwischen der Logik zum Entfernen von Abhängigkeit und der Umbenennungslogik umfassen.
  • Ein dritter Aspekt stellt einen Out-of-Order-Prozessor im Wesentlichen gemäß der Beschreibung unter Bezugnahme auf eine von 1, 5 und 6 der Zeichnungen bereit.
  • Ein vierter Aspekt stellt ein Verfahren zur Registerumbenennung in einem Out-of-Order-Prozessor im Wesentlichen gemäß der Beschreibung unter Bezugnahme auf eine von 2 bis 5 der Zeichnungen bereit.
  • Die hier beschriebenen Verfahren können durch Software in maschinenlesbarer Form auf einem materiellen Speichermedium, zum Beispiel in Form eines Computerprogramms, das Computerprogrammcodemittel umfasst, die an die Durchführung aller Schritte aller hier beschriebenen Verfahren angepasst sind, wenn das Programm auf einem Computer betrieben wird und wobei das Computerprogramm auf einem computerlesbaren Medium enthalten ist. Beispiele für materielle (oder nicht-flüchtige) Speichermedien umfassen Platten, Sticks, Speicherkarten usw. und enthalten keine propagierten Signale. Die Software kann zur Ausführung auf einem parallelen Prozessor oder einem seriellen Prozessor auf solche Weise geeignet sein, dass die Verfahrensschritte in jeder geeigneten Reihenfolge oder gleichzeitig ausgeführt werden können.
  • Dies bestätigt, dass Firmware und Software wertige, separat marktgängige Handelsprodukte sein können. Es ist beabsichtigt, zur Ausführung der gewünschten Funktionen Software einzubeziehen, die auf ”dummer” oder Standard-Hardware betrieben wird oder solche steuern kann. Ebenso ist beabsichtigt, Software einzubeziehen, die die Konfiguration von Hardware ”beschreibt” oder definiert, wie HDL (Hardware Description Language), wie sie bei der Konstruktion von Siliziumchips oder Konfiguration universell programmierbarer Chips zum Ausführen gewünschter Funktionen benutzt wird.
  • Die bevorzugten Merkmale können angemessen kombiniert werden, wie sich dies dem Fachmann erschließt, und sie lassen sich mit jedem Aspekt der Erfindung kombinieren.
  • Kurze Beschreibung der Zeichnungen
  • Es folgen Beschreibungen von Ausführungsformen der Erfindung anhand von Beispielen und unter Bezugnahme auf die folgenden Zeichnungen, in denen:
  • 1 in schematischer Darstellung ein Beispiel eines Out-of-Order-Prozessors zeigt;
  • 2 ein Ablaufschema eines beispielhaften Verfahrens zur Registerumbenennung, das bei Anwendung des in 1 gezeigten Out-of-Order-Prozessors implementiert werden kann, zeigt;
  • 3 ein Beispiel von Registerumbenennung zeigt;
  • 4 in schematischer Darstellung ”gepipelinte” Umbenennungsvorgänge über vier Zyklen zeigt;
  • 5 in schematischer Darstellung ”gepipelinte” Umbenennungsvorgänge über fünf Zyklen, mit Aufteilung des Entfernens von Abhängigkeiten in zwei Stufen, sowie in schematischer Darstellung einen anderen beispielhaften Out-of-Order-Prozessor zeigt; und
  • 6 in schematischer Darstellung zwei weitere Beispiele von Out-of-Order-Prozessoren zeigt.
  • In allen Figuren werden gemeinsame Bezugszeichen verwendet, die gleiche Merkmale bezeichnen.
  • Detaillierte Beschreibung
  • Ausführungsformen der vorliegenden Erfindung werden nachstehend anhand von Beispielen beschrieben. Diese Beispiele repräsentieren die besten Wege zur Umsetzung der Erfindung in die Praxis, die dem Antragsteller derzeit bekannt sind, obwohl sie nicht die einzigen Wege sind, um dies zu erreichen. Die Beschreibung legt die Funktionen des Beispiels und die Folge von Schritten zum Konstruieren und Betreiben des Beispiels dar. Allerdings können die gleichen oder gleichwertige Funktionen und Abläufe auch von verschiedenen Beispielen verwirklicht werden.
  • Die Anwendung der Registerumbenennung in einem Out-of-Order-Prozessor lässt sich unter Bezugnahme auf das nachstehende Beispiel beschreiben, das zwei Befehle (bezeichnet I1 und I2) umfasst:
    I1: R3 = R1 + 2
    I2: R1 = R2
  • Da R1 das Zielregister von I2 ist, kann I2 nicht vor I1 (wobei R1 ein Quellregister ist) ausgewertet werden, weil andernfalls der in R1 gespeicherte Wert bei der Auswertung von I1 unrichtig ist. Es besteht jedoch keine ”wahre” Abhängigkeit zwischen den Befehlen, und demzufolge kann die Registerumbenennung zum Entfernen der Abhängigkeit benutzt werden. So kann zum Beispiel das Zielregister von I2 wie folgt umbenannt werden:
    I2: R4 = R2
  • Da das Zielregister in R4 geändert worden ist, besteht nun keine Abhängigkeit zwischen I1 und I2, und diese beiden Befehle können out-of-order ausgeführt werden. Dieses Beispiel zeigt das Entfernen einer ”Write-after-Read”-(WAR)-Abhängigkeit. Bei anderen Beispielen können auch ”Write-after-Write”-(WAW)-Abhängigkeiten vorkommen, wie zum Beispiel, wenn der Satz von Befehlen ferner einen dritten Befehl (als I3 bezeichnet) umfasst:
    I3: R1 = R5 + 4
  • Dieser Befehl (I3) schreibt an das gleiche Register (R1) wie ein vorhergehender Befehl (I2), was bedeutet, dass der erste Schrieb vernachlässigt werden kann, sofern der Vorgang keine anderen Seiteneffekte hat.
  • 1 zeigt in schematischer Darstellung einen Out-of-Order-Prozessor 100, der eine Fetch-Stufe 102, eine Decodier-Stufe 104, eine Umbenennungsstufe 106 und mehrere physische Register 107 umfasst. Es versteht sich, dass der Out-of-Order-Prozessor auch andere, in 1 nicht dargestellte Elemente (z. B. einen Reorder-Buffer, Ausführungspipelines usw.) umfassen kann. Die Fetch-Stufe 102 ist ausgelegt zum Holen von Befehlen von einem Programm (in Programm-Reihenfolge) gemäß Angabe durch einen Programmzähler. Die Decodier-Stufe 104 ist ausgelegt zur Interpretation der Befehle, bevor die Umbenennungsstufe 106 die Registerumbenennung ausführt. Wie vorstehend beschrieben, kann ein Satz (oder eine Gruppe) von Befehlen gleichzeitig umbenannt werden. Die Registerumbenennung 108 kann von der Umbenennungsstufe 106 unter Verwendung einer Abbildung zwischen Architektur- und physischen Registern 107 auf dem Prozessor ausgeführt werden, und ein Beispiel einer Registerumbenennungs-Abbildung 108 ist in 1 dargestellt. Die Registerumbenennungs-Abbildung 108, die von der Umbenennungsstufe 106 verwaltet (d. h. aktualisiert) wird, ist eine gespeicherte Datenstruktur, die die Abbildung zwischen jedem Architekturregister und dem physischen Register, das ihr zuletzt zugeordnet wurde, zeigt. Architekturregister sind die Namen/Bezeichner von Registern, die in den Befehlen benutzt werden, und sie werden zum Zweck der nachstehenden Erläuterung mit A* bezeichnet (wo * die Nummer eines Registers angibt, z. B. A0, A1 ...). Die physischen Register 107 sind die tatsächlichen Speicherplätze, die im Prozessor vorhanden sind, und diese werden P* (z. B. P0, P1 ...) bezeichnet. Es gibt mehr physische Register 107 als Architekturregister, und die mehreren physischen Register 110 umfassen mehrere nicht-zugeordnete physische Register 109 (wie in 1 schraffiert dargestellt). Im Beispiel in 1 umfasst die Registerumbenennungs-Abbildung 108 vier Einträge, die Bezeichner (P*) der physischen Register, die von den Bezeichnern der Architekturregister (A*) indiziert werden. Zum Beispiel bildet das Architekturregister 0 (A0) gegenwärtig in das physische Register 6 (P6) ab, bildet das Architekturregister 1 (A1) gegenwärtig in das physische Register 5 (P5) ab usw. Die Umbenennungsabbildung 108 kann in Flipflops innerhalb der Hardwarelogik des Prozessors gespeichert werden.
  • Wie in 1 dargestellt, ist die Umbenennungsstufe 106 in zwei Stufen geteilt: Entfernen von Abhängigkeit 110 und Umbenennen 112, obwohl, wie nachstehend ausführlicher beschrieben, mehr als zwei Stufen vorkommen können (Stufe 110 zum Entfernen von Abhängigkeit kann z. B. in zwei oder mehr Sub-Stufen gegliedert sein). Die erste dieser Stufen, Entfernen von Abhängigkeit 110, entfernt die Abhängigkeiten innerhalb eines Satzes (oder einer Gruppe) von Befehlen, die parallel umbenannt werden. Sowohl RAW- als auch WAW-Abhängigkeiten werden bei den Befehlen innerhalb dieser Stufe durch die Anwendung einer festen Abbildung entfernt, was vollständig voraussagbar ist, unabhängig von jedem vorhergehenden Status ist und in der Hardware-Logik 114 implementiert ist. Wie nachstehend ausführlicher beschrieben, bildet die feste Abbildung Ziel- und abhängige Register innerhalb des Satzes von Befehlen an Zwischenregister (mit N* bezeichnet) ab. Unter Verwendung einer solchen festen Abbildung, wobei die Abbildung mit der physischen Anordnung eines Befehls innerhalb eines Satzes verknüpft ist, wird nur eine geringe Menge der Logik (z. B. Hardware-Logik) zur Implementierung dieser Stufe benötigt. Diese erste Stufe benutzt nicht die Umbenennungsabbildung (die keine feste Abbildung ist, sondern stattdessen eine dynamische Abbildung speichert, die sich mit jedem Zyklus ändern kann), und sie erfordert keine Lookups, die ausgeführt werden müssen (z. B. Lookups in einer festen Datenstruktur).
  • Die zweite dieser Stufen, Umbenennen 112, (die auch als die Endstufe bezeichnet werden kann), benennt dann alle Register parallel bei Anwenden der Umbenennungsabbildung 108 um (z. B. von Zwischenregistern in physische Register). Auf diese Weise führt die Umbenennungsstufe parallel alle Lesungen und Aktualisierungen in die Umbenennungsabbildung aus (d. h. alle Aktualisierungen werden gleichzeitig mit dem Ausführen der Lesungen gesetzt, aber die Aktualisierungen werden nicht vor der Taktflanke wirksam, so dass die Lesungen die Wirkungen der aktuellen Aktualisierungen nicht sehen werden), was diese Endstufe sehr skalierbar macht (d. h. für große Anzahlen von Befehlen im gleichen Zyklus). Die Umbenennungsabbildung, die benutzt wird, umfasst die Zusatzregisterabbildung, wie aus 3 hervorgeht und nachstehend beschrieben wird.
  • Obwohl die Verfahren die Aktualisierung der Umbenennungsabbildung 108 (in Block 208) in jedem Zyklus zeigen, versteht sich, dass es Situationen geben kann, wenn keine Änderungen erforderlich sind, und in einer solchen Situation belässt der Schritt des Aktualisierens der Umbenennungsabbildung die Abbildung unverändert.
  • Die Gliederung der Umbenennungsstufe 106 in zwei Stufen auf diese Weise bewirkt, dass der Umbenennungsvorgang zwei Zyklen in Anspruch nimmt, was die Latenz im Vergleich zu einem Einzel-Zyklus-Einzelstufe Vorgang erhöht, aber der Durchsatz wird nicht reduziert, da sich die beiden Stufen einfach pipelinen lassen (wie unter Bezugnahme auf 4 ausführlicher beschrieben). Unter Verwendung dieses Verfahrens ist es möglich, den Durchsatz zu steigern (durch Erhöhen der Anzahl von Befehlen in einem Satz) und/oder die maximale Taktgeschwindigkeit zu erhöhen.
  • Sowohl die Abhängigkeits-Entfern- als auch die Umbenennungsstufen 110, 112 können vollständig in der Hardware-Logik innerhalb eines Prozessors implementiert sein. Alternativ können einige oder alle Verfahrensschritte in Software implementiert sein. Der Prozessor kann ein Single-Threaded-Prozessor oder ein Multi-Threaded-Prozessor sein. Bei einem Multi-Threaded-Prozessor können die in 1 gezeigten Elemente für jeden Thread auf die Weise nachgebildet werden, dass jeder Thread einen lokalen Satz von Architekturregistern und eine Umbenennungsstufe 106 aufweist. Ein alternativer Multi-Threaded-Prozessor kann einige oder alle Hardware-Logik (Block 106) zur Ausführung der tatsächlichen Umbenennung teilen, während die Thread-Nummer in Verbindung mit der Register-Nummer benutzt werden kann, um die Umbenennungsabbildung 108 (d. h. wo sich die Umbenennungsabbildung auf mehr als einen Thread bezieht) zu indizieren. Zum Beispiel kann die Umbenennungsabbildung für Thread 0 ein Eintragsabbildungs-Architekturregister 0 (A0) an das physische Register 6 (P6) und eine separate Eintragsabbildung für das gleiche Architekturregister (A0) für Thread 1 an das physische Register 26 (P26) aufweisen.
  • 2 zeigt ein Ablaufschema eines beispielhaften Betriebsverfahrens der Umbenennungsstufe 106. In der ersten Stufe 21, die von der in 1 dargestellten Stufe 110 zum Entfernen von Abhängigkeit ausgeführt wird, werden alle Ziel- und abhängigen Register unter Verwendung einer festen Abbildung (Block 202) in Zusatzregister umbenannt. Der Begriff 'abhängige Register' wird hier zur Bezugnahme auf die Register benutzt, die in einem Befehl gelesen werden und an die auch von einem vorhergehenden Befehl im Satz geschrieben wird (d. h. alle Quellregister, die ein Zielregister in einem vorhergehenden Befehl im Satz sind). Zum Zweck der nachstehenden Erläuterung können die Zielregister mit OP* bezeichnet sein, wobei * die Nummer des Befehls bezeichnet.
  • Die Anzahl der Zusatzregister, die benutzt werden (d. h. N Zusatzregister) ist gleich der Höchstzahl von Zielregistern innerhalb des Satzes. In vielen Beispielen schreibt jeder Befehl nur an ein Ziel, und in solchen Beispielen ist die Anzahl der zusätzlichen benutzten Register gleich der Anzahl von Befehlen im Satz, die zusammen umbenannt werden (z. B. N Befehle im Satz). Zum Beispiel, wenn der Satz von Befehlen umfasst:
    I1: R3 = R1 + 2
    I2: R1 = R2
    I3: R5 = R1 + 4
    gibt es drei zusätzliche benutzte Register (N = 3). Ein zusätzliches Register wird für das Zielregister (R3) des ersten Befehls (I1) benutzt, ein weiteres zusätzliches Register wird für das Zielregister (R1) des zweiten Befehls (I2) benutzt, und ein drittes zusätzliches Register wird für das Zielregister (R5) des dritten Befehls (I3) benutzt. In diesem Beispiel gibt es ein abhängiges Register, welches das Quellregister R1 im dritten Befehl (I3) ist, denn dieses Register ist in einem vorhergehenden Befehl im Satz (d. h. im zweiten Befehl I2) geschrieben worden. In anderen Beispielen kann jedoch ein Befehl mehr als ein Zielregister aufweisen, und demzufolge kann dann die Anzahl Zusatzregister die Anzahl Befehle im Satz überschreiten.
  • Die feste Abbildung, die in dieser ersten Stufe (Block 201) und in diesem Beispiel benutzt wird, kann wie in nachstehender Tabelle angegeben sein, wobei die Bezeichnung N* benutzt wird.
    [A0] [A1] [A2] [A3] [A4] [A5] [A6] [A7] [OP1] [OP2] [OP3]
    N0 N1 N2 N3 N4 N5 N6 N7 N8 N9 N10
  • Die Register N0–N7 sind exakte Darstellungen der Architekturregister A0–A7 (wobei 8 Architekturregister lediglich beispielhaft benutzt werden), und die drei Zusatzregister sind N8, N9 und N10. Diese Zusatzregister (N8–N10) bilden drei eines Pools von nicht-zugeordneten (oder freien) physischen Registern ab. In diesem Beispiel werden die Zielregister (OP1, OP2) in chronologischer Reihenfolge umbenannt, was die Logik vereinfacht, obwohl sie in jeglicher Reihenfolge umbenannt werden können (obwohl diese Reihenfolge, wenn einmal implementiert, für jeden Zyklus angewendet wird, da es sich hier um eine feste Abbildung handelt). Die nicht-zugeordneten physischen Register können jegliche Register sein, und sie müssen keine angrenzenden Register sein, wie das Beispiel in 3 zeigt und wie nachstehend beschrieben. Im Anschluss an dieses Entfernen von Abhängigkeiten können die Befehle (unter Verwendung einer vorübergehenden N*-Bezeichnung) wie folgt geschrieben werden:
    I1: N8 = N1 + 2
    I2: N9 = N2
    I3: N10 = N9 +4
  • An diesem Beispiel ist erkennbar, dass das abhängige Register (R1) im dritten Befehl (I3) umbenannt worden ist (in N9), um dem Register zu entsprechen, das im vorhergehenden Befehl (I2) geschrieben wurde.
  • Damit die entsprechenden Einträge für jedes der Zielregister (R3, R1, R5) in der Umbenennungsabbildung mit dem neuen physischen Register in der Umbenennungsstufe (d. h. im nächsten Zyklus) aktualisiert werden kann, wird die ursprüngliche Registernummer für jedes Zielregister nachverfolgt (Block 204), d. h. es werden Details gespeichert, die bezeichnen, welches Zusatzregister für die Umbenennung jedes der Zielregister (z. B. in Flipflops zwischen den beiden Umbenennungsstufen) benutzt wurde. Bezug nehmend auf das obige Beispiel umfasst dies ein Nachverfolgen der folgenden Information:
    N3 → [N8]
    N1 → [N9]
    N5 → [N10]
    wobei [N8] den Inhalt des Ortes N8 der Umbenennungsabbildung bezeichnet.
  • Die Endstufe 22, die von der in 1 gezeigten Umbenennungslogik 112 ausgeführt wird, führt dann alle Umbenennungen von Registern parallel unter Verwendung der Umbenennungsabbildung (Block 206) aus. Wie vorstehend beschrieben ist die Umbenennungsabbildung 108 eine gespeicherte Datenstruktur, die von der Umbenennungsstufe 106 in jedem Zyklus aktualisiert (und gespeichert) wird, und somit ist die in jedem Zyklus benutzte Umbenennungsabbildung die Abbildung wie die im vorhergehenden Zyklus aktualisierte. Um das Umbenennen durchzuführen, wird auf die gespeicherte Umbenennungsabbildung zugegriffen und diese für das Umbenennen aller Register parallel (in Block 206) benutzt. Dies erfordert Lesevorgänge an der Umbenennungsabbildung. Gleichzeitig (z. B. parallel mit den Lesevorgängen) wird die Umbenennungsabbildung aktualisiert (Block 208), d. h. die Aktualisierungen an der Umbenennungsabbildung werden festgelegt, werden jedoch nicht wirksam, bis die Taktflanke, an dem Punkt, an dem alle für die Erstellung der Umbenennungsabbildung benutzten Flipflops aktualisiert werden, dabei die aktualisierte Abbildung speichert. Es gibt zwei Sätze von Schrieben/Aktualisierungen an die Umbenennungsabbildung, die (in Block 208) ausgeführt werden. Erstens wird die Umbenennungsabbildung anhand der (in Block 204) in der ersten Stufe nachverfolgten Information auf solche Weise aktualisiert, dass die Abbildungen an den ursprünglichen Zielregisternummern auf den Wert aktualisiert werden, der gegenwärtig in den Zusatzregister-Orten diesem Befehl (Block 210) zugeordnet ist. Zweitens werden die Zusatzregister-Orte (N8–N10 im obigen Beispiel), die nicht mehr auf nicht-zugeordnete physische Register zeigen (da sie gerade zugeordnet worden sind), mit einem neuen Satz von nicht-zugeordneten physischen Registern aus einem Pool von nicht-zugeordneten physischen Registern aktualisiert (Block 212). Es versteht sich, dass diese zwei Aktualisierungsschritte parallel oder in der jeweiligen Reihenfolge (d. h. auf Block 210 folgt Block 212 oder umgekehrt) ausgeführt werden können.
  • Es versteht sich, dass, obwohl in 2 Block 206 vor Block 208 erscheint, wie vorstehend beschrieben, die Lese- und Aktualisierungsvorgänge (oder Schreibvorgänge) parallel ausgeführt werden können, wobei die Schriebe während des Zyklus festgelegt und dann bei der Taktflanke wirksam werden (d. h. so dass die Schriebe nach den Lesevorgängen stattfinden und keine Möglichkeit besteht, dass inkorrekte Daten gelesen werden können).
  • Dieses Verfahren kann weiter unter Bezugnahme auf das in 3 dargestellte Beispiel beschrieben werden. In diesem Beispiel werden die Befehle in Sätzen zu jeweils vier umbenannt, und daher gibt es vier Zusatzregister mit den Bezeichnungen N8–N11. Auch in diesem Beispiel sind die ursprünglichen Zielregister (OP0–OP3) in chronologischer Reihenfolge zugeordnet, um die Logik, die zur Implementierung des Schritts in der Hardware verwendet wird, zu vereinfachen, wie aus den festen Abbildungen 302 hervorgeht. In diesem Beispiel sind die ursprünglichen Befehle 304 im Format 'OP Rd, Rs1, Rs2' geschrieben, wobei Rd ein Zielregister und Rs ein Quellregister ist. Wird nun der erste Befehl in 3 als Beispiel genommen, der 'OP A0, A0, A1' lautet, ist das Zielregister Architekturregister A0, und die Quellregister sind Architekturregister A0 und A1.
  • In der ersten Stufe 21 des Umbenennungsvorgangs werden alle Ziel- und abhängigen Register unter Verwendung der festen Abbildung 302 (Block 202 und Pfeil 306) umbenannt. Die Resultatliste 308 der Lesevorgänge der Umbenennungsabbildungen, die für Befehle erforderlich sind, ist in 3 in der Zwischenregister-Bezeichnung (d. h. Anwenden der Bezeichnung N* für alle Register) dargestellt. Dieses Beispiel zeigt, dass die Zielregister OP A0, OP A2, OP A1 und OP A4 in die vier Zusatzregister N8–N11 umbenannt worden sind. Die abhängigen Register sind ebenfalls identifiziert und in die entsprechenden Zusatzregister umbenannt worden, d. h. der Lesevorgang von A0 im dritten Befehl ist in N8 modifiziert worden, da der erste Befehl den Wert von A0 modifiziert hat, und der Lesevorgang von A2 im vierten Befehl in N9 modifiziert worden ist, da der zweite Befehl den Wert von A2 modifiziert hat. Wenn Quellregister keine abhängigen Register sind, erfolgt eine Eins-zu-Eins-Abbildung von der Bezeichnung A* in die Bezeichnung N*, wie dies in der festen Abbildung 302 dargestellt ist.
  • Zusätzlich zum Umbenennen in der ersten Stufe (Block 202 und Pfeil 306) wird die Liste der Aktualisierungen der Umbenennungsabbildung 310, die für die Befehle erforderlich sind, identifiziert (Block 204 und Pfeil 312). Wie vorstehend beschrieben bezeichnet die Bezeichnung [N8] die Inhalte des Orts N8 der Umbenennungsabbildung.
  • Die Resultatliste 308 der Lesevorgänge von Umbenennungsabbildungen und die Liste der Aktualisierungen von Umbenennungsabbildungen 310 können in Flipflops innerhalb der Hardware-Logik zwischen den beiden Umbenennungsstufen 21, 22 gespeichert werden.
  • Es ist erkennbar, dass am Ende dieser ersten Stufe keine RAW- oder WAW-Abhängigkeiten innerhalb des Satzes von Befehlen, der umbenannt wird, vorliegen.
  • Um die Endstufe 22 des Umbenennungsvorgangs auszuführen, werden zwei Informationsteile benutzt: eine Liste von verfügbaren (physischen) Registern zur Umbenennung 314 und die gegenwärtige Umbenennungsabbildung 316. Wie vorstehend beschrieben ist diese Endstufe in einem zweiten Zyklus implementiert. In dieser Endstufe 22 sind alle Register parallel unter Verwendung der Umbenennungsabbildung 316 (Block 206 und Pfeil 318) umbenannt, und die resultierenden umbenannten Operanden der Befehle 320 sind in der physischen Registerbezeichnung (d. h. P*-Bezeichnung) gezeigt. Der Begriff 'Operand' wird hier zur Bezugnahme auf ein Register innerhalb eines Befehls benutzt.
  • Die Aktualisierung der Umbenennungsabbildung (Block 208 und Pfeil 322) ist auch in 3 dargestellt, und, wie vorstehend beschrieben, umfasst diese Aktualisierung zwei Teile: Aktualisierung der ursprünglichen Zielregisternummern (Block 210) und Aktualisierung der Zusatzregisterorte (Block 212).
  • In einem Teil (Block 210) der Aktualisierung der Umbenennungsabbildung werden vier Einträge in der Umbenennungsabbildung (Aktualisierungen 324) unter Verwendung der in der ersten Stufe erzeugten Abbildungsaktualisierungsinformation 310 und der Umbenennungsabbildung 316 aktualisiert. Zum Beispiel wurde in der ersten Stufe aufgezeichnet, dass Register N0 an den Inhalt des Umbenennungsabbildungsorts N8 abbildet, der in Umbenennungsabbildung 316 ein physisches Register P5 ist. Demzufolge wird bei der Aktualisierung der Umbenennungsabbildung (zum Erzeugen der Ausgabe-Umbenennungsabbildung 326) der Inhalt des Umbenennungsabbildungsorts N0 von P3 in P5 geändert. Die Inhalte der Umbenennungsabbildungsorte N2, N1 und N4 werden auf gleiche Weise von P11, P2 und P1 in P8, P7 bzw. P0 geändert.
  • Im anderen Teil (Block 212) der Aktualisierung der Umbenennungsabbildung werden vier Einträge in der Umbenennungsabbildung ebenfalls aktualisiert (Aktualisierungen 328). Die Umbenennungsabbildung wird auf solche Weise aktualisiert, dass die Zusatzregister N8–N11 zu freien Registern aus der Liste verfügbarer Register 314 abbilden, und in diesem Beispiel werden die Inhalte der Umbenennungsabbildungsorte N8–N11 von P5, P8, P7, P0 (die physische Register sind, die früher frei gewesen aber nun zugeordnet sind) in P6, P10, P13, P15 geändert. In diesem Beispiel sind die verfügbaren Register zwar in chronologischer Reihenfolge zugeordnet, in anderen Beispielen können die verfügbaren physischen Register in beliebiger Reihenfolge an die zusätzlichen Architekturregister abgebildet werden. Dieser Teil setzt die Zusatzregister zurück in freie Register, so dass die gleiche feste Abbildung bei jeder Wiederholung der Stufe Entfernen von Abhängigkeiten benutzt werden kann (d. h. für jeden Satz von Befehlen, die umbenannt werden).
  • Nach dem Aktualisieren der Umbenennungsabbildung (in Block 208) wird die aktualisierte Umbenennungsabbildung (die auch Ausgabe-Umbenennungsabbildung genannt werden kann) in der Umbenennung des nächsten Satzes von Befehlen im darauffolgenden Zyklus benutzt, und dieses Pipelining des Umbenennungsverfahrens ist in 4 dargestellt. 4 zeigt eine schematische Darstellung von Umbenennungsvorgängen über vier Zyklen C1–C4. Im ersten Zyklus C1 werden die Abhängigkeiten (in Blöcken 202204) von einem ersten Satz von Befehlen (I0–I3) entfernt. Im zweiten Zyklus C2 wird der erste Satz von Befehlen (I0-I3) unter Verwendung einer anfänglichen Umbenennungsabbildung R0 (in Block 206) umbenannt, und diese Abbildung wird (in Block 208) aktualisiert, um eine aktualisierte Umbenennungsabbildung R1 zu erzeugen. Parallel hierzu werden im zweiten Zyklus C2 bei einem zweiten Satz von Befehlen (I4–I7) (in den Blöcken 202204) die Abhängigkeiten entfernt. Im dritten Zyklus C3 wird der zweite Satz von Befehlen (I4–I7) unter Verwendung der Umbenennungsabbildung R1, die aus dem vorigen Zyklus ausgegeben wurde (im Block 206), umbenannt, und diese Abbildung wird (in Block 208) aktualisiert, um eine weitere aktualisierte Umbenennungsabbildung R2 zu bilden. Parallel hierzu werden im dritten Zyklus C3 bei einem dritten Satz von Befehlen (I8-I11) deren Abhängigkeiten (in Blöcken 202204) entfernt. Dieser Vorgang kann dann für jeden verbliebenen Satz von Befehlen wiederholt werden.
  • In 4 ist erkennbar, dass die zwei Stufen (Entfernen von Abhängigkeiten und Umbenennen) einfach in die Pipeline eingebracht werden können, da jede Stufe derart von der anderen getrennt ist, dass sie keine Bits der Logik oder die Umbenennungsabbildung teilen. Wie vorstehend beschrieben, hat das hier beschriebene Verfahren das Weiterleiten aufgrund von Abhängigkeiten reduziert, sowohl innerhalb eines Satz von Befehlen als auch zwischen Sätzen von Befehlen, verglichen mit anderen zweistufigen Umbenennungsvorgängen, die stattdessen Lese- und Schreibvorgänge voneinander trennen. Es ist auch erkennbar, dass innerhalb eines einzelnen Zyklus nur ein Satz von Befehlen aus der Umbenennungsabbildung aktualisiert/liest. Dies beruht darauf, dass die erste Stufe (Entfernen von Abhängigkeiten) nicht die Umbenennungsabbildung, sondern stattdessen eine feste Abbildung benutzt.
  • Ebenfalls aus 4 ist ersichtlich, dass zwar die Latenz des Umbenennens aufgrund der Anwendung eines zweistufigen Umbenennungsvorgangs (verglichen mit einem einstufigen Umbenennungsblock) um einen Zyklus zugenommen hat, aber der Durchsatz bei einem Satz von Befehlen je Zyklus verblieben ist (der in diesem Beispiel vier Befehle umfasst). Da jedoch jede Stufe eine geringe Komplexität aufweist, ist es möglich, die Anzahl von Befehlen innerhalb jedes Satzes bei Beibehaltung der gleichen Taktgeschwindigkeit wie bei einem Einzel-Zyklus-Umbenennungsblock zu erhöhen und im Endeffekt einen höheren Gesamtdurchsatz zu erzielen. Alternativ kann die Taktgeschwindigkeit für den gleichen Durchsatz (wie bei einem einstufigen Umbenennungsblock) erhöht werden, und wenn der gleiche Durchsatz erforderlich ist, kann das Zwei-Stufen-System implementiert werden, wodurch weniger Siliziumfläche beansprucht wird (was die Kosten reduziert). Diese Verringerung der Fläche lässt sich dadurch erreichen, dass der Schritt Entfernen von Abhängigkeiten infolge der festen Abbildung in nur einem kleinen Teil der Logik implementiert werden kann. In anderen Beispielen kann eine Kombination von erhöhter Taktgeschwindigkeit und gesteigertem Durchsatz erreicht werden.
  • Das vorstehend beschriebene Verfahren gründet sich auf die Verfügbarkeit von nicht-zugeordneten physischen Registern, die im Umbenennungsvorgang als Zusatzregister benutzt werden können. Wenn ein Punkt erreicht ist, wo keine weiteren verfügbaren Register vorhanden sind (z. B. am Ende von C3 in 4), kann dem Verfahren eine Verzögerung in der Weise gestattet werden, dass der Umbenennungsvorgang unterbrochen wird, bis Register verfügbar werden (z. B. Umbenennen von I8–I11 wird verzögert), und ein Verzögern des Verfahrens auf diese Weise ist möglicherweise nicht problematischer als bei bestehenden Einzel-Zyklus-Implementierungen. Wie in 3 dargestellt, ist der einzige Zustand, der aufrechterhalten wird, die Umbenennungsabbildung 316, 326. Die Umbenennungsabbildung liest 308, und Aktualisierungen 310 werden nicht wirklich beibehalten, sondern stattdessen von einer Stufe der Umbenennung zur nächsten weitergeleitet, zum Beispiel durch Schreiben der Information an Flipflops am Ende der ersten Stufe (d. h. am Ende eines Zyklus) und dann Anwenden der Flipflop-Werte in der Endstufe (d. h. im nächsten Zyklus). Das Verfahren kann auch unter verschiedenen Umständen verzögert werden, wie bei einem Mangel an verfügbarer Ressource im Backend des Prozessors.
  • In der vorstehenden Beschreibung mit Bezug auf 3 umfasst jeder Satz von Befehlen vier Befehle. Dies dient nur als Beispiel, und es versteht sich, dass der Satz von Befehlen jede Anzahl von Befehlen aufweisen kann, und in einigen Beispielen enthalten die Sätze von Befehlen sehr große Anzahlen von Befehlen. In einem Beispiel, wenn die Sätze von Befehlen eine große Anzahl von Befehlen umfassen, kann die erste Stufe 21 in zwei oder mehr Sub-Stufen gegliedert werden, die jeweils die Abhängigkeiten innerhalb eines Sub-Satzes des Satzes von Befehlen entfernen.
  • In 5 ist ein Beispiel gezeigt, bei dem die Umbenennungsstufe 500 innerhalb des Out-of-Order-Prozessors 502 zwei Instanzen der Logik 110 zum Entfernen von Abhängigkeit umfasst, und wie aus dem Zeitverlaufsdiagramm 504 hervorgeht, ist der Durchsatz im Vergleich zu der in 4 gezeigten Zwei-Stufen-Herangehensweise (wobei es sich immer noch um einen Satz von Befehlen je Zyklus handelt) nicht beeinträchtigt, aber es gibt einen zusätzlichen Zyklus von Latenz (d. h. der Umbenennungsvorgang dauert in diesem Beispiel drei Zyklen, verglichen mit zwei Zyklen, wie in 4 gezeigt).
  • In der ersten Sub-Stufe zum Entfernen von Abhängigkeit ('Entfernen von Abhängigkeit A') werden alle Befehle im Satz (z. B. I0–I39 für einen 40 Befehle umfassenden Satz) auf Abhängigkeit mit der ersten Hälfte (oder dem ersten Sub-Satz) von Zielregistern (z. B. Zielregister für I0–I19) geprüft. In der zweiten Sub-Stufe zum Entfernen von Abhängigkeit ('Entfernen von Abhängigkeit B') wird die zweite Hälfte der Befehlsquellen auf Abhängigkeiten mit der zweiten Hälfte der Zielregister (z. B. Zielregister für I20–I39) geprüft. In der zweiten Sub-Stufe ist eine Prüfung der ersten Hälfte der Befehlsquellen nicht notwendig, da diese nicht von den Zielen der zweiten Hälfte der Befehle abhängig sein können (da jedes Lesen eines Registers in einem Befehl in der ersten Hälfte eintreffen würde, vor einem Schrieb an das gleiche Register in einem Befehl in der zweiten Hälfte).
  • Die nachstehende Tabelle zeigt ein Beispiel eines vier Befehle umfassenden Satzes von Befehlen. In der ersten Sub-Stufe werden alle Befehle (I0–I3) auf Abhängigkeiten mit den Zielregistern in den beiden ersten Befehlen (z. B. A0, A3) geprüft, und alle Quellregister werden mit den ursprünglichen Registernamen, die auch nachverfolgt werden, umbenannt. Die Ergebnisse sind in der Spalte mit dem Titel ”Nach Entfernen der Hälfte der Abhängigkeit” in der Tabelle angegeben. Die ursprünglichen Registernamen werden nachverfolgt für den Fall, dass eine spätere Abhängigkeit in der zweiten Sub-Stufe gefunden wird (z. B. wie im Fall des letzten Befehls in diesem Beispiel, wenn die Umbenennung von N4 von N10 ersetzt wird). Es versteht sich, dass anstelle einer Umbenennung aller Register und Nachverfolgen der ursprünglichen Registernamen die Register möglicherweise in dieser ersten Sub-Stufe nicht umbenannt werden, aber das Umbenennen kann für eine spätere Implementierung nachverfolgt werden (z. B. als Teil der letzten Sub-Stufe).
  • In der zweiten Sub-Stufe wird die zweite Hälfte der Befehlsquellen (z. B. die Quellen der Befehle I2 und I3) auf Abhängigkeiten mit den Zielregistern in der zweiten Hälfte der Befehle (z. B. A4, A5) geprüft.
    Eingabe Nach Entfernen der Hälfte der Abhängigkeit Nach vollständigem Entfernen der Abhängigkeit
    OP A0, A1, A2 N8, N1, N2 N0 → [N8] N8, N1, N2 N0 → [N8]
    OP A3, A0, A1 N9, N8, N1 N3 → [N9] N9, N8, N1 N3 → [N9]
    OP A4, A3, A0 A4, A3, A0 N9, N8 N10, N9, N8 N4 → [N10]
    OP A5, A6, A4 A5, A6, A4 N6, N4 N11, N6, N10 N5 → [N11]
  • Wenn mehr als zwei Sub-Stufen zum Entfernen von Abhängigkeit benutzt werden, zum Beispiel n Sub-Stufen, prüft die i-te Sub-Stufe Befehle in den Sub-Sätzen i bis n auf Abhängigkeiten mit den Zielregistern dem i-ten Sub-Satz von Befehlen (z. B. für n = 3, die 2-te Sub-Stufe prüft die Befehle in den Sub-Sätzen 2 und 3 auf Abhängigkeiten mit den Zielregistern im 2-ten Sub-Satz von Befehlen).
  • Somit kann durch wesentliches Erhöhen der Anzahl von Befehlen in einem Satz auf solche Weise, dass zwei oder mehr Stufen zum Entfernen von Abhängigkeit benutzt werden, der Durchsatz auf Kosten der Latenz gesteigert werden. Da sich die Endstufe 22 einfach skalieren lässt, kann der gesamte Satz von Befehlen (z. B. I0–I39 im Beispiel mit 40 Befehlen) parallel umbenannt werden, und auf diese Weise gibt es eine einzige Instanz der Umbenennungslogik 112.
  • Die vorstehend beschriebenen Verfahren zeigen Beispiele von Implementierungen, die Zusatzregister zur Ausführung der Registerumbenennung benutzen. Es versteht sich jedoch, dass die N nicht-zugeordneten physischen Register, die bei der Umbenennung benutzt werden (zur Aktualisierung von Abbildung und Befehlen) auf verschiedene Weise zugeordnet werden können, ohne dass dies die hier beschriebene Gesamttechnik (z. B. Anwenden einer FIFO-Methodik oder anderer Herangehensweise) beeinflusst. Zum Beispiel können sich die Zusatzregister gegenseitig speisen, wenn nicht alle Zusatzregister in einem einzelnen Zyklus benutzt werden; wenn zum Beispiel 3 Zusatzregister (Zwischenregister) N0, N1, N2 vorhanden sind und nur N0 und N1 benutzt werden, kann der Wert von N2 (d. h. des nicht-zugeordneten Registers entsprechend N2) in N0 (N0 → [N2]) gesetzt werden, und N1 und N2 können neue nicht-zugeordnete physische Register erhalten. Auf gleiche Weise gilt, falls nur N0 benutzt wurde, der Wert von N1 in N0 gesetzt werden kann, und der Wert von N2 in N1 (N0 → [N1] und N1 → [N2]), und N2 kann ein neues nicht-zugeordnetes physisches Register erhalten.
  • In den vorstehend beschriebenen Beispielen enthält jeder Satz von Befehlen die gleiche Anzahl von Befehlen. In weiteren Beispielen können verschiedene Sätze jedoch unterschiedliche Anzahlen von Befehlen enthalten, und in solchen Beispielen kann es eine Höchstanzahl von Befehlen geben, die innerhalb eines Satzes untergebracht werden kann. Bei einigen Implementierungen kann die Anzahl von Befehlen innerhalb eines Satzes entsprechend der Anzahl von Befehlen variiert werden, die die Decodier-Stufe 104 an die Umbenennungsstufe 106, 500 in jedem einzelnen Zyklus senden kann. Außerdem muss, wenn mehrere Sub-Stufen zum Entfernen von Abhängigkeit benutzt werden, nicht jeder Sub-Satz von Befehlen die gleiche Anzahl von Befehlen umfassen (z. B. wenn zwei Sub-Stufen zum Entfernen von Abhängigkeit benutzt werden, kann der erste Sub-Satz mehr als die Hälfte oder weniger als die Hälfte der Befehle im Satz umfassen).
  • Im vorstehend beschriebenen Beispiel haben alle Befehle, die umbenannt werden, die gleiche Anzahl von Zieloperanden (einen in den obigen Beispielen) und die gleiche Anzahl von Quelloperanden (einen im ersten Beispiel oben und zwei in dem in 3 gezeigten Beispiel). In einer Abwandlung der vorstehend beschriebenen Verfahren können Befehle eine variable, eingeschränkte Anzahl von Operanden aufweisen (z. B. bis zu X Quellen und bis zu Y Zielen, wobei X und Y gleich oder verschieden sein können). Bei einer derartigen Implementierung kann jedem Operanden (z. B. ein Ziel- oder Quellregister) bis zu einer zulässigen Höchstanzahl von Operanden ein gültiges Bit zugeordnet sein, das angibt, ob der Operand benutzt wird oder nicht. Wenn zum Beispiel X = 3 und Y = 2, sind jedem Befehl fünf gültige Bits zugeordnet, auch wenn dieser Befehl weniger als fünf Operanden umfassen mag. Wenn das Bit angibt, dass der Operand benutzt wird, wird er nach den obigen Verfahren umbenannt, gibt das Bit dagegen an, dass der Operand nicht benutzt wird, wird der unbenutzte Operand beim Umbenennungsvorgang übersprungen (oder vernachlässigt).
  • In Situationen, wenn es eine feste Anzahl von Zielen und eine variable Anzahl von Quellen gibt, kann ein solches gültige Bit für jeden Quelloperanden benutzt werden, oder alternativ kann jeder Quelloperand implizit ”gültig” sein. Ein Ausführen des Umbenennungsvorgangs bei unbenutzten Quelloperanden ist ineffektiv, aber ein Ausführen eines Umbenennens bei unbenutzten Zieloperanden wird nicht funktionieren. Aus diesem Grund können bei bestimmten Implementierungen gültige Bits nur in Bezug auf Zieloperanden, aber nicht bei Quelloperanden benutzt werden.
  • In einem Beispiel, wenn nur eine geringe Anzahl von Befehlen mehr als ein Zielregister aufweist, kann es effizienter sein, jeden Befehl, der mehr als ein Zielregister hat, in eine Serie von Sub-Befehlen zu separieren, bei denen jeder Sub-Befehl maximal ein Zielregister aufweist. Der Satz von Befehlen, einschließlich der Sub-Befehle, kann dann unter Verwendung der vorstehend beschriebenen Verfahren und ohne Bedarf an gültigen Bits umbenannt werden.
  • In einigen Beispielen können zusätzliche Optimierungstechniken zur Umbenennung zwischen den zwei Stufen des Umbenennungsvorgangs oder als Teil entweder der ersten oder der Endstufe hinzugefügt werden. Insbesondere kann bei vielen Umbenennungsoptimierungen die Fähigkeit zum Hinzufügen der Optimierungsstufe nach dem Entfernen der Abhängigkeiten aber vor dem Schreiben in die Umbenennungsabbildung die Effizienz des Vorgangs steigern, und das hier beschriebene mehrstufige Umbenennungsverfahren eignet sich gut für ein solches Einfügen zusätzlicher Vorgänge zwischen den Stufen. In einem Beispiel, bei dem ein Befehl den Wert eines Architekturregisters an ein anderes Architekturregister verschiebt (z. B. A0 = A1), kann dies durch Aktualisieren der Abbildung in einem Optimierungsschritt implementiert werden, anstatt anschließend den Befehl auszuführen.
  • 6 zeigt zwei schematische Darstellungen von Out-of-Order-Prozessoren, die jeweils einen Schleifenpuffer umfassen. Der erste beispielhafte Prozessor 600 zeigt eine Anordnung, bei der der Schleifenpuffer 602 nach den Fetch- und Decodier-Stufen 102 bzw. 104 und vor der Umbenennungsstufe 604 ausgelegt ist. Wenn bei Betrieb der Beginn einer Schleife erkannt wird, werden die Befehle vor der Umbenennungsstufe 604 im Schleifenpuffer 602 gesammelt. Wenn sich die gesamte Schleife im Schleifenpuffer 602 befindet, können die Fetch- und Decodier-Vorgänge angehalten werden, und stattdessen können die Befehle aus dem Schleifenpuffer 602 der Umbenennungsstufe 604 zugeleitet werden. In dieser Konfiguration wird die Ausführung der Befehle in der Schleife von Engpässen in der Umbenennungsstufe 604 beeinflusst.
  • Der zweite beispielhafte Prozessor 606 zeigt eine verbesserte Anordnung, bei der der Schleifenpuffer 602 zwischen den beiden Stufen 110, 112 der Umbenennungsstufe 106 ausgelegt ist. Bei diesem zweiten, optimierten Beispiel werden die Befehle im Schleifenpuffer 602 gespeichert, nachdem die Abhängigkeiten entfernt worden sind (in der Stufe zum Entfernen von Abhängigkeit 110), aber vor der Umbenennungsstufe. Sobald die gesamte Schleife im Schleifenpuffer 602 gespeichert ist, kann die Umbenennungsstufe 112 die Befehle in der Schleife mit einer geringen Anzahl von Vorgängen umbenennen. Wie vorstehend beschrieben kann die Umbenennungsstufe 112 alle Umbenennungsvorgänge parallel (in Block 206) ausführen, und sie ist sehr skalierbar (und weit mehr skalierbar als die Stufe zum Entfernen von Abhängigkeit 110), und in einigen Fällen kann die Möglichkeit bestehen, die gesamte Schleife in einem einzelnen Vorgang umzubenennen (d. h. in einem einzelnen Zyklus). Die Anwendung einer solchen Architektur reduziert nachhaltig die Verzögerung, die durch die Umbenennung von Schleifen eingebracht wird, weil der Schleifenpuffer nach der Stufe ausgelegt werden kann, die in Bezug auf die Kapazität am stärksten eingeschränkt ist.
  • Die vorstehend beschriebenen Verfahren und Umbenennungsanordnungen stellen einen stärker skalierbaren Umbenennungsvorgang bereit, der bei Erhöhung der Latenz um eine geringe Anzahl von Zyklen (z. B. einen oder mehr) den Durchsatz und/oder die maximale Taktgeschwindigkeit erhöht. Zusätzlich kann das System, da die Abhängigkeiten alle in der ersten Stufe entfernt werden, wodurch der Bedarf an komplizierten Weiterleitungspfaden oder Latches zwischen Vorgängen entfällt, einfacher synthetisiert werden als alternative zweistufige Umbenennungstechniken.
  • Verglichen mit einem gleichwertigen einstufigen Umbenennungsblock gibt es weniger Logikebenen (z. B. weniger kaskadierte Gates), und dies hat den Effekt, dass die maximale Taktgeschwindigkeit des Umbenennungsblocks höher ist.
  • Die Begriffe 'Prozessor' und 'Computer' werden hier zur Bezeichnung jeglicher Vorrichtungen mit Verarbeitungsfähigkeit solcher Art benutzt, dass sie Befehle ausführen können. Der Begriff 'Prozessor' wird hier benutzt, um Mikroprozessoren, mehrgängige Prozessoren und eingängige Prozessoren zu umfassen. In einigen Beispielen, wenn zum Beispiel ein System auf einer Chiparchitektur benutzt wird, kann ein Prozessor einen oder mehrere feste Funktionsblöcke (auch Beschleuniger genannt) umfassen, die eine besondere Funktion (z. B. Teil eines vom Prozessor implementierten Verfahrens) in Hardware (eher als Software oder Firmware) implementieren. Der Fachmann versteht, dass solche Verarbeitungsfähigkeiten in vielen verschiedenen Vorrichtungen vorhanden sind, und deshalb umfasst der Begriff 'Computer' Set-Top-Boxen, Media Player, Digitalradios, PC, Server, Mobiltelefone, persönliche digitale Hilfsmittel, Spielekonsolen und viele andere Vorrichtungen.
  • Dem Fachmann ist bekannt, dass Speichervorrichtungen, die zur Speicherung von Programmbefehlen benutzt werden, über ein Netz verteilt sein können. Zum Beispiel kann ein Remote Computer ein Beispiel des beschriebenen Verfahrens als Software speichern. Ein lokaler Computer oder ein Computerterminal kann auf den Remote Computer zugreifen und die Software teilweise oder vollständig zum Ausführen des Programms herunterladen. Alternativ kann der lokale Computer Teile der Software nach Bedarf herunterladen oder einige Softwarebefehle auf dem lokalen Terminal und andere auf dem Remote Computer (oder Computernetz) ausführen. Der Fachmann erkennt auch, dass unter Verwendung konventioneller, dem Fachmann bekannter Techniken die Softwarebefehle vollständig oder teilweise von einer dedizierten Schaltung, wie einem DSP, einem Programmable Logic Array oder dergleichen, ausgeführt werden können.
  • Jeder hier angeführte Wert für einen Bereich oder eine Vorrichtung kann erweitert oder verändert werden, ohne dass die angestrebte Wirkung verloren geht, was für den Fachmann einsichtig ist.
  • Es versteht sich, dass sich die vorstehend beschriebenen Vorteile und Vorzüge auf eine Ausführungsform oder auch mehrere Ausführungsformen beziehen können. Die Ausführungsformen sind nicht auf die beschränkt, die eines oder alle der festgestellten Aufgaben lösen, oder auf die, die einige oder alle festgestellten Vorteile und Vorzüge aufweisen.
  • Jede Bezugnahme auf 'eine' Position bezieht sich auf eine oder mehrere solcher Positionen. Der Begriff 'umfassen' hat hier die Bedeutung, Verfahrensblöcke oder bezeichnete Elemente zu umfassen, aber solche Blöcke oder Elemente stellen keine Liste ohne Ausnahmen dar, und ein Verfahren oder eine Vorrichtung kann zusätzliche Blöcke oder Elemente enthalten.
  • Die Schritte der hier beschriebenen Verfahren können in jeder geeigneten Reihenfolge, oder wenn zweckentsprechend gleichzeitig ausgeführt werden. Die Pfeile zwischen Kästen in den Figuren zeigen eine beispielhafte Folge von Verfahrensschritten, dienen aber nicht dem Zweck. andere Folgen oder die Leistung mehrerer paralleler Schritte auszuschließen. Darüber hinaus können einzelne Blöcke bei jedem der Verfahren ausgelassen werden, ohne dass dies eine Abweichung vom Wesen oder Schutzbereich des hier beschriebenen beanspruchten Gegenstands darstellt. Aspekte der vorstehend beschriebenen Beispiele können mit Aspekten der anderen beschriebenen Beispiele kombiniert werden, um weitere Beispiele zu bilden, ohne dass die angestrebte Wirkung verloren geht. Wenn Elemente in den Figuren mit Pfeilen verbunden dargestellt sind, versteht sich, dass diese Pfeile nur einen beispielhaften Ablauf von Kommunikation zwischen Elementen (einschließlich Daten- und Prüf-/Steuernachrichten) bezeichnen. Der Ablauf zwischen Elementen kann in einer oder in beiden Richtungen erfolgen.
  • Es versteht sich, dass die vorstehende Beschreibung einer bevorzugten Ausführungsform nur als Beispiel dient, und dass verschiedene Abänderungen von einem Fachmann vorgenommen werden können. Obwohl verschiedene Ausführungsformen vorstehend mit einem gewissen Ausmaß an Besonderheit oder mit Bezugnahme auf eine oder mehrere individuelle Ausführungsformen beschrieben worden sind, kann der Fachmann viele Abänderungen an den offenbarten Ausführungsformen vornehmen, ohne vom Wesen und Schutzbereich dieser Erfindung abzuweichen.

Claims (21)

  1. Verfahren zur Registerumbenennung in einem Out-of-Order-Prozessor, umfassend: in einer ersten Stufe Entfernen (21) von Abhängigkeiten innerhalb eines Satzes von Befehlen unter Verwendung einer in Hardwarelogik definierten festen Abbildung; und in einer Endstufe paralleles Umbenennen (22, 206) aller Register im Satz von Befehlen unter Verwendung einer Umbenennungsabbildung.
  2. Verfahren nach Anspruch 1, wobei das Entfernen von Abhängigkeiten innerhalb eines Satzes von Befehlen unter Verwendung einer in Hardwarelogik definierten festen Abbildung umfasst: Umbenennen (202) aller Zielregister und etwaiger abhängiger Register innerhalb des Satzes von Befehlen mit einem aus einem Satz Zusatzregister unter Verwendung der festen Abbildung; und Weiterleiten (204) von Details darüber, welches Zusatzregister zum Umbenennen jedes Zielregisters benutzt wurde, an die Endstufe.
  3. Verfahren nach Anspruch 2, wobei die feste Abbildung zwischen Zielregistern und Zusatzregistern auf einer physischen Position jedes Zielregisters im Satz von Befehlen basiert.
  4. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Endstufe ferner umfasst: Aktualisieren (208) der Umbenennungsabbildung.
  5. Verfahren nach Anspruch 4, wobei die Umbenennungsabbildung jedem Zusatzregister zugeordnete Einträge umfasst.
  6. Verfahren nach Anspruch 5, wobei das Aktualisieren der Umbenennungsabbildung umfasst: Aktualisieren (210) von Einträgen in der jedem Zielregister zugeordneten Umbenennungsabbildung auf Basis von aus der ersten Stufe weitergeleiteten Details; und Aktualisieren (212) von Einträgen in der jedem Zusatzregister zugeordneten Umbenennungsabbildung zum Abbilden jedes Zusatzregisters an ein nicht-zugeordnetes physisches Register.
  7. Verfahren nach Anspruch 6, ferner umfassend: Zugreifen auf eine Liste nicht-zugeordneter physischer Register.
  8. Verfahren nach einem der vorhergehenden Ansprüche, wobei die feste Abbildung unabhängig von jedem vorhergehenden Zustand ist.
  9. Verfahren nach einem der vorhergehenden Ansprüche, ferner aufweisend: Ausführen eines Optimierungsvorgangs zwischen der ersten Stufe und der Endstufe.
  10. Verfahren nach Anspruch 2 oder einem der Ansprüche 3 bis 9, wenn abhängig von Anspruch 2, wobei der Satz von Befehlen N Befehle umfasst und der Satz Zusatzregister N Zusatzregister umfasst, wobei N eine Ganzzahl ist.
  11. Verfahren nach einem der Ansprüche 1 bis 9, wobei jeder Befehl innerhalb des Satzes von Befehlen nicht mehr als Y Zielregister umfasst, und wobei jeder Befehl einen Satz von Y zugeordneten gültigen Bits aufweist, wobei jedes gültige Bit angibt, ob eines der Y Zielregister im Befehl benutzt wird.
  12. Verfahren nach Anspruch 11, wobei der Satz von Befehlen N Befehle und der Satz Zusatzregister NxY Zusatzregister umfasst, wobei N und Y Ganzzahlen sind.
  13. Verfahren nach einem der vorhergehenden Ansprüche, wobei jeder Befehl innerhalb des Satzes von Befehlen nicht mehr als X Quellregister umfasst, und wobei jeder Befehl einen Satz von X zugeordneten gültigen Bits aufweist, wobei jedes gültige Bit angibt, ob eines der X Quellregister im Befehl benutzt wird.
  14. Out-of-Order-Prozessor (100, 500, 606), umfassend: eine Umbenennungsabbildung (108); Hardwarelogik (114), die eine feste Abbildung zwischen Registern definiert; Logik (110) zum Entfernen von Abhängigkeit, die ausgelegt ist zum Entfernen von Abhängigkeiten innerhalb eines Satzes von Befehlen unter Verwendung der festen Abbildung; Umbenennungslogik (112), die ausgelegt ist zum parallelen Umbenennen aller Register im Satz von Befehlen unter Verwendung der Umbenennungsabbildung; und mehrere physische Register (107).
  15. Out-of-Order-Prozessor nach Anspruch 14, wobei die Logik zum Entfernen von Abhängigkeit mehrere Logikinstanzen (110) zum Entfernen von Abhängigkeit umfasst; und wobei jede Logikinstanz zum Entfernen von Abhängigkeit ausgelegt ist zum Entfernen von Abhängigkeiten innerhalb eines separaten, sich nicht überschneidenden Sub-Satzes des Satzes von Befehlen.
  16. Out-of-Order-Prozessor nach Anspruch 14 oder 15, wobei die Logik zum Entfernen von Abhängigkeit ausgelegt ist zum Entfernen von Abhängigkeiten innerhalb eines Satzes von Befehlen durch Umbenennen aller Zielregister und etwaiger abhängiger Register innerhalb des Satzes von Befehlen mit einem aus einem Satz Zusatzregister unter Verwendung der festen Abbildung; und Weiterleiten von Details darüber, welches Zusatzregister zum Umbenennen jedes Zielregisters benutzt wurde, an die Umbenennungslogik.
  17. Out-of-Order-Prozessor nach einem der Ansprüche 14 bis 16, wobei die Umbenennungsabbildung jedem Zusatzregister zugeordnete Einträge umfasst.
  18. Out-of-Order-Prozessor nach einem der Ansprüche 14 bis 17, wobei die mehreren physischen Register mehrere nicht-zugeordnete physische Register (109) umfassen.
  19. Out-of-Order-Prozessor nach einem der Ansprüche 14 bis 18, wobei die Umbenennungslogik ferner ausgelegt ist zum Aktualisieren der Umbenennungsabbildung.
  20. Out-of-Order-Prozessor nach einem der Ansprüche 14 bis 19, ferner umfassend einen Schleifenpuffer (602) zwischen der Logik zum Entfernen von Abhängigkeit und der Umbenennungslogik, wobei der Schleifenpuffer ausgelegt ist zum Speichern von Befehlen, die sich in einer Schleife nach Entfernen von Abhängigkeit durch die Logik zum Entfernen von Abhängigkeit befindet; und nach Speichern aller Befehle in der Schleife Freigabe der Befehle an die Umbenennungslogik.
  21. Out-of-Order-Prozessor nach einem der Ansprüche 14 bis 20, ferner umfassend eine Optimierungslogik zwischen der Logik (110) zum Entfernen von Abhängigkeit und der Umbenennungslogik (112).
DE102013013137.5A 2012-08-07 2013-08-07 Mehrstufige registerumbenennung durch entfernen von abhängigkeiten Ceased DE102013013137A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1213994.5 2012-08-07
GB1213994.5A GB2496934B (en) 2012-08-07 2012-08-07 Multi-stage register renaming using dependency removal

Publications (1)

Publication Number Publication Date
DE102013013137A1 true DE102013013137A1 (de) 2014-02-13

Family

ID=46934945

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013013137.5A Ceased DE102013013137A1 (de) 2012-08-07 2013-08-07 Mehrstufige registerumbenennung durch entfernen von abhängigkeiten

Country Status (3)

Country Link
US (1) US20140047218A1 (de)
DE (1) DE102013013137A1 (de)
GB (1) GB2496934B (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8924741B2 (en) 2012-12-29 2014-12-30 Intel Corporation Instruction and logic to provide SIMD secure hashing round slice functionality
US10038550B2 (en) 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality
GB2556740A (en) * 2013-11-29 2018-06-06 Imagination Tech Ltd Soft-partitioning of a register file cache
GB2545307B (en) * 2013-11-29 2018-03-07 Imagination Tech Ltd A module and method implemented in a multi-threaded out-of-order processor
US10503510B2 (en) 2013-12-27 2019-12-10 Intel Corporation SM3 hash function message expansion processors, methods, systems, and instructions
US9912481B2 (en) 2014-03-27 2018-03-06 Intel Corporation Method and apparatus for efficiently executing hash operations
US9317719B2 (en) 2014-09-04 2016-04-19 Intel Corporation SM3 hash algorithm acceleration processors, methods, systems, and instructions
US9658854B2 (en) 2014-09-26 2017-05-23 Intel Corporation Instructions and logic to provide SIMD SM3 cryptographic hashing functionality
KR101927674B1 (ko) * 2015-09-30 2018-12-10 가부시끼가이샤 구레하 폴리아릴렌 설파이드의 제조 방법
EP3812892B1 (de) 2019-10-21 2022-12-07 ARM Limited Vorrichtung und verfahren zur handhabung von speicherladeanfragen
GB2594732B (en) * 2020-05-06 2022-06-01 Advanced Risc Mach Ltd Adaptive load coalescing

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5996068A (en) * 1997-03-26 1999-11-30 Lucent Technologies Inc. Method and apparatus for renaming registers corresponding to multiple thread identifications
US6076183A (en) * 1997-12-18 2000-06-13 Bull, S.A. Method of memory error correction by scrubbing
US6230262B1 (en) * 1998-07-31 2001-05-08 Advanced Micro Devices, Inc. Processor configured to selectively free physical registers upon retirement of instructions
JP3592673B2 (ja) * 1999-09-08 2004-11-24 一 関 レジスタ・リネーミング方式
US7051193B2 (en) * 2001-03-28 2006-05-23 Intel Corporation Register rotation prediction and precomputation
US8683180B2 (en) * 2009-10-13 2014-03-25 International Business Machines Corporation Intermediate register mapper

Also Published As

Publication number Publication date
CN103577159A (zh) 2014-02-12
GB201213994D0 (en) 2012-09-19
GB2496934A (en) 2013-05-29
US20140047218A1 (en) 2014-02-13
GB2496934B (en) 2014-06-11

Similar Documents

Publication Publication Date Title
DE102013013137A1 (de) Mehrstufige registerumbenennung durch entfernen von abhängigkeiten
DE19914210B4 (de) Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung
DE102013014169B4 (de) Dynamisch grössenveränderbare Zirkularpuffer
DE112009000741B4 (de) Vektorbefehle zum Ermöglichen von effizienter Synchronisation und parallelen Reduktionsoperationen
DE102010051476B4 (de) Addierbefehle, um drei Quelloperanden zu addieren
DE10297000B4 (de) Verfahren und Vorrichtung zur parallelen Datenverschiebung nach rechts mit Datenzusammenfügung
DE112013004770T5 (de) Lese- und -Schreibmaskenaktualisierungsbefehl zur Vektorisierung rekursiver Berechnungen über unabhängige Daten
DE112011105774B4 (de) Verschiebbarer Speicher, der In-Memory-Datenstrukturen unterstützt
DE112012007088B4 (de) Vorrichtung, verfahren und system mit einem befehl zum reduzieren von elementen in einem vektorregister mit einem schrittweisem zugriffsmuster
DE102015101414A1 (de) Verbesserter Rücksprungstapelpuffer
DE102008061062A1 (de) Befehle und Logik zum Durchführen von Maskenlade- und -speicheroperationen
DE102014003790A1 (de) Parallelvorrichtung für hochkomprimierte Hochgeschwindigkeits-LZ77-Tokenisierung und Huffman-Codierung für Deflate-Komprimierung
DE112011103559T5 (de) Vector Gather Buffer für mehrere Adressen-Vektor-Ladevorgänge
DE112010004963T5 (de) Synchronisieren von SIMD Vektoren
DE112013004783T5 (de) Durch Lese- und Schreibmasken gesteuerter Vektor-Verschiebebefehl
DE102015100705A1 (de) Vorhersage von werten stapelgespeicherter variablen
DE112005002403T5 (de) Prozessor-Pipeline mit konstantem Durchsatz
DE102009012766A1 (de) Ein Zugriffssperrenvorgang, um atomare Aktualisierungen zu einem geteilten Speicher zu ermöglichen
DE112010002773T5 (de) Entpacken von gepackten daten auf mehreren spuren
DE102014003799A1 (de) Systeme und Verfahren zur Übertragungseliminierung mit Bypass-Mehrfachinstanziierungstabelle
DE112005002370T5 (de) Ausführung von Kontrollbefehlen in redundanten Multithreadingumgebungen
DE112011103211T5 (de) Auf einem Halbleiterchip implementierte vektorlogische Reduktionsoperation
DE102014002510A1 (de) Präzise Ausnahmesignalisierung für Mehrfachdatenarchitektur
DE112020005987T5 (de) Setzen von prüfpunkten in akkumulatorregister-ergebnissen in einem mikroprozessor
DE102014017744A1 (de) Weiche partitionierung eines registerspeicher-caches

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final