DE112018006103B4 - Skalierbare Abhängigkeitsmatrix mit einem oder einer Mehrzahl von Zusammenfassungs-Bits in einem Out-Of-Order-Prozessor - Google Patents

Skalierbare Abhängigkeitsmatrix mit einem oder einer Mehrzahl von Zusammenfassungs-Bits in einem Out-Of-Order-Prozessor Download PDF

Info

Publication number
DE112018006103B4
DE112018006103B4 DE112018006103.5T DE112018006103T DE112018006103B4 DE 112018006103 B4 DE112018006103 B4 DE 112018006103B4 DE 112018006103 T DE112018006103 T DE 112018006103T DE 112018006103 B4 DE112018006103 B4 DE 112018006103B4
Authority
DE
Germany
Prior art keywords
instructions
instruction
dependency
issue queue
computer
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.)
Active
Application number
DE112018006103.5T
Other languages
English (en)
Other versions
DE112018006103T5 (de
Inventor
Joel Silberman
Balaram Sinharoy
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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
Priority claimed from US15/826,746 external-priority patent/US10564976B2/en
Priority claimed from US15/826,734 external-priority patent/US10929140B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112018006103T5 publication Critical patent/DE112018006103T5/de
Application granted granted Critical
Publication of DE112018006103B4 publication Critical patent/DE112018006103B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)

Abstract

Auf einem Computer implementiertes Verfahren, das aufweist:Verfolgen von Abhängigkeiten zwischen Anweisungen in einer Ausgabewarteschlange, wobei das Verfolgen für jede Anweisung in der Ausgabewarteschlange aufweist:Erkennen, ob die Anweisung von jeder einer Schwellenanzahl von Anweisungen abhängig ist, die vor der Anweisung zu der Ausgabewarteschlange hinzugefügt worden sind, wobei eine Abhängigkeit zwischen der Anweisung und jeder der Schwellenanzahl von Anweisungen einzeln verfolgt wird; undErkennen, ob die Anweisung von einer oder mehreren sonstigen Anweisungen abhängig ist, die vor der Anweisung zu der Ausgabewarteschlange hinzugefügt worden sind, die nicht in jeder der Schwellenanzahl von Anweisungen enthalten sind, wobei eine Abhängigkeit zwischen der Anweisung und jeder der sonstigen Anweisungen als eine Mehrzahl von Gruppen dadurch verfolgt wird, dass eine Abhängigkeit zwischen der Anweisung und zumindest einer der Anweisungen in der Gruppe erkannt wird, wobei jede der sonstigen Anweisungen zumindest einer der Gruppen zugewiesen ist; undAusgeben von Anweisungen aus der Ausgabewarteschlange zumindest zum Teil auf Grundlage des Verfolgens.

