[go: up one dir, main page]

DE19983098B4 - Mehrfach-Bitanzeige zur Behandlung von Schreib-nach-Schreib-Fehlern und zur Eliminierung von Bypass-Komparatoren - Google Patents

Mehrfach-Bitanzeige zur Behandlung von Schreib-nach-Schreib-Fehlern und zur Eliminierung von Bypass-Komparatoren Download PDF

Info

Publication number
DE19983098B4
DE19983098B4 DE19983098T DE19983098T DE19983098B4 DE 19983098 B4 DE19983098 B4 DE 19983098B4 DE 19983098 T DE19983098 T DE 19983098T DE 19983098 T DE19983098 T DE 19983098T DE 19983098 B4 DE19983098 B4 DE 19983098B4
Authority
DE
Germany
Prior art keywords
result
register
address
operand
return
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE19983098T
Other languages
English (en)
Other versions
DE19983098T1 (de
Inventor
Dennis M. Chandler O'Connor
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.)
Marvell World Trade Ltd
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE19983098T1 publication Critical patent/DE19983098T1/de
Application granted granted Critical
Publication of DE19983098B4 publication Critical patent/DE19983098B4/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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

Landscapes

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

Abstract

Prozessor, mit:
a) einem Satz von Registern in einem Registerfile (104)
a.1) das einen Scoreboard/Ergebnispfadanzeiger (100) mit mindestens einem Kennzeichenbit und Rückführpfad-Bits aufweist, der zusätzlich Informationen über den Status jedes Registers speichert,
a.2) wobei das mindestens eine Kennzeichenbit anzeigt, ob ein zugeordneter Operand in einem Register gültig ist,
a.3) wobei Rückführpfad-Bits einen Ergebnisrückführdatenpfad anzeigen, wenn der zugeordnete Operand in einem Register nicht gültig ist,
b) wenigstens einer ersten und einer zweiten Ausführungseinheit (10, 20) mit je einem Ausgang und einem ersten Eingang,
c) wobei die Ausgänge der ersten und der zweiten Ausführungseinheit (10; 20) über einen Satz von Rückführpfaden (16; 26) mit dem Registerfile (104) verbunden sind zum Rückführen von Ergebnissen von der ersten und der zweiten Ausführungseinheit zum Registerfile,
d) einer ersten Schalteinheit (12) mit einem Ausgang, der an den ersten Eingang der ersten Ausführungseinheit (10) angeschlossen ist, und mehreren Eingängen, die...

