DE102021121973A1 - Verfahren, systeme und einrichtungen für skalierbare portbindung für asymmetrische ausführungs-ports und zuordnungsbreiten eines prozessors - Google Patents

Verfahren, systeme und einrichtungen für skalierbare portbindung für asymmetrische ausführungs-ports und zuordnungsbreiten eines prozessors Download PDF

Info

Publication number
DE102021121973A1
DE102021121973A1 DE102021121973.6A DE102021121973A DE102021121973A1 DE 102021121973 A1 DE102021121973 A1 DE 102021121973A1 DE 102021121973 A DE102021121973 A DE 102021121973A DE 102021121973 A1 DE102021121973 A1 DE 102021121973A1
Authority
DE
Germany
Prior art keywords
mapping
port
execution
binding
input
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
DE102021121973.6A
Other languages
English (en)
Inventor
Daeho Seo
Vikash Agarwal
John Esper
Khary Alexander
Asavari Paranjape
Jonathan Combs
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of DE102021121973A1 publication Critical patent/DE102021121973A1/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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

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

Abstract

Systeme, Verfahren und Einrichtungen in Bezug auf Schaltungen zum Umsetzen skalierbarer Portbindung für asymmetrische Ausführungsports und Zuordnungsbreiten eines Prozessors sind beschrieben. In einer Ausführungsform umfasst ein Hardwareprozessorkern eine Decodierschaltung zum Decodieren von Befehlen in Sätze von einer oder mehreren Mikrooperationen, eine Befehlsdecodierwarteschlange zum Speichern der Sätze von einer oder mehreren Mikrooperationen, mehrere unterschiedliche Typen von Ausführungsschaltungen, die jeweils einen jeweiligen Eingangsport und eine jeweilige Eingangswarteschlange umfassen, und eine Zuordnungsschaltung, die mehrere Zuordnungsspuren umfasst, die mit der Befehlsdecodierwarteschlange und mit den Eingangsports der mehreren verschiedenen Typen von Ausführungsschaltungen gekoppelt sind, wobei die Zuordnungsschaltung, für eine Eingabe von Mikrooperationen auf den mehreren Zuordnungsspuren, dient zum Erzeugen einer sortierten Belegungsliste der Eingangswarteschlangen jedes Eingangsports, Erzeugen einer Vorbindungsabbildung der Eingangsports der mehreren verschiedenen Typen von Ausführungsschaltungen auf die mehreren Zuordnungsspuren in einer zirkulären Reihenfolge gemäß der sortierten Liste, wenn ein Typ von Mikrooperation von einer Zuordnungsspur nicht mit einem Typ von Ausführungsschaltung eines Eingangsports in der Vorbindungsabbildung übereinstimmt, Schieben der Vorbindungsabbildung, sodass der Eingangsport auf eine nächste Zuordnungsspur abgebildet wird, die einen übereinstimmenden Typ von Mikrooperation aufweist, um eine endgültige Abbildung der Eingangsports der mehreren verschiedenen Typen von Ausführungsschaltungen auf die mehreren Zuordnungsspuren zu erzeugen, und Binden der Eingangsports der mehreren verschiedenen Typen von Ausführungsschaltungen an die mehreren Zuordnungsspuren gemäß der endgültigen Abbildung.

