DE112015004983T5 - Parallel-Slice-Prozessor mit einer Lade-Speicher-Umlaufwarteschlange für eine schnelle Freigabe von Einträgen in einer Ausgabewarteschlange - Google Patents

Parallel-Slice-Prozessor mit einer Lade-Speicher-Umlaufwarteschlange für eine schnelle Freigabe von Einträgen in einer Ausgabewarteschlange Download PDF

Info

Publication number
DE112015004983T5
DE112015004983T5 DE112015004983.5T DE112015004983T DE112015004983T5 DE 112015004983 T5 DE112015004983 T5 DE 112015004983T5 DE 112015004983 T DE112015004983 T DE 112015004983T DE 112015004983 T5 DE112015004983 T5 DE 112015004983T5
Authority
DE
Germany
Prior art keywords
operations
load
queue
store
memory
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.)
Pending
Application number
DE112015004983.5T
Other languages
English (en)
Inventor
Sundeep Chadha
David Allen Hrusecky
Dung Quoc Nguyen
Hung Qui Le
Brian William Thompto
Robert Allen Cordes
Salma Ayub
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 DE112015004983T5 publication Critical patent/DE112015004983T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping

Abstract

Eine Ausführungseinheitsschaltung zur Verwendung in einem Prozessorkern stellt eine effiziente Nutzung von Chipfläche und Energie bereit, indem die Speicheranforderung der einzelnen Einträge in einer Ausgabewarteschlange einer Lade-Speicher-Einheit verringert wird. Die Ausführungseinheitsschaltung beinhaltet eine Umlaufwarteschlange, welche die effektive Adresse der Lade- und Speicher-Operationen sowie die Werte speichert, die durch die Speicher-Operationen gespeichert werden sollen. Eine Warteschlangen-Steuerungslogik steuert die Umlaufwarteschlange und die Ausgabewarteschlange, so dass, nachdem die effektive Adresse einer Lade- oder Speicher-Operation berechnet wurde, die effektive Adresse der Lade-Operation oder der Speicher-Operation in die Umlaufwarteschlange geschrieben wird und die Operation aus der Ausgabewarteschlange entfernt wird, so dass Adressoperanden und andere Werte, die sich in der Ausgabewarteschlange befunden haben, nicht mehr gespeichert werden müssen. Wenn eine Lade- oder Speicher-Operation durch die Cache-Einheit zurückgewiesen wird, wird sie daraufhin aus der Umlaufwarteschlange erneut ausgegeben.

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich auf Verarbeitungssysteme und Prozessoren und im Besonderen auf einen mit Prozessorkern mit Pipelines, der Ausführungs-Slices mit einer Lade-Speicher-Umlaufwarteschlange beinhaltet.
  • Beschreibung der verwandten Technik
  • Bei heutigen Prozessorkernen dienen Pipelines dazu, mehrere Hardwarethreads auszuführen, die mehreren Instruktionsströmen entsprechen, so dass eine effizientere Nutzung von Prozessorressourcen bereitgestellt werden kann, indem Ressourcen gemeinsam genutzt werden und indem eine Ausführung auch dann gestattet ist, während ein oder mehrere Hardwarethreads auf ein Ereignis warten.
  • Bei vorhandenen Prozessorkernen und im Besonderen bei Prozessorkernen, die in mehrere Ausführungs-Slices aufgeteilt sind, werden Instruktionen dem/den Ausführungs-Slice/s zugeteilt und verbleiben so lange in der Ausgabewarteschlange, bis sie an eine Ausführungseinheit ausgegeben werden. Sobald eine Ausgabewarteschlange voll ist, können einem Slice normalerweise keine zusätzlichen Operationen mehr zugeteilt werden. Da die Ausgabewarteschlange nicht nur Operationen, sondern auch Operanden und Status-/Steuerungsdaten enthält, haben Ausgabewarteschlangen einen hohen Ressourcenbedarf und benötigen für ihre Realisierung ein erhebliches Maß an Energie und Chipfläche.
  • Somit wäre es wünschenswert, einen Prozessorkern mit geringeren Anforderungen der Ausgabewarteschlange bereitzustellen.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Bevorzugte Ausführungsformen der Erfindung sind in einer Ausführungseinheitsschaltung, einem Prozessorkern, der die Ausführungseinheit beinhaltet, und einem Verfahren zum Betrieb des Prozessorkerns enthalten.
  • Die Ausführungseinheitsschaltung beinhaltet eine Ausgabewarteschlange, die einen Strom von Instruktionen wie z. B. Funktionsoperationen und Lade-Speicher-Operationen sowie mehrere Ausführungspipelines wie z. B. eine Lade-Speicher-Pipeline beinhaltet, die effektive Adressen von Lade-Operationen und Speicher-Operationen berechnet und die Lade-Operationen und Speicher-Operationen an eine Cache-Einheit ausgibt. Die Ausführungseinheitsschaltung beinhaltet zudem eine Umlaufwarteschlange, die Einträge, welche den Lade-Operationen und den Speicher-Operationen entsprechen, sowie eine Steuerungslogik zum Steuern der Ausgabewarteschlange, der Lade-Speicher-Pipeline und der Umlaufwarteschlange speichert. Die Steuerungslogik funktioniert dergestalt, dass, nachdem die Lade-Speicher-Pipeline die effektive Adresse einer Lade-Operation oder einer Speicher-Operation berechnet hat, die effektive Adresse der Lade-Operation oder der Speicher-Operation in die Umlaufwarteschlange geschrieben wird und die Lade-Operation oder die Speicher-Operation aus der Ausgabewarteschlange entfernt wird, so dass, wenn eine der Lade-Operationen oder Speicher-Operationen durch die Cache-Einheit zurückgewiesen wird, diese daraufhin aus der Umlaufwarteschlange an die Cache-Einheit erneut ausgegeben wird.
  • Die obigen und andere Zielsetzungen, Merkmale und Vorteile der Erfindung werden aus der folgenden genaueren Beschreibung der bevorzugten Ausführungsform der Erfindung offensichtlich, wie sie in den beigefügten Zeichnungen dargestellt ist.
  • KURZBESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN DER ZEICHNUNG
  • In den beigefügten Ansprüchen werden die als kennzeichnend für die Erfindung betrachteten neuartigen Merkmale dargelegt. Die Erfindung selbst jedoch, sowie eine bevorzugte Art der Verwendung, ihre weiteren Zielsetzungen und Vorteile, werden am deutlichsten unter Verweis auf die folgende ausführliche Beschreibung in Verbindung mit den beigefügten Figuren, bei denen gleichlautende Bezugszeichen für gleiche Komponenten stehen und:
  • 1 ein Blockschaubild ist, das ein Datenverarbeitungssystem veranschaulicht, in dem Methoden gemäß einer Ausführungsform der vorliegenden Erfindung realisiert werden;
  • 2 ein Blockschaubild ist, das Einzelheiten eines Prozessorkerns 20 veranschaulicht, der verwendet werden kann, um Prozessorkerne 204 und 20B aus 1 zu realisieren.
  • 3 ein Blockschaubild ist, das Einzelheiten des Prozessorkerns 20 veranschaulicht.
  • 4 ein Blockschaubild ist, das ein Verfahren zum Betreiben des Prozessorkerns 20 veranschaulicht.
  • 5 ein Blockschaubild ist, das Einzelheiten eines Instruktionsausführungs-Slice 42AA veranschaulicht, der verwendet werden kann, um Instruktionsausführungs-Slices ES0 bis ES7 aus den 2 und 3 zu realisieren.
  • 6 ein Blockschaubild ist, das Einzelheiten eines Lade-Speicher-Slice 44 und eines Cache-Slice 46 veranschaulicht, die verwendet werden können, um Lade-Speicher-Slices LS0 bis LS7 und Cache-Slices CS0 bis CS7 aus den 2 und 3 zu realisieren.
  • DETAILBESCHREIBUNG DER ERFINDUNG
  • Ein Beispiel der vorliegenden Erfindung bezieht sich auf einen Ausführungs-Slice, der in einem Prozessorkern enthalten ist und eine interne Ausgabewarteschlange verwaltet, indem Lade-Speicher-(LS-)Operationseinträge in eine Umlaufwarteschlange verschoben werden, nachdem die effektive Adresse (EA) der LS-Operation berechnet wurde. Die LS-Operationen werden an eine Cache-Einheit ausgegeben, und wenn sie zurückgewiesen werden, werden die LS-Operationen daraufhin nicht aus dem ursprünglichen Eintrag in der Ausgabewarteschlange, sondern aus der Umlaufwarteschlange erneut ausgegeben. Da die Einträge in der Umlaufwarteschlange bei Lade-Operationen nur eine Speicherung der EA und bei Speicher-Operationen nur eine Speicherung der EA und des Speicherwerts erfordern, verringert sich der Bedarf an Speicheroperationen, Energie und Chipfläche für eine gegebene Anzahl von ausstehenden Einträgen in der LS-Ausgabewarteschlange in dem Prozessor. Im Gegensatz hierzu haben die Einträge in der Ausgabewarteschlange einen hohen Chipflächen- und Energiebedarf, da Operanden, relative Adressen und andere Felder wie bedingte Flags gespeichert werden müssen, die für eine Ausführung der LS-Operationen nach Auflösung der EA nicht benötigt werden.
  • Mit Blick auf 1 wird ein Verarbeitungssystem gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Das dargestellte Verarbeitungssystem beinhaltet eine Anzahl von Prozessoren 10A bis 10D, die alle einer Ausführungsform der vorliegenden Erfindung entsprechen. Das dargestellte Mehrprozessorsystem dient zur Veranschaulichung, und ein Verarbeitungssystem gemäß anderen Ausführungsformen der vorliegenden Erfindung beinhaltet Einprozessorsysteme mit Multithread-Kernen. Die Prozessoren 10A bis 10D weisen eine identische Struktur auf und beinhalten die Kerne 20A und 20B sowie einen lokalen Speicher 12, bei dem es sich um eine Cache-Ebene oder eine Ebene eines internen Systemarbeitsspeichers handeln kann. Die Prozessoren 10A und 10B sind verbunden mit einem Haupt-Systemarbeitsspeicher 14, einem Speicherteilsystem 16, das nicht entfernbare Laufwerke und optische Laufwerke beinhaltet, um Medien wie beispielsweise einen CD-ROM 17 zu betreiben, das ein Computerprogrammprodukt bildet und Programminstruktionen enthält, die im Allgemeinen mindestens ein Betriebssystem, zugehörige Anwendungsprogramme und optional einen Hypervisor realisieren, um die Partitionen mehrerer Betriebssysteme zur Ausführung durch die Prozessoren 10A bis 10D zu steuern. Das veranschaulichte Verarbeitungssystem beinhaltet zudem Eingabe/Ausgabe-(E/A-)Schnittstellen und Eingabe/Ausgabe-Einheiten 18 wie z. B. Mäuse und Tastaturen, um eine Benutzereingabe zu empfangen, sowie Grafikanzeigen zum Anzeigen von Informationen. Obwohl mit dem System aus 1 ein System veranschaulicht wird, in dem die Prozessorarchitektur der vorliegenden Erfindung realisiert wird, dürfte klar sein, dass die dargestellte Architektur nicht als Beschränkung zu verstehen ist und lediglich ein Beispiel für ein geeignetes Computersystem bereitstellen soll, in dem die Methoden der vorliegenden Erfindung angewendet werden.
  • Mit Blick auf 2 werden Einzelheiten eines beispielhaften Prozessorkerns 20 veranschaulicht, der verwendet werden kann, um die Prozessorkerne 20A und 20B aus 1 zu realisieren. Der Prozessorkern 20 beinhaltet einen Instruktionscache (ICache) 54 und einen Instruktionspuffer (IBUF) 31, die mehrere Instruktionsströme speichern, welche aus dem Cache oder dem Systemarbeitsspeicher abgerufen werden, und den Instruktionsstrom bzw. die Instruktionsströme über einen Bus 32 innerhalb von zwei Clustern CLA und CLB einer Mehrzahl von Zuteilungswarteschlangen Disp0 bis Disp7 bereitstellen. Die Steuerungslogik in dem Prozessorkern 20 steuert die Zuteilung von Instruktionen aus den Zuteilungswarteschlangen Disp0 bis Disp7 an eine Mehrzahl von Instruktionsausführungs-Slices ES0 bis ES7 über ein Zuteilungs-Routing-Netzwerk 36, das Instruktionen von jeder der Zuteilungswarteschlangen Disp0 bis Disp7 an jeden der Instruktionsausführungs-Slices ES0 bis ES7 in jedem der Cluster CLA und CLB gestattet, obwohl ein vollständiges Crosspoint-Routing, d. h. ein Routing von jeder Zuteilungswarteschlange zu jedem Slice, keine Anforderung der Erfindung darstellt. Bei bestimmten, weiter unten beschriebenen Konfigurationen wird die Zuteilung von Instruktionen aus den Zuteilungswarteschlangen Disp0 bis Disp3 in dem Cluster CLA auf die Ausführungs-Slices ES0 bis ES3 in dem Cluster CLA beschränkt, und entsprechend wird die Zuteilung von Instruktionen aus den Zuteilungswarteschlangen Disp4 bis Disp7 in dem Cluster CLB auf die Ausführungs-Slices ES4 bis ES7 beschränkt. Die Instruktionsausführungs-Slices ES0 bis ES7 führen nach Bedarf eine Sequenzierung und Ausführung von logischen, mathematischen und anderen Operationen durch, um den Ausführungszyklus-Teil von Instruktionszyklen für Instruktionen in den Instruktionsströmen durchzuführen, und können identische Universal-Instruktionsausführungs-Slices ES0 bis ES7 sein, oder der Prozessorkern 20 kann Spezial-Ausführungs-Slices ES0 bis ES7 beinhalten. Andere Spezial-Einheiten wie z. B. Verschlüsselungsprozessoren 34A und 34B, dezimale Gleitkommaeinheiten (Decimal Floating Point Units, DFUs) 33A und 33B sowie separate Verzweigungsausführungseinheiten (Branch Execution Units, BRU) 35A und 35B können ebenfalls enthalten sein, um die Universal-Ausführungs-Slices ES0 bis ES7 zum Durchführen anderer Aufgaben freizugeben. Die Instruktionsausführungs-Slices ES0 bis ES7 können mehrere interne Pipelines zum Ausführen mehrerer Instruktionen und/oder Teile von Instruktionen beinhalten.
  • Der Lade-Speicher-Teil des Instruktionsausführungszyklus (d. h. die Operationen, die zum Aufrechterhalten der Cachekonsistenz durchgeführt werden, im Gegensatz zu Lese/Schreib-Vorgängen in internen Registern) wird durch eine Mehrzahl von Lade-Speicher-Slices (LS-Slices) LS0 bis LS7 durchgeführt, die Lade- und Speicher-Operationen z. B. zwischen den Instruktionsausführungs-Slices ES0 bis ES7 und einem Cachespeicher verwalten, der durch eine Mehrzahl von Cache-Slices CS0 bis CS7 gebildet wird, bei denen es sich um Partitionen eines Cachespeichers der niedrigsten Ordnung handelt. In der abgebildeten Ausführungsform sind die Cache-Slices CS0 bis CS3 der Partition CLA und die Cache-Slices CS4 bis CS7 der Partition CLB zugewiesen, und jeder der Lade-Speicher-Slices LS0 bis LS7 verwaltet über einen entsprechenden Bus von dedizierten Speicherbussen 40 einen Zugriff auf einen entsprechenden Cache-Slice der Cache-Slices CS0 bis CS7. Bei anderen Ausführungsformen gibt es unter Umständen keine feste Aufteilung des Caches, und einzelne Cache-Slices CS0 bis CS7 oder Teilgruppen des gesamten Satzes von Cache-Slices können mit mehreren Lade-Speicher-Slices LS0 bis LS7 verbunden sein, indem die Speicherbusse 40 als ein gemeinsam genutzter Speicherbus bzw. als gemeinsam genutzte Speicherbusse verwendet werden. Die Lade-Speicher-Slices LS0 bis LS7 sind durch ein Rückschreib-(Ergebnis-)Routing-Netzwerk 37 mit den Instruktionsausführungs-Slices ES0 bis ES7 verbunden, um z. B. als Reaktion auf Lade-Operationen Ergebnisdaten von den entsprechenden Cache-Slices CS0 bis CS7 zurückzuschreiben. Das Rückschreib-Routing-Netzwerk 37 stellt auch eine Übertragung von Rückschreibergebnissen zwischen den Instruktionsausführungs-Slices ES0 bis ES7 bereit. Weitere Einzelheiten zur Handhabung von Lade-Speicher-(LS-)Operationen zwischen den Instruktionsausführungs-Slices ES0 bis ES7, den Lade-Speicher-Slices LS0 bis LS7 und den Cache-Slices CS0 bis CS7 werden weiter unten mit Blick auf die 4 bis 6 beschrieben. Ein Adresserzeugungsbus (AGEN-Bus) 38 und ein Speicherdatenbus 39 stellen eine Übertragung von Lade- und Speicher-Operationen bereit, die an die Lade-Speicher-Slices LS0 bis LS7 übertragen werden sollen. So übertragen der AGEN-Bus 38 und der Speicherdatenbus 39 zum Beispiel Speicher-Operationen, die letztlich in einen der Cache-Slices CS0 bis CS7 geschrieben werden, über einen der Speicherbusse 40 oder an eine Speicherstelle in einer höheren Ebene der Arbeitsspeicherhierarchie, mit der die Cache-Slices CS0 bis CS7 über einen E/A-Bus 41 verbunden sind, sofern die Speicher-Operation nicht gelöscht oder ungültig gemacht wird. Lade-Operationen, die einen der Cache-Slices CS0 bis CS7 verfehlen, nachdem sie durch einen der Lade-Speicher-Slices LS0 bis LS7 an den betreffenden Cache-Slice CS0 bis CS7 ausgegeben wurden, werden über den E/A-Bus 41 bedient, indem der angeforderte Wert in den betreffenden Cache-Slice CS0 bis CS7 oder direkt durch den Cache-Slice CS0 bis CS7 und den Speicherbus 40 in den Lade-Speicher-Slice LS0 bis LS7 geladen wird, der die Anforderung ausgegeben hat. In der abgebildeten Ausführungsform kann jeder der Lade-Speicher-Slices LS0 bis LS7 verwendet werden, um für jeden der Instruktionsausführungs-Slices ES0 bis ES7 einen Lade-Speicher-Operationsteil einer Instruktion durchzuführen, ohne dass dies jedoch eine Anforderung der Erfindung darstellt. Des Weiteren erfolgt bei manchen Ausführungsformen die Ermittlung, welcher der Cache-Slices CS0 bis CS7 eine gegebene Lade-Speicher-Operation durchführt, auf Grundlage der Operandenadresse der Lade-Speicher-Operation zusammen mit der Operandenbreite und der Zuweisung des adressierbaren Bytes des Caches zu jedem der Cache-Slices CS0 bis CS7.
  • Die Instruktionsausführungs-Slices ES0 bis ES7 können interne Instruktionen gleichzeitig an mehrere Pipelines ausgeben, so dass z. B. ein Instruktionsausführungs-Slice unter Verwendung mehrerer interner Pipelines simultan eine Ausführungsoperation und eine Lade-Speicher-Operation durchführen kann und/oder simultan mehrere arithmetische oder logische Operationen ausführen kann. Die internen Pipelines können identisch oder von unterschiedlicher Art sein, z. B. Gleitkomma-, Skalar-, Lade-Speicher-Pipelines usw. Des Weiteren kann ein gegebener Ausführungs-Slice mehrere Port-Verbindungen zu dem Rückschreib-Routing-Netzwerk 37 haben, so dass zum Beispiel eine Port-Verbindung für Lade-Speicher-Verbindungen zu den Lade-Speicher-Slices LS0 bis LS7 vorgesehen sein kann oder die Funktion des AGEN-Busses 38 und/oder des Datenbusses 39 bereitstellen kann, während eine weiterer Port dazu dienen kann, Werte an andere und von anderen Slices wie z. B. Spezial-Slices oder anderen Instruktionsausführungs-Slices zu übertragen. Rückschreibergebnisse werden von den verschiedenen internen Pipelines der Instruktionsausführungs-Slices ES0 bis ES7 an den/die Rückschreib-Port/s zeitlich geplant, welche die Instruktionsausführungs-Slices ES0 bis ES7 mit dem Rückschreib-Routing-Netzwerk 37 verbinden. Die Cache-Slices CS0 bis CS7 sind über den E/A-Bus 41, der innerhalb oder außerhalb des Prozessorkerns 20 integriert sein kann, mit einem Cache oder Systemarbeitsspeicher der nächsthöheren Ordnung verbunden. Während das veranschaulichte Beispiel eine übereinstimmende Anzahl von Lade-Speicher-Slices LS0 bis LS7 und Ausführungs-Slices ES0 bis ES7 zeigt, kann in der Praxis, abhängig von den Ressourcenerfordernissen für eine bestimmte Realisierung, eine unterschiedliche Anzahl der einzelnen Slice-Arten bereitgestellt werden.
  • Innerhalb des Prozessorkerns 20 beinhaltet eine Instruktionssequenzierungseinheit (Instruction Sequencer Unit, ISU) 30 einen Instruktionsfluss- und Netzwerksteuerungsblock 57, der das Zuteilungs-Routing-Netzwerk 36, das Rückschreib-Routing-Netzwerk 37, den AGEN-Bus 38 und den Speicherdatenbus 39 steuert. Der Netzwerksteuerungsblock 57 koordiniert zudem mit der Zuteilung von Instruktionen aus den Zuteilungswarteschlangen Disp0 bis Disp7 den Betrieb der Ausführungs-Slices ES0 bis ES7 und der Lade-Speicher-Slices LS0 bis LS7. Im Besonderen wählt der Instruktionsfluss- und Netzwerksteuerungsblock 57 zwischen Konfigurationen der Ausführungs-Slices ES0 bis ES7 und Lade-Speicher-Slices LS0 bis LS7 innerhalb des Prozessorkerns 20 gemäß einem oder mehreren Betriebsart-Steuerungssignalen, welche die Verwendung der Ausführungs-Slices ES0 bis ES7 und der Lade-Speicher-Slices LS0 bis LS7 in einer oder mehreren Singlethread-(ST-)Betriebsarten durch einen einzelnen Thread und in einer oder mehreren Multithread-(MT-)Betriebsarten durch mehrere Threads zuweist/zuweisen, wobei es sich bei letzteren um Betriebsarten mit simultanem Multithreading (SMT) handeln kann. So kann in der Konfiguration aus 2 der Cluster CLA zum Beispiel einem oder mehreren Hardwarethreads zugewiesen sein, die einen ersten Thread-Satz in einer SMT-Betriebsart bilden, so dass die Zuteilungswarteschlangen Disp0 bis Disp3 nur Instruktionen von Instruktionsströmen für den ersten Thread-Satz empfangen, die Ausführungs-Slices ES0 bis ES3 und die Lade-Speicher-Slices LS0 bis LS3 nur Operationen für den ersten Thread-Satz durchführen und die Cache-Slices CS0 bis CS3 einen kombinierten Cachespeicher bilden, der nur Werte enthält, auf die durch den ersten Thread-Satz zugegriffen wird. Auf ähnliche Weise ist in einer derartigen Betriebsart der Cluster CLB einem zweiten Hardwarethread-Satz zugewiesen, und die Zuteilungswarteschlangen Disp4 bis Disp7 empfangen nur Instruktionen von Instruktionsströmen für den zweiten Threadsatz, die Ausführungs-Slices ES4 bis ES7 und die LS-Slices LS4 bis LS7 führen nur Operationen für den zweiten Thread-Satz aus, und die Cache-Slices CS4 bis CS7 enthalten nur Werte, auf die durch den zweiten Thread-Satz zugegriffen wird. Wenn keine Cluster-übergreifende Übertragung notwendig ist, kann das Rückschreib-Routing-Netzwerk 37 aufgeteilt werden, indem Transceiver oder Switches sw, welche die Teile des Rückschreib-Routing-Netzwerks 37, des Clusters CLA und des Clusters CLB verbinden, deaktiviert werden. Ein Abtrennen der Teile des Rückschreib-Routing-Netzwerks 37 stellt einen größeren Durchsatz innerhalb eines jeden Clusters bereit und ermöglicht, dass die Teile des Rückschreib-Routing-Netzwerks 37 für Ergebnisse von den Ausführungs-Slices ES0 bis ES7 und den LS-Slices LS0 bis LS7 bei derselben Anzahl von Leitungen in dem Rückschreib-Routing-Netzwerk 37 separate simultane Routen bereitstellen. Somit können in dem aufgeteilten Rückschreib-Routing-Netzwerk 37 bei offenen Switches sw doppelt so viele Transaktionen unterstützt werden. Andere Ausführungsformen der Erfindung können die Sätze von Zuteilungswarteschlangen Disp0 bis Disp7, Ausführungs-Slices ES0 bis ES7, LS-Slices LS0 bis LS7 und Cache-Slices CS0 bis CS7 unterteilen, so dass eine Anzahl von Clustern gebildet werden, die jeweils einen bestimmten Satz von Hardwarethreads verarbeiten. Auf ähnliche Weise können die Threads innerhalb eines Satzes weiter in Teilsätze aufgeteilt und bestimmten Zuteilungswarteschlangen Disp0 bis Disp7, Ausführungs-Slices ES0 bis ES7, LS-Slices LS0 bis LS7 und Cache-Slices CS0 bis CS7 zugewiesen werden. Allerdings muss sich eine Aufteilung nicht auf alle oben genannten Ressourcen erstrecken. So können die Cluster CLA und CLB zum Beispiel zwei verschiedenen Hardwarethread-Sätzen zugewiesen werden, und die Ausführungs-Slices ES0 bis ES2 sowie die LS-Slices LS0 und LS1 können einem ersten Teilsatz des ersten Hardwarethread-Satzes zugewiesen werden, während der Ausführungs-Slice ES3 und die LS-Slices LS2 und LS3 einem zweiten Teilsatz des ersten Hardwarethread-Satzes zugewiesen werden und die Cache-Slices CS0 bis CS3 durch alle Threads innerhalb des ersten Hardwarethread-Satzes gemeinsam genutzt werden. In einer bestimmten Ausführungsform gemäß dem obigen Beispiel können Switches enthalten sein, um das Rückschreib-Routing-Netzwerk 37 zwischen den Ausführungs-Slices ES0 bis ES7 weiter aufzuteilen, so dass Verbindungen zwischen Teilgruppen der Ausführungs-Slices ES0 bis ES7, die verschiedenen Thread-Sätzen zugewiesen sind, isoliert werden, um die Anzahl der innerhalb einer jeden Teilgruppe verarbeiteten Transaktionen zu erhöhen. Das obige Beispiel zeigt die Flexibilität der Ressourcenzuteilung, wie sie von der über einen Bus verbundenen Slice-Architektur aus 2 bereitgestellt wird, und ist keine Einschränkung auf wie auch immer geartete Konfigurationen, die unterstützt werden könnten, um Sätze von Threads oder einzelne Threads auf Ressourcen wie z. B. die Zuteilungswarteschlangen Disp0 bis Disp7, die Ausführungs-Slices ES0 bis ES7, die LS-Slices LS0 bis LS7 und die Cache-Slices CS0 bis CS7 abzubilden.
  • Mit Blick auf 3 werden weitere Einzelheiten des Prozessorkerns 20 veranschaulicht. Der Prozessorkern 20 enthält eine Verzweigungsausführungseinheit 52, die Verzweigungsinstruktionen beurteilt, und eine Instruktionsabrufeinheit (Instruction Fetch Unit, IFetch) 53, die das Abrufen von Instruktionen wie z. B. von Instruktionen aus dem (Cache 54 steuert. Die Instruktionssequenzierungseinheit (ISU) 30 steuert die Sequenzierung von Instruktionen. Ein Eingabeinstruktionspuffer (Input Instruction Buffer, IB) 51 puffert Instruktionen, um die Instruktionen gemäß den Ausführungs-Slice-Ressourcen, die für die einzelnen Threads definiert sind, sowie gemäß etwaiger definierter Super-Slice-Konfigurationen abzubilden. Ein weiterer Instruktionspuffer (IBUF) 31 ist aufgeteilt, um die Zuteilungswarteschlangen (Disp0 bis Disp7 aus den 2 und 3) zu enthalten, und das Zuteilungs-Routing-Netzwerk 32 verbindet den IBUF 31 mit den segmentierten Ausführungs- und Lade-Speicher-Slices 50, die mit den Cache-Slices 46 verbunden sind. Der Instruktionsfluss- und Netzwerksteuerungsblock 57 führt eine Steuerung der segmentierten Ausführungs- und Lade-Speicher-Slices 50, der Cache-Slices 46 und des Zuteilungs-Routing-Netzwerks 32 durch, um die Slices gemäß einer Betriebsart-/Thread-Steuerungslogik 59 wie in den 2 und 3 veranschaulicht zu konfigurieren. Zudem wird eine Instruktionsabschlusseinheit 58 bereitgestellt, um den Abschluss von Instruktionen zu überwachen, die durch die ISU 30 sequenziert werden. Die ISU 30 beinhaltet außerdem Logik, um Rückschreiboperationen durch die Lade-Speicher-Slices LS0 bis LS7 innerhalb der segmentierten Ausführungs- und Lade-Speicher-Slices 50 zu steuern. Darüber hinaus kann eine Energiemanagementeinheit 56 eine Stromeinsparung bereitstellen, indem sie die Anzahl aktiver Slices innerhalb der segmentierten Ausführungs- und Cache-Slices 50 verringert oder erhöht. Obwohl die ISU 30 und der Instruktionsfluss- und Netzwerksteuerungsblock 57 als eine einzige Einheit gezeigt werden, kann die Steuerung der segmentierten Ausführung innerhalb und zwischen den Ausführungs-Slices ES0 bis ES7 und den Lade-Speicher-Slices LS0 bis LS7 auf die Slices aufgeteilt werden, so dass jeder der Ausführungs-Slices ES0 bis ES7 und der Lade-Speicher-Slices LS0 bis LS7 seinen eigenen Ausführungsablauf und seine eigene Sequenzierung steuert, während er eine Datenübertragung mit anderen Slices durchführt.
  • Mit Blick auf 4 wird ein Verfahren zum Betreiben des Prozessorkerns 20 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Eine Instruktion wird von dem Zuteilungs-Routing-Netzwerk 32 in einem der Ausführungs-Slices ES0 bis ES7 empfangen (Schritt 60), und wenn die Instruktion keine LS-Instruktion ist, d. h. wenn sie eine VS-/FX-Instruktion ist (Entscheidung 61), wird die FX-/VS-Instruktion an die FX-/VS-Pipeline/s ausgegeben (Schritt 62). Wenn die Instruktion eine LS-Instruktion ist (Entscheidung 61), wird die EA berechnet (Schritt 63) und in einer Umlaufwarteschlange (DARQ) gespeichert (Schritt 64). Wenn die Instruktion keine Speicher-Instruktion ist (Entscheidung 65), wird der Eintrag aus der ausgegebenen Warteschlange entfernt (Schritt 67), nachdem die Instruktion in der DARQ gespeichert wurde. Wenn die Instruktion eine Speicher-Instruktion ist (Entscheidung 65), wird auch der Speicherwert in der DARQ gespeichert (Schritt 66), und nachdem sowohl die EA der Speicher-Instruktion als auch der Speicherwert in der DARQ gespeichert wurden, wird der Eintrag aus der ausgegebenen Warteschlange entfernt (Schritt 67), und die Instruktion wird aus der DARQ ausgegeben (Schritt 68). Wenn die Instruktion zurückgewiesen wird (Entscheidung 69), wird Schritt 68 wiederholt, um daraufhin die zurückgewiesene Instruktion erneut auszugeben. Wenn die Instruktion nicht zurückgewiesen wird (Entscheidung 69), wird der Eintrag aus der DARQ entfernt (Schritt 70). Der aus den Schritten 60 bis 70 bestehende Prozess wird so lange wiederholt, bis das System heruntergefahren wird (Entscheidung 71). Bei alternativen Verfahren gemäß anderen Ausführungsformen der Erfindung kann Schritt 67 nur durchgeführt werden, nachdem versucht wurde, die Instruktion auszugeben, und bei einer weiteren Alternative können die Schritte 64 und 66 nur durchgeführt werden, nachdem die Instruktion einmal zurückgewiesen wurde, wobei es darüber hinaus noch andere Variationen gibt, die ebenfalls den Vorteil des geringeren Speicherbedarfs eines Eintrags in der DARQ anstelle eines Eintrags in der Ausgabewarteschlange bereitstellen.
  • Mit Blick auf 5 wird ein Beispiel für einen Ausführungs-Slice (Execution Slice, ES) 42AA gezeigt, der verwendet werden kann, um die Instruktionsausführungs-Slices ES0 bis ES7 aus den 2 und 3 zu realisieren. Eingaben von den Zuteilungswarteschlangen werden über das Zuteilungs-Routing-Netzwerk 32 durch eine Registeranordung 70 empfangen, so dass Operanden und die Instruktionen in Ausführungsreservierungsstationen (Execution Reservation stations, ER) 73 einer Ausgabewarteschlange 75 gestellt werden können. Die Registeranordnung 70 ist architektonisch so realisiert, dass sie unabhängige Registersätze für unabhängige Instruktionsströme bzw. für die Stellen aufweist, an denen der Ausführungs-Slice 42AA mit einem Super-Slice verbunden ist, der mehrere Teile einer SIMD-Instruktion ausführt, während abhängige Registersätze, die Clone in Super-Slices sind, z. B. dort architektonisch realisiert sind, wo der Super-Slice Nicht-SIMD-Instruktionen ausführt. Ein Alias-Mapper 71 bildet die Werte in der Registeranordnung 70 auf etwaige externe Referenzen ab, wie z. B. Rückschreibwerte, die über das Rückschreib-Routing-Netzwerk 37 mit anderen Slices ausgetauscht werden. Ein Protokollpuffer (History Buffer, HB) 76 stellt eine Wiederherstellungsfunktion für Registerziele von Instruktionen bereit, die durch den ES 42AA ausgeführt werden. Als Reaktion auf ein Betriebsart-Steuerungssignal können Register unter Verwendung des Rückschreib-Routing-Netzwerks 37 zwischen Super-Slices kopiert oder verschoben werden, so dass die Zuweisung von Slices zu einem Satz von Threads oder die Zuweisung von Slices, um auf eine gemeinsame Art und Weise zu funktionieren und so zusammen mit anderen Ausführungs-Slices als ein Super-Slice ausgeführt zu werden, neu konfiguriert werden kann. Der Ausführungs-Slice 42AA wird neben einem weiteren Ausführungs-Slice 42BB veranschaulicht, um eine Ausführungssperrsteuerung zu veranschaulichen, die zwischen Paaren von Ausführungs-Slices innerhalb der Ausführungs-Slices ES0 bis ES7 aus den 2 und 3 bereitgestellt werden kann und einen Super-Slice bilden kann. Die Ausführungssperrsteuerung stellt eine Koordination zwischen den Ausführungs-Slices 42AA und 42BB bereit, wodurch eine Ausführung eines einzelnen Ausführungsstroms unterstützt wird, da andernfalls die Ausführungs-Slices ES0 bis ES7 eine Ausführung ihrer betreffenden Ausführungsströme unabhängig verwalten.
  • Der Ausführungs-Slice 42AA beinhaltet mehrere interne Ausführungspipelines 74A bis 74C und 72, die eine unsortierte und simultane Ausführung von Instruktionen für den Instruktionsstrom unterstützen, der dem Ausführungs-Slice 42AA entspricht. Die durch die Ausführungspipelines 74A bis 74C und 72 ausgeführten Instruktionen können interne Instruktionen sein, die Teile von Instruktionen realisieren, welche über das Zuteilungs-Routing-Netzwerk 32 empfangen werden, oder sie können Instruktionen sein, die direkt über das Zuteilungs-Routing-Netzwerk 32 empfangen werden, d. h. das Pipelining der Instruktionen kann durch den Instruktionsstrom selbst unterstützt werden, oder die Decodierung von Instruktionen kann im Vorfeld von Ausführungs-Slice 42AA erfolgen. Die Ausführungspipeline 72 ist eine Lade-Speicher-(LS-)Pipeline, die LS-Instruktionen ausführt, d. h. sie berechnet effektive Adressen (EAs) aus einem oder mehreren Operanden. Eine Umlaufwarteschlange (DARQ) 78 wird gemäß einer weiter oben mit Blick auf 4 veranschaulichten Logik gesteuert, so dass die Ausführungspipeline 72 die EA einer in der DARQ 78 gespeicherten Instruktion nicht berechnen muss, da der Eintrag in der DARQ 78 aus der EA zusammen mit einem Speicherwert für Speicher-Operationen besteht. Sobald ein Eintrag in der DARQ 78 vorhanden ist, kann der betreffende Eintrag, wie oben beschrieben, aus einer Ausgabewarteschlange 75 entfernt werden. Die DARQ 78 kann eine größere Anzahl von Einträgen aufweisen, wodurch in der Ausgabewarteschlange 75 Speicherplatz für zusätzliche FX-/VS-Operationen sowie für andere LS-Operationen freigegeben wird. Abhängig von der Art der Instruktionen, die durch den Ausführungs-Slice 42AA ausgeführt werden, können sich FX-/VS-Pipelines 74A bis 74C hinsichtlich Entwurf und Funktion unterscheiden, oder manche bzw. alle Pipelines können identisch sein. So können zum Beispiel spezifische Pipelines für eine Adressberechnung, für Skalar- oder Vektor-Operationen, Gleitkomma-Operationen usw. bereitgestellt werden. Multiplexer 77A bis 77C stellen ein Routing von Ausführungsergebnissen zu dem/von dem Protokollpuffer 76 und ein Routing von Rückschreibergebnissen an das Rückschreib-Routing-Netzwerk 37, das E/A-Routing-Netzwerk 39 und das/die AGEN-Routing-Netzwerk/e 38 bereit, die bereitgestellt werden können, um spezifische Daten für eine gemeinsame Nutzung zwischen Slices oder Operationen oder aber Adressen und/oder Daten, die an einen oder mehrere der Lade-Speicher-Slices LS0 bis LS7 gesendet werden, weiterzuleiten. Die Daten-, Adress- und Umlaufwarteschlange (Data, Address and Recirculation Queue, DARQ) 78 enthält Ausführungsergebnisse oder -teilergebnisse wie z. B. Lade-Speicher-Adressen oder Speicherdaten, die nicht zwingend sofort durch den nächsten verbrauchenden Lade-Speicher-Slice LS0 bis LS7 oder Ausführungs-Slice ES0 bis ES7 angenommen werden. Die in der DARQ 78 gespeicherten Ergebnisse oder Teilergebnisse können in einem künftigen Zyklus z. B. an einen der Lade-Speicher-Slices LS0 bis LS7 oder an Spezial-Ausführungseinheiten wie z. B. einen der Verschlüsselungsprozessoren 34A und 34B gesendet werden. In der DARQ 78 gespeicherte Daten können dann durch die Multiplexer 77B bzw. 77C gebündelt auf den AGEN-Bus 38 oder den Speicherdatenbus 39 gegeben werden.
  • Mit Blick auf 6 wird ein Beispiel für einen Lade-Speicher-(LS)Slice 44 gezeigt, der verwendet werden kann, um die Lade-Speicher-Slices LS0 bis LS7 aus 2 zu realisieren. Eine Lade-Speicher-Zugriffswarteschlange (Load/Store Access Queue, LSAQ) 80 ist mit dem AG EN-Bus 38 verbunden, und die direkte Verbindung mit dem AGEN-Bus 38 und der LSAQ 80 wird durch einen Multiplexer 81 ausgewählt, der über den Speicherbus 40 eine Eingabe in ein Cacheverzeichnis 83 eines Datencaches 82 in einem Cache-Slice 46 bereitstellt. Wie oben beschrieben, steuert eine Logik innerhalb der LSAQ 80 die Annahme oder Zurückweisung von LS-Operationen, zum Beispiel, wenn in dem Verzeichnis 83 ein Flag gesetzt wird, der eine Modifizierung eines entsprechenden Werts in dem Datencache 82 erst dann zulässt, wenn andere Operationen abgeschlossen wurden. Die Ausgabe des Multiplexers 81 kann auch eine Eingabe an eine Lade-Neuordnungswarteschlange (Load Reorder Queue, LRQ) 87 oder Speicher-Neuordnungswarteschlange (Store Reorder Queue, SRQ) 88 entweder von der LSAQ 80 oder von dem AGEN-Bus 38 oder an andere Ausführungseinrichtungen innerhalb des Lade-Speicher-Slice 44 bereitstellen, die hier nicht gezeigt werden. Der Lade-Speicher-Slice 44 kann eine oder mehrere Instanzen einer Lade-Speicher-Einheit beinhalten, die Lade-Speicher-Operationen und andere zugehörige Cache-Operationen ausführen. Um die Ausführung von Cache-Operationen zu überwachen, die an den LS-Slice 44 ausgegeben wurden, beinhalten die LRQ 87 und die SRQ 88 Einträge, mit denen die Cache-Operationen entsprechend den durch die Prozessorarchitektur gestellten Anforderungen auf sequenzielle Konsistenz und/oder andere Attribute überwacht werden. Obwohl der LS-Slice 44 unter Umständen von einem oder mehreren der Ausführungs-Slices ES0 bis ES7 über den AGEN-Bus 38 mehrere Operationen pro Zyklus empfangen kann, sind aufgrund von Beschränkungen des LS-Slice 44 womöglich nicht alle Zugriffe in einem gegebenen Ausführungszyklus gleichzeitig ausführbar. In derartigen Fällen speichert die LSAQ 80 Einträge, die bis dahin noch nicht ausgeführten Operationen entsprechen. Die SRQ 88 empfängt von dem Speicherdatenbus 39 Daten für Speicher-Operationen, die mit Operationsdaten wie z. B. der berechnen Speicheradresse gebündelt werden. Während der Operationsausführung können in der Lade-Speicher-Pipeline, die durch den LS-Slice 44 und den Cache-Slice 46 gebildet wird, Probleme auftreten, wie z. B. Cachefehler, Adressumsetzungsfehler, Cache-Lese/Schreib-Konflikte, fehlende Daten oder andere Fehler, die erfordern, dass die Ausführung solcher Operationen zurückgestellt oder erneut versucht wird. Bei manchen Ausführungsformen sind die LRQ 87 und die SRQ 88 so konfiguriert, dass sie die Operationen in der Lade-Speicher-Pipeline erneut für eine Ausführung ausgeben und damit eine Operation bereitstellen, die unabhängig von der Steuerung und Operation der Ausführungs-Slices ES0 bis ES7 ist. Eine solche Anordnung setzt Ressourcen in den Ausführungs-Slices ES0 bis ES7 frei, sobald eine oder mehrere der Lade-Speicher-Slices LS0 bis LS7 die Operationen und/oder Daten empfangen hat, die eine Bedingung für die Ressourcenfreigabe sind. Die LSAQ 80 kann Ressourcen freigeben, sobald Operationen ausgeführt werden oder nachdem Einträge für die Operationen und/oder Daten in der LRQ 87 oder SRQ 88 gespeichert wurden. Eine Steuerungslogik innerhalb des LS-Slice 44 tauscht Daten mit der DARQ 78 in dem bestimmten Ausführungs-Slice ES0 bis ES7 aus, der die Lade-Speicher-Operation/en ausgibt, um die Annahme von Operanden, Adressen und Daten zu koordinieren. Verbindungen zu anderen Lade-Speicher-Slices werden durch den AGEN-Bus 38 und durch das Rückschreib-Routing-Netzwerk 37 bereitgestellt, das so verbunden ist, dass es Daten von dem Datencache 82 des Cache-Slice 46 empfängt und Daten an einen Block 84 zur Datenausrichtungsaufhebung eines weiteren Slice bereitstellt. Eine Datenformatierungseinheit 85 verbindet den Cache-Slice 44 über einen Puffer 86 mit dem Rückschreib-Routing-Netzwerk 37, so dass Rückschreibergebnisse aus einem Ausführungs-Slice in die Ressourcen eines weiteren Ausführungs-Slice geschrieben werden können. Der Datencache 82 des Cache-Slice 46 ist zudem mit dem E/A-Routing-Netzwerk 41 verbunden, um Werte aus einem Cache/Systemarbeitsspeicher höherer Ordnung zu laden und Werte aus dem Datencache 82 zu löschen oder zu entfernen. Die in dieser Offenbarung genannten Beispielen gehen davon aus, dass es sich bei den Instruktionen, die den Ausführungs-Slices ES0 bis ES7 zugeteilt werden, um vollständige externe Instruktionen oder um Teile von externen Instruktionen, d. h. um decodierte „interne Instruktionen”, handeln kann. in einem gegebenen Zyklus kann des Weiteren die Anzahl von internen Instruktionen, die einem der Instruktionsausführungs-Slices ES0 bis ES7 zugeteilt werden, größer eins sein, und nicht jeder Instruktionsausführungs-Slice ES0 bis ES7 muss notwendigerweise in einem gegebenen Zyklus eine interne Instruktion empfangen.
  • Obwohl die Erfindung im Besonderen mit Blick auf ihre bevorzugten Ausführungsformen gezeigt und beschrieben wurde, sollte dem Fachmann klar sein, dass die obigen und andere Änderungen an Form und Einzelheiten daran vorgenommen werden können, ohne vom gedanklichen Wesensgehalt und inhaltlichen Umfang der Erfindung abzuweichen.

Claims (20)

  1. Ausführungseinheitsschaltung für einen Prozessorkern, aufweisend: eine Zuteilungswarteschlange zum Empfangen eines Stroms von Instruktionen wie z. B. Funktionsoperationen und Lade-Speicher-Operationen; eine Mehrzahl von internen Ausführungspipelines wie z. B. eine Lade-Speicher-Pipeline zum Berechnen effektiver Adressen von Lade-Operationen und Speicher-Operationen und zum Ausgeben der Lade-Operationen und Speicher-Operationen an eine Cache-Einheit; eine Umlaufwarteschlange zum Speichern von Einträgen, die den Lade-Operationen und den Speicher-Operationen entsprechen; und Steuerungslogik zum Steuern der Ausgabewarteschlange, der Lade-Speicher-Pipeline und der Umlaufwarteschlange, so dass, nachdem die Lade-Speicher-Einheit die effektive Adresse einer Lade-Operation oder einer Speicher-Operation berechnet hat, die effektive Adresse der Lade-Operation oder der Speicher-Operation in die Umlaufwarteschlange geschrieben wird und die Lade-Operation oder die Speicher-Operation aus der Ausgabewarteschlange entfernt wird, und die zurückgewiesene Lade-Operation oder Speicher-Operation daraufhin aus der Umlaufwarteschlange an die Cache-Einheit erneut ausgegeben wird.
  2. Ausführungseinheitsschaltung nach Anspruch 1, wobei die Umlaufwarteschlange nur die effektive Adresse der Lade-Operationen und Speicher-Operationen sowie, für Speicher-Operationen, den Wert speichert, der durch die Speicher-Operation gespeichert werden soll.
  3. Ausführungseinheitsschaltung nach Anspruch 2, wobei die Steuerungslogik Lade-Operationen aus der Ausgabewarteschlange entfernt, nachdem die effektive Adresse in die Umlaufwarteschlange geschrieben wurde, und Speicher-Operationen aus der Ausgabewarteschlange entfernt, nachdem die effektive Adresse und die Werte, die durch die Speicher-Operationen gespeichert werden sollen, in die Umlaufwarteschlange geschrieben wurden.
  4. Ausführungseinheitsschaltung nach Anspruch 1, wobei die Steuerungslogik Lade-Operationen aus der Ausgabewarteschlange entfernt, nachdem die effektive Adresse in die Umlaufwarteschlange geschrieben wurde, und wobei die Steuerungslogik die Speicher-Operationen und die Werte, die durch die Speicher-Operationen gespeichert werden sollen, an die Cache-Einheit ausgibt, bevor sie die gespeicherten Daten aus der Ausgabewarteschlange entfernt.
  5. Ausführungseinheitsschaltung nach Anspruch 1, wobei die Steuerungslogik die Lade-Operationen und Speicher-Operationen in demselben Prozessorzyklus an die Cache-Einheit ausgibt, in dem die effektive Adresse der Lade-Operationen und der Speicher-Operationen in die Umlaufwarteschlange geschrieben wird.
  6. Ausführungseinheitsschaltung nach Anspruch 1, wobei die Cache-Einheit als eine Mehrzahl von Cache-Slices realisiert wird, an welche die Lade-Operationen und die Speicher-Operationen über einen Bus weitergeleitet werden, und wobei die erneute Ausgabe der zurückgewiesenen Lade-Operation oder Speicher-Operationen an einen anderen Cache-Slice als einen weiteren Cache-Slice geleitet wird, der zuvor die zurückgewiesene Lade-Operation oder Speicher-Operation zurückgewiesen hat.
  7. Ausführungseinheitsschaltung nach Anspruch 1, wobei die Steuerungslogik die Ausgabe von Lade-Instruktionen und Speicher-Instruktionen aus der Zuteilungswarteschlange anhält, wenn die Umlaufwarteschlange voll ist.
  8. Prozessorkern, aufweisend: eine Mehrzahl von Zuteilungswarteschlangen zum Empfangen von Instruktionen einer entsprechenden Mehrzahl von Instruktionsströmen; ein Zuteilungs-Routing-Netzwerk zum Weiterleiten der Ausgabe der Zuteilungswarteschlangen an die Instruktionsausführungs-Slices; eine Zuteilungssteuerungslogik, welche die Instruktionen der Mehrzahl von Instruktionsströmen über das Zuteilungs-Routing-Netzwerk zuteilt, um Warteschlangen der Mehrzahl von Slices für eine parallele Instruktionsausführung auszugeben; und eine Mehrzahl von Slices für eine parallele Instruktionsausführung zum parallelen Ausführen der Mehrzahl von Instruktionsströmen, wobei die Instruktionsausführungs-Slices eine Ausgabewarteschlange zum Empfangen eines Stroms von Instruktionen wie z. B. Funktionsoperationen und Lade-Speicher-Operationen, eine Mehrzahl von internen Ausführungspipelines wie z. B. eine Lade-Speicher-Pipeline zum Berechnen der effektiven Adressen von Lade-Operationen und Speicher-Operationen und zum Ausgeben der Lade-Operationen und Speicher-Operationen an eine Cache-Einheit, eine Umlaufwarteschlange zum Speichern von Einträgen, die den Lade-Operationen und den Speicher-Operationen entsprechen, sowie Warteschlangen-Steuerungslogik zum Steuern der Ausgabewarteschlange, der Lade-Speicher-Pipeline und der Umlaufwarteschlange aufweisen, so dass, nachdem die Lade-Speicher-Pipeline die effektive Adresse einer Lade-Operation oder einer Speicher-Operation berechnet hat, die effektive Adresse der Lade-Operation oder der Speicher-Operation in die Umlaufwarteschlange geschrieben wird und die Lade-Operation oder die Speicher-Operation aus der Ausgabewarteschlange entfernt wird, wobei, wenn eine der Lade-Operationen oder Speicher-Operationen durch die Cache-Einheit zurückgewiesen wird, die zurückgewiesene Lade-Operation oder Speicher-Operation daraufhin aus der Umlaufwarteschlange an die Cache-Einheit erneut ausgegeben wird.
  9. Prozessorkern nach Anspruch 8, wobei die Umlaufwarteschlange nur die effektiven Adressen der Lade-Operationen oder Speicher-Operationen sowie, für Speicher-Operationen, die Werte speichert, die durch die Speicher-Operation gespeichert werden sollen.
  10. Prozessorkern nach Anspruch 9, wobei die Warteschlangen-Steuerungslogik Lade-Operationen aus der Ausgabewarteschlange entfernt, nachdem die effektive Adresse in die Umlaufwarteschlange geschrieben wurde, und Speicher-Operationen aus der Ausgabewarteschlange entfernt, nachdem die effektive Adresse und die Werte, die durch die Speicher-Operationen gespeichert werden sollen, in die Umlaufwarteschlange geschrieben wurden.
  11. Prozessorkern nach Anspruch 8, wobei die Warteschlangen-Steuerungslogik Lade-Operationen aus der Ausgabewarteschlange entfernt, nachdem die effektive Adresse in die Umlaufwarteschlange geschrieben wurde, und wobei die Warteschlangen-Steuerungslogik die Speicher-Operationen und die Werte, die durch die Speicher-Operationen gespeichert werden sollen, an die Cache-Einheit ausgibt, bevor sie die gespeicherten Daten aus der Ausgabewarteschlange entfernt.
  12. Prozessorkern nach Anspruch 8, wobei die Warteschlangen-Steuerungslogik die Lade-Operationen oder Speicher-Operationen in demselben Prozessorzyklus an die Cache-Einheit ausgibt, in dem die effektive Adresse der Lade-Operationen und der Speicher-Operationen in die Umlaufwarteschlange geschrieben wird.
  13. Prozessorkern nach Anspruch 8, wobei der Prozessorkern des Weiteren eine Mehrzahl von Cache-Slices aufweist, an welche die Lade-Operationen und Speicher-Operationen über einen Bus weitergeleitet werden, und die Cache-Einheit realisiert, und wobei die erneute Ausgabe der zurückgewiesenen Lade-Operation oder Speicher-Operation an einen anderen Cache-Slice als einen weiteren Cache-Slice geleitet wird, das zuvor die zurückgewiesene Lade-Operation oder Speicher-Operation zurückgewiesen hat.
  14. Prozessorkern nach Anspruch 8, wobei die Warteschlangen-Steuerungslogik die Ausgabe von Lade-Instruktionen und Speicher-Instruktionen aus der Zuteilungswarteschlange anhält, wenn die Umlaufwarteschlange voll ist.
  15. Verfahren zum Ausführen von Programminstruktionen in einem Prozessorkern, wobei das Verfahren aufweist: Empfangen eines Stroms von Instruktionen wie z. B. Funktionsoperationen und Lade-Speicher-Operationen in einer Ausgabewarteschlange; Berechnen der effektiven Adressen von Lade-Operationen und Speicher-Operationen; Ausgeben der Lade-Operationen und Speicher-Operationen an eine Cache-Einheit; Speichern von Einträgen, die den Lade-Operationen und den Speicher-Operationen entsprechen, in einer Umlaufwarteschlange; Entfernen der Lade-Operationen und Speicher-Operationen aus der Ausgabewarteschlange; und daraufhin erfolgendes erneutes Ausgeben einer der Lade-Operationen oder Speicher-Operationen aus der Umlaufwarteschlange an die Cache-Einheit, wenn die eine der Lade-Operationen oder Speicher-Operationen durch die Cache-Einheit zurückgewiesen wird.
  16. Verfahren nach Anspruch 15, wobei das Speichern von Einträgen nur die effektiven Adressen der Lade-Operationen oder Speicher-Operationen sowie, für Speicher-Operationen, den Wert speichert, der durch die Speicher-Operation gespeichert werden soll.
  17. Verfahren nach Anspruch 16, des Weiteren aufweisend: Entfernen von Lade-Operationen aus der Ausgabewarteschlange, nachdem die effektive Adresse in die Umlaufwarteschlange geschrieben wurde; und Entfernen von Speicher-Operationen aus der Ausgabewarteschlange, nachdem die effektive Adresse und die Werte, die durch die Speicher-Operationen gespeichert werden sollen, in die Umlaufwarteschlange geschrieben wurden.
  18. Verfahren nach Anspruch 15, des Weiteren aufweisend: Entfernen von Lade-Operationen aus der Ausgabewarteschlange, nachdem die effektive Adresse in die Umlaufwarteschlange geschrieben wurde; und Ausgeben der Speicher-Operationen und der Werte, die durch die Speicher-Operationen gespeichert werden sollen, an die Cache-Einheit, bevor die gespeicherten Daten aus der Ausgabewarteschlange entfernt werden.
  19. Verfahren nach Anspruch 15, wobei das Ausgeben die Lade-Operationen und Speicher-Operationen in demselben Prozessorzyklus an die Cache-Einheit ausgibt, in dem das Speichern die effektive Adresse der Lade- oder Speicher-Operation in die Umlaufwarteschlange schreibt.
  20. Verfahren nach Anspruch 15, wobei die Cache-Einheit als eine Mehrzahl von Cache-Slices realisiert wird, an welche die Lade- und Speicher-Operationen über einen Bus weitergeleitet werden können, und wobei das erneute Ausgeben der Lade-Operationen oder der Speicher-Operationen an einen anderen Cache-Slice als einen weiteren Cache-Slice geleitet wird, das zuvor die Lade-Operation oder die Speicher-Operation zurückgewiesen hat.
DE112015004983.5T 2015-01-13 2015-12-29 Parallel-Slice-Prozessor mit einer Lade-Speicher-Umlaufwarteschlange für eine schnelle Freigabe von Einträgen in einer Ausgabewarteschlange Pending DE112015004983T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US14/595,635 US10133576B2 (en) 2015-01-13 2015-01-13 Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries
US14/595,635 2015-01-13
US14/724,268 2015-05-28
US14/724,268 US20160202988A1 (en) 2015-01-13 2015-05-28 Parallel slice processing method using a recirculating load-store queue for fast deallocation of issue queue entries
PCT/EP2015/081330 WO2016113105A1 (en) 2015-01-13 2015-12-29 Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries

Publications (1)

Publication Number Publication Date
DE112015004983T5 true DE112015004983T5 (de) 2017-09-07

Family

ID=56367638

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112015004983.5T Pending DE112015004983T5 (de) 2015-01-13 2015-12-29 Parallel-Slice-Prozessor mit einer Lade-Speicher-Umlaufwarteschlange für eine schnelle Freigabe von Einträgen in einer Ausgabewarteschlange

Country Status (5)

Country Link
US (5) US10133576B2 (de)
JP (1) JP6628801B2 (de)
DE (1) DE112015004983T5 (de)
GB (1) GB2549907B (de)
WO (1) WO2016113105A1 (de)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9672043B2 (en) 2014-05-12 2017-06-06 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor
US9720696B2 (en) 2014-09-30 2017-08-01 International Business Machines Corporation Independent mapping of threads
US9977678B2 (en) 2015-01-12 2018-05-22 International Business Machines Corporation Reconfigurable parallel execution and load-store slice processor
US10133581B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Linkable issue queue parallel execution slice for a processor
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
US10241800B2 (en) 2015-06-16 2019-03-26 International Business Machines Corporation Split-level history buffer in a computer processing unit
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US9977677B2 (en) * 2016-04-07 2018-05-22 International Business Machines Corporation Execution slice with supplemental instruction port for an instruction using a source operand from another instruction port
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US9934033B2 (en) 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US20170364356A1 (en) * 2016-06-16 2017-12-21 International Business Machines Corporation Techniques for implementing store instructions in a multi-slice processor architecture
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
US11086628B2 (en) 2016-08-15 2021-08-10 Advanced Micro Devices, Inc. System and method for load and store queue allocations at address generation time
US10481915B2 (en) 2017-09-20 2019-11-19 International Business Machines Corporation Split store data queue design for an out-of-order processor
US11175924B2 (en) 2017-10-06 2021-11-16 International Business Machines Corporation Load-store unit with partitioned reorder queues with single cam port
US10606591B2 (en) 2017-10-06 2020-03-31 International Business Machines Corporation Handling effective address synonyms in a load-store unit that operates without address translation
US10417002B2 (en) 2017-10-06 2019-09-17 International Business Machines Corporation Hazard detection of out-of-order execution of load and store instructions in processors without using real addresses
US10572256B2 (en) 2017-10-06 2020-02-25 International Business Machines Corporation Handling effective address synonyms in a load-store unit that operates without address translation
US10394558B2 (en) 2017-10-06 2019-08-27 International Business Machines Corporation Executing load-store operations without address translation hardware per load-store unit port
US10606590B2 (en) 2017-10-06 2020-03-31 International Business Machines Corporation Effective address based load store unit in out of order processors
US10579387B2 (en) 2017-10-06 2020-03-03 International Business Machines Corporation Efficient store-forwarding with partitioned FIFO store-reorder queue in out-of-order processor
US10901744B2 (en) 2017-11-30 2021-01-26 International Business Machines Corporation Buffered instruction dispatching to an issue queue
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
US10922087B2 (en) 2017-11-30 2021-02-16 International Business Machines Corporation Block based allocation and deallocation of issue queue entries
US10564976B2 (en) 2017-11-30 2020-02-18 International Business Machines Corporation Scalable dependency matrix with multiple summary bits in an out-of-order processor
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
US10564979B2 (en) 2017-11-30 2020-02-18 International Business Machines Corporation Coalescing global completion table entries in an out-of-order processor
US10572264B2 (en) 2017-11-30 2020-02-25 International Business Machines Corporation Completing coalesced global completion table entries in an out-of-order processor
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
US10884753B2 (en) 2017-11-30 2021-01-05 International Business Machines Corporation Issue queue with dynamic shifting between ports
US10915327B2 (en) * 2018-12-14 2021-02-09 Arm Limited Apparatus and method of dispatching instructions for execution clusters based on dependencies

Family Cites Families (171)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5095424A (en) 1986-10-17 1992-03-10 Amdahl Corporation Computer system architecture implementing split instruction and operand cache line-pair-state management
US4858113A (en) 1987-04-10 1989-08-15 The United States Of America As Represented By The Director Of The National Security Agency Reconfigurable pipelined processor
US5055999A (en) * 1987-12-22 1991-10-08 Kendall Square Research Corporation Multiprocessor digital data processing system
JPH0374721A (ja) 1989-08-16 1991-03-29 Hitachi Ltd ディジタル処理装置
US5471593A (en) 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
CA2073516A1 (en) 1991-11-27 1993-05-28 Peter Michael Kogge Dynamic multi-mode parallel processor array architecture computer system
US5553305A (en) 1992-04-14 1996-09-03 International Business Machines Corporation System for synchronizing execution by a processing element of threads within a process using a state indicator
US6073231A (en) 1993-10-18 2000-06-06 Via-Cyrix, Inc. Pipelined processor with microcontrol of register translation hardware
US6138230A (en) 1993-10-18 2000-10-24 Via-Cyrix, Inc. Processor with multiple execution pipelines using pipe stage state information to control independent movement of instructions between pipe stages of an execution pipeline
US5630149A (en) 1993-10-18 1997-05-13 Cyrix Corporation Pipelined processor with register renaming hardware to accommodate multiple size registers
JP2812189B2 (ja) 1994-02-10 1998-10-22 日本電気株式会社 プログラムダウンロード方法
US5680597A (en) 1995-01-26 1997-10-21 International Business Machines Corporation System with flexible local control for modifying same instruction partially in different processor of a SIMD computer system to execute dissimilar sequences of instructions
US6112019A (en) 1995-06-12 2000-08-29 Georgia Tech Research Corp. Distributed instruction queue
US6356918B1 (en) 1995-07-26 2002-03-12 International Business Machines Corporation Method and system for managing registers in a data processing system supports out-of-order and speculative instruction execution
US6643765B1 (en) 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US5822602A (en) 1996-07-23 1998-10-13 S3 Incorporated Pipelined processor for executing repeated string instructions by halting dispatch after comparision to pipeline capacity
US5996068A (en) 1997-03-26 1999-11-30 Lucent Technologies Inc. Method and apparatus for renaming registers corresponding to multiple thread identifications
US6170051B1 (en) 1997-08-01 2001-01-02 Micron Technology, Inc. Apparatus and method for program level parallelism in a VLIW processor
US6026478A (en) 1997-08-01 2000-02-15 Micron Technology, Inc. Split embedded DRAM processor
US6487578B2 (en) 1997-09-29 2002-11-26 Intel Corporation Dynamic feedback costing to enable adaptive control of resource utilization
US6212544B1 (en) 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6549930B1 (en) 1997-11-26 2003-04-15 Compaq Computer Corporation Method for scheduling threads in a multithreaded processor
US6044448A (en) 1997-12-16 2000-03-28 S3 Incorporated Processor having multiple datapath instances
US6145054A (en) * 1998-01-21 2000-11-07 Sun Microsystems, Inc. Apparatus and method for handling multiple mergeable misses in a non-blocking cache
US6035394A (en) * 1998-02-17 2000-03-07 International Business Machines Corporation System for providing high performance speculative processing of complex load/store instructions by generating primitive instructions in the load/store unit and sequencer in parallel
JP3448481B2 (ja) 1998-03-05 2003-09-22 Kddi株式会社 非対称回線用tcp通信高速化装置
US6230257B1 (en) 1998-03-31 2001-05-08 Intel Corporation Method and apparatus for staggering execution of a single packed data instruction using the same circuit
US6092175A (en) 1998-04-02 2000-07-18 University Of Washington Shared register storage mechanisms for multithreaded computer systems with out-of-order execution
US6205519B1 (en) 1998-05-27 2001-03-20 Hewlett Packard Company Cache management for a multi-threaded processor
JP3786521B2 (ja) 1998-07-01 2006-06-14 株式会社日立製作所 半導体集積回路及びデータ処理システム
US6119203A (en) * 1998-08-03 2000-09-12 Motorola, Inc. Mechanism for sharing data cache resources between data prefetch operations and normal load/store operations in a data processing system
US6073215A (en) * 1998-08-03 2000-06-06 Motorola, Inc. Data processing system having a data prefetch mechanism and method therefor
DE69942339D1 (de) 1998-08-24 2010-06-17 Microunity Systems Eng System mit breiter operandenarchitektur und verfahren
US6163839A (en) 1998-09-30 2000-12-19 Intel Corporation Non-stalling circular counterflow pipeline processor with reorder buffer
US6219780B1 (en) 1998-10-27 2001-04-17 International Business Machines Corporation Circuit arrangement and method of dispatching instructions to multiple execution units
US6286027B1 (en) 1998-11-30 2001-09-04 Lucent Technologies Inc. Two step thread creation with register renaming
US6237081B1 (en) * 1998-12-16 2001-05-22 International Business Machines Corporation Queuing method and apparatus for facilitating the rejection of sequential instructions in a processor
WO2000045431A1 (en) 1999-01-27 2000-08-03 Citizen Watch Co., Ltd. Method of packaging semiconductor device using anisotropic conductive adhesive
US6738896B1 (en) * 1999-02-01 2004-05-18 Hewlett-Packard Development Company, L.P. Method and apparatus for determining availability of a queue which allows random insertion
US6336183B1 (en) * 1999-02-26 2002-01-01 International Business Machines Corporation System and method for executing store instructions
US6463524B1 (en) 1999-08-26 2002-10-08 International Business Machines Corporation Superscalar processor and method for incrementally issuing store instructions
US7512724B1 (en) 1999-11-19 2009-03-31 The United States Of America As Represented By The Secretary Of The Navy Multi-thread peripheral processing using dedicated peripheral bus
US6357016B1 (en) 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US6564315B1 (en) * 2000-01-03 2003-05-13 Advanced Micro Devices, Inc. Scheduler which discovers non-speculative nature of an instruction after issuing and reissues the instruction
US20020194251A1 (en) 2000-03-03 2002-12-19 Richter Roger K. Systems and methods for resource usage accounting in information management environments
US7124160B2 (en) 2000-03-08 2006-10-17 Sun Microsystems, Inc. Processing architecture having parallel arithmetic capability
WO2001067234A2 (en) 2000-03-08 2001-09-13 Sun Microsystems, Inc. Vliw computer processing architecture having a scalable number of register files
US6965991B1 (en) 2000-05-12 2005-11-15 Pts Corporation Methods and apparatus for power control in a scalable array of processor elements
US7836317B2 (en) 2000-05-12 2010-11-16 Altera Corp. Methods and apparatus for power control in a scalable array of processor elements
US7086053B2 (en) 2000-06-12 2006-08-01 Sun Microsystems, Inc. Method and apparatus for enabling threads to reach a consistent state without explicit thread suspension
US6868491B1 (en) * 2000-06-22 2005-03-15 International Business Machines Corporation Processor and method of executing load instructions out-of-order having reduced hazard penalty
US6725358B1 (en) * 2000-06-22 2004-04-20 International Business Machines Corporation Processor and method having a load reorder queue that supports reservations
US7100028B2 (en) 2000-08-09 2006-08-29 Advanced Micro Devices, Inc. Multiple entry points for system call instructions
US6728866B1 (en) 2000-08-31 2004-04-27 International Business Machines Corporation Partitioned issue queue and allocation strategy
US7035998B1 (en) 2000-11-03 2006-04-25 Mips Technologies, Inc. Clustering stream and/or instruction queues for multi-streaming processors
US6732236B2 (en) * 2000-12-18 2004-05-04 Redback Networks Inc. Cache retry request queue
US7114163B2 (en) 2001-03-07 2006-09-26 Hardin David S Software component model for time sensitive embedded applications
US6978459B1 (en) 2001-04-13 2005-12-20 The United States Of America As Represented By The Secretary Of The Navy System and method for processing overlapping tasks in a programmable network processor environment
US6948051B2 (en) 2001-05-15 2005-09-20 International Business Machines Corporation Method and apparatus for reducing logic activity in a microprocessor using reduced bit width slices that are enabled or disabled depending on operation width
US6954846B2 (en) 2001-08-07 2005-10-11 Sun Microsystems, Inc. Microprocessor and method for giving each thread exclusive access to one register file in a multi-threading mode and for giving an active thread access to multiple register files in a single thread mode
US6839828B2 (en) 2001-08-14 2005-01-04 International Business Machines Corporation SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode
US20030120882A1 (en) 2001-12-20 2003-06-26 Granston Elana D. Apparatus and method for exiting from a software pipeline loop procedure in a digital signal processor
US7251594B2 (en) 2001-12-21 2007-07-31 Hitachi, Ltd. Execution time modification of instruction emulation parameters
JP2005516303A (ja) 2002-01-30 2005-06-02 リアル・エンタープライズ・ソリューションズ・ディヴェロップメント・ビー・ヴィー 優先スケジューリングを備えたマルチプログラミングコンピュータシステムにおける優先レベルを設定する方法、マルチプログラミングコンピュータシステムおよびそれらのプログラム
US7398374B2 (en) 2002-02-27 2008-07-08 Hewlett-Packard Development Company, L.P. Multi-cluster processor for processing instructions of one or more instruction threads
US6944744B2 (en) 2002-08-27 2005-09-13 Advanced Micro Devices, Inc. Apparatus and method for independently schedulable functional units with issue lock mechanism in a processor
US8108656B2 (en) 2002-08-29 2012-01-31 Qst Holdings, Llc Task definition for specifying resource requirements
US7024543B2 (en) 2002-09-13 2006-04-04 Arm Limited Synchronising pipelines in a data processing apparatus
SG111972A1 (en) 2002-10-17 2005-06-29 Agency Science Tech & Res Wafer-level package for micro-electro-mechanical systems
US7386704B2 (en) 2002-10-31 2008-06-10 Lockheed Martin Corporation Pipeline accelerator including pipeline circuits in communication via a bus, and related system and method
US7600096B2 (en) 2002-11-19 2009-10-06 Stmicroelectronics, Inc. Coprocessor extension architecture built using a novel split-instruction transaction model
US20040111594A1 (en) * 2002-12-05 2004-06-10 International Business Machines Corporation Multithreading recycle and dispatch mechanism
JP2006512655A (ja) 2002-12-30 2006-04-13 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ クラスタ化ilpプロセッサおよびクラスタ化ilpプロセッサにおけるバスにアクセスする方法
US7191320B2 (en) 2003-02-11 2007-03-13 Via Technologies, Inc. Apparatus and method for performing a detached load operation in a pipeline microprocessor
US7290261B2 (en) 2003-04-24 2007-10-30 International Business Machines Corporation Method and logical apparatus for rename register reallocation in a simultaneous multi-threaded (SMT) processor
US7155600B2 (en) 2003-04-24 2006-12-26 International Business Machines Corporation Method and logical apparatus for switching between single-threaded and multi-threaded execution states in a simultaneous multi-threaded (SMT) processor
US20040216101A1 (en) 2003-04-24 2004-10-28 International Business Machines Corporation Method and logical apparatus for managing resource redistribution in a simultaneous multi-threaded (SMT) processor
US20050138290A1 (en) * 2003-12-23 2005-06-23 Intel Corporation System and method for instruction rescheduling
WO2005073866A2 (en) 2004-01-21 2005-08-11 Charles Stark Draper Laboratory, Inc. Systems and methods for reconfigurable computing
US7617496B2 (en) 2004-04-23 2009-11-10 Apple Inc. Macroscalar processor architecture
US7395419B1 (en) 2004-04-23 2008-07-01 Apple Inc. Macroscalar processor architecture
US7730456B2 (en) 2004-05-19 2010-06-01 Sony Computer Entertainment Inc. Methods and apparatus for handling processing errors in a multi-processing system
US7478198B2 (en) 2004-05-24 2009-01-13 Intel Corporation Multithreaded clustered microarchitecture with dynamic back-end assignment
WO2006083291A2 (en) 2004-06-08 2006-08-10 University Of Rochester Dynamically managing the communication-parallelism trade-off in clustered processors
US7478225B1 (en) * 2004-06-30 2009-01-13 Sun Microsystems, Inc. Apparatus and method to support pipelining of differing-latency instructions in a multithreaded processor
US7721069B2 (en) 2004-07-13 2010-05-18 3Plus1 Technology, Inc Low power, high performance, heterogeneous, scalable processor architecture
US8166282B2 (en) 2004-07-21 2012-04-24 Intel Corporation Multi-version register file for multithreading processors with live-in precomputation
US7890735B2 (en) 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US7237094B2 (en) 2004-10-14 2007-06-26 International Business Machines Corporation Instruction group formation and mechanism for SMT dispatch
US7302527B2 (en) * 2004-11-12 2007-11-27 International Business Machines Corporation Systems and methods for executing load instructions that avoid order violations
US7469318B2 (en) * 2005-02-10 2008-12-23 International Business Machines Corporation System bus structure for large L2 cache array topology with different latency domains
WO2006123822A1 (ja) 2005-05-20 2006-11-23 Sony Corporation 信号処理装置
US20070022277A1 (en) * 2005-07-20 2007-01-25 Kenji Iwamura Method and system for an enhanced microprocessor
US20070083735A1 (en) 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
US8099556B2 (en) * 2005-09-13 2012-01-17 Arm Limited Cache miss detection in a data processing apparatus
US7793278B2 (en) 2005-09-30 2010-09-07 Intel Corporation Systems and methods for affine-partitioning programs onto multiple processing units
US8074224B1 (en) 2005-12-19 2011-12-06 Nvidia Corporation Managing state information for a multi-threaded processor
US7506132B2 (en) 2005-12-22 2009-03-17 International Business Machines Corporation Validity of address ranges used in semi-synchronous memory copy operations
JP5136404B2 (ja) 2006-02-28 2013-02-06 富士通株式会社 演算処理装置、演算処理装置の制御方法
US7590825B2 (en) * 2006-03-07 2009-09-15 Intel Corporation Counter-based memory disambiguation techniques for selectively predicting load/store conflicts
US20070226471A1 (en) 2006-03-13 2007-09-27 Arm Limited Data processing apparatus
JP2008123045A (ja) 2006-11-08 2008-05-29 Matsushita Electric Ind Co Ltd プロセッサ
CN100456230C (zh) 2007-03-19 2009-01-28 中国人民解放军国防科学技术大学 超长指令字与单指令流多数据流融合的计算群单元
US7707390B2 (en) 2007-04-25 2010-04-27 Arm Limited Instruction issue control within a multi-threaded in-order superscalar processor
US8464024B2 (en) 2007-04-27 2013-06-11 Hewlett-Packard Development Company, L.P. Virtual address hashing
US8555039B2 (en) 2007-05-03 2013-10-08 Qualcomm Incorporated System and method for using a local condition code register for accelerating conditional instruction execution in a pipeline processor
US8046566B2 (en) 2007-05-14 2011-10-25 International Business Machines Corporation Method to reduce power consumption of a register file with multi SMT support
US9250899B2 (en) 2007-06-13 2016-02-02 International Business Machines Corporation Method and apparatus for spatial register partitioning with a multi-bit cell register file
US7669036B2 (en) 2007-06-14 2010-02-23 Qualcomm Incorporated Direct path monitoring by primary processor to each status register in pipeline chained secondary processors for task allocation via downstream communication
US7865769B2 (en) 2007-06-27 2011-01-04 International Business Machines Corporation In situ register state error recovery and restart mechanism
JP4913685B2 (ja) 2007-07-04 2012-04-11 株式会社リコー Simd型マイクロプロセッサおよびsimd型マイクロプロセッサの制御方法
US7979677B2 (en) 2007-08-03 2011-07-12 International Business Machines Corporation Adaptive allocation of reservation station entries to an instruction set with variable operands in a microprocessor
JP2009064966A (ja) 2007-09-06 2009-03-26 Shinko Electric Ind Co Ltd 多層配線基板及びその製造方法ならびに半導体装置
US20090113182A1 (en) * 2007-10-24 2009-04-30 Abernathy Christopher M System and Method for Issuing Load-Dependent Instructions from an Issue Queue in a Processing Unit
US20090172370A1 (en) 2007-12-31 2009-07-02 Advanced Micro Devices, Inc. Eager execution in a processing pipeline having multiple integer execution units
US7694112B2 (en) 2008-01-31 2010-04-06 International Business Machines Corporation Multiplexing output from second execution unit add/saturation processing portion of wider width intermediate result of first primitive execution unit for compound computation
US7844807B2 (en) * 2008-02-01 2010-11-30 International Business Machines Corporation Branch target address cache storing direct predictions
US8732438B2 (en) * 2008-04-16 2014-05-20 Oracle America, Inc. Anti-prefetch instruction
US8001331B2 (en) * 2008-04-17 2011-08-16 Arm Limited Efficiency of cache memory operations
US8078833B2 (en) 2008-05-29 2011-12-13 Axis Semiconductor, Inc. Microprocessor with highly configurable pipeline and executional unit internal hierarchal structures, optimizable for different types of computational functions
US8135942B2 (en) 2008-08-28 2012-03-13 International Business Machines Corpration System and method for double-issue instructions using a dependency matrix and a side issue queue
US8135941B2 (en) 2008-09-19 2012-03-13 International Business Machines Corporation Vector morphing mechanism for multiple processor cores
JP5300407B2 (ja) 2008-10-20 2013-09-25 株式会社東芝 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法
US8103852B2 (en) 2008-12-22 2012-01-24 International Business Machines Corporation Information handling system including a processor with a bifurcated issue queue
US8041928B2 (en) 2008-12-22 2011-10-18 International Business Machines Corporation Information handling system with real and virtual load/store instruction issue queue
US8140832B2 (en) 2009-01-23 2012-03-20 International Business Machines Corporation Single step mode in a software pipeline within a highly threaded network on a chip microprocessor
US8271765B2 (en) * 2009-04-08 2012-09-18 International Business Machines Corporation Managing instructions for more efficient load/store unit usage
US8489791B2 (en) 2010-03-12 2013-07-16 Lsi Corporation Processor bus bridge security feature for network processors or the like
US8700877B2 (en) 2009-09-25 2014-04-15 Nvidia Corporation Address mapping for a parallel thread processor
US8335892B1 (en) 2009-09-28 2012-12-18 Nvidia Corporation Cache arbitration between multiple clients
CN101710272B (zh) 2009-10-28 2012-09-05 龙芯中科技术有限公司 指令调度装置和方法
CN101706714B (zh) 2009-11-23 2014-03-26 龙芯中科技术有限公司 指令发射系统及方法、处理器及其设计方法
US20110161616A1 (en) 2009-12-29 2011-06-30 Nvidia Corporation On demand register allocation and deallocation for a multithreaded processor
CN102122275A (zh) 2010-01-08 2011-07-13 上海芯豪微电子有限公司 一种可配置处理器
US8984264B2 (en) * 2010-01-15 2015-03-17 Oracle America, Inc. Precise data return handling in speculative processors
US8418187B2 (en) 2010-03-01 2013-04-09 Arm Limited Virtualization software migrating workload between processing circuitries while making architectural states available transparent to operating system
CN101876892B (zh) 2010-05-20 2013-07-31 复旦大学 面向通信和多媒体应用的单指令多数据处理器电路结构
US8713263B2 (en) 2010-11-01 2014-04-29 Advanced Micro Devices, Inc. Out-of-order load/store queue structure
US9207995B2 (en) 2010-11-03 2015-12-08 International Business Machines Corporation Mechanism to speed-up multithreaded execution by register file write port reallocation
CN102004719B (zh) 2010-11-16 2015-05-20 清华大学 支持同时多线程的超长指令字处理器结构
WO2012135041A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
US8656401B2 (en) 2011-05-13 2014-02-18 Advanced Micro Devices, Inc. Method and apparatus for prioritizing processor scheduler queue operations
GB2493209B (en) 2011-07-29 2016-02-17 Canon Kk Method and device for parallel decoding of scalable bitstream elements
US20130054939A1 (en) 2011-08-26 2013-02-28 Cognitive Electronics, Inc. Integrated circuit having a hard core and a soft core
US8850121B1 (en) * 2011-09-30 2014-09-30 Applied Micro Circuits Corporation Outstanding load miss buffer with shared entries
US8966232B2 (en) * 2012-02-10 2015-02-24 Freescale Semiconductor, Inc. Data processing system operable in single and multi-thread modes and having multiple caches and method of operation
US9223709B1 (en) 2012-03-06 2015-12-29 Marvell International Ltd. Thread-aware cache memory management
US9262174B2 (en) 2012-04-05 2016-02-16 Nvidia Corporation Dynamic bank mode addressing for memory access
TWI599879B (zh) * 2012-06-15 2017-09-21 英特爾股份有限公司 在處理器中之免消歧義失序載入儲存佇列方法和微處理器
KR101825585B1 (ko) * 2012-06-15 2018-02-05 인텔 코포레이션 명확화 없는 비순차 load store 큐를 갖는 재정렬된 투기적 명령어 시퀀스들
US9424045B2 (en) 2013-01-29 2016-08-23 Arm Limited Data processing apparatus and method for controlling use of an issue queue to represent an instruction suitable for execution by a wide operand execution unit
US9323739B2 (en) 2013-02-26 2016-04-26 Lenovo (Singapore) Pte. Ltd. Identifying words for a context
US9817667B2 (en) 2013-05-23 2017-11-14 Advanced Micro Devices, Inc. Techniques for scheduling operations at an instruction pipeline
US9417879B2 (en) 2013-06-21 2016-08-16 Intel Corporation Systems and methods for managing reconfigurable processor cores
US9639369B2 (en) 2013-11-11 2017-05-02 Apple Inc. Split register file for operands of different sizes
US9448936B2 (en) * 2014-01-13 2016-09-20 Apple Inc. Concurrent store and load operations
US9672043B2 (en) 2014-05-12 2017-06-06 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor
US9665372B2 (en) 2014-05-12 2017-05-30 International Business Machines Corporation Parallel slice processor with dynamic instruction stream mapping
US9760375B2 (en) 2014-09-09 2017-09-12 International Business Machines Corporation Register files for storing data operated on by instructions of multiple widths
US9720696B2 (en) 2014-09-30 2017-08-01 International Business Machines Corporation Independent mapping of threads
US9898409B2 (en) * 2014-10-09 2018-02-20 The Regents Of The University Of Michigan Issue control for multithreaded processing
US10209995B2 (en) * 2014-10-24 2019-02-19 International Business Machines Corporation Processor core including pre-issue load-hit-store (LHS) hazard prediction to reduce rejection of load instructions
US9519484B1 (en) 2014-11-02 2016-12-13 Netronome Systems, Inc. Picoengine instruction that controls an intelligent packet data register file prefetch function
US9977678B2 (en) 2015-01-12 2018-05-22 International Business Machines Corporation Reconfigurable parallel execution and load-store slice processor
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
US10133581B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Linkable issue queue parallel execution slice for a processor
US20170364356A1 (en) * 2016-06-16 2017-12-21 International Business Machines Corporation Techniques for implementing store instructions in a multi-slice processor architecture
US10318419B2 (en) * 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
US10223266B2 (en) * 2016-11-30 2019-03-05 International Business Machines Corporation Extended store forwarding for store misses without cache allocate
US11245572B1 (en) * 2017-01-31 2022-02-08 Barefoot Networks, Inc. Messaging between remote controller and forwarding element
US10901744B2 (en) * 2017-11-30 2021-01-26 International Business Machines Corporation Buffered instruction dispatching to an issue queue

Also Published As

Publication number Publication date
US20210406023A1 (en) 2021-12-30
US11150907B2 (en) 2021-10-19
GB201712270D0 (en) 2017-09-13
US11734010B2 (en) 2023-08-22
GB2549907A (en) 2017-11-01
GB2549907B (en) 2021-08-11
JP2018501564A (ja) 2018-01-18
US20160202988A1 (en) 2016-07-14
JP6628801B2 (ja) 2020-01-15
US20160202986A1 (en) 2016-07-14
US20180336036A1 (en) 2018-11-22
WO2016113105A1 (en) 2016-07-21
US20230273793A1 (en) 2023-08-31
US10133576B2 (en) 2018-11-20

Similar Documents

Publication Publication Date Title
DE112015004983T5 (de) Parallel-Slice-Prozessor mit einer Lade-Speicher-Umlaufwarteschlange für eine schnelle Freigabe von Einträgen in einer Ausgabewarteschlange
DE112015005597T5 (de) Verknüpfungsfähige Parallelausführungs-Schicht einer Ausgabewarteschlange für einen Prozessor
DE112009000741B4 (de) Vektorbefehle zum Ermöglichen von effizienter Synchronisation und parallelen Reduktionsoperationen
DE112012005085B4 (de) Bereitstellen logischer Partitionen mit einer ausschließlichen Nutzung eines Prozessorkerns wiedergebenden hardware-strang-spezifischen Information
US20160202989A1 (en) Reconfigurable parallel execution and load-store slice processor
DE102012222394A1 (de) Verfahren und Vorrichtung zum Sammelzwischenspeichern von Quelloperanden
DE102012212639A1 (de) Temporäre SIMT-Ausführungs-Optimierung
DE102014003790A1 (de) Parallelvorrichtung für hochkomprimierte Hochgeschwindigkeits-LZ77-Tokenisierung und Huffman-Codierung für Deflate-Komprimierung
DE102014003799A1 (de) Systeme und Verfahren zur Übertragungseliminierung mit Bypass-Mehrfachinstanziierungstabelle
DE102012222913A1 (de) Verfahren und Apparat zum Planen von Anweisungen unter Benutzung von Zuvor-Dekodieren-Daten
DE102010055267A1 (de) Gemeinsames Benutzen von Ressourcen zwischen einer CPU und GPU
DE10297166T5 (de) Mechanismus zur Interrupt-Abwicklung in Computersystemen, welche die gleichzeitige Ausführung mehrerer Threads unterstützen
DE112005000706T5 (de) Verfahren und System zum Bereitstellen von Multi-Threading auf Nutzerebene
DE112016007516T5 (de) Vorrichtungen und verfahren für eine prozessorarchitektur
DE102013114351A1 (de) System und Verfahren für Hardware-Disponierung bedingter Barrieren und ungeduldiger Barrieren
DE112013004783T5 (de) Durch Lese- und Schreibmasken gesteuerter Vektor-Verschiebebefehl
DE112013004800T5 (de) Anweisung zur Bitverschiebung nach links mit Ziehen von Einsen in niedrigwertigere Bit
DE112012007088T5 (de) Befehl zum Reduzieren von Elementen in einem Vektorregister mit einem schrittweisen Zugriffsmuster
DE102012222932A1 (de) Gestaltetes Register-Datei-Lesen
DE102012222391B4 (de) Mehrkanal-Zeitscheibengruppen
DE102013201195A1 (de) Zuvor-geplante Wiederholungen von divergenten Operationen
DE112020004071T5 (de) Handhabung von anweisungen zur akkumulation von registerergebnissen in einem mikroprozessor
DE112013007703T5 (de) Befehl und Logik zum Kennzeichnen von Befehlen zur Rückordnung in einem mehrsträngigen Out-of-order-Prozessor
DE102015014800A1 (de) Verbesserte SIMD-K-nächste-Nachbarn-Implementierung
DE102021129313B4 (de) Flächen- und energieeffizienter mechanismus zum aufwecken speicherabhängiger ladevorgänge durch zusammenführungen beim abarbeiten von speichervorgängen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R084 Declaration of willingness to licence