DE10063644B4 - Lokales Anhalten und Gefahrerfassung in einem superskalaren Pipeline-Mikroprozessor zum Vermeiden eines erneuten Lesens einer Registerdatei - Google Patents

Lokales Anhalten und Gefahrerfassung in einem superskalaren Pipeline-Mikroprozessor zum Vermeiden eines erneuten Lesens einer Registerdatei Download PDF

Info

Publication number
DE10063644B4
DE10063644B4 DE10063644A DE10063644A DE10063644B4 DE 10063644 B4 DE10063644 B4 DE 10063644B4 DE 10063644 A DE10063644 A DE 10063644A DE 10063644 A DE10063644 A DE 10063644A DE 10063644 B4 DE10063644 B4 DE 10063644B4
Authority
DE
Germany
Prior art keywords
data
command
register
local
pipeline
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE10063644A
Other languages
English (en)
Other versions
DE10063644A1 (de
Inventor
Donald Charles Fort Collins Soltis jun.
Rohit Fort Collins Bhatia
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE10063644A1 publication Critical patent/DE10063644A1/de
Application granted granted Critical
Publication of DE10063644B4 publication Critical patent/DE10063644B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • 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

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)

Abstract

Verfahren zum Vermeiden eines erneuten Lesens einer Registerdatei aufgrund einer Datenabhängigkeit in einer Pipeline (16) mit mehreren Stufen eines Pipeline-Systems mit einer Mehrzahl von Pipelines (14), mit folgenden Schritten:
Erfassen einer Registeradresse von Quellenoperandendaten für einen ersten Befehl, wobei die Registeradresse zu einer Position der Quellenoperandendaten für den ersten Befehl in einem Register zeigt;
Lesen der Quellenoperandendaten aus dem Register für den ersten Befehl;
Bestimmen, ob eine Datenabhängigkeit, die anzeigt, daß die Quellenoperandendaten, die für den ersten Befehl gelesen werden, durch einen anderen Befehl, der für den ersten Befehl ein Erzeuger ist, noch nicht in dem Register bereitgestellt wurden, in der Pipeline (16) existiert;
Aktivieren eines lokalen Anhaltens in der Pipeline (16), wenn bestimmt wird, daß eine Datenabhängigkeit in der Pipeline (16) existiert;
Aktivieren eines globalen Anhaltens in der Mehrzahl von Pipelines (14) in dem Pipeline-System; und
Behandeln der gelesenen Quellenoperandendaten als nicht korrekt,...