Description

  • TECHNISCHES GEBIET
  • Die Offenbarung betrifft allgemein Elektronik, und insbesondere betrifft eine Ausführungsform der Offenbarung eine Schaltungsanordnung zum Implementieren einer skalierbaren Portbindung für asymmetrische Ausführungsports und Zuordnungsbreiten eines Prozessors.
  • STAND DER TECHNIK
  • Ein Prozessor, oder eine Menge von Prozessoren, führt Befehle aus einem Befehlssatz, z. B. der Befehlssatzarchitektur (ISA), aus. Der Befehlssatz ist der Teil der Computerarchitektur, der sich auf Programmierung bezieht, und umfasst allgemein die systemeigenen Datentypen, Befehle, Registerarchitektur, Adressierungsmodi, Speicherarchitektur, Unterbrechungs- und Ausnahmenbehandlung und externe Eingabe und Ausgabe (E/A). Es ist anzumerken, dass der Begriff „Befehl“ sich hier auf einen Makrobefehl, d. h. einen Befehl, der dem Prozessor zur Ausführung bereitgestellt wird, oder auf einen Mikrobefehl, d. h. einen Befehl, der aus dem Decodieren von Makrobefehlen durch den Decodierer eines Prozessors resultiert, beziehen kann.
  • Figurenliste
  • Die vorliegende Offenbarung wird in den Figuren der beigefügten Zeichnungen als Beispiel und nicht als Einschränkung dargestellt, wobei ähnliche Bezüge ähnliche Elemente anzeigen und:
    • 1 veranschaulicht einen Prozessorkern mit einer Zuordnungsschaltung, die eine Portbindungsschaltung und mehrere Ausführungsschaltungen umfasst, gemäß Ausführungsformen der Offenbarung.
    • 2 veranschaulicht eine beispielhafte Ganzzahlausführungsschaltung gemäß Ausführungsformen der Offenbarung.
    • 3 veranschaulicht eine beispielhafte Speicherausführungsschaltung gemäß Ausführungsformen der Offenbarung.
    • 4 veranschaulicht eine beispielhafte Gleitkomma- / Einzelbefehls-Mehrfachdaten- bzw. SIMD-Ausführungsschaltung gemäß Ausführungsformen der Offenbarung.
    • 5 veranschaulicht eine Portbindungsschaltung gemäß Ausführungsformen der Offenbarung.
    • 6 veranschaulicht eine Vorbindungsabbildung von Ports auf Zuordnungsspuren gemäß Ausführungsformen der Offenbarung.
    • 7 veranschaulicht das Schieben einer Vorbindungsabbildung eines ersten Satzes von (z. B. Ganzzahlausführungsschaltung-)Ports auf Zuordnungsspuren in eine endgültige (z. B. tatsächliche) Abbildung gemäß Ausführungsformen der Offenbarung.
    • 8 veranschaulicht das Schieben einer Vorbindungsabbildung eines zweiten Satzes von (z. B. Speicherausführungsschaltungs-)Ports auf Zuordnungsspuren in eine endgültige (z. B. tatsächliche) Abbildung gemäß Ausführungsformen der Offenbarung.
    • 9 veranschaulicht das Schieben einer Vorbindungsabbildung eines dritten Satzes von (z. B. Gleitkomma-Ausführungsschaltungs-)Ports auf Zuordnungsspuren in eine endgültige (z. B. tatsächliche) Abbildung gemäß Ausführungsformen der Offenbarung.
    • 10 veranschaulicht das Schieben einer Vorbindungsabbildung eines Satzes von Ports auf Zuordnungsspuren in eine endgültige (z. B. tatsächliche) Abbildung mit einer statisch gebundenen Mikrooperation gemäß Ausführungsformen der Offenbarung.
    • 11 ist ein Flussdiagramm, das Operationen zum Binden von Ports von Ausführungsschaltungen an Zuordnungsspuren gemäß Ausführungsformen der Offenbarung darstellt.
    • 12A ist ein Blockdiagramm, das sowohl eine beispielhafte reihenfolgetreue (In-order) Pipeline als auch eine beispielhafte reihenfolgeveränderte (Out-of-order) Ausgabe-/Ausführungspipeline mit Registerumbenennung gemäß Ausführungsformen der Offenbarung darstellt.
    • 12B ist ein Blockdiagramm, das sowohl eine beispielhafte Ausführungsform eines reihenfolgetreuen (In-order) Architekturkerns als auch eines reihenfolgeveränderten (Out-of-order) Ausgabe-/Ausführungs-Architekturkerns mit Registerumbenennung, in einen Prozessor einzuschließen, gemäß Ausführungsformen der Offenbarung darstellt.
    • 13A ist ein Blockdiagramm eines einzelnen Prozessorkerns, zusammen mit seiner Verbindung zu dem On-Die-Verbindungsnetzwerk und mit seinem lokalen Teilsatz des Level-2-Caches (L2), gemäß Ausführungsformen der Offenbarung.
    • 13B ist eine erweiterte Ansicht eines Teils des Prozessorkerns in 13A gemäß Ausführungsformen der Offenbarung.
    • 14 ist ein Blockdiagramm eines Prozessors, der mehr als einen Kern haben kann, der eine integrierte Speichersteuerung haben kann und der integrierte Grafik haben kann, gemäß Ausführungsformen der Offenbarung.
    • 15 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 16 ist ein Blockdiagramm eines spezifischeren beispielhaften Systems gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 17 ist ein Blockdiagramm eines zweiten spezifischeren beispielhaften Systems gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 18 ist ein Blockdiagramm eines Systems-on-a-Chip (SoC) gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 19 ist ein Blockdiagramm, die Verwendung eines Softwarebefehlsumwandlers zum Umwandeln binärer Befehle in einem Quellbefehlssatz in binäre Befehle in einem Zielbefehlssatz abgesetzt darstellend, gemäß Ausführungsformen der Offenbarung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der folgenden Beschreibung werden zahlreiche spezifische Details dargelegt. Allerdings versteht es sich, dass Ausführungsformen der Offenbarung ohne diese spezifischen Details umgesetzt sein können. In anderen Fällen wurden wohlbekannte Schaltungen, Strukturen und Techniken nicht ausführlich gezeigt, um das Verständnis dieser Beschreibung nicht zu verdecken.
  • Bezugnahmen in der Spezifikation auf „eine Ausführungsform“, „eine beispielhafte Ausführungsform“ usw. zeigen an, dass die beschriebene Ausführungsform ein bestimmtes Merkmal, eine Struktur oder Charakteristik umfassen kann, aber jede Ausführungsform muss nicht notwendigerweise das spezielle Merkmal, die Struktur oder Charakteristik umfassen. Darüber hinaus beziehen sich solche Phrasen nicht notwendigerweise auf die gleiche Ausführungsform. Ferner wird, wenn ein bestimmtes Merkmal, eine bestimmte Struktur oder Charakteristik in Verbindung mit einer Ausführungsform beschrieben wird, davon ausgegangen, dass es innerhalb der Kenntnis eines Fachmanns liegt, ein solches Merkmal, eine solche Struktur oder Charakteristik in Verbindung mit anderen Ausführungsformen in Verbindung zu setzen, unabhängig davon, ob explizit beschrieben oder nicht.
  • Ein (z. B. Hardware-)Prozessor (der z. B. einen oder mehrere Kerne aufweist) kann (z. B. Benutzerebenen-)Befehle (z. B. einen Thread von Befehlen) ausführen, um an Daten zu arbeiten, um zum Beispiel arithmetische, logische oder andere Funktionen durchzuführen. Software kann zum Beispiel mehrere Befehle (z. B. Makrobefehle) beinhalten, die einem Prozessor (z. B. einem Kern oder Kernen davon) bereitgestellt werden, der dann die mehreren Befehle ausführt (z. B. decodiert und ausführt), um die entsprechenden Operationen durchzuführen. In bestimmten Ausführungsformen beinhaltet ein Prozessor eine Schaltungsanordnung (z. B. eine oder mehrere Decodierschaltungen) zum Übersetzen (z. B. Decodieren) eines Befehls in eine oder mehrere Mikrooperationen (µops oder Mikroops), wobei diese Mikrooperationen zum Beispiel direkt durch die Hardware (z. B. durch Ausführungsschaltungen) ausgeführt werden. Eine oder mehrere Mikrooperationen, die einem Befehl (z. B. Makrobefehl) entsprechen, können als Mikrocodefluss für diesen Befehl bezeichnet werden. Eine Mikrooperation kann als ein Mikrobefehl bezeichnet werden, zum Beispiel ein Mikrobefehl, der aus der Decodierung eines Makrobefehls eines Prozessors resultierte. In einer Ausführungsform sind die Befehle 64-Bit- und/oder 32-Bit-Befehle einer Befehlssatzarchitektur (ISA). In einer Ausführungsform sind die Befehle (z. B. 64-Bit- und/oder 32-Bit-)Befehle einer Intel® Befehlssatzarchitektur (ISA). In bestimmten Ausführungsformen ist die Übersetzung eines Befehls in eine oder mehrere Mikrooperationen mit dem Befehlsabruf- und/oder - decodierteil einer Pipeline eines Prozessors assoziiert.
  • Bei bestimmten Prozessoren werden die Operationen (z. B. Mikrooperationen), die auszuführen sind, zur Ausführung durch eine Schaltung (z. B. Zuordnungsschaltung) geplant, die Ausführungsressourcen für die Operationen zuordnet. Eine Zuordnungsschaltung kann Teil einer Ablaufsteuerungsschaltungsanordnung eines Prozessors sein. Bei bestimmten Ausführungsformen ist eine Zuordnungsschaltung verantwortlich für (i) Verfolgen der Abhängigkeitskette von Mikrooperationen (µops) und/oder (ii) (z. B. optimal) Planen der Mikrooperationen (µops) über Ausführungsports basierend auf der Funktionalität jedes Ports.
  • In bestimmten Ausführungsformen müssen, damit die Zuordnungsschaltung Mikrooperationen (µops) optimal plant, alle Mikrooperationen (µops) bekannt sein, die bereit sind, geplant zu werden (z. B. jeder Zyklus), und dann muss die beste Planungsoption angewendet werden, sodass diese die Ausnutzung der Ausführungspipeline (z. B. Ausführungsports) maximieren kann. In bestimmten Ausführungsformen ist diese dynamische Planung durch die Zuordnungsschaltung sehr hardwareintensiv und zeitkritisch und ist nicht mit der Vergrößerung der Ausführungspipelines (z. B. Ports) skalierbar und beschränkt dies auf eine einheitliche Struktur. Um dieses Problem zu lösen und die Auswahl der dynamischen Ausführungspipeline (z. B. Port) loszuwerden, besteht eine andere Option darin, die Mikrooperationen (µops) früh in der Pipeline an spezifische Ausführungsports zu binden, so dass die Zuordnungsschaltung nur unter den Mikrooperationen (µops) aussucht, die an spezifische Pipelines gebunden sind, wodurch z. B. die Aufgabe der Zuordnungsschaltung auf das Verfolgen der Abhängigkeitskette und das Planen derselben für den spezifizierten Port fokussiert wird. Dies kann zum Beispiel als Portbindung bezeichnet werden, wobei aber der Kompromiss für Portbindung in der Leistungsfähigkeit liegt, z. B. wie nahe das Portbindungsschema eine dynamische Planung imitieren kann. Portbindung kann z. B. bei einer Zuordnung durchgeführt werden, wobei die Zuordnungsschaltung (z. B. Zuordnungspipeline) den Typ jeder Mikrooperation (µop) kennt und weiß, auf welcher Ausführungspipeline (z. B. Port) sie ausgeführt werden können.
  • In bestimmten Ausführungsformen soll ein Zuordnungsschema Mikrooperationen (µops) dem bzw. den am wenigsten belegten Eingangsport(s) der Ausführungsschaltungen (z. B. basierend auf Portbelegungsdaten) zuordnen. In bestimmten Ausführungsformen soll ein Zuordnungsschema Mikrooperationen (µops) dem/den Eingangsport(s) der Ausführungsschaltungen in einer zirkulären Reihenfolge (z. B. Rundlauf) (und z. B. nicht basierend auf Portbelegungsdaten) zuordnen. Beide Schemata haben ihre eigenen Tücken. Zum Beispiel kann das Zuordnen zu der geringsten Belegung funktionieren, wenn es wenige (z. B. schmale) Ausführungs- und Zuordnungspipelines gibt, wobei z. B. für jeden Zuordnungszyklus die Zuordnungsschaltung versucht, alle Mikrooperationen (µops), die geplant werden, zu dem einen oder den mehreren am wenigsten belegten Ports zu schieben. Bei solchen Ausführungsformen weiß die Zuordnungsschaltung jedoch möglicherweise nicht, ob die anderen Ports nichts zu planen haben, oder kennen keine Belegungsinformationen über sie (und ist z. B. nicht für Mikroarchitekturen skalierbar, die mehr Zuordnungsspuren und mehr Ausführungspipelines aufweisen). Solche Ausführungsformen können eine zeitlich unausgeglichene Arbeitslastverteilung für Ausführungspipelines (z. B. Ports) verursachen und verwenden daher die Ausführungspipelines (z. B. Ports) nicht effizient. Zum Beispiel versucht die zirkuläre Ordnungszuordnung (z. B. Rundlauf), Arbeit gleichmäßig zu verteilen, berücksichtigt aber möglicherweise nicht die Abflussrate eines Ports und hat daher keine Sicht darauf, wie sich die Abhängigkeitskette auflöst, was z. B. zu einer nicht-optimalen Verwendung von Ausführungspipelines (z. B. Ports) führt, was zu einer Leistungsfähigkeitsverschlechterung führt.
  • Bestimmte Ausführungsformen hierin nutzen ein einzelnes Zuordnungsschema, das sich auf den zwei oben beschriebenen Schemata verbessert, z. B. ein einzelnes Zuordnungsschema, das mit Zuordnungsbreite skalierbar ist und die Verwendung der Ausführungspipeline (z. B. Port) verbessert, was zu einer viel höheren Leistungsfähigkeit führt. Bestimmte Ausführungsformen hierin nutzen ein einzelnes Zuordnungsschema (z. B. für Portbindung oder Portaffinität), das Portbelegungsinformationen, zirkuläre Ordnungszuordnung und Schieben nutzt.
  • In bestimmten Ausführungsformen des einzelnen Zuordnungsschemas sind Portbelegungsinformationen eine vorsortierte Liste von Ausführungsports, die basierend auf Belegung erzeugt werden. In einer Ausführungsform werden während des Sortierens bestimmte Heuristiken angewandt, um bestimmte Ports zu maskieren und/oder alle Operationen einem bestimmten (z. B. einzelnen) Port zuzuordnen. Die Portbelegungsinformationen können veraltet sein, wodurch ermöglicht wird, dass das Sortieren und Maskieren über einen oder mehrere Zyklen verteilt wird, um die Zeitsteuerungskritikalität zu reduzieren.
  • In bestimmten Ausführungsformen des einzelnen Zuordnungsschemas wird die vorsortierte Liste dann in einer zirkulären Reihenfolge (z. B. in Rundlaufweise), z. B. auf die Zuordnungsspuren vorabgebildet, sodass jede Zuordnungsspur eine vorab zugewiesene Portnummer aufweist.
  • In bestimmten Ausführungsformen des einzelnen Zuordnungsschemas wird diese vorsortierte Liste während der Zuordnung zum Binden verwendet, falls der Typ der zuzuordnenden Mikrooperation (µοp) mit dem Typ des Ports (z. B. Typ der Ausführungsschaltung, die dem Port entspricht) übereinstimmt, und falls dies nicht der Fall ist, soll die Zuordnungsschaltung die vorsortierten Informationen auf die nächste Zuordnungsspur schieben, z. B. basierend auf einigen Heuristiken. Um zum Beispiel sicherzustellen, dass die Sortierinformationen nicht verloren gehen und daher in der Lage sind, Arbeit über Ausführungsports hinweg auszugleichen (zum Beispiel Binden für Ganzzahl-Portverschiebungen für speicherbezogene Mikrooperationen (µops) und/oder Gleitkomma-Mikrooperation (µops)). Ausführungsformen hier stellen somit eine Lösung für zwei kritische Probleme bereit, indem (i) Skalierbarkeit der Portbindung mit zunehmender Zuordnungsbreite (z. B. der Anzahl von Zuordnungsspuren), bereitgestellt wird, wodurch z. B. eine solche Portbindung in Hardware implementierbar und skalierbar wird, und (ii) Ausgleichen von Arbeit mit der wachsenden Anzahl von Ausführungsports (z. B. asymmetrische Ports, statische (z. B. gebunden an einen einzigen Ausführungsport), partielle dynamische (z. B. eine echte Teilmenge von Ausführungsports) und voll dynamische (z. B. alle Ausführungsports)), was zu einer Leistungsverbesserung führt.
  • 1 veranschaulicht einen Prozessorkern 100 mit einer Zuordnungsschaltung 138, die eine Portbindungsschaltung 142 und mehrere Ausführungsschaltungen 140 umfasst, gemäß Ausführungsformen der Offenbarung. Die mehreren Ausführungsschaltungen 140 können mehrere unterschiedliche Typen von Ausführungsschaltungen beinhalten, zum Beispiel einen ganzzahligen Typ von Ausführungsschaltung(en) (z. B. wie unter Bezugnahme auf 2 besprochen), einen Speichertyp von Ausführungsschaltung(en) (z. B. wie unter Bezugnahme auf 3 besprochen), einen Gleitkommatyp von Ausführungsschaltung(en) (z. B. wie unter Bezugnahme auf 4 besprochen), einen Einzelbefehls-Mehrfachdaten- bzw. SIMD-Typ (z. B. Vektor) von Ausführungsschaltung(en) (z. B. wie unter Bezugnahme auf 4 besprochen) oder eine beliebige Kombination davon. Die Ausführungsschaltungen 140 können (i) einen Satz von einem oder mehreren ganzzahligen Typen von Ausführungsschaltungen 150A, 150B, 150C und 150D mit entsprechenden ganzzahligen Ports 144 (jeweils als Ports P0, P1, P2 und P3 bezeichnet) (obwohl als vier Ports und vier entsprechende Ausführungsschaltungen dieses Typs aufweisend gezeigt, können beliebige einzelne oder mehrere in bestimmten Ausführungsformen genutzt werden), (ii) einen Satz von einem oder mehreren Speichertypen von Ausführungsschaltungen 152A, 152B und 152C, die entsprechende Speicherports 146 (als Ports P4, P5 und P6 bezeichnet) (obwohl als drei Ports und drei entsprechende Ausführungsschaltungen dieses Typs aufweisend gezeigt, können beliebige einzelne oder mehrere in bestimmten Ausführungsformen genutzt werden), und/oder (iii) einen Satz von einem oder mehreren Gleitkomma-Typen und/oder SIMD-Typen von Ausführungsschaltungen 154A, 154B, und 154C mit entsprechenden Gleitkomma-/SIMD-Ports 148 (jeweils als Ports P7, P8 und P9 bezeichnet) (obwohl als drei Ports und drei entsprechende Ausführungsschaltungen dieses Typs aufweisend gezeigt, können beliebige einzelne oder mehrere in bestimmten Ausführungsformen genutzt werden) umfassen.
  • Auszuführende Operationen (z. B. Mikrooperationen von Decodierschaltungen 120A-122A und/oder Decodierschaltungen 120B-122B) können von Zuordnungsspuren 136 (die zum Beispiel beliebige mehrere, z. B. mehr als die Anzahl von Ports, gleich der Anzahl von Ports und/oder weniger als die Anzahl von Ports sein können) über Ports 144, 146 und/oder 148 zu Ausführungsschaltungen 140 gesendet werden. In bestimmten Ausführungsformen wird die Anzahl von Zuordnungsspuren als die Zuordnungsbreite, z. B. die Anzahl von Mikrooperationen, die zugewiesen werden können (z. B. von der Befehlsdecodierwarteschlange 124A und/oder der Befehlsdecodierwarteschlange 124B), bezeichnet.
  • Bei bestimmten Ausführungsformen ist die Zuordnungsschaltung 138 enthalten, um die Ausführungsschaltungen 140 für die eingehenden Mikrooperationen auf Zuordnungsspuren 136 zuzuordnen (z. B. Mikrooperationen, die auf den Zuordnungsspuren 136 in einem gleichen (z. B. einzelnen) Zyklus eintreffen). In bestimmten Ausführungsformen ist eine Portbindungsschaltung 142 enthalten, um eine Zuordnungsspur an einen oder mehrere der Ports der Ausführungsschaltungen 140 zu binden. Die Portbindungsschaltung 142 kann ein (z. B. einzelnes) Zuordnungsschema (z. B. für Portbindung) nutzen, das Portbelegungsinformationen, zirkuläre Reihenfolgenzuordnung und Schieben nutzt. Eine beispielhafte Portbindungsschaltung 142 wird unter Bezugnahme auf 5 weiter besprochen.
  • Der Prozessorkern 100 kann einer von mehreren Kernen eines Prozessors z. B. eines Systems sein. Der Prozessorkern 100 kann einen Verzweigungsprädiktor 102 beinhalten, um z. B. um eine oder mehrere Verzweigungen des Codes (z. B. Befehle) vorherzusagen, die durch den Prozessorkern 100 auszuführen sind. Bei bestimmten Ausführungsformen lernt der Verzweigungsprädiktor 102 (z. B. Verzweigungsprädiktorschaltung) aus vergangenem Verhalten von Verzweigungen, um eine nächste (z. B. eingehende) Verzweigung vorherzusagen. In bestimmten Ausführungsformen sagt der Verzweigungsprädiktor 102 eine richtige Teilmenge von (z. B. in der ursprünglichen Programmreihenfolge zusammenhängenden) Befehlen als einen Codeblock (der z. B. in einem Verzweigungsbefehl endet) voraus. Als ein Beispiel kann der Prozessorkern 100 auszuführenden Code empfangen und als Reaktion darauf den Code in Blöcke unterteilen.
  • In bestimmten Ausführungsformen kann der Prozessorkern 100 (z. B. über die Abrufschaltung 104 und/oder den Verzweigungsprädiktor 102) die Blöcke von Befehlen an einen Decodiercluster senden, zum Beispiel mit einem ersten Block von Befehlen, der an den Decodiercluster 0 108A gesendet wird, einem (in Programmreihenfolge nächsten, z. B. jüngeren) zweiten Block von Befehlen, der an den Decodiercluster N 108B gesendet wird usw. In einem Zwei-Cluster-Beispiel kann ein dritter (in Programmreihenfolge nächster, z. B. jüngerer) Befehlsblock an den nächsten verfügbaren Decodiercluster gesendet werden (z. B. nachdem er das Decodieren seines aktuellen Befehlsblocks beendet hat). In einem Zwei-Cluster-Beispiel kann ein dritter (in Programmreihenfolge nächster, z. B. jüngerer) Befehlsblock an den nächsten Decodiercluster (z. B. in diesem Beispiel an den Decodiercluster 108A) gesendet werden. Obwohl zwei Decodiercluster 108A-108B gezeigt sind, versteht es sich, dass drei oder mehr Cluster genutzt werden können (wobei z. B. „N“ eine positive ganze Zahl größer als eins ist).
  • In bestimmten Ausführungsformen weist jeder Decodiercluster zwei oder mehr (z. B. superskalare x86-)Befehlsdecodierer auf, die in der Lage sind, verschiedene Basisblöcke von Code reihenfolgeverändert in Bezug aufeinander zu decodieren, wobei zum Beispiel der Decodiercluster 108A eine erste Decodierschaltung 120A (z. B. Decodierer) und eine zweite Decodierschaltung 122A (z. B. Decodierer) beinhaltet und der Decodiercluster 108B eine zweite Decodierschaltung 120B (z. B. Decodierer) und eine zweite Decodierschaltung 122B (z. B. Decodierer) beinhaltet.
  • In bestimmten Ausführungsformen teilt der Verzweigungsprädiktor 102 des Prozessorkerns 100 Code in einzelne Blöcke (z. B. eines Satzes zusammenhängender Befehle aus dem Programm). In bestimmten Ausführungsformen teilt die Abrufschaltung 104 des Prozessorkerns 100 Code in einzelne Blöcke (z. B. eines Satzes zusammenhängender Befehle aus dem Programm). Die einzelnen Codeblöcke können dann an ihren jeweiligen Decodiercluster zum Decodieren gesendet werden, zum Beispiel mit den zu decodierenden Befehlen für jeden Codeblock, die in einer jeweiligen Befehlsdatenwarteschlange (z. B. Befehlsdatenwarteschlange 110A als eine Eingangswarteschlange für Decodiercluster 108A und Befehlsdatenwarteschlange 110B als eine Eingangswarteschlange für Decodiercluster 108B) gespeichert sind.
  • Optional weist der Prozessorkern 100, z. B., einen (z. B. Ebene eins) Befehlscache 106 auf, um einen oder mehrere Befehle zwischenzuspeichern, ohne sie aus dem Speicher laden zu müssen. In bestimmten Ausführungsformen sendet die Abrufschaltung 104 Codeblöcke über den Befehlscache 106 zu ihrem jeweiligen Decodiercluster. Der Befehlscache 106 kann ein Befehlscache-Kennzeichen und/oder einen Befehlsübersetzungspuffer (TLB) beinhalten. In bestimmten Ausführungsformen beginnt, sobald die Codeblöcke an ihren entsprechenden Decodiercluster 108A-108B gesendet werden, jeder Decodiercluster das parallele Decodieren der Codeblöcke (z. B. über die parallelen Decodierschaltungen darin). In bestimmten Ausführungsformen arbeiten Decodiercluster unabhängig voneinander, so dass die Codeblöcke reihenfolgeverändert (z. B. außerhalb der Programmreihenfolge) decodiert werden können.
  • In bestimmten Ausführungsformen ist die Zuordnungsschaltung 138 für die Zuordnung der Operationen (z. B. Mikrooperationen) zu den Ausführungsschaltungen 140 (z. B. Ausführungseinheiten), z. B. in der richtigen Programmreihenfolge, verantwortlich.
  • Der Prozessorkern stellt einen ersten Decodiercluster 108A mit mehreren Decodierschaltungen 120A-122A in einem ersten Satz 112A und einen zweiten Decodiercluster 108B mit mehreren Decodierschaltungen 120B-122B in einem zweiten Satz 112B dar. In bestimmten Ausführungsformen soll eine (z. B. jede) Decodierschaltung (120A, 122A, 120B, 122B) einen (z. B. Makro-)Befehl in einen Satz von einer oder mehreren Mikrooperationen decodieren, die (z. B. als ein Primitiv) durch (eine) Ausführungsschaltung(en) 140 auszuführen sind. In bestimmten Ausführungsformen soll eine Decodierschaltung (120A, 122A, 120B, 122B) bestimmte (z. B. Makro-)Befehle in einen entsprechenden Satz von einer oder mehreren Mikrooperationen decodieren, ohne einen Mikrocodesequenzer 128 (z. B. einen Mikrocodesequenzer, der von einem Decodiercluster und/oder einer Decodierschaltung getrennt ist) zu verwenden und/oder andere (z. B. Makro-)Befehle (z. B. komplexe Befehlssatz-Computer- bzw. CISC-Befehle) in einen entsprechenden Satz von einer oder mehreren Mikrooperationen durch Nutzen des Mikrocodesequenzers 128 (z. B. der Mikrocodesequenzer getrennt von einem beliebigen Decodiercluster und/oder Decodierschaltung) decodieren. In einer Ausführungsform soll eine Decodierschaltung (120A, 122A, 120B, 122B) eine bestimmte Anzahl von Mikrooperationen pro Zyklus (z. B. eine Mikrooperation pro Zyklus und/oder zwischen einer und vier Mikrooperationen pro Zyklus) ausgeben. In bestimmten Ausführungsformen bezieht sich ein „mikrocodierter“ Befehl allgemein auf einen Befehl, bei dem ein Decodiercluster (z. B. Satz von Decodierern) den Mikrocodesequenzer 128 auffordert, den entsprechenden Satz von einem oder mehreren (z. B. mehrere) Mikrooperationen (µops) aus dem Mikrocodesequenzierspeicher 130 (z. B. Nur-Lese-Speicher (ROM)) in die Decodierpipeline (z. B. in die entsprechende Befehlsdecodierwarteschlange) zu laden, anstatt z. B. diesen Befehlssatz aus einer oder mehreren Mikrooperationen direkt durch eine Decodierschaltung zu erzeugen. Um zum Beispiel einige (z. B. komplexe) (z. B. x86-)Befehle zu implementieren, wird ein Mikrocodesequenzer 128 verwendet, um den Befehl in eine Sequenz kleinerer (z. B. Mikro-)Operationen (auch als Mikroops oder µops bezeichnet) zu unterteilen.
  • In bestimmten Ausführungsformen, z. B. aufgrund der Natur von x86 und/oder der Notwendigkeit, einen Sequenzer aus vielen Mikrooperationen aufzubauen, wird ein Mikrocodesequenzer für viele Zwecke genutzt und führt zu einer Struktur, die zahlreiche (z. B. Zehntausende) Mikrooperationen enthält. Da diese Sequenzen von Mikrooperationen signifikante Speichermengen (z. B. mehr als 100 Kilobyte (KB)) erfordern, ist der Mikrocodesequenzer 128 in bestimmten Ausführungsformen z. B. physisch als ein einzelnes (z. B. Lese-)Port-Speicherarray 130 (z. B. ROM) aufgebaut, wobei die Decodiercluster diesen einzelnen Leseport des Mikrocodesequenzers teilen. In bestimmten Ausführungsformen ist das gemeinsame Nutzen des Mikrocodesequenzierers 128, anstatt ihn zu duplizieren, eine signifikante Die-Flächenersparnis, da z. B. die Fläche des Mikrocodesequenzierers 128 größer als die Fläche eines der Decodiercluster ist.
  • Da manche (z. B. x86-)Befehle auf zahlreiche (z. B. lOern, 100ern usw.) entsprechende Mikrooperationen abbilden können (zum Beispiel, und manche dieser Sequenzen ein Verhalten erfordern, das die Befehle architektonisch serialisieren lässt, wobei sie z. B. erzwingen, dass alles ältere abgeschlossen wird und dass alles jüngere von Beginn an blockiert wird), muss, sobald ein Decodiercluster die Steuerung in den Mikrocodesequenzer 128 transferiert, dieser Decodiercluster warten, bis die Mikrooperationssequenz für diesen Befehl abgeschlossen ist (und z. B. der Mikrocodesequenzer die Steuerung an den Decodiercluster wieder freigibt). In bestimmten Ausführungsformen arbitriert der Mikrocodesequenzer 128 Zugriff auf einen einzelnen Decodiercluster zu einem Zeitpunkt.
  • In bestimmten Ausführungsformen beinhaltet jeder Decodiercluster (z. B. in manchen Ausführungsformen jede Decodierschaltung) eine Datenstruktur zum Speichern eines entsprechenden Eintrittspunktwerts (z. B. Adresse) für einen oder mehrere Befehle in den Speicher 130 des Mikrocodesequenzers 128 und/oder eine Anzahl von Bits (z. B. die Anzahl von Zyklen zum Erzeugen der entsprechenden Mikrooperationen für einen Befehl und/oder die Anzahl von Mikrooperationen für den Befehl). Zum Beispiel (1) mit einer Datenstruktur 114A des Decodierclusters 108A, umfassend einen oder mehrere Einträge, die jeweils (z. B. für einen einzelnen Befehl) einen Eintrittspunkt 116A für einen Befehl angeben, und/oder (2) mit einer Datenstruktur 114B des Decodierclusters 108B, umfassend einen oder mehrere Einträge, die jeweils (z. B. für einen einzelnen Befehl) einen Eintrittspunkt 116B für einen Befehl angeben. In bestimmten Ausführungsformen sind die Datenstruktur 114A und die Datenstruktur 114B Kopien voneinander, z. B. beinhalten sie die gleichen Daten. In einer Ausführungsform werden die Datenstruktur 114A und die Datenstruktur 114B zur Herstellungszeit mit ihren Daten geladen. In einer Ausführungsform werden die Datenstruktur 114A und die Datenstruktur 114B beim Hochfahren des Prozessors mit ihren Daten geladen, z. B. durch Ausführen einer grundlegenden Eingabe/Ausgabe-System- bzw. BIOS-Firmware oder einer vereinheitlichten erweiterbaren Firmwareschnittstellen- bzw. UEFI-Firmware.
  • Nach dem Decodieren eines Befehls in seine jeweiligen Mikrooperationen (z. B. durch Decodierschaltungen oder Mikrocodesequenzer) werden sie in bestimmten Ausführungsformen in einer Befehlsdecodierwarteschlange gespeichert. In 1 (z. B. am Ende der Decodierstufe) beinhaltet der Decodiercluster 108A eine Befehlsdecodierwarteschlange 124A (z. B. Befehlswarteschlange), die jeweilige Mikrooperationen von den Decodierschaltungen 120A-122A und von dem Mikrocodesequenzer 128 (z. B. wenn der Decodiercluster 108A arbitriert ist, Zugriff auf den Speicher 130) empfängt, und der Decodiercluster 108B beinhaltet eine Befehlsdecodierwarteschlange 124B (z. B. Befehlswarteschlange), die jeweilige Mikrooperationen von den Decodierschaltungen 120B-122B und von dem Mikrocodesequenzer 128 (z. B. wenn der Decodiercluster 108B arbitriert ist, Zugriff auf den Speicher 130) empfängt. Optional ist eine Weiche 134 enthalten, um einen oder mehrere Ausgänge der Befehlsdecodierwarteschlangen 124A-124B mit Zuordnungsspuren 136 (z. B. Eingang/Eingänge) der Zuordnungsschaltung 138 zu koppeln. In bestimmten Ausführungsformen soll die Zuordnungsschaltung 138 Mikrooperationen von den Befehlsdecodierwarteschlangen 124A-124B (z. B. in Programmreihenfolge) an eine Ausführungsschaltung der Ausführungsschaltungen 140 senden. In einer Ausführungsform werden eine oder mehrere Befehlsdecodierwarteschlangen außerhalb der Programmreihenfolge geladen, aber in der Programmreihenfolge gelesen. Bestimmte Ausführungsschaltungen 140 (z. B. Speicherausführungsschaltungen 152A-152B) können auf Speicher, z. B. Register 156 und/oder Datencache 158 (z. B. eine oder mehrere Ebenen einer Cache-Hierarchie), zugreifen. Sobald die Resultierenden durch die Ausführungsschaltungen 140 erzeugt werden, kann eine Rückzugsschaltung 138 dann einen entsprechenden Befehl zurückziehen.
  • 2 veranschaulicht eine beispielhafte Ganzzahlausführungsschaltung 150 (z. B. als eine Instanz von Ausführungsschaltungen 150A, 150B, 150C und/oder 150D in 1) gemäß Ausführungsformen der Offenbarung. Die Ganzzahlausführungsschaltung 150 beinhaltet einen (z. B. einzelnen) Port 202 zum Empfangen einer (oder mehrerer) Mikrooperationen, die durch die Ausführungsschaltungsanordnung (z. B. arithmetische Logikeinheit (ALU) 208, Ganzzahlmultiplizierer 210, Ganzzahlteiler 212, Schieber 214 und/oder Verzweigung 216), z. B. und eine Kopplung mit Ganzzahlregister(n) 156A auszuführen sind. Bei bestimmten Ausführungsformen beinhaltet die Ganzzahlausführungsschaltung 150 eine Eingangswarteschlange 204 zum Speichern einer oder mehrerer Mikrooperationen, die auf die Ausführung warten, und z. B. einen Belegungszähler 206 zum Angeben einer Belegung (oder Leerstelle) innerhalb der Eingangswarteschlange 204.
  • 3 veranschaulicht eine beispielhafte Speicherausführungsschaltung 152 (z. B. als eine Instanz von Ausführungsschaltungen 152A, 152B und/oder 152C in 1) gemäß Ausführungsformen der Offenbarung. Die Speicherausführungsschaltung 152 umfasst einen (z. B. einzelnen) Port 302 zum Empfangen einer (oder mehrerer) Mikrooperationen, die z. B. durch die Ausführungsschaltungsanordnung (z. B. Adresserzeugungsschaltung 308) auszuführen sind, und eine Kopplung mit dem bzw. den Register(n) 156 und/oder dem Datencache 158. Bei bestimmten Ausführungsformen beinhaltet die Speicherausführungsschaltung 152 z. B. eine Eingangswarteschlange 304 zum Speichern einer oder mehrerer Mikrooperationen, die auf die Ausführung warten, und einen Belegungszähler 306 zum Angeben einer Belegung (oder Leerstelle) innerhalb der Eingangswarteschlange 304.
  • 4 veranschaulicht eine beispielhafte Gleitkomma-/SIMD-Ausführungsschaltung 154 (z. B. als eine Instanz der Ausführungsschaltungen 154A, 154B und/oder 154C in 1) gemäß Ausführungsformen der Offenbarung. Die Gleitkomma-/SIMD-Ausführungsschaltung 154 umfasst z. B. einen (z. B. einzelnen) Port 402 zum Empfangen einer (oder mehrerer) Mikrooperationen, die durch die Ausführungsschaltungsanordnung (z. B. arithmetische Logikeinheit (ALU) 408, Gleitkomma- und/oder SIMD-Multiplizierer 410, Gleitkomma- und/oder SIMD-Teiler 412, Gleitkomma- und/oder SIMD-Addierer 414, Shuffler 416 und/oder Verschlüsselung (z. B. Engine) 418) auszuführen sind, und eine Kopplung mit dem bzw. den Vektorregister(n) 156B. In bestimmten Ausführungsformen umfasst die Gleitkomma-/SIMD-Ausführungsschaltung 154 z. B. eine Eingangswarteschlange 404 zum Speichern einer oder mehrerer Mikrooperationen, die darauf warten, ausgeführt zu werden, und einen Belegungszähler 406 zum Angeben einer Belegung (oder Leerstelle) innerhalb der Eingangswarteschlange 404.
  • In bestimmten Ausführungsformen ist ein Gleitkommaformat ein sechzehn Bit breites binäres Gleitkommaformat mit halber Genauigkeit nach IEEE (Institute of Electrical and Electronics Engineers) (z. B. IEEE-Standard 754) (IEEE float16) mit einem Vorzeichenfeld (ein Bit breit), einem Exponentenfeld (fünf Bit breit) und einem Mantissenfeld (Signifikandengenauigkeit) (elf Bits implizit gespeichert, d. h. zehn Bits breit explizit gespeichert). In bestimmten Ausführungsformen ist ein Gleitkommaformat ein sechzehn Bit breites Brain-Gleitkommaformat (bfloat16) mit einem Vorzeichenfeld (ein Bit breit), einem Exponentenfeld (acht Bit breit) und einem Mantissenfeld (Mantissengenauigkeit) (acht Bit implizit gespeichert, d. h. sieben Bit breit explizit gespeichert). In bestimmten Ausführungsformen wird angenommen, dass das Mantissenfeld (Signifikandengenauigkeit) ein implizites führendes Bit mit einem Wert von eins aufweist, es sei denn, das Exponentenfeld wird nur mit Nullen gespeichert. In bestimmten Ausführungsformen ist ein Gleitkommaformat ein zweiunddreißig Bit breites Gleitkommaformat, z. B. binary32 (gemäß einem IEEE-Standard), das manchmal als „einfache Genauigkeit“ oder „fp32“ bezeichnet wird, z. B. mit einem Vorzeichenfeld (ein Bit breit), einem Exponentenfeld (acht Bit breit) und einem Mantissenfeld (Signifikandengenauigkeit) (vierundzwanzig Bit implizit gespeichert, d. h. dreiundzwanzig Bit explizit gespeichert).
  • 5 veranschaulicht eine Portbindungsschaltung 142 gemäß Ausführungsformen der Offenbarung. In bestimmten Ausführungsformen beinhaltet die Portbindungsschaltung 142 eine Logikschaltungsanordnung zum Sortieren 504, Optimieren 506, Vorbinden 508 und Schieben 512, um eine endgültige Portbindung zu erzeugen.
  • In bestimmten Ausführungsformen dient die Portbindungsschaltung 142 dazu, Mikrooperationen (µops) unter dem gleichen Typ von Ausführungsports auszugleichen. In einer Ausführungsform beeinflusst die Portbindungsschaltung 142 die Bindung hin zu weniger belegten Ports im Vergleich zu mehr belegten Ports, zum Beispiel durch Verwenden von Portbelegungsinformationen (z. B. von einem oder mehreren Belegungszählern von Ausführungsschaltungen), Sortieren 504 basierend auf der Belegung (z. B. einschließlich bedingtes Ausblenden eines oder mehrerer Ports oder Binden aller Zuordnungsspuren an einen Port) (z. B. einschließlich SIMD-Unterstützung (z. B. Vektor) mit nicht-voller Breite, die parallel ausgeführt werden kann, Vorbinden 508 (z. B. gemäß einer zirkulären Reihenfolge (z. B. Rundlauf)) zur Vorabzuordnung einer Zuordnungsspur zu einem Port unter Verwendung sortierter Reihenfolge und Schieben 512 (z. B. Schieben der Vorbindungsreihenfolge für den anderen Operationstyp (z. B. Mikrooperation)).
  • In bestimmten Ausführungsformen umfasst die Portbindungsschaltung z. B. eine Portbelegung 502, die die Portbelegung (z. B. die Werte von einem entsprechenden Belegungszähler jeder Ausführungsschaltung) angibt. In bestimmten Ausführungsformen gibt es ein Ungleichgewicht in der Belegung von Mikrooperationen (µops) über einen gleichen Typ von Ausführungsports (z. B. Ausführungsschaltungen). In bestimmten Ausführungsformen sind die Gründe für das Ungleichgewicht Abhängigkeitskettenauflösung (z. B. dynamisches Ausführungsverhalten) und asymmetrische Ausführungsschaltungen (z. B. können mehrere ALUs für einen bestimmten entsprechenden Port bzw. bestimmte entsprechende Ports im Vergleich zu MUL-Schaltungen in einem oder mehreren anderen entsprechenden Ports vorhanden sein).
    Um dieses Ungleichgewicht aufzulösen, nutzen bestimmte Ausführungsformen die Portbindungsschaltung 142 aus.
  • In bestimmten Ausführungsformen beinhaltet die Portbindungsschaltung 142 eine Schaltungsanordnung zum Sortieren 504 (z. B. nach Portbelegung). In einer Ausführungsform führt jeder Ausführungsport (z. B. die Ports P0-P9 in 1) seinen eigenen Belegungszähler (z. B. wie in den 2, 3 und 4 gezeigt), der angibt, wie viele Mikrooperationen (µops) an diesen Port (z. B. gespeichert mit einer jeweiligen Eingangswarteschlange des Ports) gebunden sind. In einer Ausführungsform kann ein Belegungszählerwert, der zum Sortieren verwendet wurde, veraltet sein, sodass z. B. die Implementierung zeitgerecht und skalierbar ist. In bestimmten Ausführungsformen verwendet die Schaltungsanordnung zum Sortieren 504 Informationen über die Portbelegung 502, um eine sortierte (z. B. vorsortierte) Belegungsliste z. B. mit einer Beeinflussung zuerst zu den weniger belegten Ports zu erzeugen.
  • Bestimmte Beispiele werden hier besprochen, und es versteht sich, dass die darin verwendeten Zahlen Beispiele und nicht einschränkend sein können.
  • In einem Beispiel unter Bezugnahme auf 1 gibt es 4 ganzzahlige Ports 144 (PO, P1, P2, P3), und ihre Belegungen sind 6, 5, 4, 8 (z. B. gebundene Mikrooperationen), so dass die sortierte Belegungsliste (z. B. in der Reihenfolge zunehmender Belegung) P2, P1, P0, P3 (z. B. Ports eines einzelnen Typs) ist.
  • Als eine Option blendet die Portbindungsschaltung 142 (z. B. Schaltungsanordnung zum Optimieren 506) einen oder mehrere Ports bedingt aus, sodass z. B. dieser bzw. diese Port(s) nicht an eine Zuordnungsspur (z. B. für diesen Zuordnungszyklus) gebunden ist (sind). Wenn zum Beispiel ein Belegungsungleichgewicht zwischen Ausführungsports auftritt, werden bestimmte Port(s) mehr belegt (z. B. deutlich mehr) als andere Ports. In solchen Fällen kann jede weitere Bindung an diesen Port das Ungleichgewichtsproblem verschlechtern, sodass die Schaltungsanordnung zum Optimieren 506 diesen Port ausblenden kann (ihn z. B. aus der sortierten Liste ausschließen).
  • In einem Beispiel unter Bezugnahme auf 1 gibt es 4 ganzzahlige Ports 144 (P0, P1, P2, P3), und ihre Belegungen sind 6, 5, 15, 7 (z. B. gebundene Mikrooperationen), sodass die sortierte Belegungsliste (z. B. in der Reihenfolge zunehmender Belegung) P1, P0, P3, P2 (z. B. Ports eines einzelnen Typs) ist. Da die Belegung („15“) von P2 jedoch höher (z. B. deutlich höher) als bei anderen Ports ist, wird P2 ausgeblendet, so dass die optimierte, sortierte Belegungsliste (z. B. in der Reihenfolge zunehmender Belegung) P1, P0, P3 ist. Es wird angemerkt, dass das Ausblenden von der Implementierung eines bestimmten Kerns abhängen kann. In bestimmten Ausführungsformen wird jeder Port mit einer Belegung über einer Schwelle 506A (z. B. Schwellenbelegung) ausgeblendet, z. B. falls die Schwelle in dem obigen Beispiel 8 war, wird Port P2 ausgeblendet. In bestimmten Ausführungsformen wird ein einzelner Port mit einer maximalen Belegung mehrerer Ports ausgeblendet, z. B. Port P2 wird ausgeblendet, da er die maximale Belegung dieser Ports (z. B. Ports eines einzelnen Typs) aufweist.
  • Als eine andere Option maskiert die Portbindungsschaltung 142 (z. B. Schaltungsanordnung zum Optimieren 506) alle außer einem Port, sodass z. B. dieser bzw. diese anderen Port(s) nicht an eine Zuordnungsspur (z. B. für diesen Zuordnungszyklus) gebunden ist (sind). Wenn zum Beispiel die Belegung eines Ports deutlich niedriger als bei anderen Ports ist. In solchen Fällen soll die Schaltungsanordnung zum Optimieren 506 alle eingehenden Mikrooperationen (z. B. auf entsprechenden Zuordnungsspuren) an einen einzelnen Port mehrerer Ports (z. B. Ports eines einzelnen Typs) binden. In einem Beispiel unter Bezugnahme auf 1 gibt es 4 ganzzahlige Ports 144 (P0, P1, P2, P3), und ihre Belegungen sind 13, 14, 3, 14 (z. B. gebundene Mikrooperationen), sodass die sortierte Belegungsliste (z. B. in der Reihenfolge zunehmender Belegung) P2, P0, P1, P3 (z. B. Ports eines einzelnen Typs) ist. Da die Belegung („3“) von P2 jedoch niedriger (z. B. viel niedriger) als bei anderen Ports ist, werden P1, P2 und P3 ausgeblendet, und alle Mikrooperationen (z. B. auf entsprechenden Zuordnungsspuren) sind an P2 gebunden.
  • Als noch eine andere Option ermöglicht die Portbindungsschaltung 142 (z. B. Schaltungsanordnung zum Optimieren 506), SIMD-Befehle (z. B. Vektor) (z. B. mit nicht-voller Breite) (z. B. mehrere entsprechende Mikrooperationen) parallel auszuführen. Zum Beispiel kann ein Befehl vom SIMD-Typ in mehrere Mikrooperationen decodiert werden, die parallel an mehreren Ausführungsports ausgeführt werden können. Um eine maximale Leistungsfähigkeit durch Ausnutzung der Parallelität zu erreichen, bindet bei bestimmten Ausführungsformen die Portbindungsschaltung 142 (z. B. eine Schaltungsanordnung zum Optimieren 506) jede Mikrooperation (z. B. als eine Unteroperation des Befehls) an unterschiedliche Ausführungsports. In bestimmten Ausführungsformen werden SIMD-Ausführungsports separat von der Portbindungsschaltung 142 (z. B. Schaltungsanordnung zum Optimieren 506) verwaltet, nach Belegung sortiert und zum Vorbinden verwendet. In bestimmten Ausführungsformen wird die obige Optimierung „alle an einen Port“ z. B. nicht für SIMD-Befehle angewendet, um zu verhindern, dass mehrere Mikrooperationen eines SIMD-Befehls (z. B. Unteroperationen dieses Befehls) an einen gleichen Port gebunden werden. In einem Beispiel unter Bezugnahme auf 1 gibt es 3 SIMD-Ports 148 (P7, P8, P9), die nach Belegung P8, P7, P9 geordnet sind, und ein einzelner SIMD-Typ von Befehl ist 2 Mikrooperationen (z. B. 2 Unteroperationen), sodass die erste der zwei Mikrooperationen (z. B. Unteroperationen) an P8 gebunden ist, und die zweite der zwei Mikrooperationen (z. B. Unteroperationen) an den nächsten (z. B. den nächsten am wenigsten belegten) Port gebunden ist, der P7 ist. Durch Binden von zwei Mikrooperationen (z. B. Unteroperationen) eines einzelnen Befehls an unterschiedliche Ports erreichen beide Mikrooperationen (z. B. Unteroperationen) eine parallele Ausführungsmöglichkeit.
  • In bestimmten Ausführungsformen wird, nachdem die sortierte(n) Belegungsliste(n) (z. B. für jede Art von Port) erzeugt wurde(n), eine Schaltungsanordnung zum Vorbinden 508 ausgeführt, um Zuordnungsspuren (z. B. Zuordnungsspuren 136 in 1, die als vier gezeigt sind, jedoch sind beliebige oder mehrere möglich) basierend auf den Zuordnungsspurinformationen 510 (z. B. Informationen, die Anzahl von Zuordnungsspuren angeben) vorab an bestimmte Ports zu binden, z. B. jede Zuordnungsspur statisch vorab zu binden, wie in 6 gezeigt ist. Falls die Zuordnungsbreite größer als die Anzahl von Ausführungsports in der sortierten Reihenfolge ist, dann beginnt die sortierte Reihenfolge von Anfang an erneut (z. B. als ein anderer Rundlauf), um das Vorbinden für alle Zuordnungsspuren zu beenden.
  • 6 veranschaulicht eine Vorbindungszuordnung 600 von Ports 604 zu Zuordnungsspuren 602 gemäß Ausführungsformen der Offenbarung. Falls zum Beispiel die Zuordnungsbreite 6 ist und die sortierte Reihenfolge (z. B. sortierte Belegungsliste) P2, P0, P1, P3 ist, ist die Vorbindungszuordnung von Spur 0 an P2, Spur 1 an P0, Spur 2 an P2, Spur 3 an P3 und, in zirkulärer Reihenfolge, beginnend mit Spur 4 an P2, Spur 5 an P0 usw. Eine solche Vorbindung kann für jeden Typ von Ports (z. B. hier für ganzzahlige Ports P0 bis P3 in 1 gezeigt) oder einmal für alle Typen von Ports (z. B. Ports P0 bis P9 in 1) durchgeführt werden.
  • In bestimmten Ausführungsformen berücksichtigt die Vorbindung nicht den Operationstyp (z. B. für die auf einer Zuordnungsspur eintreffende Operation), doch können die Operationstypen zum Beispiel unterschiedliche Typen sein (und es ist z. B. nicht erforderlich, alle vom gleichen Typ zu sein).
  • In bestimmten Ausführungsformen beinhaltet die Portbindungsschaltung 142 eine Schaltungsanordnung zum Schieben 512 (z. B. basierend auf Befehls-/Operationsinformationen 514 von Zuordnungsspuren). In einer Ausführungsform geben die Informationen 514 einen Typ (z. B. ganze Zahl, Speicher, Gleitkomma, SIMD usw.) für jede eingehende Mikrooperation (z. B. für jede Spur) an. In Ausführungsformen, bei denen die Vorbindung den Operationstyp jeder Zuordnungsspur nicht berücksichtigt, kann ein vorab gebundener Port möglicherweise nicht in der Lage sein, die Mikrooperation auszuführen, die von seiner Vorbindungszuordnungsspur eingeht. Zum Beispiel kann eine Vorbindungsabbildung eine Abbildung eines Speichertyps einer Mikrooperation von einer Zuordnungsspur auf einen Port, der nicht zu Speicheroperationen in der Lage ist (z. B. einen Port einer Ganzzahlausführungsschaltung), beinhalten. Bestimmte Ausführungsformen hierin ermöglichen das Schieben der Vorbindungsreihenfolge zur nächsten (z. B. in physischer Spurreihenfolge, aber nicht sortierten) Zuordnungsspur, z. B. wobei das Schieben fortgesetzt wird, bis es den richtige Operationstyp erfüllt (oder bis alle Ports für eine Übereinstimmung versucht werden).
  • Bei bestimmten Ausführungsformen findet ein Schieben statt, weil die Vorbindung (z. B. Abbildung) unter der Annahme ausgelegt wird, dass z. B. alle (z. B. als ein Beispiel sechs) Zuordnungsspuren einen gleichen Typ von Mikrooperation auf jeder von ihnen (z. B. eines von einer ganzen Zahl, einem Speicher, einem Gleitkomma oder SIMD) (z. B. unter der Annahme einer Zuordnung mit Breite sechs), aufweisen, und dass somit eine Kopie (z. B. jeder Typ hat seine eigene) von Vorbindung pro Zuordnungsspur vorhanden ist. Wobei zum Beispiel während der Zuordnung, wenn es eine fehlende Typübereinstimmung gibt, die Vorbindung für den nicht übereinstimmenden Typ geschoben wird, um die Vorbindungsinformationen bei bestimmten Ausführungsformen nicht zu verlieren.
  • Gemäß bestimmten Ausführungsformen gibt es eine Vorbindung (z. B. Abbildung) für jeden Typ von mehreren Typen. Falls es zum Beispiel drei verschiedene Operationstypen (z. B. Ganzzahl, Speicher und Gleitkomma) gibt, dann gibt es bei bestimmten Ausführungsformen drei Vorbindungen (eine pro Typ). Gemäß bestimmten Ausführungsformen wird das Schieben für jede Vorbindung (z. B. Abbildung) unabhängig beibehalten.
  • In bestimmten Ausführungsformen führt die Schaltungsanordnung zum Schieben 512 ein Schieben für jeden Typ von Port, z. B. für eine gleiche Liste von Spuren, durch.
  • 7 veranschaulicht Schieben 700 der Vorbindungsabbildung 706 eines ersten Satzes von (z. B. Ganzzahlausführungsschaltungs-)Ports (z. B. Ports P0 bis P3 in 1) zu Zuordnungsspuren 702 in eine endgültige (z. B. tatsächliche) gemäß Ausführungsformen der Offenbarung. In einem Beispiel sind die Ports, die gebunden werden, ganzzahlige Ports (z. B. für ganzzahlige Ausführungseinheiten) und in der sortierten Reihenfolge von P2, P0, P1, P3, prüft die Schaltungsanordnung zum Schieben 512 die Bindung der Zuordnungsspur 0 an den Port P2 von der Vorbindung 706 und bestimmt, dass die Zuordnungsspur 0 eine Mikrooperation (µop) 704 vom gleichen Typ (z. B. ganzzahliger Typ) (z. B. wie durch ein Feld der Mikrooperation angegeben) wie der Zielporttyp (z. B. hier ganzzahliger Port) von P2 aufweist und somit nicht geschoben wird (z. B. stimmt die tatsächliche Bindung 708 mit der Vorbindung 706 für diese Spur überein). In dem abgebildeten Beispiel prüft die Schaltungsanordnung zum Schieben 512 die Bindung der Zuordnungsspur 1 an P0 von der Vorbindung 706 und bestimmt, dass die Zuordnungsspur 1 eine Mikrooperation (µοp) 704 eines anderen Typs (z. B. Gleitkomma- bzw. FP-Typ) als der Zielporttyp (z. B. hier ganzzahliger Port) P0 von der Vorbindung 706 aufweist, und somit wird versucht, Spur 2 zu P0 zu schieben, was gelingt, weil die Zuordnungsspur 2 eine Mikrooperation (µοp) 704 eines gleichen Typs (z. B. ganzzahliger Typ) wie der Zielporttyp (z. B. hier ganzzahliger Port) von P0 aufweist. In dem abgebildeten Beispiel prüft die Schaltungsanordnung zum Schieben 512 die Bindung der nächsten Zuordnungsspur 3 an den nächsten Port P1 von der Vorbindung 706 und bestimmt, dass die Zuordnungsspur 3 eine Mikrooperation (µop) 704 eines anderen Typs (z. B. Speicher- bzw. MEC-Typ) als der Zielporttyp (z. B. hier ganzzahliger Port) P1 von der Vorbindung 706 aufweist, und somit wird versucht, Spur 4 zu P1 schieben, was gelingt, weil die Zuordnungsspur 4 eine Mikrooperation (µοp) eines gleichen Typs (z. B. ganzzahliger Typ) wie der Zielporttyp (z. B. hier ganzzahliger Port) von P1 aufweist. In dem abgebildeten Beispiel prüft die Schaltungsanordnung zum Schieben 512 die Bindung der nächsten Zuordnungsspur 5 an den nächsten Port P3 von der Vorbindung 706 und bestimmt, dass die Zuordnungsspur 5 eine Mikrooperation (µop) eines gleichen Typs aufweist (z. B. ganzzahliger Typ) wie der Zielporttyp (z. B. hier ganzzahliger Port) von P3, und somit nicht weiter geschoben wird (z. B. stimmt die tatsächliche Bindung 708 nicht mit der Vorbindung 706 für diese Spur überein, da das Schieben für vorherige Spuren durchgeführt wurde). Zum Beispiel ist das Schieben 700 abgeschlossen, da alle Spuren analysiert wurden.
  • 8 veranschaulicht Schieben 800 der Vorbindungsabbildung 806 eines zweiten Satzes von (z. B. Speicherausführungsschaltungs-)Ports (z. B. Ports P4-P6) zu Zuordnungsspuren 802 in eine endgültige (z. B. tatsächliche) gemäß Ausführungsformen der Offenbarung. In einem Beispiel sind die Ports, die gebunden werden, Speicherports (z. B. für Speicherausführungseinheiten) und in der sortierten Reihenfolge von P6, P4, P5, prüft die Schaltungsanordnung zum Schieben 512 die Bindung der Zuordnungsspur 0 an den Port P6 von der Vorbindung 806 und bestimmt, dass die Zuordnungsspur 0 eine Mikrooperation (µop) 804 eines anderen Typs (z. B. Ganzzahltyp) (z. B. wie durch ein Feld der Mikrooperation angegeben) als der Zielporttyp (z. B. hier Speicherport) P6 von der Vorbindung 806 aufweist, und es wird versucht, Spur 1 zu P6 zu schieben, und dies scheitert daran, dass die Zuordnungsspur 1 eine Mikrooperation (µop) 804 eines anderen Typs (z. B. Gleitkomma- bzw. FP-Typ) als der Zielporttyp (z. B. hier Speicherport) von P6 aufweist und es wird versucht, Zuordnungsspur 2 zu P6 zu schieben, und dies scheitert daran, dass die Zuordnungsspur 2 eine Mikrooperation (µop) 804 eines anderen Typs (z. B. ganzzahliger Typ) als der Zielporttyp (z. B. hier Speicherport) von P6 aufweist, und dementsprechend wird versucht, Spur 3 zu P6 zu schieben, und dies gelingt, weil die Zuordnungsspur 3 eine Mikrooperation (µop) eines gleichen Typs (z. B. Speichertyp) wie der Zielporttyp (z. B. hier Speicherport) von P6 aufweist. In dem abgebildeten Beispiel prüft die Schaltungsanordnung zum Schieben 512 die Bindung der nächsten Zuordnungsspur 4 an den nächsten Port P4 von der Vorbindung 806 und bestimmt, dass die Zuordnungsspur 4 eine Mikrooperation (µοp) eines anderen Typs (z. B. ganzzahliger Typ) als der Zielporttyp (z. B. hier Speicherport) P4 von der Vorbindung 806 aufweist, und es wird versucht, Spur 5 zu P4 zu schieben, und dies scheitert daran, dass Zuordnungsspur 5 eine Mikrooperation (µοp) 804 eines anderen Typs (z. B. ganzzahliger Typ) als der Zielporttyp (z. B. hier Speicherport) von P4 aufweist. Zum Beispiel ist das Schieben 800 abgeschlossen, da alle Spuren analysiert wurden.
  • 9 veranschaulicht das Schieben der Vorbindungszuordnung 906 eines dritten Satzes von (z. B. Gleitkomma-Ausführungsschaltungs-)Ports zu Zuordnungsspuren 902 in eine endgültige (z. B. tatsächliche) gemäß Ausführungsformen der Offenbarung. In einem Beispiel sind die Ports, die gebunden werden, Gleitkomma-Ports (z. B. für Gleitkomma-Ausführungseinheiten) und in der sortierten Reihenfolge von P9, P8, P7 prüft die Schaltungsanordnung zum Schieben 512 die Bindung der Zuordnungsspur 0 an den Port P9 von der Vorbindung 906 und bestimmt, dass die Zuordnungsspur 0 eine Mikrooperation (µop) 904 eines anderen Typs (z. B. Ganzzahltyp) (z. B. wie durch ein Feld der Mikrooperation angegeben) als der Zielporttyp (z. B. hier Gleitkomma-Port) P9 von der Vorbindung 906 aufweist, und es wird versucht, Spur 1 zu P9 zu schieben, was gelingt, weil Zuordnungsspur 1 eine Mikrooperation (µop) eines gleichen Typs (z. B. Gleitkomma-Typ) wie der Zielporttyp (z. B. hier Gleitkommaport) von P9 aufweist, und es wird versucht, die nächste Spur 2 von der Vorbindung 906 zu dem nächsten Port P8 zu schieben, und dies scheitert daran, dass die Zuordnungsspur 2 eine Mikrooperation (µop) 904 eines anderen Typs (z. B. ganzzahliger Typ) als der Zielporttyp (z. B. hier potentialfreier Port) von P8 aufweist. In dem abgebildeten Beispiel prüft die Schaltungsanordnung zum Schieben 512 die Bindung der nächsten Zuordnungsspur 3 an den Port P8 von der Vorbindung 906 und bestimmt, dass die Zuordnungsspur 3 eine Mikrooperation (µop) eines anderen Typs (z. B. Speichertyp) als der Zielporttyp (z. B. hier Gleitkommaport) P8 von der Vorbindung 906 aufweist, und es wird versucht, Spur 4 zu P8 zu schieben, und dies scheitert daran, dass Zuordnungsspur 4 eine Mikrooperation (µοp) 904 eines anderen Typs (z. B. ganzzahliger Typ) als der Zielporttyp (z. B. Gleitkommaport hier) von P8 aufweist. In dem abgebildeten Beispiel prüft die Schaltungsanordnung zum Schieben 512 die Bindung der nächsten Zuordnungsspur 5 an den Port P8 von der Vorbindung 906 und bestimmt, dass die Zuordnungsspur 5 eine Mikrooperation (µοp) eines anderen Typs (z. B. ganzzahliger Typ) als der Zielporttyp (z. B. Gleitkommaport) P8 von der Vorbindung 906 aufweist, und dies scheitert daran, dass die Zuordnungsspur 5 eine Mikrooperation (µop) 904 eines anderen Typs (z. B. ganzzahliger Typ) als der Zielporttyp (z. B. Gleitkommaport) von P8 aufweist. Zum Beispiel ist das Schieben 900 abgeschlossen, da alle Spuren analysiert wurden.
  • Erneut Bezug nehmend auf 5 kann bzw. können die aktualisierte(n) Abbildung(en) dann zum Beispiel als die letzte(n) Bindung(en) verwendet werden und die entsprechenden Mikrooperationen basierend auf dieser bzw. diesen Abbildung(en), z. B. tatsächliche Bindung 708 aus 7 für ganzzahlige Ports 144 in 1, tatsächliche Bindung 808 aus 8 für Speicherports 146 in 1 und tatsächliche Bindung 908 aus 9 für Gleitkomma- (oder SIMD-)Ports 148 in 1, von der bzw. den Zuordnungsspur(en) an den bzw. die Eingangsport(s) gesendet werden. In bestimmten Ausführungsformen umfasst die Portbindungsschaltung 142 eine Schaltungsanordnung zur Portbelegungsaktualisierung 516, z. B., um die Portbelegung 502 basierend auf dieser aktualisierten Portbindung zu aktualisieren. In bestimmten Ausführungsformen soll die Schaltungsanordnung zur Portbelegungsaktualisierung 516 die Portbelegung 502 basierend auf der Belegung der Ausführungsschaltungen (z. B. Ausführungsschaltungen 140 in 1) aktualisieren (z. B. zusätzlich oder alternativ zum Aktualisieren der Portbelegung 502 basierend auf der aktualisierten Portbindung von der Schaltungsanordnung zum Schieben 512). In einer Ausführungsform soll die Schaltungsanordnung zur Portbelegungsaktualisierung 516 die Portbelegung 502 basierend auf den Belegungszählern von den Ausführungsschaltungen aktualisieren (z. B. einen oder mehrere Belegungszähler 206 für eine oder mehrere Ganzzahlausführungsschaltungen, einen oder mehrere Belegungszähler 306 für eine oder mehrere Speicherausführungsschaltungen und einen oder mehrere Belegungszähler 406 für eine oder mehrere Gleitkomma-/SIMD-Ausführungsschaltungen).
  • 10 veranschaulicht Schieben 1000 einer Vorbindungsabbildung 1006 eines Satzes von Ports zu Zuordnungsspuren 1002 in eine endgültige (z. B. tatsächliche) mit einer statisch gebundenen Mikrooperation gemäß Ausführungsformen der Offenbarung. In bestimmten Ausführungsformen wird das Schieben auch auf eine Mikrooperation angewandt, die statisch an einen einzelnen Port gebunden ist, z. B. obwohl es sich um den gleichen Typ von Operation handelt und somit die statische Bindung als Ausnahmefall behandelt wird.
  • In einem Beispiel sind die Ports, die gebunden werden, ganzzahlige Ports (z. B. für ganzzahlige Ausführungseinheiten) und in der sortierten Reihenfolge von P2, P0, P1, P3, prüft die Schaltungsanordnung zum Schieben 512 die Bindung der Zuordnungsspur 0 an den Port P2 von der Vorbindung 1006 und bestimmt, dass die Zuordnungsspur 0 eine Mikrooperation (µop) 1004 eines gleichen Typs (z. B. ganzzahliger Typ) wie der Zielporttyp (z. B. hier ganzzahliger Port) von P2 aufweist und somit nicht geschoben wird (z. B. stimmt die tatsächliche Bindung 1008 mit der Vorbindung 1006 für diese Spur überein). In dem abgebildeten Beispiel prüft die Schaltungsanordnung zum Schieben 512 die Bindung der Zuordnungsspur 1 an den Port P0 von der Vorbindung 1006 und bestimmt, dass die Zuordnungsspur 1 eine Mikrooperation (µop) 1004 eines gleichen Typs (z. B. ganzzahliger Typ) wie der Zielporttyp (z. B. hier ganzzahliger Port) von P0 aufweist und somit nicht geschoben wird (z. B. stimmt die tatsächliche Bindung 1008 mit der Vorbindung 1006 für diese Spur überein). In dem abgebildeten Beispiel prüft die Schaltungsanordnung zum Schieben 512 die Bindung der Zuordnungsspur 2 an P1 von der Vorbindung 1006 und bestimmt, dass die Zuordnungsspur 1 eine Mikrooperation (µop) 1004 eines gleichen Typs (z. B. ganzzahliger Typ) wie der Zielporttyp (z. B. hier ganzzahliger Port) P1 von der Vorbindung 1006 aufweist, diese Mikrooperation jedoch statisch an einen (z. B. anderen) Port gebunden ist, sodass dies fehlschlägt, und es wird versucht, die nächste Spur 3 von der Vorbindung 906 zu Port P1 zu schieben, was gelingt, weil die Zuordnungsspur 3 eine Mikrooperation (µop) 904 eines gleichen Typs (z. B. ganzzahliger Typ) wie der Zielporttyp (z. B. hier ganzzahlig) von P1 aufweist. In dem abgebildeten Beispiel prüft die Schaltungsanordnung zum Schieben 512 die Bindung der nächsten Zuordnungsspur 4 an den nächsten Port P3 von der Vorbindung 1006 und bestimmt, dass die Zuordnungsspur 4 eine Mikrooperation (µop) 1004 eines gleichen Typs (z. B. ganzzahliger Typ) wie der Zielporttyp (z. B. hier ganzzahliger Port) von P3 aufweist, und wird somit nicht weiter geschoben (z. B. stimmt die tatsächliche Bindung 1008 nicht mit der Vorbindung 1006 für diese Spur überein, da das Schieben für die vorherige Spur durchgeführt wurde). Bei dem abgebildeten Beispiel prüft die Schaltungsanordnung zum Schieben 512 das Binden der nächsten Zuordnungsspur 5 an den nächsten Port P2 (z. B. Wrappen) von der Vorbindung 1006 und bestimmt, dass die Zuordnungsspur 5 eine Mikrooperation (µop) 1004 eines gleichen Typs (z. B. ganzzahliger Typ) wie der Zielporttyp (z. B. hier ganzzahliger Port) von P2 aufweist, und somit nicht weiter geschoben wird (z. B. stimmt die tatsächliche Bindung 1008 nicht mit der Vorbindung 1006 für diese Spur überein, da das Schieben für die vorherige Spur durchgeführt wurde). Zum Beispiel ist das Schieben 1000 abgeschlossen, da alle Spuren analysiert wurden.
  • 11 ist ein Flussdiagramm, das Operationen 1100 zum Binden von Ports von Ausführungsschaltungen an Zuordnungsspuren gemäß Ausführungsformen der Offenbarung veranschaulicht. Manche oder alle der Operationen 1100 (oder andere hier beschriebene Prozesse oder Variationen und/oder Kombinationen davon) werden unter der Steuerung einer Zuordnungsschaltung (z. B. Portbindungsschaltung davon) durchgeführt.
  • Die Operationen 1100 beinhalten bei Block 1102 Decodieren von Befehlen in Sätze von einer oder mehreren Mikrooperationen mit einer oder mehreren Decodierschaltungen eines Prozessors, die mehrere unterschiedliche Typen von Ausführungsschaltungen (z. B. parallel) umfassen, die jeweils einen jeweiligen Eingangsport und eine jeweilige Eingangswarteschlange umfassen. Die Operationen 1100 beinhalten ferner, bei Block 1104, Empfangen einer Eingabe von Mikrooperationen auf mehreren Zuordnungsspuren einer Zuordnungsschaltung des Prozessors. Die Operationen 1100 beinhalten ferner, bei Block 1106, Erzeugen, durch die Zuordnungsschaltung, einer sortierten Liste der Belegung der Eingangswarteschlangen jedes Eingangsports. Die Operationen 1100 beinhalten ferner, bei Block 1108, Erzeugen, durch die Zuordnungsschaltung, einer Vorbindungsabbildung der Eingangsports der mehreren unterschiedlichen Typen von Ausführungsschaltungen auf die mehreren Zuordnungsspuren in einer zirkulären Reihenfolge gemäß der sortierten Liste. Die Operationen 1100 beinhalten ferner, bei Block 1110, Schieben, durch die Zuordnungsschaltung, wenn ein Typ von Mikrooperation von einer Zuordnungsspur nicht mit einem Typ von Ausführungsschaltung eines Eingangsports in der Vorbindungsabbildung übereinstimmt, der Vorbindungsabbildung, sodass der Eingangsport auf eine nächste Zuordnungsspur abgebildet wird, die einen übereinstimmenden Typ von Mikrooperation aufweist, um eine endgültige Abbildung der Eingangsports der mehreren unterschiedlichen Typen von Ausführungsschaltungen auf die mehreren Zuordnungsspuren zu erzeugen. Die Operationen 1100 beinhalten ferner, bei Block 1112, Binden, durch die Zuordnungsschaltung, der Eingangsports der mehreren unterschiedlichen Typen von Ausführungsschaltungen an die mehreren Zuordnungsspuren gemäß der endgültigen Abbildung.
  • Beispielhafte Architekturen, Systeme usw., in denen das Obige verwendet werden kann, sind unten ausführlich beschrieben.
  • Zumindest manche Ausführungsformen der offenbarten Technologien können in Anbetracht der folgenden Beispiele beschrieben werden:
    • Beispiel 1. Ein Hardwareprozessorkern, der Folgendes umfasst:
      • eine Decodierschaltung zum Decodieren von Befehlen in Sätze einer oder mehrerer Mikrooperationen;
      • eine Befehlsdecodierwarteschlange zum Speichern der Sätze einer oder mehrerer Mikrooperationen;
      • mehrere unterschiedliche Typen von Ausführungsschaltungen, die jeweils einen jeweiligen Eingangsport und eine jeweilige Eingangswarteschlange umfassen; und
      • eine Zuordnungsschaltung, umfassend mehrere Zuordnungsspuren, die mit der Befehlsdecodierwarteschlange und mit den Eingangsports der mehreren verschiedenen Typen von Ausführungsschaltungen gekoppelt sind, wobei die Zuordnungsschaltung, für eine Eingabe von Mikrooperationen auf den mehreren Zuordnungsspuren, dient zum Erzeugen einer sortierten Belegungsliste der Eingangswarteschlangen jedes Eingangsports, Erzeugen einer Vorbindungsabbildung der Eingangsports der mehreren verschiedenen Typen von Ausführungsschaltungen auf die mehreren Zuordnungsspuren in einer zirkulären Reihenfolge gemäß der sortierten Liste, wenn ein Typ von Mikrooperation von einer Zuordnungsspur nicht mit einem Typ von Ausführungsschaltung eines Eingangsports in der Vorbindungsabbildung übereinstimmt, Schieben der Vorbindungsabbildung (z. B. Eins-zu-eins), so dass der Eingangsport auf eine nächste (z. B. in physischer Reihenfolge im Kern) Zuordnungsspur mit einem passenden Typ von Mikrooperation abgebildet wird, um eine endgültige Abbildung der Eingangsports der mehreren verschiedenen Typen von Ausführungsschaltungen auf die mehreren Zuordnungsspuren zu erzeugen, und die Eingangsports der mehreren verschiedenen Typen von Ausführungsschaltungen gemäß der endgültigen Abbildung an die mehreren Zuordnungsspuren zu binden.
    • Beispiel 2. Der Hardwareprozessorkern aus Beispiel 1, wobei die Zuordnungsschaltung dazu dient, einen Port mit einer am meisten belegten Eingangswarteschlange aus der Vorbindungsabbildung der Eingangsports auf die mehreren Zuordnungsspuren zu entfernen.
    • Beispiel 3. Der Hardwareprozessorkern aus Beispiel 1, wobei die Zuordnungsschaltung dazu dient, einen beliebigen Port mit einer Eingangswarteschlange oberhalb einer Schwellenbelegung aus der Vorbindungsabbildung der Eingangsports auf die mehreren Zuordnungsspuren zu entfernen.
    • Beispiel 4. Der Hardwareprozessorkern aus Beispiel 1, wobei die Zuordnungsschaltung dazu dient, einen Port mit einer am wenigsten belegten Eingangswarteschlange zu identifizieren, und die Vorbindungsabbildung dazu dient, alle der mehreren Zuordnungsspuren auf den Port mit der am wenigsten belegten Eingangswarteschlange abzubilden.
    • Beispiel 5. Der Hardwareprozessorkern aus Beispiel 1, wobei die Zuordnungsschaltung dazu dient, eine erste Vektormikrooperation eines einzelnen Befehls an einen Port einer ersten Vektorausführungsschaltung der mehreren verschiedenen Typen von Ausführungsschaltungen und eine zweite Vektormikrooperation des einzelnen Befehls an einen Port einer zweiten Vektorausführungsschaltung der mehreren verschiedenen Typen von Ausführungsschaltungen zu binden.
    • Beispiel 6. Der Hardwareprozessorkern aus Beispiel 1, wobei eine Anzahl der mehreren Zuordnungsspuren größer als eine Anzahl der Eingangsports ist.
    • Beispiel 7. Der Hardwareprozessorkern aus Beispiel 1, wobei die Zuordnungsschaltung dazu dient, einen statisch gebundenen Port aus der Vorbindungsabbildung der Eingangsports auf die mehreren Zuordnungsspuren zu entfernen.
    • Beispiel 8. Der Hardwareprozessorkern aus Beispiel 1, wobei die mehreren unterschiedlichen Typen von Ausführungsschaltungen eine Ganzzahlausführungsschaltung, eine Speicherausführungsschaltung und eine Gleitkommaausführungsschaltung umfassen.
    • Beispiel 9. Ein Verfahren, das Folgendes umfasst:
      • Decodieren von Befehlen in Sätze einer oder mehrerer Mikrooperationen mit einer oder mehreren Decodierschaltungen eines Prozessors, die mehrere verschiedene Typen von Ausführungsschaltungen umfassen, die jeweils einen jeweiligen Eingangsport und eine jeweilige Eingangswarteschlange umfassen;
      • Empfangen einer Eingabe von Mikrooperationen auf mehreren Zuordnungsspuren einer Zuordnungsschaltung des Prozessors;
      • Erzeugen, durch die Zuordnungsschaltung, einer sortierten Belegungsliste der Eingangswarteschlangen jedes Eingangsports;
      • Erzeugen, durch die Zuordnungsschaltung, einer Vorbindungsabbildung der Eingangsports der mehreren verschiedenen Typen von Ausführungsschaltungen auf die mehreren Zuordnungsspuren in einer zirkulären Reihenfolge gemäß der sortierten Liste; Schieben, durch die Zuordnungsschaltung, wenn ein Typ von Mikrooperation von einer Zuordnungsspur nicht mit einem Typ von Ausführungsschaltung eines Eingangsports in der Vorbindungsabbildung übereinstimmt, der Vorbindungsabbildung, sodass der Eingangsport auf eine nächste Zuordnungsspur abgebildet wird, die einen übereinstimmenden Typ von Mikrooperation aufweist, um eine endgültige Abbildung der Eingangsports der mehreren verschiedenen Typen von Ausführungsschaltungen auf die mehreren Zuordnungsspuren zu erzeugen; und
      • Binden, durch die Zuordnungsschaltung, der Eingangsports der mehreren unterschiedlichen Typen von Ausführungsschaltungen an die mehreren Zuordnungsspuren gemäß der endgültigen Abbildung.
    • Beispiel 10. Das Verfahren aus Beispiel 9, ferner umfassend Entfernen, durch die Zuordnungsschaltung, eines Ports mit einer am meisten belegten Eingangswarteschlange aus der Vorbindungsabbildung der Eingangsports auf die mehreren Zuordnungsspuren.
    • Beispiel 11. Das Verfahren aus Beispiel 9, ferner umfassend Entfernen, durch die Zuordnungsschaltung, eines beliebigen Ports mit einer Eingangswarteschlange oberhalb einer Schwellenbelegung aus der Vorbindungsabbildung der Eingangsports auf die mehreren Zuordnungsspuren.
    • Beispiel 12. Das Verfahren aus Beispiel 9, ferner umfassend Identifizieren, durch die Zuordnungsschaltung, eines Ports mit einer am wenigsten belegten Eingangswarteschlange, wobei die Vorbindungszuordnung alle der mehreren Zuordnungsspuren auf den Port mit der am wenigsten belegten Eingangswarteschlange abbildet.
    • Beispiel 13. Das Verfahren aus Beispiel 9, wobei das Binden Binden einer ersten Vektormikrooperation eines einzelnen Befehls an einen Port einer ersten Vektorausführungsschaltung der mehreren unterschiedlichen Typen von Ausführungsschaltungen und einer zweiten Vektormikrooperation des einzelnen Befehls an einen Port einer zweiten Vektorausführungsschaltung der mehreren unterschiedlichen Typen von Ausführungsschaltungen umfasst.
    • Beispiel 14. Das Verfahren aus Beispiel 9, wobei eine Anzahl der mehreren Zuordnungsspuren größer als eine Anzahl der Eingangsports ist.
    • Beispiel 15. Das Verfahren aus Beispiel 9, ferner umfassend Entfernen, durch die Zuordnungsschaltung, eines statisch gebundenen Ports aus der Vorbindungsabbildung der Eingangsports auf die mehreren Zuordnungsspuren.
    • Beispiel 16. Das Verfahren aus Beispiel 9, wobei die mehreren unterschiedlichen Typen von Ausführungsschaltungen eine Ganzzahlausführungsschaltung, eine Speicherausführungsschaltung und eine Gleitkommaausführungsschaltung umfassen.
    • Beispiel 17. Ein Hardwareprozessorkern, der Folgendes umfasst:
      • eine Decodierschaltung zum Decodieren von Befehlen in Sätze einer oder mehrerer Mikrooperationen;
      • eine Befehlsdecodierwarteschlange zum Speichern der Sätze einer oder mehrerer Mikrooperationen;
      • mehrere unterschiedliche Typen von Ausführungsschaltungen, die jeweils einen jeweiligen Eingangsport und eine jeweilige Eingangswarteschlange umfassen; und
      • eine Zuordnungsschaltung, umfassend mehrere Zuordnungsspuren, die mit der Befehlsdecodierwarteschlange und mit den Eingangsports der mehreren verschiedenen Typen von Ausführungsschaltungen gekoppelt sind, wobei die Zuordnungsschaltung, für eine Eingabe von Mikrooperationen auf den mehreren Zuordnungsspuren und für jeden Typ der mehreren verschiedenen Typen von Ausführungsschaltungen, dient zum Erzeugen einer sortierten Belegungsliste der Eingangswarteschlangen jedes Eingangsports, Erzeugen einer Vorbindungsabbildung der Eingangsports der mehreren verschiedenen Typen von Ausführungsschaltungen auf die mehreren Zuordnungsspuren in einer zirkulären Reihenfolge gemäß der sortierten Liste, wenn ein Typ von Mikrooperation von einer Zuordnungsspur nicht mit einem Typ von Ausführungsschaltung eines Eingangsports in der Vorbindungsabbildung übereinstimmt, Schieben der Vorbindungsabbildung, sodass der Eingangsport auf eine nächste Zuordnungsspur abgebildet wird, die einen übereinstimmenden Typ von Mikrooperation aufweist, um eine endgültige Abbildung der Eingangsports der mehreren verschiedenen Typen von Ausführungsschaltungen auf die mehreren Zuordnungsspuren zu erzeugen, und Binden der Eingangsports der mehreren verschiedenen Typen von Ausführungsschaltungen an die mehreren Zuordnungsspuren gemäß den endgültigen Abbildungen.
    • Beispiel 18. Der Hardwareprozessorkern aus Beispiel 17, wobei die Zuordnungsschaltung dazu dient, für jeden Typ der mehreren unterschiedlichen Typen von Ausführungsschaltungen einen Port mit einer am meisten belegten Eingangswarteschlange aus der Vorbindungsabbildung der Eingangsports auf die mehreren Zuordnungsspuren zu entfernen.
    • Beispiel 19. Der Hardwareprozessorkern aus Beispiel 17, wobei die Zuordnungsschaltung dazu dient, für jeden Typ der mehreren unterschiedlichen Typen von Ausführungsschaltungen einen beliebigen Port mit einer Eingangswarteschlange oberhalb einer Schwellenbelegung aus der Vorbindungsabbildung der Eingangsports auf die mehreren Zuordnungsspuren zu entfernen.
    • Beispiel 20. Der Hardwareprozessorkern aus Beispiel 17, wobei die Zuordnungsschaltung dazu dient, für jeden Typ der mehreren unterschiedlichen Typen von Ausführungsschaltungen einen Port mit einer am wenigsten belegten Eingangswarteschlange zu identifizieren, und die Vorbindungsabbildung dazu dient, alle der mehreren Zuordnungsspuren auf den Port mit der am wenigsten belegten Eingangswarteschlange abzubilden.
    • Beispiel 21. Der Hardwareprozessorkern aus Beispiel 17, wobei die Zuordnungsschaltung dazu dient, eine erste Vektormikrooperation eines einzelnen Befehls an einen Port einer ersten Vektorausführungsschaltung der mehreren verschiedenen Typen von Ausführungsschaltungen und eine zweite Vektormikrooperation des einzelnen Befehls an einen Port einer zweiten Vektorausführungsschaltung der mehreren verschiedenen Typen von Ausführungsschaltungen zu binden.
    • Beispiel 22. Der Hardwareprozessorkern aus Beispiel 17, wobei eine Anzahl der mehreren Zuordnungsspuren größer als eine Anzahl der Eingangsports ist.
    • Beispiel 23. Der Hardwareprozessorkern aus Beispiel 17, wobei die Zuordnungsschaltung dazu dient, einen statisch gebundenen Port aus den Vorbindungsabbildungen der Eingangsports auf die mehreren Zuordnungsspuren zu entfernen.
    • Beispiel 24. Der Hardwareprozessorkern aus Beispiel 17, wobei die mehreren unterschiedlichen Typen von Ausführungsschaltungen einen Ganzzahlausführungsschaltungstyp, einen Speicherausführungsschaltungstyp und einen Gleitkommaausführungsschaltungstyp umfassen.
  • In noch einer weiteren Ausführungsform umfasst eine Vorrichtung ein Datenspeichergerät, das Code speichert, der, wenn er durch einen Hardware-Prozessor ausgeführt wird, veranlasst, dass der Hardware-Prozessor jedes hierin offenbarte Verfahren durchführt. Eine Vorrichtung kann wie eine in der detaillierten Beschreibung beschriebene sein. Ein Verfahren kann wie ein in der ausführlichen Beschreibung beschriebenes sein.
  • Ein Befehlssatz kann ein oder mehrere Befehlsformate umfassen. Ein gegebenes Befehlsformat kann verschiedene Felder (z. B. Anzahl an Bits, Position von Bits) definieren, um unter anderem die durchzuführende Operation (z. B. Opcode) und den/die Operand(en), an dem/denen die Operation durchzuführen ist, und/oder (ein) andere(s) Datenfeld(er) (z. B. Maske) zu spezifizieren. Manche Befehlsformate sind durch die Definition von Befehlstemplates (oder Teilformaten) weiter aufgeschlüsselt. Zum Beispiel können die Befehlstemplates eines gegebenen Befehlsformats so definiert sein, dass sie unterschiedliche Teilsätze der Felder des Befehlsformats aufweisen (die enthaltenen Felder sind typischerweise in der gleichen Reihenfolge, aber wenigstens manche weisen unterschiedliche Bitpositionen auf, weil dort weniger Felder enthalten sind), und/oder so definiert sein, dass sie ein gegebenes Feld aufweisen, das unterschiedlich interpretiert wird. Dementsprechend wird jeder Befehl einer ISA unter Verwendung eines gegebenen Befehlsformats (und, falls definiert, in einem gegebenen der Befehlstemplates jenes Befehlsformats) ausgedrückt und beinhaltet Felder zum Spezifizieren der Operation und der Operanden. Beispielsweise hat ein beispielhafter ADD-Befehl einen spezifischen Opcode und ein Befehlsformat, das ein Opcode-Feld zum Angeben dieses Opcodes und Operandenfelder zum Auswählen von Operanden (Quelle1/Ziel und Quelle2) umfasst; und ein Auftreten dieses ADD-Befehls in einem Befehlsstrom hat spezifische Inhalte in den Operandenfeldern, die spezifische Operanden auswählen. Ein Satz von SIMD-Erweiterungen, die als AVX (Advanced Vector Extensions, weiterentwickelte Vektorerweiterungen) (AVX1 und AVX2) bezeichnet werden, und das Verwenden des VEX-Codierungsschemas (VEX: VEctor Extensions, Vektorerweiterungen) wurden herausgegeben und/oder veröffentlicht (siehe z. B. Intel® 64 und IA-32 Architectures Software Developer's Manual, September 2018; und siehe Intel® Advanced Vector Extensions Programming Reference, Oktober 2018).
  • Beispielhafte Kernarchitekturen, Prozessoren und Rechnerarchitekturen
  • Prozessorkerne können auf unterschiedliche Weisen, für unterschiedliche Zwecke und in unterschiedlichen Prozessoren umgesetzt sein. Beispielsweise können Implementierungen solcher Kerne beinhalten: 1) einen universellen reihenfolgetreuen (In-order) Kern, gedacht für universelles Rechnen; 2) einen universellen reihenfolgeveränderten (Out-of-order) Hochleistungskern, gedacht für universelles Rechnen; 3) einen speziellen Kern, primär gedacht für Grafik und/oder wissenschaftliche (Durchsatz) Berechnung. Implementierungen unterschiedlicher Prozessoren können beinhalten: 1) eine CPU, einen oder mehrere universelle reihenfolgetreue (In-order) Kerne, gedacht für universelles Rechnen, und/oder einen oder mehrere universelle reihenfolgeveränderte (Out-of-order) Kerne, gedacht für universelles Rechnen, umfassend; und 2) einen Koprozessor, einen oder mehrere spezielle Kerne, primär gedacht für Grafik und/oder Wissenschaft (Durchsatz), umfassend. Solche unterschiedlichen Prozessoren führen zu unterschiedlichen Computersystemarchitekturen, die Folgendes umfassen können: 1) den Koprozessor auf einem von der CPU getrennten Chip; 2) den Koprozessor auf einem separaten Die in dem gleichen Gehäuse wie eine CPU; 3) den Koprozessor auf dem gleichen Die wie eine CPU (in diesem Fall wird ein solcher Koprozessor manchmal als Spezial-Logik, wie etwa als integrierte Grafik- und/oder wissenschaftliche (Durchsatz-)Logik, oder als Spezial-Kerne bezeichnet); und 4) ein System auf einem Chip, das auf dem gleichen Die die beschriebene CPU (manchmal als der bzw. die Anwendungskern(e) oder Anwendungsprozessor(en) bezeichnet), den vorstehend beschriebenen Koprozessor und zusätzliche Funktionalitäten umfassen kann. Als Nächstes werden beispielhafte Grafikprozessoren beschrieben. Gefolgt von beispielhaften Kernarchitekturen und Beschreibungen beispielhafter Prozessoren und Computerarchitekturen.
  • Beispielhafte Kernarchitekturen
  • Blockdiagramm zu reihenfolgetreuem (In-order) und reihenfolgeverändertem (Out-of-order) Kern
  • 12A ist ein Blockdiagramm, das sowohl eine beispielhafte reihenfolgetreue (In-order) Pipeline als auch eine beispielhafte reihenfolgeveränderte (Out-of-order) Ausgabe-/Ausführungspipeline mit Registerumbenennung gemäß Ausführungsformen der Offenbarung darstellt. 12B ist ein Blockdiagramm, das sowohl eine beispielhafte Ausführungsform eines reihenfolgetreuen (In-order) Architekturkerns als auch eines reihenfolgeveränderten (Out-of-order) Ausgabe-/Ausführungs-Architekturkerns mit Registerumbenennung, in einen Prozessor einzuschließen, gemäß Ausführungsformen der Offenbarung darstellt. Die Felder mit durchgezogenen Linien in 12A-B stellen die reihenfolgetreue Pipeline und den reihenfolgetreuen Kern dar, während die optionale Hinzufügung von Feldern mit gestrichelten Linien die/den reihenfolgeveränderte(n) Ausgabe-/Ausführungspipeline bzw. -kern mit Registerumbenennung darstellt. Unter der Voraussetzung, dass der reihenfolgetreue Aspekt eine Teilmenge des reihenfolgeveränderten Aspekts ist, wird der reihenfolgeveränderte Aspekt beschrieben.
  • In 12A umfasst eine Prozessorpipeline 1200 eine Abrufstufe 1202, eine Längendecodierstufe 1204, eine Decodierstufe 1206, eine Zuordnungsstufe 1208, eine Umbenennungsstufe 1210, eine Ablaufsteuerungsstufe (Scheduling, auch als Verteilung oder Ausgabe bekannt) 1212, eine Registerlese-/Speicherlesestufe 1214, eine Ausführungsstufe 1216, eine Zurückschreibe-/Speicherschreibestufe 1218, eine Ausnahmenbehandlungsstufe 1222 und eine Übergabestufe 1224.
  • 12B zeigt Prozessorkern 1290, eine Frontendeinheit 1230 umfassend, gekoppelt mit einer Ausführungsengineeinheit 1250, und beide sind mit einer Speichereinheit 1270 gekoppelt. Der Kern 1290 kann ein Kern mit reduziertem Befehlssatz (RISC, Reduced Instruction Set Computing), ein Kern mit komplexem Befehlssatz (CISC, Complex Instruction Set Computing), ein Kern mit sehr langen Befehlswörtern (VLIW, Very Long Instruction Word) oder ein hybrider oder alternativer Kerntyp sein. Als noch eine weitere Option kann der Kern 1290 ein spezieller Kern sein, wie etwa, beispielsweise, ein Netzwerk- oder Kommunikationskern, eine Komprimierungsengine, ein Koprozessorkern, ein universeller Berechnungskern für Grafikprozessoreinheiten (GPGPU, General Purpose Computing Graphics Processing Unit), ein Grafikkern oder ähnliches.
  • Die Front-End-Einheit 1230 umfasst eine Verzweigungsvorhersageeinheit 1232, gekoppelt mit einer Befehlscacheeinheit 1234, die mit einem Befehlsübersetzungspuffer (TLB, Instruction Translation Lookaside Buffer) 1236 gekoppelt ist, der mit einer Befehlsabrufeinheit 1238 gekoppelt ist, die mit einer Decodiereinheit 1240 gekoppelt ist. Die Decodiereinheit 1240 (oder Decodierer oder Decodierereinheit) kann Befehle (z. B. Makrobefehle) decodieren und als eine Ausgabe eine oder mehrere Mikrooperationen, Mikrocodeeinstiegspunkte, Mikrobefehle oder Befehle oder andere Steuersignale decodieren, die aus den ursprünglichen Befehlen decodiert werden oder diese anderweitig widerspiegeln oder aus diesen abgeleitet sind. Die Decodiereinheit 1240 kann unter Verwendung verschiedener unterschiedlicher Mechanismen umgesetzt sein. Beispiele von geeigneten Mechanismen umfassen, sind aber nicht beschränkt auf, Nachschlagetabellen, Hardwareumsetzungen, programmierbare Logikarrays (PLAs), Mikrocode-Nur-Lese-Speicher (ROMs, Read Only Memories) usw. In einer Ausführungsform umfasst der Kern 1290 einen Mikrocode-ROM oder ein anderes Medium, das Mikrocode für gewisse Makrobefehle speichert (z. B. in Decodiereinheit 1240 oder anderweitig innerhalb der Frontendeinheit 1230). Die Decodiereinheit 1240 ist mit einer Umbenennungs-/Zuordnungseinheit 1252 in der Ausführungsengineeinheit 1250 gekoppelt.
  • Die Ausführungsengineeinheit 1250 umfasst die Umbenennungs-/Zuordnungseinheit 1252, gekoppelt mit einer Rückzugseinheit 1254 und einer Menge von einer oder mehreren Ablaufsteuerungseinheiten 1256. Die Ablaufsteuerungseinheit(en) 1256 repräsentiert bzw. repräsentieren eine beliebige Anzahl unterschiedlicher Ablaufsteuerungen, umfassend Reservierungsstationen, ein zentrales Befehlsfenster usw. Die Ablaufsteuerungseinheit(en) 1256 ist bzw. sind mit der bzw. den physischen Registerdatei(en)einheit(en) 1258 gekoppelt. Jede der physischen Registerdatei(en)einheiten 1258 stellt eine oder mehrere physische Registerdateien dar, von denen unterschiedliche einen oder mehrere unterschiedliche Datentypen speichern, wie etwa skalare Ganzzahlen, skalare Gleitkommazahlen, gepackte Ganzzahlen, gepackte Gleitkommazahlen, Vektorganzzahlen, Vektorgleitkommazahlen, Status (z. B. einen Befehlszeiger, der die Adresse des nächsten auszuführenden Befehls ist) usw. In einer Ausführungsform umfasst die physische Registerdatei(en)einheit 1258 eine Vektorregistereinheit, eine Schreibmaskenregistereinheit und eine skalare Registereinheit. Diese Registereinheiten können Architekturvektorregister, Vektormaskenregister und Mehrzweckregister bereitstellen. Die physische(n) Registerdatei(en)einheit(en) 1258 wird bzw. werden von der Rückzugseinheit 1254 überlappt, um verschiedene Weisen darzustellen, in denen Registerumbenennung und reihenfolgeveränderte Ausführung umgesetzt werden können (z. B. unter Verwendung eines Neuordnungspuffers und einer Rückzugsregisterdatei; unter Verwendung einer Zukunftsdatei, eines Verlaufspuffers und einer Rückzugsregisterdatei; unter Verwendung einer Registerabbildung und einer Sammlung von Registern usw.). Die Rückzugseinheit 1254 und die physischen Registerdatei(en)einheit(en) 1258 ist bzw. sind mit dem bzw. den Ausführungsclustern 1260 gekoppelt. Der bzw. die Ausführungscluster 1260 umfassen eine Menge von einer oder mehreren Ausführungseinheiten 1262 und eine Menge von einer oder mehreren Speicherzugriffseinheiten 1264. Die Ausführungseinheiten 1262 können verschiedene Operationen (z. B. Verschiebungen, Addition, Subtraktion, Multiplikation) auf verschiedenen Typen von Daten (z. B. skalare Gleitkommadaten, gepackte ganzzahlige Daten, gepackte Gleitkommadaten, Vektorganzzahl, Vektorgleitkomma) durchführen. Während manche Ausführungsformen eine Anzahl von Ausführungseinheiten beinhalten können, die für spezielle Funktionen oder Sätze von Funktionen dediziert sind, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten, die allesamt alle Funktionen durchführen, beinhalten. Die Ablaufsteuerungseinheit(en) 1256, die physischen Registerdatei(en)einheit(en) 1258 und das bzw. die Ausführungscluster 1260 werden als möglicherweise mehrere gezeigt, da gewisse Ausführungsformen separate Pipelines für gewisse Typen von Daten/Operationen erzeugen (z. B. eine skalare ganzzahlige Pipeline, eine skalare Gleitkomma-/gepackte ganzzahlige/gepackte Gleitkomma-/Vektorganzzahl-/Vektorgleitkomma-Pipeline und/oder eine Speicherzugriffspipeline, die jeweils ihre(n) eigene(n) Ablaufsteuerungseinheit, physische Registerdatei(en)einheit und/oder Ausführungscluster haben - und im Falle einer separaten Speicherzugriffspipeline sind gewisse Ausführungsformen umgesetzt, bei denen nur das Ausführungscluster dieser Pipeline die Speicherzugriffseinheit(en) 1264 hat). Es versteht sich auch, dass, wenn getrennte Pipelines verwendet werden, eine oder mehrere dieser Pipelines reihenfolgeveränderte Ausgabe/Ausführung-Pipelines und der Rest reihenfolgetreue Pipelines sein können.
  • Die Menge von Speicherzugriffseinheiten 1264 ist mit der Speichereinheit 1270 gekoppelt, die eine Daten-TLB-Einheit 1272 umfasst, gekoppelt mit einer Datencacheeinheit 1274, gekoppelt mit einer Level-2-Cacheeinheit (L2) 1276. In einer beispielhaften Ausführungsform können die Speicherzugriffseinheiten 1264 eine Ladeeinheit, eine Adressspeichereinheit und eine Datenspeichereinheit beinhalten, von denen jede mit der Daten-TLB-Einheit 1272 in der Speichereinheit 1270 gekoppelt ist. Die Befehlscacheeinheit 1234 ist ferner mit einer Level-2-Cacheeinheit (L2) 1276 in der Speichereinheit 1270 gekoppelt. Die L2-Cacheeinheit 1276 ist mit einer oder mehreren anderen Cacheebenen und eventuell mit dem Hauptspeicher gekoppelt.
  • In bestimmten Ausführungsformen ist eine Vorabrufschaltung 1278 enthalten, um Daten vorabzurufen, um zum Beispiel Zugriffsadressen vorherzusagen und die Daten für diese Adressen in einen oder mehrere Caches (z. B. aus dem Speicher 1280) zu bringen.
  • Als Beispiel kann die beispielhafte, Register umbenennende reihenfolgeveränderte Ausgabe-/Ausführungskernarchitektur die Pipeline 1200 wie folgt umsetzen: 1) der Befehlsabruf 1238 führt die Abruf- und die Längendecodierstufen 1202 und 1204 durch; 2) die Decodiereinheit 1240 führt die Decodierstufe 1206 durch; 3) die Umbenennungs-/Zuordnungseinheit 1252 führt die Zuordnungsstufe 1208 und die Umbenennungsstufe 1210 durch; 4) die Ablaufsteuerungseinheit(en) 1256 führt bzw. führen die Ablaufsteuerungsstufe 1212 durch; 5) die physische(n) Registerdatei(en)einheit(en) 1258 und die Speichereinheit 1270 führen die Registerlese-/Speicherlesestufe 1214 durch; der Ausführungscluster 1260 führt die Ausführungsstufe 1216 durch; 6) die Speichereinheit 1270 und die physische(n) Registerdatei(en)einheit(en) 1258 führen die Zurückschreibe-/Speicherschreibestufe 1218 durch; 7) verschiedene Einheiten können bei der Ausnahmenbehandlungsstufe 1222 beteiligt sein; und 8) die Rückzugseinheit 1254 und die physische(n) Registerdatei(en)einheit(en) 1258 führen die Übergabestufe 1224 durch.
  • Der Kern 1290 kann einen oder mehrere Befehlssätze (z. B. den x86-Befehlssatz (mit einigen Erweiterungen, die bei neueren Versionen hinzugefügt wurden); den MIPS-Befehlssatz von MIPS Technologies aus Sunnyvale, CA; den ARM-Befehlssatz (mit optionalen zusätzlichen Erweiterungen, wie etwa NEON) von ARM Holdings aus Sunnyvale, CA) unterstützen, einschließlich der hier beschriebenen Befehle. In einer Ausführungsform umfasst der Kern 1290 Logik zum Unterstützen einer Befehlssatzerweiterung mit gepackten Daten (z. B. AVX1, AVX2), dadurch ermöglichend, dass Operationen, die von vielen Multimedia-Anwendungen verwendet werden, mit gepackten Daten durchgeführt werden.
  • Es versteht sich, dass der Kern Multithreading (Ausführen von zwei oder mehr parallelen Sätzen von Operationen oder Threads) unterstützen kann und dies auf vielfältige Weisen vornehmen kann, einschließlich Zeitscheiben-Multithreading, Simultan-Multithreading (wobei ein einziger physischer Kern einen logischen Kern für jeden der Threads bereitstellt, die der physische Kern simultan im Multithreading behandelt), oder eine Kombination davon (z. B. Zeitscheiben-Abruf und -Decodierung und Simultan-Multithreading danach, wie etwa bei der Intel® Hyperthreading-Technologie).
  • Während Registerumbenennung in dem Zusammenhang einer Außer-Reihenfolge-Ausführung beschrieben ist, versteht es sich, dass Registerumbenennung in einer In-Reihenfolge-Architektur verwendet werden kann. Während die dargestellte Ausführungsform des Prozessors auch separate Befehls- und Datencacheeinheiten 1234/1274 und eine gemeinsam genutzte L2-Cacheeinheit 1276 umfasst, können alternative Ausführungsformen einen einzelnen internen Cache für Befehle und Daten haben, wie etwa, beispielsweise, einen internen Level-1-Cache (L1) oder mehrere Ebenen von internem Cache. In einigen Ausführungsformen kann das System eine Kombination aus einem internen Cache und einem externen Cache umfassen, die extern zum Kern und/oder zum Prozessor ist. Alternativ kann der gesamte Cache extern zum Kern und/oder zum Prozessor sein.
  • Spezifische beispielhafte reihenfolgetreue (In-order) Kernarchitektur
  • 13A-B stellen ein Blockdiagramm einer spezifischeren beispielhaften reihenfolgetreuen (In-order) Kernarchitektur dar, deren Kern einer von mehreren Logikblöcken (einschließlich anderer Kerne vom gleichen Typ und/oder anderen Typen) in einem Chip wäre. Die Logikblöcke kommunizieren über ein Verbindungsnetzwerk mit hoher Bandbreite (z. B. ein Ringnetzwerk) mit einigen festen Funktionslogiken, Speicher-E/A-Schnittstellen und anderen notwendigen E/A-Logiken, in Abhängigkeit von der Anwendung.
  • 13A ist ein Blockdiagramm eines einzelnen Prozessorkerns, zusammen mit seiner Verbindung zu dem On-Die-Verbindungsnetzwerk 1302 und mit seinem lokalen Teilsatz des Level-2-Caches (L2) 1304, gemäß Ausführungsformen der Offenbarung. In einer Ausführungsform unterstützt eine Befehlsdecodiereinheit 1300 den x86-Befehlssatz mit einer Befehlssatzerweiterung mit gepackten Daten. Ein LI-Cache 1306 ermöglicht Zugriffe mit geringer Latenz auf einen Cachespeicher in die skalaren und Vektoreinheiten. Während in einer Ausführungsform (zum Vereinfachen der Konzeption) eine skalare Einheit 1308 und eine Vektoreinheit 1310 separate Registersätze verwenden (skalare Register 1312 bzw. Vektorregister 1314) und Daten, die zwischen ihnen transferiert werden, in Speicher geschrieben und dann von einem Level-1-Cache (L1) 1306 zurückgelesen werden, können alternative Ausführungsformen der Offenbarung einen unterschiedlichen Ansatz verwenden (z. B. einen einzelnen Registersatz verwenden oder einen Kommunikationspfad umfassen, der Daten ermöglicht, zwischen den zwei Registerdateien transferiert zu werden, ohne geschrieben und zurückgelesen zu werden).
  • Der lokale Teilsatz des L2-Caches 1304 ist Teil eines globalen L2-Caches, der in separate lokale Teilsätze unterteilt wird, einen pro Prozessorkern. Jeder Prozessorkern weist einen direkten Zugriffspfad auf seinen eigenen lokalen Teilsatz des L2-Cache 1304 auf. Daten, die von einem Prozessorkern gelesen werden, werden in dessen L2-Cacheteilsatz 1304 gespeichert, und auf sie kann schnell zugegriffen werden, parallel mit anderen Prozessorkernen, die auf ihre eigenen lokalen L2-Cacheteilsätze zugreifen. Daten, die durch einen Prozessorkern geschrieben werden, werden in dessen eigenem L2-Cacheteilsatz 1304 gespeichert und werden, wenn nötig, aus anderen Teilsätzen ausgeräumt. Das Ringnetzwerk sichert Kohärenz der gemeinsam genutzten Daten. Das Ringnetzwerk ist bidirektional, um Agenten, wie etwa Prozessorkernen, L2-Caches und anderen Logikblöcken zu ermöglichen, innerhalb des Chips miteinander zu kommunizieren. Jeder Ringdatenpfad ist pro Richtung 1012 Bit breit.
  • 13B ist eine erweiterte Ansicht eines Teils des Prozessorkerns in 13A gemäß Ausführungsformen der Offenbarung. 13B umfasst einen LI-Datencache 1306A als Teil des L1-Caches 1304, sowie weitere Details hinsichtlich der Vektoreinheit 1310 und der Vektorregister 1314. Insbesondere ist die Vektoreinheit 1310 eine 16-breite Vektorverarbeitungseinheit (VPU, Vector Processing Unit) (siehe die 16-breite ALU 1328), die einen oder mehrere Ganzzahlbefehle, Gleitkommabefehle mit einfacher Genauigkeit und Gleitkommabefehle mit doppelter Genauigkeit ausführt. Die VPU unterstützt Mischen der Registereingänge mit Mischeinheit 1320, numerische Umwandlung mit numerischen Umwandlungseinheiten 1322A-B und Replikation mit Replikationseinheit 1324 auf dem Speichereingang. Schreibmaskenregister 1326 ermöglichen das Prädizieren von resultierenden Vektorschreibvorgängen.
  • 14 ist ein Blockdiagramm eines Prozessors 1400, der mehr als einen Kern haben kann, der eine integrierte Speichersteuerung haben kann und der integrierte Grafik haben kann, gemäß Ausführungsformen der Offenbarung. Die Felder mit den durchgezogenen Linien in 14 stellen einen Prozessor 1400 mit einem einzelnen Kern 1402A, einen Systemagenten 1410, eine Menge von einer oder mehreren Bussteuerungseinheiten 1416 dar, während die optionale Hinzufügung von Feldern mit gestrichelten Linien einen alternativen Prozessor 1400 mit mehreren Kernen 1402A-N, eine Menge von einer oder mehreren integrierten Speichersteuerungseinheiten 1414 in der Systemagenteneinheit 1410 und spezieller Logik 1408 darstellt.
  • Daher können unterschiedliche Umsetzungen des Prozessors 1400 umfassen: 1) eine CPU, wobei die spezielle Logik 1408 integrierte Grafik und/oder wissenschaftliche (Durchsatz) Logik ist (die einen oder mehrere Kerne umfassen kann), und wobei die Kerne 1402A-N ein oder mehrere universelle Kerne sind (z. B. universelle reihenfolgetreue (In-order) Kerne, universelle reihenfolgeveränderte (Out-of-order) Kerne, eine Kombination aus den zwei); 2) einen Koprozessor, wobei die Kerne 1402A-N eine große Anzahl von speziellen Kernen sind, primär für Grafik und/oder wissenschaftliches (Durchsatz) Rechnen gedacht; und 3) einen Koprozessor, wobei die Kerne 1402A-N eine große Anzahl von universellen reihenfolgetreuen (In-order) Kernen sind. Daher kann der Prozessor 1400 ein universeller Prozessor, Koprozessor oder spezieller Prozessor sein, wie etwa, beispielsweise, ein Netzwerk- oder Kommunikationsprozessor, eine Komprimierungsengine, ein Grafikprozessor, eine universelle Grafikprozessor-Berechnungseinheit (GPGPU, General Purpose Graphics Processing Unit), ein Koprozessor mit hohem Durchsatz und vielen integrierten Kernen (MIC, Many Integrated Core) (30 oder mehr Kerne umfassend), ein eingebetteter Prozessor oder ähnliches. Der Prozessor kann auf einem oder mehreren Chips umgesetzt sein. Der Prozessor 1400 kann ein Teil eines und/oder kann auf einem oder mehreren Substraten unter Verwendung einer beliebigen aus einer Anzahl von Prozesstechnologien umgesetzt sein, wie etwa, beispielsweise, BiCMOS, CMOS oder NMOS.
  • Die Speicherhierarchie umfasst eine oder mehrere Cacheebenen innerhalb der Kerne, einen Satz von einer oder mehreren gemeinsam genutzten Cacheeinheiten 1406 und externen Speicher (nicht gezeigt), gekoppelt mit der Menge von integrierten Speichersteuerungseinheiten 1414. Die Menge von gemeinsam genutzten Cacheeinheiten 1406 kann einen oder mehrere Mid-Level-Caches, wie etwa Level 2 (L2), Level 3 (L3), Level 4 (L4) oder andere Cacheebenen, einen Cache auf der untersten Ebene (LLC, Last Level Cache) und/oder Kombinationen davon umfassen. Während in einer Ausführungsform eine ringbasierte Verbindungseinheit 1412 die integrierte Grafiklogik 1408, die Menge von gemeinsam genutzten Cacheeinheiten 1406 und die Systemagenteneinheit 1410/die integrierte(n) Speichersteuerungseinheit(en) 1414 verbinden, können alternative Ausführungsformen eine beliebige Anzahl von wohlbekannten Techniken zum Verbinden solcher Einheiten verwenden. In einer Ausführungsform wird Kohärenz zwischen einer oder mehreren Cacheeinheiten 1406 und Kernen 1402A-N gewahrt.
  • In einigen Ausführungsformen sind einer oder mehrere der Kerne 1402A-N in der Lage, Multithreading durchzuführen. Der Systemagent 1410 umfasst diejenigen Komponenten, die Kerne 1402A-N koordinieren und betreiben. Die Systemagenteneinheit 1410 kann, beispielsweise, eine Leistungssteuerungseinheit (PCU, Power Control Unit) und eine Anzeigeeinheit umfassen. Die PCU kann Logik und Komponenten, die zum Regeln des Leistungszustands der Kerne 1402A-N und der integrierten Grafiklogik 1408 benötigt werden, sein oder umfassen. Die Anzeigeeinheit dient zum Ansteuern einer oder mehrerer extern verbundener Anzeigen.
  • Die Kerne 1402A-N können homogen oder heterogen in Bezug auf den Architekturbefehlssatz sein; das heißt, zwei oder mehr der Kerne 1402A-N können zur Ausführung des gleichen Befehlssatzes in der Lage sein, während andere möglicherweise in der Lage sind, nur einen Teilsatz dieses Befehlssatzes oder einen unterschiedlichen Befehlssatz auszuführen.
  • Beispielhafte Computerarchitekturen
  • 15-18 sind Blockdiagramme von beispielhaften Computerarchitekturen. Andere im Fachgebiet bekannte Systemkonzeptionen und -auslegungen für Laptops, Desktops, handgestützte PCs, persönliche digitale Assistenten, technische Workstations, Server, Netzwerkvorrichtungen, Netzwerkknoten, Weichen, eingebettete Prozessoren, Digitalsignalprozessoren (DSPs), Grafikvorrichtungen, Videospielvorrichtungen, Set-Top-Boxen, Mikrocontroller, Mobiltelefone, tragbare Medienabspielvorrichtungen, handgestützte Vorrichtungen und verschiedene andere elektronische Vorrichtungen sind ebenfalls geeignet. Im Allgemeinen ist eine riesige Vielfalt von Systemen oder elektronischen Vorrichtungen, die in der Lage sind, einen Prozessor und/oder andere Ausführungslogik, wie hier offenbart, zu integrieren, allgemein geeignet.
  • Jetzt Bezug nehmend auf 15 ist ein Blockdiagramm eines Systems 1500 in Übereinstimmung mit einer Ausführungsform der Offenbarung gezeigt. Das System 1500 kann einen oder mehrere Prozessoren 1510, 1515 umfassen, die mit einem Steuerungsknoten 1520 gekoppelt sind. In einer Ausführungsform umfasst der Steuerungsknoten 1520 einen Grafikspeichersteuerungsknoten (GMCH) 1590 und einen Eingabe/Ausgabe-Knoten (IOH) 1550 (die sich auf separaten Chips befinden können); der GMCH 1590 umfasst Speicher- und Grafiksteuerungen, mit denen Speicher 1540 und ein Koprozessor 1545 gekoppelt sind; der IOH 1550 koppelt Eingabe-/Ausgabevorrichtungen (E/A) 1560 mit dem GMCH 1590. Alternativ sind die Speicher- und/oder die Grafiksteuerung in den Prozessor integriert (wie hier beschrieben), der Speicher 1540 und der Koprozessor 1545 sind direkt mit dem Prozessor 1510 gekoppelt, und der Steuerungsknoten 1520 in einem einzelnen Chip mit dem IOH 1550. Der Speicher 1540 kann Zuordnungscode 1540A umfassen, um beispielsweise Code zu speichern, der, wenn ausgeführt, einen Prozessor veranlasst, ein beliebiges Verfahren dieser Offenbarung durchzuführen.
  • Die optionale Natur der zusätzlichen Prozessoren 1515 wird in 15 durch unterbrochene Linien gekennzeichnet. Jeder Prozessor 1510, 1515 kann einen oder mehrere der hier beschriebenen Verarbeitungskerne umfassen und kann eine Version des Prozessors 1400 sein.
  • Der Speicher 1540 kann, beispielsweise, ein dynamischer Direktzugriffsspeicher (DRAM), ein Phasenwechselspeicher (PCM) oder eine Kombination aus den zweien sein. In zumindest einer Ausführungsform kommuniziert der Steuerungsknoten 1520 mit dem bzw. den Prozessoren 1510, 1515 über einen Multi-Drop-Bus, wie etwa einen Frontside-Bus (FSB), eine Punkt-zu-Punkt-Schnittstelle, wie etwa QuickPath Interconnect (QPI) oder eine ähnliche Verbindung 1595.
  • In einer Ausführungsform ist der Koprozessor 1545 ein spezieller Prozessor, wie etwa, beispielsweise, ein MIC-Prozessor mit hohem Durchsatz, ein Netzwerk- oder ein Kommunikationsprozessor, eine Komprimierungsengine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder ähnliches. In einer Ausführungsform kann der Steuerungsknoten 1520 einen integrierten Grafikbeschleuniger umfassen.
  • Es kann eine Vielzahl von Unterschieden zwischen den physischen Ressourcen 1510, 1515 im Hinblick auf ein Spektrum von relevanten Metriken geben, einschließlich architektonisch, mikroarchitektonisch, thermisch, der Stromverbrauchscharakteristiken und ähnliches.
  • In einer Ausführungsform führt der Prozessor 1510 Befehle aus, die Datenverarbeitungsoperationen eines allgemeinen Typs steuern. Eingebettet in die Befehle können Koprozessorbefehle sein. Der Prozessor 1510 erkennt, dass diese Koprozessorbefehle von einem Typ sind, der durch den angeführten Koprozessor 1545 ausgeführt werden soll. Entsprechend gibt der Prozessor 1510 diese Koprozessorbefehle (oder Steuersignale, die Koprozessorbefehle darstellend) auf einem Koprozessorbus oder einer anderen Verbindung an den Koprozessor 1545 aus. Ein oder mehrere Koprozessoren 1545 akzeptieren die empfangenen Koprozessorbefehle und führen sie aus.
  • Jetzt Bezug nehmend auf 16 ist ein Blockdiagramm eines ersten spezifischeren Systems 1600 in Übereinstimmung mit einer Ausführungsform der Offenbarung gezeigt. Wie in 16 gezeigt, ist Mehrprozessorsystem 1600 ein Punkt-zu-Punkt-Verbindungssystem und umfasst einen ersten Prozessor 1670 und einen zweiten Prozessor 1680, die über eine Punkt-zu-Punkt-Verbindung 1650 gekoppelt sind. Jeder der Prozessoren 1670 und 1680 kann eine Version des Prozessors 1400 sein. In einer Ausführungsform der Offenbarung sind Prozessoren 1670 und 1680 Prozessoren 1510 bzw. 1515, während Koprozessor 1638 Koprozessor 1545 ist. In einer anderen Ausführungsform sind Prozessoren 1670 und 1680 Prozessor 1510 bzw. Koprozessor 1545.
  • Prozessoren 1670 und 1680 sind als integrierte Speichersteuerungseinheiten (IMC, Integrated Memory Controller) 1672 bzw. 1682 umfassend gezeigt. Prozessor 1670 umfasst auch als Teil seiner Bussteuerungseinheiten Punkt-zu-Punkt-Schnittstellen (P-P) 1676 und 1678; in ähnlicher Weise umfasst der zweite Prozessor 1680 P-P-Schnittstellen 1686 und 1688. Prozessoren 1670, 1680 können Informationen über eine Punkt-zu-Punkt-Schnittstelle (P-P) 1650 unter Verwendung von P-P-Schnittstellenschaltungen 1678, 1688 austauschen. Wie in 16 gezeigt, koppeln IMCs 1672 und 1682 die Prozessoren mit jeweiligen Speichern, insbesondere einem Speicher 1632 und einem Speicher 1634, die Teile des lokal mit den jeweiligen Prozessoren verbundenen Hauptspeichers sein können.
  • Prozessoren 1670, 1680 können auch jeweils Informationen mit einem Chipsatz 1690 über individuelle P-P-Schnittstellen 1652, 1654 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 1676, 1694, 1686, 1698 austauschen. Der Chipsatz 1690 kann optional Informationen mit dem Koprozessor 1638 über eine Hochleistungsschnittstelle 1639 austauschen. In einer Ausführungsform ist der Koprozessor 1638 ein spezieller Prozessor, wie etwa, beispielsweise, ein MIC-Prozessor mit hohem Durchsatz, ein Netzwerk- oder ein Kommunikationsprozessor, eine Komprimierungsengine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder ähnliches.
  • Ein gemeinsam genutzter Cache (nicht gezeigt) kann in einem der beiden Prozessoren oder außerhalb beider Prozessoren enthalten sein; jedoch kann er über eine P-P-Verschaltung mit den Prozessoren verbunden sein, sodass lokale Cache-Informationen eines oder beider Prozessoren in dem gemeinsam genutzten Cache gespeichert werden können, wenn ein Prozessor in einen Niederleistungsmodus gesetzt wird.
  • Chipsatz 1690 kann mit einem ersten Bus 1616 über eine Schnittstelle 1696 gekoppelt sein. In einer Ausführungsform kann der erste Bus 1616 ein peripherer Komponentenverbindungsbus (PCI, Peripheral Component Interconnect) oder ein Bus, wie etwa ein PCI-Express-Bus oder ein anderer E/A-Verbindungsbus der dritten Generation sein, obwohl der Schutzumfang der vorliegenden Offenbarung nicht so beschränkt ist.
  • Wie in 16 gezeigt, können verschiedene E/A-Vorrichtungen 1614 mit dem ersten Bus 1616 gekoppelt sein, zusammen mit einer Busbrücke 1618, die den ersten Bus 1616 mit einem zweiten Bus 1620 koppelt. In einer Ausführungsform sind ein oder mehrere zusätzliche Prozessoren 1615, wie etwa Koprozessoren, MIC-Prozessoren mit hohem Durchsatz, GPGPUs, Beschleuniger (wie etwa, z. B. Grafikbeschleuniger oder Digitalsignalverarbeitungseinheiten (DSPs)), feldprogrammierbare Gate-Arrays oder jeder andere Prozessor, mit dem ersten Bus 1616 gekoppelt. In einer Ausführungsform kann der zweite Bus 1620 ein Bus mit niedriger Pinzahl (LPC, Low Pin Count) sein. Verschiedene Vorrichtungen können mit einem zweiten Bus 1620 gekoppelt sein, einschließlich, beispielsweise eine Tastatur und/oder eine Maus 1622, Kommunikationsvorrichtungen 1627 und eine Speichereinheit 1628, wie etwa ein Plattenlaufwerk oder eine andere Massenspeichervorrichtung, die, in einer Ausführungsform, Befehle/Code und Daten 1630 umfassen kann. Ferner kann eine Audio-E/A 1624 mit dem zweiten Bus 1620 gekoppelt sein. Es ist zu beachten, dass andere Architekturen möglich sind. Beispielsweise kann ein System anstelle der Punkt-zu-Punkt-Architektur aus 16 einen Multi-Drop-Bus oder eine andere solche Architektur umsetzen.
  • Jetzt Bezug nehmend auf 17 ist ein Blockdiagramm eines zweiten spezifischeren Systems 1700 in Übereinstimmung mit einer Ausführungsform der Offenbarung gezeigt. Ähnliche Elemente in 16 und 17 tragen ähnliche Bezugszeichen, und gewisse Aspekte von 16 wurden in 17 ausgelassen, um Eintrüben von anderen Aspekten aus 17 zu verhindern.
  • 17 stellt dar, dass die Prozessoren 1670, 1680 integrierten Speicher und E/A-Steuerlogik („CL“) 1672 bzw. 1682 umfassen können. Daher umfasst die CL 1672, 1682 integrierte Speichersteuerungseinheiten und umfasst E/A-Steuerlogik. 17 stellt dar, dass nicht nur die Speicher 1632, 1634 mit der CL 1672, 1682 gekoppelt sind, sondern dass auch E/A-Vorrichtungen 1714 ebenfalls mit der Steuerlogik 1672, 1682 gekoppelt sind. Ältere E/A-Vorrichtungen 1715 sind mit dem Chipsatz 1690 gekoppelt.
  • Jetzt Bezug nehmend auf 18 ist ein Blockdiagramm eines SoC 1800 in Übereinstimmung mit einer Ausführungsform der Offenbarung gezeigt. Ähnliche Elemente in 14 tragen ähnliche Bezugszeichen. Außerdem sind Felder mit gestrichelten Linien optionale Merkmale auf weiterentwickelten SoCs. In 18 ist bzw. sind Verbindungseinheit(en) 1802 gekoppelt mit: einem Anwendungsprozessor 1810, der einen Satz von einem oder mehreren Kernen 1402A-N und gemeinsam genutzte Cacheeinheit(en) 1406 umfasst; einer Systemagenteneinheit 1410; einer oder mehreren Bussteuerungseinheiten 1416; einer oder mehreren integrierten Speichersteuerungseinheiten 1414; einem Satz aus einem oder mehreren Koprozessoren 1820, der integrierte Grafiklogik, einen Bildprozessor, einen Audioprozessor und einen Videoprozessor umfassen kann; einer statischen Direktzugriffsspeichereinheit (SRAM) 1830; einer Direktzugriffsspeichereinheit (DMA) 1832; und einer Anzeigeeinheit 1840 zum Koppeln mit einer oder mehreren externen Anzeigen. In einer Ausführungsform umfasst bzw. umfassen der/die Koprozessor(en) 1820 einen speziellen Prozessor, wie etwa, beispielsweise, einen Netzwerk- oder Kommunikationsprozessor, eine Komprimierungsengine, eine GPGPU, einen MIC-Prozessor mit hohem Durchsatz, einen eingebetteten Prozessor oder ähnliches.
  • Hier offenbarte Ausführungsformen (z. B. der Mechanismen) können in Hardware, Software, Firmware oder einer Kombination aus solchen Umsetzungsansätzen umgesetzt sein. Ausführungsformen der Offenbarung können als Computerprogramm oder Programmcode, der auf programmierbaren Systemen, zumindest einen Prozessor, ein Speichersystem (einschließlich flüchtiger und nichtflüchtiger Speicher und/oder Speicherelemente), zumindest eine Eingabevorrichtung und zumindest eine Ausgabevorrichtung umfassend, ausgeführt wird.
  • Programmcode, wie etwa Code 1630, dargestellt in 16, kann auf die Eingabebefehle angewendet werden, um die hier beschriebenen Funktionen durchzuführen und Ausgabeinformationen zu erzeugen. Die Ausgabeinformationen können in bekannter Weise auf eine oder mehrere Ausgabevorrichtungen angewendet werden. Im Zusammenhang mit dieser Anmeldung umfasst ein Verarbeitungssystem jedes System, das einen Prozessor hat, wie etwa, beispielsweise, einen Digitalsignalprozessor (DSP), einen Mikrocontroller, eine anwendungsspezifische integrierte Schaltung (ASIC, Application Specific Integrated Circuit) oder einen Mikroprozessor.
  • Der Programmcode kann in einer höheren prozeduralen oder objektorientierten Programmiersprache umgesetzt sein, um mit einem Verarbeitungssystem zu kommunizieren. Der Programmcode kann auch, wenn gewünscht, in Assembler- oder Maschinensprache umgesetzt sein. Tatsächlich sind die hier beschriebenen Mechanismen in ihrem Umfang nicht auf eine bestimmte Programmiersprache beschränkt. In jedem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein.
  • Ein oder mehrere Aspekte von zumindest einer Ausführungsform können durch repräsentative Befehle, gespeichert auf einem maschinenlesbaren Medium, das unterschiedliche Logik innerhalb des Prozessors repräsentiert, umgesetzt sein, die, wenn von einer Maschine gelesen, die Maschine veranlassen, Logik zu erzeugen, um die hier beschriebenen Techniken durchzuführen. Solche Repräsentationen, auch als „IP-Kerne“ bekannt, können auf einem greifbaren, maschinenlesbaren Medium gespeichert und verschiedenen Kunden oder Fertigungseinrichtungen bereitgestellt werden, um in die Fertigungsmaschinen geladen zu werden, die die Logik oder den Prozessor tatsächlich fertigen.
  • Solche maschinenlesbaren Speichermedien können unter anderem umfassen: nicht-flüchtige, greifbare Anordnungen von Artikeln, die durch eine Maschine gefertigt oder gebildet werden, einschließlich Speichermedien, wie etwa Festplatten, jeder andere Typ von Platte, einschließlich Floppy Disks, optische Platten, CD-Nur-Lese-Speicher (CD-ROMs), wiederbeschreibbare Compact Disks (CD-RWs) und magnetooptische Platten, Halbleitervorrichtungen, wie etwa Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher (RAMs), wie etwa dynamische Direktzugriffsspeicher (DRAMs), statische Direktzugriffsspeicher (SRAMs), löschbare, programmierbare Nur-Lese-Speicher (EPROMs), Flash-Speicher, elektrisch löschbare, programmierbare Nur-Lese-Speicher (EEPROMs), Phasenwechselspeicher (PCM), magnetische oder optische Karten oder jeden anderen Typ von zum Speichern von elektronischen Befehlen geeigneten Medien.
  • Entsprechend umfassen Ausführungsformen der Offenbarung auch nicht-flüchtige, materielle, maschinenlesbare Medien, Befehle enthaltend oder Konzeptionsdaten enthaltend, wie etwa Hardwarebeschreibungssprache (HDL, Hardware Description Language), die Strukturen, Schaltungen, Einrichtungen, Prozessoren und/oder Systemmerkmale, wie hier beschrieben, definiert. Solche Ausführungsformen können auch als Programmprodukte bezeichnet werden.
  • Emulierung (einschließlich binäre Übersetzung, Code-Morphing usw.)
  • In einigen Fällen kann ein Befehlsumwandler verwendet werden, um einen Befehl aus einem Quellbefehlssatz in einen Zielbefehlssatz umzuwandeln. Beispielsweise kann der Befehlsumwandler einen Befehl in einen oder mehrere andere Befehle, die durch den Kern zu verarbeiten sind, übersetzen (z. B. unter Verwendung von statischer binärer Übersetzung, dynamischer binärer Übersetzung, einschließlich dynamischer Kompilierung), morphen, emulieren oder anderweitig umwandeln. Der Befehlsumwandler kann in Software, Hardware, Firmware oder einer Kombination daraus umgesetzt sein. Der Befehlsumwandler kann auf dem Prozessor, außerhalb des Prozessors oder teilweise auf und teilweise außerhalb des Prozessors sein.
  • 19 ist ein Blockdiagramm, die Verwendung eines Softwarebefehlsumwandlers zum Umwandeln binärer Befehle in einem Quellbefehlssatz in binäre Befehle in einem Zielbefehlssatz abgesetzt darstellend, gemäß Ausführungsformen der Offenbarung. In der dargestellten Ausführungsform ist der Befehlsumwandler ein Softwarebefehlsumwandler, obwohl der Befehlsumwandler alternativ in Software, Firmware, Hardware oder verschiedenen Kombinationen daraus umgesetzt sein kann. 19 zeigt, wie ein Programm in einer höheren Sprache 1902 mit einem x86-Kompilierer 1904 kompiliert werden kann, um x86-Binärcode 1906 zu erzeugen, der systemintern durch einen Prozessor mit zumindest einem x86-Befehlssatzkern 1916 ausgeführt werden kann. Der Prozessor mit zumindest einem ersten Befehlssatzkern 1916 stellt jeden Prozessor dar, der im Wesentlichen die gleichen Funktionen durchführen kann wie ein Intel®-Prozessor mit zumindest einem x86-Befehlssatzkern durch kompatibles Ausführen oder anderweitiges Verarbeiten (1) eines wesentlichen Teils des Befehlssatzes des Intel®-x86-Befehlssatzkerns oder (2) von Objektcodeversionen von Anwendungen oder anderer Software, dazu bestimmt, auf einem Intel®-Prozessor mit zumindest einem x86-Befehlssatzkern ausgeführt zu werden, um im Wesentlichen das gleiche Ergebnis zu erreichen wie ein Intel®-Prozessor mit zumindest einem x86-Befehlssatzkern. Der x86-Kompilierer 1904 repräsentiert einen Kompilierer, der betreibbar ist, um x86-Binärcode 1906 (z. B. Objektcode) zu erzeugen, der mit oder ohne zusätzliche Verknüpfungsverarbeitung auf dem Prozessor mit zumindest einem x86-Befehlssatzkern 1916 ausgeführt werden kann. In ähnlicher Weise zeigt 19, wie das Programm in der höheren Sprache 1902 mit einem alternativen Befehlssatzcompiler 1908 kompiliert werden kann, um alternativen Befehlssatz-Binärcode 1910 zu erzeugen, der systemintern durch einen Prozessor ohne zumindest einen x86-Befehlssatzkern 1914 (z. B. einen Prozessor mit Kernen, die den MIPS Befehlssatz von MIPS Technologies aus Sunnyvale, CA ausführen und/oder den ARM-Befehlssatz von ARM Holdings aus Sunnyvale, CA, ausführen) ausgeführt werden kann. Der Befehlsumwandler 1912 wird verwendet, um den x86-Binärcode 1906 in Code umzuwandeln, der systemintern durch den Prozessor ohne einen x86-Befehlssatzkern 1914 ausgeführt werden kann. Dieser umgewandelte Code ist wahrscheinlich nicht der gleiche wie der alternative Befehlssatz-Binärcode 1910, da ein Befehlsumwandler, der dies erreichen könnte, schwierig zu erstellen ist; allerdings erfüllt der umgewandelte Code die allgemeine Operation und besteht aus Befehlen aus dem alternativen Befehlssatz. Daher repräsentiert der Befehlsumwandler 1912 Software, Firmware, Hardware oder eine Kombination daraus, die, durch Emulierung, Simulation oder jeden anderen Prozess, einem Prozessor oder einer anderen elektronischen Vorrichtung, die keinen x86-Befehlssatzprozessor oder -kern hat, ermöglicht, den x86-Binärcode 1906 auszuführen.

