DE112018006127B4 - Abschliessen von verbundenen einträgen einer globalen abschlusstabelle in einem out-of-order-prozessor - Google Patents

Abschliessen von verbundenen einträgen einer globalen abschlusstabelle in einem out-of-order-prozessor Download PDF

Info

Publication number
DE112018006127B4
DE112018006127B4 DE112018006127.2T DE112018006127T DE112018006127B4 DE 112018006127 B4 DE112018006127 B4 DE 112018006127B4 DE 112018006127 T DE112018006127 T DE 112018006127T DE 112018006127 B4 DE112018006127 B4 DE 112018006127B4
Authority
DE
Germany
Prior art keywords
group
instructions
entry
gct
currently executing
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
DE112018006127.2T
Other languages
English (en)
Other versions
DE112018006127T5 (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
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112018006127T5 publication Critical patent/DE112018006127T5/de
Application granted granted Critical
Publication of DE112018006127B4 publication Critical patent/DE112018006127B4/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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

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:Erkennen in einer Anweisungssequenzbildungseinheit (ISU) eines Out-of-Order(OoO)-Prozessors, dass sämtliche Anweisungen in einer ersten Gruppe von momentan ausgeführten Anweisungen einen Status beendet aufweisen, wobei die erste Gruppe einem Eintrag in einer globalen Abschlusstabelle (GCT) zugehörig ist, die eine Zuteilungsreihenfolge und einen Status von Gruppen von momentan ausgeführten Anweisungen verfolgt; wobei die Zuteilungsreihenfolge angibt, dass es sich bei der ersten Gruppe von momentan ausgeführten Anweisungen um die älteste der GCT zugehörige Gruppe handelt;Ermitteln, dass es sich bei dem Eintrag in der GCT um einen zusammengefügten Eintrag handelt, der sowohl der ersten Gruppe von momentan ausgeführten Anweisungen als auch einer zweiten Gruppe von momentan ausgeführten Anweisungen zugehörig ist, die unmittelbar im Anschluss an die erste Gruppe von momentan ausgeführten Anweisungen zugeteilt worden ist, wobei die zweite Gruppe der momentan ausgeführten Anweisungen vor dem Zusammenführen der ersten Gruppe von momentan ausgeführten Anweisungen und der zweiten Gruppe von momentan ausgeführten Anweisungen einen eigenen Eintrag in der GCT hatte, wobei jeder GCT-Eintrag ein erstes Gruppenkennzeichen (GTAG = Group Tag) aufweist von dem ausgehend bei jedem Leeren alle jüngeren GTAGs eliminiert werden, und wobei der zweite GCT-Eintrag ein zweites Gruppenkennzeichen (GTAG = Group Tag) aufweist, von dem beim Abschließen einer Gruppe von Anweisungen ältere GTAGs festgeschrieben werden, und;Abschließen der ersten Gruppe von momentan ausgeführten Anweisungen und der zweiten Gruppe von momentan ausgeführten Anweisungen in einem einzigen Prozessorzyklus, wobei das Abschließen zumindest zum Teil auf einem Erkennen beruht, dass sämtliche Anweisungen des zusammengefügten Eintrags den Status beendet aufweisen, wobei das Abschließen ein Anfordern einer Freigabe von Ressourcen aufweist, die sowohl durch die erste als auch durch die zweite Gruppe von momentan ausgeführten Anweisungen genutzt wurden,wobei Felder jedes GCT-Eintrages zur Anzahl von Lade- und Speicheroperationen nach dem Zusammenführen eine Summe der entsprechenden Einträge vor dem Zusammenführen aufweisen, undwobei beim Festschreiben einer zusammengeführten Gruppe ausgehend vom ältesten GTAG alle Einträge in der zugehörigen GCT bis zu dem in dem zusammengeführten GCT-Eintrag angegebenen Abgeschlossen-Eintrag (Cmpl) festgeschrieben werden, undwobei das Abschließen ein Aktualisieren von Abschlussdaten bei dem entsprechenden GCT-Eintrag aufweist, wobei die Abschussdaten mindestens eines ausgewählt aus der nachfolgenden Gruppe aufweisen:eine Gesamtanzahl von Anweisungen in beiden Gruppen von Anweisungen,eine Gesamtanzahl von Ladevorgängen in beiden Gruppen von Anweisungen,eine Gesamtzahl von Speichervorgängen in beiden Gruppen von Anweisungen, unddas/die GTAG(s) für die zusammengefügte Gruppe.

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 ein Abschließen von verbundenen Einträgen einer globalen Abschlusstabelle (global completion table, GCT) in einem OoO-Prozessor.
  • In einem OoO-Prozessor teilt eine Anweisungssequenzbildungseinheit (instruction sequencing unit, ISU) Anweisungen in Gruppen 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. Abhängigkeiten zwischen Anweisungen werden mithilfe von Abhängigkeitsmatrizen verfolgt, die sich in den Ausgabewarteschlangen der ISU befinden, und eine GCT in der ISU verfolgt sämtliche momentan ausgeführten Anweisungen von der Zuteilung bis zum Abschluss.
  • In diesem Zusammenhang ist aus dem Dokument US 2004 / 0 210 743 A1 ein SMT-System bekannt, das eine gemeinsame genutzte GCT aufweist. Dabei wird die Leistungsfähigkeit der GCT dadurch verbessert, dass die GCT so konfiguriert wird, dass es einer Instruktionsgruppe jedes Thread erlaubt wird, gleichzeitig abgeschlossen zu werden.
  • Außerdem beschreibt das Dokument US 6 721 874 B1 eine Nutzung einer Fertigstellungstabelle in einen superskalaren Prozessor. Dabei ermöglicht der Prozessor mehrere Threads, denen die „Linked Lists“ zugeordnet werden. Dadurch werden Threads verkettet.
  • KURZDARSTELLUNG
  • Eine erfindungsgemäße Ausprägung des hier vorgestellten Konzeptes ist als Gegenstand des ersten Anspruches bzw. der unabhängigen Ansprüche spezifiziert. Weitere Ausführungsbeispiele sind durch die abhängigen Ansprüche angegeben. 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 den 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 Bereitstellen von verbundenen Einträgen einer globalen Abschlusstabelle (GCT) in dem OoO-Prozessor gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung enthält;
    • 2 ein Blockschaubild einer GCT, Verknüpfungen in der GCT und Gruppen-Tags (GTAGs) für GCT-Einträge zum Bereitstellen von verbundenen Einträgen einer globalen Abschlusstabelle in dem OoO-Prozessor gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt;
    • 3 einen Ablaufplan eines Verbindens von GCT-Einträgen in einem OoO-Prozessor gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt;
    • 4 ein Blockschaubild eines Verbindens von GCT-Einträgen in einem OoO-Prozessor gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt;
    • 5 ein Blockschaubild von Ressourcen, die durch Gruppen von Anweisungen in einem OoO-Prozessor genutzt werden, gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt;
    • 6 einen Ablaufplan zum Abschließen von verbundenen GCT-Einträgen in einem OoO-Prozessor gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt; und
    • 7 ein Blockschaubild eines Computersystems zum Implementieren einiger oder sämtlicher Aspekte von verbundenen GCT-Einträgen 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
  • Eine oder mehrere hierin beschriebene Ausführungsformen der vorliegenden Erfindung stellen verbundene Einträge in einer globalen Abschlusstabelle (GCT) eines Out-of-Order(OoO)-Prozessors bereit. Die verbundenen Einträge werden durch Kombinieren oder Zusammenfügen mehrerer Einträge in der GCT zu einem einzigen GCT-Eintrag erstellt. Wenn sämtliche der Anweisungen in den Gruppen, die dem zusammengefügten GCT-Eintrag entsprechen, beendet sind, sind sämtliche der Gruppen in dem zusammengefügten Eintrag gleichzeitig als einzelne Einheit abgeschlossen. Das Zusammenfügen von Gruppen zu einem einzigen Eintrag in der GCT gibt Platz in der GCT zur Verwendung durch sonstige Gruppen von Anweisungen frei und kann Engpässe verringern, die durch die Größe der GCT und Anweisungsgruppen mit langer Laufzeit verursacht werden.
  • Die GCT in einer Anweisungssequenzbildungseinheit (ISU) eines OoO-Prozessors verfolgt alle momentan ausgeführten Anweisungen von der Zuteilung bis zum Abschluss. Bei der Zuteilung werden Beendigungs-Bits in einer Gruppe von Anweisungen gesetzt, um die gültigen Anweisungen in der Gruppe abzubilden. Wenn eine Anweisung erfolgreich ausgeführt worden ist (z.B. ohne Ablehnung), kann sie durch Zurücksetzen des entsprechenden Beendigungs-Bits als beendet markiert werden. Wenn sämtliche der Anweisungen in einer Gruppe als beendet markiert sind und es sich bei der Gruppe um die älteste für einen jeweiligen Thread handelt, kann die Gruppe „abgeschlossen“ werden. Wenn eine Gruppe abgeschlossen wird, werden die Ergebnisse sämtlicher ihrer Anweisungen architektonisch sichtbar gemacht, und die durch ihre Anweisungen gesperrten Ressourcen werden freigegeben.
  • Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung wird eine Löscherzeugung ebenfalls durch die ISU verarbeitet, wobei die GCT Löschungen für sämtliche zu verwerfenden Gruppen zu einer Maske kombiniert, wobei ein Bit für jede Gruppe angeben soll, welche Gruppen gelöscht werden sollten. Die GCT kann darüber hinaus Teilgruppenlöschungen mithilfe einer Maske durchführen, wobei ein Bit für jede Anweisung in einer Gruppe angeben soll, welche Anweisungen innerhalb einer Gruppe gelöscht werden sollten.
  • Wie hierin beschrieben, kombinieren eine oder mehrere Ausführungsformen der vorliegenden Erfindung GCT-Einträge, um Platz freizugeben, oder Einträge in der GCT für zusätzliche Gruppen von Anweisungen. Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung können zwei Einträge kombiniert werden, wenn eine ältere Gruppe noch nicht zum Abschließen bereit ist, aber eine neuere Gruppe zum Abschließen bereit ist (z.B. sämtliche Anweisungen in der Gruppe ohne Probleme/Interrupt-Bits beendet worden sind). In diesem Fall können Daten von dem neueren Eintrag (dieser entspricht der neueren Gruppe von Anweisungen) in der GCT mit dem älteren Eintrag (dieser entspricht der älteren Gruppe von Anweisungen) in der GCT kombiniert werden, und der neuere Eintrag in der GCT kann zur Verwendung durch eine weitere Gruppe von neu zugeteilten Anweisungen freigegeben werden. Zusätzliche neuere Einträge können weiterhin mit dem älteren Eintrag (bei dem es sich um den ältesten Eintrag in der GCT handeln kann) kombiniert werden, während der ältere Eintrag eine Zeit lang blockiert ist. Die ältere Gruppe ist blockiert, wenn eine oder mehrere Anweisungen in der Gruppe, die durch den älteren Eintrag dargestellt wird oder diesem zugehörig ist, nicht beendet sind und die Gruppe nicht abgeschlossen werden kann. Beispielsweise ist es unter Umständen eine Zeit lang nicht möglich, die ältere Gruppe abzuschließen (d.h., sie ist eine Zeit lang blockiert), da sie eine Ladeanweisung aufweist, für die die Daten aus einem Hauptspeicher oder aus entfernt angeordneten Caches bezogen werden müssen, was lange dauern kann.
  • Wenn die ältere Gruppe schließlich abgeschlossen wird, gibt sie Einträge einer Ladeneuordnungs-Warteschlange (load reorder queue, LRQ), Einträge einer Speicherneuordnungs-Warteschlange (store reorder queue, SRQ), Einträge einer Tabelle effektiver Adressen (effective address table, EAT) und sonstige Ressourcen für sämtliche der Gruppen frei, die mit dem älteren GCT-Eintrag kombiniert oder zusammengefügt worden sind. Dies ermöglicht, dass GCT-Einträge, die neueren Gruppen von Anweisungen zugehörig sind, freigegeben werden (ihre Zuordnung aufgehoben wird) und sie wiederverwendet (neu zugeordnet) werden, ohne darauf warten zu müssen, dass eine oder mehrere Anweisungen mit längerer Laufzeit, die der älteren Gruppe zugehörig sind, abgeschlossen werden. Dies kann zu einem verminderten Auftreten von Zuteilungssperren führen, die dadurch verursacht werden, dass die GCT aufgrund eines Mangels an verfügbaren GCT-Einträgen einen Engpass darstellt, indem Ressourcen schneller freigegeben werden.
  • So, wie er hierin verwendet wird, bezieht sich der Begriff „neuere Gruppe“ auf eine Gruppe von Anweisungen, die in jüngerer Zeit oder nach einer Gruppe von Anweisungen in einer „älteren Gruppe“ zugeteilt wurden. So, wie sie hierin verwendet werden, beziehen sich die Begriffe „unmittelbar nachfolgende Gruppe“ oder „nächste neuere Gruppe“ auf die erste Gruppe von Anweisungen, die zugeteilt wurde, nachdem eine angegebene Gruppe von Anweisungen zugeteilt wurde. So, wie sie hierin verwendet werden, beziehen sich die Begriffe „unmittelbar vorhergehende Gruppe“ oder „nächste ältere Gruppe“ auf die Gruppe von Anweisungen, die unmittelbar vor der Zuteilung einer angegebenen Gruppe von Anweisungen zugeteilt wurde. So, wie er hierin verwendet wird, bezieht sich der Begriff „älteste Gruppe“ auf die Gruppe von Anweisungen in der ISU mit der frühesten Zuteilungszeit, das heißt, die Gruppe von Anweisungen, die sich über den längsten Zeitraum hinweg in der GCT befunden hat.
  • Unter Bezugnahme auf 1 wird ein Blockschaubild eines Systems 100, das eine Anweisungssequenzbildungseinheit (ISU) eines Out-of-Order(OoO)-Prozessors zum Bereitstellen einer verbundenen GCT in einem OoO-Prozessor enthält, gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung allgemein dargestellt. Das in 1 dargestellte System 100 enthält eine Anweisungsabrufeinheit/Anweisungsentschlüsselungseinheit (instruction fetch unit/instruction decode unit, IFU/IDU) 106, die eine Gruppe von 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 der vorliegenden Erfindung 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 der vorliegenden Erfindung überprüft der Einrichtungsblock 108, ob ausreichende Ressourcen wie zum Beispiel Einträge in den Ausgabewarteschlangen, der Abschlusstabelle, den Zuordnungsfunktionen und sonstige Ressourcen 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 (vector-scalar 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-ISQ 116, die logische CR- und Verschiebeanweisungen zusammen mit den physischen Registerpositionen der zugehörigen CR-Register von der CR-Zuordnungsfunktion empfängt und verfolgt und die Anweisungen an die Anweisungsabrufeinheit (IFU) 124 ausgibt 120, um logische CR-Anweisungen und Verschiebeanweisungen 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 und diese ausführt. 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 Zählereinheit (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(Simultan-Multi-Thread)-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 der vorliegenden Erfindung 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 der vorliegenden Erfindung, 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 200 einer GCT, Verknüpfungen zum Ordnen von Einträgen in der GCT und Gruppen-Tags (GTAGs) zum Erkennen von GCT-Einträgen gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung allgemein dargestellt. Block 202 stellt eine GCT 2022, eine Verknüpfungstabelle 2024 und eine GTAG-Tabelle 2026 vor einem Zusammenfügen eines Eintrags „17“ (der einer neueren Gruppe von Anweisungen zugehörig ist) mit einem Eintrag „4“ (der einer älteren Gruppe von Anweisungen zugehörig ist) dar. Block 204 von 2 stellt eine GCT 2042, eine Verknüpfungstabelle 2044 und eine GTAG-Tabelle 2046 dar, nachdem der Inhalt des Eintrags „17“ der GCT mit dem Eintrag „4“ zusammengefügt worden ist.
  • Wie zuvor beschrieben, verfolgt eine GCT 204 momentan ausgeführte Anweisungen nach der Zuteilung und bis zum Abschluss. Wenn eine Gruppe von Anweisungen zugeteilt wird, wird der Gruppe ein GTAG zugeordnet, das einem Eintrag in der GCT 204 entspricht und die Gruppe von Anweisungen kennzeichnet. Die GTAGs werden der Reihe nach zugeordnet und durch eine oder mehrere hierin beschriebene Ausführungsformen dazu genutzt, eine Zuteilungsreihenfolge der Gruppen von momentan ausgeführten Anweisungen zu verfolgen. Momentan ausgeführten Anweisungen zugehörige Ressourcen können das GTAG dazu verwenden zu erkennen, welcher Gruppe von Anweisungen jede Ressource zugeordnet ist. Wenn eine Gruppe von Anweisungen abgeschlossen ist, kann ein Abschluss-GTAG übertragen werden, so dass Ressourcen, die der Gruppe, die abgeschlossen wird, zugehörig sind, freigegeben und durch neue Anweisungen wiederverwendet werden können.
  • In einem OoO-Prozessor können Anweisungen vor einem Abschließen oder stattdessen gelöscht werden. Zu Gründen für ein Löschen von spekulativen Anweisungen aus der Anweisungs-Pipeline zählen, ohne darauf beschränkt zu sein: eine falsche Voraussage von Verzweigungen, eine Erkennung eines Risikos einer OoO-Ausführung von Lade-/Speichervorgängen, eine Ausführung einer Kontextsynchronisierungsanweisung und Ausnahmebedingungen. Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung überträgt die GCT Löschgruppen-GTAGs sowohl für vollständige als auch Teilgruppenlöschungen, so dass Ressourcen, die den gelöschten Anweisungen zugehörig sind, freigegeben und durch neue Anweisungen wiederverwendet werden können. Bei einer Teilgruppenlöschung kann das GTAG mit einer Maske verbunden sein, die angibt, welche Anweisungen gelöscht werden.
  • Wie zuvor beschrieben, stellt Block 202 eine GCT 2022, eine Verknüpfungstabelle 2024 und eine GTAG-Tabelle 2026 vor einem Zusammenfügen eines Eintrags „17“ (der einer nächsten neueren Gruppe von Anweisungen als der Eintrag „4“ zugehörig ist) mit einem Eintrag „4“ (der einer nächsten älteren Gruppe von Anweisungen als der Eintrag „17“ zugehörig ist) dar. Für jeden Eintrag in der GCT 2022 speichert die Verknüpfungstabelle 2024 Vorwärtsverknüpfungen zu unmittelbar nachfolgenden Gruppen (neueren Gruppen) von momentan ausgeführten Anweisungen und Rückwärtsverknüpfungen zu unmittelbar vorhergehenden Gruppen (älteren Gruppen) von momentan ausgeführten Anweisungen. Darüber hinaus wird in Block 202 von 2 eine GTAG-Tabelle 2026 dargestellt, die für jeden Eintrag in der GCT 2022 ein GTAG, das zu übertragen ist, wenn die Gruppe abgeschlossen ist (Spalte mit der Bezeichnung „Abschl“), sowie ein GTAG enthält, das zu verwenden ist, wenn sämtliche oder ein Teilsatz der Gruppe gelöscht werden (Spalte mit der Bezeichnung „Lö“).
  • Wie in Block 202 von 2 dargestellt, handelt es sich bei der momentan ausgeführten Gruppe von Anweisungen bei dem Eintrag „4“ in der GCT 2022 um die älteste Gruppe von momentan ausgeführten Anweisungen (sie weist keine Rückwärtsverknüpfung auf) und handelt es sich bei der momentan ausgeführten Gruppe von Anweisungen bei dem Eintrag „31“ in der GCT 2022 um die neueste Gruppe von momentan ausgeführten Anweisungen in der GCT 2022 (sie weist keine Vorwärtsverknüpfung auf). In der Zuteilungsreihenfolge der Gruppen von momentan ausgeführten Anweisungen, die in Block 202 von 2 dargestellt wird, beginnt die Gruppe von momentan ausgeführten Anweisungen mit dem ältesten Eintrag in der GCT 2022 bei dem GCT-Eintrag „4“ mit einem GTAG „3“, es folgt die Gruppe von momentan ausgeführten Anweisungen bei dem GCT-Eintrag „17“ mit einem GTAG „4“, die Gruppe von momentan ausgeführten Anweisungen bei dem GCT-Eintrag „11“ mit einem GTAG „5“ und die Gruppe von momentan ausgeführten Anweisungen bei dem GCT-Eintrag „31“ mit einem GTAG „6“.
  • Block 204 in 2 stellt eine GCT 2042, eine Verknüpfungstabelle 2044 und eine GTAG-Tabelle 2046 dar, nachdem der Eintrag „17“ (der einer nächsten neueren Gruppe von Anweisungen als der Eintrag „4“ zugehörig ist) mit einem Eintrag „4“ (der einer nächsten älteren Gruppe von Anweisungen als der Eintrag „17“ zugehörig ist) zusammengefügt worden ist. Wenn das Zusammenfügen abgeschlossen ist, enthält der zusammengefügte Eintrag „4“ in der GCT 2042 Abschlussdaten für die Gruppe bei dem Eintrag „17“ (mit einem GTAG „4“) vor dem Zusammenfügen und für die Gruppe bei dem Eintrag „4“ (mit einem GTAG „3“). Die Abschlussdaten können zum Abschließen beider Gruppen von Anweisungen verwendet werden, nachdem sämtliche der Anweisungen in der momentan ausgeführten Gruppe, die dem Eintrag „4“ vor dem Zusammenfügen zugehörig ist, beendet worden sind. Die Abschlussdaten können die Gesamtanzahl von Speichervorgängen in beiden Gruppen von Anweisungen; die Gesamtanzahl von Ladevorgängen in beiden Gruppen von Anweisungen, die Gesamtanzahl von Anweisungen in beiden Gruppen von Anweisungen und das/die GTAG(s) für die zusammengefügte Gruppe enthalten, ohne darauf beschränkt zu sein. Wie in Block 204 von 2 dargestellt, ist der Eintrag „17“ in der GCT 2042 nach dem Zusammenfügen der Einträge „17“ und „4“ frei, oder seine Zuordnung ist aufgehoben. In der Zuteilungsreihenfolge der Gruppen von momentan ausgeführten Anweisungen, die in Block 204 von 2 dargestellt wird (wie durch die Verknüpfungstabelle 2044 angegeben), beginnt die zusammengefügte Gruppe von momentan ausgeführten Anweisungen mit dem ältesten Eintrag in der GCT 2024 bei dem GCT-Eintrag „4“ mit einem GTAG „3“ für Löschungen und einem GTAG „4“ für Abschlüsse, es folgt die Gruppe von momentan ausgeführten Anweisungen bei dem GCT-Eintrag „11“ mit einem GTAG „5“ und die Gruppe von momentan ausgeführten Anweisungen bei dem GCT-Eintrag „31“ mit einem GTAG „6“.
  • Die zusammengefügte Gruppe von momentan ausgeführten Anweisungen bei dem GCT-Eintrag „4“ verwendet ein anderes GTAG, wenn die ältere Gruppe gelöscht statt abgeschlossen wird. Gemäß einer oder mehreren Ausführungsformen werden, wenn eine zusammengefügte Gruppe abgeschlossen wird, jegliche Ressourcen freigegeben, die einem GTAG der neueren Gruppe von Anweisungen, die zusammengefügt wurden, oder niedrigeren (d.h., älteren Anweisungen) zugehörig sind. Dies ist der Grund, warum das Abschluss-GTAG des zusammengefügten GCT-Eintrags geändert wird, um das GTAG der neueren Gruppe von Anweisungen anzugeben. Dies steht im Gegensatz zu der Situation, wenn eine zusammengefügte Gruppe gelöscht wird, was bewirkt, dass jegliche Ressourcen, die einem GTAG der gelöschten Gruppe von Anweisungen oder höheren (d.h., neueren Anweisungen) zugehörig sind, freigegeben werden. Da in einer zusammengefügten Gruppe sämtliche Anweisungen aus der neueren Gruppe bereits beendet sind, ist möglicherweise nur eine Anwendung aus der älteren Gruppe noch zu beenden und kann folglich eine Löschung bewirken. Dies ist der Grund, warum das Lösch-GTAG des zusammengefügten GCT-Eintrags unverändert bleibt und das GTAG der älteren Gruppe von Anweisungen angibt.
  • Die in Block 202 von 2 dargestellte GCT 2022 enthält zweiunddreißig Einträge, die durch sämtliche aktiven Threads dynamisch gemeinsam genutzt werden können. In einem Einzel-Thread(ST)-Modus entspricht jeder GCT-Eintrag einer Gruppe von Anweisungen. In einem Multi-Thread(MT)-Modus (z.B. Simultan-MT oder „SMT“) kann jeder GCT-Eintrag bis zu zwei Zuteilungsgruppen, beide von demselben Thread, enthalten. Jeder Eintrag in der GCT 2022 enthält Beendigung-Bits für jede Anweisung in der Gruppe, die in dem Eintrag enthalten ist. Eine beliebige Anzahl von Einträgen (z.B. 16, 64, 100, 128 und 256) kann in der GCT 2022 gespeichert sein, und zweiunddreißig soll eine nichtbeschränkende beispielhafte Anzahl von Einträgen zu Erörterungszwecken sein.
  • Unter Bezugnahme auf 3 wird ein Ablaufplan 300 eines Verbindens von GCT-Einträgen in einem OoO-Prozessor gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung allgemein dargestellt. In Block 302 wird ein GTAG jeder Gruppe von zugeteilten Anweisungen der Reihe nach zugewiesen, um ein Verfolgen der Zuteilungsreihenfolge der Gruppen von zugeteilten Anweisungen, die momentan ausgeführt werden, zu unterstützen. In Block 304 wird eine neuere Gruppe (die z.B. zum Zeitpunkt T+1 zugeteilt wird) von momentan ausgeführten Anweisungen zum Zusammenfügen mit einer älteren Gruppe (die z.B. zum Zeitpunkt T zugeteilt worden ist) von momentan ausgeführten Anweisungen erkannt. Das Erkennen kann ein Erkennen enthalten, dass sämtliche Anweisungen in der neueren Gruppe einen Status beendet aufweisen. Die neuere Gruppe kann einem ersten zugeordneten Eintrag in einer GCT zugehörig sein, und die ältere Gruppe, die unmittelbar vor der neueren Gruppe zugeteilt wurde (sie sind aufeinanderfolgend), kann einem zweiten zugeordneten Eintrag in der GCT zugehörig sein.
  • In Block 306 wird der Inhalt des Eintrags in der GCT, der der neueren Gruppe zugehörig ist, mit dem Inhalt des Eintrags in der GCT, der der älteren, unbeendeten Gruppe von Anweisungen zugehörig ist, zusammengefügt, um einen zusammengefügten, zugeordneten Eintrag zu erzeugen, der Abschlussdaten für beide Gruppen von momentan ausgeführten Anweisungen enthält. In Block 308 werden die Rückwärts- und Vorwärtsverknüpfungen zwischen GCT-Einträgen aktualisiert, um Verknüpfungen zu der neueren Gruppe zu entfernen. In Block 310 wird das Abschluss-GTAG der zusammengefügten Gruppe durch das GTAG der neueren Gruppe zum Abschluss der zusammengefügten älteren Gruppe ersetzt, wohingegen keine Änderung an dem Lösch-GTAG der zusammengefügten Gruppe vorgenommen wird. In Block 312 wird der GCT-Eintrag, der der neueren Gruppe zugehörig ist, freigegeben und zur Verwendung durch eine neue Gruppe von Anweisungen verfügbar.
  • Unter Bezugnahme auf 4 wird ein Blockschaubild 400 eines Verbindens von GCT-Einträgen in einem OoO-Prozessor gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung allgemein dargestellt. Block 402 stellt eine verknüpfte Liste dar, bei der es sich um eine Möglichkeit zum logischen Darstellen der GCT 2022, der Verknüpfungstabelle 2024 und der GTAG-Tabelle 2026 handelt, die in 2 dargestellt werden. Block 404 stellt eine verknüpfte Liste dar, die die GCT 2042, die Verknüpfungstabelle 2044 und die GTAG-Tabelle 2046 darstellt, die in 2 dargestellt werden, nachdem die GCT-Einträge „17“ und „4“ zu einem einzigen zusammengefügten Eintrag „4“ zusammengefügt worden sind. Wie in Block 406 von 4 dargestellt, kann das Zusammenfügen von Einträgen von neueren Gruppen mit älteren Gruppen fortgesetzt werden, wobei der GCT-Eintrag „11“ mit dem zusammengefügten Eintrag „4“ zumindest zum Teil auf Grundlage eines Erkennens zusammengefügt wird, dass sämtliche der Anweisungen in der Gruppe von Anweisungen, die dem GCT-Eintrag „11“ zugehörig sind, einen Status beendet aufweisen. Nachdem das Zusammenfügen abgeschlossen ist, kann der GCT-Eintrag „11“ wiederverwendet und einer neuen Gruppe von Anweisungen zugeordnet werden. Zur Veranschaulichung stellt 4 einen neueren GCT-Eintrag dar, der mit dem ältesten Eintrag in der GCT zusammengefügt wird. Der Mechanismus funktioniert jedoch ebenfalls, wenn es sich bei dem älteren der beiden Einträge, die zusammengefügt werden, nicht um den ältesten Eintrag in der GCT handelt.
  • Unter Bezugnahme auf 5 wird ein Blockschaubild 500 von beispielhaften Ressourcen, die durch Gruppen von Anweisungen in einem OoO-Prozessor genutzt werden, gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung allgemein dargestellt. 5 enthält Ressourcen 502 in First-in-First-out(FIFO, zuerst hinein, zuerst hinaus)-Reihenfolge, auf die auf Grundlage der Zuteilungsreihenfolge von Anweisungen der Reihe nach zugegriffen wird, und Ressourcen 504 in zufälliger Reihenfolge, die Gruppen von Anweisungen in einer zufälligen Reihenfolge zugewiesen werden. Die Ladeneuordnungs-Warteschlange (LRQ) und die Speicherneuordnungs-Warteschlange (SRQ) sind Beispiele für Ressourcen 502 in FIFO-Reihenfolge. Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung ist die LRQ durch eine Zuordnung und Freigabe unter Einhaltung der Reihenfolge (der Zuteilungsreihenfolge) gekennzeichnet, werden die Endzeiger (die auf die ältesten Einträge zeigen) geändert, wenn eine Gruppe von Anweisungen abgeschlossen wird, und wird die LRQje Thread unterteilt. Wenn eine Gruppe von Anweisungen zum Beispiel zwei Ladeanweisungen aufweist und die Gruppe abgeschlossen wird, wird der Endzeiger der LRQ um zwei Einträge in der Warteschlange vorgerückt. Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung wird, wenn eine neuere Anweisungsgruppe mit der nächsten älteren Anweisungsgruppe zusammengefügt wird, die Anzahl von Ladungen in der neueren Anweisungsgruppe zu der Anzahl von Ladungen in der älteren Anweisungsgruppe hinzugefügt. Wenn die zusammengefügte Gruppe abgeschlossen wird, wird der LRQ-Endzeiger so angepasst, dass er Ladungen in beiden Anweisungsgruppen berücksichtigt. Die SRQ ähnelt der LRQ, jedoch kann eine Freigabe nach Speicherlöschungen von der SRQ in den Cache und das Speicherteilsystem erfolgen. Eine weitere Ressource, bei der es sich um eine Ressource 502 in FIFO-Reihenfolge handeln kann, ist eine Tabelle effektiver Adressen (EAT), die durch eine Zuordnung und Freigabe unter Einhaltung der Reihenfolge gekennzeichnet ist, wobei die Endzeiger für abschließende Threads geändert werden.
  • Die in 5 dargestellte Registerzuordnungsfunktionstabelle ist ein Beispiel für eine Ressource 504 in zufälliger Reihenfolge. Die Registerzuordnungsfunktionstabelle kann durch die in 1 dargestellte Zuordnungsfunktion 110 so erzeugt werden, dass Anweisungsgruppen (die durch GTAGs gekennzeichnet sind) mit physischen Registern (einem Eintrag für jedes physische Register) korreliert werden. Wie in der Registerzuordnungsfunktionstabelle in 5 dargestellt, sind „R“ Register vorhanden, und die Anweisungsgruppe, die einem GTAG „GTAG X“ zugehörig ist, verwendet physische Register „1“ und „4“, und die Anweisungsgruppe, die einem GTAG „GTAG Y“ zugehörig ist, verwendet physische Register „2“, „3“ und „7“. Wenn eine Gruppe von Anweisungen abgeschlossen wird und das Abschluss-GTAG übertragen wird, werden sämtliche physischen Register, die GTAGs zugehörig sind, die gleich wie oder kleiner (d.h., ältere Anweisungsgruppen) als das übertragene GTAG sind, zur Verwendung durch neue Anweisungsgruppen freigegeben. Wenn eine Gruppe von Anweisungen gelöscht wird und das Lösch-GTAG übertragen wird, können physische Register, die GTAGs zugehörig sind, die gleich wie oder größer (d.h., neuere Anweisungsgruppen) als das übertragene GTAG sind, zur Verwendung durch neue Anweisungsgruppen freigegeben werden. Auf diese Weise kann die Registerzuordnungsfunktionstabelle Einträge zur Verwendung durch neu zugeteilte Anweisungen zumindest zum Teil auf Grundlage eines Lösch- oder Abschluss-Anzeigers frei geben, der zum Beispiel zusammen mit dem Lösch-GTAG oder dem Abschluss-GTAG von einer GCT empfangen wird.
  • Unter Bezugnahme auf 6 wird ein Ablaufplan 600 zum Abschließen von verbundenen GCT-Einträgen in einem OoO-Prozessor gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung allgemein dargestellt. Eine oder mehrere Ausführungsformen der vorliegenden Erfindung ermöglichen, dass ein einzelner Abschluss zwei oder mehr Gruppen von Anweisungen überprüft/abschließt. Eine oder mehrere Ausführungsformen der vorliegenden Erfindung verarbeiten das Freigeben von Ressourcen, wenn ein GCT-Eintrag, der eine Kombination von zwei oder mehr verbundenen GCT-Einträgen abbildet, abgeschlossen wird. Wenn ein verbundener GCT-Eintrag abgeschlossen wird, kann eine große Anzahl von Ressourcen freigegeben werden und für eine Zuteilung von neuen Anweisungen verfügbar werden. Ressourcen, die durch einen First-in-First-out(FIFO)-Zuordnungs-/Freigabe-Mechanismus verwaltet werden, können durch Verschieben des Endzeigers um die Menge von freigegebenen Ressourcen (wie zuvor für den Mechanismus zum Freigeben von LRQ-Ressourcen beschrieben) leicht freigegeben werden. Für Ressourcen, die in einer zufälligen Reihenfolge zugeordnet/freigegeben werden (z.B. eine Registerzuordnungsfunktionstabelle), kann eine Zustandsmaschine eingesetzt werden, um die übertragene GTAG-Nummer mit den GTAG-Werten in jedem Zuordnungsfunktionseintrag zu vergleichen, um zu ermitteln, welche Zuordnungsfunktionseinträge freizugeben sind. Wenn es zum Beispiel zu einem Abschluss kommt, kann das Abschluss-GTAG, das übertragen wird, mit dem GTAG-Wert in jedem Eintrag in der Registerzuordnungsfunktionstabelle verglichen werden, um zu ermitteln, ob der Eintrag der Zuordnungsfunktionstabelle einen GTAG-Wert aufweist, der gleich wie oder kleiner als das Abschluss-GTAG ist, und den Eintrag freizugeben. Wenn es zu einer Löschung kommt, kann das Lösch-GTAG, das übertragen wird, in ähnlicher Weise mit jedem Eintrag in der Registerzuordnungsfunktionstabelle verglichen werden, um zu ermitteln, ob der Eintrag der Zuordnungsfunktionstabelle einen GTAG-Wert aufweist, der gleich wie oder größer als das Lösch-GTAG ist, und den Eintrag freizugeben.
  • Der Status von Anweisungen in Gruppen von momentan ausgeführten Anweisungen wird in Block 602 des in 6 dargestellten Prozessablaufs überwacht. Wenn in Block 604 ermittelt wird, dass sämtliche der Anweisungen in einer Gruppe, die einem zusammengefügten Eintrag in der GCT zugehörig ist, beendet sind, wird die Verarbeitung in Block 606 fortgesetzt, wo eine Abschlussverarbeitung für sämtliche Gruppen in dem zusammengefügten Eintrag durchgeführt wird. Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung kann die Abschlussverarbeitung ein Anfordern einer Freigabe von Ressourcen, die durch sämtliche der Gruppen von Anweisungen in dem zusammengefügten Eintrag genutzt werden, und ein Freigeben dieser enthalten. Wie zuvor beschrieben, können die Ressourcen eine First-in-First-out(FIFO)-Ressource enthalten, und das Anfordern einer Freigabe kann eine Anforderung zum Verschieben eines Zeigers zu einer angegebenen Position in der FIFO-Ressource enthalten. Wie ebenfalls zuvor beschrieben, können die Ressourcen eine Ressource in zufälliger Reihenfolge enthalten, und das Anfordern einer Freigabe kann eine Anforderung zum Entfernen von Einträgen enthalten, die bestimmten Tags (z.B. GTAGs, die kleiner als ein angegebener Wert sind) zugehörig sind.
  • Wenn in Block 604 ermittelt wird, dass sämtliche der Anweisungen in einer Gruppe, die einem zusammengefügten Eintrag in der GCT zugehörig ist, nicht beendet sind, wird die Verarbeitung in Block 608 fortgesetzt, wo ermittelt wird, ob sämtliche oder ein Teilsatz von Anweisungen in einer Gruppe, die einem zusammengefügten Eintrag zugehörig ist, gelöscht werden sollte (ob z.B. eine unbeendete Verzweigungsanweisung in der Gruppe nun ausgeführt worden ist und festgestellt worden ist, dass sie falsch vorhergesagt wurde, wodurch eine Löschung sämtlicher der Anweisungen von dem Thread unmittelbar nach der falsch vorhergesagten Verzweigungsanweisung erforderlich wird). Wenn in Block 608 ermittelt wird, dass Anweisungen in einer Gruppe, die einem zusammengefügten Eintrag in der GCT zugehörig ist, gelöscht werden sollten, wird die Verarbeitung in Block 610 fortgesetzt, wo eine Löschverarbeitung für sämtliche Gruppen in dem zusammengefügten Eintrag durchgeführt wird. Wenn in Block 608 ermittelt wird, dass Anweisungen in einer Gruppe, die einem zusammengefügten Eintrag in der GCT zugehörig ist, nicht gelöscht werden sollten, wird die Verarbeitung in Block 602 mit einem Überwachen des Status von momentan ausgeführten Anweisungen fortgesetzt.
  • Die in 6 dargestellte Verarbeitung führt einen schnellen Abschluss durch, indem zugelassen wird, dass Ressourcen, die mehreren GTAGs zugeordnet sind, die einem verbundenen GCT-Eintrag zugehörig sind, in einem Zyklus freigegeben werden. Wenn zum Beispiel ein Gruppenabschluss je Thread je Prozessorzyklus zulässig ist und wenn vier verbundene Gruppen von den vier Threads in einem SMT4-Kern bereit sind, abgeschlossen zu werden, und wenn diese vier verbundenen Gruppen 8 GTAGs darstellen, können Ressourcen, die sämtlichen 8 GTAGs zugehörig sind, in einem Zyklus freigegeben werden (und eine Blockierung einer Anweisungszuteilung aufheben).
  • Unter Bezugnahme auf 7 wird ein Blockschaubild eines Computersystems zum Implementieren einiger oder sämtlicher Aspekte zum Bereitstellen von verbundenen GCT-Einträgen in einem OoO-Prozessor gemäß einer oder mehreren 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 700 wie etwa einer mobilen Einheit, eines Personal-Computers, eines Arbeitsplatzrechners, eines Minicomputers oder eines Großrechners sein.
  • Bei einer beispielhaften Ausführungsform, wie in 7 dargestellt, enthält das Computersystem 700 einen Prozessor 705, einen Speicher 712, der mit einer Speichersteuereinheit 715 verbunden ist, und eine oder mehrere Eingabeeinheiten 745 und/oder Ausgabeeinheiten 747 wie zum Bespiel Peripheriegeräte, die zur Datenübertragung über eine lokale E/A-Steuereinheit 735 verbunden sind. Zu diesen Einheiten 747 und 745 können zum Beispiel ein Drucker, ein Scanner, ein Mikrofon und dergleichen zählen. Eine herkömmliche Tastatur 750 und Maus 755 können mit der E/A-Steuereinheit 735 verbunden sein. Bei der E/A-Steuereinheit 735 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 735 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 747, 745 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 705 ist eine Hardware-Einheit zum Ausführen von Hardware-Anweisungen oder Software, im Besonderen von solchen, die in dem Speicher 712 gespeichert sind. Der Prozessor 705 kann ein nach Kundenwünschen angefertigter oder handelsüblicher Prozessor, eine Zentraleinheit (central processing unit, CPU), ein Hilfsprozessor von mehreren Prozessoren, die dem Computersystem 700 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 705 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 712 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 712 elektronische, magnetische, optische oder sonstige Arten von Speichermedien umfassen. Es ist zu beachten, dass der Speicher 712 eine verteilte Architektur aufweisen kann, wobei sich verschiedene Komponenten entfernt voneinander befinden, auf die jedoch durch den Prozessor 705 zugegriffen werden kann.
  • Die Anweisungen in dem Speicher 712 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 7 enthalten die Anweisungen in dem Speicher 712 ein geeignetes Betriebssystem (operating system, OS) 711. Das Betriebssystem 711 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 705 oder sonstige abrufbare Daten, können in dem Speicher 727 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 712 oder in dem Speicher 727 können diejenigen enthalten, die es dem Prozessor 705 ermöglichen, einen oder mehrere Aspekte der Zuteilungssysteme und -verfahren dieser Offenbarung auszuführen.
  • Das Computersystem 700 kann des Weiteren eine Anzeigesteuereinheit 725 enthalten, die mit einer Anzeige 730 verbunden ist. Bei einer beispielhaften Ausführungsform kann das Computersystem 700 des Weiteren eine Netzwerk-Schnittstelle 760 zum Verbinden mit einem Netzwerk 765 enthalten. Bei dem Netzwerk 765 kann es sich um ein Netzwerk auf Grundlage von IP zur Datenübertragung zwischen dem Computer 700 und einem externen Server, Client und dergleichen über eine Breitbandverbindung handeln. Das Netzwerk 765 überträgt und empfängt Daten zwischen dem Computersystem 700 und externen Systemen. Bei einer beispielhaften Ausführungsform kann es sich bei dem Netzwerk 765 um ein verwaltetes IP-Netzwerk handeln, das durch einen Diensteanbieter verwaltet wird. Das Netzwerk 765 kann drahtlos implementiert werden, z.B. mithilfe von drahtlosen Protokollen und Technologien wie z.B. WiFi, WiMax usw. Bei dem Netzwerk 765 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 765 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 von verbundenen GCT-Einträgen in einem OoO-Prozessor können vollständig oder zum Teil in Computerprogrammprodukten oder in Computersystemen 700 wie zum Beispiel dem in 7 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. Viele Modifizierungen und Varianten sind für Fachleute ersichtlich, ohne vom Umfang und Wesensgehalt 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 (9)

  1. Auf einem Computer implementiertes Verfahren, das aufweist: Erkennen in einer Anweisungssequenzbildungseinheit (ISU) eines Out-of-Order(OoO)-Prozessors, dass sämtliche Anweisungen in einer ersten Gruppe von momentan ausgeführten Anweisungen einen Status beendet aufweisen, wobei die erste Gruppe einem Eintrag in einer globalen Abschlusstabelle (GCT) zugehörig ist, die eine Zuteilungsreihenfolge und einen Status von Gruppen von momentan ausgeführten Anweisungen verfolgt; wobei die Zuteilungsreihenfolge angibt, dass es sich bei der ersten Gruppe von momentan ausgeführten Anweisungen um die älteste der GCT zugehörige Gruppe handelt; Ermitteln, dass es sich bei dem Eintrag in der GCT um einen zusammengefügten Eintrag handelt, der sowohl der ersten Gruppe von momentan ausgeführten Anweisungen als auch einer zweiten Gruppe von momentan ausgeführten Anweisungen zugehörig ist, die unmittelbar im Anschluss an die erste Gruppe von momentan ausgeführten Anweisungen zugeteilt worden ist, wobei die zweite Gruppe der momentan ausgeführten Anweisungen vor dem Zusammenführen der ersten Gruppe von momentan ausgeführten Anweisungen und der zweiten Gruppe von momentan ausgeführten Anweisungen einen eigenen Eintrag in der GCT hatte, wobei jeder GCT-Eintrag ein erstes Gruppenkennzeichen (GTAG = Group Tag) aufweist von dem ausgehend bei jedem Leeren alle jüngeren GTAGs eliminiert werden, und wobei der zweite GCT-Eintrag ein zweites Gruppenkennzeichen (GTAG = Group Tag) aufweist, von dem beim Abschließen einer Gruppe von Anweisungen ältere GTAGs festgeschrieben werden, und; Abschließen der ersten Gruppe von momentan ausgeführten Anweisungen und der zweiten Gruppe von momentan ausgeführten Anweisungen in einem einzigen Prozessorzyklus, wobei das Abschließen zumindest zum Teil auf einem Erkennen beruht, dass sämtliche Anweisungen des zusammengefügten Eintrags den Status beendet aufweisen, wobei das Abschließen ein Anfordern einer Freigabe von Ressourcen aufweist, die sowohl durch die erste als auch durch die zweite Gruppe von momentan ausgeführten Anweisungen genutzt wurden, wobei Felder jedes GCT-Eintrages zur Anzahl von Lade- und Speicheroperationen nach dem Zusammenführen eine Summe der entsprechenden Einträge vor dem Zusammenführen aufweisen, und wobei beim Festschreiben einer zusammengeführten Gruppe ausgehend vom ältesten GTAG alle Einträge in der zugehörigen GCT bis zu dem in dem zusammengeführten GCT-Eintrag angegebenen Abgeschlossen-Eintrag (Cmpl) festgeschrieben werden, und wobei das Abschließen ein Aktualisieren von Abschlussdaten bei dem entsprechenden GCT-Eintrag aufweist, wobei die Abschussdaten mindestens eines ausgewählt aus der nachfolgenden Gruppe aufweisen: eine Gesamtanzahl von Anweisungen in beiden Gruppen von Anweisungen, eine Gesamtanzahl von Ladevorgängen in beiden Gruppen von Anweisungen, eine Gesamtzahl von Speichervorgängen in beiden Gruppen von Anweisungen, und das/die GTAG(s) für die zusammengefügte Gruppe.
  2. Auf einem Computer implementiertes Verfahren nach Anspruch 1, wobei das Abschließen des Weiteren ein Freigeben der Ressourcen aufweist, die durch die erste und die zweite Gruppe von momentan ausgeführten Anweisungen genutzt werden.
  3. Auf einem Computer implementiertes Verfahren nach Anspruch 1, wobei der zusammengefügte Eintrag des Weiteren zumindest einer zusätzlichen Gruppe von momentan ausgeführten Anweisungen zugehörig ist, die unmittelbar vor der zweiten Gruppe von momentan ausgeführten Anweisungen zugeteilt worden ist.
  4. Auf einem Computer implementiertes Verfahren nach Anspruch 1, wobei die Ressourcen eine First-in-First-out(FIFO)-Ressource enthalten, die der Reihe nach zugewiesen wird, und das Anfordern einer Freigabe eine Anforderung zum Verschieben eines Zeigers zu einer angegebenen Position in der FIFO-Ressource enthält.
  5. Auf einem Computer implementiertes Verfahren nach Anspruch 4, wobei die FIFO-Ressource aus der Gruppe ausgewählt wird, die aus einem Eintrag in einer Ladeneuordnungs-Warteschlange (LRQ), einem Eintrag in einer Speicherneuordnungs-Warteschlange (SRQ) und einem Eintrag in einer Tabelle effektiver Adressen (EAT) besteht.
  6. Auf einem Computer implementiertes Verfahren nach Anspruch 1, wobei die Ressource eine Ressource in zufälliger Reihenfolge enthält, die in einer zufälligen Reihenfolge zugewiesen wird.
  7. Auf einem Computer implementiertes Verfahren nach Anspruch 3, wobei es sich bei der Ressource in zufälliger Reihenfolge um ein Register handelt, das durch eine Registerzuordnungsfunktionstabelle angegeben wird.
  8. System, das aufweist: 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 sie Operationen entsprechend dem Verfahren gemäß einem der Ansprüche 1 bis 7 durchführen.
  9. 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 entsprechend dem Verfahren gemäß einem der Ansprüche 1 bis 7 durchführt
DE112018006127.2T 2017-11-30 2018-11-09 Abschliessen von verbundenen einträgen einer globalen abschlusstabelle in einem out-of-order-prozessor Active DE112018006127B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/826,754 2017-11-30
US15/826,754 US10572264B2 (en) 2017-11-30 2017-11-30 Completing coalesced global completion table entries in an out-of-order processor
PCT/IB2018/058800 WO2019106461A1 (en) 2017-11-30 2018-11-09 Completing coalesced global completion table entries in an out-of-order processor

Publications (2)

Publication Number Publication Date
DE112018006127T5 DE112018006127T5 (de) 2020-08-13
DE112018006127B4 true DE112018006127B4 (de) 2022-09-29

Family

ID=66633141

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112018006127.2T Active DE112018006127B4 (de) 2017-11-30 2018-11-09 Abschliessen von verbundenen einträgen einer globalen abschlusstabelle in einem out-of-order-prozessor

Country Status (6)

Country Link
US (1) US10572264B2 (de)
JP (1) JP7203440B2 (de)
CN (1) CN111213124B (de)
DE (1) DE112018006127B4 (de)
GB (1) GB2581759B (de)
WO (1) WO2019106461A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10929140B2 (en) 2017-11-30 2021-02-23 International Business Machines Corporation Scalable dependency matrix with a single summary bit in an out-of-order processor
US10942747B2 (en) 2017-11-30 2021-03-09 International Business Machines Corporation Head and tail pointer manipulation in a first-in-first-out issue queue
US10802829B2 (en) 2017-11-30 2020-10-13 International Business Machines Corporation Scalable dependency matrix with wake-up columns for long latency instructions in an out-of-order processor
US10564979B2 (en) 2017-11-30 2020-02-18 International Business Machines Corporation Coalescing global completion table entries in an out-of-order processor
US10922087B2 (en) 2017-11-30 2021-02-16 International Business Machines Corporation Block based allocation and deallocation of issue queue entries
US10713057B2 (en) * 2018-08-23 2020-07-14 International Business Machines Corporation Mechanism to stop completions using stop codes in an instruction completion table
CN117270971B (zh) * 2023-09-15 2024-03-19 上海合芯数字科技有限公司 加载队列控制方法、装置及处理器

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6721874B1 (en) 2000-10-12 2004-04-13 International Business Machines Corporation Method and system for dynamically shared completion table supporting multiple threads in a processing system
US20040210743A1 (en) 2003-04-21 2004-10-21 International Business Machines Corporation Dynamically shared group completion table between multiple threads

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5655096A (en) 1990-10-12 1997-08-05 Branigin; Michael H. Method and apparatus for dynamic scheduling of instructions to ensure sequentially coherent data in a processor employing out-of-order execution
US5710902A (en) 1995-09-06 1998-01-20 Intel Corporation Instruction dependency chain indentifier
USRE38599E1 (en) 1996-06-11 2004-09-21 Sun Microsystems, Inc. Pipelined instruction dispatch unit in a superscalar processor
US6065105A (en) 1997-01-08 2000-05-16 Intel Corporation Dependency matrix
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
US6336183B1 (en) * 1999-02-26 2002-01-01 International Business Machines Corporation System and method for executing store instructions
US6425074B1 (en) 1999-09-10 2002-07-23 Advanced Micro Devices, Inc. Method and apparatus for rapid execution of FCOM and FSTSW
US6553480B1 (en) * 1999-11-05 2003-04-22 International Business Machines Corporation System and method for managing the execution of instruction groups having multiple executable instructions
US6557095B1 (en) 1999-12-27 2003-04-29 Intel Corporation Scheduling operations using a dependency matrix
US6633970B1 (en) 1999-12-28 2003-10-14 Intel Corporation Processor with registers storing committed/speculative data and a RAT state history recovery mechanism with retire pointer
JP3629551B2 (ja) * 2000-01-06 2005-03-16 インターナショナル・ビジネス・マシーンズ・コーポレーション 基本キャッシュ・ブロックを利用したマイクロプロセッサ
US6931639B1 (en) 2000-08-24 2005-08-16 International Business Machines Corporation Method for implementing a variable-partitioned queue for simultaneous multithreaded processors
US7865747B2 (en) 2000-10-31 2011-01-04 International Business Machines Corporation Adaptive issue queue for reduced power at high performance
US6988186B2 (en) 2001-06-28 2006-01-17 International Business Machines Corporation Shared resource queue for simultaneous multithreading processing wherein entries allocated to different threads are capable of being interspersed among each other and a head pointer for one thread is capable of wrapping around its own tail in order to access a free entry
US7360217B2 (en) 2001-09-28 2008-04-15 Consentry Networks, Inc. Multi-threaded packet processing engine for stateful packet processing
US7133925B2 (en) 2002-07-15 2006-11-07 Hewlett-Packard Development Company, L.P. System, method, and format thereof for scalable encoded media delivery
US7219249B1 (en) 2002-12-03 2007-05-15 The Research Foundation Of State University Of New York System and method for reducing power requirements of microprocessors through dynamic allocation of datapath resources
US7194603B2 (en) * 2003-04-23 2007-03-20 International Business Machines Corporation SMT flush arbitration
US20060095732A1 (en) 2004-08-30 2006-05-04 Tran Thang M Processes, circuits, devices, and systems for scoreboard and other processor improvements
US7464253B2 (en) 2006-10-02 2008-12-09 The Regents Of The University Of California Tracking multiple dependent instructions with instruction queue pointer mapping table linked to a multiple wakeup table by a pointer
US7689812B2 (en) 2007-02-14 2010-03-30 International Business Machines Corporation Method and system for restoring register mapper states for an out-of-order microprocessor
CN101034345A (zh) 2007-04-16 2007-09-12 中国人民解放军国防科学技术大学 流处理器中数据流、指令流的控制方法
US20080320274A1 (en) 2007-06-19 2008-12-25 Raza Microelectronics, Inc. Age matrix for queue dispatch order
US20090100249A1 (en) 2007-10-10 2009-04-16 Eichenberger Alexandre E Method and apparatus for allocating architectural register resources among threads in a multi-threaded microprocessor core
JP2009181163A (ja) 2008-01-29 2009-08-13 Kyoto Univ マイクロプロセッサならびにビット・ベクタのエンコーディング方法およびビット・ベクタの生成方法
US9652231B2 (en) 2008-10-14 2017-05-16 International Business Machines Corporation All-to-all permutation of vector elements based on a permutation pattern encoded in mantissa and exponent bits in a floating-point SIMD architecture
US8103852B2 (en) 2008-12-22 2012-01-24 International Business Machines Corporation Information handling system including a processor with a bifurcated issue queue
US8127116B2 (en) 2009-04-03 2012-02-28 International Business Machines Corporation Dependency matrix with reduced area and power consumption
US8131976B2 (en) 2009-04-13 2012-03-06 International Business Machines Corporation Tracking effective addresses in an out-of-order processor
US9489207B2 (en) 2009-04-14 2016-11-08 International Business Machines Corporation Processor and method for partially flushing a dispatched instruction group including a mispredicted branch
US9058180B2 (en) 2009-06-29 2015-06-16 Oracle America, Inc. Unified high-frequency out-of-order pick queue with support for triggering early issue of speculative instructions
US8521992B2 (en) 2009-12-22 2013-08-27 International Business Machines Corporation Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors
US9047079B2 (en) 2010-02-19 2015-06-02 International Business Machines Corporation Indicating disabled thread to other threads when contending instructions complete execution to ensure safe shared resource condition
US8667260B2 (en) 2010-03-05 2014-03-04 International Business Machines Corporation Building approximate data dependences with a moving window
US8521998B2 (en) * 2010-06-04 2013-08-27 International Business Machines Corporation Instruction tracking system for processors
US8392672B1 (en) 2010-10-25 2013-03-05 Juniper Networks, Inc. Identifying unallocated memory segments
US10346173B2 (en) 2011-03-07 2019-07-09 Oracle International Corporation Multi-threaded instruction buffer design
CN102360309B (zh) 2011-09-29 2013-12-18 中国科学技术大学苏州研究院 片上多核异构系统的调度系统与调度执行方法
US9182991B2 (en) 2012-02-06 2015-11-10 International Business Machines Corporation Multi-threaded processor instruction balancing through instruction uncertainty
US9817667B2 (en) 2013-05-23 2017-11-14 Advanced Micro Devices, Inc. Techniques for scheduling operations at an instruction pipeline
US9513924B2 (en) 2013-06-28 2016-12-06 Globalfoundries Inc. Predictor data structure for use in pipelined processing
GB2510655B (en) 2013-07-31 2015-02-25 Imagination Tech Ltd Prioritizing instructions based on type
US9146774B2 (en) 2013-12-12 2015-09-29 International Business Machines Corporation Coalescing memory transactions
US9158573B2 (en) 2013-12-12 2015-10-13 International Business Machines Corporation Dynamic predictor for coalescing memory transactions
US9766894B2 (en) 2014-02-06 2017-09-19 Optimum Semiconductor Technologies, Inc. Method and apparatus for enabling a processor to generate pipeline control signals
US10007525B2 (en) 2014-10-24 2018-06-26 International Business Machines Corporation Freelist based global completion table having both thread-specific and global completion table identifiers
US10133576B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries
US11429393B2 (en) * 2015-11-11 2022-08-30 Arm Limited Apparatus and method for supporting out-of-order program execution of instructions
WO2017203442A1 (en) * 2016-05-26 2017-11-30 Centipede Semi Ltd. Processor with efficient reorder buffer (rob) management
US11175923B2 (en) 2017-02-13 2021-11-16 International Business Machines Corporation Comparing load instruction address fields to store instruction address fields in a table to delay issuing dependent load instructions

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6721874B1 (en) 2000-10-12 2004-04-13 International Business Machines Corporation Method and system for dynamically shared completion table supporting multiple threads in a processing system
US20040210743A1 (en) 2003-04-21 2004-10-21 International Business Machines Corporation Dynamically shared group completion table between multiple threads

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Mutlu, Onur: 18-447: Computer Architecture, Lecture 13: Out-of-Order Execution, Carnegie Mellon University, 29.02.2012. URL: https://pdfs.semanticscholar.org/07a6/6e0f2777bb0005384defd228d5aa0bd7f9a4.pdf [abgerufen am 16.08.2021]
POWER4. In: Wikipedia, the free encyclopedia. Bearbeitungsstand: 05.06.2016. URL: https://en.wikipedia.org/w/index.php?title=POWER4&oldid=723726144 [abgerufen am 16.08.2021]
POWER5. In: Wikipedia, the free encyclopedia. Bearbeitungsstand: 10.08.2017. URL: https://en.wikipedia.org/w/index.php?title=POWER5&oldid=794823602 [abgerufen am 16.08.2021]

Also Published As

Publication number Publication date
US10572264B2 (en) 2020-02-25
GB2581759A (en) 2020-08-26
GB2581759B (en) 2021-01-20
WO2019106461A1 (en) 2019-06-06
JP2021504807A (ja) 2021-02-15
US20190163491A1 (en) 2019-05-30
CN111213124B (zh) 2023-09-29
CN111213124A (zh) 2020-05-29
JP7203440B2 (ja) 2023-01-13
GB202009231D0 (en) 2020-07-29
DE112018006127T5 (de) 2020-08-13

Similar Documents

Publication Publication Date Title
DE112018006127B4 (de) Abschliessen von verbundenen einträgen einer globalen abschlusstabelle in einem out-of-order-prozessor
DE112018006124B4 (de) ZUSAMMENFÜHREN VON EINTRÄGEN GLOBALER ABSCHLUSSTABELLEN IN EINEM OoO-PROZESSOR
DE69904189T2 (de) Konfigurierter prozessor zur abbildung von logischen registernummern auf physikalische registernummern unter verwendung von virtuellen registernummern
DE69508303T2 (de) Superskalarmikroprozessor mit einer Vorrichtung zur Namenänderung und Beförderung einer Operandenflagge und Verfahren zur Bearbeitung von RISC-ähnliche Funktionen in diesem Superskalarmikroprozessor
DE69032465T2 (de) Prozessorarchitektur mit entkoppelter Befehlsbereitstellung
DE69506623T2 (de) Datenprozessor mit einer Ausführungseinheit zur Durchführung von Ladebefehlen und Verfahren zu seinem Betrieb
DE112010003595B4 (de) Verfahren, Systeme und maschinenverarbeitbares Medium zur Bereitstellung einer verteiltenPrädikatvorhersage
DE112005002403B4 (de) Prozessor-Pipeline mit konstantem Durchsatz
DE112010003492B4 (de) Transaktionsspeichersystem mit wirksamerZwischenspeicherunterstützung
US10922087B2 (en) Block based allocation and deallocation of issue queue entries
DE69904083T2 (de) Anordnung und verfahren zum etikettieren und ungültig-erklären von spekulativ ausgeführten befehlen
DE112018000848T5 (de) Registerkontextwiederherstellung auf der Grundlage der Wiedergewinnung von Umbenennungsregistern
DE69623146T2 (de) Verfahren und Vorrichtung zum Koordinieren der Benutzung von physikalischen Registern in einem Mikroprozessor
DE102014003799A1 (de) Systeme und Verfahren zur Übertragungseliminierung mit Bypass-Mehrfachinstanziierungstabelle
DE112010004322T5 (de) Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge
DE112004002848T5 (de) System und Verfahren zum Validisieren einer Speicherdatei, die spekulative Ergebnisse von Ladeoperationen mit Registerwerten verknüpft
DE69429612T2 (de) Schreibpuffer für einen superskalaren Mikroprozessor mit Pipeline
DE112020005987T5 (de) Setzen von prüfpunkten in akkumulatorregister-ergebnissen in einem mikroprozessor
DE102013205059A1 (de) Durchführen von vordecodierzeitoptimierten Anweisungen zusammen mit Sequence Caching von vordecodierzeitoptimierten Anweisungen
DE102012211978A1 (de) Millicode-Steueroperation außerhalb der Reihenfolge
DE69903554T2 (de) Prozessor konfiguriert zur selektiven freigabe von physikalischen registern beim befehlsausführungsabschluss
DE112018004006B4 (de) Verarbeiten von synonymen von effektiven adressen in einer lade-speicher-einheit, die ohne adressumsetzung arbeitet
DE19848742A1 (de) Registerumbenennung mit einem Pool physischer Register
DE102019208566A1 (de) Verwalten von Lade- und Speicherinstruktionen für eine Speicherbarrieren- Handhabung
DE69831282T2 (de) Verwaltung von umbenannten Register in einem superskalaren Rechnersystem

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, A, US

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORPORATION, ARMONK, NY, US

R082 Change of representative

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final