Description

  • Hintergrund der Erfindung
  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft das Gebiet der Verwendung von Registerfiles. Spezieller betrifft die vorliegende Erfindung die Verwendung zusätzlicher Bits in dem Registerfile, um Schreib-nach-Schreib-Fehler zu behandeln, und um Bypass-Komparatoren zu eliminieren.
  • Beschreibung des Standes der Technik
  • Registerfiles sind Arrays in Prozessoren, die ein oder mehrere Register speichern. Bei Prozessoren, die in der Lage sind, mehr als einen Befehl gleichzeitig zu verarbeiten, ist es üblich, jedem dieser Register ein Bit zuzuordnen, das anzeigt, ob die in dem jeweiligen Register befindlichen Daten entweder: (1) aktualisiert und zur Verwendung bereit sind; oder (2) modifiziert oder angezeigt werden, und somit nicht verfügbar sind. Dieses Bit wird "Kennzeichen"- bzw. "Scoreboard"-Bit genannt.
  • Beispielsweise kann dann, wenn ein Kennzeichenbit für ein bestimmtes Register gesetzt ist, der nächste Befehl, der auf dieses Register zugreifen muß, nicht ausgeführt werden, bis das Kennzeichenbit für dieses Register rückgesetzt wurde. Um das Registerbit rückzusetzen, muß die Ausführung einer vorhergehenden Operation (d.h. der Operation, die die Daten erzeugt/ändert, die in dieses Register geschrie ben/zurückgeschrieben werden sollen) beendet worden sein. Somit gibt es, wenn ein Programm z.B. (1) ein LADEN eines ersten Wertes ausführt und ihn in ein Register R4 schreibt, und (2) ein ADDIEREN des ersten Wertes mit einem zweiten Wert ausführt, der in einem Register R5 enthalten ist, zweifellos eine Abhängigkeit bei der LADE-Operation. Die Verwendung eines Kennzeichenbits durch eine Schaltung, um den Zugriff auf ein Register, welches gerade verwendet wird, zu "sperren", wird als "Hardware-Sperrung" bezeichnet. Die Hardware-Sperrung wird verwendet, anstatt den zusätzlichen Aufwand der Software aufzuerlegen.
  • Somit wird in einem Prozessor, bei welchem es mehrere Ausführungseinheiten gibt und bei welchem eine der Ausführungseinheiten eine Operation aufweist, die auf die Ausführung wartet, und die von einem Ergebnis einer vorhergehenden Operation abhängt, das Register, das auf den Empfang des Ergebnisses wartet, für einen Zugriff "gesperrt", bis das Kennzeichenbit des Registers rückgesetzt ist. Nachdem das Ergebnis in das Register geschrieben wurde und das Kennzeichenbit rückgesetzt wurde, kann die Ausführungseinheit, die die wartende Operation aufweist, auf die Daten in dem Register zugreifen.
  • In Fällen, in denen eine Operation darauf wartet, daß ein Ergebnis von einer Ausführungseinheit zurückkommt, kann dadurch Zeit gespart werden, daß nicht darauf gewartet werden muß, daß das Ergebnis zunächst in das Register geschrieben wird, und dann wieder von der wartenden Ausführungseinheit ausgelesen wird. Stattdessen wird ein Bypass verwendet, um das Ergebnis zur gleichen Zeit, zu der das Ergebnis an das Register gesendet wird, an die wartende Ausführungseinheit zu senden – wodurch Operationen erheblich schneller ausgeführt werden.
  • Ein Bypass wird verwendet, wenn ein Prozessor mehrere Daten in einem Registerfile enthält, und auch einen Satz Ausführungseinheiten enthält, von denen jede eine unterschiedliche Zeitdauer benötigen kann, um eine Operation zu beenden. Eine Ausführungseinheit kann eine variierende Zeitdauer benötigen, um eine Operation zu beenden, da beispielsweise die Ausführungseinheit eine Mehrfachzyklus-Ausführungseinheit sein kann, oder weil der Prozessor so ausgeführt ist, daß er zeitverschachtelt arbeitet, wobei keine Operation sofort beendet wird.
  • Ohne einen Bypass muß eine Ausführungseinheit, die darauf wartet, daß eine weitere Operation beendet wird, warten, bis die Operation beendet wurde, und das Ergebnis zurück an das Registerfile gesendet wurde, bevor das Ergebnis wieder ausgelesen wird. Die Ausführungseinheit muß auch warten, bis das Kennzeichenbit für das Ergebnis rückgesetzt wurde; das Ergebnis wird ausgelesen, bevor der Befehl ausgegeben wird.
  • Somit führt die Zeit, die verstreicht, bis das Ergebnis in das Registerfile geschrieben wird, und das Ergebnis wieder ausgelesen wird, bevor der Befehl ausgeführt wird, der von dem Ergebnis abhängt, zu einer zusätzlichen Verzögerung.
  • 1 zeigt eine Bypass-Schaltung gemäß dem Stand der Technik (wie beispielsweise in der DE 195 06 990 A1 oder US 5,699,537 A offenbart ist, bei welcher ein Satz Multiplexer (MUX) 12, 14, 22 und 24 in einem Satz Ergebnisrückführdatenpfaden 16 und 26 angeordnet ist. Der Satz Ergebnisrückführdatenpfade 16 und 26 führt jeweils Ergebnisse von Ausführungseinheiten 10 und 20 an ein Registerfile 30 zurück (der Einfachheit halber ist in 1 keine Steuerschaltung gezeigt).
  • Bei 1 sind entlang des Registerfiles 30 ein Satz Registerfilekennzeichenbits 28 vorgesehen. Die Ausgabe des Registerfiles 30 wird dem MUX 12, MUX 14, MUX 22 und MUX 24 zugeführt. Die Ausgabe des MUX 12 wird als eine Eingabe an die Ausführungseinheit 10 verwendet, während die Ausgabe des MUX 14 als die andere Eingabe an die Ausführungseinheit 10 verwendet wird. Die Ausgabe des MUX 22 wird als eine Eingabe an die Ausführungseinheit 20 verwendet, während die Ausgabe des MUX 24 als die andere Eingabe für die Ausführungseinheit 20 verwendet wird.
  • Die Ausgabe der Ausführungseinheit 10 wird auf einem Ergebnisrückführdatenpfad 16 an das Registerfile 30 zurückgeführt. Auf ähnliche Weise wird die Ausgabe der Ausführungseinheit 20 auf einem Ergebnisrückführdatenpfad 26 an das Registerfile 30 zurückgeführt.
  • Es sei angemerkt, daß der Ergebnisrückführdatenpfad 16 und der Ergebnisrückführdatenpfad 26 auch von anderen Ausführungseinheiten verwendet werden könnten, die in der Figur nicht gezeigt sind. Außerdem empfangen die MUX 12, MUX 14, MUX 22 und MUX 24 jeweils unter Verwendung des Ergebnisrückführdatenpfads 16 und des Ergebnisrückführdatenpfads 26 sowohl die Ausgabe von der Ausführungseinheit 10 als auch die Ausgabe von der Ausführungseinheit 20.
  • Somit hat in 1 jeder Eingang jeder Ausführungseinheit einen Multiplexer mit drei (3) Eingängen, der als Eingabe entweder die Ausgabe von dem Registerfile oder das Ergebnis zur Verfügung stellt, das auf einem der zwei Ergebnisrückführdatenpfaden zurückgeführt wird. Wie unten beschrieben, kann jede Ausführungseinheit auch in der Lage sein, die Werte, die auf ihren Eingängen erscheinen, zu speichern, um mit Situationen umzugehen, bei denen nicht alle Eingaben gleichzeitig erhältlich sind.
  • Beispielsweise können, wenn eine Ausführungseinheit 10 ein Addierer ist, der einzyklisch arbeitet, und der nächste Befehl, der ebenfalls ein ADDIEREN-Befehl ist, das Ergebnis benötigt, beide Operationen sequentiell ausgegeben werden, da das Ergebnis des ersten ADDIEREN-Befehls zu der gleichen Zeit, zu der es in das Registerfile geschrieben wird, wieder in den Addierer nebengeleitet wird, so daß ein darauffolgender ADDIEREN-Befehl es sofort verwenden kann.
  • Am Ausgang jedes MUX werden Daten von einem der drei Eingänge ausgewählt, abhängig davon, welche Steuerleitung aktiv ist. Die Steuerleitungen stammen von dem in 2, unten, beschriebenen System.
  • 2 zeigt eine Bypass-Steuerschaltung 40 mit einer Registerfile-Auswahlsteuerleitung (SRF) 66, einer B1-Auswahlsteuerleitung (SB1) 68 und einer B2-Auswahlsteuerleitung (SB2) 70, um zu bestimmen, von wo eine Ausführungseinheit einen Operanden empfängt. SRF 66, SB1 68 und SB2 70 werden an einen der MUXs von 1 gesendet. Somit empfängt jeder der MUXs in 1, spezieller der MUX 12, MUX 14, MUX 22 und MUX 24, Steuersignale SRF 66, SB1 68 und SB2 70 von einer Bypass-Steuerschaltung, die ähnlich wie die Bypass-Steuerschaltung 40 ist. Eine Kennzeichenbitleitung, die aus dem Registerfile 30 stammt, stellt in 2 für das spezielle Register, auf welches zugegriffen wird, den Wert des Kennzeichenbits zur Verfügung, um zu bestimmen, ob der Wert von dem Registerfile oder ein Wert von einem der Ergebnisrückführdatenpfade verwendet werden soll.
  • Die Bypass-Steuerschaltung 40 enthält auch einen ersten Komparator 50 und einen zweiten Komparator 60. Einer der Eingänge sowohl des ersten Komparators 50 als auch des zweiten Komparators 60 zeigt die Operanden-Registeradresse des Operanden an, auf den die momentane Operation wartet. Beim ersten Komparator 50 ist der andere Eingang die Ergebnisrückführdatenpfad 16 – Registeradresse, die die Registerfileadresse anzeigt, in die das auf dem Ergebnisrückführdatenpfad 16 enthaltene Ergebnis zurückgeführt wird, nachdem die erste Ausführungseinheit 10 die vorhergehende Operation beendet hat. Bei dem zweiten Komparator 60 ist der andere Eingang die Ergebnisrückführdatenpfad 26 – Registeradresse, welche die Registerfileadresse anzeigt, in die das auf dem Ergebnisrückführdatenpfad 26 enthaltene Ergebnis zurückgeführt wird, nachdem die zweite Ausführungseinheit 20 die andere vorhergehende Operation beendet hat.
  • Der erste Komparator 50 und der zweite Komparator 60 arbeiten beide auf die gleiche Weise; sie geben nämlich eine logische eins aus, wenn beide Eingaben gleich sind. Zum Beispiel gibt der erste Komparator 50 eine logische eins aus, wenn die Operand-Registeradresse gleich der Ergebnisrückführdatenpfad 16 – Registeradresse ist.
  • Die Ausgabe des ersten Komparators 50 wird von einem ersten AND-Gatter 52 empfangen. Das erste AND-Gatter 52 empfängt auch die Eingabe eines NOT-Gatters 64. Auf ähnliche Weise wird die Ausgabe des zweiten Komparators 60 von einem zweiten AND-Gatter 62 empfangen. Das zweite AND-Gatter 62 empfängt auch die Eingabe des NOT-Gatters 64.
  • Der Eingang an das NOT-Gatter 64 ist die Kennzeichenbitleitung, die, wie oben erläutert, den Wert liefert, der von einem der Kennzeichenbits von den Registerfilekennzeichenbits 28 stammt. Speziell ist das verwendete Kennzeichenbit das zu den Registerdaten zugeordnete Bit, die von der Ausführungseinheit angefordert werden.
  • Während des Betriebs der Schaltung von 2 wird, wenn das von den Registerfilekennzeichenbits 28 stammende Kennzeichenbit anzeigt, daß der Operand aus den Registerfilekennzeichenbits 28 ausgelesen werden soll, der von der Kennzeicheneinheit stammende Wert verwendet, da SRF einen Wert einer logischen eins hat. Wenn das aus den Registerfilekennzeichenbits 28 stammende Kennzeichenbit eine logische eins ist, was anzeigt, daß die Daten in dem Registerfile 30 nicht gültig sind, verwendet der MUX das von einem der Ergebnisrückführdatenpfade stammende Ergebnis, abhängig von der Ausgabe der Bypass-Steuerschaltung 40. Im Ergebnis bestimmen diese drei Steuerleitungen (SRF 66, SB1 68 und SB2 70) zusammen, ob für die Operation ein gültiges Ergebnis erhältlich ist, wodurch dem Prozessor ermöglicht wird, den Befehl auszugeben, und den Befehl ausführen zu lassen.
  • Die Operand-Adresse stammt von dem Befehlswort und ist die Registeradresse, an der sich der gewünschte Operand für die Operation befindet. Beispielsweise wartet dann, wenn ein Befehl lautet, den Wert in dem Registerfile 30 an einer Stelle 4 zu dem Wert in dem Registerfile 30 an einer Stelle 5 zu addieren, und an der Stelle 4 in dem Registerfile 30 keine gültigen Daten vorliegen, die Ausführungseinheit, die den Befehl ausführt, bevor sie mit dem Ausführen beginnt, bis sie ermittelt, daß ein Wert, der für die Stelle 4 des Registerfiles 30 bestimmt ist, auf einem Ergebnisrückführdatenpfad zurückgeführt wird.
  • Für jede mögliche Kombination von Bestimmungsbus und Ausführungseinheiteingang ist ein Komparator notwendig, da jede Ausführungseinheit bei jedem beliebigen Ergebnisrückführdatenpfad auf ein Ergebnis warten kann. Deswegen werden in 1, wo es zwei Ergebnisbusse und insgesamt vier Operandeneingänge gibt, acht Komparatoren benötigt, weil die Bypasslogik, die aus zwei Komparatoren pro Ausführungseinheiteingang besteht, eine für jeden Bus, für jede dieser Stellen dupliziert werden muß.
  • Allgemein steigt die Anzahl an Komparatoren als Produkt aus der Anzahl an Ausführungseinheiten und der Anzahl an Ergebnisrückführdatenpfaden an. Die Anzahl an Rückführpfaden kann mit der Anzahl an Ausführungseinheiten ansteigen, um zu ermöglichen, daß alle oder die meisten Ausführungseinheiten gleichzeitig Ergebnisse erzeugen. Dies würde dazu führen, daß die Anzahl an Komparatoren im Quadrat mit der Anzahl an Ausführungseinheiten ansteigt. Zum Beispiel kann dann, wenn die Anzahl an Ausführungseinheiten verdoppelt wird, die Anzahl an Komparatoren um einen Faktor 4 steigen.
  • Der Erfindung liegt die Aufgabe zugrunde, bei einem Prozessor die Anzahl an Komparatoren zu vermindern.
  • Sie löst diese Aufgabe mit dem Gegenstand des unabhängigen Anspruchs 1. Weitere bevorzugte Ausgestaltungen der Erfindung sind in den Unteransprüchen beschrieben.
  • KURZE BESCHREIBUNG DER ZEICHNUNG
  • 1 ist ein Blockdiagramm eines Systems gemäß dem Stand der Technik zum Nebenschließen von Daten, mit einem Multiplexer zur Auswahl der Bypassdaten.
  • 2 ist ein Blockdiagramm eines Steuersystems gemäß dem Stand der Technik zum Steuern des Multiplexers des Systems gemäß dem Stand der Technik zum Nebenschließen von Daten.
  • 3 ist ein System zum Nebenschließen von Daten, das gemäß einem Ausführungsbeispiel der vorliegenden Erfindung ausgestaltet ist.
  • 4 ist ein System zum Nebenschließen von Daten, das gemäß einem weiteren Ausführungsbeispiel der vorliegenden Erfindung ausgestaltet ist.
  • GENAUE BESCHREIBUNG DER ERFINDUNG
  • Die vorliegende Erfindung stellt ein Verfahren und eine Vorrichtung zur Mehrfach-Bitkennzeichnung zur Verfügung. Die Erfindung kann zur Behandlung von Schreib-nach-Schreib-Fehlern verwendet werden, oder um Bypass-Komparatoren zu eliminieren, oder für beides. Zum Zweck der Erläuterung sind spezielle Ausführungsbeispiele dargestellt, um ein tiefgehendes Ver ständnis der vorliegenden Erfindung zu ermöglichen. Jedoch wird der Fachmann beim Lesen der Offenbarung verstehen, daß die Erfindung ohne diese Details ausgeführt werden kann. Außerdem sind, obwohl die vorliegende Erfindung unter Verwendung von Registerfilekennzeichnungs-Anzeigern beschrieben wird, die meisten, wenn nicht sogar alle, Aspekte der vorliegenden Erfindung allgemein bei Registerfiles anwendbar. Desweiteren werden allgemein bekannte Elemente, Vorrichtungen, Verfahrensschritte und dergleichen nicht im Detail erläutert, um zu vermeiden, daß die vorliegende Erfindung unklar wird.
  • Um einen großen Teil des Bypass-Schaltkreises zu eliminieren, werden zusätzliche Kennzeichenbits in dem Registerfile verwendet, um den Ergebnisbus anzuzeigen, von dem das Ergebnis rückgeführt wird. Zusätzlich wird angezeigt, daß ein Ergebnis in das Registerfile rückgeschrieben werden muß.
  • Bei einem Ausführungsbeispiel werden mehrere Bits verwendet, wobei eine Konfiguration, bei der alle Bits null sind, anzeigt, daß das Ergebnis in dem Registerfile gültig ist. Bei einem alternativen Ausführungsbeispiel wird ein separates Kennzeichenbit verwendet, um anzuzeigen, ob der Operand in dem Registerfile gültig ist. Ein zusätzlicher Satz "Rückführpfad"-Bits kann verwendet werden, um den Ergebnisrückführpfad anzuzeigen.
  • In 3 ist eine Bypass-Steuerschaltung 80 dargestellt, die gemäß einem Ausführungsbeispiel der vorliegenden Erfindung ausgestaltet ist. Die Bypass-Steuerschaltung 80 stellt einen effizienten Bypass zur Verfügung, wie unten beschrieben wird, und ist an ein Registerfile 104 angeschlossen, das einen Scoreboard/Ergebnispfadanzeiger 100 aufweist, der zusätzliche Informationen über den Status jedes Registers in dem Registerfile 104 speichert.
  • Die Bypass-Steuerschaltung 80 ist auch an einen MUX 12 angeschlossen, um die Auswahl von Daten zu steuern, die entweder vom Registerfile 104, von einem Ergebnisrückführdatenpfad 16 oder einem Ergebnisrückführpfad 26 einem der Eingänge der Ausführungseinheit 10 zugeführt werden. Bei einem Ausführungsbeispiel ist eine weitere Bypass-Steuerschaltung (nicht gezeigt) vorgesehen, die so angeschlossen ist, daß sie die Auswahl der Daten steuert, die an den anderen Eingang der Ausführungseinheit 10 durchgeschaltet werden sollen. Bei einem weiteren Ausführungsbeispiel weist jeder MUX jeder Ausführungseinheit eine Bypass-Steuerschaltung auf, die ähnlich ist wie die Bypass-Steuerschaltung 80. Bei einem noch weiteren Ausführungsbeispiel kann jede Ausführungseinheit bei ihren Eingängen Zwischenspeicher aufweisen, um mit Fällen umzugehen, bei denen ansonsten nicht alle ihre Eingaben gleichzeitig zur Verfügung stehen würden. Diese Zwischenspeicher werden dadurch gesteuert, daß "Operand bereit"-Anzeigen verwendet werden, die von der Bypass-Steuerschaltung erzeugt werden, die jedem Eingang zugeordnet ist.
  • In der Bypass-Steuerschaltung 80 wird ein AND-Gatter 82 mit logisch invertierten Eingängen verwendet, um festzustellen, ob die in dem Registerfile 30 enthaltenen Daten verwendet werden sollen oder nicht, wie unten erklärt. Die Eingaben an das AND-Gatter 82 stammen von dem Scoreboard/Ergebnispfadanzeiger 100. Der Ausgang des AND-Gatters 82 ist eine Registerfile-Auswahlsteuerleitung (SRF) 84.
  • Wenn der Scoreboard/Rückführpfadanzeiger 100 anzeigt, daß die Daten in dem Registerfile 30 nicht gültig sind (d.h., daß die Daten gekennzeichnet sind), wird der MUX 86 verwendet, um die Ergebnisrückführdatenpfad-Registeradresse für den Ergebnisrückführdatenpfad, der von dem Scoreboard/Rückführpfadanzeiger 100 angezeigt wird, auszuwählen und durchzuschalten. Die Ausgabe des MUX 86 wird einem Komparator 88 zugeführt, der auch die Registeradresse des Operanden empfängt, auf den die Ausführungseinheit wartet. Die Ausgabe des Komparators 88 wird einem zweiten AND-Gatter 90 und einem dritten AND-Gatter 92 zugeführt, die verwendet werden, um jeweils zwischen dem Ergebnisrückführdatenpfad 16 und dem Ergebnisrückführdatenpfad 26 auszuwählen.
  • Wenn ein Register gekennzeichnet wurde, bestimmt der Adressdekodierer 94, wenn überhaupt, von welchem der Ergebnisrückführdatenpfade ein Ergebnis rückgeführt werden soll, indem die Bits in dem Scoreboard/Rückführpfadanzeiger 100, die zu diesem Register gehören, dekodiert werden. Wenn der Adressdekodierer 94 feststellt, daß die Daten, die in das Register rückgeführt werden sollen, vom Ergebnisdatenpfad 16 stammen sollen, legt der Adressdekodierer 94 eine logische eins an dem Ausgang an, der an das zweite AND-Gatter 90 angeschlossen ist. Auf ähnliche Weise legt der Adressdekodierer 94, wenn der Adressdekodierer 94 feststellt, daß die Daten, die in das Register rückgeführt werden sollen, von dem Ergebnisdatenpfad 26 stammen sollen, eine logische eins an dem Ausgang an, der an das dritte AND-Gatter 92 angeschlossen ist.
  • Die Bypass-Steuerschaltung 80 enthält auch ein OR-Gatter 102, welches die Ausgaben des AND-Gatters 82, des zweiten AND-Gatters 90 und des dritten AND-Gatters 92 empfängt, um ein "Operand-bereit"-Signal anzuzeigen. Ein OR-Gatter wird deshalb verwendet, da dann, wenn irgendeines der AND-Gatter (d.h. das AND-Gatter 82, das zweite AND-Gatter 90 und das dritte AND-Gatter 92) angesteuert wird, ein zur Verwendung bereiter Operand vorliegt.
  • Weiterhin bezogen auf 3, ist ein Beispiel für die Funktionsweise des Systems, wenn ein Befehl ausgegeben wird, ein Ergebnis an ein Register 0 [R0] rückzuführen. Somit wird das Kennzeichenbit von R0 gesetzt. Zur gleichen Zeit, zu der das Kennzeichenbit gesetzt wird, wird auch Ergebnisrückführdatenpfad-Anzeigeinformation in den Rückführpfad-/Scoreboardbits kodiert, um den Ergebnisrückführdatenpfad anzuzeigen, von dem das Ergebnis für R0 rückgeführt wird. Die Information, die den Ergebnisrückführdatenpfad spezifiziert, auf dem das Ergebnis rückgeführt wird, kann in einigen Fällen direkt aus dem Befehl hergeleitet werden oder muß von der Hardware erhalten werden, die entscheidet; welche Ausführungseinheit die Operation durchführt. Dann wird, wenn ein darauffolgender Be fehl ausgegeben wird, der den Wert in R0 benötigt, bevor der erste Befehl ein Ergebnis in R0 rückgeführt hat, der Befehl "gekennzeichnet" (d.h. der Befehl muß darauf warten, daß der erste Befehl ein Ergebnis an R0 rückführt, bis er die Ausführung fortsetzen kann).
  • Im Stand der Technik konnte ein permanenter Bypass nur dadurch verwirklicht werden, daß sämtliche Ergebnisrückführdatenpfade hinsichtlich des Ergebnisses überwacht wurden, das an R0 rückgeführt werden soll. Im Gegensatz hierzu kann das vorliegende System dadurch einen Bypass erreichen, daß nur die Kodierung der Rückführpfad-/Scoreboardbits für R0 überwacht wird. Die Kodierung und deren Bedeutung ist wie folgt: Tabelle 1 – Rückführpfad-/Scoreboardbit-Kodierung
    Figure 00120001
  • Bei einem Ausführungsbeispiel werden für jedes Register zwei Bits verwendet, um die insgesamt mögliche Anzahl an Stellen für Quellen für das Ergebnis darzustellen. Der logisch inverse Wert von beiden wird als Eingabe an das AND-Gatter 82 zugeführt. Wenn beide Bits null sind, soll das Ergebnis von dem Registerfile 104 stammen, so daß der Wert in dem Registerfile 104 ausgewählt wird und an die Ausführungseinheit durchgeschaltet wird. Wenn das erste Bit keine null ist, wird auch das zweite Bit untersucht, um festzustellen, von welchem Ergebnisrückführdatenpfad das Ergebnis stammt. Der Ergebnisrückführdatenpfad zeigt die Registeradresse an, an der sich die Daten befinden.
  • Der Komparator 88 zeigt an, wenn das relevante Ergebnis auf dem Ergebnisrückführdatenpfad auftaucht, da es eine beliebige Anzahl von Zyklen dauern könnte, bevor das relevante Ergebnis vorliegt. In der Zwischenzeit können mehrere andere Ergebnisse über den Bus gesendet werden, so daß die Bypass-Steuerschaltung nicht nur sicherstellt, daß das System über den Ergebnisrückführdatenpfad des relevanten Ergebnisses informiert wird, sondern auch, daß das System das relevante Ergebnis von dem richtigen Ergebnisrückführdatenpfad empfängt.
  • Anstelle eines Vergleichs mit allen möglichen Ergebnisrückführdatenpfaden, die das Ergebnis rückführen könnten, und eines Auswählens unter diesen, kann ein Ergebnisrückführdatenpfad identifiziert werden, so daß nur Ergebnisse, die auf diesem Ergebnisrückführdatenpfad zu dem Registerfile 104 rückgeführt werden, auf ihre Bestimmungsadresse hin untersucht werden. Beispielsweise wird bei einem System mit fünf Ergebnisrückführdatenpfaden, die Ergebnisse rückführen, anstatt daß fünf Komparatoren in der Bypass-Steuerschaltung benötigt werden, die Bypass-Steuerschaltung 80 so modifiziert, daß sie nur einen einzelnen Komparator verwendet, wobei die einzigen Änderungen ein MUX mit fünf Eingängen anstelle eines MUX mit zwei Eingängen und eine erhöhte Anzahl an Bits, die in dem Scoreboard/Ergebnisrückführ-datenpfadanzeiger 100 gespeichert sind, um fünf mögliche Ergebnisrückführdatenpfade anzuzeigen, sind.
  • Ein OR-Gatter 102 empfängt die Signale von SRF 84, SRP16 96 und SRP26 98 und stellt eine logische OR-Verbindung zwischen ihnen her, so daß, wenn von diesen irgendein Signal wahr ist, ein gültiges Ergebnis erhältlich ist (d.h. der Operand ist "bereit") und an die Ausführungseinheit 10 gesendet werden kann (d.h. durch Nebenleiten oder durch direktes Lesen von dem Registerfile), möglicherweise zur gleichen Zeit, zu der das Ergebnis an das Registerfile 104 gesendet wird.
  • Nachdem das gültige Ergebnis an das Registerfile 104 rückgeführt ist, werden die zwei Bits, denen die Anzeige des Status des Ergebnisses in dem Registerfile 104 in dem Scoreboard/Ergebnisrückführdatenpfadanzeiger 100 obliegt, rückge setzt (d.h. auf logisch null eingestellt), um anzuzeigen, daß das Ergebnis in dem Registerfile 104 jetzt gültig ist.
  • Das in 3 gezeigte und oben beschriebene System funktioniert gut in Systemen, die keine Mehrfachbefehle zulassen, die zur simultanen Ausführung alle ein Ergebnis an die gleiche Registeradresse rückführen. Dies ist in vielen Prozessoren der Fall. Jedoch kann häufig eine bessere Leistungsfähigkeit erzielt werden, indem diese Restriktion gelockert wird, wobei zugelassen wird, daß mehrere Befehle zur simultanen Ausführung alle ihr Ergebnis an das gleiche Register rückführen, sogar dann, wenn zwischen ihnen weitere Befehle ausgegeben werden, die diese Ergebnisse verwenden. Eine erhöhte Leistungsfähigkeit kann in dieser Situation auch erreicht werden, wenn die Befehle ihre Ergebnisse in einer Reihenfolge rückführen, die sich von der Reihenfolge, in der sie ausgegeben wurden, unterscheidet. Dies wird als von der Reihenfolge abweichendes Ausführen bezeichnet. In diesem Fall müssen zusätzliche Anstrengungen unternommen werden, um sicherzustellen, daß die Befehle unter Verwendung der richtigen Eingabewerte ausgeführt werden.
  • 4 ist ein Blockdiagramm einer Bypass-Steuerschaltung 80, die so modifiziert ist, daß ein Schreib-nach-Schreib (write-after-write bzw. WAW)-Fehler vermieden wird. Ein WAW tritt in einem Prozessor auf, wenn verschiedene Befehle Ergebnisse an die gleiche Registerstelle in einer Reihenfolge rückführen, die sich von der Reihenfolge, in der die Befehle ausgegeben wurden, unterscheidet.
  • Beispielsweise enthält die Tabelle 2a ein Beispiel für eine WAW-Fehlersituation, bei welcher vier Befehle ausgegeben werden: Tabelle 2a – WAW-Fehler
    Figure 00150001
  • Dabei ist LADEN(X,Y) ein Befehl, der einen Wert X in ein Register Y lädt; ADDIEREN(X,Y,Z) addiert einen Wert X und einen Wert Y und speichert das Ergebnis an einer Stelle Z; VERSCHIEBEN(X,Y) ist ein Befehl, der die Daten in einer Speicherstelle X in ein Register Y verschiebt; und SP(X,Y) ist ein Befehl, der den Wert in einem Register X in einer Speicherstelle Y speichert. Die Ausführungseinheit-Spalte zeigt an, an welche Ausführungseinheit der Befehl ausgegeben wird; und die Rückführpfad-Spalte zeigt an, auf welchem Rückführpfad das Ergebnis des Befehls rückgeführt wird.
  • Ein WAW kann auftreten, wenn der LADEN- und der VERSCHIEBEN- Befehl ihre Ergebnisse entweder von der Reihenfolge abweichend oder auf parallele Weise rückführen. Ohne den WAW-Schutz kann der VERSCHIEBEN-Befehl vor dem LADEN-Befehl ausgeführt und beendet werden. Wenn der LADEN-Befehl die Ausführung nach dem VERSCHIEBEN-Befehl beendet, wird R1 mit dem Wert 4 geladen, der den Wert 8 überschreibt, der von dem VERSCHIEBEN-Befehl rückgeführt wird. Somit speichert der SP-Befehl, anstatt richtigerweise einen Wert 4 in der Speicherstelle 12 zu speichern, fälschlicherweise den Wert 8 in die Speicherstelle 12.
  • Um WAW-Fehler zu vermeiden, kann der Scoreboard/Ergebnisrückführdatenpfadanzeiger 100, der den relevanten Rückführpfad anzeigt, auf dem ein Ergebnis rückgeführt werden soll, verwendet werden, um einem darauffolgenden Befehl, der dieses Ergebnnis verwenden soll, zu ermöglichen, die Rückführung der Daten auf dem relevanten Rückführpfad zu überwachen. Bei einem Ausführungsbeispiel dürfen aufeinanderfolgende Befehle, die auch den gleichen Rückführpfad zum Rückführen eines Werts in das gleiche Register verwenden, nicht ausgegeben werden. Darauffolgende Befehle, die entweder ein Ergebnis an ein unterschiedliches Register rückführen oder die einen unterschiedlichen Pfad verwenden, dürfen ausgegeben werden. Die Kombination aus dem Register, für das das Ergebnis bestimmt ist, und dem Rückführpfad, auf dem es rückgeführt wird, werden kombiniert, um das Ergebnis eindeutig zu identifizieren. Der Ausführungseinheit, die dazu bestimmt ist, einen darauffolgenden Befehl zu verarbeiten, der auf ein Ergebnis wartet, wird dieses eindeutige Register/Rückführpfadpaar zugeführt (und nicht nur das Register, wie es im Stand der Technik der Fall wäre), wenn dieser darauffolgende Befehl ausgegeben wird. Sie speichert/verwendet diese eindeutige Identifizierung, um sicherzustellen, daß der darauffolgende Befehl nur das richtige Ergebnis verwendet.
  • Unter Verwendung des in Tabelle 2a dargestellten Beispiels zur Veranschaulichung dieses Vorgangs wird zunächst der Ladebefehl ausgegeben. Angenommen, es dauert beliebig lange, bis das Laden beendet ist. Wenn der nächste Befehl, der das Ergebnis des Ladens verwendet, ausgegeben wird (der ADDIEREN-Befehl), wird der Ausführungseinheit, zu der der Befehl zugeordnet ist, sowohl die Registeradresse (R1) als auch der Ergebnisrückführdatenpfad (16) zugeführt. Sie beginnt, darauf zu warten, daß das Ergebnis ("R1 auf dem Ergebnisrückführdatenpfad 16") erscheint. Dann wird der VERSCHIEBEN-Befehl ausgegeben. Angenommen, der VERSCHIEBEN-Befehl führt sein Ergebnis nicht sofort zurück. Dann wird der SP-Befehl ausgegeben und die Ausführungseinheit, der er zugeordnet ist, muß nach einem "R1 auf dem Ergebnisrückführdatenpfad 26" Ausschau halten.
  • Bei einem Szenario kann der LADEN-Befehl als erstes sein Ergebnis zurückführen. In diesem Fall beobachtet die Einheit, die den ADDIEREN-Befehl ausführt, daß das Ergebnis auf dem Ergebnisrückführdatenpfad 16 rückgeführt wird, und veranlaßt einen Bypass des Ergebnisses an sich selbst. Die Einheit, die den SP-Befehl ausführt, beobachtet den Ergebnisrückführdatenpfad 16 nicht und stellt deshalb nicht fest, daß ein Ergebnis an R1 rückgeführt wird. Später, wenn der VERSCHIEBEN-Befehl sein Ergebnis auf dem Ergebnisrückführdatenpfad 26 rückführt, sieht die Einheit, die den SP-Befehl ausführt, dieses Ergebnis und veranlaßt einen Bypass desselben an sich selbst.
  • Bei einem anderen möglichen Szenario kann der VERSCHIEBEN-Befehl sein Ergebnis vor dem LADEN-Befehl rückführen. In diesem Fall sieht die Einheit, die den SP-Befehl ausführt, das Ergebnis, da es auf dem Ergebnisrückführdatenpfad 26 rückgeführt wird, und die Einheit, die den ADDIEREN-Befehl ausführt, sieht das Ergebnis nicht, da es sich nicht auf dem Ergebnisrückführdatenpfad 16 befindet. Deswegen veranlaßt die Einheit, die den SP-Befehl ausführt, einen Bypass des Ergebnisses an sich selbst, und nicht die Einheit, die den ADDIEREN-Befehl ausführt. Später, wenn der LADEN-Befehl (von der Reihenfolge abweichend) sein Ergebnis über den Ergebnisrückführdatenpfad 16 rückführt, sieht die Einheit, die den ADDIEREN-Befehl ausführt, das Ergebnis und veranlaßt einen Bypass desselben an sich selbst.
  • Bei beiden Szenarien werden durch die Verwendung der Ergebnisrückführdatenpfadinformation in Kombination mit der Registeradresse jeder Operation die richtigen Eingabewerte zur Verfügung gestellt. Dies wäre auch beim dritten möglichen Szenario der Fall, bei welchem beide Ergebnisse gleichzeitig rückgeführt werden.
  • Ein von der Reihenfolge abweichendes Rückführen von Ergebnissen an das Registerfile selbst (im Gegensatz zum Rückführen an die Bypass-Mechanismen), kann durch eine Anzahl von Mechanismen bewerkstelligt werden, abhängig von den Erfordernissen der Befehlssatzarchitektur. Speicher, die die Reihenfolge wiederherstellen, sind nur eine mögliche Lösung. Sie speichern die von der Reihenfolge abweichenden Ergebnisse, bis alle Befehle, die vor demjenigen ausgegeben wurden, der das Ergebnis erzeugt hat, ihre Ergebnisse rückgeführt haben. Dieser Mechanismus stellt die Reihenfolge der von der Reihenfolge abweichenden Ergebnisse wieder her, so daß sie in der ursprünglichen Programmreihenfolge in das Registerfile geschrieben werden. Einige Architekturen können jedoch die vorliegende Erfindung ausnützen, um den Vorgang zu vereinfachen, mit dem Ergebnisse in das Registerfile geschrieben werden.
  • Wenn ein Prozessor dafür garantieren kann, daß alle Befehle, sobald sie ausgegeben wurden, ein Ergebnis rückführen, kann ein Ergebnis, das an das Registerfile rückgeführt wird, gelöscht werden (anstatt in das vorgesehene Register geschrieben zu werden), wenn es einen weiteren Befehl gibt, der nach demjenigen ausgegeben wurde, der dieses Ergebnis erzeugt hat, der ein Ergebnis an das gleiche Register rückführen wird oder bereits rückgeführt hat. Dies ist der Fall, weil sämtliche, bereits ausgegebenen Befehle, die dieses spezielle Ergebnis benötigten, es durch den Bypass-Mechanismus erhalten haben, und da sämtliche Befehle, die noch nicht ausgegeben wurden, dieses Ergebnis nicht benötigen, sondern statt dessen das Ergebnis benötigen, das von dem darauffolgenden Befehl erzeugt wird, der bereits ausgegeben wurde. Wenn dies der Fall ist, kann die Information in den Kennzeichenbits verwendet werden, um das Schreiben in das Registerfile zu steuern. Für jedes Register enthalten die Kennzeichenbits entweder den Ergebnisrückführdatenpfad, den der zuletzt ausgegebene Befehl, der ein Ergebnis zu diesem Register zurückführt, verwenden wird, oder es wird angezeigt, daß der zuletzt ausgegebene Befehl, der ein Ergebnis an dieses Register rückführt, die Ausführung beendet hat und sein Ergebnis rückgeführt hat. In jedem Fall kann ein Ergebnis, das rückgeführt wird und nicht mit den Erwartungen der Kennzeichenbits übereinstimmt, nur von einem Befehl stammen, der vor dem letzten Befehl ausgegeben wurde, der einen Wert an dieses Register rückführt oder rückgeführt hat. Deswegen kann das rückgeführte Ergebnis sicher ignoriert werden.
  • Wenn dieser Mechanismus zum Steuern des Schreibens von Ergebnissen in das Registerfile verwendet wird, wird bei dem in Tabelle 2a dargestellten Beispiel, unter der Annahme, daß der VERSCHIEBEN-Befehl ausgegeben wird, bevor der LADEN-Befehl sein Ergebnis rückführt, ungeachtet dessen, ob der LADEN-Befehl seinen Befehl rückführt, bevor oder nachdem der VERSCHIEBEN-Befehl sein Ergebnis rückführt, das Ergebnis des LADEN-Befehls nicht in R1 geschrieben. Dies ist der Fall, da die Kennzeichenbits anzeigen, daß das aktuellste Ergebnis für R1 auf dem Ergebnisrückführdatenpfad 26 ankommen wird und nicht auf dem Ergebnisrückführdatenpfad 16, den der LADEN-Befehl zum Rückführen seines Ergebnisses verwendet. Der ADDIEREN-Befehl wird dennoch über den vorher beschriebenen Bypass-Mechanismus den richtigen Wert empfangen.
  • 4 ist ein Blockdiagramm der Schaltung von 3, die so modifiziert wurde, daß sie Schreib-nach-Schreib(WAW)-Fehler behandeln kann, und enthält einen Sp-Speicher 122 und einen regadr-Speicher 120, die die benötigte Information über die Quelle der Eingabe speichern. Die Figur zeigt nur die Bypass-Steuerlogik für einen MUX 12. Es wird eine identische Schaltung verwendet, um einen MUX 14 zu steuern. Die Ausführungseinheit 10 hat die Fähigkeit, die Eingabe, die sie vom MUX 12 und MUX 14 empfängt, zu speichern, wenn die zu jedem zugeordnete "Operand-bereit"-Anzeige einen wahren Wert hat. Sie muß auch die auszuführende Operation speichern, wenn diese Operation an sie ausgegeben wird. Wenn die Ausführungseinheit 10 alle Eingaben empfangen und gespeichert hat, die für die ausgegebene Operation benötigt werden, führt sie die gespeicherte Operation aus und führt das Ergebnis über den Ergebnisrückführdatenpfad 16 zurück.
  • Wenn ein auszuführender Befehl an die Ausführungseinheit 10 ausgegeben wird, werden die folgenden Operationen durchgeführt:
    • 1. Die Ausführungseinheit 10 speichert den auszuführenden Befehl.
    • 2. Die Bypass-Steuerschaltung 80 speichert die Registeradresse und den Zugriffspfadspezifizierer für den Operanden, der über den MUX 12 zugeführt wird. Der Zugriffspfadspezifizierer wird aus der Information in dem Scoreboard/Rückführpfadanzeiger 100 abgeleitet und zeigt an, daß der Operand entweder vom Registerfile 104, vom Ergebnisrückführdatenpfad 16 oder vom Ergebnisrückführdatenpfad 26 erhalten wird.
    • 3. Die Bypass-Steuerschaltung für den MUX 14 (nicht gezeigt), die in einem Ausführungsbeispiel der Erfindung identisch mit der Bypass-Steuerschaltung 80, die den MUX 12 steuert, ist, speichert die Registeradresse und den Zugriffspfadspezifizierer für den Operanden, der durch den MUX 14 zugeführt wird.
  • Die Bypass-Steuerschaltung 80 funktioniert dann auf eine der folgenden drei, sich gegenseitig ausschließenden Weisen:
    • 1. Wenn der in dem Sp-Speicher 122 gespeicherte Zugriffspfadspezifizierer anzeigt, daß das Ergebnis aus dem Registerfile 104 erhalten werden muß, wird der MUX 12 so gesteuert, daß der Wert am Eingang, welcher an das Registerfile 104 angeschlossen ist, am Ausgang des MUX 12 anliegt. Nachdem dies erreicht wurde, veranlaßt das Aktivieren der "Operand-bereit"-Anzeige die Ausführungseinheit 10, den Wert des Eingangs zu speichern, der an den Ausgang des MUX 12 angeschlossen ist.
    • 2. Wenn der in dem Sp-Speicher 122 gespeicherte Zugriffspfadspezifizierer anzeigt, daß der Operand von dem Ergebnisrückführdatenpfad 16 erhalten wird, wird der MUX 86 so gesteuert, daß die Ergebnisrückführdatenpfad 16 – Registeradresse an seinem Ausgang anliegt und deshalb an einem der Eingänge des Komparators 88. Der Adressdekodierer 94 erzeugt an dem an das AND-Gatter 90 angeschlossenen Ausgang einen wahren Wert, und an dem an das AND-Gatter 92 angeschlossenen Ausgang einen falschen Wert. Wenn der Ergebnisrückführdatenpfad 16 den in ein Register zu schreibenden Wert enthält, erscheint die Adresse dieses Registers auf dem Registeradressen-Ergebnisrückführdatenpfad 16. Wenn diese gleich ist mit der in dem regadr-Speicher 120 gespeicherten Registeradresse, erhält die Ausgabe des Komparators 88 einen wahren Wert. Dies führt dazu, daß die Ausgabe des AND-Gatters 90 einen wahren Wert erhält, da seine beiden Eingaben einen wahren Wert haben. Die Tatsache, daß die Ausgabe des AND-Gatters 90 einen wahren Wert hat, führt dazu, daß der MUX 12 so gesteuert wird, daß der Wert auf dem Ergebnisrückführdatenpfad 16 an den Ausgang des MUX 12 geleitet wird. Die Tatsache, daß die Ausgabe des AND-Gatters 90 ebenfalls einen wahren Wert hat, führt dazu, daß die "Operand-bereit"-Anzeige einen wahren wert erhält. Dies führt dazu, daß die Ausführungseinheit 10 den Wert speichert, der vom MUX 12 ausgegeben wird.
    • 3. Wenn der in dem Sp-Speicher 122 gespeicherte Zugriffspfadspezifizierer anzeigt, daß der Operand von dem Ergebnisrückführdatenpfad 26 erhalten wird, wird der MUX 86 so gesteuert, daß die Registeradresse des Ergebnisrückführdatenpfads 26 an seinem Ausgang anliegt und deshalb an einem der Eingänge des Komparators 88. Der Adressdekodierer 94 erzeugt an dem Ausgang, der an das AND-Gatter 92 angeschlossen ist, einen wahren Wert, und einen falschen Wert an dem Ausgang, der an das AND-Gatter 90 angeschlossen ist. Wenn der Er gebnisrückführdatenpfad 26 den in ein Register zu schreibenden Wert enthält, erscheint die Adresse dieses Registers auf dem Registeradressen-Ergebnisrückführdatenpfad 26. Wenn diese gleich ist mit der in dem regadr-Speicher 120 gespeicherten Registeradresse, erhält die Ausgabe des Komparators 88 einen wahren Wert. Dies führt dazu, daß die Ausgabe des AND-Gatters 92 einen wahren Wert erhält, da seine beiden Eingaben einen wahren Wert haben. Die Tatsache, daß die Ausgabe des AND-Gatters 92 einen wahren Wert hat, führt dazu, daß der MUX 12 so gesteuert wird, daß der Wert auf dem Ergebnisrückführdatenpfad 26 an den Ausgang des MUX 12 geleitet wird. Die Tatsache, daß die Ausgabe des AND-Gatters 92 ebenfalls einen wahren Wert hat, führt dazu, daß die "Operand-bereit"-Anzeige einen wahren Wert erhält. Dies führt dazu, daß die Ausführungseinheit 10 den vom MUX 12 ausgegebenen Wert speichert.
  • Nachdem eine dieser drei Operationen durchgeführt wurde, hat die Ausführungseinheit 10 den korrekten Wert für den Operanden gespeichert, der vom MUX 12 erhalten wird. Bei einem Ausführungsbeispiel der Erfindung tritt ein identischer Vorgang in Bezug auf den Operanden auf, der vom MUX 14 erhalten werden soll. Wenn diese beiden Vorgänge beendet wurden, kann die Ausführungseinheit 10 den Befehl ausführen, der ausgegeben wurde.
  • Es sei angemerkt, daß beim Beschreiben der Arbeitsweisen des Systems nur eine beschränkte Anzahl von Ausführungseinheiten und weiterer Komponenten verwendet wurde. Jedoch kann das System skaliert werden, so daß eine unbeschränkte Anzahl von Ausführungseinheiten, Rückführpfaden und Komponenten verwendet werden kann. Es sei ebenfalls angemerkt, daß beim Beschreiben der Arbeitsweisen des Systems jedem Datenrückführpfad nur eine einzelne Ausführungseinheit zugeordnet war. Jedoch ermöglicht das System einer beliebigen Anzahl von Ausführungseinheiten, Daten auf dem gleichen Rückführpfad rückzuführen. Außerdem ermöglicht es, daß eine Ausführungseinheit auf mehreren Rückführpfaden Ergebnisse rückführt.
  • Während die Erfindung insbesondere unter Bezug auf die verschiedenen Figuren beschrieben wurde, ist zu verstehen, daß diese Figuren nur zur Veranschaulichung dienen und nicht so aufgefaßt werden sollen, daß sie den Schutzbereich der Erfindung beschränken. Der Fachmann kann bei der Erfindung viele Änderungen und Modifikationen vornehmen, ohne den Grundgedanken und den Schutzbereich der Erfindung zu verlassen. Ebenfalls ist verständlich, daß viele der Details des Timings und des Steuerschaltkreises, die benötigt werden, um eine vollständig funktionierende Ausgestaltung des erfindungsgemäßen Systems zu schaffen, nicht im Detail beschrieben werden. Ein solches kann vom Fachmann komplett aufgebaut werden, ohne vom Grundgedanken und Schutzbereich der Erfindung abzuweichen.

Claims (10)

  1. Prozessor, mit: a) einem Satz von Registern in einem Registerfile (104) a.1) das einen Scoreboard/Ergebnispfadanzeiger (100) mit mindestens einem Kennzeichenbit und Rückführpfad-Bits aufweist, der zusätzlich Informationen über den Status jedes Registers speichert, a.2) wobei das mindestens eine Kennzeichenbit anzeigt, ob ein zugeordneter Operand in einem Register gültig ist, a.3) wobei Rückführpfad-Bits einen Ergebnisrückführdatenpfad anzeigen, wenn der zugeordnete Operand in einem Register nicht gültig ist, b) wenigstens einer ersten und einer zweiten Ausführungseinheit (10, 20) mit je einem Ausgang und einem ersten Eingang, c) wobei die Ausgänge der ersten und der zweiten Ausführungseinheit (10; 20) über einen Satz von Rückführpfaden (16; 26) mit dem Registerfile (104) verbunden sind zum Rückführen von Ergebnissen von der ersten und der zweiten Ausführungseinheit zum Registerfile, d) einer ersten Schalteinheit (12) mit einem Ausgang, der an den ersten Eingang der ersten Ausführungseinheit (10) angeschlossen ist, und mehreren Eingängen, die an das Registerfile (104) und den Satz der Rückführpfade (16; 26) angeschlossen sind zum Bypassen von auf den Rückführpfaden (16; 26) rückgeführten Ergebnissen zum ersten Eingang der ersten Ausführungseinheit, und e) einer Bypass-Steuereinheit (80), die mit dem Scoreboard/Ergebnispfadanzeiger (100) und an die erste Schalteinheit (12) angeschlossen ist und der eine Operand-Registeradresse zugeführt wird, e.1) wobei die Bypass-Steuereinheit die Auswahl der Daten an einem Eingang der Schalteinheit (12), die an den Eingang der Ausführungseinheit (10) durchgeschaltet werden sollen in Abhängigkeit von dem mindestens einen Kennzeichenbits, den Rückführpfad-Bits und der Operand-Registeradresse so steuert, e.2) dass, wenn das mindestens eine Kennzeichenbit anzeigt, dass ein Operand in einem Register nicht gültig ist, und die Registeradresse auf dem von den Rückführpfad-Bits angezeigten Ergebnisrückführdatenpfad mit der Operand-Registeradresse übereinstimmt, der Wert auf dem angezeigten Ergebnisrückführdatenpfad an den Ausgang der Schalteinheit (12) weitergeleitet wird.
  2. Vorrichtung gemäß Anspruch 1, bei der der Satz Kennzeichenbits (100) und der Satz Rückführpfad-Bits (100) in einem Satz Kennzeichen-/Rückführpfad-Bits (100) enthalten ist.
  3. Vorrichtung gemäß Anspruch 1, bei der der Satz Kennzeichenbits (100) und der Satz Rückführpfad-Bits separate Bits sind.
  4. Vorrichtung gemäß einem der vorhergehenden Ansprüche, bei der die erste Bypass-Steuereinheit (80) aufweist: eine erste Rückführpfadadress-Schalteinheit (86) mit einem ersten Eingang zum Empfangen einer Adresse des von den Rückführpfad-Bits (100) angegebenen Rückführpfades (16), und einem Ausgang; einen Operand-Adresskomparator (88) mit einem ersten Eingang, der an den Ausgang der ersten Rückführpfadadress-Schalteinheit (86) angeschlossen ist, und einem Ausgang; eine Ausgangsschaltung (82, 90, 92, 94) mit einem Eingang, der an den Ausgang des Operand-Adresskomparators (88) angeschlossen ist; wobei die erste Rückführpfadadress-Schalteinheit (86), basierend auf dem Satz Rückführpfad-Bits (100) entweder die Adresse des von den Rückführpfad-Bits (100) angegebenen Rückführpfades (16) oder eine Adresse eines weiteren Rückführpfades (26) unter dem Satz Rückführpfade (16; 26) an den ersten Eingang des Operand-Adresskomparators (88) ausgibt, und wobei der Operand-Adresskomparator (88) ein Übereinstimmungssignal ausgibt, wenn die Adresse des von den Rückführpfad-Bits (100) angegebenen Rückführpfades (16) mit einer ersten Operand-Adresse übereinstimmt.
  5. Vorrichtung gemäß Anspruch 4, bei der die Ausgangsschaltung aufweist: ein erstes UND-Gatter (82), das so angeschlossen ist, daß es einen inversen Wert jedes Kennzeichenbits in dem Satz Kennzeichenbits (100) empfängt; einen Adressdekodierer (94), der so angeschlossen ist, daß er den Satz Rückführpfad-Bits (100) empfängt; ein zweites UND-Gatter (90), das an den Adressdekodierer (94) und an den Operand-Adresskomparator (88) angeschlossen ist; wobei das erste UND-Gatter (82) ein Registerfileauswahlsignal ausgibt, wenn jedes Kennzeichenbit des Satzes Kennzeichenbits (100) logisch null ist, und wobei das zweite UND-Gatter (90) ein Auswahlsignal ausgibt, wenn der Adressdekodierer (94) und der Operand-Adresskomparator (88) beide eine logische eins an das zweite UND-Gatter (90) anlegen.
  6. Vorrichtung gemäß einem der vorhergehenden Ansprüche, die ferner folgendes aufweist: eine zweite Schalteinheit (14) mit einem Ausgang, der an einen zweiten Eingang der ersten Ausführungseinheit (10) angeschlossen ist, und mehreren Eingängen, die an den Satz Datenspeichereinheiten (104) und den Satz Rückführpfade (16; 26) angeschlossen sind, zum Bypassen von auf den Rückführpfaden (16, 26) rückgeführten Ergebnissen zum zweiten Eingang der ersten Ausführungseinheit (12); und eine zweite Bypass-Steuereinheit, die an die zweite Schalteinheit (14) angeschlossen ist, wobei die zweite Bypass-Steuereinheit so ausgestaltet ist, daß sie, basierend auf dem Satz Kennzeichenbits (100) und dem Satz Rückführpfad-Bits (100), die zweite Schalteinheit (14) veranlaßt, ein Ergebnis, das auf einem von den Rückführpfad-Bits (100) angegebenem Rückführ pfad (16; 26) rückgeführt wird, zum zweiten Eingang der ersten Ausführungseinheit (10) zu bypassen.
  7. Vorrichtung gemäß einem der Ansprüche 4 bis 6, die außerdem eine Operand-bereit-Anzeigeschaltung (102) aufweist, die an das erste UND-Gatter (82), das zweite UND-Gatter (90) und das dritte UND-Gatter (92) angeschlossen ist, das an den Adreßdecodierer (94) und den Operand-Adreßkomparator (88) angeschlossen ist.
  8. Vorrichtung gemäß Anspruch 7, bei der die Operandbereit-Anzeigeschaltung (102) ein ODER-Gatter ist.
  9. Vorrichtung gemäß einem der vorhergehenden Ansprüche, bei der die erste Ausführungseinheit (10) außerdem eine Operand-Speicherstelle aufweist, die an den ersten Eingang der ersten Ausführungseinheit (10) angeschlossen ist.
  10. Vorrichtung nach einem der vorhergehenden Ansprüche, bei der die erste Ausführungseinheit (10) außerdem eine Operationsspeicherstelle zum Speichern einer auszuführenden Operation aufweist.
