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 PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 claims description 16
- 239000000872 buffer Substances 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000012163 sequencing technique Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/608—Details 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 Prozessorkerns20 veranschaulicht, der verwendet werden kann, um Prozessorkerne204 und20B aus1 zu realisieren. -
3 ein Blockschaubild ist, das Einzelheiten des Prozessorkerns20 veranschaulicht. -
4 ein Blockschaubild ist, das ein Verfahren zum Betreiben des Prozessorkerns20 veranschaulicht. -
5 ein Blockschaubild ist, das Einzelheiten eines Instruktionsausführungs-Slice42AA veranschaulicht, der verwendet werden kann, um Instruktionsausführungs-Slices ES0 bis ES7 aus den2 und3 zu realisieren. -
6 ein Blockschaubild ist, das Einzelheiten eines Lade-Speicher-Slice44 und eines Cache-Slice46 veranschaulicht, die verwendet werden können, um Lade-Speicher-Slices LS0 bis LS7 und Cache-Slices CS0 bis CS7 aus den2 und3 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 Prozessoren10A bis10D , 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 Prozessoren10A bis10D weisen eine identische Struktur auf und beinhalten die Kerne20A und20B sowie einen lokalen Speicher12 , bei dem es sich um eine Cache-Ebene oder eine Ebene eines internen Systemarbeitsspeichers handeln kann. Die Prozessoren10A und10B sind verbunden mit einem Haupt-Systemarbeitsspeicher14 , einem Speicherteilsystem16 , das nicht entfernbare Laufwerke und optische Laufwerke beinhaltet, um Medien wie beispielsweise einen CD-ROM17 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 Prozessoren10A bis10D zu steuern. Das veranschaulichte Verarbeitungssystem beinhaltet zudem Eingabe/Ausgabe-(E/A-)Schnittstellen und Eingabe/Ausgabe-Einheiten18 wie z. B. Mäuse und Tastaturen, um eine Benutzereingabe zu empfangen, sowie Grafikanzeigen zum Anzeigen von Informationen. Obwohl mit dem System aus1 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 Prozessorkerns20 veranschaulicht, der verwendet werden kann, um die Prozessorkerne20A und20B aus1 zu realisieren. Der Prozessorkern20 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 Bus32 innerhalb von zwei Clustern CLA und CLB einer Mehrzahl von Zuteilungswarteschlangen Disp0 bis Disp7 bereitstellen. Die Steuerungslogik in dem Prozessorkern20 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-Netzwerk36 , 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 Prozessorkern20 kann Spezial-Ausführungs-Slices ES0 bis ES7 beinhalten. Andere Spezial-Einheiten wie z. B. Verschlüsselungsprozessoren34A und34B , dezimale Gleitkommaeinheiten (Decimal Floating Point Units, DFUs)33A und33B sowie separate Verzweigungsausführungseinheiten (Branch Execution Units, BRU)35A und35B 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 Speicherbusse40 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-Netzwerk37 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-Netzwerk37 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 die4 bis6 beschrieben. Ein Adresserzeugungsbus (AGEN-Bus)38 und ein Speicherdatenbus39 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-Bus38 und der Speicherdatenbus39 zum Beispiel Speicher-Operationen, die letztlich in einen der Cache-Slices CS0 bis CS7 geschrieben werden, über einen der Speicherbusse40 oder an eine Speicherstelle in einer höheren Ebene der Arbeitsspeicherhierarchie, mit der die Cache-Slices CS0 bis CS7 über einen E/A-Bus41 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-Bus41 bedient, indem der angeforderte Wert in den betreffenden Cache-Slice CS0 bis CS7 oder direkt durch den Cache-Slice CS0 bis CS7 und den Speicherbus40 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-Busses38 und/oder des Datenbusses39 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-Netzwerk37 verbinden. Die Cache-Slices CS0 bis CS7 sind über den E/A-Bus41 , der innerhalb oder außerhalb des Prozessorkerns20 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 Netzwerksteuerungsblock57 , der das Zuteilungs-Routing-Netzwerk36 , das Rückschreib-Routing-Netzwerk37 , den AGEN-Bus38 und den Speicherdatenbus39 steuert. Der Netzwerksteuerungsblock57 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 Netzwerksteuerungsblock57 zwischen Konfigurationen der Ausführungs-Slices ES0 bis ES7 und Lade-Speicher-Slices LS0 bis LS7 innerhalb des Prozessorkerns20 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 aus2 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-Netzwerk37 aufgeteilt werden, indem Transceiver oder Switches sw, welche die Teile des Rückschreib-Routing-Netzwerks37 , des Clusters CLA und des Clusters CLB verbinden, deaktiviert werden. Ein Abtrennen der Teile des Rückschreib-Routing-Netzwerks37 stellt einen größeren Durchsatz innerhalb eines jeden Clusters bereit und ermöglicht, dass die Teile des Rückschreib-Routing-Netzwerks37 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-Netzwerk37 separate simultane Routen bereitstellen. Somit können in dem aufgeteilten Rückschreib-Routing-Netzwerk37 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-Netzwerk37 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 aus2 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 Prozessorkerns20 veranschaulicht. Der Prozessorkern20 enthält eine Verzweigungsausführungseinheit52 , die Verzweigungsinstruktionen beurteilt, und eine Instruktionsabrufeinheit (Instruction Fetch Unit, IFetch)53 , die das Abrufen von Instruktionen wie z. B. von Instruktionen aus dem (Cache54 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 den2 und3 ) zu enthalten, und das Zuteilungs-Routing-Netzwerk32 verbindet den IBUF31 mit den segmentierten Ausführungs- und Lade-Speicher-Slices50 , die mit den Cache-Slices46 verbunden sind. Der Instruktionsfluss- und Netzwerksteuerungsblock57 führt eine Steuerung der segmentierten Ausführungs- und Lade-Speicher-Slices50 , der Cache-Slices46 und des Zuteilungs-Routing-Netzwerks32 durch, um die Slices gemäß einer Betriebsart-/Thread-Steuerungslogik59 wie in den2 und3 veranschaulicht zu konfigurieren. Zudem wird eine Instruktionsabschlusseinheit58 bereitgestellt, um den Abschluss von Instruktionen zu überwachen, die durch die ISU30 sequenziert werden. Die ISU30 beinhaltet außerdem Logik, um Rückschreiboperationen durch die Lade-Speicher-Slices LS0 bis LS7 innerhalb der segmentierten Ausführungs- und Lade-Speicher-Slices50 zu steuern. Darüber hinaus kann eine Energiemanagementeinheit56 eine Stromeinsparung bereitstellen, indem sie die Anzahl aktiver Slices innerhalb der segmentierten Ausführungs- und Cache-Slices50 verringert oder erhöht. Obwohl die ISU30 und der Instruktionsfluss- und Netzwerksteuerungsblock57 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 Prozessorkerns20 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Eine Instruktion wird von dem Zuteilungs-Routing-Netzwerk32 in einem der Ausführungs-Slices ES0 bis ES7 empfangen (Schritt60 ), und wenn die Instruktion keine LS-Instruktion ist, d. h. wenn sie eine VS-/FX-Instruktion ist (Entscheidung61 ), wird die FX-/VS-Instruktion an die FX-/VS-Pipeline/s ausgegeben (Schritt62 ). Wenn die Instruktion eine LS-Instruktion ist (Entscheidung61 ), wird die EA berechnet (Schritt63 ) und in einer Umlaufwarteschlange (DARQ) gespeichert (Schritt64 ). Wenn die Instruktion keine Speicher-Instruktion ist (Entscheidung65 ), wird der Eintrag aus der ausgegebenen Warteschlange entfernt (Schritt67 ), nachdem die Instruktion in der DARQ gespeichert wurde. Wenn die Instruktion eine Speicher-Instruktion ist (Entscheidung65 ), wird auch der Speicherwert in der DARQ gespeichert (Schritt66 ), 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 (Schritt67 ), und die Instruktion wird aus der DARQ ausgegeben (Schritt68 ). Wenn die Instruktion zurückgewiesen wird (Entscheidung69 ), wird Schritt68 wiederholt, um daraufhin die zurückgewiesene Instruktion erneut auszugeben. Wenn die Instruktion nicht zurückgewiesen wird (Entscheidung69 ), wird der Eintrag aus der DARQ entfernt (Schritt70 ). Der aus den Schritten60 bis70 bestehende Prozess wird so lange wiederholt, bis das System heruntergefahren wird (Entscheidung71 ). Bei alternativen Verfahren gemäß anderen Ausführungsformen der Erfindung kann Schritt67 nur durchgeführt werden, nachdem versucht wurde, die Instruktion auszugeben, und bei einer weiteren Alternative können die Schritte64 und66 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 den2 und3 zu realisieren. Eingaben von den Zuteilungswarteschlangen werden über das Zuteilungs-Routing-Netzwerk32 durch eine Registeranordung70 empfangen, so dass Operanden und die Instruktionen in Ausführungsreservierungsstationen (Execution Reservation stations, ER)73 einer Ausgabewarteschlange75 gestellt werden können. Die Registeranordnung70 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-Slice42AA 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-Mapper71 bildet die Werte in der Registeranordnung70 auf etwaige externe Referenzen ab, wie z. B. Rückschreibwerte, die über das Rückschreib-Routing-Netzwerk37 mit anderen Slices ausgetauscht werden. Ein Protokollpuffer (History Buffer, HB)76 stellt eine Wiederherstellungsfunktion für Registerziele von Instruktionen bereit, die durch den ES42AA ausgeführt werden. Als Reaktion auf ein Betriebsart-Steuerungssignal können Register unter Verwendung des Rückschreib-Routing-Netzwerks37 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-Slice42AA wird neben einem weiteren Ausführungs-Slice42BB veranschaulicht, um eine Ausführungssperrsteuerung zu veranschaulichen, die zwischen Paaren von Ausführungs-Slices innerhalb der Ausführungs-Slices ES0 bis ES7 aus den2 und3 bereitgestellt werden kann und einen Super-Slice bilden kann. Die Ausführungssperrsteuerung stellt eine Koordination zwischen den Ausführungs-Slices42AA und42BB 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ührungspipelines74A bis74C und72 , die eine unsortierte und simultane Ausführung von Instruktionen für den Instruktionsstrom unterstützen, der dem Ausführungs-Slice42AA entspricht. Die durch die Ausführungspipelines74A bis74C und72 ausgeführten Instruktionen können interne Instruktionen sein, die Teile von Instruktionen realisieren, welche über das Zuteilungs-Routing-Netzwerk32 empfangen werden, oder sie können Instruktionen sein, die direkt über das Zuteilungs-Routing-Netzwerk32 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-Slice42AA erfolgen. Die Ausführungspipeline72 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 auf4 veranschaulichten Logik gesteuert, so dass die Ausführungspipeline72 die EA einer in der DARQ78 gespeicherten Instruktion nicht berechnen muss, da der Eintrag in der DARQ78 aus der EA zusammen mit einem Speicherwert für Speicher-Operationen besteht. Sobald ein Eintrag in der DARQ78 vorhanden ist, kann der betreffende Eintrag, wie oben beschrieben, aus einer Ausgabewarteschlange75 entfernt werden. Die DARQ78 kann eine größere Anzahl von Einträgen aufweisen, wodurch in der Ausgabewarteschlange75 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-Slice42AA ausgeführt werden, können sich FX-/VS-Pipelines74A bis74C 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. Multiplexer77A bis77C stellen ein Routing von Ausführungsergebnissen zu dem/von dem Protokollpuffer76 und ein Routing von Rückschreibergebnissen an das Rückschreib-Routing-Netzwerk37 , das E/A-Routing-Netzwerk39 und das/die AGEN-Routing-Netzwerk/e38 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 DARQ78 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üsselungsprozessoren34A und34B gesendet werden. In der DARQ78 gespeicherte Daten können dann durch die Multiplexer77B bzw.77C gebündelt auf den AGEN-Bus38 oder den Speicherdatenbus39 gegeben werden. - Mit Blick auf
6 wird ein Beispiel für einen Lade-Speicher-(LS)Slice44 gezeigt, der verwendet werden kann, um die Lade-Speicher-Slices LS0 bis LS7 aus2 zu realisieren. Eine Lade-Speicher-Zugriffswarteschlange (Load/Store Access Queue, LSAQ)80 ist mit dem AG EN-Bus38 verbunden, und die direkte Verbindung mit dem AGEN-Bus38 und der LSAQ80 wird durch einen Multiplexer81 ausgewählt, der über den Speicherbus40 eine Eingabe in ein Cacheverzeichnis83 eines Datencaches82 in einem Cache-Slice46 bereitstellt. Wie oben beschrieben, steuert eine Logik innerhalb der LSAQ80 die Annahme oder Zurückweisung von LS-Operationen, zum Beispiel, wenn in dem Verzeichnis83 ein Flag gesetzt wird, der eine Modifizierung eines entsprechenden Werts in dem Datencache82 erst dann zulässt, wenn andere Operationen abgeschlossen wurden. Die Ausgabe des Multiplexers81 kann auch eine Eingabe an eine Lade-Neuordnungswarteschlange (Load Reorder Queue, LRQ)87 oder Speicher-Neuordnungswarteschlange (Store Reorder Queue, SRQ)88 entweder von der LSAQ80 oder von dem AGEN-Bus38 oder an andere Ausführungseinrichtungen innerhalb des Lade-Speicher-Slice44 bereitstellen, die hier nicht gezeigt werden. Der Lade-Speicher-Slice44 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-Slice44 ausgegeben wurden, beinhalten die LRQ87 und die SRQ88 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-Slice44 unter Umständen von einem oder mehreren der Ausführungs-Slices ES0 bis ES7 über den AGEN-Bus38 mehrere Operationen pro Zyklus empfangen kann, sind aufgrund von Beschränkungen des LS-Slice44 womöglich nicht alle Zugriffe in einem gegebenen Ausführungszyklus gleichzeitig ausführbar. In derartigen Fällen speichert die LSAQ80 Einträge, die bis dahin noch nicht ausgeführten Operationen entsprechen. Die SRQ88 empfängt von dem Speicherdatenbus39 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-Slice44 und den Cache-Slice46 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 LRQ87 und die SRQ88 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 LSAQ80 kann Ressourcen freigeben, sobald Operationen ausgeführt werden oder nachdem Einträge für die Operationen und/oder Daten in der LRQ87 oder SRQ88 gespeichert wurden. Eine Steuerungslogik innerhalb des LS-Slice44 tauscht Daten mit der DARQ78 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-Bus38 und durch das Rückschreib-Routing-Netzwerk37 bereitgestellt, das so verbunden ist, dass es Daten von dem Datencache82 des Cache-Slice46 empfängt und Daten an einen Block84 zur Datenausrichtungsaufhebung eines weiteren Slice bereitstellt. Eine Datenformatierungseinheit85 verbindet den Cache-Slice44 über einen Puffer86 mit dem Rückschreib-Routing-Netzwerk37 , so dass Rückschreibergebnisse aus einem Ausführungs-Slice in die Ressourcen eines weiteren Ausführungs-Slice geschrieben werden können. Der Datencache82 des Cache-Slice46 ist zudem mit dem E/A-Routing-Netzwerk41 verbunden, um Werte aus einem Cache/Systemarbeitsspeicher höherer Ordnung zu laden und Werte aus dem Datencache82 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)
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
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)
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)
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 |
-
2015
- 2015-01-13 US US14/595,635 patent/US10133576B2/en active Active
- 2015-05-28 US US14/724,268 patent/US20160202988A1/en not_active Abandoned
- 2015-12-29 GB GB1712270.6A patent/GB2549907B/en active Active
- 2015-12-29 JP JP2017530696A patent/JP6628801B2/ja active Active
- 2015-12-29 DE DE112015004983.5T patent/DE112015004983T5/de active Pending
- 2015-12-29 WO PCT/EP2015/081330 patent/WO2016113105A1/en active Application Filing
-
2018
- 2018-07-30 US US16/049,038 patent/US11150907B2/en active Active
-
2021
- 2021-09-07 US US17/467,882 patent/US11734010B2/en active Active
-
2023
- 2023-05-04 US US18/312,380 patent/US20230273793A1/en active Pending
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 |