Description

  • Die Erfindung bezieht sich auf Computer und superskalare Pipeline-Mikroprozessoren. Diese Erfindung bezieht sich insbesondere auf ein Verfahren und eine Vorrichtung zum Verbessern der Leistung von Pipeline-Mikroprozessoren.
  • Typische Computersysteme weisen eine Zahl von üblichen Komponenten auf. Diese Komponenten, wie in 1 zu sehen, umfassen eine CPU, einen Bus, einen Speicher und Peripherievorrichtungen. Bei Hochgeschwindigkeitscomputern, kann die CPU ein superskalarer Pipeline-Mikroprozessor sein. wie in 2 gezeigt, kann ein superskalarer Pipeline-Mikroprozessor eine Befehlsabrufeinheit, mehrere Pipelines und eine zentralisierte Datenabhängigkeitsgefahrerfassungsvorrichtung umfassen. Die Befehlsabrufeinheit ruft Befehle ab und leitet dieselben zu einer Pipeline weiter. In der Pipeline fließen die Befehle durch mehrere Pipelinestufen, wonach die Resultate der Befehle in einen architektonischen Zustand (d. h. einen Speicher) übergeben werden.
  • Die Stufen in einem Standard-Pipeline-Mikroprozessor können eine Umbenennungsregisteridentifikations- oder Befehlsdecodier-Stufe ("REN"), eine Registerlese- oder Operandenabruf-Stufe ("REG"), eine erste Befehlsausführungsstufe ("EX1"), eine zweite Befehlsausführungsstufe ("EX2"), und eine Zurückschreibestufe ("WRB") umfassen. Ein Pipeline-Mikroprozessor führt ein paralleles Verarbeiten durch, bei dem Befehle auf eine Fließband-Art ausgeführt werden. Aufeinanderfolgende Befehle werden in Folge bearbeitet, es werden jedoch mehrere Befehle eingeleitet, bevor ein erster Befehl beendet ist. Auf diese Art und Weise bewegen sich Befehle schrittweise durch jede Stufe einer speziellen Pipeline, ein Befehl pro Stufe pro Pipeline zu einem Zeitpunkt. Ein erster Befehl wird beispielsweise abgerufen und dann zu der Stufe REN weitergeleitet. Wenn der erste Befehl in der Stufe REN beendet ist, d. h. derselbe decodiert ist und die Registeridentifikation des Befehls ("RegID") von einem virtuellen Raum zu einem realen Raum umbenannt ist, wird derselbe zu der Stufe REG weitergeleitet, und ein zweiter Befehl wird abgerufen und zu der Stufe REN weitergeleitet. Dieses Verfahren fährt so lange fort, bis jeder Befehl seinen Weg durch jede Stufe der Pipeline macht. In einigen Situationen, wie im folgenden erörtert, ist es jedoch notwendig, einen Befehl oder mehrere Befehle in der Pipeline anzuhalten. Das Anhalten eines Befehls betriffts das Halten des Befehls in einer Stufe der Pipeline, bis die Situation gelöst und das Anhalten nicht länger aktiviert ist.
  • Befehle in Pipeline-Mikroprozessoren besitzen Erzeuger und Verbraucher. In einem Pipeline-Mikroprozessor kann ein Befehl in einer früheren Stufe (z. B. REG) von Daten von einem Befehl (Erzeuger) in einer späteren Stufe (z. B. EX1 oder EX2) abhängen (ein Verbraucher sein). Ein Erzeuger ist ein Befehl, der Daten erzeugt, wie z. B. einen Addier-Befehl. Ein Zielregister ist ein Register, in das der Erzeuger die Resultate (die Zieloperanden) des Addierens schreibt. Es kann ein folgender Addier-Befehl auftreten, der in der Pipeline früher ist – früher bedeutet, daß derselbe ein jüngerer Befehl in der Programmreihenfolge ist – der die Resultate des ersten Addier-Befehls aus dem Zielregister (dem Quellregister desselben) nimmt, und dieselben zu etwas anderem addiert, wobei ein zweites Resultat erzeugt wird. Daher ist der zweite Addier-Befehl ein Verbraucher und die Beziehung zwischen dem Verbraucher und dem Erzeuger wird eine Datenabhängigkeit genannt. Das Verfahren des Lesens von Daten durch den Verbraucher aus dem Quellenregister desselben ist als eine Verbraucheroperandenerzeugung bekannt.
  • Oftmals benötigt ein Befehl mehrere Stufen oder Zyklen bevor derselbe seinen Betrieb beendet, und die Daten, die durch den Befehl erzeugt werden, sind verfügbar. Diese Verzögerung oder Latenz bzw. Wartezeit kann von Befehl zu Befehl variieren, wobei einfache Befehle eine Stufe (eine Ein-Zyklus-Latenz) und komplexe Befehle mehrere Stufen (eine Mehr-Zyklus-Latenz) benötigen. Wenn ein Erzeuger eine Mehr-Zyklus-Latenz aufweist, dann sind die Daten desselben für den Verbraucher so lange nicht verfügbar, bis sich der Erzeuger zu einer späteren Stufe bewegt und den Betrieb desselben beendet. Eine solche Situation wird eine Datenabhängigkeitsgefahr genannt, und wenn ein Codesegment geschrieben wird, wenn der Verbraucher unmittelbar dem Erzeuger folgt oder andernfalls nicht ausreichend durch Pipelinestufen von dem Erzeuger getrennt ist, muß die Hardware die Datenabhängigkeits-Gefahr erfassen. Bei dieser Situation muß die Hardware den Verbraucher in einer bestimmten Pipelinestufe so lange anhalten, bis der Erzeuger seine Daten zur Verfügung stellen kann.
  • Wie in 2 dargestellt, weisen herkömmliche superskalare Pipeline-Entwürfe eine zentralisierte Datenabhängigkeitsgefahrerfassungsvorrichtung auf, deren Ausgangssignal ein Anhalte-Signal ist. Dieses Anhalte-Signal ist ein globales Anhalten, das effektiv den Verbraucher in der EX1-Stufe hält, der Stufe, in der der Verbraucher auf die Quellenoperanden desselben wartet, da das globale Anhalten eintrifft, nachdem sich der Verbraucher aus der Stufe REG bewegt hat. Das globale Anhalten gilt für alle Pipelines und alle Stufen vor und einschließlich der Stufe, in der die Datenabhängigkeitsgefahr erfaßt wird. Die zentralisierte Datenabhängigkeitsgefahrerfassungsschaltungsanordnung erfaßt alle möglichen Verbraucher-Erzeuger-Datenabhängigkeitsgefahren. Das globale Anhalte-Signal, das erzeugt wird, muß frühere Pipelinestufen durchqueren – um etwas in der REG-Stufe anzuhalten, muß das Anhalten alle vorhergehenden Stufen, wie z. B. die Stufe REN, durchqueren. Ähnlicherweise muß das globale Anhalte-Signal die physischen Abmessungen der CPU durchqueren, um sich durch die Stufen zurück zu bewegen. Allein die Strecke durch den Chip einer CPU kann relativ lang sein, und es gibt üblicherweise eine große Zahl von Stufen.
  • Dementsprechend kann das Eintreffen des globalen Anhalte-Signals an einem Punkt in einem Zyklus spät sein, was eine späte Kenntnis eines Anhaltens bewirkt. Die resultierende späte Kenntnis wird vergrößert, wenn zusätzliche Pipelines hinzugefügt werden, da eine nichtlineare Zunahme der Logikmenge benötigt wird, um das globale Anhalten zu erzeugen, sowie die Anzahl der Pipelines erhöht wird. Diese nichtlineare Berechnung ist eine Funktion der Zahl der Quellenoperanden entlang der Breite oder Zahl der Pipelines entlang der Tiefe der Pipelines (oder Zahl der Stufen). Folglich ist eine schnellere Schaltungsanordnung bei dem globalen Anhalten erforderlich, um bei den beabsichtigten Frequenzen zu arbeiten. Diese Schaltungsanordnung kann die gesamte CPU-Betriebsfrequenz begrenzen.
  • Ein weiteres Problem bei dem späten Eintreffen des globalen Anhaltens besteht darin, daß dasselbe eine vollständige Neuberechnung der Datenweiterleitungsarchitektur, einschließlich eines erneuten Registerdateilesens, notwendig macht, um korrekte Operandendaten sicherzustellen. Wenn sich die Verbraucherbefehle Y1 und Y2 in der Stufe REG befinden, wenn eine Datenabhängigkeitsgefahr für einen Operanden von Y1 auftritt, kann das globale Anhalten nicht eintreffen oder aktiviert sein, bis sich Y1 und Y2 bereits in einer späteren Stufe, wie z. B. der Stufe EX1, befinden. Da eine Datenabhängigkeitsgefahr für einen Operanden von Y1 auftrat, als sich Y1 in der Stufe REG befand, und Y1 zu der Stufe EX1 weitergeleitet wurde, bevor das globale Anhalten eintraf (d. h. bevor der Erzeugerbefehl seine Berechnung beendet hat und seine Daten für Y1 zur Verfügung gestellt hat), sind die Daten in Y1 inkorrekt. Y1 wird die korrekten Daten von dem Erzeuger derselben über die Datenweiterleitungsarchitektur empfangen, wenn die Erzeugerdaten verfügbar sind.
  • Da keine Datenabhängigkeitsgefahr für Y2 auftritt, sind die Daten für Y2 korrekt. Da jedoch das globale Anhalten weder anzeigt in welcher Pipeline noch für welchen Befehl in REG die Datenabhängigkeitsgefahr auftritt, müssen die Operandendaten für jeden Befehl, der zu der Stufe EX1 weitergeleitet wird, während jedes Zyklus des globalen Anhaltens neu gelesen werden, um korrekte Daten sicherzustellen. Folglich muß trotz der Tatsache, daß Y2 die korrekten Daten, während es sich in REG befunden hat, gelesen hat, Y2 das Register erneut lesen und während jedes Zyklus des Anhaltens neu berechnen.
  • Das erneute Lesen ist hinsichtlich dessen problematisch, daß es mehrere Quellenregister in jeder Pipeline gibt. Wenn es daher 6 Ausführungspipelines und 2 Quellenoperanden pro Befehl gibt, gibt es eine Gesamtzahl von 12 unterschiedlichen Registerwerten, die aus der Registerdatei gelesen werden müssen. Diese Registerwerte werden so lange verwendet, bis es ein Datenweiterleiten von einem Erzeuger in einer späteren Stufe der Pipeline gibt. Wie im vorhergehenden erörtert, wird das Datenweiterleiten für den Verbraucher mit der Datenabhängigkeitsgefahr durchgeführt. Die Datenweiterleitungsarchitektur führt die notwendigen Berechnungen durch, um die Daten weiter zu leiten, die durch Erzeugerbefehle erzeugt werden. Wenn ein Erzeuger unterwegs ist, hat derselbe noch nicht zu der Registerdatei geschrieben, und ein Verbraucher kann direkt aus dem Erzeuger lesen, wenn die Daten desselben verfügbar sind. Wenn sich jedoch der Verbraucher zu einer späteren Stufe bewegt, wenn eine Datenabhängigkeitsgefahr auftritt, muß die Datenweiterleitungsarchitektur die Berechnungen, die notwendig sind, um die Daten weiter zu leiten, basierend auf der neuen Position des Verbrauchers neu berechnen.
  • Zusammenfassung ausgedrückt ist das erneute Lesen der Registerdateien und das Neuberechnen der Datenweiterleitungsarchitektur Zeit- und Ressourcen-verbrauchend. Diese Erfordernis beschränkt die Leistung eines superskalaren Pipeline-Mikroprozessors und kann es erschweren, daß die gesamte CPU bei den gewünschten Betriebsfrequenzen arbeitet bzw. be trieben wird.
  • Aus der US 5,778,248 A sind Verfahren und Vorrichtungen zum Bestimmen von Datenabhängigkeiten und parallelen Freigeben einer Umgehungslogik bekannt. Insbesondere vergleicht eine gegebene Stufe in einer gegebenen Ausführungseinheit ihr Bestimmungsregister mit dem Bestimmungsregister der Anfangsstufe in jeder Ausführungseinheit und kombiniert das Ergebnis des Vergleichs mit den weitergeleiteten Ergebnissen der vorhergehenden Stufen in der gegebenen Ausführungseinheit. Die anderen Stufen werden nicht überprüft, da dies durch eine vergleichbare Überprüfungslogik in vorherigen Stufen abgedeckt ist, wobei die Ergebnisse jeweils zu den nachfolgenden Stufen weitergeleitet werden.
  • Aus der US 5,524,263 A sind Verfahren und Vorrichtungen zum Handhaben einer Betriebsmittelzuweisung während Prozessor-Halte-Bedingungen beschrieben. Die Ausgabe neuer Befehle wird als ein Ergebnis verschiedener Anhalte-Bedingungen eingefroren. Eine Anhalte-Bedingung (vollständiges Anhalten) findet statt, wenn ein zugeteiltes Pufferbetriebsmittel voll wird. Eine weitere Anhalte-Bedingung (partielles Anhalten) wird ansprechend auf eine partielle Registerbreiten-Datenabhängigkeit zwischen Befehlen eines gegebenen Satzes von Befehlen aktiviert.
  • Die EP 0 654 737 A1 beschreibt Verfahren und Vorrichtungen zum Steuern von Befehlswiederholungen. Eine Befehlswiederholunssteuerung zur Verwendung mit einem Prozessor, der ein Programm unter Pipeline-Steuerung ausführt, übersetzt einen Befehl, der in dem Programm enthalten ist, in Befehle in einer verarbeitbaren Form und erledigt die Verarbeitung auf einer Befehlsbasis. Die Befehlswiederholungssteuerung bestimmt, ob ein Fehler während der Ausführung des Befehls stattfindet, ob ein Operandenwert ein normaler Wert ist oder nicht, und führt, wenn der Operandenwert der normale Wert ist, eine Befehlswiederholung durch Anhalten des Eingehens eines nächsten Befehls durch. Die Wiederholungssteu erung setzt die Verarbeitung durch Wiederaufnehmen der Eingabe des nächsten Befehls fort, wenn die Befehlswiederholung normal beendet wird. Wenn erneut der Fehler in der Mitte der Befehlswiederholung auftritt, entscheidet die Wiederholungssteuerung, daß der Befehl nicht ausführbar ist und setzt ein Verwaltungssystem vom Auftreten des Fehlers in Kenntnis.
  • Schließlich offenbart die EP 0 779 577 A2 einen Pipeline-Prozessor mit einer Mehrzahl von Ausführungspipelines, von denen jede eine Mehrzahl von Stufen aufweist, in denen Befehle, die in eine Pipeline erteilt werden, verarbeitet werden, um dadurch den Prozessorzustand zu ändern. Eine Befehlserteilungseinrichtung zum Erteilen von Befehlen in die mehreren Pipelines ohne Rücksicht auf Datenabhängigkeiten zwischen solchen erteilten Befehlen ist vorgesehen. Ferner umfaßt der Prozessor eine Pipeline-Steuereinrichtung zum Überwachen von Datenabhängigkeiten zwischen Befehlen in mehreren Pipelines. Die Pipeline-Steuereinrichtung steuert den Befehlsfluß durch die Stufe der Pipelines derart, daß ein erster Befehl in einer ersten Stufe einer Pipeline aufgrund einer Datenabhängigkeit von einem zweiten Befehl in einer anderen Pipeline nicht verzögert wird, es sei denn, die Datenabhängigkeit muß für eine ordnungsgemäße Verarbeitung des ersten Befehls in der gegenwärtigen Stufe aufgelöst werden.
  • Die Aufgabe der vorliegenden Erfindung besteht darin, ein Verfahren und eine Vorrichtung zu schaffen, die es ermöglichen, ein erneutes Lesen einer Registerdatei in einer Pipeline mit mehreren Stufen eines Pipeline-Systems mit einer Mehrzahl von Pipelines zu verhindern.
  • Diese Aufgabe wird durch ein Verfahren gemäß Anspruch 1 und eine Vorrichtung gemäß Anspruch 11 gelöst.
  • Die vorliegende Erfindung ist ein Verfahren und eine Vorrichtung, die eine lokalisierte und vereinfachte Version des globalen Anhaltens ("ein lokales Anhalten") erzeugen und das lokale Anhalten verwenden, um den Betrieb eines Pipeline-Mikroprozessors zu verbessern. Die Erfindung positioniert die vereinfachte Datenabhängigkeitsgefahrerfassung näher zu der Verbraucheroperandenerzeugung als die zentralisierte Datenabhängigkeitsgefahrerfassung, wodurch die inhärenten Probleme in der zentralisierten Datenabhängigkeitsgefahrerfassung, die oben erörtert sind, überwunden werden. Die vereinfachte Datenabhängigkeitsgefahrerfassung verwendet die existierende Schaltungsanordnung von einer Datenweiterleitungsarchitektur erneut, um ein lokales Anhalten zu erzeugen. Dementsprechend kann die vereinfachte Datenabhängigkeitsgefahrerfassung ein lokales Anhalten mit einer sehr begrenzten Zunahme an Logik durch erneutes Verwenden der Datenweiterleitungsschaltungsanordnung erzeugen.
  • Bei der vorliegenden Erfindung wird das lokale Anhalten verwendet, um die Notwendigkeit eines erneuten Registerlesens zu vermeiden. Die Registeradresse oder RegID für den (die) Quellenoperanden eines Befehls wird für eine Stufe REN angewendet und während der Stufe REN erfaßt. Die RegID zeigt die Position (oder die Adresse) der Quellenoperandendaten in der Registerdatei. Die RegID wird während der Stufe REG verwendet, um die Quellenoperandendaten aus der Registerdatei zu lesen, was die Daten für den Befehl während der Stufe REG zur Verfügung stellt. Mit einer vereinfachten Datenabhängigkeitsgefahrerfassung, wenn kein lokales Anhalten aktiviert ist, ist bekannt, daß die Quellenoperandendaten für den Befehl in der Stufe REG einer lokalen Pipeline korrekt sind. Dementsprechend wird der Befehl in der Stufe REG einer lokalen Pipeline zu der nächsten Stufe, EX1, weitergeleitet und gemäß dem globalen Anhalten gehalten, das in dem nächsten Zyklus eintrifft. Da die fehlende Aktivierung eines lokalen Anhaltens anzeigt, daß die Quellenoperandendaten korrekt sind, ist ein Vorrang des globalen Anhaltens nicht angezeigt, und die Notwendigkeit für ein erneutes Lesen des Registers wird vermieden, und die Gesamtleistung und die Frequenz der CPU werden verbessert.
  • Wenn ein lokales Anhalten aktiviert ist, ist bekannt, daß die Quellenoperandendaten für den Befehl in der Stufe REG inkorrekt sind und dieselben werden gelöscht. Wenn dementsprechend die Erzeugerdaten verfügbar werden, was der erste Zyklus sein wird, in dem das lokale Anhalten in REG deaktiviert ist, wird der Quellenoperand für den Befehl in der Stufe REG mit diesen korrekten Daten aktualisiert und dann entsprechend dem globalen Anhalten, das in dem nächsten Zyklus eintrifft, gehalten. Dementsprechend wird eine Neuberechnung der Datenweiterleitungsarchitektur vermieden und die Gesamtleistung und die Frequenz der CPU werden verbessert.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend unter Bezugnahme auf die beigefügten Zeichnungen näher erläutert. Es zeigen:
  • 1 ein Blockdiagramm eines Computersystems;
  • 2 ein Blockdiagramm eines bekannten superskalaren Pipeline-Mikroprozessors;
  • 3 ein Blockdiagramm eines superskalaren Pipeline-Mikroprozessors mit einer vereinfachten Datenabhän gigkeitsgefahrerfassung;
  • 4 ein logisches Schaltungsdiagramm der vereinfachten Datenabhängigkeitsgefahrerfassung;
  • 5 ein logisches Schaltungsdiagramm einer alternativen vereinfachten Datenabhängigkeitsgefahrerfassung;
  • 6 ein logisches Schaltungsdiagramm einer weiteren vereinfachten Datenabhängigkeitsgefahrerfassung;
  • 7 eine graphische Darstellung, die den Betrieb des superskalaren Pipeline-Mikroprozessors gemäß der vorliegenden Erfindung darstellt;
  • 8 eine zweite graphische Darstellung, die den Betrieb des superskalaren Pipeline-Mikroprozessors gemäß der vorliegenden Erfindung darstellt;
  • 9 eine dritte graphische Darstellung, die den Betrieb des superskalaren Pipeline-Mikroprozessors gemäß der vorliegenden Erfindung darstellt;
  • 10 ein logisches Schaltungsdiagramm eines ersten Abschnitts einer lokalen Pipeline; und
  • 11 ein logisches Schaltungsdiagramm eines zweiten Abschnitts der lokalen Pipeline.
  • Die Erfindung ist ein Verfahren und eine Vorrichtung zum Verwenden eines lokalen Anhaltens, um ein erneutes Lesen der Registerdatei zu vermeiden. Das lokale Anhalten ist eine vereinfachte Version des globalen Anhaltens und kann früher als das globale Anhalten erzeugt werden. Die Erfindung positioniert die vereinfachte Datenabhängigkeitsgefahrerfassung – die die Schaltungsanordnung neu verwendet bzw. wieder verwendet, die bei den Datenweiterleitungsberechnungen beteiligt ist – näher zu der Verbraucheroperandenerzeugung. Die Erfindung wird am besten verständlich, indem zunächst erklärt wird, wie das lokale Anhalten durch eine vereinfachte Gefahrerfassung erzeugt wird, und dann detailliert beschrieben wird, wie das lokale Anhalten verwendet wird, um das erneute Lesen der Registerdatei zu vermeiden. In der folgenden Beschreibung sind die erörterten Pipelinestufen REN, REG, EX1, EX2 und WRB, obwohl die Erfindung mit einer beliebigen Vielfalt von Pipelinestufen und Kombinationen von Pipelinestufen verwendet werden kann.
  • 3 stellt einen superskalaren Pipeline-Mikroprozessor 10 gemäß der vorliegenden Erfindung dar. Ähnlich wie der Mikroprozessor, der in 2 gezeigt ist, umfaßt der superskalare Pipeline-Mikroprozessor 10 eine Befehlsabrufeinheit 12, mehrere Pipelines 14, die eine lokale Pipeline 16 umfassen, und eine zentralisierte Datenabhängigkeitsgefahrerfassungsvorrichtung 20. Der superskalare Pipeline-Mikroprozessor 10 umfaßt ferner eine lokale oder vereinfachte Datenabhängigkeitsgefahrerfassung 22, die der lokalen Pipeline 16 zugeordnet ist. Die vereinfachte Datenabhängigkeitsgefahrerfassung 22 erzeugt ein lokales Anhalten auf einer operandenweisen Basis, das auf eine Stufe der lokalen Pipeline 16 angewendet wird.
  • 4 zeigt die vereinfachte Datenabhängigkeitsgefahrerfassung 22 detaillierter. Die vereinfachte Datenabhängigkeitsgefahrerfassung 22 erzeugt das lokale Anhalten, das durch localReg symbolisiert ist, für die Stufe REG der lokalen Pipeline 16 durch Durchführen von operandenspezifischen Berechnungen. Die vereinfachte Datenabhängigkeitsgefahrerfassung 22 kann modifiziert sein, um das lokale Anhalten auf einer Pipelinebasis oder Mehrstufenbasis zu erzeugen. Derart modifiziert führt die vereinfachte Datenabhängigkeitsgefahrerfassung 22 Mehroperandenberechnungen durch, um das lokale Anhalten zu erzeugen.
  • Die vereinfachte Gefahrerfassung 22 verwendet Ausgangssignale von Komparatoren 24, 34, um die Operandenberechnungen durchzuführen. Diese Komparatoren 24, 34 sind Teil der Datenweiterleitungsarchitektur, die sich bereits in dem superskalaren Pipeline-Mikroprozessor 10 befindet. Dies ist durch das Ausgangssignal von den Komparatoren 24, 34 "zu der Datenweiterleitungsarchitektur" gezeigt.
  • Ein erster Komparator 24 weist als Eingangssignale desselben ein Quellenoperanden-RegID in der Stufe REG und ein Zieloperanden RegID in der Stufe EX1 auf . Wie in 4 zu sehen, sind diese zwei Eingangssignale srcIDOReg bzw. destIDExl. SrcIDOREG identifiziert das Quellenregister für einen Verbraucherbefehl in der Stufe REG der lokalen Pipeline 16 und destIDExl identifiziert das Zielregister für die Erzeugerbefehle in der Stufe EX1 in mehreren Pipelines.
  • Bei dem gezeigten Beispiel gibt es sechs (6) Ausführungspipelines und daher eine Gesamtsumme von 6 Erzeugern in der Stufe EX1 dieser 6 Pipelines. Die "6" auf dem ersten Komparator 24 zeigt, daß der erste Komparator 24 sechs Drähte aufweist, die aus demselben kommen, einen Draht für jeden Erzeuger in jeder Stufe EX1 jeder Pipeline. Dementsprechend führt der erste Komparator 24 sechs Vergleiche zwischen srcIDOReg und destIDExl durch, um eine Datenabhängigkeit zwischen dem Verbraucherbefehl in REG und einen der 6 Erzeugerbefehle in EX1 zu finden. Wenn das Quellenregister gleich dem Zielregister für einen der 6 Erzeuger ist, d. h. srcIDOReg und destIDExl stimmen für einen der Erzeuger überein, dann gibt es eine Datenabhängigkeit und der Erzeuger ist ein übereinstimmender Erzeuger. Als ein Resultat aktiviert der erste Komparator 24 ein Ausgangssignal in dem Draht für den Erzeuger in EX1, von dem der Verbraucher in REG datenabhängig ist (d. h. der übereinstimmende Erzeuger).
  • Die Ausgangssignale des ersten Komparators 24 werden in ein erstes UND-Gatter 30 eingespeist. Das erste UND-Gatter 30 weist zwei zusätzliche Eingangssignale auf. Die anderen zwei Eingangssignale des ersten UND-Gatters 30 sind ein Signal Gültiger-Erzeuger-in-Ex1, das durch valpEX1 dargestellt ist, und ein Signal Erzeuger-Daten-nicht-verfügbar, das durch pdnaExl dargestellt ist. Ein aktiviertes Signal valpEx1 bedeutet, daß der übereinstimmende Erzeuger in EX1 gültig ist, und daß ein Anhalten erzeugt werden sollte, wenn die anderen Eingangssignale des ersten UND-Gatters 30 ebenfalls aktiviert sind (d. h. eine Datenabhängigkeit und eine Gefahr bestehen). Wenn der übereinstimmende Erzeuger in EX1 nicht gültig ist (valpEx1 ist nicht aktiviert), dann wird kein Anhalten basierend auf der Datenabhängigkeit von diesem übereinstimmenden Erzeuger in EX1 erzeugt.
  • Bei einem alternativen Ausführungsbeispiel, das in 5 gezeigt ist, kann ferner ein zusätzliches Eingangssignal zu dem UND-Gatter 30' vorhanden sein. Dieses Eingangssignal ist QpExl, das ein qualifizierendes Prädikat bzw. eine bestimmende Aussage für den übereinstimmenden Erzeuger in EX1 ist. Wenn das qualifizierende Prädikat aktiviert ist, dann wird der übereinstimmende Erzeuger in EX1 normal ausgeführt. Wenn das qualifizierende Prädikat nicht aktiviert ist, dann wird der übereinstimmende Erzeuger in EX1 nicht ausgeführt und derselbe wird keine Daten erzeugen. Wenn das qualifizierende Prädikat für einen übereinstimmenden Erzeuger in EX1 nicht aktiviert ist, dann gibt es kein lokales Anhalten, das seinetwegen erzeugt wird (da das erste Ausgangssignal des UND-Gatters 30 nicht aktiviert ist). Dementsprechend ist das qualifizierende Prädikat eine alternative Art zum Bezeichnen, ob es notwendig ist, ein lokales Anhalten für einen gegebenen übereinstimmenden Erzeuger zu erzeugen.
  • Das Signal Erzeuger-Daten-nicht-verfügbar oder pdnaEx1 zeigt an, ob es eine Datenabhängigkeitsgefahr für den übereinstimmenden Erzeuger gibt. Das Signal pdnaEx1 charakterisiert den übereinstimmenden Erzeuger mit dem Erzeugertyp oder den Attributen des Erzeugers. Alternativ charakterisiert pdnaEx1 die Beziehung des übereinstimmenden Erzeugers mit den Attributen des Verbrauchers. Wenn die Daten nicht von dem übereinstimmenden Erzeuger verfügbar sind, dann gibt es eine Datenabhängigkeitsgefahr für den Verbraucher.
  • Bestimmte Erzeugerbefehle besitzen unterschiedliche Latenzen, wie z. B. das Benötigen von einem Zyklus oder mehreren Zyklen, um zu berechnen. Abhängig von dem Zyklus können die Resultate eines Befehls mit einer Mehrzykluslatenz nicht verfügbar sein, während die Resultate eines Befehls mit einer Einzelzykluslatenz verfügbar sind. Dementsprechend bestimmt die Charakterisierung die Latenz des Erzeugers in EX1. Wenn die Latenz und der aktuelle Zyklus derart sind, daß der Befehl noch nicht berechnet ist, dann stehen die Daten des übereinstimmenden Erzeugers nicht zur Verfügung, und pdnaEx1 ist aktiviert. Wenn pdnaEx1 aktiviert ist, und die anderen zwei Eingangssignale in das erste UND-Gatter 30 für den übereinstimmenden Erzeuger ebenfalls aktiviert sind, dann gibt es eine Datenabhängigkeitsgefahr in der Stufe EX1.
  • Die Erzeugung des Signals pdnaEx1 ist implementationsspezifisch. Wenn beispielsweise der übereinstimmende Erzeuger in EX1 eine Zwei-Zyklus-Latenz besitzt, dann wird pdnaEx1 aktiviert, wenn sich der übereinstimmende Erzeuger in EX1 befindet, ein pdnaEx2-Signal wird jedoch nicht aktiviert werden, wenn sich derselbe in EX2 (siehe im folgenden) befindet. Wenn der übereinstimmende Erzeuger eine 3-Zyklus-Latenz aufweist, dann wird pdnaEx1 aktiviert, wenn sich der übereinstimmende Erzeuger in EX1 befindet, und das Signal pdnaEx2 wird aktiviert, wenn sich derselbe in EX2 (siehe im folgenden) befindet. Ähnlicherweise wird, wenn der übereinstimmende Erzeuger eine 4-Zyklus-Latenz aufweist, dann pdnaEx1 aktiviert, wenn sich der übereinstimmende Erzeuger in EX1 befindet, pdnaEx2 wird aktiviert, wenn sich derselbe in EX2 befindet, und ein Signal pdnaWrb wird aktiviert, wenn sich derselbe in WRB befindet (siehe im folgenden).
  • Als ein spezifisches Beispiel betreffen einige Implementationen Mehrmedien- ("mmu-") Befehle, wie es in 5 zu sehen ist. Das Signal pdnaExl wird durch ODER-Verknüpfen von zwei Signalen mmusrcReg und mmudstEx1 mit einem ODER-Gatter 32 erzeugt. Das Signal mmusrcReg wird aktiviert, wenn der Verbraucher ein mmu-Typ-Befehl in REG ist, d. h. es gibt ei nen mmu-Verbraucher. Das mmudstEx1 ist aktiviert, wenn der übereinstimmende Erzeuger ein mmu-Typ-Befehl in EX1 ist, d. h. es gibt einen mmu-Erzeuger. Der mmu-Typ-Erzeuger-Befehl weist eine 2-Zyklus-Latenz zu einem weiterem mmu-Typ-Verbraucher-Befehl auf. Wenn daher der übereinstimmende Erzeuger ein mmu-Erzeuger in EX1 ist, dann gibt es eine Datenabhängigkeitsgefahr, da ein Verbraucher in REG lediglich eine Stufe hinter der Stufe EX1 ist. Als ein Resultat wird ein lokales Anhalten erzeugt, wenn die anderen zwei Eingangssignale in das erste UND-Gatter 30 ebenfalls für den übereinstimmenden Erzeuger aktiviert sind.
  • Für den EX2-Abschnitt der vereinfachten Gefahrerfassung 22 in 5 unterscheidet sich die Berechnung von pdnaEx2. Das Signal pdnaEX2 wird durch UND-Verknüpfen eines NICHTmmusrcReg und mmudstEX2 miteinander erzeugt. Wie im vorhergehenden erwähnt weist ein mmu-Typ-Erzeugerbefehl eine 2-Zyklus-Latenz zu einem weiteren mmu-Typ-Verbraucherbefehl auf. Wenn jedoch der mmu-Typ-Erzeugerbefehl sich zu EX2 bewegt hat, ist die 2-Zyklus-Latenz für einen mmu-Typ-Verbraucherbefehl in REG erfüllt. Folglich wird pdenaEX2 nicht aktiviert, wenn es einen mmu-Typ-Verbraucherbefehl in REG (NICHT-mmusrcReg ist nicht aktiviert) gibt. Wenn der Verbraucherbefehl in REG kein mmu-Typ-Befehl ist, d. h. NICHTmmusrcReg ist aktiviert, dann weist der mmu-Typ-Erzeugerbefehl eine 3-Zyklus-Latenz auf. Dementsprechend gibt es eine Datenabhängigkeitsgefahr für den Quellenoperanden in REG und pdnaEX2 ist aktiviert.
  • Zurückkehrend zu 4 weist ein zweiter Komparator 34 als Eingangssignale desselben den Quellenoperanden in REG und den Zieloperanden in EX2, srcIDOReg und destIDEX2, auf. wie der oben beschriebene erste Komparator 24 vergleicht der zweite Komparator 34 das srcIDOReg mit destIDEX2 für sechs (6) mögliche Erzeuger in der Stufe EX2. Wenn eine Datenabhängigkeit vorgefunden wird, aktiviert der zweite Komparator 34 ein Ausgangssignal in dem Draht für den übereinstimmenden Erzeuger in EX2 zu einem zweiten UND-Gatter 40.
  • Das zweite UND-Gatter 40 umfaßt ein Eingangssignal Erzeuger-Daten-nicht-verfügbar, das pdnaEX2-Signal, das oben erwähnt ist. Das Signal pdnaEX2 führt die gleiche Funktion wie das pdnaEX1 für das erste UND-Gatter 30 durch, mit der Ausnahme, daß dasselbe lediglich den übereinstimmenden Erzeuger in EX2 betrifft. Wenn dementsprechend die Erzeugerdaten nicht für den übereinstimmenden Erzeuger in EX2 zur Verfügung stehen, ist pdnaEX2 aktiviert. In dieser Situation sind beide Eingangssignale in das zweite UND-Gatter 40 aktiviert. Folglich ist das Ausgangssignal des zweiten UND-Gatters 40 aktiviert, was eine Datenabhängigkeitsgefahr in EX2 für diesen Erzeuger anzeigt.
  • Die Ausgangssignale des ersten UND-Gatters 30 und des zweiten UND-Gatters 40 sind die Resultate der Operandenberechnung, das oben beschrieben sind. Diese Ausgangssignale werden miteinander durch das ODER-Gatter 50 ODER-verknüpft. Da es sechs Pipelines und daher sechs Erzeuger für dieses Beispiel gibt, führt das ODER-Gatter 50 eine ODER-Funktion an den Ausgangssignalen des ersten UND-Gatters 30 und des zweiten UND-Gatters 40 für jeden Erzeuger durch. Wenn daher die Resultate der Operandenberechnungen zeigen, daß es eine Datenabhängigkeitsgefahr für einen der sechs Erzeuger in entweder der Stufe EX1 oder der Stufe EX2 gibt, wird das Ausgangssignal des ODER-Gatters 50 aktiviert. Ein aktiviertes Ausgangssignal des ODER-Gatters 50 zeigt, daß ein lokales Anhalten für den Verbraucher in REG erzeugt werden sollte.
  • Vor dem Erzeugen eines lokalen Anhaltens und des Aktivierens des localReg basierend auf dem aktivierten Ausgangssignal des ODER-Gatters 50 führt die vereinfachte Datenabhängigkeitsgefahrerfassung 22 eine weitere Operation durch. Das Ausgangssignal des ODER-Gatters 50 wird mit einem gültigen Verbraucher in dem REG-Signal valcReg durch ein UND-Gatter 55 UND-verknüpft. Wenn der Verbraucher in REG nicht gültig ist, ist das valcReg-Signal nicht aktiviert, und ein lokales Anhalten wird für diesen Verbraucher nicht erzeugt. wenn der Verbraucher in REG gültig ist, wird jedoch valcReg aktiviert und ein lokales Anhalten wird für diesen lokalen Verbraucher erzeugt, d. h. localReg wird aktiviert.
  • 6 stellt eine alternative vereinfachte Gefahrerfassung 22' dar. Bei diesem Ausführungsbeispiel gibt es drei Eingangssignale in das ODER-Gatter 50'. Das dritte Eingangssignal ist von einem dritten UND 60, das die übereinstimmenden Erzeuger in der Zurückschreibestufe WRB der sechs Pipelines auswertet. Die Erzeuger in der Stufe WRB, von denen die Verbraucher in der REG datenabhängig sind, können ein Anhalten verursachen, wenn dieselben 4-Zyklus-Latenz-Befehle sind. Das Signal pdnaWrb, das oben erwähnt ist, wird aktiviert, wenn ein 4-Zyklus-Latenz-Erzeuger in WRB mit dem Verbraucher in REG übereinstimmt (d. h. der Verbraucher in REG ist von dem Erzeuger in WRB datenabhängig). Anderenfalls werden die Eingangssignale für das dritte UND 60 auf eine Art und Weise erzeugt, die ähnlich zu den Eingangssignalen für das erste UND-Gatter 30 und das zweite UND-Gatter 40 ist, die oben beschrieben sind.
  • Ein Verfahren, das das lokale Anhalten verwendet, um ein erneutes Lesen der Registerdatei zu vermeiden, ist durch 7 dargestellt. 7 ist eine graphische Darstellung, die den Betrieb eines superskalaren Pipeline-Mikroprozessors 10 gemäß der vorliegenden Erfindung darstellt. Dieselbe zeigt Befehle in den verschiedenen Stufen einer Standardpipeline (die andere Pipelines in dem superskalaren Pipeline-Mikroprozessor 10 ohne eine vereinfachte Datenabhängigkeitsgefahrerfassung 22 darstellt) und der lokalen Pipeline 16 über fünf Taktzyklen (0-4). Die Stufen umfassen REN, REG, EX1, EX2 und WRB in sowohl der Standardpipeline als auch der lokalen Pipeline 16. Zusätzlich ist die lokale Pipeline 16 eine Standardpipeline, die gemäß der vorliegenden Erfindung modifiziert ist, um ein Wiederherstellungs-Latch REC zu umfassen.
  • Die graphische Darstellung zeigt ferner die Werte von localReg, localEX1 und stallEX1 in einem gegebenen Zyklus.
  • Wie im vorhergehenden beschrieben, ist das localReg das lokale Anhalten in der Stufe REG. Das localEX1 ist das lokale Anhalten in der Stufe EX1 – dies wird beispielsweise durch Weiterleiten von localReg durch ein stufendes Latch (nicht gezeigt) durchgeführt, das dann das lokale Anhalten in der Stufe EX1 zusammen mit jedem Befehl, der sich in EX1 befindet, ausgibt. StallEX1 ist das zentralisierte oder globale Anhalten.
  • Wenn die Befehle die Stufe REN der Standardpipelines erreichen, werden die RegID für den (die) Quellenoperanden dieses Befehls verwendet, um die Daten für den (die) Quellenoperanden aus der Registerdatei zu positionieren. Wenn die Befehle die Stufe REG erreichen, werden Daten für den (die) Quellenoperanden aus der Position gelesen, die in der Registerdatei durch RegID spezifiziert ist. Die Registerdatei gehorcht den Standardpipelineregeln (d. h. dieselbe muß nicht das lokale Anhalten beobachten). Wenn daher ein globales Anhalten aktiviert ist, wird die Registerdatei das globale Anhalten und das erneute Zuführen, während der nächsten Stufe, des Operanden für den Befehl, der derzeit in REG ist, beobachten.
  • Dementsprechend zeigt unterhalb der Befehle in jedem Zyklus die graphische Darstellung den Befehl, dessen Quellenoperandendaten aus der Registerdatei in der lokalen Pipeline während dieses Zyklusses (in der Reihe, die mit "RegFile" bezeichnet ist) gelesen werden. Die Daten, die aus der Registerdatei gelesen werden, werden normalerweise in ein Operandenregister gelesen, das in den Befehlsausführungsstufen (z. B. EX1 und EX2) verwendet werden soll. Wenn jedoch der Befehl von einem Befehl in einer späteren Stufe (einem Erzeuger), der unterwegs ist, datenabhängig ist (ein Verbraucher ist), kann die Datenweiterleitungsarchitektur Quellenoperandendaten von dem Erzeuger direkt in das Operandenregister weiterleiten. Dementsprechend zeigt die graphische Darstellung unter der RegFile-Reihe in jedem Zyklus den Befehl, dessen Quellenoperandendaten in das Operanden register während dieses Zyklusses (in der Reihe, die mit "opReg" bezeichnet ist) gelesen werden.
  • In einem Zyklus 0 befinden sich die Befehle C, B und A in den Stufen REN, REG bzw. EX1 der Standardpipeline und der lokalen Pipeline 16. Wie es detaillierter im folgenden erörtert ist, ist das REC-Latch in der lokalen Pipeline 16 parallel zu der Stufe REG. Das REC-Latch ist keine zusätzliche Stufe. Dementsprechend enthält bei dem Zyklus 0 das REC-Latch den gleichen Befehl wie die Stufe REG, den Befehl B. In dem Zyklus 0 sind localReg, localEX1 und stallEX1 alle nicht aktiviert, d. h. es gibt kein lokales oder zentrales Anhalten.
  • Da sich der Befehl C in der Stufe REN befindet, wird der RegID der Quellenoperandendaten für den Befehl C durch die Registerdatei in dem Zyklus 0 erfaßt. Ferner zeigt die RegFile-Reihe, daß die Quellenoperandendaten für den Befehl B, der sich in der Stufe REG befindet, aus der Registerdatei in dem Zyklus 0 gelesen werden. Da localReg nicht aktiviert ist, ist es bekannt, daß die Quellenoperanden für den Befehl B korrekt sind. Ähnlicherweise zeigt die OpReg-Reihe, daß die Quellenoperandendaten des Befehls B in das Operandenregister zur Verwendung in der (den) Ausführungsstufe(n) gelesen werden.
  • In einem Zyklus 1 werden alle Befehle eine Stufe weitergeleitet, und ein neuer Befehl D wird in die Stufe REN der Standardpipeline und der lokalen Pipeline 16 abgerufen. Das REC-Latch in der lokalen Pipeline 16 enthält wiederum den gleichen Befehl wie die Stufe REG, den Befehl C. In dem Zyklus 1 sind localReg, localEX1 und stallEX1 alle nicht aktiviert, d. h. es gibt kein lokales oder zentrales Anhalten.
  • Da sich der Befehl D in der Stufe REN befindet, wird die RegID der Quellenoperandendaten für den Befehl D durch die Registerdatei in dem Zyklus 1 erfaßt. Da ähnlicherweise die Quellenoperandendaten-RegID des Befehls C in dem Zyklus 0 erfaßt wurde, zeigt die RegFile-Reihe, daß die Quellenoperandendaten für den Befehl C, der sich in der Stufe REG befindet, aus der Registerdatei in dem Zyklus 1 gelesen werden. Da localReg nicht aktiviert ist, ist es bekannt, daß die Operandendaten für den Befehl C korrekt sind. Ähnlicherweise zeigt die OpReg-Reihe, daß die Quellenoperandendaten des Befehls C in das Operandenregister zur Verwendung in der (den) Ausführungsstufe(n) gelesen werden.
  • Bei einem Zyklus 2 werden die Befehle alle wiederum eine Stufe weitergeleitet, und ein neuer Befehl E wird in die Stufe REN der Standardpipeline und der lokalen Pipeline 16 abgerufen. Da der Befehl E in die Stufe REN abgerufen wird, wird die RegID für die Quellenoperandendaten für den Befehl E in einem Zyklus 2 erfaßt. Die RegFile-Reihe zeigt, daß die Quellenoperandendaten für den Befehl D aus der Registerdatei in dem Zyklus 2 gelesen werden, da die RegID des Befehls D in dem Zyklus 2 erfaßt wurde. Ähnlicherweise zeigt die OpReg-Reihe, daß die Quellenoperandendaten des Befehls D in das Operandenregister zur Verwendung in der (den) Ausführungsstufe(n) gelesen werden.
  • Weder localReg noch localEX1 sind aktiviert, ein globales Anhalten stallEX1 ist jedoch in dem Zyklus 2 aktiviert. Dementsprechend verbleiben die Befehle in beiden Pipelines in den Stufen, die EX1 vorangehen und EX1 umfassen, in einem Zyklus 3 stationär, während die Befehle in den späteren Stufen EX2 und WRB nicht beieinflußt werden und zu der Stufe EX2 und hinaus aus der Standardpipeline weitergeleitet werden. Wenn der Befehl A nach außen aus der Standardpipeline weitergeleitet wird, wird derselbe in den architektonischen Zustand übergeben.
  • Da es kein lokales Anhalten gibt, das in dem Zyklus 1 aktiviert wird, gibt es keine Datenabhängigkeitsgefahr für den Befehl C in der lokalen Pipeline, und von den Daten, die aus dem Quellenregister durch den Befehl C in die lokale Pipeline gelesen werden, ist bekannt, daß dieselben korrekt sind. Da bekannt ist, daß diese Daten korrekt sind, ist ein erneutes Lesen für den Befehl C in dem Zyklus 2 im Gegensatz zum Stand der Technik nicht notwendig und kann vermieden werden. Folglich werden die Quellenoperandendaten für den Befehl C gehalten und es wird kein erneutes Lesen des Quellenregisters für den Befehl C durchgeführt.
  • Wie im vorhergehenden erwähnt, befolgt die Registerdatei Standardpipelineregeln. Dementsprechend gehorcht die Registerdatei dem globalen Anhalten und der gleiche Befehl D ist in den RegFile- und Opreg-Reihen in beiden Zyklen 2 und 3 gezeigt, obwohl die RegID für den Befehl E in dem Zyklus 2 erhalten wird. Dies stellt kein erneutes Lesen der Registerdatei für den Befehl D dar, es stellt jedoch dar, daß kein erneutes Lesen für den Befehl C in dem Zyklus C durchgeführt wird.
  • In einem Zyklus 4 verhalten sich die Standardpipelines und die lokale Pipeline 16 normal, da es kein aktiviertes lokales oder globales Anhalten gibt. Der Befehl B wird hinaus aus beiden Pipelines weitergeleitet, die Befehle C, D und E werden jeweils eine Stufe weitergeleitet, und ein neuer Befehl F wird in die Stufe REN von beiden Pipelines abgerufen. Der Befehl E befindet sich ferner in dem REC-Latch in der lokalen Pipeline 16.
  • Ähnlicherweise werden, da der Befehl E in der Stufe REN in dem Zyklus bleibt, die Quellenoperandendaten für den Befehl E aus der Registerdatei in dem Zyklus 4 (wie es durch E in der RegFile-Reihe gezeigt ist) gelesen. Da sich außerdem die lokale Pipeline normal verhält, und es keine lokalen Datenabhängigkeitsgefahren gibt, werden die Quellenoperandendaten für den Befehl E in das Operandenregister in dem Zyklus 4 gelesen.
  • Zusammenfassend stellt 7 dar, daß die vorliegende Erfindung dem erneuten Lesen der Registerdatei begegnet, wenn kein lokales Anhalten aktiviert ist. In 7 wird der Be fehl C zu der Stufe EX1 in dem Zyklus 2 weitergeleitet, da es kein aktiviertes lokales Anhalten in dem Zyklus 1 gibt. In dem Zyklus 2 wird ein globales Anhalten aktiviert, und alle Befehle vor der Stufe EX1 und die die Stufe EX1 umfassen, einschließlich des Befehls C, werden in der lokalen Pipeline gehalten. Da es jedoch kein aktiviertes lokales Anhalten gibt, ist es bekannt, daß die Daten für den Befehl C korrekt sind, und es ist nicht notwendig, die Registerdatei für den Befehl C neu zu lesen.
  • Wie im vorhergehenden erörtert, ist das globale Anhalten eine ODER-Funktion von allen lokalen Anhaltevorgängen, und wenn das lokale Anhalten, das die lokale Pipeline betrifft, nicht aktiviert ist, ist das globale Anhalten für den Befehl C in der lokalen Pipeline weniger wichtig, da die Datenabhängigkeitsgefahr, die das globale Anhalten verursacht, nicht den Befehl C in der lokalen Pipeline beeinflußt. Dies ist der Grund, warum es bekannt ist, daß die Daten in dem Befehl C in der lokalen Pipeline korrekt sind, trotz des Auftretens eines globalen Anhaltens, wenn es kein lokales Anhalten gibt.
  • In einer parallelen Standardpipeline, die kein lokales Anhalten erzeugen kann, ist es jedoch nicht bekannt, ob die Datenabhängigkeitsgefahr, die das globale Anhalten verursacht, die Operanden für den Befehl C beeinflußt. Folglich ist es unbekannt, ob die Daten für den Befehl C in der parallelen Standardpipeline korrekt sind oder nicht korrekt sind. Daher muß die Pipeline annehmen, daß die Quellenoperandendaten für den Befehl C inkorrekt sind, und muß die Quellenoperandendaten neu berechnen, was ein erneutes Lesen der Registerdatei während des Anstehens des globalen Anhaltens umfaßt, um sicherzustellen, daß dieselben korrekt sind.
  • 8 stellt das Pipelineverhalten mit einem aktivierten lokalen Anhalten dar. Bei den ersten zwei Zyklen verhalten sich beide Pipelines wie oben in 7. Bei dem Zyklus 2, der als der Fehlübereinstimmungszyklus bekannt ist, sind die Effekte des lokalen Anhaltens in der Stufe REG zu sehen. Die Befehle werden alle eine Stufe in der Standardpipeline weitergeleitet, und ein neuer Befehl E wird in beide Pipelines in der Stufe REN abgerufen. Aufgrund des in dem Zyklus 1 aktivierten lokalen Anhaltens werden jedoch lediglich die Befehle A und B in der lokalen Pipeline 16 weitergeleitet. Diese Fehlübereinstimmung zwischen der Standardpipeline und der lokalen Pipeline 16 stellt den Effekt und die Vorteile des lokalen Anhaltens dar.
  • Da die lokale Pipeline 16 für die lokale Datenabhängigkeitsgefahr für den Verbraucher in der REG (Befehl C) und einen übereinstimmenden Erzeuger (beispielsweise der Befehl A) in Alarmbereitschaft gesetzt ist, weiß dieselbe, daß die Daten, die durch den Verbraucher von dem Quellenregister desselben während des Zyklus 1 gelesen werden, nicht korrekt sind. Da das lokale Anhalten in dem Zyklus 1 aktiviert ist, während sich der Verbraucher noch in der REG befindet, kann die lokale Pipeline 16 den Verbraucher in der REG halten, um es dem Erzeuger zu ermöglichen, den Betrieb desselben zu beenden. Dementsprechend wird der Befehl C in der Stufe REG in dem Zyklus 2 gehalten, währenddessen der übereinstimmende Erzeuger (beispielsweise der Befehl A) den Betrieb desselben beendet. Durch Halten des Befehls C in der Stufe REG bis das lokale Anhalten deaktiviert ist (was anzeigt, daß die Daten des übereinstimmenden Erzeugers verfügbar sind), wird die Notwendigkeit des Neuberechnens der Datenweiterleitungsarchitektur vermieden.
  • Da der Befehl C in der Stufe REG gehalten wird, und sich der Befehl B nach vorwärts zu der Stufe EX2 bewegt hat, ist EX1 leer. Da sich ähnlicherweise der Befehl C noch in der Stufe REG in der lokalen Pipeline befindet, wobei sich derselbe normalerweise in der EX1 (siehe z. B. die Standardpipeline) befinden würde, wird der Befehl D in dem REC-Latch gehalten. Der Befehl D wird in dem REC-Latch gehalten, das parallel zu der Stufe REG ist, so daß derselbe nicht verloren geht, wenn der Befehl C in der Stufe REG gehalten wird. LocalReg ist nun nicht aktiviert, was anzeigt, daß es keine weiteren lokalen Datenabhängigkeitsgefahren für den Verbraucher in der Stufe REG (Befehl C) gibt, und daß der übereinstimmende Erzeuger für den Befehl C eine 3-Zyklus-Latenz (daher ein 1-Zyklus-Anhalten aufgrund der Einstufentrennung des Verbraucherbefehls C, und bei diesem Beispiel, des Übereinstimmenden Erzeugerbefehls A) aufweist. Dementsprechend sind nun die Daten des übereinstimmenden Erzeugers verfügbar. LocalExl ist aktiviert, da sich das lokale Anhalten von REG zu EX1 bewegt hat. Ähnlicherweise ist nun stallEx1 aktiviert, was das globale Anhalten widerspiegelt, das als ein Resultat der lokalen Datenabhängigkeitsgefahr erzeugt wird, die durch die vereinfachte Datenabhängigkeitsgefahrerfassung 22 in dem Zyklus 1 erfaßt und aktiviert wird. Daß das lokale Anhalten nicht bis zu dem Zyklus 2 aktiviert ist stellt die Verzögerung dar, die beim Erzeugen eines globalen Anhaltens beteiligt ist, und unterstreicht die Vorteile des Erzeugens eines lokalen Anhaltens.
  • Da der Befehl E in die Stufe REN abgerufen wird, wird RegID für die Quellenoperandendaten für den Befehl E in dem Zyklus 2 erfaßt. Die RegFile-Reihe zeigt, daß die Quellenoperandendaten für den Befehl D aus der Registerdatei in dem Zyklus 2 gelesen werden. Dies stellt ferner dar, daß obwohl der Befehl C in der Stufe REG aufgrund des aktivierten localReg verbleibt, es kein erneutes Lesen der Registerdatei für den Befehl C gibt. Die Registerdatei verwendet die RegID der Quellenoperandendaten für den Befehl C nicht erneut, verwendet jedoch die RegID der Quellenoperandendaten für den Befehl D, der in dem Zylus 1 erfaßt wurde, als sich der Befehl D in der Stufe REN befand, da die Registerdatei die Standardpipelineregeln befolgt (d. h. die Registerdatei muß nicht das lokale Anhalten beobachten).
  • Tatsächlich werden die Daten, die aus dem Register für den Befehl C in dem Zyklus 1 gelesen werden, gelöscht, da dieselben inkorrekt sind. Anstelle des erneuten Lesens der Registerdatei für den Befehl C leitet die Datenweiterlei tungsarchitektur die Quellenoperandendaten für den Befehl C von dem Erzeuger (beispielsweise A) direkt zu dem Operandenregister weiter, da die Daten von dem Erzeuger nun verfügbar sind (siehe oben). Dies ist durch die OpReg-Reihe gezeigt, die zeigt, daß der Befehl C der Befehl ist, dessen Quellenoperandendaten in das OpReg in dem Zyklus 2 gelesen werden.
  • Da jedoch das lokale Anhalten (localReg) in dem Zyklus 1 aktiviert ist, ist es einen Zyklus früher als das globale Anhalten bekannt, daß die Daten nicht von dem Erzeuger für den Befehl C verfügbar sind, und daß daher die Daten, die aus der Registerdatei gelesen werden, gelöscht werden können. Da dementsprechend der Befehl C aktualisiert wird, wenn die Daten des Erzeugers desselben verfügbar sind, und in dem Zyklus 2 aufgrund des lokalen Anhaltens gehalten werden, sind die Daten für den Operanden für den Befehl korrekt und benötigen keine weitere Manipulation. Diese Daten werden dann in einem Latch zwischen REG und EX1 gehalten, bevor dieselben zu EX1 für eine Ausführung in dem Zyklus 3 (siehe die folgende Erörterung von 11) gesendet werden.
  • In dem Zyklus 3, der als der Wiederherstellungszyklus bekannt ist, verbleiben alle Befehle in den Stufen, die EX1 vorhergehen und die EX1 umfassen, aufgrund des globalen Anhaltens (stallEx1), das in EX1 in dem Zyklus 2 aktiviert wird, in der Standardpipeline stationär. Da das globale Anhalten in EX1 aktiviert wird, sind die Befehle in den späteren Stufen EX2 und WRB nicht beeinflußt und werden zu der Stufe EX2 und hinaus aus der Standardpipeline weitergeleitet. Wenn der Befehl A hinaus aus der Standardpipeline weitergeleitet wird, wird derselbe in einen architektonischen Zustand übergeben.
  • In der lokalen Pipeline 16 wird das lokale Anhalten jedoch durch localEx1 dominiert, und die Befehle C und D werden zu der Stufe EX1 und der Stufe REG von der Stufe REG bzw. dem REC-Latch weitergeleitet. Die Befehls C und D stellen sich aus dem lokalen Anhalten, das in dem Zyklus 1 aktiviert wur de, wieder her, und werden zu den folgenden Stufen weitergeleitet. Üblicherweise ist diese Wiederherstellung ein Verstoß gegen normale Pipelineregeln, da die Befehle C und D, nachdem ein globales Anhalten aktiviert wird, weitergeleitet werden, was im Effekt das globale Anhalten dominiert. Aufgrund des in dem Zyklus 1 aktivierten lokalen Anhaltens und des Fehlens eines lokalen Anhaltens in dem Zyklus 2 ist es jedoch bekannt, daß die Daten, die durch den Befehl C aus dem Quellenregister desselben gelesen werden, korrekt sind. Folglich kann der Befehl C zu der nächsten Stufe EX1 ohne Schaden weitergeleitet werden. Das Weiterleiten der Befehle C und D zusammen mit dem Weiterleiten der Befehle B und A, die durch das globale Anhalten stallEx1 unbeeinflußt sind, bringt die lokale Pipeline 16 wieder in eine Übereinstimmung mit der Standardpipeline.
  • Wie im vorhergehenden mit 7 erörtert ist, ist, obwohl die RegID für den Befehl E in dem Zyklus 2 erhalten wird, da die Registerdatei die Standardpipelineregeln befolgt, der Befehl D dennoch in der RegFile und dem Opreg in dem Zyklus 3 gezeigt. Dies stellt kein erneutes Lesen der Operandendaten für den Befehl D dar, sondern zeigt lediglich den Effekt des globalen Anhaltens auf die Registerdatei.
  • In dem Zyklus 4 verhalten sich die Standardpipeline und die lokale Pipeline 16 normal und gleich, da es kein aktiviertes lokales oder globales Anhalten gibt. Der Befehl B wird hinaus aus beiden Pipelines weitergeleitet, die Befehle C, D und E werden jeweils eine Stufe weitergeleitet, und ein neuer Befehl F wird in die Stufe REN von beiden Pipelines abgerufen. Der Befehl E befindet sich ferner in dem REC-Latch in der lokalen Pipeline 16.
  • Da ähnlicherweise der Befehl E in der Stufe REN in dem Zyklus 3 verbleibt, werden die Quellenoperandendaten für den Befehl E aus der Registerdatei in dem Zyklus 4 (wie es durch E in der RegFile-Reihe gezeigt ist) gelesen. Da sich außerdem die lokale Pipeline normal verhält, und es keine lokalen Datenabhängigkeitsgefahren gibt, werden die Quellenoperandendaten für den Befehl E in das Operandenregister in dem Zyklus 4 gelesen.
  • Ein Verfahren, das das lokale Anhalten verwendet, um die Pipelineleistung zu verbessern, wenn zwei globale Anhaltevorgänge aktiviert sind, ist durch 9 dargestellt. Die Pipelineleistung für die Zyklen 0, 1, 2 und 3 ist identisch zu der Pipelineleistung für die Zyklen 0, 1, 2 und 3 in 8, wie im vorhergehenden beschrieben. Wie in 8 wird der Befehl C in der Stufe REG während des Fehlübereinstimmungszyklus gehalten, und die lokale Pipeline 16 gehorcht wiederum nicht dem globalen Anhalten, das in dem Zyklus 2 aktiviert wird, und leitet die Befehle C und D in dem Wiederherstellungszyklus weiter. Die RegFile- und Opreg-Reihen stellen ferner das Vermeiden eines erneuten Lesens zum Datenweiterleiten der Erzeugerdaten des Befehls C in dem Zyklus 2 dar. Ein zweites globales Anhalten wird jedoch in dem Zyklus 3 aktiviert, und die Befehle in sowohl der Standardpipeline als auch der lokalen Pipeline 16 verbleiben in den Stufen, die EX1 vorhergehen und die EX1 umfassen, während des Zyklus 4 stationär. Da es kein in dem Zyklus 2 aktiviertes lokales Anhalten gibt, gehorcht die lokale Pipeline 16 dem zweiten globalen Anhalten, und es ist bekannt, daß die Daten, die zu dem Befehl C weitergeleitet werden, korrekt sind (von der Datenabhängigkeitsgefahr, die das zweite globale Anhalten verursacht hat, ist bekannt, daß dieselbe nicht den Befehl C beeinflußt hat, da das lokale Anhalten für lediglich einen Zyklus aktiviert wurde). Bis zu dem Zyklus 5 werden keine normalen Pipelinefunktionen in beiden Pipelines wieder aufgenommen.
  • 10 stellt einen ersten Abschnitt 70 der lokalen Pipeline 16 dar, der gemäß dem oben beschriebenen Verfahren unter Bezugnahme auf die 7 bis 9 funktioniert. Der erste Abschnitt 70 der lokalen Pipeline 16 zeigt den Abschnitt der Stufe REN bis zu der Stufe REG der lokalen Pipeline 16. Der erste Abschnitt 70 der lokalen Pipeline 16 weist drei Haupt komponenten auf, die den Stufen REN und REG zugeordnet sind: ein erstes Freigabelatch 75, einen Multiplexer 80 und ein zweites Freigabelatch 85. Das erste Freigabelatch 75, der Multiplexer 80 und das zweite Freigabelatch 85 weisen alle ein Takteingangssignal und zusätzliche Eingangssignale auf. Der Befehl in der Stufe REN wird zu sowohl dem ersten Freigabelatch 75 als auch dem Multiplexer 80 ausgegeben, während der Befehl in dem zweiten Freigabelatch 85 zu der Stufe REG ausgegeben wird.
  • Wie im vorhergehenden beschrieben, ist das erste Freigabelatch 75 (das REC-Latch) parallel zu der Stufe REG, da dieselben beide das Ausgangssignal der Stufe REN empfangen. Das erste Freigabelatch 75 (REC) weist ein Freigabeeingangssignal 76 auf, das, wenn dasselbe aktiviert ist, bewirkt, daß sich das erste Freigabelatch 75 (REC) mit dem Befehl in REN aktualisiert. Wenn das Freigabeeingangssignal 76 nicht aktiviert ist, hält das erste Freigabelatch 75 (REC) den derzeitigen Befehl desselben. Wenn dasselbe den derzeitigen Befehl hält, ist das Ausgangssiganl des ersten Freigabelatchs 75 (REC) zu dem Multiplexer 80 dieser gehaltene Befehl.
  • Das Freigabeeingangssignal 76 für das erste Freigabelatch 75 stammt von einem NICHT-ODER-Gatter 77 von stallEx1 und stallEx2. StallEx1 ist das globale oder zentralisierte Anhalten (Stall), das oben beschrieben ist und in den 7 bis 9 zu sehen ist. Das stallEx2 ist ein zweites globales oder zentralisiertes Anhalten von einer anderen Einheit. Das stallEx2 verhindert, daß Befehle zurückschreiben, da Ausnahmen jetzt noch nicht bestimmt sind. Ausnahmen sind Datenüberläufe, Fehler und sind ferner als Störungen bekannt. Die Zurückschreibestufe WRB kann nicht die Resultate eines Befehls zu dem architektonischen Zustand bei der Anwesenheit einer Ausnahme übergeben. Daher wird sta11Ex2 aktiviert, wenn ein Ausnahmebefehl in EX2 erfaßt wird, und solange, bis die Ausnahmen bestimmt und gelöst sind. Mit 6 Pipelines gibt es 6 Befehle in EX2, wobei jeder derselben eine Ausnahme aufweisen kann. Das stallEx2 wird verhindern, daß der Aus nahmebefehl und jeder jüngere Befehl in EX2 in den architektonischen Zustand übergeben werden.
  • Da das Freigabeeingangssignal 76 ein NICHT-ODER ist, wenn entweder stallEx1 oder stallEx2 aktiviert sind, wird dann das Freigabeeingangssignal 76 nicht aktiviert, und das erste Freigabelatch 75 (REC) wird den derzeitigen Befehl desselben halten. Bezugnehmend auf 7 ist zu sehen, daß dies die Situation in dem Zyklus 2 ist. StallEx1 wird in dem Zyklus 2 aktiviert, so daß REC den Befehl D hält und sich nicht mit dem Befehl E (der sich in REN befindet) in dem Zyklus 3 aktualisiert. Wenn sowohl stallEx1 als auch stallEx2 nicht aktiviert sind, ist das Freigabeeingangssignal 76 aktiviert, und das erste Freigabelatch 75 (REC) wird sich mit dem Befehl von der REN (wie es in den Zyklen 1 und 4 von 7 zu sehen ist) aktualisieren.
  • Der Multiplexer 80 empfängt ein Eingangssignal von der REN, ein Eingangssignal von dem ersten Freigabelatch 75 und ein Steuereingangssignal 81. Die "1" und die "0" an dem Multiplexer 80 zeigen, daß der Multiplexer 80 das Eingangssignal ausgeben wird, das der "1" entspricht, wenn das Steuereingangssignal 81 desselben aktiviert ist, und daß derselbe das Eingangssignal ausgeben wird, das der "0" entspricht, wenn das Steuereingangssignal 81 desselben nicht aktiviert ist.
  • Das Steuereingangssignal 81 für den Multiplexer 80 ist ein NICHT des Ausgangssignals des NICHT-ODER-Gatters 77 von stallEx1 und stallEx2. Mit anderen Worten ist das Steuereingangssignal 81 das NICHT des Freigabeeingangssignals 76. Wenn das Freigabeeingangssignal 76 nicht aktiviert ist, d. h. stallEx1 und/oder stallEx2 sind aktiviert, dann ist das Steuereingangssignal 81 für den Mulltiplexer 80 aktiviert. Folglich wird der Multiplexer 80 das Eingangssignal von dem ersten Freigabelatch 75 ausgeben. Wenn das Freigabeeingangssignal 76 aktiviert ist, d. h. stallEx1 und stallEx2 sind nicht aktiviert, ist das Steuereingangssignal 81 nicht aktiviert, und der Multiplexer wird das Eingangssignal von REN ausgeben.
  • Als ein Beispiel wird auf 7 Bezug genommen. In dem Zyklus 2 ist stallEx1 aktiviert, so daß das Steuereingangssignal 81 aktiviert ist. Dementsprechend gibt in dem Zyklus 3 der Multiplexer 80 den Befehl D aus (der das Eingangssignal von REC ist), der seinerseits zu REG durch das zweite Freigabelatch 85, wie im folgenden erörtert, ausgegeben wird.
  • Das zweite Freigabelatch 85 weist ein Eingangssignal von dem Multiplexer 80 und ein Freigabeeingangssignal 86 auf. Wenn das Freigabeeingangssignal aktiviert ist, empfängt das zweite Freigabelatch 85 den Befehl, der durch den Multiplexer 80 augegeben wird, und aktualisiert REG mit diesem Befehl. Ähnlicherweise hält, wenn das Freigabeeingangssignal 86 nicht aktiviert ist, das zweite Freigabelatch 85 den derzeitigen Befehl desselben (d. h. der derzeitige Befehl wird in REG gehalten).
  • Das Freigabeeingangssignal 86 für das zweite Freigabelatch 85 ist ein "NICHT von localReg". Wenn daher localReg in einem ersten Zyklus aktiviert wird, ist das Freigabeeingangssignal 86 nicht aktiviert, und das zweite Freigabelatch 85 wird das Ausgangssignal desselben halten und wird nicht REG in dem nächsten Zyklus aktualisieren. Bezugnehmend auf 7 wird in dem Zyklus 1 localReg aktiviert. Daher ist das Freigabeeingangssignal 86 nicht aktiviert, das zweite Freigabelatch 85 hält den derzeitigen Befehl C desselben, und REG wird nicht zwischen dem Zyklus 1 und dem Zyklus 2 aktiviert (der Befehl in REG bleibt der Befehl C). Durch Halten des Befehls C in REG zwischen den Zyklen 1 und 2 dominiert localReg das globale Anhalten, da stallEx1 nicht in dem Zyklus 1 aktiviert ist. Das globale Anhalten wird mißachtet, da die Daten, die durch den Befehl C aus dem Quellenregister desselben während des Zyklus 1 gelesen werden, aufgrund einer lokalen Datenabhängigkeitsgefahr, wie im vorhergehenden beschrieben, inkorrekt sind.
  • Da localReg in dem Zyklus 2 nicht aktiviert ist, ist das Freigabeeingangssignal 86 aktiviert, und das zweite Freigabelatch 85 ist aktiviert. Dementsprechend gibt das zweite Freigabelatch 85 den Befehl D zu REG zwischen dem Zyklus 2 und dem Zyklus 3 aus, da der Befehl D das Eingangssignal von dem Multiplexer 80 (siehe oben) war. Daß localReg nicht aktiviert ist zeigt wiederum, daß die Daten, die durch den Befehl C von dem Quellenregister desselben in dem Zyklus 2 gelesen werden, korrekt sind, und daß dieselben zu der Stufe EX1, wie im vorhergehenden beschrieben, weitergeleitet werden können. Durch Aktualisieren von REG zwischen den Zyklen 2 und 3 gehorcht die lokale Pipeline wiederum nicht dem globalen Anhalten.
  • Ein zweiter Abschnitt 90 eines Ausführungsbeispiels einer lokalen Pipeline 16, der gemäß dem Verfahren, das unter Bezugnahme auf die 7 bis 9 beschrieben ist, funktioniert, ist durch 11 dargestellt. 11 zeigt den Abschnitt der Stufe REG bis zu der Stufe EX1 der lokalen Pipeline 16. Der zweite Abschnitt 90 weist ein Freigabelatch 95 zwischen der Stufe REG und der Stufe EX1 auf. Wenn das Freigabelatch 95 freigegeben ist, wird das Eingangssignal von der Stufe REG zu der Stufe EX1 ausgegeben.
  • Das Freigabeeingangssignal 96 für das Freigabelatch 95 stammt von einem ODER-Gatter 97 von localEx1 und dem Ausgangssignal eines NICHT-ODER-Gatters 99 von stallEx1 und stallEx2. Wenn es kein aktiviertes lokales Anhalten gibt, und ein globales Anhalten in EX1 aktiviert ist, d. h. localEx1 ist nicht aktiviert und sta11Ex1 ist aktiviert, dann wird das Freigabeeingangssignal 96 für das Freigabelatch 95 nicht aktiviert sein. Dementsprechend wird der Wert in REG in REG gehalten und wird nicht zu EX1 ausgegeben. Dies ist die Situtation in dem Zyklus 2 von 7 oben. Wie zu sehen, wird dem globalen Anhalten gehorcht, und der Befehl D wird in REG gehalten. Da es kein lokales Anhalten in REG in dem Zyklus 1 gibt, ist es jedoch bekannt, daß die Daten für den Befehl C, der sich in EX1 befindet, korrekt sind und kein erneutes Lesen erforderlich ist.
  • Wenn jedoch entweder localEx1 aktiviert ist oder sowohl stallEx1 als auch stallEx2 nicht aktiviert sind, dann ist das Freigabeeingangssignal 96 für das Freigabelatch 95 aktiviert, und das Eingangssignal von der Stufe REG wird zu der Stufe EX1 ausgegeben. Wenn localEx1 aktiviert ist, und stallEx1 ebenfalls aktiviert ist, dann wirkt das Freigabelatch 95 vorranging bzw. dominierend gegenüber dem globalen Anhalten. Dasselbe bewirkt, daß die lokale Pipeline 16 das globale Anhalten mißachtet bzw. dem globalen Anhalten "nicht gehorcht", wie es im vorhergehenden erörtert ist, da das lokale Anhalten in EX1 bedeutet, daß die Daten in REG korrekt sind (wenn localEx1 aktiviert ist, hat sich das lokale Anhalten zu EX1 bewegt und ist in REG nicht länger aktiviert). Dies ist die Situation, die bei dem Übergang zwischen dem Zyklus 2 und dem Zyklus 3 auftritt, wie es in 8 gezeigt ist, da sowohl localEx1 als auch stallEx1 in dem Zyklus 2 aktiviert sind. Der Befehl C wird von REG zu EX1 durch das Freigabelatch 95 in dem Zyklus 3 weitergeleitet, obwohl es ein globales Anhalten in dem Zyklus 2 gibt, und die Pipeline üblicherweise den Befehl C in REG halten würde. Indem bewirkt wird, daß das globale Anhalten ignoriert wird, verbessert daher das lokale Anhalten die Leistung der lokalen Pipeline 16, indem dasselbe dieselbe effizienter macht.
  • Bei der vorliegenden Erfindung wird daher, wenn es ein lokales Anhalten gefolgt von einem globalen Anhalten gibt, der Befehl in der Stufe REG aktualisiert, wenn die Daten von dem Erzeuger derselben verfügbar sind, und dann gemäß dem globalen Anhalten gehalten. Insbesondere umgeht die Weiterleitungsarchitektur die Registerdatei mit den Erzeugerdaten, was die Erzeugerdaten direkt zu dem Operandenregister weiterleitet. Ähnlicherweise wird bei der vorliegenden Erfindung, wenn es ein globales Anhalten ohne ein lokales Anhalten gibt, der Befehl in der Stufe REG einfach zu der nächsten Stufe weitergeleitet und gemäß dem globalen Anhalten gehalten, da die Daten desselben korrekt sind. In keinem Fall wird ein erneutes Lesen durchgeführt oder ist notwendig, da das vorliegende Verfahren sicherstellt, daß die Operandendaten für den Befehl korrekt sind.