DE19983098T 1998-04-03 1999-03-31 Mehrfach-Bitanzeige zur Behandlung von Schreib-nach-Schreib-Fehlern und zur Eliminierung von Bypass-Komparatoren Expired - Lifetime DE19983098B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/055,039 1998-04-03
US09/055,039 US6266766B1 (en) 1998-04-03 1998-04-03 Method and apparatus for increasing throughput when accessing registers by using multi-bit scoreboarding with a bypass control unit
PCT/US1999/007190 WO1999052030A1 (en) 1998-04-03 1999-03-31 Multi-bit scoreboarding to handle write-after-write hazards and eliminate bypass comparators

Publications (2)

Publication Number Publication Date
DE19983098T1 DE19983098T1 (de) 2001-04-26
DE19983098B4 true DE19983098B4 (de) 2005-03-17

Family

ID=21995172

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19983098T Expired - Lifetime DE19983098B4 (de) 1998-04-03 1999-03-31 Mehrfach-Bitanzeige zur Behandlung von Schreib-nach-Schreib-Fehlern und zur Eliminierung von Bypass-Komparatoren

Country Status (4)

Country Link
US (2) US6266766B1 (de)
AU (1) AU3462999A (de)
DE (1) DE19983098B4 (de)
WO (1) WO1999052030A1 (de)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3445535B2 (ja) * 1999-09-24 2003-09-08 株式会社東芝 バイパス制御回路
US6643762B1 (en) * 2000-01-24 2003-11-04 Hewlett-Packard Development Company, L.P. Processing system and method utilizing a scoreboard to detect data hazards between instructions of computer programs
EP1124181B8 (de) * 2000-02-09 2012-03-21 Texas Instruments Incorporated Datenverarbeitungsvorrichtung
EP1208423A2 (de) * 2000-03-10 2002-05-29 Koninklijke Philips Electronics N.V. Verfahren um ein programm zu kompilieren
US20030222134A1 (en) * 2001-02-17 2003-12-04 Boyd John E Electronic advertising device and method of using the same
US6981130B2 (en) * 2001-09-25 2005-12-27 Texas Instruments Incorporated Forwarding the results of operations to dependent instructions more quickly via multiplexers working in parallel
US7062592B2 (en) * 2002-03-25 2006-06-13 Intel Corporation Selecting a queue for service in a queuing system
US20030229844A1 (en) * 2002-03-25 2003-12-11 Akash Bansal Graceful degradation of serial channels
US7131011B2 (en) 2002-10-30 2006-10-31 Microsoft Corporation System and method for preserving state data of a personal computer in a standby state in the event of an AC power failure
US20040128482A1 (en) * 2002-12-26 2004-07-01 Sheaffer Gad S. Eliminating register reads and writes in a scheduled instruction cache
US7324537B2 (en) * 2003-07-18 2008-01-29 Intel Corporation Switching device with asymmetric port speeds
US7080168B2 (en) * 2003-07-18 2006-07-18 Intel Corporation Maintaining aggregate data counts for flow controllable queues
US20050013251A1 (en) * 2003-07-18 2005-01-20 Hsuan-Wen Wang Flow control hub having scoreboard memory
US7570654B2 (en) * 2003-12-22 2009-08-04 Intel Corporation Switching device utilizing requests indicating cumulative amount of data
US7623524B2 (en) * 2003-12-22 2009-11-24 Intel Corporation Scheduling system utilizing pointer perturbation mechanism to improve efficiency
US7324541B2 (en) * 2003-12-22 2008-01-29 Intel Corporation Switching device utilizing internal priority assignments
US20050207436A1 (en) * 2004-03-18 2005-09-22 Anujan Varma Switching device based on aggregation of packets
US7730282B2 (en) * 2004-08-11 2010-06-01 International Business Machines Corporation Method and apparatus for avoiding data dependency hazards in a microprocessor pipeline architecture using a multi-bit age vector
US20080159145A1 (en) * 2006-12-29 2008-07-03 Raman Muthukrishnan Weighted bandwidth switching device
US11455171B2 (en) * 2019-05-29 2022-09-27 Gray Research LLC Multiported parity scoreboard circuit

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19506990A1 (de) * 1994-03-01 1995-09-07 Intel Corp Einrichtung zur Datenumleitung in einem Prozessor mit mehreren Ausführungseinheiten
US5699537A (en) * 1995-12-22 1997-12-16 Intel Corporation Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5682493A (en) * 1993-10-21 1997-10-28 Sun Microsystems, Inc. Scoreboard table for a counterflow pipeline processor with instruction packages and result packages
US5590352A (en) * 1994-04-26 1996-12-31 Advanced Micro Devices, Inc. Dependency checking and forwarding of variable width operands
US5634026A (en) * 1995-05-12 1997-05-27 International Business Machines Corporation Source identifier for result forwarding
US5974538A (en) * 1997-02-21 1999-10-26 Wilmot, Ii; Richard Byron Method and apparatus for annotating operands in a computer system with source instruction identifiers
JP3449186B2 (ja) * 1997-08-19 2003-09-22 富士通株式会社 パイプラインバイパス機能を有するデータ処理装置
US5872986A (en) * 1997-09-30 1999-02-16 Intel Corporation Pre-arbitrated bypassing in a speculative execution microprocessor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19506990A1 (de) * 1994-03-01 1995-09-07 Intel Corp Einrichtung zur Datenumleitung in einem Prozessor mit mehreren Ausführungseinheiten
US5699537A (en) * 1995-12-22 1997-12-16 Intel Corporation Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions

