DE112004001040B4 - Verfahren und Datenprozessor mit reduzierter Operationsunterbrechung auf Grund von Operanden-Abhängigkeiten - Google Patents

Verfahren und Datenprozessor mit reduzierter Operationsunterbrechung auf Grund von Operanden-Abhängigkeiten Download PDF

Info

Publication number
DE112004001040B4
DE112004001040B4 DE112004001040T DE112004001040T DE112004001040B4 DE 112004001040 B4 DE112004001040 B4 DE 112004001040B4 DE 112004001040 T DE112004001040 T DE 112004001040T DE 112004001040 T DE112004001040 T DE 112004001040T DE 112004001040 B4 DE112004001040 B4 DE 112004001040B4
Authority
DE
Germany
Prior art keywords
instruction
register
operand
field
identifier
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
DE112004001040T
Other languages
English (en)
Other versions
DE112004001040T5 (de
Inventor
Stephen Charles Kromer
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of DE112004001040T5 publication Critical patent/DE112004001040T5/de
Application granted granted Critical
Publication of DE112004001040B4 publication Critical patent/DE112004001040B4/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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
    • 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/30181Instruction operation extension or modification
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3875Pipelining a single stage, e.g. superpipelining

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

Ein Datenprozessor (200) besitzt eine Ausführungseinheit mit Pipelinestruktur (120). Es wird bestimmt, ob eine erste Anweisung eine aus einer Klasse aus Anweisungen ist, in denen als ein Ergebnis des Ausführens der ersten Anweisung der Inhalt eines Operandenregisters in einem Zielregister gespeichert wird. Eine zweite Anweisung, die das Zielregister referenziert, wird vor dem Ende des Ausführens der ersten Anweisung empfangen. Die zweite Anweisung wird ausgeführt unter Anwendung des Inhalts des Operandenregisters, ohne dass die zweite Anweisung in der Ausführungseinheit mit Pipelinestruktur (120) unterbrochen wird.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Erfindung betrifft im Allgemeinen Datenprozessoren und betrifft insbesondere Datenprozessoren mit Pipeline-Verarbeitung.
  • HINTERGRUND DER ERFINDUNG
  • Einige Datenprozessoren wenden eine Technik an, die als Pipeline-Verarbeitung bekannt ist, um eine höhere Leistungsfähigkeit zu erreichen. Die Pipeline-Verarbeitung ist ein Verfahren, in welchem die Instruktionsabarbeitungsaufgabe in kleinere modulare Teilaufgaben unterteilt wird, wovon jede in einer speziellen nicht unterteilbaren Zeitdauer, die als Pipeline-Zyklus bekannt ist, ausgeführt wird. Durch Unterteilen dieser Aufgabe in diese kleineren Zyklen können Datenprozessoren beispielsweise eine einzelne Anweisung abholen, während eine weitere ausgeführt wird und während die Ergebnisse einer dritten Anweisung in die Registerdatei geschrieben werden. Obwohl daher einzelne Instruktionen einige Zyklen zur Bearbeitung erfordern, kann der Gesamtdurchsatz sich einer Anweisung pro Pipeline-Zyklus annähern.
  • Moderne Mikroprozessoren besitzen aufwendigere Pipeline-Architekturen als dieses dreistufige Beispiel. Beispielsweise kann eine fünfstufige Pipeline das Abholen, Decodieren, den Operandenzugriff, das Ausführen und das Zurückschreiben als Stufen aufweisen. Je länger die Pipeline ist, um so komplizierter kann die Datenverarbeitungsanweisung sein, wobei dennoch der Durchsatz näherungsweise bei einer Anweisung pro Zyklus gehalten wird.
  • Ein Problem taucht jedoch auf, wenn gewisse Sequenzen aus Instruktionen auftreten. Eine spezielle Sequenz aus Instruktionen kann eine sogenannte Pipeline-Abhängigkeit hervorrufen. Eine Art der Pipeline-Abhängigkeit, die als Operandenabhängigkeit bekannt ist, tritt auf, wenn eine Instruktion nicht ausgeführt werden kann, bis das Ergebnis des Ausführens einer vorhergehenden Anweisung verfügbar ist. Es sei beispielsweise die Instruktionssequenz angenommen:
    ADD R2, R0, R1
    ADD R3, R1, R2,
    in der das erste Register das Ziel des Ergebnisses und das zweite und das dritte Register die Eingangsoperanden speichern. Da R2 das Zielregister der ersten ADD-Anweisung ist, hängt das Ausführen der zweiten ADD-Anweisung von dem Ergebnis der ersten ADD-Anweisung ab und kann nicht durchgeführt werden, bis die Ergebnisse der ersten ADD-Instruktion bekannt sind.
  • Eine weitere Art der Abhängigkeit ist als eine Ladeabhängigkeit bekannt. Es sei beispielsweise die Instruktionssequenz angenommen:
    MOV R0, (R1)
    ADD R3, R0, R2
  • In dieser Sequenz lädt die erste Anweisung das Register R0 mit den Inhalten der Speicherstelle, auf die durch die im Register R1 gespeicherte Adresse gezeigt wird. Offensichtlich hängt die korrekte Abarbeitung der ADD-Instruktion von der Verfügbarkeit des neuen Wertes des Registers R0 ab.
  • Mike Johnson et al. offenbaren im US-Patent 4,734,852 ein Verfahren, in welchem ein Umgehungspfad angewendet werden kann, um die Ergebnisse einer früheren Speicherladeoperation an eine nachfolgende Instruktion bzw. Anweisung weiterzuleiten, ohne dass das Ergebnis zunächst in das Zielregister in der Registerdatei geschrieben werden muss und dann aus der Registerdatei gelesen werden muss. Somit ist der neue Registerwert wesentlich früher verfügbar und die Pipeline-Unterbrechungszeit nach einer Ladeabhängigkeit kann minimiert werden.
  • Jedoch würde dies in einigen Datenprozessoren, die eine Pipeline-Struktur mit tiefer Verschachtelung aufweisen, einen hohen zusätzlichen Schaltungsaufwand erfordern, um Umgehungspfade für jede Pipeline-Stufe hinzuzufügen, die Ergebnisse zur Einspeisung der Pipeline erzeugt, um unmittelbare Ergebnisse weiterzuleiten, so dass neue Anweisungen früher ausgegeben werden können. Dies gilt insbesondere bei Gleitkommaausführungseinheiten, in denen der Operand beispielsweise 74 Bit lang sein kann. Ferner sind einige Ergebnisse einfach nicht verfügbar bis die Anweisung das Ende der Pipeline erreicht hat.
  • Friendly, Daniel [et al.]: Putting the fill unit to work: dynamic optimizations for trace cache microprocessors. Proceedings of the 31st annual ACM/IEEE International Symposium an Microarchitecture. Dallas, Texas, United States: IEEE Computer Society Press, 1998. S. 173–181. – ISBN 1-58113-016-3: offenbart Verfahren zum Reduzieren der Anzahl der abhängigen Befehlsketten in Trace-Speichern.
  • Jacobson, Q.; Smith, J. E.: Instruction pre-processing in trace processors. Fifth International Symposium an High-Performance Computer Architecture, 1999. Proceedings. Orlando, FL, USA: IEEE Computer Society Press, 1999. S. 125–129. – ISBN 0-7695-0004-8: offenbart ähnliche Verfahren zum Umwandeln von abhängigen Befehlsketten in Einzelbefehle, die in Trace-Speichern abgelegt werden.
  • Patel, S. J.; Lumetta, S. S.: rePLay: A Hardware Framework for Dynamic Optimization. In: Computers, IEEE Transactions an Computers, Vol. 50, No. 6, 2001. S. 590–608. – ISSN 0018-9340: offenbart Optimierungsverfahren für abhängige Befehlsketten, die in Frame-Speichern, die, abgesehen von der Befehlsequenzlänge, wie Trace-Speicher arbeiten, abgelegt werden.
  • Es ist daher die Aufgabe der vorliegenden Erfindung, zusätzliche Gelegenheiten vorteilhaft zur Reduzierung des negativen Einflusses von Abhängigkeiten auszunutzen, ohne zusätzliche all zu große Schaltungsfläche hinzuzufügen.
  • Die Aufgabe der vorliegenden Erfindung wird durch das Verfahren nach Anspruch 1 oder 5 oder durch die Vorrichtung nach Anspruch 8 gelöst.
  • Diese und weitere wünschenswerte Merkmale und Eigenschaften der vorliegenden Erfindung gehen aus der nachfolgenden detaillierten Beschreibung sowie den angefügten Patentansprüchen hervor, wenn diese im Zusammenhang mit den begleitenden Zeichnungen und dem vorhergehenden technischen Gebiet und der Einleitung studiert werden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Erfindung wird im Anschluss mit den folgenden Zeichnungen beschrieben, wobei gleiche Bezugszeichen gleiche Elemente bezeichnen, und
  • 1 eine Blockansicht einer Ausführungseinheit mit Pipeline-Struktur eines Datenprozessors gemäß dem Stand der Technik zeigt;
  • 2 eine Blockansicht einer Ausführungseinheit mit Pipeline-Struktur eines Datenprozessors gemäß der vorliegenden Erfindung zeigt; und
  • 3 eine Teilblockansicht und ein Teillogikdiagramm der Umlenklogikschaltung aus 2 zeigt.
  • BESTE ART BZW. ARTEN ZUM AUSFÜHREN DER ERFINDUNG
  • 1 zeigt eine Blockansicht einer Ausführungseinheit mit Pipeline-Struktur 100 eines bekannten Datenprozessors. Die Ausführungseinheit 100 ist eine Gleitkommaeinheit mit einer Addiereinheit 120, einer Multipliziereinheit 130 und einer Gleitkommaregisterdatei 150. Eine Ausgabelogikschaltung 110 ist für das Ausgeben von Anweisungen zu der Addiereinheit 120 und der Multipliziereinheit 130 verantwortlich. Im Allgemeinen enthalten Anweisungen, etwa die Anweisung 112, ein OP-Codefeld, das als „OP CODE” bezeichnet ist, eine erste Operandenregisterkennung, die als „Rs” benannt ist, eine zweite Operandenregisterkennung, die als „Rt” bezeichnet ist, und eine Zielregisterkennung, die als „Rd” bezeichnet ist. Für einige spezielle Anweisungen in dem Instruktionssatz kann das Rt-Feld fehlen oder es kann ein optionales Feld für einen unmittelbaren Operanden vorhanden sein, wobei diese anderen Anweisungen die Funktion des Umlenkmechanismus, der nachfolgend zu beschreiben ist, nicht beeinflussen und diese werden nicht weiter erläutert.
  • Die Ausführungseinheit 100 ist eine Einzelausgabe-Ausführungseinheit, so dass die Ausgabelogik 110 eine Anweisung pro Pipeline-Zyklus ausgibt und die Anweisung entweder der Addiereinheit 120 oder der Multipliziereinheit 130 entsprechend der Art der Anweisung zuführt. Die Addiereinheit 120 besitzt drei Pipeline-Stufen: eine Ausrichtstufe 122, eine Addierstufe 124 und eine Normierstufe 126. Die Multipliziereinheit 130 besitzt ebenso drei Stufen: eine Booth'sche Codierstufe 132, eine Mehrfach-Arraystufe 134 und eine letzte Addier- und Rundungsstufe 136.
  • Anweisungen, die an die Addiereinheit 120 oder die Multipliziereinheit 130 ausgegeben werden, laufen entlang ihrer entsprechenden Pipelineverbindungen und rücken um eine Stufe am Ende jedes Pipeline-Zyklusses weiter. Die Eingangsoperanden werden der ersten Stufe der ausgewählten Einheit in der folgenden Weise zugeführt. Die Rs und Rt Felder der Anweisung 112 werden von der Ausgabelogik 110 sowohl an eine Umleitschaltung 140 als auch an die Registerdatei 150 ausgegeben. Wenn es keine Operandenabhängigkeiten gibt, dann werden die Operanden Rs und Rt von der Registerdatei 150 über die Umleitschaltung 140 auf Busse 160 und 170 zurückgegeben. Wenn Operandenabhängigkeiten auf der Basis von Anweisungen vorhanden sind, die gerade in den letzten Pipelinestufen beendet werden, dann werden diese von der Umleitschaltung 140 empfangen und an die geeigneten Operandenbusse weitergegeben. Wenn es eine oder mehrere Abhängigkeiten zu vorhergehenden Anweisungen gibt, die noch nicht abgeschlossen sind, dann unterbricht die Ausgabelogik 110 das Ausgeben der neuen Anweisung, bis die vorhergehende Anweisung, von der die neuen Anweisungen abhängen, vollständig bearbeitet sind. Wenn in diesem Falle die vorhergehende Anweisung, die die Abhängigkeit hervorruft, vollständig abgeschlossen ist, laufen die Ergebnisse durch die Umleitschaltung 140 auf die Busse 160 und 170, so dass die unterbrochene neue Anweisung ausgegeben werden kann. Gleichzeitig schreibt die Umleitschaltung 140 den neuen Wert in die Registerdatei 150.
  • In Fällen, in denen eine Operandenabhängigkeit auf Grund einer Anweisung in einer der ersten beiden Pipeline-Stufen vorhanden ist, wird die Ausgabe der neuen Anweisung unterbrochen, bis die vorhergehende Anweisung abgeschlossen ist. Diese Unterbrechung führt dazu, dass die Hardware im Wartezustand ist und keine nutzbringenden Funktionen ausführt. Es wäre wünschenswert, die Anzahl an Ereignissen dieser Art des Unterbrechens zu reduzieren oder dies zu korrigieren, wenn eine entsprechende Situation auftritt.
  • Beispielsweise besitzt die Ausrichtstufe der Addiereinheit 120 Eingänge zum Empfangen der ersten und zweiten Operandenwerte über die Operandenbusse 160 und 170. Diese Werte, der OP-Code, die Zielregisterkennung Rd und diverse andere decodierte und teilweise decodierte Felder gehen zu den Pipelinestufen weiter. Wenn eine Anweisung über die Normierstufe 126 bearbeitet ist, wird diese einem Eingang der Umleitschaltung 140 zugeführt. Die Umleitschaltung 140 ist vorgesehen, um einen Weg zwischen den Ergebnissen einer vorhergehenden Anweisung und dem Eingang einer nachfolgenden Anweisung bereitzustellen, um damit einen Pipelinezyklus einzusparen, der ansonsten erforderlich wäre, um das Ergebnis in das Zielregister in der Registerdatei 150 zu schreiben und nachfolgend auszulesen.
  • 2 zeigt eine Blockansicht einer Ausführungseinheit mit Pipelinestruktur 200 eines Datenprozessors gemäß der vorliegenden Erfindung. Ebenso wie in 1 ist die Ausführungseinheit 200 eine Gleitkommaeinheit, könnte jedoch auch eine andere Art einer Ausführungseinheit sein, etwa eine Ganzzahleinheit, eine Vektoreinheit, etc. Die Ausführungseinheit 200 ist ähnlich zur Ausführungseinheit 100 aus 1 mit Ausnahme, dass sie eine Umlenklogikschaltung 210 aufweist, die in Verbindung mit weiteren Elementen der Ausführungseinheit 200 verhindert, dass eine Klasse an Anweisungen, die Operandenabhängigkeiten hervorrufen können, die Pipeline unterbrechen. Die Umlenklogikschaltung 210 erfasst mehrerer Arten an Anweisungen, die für gewöhnlich Registerabhängigkeiten hervorrufen würden, und korrigiert diese durch Austauschen von Registerkennungen, die das korrekte Ergebnis bereitstellen.
  • Die erste Art einer Anweisung ist eine Register-zu-Register-Ladeanweisung, die von einer weiteren Anweisung gefolgt wird, die das Zielregister der Register-zu-Register-Ladeanweisung als ein Operandenregister verwendet. Beispielsweise sei die Anweisungssequenz angenommen:
    MOV R1, R0
    ADD R3, R2, R1
    wobei die erste Anweisung eine Ladeoperation kennzeichnet, in der der Inhalt des Registers R0 in das Register R1 geladen wird, und die zweite Anweisung gibt eine Addieroperation an, in der der Inhalt von R1 zu dem Inhalt von R2 hinzuaddiert wird, wobei die Summe in das Register R3 geschrieben wird. In bekannten Systemen verursacht diese Sequenz eine Abhängigkeit, die verhindert, dass die ADD-Anweisung ausgegeben wird, bis die Ergebnisse der MOV-Anweisung entweder in der Registerdatei oder in der Umleitschaltung 140 verfügbar sind. Die Ausführungseinheit 200 führt die MOV-Anweisung tatsächlich aus, indem die Addiereinheit 120 verwendet wird, indem eine äquivalente Addieroperation durchgeführt wird, in der der Wert 0 für den zweiten Operanden verwendet wird. Somit müsste die zweite Anweisung normalerweise warten, bis die Normierstufe 126 das Ergebnis zu der Umleitschaltung 140 zuführt. Jedoch bewirkt in der Ausführungseinheit 200 die Umlenklogikschaltung 210, dass der Inhalt von R0 den Inhalt von R1 in der ADD-Anweisung ersetzt und die ADD-Anweisung wird unmittelbar ausgegeben, wobei der Inhalt von R0 als ein zweiter Operand verwendet wird. Somit wird die ADD-Anweisung in korrekter Weise ausgeführt.
  • Die zweite Art an Anweisungen ist eine ADD-Anweisung, in der einer der Operanden gleich Null ist, woran sich eine weitere Anweisung anschließt, die das Zielregister der ADD-Anwendung als Operandenregister verwendet. Beispielsweise sei die Anweisungssequenz betrachtet:
    ADD R2, R1, R0
    ADD R4, R3, R2
    wobei die erste ADD-Anweisung eine Addition kennzeichnet, in der der Inhalt des Registers R0 dem Inhalt des Registers R1 hinzugefügt wird, und wobei die Summe im Register R2 gespeichert wird, und die zweite ADD-Anweisung bezeichnet eine Addieroperation, in der der Inhalt von R2 zu dem Inhalt von R3 addiert wird und die Summe im Register R4 gespeichert wird. In bekannten Systemen verursacht diese Sequenz eine Abhängigkeit, die verhindert, dass die zweite Addier-Anweisung ausgegeben wird, bis nicht die Ergebnisse der ersten Addier-Anweisung verfügbar sind. In der Ausführungseinheit 200 bewirkt jedoch im Falle, dass R1 (R0) = 0 ist, die Umlenklogikschaltung 210, dass der Inhalt von R0 (R1) den Inhalt von R2 in der zweiten ADD-Anweisung ersetzt und die zweite ADD-Anweisung unmittelbar ausgegeben wird, wobei der Inhalt von R0 (R1) als zweiter Operand verwendet wird.
  • Die dritte Art an Anweisung ist eine Multiplikationsanweisung, in der einer der Operanden gleich 1 ist, woran sich eine weitere Anweisung anschließt, die das Zielregister der Multiplizieranweisung als ein Operandenregister verwendet. Beispielsweise sei die Anweisungssequenz betrachtet:
    MUL R2, R1, R0
    ADD R4, R3, R2
    wobei die erste Anweisung eine Multiplikation bezeichnet, in der der Inhalt des Register R0 mit dem Inhalt des Registers R1 multipliziert wird und das Produkt in dem Register R2 gespeichert wird, und wobei die zweite Anweisung eine Addieroperation angibt, in der der Inhalt des Registers R2 zu dem Inhalt des Registers R3 addiert und im Register R4 abgelegt wird. In bekannten Systemen bewirkt diese Sequenz eine Abhängigkeit, die verhindert, dass die ADD-Anweisung ausgegeben wird, bis nicht die Ergebnisse der MUL Anweisung verfügbar sind. Jedoch bewirkt in der Ausführungseinheit 200 in diesem Falle, wenn R1 (R0) = 1 ist, die Umlenklogikschaltung 210, dass der Inhalt von R0 (R1) an die Stelle des Inhalts von R2 in der ADD-Anweisung tritt und die ADD-Anweisung unmittelbar ausgegeben wird, wobei der Inhalt R0 (R1) als ein zweiter Operand verwendet wird.
  • In all diesen Instruktionssequenzen unterbrechen bekannte Ausführungseinheiten das Ausgeben der zweiten Anweisung, bis die Ergebnisse der ersten Anweisung für die Weiterleitung verfügbar sind. Die Ausführungseinheit 200 erkennt diese Bedingungen jedoch, um damit ein Register an die Stelle des Registers zu setzen, das eigentlich referenziert ist und ermöglicht es, dass die Anweisung unmittelbar ausgegeben wird. Ein Datenprozessor, der eine derartige Ausführungseinheit verwendet, bearbeitet einen gegebenen Codierungsabschnitt in weniger Zeit oder alternativ verlangt dem Compiler, der diese Anweisungen ausgibt, weniger Einschränkungen ab.
  • Die Ausführungseinheit 200 führt eine weitere Registerersetzung durch, um Pipeline-Unterbrechungen zu verhindern, indem gewisse andere Anweisungen erkannt werden, die durch Ersetzen eines referenzierten Registers mit einem Register durch Erzwingen einer Änderung im Vorzeichenbit des Ergebnisses ausgegeben werden können. Operanden in der Ausführungseinheit 200 werden in einem von zwei Formaten verarbeitet. Das erste Format ist ein IEEE-normiertes (32-Bit) Gleitkommaformat, in welchem eine Zahl durch ein Vorzeichenbit, 8 Exponentenbits und 23 Nachkommabits repräsentiert ist. Das zweite Format ist ein IEEE-Format (64-Bit) mit doppelter Genauigkeit, in welchem eine Zahl durch ein Vorzeichenbit, 11 Exponentenbits und 52 Nachkommabits repräsentiert ist. Da diese Zahlen ein explizites Vorzeichenbit aufweisen, kann bei R0 = 0 und wenn das Vorzeichenbit von R1 negativ ist, die zweite Anweisung in der Sequenz
    ADD R2, R1, R0
    ADD R4, R3, R2
    ausgegeben werden, indem R1 für den zweiten Operanden verwendet wird und das Vorzeichenbit des Ergebnisses auf 1 gesetzt wird, um eine negative Zahl anzuzeigen.
  • Durch dieses Merkmal wird ermöglicht, dass weitere Anweisungen in den Satz aus Anweisungen mit eingeschlossen werden, auf die die Umlenklogikschaltung 210 reagiert. Zu derartigen Anweisungen gehören ABS, das den Absolutwert einer Zahl nimmt, und NEG, das das Vorzeichen einer Zahl negiert bzw. ändert. Für diese beiden Anweisungen repräsentiert die Umlenklogikschaltung 210 einen Mechanismus, der den Wert des Vorzeichenbits ändert, wenn ein Operand nach Bedarf als Ersatz verwendet wird. Andere Anweisungen, für die die Umlenklogikschaltung 210 den Wert des Vorzeichenbits ändert, enthalten eine Subtraktionsanweisung, in der der Minuend (d. h. in dem Ausdruck A – B der Operand A) gleich 0 ist, und eine Multiplizieranweisung, in der jeder Operand gleich –1 ist. Eine Subtraktion, in der der Subtrahend (d. h. in dem Ausdruck A – B der Operand B) 0 ist, ist äquivalent zu einer „Addition mit 0”-Anweisung, und in diesem Falle ersetzt die Umlenklogikschaltung 210 den Zieloperanden durch den ersten Operanden, ohne dass das Vorzeichenbit geändert wird. Eine Multiplikation, in der ein Operand 0 ist, erzeugt ein Ergebnis 0, und in diesem Falle ersetzt die Umlenklogikschaltung 210 das Zielregister durch das 0-Operandenregister. Es können andere Anweisungen, die für den speziellen Instruktionssatz des Datenprozessors einzigartig sind, in den Satz aus Instruktionen, auf die die Umlenklogikschaltung 210 reagiert, gemäß den Prinzipien wie sie hierin beschrieben sind, mit eingebaut werden.
  • Einige Details der Implementierung des zuvor beschriebenen Mechanismus sind in 3 gezeigt, in der eine Teilblockansicht und ein Teillogikdiagramm der Umlenklogikschaltung 210 aus 2 dargestellt sind. Die Umlenklogikschaltung 210 umfasst im Allgemeinen eine Umlenkerkennungslogikschaltung 300, ein erstes Umlenkregister 310, ein zweites Umlenkregister 320, einen Satz aus Komparatoren 330 und einen Satz aus Multiplexern 340. Die Umlenkerkennungslogikschaltung 300 besitzt einen Eingang, der mit den Bussen 160 und 170 verbunden ist, und einen Ausgang. Die Funktion der Umlenklogikschaltung 300 liegt darin, jene Bedingungen zu erkennen, die für einen Registeraustausch in der zuvor beschriebenen Weise geeignet sind, und um einen Eintrag in das erste Umlenkregister 310 zu erzeugen, um eine Abhängigkeit einer nachfolgenden Anweisung zu erkennen und einen geeigneten Registeraustausch zu veranlassen. In der Ausführungseinheit 200 führen die Busse 160 und 170 nicht nur die Werte der Operanden Rs und Rt, die von der Umleitlogikschaltung zurückgegeben werden, sondern auch Signale, die von der Umleitlogikschaltung 140 decodiert werden, um diverse Zustände der Operanden anzuzeigen. Beispielsweise enthält die Umleitlogikschaltung 140 eine Hardware, um zu erkennen, wenn die Exponenten- und Nachkommastellenfelder einer Zahl gleich Null sind oder wenn das Exponentenfeld gleich einem vorbestimmten Wert ist, der verwendet wird, um den Wert von 1 in diesem Zahlenformat darzustellen. Beispielsweise ist im Allgemeinen ein Wert 0 dargestellt, wenn sowohl das Exponentenfeld als auch das Nachkammastellenfeld 0 sind. jedoch ermöglicht die Ausführungseinheit 200, dass die 0 dargestellt wird, wenn lediglich das Exponentenfeld gleich 0 ist, unabhängig von dem Wert des Nachkommastellenfeldes. Ein Wert 1 ist durch eine Zahl repräsentiert, die ein Nachkommastellenfeld mit 0 hat und ein Exponentenfeld, das seinen vorbestimmten Wert (127 für normales Format und 1023 für Format mit doppelter Genauigkeit) aufweist. Aus dieser Information in Verbindung mit dem OP Code-Feld kann die Umlenklogikschaltung 300 die Bedingungen für Addieren mit 0 und Multiplizieren mit 1 erkennen.
  • Das erste Umlenkregister 310 besitzt Eingänge zum Empfangen der Registerzuordnungsfelder Rs, Rt und Rd, einen Eingang, der mit dem Ausgang der Umlenkerkennungslogikschaltung 300 verbunden ist, und einen Ausgang. Das zweite Umlenkregister 320 besitzt einen Eingang, der mit dem Ausgang des Register 310 verbunden ist, und besitzt ferner drei Ausgänge. Jedes Umlenkregister besitzt die folgenden Felder: ein Vorzeichenbitfeld, das als „S” bezeichnet ist, ein Gültigkeitsbitfeld, das als „V” bezeichnet ist, ein Registerkennungsübereinstimmungsfeld, das mit „MATCH” bezeichnet ist, und ein Austauschfeld, das als „SUBST” bezeichnet ist. Der Ausgang des ersten Umlenkregisters 310 wird in das zweite Umlenkregister 320 synchron mit einem Taktsignal, das nicht gezeigt ist, verschoben, das das Weiterschalten der Pipeline anzeigt.
  • Der Satz aus Komparatoren 330 enthält vier Komparatoren 332, 334, 336 und 338. Der Komparator 332 besitzt einen ersten Eingang zum Empfangen des Registerzuordnungsfeldes Rs, einen zweiten Eingang, der mit dem MATCH-Feld des zweiten Umlenkregisters 320 verbunden ist, einen Steuereingang, der mit dem V-Feld des zweiten Umlenkregisters 320 verbunden ist, und einen Ausgang. Der Komparator 334 besitzt einen ersten Eingang zum Empfangen des Registerzuordnungsfeldes Rs, einen zweiten Eingang, der mit dem Ausgang des MATCH-Feldes des ersten Umlenkregisters 310 verbunden ist, einen Steuereingang, der mit dem V-Feld des ersten Umlenkregisters 310 verbunden ist, und einen Ausgang. Der Komparator 336 besitzt einen ersten Eingang zum Empfangen des Registerzuordnungsfeldes Rt, einen zweiten Eingang, der mit dem Ausgang des MATCH-Feldes des zweiten Umlenkregisters 320 verbunden ist, einen Steuereingang, der mit dem V-Feld des zweiten Umlenkregisters 320 verbunden ist, und einen Ausgang. Der Komparator 338 besitzt einen ersten Eingang zum Empfangen des Registerzuordnungsfeldes Rt, einen zweiten Eingang, der mit dem Ausgang des MATCH-Feldes des ersten Umlenkregisters 310 verbunden ist, einen Steuereingang, der mit dem V-Feld des ersten Umlenkregisters 310 verbunden ist, und einen Ausgang.
  • Jeder Komparator bestimmt, ob der Wert eines Operandenregisters einer vorhergehenden oder einer zweiten vorhergehenden Anweisung an die Stelle eines Operanden der aktuellen Anweisung treten soll. Somit erkennt der Komparator 332, ob die Zielregisterkennung Rd der zweiten vorhergehenden Anweisung mit der ersten Operandenregisterkennung Rs der aktuellen Anweisung übereinstimmt. Der Komparator 334 erkennt, ob die Zielregisterkennung Rd der zweiten vorhergehenden Anweisung mit der zweiten Operandenregisterkennung Rt der aktuellen Anweisung übereinstimmt. Der Komparator 336 erkennt, ob die Zielregisterkennung Rd der vorhergehenden Anweisung mit der ersten Operandenregisterkennung Rs der aktuellen Anweisung übereinstimmt. Der Komparator 338 erkennt, ob die Zielregisterkennung Rd der vorhergehenden Anweisung mit der zweiten Operandenregisterkennung Rt der aktuellen Anweisung übereinstimmt.
  • Der Satz aus Multiplexern 340 umfasst Multiplexer 342 und 344. Der Multiplexer 342 besitzt einen ersten Eingang zum Empfangen von Rs, einen zweiten Eingang, der mit dem SUBST-Feld des zweiten Umlenkregisters 320 verbunden ist, einen dritten Eingang, der mit dem SUBST-Feld des ersten Umlenkregisters 310 verbunden ist, Steuereingänge, die mit den Ausgängen der Komparatoren 332 und 334 verbunden sind, und einen Ausgang zur Bereitstellung von NEW Rs. Der Multiplexer 344 besitzt einen ersten Eingang zum Empfangen von Rt, einen zweiten Eingang, der mit dem SUBST-Feld des ersten Umlenkregisters 310 verbunden ist, einen dritten Eingang, der mit dem SUBST-Feld des zweiten Umlenkregisters 320 verbunden ist, Steuereingänge, die mit den Ausgängen der Komparatoren 336 und 338 verbunden sind, und einen Ausgang zum Bereitstellen von NEW Rt.
  • Die Multiplexer 342 und 344 enthalten jeweils eine Multiplexer- und Logikschaltung, um geeignete Eingänge auszuwählen, um damit jeweils die Werte NEW Rs und NEW Rt bereitzustellen. Wenn weder das Umlenkregister 310 noch das Register 320 einen zulässigen Eintrag aufweisen, dann wählen die Multiplexer 342 und 344 Rs und Rt aus, um jeweils den Wert NEW Rs und NEW Rt bereitzustellen. Wenn lediglich das Umlenkregister 310 oder das Register 320 einen zulässigen Eintrag aufweist, dann wählen die Multiplexer 342 und 344 einen der SUBST-Werte aus, der dem zulässigen Umlenkregistereintrag entspricht, um NEW Rs und NEW Rt bereitzustellen, wenn Rs oder Rt mit dem Inhalt des entsprechenden MATCH-Feld übereinstimmen. Wenn beide Umlenkregister 310 und 320 jeweils einen zulässigem Eintrag aufweisen, dann wählen die Multiplexer 340 und 344 die SUBST-Werte aus, die dem zulässigen Umlenkregistereintrag entsprechen, um NEW Rs und NEW Rt bereitzustellen, wenn Rs und/oder Rt mit dem Inhalt des entsprechenden MATCH-Feldes übereinstimmen. Wenn beide Umlenkregister 310 und 320 einen zulässigen Eintrag aufweisen und die Werte der MATCH-Felder gleich sind, dann geben die Multiplexer 342 und 344 der jüngsten ausgegebenen Anweisung die Priorität, d. h. der Multiplexer wählt den Eingang aus, der von dem SUBST-Feld des Umlenkregisters 310 bereitgestellt wird.
  • Zu beachten ist, dass die Überprüfung über normale Abhängigkeiten parallel in einer entsprechenden Testschaltung zur Prüfung normaler Abhängigkeiten, die nicht gezeigt ist, in der Ausgabelogikschaltung 110 stattfindet. Die Technik zur Reduzierung der Pipeline-Unterbrechung, wie sie hierin beschrieben ist, funktioniert so, dass die Prüfung auf normale Abhängigkeit mit geringerer Priorität bewertet wird. Die Testschaltung für normale Abhängigkeit gibt zwei Signale aus, die als „rs_stall” und „rt_stall” bezeichnet sind, die Abhängigkeiten zwischen zuvor ausgegebenen aber noch nicht abgeschlossenen Anweisungen und den Rs- und Rt-Operanden der aktuellen Anweisung erkennen. Eine zusätzliche Logikschaltung in der Umlenklogikschaltung 210, die in 2 oder 3 nicht gezeigt ist, erzeugt ein Signal, das als „kill_rs_stall” bezeichnet ist, wenn der Ausgang des Komparators 342 oder der Ausgang des Komparators 344 logisch „wahr” ist, und erzeugt ein Signal, das als „kill_rt_stall” bezeichnet ist, wenn der Ausgang des Komparators 346 oder der Ausgang des Komparators 348 logisch „wahr” ist. Die Ausgabelogikschaltung 110 unterbricht dann das Ausgeben der Anweisung 112, wenn rs_stall mit kill_rs_stall als Torsignal „wahr” ist oder wenn rt_stall mit kill_rt_stall als Torsignal „wahr” ist.
  • Zu beachten ist, dass in der dargestellten Ausführungsform die Umlenklogikschaltung 210 von der Addiereinheit 120 und der Multipliziereinheit 130 gemeinsam verwendet wird, da die Ausführungseinheit 200 lediglich eine Einzelausgabeeinheit ist. Für superskalare Implementierungen ist die Logik entsprechend komplex, aber die Prinzipien für das Erkennen und Austauschen bleiben die gleichen.
  • In anderen Ausführungsformen kann die Ausführungseinheit mit Pipeline-Struktur zwei oder mehr als drei Stufen aufweisen. Um den hierin beschriebenen Mechanismus vorteilhaft auszunutzen, kann die Anweisung unter Umständen lediglich eine Operandenkennung aufweisen. Ferner kann die Umlenkerkennungslogikschaltung die Operanden direkt untersuchen, um spezielle Bedingungen zu erkennen, etwa gleich 0 oder gleich 1 entsprechend weiterer Ausführungsformen, in denen eine derartige Information nicht über bestehende Operandenbusse verfügbar ist.
  • Obwohl wenigstens eine beispielhafte Ausführungsform in der vorhergehenden detaillierten Beschreibung dargestellt ist, sollte beachtet werden, dass eine grolle Anzahl an Änderungsmöglichkeiten besteht. Es sollte ferner beachtet werden, dass die beispielhafte Ausführungsform oder die beispielhaften Ausführungsformen lediglich Beispiele sind und nicht den Schutzbereich, die Anwendbarkeit oder die Konfiguration der Erfindung einschränken sollen. Die vorhergehende detaillierte Beschreibung gibt vielmehr dem Fachmann eine geeignete Anleitung zum Einrichten der diversen beispielhaften Ausführungsformen. Es sollte selbstverständlich sein, dass diverse Änderungen hinsichtlich der Funktion und der Anordnung von Elementen durchgeführt werden können, ohne von dem Schutzbereich der Erfindung, wie sie in den folgenden Patentansprüchen und den Äquivalenten dargelegt ist, abzuweichen.
  • Bezugszeichenliste
  • Fig. 1Stand der Technik
  • 110
    Ausgabelogik
    122
    Ausrichten
    124
    Addieren
    126
    Normieren
    132
    Booth'sche Codierung
    134
    Mehrfacharray
    126
    Abschließen des Addieren und Runden
    140
    Umleitung
    150
    Registerdatei
    Fig. 2
    210
    Umlenklogik
    Fig. 3
    von den Bussen 160 und 170
    300
    Umlenkerkennungslogik

Claims (9)

  1. Verfahren zur Verwendung in einem Datenprozessor mit einer Ausführungseinheit (200) mit Pipelinestruktur, wobei die Ausführungseinheit (200) eine Addiereinheit (120) und/oder eine Multipliziereinheit (130) aufweist, wobei das Verfahren die Schritte umfasst: Bestimmen, ob eine erste Anweisung eine aus einer Klasse aus Anweisungen ist, in denen als Ergebnis der Ausführung der ersten Anweisung der Inhalt eines Operandenregisters in einem Zielregister gespeichert wird; Ausführen der ersten Anweisung in der Addiereinheit oder der Multipliziereinheit der Ausführungseinheit; Empfangen einer zweiten Anweisung in der Addiereinheit oder der Multipliziereinheit der Ausführungseinheit während der Ausführung der ersten Anweisung, wobei die zweite Anweisung das Zielregister referenziert, bevor die Ausführung der ersten Anweisung abgeschlossen ist; und Ausführen der zweiten Anweisung in der Addiereinheit oder der Multipliziereinheit der Ausführungseinheit während die erste Anweisung weiterhin ausgeführt wird, wenn die erste Anweisung eine Anweisung aus der Klasse aus Anweisungen ist, wobei das Ausführen der zweiten Anweisung unter Anwendung des Inhalts des Operandenregisters erfolgt, ohne die zweite Anweisung in der Ausführungseinheit mit Pipelinestruktur (200) zu unterbrechen.
  2. Verfahren nach Anspruch 1, das ferner den Schritt umfasst: Zuordnen des Operandenregisters zu einem Operandenkennungsfeld der zweiten Anweisung, die zuvor dem Zielregister zugeordnet war, bevor die zweite Anweisung ausgeführt wird.
  3. Verfahren nach Anspruch 2, wobei der Schritt des Zuordnens die Schritte umfasst: Speichern einer Registerkennung des Zielregisters in einem Übereinstimmungsfeld eines Umlenkregisters (310); und Speichern einer Registerkennung des Operandenregisters in einem Austauschfeld des Umlenkregisters (310).
  4. Verfahren nach Anspruch 3, wobei der Schritt des Ausführens der zweiten Anweisung die Schritte umfasst: Vergleichen einer Operandenregisterkennung der zweiten Anweisung mit dem Inhalt des Übereinstimmungsfeldes, um ein Übereinstimmungssignal bereitzustellen; Verwenden des Inhalts des Austauschfeldes als Ersatz für die Operandenregisterkennung des Operandenregisters, um eine neue Registerkennung in Reaktion auf den Inhalt des Übereinstimmungsfeldes bereitzustellen; Ausführen der zweiten Anweisung unter Anwendung der neuen Registerkennung.
  5. Verfahren zur Verwendung in einem Datenprozessor mit einer Ausführungseinheit mit Pipelinestruktur (200), wobei die Ausführungseinheit (200) eine Addiereinheit (120) und/oder eine Multipliziereinheit (130) aufweist, wobei das Verfahren die Schritte umfasst: Bestimmen, ob eine erste Anweisung eine aus einer Klasse aus Anweisungen ist, in denen als ein Ergebnis des Ausführens der ersten Anweisung der Inhalt eines Operandenregisters in einem Zielregister gespeichert wird; Ausführen der ersten Anweisung in der Addiereinheit oder der Multipliziereinheit der Ausführungseinheit mit Pipelinestruktur (200); wenn die erste Anweisung eine der Klasse aus Anweisungen ist, Speichern einer Zielregisterkennung, die dem Zielregister zugeordnet ist, in einem Übereinstimmungsfeld eines Umlenkregisters, Speichern einer Operandenregisterkennung, die einem Operanden zugeordnet ist, in einem Austauschfeld des Umlenkregisters, und Speichern eines Gültigkeitsbits in einem Gültigkeitsfeld des Umlenkregisters; Empfangen einer zweiten Anweisung in der Ausführungseinheit mit Pipelinestruktur (200) bevor das Ausführen der ersten Anweisung abgeschlossen ist; Vergleichen einer ersten Operandenregisterkennung der zweiten Anweisung mit dem Inhalt des Übereinstimmungsfeldes, wenn das Gültigkeitsbit in einem vorbestimmten Logikzustand ist; und Ausführen der zweiten Anweisung unter Anwendung des Inhalts eines Registers, das von dem Austauschfeld bezeichnet ist, ohne Unterbrechung der zweiten Anweisung in der Ausführungseinheit mit Pipelinestruktur (200), wenn die erste Operandenregisterkennung mit dem Inhalt des Übereinstimmungsfeldes übereinstimmt.
  6. Verfahren nach Anspruch 5, das ferner die Schritte umfasst: wenn die erste Anweisung eine aus der Klasse aus Anweisungen ist, ferner Speichern eines Vorzeichenbits der ersten Anweisung in einem Vorzeichenfeld des Umlenkregisters; und selektives Ändern eines Vorzeichenbits als ein Ergebnis des Ausführens der zweiten Anweisung in Reaktion auf das Vorzeichenbit des Umlenkregisters.
  7. Verfahren nach Anspruch 5, das ferner die Schritte umfasst: Vergleichen einer zweiten Operandenregisterkennung der zweiten Anweisung mit dem Inhalt des Übereinstimmungsfeldes, wenn das Gültigkeitsbit in dem vorbestimmten Logikzustand ist; und Ausführen der zweiten Anweisung unter Anwendung des Inhalts des durch das Austauschfeld bezeichneten Registers ohne Unterbrechung der zweiten Anweisung in der Ausführungseinheit mit Pipelinestruktur (200), wenn die erste Operandenregisterkennung oder die zweite Operandenregisterkennung mit dem Inhalt des Übereinstimmungsfeldes übereinstimmt.
  8. Datenprozessor mit: einer Ausgabelogikschaltung (110) mit einem Ausgang zum Bereitstellen einer ersten und einer zweiten Anweisung als Sequenz, wobei jede Anweisung mindestens einen Operationscode, eine erste Operandenregisterkennung für einen ersten Operanden und eine Zielregisterkennung für ein Zielregister aufweist; einer Registerdatei (150) mit einem Leseanschluss mit einem Leseadresseneingang und einem Lesedatenausgang und einem Schreibanschluss; und einer Ausführungseinheit mit Pipelinestruktur (200), wobei die Ausführungseinheit (200) eine Addiereinheit (120) und/oder eine Multipliziereinheit (130) aufweist, und die Addiereinheit und/oder die Multipliziereinheit jeweils einen ersten Eingang, der mit dem Ausgang der Ausgabelogikschaltung (110) verbunden ist, einen zweiten Eingang, der mit dem Lesedatenausgang der Registerdatei (150) verbunden ist, und einen Ausgang, der mit dem Schreibanschluss der Registerdatei (150) verbunden ist, aufweisen; einer Umlenklogikschaltung (210) mit einem ersten Eingang, der mit dem Ausgang der Ausgabelogikschaltung (110) verbunden ist, einem zweiten Eingang, der mit dem Lesedatenausgang der Registerdatei (150) verbunden ist, und einem Ausgang, der mit dem Leseadresseneingang der Registerdatei (150) verbunden ist, um selektiv die erste Operandenregisterkennung der ersten Anweisung als Ersatz für die erste Operandenregisterkennung der zweiten Anweisung zu verwenden; wobei die Umlenklogikschaltung (210) die erste Operandenregisterkennung der ersten Anweisung als Ersatz für die erste Operandenregisterkennung der zweiten Anweisung verwendet, wenn bestimmt wird, dass als ein Ergebnis des Ausführens der ersten Anweisung das Zielregister der ersten Anweisung den Inhalt des ersten Operandenregisters der ersten Anweisung enthält.
  9. Datenprozessor nach Anspruch 8, wobei die Umlenklogikschaltung (210) umfasst: eine Umlenkerkennungslogikschaltung (300) mit einem Ausgangsanschluss; ein erstes Umlenkregister (310), das mit dem Ausgang der Ausgabelogikschaltung (110) verbunden ist und einer Stufe der Ausführungseinheit mit Pipelinestruktur (200) zugeordnet ist, und mindestens ein Gültigkeitsfeld, das mit dem Ausgangsanschluss der Umlenkerfassungslogikschaltung (300) verbunden ist, ein Übereinstimmungsfeld zum Empfangen der Zielregisterkennung und ein Austauschfeld zum Empfangen einer ausgewählten Kennung der ersten Operandenregisterkennung oder einer zweiten Operandenregisterkennung aufweist; einen ersten Komparator (334) mit einem ersten Eingangsanschluss zum Empfangen der ersten Operandenregisterkennung der zweiten Anweisung, einem zweiten Eingangsanschluss, der mit dem Übereinstimmungsfeld des ersten Umlenkregisters (310) verbunden ist, einem Steuereingangsanschluss, der mit dem Gültigkeitsfeld des ersten Umlenkregisters (310) verbunden ist, und einem Ausgangsanschluss; und einen ersten Multiplexer (342) mit einem ersten Eingangsanschluss zum Empfangen der ersten Operandenregisterkennung, einem zweiten Eingangsanschluss, der mit dem Austauschfeld des ersten Umlenkregisters (310) verbunden ist, einem Steuereingangsanschluss, der mit dem Ausgangsanschluss des ersten Komparators (334) verbunden ist und einem Ausgangsanschluss zum Bereitstellen einer neuen Registerkennung für den ersten Operanden der zweiten Anweisung.
DE112004001040T 2003-06-12 2004-06-02 Verfahren und Datenprozessor mit reduzierter Operationsunterbrechung auf Grund von Operanden-Abhängigkeiten Expired - Lifetime DE112004001040B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/461,129 US7290121B2 (en) 2003-06-12 2003-06-12 Method and data processor with reduced stalling due to operand dependencies
US10/461,129 2003-06-12
PCT/US2004/017092 WO2004111838A2 (en) 2003-06-12 2004-06-02 Method and data processor for reduced pipeline stalling

Publications (2)

Publication Number Publication Date
DE112004001040T5 DE112004001040T5 (de) 2006-06-08
DE112004001040B4 true DE112004001040B4 (de) 2012-05-31

Family

ID=33511189

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112004001040T Expired - Lifetime DE112004001040B4 (de) 2003-06-12 2004-06-02 Verfahren und Datenprozessor mit reduzierter Operationsunterbrechung auf Grund von Operanden-Abhängigkeiten

Country Status (8)

Country Link
US (1) US7290121B2 (de)
JP (1) JP4991299B2 (de)
KR (1) KR101183270B1 (de)
CN (1) CN100380317C (de)
DE (1) DE112004001040B4 (de)
GB (1) GB2418508B (de)
TW (1) TWI343543B (de)
WO (1) WO2004111838A2 (de)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7328429B2 (en) * 2003-11-13 2008-02-05 Intel Corporation Instruction operand tracing for software debug
US7272751B2 (en) * 2004-01-15 2007-09-18 International Business Machines Corporation Error detection during processor idle cycles
US20060095732A1 (en) * 2004-08-30 2006-05-04 Tran Thang M Processes, circuits, devices, and systems for scoreboard and other processor improvements
US7774582B2 (en) * 2005-05-26 2010-08-10 Arm Limited Result bypassing to override a data hazard within a superscalar processor
US8364934B2 (en) * 2006-07-11 2013-01-29 Freescale Semiconductor, Inc. Microprocessor and method for register addressing therein
US7565513B2 (en) * 2007-02-28 2009-07-21 Advanced Micro Devices, Inc. Processor with power saving reconfigurable floating point unit decoding an instruction to single full bit operation or multiple reduced bit operations
DE102008045767A1 (de) 2008-09-04 2010-03-11 Continental Teves Ag & Co. Ohg Mikroprozessor mit Pipelineblasen-Erfassungseinrichtung
US8977837B2 (en) * 2009-05-27 2015-03-10 Arm Limited Apparatus and method for early issue and recovery for a conditional load instruction having multiple outcomes
US8464030B2 (en) * 2010-04-09 2013-06-11 International Business Machines Corporation Instruction cracking and issue shortening based on instruction base fields, index fields, operand fields, and various other instruction text bits
WO2013100893A1 (en) 2011-12-27 2013-07-04 Intel Corporation Systems, apparatuses, and methods for generating a dependency vector based on two source writemask registers
US9519944B2 (en) 2014-09-02 2016-12-13 Apple Inc. Pipeline dependency resolution
US9875107B2 (en) 2015-01-19 2018-01-23 International Business Machines Corporation Accelerated execution of execute instruction target
CN104915183B (zh) * 2015-06-23 2018-10-16 北京玉华骢科技股份有限公司 一种多发射流水线的前馈探测电路
US11243774B2 (en) 2019-03-20 2022-02-08 International Business Machines Corporation Dynamic selection of OSC hazard avoidance mechanism
US10929142B2 (en) 2019-03-20 2021-02-23 International Business Machines Corporation Making precise operand-store-compare predictions to avoid false dependencies
US20210096877A1 (en) * 2019-09-26 2021-04-01 Advanced Micro Devices, Inc. Collapsing bubbles in a processing unit pipeline
CN111124500B (zh) * 2019-12-12 2022-03-08 浪潮(北京)电子信息产业有限公司 一种指令执行方法、装置、设备及存储介质
US11714652B2 (en) * 2021-07-23 2023-08-01 Advanced Micro Devices, Inc. Zero operand instruction conversion for accelerating sparse computations in a central processing unit pipeline

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4594655A (en) * 1983-03-14 1986-06-10 International Business Machines Corporation (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions
US5893928A (en) * 1997-01-21 1999-04-13 Ford Motor Company Data movement apparatus and method
EP1095330B1 (de) * 1998-07-14 2002-12-11 Advanced Micro Devices, Inc. Registerumbenennung wobei übertragungsinstruktionen mittels umbenennungsschildernzeichen realisiert werden

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4734852A (en) 1985-08-30 1988-03-29 Advanced Micro Devices, Inc. Mechanism for performing data references to storage in parallel with instruction execution on a reduced instruction-set processor
US5128890A (en) 1991-05-06 1992-07-07 Motorola, Inc. Apparatus for performing multiplications with reduced power and a method therefor
US5488729A (en) * 1991-05-15 1996-01-30 Ross Technology, Inc. Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution
GB9112754D0 (en) 1991-06-13 1991-07-31 Int Computers Ltd Data processing apparatus
JPH06156382A (ja) * 1992-11-28 1994-06-03 Sanshin Ind Co Ltd 船舶推進機の前後進切換装置
US5887160A (en) * 1996-12-10 1999-03-23 Fujitsu Limited Method and apparatus for communicating integer and floating point data over a shared data path in a single instruction pipeline processor
US5838941A (en) * 1996-12-30 1998-11-17 Intel Corporation Out-of-order superscalar microprocessor with a renaming device that maps instructions from memory to registers
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
US6112293A (en) * 1997-11-17 2000-08-29 Advanced Micro Devices, Inc. Processor configured to generate lookahead results from operand collapse unit and for inhibiting receipt/execution of the first instruction based on the lookahead result
US6857060B2 (en) * 2001-03-30 2005-02-15 Intel Corporation System, apparatus and method for prioritizing instructions and eliminating useless instructions

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4594655A (en) * 1983-03-14 1986-06-10 International Business Machines Corporation (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions
US5893928A (en) * 1997-01-21 1999-04-13 Ford Motor Company Data movement apparatus and method
EP1095330B1 (de) * 1998-07-14 2002-12-11 Advanced Micro Devices, Inc. Registerumbenennung wobei übertragungsinstruktionen mittels umbenennungsschildernzeichen realisiert werden

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
FRIENDLY, Daniel [et al.]: Putting the fill unit to work: dynamic optimizations for trace cache microprocessors. Proceedings of the 31st annual ACM/IEEE international symposium on Microarchitecture. Dallas, Texas, United States : IEEE Computer Society Press, 1998. 173-181. - ISBN 1-58113-016-3. http://dl.acm.org/citation.cfm?id=290940.290977 [abgerufen am 20.09.2011] *
JACOBSON, Q.; SMITH, J.E.: Instruction pre-processing in trace processors. Fifth International Symposium On High-Performance Computer Architecture, 1999. Proceedings. Orlando, FL , USA : IEEE, 1999. S. 125 -129. - ISBN 0-7695-0004-8. http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=744347 [abgerufen am 20.09.2011] *
PATEL, S.J.; LUMETTA, S.S.: rePLay: A hardware framework for dynamic optimization. In: Computers, IEEE Transactions on, 50, 2001, 6, S. 590 -608. - ISSN 0018-9340. http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=931895 [abgerufen am 20.09.2011] *

Also Published As

Publication number Publication date
GB2418508B (en) 2007-03-14
TW200508967A (en) 2005-03-01
GB0526204D0 (en) 2006-02-01
KR20060029614A (ko) 2006-04-06
DE112004001040T5 (de) 2006-06-08
WO2004111838A3 (en) 2005-10-27
KR101183270B1 (ko) 2012-09-14
JP2007500406A (ja) 2007-01-11
US20040255099A1 (en) 2004-12-16
CN1806227A (zh) 2006-07-19
GB2418508A (en) 2006-03-29
CN100380317C (zh) 2008-04-09
WO2004111838A2 (en) 2004-12-23
TWI343543B (en) 2011-06-11
JP4991299B2 (ja) 2012-08-01
US7290121B2 (en) 2007-10-30

Similar Documents

Publication Publication Date Title
DE112004001040B4 (de) Verfahren und Datenprozessor mit reduzierter Operationsunterbrechung auf Grund von Operanden-Abhängigkeiten
DE69032635T2 (de) Verfahren und Vorrichtung zur Erkennung von Betriebsmittelkonflikten in einer Pipeline-Verarbeitungseinheit
DE69308548T2 (de) Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
DE69719235T2 (de) Prozessor und Verfahren zur spekulativen Ausführung von bedingten Verzweigungsbefehlen unter Verwendung einer von mehreren Verzweigungsvorhersageverfahren
DE69420540T2 (de) Verfahren und Vorrichtung zum Implementieren eines vierstufigen Verzweigungsauflosungssystem in einem Rechnerprozessor
DE69724771T2 (de) Zentralprozessoreinheit mit x86 und dsp kern und einem dsp funktions-dekoder zum abbilden von x 86-befehlen auf dsp-befehle
DE68927911T2 (de) Datenverarbeitungssystem
DE3856220T2 (de) Digitaler Signalprozessor der bedingte Mehrpunkt-Sprungbefehle im Pipelinemodus bearbeitet
EP0682309A2 (de) Datenverarbeitungssystem, geeignet zur Verzweigung eines Einzelbefehls durch mehrere Bedingungscodes aus mehreren Verarbeitungselementen
DE60032794T2 (de) Bit-dekompression-verarbeitung mit einem vielseitigen ausrichtungswerkzeug
DE69636416T2 (de) Mikroprozessor ausgelegt zum erkennen eines unterprogramm-aufrufs einer dsp-routine und zum ansteuern eines dsp, diese routine auszuführen
DE102009030525A1 (de) Effizientes Paralleles Behandeln von Gleitkomma-Ausnahmen in einem Prozessor
DE69027932T2 (de) Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen
EP0947917A2 (de) Verfahren und Vorrichtung zur unpräzisen Ausnahmebehandlung
DE69633474T2 (de) Adressierungsverfahren zur nicht-sequentiellen Ausführung von Ladebefehlen hinsichtlich Speicherungsbefehlen
DE19735348A1 (de) Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern
DE4207148A1 (de) Superscalar-prozessor
DE69325826T2 (de) Rechner mit einer Parallelverarbeitungsfähigkeit
DE69637494T2 (de) Mikroprozessor, ausgelegt zum umschalten von befehlssätzen bei der erkennung von mehreren aufeinanderfolgenden befehlen
DE19506435A1 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE69412504T2 (de) Hardware-unterstützter zählungsänderungsbefehl
DE102010045800A1 (de) Elektronische Vorrichtung und Verfahren zur Datenverarbeitung unter Verwendung einer Betriebsart mit virtuellem Register
DE4430195B4 (de) Verfahren zur Auswertung von Booleschen Ausdrücken
US20030033506A1 (en) Locking source registers in a data processing apparatus
DE69712251T2 (de) Multi-Pipeline Prozessor mit Anzeige für den Modus der Datengenauigkeit und das Verfahren dazu

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law

Ref document number: 112004001040

Country of ref document: DE

Date of ref document: 20060608

Kind code of ref document: P

R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final

Effective date: 20120901

R071 Expiry of right