Description

  • HINTERGRUND
  • Ausführungsformen der vorliegenden Erfindung beziehen sich allgemein auf einen Out-of-Order(OoO)-Prozessor (Prozessor für eine Ausführung in anderer Reihenfolge) und im Besonderen auf eine skalierbare Abhängigkeitsmatrix mit einem oder einer Mehrzahl von Zusammenfassungs-Bits in einer Ausgabewarteschlange eines OoO-Prozessors.
  • In einem OoO-Prozessor teilt eine Anweisungssequenzbildungseinheit (instruction sequencing unit, ISU) Anweisungen verschiedenen Ausgabewarteschlangen zu, benennt Register zur Unterstützung einer OoO-Ausführung um, gibt Anweisungen aus den verschiedenen Ausgabewarteschlangen an die Ausführungs-Pipelines aus, schließt ausgeführte Anweisungen ab und verarbeitet Ausnahmebedingungen. Eine Registerumbenennung wird typischerweise durch eine Zuordnungsfunktionslogik in der ISU durchgeführt, bevor die Anweisungen in ihren jeweiligen Ausgabewarteschlangen platziert werden.
  • Die ISU enthält eine oder mehrere Ausgabewarteschlangen, die Abhängigkeitsmatrizen zum Verfolgen von Abhängigkeiten zwischen Anweisungen enthalten. Eine Abhängigkeitsmatrix enthält typischerweise eine Zeile und eine Spalte für jede Anweisung in der Ausgabewarteschlange. Mit weiter steigender Anzahl von Anweisungen in den Ausgabewarteschlangen nimmt der Umfang von Platz und Leistung, die von jeder der Abhängigkeitsmatrizen in Anspruch genommen wird, zu.
  • In diesem technischen Kontext gibt es bereits Veröffentlichungen: So beschreibt das Dokument US 2012 / 0 290 818 A1 eine Verkleinerung der Anzahl der Spalten in einer Arbeitsmatrix, indem man nur Anweisungen mit kurzen Abhängigkeits-Distanzen in einer „normalen“ Weise in der Abhängigkeitsmatrix behandelt. Außerdem beschreibt das Dokument von Safi, Elham und Moshovos, Andreas und Veneris, Andreas: 2009 International Symposium on Systems, Architectures, Modeling, and Simulation. In: A physical-level study of the compacted matrix instruction scheduler for dynamically-scheduled superscalar processors, 23.06.2009, S. 41-48, https://doi.org/10.1109/ICSAMOS.2009.5289240 [abgerufen am 20.08.2021] sowie das Dokument von Sassone, Peter G. [et.al.]: Matrix Scheduler Reloaded. In: SIGARCH Comput. Archit. News, 35, 09.06.2007, 2, S. 335-346. - ISSN 0163-5964, https://doi.org/10.1145/1273440.1250704 [abgerufen am 20.08.2021], dass die Breite einer Komplexitäts-Matrix dadurch erreicht wird, dass man mit einer zusätzlichen Tabelle die aktuellen aktiven Producer-Anweisungen zu den Spalten in der Abhängigkeits-Matrix zuordnet.
  • KURZDARSTELLUNG
  • Ausführungsformen der vorliegenden Erfindung enthalten Verfahren, Systeme und Computerprogrammprodukte zum Implementieren einer skalierbaren Abhängigkeitsmatrix mit einem oder einer Mehrzahl von Zusammenfassungs-Bits in einer Ausgabewarteschlange eines Out-of-Order(OoO)-Prozessors gemäß den unabhängigen Ansprüchen. Weitere Ausgestaltungen sind durch die jeweils abhängigen Ansprüche angegeben.Ein nicht beschränkendes beispielhaftes Verfahren enthält ein Verfolgen von Abhängigkeiten zwischen Anweisungen in einer Ausgabewarteschlange. Das Verfolgen enthält für jede Anweisung in der Ausgabewarteschlange ein Erkennen, ob die Anweisung von jeder einer Schwellenanzahl von Anweisungen abhängig ist, die vor der Anweisung zu der Ausgabewarteschlange hinzugefügt worden sind.
  • Bei einer Ausführungsform mit mehreren Zusammenfassungs-Bits enthält das Verfolgen darüber hinaus ein Erkennen, ob die Anweisung von einer oder mehreren sonstigen Anweisungen abhängig ist, die vor der Anweisung zu der Ausgabewarteschlange hinzugefügt worden sind, die nicht in jeder der Schwellenanzahl von Anweisungen enthalten sind. Eine Abhängigkeit zwischen der Anweisung und jeder der sonstigen Anweisungen wird als eine Mehrzahl von Gruppen durch Angeben verfolgt, dass eine Abhängigkeit zwischen der Anweisung und einer der Gruppen besteht, was darauf beruht, dass eine Abhängigkeit zwischen der Anweisung und zumindest einer Anweisung in der Gruppe erkannt wird. Jede der sonstigen Anweisungen ist zumindest einer der Gruppen zugewiesen. Anweisungen werden aus der Ausgabewarteschlange zumindest zum Teil auf Grundlage des Verfolgens ausgegeben.
  • Bei einer weiteren Ausführungsform, die ein einzelnes Zusammenfassungs-Bit aufweist, wird eine Abhängigkeit zwischen der Anweisung und jeder der Schwellenanzahl von Anweisungen einzeln verfolgt. Das Verfolgen enthält darüber hinaus für jede Anweisung in der Ausgabewarteschlange ein Erkennen, ob die Anweisung von einer oder mehreren sonstigen Anweisungen abhängig ist, die vor der Anweisung zu der Ausgabewarteschlange hinzugefügt worden sind, die nicht in jeder einer Schwellenanzahl von Anweisungen enthalten sind. Eine Abhängigkeit zwischen der Anweisung und den sonstigen Anweisungen wird als einzelne Gruppe durch Angeben verfolgt, dass eine Abhängigkeit zwischen der Anweisung und der einzelnen Gruppe von sonstigen Anweisungen besteht, was darauf beruht, dass eine Abhängigkeit zwischen der Anweisung und zumindest einer der sonstigen Anweisungen erkannt wird. Die einzelne Gruppe enthält sämtliche Anweisungen in der Ausgabewarteschlange, die nicht in der Schwellenanzahl von Anweisungen enthalten sind, die einzeln verfolgt werden. Anweisungen werden aus der Ausgabewarteschlange zumindest zum Teil auf Grundlage des Verfolgens ausgegeben.
  • Zusätzliche Merkmale und Vorteile werden durch die Techniken der vorliegenden Erfindung umgesetzt. Sonstige Ausführungsformen und Aspekte der Erfindung werden hierin ausführlich beschrieben und werden als Teil der beanspruchten Erfindung betrachtet. Zum besseren Verständnis der Erfindung mit den Vorteilen und Merkmalen sei auf die Beschreibung und auf die Zeichnungen verwiesen.
  • Figurenliste
  • Die Besonderheiten der hierin beschriebenen Exklusivrechte werden in den Ansprüchen am Ende der Beschreibung genau dargelegt und ausdrücklich beansprucht. Die obigen und sonstige Merkmale und Vorteile der Ausführungsformen der Erfindung werden aus der folgenden ausführlichen Beschreibung in Verbindung mit den beigefügten Zeichnungen deutlich, in denen:
    • 1 ein Blockschaubild eines Systems darstellt, das eine Anweisungssequenzbildungseinheit (ISU) eines Out-of-Order(OoO)-Prozessors zum Implementieren einer skalierbaren Abhängigkeitsmatrix mit einem Zusammenfassungs-Bit in einer Ausgabewarteschlange gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung enthält;
    • 2 ein Blockschaubild einer Ausgabewarteschlange in einer ISU eines OoO-Prozessors gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt;
    • 3 ein Blockschaubild einer Ausgabewarteschlange in einer ISU eines OoO-Prozessors zum Implementieren einer skalierbaren Abhängigkeitsmatrix mit einem Zusammenfassungs-Bit gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt;
    • 4 ein Blockschaubild einer logischen Ansicht einer skalierbaren Abhängigkeitsmatrix gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt;
    • 5 ein Blockschaubild einer trapezförmigen Abhängigkeitsmatrix gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt;
    • 6 ein Blockschaubild einer vertikal komprimierten trapezförmigen Abhängigkeitsmatrix gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt;
    • 7 ein Blockschaubild einer horizontal komprimierten trapezförmigen Abhängigkeitsmatrix gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt;
    • 8 ein Blockschaubild einer skalierbaren Abhängigkeitsmatrix darstellt, die gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung implementiert werden kann;
    • 9 ein Blockschaubild einer Abhängigkeitsmatrix, die in einem Einzel-Thread(single thread, ST)-Modus und in einem Simultan-Multi-Thread(SMT)-Modus arbeitet, gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt;
    • 10 ein Blockschaubild einer Abhängigkeitsmatrix, die in einem ST-Modus und einem SMT-Modus arbeitet, gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt; und
    • 11 ein Blockschaubild eines Computersystems zum Implementieren einiger oder sämtlicher Aspekte einer skalierbaren Abhängigkeitsmatrix mit einem Zusammenfassungs-Bit in einem OoO-Prozessor gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt.
  • Die hierin dargestellten Schaubilder dienen der Veranschaulichung. Es sind viele Varianten des Schaubildes oder der darin beschriebenen Vorgänge möglich, ohne vom Wesensgehalt der Erfindung abzuweichen. Die Vorgänge können beispielsweise in einer abweichenden Reihenfolge durchgeführt werden, oder es können Vorgänge hinzugefügt, weggelassen oder modifiziert werden. Darüber hinaus beschreiben der Begriff „verbunden“ und Varianten davon das Vorhandensein eines Datenübertragungswegs zwischen zwei Elementen und unterstellen keine direkte Verbindung zwischen den Elementen, ohne dass sich dazwischenliegende Elemente/Verbindungen zwischen diesen befinden. Alle diese Varianten werden als Teil der Beschreibung betrachtet.
  • In den beigefügten Figuren und der folgenden ausführlichen Beschreibung der offenbarten Ausführungsformen sind die verschiedenen in den Figuren veranschaulichten Elemente mit zwei- oder dreistelligen Bezugszeichen versehen. Mit wenigen Ausnahmen entsprechen die am weitesten links stehenden Ziffern jedes Bezugszeichens der Figur, in der dessen Element zuerst veranschaulicht wird.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Wie oben erwähnt, nimmt die Anzahl von Anweisungen, die in heutigen Ausgabewarteschlangen gespeichert werden, weiter zu. Heutige Ausgabewarteschlangen enthalten Abhängigkeitsmatrizen, die als Quadrat der Anzahl von Anweisungen wachsen, und es ist wahrscheinlich, dass sich die ständig zunehmende Größe der Abhängigkeitsmatrizen irgendwann auf die Zeitsteuerung auswirkt. Eine oder mehrere hierin beschriebene Ausführungsformen der vorliegenden Erfindung stellen eine Abhängigkeitsmatrix mit verringerter Größe in einer Ausgabewarteschlange einer Anweisungssequenzbildungseinheit (ISU) eines Out-of-Order(OoO)-Prozessors bereit. Die Verringerung der Größe beruht auf der Erkenntnis, dass Abhängigkeiten typischerweise zwischen Anweisungen bestehen, die innerhalb eines engen Zeitrahmens voneinander zu der Ausgabewarteschlange hinzugefügt werden. Abhängigkeiten einer Anweisung von Anweisungen, die sich innerhalb des engen Zeitrahmens der Anweisung befinden, die zu der Ausgabewarteschlange hinzugefügt wird, werden einzeln gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung verfolgt. Abhängigkeiten der Anweisung von Anweisungen, die sich außerhalb des engen Zeitrahmens der Anweisung befinden, die zu der Ausgabewarteschlange hinzugefügt wird, werden als einzelne Gruppe mithilfe eines Zusammenfassungs-Bits gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung verfolgt.
  • Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung kann für einen Prozessor, der in einem Einzel-Thread(ST)-Modus mit einer Ausgabewarteschlange ausgeführt wird, die vierundsechzig Anweisungen (N = 64) enthält, die Abhängigkeit einer Anweisung von den vorhergehenden zweiunddreißig Anweisungen (N/2) in der Ausgabewarteschlange genau verfolgt werden (z.B. (eine) genaue Anweisung(en) erkannt werden). Ein Zusammenfassungs-Bit kann dazu verwendet werden anzugeben, dass die Anweisung von einer beliebigen, weiter als N/2 zurückliegenden Anweisung abhängig ist. Ein Eintrag (eine Anweisung) in der Abhängigkeitsmatrix der Ausgabewarteschlange mit dem gesetzten Zusammenfassungs-Bit muss warten, bis die ältesten N/2 Einträge gelöscht werden, bevor angegeben wird, dass die Anweisung zur Ausgabe bereit ist. Diese Kombination aus einem präzisen Verfolgen (N/2 zurückliegend) und einem unpräzisen Verfolgen (ein Zusammenfassungs-Bit weiter als N/2 zurückliegend) zusammen mit einer Implementierung der Ausgabewarteschlange als First-in-first-out(FIFO, zuerst hinein, zuerst hinaus)-Warteschlange ermöglicht, dass die Abhängigkeitsmatrix skalierbar ist und logisch als Trapez implementiert wird, das physisch in einer solchen Weise gespeichert werden kann, dass Speicherplatz eingespart wird. Darüber hinaus spart ein Implementieren der Ausgabewarteschlange als FIFO-Warteschlange zusätzlichen Speicherplatz dadurch ein, dass die Notwendigkeit beseitigt wird, dass ein Alters-Array in der Ausgabewarteschlange enthalten ist. Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung wird, wenn der Prozessor in einem Simultan-Multi-Thread(SMT)-Modus ausgeführt wird, das Zusammenfassungs-Bit nicht genutzt, und der Umfang des präzisen Verfolgens bleibt derselbe wie bei heutigen Implementierungen, die sämtliche der N/2-1 vorhergehenden Anweisungen verfolgen, die zu einem bestimmten Thread gehören.
  • Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung wird die Gruppe von Anweisungen, die sich außerhalb des engen Zeitrahmens der Anweisung befinden, die zu der Ausgabewarteschlange hinzugefügt wird (d.h., diejenigen Anweisungen, die nicht genau verfolgt werden) in eine oder mehrere Untergruppen zerlegt, die jeweils mit ihrem eigenen Zusammenfassungs-Bit verfolgt werden. Bei diesen Ausführungsformen werden mehrere Zusammenfassungs-Bits genutzt, um Abhängigkeiten einer Anweisung von Anweisungen in der Gruppe von Anweisungen zu verfolgen.
  • Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung ist die Anzahl von vorhergehenden Anweisungen, die genau verfolgt werden, auswählbar/programmierbar und nicht auf die N/2 vorhergehenden Anweisungen beschränkt.
  • Unter Bezugnahme auf 1 wird ein Blockschaubild eines Systems, das eine Anweisungssequenzbildungseinheit (ISU) eines Out-of-Order(OoO)-Prozessors zum Implementieren einer skalierbaren Abhängigkeitsmatrix mit einem Zusammenfassungs-Bit in einer Ausgabewarteschlange gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung allgemein dargestellt. Das in 1 dargestellte System enthält eine Anweisungsabrufeinheit/Anweisungsentschlüsselungseinheit (instruction fetch unit/instruction decode unit, IFU/IDU) 106, die Anweisungen zum Eingeben in einen Einrichtungsblock 108 abruft und entschlüsselt, der die entschlüsselten Anweisungen zum Eingeben in eine Zuordnungsfunktion 110 der ISU vorbereitet. Gemäß einer oder mehreren Ausführungsformen können sechs Anweisungen gleichzeitig von einem Thread durch die IFU/IDU 106 abgerufen und entschlüsselt werden. Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung können die sechs an den Einrichtungsblock 108 gesendeten Anweisungen sechs Nicht-Verzweigungsanweisungen, fünf Nicht-Verzweigungsanweisungen und eine Verzweigungsanweisung oder vier Nicht-Verzweigungsanweisungen und zwei Verzweigungsanweisungen enthalten. Gemäß einer oder mehreren Ausführungsformen überprüft der Einrichtungsblock 108, ob ausreichende Ressourcen wie zum Beispiel Einträge in den Ausgabewarteschlangen, einer Abschlusstabelle, Zuordnungsfunktionen und Registerdateien vorhanden sind, bevor die abgerufenen Anweisungen an diese Blöcke in der ISU übertragen werden.
  • Die in 1 dargestellten Zuordnungsfunktionen 110 ordnen Programmiereranweisungen (z.B. logische Registernamen) physischen Ressourcen des Prozessors (z.B. physischen Registeradressen) zu. In 1 wird eine Vielfalt von Zuordnungsfunktionen 110 dargestellt, darunter eine Zuordnungsfunktion für Bedingungsregister (condition register, CR); eine Zuordnungsfunktion für Verbindungs-/Anzahl-Register (Link/Count (LNK/CNT) register); eine Zuordnungsfunktion für Ganzzahl-Ausnahmeregister (integer exception register, XER); eine einheitliche Zuordnungsfunktion (Unified Mapper, UMapper) zum Zuordnen von Allgemeinregistern (general purpose registers, GPRs) und Vektor-Skalar-Registern (vectorscalar registers, VSRs); eine strukturierte Zuordnungsfunktion (architected mapper, ARCH Mapper) zum Zuordnen von GPRs und VSRs; und eine Zuordnungsfunktion für Gleitkommastatus- und Steuerregister (floating point status and control register, FPSCR).
  • Die Ausgabe aus dem Einrichtungsblock 108 wird auch in eine globale Abschlusstabelle (GCT) 112 eingegeben, um alle aktuell in der ISU befindlichen Anweisungen zu verfolgen. Die Ausgabe aus dem Einrichtungsblock 108 wird auch in eine Zuteilungseinheit 114 eingegeben, um die Anweisungen einer Ausgabewarteschlange zuzuteilen. Die Ausführungsform der in 1 dargestellten ISU enthält eine CR-Ausgabewarteschlange, CR-ISQ1 16, die Anweisungen von der CR-Zuordnungsfunktion empfängt und verfolgt und diese an die Anweisungsabrufeinheit (IFU) 124 ausgibt 120, um logische CR-Anweisungen und Bewegungsanweisungen auszuführen. Darüber hinaus wird in 1 eine Verzweigungsausgabe-Warteschlange, Verzweigungs-ISQ 118, dargestellt, die Verzweigungsanweisungen und physische LNK/CNT-Adressen von der LNK/CNT-Zuordnungsfunktion empfängt und verfolgt. Die Verzweigungs-ISQ 118 kann eine Anweisung an die IFU 124 ausgeben 122, um ein Abrufen von Anweisungen umzuleiten, wenn eine vorhergesagte Verzweigungsadresse und/oder - richtung falsch war.
  • Von der Zuteilungslogik ausgegebene Anweisungen und umbenannte Register von der LNK/CNT-Zuordnungsfunktion, der XER-Zuordnungsfunktion, des UMappers (GPR/VSR), der ARCH-Zuordnungsfunktion (GPR/VSR) und der FPSCR-Zuordnungsfunktion werden in die Ausgabewarteschlange 102 eingegeben. Wie in 1 dargestellt, verfolgt die Ausgabewarteschlange 102 zugeteilte Festkomma-Anweisungen (Fx), Ladeanweisungen (L), Speicheranweisungen (S) und Anweisungen für die Vektor- und Skalareinheit (VSU). Wie in der Ausführungsform von 1 dargestellt, ist die Ausgabewarteschlange 102 in zwei Teile, ISQ0 1020 und ISQ1 1021, aufgeteilt, wobei jeder Abschnitt N/2 Anweisungen enthält. Wenn der Prozessor im ST-Modus ausgeführt wird, kann die Ausgabewarteschlange 102 als einzelne logische Ausgabewarteschlange verwendet werden, die sowohl ISQ0 1020 als auch ISQ1 1021 enthält, um alle Anweisungen (in diesem Beispiel sämtliche N Anweisungen) eines einzelnen Threads zu verarbeiten.
  • Wenn der Prozessor im SMT-Modus ausgeführt wird, kann ISQ0 1020 zum Verarbeiten von N/2 Anweisungen von einem ersten Thread verwendet werden, und ISQ1 1021 wird zum Verarbeiten von N/2 Anweisungen von einem zweiten Thread ISQ1 1021 verwendet.
  • Wie in 1 dargestellt, gibt die Ausgabewarteschlange 102 Anweisungen an die Ausführungseinheiten 104 aus, die in zwei Gruppen von Ausführungseinheiten, 1040 1041, aufgeteilt sind. Beide Gruppen von Ausführungseinheiten, 1040 1041, die in 1 dargestellt werden, enthalten eine Einheit zur vollständigen Festkommaausführung (vollständige FX0, vollständige FX1); eine Ladeausführungseinheit (LU0, LU1); eine Einheit zur einfachen Festkomma-, Datenspeicher- und Adressspeicherausführung (einfache FX0/STD0/STA0, einfache FX1/STD1/STA1); und eine Einheit zur Gleitkomma-, Vektor-Multimedia-Erweiterungs-, dezimalen Gleitkomma- und Datenspeicherausführung (FP/VMX/DFP/STD0, FP/VMX/DFP/STD1). Wie in 1 dargestellt, führt, wenn der Prozessor im ST-Modus ausgeführt wird, die erste Gruppe von Ausführungseinheiten 1040 Anweisungen aus, die von der ISQ0 1020 ausgegeben werden, und führt die zweite Gruppe von Ausführungseinheiten 1041 Anweisungen aus, die von der ISQ1 1021 ausgegeben werden. Bei alternativen Ausführungsformen können, wenn der Prozessor im ST-Modus ausgeführt wird, Anweisungen, die sowohl von der ISQ0 1020 als auch von der ISQ1 1021 in der Ausgabewarteschlange 102 ausgegeben werden, an Ausführungseinheiten in einer beliebigen der Ausführungseinheiten 1040 in der ersten Gruppe von Ausführungseinheiten 1040 und der zweiten Gruppe von Ausführungseinheiten 1041 ausgegeben werden.
  • Gemäß einer oder mehreren Ausführungsformen führt, wenn der Prozessor im SMT-Modus ausgeführt wird, die erste Gruppe von Ausführungseinheiten 1040 Anweisungen des ersten Threads aus, die von der ISQ0 1020 ausgegeben werden, und führt die zweite Gruppe von Ausführungseinheiten 1041 Anweisungen des zweiten Threads aus, die von der ISQ1 1021 ausgegeben werden.
  • Die Anzahl von Einträgen in der Ausgabewarteschlange 102 und Größen sonstiger Elemente (z.B. Busbreiten, Warteschlangengrößen), die in 1 dargestellt werden, sollen beispielhaft sein, da Ausführungsformen der vorliegenden Erfindung für Ausgabewarteschlangen und sonstige Elemente einer Vielfalt unterschiedlicher Größen implementiert werden können. Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung sind die Größen auswählbar oder programmierbar.
  • Unter Bezugnahme auf 2 wird ein Blockschaubild einer Ausgabewarteschlange 200 gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung allgemein dargestellt. Die in 2 dargestellte Ausgabewarteschlange 200 enthält Matrizen, Tabellen und Vektoren zum Verfolgen von Anweisungen, die darauf warten, ausgegeben zu werden. Die Matrizen und Tabellen enthalten jeweils eine entsprechende Zeile für jede verfolgte Anweisung, und die Vektoren enthalten einen Eintrag für verfolgte Anweisungen. Mit weiter steigender Anzahl von Anweisungen in den Ausgabewarteschlangen nimmt der Umfang von Platz und Leistung, die von jeder der Matrizen, Tabellen und Vektoren in Anspruch genommen wird, zu. Ausführungsformen der hierin beschriebenen vorliegenden Erfindung können dazu verwendet werden, die Größe einer Abhängigkeitsmatrix 202 in der Ausgabewarteschlange 200 mithilfe eines Zusammenfassungs-Bits zum Verfolgen von Abhängigkeiten von älteren Anweisungen zu verringern. Darüber hinaus kann durch Speichern von Anweisungen in der Reihenfolge, in der sie in die Ausgabewarteschlange 200 aufgenommen werden, das Alters-Array 216 aus der Ausgabewarteschlange 200 beseitigt werden.
  • Die Ausgabewarteschlange 200 verfolgt Anweisungen, die auf eine Ausführung durch eine Ausführungseinheit warten. Eine Anweisung wird der Ausgabewarteschlange 200 (z.B. einer CR-ISQ 116, einer Verzweigungs-ISQ 118, einer Ausgabewarteschlange 102) zugeteilt und zugeordnet. Die Anweisung ist zur Ausgabe aus der Ausgabewarteschlange 200 bereit, wenn ihre Abhängigkeiten erfüllt sind, das heißt, wenn die Anweisungen ausgegeben worden sind und ihre entsprechenden Ergebnisse verfügbar sind. Die Ausgabewarteschlange 200 gibt die Anweisung an eine Ausführungseinheit (z.B. eine Ausführungseinheit 104) aus. Nach dem Ausgeben der Anweisung setzt die Ausgabewarteschlange 200 das Verfolgen der Anweisung zumindest fort, bis die Anweisung einen Ablehnungspunkt durchläuft. Der Ablehnungspunkt unterscheidet sich für verschiedene Anweisungen und bezieht sich auf den Punkt, an dem bekannt ist, dass die Anweisungen nicht erneut ausgegeben werden muss (z.B. kann der Ablehnungspunkt in einer Lesespeicheroperation durchlaufen werden, nachdem für die Lesedaten auf den Cache zugegriffen wird). Nachdem die Anweisung den Ablehnungspunkt durchlaufen hat, kann sie aus der Ausgabewarteschlange freigegeben werden und wird der Eintrag in der Ausgabewarteschlange zur Wiederverwendung durch eine neue Anweisung gelöscht. Die Anweisung wird beendet, nachdem die Ausführung der Anweisung durch eine Ausführungseinheit abgeschlossen worden ist.
  • Die in 2 dargestellte Ausgabewarteschlange 200 enthält: eine Abhängigkeitsmatrix 202 zum Verfolgen von Abhängigkeiten zwischen Anweisungen in der Ausgabewarteschlange 200; eine Abschlusstabelle 204 zum Angeben, dass die Ausführung einer Anweisung den Ablehnungspunkt durchlaufen hat und die Anweisung aus der Ausgabewarteschlange 200 freigegeben werden kann; eine Anweisungszuteilungseinheit 206 (z.B. eine Zuteilungseinheit 114 in 1) zum Empfangen von Anweisungen, die zu der Ausgabewarteschlange hinzuzufügen sind; einen Ergebnis-verfügbar-Vektor 208 zum Angeben, dass sämtliche der Anweisungen, von denen die Anweisung abhängig ist, ausgegeben worden sind; einen IV-Vektor 214, der angibt, dass die Anweisungen gültig (valid) und ausgabefähig (issuable) sind; eine UND-Logik 210, die die Ausgabe der Abhängigkeitsmatrix mit dem IV-Vektor logisch UND-verknüpft; einen Bereitschaftsvektor 212 zum Angeben, dass die Ergebnisse von sämtlichen der Anweisungen, von denen die Anweisung abhängig ist, verfügbar sind und dass die Anweisung gültig und ausgabefähig ist; ein Alters-Array 216 zum Verfolgen der Reihenfolge, in der die Anweisungen in die Ausgabewarteschlange gekommen sind, so dass, wenn zwei oder mehr Anweisungen zur Ausführung bereit sind, eine ältere Anweisung vor einer neueren Anweisung ausgewählt werden kann; eine Rücksetzungs-IV-Steuerung 218 zum Aktualisieren des IV-Zustands, um ein erneutes Ausgeben einer ausgewählten Anweisung zu verhindern oder ein erneutes Ausgeben nach einer Ablehnung zuzulassen; eine Adresse 220, die als Leseindex entsprechend der zur Ausgabe ausgewählten Anweisung verwendet wird; und ein Daten-Array 222, das den Text der Anweisung enthält, der durch die Ausführungseinheit zum Ausführen der Anweisung verwendet wird (z.B. einen Op-Code, einen Zeiger auf eine Registerdateiadresse, Direktdaten).
  • Wie in der Abhängigkeitsmatrix 202 von 2 dargestellt, die N Anweisungen verfolgen kann, die in der Ausgabewarteschlange warten, hängt eine Anweisung an einer Position „u“ von den Anweisungen an einer Position „v“ und „w“ ab. Die in 2 dargestellte Abhängigkeitsmatrix 202 weist N Zeilen und N Spalten, eine Zeile und Spalte für jede Anweisung in der Ausgabewarteschlange, auf. Wie in dem Alters-Array 216 von 2 dargestellt, sind Anweisungen an Positionen „j“, „k“ und „l“ älter als die Anweisung an Position „i“.
  • Unter Bezugnahme auf 3 wird ein Blockschaubild einer Ausgabewarteschlange 300 in einer ISU eines OoO zum Implementieren einer skalierbaren Abhängigkeitsmatrix mit einem Zusammenfassungs-Bit-Abschnitt 360 gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung allgemein darstellt. Die in 3 dargestellte Ausgabewarteschlange 300 ähnelt der oben unter Bezugnahme auf 2 beschriebenen Ausgabewarteschlange 200 mit der Ausnahme, dass die Anweisungen in FIFO-Reihenfolge in die Matrizen, Tabellen und Vektoren eingefügt werden und keine Logik oder Schaltungen notwendig sind, die dem in 2 dargestellten Alters-Array 216 zugehörig sind, da die Anweisungen in der Reihenfolge, in der sie empfangen worden sind, in die Matrizen, Tabellen und Vektoren eingefügt werden. Anstelle des Alters-Array 216 von 2 enthält die in 3 dargestellte Ausgabewarteschlange 300 eine Prioritätsauswahllogik 324 zum Auswählen aus zwei oder mehr bereiten Anweisungen auf Grundlage ihrer relativen Positionen in der Ausgabewarteschlange 200. Auf diese Weise enthalten die Abhängigkeitsmatrix 302, die Abschlusstabelle 304, der UND-Vektor 310, der Bereitschaftsvektor 312, die Adresse 320 und das Daten-Array 322 entsprechende Einträge in der Reihenfolge, in der sie von der Anweisungszuteilungseinheit 206 empfangen worden sind. Darüber hinaus wird ein Zusammenfassungs-Bit-Abschnitt 360 für jeden Eintrag in der Abhängigkeitsmatrix 302 bereitgestellt, um Abhängigkeiten von älteren Anweisungen zu verfolgen. Der Zusammenfassungs-Bit-Abschnitt 360 kann ein oder mehrere Zusammenfassungs-Bits enthalten.
  • Unter Bezugnahme auf 4 wird ein Blockschaubild einer logischen Ansicht einer skalierbaren Abhängigkeitsmatrix 400 gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung allgemein dargestellt. Die in 4 dargestellte skalierbare Abhängigkeitsmatrix 400 stellt eine Ausgabewarteschlange dar, die N Anweisungen enthält und eine Abhängigkeit einer Anweisung von vier (in diesem Beispiel der Schwellenwert) sonstigen Anweisungen genau verfolgt. Die Einträge in der skalierbaren Abhängigkeitsmatrix 400 werden in FIFO-Reihenfolge eingefügt, und so wurde zum Beispiel die Anweisung in Zeile 5 unmittelbar vor der Anweisung in Zeile 6 in die Ausgabewarteschlange aufgenommen.
  • Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung kann die skalierbare Abhängigkeitsmatrix 400 umlaufen, und so wurde zum Beispiel die Anweisung in Zeile N-1 unmittelbar vor der Anweisung in Zeile 0 in die Ausgabewarteschlange aufgenommen. Wenn ein Umlaufen einer Umlaufwarteschlange verwendet wird, können Kopf- und Endzeiger dazu verwendet werden, älteste und neueste Einträge zu verfolgen, und das Zusammenfassungs-Bit wird mit dem Fortschreiten des Kopfzeigers (ältester Eintrag) gelöscht. Infolgedessen werden alle Zusammenfassungs-Bits, die nun dem Kopf näher als dem Schwellenwert (z.B. 4) sind, gelöscht, da der Kopfzeiger nur fortschreitet, wenn Einträge freigegeben werden, was erfordert, dass die entsprechenden Anweisungen ausgegeben worden sind und ihre Ablehnungspunkte durchlaufen haben.
  • Bei einer oder mehreren beispielhaften Ausführungsformen werden anstelle einer Verwendung einer Umlaufmatrix Anweisungen innerhalb der Warteschlange immer dann in Richtung der obersten Zeile verschoben, wenn Platz zum Verschieben nach oben verfügbar gemacht wird, wenn Warteschlangenpositionen freigegeben werden. Der Inhalt der Matrix kann im gleichen Umfang nach oben und nach links verschoben werden. In diesem Fall werden nur die freien (unschraffierten) Felder in 4 benötigt, und die Matrix nimmt eine Trapezform an.
  • Wie in 4 dargestellt, wird eine Abhängigkeit zwischen einer Anweisung und den vier Anweisungen, die unmittelbar vor der Anweisung in die Ausgabewarteschlange eingefügt worden sind, in einem ersten Abschnitt, einem Genauigkeitsabschnitt 404, der Abhängigkeitsmatrix 400 genau verfolgt und einzeln erkannt, wohingegen eine Abhängigkeit zwischen der Anweisung und jeglicher der sonstigen Anweisungen in dieser Ausgabewarteschlange mithilfe eines Zusammenfassungs-Bit-Abschnitts 402 der Abhängigkeitsmatrix 400 verfolgt wird.
  • Der Genauigkeitsabschnitt 404 der in 4 dargestellten Abhängigkeitsmatrix 400 kann zum Beispiel dazu verwendet werden zu ermitteln, ob die Anweisung in Zeile 6 von der Anweisung in Zeile 5 abhängig ist, ob die Anweisung in Zeile 6 von der Anweisung in Zeile 4 abhängig ist, ob die Anweisung in Zeile 6 von der Anweisung in Zeile 3 abhängig ist und ob die Anweisung in Zeile 6 von der Anweisung in Zeile 2 abhängig ist. Wenn die Anweisung in Zeile 6 von der Anweisung in Zeile 3 und nicht von den Anweisungen in den Zeilen 5, 4 und 2 abhängig ist (und das Zusammenfassungs-Bit nicht gesetzt ist), muss nur die Anweisung in Zeile 3 ausgegeben werden, bevor die Anweisung in Zeile 6 bereit ist, ausgegeben zu werden. Der Zusammenfassungs-Bit-Abschnitt 402 der Abhängigkeitsmatrix 400 kann dazu verwendet werden zu ermitteln, ob die Anweisung in Zeile 6 von jeglicher der Anweisungen in den Zeilen 0 bis 1 und den Zeilen 7 bis N-1 abhängig ist. Ein einzelnes Zusammenfassungs-Bit kann die Abhängigkeit von Zeile 6 von jeglicher der Zeilen 0 bis 1 und der Zeilen 7 bis N-1 darstellen, und wenn eine Abhängigkeit durch das Zusammenfassungs-Bit erkannt wird, müssen folglich sämtliche der Anweisungen in Zeile 1 und den Zeilen 7 bis N-1 ausgegeben werden, bevor die Anweisung in Zeile 6 ausgegeben werden kann. Wie hierin beschrieben, wird das Zusammenfassungs-Bit oder das Genauigkeits-Bit gelöscht, wenn die entsprechende Anweisung freigegeben wird.
  • Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung wird der Zusammenfassungs-Bit-Abschnitt 402 oder ein sonstiges Latch für die Anweisung in Zeile 6 gesetzt, wenn die Anweisung von jeglicher der Anweisungen in Zeile 0 bis 1 und in den Zeilen 7 bis N-1 abhängig ist, und zurückgesetzt, wenn sämtliche der Anweisungen in Zeile 1 und den Zeilen 7 bis N-1, die sich in der Warteschlange befanden, als die Anweisung 6 zugeteilt wurde, ausgegeben werden, ihren jeweiligen Ablehnungspunkt durchlaufen haben und freigegeben worden sind. In ähnlicher Weise wird ein entsprechendes Bit oder ein sonstiges Latch in dem Genauigkeitsabschnitt 404 gesetzt, um eine Abhängigkeit der Anweisung in Zeile 6 von einer bestimmten vorherigen Anweisung anzugeben, und zurückgesetzt, wenn die Anweisung ausgegeben worden ist, ihren Ablehnungspunkt durchlaufen hat und der Eintrag freigegeben worden ist. Nachdem sämtliche der Abhängigkeiten der Anweisung in Zeile 6 erfüllt sind (z.B. die Anweisungen ausgegeben werden), ist die Anweisung in Zeile 6 bereit, ausgegeben zu werden, wenn sämtliche der Ressourcen, die sie benötigt, verfügbar sind.
  • Der in 4 dargestellte Zusammenfassungs-Bit-Abschnitt 402 kann ein einzelnes Zusammenfassungs-Bit enthalten, das dazu verwendet wird, eine Abhängigkeit zwischen einer Anweisung und jeglichen von mehr als einer Schwellenanzahl von Anweisungen zu verfolgen, die unmittelbar vor der Anweisung in die Ausgabewarteschlange eingefügt worden sind. In der in 4 dargestellten Ausführungsform der vorliegenden Erfindung beträgt der Schwellenwert vier, und andere Anweisungen in der Ausgabewarteschlange als die vier Anweisungen, die unmittelbar vor der Anweisung in die Ausgabewarteschlange eingefügt worden sind, werden als einzelne Gruppe mithilfe eines einzelnen Zusammenfassungs-Bits verfolgt. Die einzelne Gruppe enthält sämtliche der vier Anweisungen in der Ausgabewarteschlange neben der Anweisung und den vier Anweisungen (in diesem Beispiel beträgt der Schwellenwert vier), die unmittelbar vor der Anweisung in die Ausgabewarteschlange eingefügt worden sind. Wenn die Anweisung von einer der Anweisungen in der einzelnen Gruppe abhängig ist, muss sie folglich warten, bis sämtliche der Anweisungen in der einzelnen Gruppe ausgegeben worden sind (und ihre Ablehnungspunkte durchlaufen haben), bevor die Abhängigkeit erfüllt ist. Anschließend kann die Anweisung ausgegeben werden, wenn alle sonstigen Abhängigkeiten erfüllt worden sind. Das einzelne Zusammenfassungs-Bit wird nur zurückgesetzt, wenn sämtliche der Anweisungen in der einzelnen Gruppe aus der Ausgabewarteschlange ausgegeben worden sind (und ihre Ablehnungspunkte durchlaufen haben).
  • Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung enthält der in 4 dargestellte Zusammenfassungs-Bit-Abschnitt 402 mehrere Zusammenfassungs-Bits, die dazu verwendet werden, Abhängigkeiten zwischen einer Anweisung und jeglichen von mehr als einer Schwellenanzahl von Anweisungen zu verfolgen, die unmittelbar vor der Anweisung in die Ausgabewarteschlange eingefügt worden sind. Bei Ausführungsformen der vorliegenden Erfindung werden andere Anweisungen in der Ausgabewarteschlange als die Schwellenanzahl von Anweisungen, die unmittelbar vor der Anweisung in die Ausgabewarteschlange eingefügt worden sind, als mehrere Gruppen mithilfe von mehreren Zusammenfassungs-Bits verfolgt. Jede der anderen Anweisungen in der Ausgabewarteschlange neben der Anweisung und der Schwellenanzahl von Anweisungen, die unmittelbar vor der Anweisung in die Ausgabewarteschlange eingefügt worden sind, ist in zumindest einer der Gruppen enthalten. Inhalte der mehreren Gruppen können sich gegenseitig ausschließen, oder sie können sich überschneiden. Die Verwendung von mehreren Zusammenfassungs-Bits für mehrere Gruppen kann eine feinere Granularität als die Verwendung eines einzelnen Zusammenfassungs-Bits für jegliche nicht genau verfolgte Anweisungen bereitstellen.
  • Zur einfacheren Beschreibung folgt ein vereinfachtes Beispiel, in dem N = 16, der Schwellenwert N/2 = 8 beträgt und eine Anweisung in Zeile 15 in eine Ausgabewarteschlange eingefügt wird, die Zeilen 0 bis 15 enthält. Jegliche Abhängigkeit der Anweisung in Zeile 15 von den acht Anweisungen, die unmittelbar vor der Anweisung in Zeile 15 in die Warteschlange eingefügt worden sind (das heißt, den Anweisungen in den Zeilen 14, 13, 12, 11, 10, 9, 8 und 7) wird genau verfolgt. Auf diese Weise kann genau ermittelt werden, von welcher/welchen einen oder ggf. mehreren der Anweisungen in den Zeilen 14, 13, 12, 11, 10, 9, 8 und 7 der Warteschlange die Anweisung in Zeile 15 abhängig ist. Mehrere Zusammenfassungs-Bits, die Abhängigkeiten von Anweisungen in Gruppierungen von Anweisungen in den Zeilen 0, 1, 2, 3, 4, 5 und 6 darstellen, können durch beispielhafte Ausführungsformen der vorliegenden Erfindung implementiert werden. Beispielsweise kann eine erste Gruppe Anweisungen in den Zeilen 3, 4, 5 und 6 in der Ausgabewarteschlange enthalten und kann eine zweite Gruppe Anweisungen in den Zeilen 0, 1 und 2 in der Ausgabewarteschlange enthalten. Eine Abhängigkeit der Anweisung in Zeile 15 von Anweisungen in der ersten Gruppe kann mit einem ersten Zusammenfassungs-Bit verfolgt werden und in der zweiten Gruppe mit einem zweiten Zusammenfassungs-Bit verfolgt werden. Alternativ kann eine erste Gruppe Anweisungen in den Zeilen 3, 4, 5 in der Ausgabewarteschlange enthalten, kann eine zweite Gruppe Anweisungen in den Zeilen 6 und 2 in der Ausgabewarteschlange enthalten und kann eine dritte Gruppe Anweisungen in den Zeilen 0 und 1 in der Ausgabewarteschlange enthalten. Eine Abhängigkeit der Anweisung in Zeile 15 von Anweisungen in der ersten Gruppe kann mit einem ersten Zusammenfassungs-Bit verfolgt werden, in der zweiten Gruppe mit einem zweiten Zusammenfassungs-Bit verfolgt werden und in der dritten Gruppe mit einem dritten Zusammenfassungs-Bit verfolgt werden. Bei einer weiteren Alternative können die Gruppen sich überschneiden, wobei zum Beispiel eine erste Gruppe Anweisungen in den Zeilen 0, 1, 2, 3, 4, 5 und 6 in der Ausgabewarteschlange enthält und eine zweite Gruppe Anweisungen in den Zeilen 0, 1 und 2 in der Ausgabewarteschlange enthält.
  • Bei Obigem handelt es sich lediglich um Beispiele, da eine beliebige Anzahl von Gruppen von Anweisungen und entsprechende Zusammenfassungs-Bit durch beispielhafte Ausführungsformen der vorliegenden Erfindung implementiert werden können. Je größer die Anzahl von Gruppen und Zusammenfassungs-Bits ist, desto höher ist im Allgemeinen der Aufwand im Hinblick auf die Anzahl von zu verfolgenden Bits, und desto geringer ist der Aufwand im Hinblick auf den Durchsatz. Beispielhafte Ausführungsformen der vorliegenden Erfindung können angepasst werden, um die Granularität auf Grundlage von Implementierungsanforderungen anzupassen. Die beiden Extreme enthalten ein einzelnes Zusammenfassungs-Bit, was die gröbste Granularität bereitstellt, und ein Zusammenfassungs-Bit für jede Anweisung, was die feinste Granularität bereitstellt.
  • Unter Bezugnahme auf 5 wird ein Blockschaubild einer trapezförmigen Abhängigkeitsmatrix 500 gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung allgemein dargestellt. Wie in 5 dargestellt, kann die skalierbare Abhängigkeitsmatrix zu freiem Raum in der Abhängigkeitsmatrix zum Beispiel in dem Genauigkeitsabschnitt 404 der in 4 dargestellten Abhängigkeitsmatrix 400 führen. Genauigkeitsabschnitte 508A, 508B, 508C und 508D sind in nicht zusammenhängenden Abschnitten der in 5 dargestellten trapezförmigen Abhängigkeitsmatrix 500 enthalten. Darüber hinaus wird in 5 ein Bereitschaftsvektor dargestellt, der einen Eintrag entsprechend jeder Anweisung aufweist, um anzugeben, ob sämtliche der Abhängigkeiten einer Anweisung erfüllt worden sind (z.B. ob sämtliche der spezifischen Anweisungen ausgegeben worden sind). Der in 5 dargestellte Bereitschaftsvektor wird in einen Bereitschaftsstatusvektor 506A und einen Bereitschaftsstatusvektor 506B zerlegt. 5 stellt darüber hinaus einen Verfügbarkeitsvektor mit einem Eintrag entsprechend jeder Anweisung dar, um anzugeben, ob sämtliche der Ergebnisse von zuvor ausgegebenen Anweisungen, von denen die Anweisung abhängig ist, zur Verwendung durch die Anweisung verfügbar sind. Der in 5 dargestellte Verfügbarkeitsvektor wird in einen Verfügbarkeitsvektor 502A und einen Verfügbarkeitsvektor 502B zerlegt. Eine in 5 nicht dargestellte zusätzliche Spalte von Bits enthält das Zusammenfassungs-Bit; und eine zusätzliche Logik verhindert, dass der Bereitschaftsvektor angibt, dass eine Anweisung bereit ist, wenn das Zusammenfassungs-Bit gesetzt ist.
  • Unter Bezugnahme auf 6 wird ein Blockschaubild einer vertikal komprimierten trapezförmigen Abhängigkeitsmatrix 600 gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung allgemein dargestellt. Wie in 6 dargestellt, wird die trapezförmige Abhängigkeitsmatrix 500 von 5 vertikal zusammengeführt, um den freien Raum zwischen den Genauigkeitsabschnitten 508A, 508B, 508C und 508D zu entfernen. Die vertikal komprimierte trapezförmige Abhängigkeitsmatrix 600 ist eine Möglichkeit zum physischen Speichern der skalierbaren Abhängigkeitsmatrix gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung, um den Platzbedarf zu verringern. In 502A enthaltene Verfügbarkeitsdaten werden dazu verwendet zu ermitteln, ob eine durch Bits in 508A genau angegebene Abhängigkeit erfüllt ist, und ein Bereitschaftsstatus 506A1 wird entsprechend aktualisiert. In 502A enthaltene Verfügbarkeitsdaten werden gleichzeitig dazu verwendet zu ermitteln, ob eine durch Bits in 508C genau angegebene Abhängigkeit erfüllt ist, und ein Bereitschaftsstatus 506B1 wird entsprechend aktualisiert. In ähnlicher Weise werden die Verfügbarkeitsdaten in 502B dazu verwendet zu ermitteln, ob die durch Bits in 508B und 508D angegebenen Abhängigkeiten erfüllt sind, so dass ein Bereitschaftsstatus 506A2 bzw. 506B2 aktualisiert werden kann. Entsprechende Elemente beider Komponenten des Bereitschaftsstatus (506A1 und 506A2 oder 506B1 und 506B2) müssen angeben, dass die spezifischen Abhängigkeiten erfüllt sind, um zu besagen, dass sämtliche Abhängigkeiten erfüllt sind.
  • Unter Bezugnahme auf 7 wird ein Blockschaubild einer horizontal komprimierten trapezförmigen Abhängigkeitsmatrix 700 gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung allgemein dargestellt. Wie in 7 dargestellt, wird die trapezförmige Abhängigkeitsmatrix 500 von 5 horizontal zusammengeführt, um den freien Raum zwischen den Genauigkeitsabschnitten 508A, 508B, 508C und 508D zu entfernen. Die horizontal komprimierte trapezförmige Abhängigkeitsmatrix 700 ist eine Möglichkeit zum physischen Speichern der skalierbaren Abhängigkeitsmatrix gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung, um den Platzbedarf zu verringern. In 502A1 enthaltene Verfügbarkeitsdaten werden dazu verwendet zu ermitteln, ob eine Abhängigkeit, die durch Bits in 508D genau angegeben wird, erfüllt ist, während gleichzeitig in 502B1 enthaltene Verfügbarkeitsdaten dazu verwendet werden zu ermitteln, ob eine durch Bits in 508C genau angegebene Abhängigkeit erfüllt ist, und der Bereitschaftsstatusvektor 506A wird mit dem kombinierten Ergebnis entsprechend aktualisiert. In 502A2 enthaltene Verfügbarkeitsdaten werden dazu verwendet zu ermitteln, ob eine Abhängigkeit, die durch Bits in 508B genau angegeben wird, erfüllt ist, während gleichzeitig in 502B2 enthaltene Verfügbarkeitsdaten dazu verwendet werden zu ermitteln, ob eine durch Bits in 508A genau angegebene Abhängigkeit erfüllt ist, und der Bereitschaftsstatusvektor 506B wird mit dem kombinierten Ergebnis entsprechend aktualisiert.
  • Auf Grundlage zum Beispiel von erwarteten Typen eines Arbeitsablaufs des Systems kann entweder die in 6 dargestellte, vertikal komprimierte trapezförmige Abhängigkeitsmatrix 600 oder die in 7 dargestellte, horizontal komprimierte trapezförmige Abhängigkeitsmatrix 700 für eine Implementierung ausgewählt werden.
  • Unter Bezugnahme auf 8 wird ein Blockschaubild einer Abhängigkeitsmatrix 800 gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung allgemein dargestellt. Wie in 8 dargestellt, verwendet, wenn der Prozessor in einem SMT-Modus ausgeführt wird, ein erster Thread einen Abschnitt 8020 einer logischen Abhängigkeitsmatrix 802 und verwendet der zweite Thread einen Abschnitt 8021 der logischen Abhängigkeitsmatrix 802. Die logische Abhängigkeitsmatrix 802 kann als physische Abhängigkeitsmatrix 804, die eine Matrix 8040 zum Speichern von Inhalt des Abschnitts 8020 und eine Matrix 8041 zum Speichern von Inhalt des Abschnitts 8021 enthält, physisch gespeichert werden.
  • Wie hierin beschrieben, wird, wenn ein OoO-Prozessor im ST-Modus ausgeführt wird, die gesamte Abhängigkeitsmatrix in der Ausgabewarteschlange dazu verwendet, Abhängigkeiten zwischen Anweisungen zu verfolgen. Dies steht im Gegensatz dazu, wenn der OoO-Prozessor im SMT-Modus ausgeführt wird, in dem typischerweise nur die Hälfte der Abhängigkeitsmatrix genutzt wird. Wie hierin beschrieben, wird die Abhängigkeitsmatrix in der Ausgabewarteschlange gemäß Ausführungsformen der vorliegenden Erfindung so neu organisiert, dass es sich logisch um ein Trapez handelt. Im ST-Modus kann ein Eintrag eine Abhängigkeit von den vorhergehenden N/2 Einträgen direkt verfolgen, und darüber hinaus kann er lediglich eine gemeinsame Abhängigkeit durch ein Zusammenfassungs-Bit verfolgen. Ein Eintrag (eine Anweisung) mit einem gesetzten Zusammenfassungs-Bit muss warten, bis die ältesten (bis zu) N/2 Einträge gelöscht werden. Dasselbe Konzept kann dazu verwendet werden weniger als N/2 Einträge genau zu verfolgen. Beispielhafte Ausführungsformen der vorliegenden Erfindung können auch verwendet werden, wenn der Prozessor im SMT-Modus ausgeführt wird, um eine vollständige (d.h., genaue) Abhängigkeit von N/2 Einträgen in jeder Hälfte der Ausgabewarteschlange zu verfolgen. Wenn der Prozessor im ST-Modus ausgeführt wird, kann er N Einträge verfolgen, jedoch mit eingeschränkter Sichtbarkeit für die ältere Hälfte der Einträge. Eine solche Ausführungsform wird in 9 dargestellt, die ein Blockschaubild einer Abhängigkeitsmatrix 900, die in einem ST-Modus und einem SMT-Modus arbeitet, gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung allgemein darstellt.
  • Unter Bezugnahme auf 9 enthält die in 9 dargestellte Abhängigkeitsmatrix 900 eine erste Halbmatrix 903 und eine zweite Halbmatrix 904, wie zuvor beschrieben, und diese verfolgt präzise eine Abhängigkeit jeder von N Anweisungen von N/2 vorhergehenden Anweisungen. Wie in der Ausführungsform der vorliegenden Erfindung in 9 dargestellt, werden die Quellenverfügbarkeitsdaten in dem Verfügbarkeits-Bit-Vektor 901A, der gesetzt wird, nachdem eine Anweisung in Zeile 0 bis N/2-1 ausgegeben wird, und durch den Verfügbarkeits-Bit-Vektor 901B verwaltet, der gesetzt wird, nachdem eine Anweisung in Zeile N/2 bis N-1 ausgegeben wird. Die Verfügbarkeitsdaten werden durch N Leitungen über jede Matrix hinweg zu den Abhängigkeitsmatrizen 903 904 übertragen. Eine Anweisung, die einer Zeile in der ersten Halbmatrix 903 entspricht, wobei ein Abhängigkeits-Bit innerhalb des veranschaulichten unteren dreieckigen Bereichs der Matrix 903A gesetzt ist, empfängt Verfügbarkeitsdaten direkt von dem Bit-Vektor 901A. Eine solche Anweisung mit gesetztem Abhängigkeits-Bit in einem veranschaulichten oberen dreieckigen Bereich 903B empfängt Verfügbarkeitsdaten über einen Multiplexer 902. Der Multiplexer 902 kann zwischen den Bit-Vektoren 901A und 901B auswählen, und im ST-Modus leitet der Multiplexer 902 Verfügbarkeitsdaten von dem Bit-Vektor 901B an den Bereich 903B weiter.
  • In ähnlicher Weise empfängt eine Anweisung, die einer Zeile der zweiten Halbmatrix 904 entspricht, mit gesetztem Abhängigkeits-Bit in einem veranschaulichten unteren dreieckigen Bereich 904A Verfügbarkeitsdaten von dem Verfügbarkeits-Bit-Vektor 901B. Eine solche Anweisung mit gesetztem Abhängigkeits-Bit in einem veranschaulichten oberen dreieckigen Bereich 904B empfängt Verfügbarkeitsdaten von einem zweiten Multiplexer innerhalb des Multiplexers 902. Der Multiplexer 902 kann zwischen den Bit-Vektoren 901A und 901B auswählen und leitet im ST-Modus diese Daten von dem Verfügbarkeits-Bit-Vektor 901A an den Bereich 904B weiter. Wenn der Multiplexer 902 wie beschrieben arbeitet, empfängt jede Zeile der Abhängigkeitsmatrix Daten, die der Verfügbarkeit von Ergebnissen entsprechen, die durch Anweisungen in den vorherigen N/2 Zeilen erzeugt werden. Da Anweisungen in FIFO-Reihenfolge zu der Ausgabewarteschlange hinzugefügt werden, entspricht dies den vorherigen N/2 Anweisungen, die zu der Warteschlange hinzugefügt worden sind. Die rechte Seite von 9 veranschaulicht den Arbeitsablauf einer beispielhaften Ausführungsform der skalierbaren Abhängigkeitsmatrix im SMT-Modus. Unter dieser Bedingung überträgt der Multiplexer 902 die in dem Verfügbarkeits-Bit-Vektor 901A und 901B enthaltenen Verfügbarkeitsdaten zu den oberen rechten dreieckigen Abschnitten 903B bzw. 904B. Darüber hinaus werden in 9 die Statusvektoren 905A und 905B dargestellt.
  • Dementsprechend empfängt eine Anweisung entsprechend einem bestimmten Thread mit Abhängigkeitsdaten, die in einer Zeile der Abhängigkeitsmatrix enthalten sind, Verfügbarkeitsdaten entsprechend Ergebnissen, die durch Anweisungen in derselben Hälfte der Ausgabewarteschlange erzeugt werden, was sämtlichen Anweisungen desselben Threads entspricht. Die in 9 dargestellte beispielhafte Ausführungsform der vorliegenden Erfindung stellt folglich eine präzise Abhängigkeitsverfolgung über sämtliche Anweisungen eines bestimmten Threads im SMT-Modus hinweg und eine präzise Abhängigkeitsverfolgung über die vorherigen N/2 Anweisungen im ST-Modus mit einem unpräzisen Verfolgen älterer Abhängigkeiten bereit, die durch das Zusammenfassungs-Bit verfolgt werden.
  • Eine oder mehrere hierin beschriebene Ausführungsformen der vorliegenden Erfindung stellen eine skalierbare Abhängigkeitsmatrix bereit, wobei anstelle einer Notwendigkeit einer Abhängigkeitsmatrix, die N Zeilen mal N Spalten enthält, eine Abhängigkeitsmatrix aus N Zeilen mal M (z.B. M = N/2) Spalten bereitgestellt wird, wobei M kleiner als N ist. Darüber hinaus wird durch Einstellen der Anweisungen in die Ausgabewarteschlange in FIFO-Reihenfolge der Platz eingespart, der durch ein Alters-Array eingenommen wird, und kann eine Leistungsfähigkeit der Ausgabewarteschlange verbessert werden.
  • Unter Bezugnahme auf 10 wird ein Blockschaubild einer Abhängigkeitsmatrix 1000, die im ST-Modus und im SMT-Modus arbeitet, gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung allgemein dargestellt. Die in 10 dargestellten Abhängigkeitsmatrizen 1003 1004 ähneln den in 9 dargestellten, wobei sie eine andere Permutation der Zeilen aufweisen. Es ist die Topologie der in 9 veranschaulichten Verbindungen, die das gewünschte Verhalten im ST- und SMT-Modus mit dem einfachen Umschalten zwischen den Modi der Multiplexersteuerung ermöglicht. Es sind Permutationen der Zeilen in 9 möglich, die die Verbindungstopologie nicht ändern. Eine von zahlreichen beispielhaften Permutationen der Zeilen in 9, die die Verbindungstopologie nicht ändert, wird in 10 dargestellt.
  • Unter Bezugnahme auf 11 wird ein Blockschaubild eines Computersystems 1100 zum Implementieren einiger oder sämtlicher Aspekte einer Abhängigkeitsmatrix mit einem Zusammenfassungs-Bit in einem OoO-Prozessor gemäß einer oder mehrerer Ausführungsformen der vorliegenden Erfindung allgemein dargestellt. Die hierin beschriebene Verarbeitung kann in Hardware, Software (z.B. Firmware) oder einer Kombination von diesen implementiert werden. Bei einer beispielhaften Ausführungsform können die beschriebenen Verfahren zumindest zum Teil in Hardware implementiert sein und können ein Teil des Mikroprozessors eines Spezial- oder Universalcomputersystems 1100 wie etwa einer mobilen Einheit, eines Personal-Computers, eines Arbeitsplatzrechners, eines Minicomputers oder eines Großrechners sein.
  • Bei einer beispielhaften Ausführungsform, wie in 11 dargestellt, enthält das Computersystem 1100 einen Prozessor 1105, einen Speicher 1112, der mit einer Speichersteuereinheit 1115 verbunden ist, und eine oder mehrere Eingabeeinheiten 1145 und/oder Ausgabeeinheiten 1147 wie zum Bespiel Peripheriegeräte, die zur Datenübertragung über eine lokale E/A-Steuereinheit 1135 verbunden sind. Zu diesen Einheiten 1147 und 1145 können zum Beispiel ein Drucker, ein Scanner, ein Mikrofon und dergleichen zählen. Eine herkömmliche Tastatur 1150 und Maus 1155 können mit der E/A-Steuereinheit 1135 verbunden sein. Bei der E/A-Steuereinheit 1135 kann es sich zum Beispiel um einen oder mehrere Busse oder sonstige drahtgebundene oder drahtlose Verbindungen nach dem Stand der Technik handeln. Die E/A-Steuereinheit 1135 kann zusätzliche Elemente wie zum Beispiel Steuereinheiten, Puffer (Caches), Treiber, Zwischenverstärker und Empfänger aufweisen, die der Einfachheit halber weggelassen werden, um Datenübertragungen zu ermöglichen.
  • Die E/A-Einheiten 1147, 1145 können des Weiteren Einheiten, die Daten zwischen Ein- und Ausgängen übertragen, zum Beispiel Platten- und Bandspeicher, eine Netzwerk-Schnittstellenkarte (network interface card, NIC) oder einen Modulator/Demodulator (zum Zugreifen auf sonstige Dateien, Einheiten, Systeme oder ein Netzwerk), einen Hochfrequenz- (HF-) oder einen sonstigen Sender-Empfänger, eine Telefonschnittstelle, eine Brücke, einen Router und dergleichen enthalten.
  • Der Prozessor 1105 ist eine Hardware-Einheit zum Ausführen von Hardware-Anweisungen oder Software, im Besonderen von solchen, die in dem Speicher 1112 gespeichert sind. Der Prozessor 1105 kann ein nach Kundenwünschen angefertigter oder handelsüblicher Prozessor, eine Zentraleinheit (central processing unit, CPU), ein Hilfsprozessor von mehreren Prozessoren, die dem Computersystem 1100 zugehörig sind, ein Mikroprozessor auf Grundlage eines Halbleiters (in Form eines Mikro-Chips oder eines Chip-Satzes), ein Mikroprozessor oder eine sonstige Einheit zum Ausführen von Anweisungen sein. Der Prozessor 1105 kann einen Cache enthalten, zum Beispiel, ohne darauf beschränkt zu sein, einen Anweisungs-Cache, um ein Abrufen ausführbarer Anweisungen zu beschleunigen, einen Daten-Cache, um ein Abrufen und Speichern von Daten zu beschleunigen, und einen Adressumsetzpuffer (translation look-aside buffer, TLB), der dazu verwendet wird, ein Umsetzen von virtuellen in physische Adressen für ausführbare Anweisungen sowie für Daten zu beschleunigen. Der Cache kann als Hierarchie mehrerer Cache-Ebenen (L1, L2 usw.) organisiert sein.
  • Der Speicher 1112 kann ein flüchtiges Speicherelement (z.B. einen Direktzugriffsspeicher (random access memory, RAM, wie etwa einen DRAM, SRAM, SDRAM usw.)) und ein nichtflüchtiges Speicherelement (z.B. einen ROM, einen löschbaren, programmierbaren Festwertspeicher (erasable programmable read only memory, EPROM), einen elektrisch löschbaren, programmierbaren Festwertspeicher (electronically erasable programmable read only memory, EEPROM), einen programmierbaren Festwertspeicher (programmable read only memory, PROM), ein Band, eine CD-ROM (compact disc read only memory, Kompakt-Disk-Festwertspeicher), eine Platte, eine Diskette, ein Steckmodul, eine Kassette oder dergleichen usw.) oder Kombinationen von diesen enthalten. Darüber hinaus kann der Speicher 1112 elektronische, magnetische, optische oder sonstige Arten von Speichermedien umfassen. Es ist zu beachten, dass der Speicher 1112 eine verteilte Architektur aufweisen kann, wobei sich verschiedene Komponenten entfernt voneinander befinden, auf die jedoch durch den Prozessor 1105 zugegriffen werden kann.
  • Die Anweisungen in dem Speicher 1112 können ein oder mehrere getrennte Programme enthalten, von denen jedes eine geordnete Auflistung ausführbarer Anweisungen zum Implementieren logischer Funktionen aufweist. In dem Beispiel von 11 enthalten die Anweisungen in dem Speicher 1112 ein geeignetes Betriebssystem (operating system, OS) 1111. Das Betriebssystem 1111 kann im Wesentlichen die Ausführung sonstiger Computerprogramme steuern und stellt Zeitplanung, Eingabe-Ausgabe-Steuerung, Datei- und Datenverwaltung, Speicherverwaltung und Datenübertragungssteuerung sowie damit in Zusammenhang stehende Dienste bereit.
  • Zusätzliche Daten, darunter zum Beispiel Anweisungen für den Prozessor 1105 oder sonstige abrufbare Daten, können in dem Speicher 1127 gespeichert werden, bei dem es sich um eine Speichereinheit wie zum Beispiel ein Festplattenlaufwerk oder ein Halbleiterlaufwerk handeln kann. Die gespeicherten Anweisungen in dem Speicher 1112 oder in dem Speicher 1127 können diejenigen enthalten, die es dem Prozessor ermöglichen, einen oder mehrere Aspekte der Zuteilungssysteme und -verfahren dieser Offenbarung auszuführen.
  • Das Computersystem 1100 kann des Weiteren eine Anzeigesteuereinheit 1125 enthalten, die mit einer Anzeige 1130 verbunden ist. Bei einer beispielhaften Ausführungsform kann das Computersystem 1100 des Weiteren eine Netzwerk-Schnittstelle 1160 zum Verbinden mit einem Netzwerk 1165 enthalten. Bei dem Netzwerk 1165 kann es sich um ein Netzwerk auf Grundlage von IP zur Datenübertragung zwischen dem Computer 1100 und einem externen Server, Client und dergleichen über eine Breitbandverbindung handeln. Das Netzwerk 1165 überträgt und empfängt Daten zwischen dem Computersystem 1100 und externen Systemen. Bei einer beispielhaften Ausführungsform kann es sich bei dem Netzwerk 1165 um ein verwaltetes IP-Netzwerk handeln, das durch einen Diensteanbieter verwaltet wird. Das Netzwerk 1165 kann drahtlos implementiert werden, z.B. mithilfe von drahtlosen Protokollen und Technologien wie z.B. WiFi, WiMax usw. Bei dem Netzwerk 1165 kann es sich auch um ein Netzwerk mit Paketvermittlung wie zum Beispiel um ein lokales Netzwerk, ein Weitverkehrs-Netzwerk, ein Hochgeschwindigkeits-Netzwerk, das Internet oder einen sonstigen, ähnlichen Typ von Netzwerkumgebung handeln. Das Netzwerk 1165 kann ein festes drahtloses Netzwerk, ein drahtloses lokales Netzwerk (local area network, LAN), ein drahtloses Weitverkehrs-Netzwerk (wide area network, WAN), ein persönliches Netzwerk (personal area network, PAN), ein virtuelles privates Netzwerk (VPN), ein Intranet oder ein sonstiges geeignetes Netzwerksystem sein und kann Geräte zum Empfangen und Übertragen von Signalen enthalten.
  • Systeme und Verfahren zum Bereitstellen einer skalierbaren Abhängigkeitsmatrix, wie hierin beschrieben, können vollständig oder zum Teil in Computerprogrammprodukten oder in Computersystemen 1100 wie zum Beispiel dem in 11 veranschaulichten verkörpert sein.
  • Hierin werden verschiedene Ausführungsformen der Erfindung unter Bezugnahme auf die zugehörigen Zeichnungen beschrieben. Alternative Ausführungsformen der Erfindung können entwickelt werden, ohne vom Umfang dieser Erfindung abzuweichen. Verschiedene Verbindungen und Positionsbeziehungen (z.B. über, unter, angrenzend an usw.) zwischen Elementen werden in der folgenden Beschreibung und in den Zeichnungen dargelegt. Sofern nichts anderes angegeben ist, können diese Verbindungen und/oder Positionsbeziehungen direkt oder indirekt sein, und die vorliegende Erfindung soll in dieser Hinsicht nicht beschränkend sein. Dementsprechend kann sich eine Kopplung von Entitäten entweder auf eine direkte oder auf eine indirekte Kopplung beziehen, und eine Positionsbeziehung zwischen Entitäten kann eine direkte oder eine indirekte Positionsbeziehung sein. Darüber hinaus können die verschiedenen hierin beschriebenen Aufgaben und Prozessschritte in eine umfassendere Prozedur oder einen umfassenderen Prozess mit zusätzlichen Schritten oder Funktionen integriert werden, die hierin nicht ausführlich beschrieben werden.
  • Die folgenden Definitionen und Abkürzungen sind für die Auslegung der Ansprüche und der Beschreibung zu verwenden. So, wie die Begriffe hierin verwendet werden, sollen „weist auf“, „aufweisend“, „umfasst“, „umfassend“, „verfügt über“, „verfügend über“, „enthält“ oder „enthaltend“ oder jegliche sonstige Variante von diesen eine nichtausschließliche Einbeziehung abdecken. Beispielsweise ist eine Zusammensetzung, ein Gemisch, ein Prozess, ein Verfahren, ein Gegenstand oder eine Vorrichtung, der/die/das eine Auflistung von Elementen aufweist, nicht zwingend auf nur diese Elemente beschränkt, sondern kann sonstige Elemente enthalten, die nicht ausdrücklich aufgeführt oder einer/einem solchen Zusammensetzung, Gemisch, Prozess, Verfahren, Gegenstand oder Vorrichtung inhärent sind.
  • Darüber hinaus wird hierin der Begriff „beispielhaft“ in der Bedeutung „als Exempel, Beispiel oder Veranschaulichung dienend“ verwendet. Jegliche hierin als „beispielhaft“ beschriebene Ausführungsform oder Konstruktion soll nicht unbedingt als gegenüber sonstigen Ausführungsformen oder Konstruktionen bevorzugt oder vorteilhaft aufgefasst werden. Die Begriffe „zumindest ein(e)“ und „ein(e) oder mehrere“ können so verstanden werden, dass sie jede Ganzzahl enthalten, die größer als oder gleich eins ist, d.h., eins, zwei, drei, vier usw. Der Begriff „eine Mehrzahl“ kann so verstanden werden, dass er jede Ganzzahl enthält, die größer als oder gleich zwei ist, d.h., zwei, drei, vier, fünf usw. Der Begriff „Verbindung“ kann sowohl eine indirekte „Verbindung“ als auch eine direkte „Verbindung“ enthalten.
  • Die Begriffe „etwa“, „im Wesentlichen“ „ungefähr“ und Varianten davon sollen den Fehlergrad enthalten, der einer Messung der jeweiligen Menge auf Grundlage der zum Zeitpunkt des Einreichens der Anmeldung verfügbaren Ausrüstung zugehörig ist. Beispielsweise kann „etwa“ einen Bereich von ± 8 % oder 5 % oder 2 % eines bestimmten Wertes enthalten.
  • Der Kürze halber werden herkömmliche Techniken im Zusammenhang mit einem Herstellen und Verwenden von Aspekten der Erfindung hierin möglicherweise nicht ausführlich beschrieben. Im Besonderen sind verschiedene Aspekte von Datenverarbeitungssystemen und spezifischen Computerprogrammen zum Implementieren der verschiedenen hierin beschriebenen technischen Merkmale allgemein bekannt. Dementsprechend werden hierin der Kürze halber zahlreiche Einzelheiten einer herkömmlichen Implementierung nur kurz erwähnt oder ganz weggelassen, ohne die allgemein bekannten Einzelheiten des Systems und/oder der Prozesse bereitzustellen.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder-medien) enthalten, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Festwertspeicher (ROM), ein löschbarer programmierbarer Festwertspeicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Festwertspeicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. durch ein Glasfaserkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Router, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Java, Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, im Feld programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung erfolgten zur Veranschaulichung, sind jedoch nicht erschöpfend oder auf die offenbarten Ausführungsformen beschränkt gemeint. Zahlreiche Modifizierungen und Varianten sind für Fachleute ersichtlich, ohne vom Umfang der beschriebenen Ausführungsformen abzuweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder die technische Verbesserung gegenüber auf dem Markt erhältlichen Technologien am besten zu erläutern oder um anderen Fachleuten zu ermöglichen, die hierin offenbarten Ausführungsformen zu verstehen.