Claims (24)

  1. Hardwareprozessorkern, der Folgendes umfasst: eine Decodierschaltung zum Decodieren von Befehlen in Sätze einer oder mehrerer Mikrooperationen; eine Befehlsdecodierwarteschlange zum Speichern der Sätze einer oder mehrerer Mikrooperationen; mehrere unterschiedliche Typen von Ausführungsschaltungen, die jeweils einen jeweiligen Eingangsport und eine jeweilige Eingangswarteschlange umfassen; und eine Zuordnungsschaltung, umfassend mehrere Zuordnungsspuren, die mit der Befehlsdecodierwarteschlange und mit den Eingangsports der mehreren verschiedenen Typen von Ausführungsschaltungen gekoppelt sind, wobei die Zuordnungsschaltung, für eine Eingabe von Mikrooperationen auf den mehreren Zuordnungsspuren, dient zum Erzeugen einer sortierten Belegungsliste der Eingangswarteschlangen jedes Eingangsports, Erzeugen einer Vorbindungsabbildung der Eingangsports der mehreren verschiedenen Typen von Ausführungsschaltungen auf die mehreren Zuordnungsspuren in einer zirkulären Reihenfolge gemäß der sortierten Liste, wenn ein Typ von Mikrooperation von einer Zuordnungsspur nicht mit einem Typ von Ausführungsschaltung eines Eingangsports in der Vorbindungsabbildung übereinstimmt, Schieben der Vorbindungsabbildung, sodass der Eingangsport auf eine nächste Zuordnungsspur abgebildet wird, die einen übereinstimmenden Typ von Mikrooperation aufweist, um eine endgültige Abbildung der Eingangsports der mehreren verschiedenen Typen von Ausführungsschaltungen auf die mehreren Zuordnungsspuren zu erzeugen, und Binden der Eingangsports der mehreren verschiedenen Typen von Ausführungsschaltungen an die mehreren Zuordnungsspuren gemäß der endgültigen Abbildung.
  2. Hardwareprozessorkern nach Anspruch 1, wobei die Zuordnungsschaltung dazu dient, einen Port mit einer am meisten belegten Eingangswarteschlange aus der Vorbindungsabbildung der Eingangsports auf die mehreren Zuordnungsspuren zu entfernen.
  3. Hardwareprozessorkern nach einem der Ansprüche 1-2, wobei die Zuordnungsschaltung dazu dient, einen beliebigen Port mit einer Eingangswarteschlange oberhalb einer Schwellenbelegung aus der Vorbindungsabbildung der Eingangsports auf die mehreren Zuordnungsspuren zu entfernen.
  4. Hardwareprozessorkern nach einem der Ansprüche 1-3, wobei die Zuordnungsschaltung dazu dient, einen Port mit einer am wenigsten belegten Eingangswarteschlange zu identifizieren, und die Vorbindungsabbildung dazu dient, alle der mehreren Zuordnungsspuren auf den Port mit der am wenigsten belegten Eingangswarteschlange abzubilden.
  5. Hardwareprozessorkern nach einem der Ansprüche 1-4, wobei die Zuordnungsschaltung dazu dient, eine erste Vektormikrooperation eines einzelnen Befehls an einen Port einer ersten Vektorausführungsschaltung der mehreren verschiedenen Typen von Ausführungsschaltungen und eine zweite Vektormikrooperation des einzelnen Befehls an einen Port einer zweiten Vektorausführungsschaltung der mehreren verschiedenen Typen von Ausführungsschaltungen zu binden.
  6. Hardwareprozessorkern nach einem der Ansprüche 1-5, wobei eine Anzahl der mehreren Zuordnungsspuren größer als eine Anzahl der Eingangsports ist.
  7. Hardwareprozessorkern nach einem der Ansprüche 1-6, wobei die Zuordnungsschaltung dazu dient, einen statisch gebundenen Port aus der Vorbindungsabbildung der Eingangsports auf die mehreren Zuordnungsspuren zu entfernen.
  8. Hardwareprozessorkern nach einem der Ansprüche 1-7, wobei die mehreren unterschiedlichen Typen von Ausführungsschaltungen eine Ganzzahlausführungsschaltung, eine Speicherausführungsschaltung und eine Gleitkommaausführungsschaltung umfassen.
  9. Verfahren, das Folgendes umfasst: Decodieren von Befehlen in Sätze einer oder mehrerer Mikrooperationen mit einer oder mehreren Decodierschaltungen eines Prozessors, die mehrere verschiedene Typen von Ausführungsschaltungen umfassen, die jeweils einen jeweiligen Eingangsport und eine jeweilige Eingangswarteschlange umfassen; Empfangen einer Eingabe von Mikrooperationen auf mehreren Zuordnungsspuren einer Zuordnungsschaltung des Prozessors; Erzeugen, durch die Zuordnungsschaltung, einer sortierten Belegungsliste der Eingangswarteschlangen jedes Eingangsports; Erzeugen, durch die Zuordnungsschaltung, einer Vorbindungsabbildung der Eingangsports der mehreren verschiedenen Typen von Ausführungsschaltungen auf die mehreren Zuordnungsspuren in einer zirkulären Reihenfolge gemäß der sortierten Liste; Schieben, durch die Zuordnungsschaltung, wenn ein Typ von Mikrooperation von einer Zuordnungsspur nicht mit einem Typ von Ausführungsschaltung eines Eingangsports in der Vorbindungsabbildung übereinstimmt, der Vorbindungsabbildung, sodass der Eingangsport auf eine nächste Zuordnungsspur abgebildet wird, die einen übereinstimmenden Typ von Mikrooperation aufweist, um eine endgültige Abbildung der Eingangsports der mehreren verschiedenen Typen von Ausführungsschaltungen auf die mehreren Zuordnungsspuren zu erzeugen; und Binden, durch die Zuordnungsschaltung, der Eingangsports der mehreren unterschiedlichen Typen von Ausführungsschaltungen an die mehreren Zuordnungsspuren gemäß der endgültigen Abbildung.
  10. Verfahren nach Anspruch 9, ferner umfassend Entfernen, durch die Zuordnungsschaltung, eines Ports mit einer am meisten belegten Eingangswarteschlange aus der Vorbindungsabbildung der Eingangsports auf die mehreren Zuordnungsspuren.
  11. Verfahren nach einem der Ansprüche 9-10, ferner umfassend Entfernen, durch die Zuordnungsschaltung, eines beliebigen Ports mit einer Eingangswarteschlange oberhalb einer Schwellenbelegung aus der Vorbindungsabbildung der Eingangsports auf die mehreren Zuordnungsspuren.
  12. Verfahren nach einem der Ansprüche 9-11, ferner umfassend Identifizieren, durch die Zuordnungsschaltung, eines Ports mit einer am wenigsten belegten Eingangswarteschlange, wobei die Vorbindungszuordnung alle der mehreren Zuordnungsspuren auf den Port mit der am wenigsten belegten Eingangswarteschlange abbildet.
  13. Verfahren nach einem der Ansprüche 9-12, wobei das Binden Binden einer ersten Vektormikrooperation eines einzelnen Befehls an einen Port einer ersten Vektorausführungsschaltung der mehreren verschiedenen Typen von Ausführungsschaltungen und einer zweiten Vektormikrooperation des einzelnen Befehls an einen Port einer zweiten Vektorausführungsschaltung der mehreren verschiedenen Typen von Ausführungsschaltungen umfasst.
  14. Verfahren nach einem der Ansprüche 9-13, wobei eine Anzahl der mehreren Zuordnungsspuren größer als eine Anzahl der Eingangsports ist.
  15. Verfahren nach einem der Ansprüche 9-14, ferner umfassend Entfernen, durch die Zuordnungsschaltung, eines statisch gebundenen Ports aus der Vorbindungsabbildung der Eingangsports auf die mehreren Zuordnungsspuren.
  16. Verfahren nach einem der Ansprüche 9-15, wobei die mehreren unterschiedlichen Typen von Ausführungsschaltungen eine Ganzzahlausführungsschaltung, eine Speicherausführungsschaltung und eine Gleitkommaausführungsschaltung umfassen.
  17. Hardwareprozessorkern, der Folgendes umfasst: eine Decodierschaltung zum Decodieren von Befehlen in Sätze einer oder mehrerer Mikrooperationen; eine Befehlsdecodierwarteschlange zum Speichern der Sätze einer oder mehrerer Mikrooperationen; mehrere unterschiedliche Typen von Ausführungsschaltungen, die jeweils einen jeweiligen Eingangsport und eine jeweilige Eingangswarteschlange umfassen; und eine Zuordnungsschaltung, umfassend mehrere Zuordnungsspuren, die mit der Befehlsdecodierwarteschlange und mit den Eingangsports der mehreren verschiedenen Typen von Ausführungsschaltungen gekoppelt sind, wobei die Zuordnungsschaltung, für eine Eingabe von Mikrooperationen auf den mehreren Zuordnungsspuren und für jeden Typ der mehreren verschiedenen Typen von Ausführungsschaltungen, dient zum Erzeugen einer sortierten Belegungsliste der Eingangswarteschlangen jedes Eingangsports, Erzeugen einer Vorbindungsabbildung der Eingangsports der mehreren verschiedenen Typen von Ausführungsschaltungen auf die mehreren Zuordnungsspuren in einer zirkulären Reihenfolge gemäß der sortierten Liste, wenn ein Typ von Mikrooperation von einer Zuordnungsspur nicht mit einem Typ von Ausführungsschaltung eines Eingangsports in der Vorbindungsabbildung übereinstimmt, Schieben der Vorbindungsabbildung, sodass der Eingangsport auf eine nächste Zuordnungsspur abgebildet wird, die einen übereinstimmenden Typ von Mikrooperation aufweist, um eine endgültige Abbildung der Eingangsports der mehreren verschiedenen Typen von Ausführungsschaltungen auf die mehreren Zuordnungsspuren zu erzeugen, und Binden der Eingangsports der mehreren verschiedenen Typen von Ausführungsschaltungen an die mehreren Zuordnungsspuren gemäß den endgültigen Abbildungen.
  18. Hardwareprozessorkern nach Anspruch 17, wobei die Zuordnungsschaltung dazu dient, für jeden Typ der mehreren unterschiedlichen Typen von Ausführungsschaltungen einen Port mit einer am meisten belegten Eingangswarteschlange aus der Vorbindungsabbildung der Eingangsports auf die mehreren Zuordnungsspuren zu entfernen.
  19. Hardwareprozessorkern nach einem der Ansprüche 17-18, wobei die Zuordnungsschaltung dazu dient, für jeden Typ der mehreren unterschiedlichen Typen von Ausführungsschaltungen einen beliebigen Port mit einer Eingangswarteschlange oberhalb einer Schwellenbelegung aus der Vorbindungsabbildung der Eingangsports auf die mehreren Zuordnungsspuren zu entfernen.
  20. Hardwareprozessorkern nach einem der Ansprüche 17-19, wobei die Zuordnungsschaltung dazu dient, für jeden Typ der mehreren unterschiedlichen Typen von Ausführungsschaltungen einen Port mit einer am wenigsten belegten Eingangswarteschlange zu identifizieren, und die Vorbindungsabbildung dazu dient, alle der mehreren Zuordnungsspuren auf den Port mit der am wenigsten belegten Eingangswarteschlange abzubilden.
  21. Hardwareprozessorkern nach einem der Ansprüche 17-20, wobei die Zuordnungsschaltung dazu dient, eine erste Vektormikrooperation eines einzelnen Befehls an einen Port einer ersten Vektorausführungsschaltung der mehreren verschiedenen Typen von Ausführungsschaltungen und eine zweite Vektormikrooperation des einzelnen Befehls an einen Port einer zweiten Vektorausführungsschaltung der mehreren verschiedenen Typen von Ausführungsschaltungen zu binden.
  22. Hardwareprozessorkern nach einem der Ansprüche 17-21, wobei eine Anzahl der mehreren Zuordnungsspuren größer als eine Anzahl der Eingangsports ist.
  23. Hardwareprozessorkern nach einem der Ansprüche 17-22, wobei die Zuordnungsschaltung dazu dient, einen statisch gebundenen Port aus der Vorbindungsabbildung der Eingangsports auf die mehreren Zuordnungsspuren zu entfernen.
  24. Hardwareprozessorkern nach einem der Ansprüche 17-23, wobei die mehreren unterschiedlichen Typen von Ausführungsschaltungen eine Ganzzahlausführungsschaltung, eine Speicherausführungsschaltung und eine Gleitkommaausführungsschaltung umfassen.
