DE112015005597T5 - Verknüpfungsfähige Parallelausführungs-Schicht einer Ausgabewarteschlange für einen Prozessor - Google Patents

Verknüpfungsfähige Parallelausführungs-Schicht einer Ausgabewarteschlange für einen Prozessor Download PDF

Info

Publication number
DE112015005597T5
DE112015005597T5 DE112015005597.5T DE112015005597T DE112015005597T5 DE 112015005597 T5 DE112015005597 T5 DE 112015005597T5 DE 112015005597 T DE112015005597 T DE 112015005597T DE 112015005597 T5 DE112015005597 T5 DE 112015005597T5
Authority
DE
Germany
Prior art keywords
instruction
execution layer
execution
layer
slave
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112015005597.5T
Other languages
English (en)
Inventor
Jeffrey Brownscheidle
Dung Quoc Nguyen
Maureen Anne Delaney
Sundeep Chadha
Hung Qui Le
Brian William Thompto
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112015005597T5 publication Critical patent/DE112015005597T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters

Abstract

Eine Ausführungsschicht-Schaltung für einen Prozessorkern hat mehrere parallele Befehlsausführungsschichten und stellt eine flexible und effiziente Verwendung von internen Ressourcen bereit. Die Ausführungsschicht-Schaltung enthält eine Master-Ausführungsschicht zum Empfangen von Befehlen eines ersten Befehlsstroms und eine Slave-Ausführungsschicht zum Empfangen von Befehlen eines zweiten Befehlsstroms und von Befehlen des ersten Befehlsstroms, die eine Ausführungsbreite erfordern, die größer ist als eine Breite der Schicht. Die Ausführungsschicht-Schaltung enthält außerdem eine Steuerlogik, die erkennt, wenn ein erster Befehl des ersten Befehlsstroms die größere Breite hat, und steuert die Slave-Ausführungsschicht zum Reservieren eines ersten Ausgabezyklus zum parallelen Ausgeben des ersten Befehls über die Master-Ausführungsschicht und die Slave-Ausführungsschicht.

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich auf Verarbeitungssysteme und Prozessoren und insbesondere auf einen mit Pipeline-Technik betriebenen Prozessorkern mit umkonfigurierbarer Architektur, bei dem eine Parallelausführungs-Schicht (slice) einer Ausgabewarteschlange zum Ausführen von Befehlen unterschiedlicher Breite verknüpft ist.
  • Beschreibung der verwandten Technik
  • Bei heutigen Prozessorkernen werden Pipelines zum Ausführen mehrerer Hardware-Threads verwendet, die mehreren Befehlsströmen entsprechen, so dass eine effektivere Verwendung von Prozessorressourcen durch gemeinsame Nutzung von Ressourcen realisiert werden kann, und indem eine Ausführung fortgesetzt werden kann, während ein oder mehrere Hardware-Threads auf ein Ereignis warten.
  • Übliche Ausführungspipelines werden eingerichtet, um Befehle mit fester Breite auszuführen, oder um Abschnitte von Vektorbefehlen parallel auszuführen, da die Steuerlogik zum Verwalten der Ausführung von Befehlen üblicherweise festgelegt ist. Derartige Architekturen sind auf ihre Architektur zum Ausführen fester Befehle beschränkt, und wenn ein Parallel-Prozessor Nicht-Vektorbefehle ausführt, werden üblicherweise keine Prozessorressourcen verwendet.
  • Es wäre daher wünschenswert, einen Prozessorkern und ein Verfahren zum Ausführen von Programmbefehlen bereitzustellen, die eine verbesserte Verwendung der Prozessorkern-Ressourcen bereitstellen.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Bevorzugte Ausführungsformen der Erfindung sind in einer Ausführungsschicht-Schaltung für einen Prozessorkern, wobei ein Prozessorkern eine derartige Ausführungsschicht-Schaltung aufweist, und in einem Verfahren des Betriebs des Prozessorkerns und in dem Prozessor verkörpert.
  • Die Ausführungsschicht-Schaltung enthält mehrere parallele Befehlsausführungsschichten zum Ausführen mehrerer Befehlsströme, darunter eine Master-Ausführungsschicht zum Empfangen von Befehlen eines ersten Befehlsstroms und eine Slave-Ausführungsschicht zum Empfangen von Befehlen eines zweiten Befehlsstroms und von Befehlen des ersten Befehlsstroms, die eine Ausführungsbreite erfordern, die größer ist als eine Breite der Schichten. Die Ausführungsschicht-Schaltung enthält außerdem eine Steuerlogik, die erkennt, wenn ein erster Befehl des ersten Befehlsstroms die größere Breite hat, und die Slave-Ausführungsschicht steuert, um einen ersten Ausgabezyklus zu reservieren, um den ersten Befehl über die Master-Ausführungsschicht und die Slave-Ausführungsschicht parallel auszugeben.
  • Die oben genannten und weitere Aufgaben, Merkmale und Vorteile der Erfindung werden aus der nachfolgenden genaueren Beschreibung der bevorzugten Ausführungsformen der Erfindung deutlich, die in den beigefügten Zeichnungen veranschaulicht ist.
  • KURZBESCHREIBUNG DER MEHREREN ZEICHNUNGSANSICHTEN
  • Die neuartigen Merkmale, von denen angenommen wird, dass sie für die Erfindung kennzeichnend sind, sind in den angefügten Ansprüchen dargestellt. Die eigentliche Erfindung jedoch sowie eine bevorzugte Verwendungsart, weitere Aufgaben und deren Vorteile werden durch Bezugnahme auf die folgende genaue Beschreibung der Erfindung am besten verstanden, wenn diese in Verbindung mit den beigefügten Zeichnungen gelesen wird, bei denen gleiche Bezugszeichen ähnliche Komponenten angeben, und:
  • 1 ein Blockschaltplan ist, der ein Verarbeitungssystem veranschaulicht, bei dem Techniken gemäß einer Ausführungsform der vorliegenden Erfindung realisiert werden.
  • 2 ist ein Blockschaltplan, der Einzelheiten eines Prozessorkerns 20 veranschaulicht, der zum Implementieren von Prozessorkernen 20A bis 20B von 1 verwendet werden kann.
  • 3 ist eine bildliche Darstellung, die die Konfiguration des Prozessorkerns 20 bei bestimmten Betriebsarten veranschaulicht.
  • 4 ist ein Blockschaltplan, der Einzelheiten des Prozessorkerns 20 veranschaulicht.
  • 5 ist ein Steuerungs-Ablaufplan, der einen beispielhaften Steuerungsablauf veranschaulicht, der in dem Prozessorkern 20 implementiert werden kann.
  • 6 ist ein Ablaufplan, der ein Verfahren zum Betreiben des Prozessorkerns 20 veranschaulicht.
  • 7 ist ein Blockschaltplan, der Einzelheiten einer Befehlsausführungsschicht 42AA veranschaulicht, die zum Implementieren von Befehlsausführungsschichten ES0 bis ES7 der 2 bis 3 verwendet werden kann.
  • 8 ist ein Blockschaltplan, der Einzelheiten in einer beispielhaften Ausführungsform einer Ausführungs-Verriegelungs-Steuerlogik 79 von 7 veranschaulicht.
  • 9 ist ein Blockschaltplan, der Einzelheiten einer Cachespeicher-Schicht 44 veranschaulicht, die zum Implementieren von Lade/Speicher-Schichten LS0 bis LS7 der 2 bis 3 verwendet werden kann.
  • GENAUE BESCHREIBUNG DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich auf Prozessoren und Verarbeitungssysteme, bei denen herkömmliche Pipelines durch Ausführungsschichten ersetzt werden, die umkonfiguriert werden können, um Teilmengen von Ressourcen anhand von einem oder mehreren Threadmode-Steuersignalen effektiv zuzuweisen, die zwischen Betriebsart mit Einzel-Thread, Betriebsart mit Mehrfach-Thread und unterschiedlichen Anzahlen von gleichzeitig ausgeführten Hardware-Threads gewählt werden können. Insbesondere enthält der nachfolgend beschriebene Prozessor Ausführungsschichtschichten, die als Master- und Slave-Schichten mit einer Steuerlogik paarweise angeordnet werden, um das Ausführen von Befehlen zu ermöglichen, die eine größere Breite als eine Basisbreite der Schichten erfordern, indem zwei Schichten zusammengeführt werden, wenn ein breiterer Befehl zu den Schichten versendet wird.
  • In 1 ist ein Verarbeitungssystem gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Das dargestellte Verarbeitungssystem enthält mehrere Prozessoren 10A bis 10D, jeweils entsprechend einer Ausführungsform der vorliegenden Erfindung. Das dargestellte Mehrfach-Verarbeitungssystem ist veranschaulichend, und ein Verarbeitungssystem gemäß weiteren Ausführungsformen der vorliegenden Erfindung enthält Universal-Prozessorsysteme mit Mehrfach-Thread-Kernen. Die Prozessoren 10A bis 10D sind im Aufbau identisch und enthalten Kerne 20A bis 20B und einen lokalen Speicher 12, bei dem es sich um eine Cachespeicher-Ebene oder um eine Ebene des internen Systemspeichers handeln kann. Die Prozessoren 10A bis 10D sind mit einem Haupt-Systemspeicher 14, einem Speicher-Teilsystem 16, das nicht entnehmbare Laufwerke und optische Laufwerke zum Lesen von Medien wie ein CD-ROM 17 enthält, die ein Computerprogrammprodukt bilden, und Programmbefehle, die allgemein wenigstens ein Betriebssystem implementieren, zugehörige Anwendungsprogramme und optional einen Hypervisor zum Steuern von Partitionen mehrerer Betriebssysteme zum Ausführen durch die Prozessoren 10A bis 10D enthalten. Das dargestellte Verarbeitungssystem enthält außerdem Eingabe/Ausgabe-(E/A-)Schnittstellen und Einheiten 18 wie z. B. Mäuse und Tastaturen zum Empfangen von Benutzereingaben und grafische Anzeigen zum Anzeigen von Informationen. Zwar wird das System von 1 zum Bereitstellen einer Veranschaulichung eines Systems verwendet, bei dem die Prozessorarchitektur der vorliegenden Erfindung implementiert ist, es sollte jedoch klar sein, dass die dargestellte Architektur nicht einschränkend ist und ein Beispiel eines geeigneten Computersystems bereitstellen soll, bei dem die Techniken der vorliegenden Erfindung angewendet werden.
  • In 2 sind Einzelheiten eines beispielhaften Prozessorkerns 20 dargestellt, der zum Implementieren von Prozessorkernen 20A bis 20B von 1 verwendet werden kann. Der Prozessorkern 20 enthält einen Befehls-Cachespeicher (ICache) 54 und einen Befehlspuffer (IBUF) 31, die mehrere Befehlsströme speichern, die vom Cache- oder Systemspeicher abgerufen werden, und den bzw. die Befehlsströme über einen Bus 32 einer Mehrzahl von Versand-Warteschlangen Disp0 bis Disp7 in jedem der beiden Cluster CLA und CLB zuleiten. Die Steuerlogik im Prozessorkern 20 steuert das Versenden von Befehlen von den Versand-Warteschlangen Disp0 bis Disp7 zu einer Mehrzahl von Befehlsausführungsschichten ES0 bis ES7 über ein Versand-Routingnetzwerk 36, das ein Versenden von Befehlen von jeder der Versand-Warteschlangen Disp0 bis Disp7 zu jeder der Befehlsausführungsschichten ES0 bis ES7 in jedem der beiden Cluster CLA und CLB zulässt, d. h., beim Leiten von jeder Versand-Warteschlange zu jeder SchichtSchicht handelt es sich uneingeschränkt um Koppelpunkt-Routing (cross-point routing), was jedoch nicht zu den Anforderungen an die Erfindung gehört. in einigen der nachfolgend beschriebenen Konfigurationen ist das Versenden von Befehlen von Versand-Warteschlangen Disp0 bis Disp3 im Cluster CLA auf die Ausführungsschichten ES0 bis ES3 beschränkt, und das Versenden von Befehlen von Versand-Warteschlangen Disp4 bis Disp7 im Cluster CLB ist in ähnlicher Weise auf die Ausführungsschichten ES4 bis ES7 beschränkt. Die Befehlsausführungsschichten ES0 bis ES7 führen eine Ablaufsteuerung und eine logische, mathematische und weitere Operationen aus, die benötigt werden, um den Ausführungszyklus-Abschnitt der Ausführungszyklen für Befehle in den Befehlsströmen auszuführen, und es kann sich um identische Mehrzweck-Befehlsausführungsschichten ES0 bis ES7 handeln oder der Prozessorkern 20 kann spezielle Ausführungsschichten ES0 bis ES7 enthalten. Weitere spezielle Einheiten wie beispielsweise kryptografische Prozessoren 34A bis 34B, Dezimalgleitkomma-Einheiten (DFU) 33A bis 33B und separate Verzweigungs-Ausführungsschichten (BRU) 35A bis 35B können außerdem enthalten sein, um Mehrzweck-Ausführungsschichten ES0 bis ES7 für ein Ausführen von weiteren Aufgaben freizugeben. Befehlsausführungsschichten ES0 bis ES7 können mehrere interne Pipelines zum Ausführen von mehreren Befehlen und/oder Abschnitten von Befehlen enthalten.
  • Der Lade/Speicher-Abschnitt des Befehlsausführungszyklus (d. h. der Operationen, die ausgeführt werden, um eine Konsistenz des Cache-Speichers aufrechtzuerhalten, im Unterschied zu Lese/Schreib-Vorgängen des internen Registers) wird durch eine Mehrzahl von Lade/Speicher-(LS-)Schichten LS0 bis LS7 ausgeführt, die Lade- und Speicheroperationen verwalten, beispielsweise solche zwischen Befehlsausführungsschichten ES0 bis ES7 und einem Cache-Speicher, der durch eine Mehrzahl von Cachespeicher-Schichten CS0 bis CS7 gebildet wird, bei denen es sich um Partitionen eines niedrigstwertigen Cache-Speichers handelt. Cachespeicher-Schichten CS0 bis CS3 sind der Partition CLA zugewiesen und Cachespeicher-Schichten CS4 bis CS7 sind in der dargestellten Ausführungsform der Partition CLB zugewiesen, und jede der Lade/Speicher-Schichten LS0 bis LS7 verwaltet den Zugriff auf eine entsprechende der Cachespeicher-Schichten CS0 bis CS7 über einen entsprechenden der zweckbestimmten Speicherbusse 40. Bei anderen Ausführungsformen gibt es möglicherweise keine feste Partitionierung des Cache-Speichers, und einzelne Cachespeicher-Schichten CS0 bis CS7 oder Teilgruppen der vollständigen Menge von Cachespeicher-Schichten können mit mehreren der Lade/Speicher-Schichten LS0 bis LS7 verbunden sein, indem die Speicherbusse 40 als ein oder mehrere gemeinsam genutzte Speicherbusse implementiert werden. Die Lade/Speicher-Schichten LS0 bis LS7 sind mit Befehlsausführungsschichten ES0 bis ES7 durch ein Rückschreib-(Ergebnis-)Routingnetzwerk 37 zum Zurückgeben von Ergebnisdaten von entsprechenden Cachespeicher-Schichten CS0 bis CS7 verbunden, beispielsweise als Reaktion auf Ladeoperationen. Das Rückschreib-Routingnetzwerk 37 stellt außerdem Datenübertragungen der Rückschreib-Ergebnisse zwischen Befehlsausführungsschichten ES0 bis ES7 bereit. Ein Adressenerzeugungs-(AGEN-)Bus 38 und ein Speicherdatenbus 39 stellen Datenübertragungsmöglichkeiten zum Austausch von Lade- und Speicheroperationen mit Lade/Speicher-Schichten LS0 bis LS7 bereit.
  • Beispielsweise führen der ARGEN-Bus 38 und der Speicherdatenbus 39 Speicheroperationen durch, die schließlich zu einer der Cachespeicher-Schichten CS0 bis CS7 über einen der Speicherbusse 40 oder auf eine Speicherposition in einer höherwertigen Ebene der Speicherhierarchie geschrieben werden, mit der die Cachespeicher-Schichten CS0 bis CS7 über einen E/A-Bus 41 verbunden sind, es sei denn, die Speicheroperation wird ausgesetzt oder ungültig gemacht. Lade-Operationen, bei denen eine der Cachespeicher-Schichten CS0 bis CS7 fehlt, nachdem sie durch eine der Lade/Speicher-Schichten LS0 bis LS7 an die bestimmte Cachespeicher-Schicht CS0 bis CS7 ausgegeben wurden, werden über den E/A-Bus 41 realisiert, indem der geforderte Wert in die spezielle Cachespeicher-Schicht CS0 bis CS7 oder direkt durch die Cachespeicher-Schicht CS0 bis CS7 und den Speicherbus 40 in die Lade/Speicher-Schicht LS0 bis LS7 geladen wird, die die Anforderung ausgegeben hat. Bei der dargestellten Ausführungsform kann jede der Lade/Speicher-Schichten LS0 bis LS7 zum Ausführen eines Abschnitts einer Lade/Speicher-Operation eines Befehls für jede der Befehlsausführungsschichten ES0 bis ES7 verwendet werden, was jedoch nicht zu den Anforderungen an die Erfindung gehört. Des Weiteren kann die Festlegung, welche der Cachespeicher-Schichten CS0 bis CS7 eine vorgegebene Lade/Speicher-Operation ausführt, auf der Grundlage der Operandenadresse der Lade/Speicher-Operation zusammen mit der Operandenbreite und der Zuordnung des adressierbaren Bytes des Cache-Speichers zu jeder der Cachespeicher-Schichten CS0 bis CS7 erfolgen.
  • Die Befehlsausführungsschichten ES0 bis ES7 können interne Befehle gleichzeitig an mehrere Pipelines ausgeben, beispielsweise kann eine Befehlsausführungsschicht gleichzeitig eine Ausführungsoperation und eine Lade/Speicher-Operation ausführen und/oder kann mehrere arithmetische oder logische Operationen unter Verwendung von mehreren internen Pipelines ausführen. Die internen Pipelines können identisch sein oder es kann sich um diskrete Typen wie beispielsweise Gleitkomma, Skalar, Lade/Speicher usw. handeln. Des Weiteren kann eine vorgegebene Ausführungsschicht mehr als eine Anschlussverbindung zum Rückschreib-Routingnetzwerk 37 haben, eine Anschlussverbindung kann beispielsweise zweckbestimmt für Lade/Speicher-Verbindungen zu Lade/Speicher-Schichten LS0 bis LS7 vorgesehen sein oder kann die Funktion des AGEN-Bus 38 und/oder des Datenbus 39 bereitstellen, während ein anderer Anschluss verwendet werden kann, um Werte zu und von anderen Schichten zu übertragen wie beispielsweise spezielle Schichten oder andere Befehlsausführungsschichten. Rückschreib-Ergebnisse werden von den verschiedenen internen Pipelines der Befehlsausführungsschichten ES0 bis ES7 zu einem oder mehreren Rückschreibanschüssen geplant, die Befehlsausführungsschichten ES0 bis ES7 mit dem Rückschreib-Routingnetzwerk 37 verbinden. Cachespeicher-Schichten CS0 bis CS7 sind mit einem Cache-Speicher oder Systemspeicher einer nächsthöheren Ordnung über den E/A-Bus 41 verbunden, der mit dem Prozessorkern 20 möglicherweise integriert oder außerhalb von diesem vorhanden ist. Während das dargestellte Beispiel eine übereinstimmende Anzahl von Lade/Speicher-Schichten LS0 bis LS7 und Ausführungsschichten ES0 bis ES7 zeigt, kann in der Praxis eine unterschiedliche Anzahl von jedem Schichttyp gemäß dem Ressourcenbedarf für eine bestimmte Implementierung bereitgestellt werden.
  • Im Prozessorkern 20 enthält eine Befehls-Ablaufsteuerungseinheit (ISU) 30 einen Befehlsablauf- und Netzwerksteuerblock 57, der das Versand-Routingnetzwerk 36, Rückschreib-Routingnetzwerk 37, den AGEN-Bus 38 und den Speicherdatenbus 39 steuert. Der Netzwerksteuerblock 57 koordiniert außerdem den Betrieb von Ausführungsschichten ES0 bis ES7 und Lade/Speicher-Schichten LS0 bis LS7 bei dem Versand von Befehlen von Versand-Warteschlangen Disp0 bis Disp7. Insbesondere wählt der Befehlsablauf- und Netzwerksteuerblock 57 zwischen Konfigurationen der Ausführungsschichten ES0 bis ES7 und der Lade/Speicher-Schichten LS0 bis LS7 im Prozessorkern 20 gemäß einem oder mehreren Betriebsart-Steuersignalen, die die Verwendung von Ausführungsschichten ES0 bis ES7 und Lade/Speicher-Schichten LS0 bis LS7 durch einen einzelnen Thread in einer oder mehreren Einzel-Thread-(ST-)Betriebsarten und mehreren Threads in einer oder mehreren Mehrfach-Thread-(MT-)Betriebsarten zuweist, bei denen es sich um Simultan-Mehrfach-Thread-(SMT-)Betriebsarten handeln kann. Beispielsweise kann in der in 2 gezeigten Konfiguration der Cluster CLA einem oder mehreren Hardware-Threads zugeordnet sein, die eine erste Thread-Gruppe in der SMT-Betriebsart bilden, so dass die Versand-Warteschlangen Disp0 bis Disp3 lediglich Befehle der Befehlsströme für die erste Threadgruppe empfangen, wobei die Ausführungsschichten ES0 bis ES3 und die Lade/Speicher-Schichten LS0 bis LS3 lediglich Operationen für die erste Threadgruppe ausführen und die Cachespeicher-Schichten CS0 bis CS3 einen kombinierten Cache-Speicher bilden, der lediglich Werte enthält, auf die durch die erste Threadgruppe zugegriffen wird. Bei einer derartigen Betriebsart ist der Cluster CLB einer zweiten Hardware-Threadgruppe zugeordnet, und die Versand-Warteschlangen Disp4 bis Disp7 empfangen lediglich Befehle der Befehlsströme für die zweite Threadgruppe, wobei die Ausführungsschichten ES4 bis ES7 und die LS-Schichten LS4 bis LS7 lediglich Operationen für die zweite Threadgruppe ausführen und Cachespeicher-Schichten CS4 bis CS7 lediglich Werte enthalten, auf die durch die zweite Threadgruppe zugegriffen wird. Wenn kein Datenaustausch über Cluster erforderlich ist, kann das Rückschreib-Routingnetzwerk 37 partitioniert werden, indem Transceiver oder Switches sw gesperrt werden, die die Abschnitte des Rückschreib-Routingnetzwerks 37, den Cluster CLA und den Cluster CLB verbinden. Ein Trennen der Abschnitte des Rückschreib-Routingnetzwerks 37 stellt einen größeren Durchsatz in jedem Cluster bereit und ermöglicht, dass die Abschnitte des Rückschreib-Routingnetzwerks 37 ein separates simultanes Routen für Ergebnisse von den Ausführungsschichten ES0 bis ES7 und den LS-Schichten LS0 bis LS7 für dieselbe Anzahl von Leitungen im Rückschreib-Routingnetzwerk 37 bereitstellen. Daher können doppelt so viele Transaktionen in dem unterteilten Rückschreib-Routingnetzwerk 37 unterstützt werden, wenn Switches sw offen sind. Bei anderen Ausführungsformen der Erfindung können die Gruppen von Versand-Warteschlangen Disp0 bis Disp7, Ausführungsschichten ES0 bis ES7, LS-Schichten LS0 bis LS7 und Cachespeicher-Schichten CS0 bis CS7 unterteilt sein, so dass mehrere Cluster gebildet werden, von denen jeder an einer bestimmten Gruppe von Hardware-Threads betrieben wird. Gleichfalls können die Threads in einer Gruppe ferner in Teilgruppen partitioniert sein und bestimmten der Versand-Warteschlangen Disp0 bis Disp7, der Ausführungsschichten ES0 bis ES7, der LS-Schichten LS0 bis LS7 und der Cachespeicher-Schichten CS0 bis CS7 zugeordnet sein. Die Partitionierung ist jedoch nicht erforderlich für ein Erweitern auf sämtliche oben angegebene Ressourcen. Die Cluster CLA und CLB könnte beispielsweise zwei unterschiedlichen Hardware-Threadgruppen zugewiesen sein, wobei die Ausführungsschichten ES0 bis ES2 und die LS-Schichten LS0 bis LS1 einer ersten Teilgruppe der ersten Hardware-Threadgruppe zugewiesen sind, während die Ausführungsschicht ES3 und die LS-Schichten LS2 bis LS3 einer zweiten Teilgruppe der ersten Hardware-Threadgruppe zugewiesen sind, während die Cachespeicher-Schichten CS0 bis CS3 von allen Threads in der ersten Hardware-Threadgruppe gemeinsam genutzt werden. Bei einer bestimmten Ausführungsform gemäß dem obigen Beispiel können Switches vorhanden sein, um das Rückschreib-Routingnetzwerk 37 zwischen Ausführungsschichten ES0 bis ES7 weiter zu partitionieren, so dass Verbindungen zwischen Teilgruppen der Ausführungsschichten ES0 bis ES7, die unterschiedlichen Threadgruppen zugewiesen sind, isoliert werden, um die Anzahl von Transaktionen zu erhöhen, die in jeder Teilgruppe verarbeitet werden können. Bei dem oben Genannten handelt es sich um ein Beispiel der Flexibilität der Ressourcen-Zuweisung, die durch die Architektur mit busgekoppelten Schichten bereitgestellt wird, die in 2 dargestellt ist, und stellt keine Einschränkung auf bestimmte Konfigurationen dar, die zum Zuordnen von Gruppen von Threads oder einzelnen Threads auf Ressourcen unterstützt werden könnten wie beispielsweise Versand-Warteschlangen Disp0 bis Disp7, Ausführungsschichten ES0 bis ES7, LS-Schichten LS0 bis LS7 und Cachespeicher-Schichten CS0 bis CS7.
  • Bei einer weiteren Konfiguration werden gemäß einem anderen Zustand des bzw. der Betriebsart-Steuersignale die Cluster CLA und CLB so konfiguriert, dass sie Befehle für einen gemeinsamen Pool von Threads oder für einen einzelnen Thread in einer Steuerung-Betriebsart ausführen können. Bei einer derartigen Konfiguration können Cachespeicher-Schichten CS0 bis CS7 zusammengefügt werden, um einen größeren Cache-Speicher zu bilden, auf den durch Befehle zugegriffen werden kann, die zu einer der Ausführungsschichten ES0 bis ES7 über eine der Lade/Speicher-Schichten LS0 bis LS7 versendet werden. Cachespeicher-Schichten CS0 bis CS7 können in einem partitionierten Cache-Speicher organisiert werden, beispielsweise durch Verwenden der Operandenadresse jeder Cachespeicher-Operation, um zu ermitteln, welche der Cachespeicher-Schichten CS0 bis CS7 oder Teilgruppe von Cachespeicher-Schichten CS0 bis CS7 eine Operation unterstützen sollte. Beispielsweise können Cachespeicher-Leitungen über Teilgruppen der Cachespeicher-Schichten CS0 bis CS3 und CS4 bis CS7 unterteilt werden, so dass ein bestimmtes Bit der Operandenadresse wählt, welche der beiden Gruppen von Cachespeicher-Schichten CS0 bis CS3 und CS4 bis CS7 einen spezifizierten Wert enthält, wobei eine Verschachtelung von Cachespeicher-Leitungen gebildet wird. Beispielsweise können Cachespeicher-Schichten CS0 bis CS3 Datenwerte mit ungeraden Cachespeicherleitungs-Adressen speichern und Cachespeicher-Schichten CS4 bis CS7 können Datenwerte mit geraden Cachespeicherleitungs-Adressen speichern. Bei einer derartigen Konfiguration kann die Anzahl von eindeutigen Cachespeicherleitungs-Adressen, die in dem Cachespeicher-Speicher indexiert werden, konstant gehalten werden, wenn zwischen Betriebsarten gewählt wird, bei denen Cachespeicher-Schichten CS0 bis CS7 zwischen Gruppen von Threads und zwischen Betriebsarten, bei denen Cachespeicher-Schichten CS0 bis CS7 zusammengefügt werden, partitioniert werden. Bei einem weiteren Beispiel können Daten über Cachespeicher-Schichten CS0 bis CS7 unter Verwendung von drei Bits der Operandenadresse „gestriped” werden, um eine Ziel-Schicht der Cachespeicher-Schichten CS0 bis CS7 zu ermitteln, wodurch eine Verschachtelung mit einem Faktor 8 gebildet wird. Die oben dargestellten Beispiele sind nicht erschöpfend, und es gibt viele unterschiedliche Arten zum Zuweisen von Datenwerten zu bestimmten Cachespeicher-Schichten CS0 bis CS7. Beispielsweise können bestimmte Block- oder Vektoroperationen Cachespeicher-Schichten CS0 bis CS7 oder Teilgruppen hiervon deterministisch umfassen, wodurch eine Zuweisung auf der Grundlage einer frühen Decodierung zu einer der Ausführungsschichten [S0 bis ES7 oder zwischen Clustern CLA oder CLB ermöglicht wird. Die Versand-Warteschlangen Disp0 bis Disp7 und/oder Ausführungsschichten ES0 bis ES7 können die eine (oder die mehreren) Ziel-Cachespeicher-Schichten CS0 bis CS7 für eine Operation anhand des Operationstyps, der Adressenerzeugung, eine Vorhersagestruktur oder andere Mechanismen festlegen. Bei einer derartigen beispielhaften Ausführungsform einer Betriebsart werden Operationen mit ungeraden Operandenadressen gekennzeichnet, damit sie lediglich in Lade/Speicher-Schichten LS0 bis LS3 verarbeitet werden, und Cachespeicher-Schichten CS0 bis CS3 werden zusammengefügt, damit sie lediglich Werte enthalten, die ungerade Adressen repräsentieren. Bei einer derartigen beispielhaften Ausführungsform einer Betriebsart werden gleichfalls Operationen mit geraden Operandenadressen gekennzeichnet, damit sie lediglich durch Lade/Speicher-Schichten LS4 bis LS7 verarbeitet werden, und Cachespeicher-Schichten CS4 bis CS7 enthalten lediglich Werte, die gerade Adressen repräsentieren. Bei der oben beschriebenen Konfiguration können Cachespeicher-Schichten CS0 bis CS7 konzeptionell zusammengefügt werden, bestimmte Umsetzungen wie beispielsweise Vektor- oder Cachespeicher-Block-Operationen erfordern jedoch kein vollständiges Kreuzschienen-Routing (cross-bar routing) zwischen sämtlichen Lade/Speicher-Schichten LS4 bis LS7, Ausführungsschichten ES0 bis ES7 und Cachespeicher-Schichten CS0 bis CS7. Bei weiteren Konfigurationen gemäß anderen Betriebsarten und/oder bei weiteren Ausführungsformen der Erfindung können Cachespeicher-Schichten CS0 bis CS7 weiter partitioniert sein, um SMT-Operationen mit vier, acht usw. unabhängigen Partitionen zu unterstützen, die für Pools von Hardware-Threads verfügbar sind, da die dargestellte Ausführungsform mit acht Ausführungsschichten, acht Lade/Speicher-Schichten und acht Cachespeicher-Schichten lediglich veranschaulichend ist und größere Anzahlen von Schichten oder Clustern bei anderen Ausführungsformen der Erfindung vorhanden sein können.
  • In 3 ist ein Beispiel eines weiteren Konfigurationsmerkmals dargestellt, das im Prozessor 20 implementiert ist. In 3 wurden Ausführungsschichten ES0 und ES1 zur einer „Superschicht” verknüpft zum Ausführen einer Operation, die eine Operandenbreite und/oder Operatorbreite mit der doppelten Breite von Operationen hat, die durch die Ausführungsschichten ES0 und ES1 einzeln bewältigt werden. Die Ausführungsschichten ES0 und ES1 können zum Beispiel eine 64-Bit-Breite haben und können gemäß dem Zustand eines Betriebsart-Steuersignals zu einer 128-Bit-Superschicht verknüpft sein. Eine derartige Konfiguration kann zum Ausführen von Operationen verwendet werden, die beispielsweise Operanden in Vektorpaaren haben, die durch denselben Befehl verarbeitet werden. Alternativ oder in Kombination kann es sich bei dem Operator um einen breiteren Operator handeln oder er kann Sofortfelder enthalten, die eine Extrabreite erfordern. Die Superschicht-Konfiguration ist nicht auf Paare von Ausführungsschichten beschränkt. Drei oder mehrere der Ausführungsschichten ES0 bis ES7 könnten verknüpfungsfähig sein, um einen noch breiteren Operanden und/oder ein noch breiteres Operatorhandling bereitzustellen. Für die breiteren Operationen mit 128-Bit-Breite können außerdem Versand-Warteschlangen wie beispielsweise Disp0 und Disp1 zusammengefügt werden. Alternativ kann der Versand von breiteren Operationen von einer einzigen Versand-Warteschlange Disp0 bis Disp7 zu mehr als einer Ausführungsschicht ES0 bis ES7 über ein Versand-Routingnetzwerk 36 geleitet werden. Wenn bei einer derartigen Ausführungsform kenne Superschicht zum Ausführen einer breiteren Operation zur Verfügung steht, kann das Versenden der breiteren Operation blockiert werden und kann möglicherweise wieder in die Versand-Warteschlange aufgenommen werden, wenn eine Superschicht verfügbar ist. Operationen für Hardware-Threads, die dieselbe Versand-Warteschlange gemeinsam nutzen, können weiterhin versendet werden. Einige breite Operationen wie beispielsweise Vektor-Operationen, bei denen keine gleichzeitige Ausführung von allen Elementen des Vektors erforderlich ist, können durch eine einzige Ausführungsschicht oder eine nicht zusammenhängende Gruppe von Ausführungsschichten ausgeführt werden, ohne dass eine Verfügbarkeit einer Superschicht erforderlich ist. Weitere Einzelheiten der Steuerlogik zum Verwalten der Bildung einer Superschicht zum Ausführen eines breiten Befehls werden nachfolgend unter Bezugnahme auf die 5 bis 6 und 8 genauer beschrieben.
  • In 4 sind weitere Einzelheiten des Prozessorkerns 20 dargestellt. Der Prozessorkern 20 enthält eine Verzweigungs-Ausführungseinheit 52, eine Befehls-Abrufeinheit (IFetch) 53 und eine Befehls-Ablaufsteuerungseinheit (ISU) 30, die das Abrufen und die Ablaufsteuerung von Befehlen steuern. Ein Eingabe-Befehlspuffer (IB) 51 puffert Befehle, um die Gruppen von Befehlen gemäß der Ausführungsschicht-Ressourcen zuzuordnen, die für die verschiedenen Threads zugeordnet sind, und alle Superschicht-Konfigurationen, die eingerichtet sind, so dass Paare von Schichten als Master/Slave-Schicht betrieben werden können, wie nachfolgend unter Bezugnahme auf die 5 bis 6 und 8 beschrieben. Ein weiterer Befehlspuffer (IBUF) 31 ist partitioniert, um Versand-Warteschlangen (Disp0 bis Disp7 der 2 bis 3) für jeden der Befehlsströme bereitzustellen, und das Versand-Routingnetzwerk 32 verbindet den IBUF 31 mit den segmentierten Ausführungs- und Lade/Speicher-Schichten 50, die mit Cachespeicher-Schichten 46 verbunden sind. Der Befehls-Ablauf- und Netzwerk-Steuerblock 57 führt die Steuerung von segmentierten Ausführungs- und Lade/Speicher-Schichten 50, der Cachespeicher-Schichten 46 und des Versand-Routingnetzwerks 32 aus, um die in den 2 bis 3 dargestellten Schichten gemäß einer Betriebsart-Steuerungs/Thread-Steuerlogik 59 zu konfigurieren. Eine Befehlsausführungseinheit 58 wird außerdem bereitgestellt, um das Ausführen von Befehlen zu verfolgen, deren Ausführung durch die ISU 30 erfolgt, und um Rückschreib-Operationen durch Lade/Speicher-Schichten in segmentierten Ausführungs- und Lade/Speicher-Schichten 50 zu steuern. Eine Stromaufnahme-Verwaltungseinheit 56 kann außerdem zum Energieeinsparen vorgesehen sein, indem eine Anzahl von aktiven Schichten in den segmentierten Ausführungs- und Cachespeicher-Schichten 50 verringert oder vergrößert wird. Zwar ist der Befehlsablauf- und Netzwerk-Steuerblock 57 als eine einzelne Einheit gezeigt, die Steuerung der segmentierten Ausführung in und zwischen Ausführungsschichten ES0 bis ES7 und Lade/Speicher-Schichten LS0 bis LS7 kann jedoch zwischen den Schichten partitioniert sein, so dass jede der Ausführungsschichten ES0 bis ES7 und Lade/Speicher-Schichten LS0 bis LS7 ihren eigenen Ausführungsablauf und Ablaufsteuerung steuern kann, während Daten mit anderen Schichten ausgetauscht werden.
  • In 5 zeigt ein Steuerungs-Ablaufdiagramm den Prozess vom Versenden durch Ausgeben eins breiten Befehls oder eines Paars von Befehlen in einem Master/Slave-Paar von Ausführungsschichten. Wie oben erwähnt können Ausführungsschichten ES0 bis ES7 eine Lade/Speicher-Operation und eine weitere Operation wie beispielsweise einen Festkomma-(FX-) oder Vektor/Skalar-(VS-)Befehl ausführen. Der Steuerlogik-Ablauf für die Master-Ausführungsschicht ist im linken Abschnitt von 5 gezeigt, und der Steuerlogik-Ablauf für die Slave-Ausführungsschicht ist im rechten Abschnitt von 5 gezeigt. Ein Lade/Speicher-Versandzyklus und ein weiterer Operationszyklus wie beispielsweise ein FX-Versand werden in der Master-Ausführungsschicht ausgelöst, und auf den ältesten zulässigen Befehl, der durch einen Allow-Vektor AllowM angegeben wird, wird durch Zugreifen auf ein Lebensalter-Datenfeld 92A mit dem Allow-Vektor AllowM zugegriffen. Operationen, die zu der Master-Ausführungsschicht versendet werden, werden in eine Reservierungsstation 94A geschrieben, die durch ein Lebensalter-Datenfeld 92A der Ausgabewarteschlange der Master-Ausführungsschicht indexiert ist, und die Operationen für die Slave-Ausführungsschicht werden in eine Reservierungsstation 94B geschrieben, die durch ein Lebensalter-Datenfeld 92A der Ausgabewarteschlange der Master-Ausführungsschicht indexiert ist. Die Lebensalter-Datenfelder 92A, 92B halten Informationen über die Reihenfolge, in der die Operationen versendet wurden, so dass nach dem Klären der Bedingungen für Operationen in der Reservierungsstation 94A oder 94B die älteste derartige Operation abgerufen und ausgegeben werden kann. Das Lebensalter-Datenfeld 92A gibt den ältesten Eintrag zurück, für den das entsprechende Bit in dem Allow-Vektor AllowM gesetzt ist, und der Eintrag liefert einen Index/eine Adresse in der Reservierungsstation 94A, der bzw. die die Operation in den Zwischenspeicher des Master-Schicht-FX-Operanden FXMop ausgibt. Eine älteste LS-Operation kann außerdem von der Reservierungsstation 94A in demselben Zyklus über eine separate Suche in einem Lebensalter-Datenfeld 92A an den LS-Operanden-Zwischenspeicher LSMop ausgegeben werden. Das Lebensalter-Datenfeld 92B gibt gleichfalls den ältesten Eintrag zurück, für den das entsprechende Bit in dem Allow-Vektor AllowS gesetzt ist, und der Eintrag liefert einen Index/eine Adresse in der Reservierungsstation 94B, der bzw. die die Operation in den Zwischenspeicher des Slave-Schicht-FX-Operanden FXSop ausgibt. Eine älteste LS-Operation kann außerdem von der Reservierungsstation 94B in demselben Zyklus über eine separate Suche in einem Lebensalter-Datenfeld 92B an den LS-Operanden-Zwischenspeicher LSSop ausgegeben werden. Eine LS-Operation und eine FX/VS-Operation können pro Zyklus und pro Schicht ausgegeben werden und im Fall einer FX/VS-Operation mit 128-Bit-Breite kann eine Ausgabe pro Zyklus über die Master- und Slave-Ausführungsschicht ausgegeben werden.
  • Wenn eine breite Operation versendet wird, bei der es sich bei den beispielhaften Darstellungen um eine 128-Bit-Operation handelt, die durch 64-Bit-Ausführungsschichten ausgeführt werden soll, werden die Hälften der 128-Bit-Operation zu der Master-Ausführungsschicht und der Slave-Ausführungsschicht versendet, sie können jedoch durch verschiedene Einträge der Lebensalter-Datenfelder 92A bis 92B indexiert werden. Um die Hälfte der 128-Bit-Operation zu verfolgen, die durch einen Eintrag in dem Lebensalter-Datenfeld 92B der Slave-Ausführungsschicht indexiert wurde, wird in der Master-Ausführungsschicht ein Warteschlangen-Positionsdatenfeld (Qpos) bereitgestellt. Wenn die Hälfte der 128-Bit-Operation in der Slave-Ausführungsschicht zu dem Lebensalter-Datenfeld 92B geschrieben wurde, wird ein Zeiger/Index auf diese Position in dem Warteschlangen-Positionsdatenfeld 93 gespeichert, das durch einen Index indexiert wird, der vom Lebensalter-Datenfeld 92A abgerufen wird. Die breite (128-Bit-)Operation wird versendet, indem die entsprechenden Hälften des Operationscodes in Reservierungsstationen 94A, 94B geschrieben und Einträge in Lebensalter-Datenfeldern 92A, 92B erzeugt werden. Ein Bit wird in einem Zwischenspeicher 128b gesetzt, das dem Eintrag im Lebensalter-Datenfeld 92A entspricht, um anzuzeigen, dass es sich bei dem Eintrag um einen Teil einer Operation mit der Breite 128 Bit handelt. Bei jedem Ausgabezyklus wird zusätzlich zum Ausgeben des ältesten zulässigen Eintrags in jeder Schicht eine Suche ausgeführt, um festzustellen, ob es sich bei dem ältesten Eintrag Ready um eine Operation mit der Breite 128 Bit handelt, indem der älteste Eintrag Ready mit der Bitmaske im Zwischenspeicher 128b verglichen wird, der als Logisch-AND-Operator AND1 dargestellt ist. Anhand des Vergleichsergebnisses findet eine Auswahl zwischen dem Ausgang einer 128-Bit-Ready-Logik 128b Ready und dem Ausgang einer 64-Bit-Ready-Logik 64b Ready statt, dargestellt durch Multiplexer 91A. Der Ausgang des Multiplexers 91A wird verwendet, um die Allow-Bits im Allow-Vektor AllowM für den nächsten Ausgabezyklus einzurichten. Zur gleichen Zeit wird der nächste Ausgabezyklus in der nächsten Slave-Ausführungsschicht reserviert, so dass beide Hälften der 128-Bit-Operation in demselben Zyklus ausgegeben werden können.
  • Bei der bestimmten Ausführungsform, die hier dargestellt Ist, erfolgt die Reservierung eines Ausgabezyklus in der Slave-Ausführungsschicht zu dem Zeitpunkt, an dem die 128-Bit-Operation zur ältesten Operation Ready wird. Wie oben erwähnt liest die Master-Ausführungsschicht in jedem Ausgabezyklus den ältesten Eintrag im Lebensalter-Datenfeld 92A, das ein Kennzeichenbit Ready hat, das gesetzt ist. Unabhängig davon, ob der älteste Eintrag im Lebensalter-Datenfeld 92A einer 128-Bit-Operation entspricht, werden die ältesten zulässigen Einträge während des momentanen Ausgabezyklus an die Master- und die Slave-Ausführungsschicht ausgegeben, wobei es sich um eine 64-Bit-Operation oder eine 128-Bit-Operation handeln kann. Wenn bei der nächsten Operation, die ausgegeben wird, der älteste Eintrag Ready im Lebensalter-Datenfeld 92A einem 128-Bit-Eintrag entspricht, wird die Ausgabe des Lebensalter-Datenfelds 92A, die diesem Eintrag entspricht, verwendet, um die Hälfte der 128-Bit-Operation abzurufen, die durch einen Eintrag im Lebensalter-Datenfeld 92B unter Verwendung des Warteschlangen-Positionsdatenfelds 93 indexiert wurde, und der Multiplexer 92B wählt die Ausgabe des Warteschlangen-Positionsdatenfelds 93 anstelle der Gruppe von 64-Bit-Operationen Ready in dem Slave-Zwischenspeicher Ready Rdy. Der gewählte Wert aktualisiert den Slave-Zwischenspeicher Allow AllowS, so dass in dem nächsten Ausgabezyklus die Hälfte der 128-Bit-Operation von der Reservierungsstation 94B unter Verwendung des Index/der Adresse abgerufen wird, der bzw. die von dem Warteschlangen-Positionsdatenfeld 93 bereitgestellt wird. Wenn es sich andererseits bei der nächsten Operation, die ausgegeben werden soll, nicht um eine 128-Bit-Operation handelt, wird der Slave-Zwischenspeicher Allow AllowS vom Slave-Zwischenspeicher Ready Rdy aktualisiert, so dass die älteste 64-Bit-Operation von der Reservierungsstation 94B über den Index/die Adresse des ältesten Eintrags Ready im Lebensalter-Datenfeld 92B abgerufen wird. Unabhängig davon, ob zwei 64-Bit-FX/VS-Operationen oder eine einzelne 128-Bit-FX/VS-Operation in einem Ausgabezyklus ausgegeben werden, werden in jedem Ausgabezyklus zwei 64-Bit-Lade/Speicher-Operationen von den Reservierungsstationen 94A und 94B ausgegeben, es sei denn, dass andere Bedingungen noch nicht eingehalten wurden wie beispielsweise ein Fehlen von Lade/Speicher-Versandeinträgen, ein Fehlen von Operationen, bei denen Bedingungen Ready eingehalten werden, usw.
  • In 6 ist ein Verfahren zum Steuern eines Paars von Master/Slave-Ausführungsschichten zum Ausgeben von breiten Befehlen gezeigt. Bei jedem Ausgabezyklus wird die älteste FX/VS-Operation, bei der das Allow-Bit gesetzt ist, zum Ausgeben aus den beiden Master- und Slave-Ausführungsschichten gewählt (Schritt 60). Die älteste Operation bzw. die ältesten Operationen werden über beide Master- und Slave-Ausführungsschichten ausgegeben, bei denen es sich um zwei separate 64-Bit-Operationen oder eine 128-Bit-Operation handeln kann, die durch die Master- und Slave-Ausführungsschichten ausgegeben werden, die als eine Superschicht wirken (Schritt 61). Zur gleichen Zeit wird der Eintrag für die älteste FX/VS-Operation Ready von dem Lebensalter-Datenfeld in der Master-Schicht abgerufen (Schritt 62). Wenn der Eintrag einer 128-Bit-FX/VS-Operation entspricht (Entscheidung 63), werden das bzw. die Bits Allow für alle 128-Bit-Operationen Ready in dem Vektor Allow gesetzt (Schritt 64), und der Warteschlangen-Positionsdatenfeld-Eintrag, der der 128-Bit-Operation entspricht, wird gewählt und verwendet, um den Vektor Allow für die Slave-Ausführungsschicht einzustellen, so dass das Bit, das der anderen Hälfte des 128-Bit-Eintrags entspricht, in dem Vektor Allow gesetzt wird (Schritt 65). Nach dem Setzen des Vektors Allow wird das Bit Ready für diesen Eintrag gelöscht (Schritt 67), um ein späteres erneutes Laden des Eintrags zu verhindern, der für eine Ausgabe in dem nächsten Ausgabezyklus eingerichtet ist, und bevor das System oder Schema abgeschaltet wird (Schritt 68), beginnt der nächste Ausgabezyklus durch Wiederholen der Schritte 60 bis 69.
  • In 7 ist ein Beispiel einer Ausführungsschicht (ES) 42AA gezeigt, die zum Implementieren von Befehlsausführungsschichten ES0 bis ES7 in den 2 bis 3 verwendet werden kann. Eingaben von den Versand-Warteschlangen werden über das Versand-Routingnetzwerk 32 durch ein Registerdatenfeld 70 empfangen, so dass Operanden und die Befehle in Ausführungs-Reservierungsstationen (ER) 73 der Ausgabe-Warteschlange 75 eingestellt werden können. Das Registerdatenfeld 70 ist so gestaltet, dass es unabhängige Registergruppen für unabhängige Befehlsströme hat oder, wenn eine Ausführungsschicht 42AA zu einer Superschicht zusammengefügt ist, die mehrere Abschnitte eines SIMD-Befehls ausführt, wobei abhängige Registergruppen, bei denen es sich um Clone in Superschichten handelt, für Fälle eingerichtet sind, bei denen die Superschicht Nicht-SIMD-Befehle ausführt. Eine Alias-Zuordnungseinrichtung 71 ordnet die Werte im Registerdatenfeld 70 allen externen Referenzen zu wie etwa Rückschreib-Werte, die mit anderen Schichten über ein Rückschreib-Routingnetzwerk 37 ausgetauscht werden. Ein Verlaufs-Puffer HB 76 stellt eine Wiederherstellungsfähigkeit für Register-Sollwerte von Befehlen bereit, die durch ES 42AA ausgeführt werden. Register können kopiert werden oder zwischen Superschichten unter Verwendung des Rückschreib-Routingnetzwerks 37 in Reaktion auf ein Betriebsart-Steuersignal verschoben werden, so dass die Zuordnung von Schichten zu einer Gruppe von Threads oder die Zuordnung von Schichten für einen Betrieb in einer verbundenen Weise zum Ausführen als Superschicht zusammen mit anderen Ausführungsschichten umkonfiguriert werden kann. Die Ausführungsschicht 42AA ist neben einer weiteren Ausführungsschicht 42BB dargestellt, um eine Ausführungs-Interlock-Steuerung 79 zu veranschaulichen, die zwischen Paaren von Ausführungsschichten in Ausführungsschichten ES0 bis ES7 der 2 bis 3 bereitgestellt werden kann, um eine Superschicht zu bilden, bei der die Ausführungsschicht 42AA als eine Master-Ausführungsschicht konfigurierbar ist, und die Ausführungsschicht 42BB als eine Slave-Ausführungsschicht konfigurierbar ist. Einzelheiten von Ausführungsschicht 42AA, Ausführungsschicht 42BB und Ausführungs-Verriegelungssteuerung 79 werden nachfolgend unter Bezugnahme auf 8 beschrieben. Die Ausführungs-Verriegelungssteuerung 79 dient zum Koordinieren zwischen Ausführungsschichten 42AA und 42BB, die das Ausführen eines einzelnen Befehlsstroms unterstützen, darunter das Ausführen von breiten Befehlen/Vektorbefehlen wie oben beschrieben, wobei andernfalls Ausführungsschichten ES0 bis ES7 das Ausführen ihrer entsprechenden Befehlsströme unabhängig verwalten.
  • Die Ausführungsschicht 42AA enthält mehrere interne Ausführungs-Pipelines 74A bis 74C und 72, die eine außerordentliche und gleichzeitige Ausführung von Befehlen für den Befehlsstrom unterstützen, der der Ausführungsschicht 42AA entspricht. Bei den Befehlen, die durch die Ausführungs-Pipelines 74A bis 74C und 72 ausgeführt werden, kann es sich um interne Befehle handeln, die Abschnitte von Befehlen implementieren, die über das Versand-Routingnetzwerk 32 empfangen werden, oder es kann sich um Befehle handeln, die direkt über das Versand-Routingnetzwerk 32 empfangen werden, d. h., die Parallelverarbeitung (Pipelining) der Befehle kann von dem eigentlichen Befehlsstrom unterstützt werden, oder das Decodieren der Befehle kann stromaufwärts von der Ausführungsschicht 42AA ausgeführt werden. Die Ausführungs-Pipeline 72 ist separat gemultiplext dargestellt, um zu zeigen, dass Einzel-Pipeline, Mehrfach-Pipeline oder beide Typen der Ausführungseinheiten in der Ausführungsschicht 42AA bereitgestellt werden können. Die Pipelines können sich in Aufbau und Funktion unterscheiden oder einige oder sämtliche Pipelines können identisch sein in Abhängigkeit von den Typen der Befehle, die durch die Ausführungsschicht 42AA ausgeführt werden. Beispielsweise können spezielle Pipelines bereitgestellt werden für Adressenberechnung, Skalar- oder Vektoroperationen, Gleitkommaoperationen usw. Die Multiplexer 77A bis 77C dienen zum Routing von Ausführungsergebnissen zum/vom Verlaufspuffer 76 und Routing von Rückschreib-Ergebnissen zum Rückschreib-Routingnetzwerk 37, E/A-Routingnetzwerk 39 und AGEN-Routingnetzwerk(en) 38, die möglicherweise bereitgestellt werden zum Routing spezieller Daten zum gemeinsamen Nutzen von Schichten oder Operationen, oder zum Laden und Speichern von Adressen und/oder Daten, die zu einer oder mehreren Lade/Speicher-Schichten LS0 bis LS7 gesendet werden. Eine Daten-, Adressen- und Rückführungs-Warteschlange (DARQ) 78 hält Ausführungsergebnisse oder Teilergebnisse wie beispielsweise Lade/Speicheradressen oder Speicherdaten, bei denen nicht gewiss ist, dass sie von der nächsten in Anspruch genommenen Lade/Speicher-Schicht LS0 bis LS7 oder Ausführungsschicht ES0 bis ES7 sofort akzeptiert werden. Die Ergebnisse oder Teilergebnisse, die in DARQ 78 gespeichert werden, müssen möglicherweise in einem späteren Zyklus wie beispielsweise in einer der Lade/Speicher-Schichten LS0 bis LS7 oder zu speziellen Ausführungseinheiten wie beispielsweise zu einem der kryptografischen Prozessoren 34A, 34B gesendet werden. Daten, die in DARQ 78 gespeichert werden, können anschließend durch die Multiplexer 77B bzw. 77C auf den AGEN-Bus 38 oder den Speicherdatenbus 39 gemultiplext werden.
  • In 8 werden Einzelheiten der Steuerlogik in der Ausführungsschicht 42AA und der Ausführungsschicht 42BB gemäß einer Ausführungsform der Erfindung gezeigt, die allgemein der Ausführungs-Verriegelungssteuerung 79 entspricht. Zur Vereinfachung ist die Steuerlogik zum Steuern der Ausgabe von LS-Operationen nicht gezeigt, da die Ausführungsschicht 42AA und die Ausführungsschicht 42BB zum Ausgeben von LS-Operationen mit unterschiedlicher Breite nicht verknüpft/unverknüpft sind. Das Lebensalter-Datenfeld 92A hat zwei 8-Bit-Eingabeanschlüsse, die jeweils den Zugriff auf einen von acht Einträgen von zwei 8-Bit-Ausgabeanschlüssen ermöglichen. Für jeden Anschluss gibt das Lebensalter-Datenfeld 92A einen Index an den ältesten Eintrag zurück, für den ein entsprechendes Bit in dem Byte gesetzt ist, das an dem entsprechenden Eingabeanschluss bereitgestellt wird. Eine Eingabe in das Lebensalter-Datenfeld 92A wird von einem Ausgabevektor Allow im Zwischenspeicher L1A bereitgestellt, und die andere Eingabe ist ein FX/VS-Vektor Ready im Zwischenspeicher L1A. Bei jedem Ausgabezyklus wird der älteste Eintrag, bei dem ein Bit in dem Ausgabevektor Allow gesetzt ist, von dem Lebensalter-Datenfeld 92A abgerufen und verwendet, um eine FX/VS-Operation von einer Reservierungsstation 94A abzurufen, die in den Zwischenspeicher FXMop der Master-Schicht-FX/VS-Operation geladen wird. In demselben Ausgabezyklus wird der älteste Eintrag in dem Lebensalter-Datenfeld 92A, bei dem ein Bit in dem FX/VS-Vektor Ready gesetzt ist, mit dem 128-Bit-Vektor im Zwischenspeicher L1A durch die 8-Bit-UND-ODER-Logik 96 verglichen, wodurch ein Steuersignal Überschreiben eingeschaltet wird, wenn es sich bei der ältesten Ready-Operation um eine 128-Bit-Operation handelt. Das Steuersignal Überschreiben bewirkt, dass der Multiplexer 91A die Ausgabe der 128-Bit-FX/VS-Ready-Logik 90A wählt, die den Ausgabevektor Allow im Zwischenspeicher L1A auf ein Bit-Feld setzt, das die Gruppe von 128-Bit-FX/VS-Operationen repräsentiert. Der älteste Eintrag im Lebensalter-Datenfeld 92A mit einem Bit, das in dem FX/VS-Ready-Vektor gesetzt ist, wird außerdem durch einen 8-Bit-Inverter INVM invertiert, um eine Maske zu bilden, die dem logischen 8fach-UND-Gatter AND2 bereitgestellt wird, um den Eintrag zu maskieren, der in dem Ausgabevektor Allow im Zwischenspeicher L1A aktualisiert wird und nicht in dem FX/VS-Vektor Ready im Zwischenspeicher L1A gesetzt wird, wodurch verhindert wird, dass der Eintrag, der vom Lebensalter-Datenfeld 92A abgerufen wird, in einem nachfolgenden Zyklus in dem Ausgabevektor Allow gesetzt wird. Das logische 8fach-ODER-Gatter OR1 verarbeitet die Ausgaben der 128-Bit-FX/VS-Logik Ready 90A und der 64-Bit-FX/VS-Logik Ready 90B, so dass alle Operationen Ready (mit Ausnahme der Operation, die durch das logische 8fach-UND-Gatter AND2 maskiert wird) beim nächsten Ausgabezyklus in dem FX/VS-Vektor Ready im Zwischenspeicher L1A repräsentiert werden.
  • In der Ausführungsschicht 42BB, die als eine Slave-Ausführungsschicht eingerichtet ist, wird ein Zyklus Ausgabe Überschreiben durch ein Steuersignal Überschreiben ausgelöst, das sich in einem eingeschalteten Zustand befindet und effektiv den nächsten Ausgabezyklus für eine Ausgabe der anderen Hälfte der ältesten 128-Bit-Operation reserviert, die für eine Ausgabe von der Ausführungsschicht 42AA eingerichtet wurde wie oben beschrieben. Das Steuersignal Überschreiben bewirkt, dass ein Multiplexer 91B die Ausgabe eines Selektors 91C wählt, der einen der 8-Bit-Einträge in dem Warteschlangen-Positionsdatenfeld 93 unter Verwendung der 1-hot-Leseadresse des ältesten Eintrags Ready wählt, der durch das Lebensalter-Datenfeld 92 ausgegeben wird. Der gewählte Eintrag vom Warteschlangen-Positionsdatenfeld 93 überschreibt den nächsten Ausgabevektor Allow in einem Zwischenspeicher L1B, was bewirkt, dass es sich bei der nächsten Ausgabeoperation in der Slave-Ausführungsschicht 42BB um die Hälfte der 128-Bit-Operation handelt, die in der Reservierungsstation 94B gespeichert ist, die der 128-Bit-Operation in dem Slave-Ausführungsschicht 42AA entspricht, die einem Ausgabevektor Allow entspricht, der in den Zwischenspeicher L1A geschrieben wird, zum Ausgeben der 128-Bit-Operation im nächsten Ausgabezyklus. Unabhängig von der obigen Operation gibt die Master-Ausführungsschicht 42AA die nächste Operation aus, die durch den Ausgabevektor Allow im Zwischenspeicher L1A am Ausgang des Lebensalter-Datenfelds 92A gewählt wird, zur Ausgabe von der Reservierungsstation 94A in einen FX/VS-Operations-Zwischenspeicher L2A aus, und die Slave-Ausführungsschicht 42BB gibt die nächste Operation aus, die durch den Ausgabevektor Allow im Zwischenspeicher L1B am Ausgang des Lebensalter-Datenfelds 92B zur Ausgabe von der Reservierungsstation 94B in einen FX/VS-Operations-Zwischenspeicher L2B aus. Die obige Operation gibt die älteste 64-Bit-Operation in jeder Master-Ausführungsschicht 42AA und Slave-Ausführungsschicht 42BB aus, bis der nächste Ausgabezyklus nach einer 128-Bit-Operation die älteste Operation Ready im Lebensalter-Datenfeld 92A wird, wobei zu diesem Zeitpunkt die Maske, die angibt, dass die zulässige 128-Bit-Operationen in den Zwischenspeicher L1A vorgeladen wurde, und der Index/die Adresse des Eintrags in das Lebensalter-Datenfeld 92B, die der ältesten zulässigen 128-Bit-Operation 128 Bit Überschreiben entspricht, in den Zwischenspeicher L2B geladen wurde, um zu bewirken, dass die älteste zulässige 128-Bit-Operation sowohl durch die Master-Ausführungsschicht 42AA als auch die Slave-Ausführungsschicht 42BB zusammen ausgegeben wird.
  • In 9 ist ein Beispiel einer Lade/Speicher-(LS-)Schicht 44 gezeigt, die zum Implementieren von Lade/Speicher-Schichten LS0 bis LS7 in den 2 bis 3 verwendet werden kann. Eine Lade/Speicher-Zugriffswarteschlange (LSAQ) 80 ist mit dem AGEN-Bus 38 verbunden, und die direkte Verbindung mit AGEN-Bus 38 und LSAQ 80 wird durch einen Multiplexer 81 gewählt, der eine Eingabe in ein Cachespeicher-Verzeichnis 83 eines Daten-Cache-Speichers 82 in der Cachespeicher-Schicht 46 über den Speicherbus 40 bereitstellt. Die Ausgabe des Multiplexers 81 stellt außerdem eine Eingabe in eine Lade-Umordnungswarteschlange (LRQ) 87 oder eine Speicher-Umordnungswarteschlange (SRQ) 88 von der LSAQ 80 oder vom AGEN-Bus 38 oder in andere Ausführungseinrichtungen in der Lade/Speicher-Schicht 44 bereit, die nicht gezeigt sind. Die Lade/Speicher-Schicht 44 kann eine oder mehrere Instanzen einer Lade/Speicher-Einheit enthalten, die Lade/Speicher-Operationen oder andere zugehörige Cachespeicher-Operationen ausführen. Zum Verfolgen der Ausführung von Cachespeicher-Operationen, die an die LS-Schicht 44 ausgegeben werden, enthalten LRQ 87 und SRQ 88 Einträge zum Verfolgen der Cachespeicher-Operationen für eine sequenzielle Konsistenz und/oder andere Attribute, die von der Prozessor-Architektur gefordert werden. Zwar ist die LS-Schicht möglicherweise in der Lage, mehrere Operationen pro Zyklus von einer oder mehreren Ausführungs-Schichten ES0 bis ES7 über den AGAN-Bus 38 zu empfangen, es ist jedoch infolge von Einschränkungen der LS-Schicht 44 nicht erforderlich, dass sämtliche Zugriffe in einem vorgegebenen Ausführungszyklus gleichzeitig ausführbar sind. Unter diesen Bedingungen speichert die LSAQ 80 Einträge, die bisher noch nicht ausgeführten Operationen entsprechen. SRQ 88 empfängt Daten für Speicheroperationen vom Speicherdatenbus 39, die mit Operationsangaben gekoppelt sind, wie beispielsweise die berechnete Speicheradresse. Wenn Operationen ausgeführt werden, können Probleme in der Lade/Speicher-Pipeline auftreten, die durch die LS-Schicht 44 und die Cachespeicher-Schicht 46 gebildet wird, wie beispielsweise Cachespeicher-Fehltreffer, Adressen-Übersetzungsfehler, Cachespeicher-Lese/Schreib-Konflikte, fehlende Daten oder andere Fehler, aufgrund derer es erforderlich ist, dass diese Operationen verzögert oder wiederholt werden. Bei einigen Ausführungsformen sind LRQ 87 und SRQ 88 so eingerichtet, dass sie die Operationen in die Lade/Speicher-Pipeline zur Ausführung wiederholt ausgeben, wobei eine Operation unabhängig von der Steuerung und der Operation von Ausführungs-Schichten ES0 bis ES7 bereitgestellt wird. Eine derartige Anordnung gibt Ressourcen in Ausführungs-Schichten ES0 bis ES7 frei, sobald eine oder mehrere Lade/Speicher-Schichten LS0 bis LS7 die Operationen und/oder Daten empfangen haben, auf die die Ressourcen-Freigabe eingerichtet ist. Die LSAQ 80 kann Ressourcen freigeben, sobald Operationen ausgeführt werden oder nachdem Einträge für die Operationen und/oder Daten in der LRQ 87 oder SRQ 88 gespeichert wurden. Die Steuerlogik in der LS-Schicht 44 tauscht Daten mit der DARQ 78 in der jeweiligen Ausführungsschicht ES0 bis ES7 aus, die die Lade/Speicher-Operation(en) zum Koordinieren der Akzeptanz von Operanden, Adressen und Daten ausgibt. Verbindungen zu anderen Lade/Speicher-Schichten werden durch den AGEN-Bus 38 und durch das Rückschreib-Routingnetzwerk 37 bereitgestellt, das zum Empfangen von Daten vom Daten-Cachespeicher 82 der Cachespeicher-Schicht 46 und zum Bereitstellen von Daten an einen Daten-Unalignment-Block 84 einer anderen Schicht geschaltet ist. Eine Datenformatierungseinheit 85 verbindet eine Cachespeicher-Schicht 44 mit dem Rückschreib-Routingnetzwerk 37 über einen Puffer 86, so dass Rückschreib-Ergebnisse von einer Ausführungs-Schicht zu den Ressourcen einer weiteren Ausführungs-Schicht geschrieben werden können. Der Daten-Cachespeicher 82 der Cachespeicher-Schicht 46 ist außerdem mit der E/A-Routingnetzwerk 41 zum Laden von Werten vom Cache/System-Speicher höherer Ordnung und zum Leeren oder Entnehmen vom Werten aus dem Daten-Cachespeicher 82 verbunden. Bei den Beispielen, die in dieser Offenbarung gegeben werden, sollte klar sein, dass es sich bei den Befehlen, die an die Befehlsausführungsschichten ES0 bis ES7 versendet werden, möglicherweise um vollständige externe Befehle oder um Abschnitte von externen Befehlen, d. h. decodierte „interne Befehle” handelt. in einem vorgegebenen Zyklus kann des Weiteren die Anzahl von internen Befehlen, die an eine der Befehlsausführungsschichten ES0 bis ES7 versendet werden, möglicherweise größer als eins sein, und nicht jede der Befehlsausführungsschichten ES0 bis ES7 empfängt notwendigerweise in einem vorgegebenen Zyklus einen internen Befehl.
  • Zwar wurde die Erfindung insbesondere unter Bezugnahme auf deren bevorzugte Ausführungsformen gezeigt und beschrieben, es sollte jedoch für einen Fachmann klar sein, dass die vorhergehenden und weitere Änderungen an der Form sowie an Einzelheiten ohne Abweichen vom Umfang der Erfindung daran ausgeführt werden können.

Claims (20)

  1. Ausführungsschicht-Schaltung zum Verwenden in einem Prozessorkern, wobei die Ausführungsschicht-Schaltung aufweist: eine Master-Ausführungsschicht mit einer ersten Ausgabewarteschlange zum Empfangen von Befehlen eines ersten Befehlsstroms; eine Slave-Ausführungsschicht mit einer zweiten Ausgabewarteschlange zum Empfangen von Befehlen eines zweiten Befehlsstroms und Befehlen des ersten Befehlsstroms, die eine größere Ausführungsbreite erfordern, die größer ist als eine geringere Breite der Master-Ausführungsschicht und der Slave-Ausführungsschicht; und eine Steuerlogik, die erkennt, wenn ein erster Befehl des ersten Befehlsstroms die größere Breite hat, und die Slave-Ausführungsschicht so steuert, dass ein erster Ausgabezyklus zum parallelen Ausgeben des ersten Befehls über die Master-Ausführungsschicht und die Slave-Ausführungsschicht reserviert wird.
  2. Ausführungsschicht-Schaltung nach Anspruch 1, wobei die Steuerlogik den ersten Ausgabezyklus während eines früheren Ausgabezyklus der Slave-Ausführungsschicht reserviert, wobei die Slave-Ausführungsschicht einen Befehl des zweiten Befehlsstroms ausgibt, wenn die Steuerlogik den ersten Ausgabezyklus reserviert hat, und wobei die Steuerlogik in einem späteren Ausgabezyklus den ersten Befehl über die Master-Ausführungsschicht und die Slave-Ausführungsschicht parallel ausgibt.
  3. Ausführungsschicht-Schaltung nach Anspruch 2, wobei die Steuerlogik in Reaktion auf ein Erkennen, dass der erste Befehl des ersten Befehlsstroms die größere Breite hat, ein Bit Allow setzt, das einem Ausgabewarteschlangen-Eintrag des ersten Befehls entspricht, der angibt, dass der erste Befehl zum Ausgeben zugelassen ist, und wobei in einem nächsten Ausgabezyklus die Master-Ausführungsschicht in Reaktion auf ein Erkennen, dass das Bit Allow gesetzt ist, einen entsprechenden Abschnitt des ersten Befehls ausgibt.
  4. Ausführungsschicht-Schaltung nach Anspruch 3, wobei die Master-Ausführungsschicht ein erstes Lebensalter-Datenfeld zum Speichern erster Angaben der ersten Sequenz aufweist, in der Befehle des ersten Befehlsstroms an die Master-Ausführungsschicht versendet, jedoch noch nicht ausgegeben wurden, wobei die Steuerlogik einen Eintrag von dem ersten Lebensalter-Datenfeld abruft, der einem ältesten Befehl entspricht, der in dem ersten Lebensalter-Datenfeld vorhanden ist, der zur Ausgabe bereit ist, und den abgerufenen Eintrag mit einer Maske vergleicht, die angibt, welche Einträge eine größere Breite haben, wobei der erste Befehl des ersten Befehlsstroms der älteste Befehl ist, der in dem ersten Lebensalter-Datenfeld vorhanden ist, wodurch die Steuerlogik erkennt, dass der erste Befehl des ersten Befehlsstroms die größere Breite hat.
  5. Ausführungsschicht-Schaltung nach Anspruch 4, wobei die Slave-Ausführungsschicht ein zweites Lebensalter-Datenfeld zum Speichern von zweiten Angaben einer zweiten Sequenz aufweist, in der Befehle des zweiten Befehlsstroms an die Slave-Ausführungsschicht versendet, jedoch noch nicht ausgegeben wurden, wobei die Steuerlogik in Ausgabezyklen einen ältesten zugelassenen Eintrag des ersten Lebensalter-Datenfelds und einen ältesten zugelassenen Eintrag des zweiten Lebensalter-Datenfelds abruft und die abgerufenen Einträge zum Ausgeben von entsprechenden Befehlen zum Ausführen durch die Master-Ausführungsschicht und die Slave-Ausführungsschicht verwendet.
  6. Ausführungsschicht-Schaltung von Anspruch 5, wobei die Steuerlogik in dem früheren Ausgabezyklus in Reaktion auf ein Erkennen, dass der erste Befehl des ersten Befehlsstroms die größere Breite hat, ein Bitfeld, das zugelassene Einträge in dem zweiten Lebensalter-Datenfeld angibt, mit einem Wert überschreibt, der einen Abschnitt des ersten Befehls gemäß der Slave-Ausführungsschicht spezifiziert, der in dem nächsten Ausführungszyklus durch die Slave-Ausführungsschicht ausgegeben werden soll.
  7. Ausführungsschicht-Schaltung nach Anspruch 2, wobei die Steuerlogik den ersten Ausgabezyklus reserviert, indem ein Vektor Allow mit einem Wert überschrieben wird, der einen Abschnitt des ersten Befehls gemäß der Slave-Ausführungsschicht spezifiziert, der in einem nächsten Ausgabezyklus durch die Slave-Ausführungsschicht ausgegeben werden soll.
  8. Prozessorkern, der aufweist: eine Mehrzahl von Versand-Warteschlangen zum Empfangen von Befehlen in einer entsprechenden Mehrzahl von Befehlsströmen; eine Mehrzahl von Parallelausführungs-Schichten zum parallelen Ausführen der Mehrzahl von Befehlsströmen, wobei die Mehrzahl von Parallelausführungs-Schichten eine Master-Ausführungsschicht mit einer ersten Ausgabewarteschlange zum Empfangen von Befehlen eines ersten Befehlsstroms und eine Slave-Ausführungsschicht mit einer zweiten Ausgabewarteschlange zum Empfangen von Befehlen eines zweiten Befehlsstroms und von Befehlen des ersten Befehlsstroms enthält, die eine größere Ausführungsbreite erfordern, die größer ist als eine geringere Breite der Master-Ausführungsschicht und der Slave-Ausführungsschicht; ein Versand-Routingnetzwerk zum Leiten der Ausgabe der Versand-Warteschlangen zu den Befehlsausführungsschichten; eine Versand-Steuerlogik, die die Befehle der mehreren Befehlsströme über das Versand-Routingnetzwerk zu Ausgabewarteschlangen der Mehrzahl von Schichten zur parallelen Befehlsausführung versendet; und eine Steuerlogik, die erkennt, wenn ein erster Befehl des ersten Befehlsstroms die größere Breite hat, und die Slave-Ausführungsschicht steuert, um einen ersten Ausgabezyklus zum parallelen Ausgeben des ersten Befehls über die Master-Ausführungsschicht und die Slave-Ausführungsschicht zu reservieren.
  9. Prozessorkern nach Anspruch 8, wobei die Steuerlogik während eines früheren Ausgabezyklus der Slave-Ausführungsschicht den ersten Ausgabezyklus reserviert, wobei die Slave-Ausführungsschicht einen Befehl des zweiten Befehlsstroms ausgibt, wenn die Steuerlogik den ersten Ausgabezyklus reserviert hat, und wobei die Steuerlogik in einem folgenden Ausgabezyklus den ersten Befehl über die Master-Ausführungsschicht und die Slave-Ausführungsschicht parallel ausgibt.
  10. Prozessorkern nach Anspruch 9, wobei die Steuerlogik in Reaktion auf ein Erkennen, dass der erste Befehl des ersten Befehlsstroms die größere Breite hat, ein Bit Allow gemäß eines Eintrags der Ausgabewarteschlange des ersten Befehls setzt, der angibt, dass der erste Befehl zum Ausgeben zugelassen ist, und wobei die Master-Ausführungsschicht in einem nächsten Ausgabezyklus einen entsprechenden Abschnitt des ersten Befehls in Reaktion auf ein Erkennen ausgibt, dass das Bit Allow gesetzt ist.
  11. Prozessorkern nach Anspruch 10, wobei die Master-Ausführungsschicht ein erstes Lebensalter-Datenfeld zum Speichern erster Angaben einer ersten Sequenz aufweist, in der Befehle des ersten Befehlsstroms zu der Master-Ausführungsschicht versendet, jedoch noch nicht ausgegeben wurden, wobei die Steuerlogik einen Eintrag von dem ersten Lebensalter-Datenfeld abruft, der einem ältesten Befehl entspricht, der in dem ersten Lebensalter-Datenfeld vorhanden ist, der zum Ausgeben bereit ist, und den abgerufenen Eintrag mit einer Maske vergleicht, die angibt, welche Einträge die größere Breite haben, wobei der erste Befehl des ersten Befehlsstroms der älteste Befehl ist, der in dem ersten Lebensalter-Datenfeld vorhanden ist, wodurch die Steuerlogik erkennt, das der erste Befehl des ersten Befehlsstroms die größere Breite hat
  12. Prozessorkern nach Anspruch 10, wobei die Slave-Ausführungsschicht ein zweites Lebensalter-Datenfeld zum Speichern zweiter Angaben einer zweiten Sequenz aufweist, in der Befehle des zweiten Befehlsstroms an den Slave-Ausführungsschicht versendet, jedoch noch nicht ausgegeben wurden, wobei die Steuerlogik in Ausgabezyklen einen ältesten zugelassenen Eintrag des ersten Lebensalter-Datenfelds und einen ältesten zugelassenen Eintrag des zweiten Lebensalter-Datenfelds abruft und die abgerufenen Einträge zum Ausgeben entsprechender Befehle zum Ausführen durch die Master-Ausführungsschicht und die Slave-Ausführungsschicht verwendet.
  13. Prozessorkern nach Anspruch 12, wobei die Steuerlogik in dem früheren Ausgabezyklus in Reaktion auf ein Erkennen, dass der erste Befehl des ersten Befehlsstroms die größere Breite hat, ein Bitfeld, das zulässige Einträge in dem zweiten Lebensalter-Datenfeld angibt, mit einem Wert überschreibt, der einen Abschnitt des ersten Befehls gemäß der Slave-Ausführungsschicht spezifiziert, der in dem nächsten Ausführungszyklus durch die Slave-Ausführungsschicht ausgegeben werden soll.
  14. Prozessorkern nach Anspruch 9, wobei die Steuerlogik den ersten Ausgabezyklus durch Überschreiben eines Vektors Allow mit einem Wert reserviert, der einen Abschnitt des ersten Befehls gemäß der Slave-Ausführungsschicht spezifiziert, der in einem nächsten Ausgabezyklus durch die Slave-Ausführungsschicht ausgegeben werden soll.
  15. Verfahren zum Ausführen von Programmbefehlen durch einen Prozessorkern, wobei das Verfahren aufweist: Empfangen von Befehlen eines ersten Befehlsstroms in einer Master-Ausführungsschicht, die eine erste Ausgabewarteschlange hat; Empfangen von Befehlen eines zweiten Befehlsstroms und von Befehlen des ersten Befehlsstroms, die eine größere Ausführungsbreite erfordern, die größer ist als eine geringere Breite der Master-Ausführungsschicht und der Slave-Ausführungsschicht, in einer Slave-Ausführungsschicht, die eine zweite Ausgabewarteschlange hat; Erkennen, wenn ein erster Befehl des ersten Befehlsstroms die größere Breite hat; und in Reaktion auf ein Erkennen, dass der erste Befehl des ersten Befehlsstroms die größere Breite hat, Steuern der Slave-Ausführungsschicht, um einen ersten Ausgabezyklus zum parallelen Ausgeben des ersten Befehls über die Master-Ausführungsschicht und die Slave Ausführungsschicht mit einer Steuerlogik zu reservieren.
  16. Verfahren nach Anspruch 15, das ferner aufweist: Reservieren des ersten Ausgabezyklus während eines früheren Ausgabezyklus der Slave-Ausführungsschicht; Ausgeben eines Befehls des zweiten Befehlsstroms von der Slave-Ausführungsschicht, wenn die Steuerlogik den ersten Ausgabezyklus reserviert hat; und in einem folgenden Ausgabezyklus paralleles Ausgeben des ersten Befehls über die Master-Ausführungsschicht und die Slave-Ausführungsschicht.
  17. Verfahren nach Anspruch 16, das ferner aufweist: In Reaktion auf ein Erkennen, dass der erste Befehl des ersten Befehlsstroms die größere Breite hat, Setzen eines Bits Allow gemäß einem Eintrag der Ausgabewarteschlange des ersten Befehls, der angibt, dass der erste Befehl ausgegeben werden kann; und Ausgeben eines entsprechenden Abschnitts des ersten Befehls in einem nächsten Ausgabezyklus in Reaktion auf ein Erkennen, dass das Bit Allow gesetzt ist.
  18. Verfahren nach Anspruch 17, wobei die Master-Ausführungsschicht ein erstes Lebensalter-Datenfeld zum Speichern erster Angaben einer ersten Sequenz aufweist, in der Befehle des ersten Befehlsstroms an die Master-Ausführungsschicht versendet, jedoch noch nicht ausgegeben wurden, wobei das Verfahren ferner aufweist: Abrufen eines Eintrags von dem ersten Lebensalter-Datenfeld gemäß einem ältesten Befehl, der in dem ersten Lebensalter-Datenfeld vorhanden ist, der zum Ausgeben bereit ist; und Vergleichen des abgerufenen Eintrags mit einer Maske, die angibt, welche Einträge die größere Breite haben, wobei der erste Befehl in dem ersten Befehlsstrom der älteste Befehl ist, der in dem ersten Lebensalter-Datenfeld vorhanden ist, wodurch die Steuerlogik erkennt, dass der erste Befehl in dem ersten Befehlsstrom die größere Breite hat.
  19. Verfahren nach Anspruch 18, wobei die Slave-Ausführungsschicht ein zweites Lebensalter-Datenfeld zum Speichern von zweiten Angaben einer zweiten Sequenz aufweist, in der Befehle des zweiten Befehlsstroms an die Slave-Ausführungsschicht versendet, jedoch noch nicht ausgegeben wurden, wobei das Verfahren ferner aufweist: in Ausgabezyklen Abrufen eines ältesten zulässigen Eintrags des ersten Lebensalter-Datenfelds und eines ältesten zulässigen Eintrags des zweiten Lebensalter-Datenfelds; und Verwenden der abgerufenen Einträge zum Ausgeben entsprechender Befehle zum Ausführen durch die Master-Ausführungsschicht und die Slave-Ausführungsschicht
  20. Verfahren nach Anspruch 19, das ferner in Reaktion auf ein Erkennen, dass der erste Befehl des ersten Befehlsstroms die größere Breite hat, ein Überschreiben eines Bitfelds aufweist, das zulässige Einträge in dem zweiten Lebensalter-Datenfeld angibt, mit einem Wert, der einen Abschnitt des ersten Befehls gemäß der Slave-Ausführungsschicht spezifiziert, der in einem nächsten Ausführungszyklus durch die Slave-Ausführungsschicht ausgegeben werden soll.
DE112015005597.5T 2015-01-13 2015-12-16 Verknüpfungsfähige Parallelausführungs-Schicht einer Ausgabewarteschlange für einen Prozessor Pending DE112015005597T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US14/595,549 US10133581B2 (en) 2015-01-13 2015-01-13 Linkable issue queue parallel execution slice for a processor
US14/595,549 2015-01-13
US14/724,073 US20160202992A1 (en) 2015-01-13 2015-05-28 Linkable issue queue parallel execution slice processing method
US14/724,073 2015-05-28
PCT/IB2015/059662 WO2016113615A1 (en) 2015-01-13 2015-12-16 Linkable issue queue parallel execution slice for a processor

Publications (1)

Publication Number Publication Date
DE112015005597T5 true DE112015005597T5 (de) 2017-09-28

Family

ID=56367640

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112015005597.5T Pending DE112015005597T5 (de) 2015-01-13 2015-12-16 Verknüpfungsfähige Parallelausführungs-Schicht einer Ausgabewarteschlange für einen Prozessor

Country Status (5)

Country Link
US (3) US10133581B2 (de)
JP (1) JP6621476B2 (de)
DE (1) DE112015005597T5 (de)
GB (1) GB2549906B (de)
WO (1) WO2016113615A1 (de)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9672043B2 (en) 2014-05-12 2017-06-06 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor
US9720696B2 (en) 2014-09-30 2017-08-01 International Business Machines Corporation Independent mapping of threads
US9977678B2 (en) 2015-01-12 2018-05-22 International Business Machines Corporation Reconfigurable parallel execution and load-store slice processor
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
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
US9996359B2 (en) 2016-04-07 2018-06-12 International Business Machines Corporation Fast multi-width instruction issue in parallel slice processor
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
US10884752B2 (en) 2017-11-29 2021-01-05 International Business Machines Corporation Slice-based allocation history buffer
US11093282B2 (en) * 2019-04-15 2021-08-17 International Business Machines Corporation Register file write using pointers

Family Cites Families (130)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5095424A (en) 1986-10-17 1992-03-10 Amdahl Corporation Computer system architecture implementing split instruction and operand cache line-pair-state management
US4858113A (en) 1987-04-10 1989-08-15 The United States Of America As Represented By The Director Of The National Security Agency Reconfigurable pipelined processor
US5055999A (en) 1987-12-22 1991-10-08 Kendall Square Research Corporation Multiprocessor digital data processing system
JPH0374721A (ja) * 1989-08-16 1991-03-29 Hitachi Ltd ディジタル処理装置
US5471593A (en) 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
CA2073516A1 (en) 1991-11-27 1993-05-28 Peter Michael Kogge Dynamic multi-mode parallel processor array architecture computer system
US5553305A (en) 1992-04-14 1996-09-03 International Business Machines Corporation System for synchronizing execution by a processing element of threads within a process using a state indicator
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
US6073231A (en) 1993-10-18 2000-06-06 Via-Cyrix, Inc. Pipelined processor with microcontrol of register translation hardware
US5630149A (en) 1993-10-18 1997-05-13 Cyrix Corporation Pipelined processor with register renaming hardware to accommodate multiple size registers
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
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
EP2241968B1 (de) * 1998-08-24 2012-06-27 MicroUnity Systems Engineering, Inc. System mit breiter Operandenarchitektur und Verfahren
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
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
US7020763B2 (en) 2000-03-08 2006-03-28 Sun Microsystems, Inc. Computer processing architecture having a scalable number of processing paths and pipelines
US7836317B2 (en) 2000-05-12 2010-11-16 Altera Corp. Methods and apparatus for power control in a scalable array of processor elements
US6965991B1 (en) 2000-05-12 2005-11-15 Pts Corporation 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
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
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
EP1474744B1 (de) 2002-01-30 2008-04-16 Real Enterprise Solutions Development B.V. Verfahren und programme zur einstellung von prioritätsstufen in einem datenverarbeitungssystem mit multiprogrammierung und priorisierte warteschlangenbildung
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
US7373432B2 (en) 2002-10-31 2008-05-13 Lockheed Martin Programmable circuit and related computing machine 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
EP1581862A2 (de) 2002-12-30 2005-10-05 Koninklijke Philips Electronics N.V. Verfahren zum buszugriff in einem gruppierten befehlsebenen-parallel-prozessor
US7191320B2 (en) 2003-02-11 2007-03-13 Via Technologies, Inc. Apparatus and method for performing a detached load operation in a pipeline microprocessor
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
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
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
US7395419B1 (en) 2004-04-23 2008-07-01 Apple Inc. Macroscalar processor architecture
US7617496B2 (en) 2004-04-23 2009-11-10 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
KR20070072848A (ko) 2004-06-08 2007-07-06 유니버시티 오브 로체스터 밀집된 클러스터에서 통신-병렬성 트레이드 오프를동적으로 관리하는 방법
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
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
JP5136404B2 (ja) * 2006-02-28 2013-02-06 富士通株式会社 演算処理装置、演算処理装置の制御方法
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
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
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
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
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
US8732438B2 (en) 2008-04-16 2014-05-20 Oracle America, Inc. Anti-prefetch instruction
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
US8489792B2 (en) * 2010-03-12 2013-07-16 Lsi Corporation Transaction performance monitoring in a processor bus bridge
US8335892B1 (en) 2009-09-28 2012-12-18 Nvidia Corporation Cache arbitration between multiple clients
US8984264B2 (en) 2010-01-15 2015-03-17 Oracle America, Inc. Precise data return handling in speculative processors
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
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
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
US9639369B2 (en) 2013-11-11 2017-05-02 Apple Inc. Split register file for operands of different sizes
US9665372B2 (en) * 2014-05-12 2017-05-30 International Business Machines Corporation Parallel slice processor with dynamic instruction stream mapping
US9672043B2 (en) 2014-05-12 2017-06-06 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor
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
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

Also Published As

Publication number Publication date
US10223125B2 (en) 2019-03-05
US20180336038A1 (en) 2018-11-22
GB2549906B (en) 2021-07-28
JP6621476B2 (ja) 2019-12-18
US20160202990A1 (en) 2016-07-14
US10133581B2 (en) 2018-11-20
JP2018501563A (ja) 2018-01-18
GB2549906A (en) 2017-11-01
WO2016113615A1 (en) 2016-07-21
GB201712265D0 (en) 2017-09-13
US20160202992A1 (en) 2016-07-14

Similar Documents

Publication Publication Date Title
DE112015005597T5 (de) Verknüpfungsfähige Parallelausführungs-Schicht einer Ausgabewarteschlange für einen Prozessor
DE112015004983T5 (de) Parallel-Slice-Prozessor mit einer Lade-Speicher-Umlaufwarteschlange für eine schnelle Freigabe von Einträgen in einer Ausgabewarteschlange
DE60011797T2 (de) Ausführung von mehreren fäden in einem parallelprozessor
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
DE60006270T2 (de) Parallele prozessorarchitektur
DE102014003790A1 (de) Parallelvorrichtung für hochkomprimierte Hochgeschwindigkeits-LZ77-Tokenisierung und Huffman-Codierung für Deflate-Komprimierung
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE102018005105A1 (de) Befehle für entfernte atomare operationen
DE102013016871A1 (de) Technik zur Steigerung der Effizienz in mehrsträngigen Verarbeitungseinrichtngen
DE60316774T2 (de) Verkettung von mehrfadenprozessorkernen zur bearbeitung von datenpaketen
DE4335475A1 (de) Datenverarbeitungseinrichtung mit Cache-Speicher
DE112013004770T5 (de) Lese- und -Schreibmaskenaktualisierungsbefehl zur Vektorisierung rekursiver Berechnungen über unabhängige Daten
DE102016006400A1 (de) Hardware-prozessoren und verfahren für eng-gekoppelte heterogene datenverarbeitung
DE102014003799A1 (de) Systeme und Verfahren zur Übertragungseliminierung mit Bypass-Mehrfachinstanziierungstabelle
DE102012224265A1 (de) Gemeinsame Nutzung dicht benachbarter Daten-Cachespeicher
DE69826404T2 (de) Datenverarbeitungssystem mit mehreren Prozessoren, die eine Registerbank gemeinsam benutzen
DE10297166T5 (de) Mechanismus zur Interrupt-Abwicklung in Computersystemen, welche die gleichzeitige Ausführung mehrerer Threads unterstützen
DE102013114351A1 (de) System und Verfahren für Hardware-Disponierung bedingter Barrieren und ungeduldiger Barrieren
DE102012222394A1 (de) Verfahren und Vorrichtung zum Sammelzwischenspeichern von Quelloperanden
DE102015111333A1 (de) Betreiben eines 32-bit betriebssystems auf einer 64-bit maschine
DE102014000535A1 (de) Registerdatei mit mehreren unterregisterdateien
DE112013004783T5 (de) Durch Lese- und Schreibmasken gesteuerter Vektor-Verschiebebefehl
DE3114921C2 (de) Mikroprogramm-Speicheranordnung
DE112013003741T5 (de) Systeme, Vorrichtungen und Verfahren zum Durchführen einer Konfliktdetektion unf einer Übertragung von Inhalten eines Registers an Datenelementpositionen eines anderen Registers
EP0825540B1 (de) Prozessor mit Pipelining-Aufbau

Legal Events

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