Also Published As

Publication number Publication date
DE19983098T1 (de) 2001-04-26
US6266766B1 (en) 2001-07-24
AU3462999A (en) 1999-10-25
WO1999052030A1 (en) 1999-10-14
US6408378B2 (en) 2002-06-18
US20010034825A1 (en) 2001-10-25

Similar Documents

Publication Publication Date Title
DE19983098B4 (de) Mehrfach-Bitanzeige zur Behandlung von Schreib-nach-Schreib-Fehlern und zur Eliminierung von Bypass-Komparatoren
DE2714805C2 (de)
DE69330889T2 (de) System und Verfahren zur Änderung der Namen von Registern
DE3210816C2 (de)
DE69624158T2 (de) Superskalarer Prozessor mit mehreren Registerblöcken und Erzeugung von spekulativen Antwortadressen
DE3587277T2 (de) System fuer die umgehungssteuerung beim pipelinebetrieb eines computers.
DE69429226T2 (de) Absendung von Befehlen an mehrere Verarbeitungseinheiten
DE69129569T2 (de) Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen
DE69311330T2 (de) Befehlsablauffolgeplanung von einem risc-superskalarprozessor
DE2704842C2 (de) Im Pipeline-Betrieb arbeitende Datenverarbeitungseinrichtung
DE68927371T2 (de) Verfahren und Vorrichtung zur Verarbeitung von mehreren Zustandscodes wie für einen Parallel-Pipeline-Rechner
DE69623146T2 (de) Verfahren und Vorrichtung zum Koordinieren der Benutzung von physikalischen Registern in einem Mikroprozessor
DE69321929T2 (de) Verfahren und System um einen unabhängige Zugriff auf Zwischenspeicherpuffern in einem superskalaren Prozessorsystem zu gewährleisten.
DE69030931T2 (de) Mehrfachsequenzprozessorsystem
DE69418146T2 (de) Temporärer Registersatz für einen superpipeline-superskalaren Prozessor
DE69027932T2 (de) Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen
DE2614000A1 (de) Einrichtung zur diagnose von funktionseinheiten
DE3116100A1 (de) Sprungabschaetz-zentraleinheit
DE4302495A1 (de)
DE4207148A1 (de) Superscalar-prozessor
DE3900248C2 (de) Verfahren zur schnellen Ablaufsteuerung digitaler Testmuster und Vorrichtung zur Durchführung des Verfahrens
DE1549474C3 (de) Anordnung In einer elektronischen digitalen Datenverarbeitungsanlage zur Ausführung eines ersten Befehls und gleichzeitigen Decodierung eines folgenden Befehls
DE68924883T2 (de) Mikroprozessor mit Befehlspipeline.
DE3620982A1 (de) Ein-befehl, mehrfach-datenstrom (simd) computersystem
DE2611975A1 (de) Dv-system mit einer einrichtung zur zuordnung von prozessen zu einem prozessor auf einer prioritaetsbasis

Legal Events

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

Owner name: MARVELL WORLD TRADE LTD., ST. MICHAEL, BB

R071 Expiry of right