DE102021121973.6A 2020-09-26 2021-08-25 Verfahren, systeme und einrichtungen für skalierbare portbindung für asymmetrische ausführungs-ports und zuordnungsbreiten eines prozessors Pending DE102021121973A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/033,739 US20220100569A1 (en) 2020-09-26 2020-09-26 Methods, systems, and apparatuses for scalable port-binding for asymmetric execution ports and allocation widths of a processor
US17/033,739 2020-09-26

Publications (1)

Publication Number Publication Date
DE102021121973A1 true DE102021121973A1 (de) 2022-04-14

Family

ID=80818299

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021121973.6A Pending DE102021121973A1 (de) 2020-09-26 2021-08-25 Verfahren, systeme und einrichtungen für skalierbare portbindung für asymmetrische ausführungs-ports und zuordnungsbreiten eines prozessors

Country Status (3)

Country Link
US (1) US20220100569A1 (de)
CN (1) CN114327635A (de)
DE (1) DE102021121973A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115878190B (zh) * 2023-03-08 2023-04-21 北京工业大学 一种应用于发射队列间指令调度填充的方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9372698B2 (en) * 2013-06-29 2016-06-21 Intel Corporation Method and apparatus for implementing dynamic portbinding within a reservation station
CN112540796B (zh) * 2019-09-23 2024-05-07 阿里巴巴集团控股有限公司 一种指令处理装置、处理器及其处理方法