Claims (20)

  1. Auf einem Computer implementiertes Verfahren, das aufweist: Verfolgen von Abhängigkeiten zwischen Anweisungen in einer Ausgabewarteschlange, wobei das Verfolgen für jede Anweisung in der Ausgabewarteschlange aufweist: Erkennen, ob die Anweisung von jeder einer Schwellenanzahl von Anweisungen abhängig ist, die vor der Anweisung zu der Ausgabewarteschlange hinzugefügt worden sind, wobei eine Abhängigkeit zwischen der Anweisung und jeder der Schwellenanzahl von Anweisungen einzeln verfolgt wird; und Erkennen, ob die Anweisung von einer oder mehreren sonstigen Anweisungen abhängig ist, die vor der Anweisung zu der Ausgabewarteschlange hinzugefügt worden sind, die nicht in jeder der Schwellenanzahl von Anweisungen enthalten sind, wobei eine Abhängigkeit zwischen der Anweisung und jeder der sonstigen Anweisungen als eine Mehrzahl von Gruppen dadurch verfolgt wird, dass eine Abhängigkeit zwischen der Anweisung und zumindest einer der Anweisungen in der Gruppe erkannt wird, wobei jede der sonstigen Anweisungen zumindest einer der Gruppen zugewiesen ist; und Ausgeben von Anweisungen aus der Ausgabewarteschlange zumindest zum Teil auf Grundlage des Verfolgens.
  2. Auf einem Computer implementiertes Verfahren nach Anspruch 1, wobei Abhängigkeiten zwischen der Anweisung und jeder der Gruppen mithilfe eines unterschiedlichen Zusammenfassungs-Bits für jede der Gruppen verfolgt wird.
  3. Auf einem Computer implementiertes Verfahren nach Anspruch 2, wobei das Zusammenfassungs-Bit für jede der Gruppen gesetzt wird, um anzugeben, dass eine Abhängigkeit zwischen der Anweisung und zumindest einer Anweisung in der Gruppe besteht und das Zusammenfassungs-Bit anschließend an das Setzen des Zusammenfassungs-Bits zurückgesetzt wird, um anzugeben, dass die Abhängigkeit zwischen der Anweisung und der Gruppe nicht mehr besteht, was zumindest zum Teil auf einem Erkennen beruht, dass sämtliche der Anweisungen, die der Gruppe zugewiesen sind, aus der Ausgabewarteschlange ausgegeben worden sind.
  4. Auf einem Computer implementiertes Verfahren nach Anspruch 1, wobei eine Abhängigkeit zwischen der Anweisung und jeder der Schwellenanzahl von Anweisungen mithilfe eines getrennten Bits für jede der Schwellenanzahl von Anweisungen verfolgt wird.
  5. Auf einem Computer implementiertes Verfahren nach Anspruch 1, wobei es sich bei der Ausgabewarteschlange um eine First-in-first-out(FIFO)-Warteschlange handelt und die Anweisungen in der Ausgabewarteschlange auf Grundlage einer Reihenfolge geordnet sind, in der sie zu der Ausgabewarteschlange hinzugefügt worden sind.
  6. Auf einem Computer implementiertes Verfahren nach Anspruch 1, wobei die Anweisungen in der Ausgabewarteschlange von einem einzelnen Thread stammen, der durch einen Out-of-Order-Prozessor ausgeführt wird.
  7. Auf einem Computer implementiertes Verfahren nach Anspruch 1, wobei die Ausgabewarteschlange N Anweisungen enthält und die Schwellenanzahl von Anweisungen N/2 beträgt.
  8. Auf einem Computer implementiertes Verfahren nach Anspruch 1, wobei die Anweisungen in jeder der Schwellenanzahl von Anweisungen sämtliche Anweisungen in der Ausgabewarteschlange enthalten, die einem einzelnen Thread innerhalb einer Multi-Thread-Umgebung entsprechen.
  9. Auf einem Computer implementiertes Verfahren nach Anspruch 1, wobei die Schwellenanzahl programmierbar ist.
  10. System, das aufweist: eine Abhängigkeitsmatrix in einer Ausgabewarteschlange eines Out-of-Order-Prozessors; einen Speicher mit durch einen Computer lesbaren Anweisungen; und einen oder mehrere Prozessoren zum Ausführen der durch einen Computer lesbaren Anweisungen, wobei die durch einen Computer lesbaren Anweisungen den einen oder die mehreren Prozessoren so steuern, dass er Operationen durchführt, die aufweisen: Verfolgen von Abhängigkeiten zwischen Anweisungen in einer Ausgabewarteschlange, wobei das Verfolgen für jede Anweisung in der Ausgabewarteschlange aufweist: Erkennen, ob die Anweisung von jeder einer Schwellenanzahl von Anweisungen abhängig ist, die vor der Anweisung zu der Ausgabewarteschlange hinzugefügt worden sind, wobei eine Abhängigkeit zwischen der Anweisung und jeder der Schwellenanzahl von Anweisungen einzeln verfolgt wird; und Erkennen, ob die Anweisung von einer oder mehreren sonstigen Anweisungen abhängig ist, die vor der Anweisung zu der Ausgabewarteschlange hinzugefügt worden sind, die nicht in jeder der Schwellenanzahl von Anweisungen enthalten sind, wobei eine Abhängigkeit zwischen der Anweisung und jeder der sonstigen Anweisungen als eine Mehrzahl von Gruppen dadurch verfolgt wird, dass eine Abhängigkeit zwischen der Anweisung und zumindest einer der Anweisungen in der Gruppe erkannt wird, wobei jede der sonstigen Anweisungen zumindest einer der Gruppen zugewiesen ist; und Ausgeben von Anweisungen aus der Ausgabewarteschlange zumindest zum Teil auf Grundlage des Verfolgens.
  11. System nach Anspruch 10, wobei Abhängigkeiten zwischen der Anweisung und jeder der Gruppen mithilfe eines unterschiedlichen Zusammenfassungs-Bits für jede der Gruppen verfolgt wird.
  12. System nach Anspruch 11, wobei das einzelne Zusammenfassungs-Bit gesetzt wird, um anzugeben, dass eine Abhängigkeit zwischen der Anweisung und zumindest einer Anweisung in der einzelnen Gruppe von sonstigen Anweisungen besteht und das einzelne Zusammenfassungs-Bit anschließend an das Setzen des einzelnen Zusammenfassungs-Bits zurückgesetzt wird, um anzugeben, dass die Abhängigkeit zwischen der Anweisung und der Gruppe von sonstigen Anweisungen nicht mehr besteht, was zumindest zum Teil auf einem Erkennen beruht, dass sämtliche der sonstigen Anweisungen in der Gruppe von sonstigen Anweisungen aus der Ausgabewarteschlange ausgegeben worden sind.
  13. System nach Anspruch 10, wobei eine Abhängigkeit zwischen der Anweisung und jeder der Schwellenanzahl von Anweisungen mithilfe eines getrennten Bits für jede der Schwellenanzahl von Anweisungen verfolgt wird.
  14. System nach Anspruch 10, wobei es sich bei der Ausgabewarteschlange um eine First-in-first-out(FIFO)-Warteschlange handelt und die Anweisungen in der Ausgabewarteschlange auf Grundlage einer Reihenfolge geordnet sind, in der sie zu der Ausgabewarteschlange hinzugefügt worden sind.
  15. System nach Anspruch 10, wobei die Anweisungen in der Ausgabewarteschlange von einem einzelnen Thread stammen, der durch einen Out-of-Order-Prozessor ausgeführt wird.
  16. System nach Anspruch 10, wobei die Ausgabewarteschlange N Anweisungen enthält und die Schwellenanzahl von Anweisungen N/2 beträgt.
  17. System nach Anspruch 10, wobei die Anweisungen in jeder der Schwellenanzahl von Anweisungen sämtliche Anweisungen in der Ausgabewarteschlange enthalten, die einem einzelnen Thread innerhalb einer Multi-Thread-Umgebung entsprechen.
  18. System nach Anspruch 10, wobei die Schwellenanzahl programmierbar ist.
  19. Computerprogrammprodukt, das ein durch einen Computer lesbares Speichermedium aufweist, in dem Programmanweisungen verkörpert sind, wobei die Programmanweisungen durch einen Prozessor ausführbar sind, um zu bewirken, dass der Prozessor Operationen durchführt, die aufweisen: Verfolgen von Abhängigkeiten zwischen Anweisungen in einer Ausgabewarteschlange, wobei das Verfolgen für jede Anweisung in der Ausgabewarteschlange aufweist: Erkennen, ob die Anweisung von jeder einer Schwellenanzahl von Anweisungen abhängig ist, die vor der Anweisung zu der Ausgabewarteschlange hinzugefügt worden sind, wobei eine Abhängigkeit zwischen der Anweisung und jeder der Schwellenanzahl von Anweisungen einzeln verfolgt wird; und Erkennen, ob die Anweisung von einer oder mehreren sonstigen Anweisungen abhängig ist, die vor der Anweisung zu der Ausgabewarteschlange hinzugefügt worden sind, die nicht in jeder der Schwellenanzahl von Anweisungen enthalten sind, wobei eine Abhängigkeit zwischen der Anweisung und jeder der sonstigen Anweisungen als eine Mehrzahl von Gruppen dadurch verfolgt wird, dass eine Abhängigkeit zwischen der Anweisung und zumindest einer der Anweisungen in der Gruppe erkannt wird, wobei jede der sonstigen Anweisungen zumindest einer der Gruppen zugewiesen ist; und Ausgeben von Anweisungen aus der Ausgabewarteschlange zumindest zum Teil auf Grundlage des Verfolgens.
  20. Computerprogrammprodukt nach Anspruch 19, wobei Abhängigkeiten zwischen der Anweisung und jeder der Gruppen von einzelnen Zusammenfassungs-Bit für jede der Gruppen verfolgt wird; das Zusammenfassungs-Bit für jede der Gruppen gesetzt wird, um anzugeben, dass eine Abhängigkeit zwischen der Anweisung und zumindest einer Anweisung und mindestens einer sonstigen Anweisungen in der Gruppe besteht, und das einzelne Zusammenfassungs-Bit anschließend an das Setzen des einzelnen Zusammenfassungs-Bits zurückgesetzt wird, um anzugeben, dass die Abhängigkeit zwischen der Anweisung und der Gruppe von sonstigen Anweisungen nicht mehr besteht, was zumindest zum Teil auf einem Erkennen beruht, dass sämtliche der Anweisungen, die der Gruppe zugewiesen wurden, aus der Ausgabewarteschlange ausgegeben wurden.