Claims (18)

  1. Verfahren zum Vermeiden eines erneuten Lesens einer Registerdatei aufgrund einer Datenabhängigkeit in einer Pipeline (16) mit mehreren Stufen eines Pipeline-Systems mit einer Mehrzahl von Pipelines (14), mit folgenden Schritten: Erfassen einer Registeradresse von Quellenoperandendaten für einen ersten Befehl, wobei die Registeradresse zu einer Position der Quellenoperandendaten für den ersten Befehl in einem Register zeigt; Lesen der Quellenoperandendaten aus dem Register für den ersten Befehl; Bestimmen, ob eine Datenabhängigkeit, die anzeigt, daß die Quellenoperandendaten, die für den ersten Befehl gelesen werden, durch einen anderen Befehl, der für den ersten Befehl ein Erzeuger ist, noch nicht in dem Register bereitgestellt wurden, in der Pipeline (16) existiert; Aktivieren eines lokalen Anhaltens in der Pipeline (16), wenn bestimmt wird, daß eine Datenabhängigkeit in der Pipeline (16) existiert; Aktivieren eines globalen Anhaltens in der Mehrzahl von Pipelines (14) in dem Pipeline-System; und Behandeln der gelesenen Quellenoperandendaten als nicht korrekt, wenn das lokale Anhalten aktiviert ist, und Behandeln der gelesenen Quellenoperandendaten als korrekt, wenn das lokale Anhalten nicht aktiviert ist.
  2. Verfahren gemäß Anspruch 1, bei dem, wenn ein lokales Anhalten aktiviert ist, das Verfahren ferner folgenden Schritt aufweist: Löschen der Quellenoperandendaten, die aus dem Register für den ersten Befehl ausgelesen wurden.
  3. Verfahren gemäß Anspruch 1 oder 2, bei dem, wenn ein lokales Anhalten aktiviert ist, das Verfahren ferner folgenden Schritt aufweist: Aktualisieren der Quellenoperandendaten für den ersten Befehl mit Daten, die durch den Erzeuger geliefert werden, sobald das lokale Anhalten deaktiviert ist.
  4. Verfahren gemäß Anspruch 3, bei dem der Schritt des Aktualisierens den Schritt des Datenweiterleitens der Daten, die durch den Erzeuger geliefert werden, direkt zu dem ersten Befehl aufweist.
  5. Verfahren gemäß Anspruch 3 oder 4, das ferner folgenden Schritt aufweist: Halten des ersten Befehls gemäß dem globalen Anhalten, das einen Zyklus später als das lokale Anhalten aktiviert wird.
  6. Verfahren gemäß Anspruch 1, bei dem, wenn ein lokales Anhalten aktiviert ist, das Verfahren ferner folgende Schritte aufweist: Erfassen einer Registeradresse für Quellenoperandendaten für einen zweiten Befehl, wobei die Registeradresse zu der Position der Quellenoperandendaten für die Daten des zweiten Befehls in dem Register zeigt; Fortfahren des Erfassens des Registers der Quellenoperandendaten für den zweiten Befehl, da das lokale Anhalten aktiviert ist; und Lesen der Quellenoperandendaten für den zweiten Befehl aus dem Register.
  7. Verfahren gemäß Anspruch 1, bei dem, wenn ein lokales Anhalten nicht aktiviert ist, das Verfahren ferner folgenden Schritt aufweist: Halten des ersten Befehls gemäß dem globalen Anhalten.
  8. Verfahren gemäß Anspruch 1, bei dem, wenn ein lokales Anhalten nicht aktiviert ist, das Verfahren ferner folgende Schritte aufweist: Erfassen einer Registeradresse für die Quellenoperandendaten für einen zweiten Befehl, wobei die Registeradresse zu der Position der Quellenoperandendaten für die Daten des zweiten Befehls in dem Register zeigt; Lesen der Quellenoperandendaten für den zweiten Befehl hinaus aus dem Register; und Halten des zweiten Befehls gemäß dem globalen Anhalten, wobei die fehlende Aktivierung des lokalen Anhaltens zeigt, daß keine Datenabhängigkeit für den ersten Befehl aufgetreten ist, und daß die Quellenoperandendaten, die aus dem Register für den ersten Befehl ausgelesen wurden, korrekt sind.
  9. Verfahren gemäß Anspruch 1, bei dem der Schritt des Erfassens durchgeführt wird, wenn sich der erste Befehl in einer Umbenennungsregisteridentifikations- (REN-) Stufe befindet, und der Schritt des Lesens durchgeführt wird, wenn sich der erste Befehl in einer Registerlese(REG-) Stufe befindet.
  10. Verfahren gemäß Anspruch 1, bei dem, wenn ein lokales Anhalten nicht aktiviert ist, das Verfahren ferner folgenden Schritt aufweist: Vermeiden eines erneuten Lesens der Registerdatei, da eine fehlende Aktivierung des lokalen Anhaltens zeigt, daß keine Datenabhängigkeit für den ersten Befehl aufgetreten ist, und daß die Quellenoperandendaten, die aus dem Register für den ersten Befehl gelesen wurden, korrekt sind.
  11. Vorrichtung zum Vermeiden eines erneuten Lesens eines Registers aufgrund einer Datenabhängigkeit in einer Pipeline (16) mit mehreren Stufen eines Pipeline-Systems mit einer Mehrzahl von Pipelines (14), mit folgenden Merkmalen: einer Einrichtung zur Erfassung einer Registeradresse von Quellenoperandendaten für einen ersten Befehl, wobei die Registeradresse zu einer Position der Quellenoperandendaten für den ersten Befehl in einem Register zeigt; einer Einrichtung zum Lesen der Quellenoperandendaten aus dem Register für den ersten Befehl; einer Einrichtung (22, 24, 30, 34, 40, 55) zum Bestimmen, ob eine Datenabhängigkeit, die anzeigt, daß Quellenoperandendaten, die für den ersten Befehl gelesen werden, durch einen anderen Befehl, der für den ersten Befehl ein Erzeuger ist, noch nicht in dem Register bereitgestellt wurden, in der Pipeline existiert; einer Einrichtung (55) zum Aktivieren eines lokalen Anhaltens in der Pipeline, wenn bestimmt wird, daß eine Datenabhängigkeit in der Pipeline existiert; einer Einrichtung (20) zur zentralisierten Datenabhängigkeitserfassung, die ein globales Anhalten in der Mehrzahl von Pipelines in dem Pipeline-System aktiviert; und einer Logikschaltungsanordnung zum Behandeln der gelesenen Quellenoperandendaten als nicht korrekt, wenn das lokale Anhalten aktiviert ist, und zum Behandeln der gelesenen Quellenoperandendaten als korrekt, wenn das lokale Anhalten nicht aktiviert ist.
  12. Vorrichtung gemäß Anspruch 11, bei der die Einrichtung zur Bestimmung einer Datenabhängigkeit Komparatoren (24, 34) erneut verwendet, die für das Datenweiterleiten in der Pipeline verwendet werden.
  13. Vorrichtung gemäß Anspruch 11 oder 12, bei der das lokale Anhalten einen Zyklus vor der Aktivierung des globalen Anhaltens aktiviert wird.
  14. Vorrichtung gemäß Anspruch 11, 12 oder 13, bei der die Logikschaltungsanordnung den Befehl in einer Registerlese- (REG-) Stufe hält, wenn das lokale Anhalten aktiviert ist.
  15. Vorrichtung gemäß einem der Ansprüche 11 bis 14, bei der das lokale Anhalten ausreichend lang aktiviert ist, um es zu ermöglichen, daß der Befehl Daten von einem Erzeuger durch eine Datenweiterleitungsarchitektur empfängt, wenn die Erzeugerdaten verfügbar sind.
  16. Vorrichtung nach einem der Ansprüche 11 bis 15, die ferner folgendes Merkmal aufweist: ein Wiederherstellungslatch (75), wobei die Befehle in dem Wiederherstellungslatch (75) gehalten werden, wenn ein lokales Anhalten aktiviert ist, wobei die Einrichtung (20) zur zentralisierten Datenabhängigkeitserfassung Befehle in der Pipeline (16) anhält, wobei Registerdaten für angehaltene Befehle nicht erneut gelesen werden, wenn das globale Anhalten aktiviert ist.
  17. Vorrichtung gemäß Anspruch 16, die ferner eine Standardpipeline aufweist, in der Registerdaten für einen angehaltenen Befehl erneut gelesen werden, wenn das globale Anhalten aktiviert ist.
  18. Vorrichtung gemäß Anspruch 16 oder 17, die ferner eine Datenweiterleitungsarchitektur aufweist, in der die Daten für einen angehaltenen Befehl direkt zu dem angehaltenen Befehl von einem Erzeuger weitergeleitet werden, wenn das lokale Anhalten deaktiviert ist.