Also Published As

Publication number Publication date
US20220100569A1 (en) 2022-03-31
CN114327635A (zh) 2022-04-12

Similar Documents

Publication Publication Date Title
DE102018005105A1 (de) Befehle für entfernte atomare operationen
DE102015002383A1 (de) Verfahren und Vorrichtung zum Implementieren einer dynamischen Out-of-order-Prozessorpipeline
DE112012007088B4 (de) Vorrichtung, verfahren und system mit einem befehl zum reduzieren von elementen in einem vektorregister mit einem schrittweisem zugriffsmuster
DE102018005216A1 (de) Prozessoren, Verfahren und Systeme für einen konfigurierbaren, räumlichen Beschleuniger mit Transaktions- und Wiederholungsmerkmalen
DE112017001825T5 (de) Prozessoren, verfahren, systeme und instruktionen zum atomischen speichern von daten, die breiter als eine nativ unterstützte datenbreite sind, in einem speicher
DE112013003743T5 (de) Beschleunigte spurübergreifende Vektorreduzierungsbefehle
DE112013004867T5 (de) Befehl und Logik zum Bereitstellen von Push-Puffer-Kopier- und Speicher-Funktionalität
DE112013005416T5 (de) Verfahren, Vorrichtungen, Befehle und Logik zum Bereitstellen von Vektoradressenkonflikt-Detektionsfunktionalität
DE102014003795A1 (de) Verfahren und Vorrichtungen für Fusionsbefehle zur Bereitstellung der OR-Test- und AND-Test-Funktionalität auf mehreren Testquellen
DE112017004911T5 (de) Anweisung und Logik für die Erkennung eines numerischen Ansammlungsfehlers
DE102013021221A1 (de) Befehle und Logik zur Vektorisierung von bedingten Schleifen
DE112013004751T5 (de) Prozessor mit mehreren Kernen, gemeinsam genutzter Kernerweiterungslogik und gemeinsam genutzten Kernerweiterungsnutzungsbefehlen
DE102014003563A1 (de) Fusionierbare befehle und logik zum versehen mit or-test- und and-test-funktionalität unter benutzen von mehrfachtestquellen
DE112013004800T5 (de) Anweisung zur Bitverschiebung nach links mit Ziehen von Einsen in niedrigwertigere Bit
DE202016009016U1 (de) Befehle und Logik für wiederkehrende benachbarte Sammlungen
DE102014003799A1 (de) Systeme und Verfahren zur Übertragungseliminierung mit Bypass-Mehrfachinstanziierungstabelle
DE112013004783T5 (de) Durch Lese- und Schreibmasken gesteuerter Vektor-Verschiebebefehl
DE102018001229A1 (de) Beschleunigerschaltung mit variabler Wortlänge für ein neuronales Netzwerk
DE112011105665T5 (de) Befehl und Logik zum Liefern von Vektorladen und -speichern mit Schritt- und Maskierfunktionalität
DE102014004564A1 (de) Prozessoren, verfahren und systeme zum implementieren von teilregisterzugriffen mit maskierten gesamtregisterzugriffen
DE112017001716T5 (de) Speicherkopierbefehle, prozessoren, verfahren und systeme
DE102018132521A1 (de) Vorrichtung und verfahren zur verflachung und reduktion von schleifen in einer single instruction, multiple data- (simd-) pipeline
DE112016007516T5 (de) Vorrichtungen und verfahren für eine prozessorarchitektur
DE102018006537A1 (de) Dynamische Leistungsbeeinflussung in einem Prozessor
DE102014003667A1 (de) Konvertieren bedingter kurzer vorwärtsabzweigungen zu rechnerisch äquivalenten prädizierten instruktionen