DE112018006103.5T 2017-11-30 2018-11-09 Skalierbare Abhängigkeitsmatrix mit einem oder einer Mehrzahl von Zusammenfassungs-Bits in einem Out-Of-Order-Prozessor Active DE112018006103B4 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US15/826,746 2017-11-30
US15/826,746 US10564976B2 (en) 2017-11-30 2017-11-30 Scalable dependency matrix with multiple summary bits in an out-of-order processor
US15/826,734 US10929140B2 (en) 2017-11-30 2017-11-30 Scalable dependency matrix with a single summary bit in an out-of-order processor
US15/826,734 2017-11-30
PCT/IB2018/058801 WO2019106462A1 (en) 2017-11-30 2018-11-09 Scalable dependency matrix with one or a plurality of summary bits in an out-of-order processor

Publications (2)

Publication Number Publication Date
DE112018006103T5 DE112018006103T5 (de) 2020-09-17
DE112018006103B4 true DE112018006103B4 (de) 2022-04-21

Family

ID=66665478

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112018006103.5T Active DE112018006103B4 (de) 2017-11-30 2018-11-09 Skalierbare Abhängigkeitsmatrix mit einem oder einer Mehrzahl von Zusammenfassungs-Bits in einem Out-Of-Order-Prozessor

Country Status (5)