DE10063644A 2000-01-18 2000-12-20 Lokales Anhalten und Gefahrerfassung in einem superskalaren Pipeline-Mikroprozessor zum Vermeiden eines erneuten Lesens einer Registerdatei Expired - Fee Related DE10063644B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US483774 2000-01-18
US09/483,774 US6587940B1 (en) 2000-01-18 2000-01-18 Local stall/hazard detect in superscalar, pipelined microprocessor to avoid re-read of register file

Publications (2)

Publication Number Publication Date
DE10063644A1 DE10063644A1 (de) 2001-07-19
DE10063644B4 true DE10063644B4 (de) 2004-04-08

Family

ID=23921474

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10063644A Expired - Fee Related DE10063644B4 (de) 2000-01-18 2000-12-20 Lokales Anhalten und Gefahrerfassung in einem superskalaren Pipeline-Mikroprozessor zum Vermeiden eines erneuten Lesens einer Registerdatei

Country Status (2)

Country Link
US (1) US6587940B1 (de)
DE (1) DE10063644B4 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1205840B1 (de) * 2000-11-08 2010-07-14 Altera Corporation Haltsteuerung in einem Prozessor mit mehreren Pipelines
US7028165B2 (en) * 2000-12-06 2006-04-11 Intel Corporation Processor stalling
US20060095732A1 (en) * 2004-08-30 2006-05-04 Tran Thang M Processes, circuits, devices, and systems for scoreboard and other processor improvements
US7747993B2 (en) * 2004-12-30 2010-06-29 Michigan Technological University Methods and systems for ordering instructions using future values
US20060184770A1 (en) * 2005-02-12 2006-08-17 International Business Machines Corporation Method of implementing precise, localized hardware-error workarounds under centralized control
US7774582B2 (en) * 2005-05-26 2010-08-10 Arm Limited Result bypassing to override a data hazard within a superscalar processor
CN101689149A (zh) * 2007-07-05 2010-03-31 Nxp股份有限公司 提高微处理器安全性的方法
US9697580B2 (en) * 2014-11-10 2017-07-04 Qualcomm Incorporated Dynamic pipeline for graphics processing
US10417152B2 (en) * 2016-06-03 2019-09-17 International Business Machines Corporation Operation of a multi-slice processor implementing datapath steering
US20200310799A1 (en) * 2019-03-27 2020-10-01 Mediatek Inc. Compiler-Allocated Special Registers That Resolve Data Hazards With Reduced Hardware Complexity

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0654737A1 (de) * 1993-11-19 1995-05-24 Fujitsu Limited Verfahren und Vorrichtung zur Steuerung der Befehlswiederholung
US5524263A (en) * 1994-02-25 1996-06-04 Intel Corporation Method and apparatus for partial and full stall handling in allocation
EP0779577A2 (de) * 1993-10-18 1997-06-18 Cyrix Corporation Mikroprozessorpipelinesteuerung und Registerübersetzung
US5778248A (en) * 1996-06-17 1998-07-07 Sun Microsystems, Inc. Fast microprocessor stage bypass logic enable

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5860017A (en) 1996-06-28 1999-01-12 Intel Corporation Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction
US5859999A (en) 1996-10-03 1999-01-12 Idea Corporation System for restoring predicate registers via a mask having at least a single bit corresponding to a plurality of registers
US5889975A (en) 1996-11-07 1999-03-30 Intel Corporation Method and apparatus permitting the use of a pipe stage having an unknown depth with a single microprocessor core
US5870580A (en) * 1996-12-13 1999-02-09 Advanced Micro Devices, Inc. Decoupled forwarding reorder buffer configured to allocate storage in chunks for instructions having unresolved dependencies
US6038658A (en) 1997-11-03 2000-03-14 Intel Corporation Methods and apparatus to minimize the number of stall latches in a pipeline
US6044456A (en) 1998-01-05 2000-03-28 Intel Corporation Electronic system and method for maintaining synchronization of multiple front-end pipelines
EP0992896A1 (de) 1998-10-06 2000-04-12 Texas Instruments Inc. Pipeline Beschützung
US6279100B1 (en) 1998-12-03 2001-08-21 Sun Microsystems, Inc. Local stall control method and structure in a microprocessor
US6401195B1 (en) * 1998-12-30 2002-06-04 Intel Corporation Method and apparatus for replacing data in an operand latch of a pipeline stage in a processor during a stall

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0779577A2 (de) * 1993-10-18 1997-06-18 Cyrix Corporation Mikroprozessorpipelinesteuerung und Registerübersetzung
EP0654737A1 (de) * 1993-11-19 1995-05-24 Fujitsu Limited Verfahren und Vorrichtung zur Steuerung der Befehlswiederholung
US5524263A (en) * 1994-02-25 1996-06-04 Intel Corporation Method and apparatus for partial and full stall handling in allocation
US5778248A (en) * 1996-06-17 1998-07-07 Sun Microsystems, Inc. Fast microprocessor stage bypass logic enable