Country Link
JP (1) JP7403450B2 (de)
CN (1) CN111226196B (de)
DE (1) DE112018006103B4 (de)
GB (1) GB2581945B (de)
WO (1) WO2019106462A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114327643B (zh) * 2022-03-11 2022-06-21 上海聪链信息科技有限公司 机器指令预处理方法、电子设备及计算机可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120290818A1 (en) 2008-12-18 2012-11-15 Beaumont-Smith Andrew J Split Scheduler
US20140181476A1 (en) 2012-12-21 2014-06-26 Srikanth T. Srinivasan Scheduler Implementing Dependency Matrix Having Restricted Entries

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6988183B1 (en) * 1998-06-26 2006-01-17 Derek Chi-Lan Wong Methods for increasing instruction-level parallelism in microprocessors and digital system
US6463523B1 (en) * 1999-02-01 2002-10-08 Compaq Information Technologies Group, L.P. Method and apparatus for delaying the execution of dependent loads
US7634591B2 (en) * 2006-01-26 2009-12-15 International Business Machines Corporation Method and apparatus for tracking command order dependencies
CN101034345A (zh) * 2007-04-16 2007-09-12 中国人民解放军国防科学技术大学 流处理器中数据流、指令流的控制方法
US8099582B2 (en) * 2009-03-24 2012-01-17 International Business Machines Corporation Tracking deallocated load instructions using a dependence matrix
CN102360309B (zh) * 2011-09-29 2013-12-18 中国科学技术大学苏州研究院 片上多核异构系统的调度系统与调度执行方法
US20140344554A1 (en) * 2011-11-22 2014-11-20 Soft Machines, Inc. Microprocessor accelerated code optimizer and dependency reordering method
JP6520416B2 (ja) 2015-06-02 2019-05-29 富士通株式会社 演算処理装置および演算処理装置の処理方法
US10108417B2 (en) 2015-08-14 2018-10-23 Qualcomm Incorporated Storing narrow produced values for instruction operands directly in a register map in an out-of-order processor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120290818A1 (en) 2008-12-18 2012-11-15 Beaumont-Smith Andrew J Split Scheduler
US20140181476A1 (en) 2012-12-21 2014-06-26 Srikanth T. Srinivasan Scheduler Implementing Dependency Matrix Having Restricted Entries

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Safi, Elham and Moshovos, Andreas and Veneris, Andreas: 2009 International Symposium on Systems, Architectures, Modeling, and Simulation. In: A physical-level study of the compacted matrix instruction scheduler for dynamically-scheduled superscalar processors, 23.06.2009, S. 41-48. https://doi.org/10.1109/ICSAMOS.2009.5289240 [abgerufen am 20.08.2021]
Sassone, Peter G. [et.al.]: Matrix Scheduler Reloaded. In: SIGARCH Comput. Archit. News, 35, 09.06.2007, 2, S. 335–346. - ISSN 0163-5964. https://doi.org/10.1145/1273440.1250704 [abgerufen am 20.08.2021]