Also Published As

Publication number Publication date
DE10063644A1 (de) 2001-07-19
US6587940B1 (en) 2003-07-01

Similar Documents

Publication Publication Date Title
DE3650413T2 (de) Verfahren und Vorrichtung zur Annulierung eines Befehls.
DE69329778T2 (de) System und verfahren zur handhabung von laden und/oder speichern in einem superskalar mikroprozessor
DE69619885T2 (de) Datenverarbeitungsanordnung mit Koprozessor
DE68927492T2 (de) Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten
EP0689694B1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
DE10085152B4 (de) Verfahren zum Erfassen von IEEE-Unterlauf-Ausnahmen bei spekulativen Gleitkommaoperationen
DE69628480T2 (de) Ausnahmebehandlung in einem Datenprozessor
DE69929936T2 (de) Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem
DE2714805C2 (de)
DE4206062C2 (de) Pipelineverarbeitung von Instruktionen
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE19527031C2 (de) Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems
DE69130858T2 (de) Überlappende Serienverarbeitung
DE69325086T2 (de) Verfahren und System für spekulative Befehlsausführung
DE69232045T2 (de) Vorrichtung und verfahren zur ausführung von instruktionen in nicht sequentieller reihenfolge
DE60005860T2 (de) Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle
DE69623146T2 (de) Verfahren und Vorrichtung zum Koordinieren der Benutzung von physikalischen Registern in einem Mikroprozessor
DE19534752A1 (de) Verfahren und System zum Liefern einer Unterstützung für eine spekulative Ausführung
DE4311441C2 (de) Verfahren zum Betreiben eines Mikroprozessors mit einem externen Anschluß
DE69130757T2 (de) Ausführungsvorrichtung für bedingte Verzweigungsbefehle
DE4313594A1 (de) Mikroprozessor
DE19983098B4 (de) Mehrfach-Bitanzeige zur Behandlung von Schreib-nach-Schreib-Fehlern und zur Eliminierung von Bypass-Komparatoren
DE10063644B4 (de) Lokales Anhalten und Gefahrerfassung in einem superskalaren Pipeline-Mikroprozessor zum Vermeiden eines erneuten Lesens einer Registerdatei
DE4211245A1 (de) Prozessorsystem in parallelverarbeitungsbauart mit trap- und stall-steuerfunktionen
DE69325826T2 (de) Rechner mit einer Parallelverarbeitungsfähigkeit

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

8339 Ceased/non-payment of the annual fee