Also Published As

Publication number Publication date
JP7403450B2 (ja) 2023-12-22
CN111226196B (zh) 2023-12-01
DE112018006103T5 (de) 2020-09-17
GB2581945B (en) 2021-01-20
JP2021504791A (ja) 2021-02-15
CN111226196A (zh) 2020-06-02
GB2581945A (en) 2020-09-02
WO2019106462A1 (en) 2019-06-06
GB202009499D0 (en) 2020-08-05

Similar Documents

Publication Publication Date Title
DE112018006124B4 (de) ZUSAMMENFÜHREN VON EINTRÄGEN GLOBALER ABSCHLUSSTABELLEN IN EINEM OoO-PROZESSOR
DE112018006127B4 (de) Abschliessen von verbundenen einträgen einer globalen abschlusstabelle in einem out-of-order-prozessor
DE112010003595B4 (de) Verfahren, Systeme und maschinenverarbeitbares Medium zur Bereitstellung einer verteiltenPrädikatvorhersage
DE102014011332B4 (de) Priorisieren von anweisungen basierend auf typ
DE3751356T2 (de) Informationsverarbeitungssystem.
DE112013000486B4 (de) Anweisungsausgleich durch Anweisungsunsicherheit für Prozessoren mit mehreren Threads
DE69031991T2 (de) Verfahren und Gerät zur Beschleunigung von Verzweigungsbefehlen
DE69017178T2 (de) Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung.
DE69932066T2 (de) Mechanismus zur "store-to-load forwarding"
DE69833008T2 (de) Prozessor mit instruktionskodierung mittels eines schablonenfeldes
DE2714805C2 (de)
DE102014003799A1 (de) Systeme und Verfahren zur Übertragungseliminierung mit Bypass-Mehrfachinstanziierungstabelle
US10922087B2 (en) Block based allocation and deallocation of issue queue entries
DE69305366T2 (de) System und verfahren zum kennzeichnen von befehlen zur steuerung der befehlsausführung
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE112010004322T5 (de) Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge
DE112010005821T5 (de) Kontextwechsel
DE112013005368T5 (de) Prozessoren, verfahren und systeme für echtzeit-befehlsverfolgung
DE112020005987T5 (de) Setzen von prüfpunkten in akkumulatorregister-ergebnissen in einem mikroprozessor
DE102018002525A1 (de) Hybridatomaritätsunterstützung für einen binärübersetzungsbasierten mikroprozessor
DE102014017744A1 (de) Weiche partitionierung eines registerspeicher-caches
DE102013205059A1 (de) Durchführen von vordecodierzeitoptimierten Anweisungen zusammen mit Sequence Caching von vordecodierzeitoptimierten Anweisungen
DE102014103184A1 (de) Auf dynamischer Umbenennung basierende Register-Rekonfiguration einer Vektorregisterdatei
DE112018006103B4 (de) Skalierbare Abhängigkeitsmatrix mit einem oder einer Mehrzahl von Zusammenfassungs-Bits in einem Out-Of-Order-Prozessor
DE102014003687A1 (de) Vorrichtung und verfahren zum schutz von digitalem inhalt

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final