DE102018128939A1 - Vorrichtung und Verfahren zur Vektormultiplikation vorzeichenbehafteter Wörter, Rundung und Sättigung - Google Patents

Vorrichtung und Verfahren zur Vektormultiplikation vorzeichenbehafteter Wörter, Rundung und Sättigung Download PDF

Info

Publication number
DE102018128939A1
DE102018128939A1 DE102018128939.1A DE102018128939A DE102018128939A1 DE 102018128939 A1 DE102018128939 A1 DE 102018128939A1 DE 102018128939 A DE102018128939 A DE 102018128939A DE 102018128939 A1 DE102018128939 A1 DE 102018128939A1
Authority
DE
Germany
Prior art keywords
signed
rounding
word data
packed
broken
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
DE102018128939.1A
Other languages
English (en)
Inventor
Venkateswara Madduri
Carl Murray
Elmoustapha Ould-Ahmed-Vall
Mark Charney
Robert Valentine
Jesus Corbal
Milind Girkar
Bret Toll
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 DE102018128939A1 publication Critical patent/DE102018128939A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Vorrichtung und Verfahren zum Ausführen einer vorzeichenbehafteten gebrochenen Multiplikation gepackter Datenelemente. Eine Ausführungsform eines Prozessors umfasst z. B. Folgendes: einen Decodierer, um einen Befehl zu decodieren; ein erstes Quellregister, um erste mehrere gepackte vorzeichenbehaftete Wortdatenelemente zu speichern; ein zweites Quellregister, um zweite mehrere gepackte vorzeichenbehaftete Wortdatenelemente zu speichern; ein Steuerregister, um einen Rundungssteuerwert zu speichern, um eine Rundungsbetriebsart anzugeben; eine Ausführungsschaltungsanordnung, um den decodierten Befehl auszuführen, wobei die Ausführungsschaltungsanordnung Folgendes umfasst: eine Multipliziererschaltungsanordnung, um jedes der gepackten vorzeichenbehafteten Wortdatenelemente der ersten Mehreren mit einem entsprechenden gepackten vorzeichenbehafteten Wortdatenelement der zweiten Mehreren gleichzeitig zu multiplizieren, um mehrere vorzeichenbehaftete Doppelwortprodukte zu erzeugen; eine Umsetzungsschaltungsanordnung, um die mehreren vorzeichenbehafteten Doppelwortprodukte in mehrere gebrochene vorzeichenbehaftete Wörter umzusetzen, wobei die Umsetzungsschaltungsanordnung eine Rundungsschaltungsanordnung enthält, um die vorzeichenbehafteten Doppelwortprodukte in Übereinstimmung mit der durch den Rundungssteuerwert angegebenen Rundungsbetriebsart zu runden, um die mehreren gebrochenen vorzeichenbehafteten Wörter zu erzeugen; und ein Zielregister, um die mehreren gebrochenen vorzeichenbehafteten Wörter als gepackte vorzeichenbehaftete gebrochene Wortdatenelemente an spezifizierten Datenelementpositionen innerhalb des Zielregisters zu speichern.

Description

  • HINTERGRUND
  • Gebiet der Erfindung
  • Die Ausführungsformen der Erfindung beziehen sich im Allgemeinen auf das Gebiet der Computerprozessoren. Insbesondere beziehen sich die Ausführungsformen auf eine Vorrichtung und ein Verfahren zum Ausführen einer Vektormultiplikation vorzeichenbehafteter Wörter, eines Rundens und einer Sättigung.
  • Beschreibung des Standes der Technik
  • Ein Befehlssatz oder eine Befehlssatzarchitektur (ISA) ist der auf das Programmieren bezogene Teil der Computerarchitektur, einschließlich der systemeigenen Datentypen, der Befehle, der Registerarchitektur, der Adressierungsbetriebsarten, der Speicherarchitektur, der Unterbrechungs- und Ausnahmebehandlung und der externen Eingabe und Ausgabe (E/A). Es sollte angegeben werden, dass sich der Begriff „Befehl“ hier im Allgemeinen auf die Makrobefehle - das sind die Befehle, die dem Prozessor zur Ausführung bereitgestellt werden - im Gegensatz zu den Mikrobefehlen oder Mikro-Ops - die das Ergebnis des Decodierers des Prozessors sind, der die Makrobefehle decodiert, bezieht. Die Mikrobefehle oder Mikro-Ops können konfiguriert sein, eine Ausführungseinheit in dem Prozessor anzuweisen, die Operationen auszuführen, um die dem Makrobefehl zugeordnete Logik zu implementieren.
  • Die ISA ist von der Mikroarchitektur unterschieden, die der Satz der Prozessorentwurfstechniken ist, die verwendet werden, um den Befehlssatz zu implementieren. Die Prozessoren mit verschiedenen Mikroarchitekturen können einen gemeinsamen Befehlssatz gemeinsam benutzen.
  • Die Intel® Pentium 4 Prozessoren, die Intel® Core™ Prozessoren und die Prozessoren von Advanced Micro Devices, Inc. von Sunnyvale CA, implementieren beinahe völlig gleiche Versionen des x86-Befehlssatzes (mit einigen Erweiterungen, die bei neueren Versionen hinzugefügt worden sind), wobei sie aber unterschiedliche interne Bauformen aufweisen. Die gleiche Registerarchitektur des ISA kann z. B. unter Verwendung wohlbekannter Techniken, einschließlich dedizierter physikalischer Register, eines oder mehrerer dynamisch zugewiesener physikalischer Register unter Verwendung eines Registerumbenennungsmechanismus (z. B. der Verwendung der Registeraliastabelle (RAT), eines Umordnungspuffers (ROB) und einer Stilllegungsregisterdatei), in unterschiedlichen Arten in unterschiedlichen Mikroarchitekturen implementiert sein. Wenn es nicht anders spezifiziert ist, werden die Ausdrücke Registerarchitektur, Registerdatei und Register hier verwendet, um darauf, was für die Software/den Programmierer sichtbar ist, und die Weise, in der die Befehle die Register spezifizieren, Bezug zu nehmen. Wo eine Unterscheidung erforderlich ist, wird das Adjektiv „logisch“, „architektonisch“ oder „softwaresichtbar“ verwendet, um die Register/Dateien in der Registerarchitektur anzugeben, während andere Adjektive verwendet werden, um die Register in einer gegebenen Mikroarchitektur (z. B. einem physikalischen Register, einem Umordnungspuffer, einem Stilllegungsregister, einem Registerpool) zu bezeichnen.
  • Multiplizieren-Akkumulieren ist eine häufige Operation der Verarbeitung digitaler Signale, die das Produkt aus zwei Zahlen berechnet und dieses Produkt zu einem akkumulierten Wert addiert. Vorhandene Einzelbefehl-Mehrfachdaten-Mikroarchitekturen (SIMD-Mikroarchitektur) implementieren die Multiplizieren-Akkumulieren-Operationen durch das Ausführen einer Folge von Befehlen. Ein Multiplizieren-Akkumulieren kann z. B. mit einem Multiplikationsbefehl, gefolgt von einer 4-Wege-Addition und dann einer Akkumulation mit den Ziel-Quadwort-Daten ausgeführt werden, um zwei gesättigte 64-Bit-Ergebnisse zu erzeugen.
  • Figurenliste
  • Ein besseres Verständnis der vorliegenden Erfindung kann aus der folgenden ausführlichen Beschreibung im Zusammenhang mit den folgenden Zeichnungen erhalten werden; es zeigen:
    • 1A und 1B Blockschaltpläne, die ein generisches vektorfreundliches Befehlsformat und dessen Befehlsschablonen gemäß den Ausführungsformen der Erfindung veranschaulichen;
    • 2A-C Blockschaltpläne, die ein beispielhaftes VEX-Befehlsformat gemäß den Ausführungsformen der Erfindung veranschaulichen;
    • 3 einen Blockschaltplan einer Registerarchitektur gemäß einer Ausführungsform der Erfindung; und
    • 4A einen Blockschaltplan, der sowohl eine beispielhafte In-Order-Holen-/Decodieren-/Stilllegungspipeline als auch eine beispielhafte Out-of-Order-Ausgabe-/Ausführungspipeline mit Registerumbenennung gemäß den Ausführungsformen der Erfindung veranschaulicht;
    • 4B einen Blockschaltplan, der eine beispielhafte Ausführungsform sowohl eines In-Order-Holen-/Decodieren-/Stilllegungskerns als auch eines beispielhaften Out-of-Order-Ausgabe-/Ausführungsarchitekturkerns mit Registerumbenennung, die in einem Prozessor enthalten sind, gemäß den Ausführungsformen der Erfindung veranschaulicht;
    • 5A einen Blockschaltplan eines einzelnen Prozessorkerns zusammen mit seiner Verbindung zu einem Zusammenschaltungsnetz auf dem Die;
    • 5B eine erweiterte Ansicht eines Teils des Prozessorkerns in 5A gemäß den Ausführungsformen der Erfindung;
    • 6 einen Blockschaltplan eines Einzelkernprozessors und eines Mehrkernprozessors mit einem integrierten Speicher-Controller und einer integrierten Graphik gemäß den Ausführungsformen der Erfindung;
    • 7 einen Blockschaltplan eines Systems in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung;
    • 8 einen Blockschaltplan eines zweiten Systems in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung;
    • 9 einen Blockschaltplan eines dritten Systems in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung;
    • 10 einen Blockschaltplan eines Systems auf einem Chip (SoC) in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung;
    • 11 einen Blockschaltplan, der die Verwendung eines Software-Befehlsumsetzers, um binäre Befehle in einem Quellbefehlssatz in binäre Befehle in einem Zielbefehlssatz umzusetzen, gemäß den Ausführungsformen der Erfindung gegenüberstellt;
    • 12 eine Prozessorarchitektur, in der die Ausführungsformen der Erfindung implementiert sein können;
    • 13 mehrere gepackte Datenelemente, die reelle und komplexe Werte enthalten, in Übereinstimmung mit einer Ausführungsform;
    • 14A-B Ausführungsformen einer Verarbeitungsarchitektur für gepackte Daten; und
    • 15 ein Verfahren in Übereinstimmung mit einer Ausführungsform der Erfindung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der folgenden Beschreibung werden für Erklärungszwecke zahlreiche spezifische Einzelheiten dargelegt, um ein umfassendes Verständnis der im Folgenden beschriebenen Ausführungsformen der Erfindung bereitzustellen. Es ist jedoch für die Fachleute auf dem Gebiet offensichtlich, dass die Ausführungsformen der Erfindung ohne einige dieser spezifischen Einzelheiten praktiziert werden können. In anderen Fällen sind wohlbekannte Strukturen und Vorrichtungen in Blockschaltplanform gezeigt, um das Verbergen der zugrundeliegenden Prinzipien der Ausführungsformen der Erfindung zu vermeiden.
  • BEISPIELHAFTE PROZESSORARCHITEKTUREN, BEFEHLSFORMATE UND DATENTYPEN
  • Ein Befehlssatz enthält ein oder mehrere Befehlsformate. Ein gegebenes Befehlsformat definiert verschiedene Felder (z. B. die Anzahl der Bits, die Stelle der Bits), um unter anderem die auszuführende Operation (z. B. den Opcode) und den (die) Operanden, an dem (denen) diese Operation auszuführen ist, zu spezifizieren. Einige Befehlsformate sind durch die Definition von Befehlsschablonen (oder Unterformaten) weiter aufgegliedert. Die Befehlsschablonen eines gegebenen Befehlsformats können z. B. so definiert sein, dass sie andere Teilmengen der Felder des Befehlsformats aufweisen (die enthaltenen Felder sind typischerweise in der gleichen Reihenfolge, wobei wenigstens einige verschiedene Bitpositionen aufweisen, weil weniger Felder enthalten sind), und/oder so definiert sein, dass sie ein gegebenes Feld aufweisen, das anders interpretiert wird. Folglich wird jeder Befehl eines ISA unter Verwendung eines gegebenen Befehlsformats (und in einer gegebenen Befehlsschablone der Befehlsschablonen dieses Befehlsformats, falls sie definiert sind) ausgedrückt, wobei er Felder zum Spezifizieren der Operation und der Operanden enthält. Ein beispielhafter ADD-Befehl weist z. B. einen spezifischen Opcode und ein Befehlsformat auf, das ein Opcode-Feld enthält, um diese Opcode- und Operandenfelder zu spezifizieren, um Operanden (Quelle1/Ziel und Quelle2) auszuwählen; wobei ein Auftreten dieses ADD-Befehls in einem Befehlsstrom spezifische Inhalte in den Operandenfeldern aufweist, die die spezifischen Operanden auswählen.
  • Die Ausführungsformen des (der) hier beschriebenen Befehls (Befehle) können in verschiedenen Formaten verkörpert sein. Zusätzlich werden im Folgenden beispielhafte Systeme, Architekturen und Pipelines ausführlich beschrieben. Die Ausführungsformen des Befehls (der Befehle) können in derartigen Systemen, Architekturen und Pipelines ausgeführt werden, sind jedoch nicht auf jene eingeschränkt, die ausführlich beschrieben werden.
  • Das generische vektorfreundliche Befehlsformat
  • Ein vektorfreundliches Befehlsformat ist ein Befehlsformat, das für Vektorbefehle geeignet ist (es gibt z. B. bestimmte Felder, die für Vektoroperationen spezifisch sind). Während die Ausführungsformen beschrieben werden, in denen sowohl Vektor- als auch Skalaroperationen durch das vektorfreundliche Befehlsformat unterstützt werden, verwenden in alternativen Ausführungsformen nur Vektoroperationen das vektorfreundliche Befehlsformat.
  • Die 1A-1B sind Blockschaltpläne, die ein generisches vektorfreundliches Befehlsformat und dessen Befehlsschablonen gemäß den Ausführungsformen der Erfindung veranschaulichen. 1A ist ein Blockschaltplan, der ein generisches vektorfreundliches Befehlsformat und dessen Befehlsschablonen der Klasse A gemäß den Ausführungsformen der Erfindung veranschaulicht; während 1B ein Blockschaltplan ist, der das generische vektorfreundliche Befehlsformat und dessen Befehlsschablonen der Klasse B gemäß den Ausführungsformen der Erfindung veranschaulicht. Spezifisch ein generisches vektorfreundliches Befehlsformat 100, für das die Befehlsschablonen der Klasse A und der Klasse B definiert sind, wobei beide von diesen Befehlsschablonen ohne Speicherzugriff 105 und Befehlsschablonen mit Speicherzugriff 120 enthalten. Der Begriff generisch im Kontext des vektorfreundlichen Befehlsformats bezieht sich auf das Befehlsformat, das nicht an irgendeinen spezifischen Befehlssatz gebunden ist.
  • Indessen werden die Ausführungsformen der Erfindung beschrieben, in denen das vektorfreundliche Befehlsformat das Folgende unterstützt: eine Länge (oder Größe) der Vektoroperanden von 64 Bytes mit Breiten (oder Größen) der Datenelemente von 32 Bits (4 Bytes) oder 64 Bits (8 Bytes), (wobei folglich ein 64-Byte-Vektor entweder aus 16 Elementen in Doppelwortgröße oder 8 Elementen in Vierfachwortgröße besteht); eine Länge (oder Größe) der Vektoroperanden von 64 Bytes mit Breiten (oder Größen) der Datenelemente von 16 Bits (2 Bytes) oder 8 Bits (1 Byte); eine Länge (oder Größe) der Vektoroperanden von 32 Bytes mit Breiten (oder Größen) der Datenelemente von 32 Bits (4 Bytes), 64 Bits (8 Bytes), 16 Bits (2 Bytes) oder 8 Bits (1 Byte); und eine Länge (oder Größe) der Vektoroperanden von 16 Bytes mit Breiten (oder Größen) der Datenelemente von 32 Bits (4 Bytes), 64 Bits (8 Bytes), 16 Bits (2 Bytes) oder 8 Bits (1 Byte); alternative Ausführungsformen können mehr, weniger und/oder andere Größen der Vektoroperanden (z. B. 256-Byte-Vektoroperanden) mit mehr, weniger oder anderen Breiten der Datenelemente (z. B. Breiten der Datenelemente von 128 Bits (16 Bytes)) unterstützen.
  • Die Befehlsschablonen der Klasse A in 1A enthalten Folgendes: 1) innerhalb der Befehlsschablonen ohne Speicherzugriff 105 ist eine Befehlsschablone einer Operation 110 des Typs der vollen Rundensteuerung ohne Speicherzugriff und eine Befehlsschablone einer Operation 115 des Datentransformationstyps ohne Speicherzugriff gezeigt; und 2) innerhalb der Befehlsschablonen mit Speicherzugriff 120 ist eine zeitliche Befehlsschablone 125 mit Speicherzugriff und eine nicht zeitliche Befehlsschablone 130 mit Speicherzugriff gezeigt. Die Befehlsschablonen der Klasse B in 1B enthalten Folgendes: 1) innerhalb der Befehlsschablonen ohne Speicherzugriff 105 ist eine Befehlsschablone einer Operation 112 des Typs der Teilrundensteuerung mit Schreibmaskensteuerung und ohne Speicherzugriff und eine Befehlsschablone einer Operation 117 des vsize-Typs mit Schreibmaskensteuerung und ohne Speicherzugriff gezeigt; und 2) innerhalb der Befehlsschablonen mit Speicherzugriff 120 ist eine Befehlsschablone mit Schreibmaskensteuerung 127 und Speicherzugriff gezeigt.
  • Das generische vektorfreundliche Befehlsformat 100 enthält die folgenden Felder, die im Folgenden in der in den 1A-1B veranschaulichten Reihenfolge aufgelistet sind.
  • Das Formatfeld 140 - ein spezifischer Wert (ein Befehlsformat-Kennungswert) in diesem Feld identifiziert eindeutig das vektorfreundliche Befehlsformat und folglich die Auftritte von Befehlen in dem vektorfreundlichen Befehlsformat in den Befehlsströmen. Dieses Feld ist als solches in dem Sinn optional, dass es für einen Befehlssatz, der nur das generische vektorfreundliche Befehlsformat aufweist, nicht erforderlich ist.
  • Das Basisoperationsfeld 142 - sein Inhalt unterscheidet die verschiedenen Basisoperationen.
  • Das Registerindexfeld 144 - sein Inhalt spezifiziert direkt oder durch Adressenerzeugung die Orte der Quell- und Zieloperanden, ob sie sich in Registern oder im Speicher befinden. Diese enthalten eine ausreichende Anzahl von Bits, um N Register aus einer P × Q-Register Datei (z. B. 32 × 512, 16 × 128, 32 × 1024, 64 × 1024) auszuwählen. Während in einer Ausführungsform N bis zu drei Quellen und ein Zielregister sein kann, können alternative Ausführungsformen mehr oder weniger Quellen und Zielregister unterstützen (sie können z. B. bis zu zwei Quellen unterstützen, wobei eine dieser Quellen außerdem als das Ziel wirkt, sie können bis zu drei Quellen unterstützen, wobei eine dieser Quellen außerdem als das Ziel wirkt, und sie können bis zu zwei Quellen und ein Ziel unterstützen).
  • Das Modifiziererfeld 146 - sein Inhalt unterscheidet die Vorkommen der Befehle in dem generischen Vektorbefehlsformat, die den Vektorzugriff spezifizieren, von jenen, die dies nicht tun; d. h., zwischen den Befehlsschablonen ohne Speicherzugriff 105 und den Befehlsschablonen 120 mit Speicherzugriff. Die Operationen mit Speicherzugriff lesen und/oder schreiben in die Speicherhierarchie (wobei sie in einigen Fällen die Quell- und/oder Zieladressen unter Verwendung der Werte in den Registern spezifizieren), während die Operationen ohne Speicherzugriff dies nicht tun (z. B. die Quelle und die Ziele sind Register). Während in einer Ausführungsform dieses Feld außerdem zwischen drei verschiedenen Weisen unterscheidet, um die Speicheradressenberechnungen auszuführen, können alternative Ausführungsformen mehr, weniger oder andere Weisen unterstützen, um die Speicheradressenberechnungen auszuführen.
  • Das Vergrößerungsoperationsfeld 150 - sein Inhalt unterscheidet, welche von einer Vielfalt verschiedener Operationen zusätzlich zu der Basisoperation auszuführen ist. Dieses Feld ist kontextspezifisch. In einer Ausführungsform der Erfindung ist dieses Feld in ein Klassenfeld 168, ein Alphafeld 152 und ein Betafeld 154 unterteilt. Das Vergrößerungsoperationsfeld 150 ermöglicht, dass gemeinsame Gruppen von Operationen anstatt in 2, 3 oder 4 Befehlen in einem einzigen Befehl ausgeführt werden.
  • Das Maßstabsfeld 160 - sein Inhalt ermöglicht das Skalieren des Inhalts des Indexfeldes für die Speicheradressenerzeugung (z. B. für die Adressenerzeugung, die 2Maßstab * Index + Basis verwendet).
  • Das Verschiebungsfeld 162A - sein Inhalt wird als ein Teil der Speicheradressenerzeugung verwendet (z. B. für die Adressenerzeugung, die 2Maßstab * Index + Basis + Verschiebung verwendet).
  • Das Verschiebungsfaktorfeld 162B (es sei angegeben, dass die Nebeneinanderstellung des Verschiebungsfeldes 162A direkt über dem Verschiebungsfaktorfeld 162B angibt, dass das eine oder das andere verwendet wird) - sein Inhalt wird als Teil der Adressenerzeugung verwendet; es spezifiziert einen Verschiebungsfaktor, der mit der Größe eines Speicherzugriffs (N) zu skalieren ist - wobei N die Anzahl der Bytes in dem Speicherzugriff ist (z. B. für die Adressenerzeugung, die 2Maßstab * Index + Basis + skalierte Verschiebung verwendet). Redundante Bits niedriger Ordnung werden ignoriert, wobei folglich der Inhalt des Verschiebungsfaktorfeldes mit der Gesamtgröße (N) der Speicheroperanden multipliziert wird, um die endgültige Verschiebung zu erzeugen, die beim Berechnen einer effektiven Adresse zu verwenden ist. Der Wert von N wird durch die Prozessor-Hardware zur Laufzeit basierend auf dem vollen Opcode-Feld 174 (das hier später beschrieben wird) und dem Datenmanipulationsfeld 154C bestimmt. Das Verschiebungsfeld 162A und das Verschiebungsfaktorfeld 162B sind in dem Sinn optional, dass sie für die Befehlsschablonen ohne Speicherzugriff 105 nicht verwendet werden und/oder verschiedene Ausführungsformen nur eines oder keines der beiden implementieren können.
  • Das Datenelementbreitenfeld 164 - sein Inhalt unterscheidet, welche von einer Anzahl von Datenelementbreiten verwendet werden soll (in einigen Ausführungsformen für alle Befehle; in anderen Ausführungsformen nur für einige der Befehle). Dieses Feld ist in dem Sinn optional, dass es nicht erforderlich ist, falls nur eine Datenelementbreite unterstützt wird und/oder die Datenelementbreiten unter Verwendung irgendeines Aspekts der Opcodes unterstützt werden.
  • Das Schreibmaskenfeld 170 - sein Inhalt steuert auf einer Grundlage pro Datenelementposition, ob die Datenelementposition in dem Zielvektoroperanden das Ergebnis der Basisoperation und der Vergrößerungsoperation widerspiegelt. Die Befehlsschablonen der Klasse A unterstützen die Verschmelzungs-Schreibmaskierung, während die Befehlsschablonen der Klasse B sowohl die Verschmelzungsals auch die Nullsetzungs-Schreibmaskierung unterstützen. Beim Verschmelzen ermöglichen die Vektormasken, dass irgendein Satz von Elementen in dem Ziel während der Ausführung irgendeiner Operation (die durch die Basisoperation und die Vergrößerungsoperation spezifiziert ist) vor Aktualisierungen geschützt ist; in einer anderen Ausführungsform wird der alte Wert jedes Element des Ziels, wo das entsprechende Maskenbit eine 0 aufweist, beibehalten. Im Gegensatz ermöglichen die Vektormasken bei der Nullsetzung, dass während der Ausführung irgendeiner Operation (die durch die Basisoperation und die Vergrößerungsoperation spezifiziert ist) irgendein Satz von Elementen in dem Ziel null gesetzt wird; in einer Ausführungsform wird ein Element des Ziels auf 0 gesetzt, wenn das entsprechende Maskenbit einen 0-Wert aufweist. Eine Teilmenge dieser Funktionalität ist die Fähigkeit, die Vektorlänge der Operation, die ausgeführt wird, (d. h., die Spanne der Elemente, die modifiziert werden, vom ersten bis zum letzten) zu steuern; es ist jedoch nicht notwendig, dass die Elemente, die modifiziert werden, aufeinanderfolgend sind. Folglich ermöglicht das Schreibmaskenfeld 170 teilweise Vektoroperationen, einschließlich Ladeoperationen, Speicheroperationen, arithmetisch, logisch usw. Während die Ausführungsformen der Erfindung beschrieben werden, in denen der Inhalt des Schreibmaskenfeldes 170 eines aus einer Anzahl von Schreibmaskenregistern auswählt, das die zu verwendende Schreibmaske enthält, (wobei folglich der Inhalt des Schreibmaskenfeldes 170 indirekt identifiziert, dass die Maskierung auszuführen ist), ermöglichen alternative Ausführungsformen stattdessen oder zusätzlich, dass der Inhalt des Schreibmaskenfeldes 170 direkt die Maskierung spezifiziert, die auszuführen ist.
  • Das Sofortfeld 172 - sein Inhalt ermöglicht die Spezifikation eines Soforts. Dieses Feld ist in dem Sinn optional, dass es in einer Implementierung des generischen vektorfreundlichen Formats nicht vorhanden ist, die keinen Sofort unterstützt, und dass es in Befehlen nicht vorhanden ist, die keinen Sofort verwenden.
  • Das Klassenfeld 168 - sein Inhalt unterscheidet zwischen verschiedenen Klassen von Befehlen. In den 1A-B wählen die Inhalte dieses Feldes zwischen den Befehlen der Klasse A und der Klasse B aus. In den 1A-B werden die Vierecke mit abgerundeten Ecken verwendet, um einen spezifischen Wert anzugeben, der in einem Feld vorhanden ist (z. B. Klasse A 168A bzw. Klasse B 168B für das Klassenfeld 168 in 1A-B).
  • Die Befehlsschablonen der Klasse A
  • In dem Fall der Befehlsschablonen ohne Speicherzugriff 105 der Klasse A wird das Alphafeld 152 als ein RS-Feld 152A interpretiert, dessen Inhalt unterscheidet, welcher der verschiedenen Vergrößerungsoperationstypen ausgeführt werden soll (z. B. das Runden 152A.1 und die Datentransformation 152A.2 sind für die Befehlsschablonen der Operation 110 des Rundentyps ohne Speicherzugriff bzw. der Operation 115 des Datentransformationstyps ohne Speicherzugriff spezifiziert), während das Betafeld 154 unterscheidet, welche der Operationen des spezifizierten Typs ausgeführt werden soll. In den Befehlsschablonen ohne Speicherzugriff 105 sind das Maßstabsfeld 160, das Verschiebungsfeld 162A und das Verschiebungsmaßstabsfeld 162B nicht vorhanden.
  • Die Befehlsschablonen ohne Speicherzugriff - die Operation des Typs der vollen Rundensteuerung
  • In der Befehlsschablone der Operation 110 des Typs der vollen Rundensteuerung ohne Speicherzugriff wird das Betafeld 154 als ein Rundensteuerfeld 154A interpretiert, dessen Inhalt(e) ein statisches Runden bereitstellen. Während in den beschriebenen Ausführungsformen der Erfindung das Rundensteuerfeld 154A ein Feld 156 zum Unterdrücken aller Gleitkomma-Ausnahmen (SAE) und ein Rundenoperations-Steuerfeld 158 enthält, können alternative Ausführungsformen das Codieren dieser beiden Konzepte in dasselbe Feld unterstützen oder können nur das eine oder das andere dieser Konzepte/Felder aufweisen (können z. B. nur das Rundenoperations-Steuerfeld 158 aufweisen).
  • Das SAE-Feld 156 - sein Inhalt unterscheidet, ob die Ausnahmeereignismeldung zu sperren ist oder nicht; wenn der Inhalt des SAE-Feldes 156 angibt, dass die Unterdrückung freigegeben ist, meldet ein gegebener Befehl keine Art eines Gleitkomma-Ausnahmemerkers und startet keine Gleitkomma-Ausnahmebehandlungseinrichtung.
  • Das Rundenoperations-Steuerfeld 158 - sein Inhalt unterscheidet, welche aus einer Gruppe von Rundungsoperationen auszuführen ist (z. B. Aufrunden, Abrunden, Runden zur Null und Runden zum Nächsten). Folglich ermöglicht das Rundenoperations-Steuerfeld 158 das Ändern des Rundungsmodus auf einer Grundlage pro Befehl. In einer Ausführungsform der Erfindung, in der ein Prozessor ein Steuerregister zum Spezifizieren der Rundungsmodi enthält, setzt der Inhalt des Rundenoperations-Steuerfelds 150 diesen Registerwert außer Kraft.
  • Die Befehlsschablonen ohne Speicherzugriff - die Operation des Datentransformationstyps
  • In der Befehlsschablone der Operation 115 des Datentransformationstyps ohne Speicherzugriff wird das Betafeld 154 als ein Datentransformationsfeld 154B interpretiert, dessen Inhalt unterscheidet, welche aus einer Anzahl von Datentransformationen ausgeführt werden soll (z. B. keine Datentransformation, Swizzle, Rundsenden).
  • In dem Fall einer Befehlsschablone mit Speicherzugriff 120 der Klasse A wird das Alphafeld 152 als ein Räumungshinweisfeld 152B interpretiert, dessen Inhalt unterscheidet, welcher der Räumungshinweise verwendet werden soll (in 1A sind zeitlich 152B.1 und nicht zeitlich 152B.2 für die zeitliche Befehlsschablone mit Speicherzugriff 125 bzw. die nicht zeitliche Befehlsschablone mit Speicherzugriff 130 spezifiziert), während das Betafeld 154 als ein Datenmanipulationsfeld 154C interpretiert wird, dessen Inhalt unterscheidet, welche von einer Anzahl von Datenmanipulationsoperationen (die außerdem als Grundelemente bekannt sind) ausgeführt werden soll (z. B. keine Manipulation; Rundsenden; Aufwärtsumsetzung einer Quelle; und Abwärtsumsetzung eines Ziels). Die Befehlsschablonen mit Speicherzugriff 120 enthalten das Maßstabsfeld 160 und optional das Verschiebungsfeld 162A oder das Verschiebungsmaßstabsfeld 162B.
  • Die Vektorspeicherbefehle führen Vektor-Ladeoperationen aus dem und Vektor-Speicheroperationen in den Speicher mit Umsetzungsunterstützung aus. Wie bei regulären Vektorbefehlen übertragen die Vektorspeicherbefehle Daten von dem/zu dem Speicher in einer datenelementweisen Weise, wobei die Elemente, die tatsächlich übertragen werden, durch die Inhalte der Vektormaske vorgeschrieben sind, die als die Schreibmaske ausgewählt ist.
  • Die Befehlsschablonen mit Speicherzugriff - zeitlich
  • Die zeitlichen Daten sind Daten, die wahrscheinlich bald genug erneut verwendet werden, um von der Cache-Speicherung zu profitieren. Dies ist jedoch ein Hinweis, wobei verschiedene Prozessoren ihn in verschiedener Weise implementieren können, einschließlich des völligen Ignorierens des Hinweises.
  • Die Befehlsschablonen mit Speicherzugriff - nicht zeitlich
  • Es ist unwahrscheinlich, dass die nicht zeitlichen Daten bald genug erneut verwendet werden, um von der Cache-Speicherung im Cache der 1. Ebene zu profitieren, wobei ihnen die Priorität für die Räumung gegeben werden sollte. Dies ist jedoch ein Hinweis, wobei verschiedene Prozessoren ihn in verschiedener Weise implementieren können, einschließlich des völligen Ignorierens des Hinweises.
  • Die Befehlsschablonen der Klasse B
  • In dem Fall der Befehlsschablonen der Klasse B wird das Alphafeld 152 als ein Schreibmasken-Steuerfeld 152C (Z) interpretiert, dessen Inhalt unterscheidet, ob die durch das Schreibmaskenfeld 170 gesteuerte Schreibmaskierung eine Verschmelzung oder eine Nullsetzung sein sollte.
  • In dem Fall der Befehlsschablonen ohne Speicherzugriff 105 der Klasse B wird ein Teil des Betafeldes 154 als ein RL-Feld 157A interpretiert, dessen Inhalt unterscheidet, welcher der verschiedenen Vergrößerungsoperationstypen ausgeführt werden soll (z. B. das Runden 157A.1 und die Vektorlänge (VSIZE) 157A.2 sind jeweils für die Befehlsschablone der Operation 112 des Typs der Teilrundensteuerung mit Schreibmaskensteuerung und ohne Speicherzugriff bzw. die Befehlsschablone der Operationen 117 des VSIZE-Typs mit Schreibmaskensteuerung und ohne Speicherzugriff spezifiziert), während der Rest des Betafeldes 154 unterscheidet, welche der Operationen des spezifizierten Typs ausgeführt werden soll. In den Befehlsschablonen ohne Speicherzugriff 105 sind das Maßstabsfeld 160, das Verschiebungsfeld 162A und das Verschiebungsmaßstabsfeld 162B nicht vorhanden.
  • In der Befehlsschablone der Operation 110 des Typs der Teilrundensteuerung mit Schreibmaskensteuerung und ohne Speicherzugriff wird der Rest des Betafeldes 154 als ein Rundenoperationsfeld 159A interpretiert, wobei die Ausnahmeereignismeldung gesperrt ist (ein gegebener Befehl meldet keine Art eines Gleitkomma-Ausnahmemerkers und startet keine Gleitkomma-Ausnahmebehandlungseinrichtung) .
  • Das Rundenoperations-Steuerfeld 159A - genau wie das Rundenoperations-Steuerfeld 158, sein Inhalt unterscheidet, welche aus einer Gruppe von Rundungsoperationen auszuführen ist (z. B. Aufrunden, Abrunden, Runden zur Null und Runden zum Nächsten). Folglich ermöglicht das Rundenoperations-Steuerfeld 159A das Ändern des Rundungsmodus auf einer Grundlage pro Befehl. In einer Ausführungsform der Erfindung, in der ein Prozessor ein Steuerregister zum Spezifizieren der Rundungsmodi enthält, setzt der Inhalt des Rundenoperations-Steuerfeldes 150 diesen Registerwert außer Kraft.
  • In der Befehlsschablone der Operation 117 des VSIZE-Typs mit Schreibmaskensteuerung und ohne Speicherzugriff wird der Rest des Betafeldes 154 als ein Vektorlängenfeld 159B interpretiert, dessen Inhalt unterscheidet, mit welcher von einer Anzahl von Datenvektorlängen gearbeitet werden soll (z. B. 128, 256 oder 512 Bytes).
  • In dem Fall einer Befehlsschablone mit Speicherzugriff 120 der Klasse B wird ein Teil des Betafeldes 154 als ein Rundsendefeld 157B interpretiert, dessen Inhalt unterscheidet, ob eine Datenmanipulationsoperation des Rundsendetyps ausgeführt werden soll, während der Rest des Betafeldes 154 als das Vektorlängenfeld 159B interpretiert wird. Die Befehlsschablonen mit Speicherzugriff 120 enthalten das Maßstabsfeld 160 und optional das Verschiebungsfeld 162A oder das Verschiebungsmaßstabsfeld 162B.
  • Bezüglich des generischen vektorfreundlichen Befehlsformats 100 ist gezeigt, dass ein volles Opcode-Feld 174 das Formatfeld 140, das Basisoperationsfeld 142 und das Datenelementbreitenfeld 164 enthält. Während eine Ausführungsform gezeigt ist, in der das volle Opcode-Feld 174 alle dieser Felder enthält, wobei das volle Opcode-Feld 174 in den Ausführungsformen, die nicht alle von ihnen unterstützen, weniger als alle dieser Felder enthält. Das volle Opcode-Feld 174 stellt den Operationscode (den Opcode) bereit.
  • Das Vergrößerungsoperationsfeld 150, das Datenelementbreitenfeld 164 und das Schreibmaskenfeld 170 ermöglichen, dass diese Merkmale in dem generischen vektorfreundlichen Befehlsformat auf einer Grundlage pro Befehl spezifiziert werden.
  • Die Kombination des Schreibmaskenfeldes und des Datenelementbreitenfeldes erzeugt typisierte Befehle, weil sie ermöglichen, dass die Maske basierend auf verschiedenen Datenelementbreiten angewendet wird.
  • Die verschiedenen Befehlsschablonen, die innerhalb der Klasse A und der Klasse B gefunden werden, sind in verschiedenen Situationen vorteilhaft. In einigen Ausführungsformen der Erfindung können verschiedene Prozessoren oder verschiedene Kerne innerhalb eines Prozessors nur die Klasse A, nur die Klasse B oder beide Klassen unterstützen. Ein Hochleistungs-Out-of-Order-Universalkern, der für die Universalberechnung vorgesehen ist, kann nur die Klasse B unterstützen, ein Kern, der hauptsächlich für die Graphik- und/oder wissenschaftliche (Durchsatz-) Berechnung vorgesehen ist, kann nur die Klasse A unterstützen, und ein Kern, der für beides vorgesehen ist, kann beides unterstützen (selbstverständlich befindet sich ein Kern, der irgendeine Mischung der Schablonen und der Befehle aus beiden Klassen, aber nicht alle Schablonen und Befehle aus beiden Klassen aufweist, innerhalb des Geltungsbereichs dieser Erfindung). Außerdem kann ein einziger Prozessor mehrere Kerne enthalten, von denen alle die gleiche Klasse unterstützen oder in dem verschiedene Kerne verschiedene Klassen unterstützen. In einem Prozessor mit separaten Graphik- und Universal kernen kann z. B. einer der Graphikkerne, der hauptsächlich für Graphik- und/oder wissenschaftliche Berechnung vorgesehen ist, nur die Klasse A unterstützen, während einer oder mehrerer der Universalkerne Hochleistungs-Universalkerne mit Out-of-Order-Ausführung und Registerumbenennung sein können, die für die Universalberechnung vorgesehen sind, die nur die Klasse B unterstützen. Ein weiterer Prozessor, der keinen separaten Graphikkern aufweist, kann einen oder mehrere In-Order- oder Out-of-Order-Universalkerne enthalten, die sowohl die Klasse A als auch die Klasse B unterstützen. Selbstverständlich können die Merkmale von einer Klasse außerdem in anderen Ausführungsformen der Erfindung in der anderen Klasse implementiert sein. Die Programme, die in einer höheren Sprache geschrieben sind, würden (z. B. rechtzeitig kompiliert oder statisch kompiliert) in eine Vielfalt verschiedener ausführbarer Formen übersetzt werden, einschließlich des Folgenden: 1) eine Form, die nur die Befehle der Klasse(n) aufweist, die durch den Zielprozessor für die Ausführung unterstützt wird (werden); oder 2) eine Form, die alternative Routinen aufweist, die unter Verwendung verschiedener Kombinationen der Befehle aller Klassen geschrieben sind und die Steuerungsablaufcode aufweisen, der die auszuführenden Routinen basierend auf den Befehlen auswählt, die durch den Prozessor unterstützt werden, der gegenwärtig den Code ausführt.
  • Das VEX-Befehlsformat
  • Die VEX-Codierung ermöglicht, dass Befehle mehr als zwei Operanden aufweisen, und ermöglicht, dass die SIMD-Vektorregister länger als 28 Bits sind. Die Verwendung eines VEX-Präfixes stellt eine Syntax mit drei (oder mehr) Operanden bereit. Vorherige Zwei-Operanden-Befehle haben Operationen, wie z. B. A = A + B, ausgeführt, die einen Quelloperanden überschreiben. Die Verwendung eines VEX-Präfixes ermöglicht den Operanden, zerstörungsfreie Operationen, wie z. B. A = B + C, auszuführen.
  • 2A veranschaulicht ein beispielhaftes AVX-Befehlsformat, das einen VEX-Präfix 202, ein echtes Opcode-Feld 230, ein Mod-R/M-Byte 240, ein SIB-Byte 250, ein Verschiebungsfeld 262 und ein IMM8 272 enthält. 2B veranschaulicht, welche Felder von 2A ein volles Opcode-Feld 274 und ein Basisoperationsfeld 241 bilden. 2C veranschaulicht, welche Felder von 2A ein Registerindexfeld 244 bilden.
  • Das VEX-Präfix (die Bytes 0-2) 202 ist in einer Drei-Byte-Form codiert. Das erste Byte ist das Formatfeld 290 (das VEX-Byte 0, die Bits [7:0]), das einen expliziten C4-Byte-Wert (den eindeutigen Wert, der verwendet wird, um das C4-Befehlsformat zu unterscheiden) enthält. Die zweiten-dritten Bytes (die VEX-Bytes 1-2) enthalten eine Anzahl von Bitfeldern, die eine spezifische Fähigkeit bereitstellen. Spezifisch besteht das REX-Feld 205 (das VEX-Byte 1, die Bits [7-5]) aus einem VEX.R-Bitfeld (dem VEX-Byte 1, dem Bit [7] - R), einem VEX.X-Bitfeld (dem VEX-Byte 1, dem Bit [6] - X) und dem VEX.B-Bitfeld (dem VEX-Byte 1, dem Bit [5] - B). Andere Felder der Befehle codieren die unteren drei Bits der Registerindizes, wie es in der Technik bekannt ist (rrr, xxx und bbb), so dass Rrrr, Xxxx und Brrr durch das Addieren von VEX.R, VEX.X und VEX.B gebildet werden können. Das Opcode-Abbildungsfeld 215 (das VEX-Byte 1, die Bits [4:0] - mmmmm) enthält einen Inhalt, um ein impliziertes führendes Opcode-Byte zu codieren. Das W-Feld 264 (das VEX-Byte 2, das Bit [7] - W) - ist durch die Schreibweise VEX.W dargestellt und stellt in Abhängigkeit von dem Befehl verschiedene Funktionen bereit. Die Rolle des VEX.vvvv 220 (des VEX-Bytes 2, der Bits [6:3] - vvvv) kann das Folgende enthalten: 1) VEX.vvvv codiert den ersten Quellregisteroperanden, ist in einer invertieren (1-Komplement-) Form spezifiziert und ist für Befehle mit 2 oder mehr Quelloperanden gültig; 2) VEX.vvvv codiert den Zielregisteroperanden und ist in 1-Komplement-Form für bestimmte Vektorverschiebungen spezifiziert; oder 3) VEX.vvvv codiert keinen Operanden, das Feld ist reserviert und sollte 1111b enthalten. Falls das VEX.L-268-Größenfeld (VEX-Byte 2, das Bit [2] - L) = 0 ist, gibt es einen 28-Bit-Vektor an, falls VEX.L = 1 ist, gibt es einen 256-Bit-Vektor an. Das Präfixcodierungsfeld 225 (das VEX-Byte 2, die Bits [1:0] - pp) - stellt zusätzliche Bits für das Basisoperationsfeld 241 bereit.
  • Das echte Opcode-Feld 230 (das Byte 3) ist außerdem als das Opcode-Byte bekannt. Ein Teil des Opcodes ist in diesem Feld spezifiziert.
  • Das MOD R/M-Feld 240 (das Byte 4) enthält das MOD-Feld 242 (die Bits [7-6]), das Reg-Feld 244 (die Bits [5-3]) und das R/M-Feld 246 (die Bits [2-0]). Die Rolle des Reg-Feldes 244 kann das Folgende enthalten: Codieren entweder des Zielregisteroperanden oder eines Quellregisteroperanden (des rrr des Rrrr) oder als eine Opcode-Erweiterung behandelt werden und nicht verwendet werden, um irgendeinen Befehlsoperanden zu codieren. Die Rolle des R/M-Feldes 246 kann das Folgende enthalten: Codieren des Befehlsoperanden, der auf eine Speicheradresse verweist, oder Codieren entweder des Zielregisteroperanden oder eines Quellregisteroperanden. Maßstab, Index, Basis (SIB) - Der Inhalt des Maßstabfeldes 250 (des Bytes 5) enthält SS252 (die Bits [7-6]), was für die Speicheradressenerzeugung verwendet wird. Auf die Inhalte des SIB.xxx 254 (der Bits [5-3]) und des SIB.bbb (der Bits [2-0]) ist vorher bezüglich der Registerindizes Xxxx und Bbbb verwiesen worden.
  • Das Verschiebungsfeld 262 und das Sofortfeld (IMM8) 272 enthalten Daten.
  • Eine beispielhafte Registerarchitektur
  • 3 ist ein Blockschaltplan einer Registerarchitektur 300 gemäß einer Ausführungsform der Erfindung. In der veranschaulichten Ausführungsform gibt es 32 Vektorregister 310, die 512 Bits breit sind; diese Register werden als zmm0 bis zmm31 bezeichnet. Die 256 Bits niedrigerer Ordnung der unteren 6 zmm-Register sind den Registern ymm0-15 überlagert. Die 128 Bits niedriger Ordnung der unteren 6 zmm-Register (die 128 Bits niedriger Ordnung der ymm-Register) sind den Registern xmm0-15 überlagert.
  • Die Universalregister 325 - in der veranschaulichten Ausführungsform gibt es sechzehn 64-Bit-Universalregister, die zusammen mit den vorhandenen x86-Adressierungsmodi verwendet werden, um die Speicheroperanden zu adressieren. Auf diese Register wird durch die Namen RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP und R8 bis R15 verwiesen.
  • Skalare Gleitkomma-Stapelregisterdatei (x87-Stapel) 345, die sonst die gepackte MMX-Ganzzahl-Flachregisterdatei 350 genannt wird - in der veranschaulichten Ausführungsform ist der x87-Stapel ein Stapel mit acht Elementen, der verwendet wird, um skalare Gleitkommaoperationen an 32/64/80-Bit-Gleitkommadaten unter Verwendung der x87-Befehlssatzerweiterung auszuführen; während die MMX-Register verwendet werden, um sowohl Operationen an gepackten 64-Bit-Ganzzahldaten auszuführen als auch Operanden für einige Operationen, die zwischen den MMX- und den XMM-Registern ausgeführt werden, zu halten.
  • Alternative Ausführungsformen der Erfindung können breitere oder schmalere Register verwenden. Zusätzlich können alternative Ausführungsformen der Erfindung mehr, weniger oder andere Registerdateien und Register verwenden.
  • Beispielhafte Kernarchitekturen, Prozessoren und Computerarchitekturen
  • Die Prozessorkerne können in verschiedenen Weisen, für verschiedene Zwecke und in verschiedenen Prozessoren implementiert sein. Die Implementierungen derartiger Kerne können z. B. Folgendes enthalten: 1) einen In-Order-Universalkern, der für eine Universalberechnung vorgesehen ist; 2) einen Hochleistungs-Out-of-Order-Universalkern, der für eine Universalberechnung vorgesehen ist; 3) einen Spezialkern, der hauptsächlich für Graphik und/oder wissenschaftliche Berechnung (Durchsatzberechnung) vorgesehen ist. Die Implementierungen der verschiedenen Prozessoren können Folgendes enthalten: 1) eine CPU, die einen oder mehrere In-Order-Universalkerne, die für eine Universalberechnung vorgesehen sind, und/oder einen oder mehrere Out-of-Order-Universalkerne, die für eine Universalberechnung vorgesehen sind, enthält; und 2) einen Coprozessor, der einen oder mehrere Spezialkerne enthält, die hauptsächlich für Graphik und/oder Wissenschaft (Durchsatz) vorgesehen sind. Derartige verschiedene Prozessoren führen zu verschiedenen Computersystemarchitekturen, die Folgendes enthalten können: 1) den Coprozessor auf einem von der CPU getrennten Chip; 2) den Coprozessor auf einem separaten Die in derselben Baugruppe wie eine CPU; 3) den Coprozessor auf demselben Die wie eine CPU (wobei in diesem Fall ein derartiger Coprozessor manchmal als eine Speziallogik, wie z. B. eine integrierte Graphik und/oder eine wissenschaftliche (Durchsatz-) Logik, oder als Spezialkerne bezeichnet wird); und 4) ein System auf einem Chip (SoC), das auf demselben Die die beschriebene CPU (die manchmal als der (die) Anwendungskern(e) oder der (die) Anwendungsprozessor(en) bezeichnet wird), den oben beschriebenen Coprozessor und zusätzliche Funktionalität enthalten kann. Als Nächstes werden beispielhafte Kernarchitekturen beschrieben, gefolgt von den Beschreibungen beispielhafter Prozessoren und Computerarchitekturen. Hier werden Schaltungen (Einheiten) ausführlich beschrieben, die beispielhafte Kerne, Prozessoren usw. umfassen.
  • Beispielhafte Kernarchitekturen
  • 4A ist ein Blockschaltplan, der sowohl eine beispielhafte In-Order-Pipeline als auch eine beispielhafte Out-of-Order-Ausgabe-/Ausführungspipeline mit Registerumbenennung gemäß den Ausführungsformen der Erfindung veranschaulicht. 4B ist ein Blockschaltplan, der eine beispielhafte Ausführungsform sowohl eines Kerns einer In-Order-Architektur als auch eines beispielhaften Kerns einer Out-of-Order-Ausgabe-/Ausführungsarchitektur mit Registerumbenennung veranschaulicht, die in einem Prozessor gemäß den Ausführungsformen der Erfindung enthalten sind. Die Kästen mit durchgezogenen Linien in den 4A-B veranschaulichen die In-Order-Pipeline und den In-Order-Kern, während die optionale Ergänzung der Kästen mit den gestrichelten Linien die Out-of-Order-Ausgabe-/Ausführungspipeline mit Registerumbenennung und den Out-of-Order-Ausgabe-/Ausführungskern mit Registerumbenennung veranschaulichen. In Anbetracht dessen, dass der In-Order-Aspekt eine Teilmenge des Out-of-Order-Aspekts ist, wird der Out-of-Order-Aspekt beschrieben.
  • In 4A enthält eine Prozessorpipeline 400 eine Holstufe 402, eine Längendecodierstufe 404, eine Decodierstufe 406, eine Zuweisungsstufe 408, eine Umbenennungsstufe 410, eine Planungsstufe (die außerdem als eine Abfertigungs- oder Ausgabestufe bezeichnet wird) 412, eine Registerlese-/Speicherlesestufe 414, eine Ausführungsstufe 416, eine Rückschreib-/Speicherschreibstufe 418, eine Ausnahmebehandlungsstufe 422 und eine Einspeicherstufe 424.
  • 4B zeigt einen Prozessorkern 490, der eine Front-End-Einheit 430 enthält, die an eine Ausführungsmaschineneinheit 450 gekoppelt ist, wobei beide an eine Speichereinheit 470 gekoppelt sind. Der Kern 490 kann ein Kern mit Berechnung mit verringertem Befehlssatz (RISC-Kern), ein Kern mit Berechnung mit komplexem Befehlssatz (CISC-Kern), ein Kern mit sehr langen Befehlswörtern (VLIW-Kern) oder ein hybrider oder alternativer Kerntyp sein. Als eine noch weitere Option kann der Kern 490 ein Spezialkern sein, wie z. B. ein Netz- oder Kommunikationskern, eine Kompressionsmaschine, ein Coprozessorkern, ein Universalberechnungs-Graphikverarbeitungseinheits-Kern (GPGPU-Kern), ein Graphikkern oder dergleichen, sein.
  • Die Front-End-Einheit 430 enthält eine Verzweigungsvorhersageeinheit 432, die an eine Befehls-Cache-Einheit 434 gekoppelt ist, die an einen Befehls-Adressenübersetzungspuffer (TLB) 436 gekoppelt ist, der an eine Befehlsholeinheit 438 gekoppelt ist, die an eine Decodiereinheit 440 gekoppelt ist. Die Decodiereinheit 440 (oder der Decodierer) kann Befehle decodieren und als eine Ausgabe eine oder mehrere Mikrooperationen, Mikrocode-Einsprungstellen, Mikrobefehle, andere Befehle oder andere Steuersignale erzeugen, die aus den ursprünglichen Befehlen decodiert werden oder die ursprünglichen Befehle anderweitig widerspiegeln oder aus den ursprünglichen Befehlen abgeleitet werden. Die Decodiereinheit 440 kann unter Verwendung verschiedener unterschiedlicher Mechanismen implementiert sein. Beispiele geeigneter Mechanismen enthalten Nachschlagtabellen, Hardware-Implementierungen, programmierbare Logikanordnungen (PLAs), Mikrocode-Festwertspeicher (Mikrocode-ROMs) usw., sind aber nicht darauf eingeschränkt. In einer Ausführungsform enthält der Kern 490 einen Mikrocode-ROM oder ein anderes Medium, der bzw. das Mikrocode für bestimmte Makrobefehle speichert, (z. B. in der Decodiereinheit 440 oder anderweitig innerhalb der Front-End-Einheit 430). Die Decodiereinheit 440 ist an eine Umbenennungs-/Zuweisereinheit 452 in der Ausführungsmaschineneinheit 450 gekoppelt.
  • Die Ausführungsmaschineneinheit 450 enthält eine Umbenennungs-/Zuweisereinheit 452, die an eine Stilllegungseinheit 454 und an einen Satz von einer oder mehreren Scheduler-Einheit(en) 456 gekoppelt ist. Die Scheduler-Einheit(en) 456 repräsentiert irgendeine Anzahl unterschiedlicher Scheduler, einschließlich Reservierungsstationen, eines zentralen Befehlsfensters usw. Die Scheduler-Einheit(en) 456 ist (sind) an die Einheit(en) 458 der physischen Registerdatei(en) gekoppelt. Jede der Einheiten 458 der physischen Registerdatei(en) repräsentiert eine oder mehrere physische Registerdateien, von denen verschiedene einen oder mehrere verschiedene Datentypen, wie z. B. skalare Ganzzahl, skalares Gleitkomma, gepackte Ganzzahl, gepacktes Gleitkomma, Vektorganzzahl, Vektorgleitkomma, Status (z. B. einen Befehlszeiger, der die Adresse des nächsten auszuführenden Befehls ist) usw., speichern. In einer Ausführungsform umfasst die Einheit 458 der physischen Registerdatei(en) eine Vektorregistereinheit und eine Skalarregistereinheit. Diese Registereinheiten können Architektur-Vektorregister, Vektormaskenregister und Universalregister bereitstellen. Die Einheit(en) 458 der physischen Registerdatei(en) ist (sind) durch die Stilllegungseinheit 454 überlappt, um die verschiedenen Weisen zu veranschaulichen, in denen die Registerumbenennung und die Out-of-Order-Ausführung implementiert sein können (z. B. unter Verwendung eines Umordnungspuffers (von Umordnungspuffern) und einer Stilllegungsregisterdatei(en); unter Verwendung einer Zukunftsdatei(en), eines Historiepuffers (von Historiepuffern) und einer Stilllegungsregisterdatei(en); unter Verwendung von Registerabbildungen und einem Pool von Registern; usw.). Die Stilllegungseinheit 454 und die Einheit(en) 458 der physischen Registerdatei(en) sind an den (die) Ausführungs-Cluster 460 gekoppelt. Der (die) Ausführung-Cluster 460 enthält (enthalten) einen Satz von einer oder mehreren Ausführungseinheiten 462 und einen Satz von einer oder mehreren Speicherzugriffseinheiten 464. Die Ausführungseinheiten 462 können verschiedene Operationen (z. B. Verschiebungen, eine Addition, eine Subtraktion, eine Multiplikation) und an verschiedenen Datentypen (z. B. skalares Gleitkomma, gepackte Ganzzahl, gepacktes Gleitkomma, Vektorganzzahl, Vektorgleitkomma) ausführen. Während einige Ausführungsformen eine Anzahl von Ausführungseinheiten enthalten können, die für spezifische Funktionen oder Sätze von Funktionen dediziert sind, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten, die alle alle Funktionen ausführen, enthalten. Die Scheduler-Einheit(en) 456, die Einheit(en) 458 der physikalischen Registerdatei(en) und der (die) Ausführungs-Cluster 460 sind als möglicherweise mehrere gezeigt, weil bestimmte Ausführungsformen getrennte Pipelines für bestimmte Datentypen/Operationen erzeugen (z. B. eine skalare Ganzzahlpipeline, eine skalare Gleitkomma-/gepackte Ganzzahl-/gepackte Gleitkomma-/Vektorganzzahl-/Vektorgleitkommapipeline und/oder eine Speicherzugriffspipeline, die jede ihre eigene Scheduler-Einheit, ihre eigene Einheit der physikalischen Registerdatei(en) und/oder ihren eigenen Ausführung-Cluster aufweisen - wobei im Fall einer separaten Speicherzugriffspipeline bestimmte Ausführungsformen implementiert sind, in denen nur der Ausführungs-Cluster dieser Pipeline die Speicherzugriffseinheit(en) 464 aufweist). Es sollte außerdem erkannt werden, dass, wo separate Pipelines verwendet werden, eine oder mehrere dieser Pipelines Out-of-Order-Ausgabe/Ausführung und der Rest In-Order sein können.
  • Der Satz von Speicherzugriffseinheiten 464 ist an die Speichereinheit 470 gekoppelt, die eine Daten-TLB-Einheit 472 enthält, die an eine Daten-Cache-Einheit 474 gekoppelt ist, die an eine Ebene-2-Cache-Einheit (L2-Cache-Einheit) 476 gekoppelt ist. In einer beispielhaften Ausführungsform können die Speicherzugriffseinheiten 464 eine Ladeeinheit, eine Speicheradresseneinheit und eine Speicherdateneinheit enthalten, von denen jede an die Daten-TLB-Einheit 472 in der Speichereinheit 470 gekoppelt ist. Die Befehls-Cache-Einheit 434 ist ferner an eine Ebene-2-Cache-Einheit (L2-Cache-Einheit) 476 in der Speichereinheit 470 gekoppelt. Die L2-Cache-Einheit 476 ist an eine oder mehrere andere Ebenen des Cache und schließlich an einen Hauptspeicher gekoppelt.
  • Beispielhaft kann die beispielhafte Out-of-Order-Ausgabe-/Ausführungskernarchitektur mit Registerumbenennung die Pipeline 400 wie folgt implementieren: 1) das Befehlsholen 438 führt die Hol- und Längendecodierstufen 402 und 404 aus; 2) die Decodiereinheit 440 führt die Decodierstufe 406 aus; 3) die Umbenennungs-/Zuweisereinheit 452 führt die Zuweisungsstufe 408 und die Umbenennungsstufe 410 aus; 4) die Scheduler-Einheit(en) 456 führt die Planungsstufe 412 aus; 5) die Einheit (en) 458 der physischen Registerdatei(en) und die Speichereinheit 470 führen die Registerlese-/Speicherlesestufe 414 aus; der Ausführungs-Cluster 460 führt die Ausführungsstufe 416 aus; 6) die Speichereinheit 470 und die Einheit(en) 458 der physischen Registerdatei(en) führen die Rückschreib-/Speicherschreibstufe 418 aus; 7) in die Ausnahmebehandlungsstufe 422 können verschiedene Einheiten einbezogen sein; und 8) die Stilllegungseinheit 454 und die Einheit(en) 458 der physischen Registerdatei(en) führen die Einspeicherstufe 424 aus.
  • Der Kern 490 kann einen oder mehrere Befehlssätze (z. B. den x86 Befehlssatz (mit einigen Erweiterungen, die bei neueren Versionen hinzugefügt worden sind); den MIPS-Befehlssatz von MIPS Technolgies von Sunnyvale, CA; den ARM-Befehlssatz (mit optional zusätzlichen Erweiterungen, wie z. B. NEON) von ARM Holdings von Sunnyvale, CA), einschließlich der hier beschriebenen Befehl(e) unterstützen. In einer Ausführungsform enthält der Kern 490 eine Logik, um eine Befehlssatzerweiterung für gepackte Daten (z. B. AVX1, AVX2) zu unterstützen, wobei dadurch die Operationen erlaubt werden, die durch viele Multimedia-Anwendungen verwendet werden, die unter Verwendung gepackter Daten auszuführen sind.
  • Es sollte erkannt werden, dass der Kern Multithreading (die Ausführung von zwei oder mehr parallelen Sätzen von Operationen oder Threads) unterstützen kann und dies in verschiedenen Weisen einschließlich des Zeitscheiben-Multithreading, des gleichzeitigen Multithreading (wo ein einziger physischer Kern einen logischen Kern für jeden der Threads bereitstellt, für die dieser physische Kern das gleichzeitige Multithreading ausführt) oder einer Kombination daraus (z. B. das Zeitscheiben-Holen und -Decodieren und danach das gleichzeitige Multithreading, wie z. B. in der Intel®-Hyperthreading-Technik) ausführen kann.
  • Während die Registerumbenennung im Kontext der Out-of-Order-Ausführung beschrieben wird, sollte erkannt werden, dass die Registerumbenennung in einer In-Order-Architektur verwendet werden kann. Während die veranschaulichte Ausführungsform des Prozessors außerdem separate Befehls- und Daten-Cache-Einheiten 434/474 und eine gemeinsam benutzte L2-Cache-Einheit 476 enthält, können alternative Ausführungsformen einen einzigen internen Cache sowohl für Befehle als auch für Daten, wie z. B. einen internen Ebene-1-Cache (L1-Cache), oder mehrere Ebenen des internen Caches aufweisen. In einigen Ausführungsformen kann das System eine Kombination aus einem internen Cache und einem externen Cache, der sich außerhalb des Kerns und/oder des Prozessors befindet, enthalten. Alternativ kann sich alles des Caches außerhalb des Kerns und/oder des Prozessors befinden.
  • Eine spezifische beispielhafte In-Order-Kernarchitektur
  • Die 5A-B veranschaulichen einen Blockschaltplan einer spezifischeren beispielhaften Kernarchitektur, wobei der Kern einer von mehreren Logikblöcken (einschließlich anderer Kerne des gleichen Typs und/oder anderer Typen) in einem Chip sein würde. Die Logikblöcke kommunizieren in Abhängigkeit von der Anwendung durch ein Zusammenschaltungsnetz (z. B. ein Ringnetz) mit hoher Bandbreite mit irgendeiner Logik mit fester Funktion, Speicher-E/A-Schnittstellen und einer anderen notwendigen E/A-Logik.
  • 5A ist ein Blockschaltplan eines einzigen Prozessorkerns zusammen mit seiner Verbindung zu dem Zusammenschaltungsnetz 502 auf dem Die und mit seiner lokalen Teilmenge des Ebene-2-Caches (L2-Caches) 504 gemäß den Ausführungsformen der Erfindung. In einer Ausführungsform unterstützt ein Befehlsdecodierer 500 den x86-Befehlssatz mit der Befehlssatzerweiterung für gepackte Daten. Ein L1-Cache 506 erlaubt Zugriffe mit geringer Latenzzeit auf den Cache-Speicher in die Skalar- und Vektoreinheiten. Während in einer Ausführungsform (um den Entwurf zu vereinfachen) eine Skalareinheit 508 und eine Vektoreinheit 510 getrennte Registersätze (Skalarregister 512 bzw. Vektorregister 514) verwenden und die zwischen ihnen übertragenen Daten in den Speicher geschrieben werden und dann von einem Ebene-1-Cache (L1-Cache) 506 zurückgelesen werden, können alternative Ausführungsformen der Erfindung eine andere Herangehensweise verwenden (z. B. einen einzigen Registersatz verwenden oder einen Kommunikationsweg enthalten, der es ermöglicht, dass die Daten zwischen den zwei Registerdateien übertragen werden, ohne dass sie geschrieben und zurückgelesen werden).
  • Die lokale Teilmenge des L2-Caches 504 ist ein Teil eines globalen L2-Caches, der in getrennte lokale Teilmengen, eine pro Prozessorkern, aufgeteilt ist. Jeder Prozessorkern weist einen direkten Zugangsweg zu seiner eigenen lokalen Teilmenge des L2-Cache 504 auf. Die durch einen Prozessorkern gelesenen Daten werden in seiner L2-Cache-Teilmenge 504 gespeichert, wobei parallel mit anderen Prozessorkernen, die auf ihre eigenen lokalen L2-Cache-Teilmengen zugreifen, schnell auf sie zugegriffen werden kann. Die durch einen Prozessorkern geschriebenen Daten werden in seiner eigenen L2-Cache-Teilmenge 504 gespeichert und werden bei Bedarf aus anderen Teilmengen gelöscht. Das Ringnetz stellt die Kohärenz für die gemeinsam benutzten Daten sicher. Das Ringnetz ist bidirektional, um es den Agenten, wie z. B. den Prozessorkernen, den L2-Caches und anderen Logikblöcken zu ermöglichen, innerhalb des Chips miteinander zu kommunizieren. Jeder Ringdatenweg ist in einigen Ausführungsformen pro Richtung 1024 Bits breit.
  • 5B ist eine erweiterte Ansicht eines Teils des Prozessorkerns in 5A gemäß den Ausführungsformen der Erfindung. 5B enthält sowohl einen L1-Daten-Cache-Teil 506A des L1-Caches 504 als auch weitere Einzelheiten hinsichtlich der Vektoreinheit 510 und der Vektorregister 514. Spezifisch ist die Vektoreinheit 510 eine 6 breite Vektorverarbeitungseinheit (VPU) (siehe die 16 breite ALU 528), die einen oder mehrere der Ganzzahlbefehle, Gleitkommabefehle in einfacher Genauigkeit und Gleitkommabefehle in doppelter Genauigkeit ausführt. Die VPU unterstützt das Swizzling der Registereingaben mit der Swizzle-Einheit 520, die numerische Umsetzung mit den numerischen Umsetzungseinheiten 522A-B und die Replikation mit der Replikationseinheit 524 an der Speichereingabe.
  • Ein Prozessor mit integriertem Speicher-Controller und integrierter Graphik
  • 6 ist ein Blockschaltplan eines Prozessors 600, der mehr als einen Kern aufweisen kann, einen integrierten Speicher-Controller aufweisen kann und eine integrierte Graphik aufweisen kann, gemäß den Ausführungsformen der Erfindung. Die Kästen mit durchgezogenen Linien in 6 veranschaulichen einen Prozessor 600 mit einem einzigen Kern 602A, einem Systemagenten 610, einem Satz von einer oder mehreren Bus-Controller-Einheiten 616, während die optionale Ergänzung der Kästen mit den gestrichelten Linien einen alternativen Prozessor 600 mit mehreren Kernen 602A-N, einem Satz von einer oder mehreren integrierten Speicher-Controller-Einheit(en) 614 in der Systemagenteneinheit 610 und einer Speziallogik 608 veranschaulicht.
  • Folglich können verschiedene Implementierungen des Prozessors 600 Folgendes enthalten: 1) eine CPU mit der Speziallogik 608, die eine integrierte Graphik- und/oder wissenschaftliche (Durchsatz-) Logik ist (die einen oder mehrere Kerne enthalten kann), wobei die Kerne 602A-N ein oder mehrere Universalkerne (z. B. In-Order-Universalkerne, Out-of-Order-Universalkerne, eine Kombination aus den beiden) sind; 2) einen Coprozessor mit den Kernen 602A-N, die eine große Anzahl von Spezialkernen sind, die hauptsächlich für Graphik und/oder Wissenschaft (Durchsatz) vorgesehen sind; und 3) einen Coprozessor mit den Kernen 602A-N, die eine große Anzahl von In-Order-Universalkernen sind. Folglich kann der Prozessor 600 ein Universalprozessor, ein Coprozessor oder ein Spezialprozessor, wie z. B. ein Netz- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Graphikprozessor, eine GPGPU (eine Universal-Graphikverarbeitungseinheit), ein Coprozessor mit vielen integrierten Kernen (MIC-Coprozessor) mit hohem Durchsatz (der 30 oder mehr Kerne enthält), ein eingebetteter Prozessor oder dergleichen sein. Der Prozessor kann in einem oder mehreren Chips implementiert sein. Der Prozessor 600 kann ein Teil eines oder mehrerer Substrate sein und/oder unter Verwendung irgendeiner von einer Anzahl von Prozesstechniken, wie z. B. BiCMOS, CMOS oder NMOS, in einem oder mehreren Substraten implementiert sein.
  • Die Speicherhierarchie enthält eine oder mehrere Ebenen des Caches innerhalb der Kerne 604A-N, einen Satz aus einer oder mehreren gemeinsam benutzten Cache-Einheiten 606 und einen (nicht gezeigten) externen Speicher, der an den Satz von integrierten Speicher-Controller-Einheiten 614 gekoppelt ist. Der Satz gemeinsam benutzter Cache-Einheiten 606 kann einen oder mehrere Caches mittlerer Ebene, wie z. B. der Ebene 2 (L2), der Ebene 3 (L3), der Ebene 4 (L4) oder anderer Ebenen des Caches, einen Cache der letzten Ebene (LLC) und/oder Kombinationen daraus enthalten. Während in einer Ausführungsform eine ringbasierte Zusammenschaltungseinheit 612 die integrierte Graphiklogik 608, den Satz gemeinsam benutzter Cache-Einheiten 606 und die Systemagenteneinheit 610/die integrierten Speicher-Controller-Einheit(en) 614 miteinander verbindet, können alternative Ausführungsformen irgendeine Anzahl wohlbekannter Techniken verwenden, um derartige Einheiten miteinander zu verbinden. In einer Ausführungsform wird die Kohärenz zwischen einer oder mehreren Cache-Einheiten 606 und den Kernen 602-A-N aufrechterhalten.
  • In einigen Ausführungsformen sind einer oder mehrerer der Kerne 602A-N zum Multithreading imstande. Der Systemagent 610 enthält jene Komponenten, die die Kerne 602A-N koordinieren und betreiben. Die Systemagenteneinheit 610 kann z. B. eine Leistungssteuereinheit (PCU) und eine Anzeigeeinheit enthalten. Die PCU kann die Logik und die Komponenten sein oder enthalten, die benötigt werden, um den Leistungszustand der Kerne 602A-N und der integrierte Graphiklogik 608 zu regeln. Die Anzeigeeinheit dient dem Ansteuern einer oder mehrerer extern angeschlossener Anzeigen.
  • Die Kerne 602A-N können hinsichtlich des Architekturbefehlssatzes homogen oder heterogen sein; d. h., zwei oder mehr der Kerne 602A-N können zur Ausführung des gleichen Befehlssatzes imstande sein, während andere zum Ausführen nur einer Teilmenge dieses Befehlssatzes oder eines anderen Befehlssatzes imstande sein können.
  • Beispielhafte Computerarchitekturen
  • Die 7-10 sind Blockschaltpläne beispielhafter Computerarchitekturen. Andere Systementwürfe und -konfigurationen, die in den Techniken für Laptops, Desktops, handgehaltene PCs, persönliche digitale Assistenten, Entwicklungs-Arbeitsplatzrechner, Server, Netzvorrichtungen, Netz-Hubs, Switches, eingebettete Prozessoren, digitale Signalprozessoren (DSPs), Graphikvorrichtungen, Videospielvorrichtungen, Set-Top-Boxes, Mikrocontroller, Mobiltelephone, tragbare Medienspieler, handgehaltene Vorrichtungen und verschiedene andere elektronische Vorrichtungen bekannt sind, sind außerdem geeignet. Im Allgemeinen ist eine riesige Vielfalt von Systemen oder elektronischen Vorrichtungen, die einen Prozessor und/oder eine andere Ausführungslogik umfassen können, wie sie hier offenbart sind, im Allgemeinen geeignet.
  • In 7 ist ein Blockschaltplan eines Systems 700 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Das System 700 kann einen oder mehrere Prozessoren 710, 715 enthalten, die an einen Controller-Hub 720 gekoppelt sind. In einer Ausführungsform enthält der Controller-Hub 720 einen Graphikspeicher-Controller-Hub (GMCH) 790 und einen Eingabe/Ausgabe-HUB (EAH) 750 (die sich auf getrennten Chips befinden können); wobei der GMCH 790 Speicher- und Graphik-Controller enthält, an die ein Speicher 740 und ein Coprozessor 745 gekoppelt sind; wobei der EAH 750 die Eingabe/Ausgabe-Vorrichtungen (E/A-Vorrichtungen) 760 an den GMCH 790 koppelt. Alternativ sind einer oder beide des Speicher- und Graphik-Controllers innerhalb des Prozessors integriert (wie hier beschrieben ist), sind der Speicher 740 und der Coprozessor 745 direkt an den Prozessor 710 gekoppelt und befindet sich der Controller-HUB 720 in einem einzigen Chip mit dem EAH 750.
  • Die optionale Art der zusätzlichen Prozessoren 715 ist in 7 mit gestrichelten Linien angegeben. Jeder Prozessor 710, 715 kann einen oder mehrere der hier beschriebenen Verarbeitungskerne enthalten und kann irgendeine Version des Prozessors 600 sein.
  • Der Speicher 740 kann z. B. ein dynamischer Schreib-Lese-Speicher (DRAM), ein Phasenänderungsspeicher (PCM) oder eine Kombination aus den beiden sein. Für wenigstens eine Ausführungsform kommuniziert der Controller-Hub 720 über einen Bus mit mehreren Stationen, wie z. B. einen Frontside-Bus (FSB), eine Punkt-zu-Punkt-Schnittstelle oder eine ähnliche Verbindung 795, mit dem (den) Prozessor(en) 710, 715.
  • In einer Ausführungsform ist der Coprozessor 745 ein Spezialprozessor, wie z. B. ein MIC-Prozessor mit hohem Durchsatz, ein Netz- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Graphikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen. In einer Ausführungsform kann der Controller-Hub 720 einen integrierten Graphikbeschleuniger enthalten.
  • Es kann verschiedene Unterschiede zwischen den physischen Betriebsmitteln 710, 7155 hinsichtlich eines Spektrums der Metriken der Vorzüge einschließlich der Architektur-, Mikroarchitektur-, thermischen und Leistungsaufnahmeeigenschaften und dergleichen geben.
  • In einer Ausführungsform führt der Prozessor 710 Befehle aus, die die Datenverarbeitungsseparation eines allgemeinen Typs steuern. In die Befehle können Coprozessorbefehle eingebettet sein. Der Prozessor 710 erkennt diese Coprozessorbefehle als ein Typ, der durch den beigefügten Coprozessor 745 ausgeführt werden sollte. Entsprechend gibt der Prozessor 710 diese Coprozessorbefehle (oder Steuersignale, die die Coprozessorbefehle repräsentieren) auf einem Coprozessor-Bus oder einer anderen Zusammenschaltung zu dem Coprozessor 745 aus. Der (die) Coprozessor(en) 745 akzeptiert (akzeptieren) die empfangenen Coprozessorbefehle und führt (führen) sie aus.
  • In 8 ist ein Blockschaltplan eines ersten spezifischeren beispielhaften Systems 800 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 8 gezeigt ist, ist das Mehrprozessorsystem 800 ein Punkt-zu-Punkt-Zusammenschaltungssystem, wobei es einen ersten Prozessor 870 und einen zweiten Prozessor 880 enthält, die über eine Punkt-zu-Punkt-Zusammenschaltung 850 gekoppelt sind. Jeder der Prozessoren 870 und 880 kann irgendeine Version des Prozessors 600 sein. In einer Ausführungsform der Erfindung sind die Prozessoren 870 und 880 die Prozessoren 710 bzw. 715, während der Coprozessor 838 der Coprozessor 745 ist. In einer weiteren Ausführungsform sind die Prozessoren 870 und 880 der Prozessor 710 der Coprozessor 745.
  • Es ist gezeigt, dass die Prozessoren 870 und 880 die integrierten Speicher-Controller-Einheiten (IMC-Einheiten) 872 bzw. 882 enthalten. Der Prozessor 870 enthält außerdem als einen Teil seiner Bus-Controller-Einheiten die Punkt-zu-Punkt-Schnittstellen (P-P-Schnittstellen) 876 und 878; ähnlich enthält der zweite Prozessor 880 die P-P-Schnittstellen 886 und 888. Die Prozessoren 870, 880 können Informationen über eine Punkt-zu-Punkt-Schnittstelle (P-P-Schnittstelle) 850 unter Verwendung der P-P-Schnittstellenschaltungen 878, 888 austauschen. Wie in 8 gezeigt ist, koppeln die IMCs 872 und 882 die Prozessoren an entsprechende Speicher, nämlich einen Speicher 832 und einen Speicher 834, die Teile des Hauptspeichers sein können, die lokal mit den jeweiligen Prozessoren verbunden sind.
  • Die Prozessoren 870, 880 können jeder Informationen über die einzelnen P-P-Schnittstellen 852, 854 unter Verwendung der Punkt-zu-Punkt-Schnittstellenschaltungen 876, 894, 886, 898 mit einem Chipsatz 890 austauschen. Der Chipsatz 890 kann optional Informationen über eine Hochleistungsschnittstelle 892 mit dem Coprozessor 838 austauschen. In einer Ausführungsform ist der Coprozessor 838 ein Spezialprozessor, wie z. B. ein MIC-Prozessor mit hohem Durchsatz, ein Netz- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Graphikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen.
  • In jedem Prozessor oder außerhalb der beiden Prozessoren kann ein (nicht gezeigter) gemeinsam benutzter Cache enthalten sein, der dennoch über die P-P-Zusammenschaltung mit den Prozessoren verbunden ist, so dass die lokalen Cache-Informationen eines oder beider Prozessoren in dem gemeinsam benutzten Cache gespeichert sein können, falls ein Prozessor in einen Kleinleistungsmodus gesetzt ist.
  • Der Chipsatz 890 kann über eine Schnittstelle 896 an einen ersten Bus 816 gekoppelt sein. In einer Ausführungsform kann der erste Bus 816 ein Peripheriekomponenten-Zusammenschaltungsbus (PCI-Bus) oder ein Bus, wie z. B. ein PCI-Express-Bus oder ein anderer E/A-Verbindungsbus, sein, obwohl der Schutzumfang der vorliegenden Erfindung nicht so eingeschränkt ist.
  • Wie in 8 gezeigt ist, können verschiedene E/A-Vorrichtungen 814 zusammen mit einer Busbrücke 818, die den ersten Bus 816 an einen zweiten Bus 820 koppelt, an den ersten Bus 816 gekoppelt sein. In einer Ausführungsform sind ein oder mehrere zusätzliche Prozessor(en) 815, wie z. B. Coprozessoren, MIC-Prozessoren mit hohem Durchsatz, GPGPUs, Beschleuniger (wie z. B. Graphikbeschleuniger oder digitale Signalverarbeitungseinheiten (DSP-Einheiten)), feldprogrammierbare Gatteranordnungen oder irgendein anderer Prozessor an den ersten Bus 816 gekoppelt. In einer Ausführungsform kann der zweite Bus 820 ein Bus mit geringer Pinanzahl (LPC-Bus) sein. In einer Ausführungsform können verschiedene Vorrichtungen an den zweiten Bus 820 gekoppelt sein, einschließlich z. B. einer Tastatur und/oder einer Maus 822, der Kommunikationsvorrichtungen 827 und einer Speichereinheit 828, wie z. B. eines Plattenlaufwerks oder einer anderen Massenspeichervorrichtung, die Befehle/Code und Daten 830 enthalten kann. Ferner kann eine Audio-E/A 824 an den zweiten Bus 816 gekoppelt sein. Es wird angegeben, dass andere Architekturen möglich sind. Anstelle der Punkt-zu-Punkt-Architektur nach 8 kann das System einen Bus mit mehreren Stationen oder eine andere derartige Architektur implementieren.
  • In 9 ist ein Blockschaltplan eines zweiten spezifischeren beispielhaften Systems 900 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Gleiche Elemente in den 8 und 9 tragen gleiche Bezugszeichen, wobei bestimmte Aspekte nach 8 aus 9 weggelassen worden sind, um das Verbergen der anderen Aspekte nach 9 zu vermeiden.
  • 9 veranschaulicht, dass die Prozessoren 870, 880 eine integrierte Speicher- und E/A-Steuerlogik („CL“) 972 bzw. 982 enthalten können. Folglich enthalten die CL 972, 982 die integrierten Speicher-Controller-Einheiten und eine E/A-Steuerlogik. 9 veranschaulicht, dass nicht nur die Speicher 832, 834 an die CL 872, 882 gekoppelt sind, sondern dass außerdem die E/A-Vorrichtungen 914 an die Steuerlogik 872, 882 gekoppelt sind. Die Alt-E/A-Vorrichtungen 915 sind an den Chipsatz 890 gekoppelt.
  • In 10 ist ein Blockschaltplan eines SoC 1000 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Ähnliche Elemente in 6 tragen gleiche Bezugszeichen. Außerdem sind die Kästen mit gestrichelten Linien optionale Merkmale in weiterentwickelteren SoCs. In 10 ist eine Zusammenschaltungseinheit(en) 1002 an Folgendes gekoppelt: einen Anwendungsprozessor 1010, der einen Satz aus einem oder mehreren Kernen 102A-N, einer oder mehreren Cache-Einheiten 604A-N und der (den) gemeinsam benutzten Cache-Einheit(en) 606 enthält; eine Systemagenteneinheit 610; eine Bus-Controller-Einheit(en) 616; eine integrierte Speicher-Controller-Einheit(en) 614; einen Satz von einem oder mehreren Coprozessoren 1020, der eine integrierte Graphiklogik, einen Bildprozessor, einen Audioprozessor und einen Videoprozessor enthalten kann; eine statische Schreib-Lese-Speicher-Einheit (SRAM-Einheit) 1030; eine Speicherdirektzugriffseinheit (DMA-Einheit) 1032; und eine Anzeigeeinheit 1040 zum Koppeln an eine oder mehrere externe Anzeigen. In einer Ausführungsform enthält (enthalten) der (die) Coprozessor(en) 1020 einen Spezialprozessor, wie z. B. einen Netz- oder Kommunikationsprozessor, eine Kompressionsmaschine, eine GPGPU, einen MIC-Prozessor mit hohem Durchsatz, einen eingebetteten Prozessor oder dergleichen.
  • Die Ausführungsformen der hier offenbarten Mechanismen können in Hardware, Software, Firmware oder einer Kombination derartiger Implementierungsherangehensweisen implementiert sein. Die Ausführungsformen der Erfindung können als Computer-Programme oder Programmcode, die in programmierbaren Systemen ausgeführt werden, die wenigstens einen Prozessor, ein Speichersystem (einschließlich flüchtiger und/oder nichtflüchtiger Datenspeicher- und/oder Speicherelemente), wenigstens eine Eingabevorrichtung und wenigstens eine Ausgabevorrichtung umfassen, implementiert sein.
  • Der Programmcode, wie z. B. der in 8 veranschaulichte Code 830, kann auf Eingabebefehle angewendet werden, um die hier beschriebenen Funktionen auszuführen und Ausgabeinformationen zu erzeugen. Die Ausgabeinformationen können in bekannter Weise auf eine oder mehrere Ausgabevorrichtungen angewendet werden. Für die Zwecke dieser Anmeldung enthält das Verarbeitungssystem irgendein System, das einen Prozessor aufweist, wie z. B. einen digitalen Signalprozessor (DSP), einen Mikrocontroller, eine Anwendungsspezifische integrierte Schaltung (ASIC) oder einen Mikroprozessor.
  • Der Programmcode kann in einer höheren prozeduralen Programmiersprache oder einer objektorientierten Programmiersprache implementiert sein, um mit einem Verarbeitungssystem zu kommunizieren. Der Programmcode kann auf Wunsch außerdem in einer Assembler- oder Maschinensprache implementiert sein. In der Tat sind die hier beschriebenen Mechanismen im Schutzumfang nicht auf irgendeine spezielle Programmiersprache eingeschränkt. In jedem Fall kann die Sprache eine kompilierte oder eine interpretierte Sprache sein.
  • Ein oder mehrere Aspekte wenigstens einer Ausführungsform können durch repräsentative Befehle implementiert sein, die in einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logiken innerhalb des Prozessors repräsentiert, die, wenn sie durch eine Maschine gelesen werden, die Maschine veranlassen, eine Logik herzustellen, um die hier beschriebenen Techniken auszuführen. Derartige Darstellungen, die als „IP-Kerne“ bekannt sind, können in einem greifbaren maschinenlesbaren Medium gespeichert sein und können verschiedenen Kunden oder Herstellungseinrichtungen geliefert werden, um sie in die Fertigungsmaschinen zu laden, die die Logik oder den Prozessor tatsächlich bilden.
  • Derartige maschinenlesbare Speichermedien können ohne Einschränkung nicht transitorische greifbare Anordnungen von Herstellungsartikeln enthalten oder durch eine Maschine oder eine Vorrichtung gebildet sein, einschließlich Speichermedien wie z. B. Festplatten, irgendeines anderen Typs von Platten einschließlich Disketten, optischer Platten, Kompaktplatten-Festwertspeichern (CD-ROMs), wiederbeschreibbarer Kompaktplatten (CD-RWs) und magnetooptischer Platten, Halbleitervorrichtungen, wie z. B. Festwertspeichern (ROMs), Schreib-Lese-Speichern (RAMs), wie z. B. dynamischer Schreib-Lese-Speicher (DRAMs), statischer Schreib-Lese-Speicher (SRAMs), löschbarer programmierbarer Festwertspeicher (EPROMs), Flash-Speichern, elektrisch löschbarer programmierbarer Festwertspeicher (EEPROMs), Phasenänderungsspeichern (PCM), magnetischer oder optischer Karten oder irgendeines anderen Typs der Medien, die zum Speichern elektronischer Befehle geeignet sind.
  • Entsprechend enthalten die Ausführungsformen der Erfindung außerdem nicht transitorische greifbare maschinenlesbaren Medien, die Befehle enthalten oder Entwurfsdaten enthalten, wie z. B. eine Hardware-Beschreibungssprache (HDL), die Strukturen, Schaltungen, Vorrichtungen, Prozessoren und/oder Systemmerkmale, die hier beschrieben sind, definieren. Derartige Ausführungsformen können außerdem als Programmprodukte bezeichnet werden.
  • Die Emulation (einschließlich der binären Übersetzung, des Codemorphings usw.)
  • In einigen Fällen kann ein Befehlsumsetzer verwendet werden, um einen Befehl von einem Quellbefehlssatz zu einem Zielbefehlssatz umzusetzen. Der Befehlsumsetzer kann z. B. übersetzen (z. B. unter Verwendung der statischen binären Übersetzung, der dynamischen binären Übersetzung einschließlich der dynamischen Kompilierung), morphen, emulieren oder anderweitig einen Befehl in einen oder mehrere andere Befehle umsetzen, die durch den Kern zu verarbeiten sind. Der Befehlsumsetzer kann in Software, Hardware, Firmware oder einer Kombination daraus implementiert sein. Der Befehlsumsetzer kann sich in dem Prozessor, außerhalb des Prozessors oder teilweise in dem Prozessor und teilweise außerhalb des Prozessors befinden.
  • 11 ist ein Blockschaltplan, der die Verwendung eines Software-Befehlsumsetzers, um binäre Befehle in einem Quellbefehlssatz in binäre Befehle in einem Zielbefehlssatz umzusetzen, gemäß den Ausführungsformen der Erfindung gegenüberstellt. In der veranschaulichten Ausführungsform ist der Befehlsumsetzer ein Software-Befehlsumsetzer, obwohl alternativ der Befehlsumsetzer in Software, Firmware, Hardware oder verschiedenen Kombinationen daraus implementiert sein kann. 11 zeigt ein Programm in einer höheren Sprache 1102, das unter Verwendung eines ersten Kompilierers 1104 kompiliert werden kann, um einen ersten binären Code (z. B. x86) 1106 zu erzeugen, der nativ durch einen Prozessor mit wenigstens einem Kern 1116 mit dem ersten Befehlssatz ausgeführt werden kann. In einigen Ausführungsformen repräsentiert der Prozessor mit wenigstens einem Kern 1116 mit dem ersten Befehlssatz irgendeinen Prozessor, der im Wesentlichen die gleichen Funktionen wie ein Intel-Prozessor mit wenigstens einem x86-Befehlssatz-Kern durch das kompatible Ausführen oder anderweitige Verarbeiten (1) eines wesentlichen Anteils des Befehlssatzes des Intel-x86-Befehlssatz-Kerns oder (2) von Objektcode-Versionen von Anwendungen oder anderer Software, die darauf abzielen, in einem Intel-Prozessor mit wenigstens einem x86-Befehlssatz-Kern ausgeführt zu werden, ausführen kann, um im Wesentlichen das gleiche Ergebnis wie ein Intel-Prozessor mit wenigstens einem x86-Befehlssatz-Kern zu erreichen. Der erste Kompilierer 1104 repräsentiert einen Kompilierer, der betreibbar ist, um binären Code des ersten Befehlssatzes 1106 (z. B. Objektcode) zu erzeugen, der mit einer oder ohne eine zusätzliche Verbindungsverarbeitung in dem Prozessor mit wenigstens einem Kern 1116 mit dem ersten Befehlssatz ausgeführt werden kann. Ähnlich zeigt 11 das Programm in der höheren Sprache 1102, das unter Verwendung eines Kompilierers 1108 für einen alternativen Befehlssatz kompiliert werden kann, um binären Code 1110 des alternativen Befehlssatzes zu erzeugen, der nativ durch einen Prozessor ohne wenigstens einen Kern 1114 mit dem ersten Befehlssatz (z. B. einen Prozessor mit Kernen, die den MIPS-Befehlssatz von MIPS Technology von Sunnyvale, CA, ausführen und/oder die den ARM-Befehlssatz von ARM Holdings von Sunnyvale, CA, ausführen) ausgeführt werden kann. Der Befehlsumsetzer 1112 wird verwendet, um den binären ersten Code 1106 in Code umzusetzen, der nativ durch den Prozessor ohne einen Kern 1114 mit dem ersten Befehlssatz ausgeführt werden kann. Dieser umgesetzte Code ist wahrscheinlich nicht der gleiche wie der binäre Code 1110 des alternativen Befehlssatzes, weil ein Befehlsumsetzer, der dies kann, schwierig herzustellen ist; der umgesetzte Code erreicht jedoch den allgemeinen Betrieb und kann aus Befehlen aus dem alternativen Befehlssatz gebildet sein. Folglich repräsentiert der Befehlsumsetzer 1112 Software, Firmware, Hardware oder eine Kombination daraus, die es durch Emulation, Simulation oder irgendeinen anderen Prozess einem Prozessor oder einer anderen elektronischen Vorrichtung, die keinen Prozessor oder Kern mit dem ersten Befehlssatz aufweist, ermöglicht, den ersten binären Code 1106 auszuführen.
  • VORRICHTUNG UND VERFAHREN FÜR BEFEHLE ZUR VERARBEITUNG DIGITALER SIGNALE
  • Im Folgenden werden Befehle zur Verarbeitung digitaler Signale (DSP-Befehle) beschrieben. In einer Ausführungsform ist die Schaltungsanordnung und die Logik, um die DSP-Operationen auszuführen, innerhalb der in 4B gezeigten Ausführungsmaschineneinheit 450, innerhalb der oben beschriebenen verschiedenen Kerne (z. B. der Kerne 602A-N in den 6 und 10) und/oder innerhalb der in 5A gezeigten Vektoreinheit 510 integriert. Die verschiedenen Quell- und Zielregister können z. B. SIMD-Register innerhalb der Einheit(en) 458 der physikalischen Registerdateien 458 in 4B und/oder Vektorregister 310 in 3 sein. Die Multiplikationsschaltungen, Addiererschaltungen, Akkumulationsschaltungen und die andere Schaltungsanordnung, die im Folgenden beschrieben werden, können innerhalb der Ausführungskomponenten der oben beschriebenen Architekturen, einschließlich beispielhaft und nicht einschränkend der Ausführungseinheit(en) 462 in 4B, integriert sein. Es sollte jedoch angegeben werden, dass die zugrundeliegenden Prinzipien der Erfindung nicht auf diese spezifischen Architekturen eingeschränkt sind.
  • Eine Ausführungsform der Erfindung enthält eine Schaltungsanordnung und/oder eine Logik zum Verarbeiten der Befehle zur Verarbeitung digitaler Signale (DSP-Befehle). Insbesondere umfasst eine Ausführungsform eine Multiplizieren-Akkumulieren-Architektur (MAC-Architektur) mit acht 16 × 16-Bit-Multiplizierern und zwei 64-Bit-Akkumulatoren. Die im Folgenden beschriebene Befehlssatzarchitektur (ISA) kann verschiedene Multiplizieren- und MAC-Operationen an gepackten 128-Bit- (8-Bit-, 16-Bit- oder 32-Bit-Datenelementen) Ganzzahl-, Festkomma- und komplexen Datentypen verarbeiten. Zusätzlich weisen bestimmte Befehle eine direkte Unterstützung für die im hohen Grade effiziente schnelle Fourier-Transformation (FFT) und Filterung mit endlicher Impulsantwort (FIR-Filterung) und die Nachverarbeitung akkumulierter Daten durch Verschiebungs-, Rundungs- und Sättigungsoperationen auf.
  • Eine Ausführungsform der neuen DSP-Befehle verwendet eine VEX.128-präfixbasierte Opcode-Codierung, wobei mehrere der SSE/SSE2/AVX-Befehle, die die Nachverarbeitung der Daten abwickeln, mit dem DSP-ISA verwendet werden. Die VEX-codierten 128-Bit-DSP-Befehle mit Speicheroperanden können gelockerte Speicherausrichtungsanforderungen aufweisen.
  • In einer Ausführungsform unterstützen die Befehle außerdem verschiedene Ganzzahl- und Festkommadatentypen, die Folgendes enthalten:
    1. 1) einen Q31-Datentyp für Signale, die eine Analog-Digital-Umsetzung (ADC) und eine Digital-Analog-Umsetzung (DAC) mit mehr als 16 Bits erfordern;
    2. 2) einen Q15-Datentyp, der in DSP-Algorithmen häufig ist;
    3. 3) einen komplexen 16-Bit-Datentyp; und
    4. 4) einen komplexen 32-Bit-Datentyp.
  • Die hier beschriebene Befehlssatzarchitektur zielt auf einen weiten Bereich von Standard-DSP-Operationen (z. B. FFT, Filterung, Musterabgleich, Korrelation, Polynomauswertung usw.) und statistischen Operationen (z. B. Mittelwert, gleitender Durchschnitt, Varianz usw.) ab.
  • Die Zielanwendungen der Ausführungsformen der Erfindung enthalten Sensor-, Audio-, Klassifizierungsaufgaben für Computervision und Spracherkennung. Der hier beschriebene DSP-ISA enthält einen umfassenden Bereich von Befehlen, die auf tiefe neuronale Netze (DNN), die automatische Spracherkennung (ASR), die Sensorfusion mit Kalman-Filterung, andere Haupt-DSP-Anwendungen usw. anwendbar sind. Die Folge von Gewichten {w1, w2, ..., wk} und die Eingangsfolge {x1, x2, x3, ..., xn} vorausgesetzt, erfordern viele Bildverarbeitungsaufgaben und Aufgaben des maschinellen Lernens, die Ergebnisfolge {y1, y2, y3, ... , yn+1-k} zu berechnen, die durch yi = w1xi + w2xi+1 + ... + wkxi+k-1 definiert ist.
  • 12 veranschaulicht einen beispielhaften Prozessor 1255, in dem die Ausführungsformen der Erfindung implementiert sein können, der mehrere Kerne 0-N zum gleichzeitigen Ausführen mehrerer Befehls-Threads enthält. Die veranschaulichte Ausführungsform enthält eine DSP-Befehlsdecodier-Schaltungsanordnung/Logik 1231 innerhalb des Decodierers 1230 und eine DSP-Befehlsausführungs-Schaltungsanordnung/Logik 1341 innerhalb der Ausführungseinheit 1240. Diese Pipelinekomponenten können die hier beschriebenen Operationen in Reaktion auf die Decodierung und die Ausführung der DSP-Befehle ausführen. Während in 12 die Einzelheiten nur eines einzigen Kerns (des Kerns 0) gezeigt sind, wird erkannt, dass jeder der anderen Kerne des Prozessors 1255 ähnliche Komponenten enthalten kann.
  • Vor dem Beschreiben spezifischer Einzelheiten der Ausführungsformen der Erfindung wird direkt im Folgenden eine Beschreibung der verschiedenen Komponenten des beispielhaften Prozessors 1255 bereitgestellt. Die mehreren Kerne 0-N können jeder eine Speichermanagementeinheit 1290 zum Ausführen von Speicheroperationen (wie z. B. Lade-/Speicheroperationen), einen Satz von Universalregistern (GPRs) 1205, einen Satz von Vektorregistern 1206 und einen Satz von Maskenregistern 1207 enthalten. In einer Ausführungsform sind mehrere Vektordatenelemente in jedes Vektorregister 1206 gepackt, die eine 512-Bit-Breite zum Speichern von zwei 256-Bit-Werten, vier 128-Bit-Werten, acht 64-Bit-Werten, sechzehn 32-Bit-Werten usw. aufweisen können. Die zugrundeliegenden Prinzipien der Erfindung sind jedoch nicht auf irgendeine spezielle Größe/irgendeinen speziellen Typ der Vektordaten eingeschränkt. In einer Ausführungsform können die Maskenregister 1207 acht 64-Bit-Operandenmaskenregister enthalten, die zum Ausführen von Bitmaskierungsoperationen an den in den Vektorregistern 1206 gespeicherten Werten verwendet werden (die z. B. als die hier beschriebenen Maskenregister k0-k7 implementiert sind). Die zugrundeliegenden Prinzipien der Erfindung sind jedoch nicht auf irgendeine spezielle Maskenregistergröße/irgendeinen speziellen Maskenregistertyp eingeschränkt.
  • Jeder Kern 0-N kann einen dedizierten Ebene-1-Cache (L1-Cache) 1212 und einen dedizierten Ebene-2-Cache (L2-Cache) 1211 zum Cachen von Befehlen und Daten gemäß einer spezifizierten Cache-Management-Strategie enthalten. Der L1-Cache 1212 enthält einen separaten Befehls-Cache 1220 zum Speichern von Befehlen und einen separaten Daten-Cache 1221 zum Speichern von Daten. Die innerhalb der verschiedenen Prozessor-Caches gespeicherten Befehle und Daten werden bei der Granularität der Cache-Lines gemanagt, die eine feste Größe (z. B. 64, 128, 512 Bytes in der Länge) sein kann. Jeder Kern dieser beispielhaften Ausführungsform weist eine Befehlsholeinheit 1210 zum Holen von Befehlen vom Hauptspeicher 1200 und/oder einem gemeinsamen benutzten Ebene-3-Cache (L3-Cache) 1216 auf. Die Befehlsholeinheit 1210 enthält verschiedene wohlbekannte Komponenten einschließlich eines Zeigers 1203 auf den nächsten Befehl zum Speichern der Adresse des nächsten Befehls, der von dem Speicher 1200 (oder einem der Caches) zu holen ist; einen Befehls-Adressenübersetzungspuffer (ITLB) 1204 zum Speichern einer Abbildung der zuletzt verwendeten Virtuellen-zuphysikalischen-Befehlsadressen, um die Geschwindigkeit der Adressenübersetzung zu verbessern; eine Verzweigungsvorhersageeinheit 1202 zum spekulativen Vorhersagen von Befehlsverzweigungsadressen; und Verzweigungszielpuffer (BTBs) 1201 zum Speichern von Verzweigungsadressen und Zieladressen.
  • Wie erwähnt worden ist, enthält eine Decodiereinheit 1230 eine DSP-Befehls-Decodierschaltungsanordnung/-logik 1231 zum Decodieren der hier beschriebenen DSP-Befehle in Mikrooperationen oder „µops“, wobei die Ausführungseinheit 1240 eine DSP-Befehls-Ausführungsschaltungsanordnung/-logik 1241 zum Ausführen der DSP-Befehle enthält. Eine Rückschreib-/Stilllegungseinheit 1250 legt die ausgeführten Befehle still und schreibt die Ergebnisse zurück.
  • Die Ausführungsformen zum Ausführen einer gebrochenen Vektormultiplikation vorzeichenbehafteter Wörter
  • Eine Ausführungsform der Erfindung enthält einen Befehl zum Ausführen einer gepackten gebrochenen Multiplikation vorzeichenbehafteter Wörter im xmm2 und xmm3/m128, Runden, Sättigen und Speichern der hohen 16 Bits des Ergebnisses im xmm1. In einer Ausführungsform spezifiziert ein Steuerregister, MXCSR, den Typ des auszuführenden Rundens mit einem Rundungssteuerwert. Insbesondere definiert eine Ausführungsform vier Rundungsbetriebsarten: Runden zum Nächsten, Aufrunden, Abrunden und Runden zur Null. In einer Ausführungsform bedeutet das Runden zum Nächsten, dass das gerundete Ergebnis das nächste bei dem unendlich genauen Ergebnis ist. Falls sich zwei Werte gleich nah befinden, ist das Ergebnis der geradzahlige Wert (derjenige mit dem niedrigstwertigen Bit null). In einer Ausführungsform ist die vorgegebene Rundungsbetriebsart das Runden zum Nächsten, da diese Betriebsart die genaueste und statistisch unverfälschte Schätzung des wahren Ergebnisses bereitstellt und für die meisten Anwendungen geeignet ist. Das Aufrunden bedeutet, dass sich das gerundete Ergebnis am nächsten bei dem unendlich genauen Ergebnis befindet, aber nicht größer als das unendlich genaue Ergebnis ist, das Abrunden bedeutet, dass sich das gerundete Ergebnis am nächsten bei dem unendlich genauen Ergebnis befindet, aber nicht kleiner als das unendlich genaue Ergebnis ist, und das Runden zur Null bedeutet, dass sich das gerundete Ergebnis am nächsten bei dem unendlich genauen Ergebnis befindet, aber sein Absolutwert nicht größer als das unendlich genaue Ergebnis ist. Es sollte jedoch angegeben werden, dass die zugrundeliegenden Prinzipien der Erfindung nicht auf irgendeinen speziellen Typ des Rundens eingeschränkt sind.
  • Falls in einer Ausführungsform der Rundungssteuerwert angibt, dass die Rundungsbetriebsart das Runden zum Nächsten ist, bestimmt die Rundungsschaltungsanordnung einen Abstand zwischen einem vorzeichenbehafteten Doppelwortprodukt und wenigstens zwei nächsten gebrochenen vorzeichenbehafteten Wortdarstellungen des vorzeichenbehafteten Doppelwortprodukts, wobei sie eine vorzeichenbehaftete Wortdarstellung auswählt, die sich am nächsten bei dem vorzeichenbehafteten Doppelwortprodukt befindet. Falls der Rundungssteuerwert angibt, dass die Rundungsbetriebsart das Aufrunden ist, bestimmt die Rundungsschaltungsanordnung einen Abstand zwischen dem vorzeichenbehafteten Doppelwortprodukt und den wenigstens zwei nächsten gebrochenen vorzeichenbehafteten Wortdarstellungen des vorzeichenbehafteten Doppelwortprodukts, wobei sie eine vorzeichenbehaftete Wortdarstellung auswählt, die sich am nächsten bei dem vorzeichenbehafteten Doppelwortprodukt befindet, aber nicht größer als das vorzeichenbehaftete Doppelwortprodukt ist. Falls der Rundungssteuerwert angibt, dass die Rundungsbetriebsart das Abrunden ist, bestimmt die Rundungsschaltungsanordnung einen Abstand zwischen einem vorzeichenbehafteten Doppelwortprodukt und wenigstens zwei nächsten gebrochenen vorzeichenbehafteten Wortdarstellungen des vorzeichenbehafteten Doppelwortprodukts, wobei sie eine vorzeichenbehaftete Wortdarstellung auswählt, die sich am nächsten bei dem vorzeichenbehafteten Doppelwortprodukt befindet, aber nicht kleiner als das vorzeichenbehaftete Doppelwortprodukt ist. Falls schließlich der Rundungssteuerwert angibt, dass die Rundungsbetriebsart das Runden zur Null ist, bestimmt die Rundungsschaltungsanordnung einen Abstand zwischen einem vorzeichenbehafteten Doppelwortprodukt und wenigstens zwei nächsten gebrochenen vorzeichenbehafteten Wortdarstellungen des vorzeichenbehafteten Doppelwortprodukts, wobei sie eine vorzeichenbehaftete Wortdarstellung auswählt, die sich am nächsten bei dem vorzeichenbehafteten Doppelwortprodukt befindet, aber deren Absolutwert nicht größer als das vorzeichenbehaftete Doppelwortprodukt ist.
  • In einer Ausführungsform spezifiziert ein Zwei-Bit-Rundensteuerfeld in einem Steuerregister (z. B. dem MXCSR) eine der obigen Rundungsbetriebsarten, wenn der Befehl ausgeführt wird. Es können z. B. unterschiedliche Kombinationen der Bits [0:1] des MXCSR jede der vier obenerwähnten Rundungsbetriebsarten spezifizieren.
  • In einer Ausführungsform multipliziert die Ausführung des Befehls mehrere gepackte vorzeichenbehaftete Wörter, die im xmm2 gespeichert sind, mit entsprechenden mehreren gepackten vorzeichenbehafteten Wörtern, die in xmm3 (oder einer Speicherstelle) gespeichert sind. Das heißt, das in den Bits [15:0] im xmm2 codierte Wort wird mit dem in den Bits [15:0] im xmm3 codierten Wort multipliziert, während das in den Bits [31:16] des xmm2 codierte Wort mit dem in den Bits [31:16] des xmm3 codierten Wort multipliziert wird, usw. In einer Ausführungsform sind sowohl das xmm3 als auch das xmm2 128-Bit-Register, wobei jede Multiplikation vorzeichenbehafteter Wörter gleichzeitig ausgeführt wird, um acht 32-Bit-Ergebnisse zu erzeugen.
  • Die 32-Bit-Ergebnisse der Multiplikationen können anfangs in acht temporären 32-Bit-Speicherstellen (z. B. in Registern oder im Speicher) gespeichert werden. Jedes der acht Ergebnisse kann dann basierend auf der (z. B. durch die Bits innerhalb des Steuerregisters, wie oben erörtert worden ist) spezifizierten Rundungsbetriebsart gerundet werden. In einer Ausführungsform werden die gerundeten Ergebnisse dann aus dem 32-Bit- in das 16-Bit-Format umgesetzt und gegebenenfalls gesättigt. Es kann eine Trunkierung verwendet werden, um die 16 niedrigstwertigen Bits zu verwerfen und die 16 höchstwertigen Bits des gerundeten 32-Bit-Ergebnisses beizubehalten. In einer Ausführungsform werden die 32-Bit-Werte in gebrochene Q15-Werte umgesetzt. Eine gebrochene Q15-Zahl weist 15 gebrochene Bits auf. In einer Ausführungsform wird das 16. Bit verwendet, um das Vorzeichen des Ergebnisses anzugeben.
  • Eine Implementierung verwendet ein VEX-Befehlsformat, wie es oben bezüglich der 1A-B und der 2A-C beschrieben worden ist. Insbesondere ist in dieser Implementierung der Befehl zum Ausführen einer gepackten gebrochenen Multiplikation als: VEX.NDS.128.F2.MAP5.W1 C0/r dargestellt. Das Codieren des VEX.NDS gibt an, dass der VEX.vvvv das erste Quellregister codiert, wobei die 128 angibt, dass der Befehl ein 128-Bit-SIMD-Ganzzahlbefehl ist. Zusätzlich gibt F2 an, dass der entsprechende VEX.pp-Wert das „Opcode“-Byte in der gleichen Weise beeinflusst, in der das SIMD-Präfix (66H, F2H oder F3H) das folgende Opcode-Byte beeinflusst. Folglich kann eine von null verschiedene Codierung des VEX.pp als ein impliziertes 66H/F2H/F3H-Präfix betrachtet werden. Schließlich gibt das W1 an, dass VEX.W = 1 ist und dass der Opcode unter Verwendung der 3-Byte-Form des VEX-Präfixes codiert sein muss. Das C0/r gibt an, dass der Bedingungscode C0 basierend auf einem oder mehreren Ergebnissen des Befehls aktualisiert wird. In einer Ausführungsform wird das C0 z. B. gesetzt, falls ein oder mehrere Datenelemente gesättigt sind, wie im Folgenden beschrieben wird.
  • 13 veranschaulicht beispielhafte Datenelement- und Bitverteilungen für ein beispielhaftes Quellregister und/oder ein beispielhaftes Zielregister. Die Datenelemente können in das Quellregister und/oder das Zielregister als gepackte Bytes 1301 (8 Bits), Wörter 1302 (16 Bits), Doppelwörter 1303 (32 Bits) und/oder Quadwörter 1304 (64 Bits) gepackt sein, wie veranschaulicht ist. In einigen Ausführungsformen, die komplexe Zahlen verarbeiten, können die Real- und Imaginärkomponenten in benachbarten Datenelementstellen gespeichert sein. Eine Realkomponente kann z. B. als ein Datenelement A gespeichert sein, während die entsprechende Imaginärkomponente als ein Datenelement B gespeichert sein kann. In anderen hier beschriebenen Ausführungsformen (z. B. dem Befehl zum Ausführen einer gepackten gebrochenen Multiplikation vorzeichenbehafteter Wörter mit Runden, Sättigung usw.) repräsentieren die gepackten Datenelemente A-H keine komplexen Zahlen.
  • 14A veranschaulicht eine beispielhafte Architektur zum Ausführen des Befehls zum Ausführen einer gepackten gebrochenen Multiplikation vorzeichenbehafteter Wörter im xmm2 und xmm3/m128, Runden, Sättigen und Speichern der hohen 16 Bits des Ergebnisses im xmml. Wie erwähnt worden ist, verwendet eine Ausführungsform dieses Befehls zwei Operanden gepackter Quelldaten, die in den Registern SRC1 1401 und SRC2 1402 gespeichert sind, wie veranschaulicht ist, und ein Quell-/Zielregister, SRC3/DEST 1460, zum Speichern der gepackten akkumulierten Werte. Die Schaltungsanordnung 1405 zur parallelen Multiplikation erzeugt durch das Multiplizieren jedes gepackten vorzeichenbehafteten Wortes im SRC1 1401 mit einem entsprechenden gepackten vorzeichenbehafteten Wort im SRC2 1402 mehrere temporäre Doppelwortprodukte 1480. Die Schaltungsanordnung 1485 zur Akkumulation und zum gebrochenen Runden/Sättigen addiert dann jedes temporäre Doppelwortprodukt mit einem gepackten Wort aus dem Zielregister 1460 (oder einem weiteren Quellregister), rundet und sättigt die resultierenden Summen und behält die 16 höchstwertigen Bits bei, die als vorzeichenbehaftete gebrochene Wortdatenelemente 1490 (die z. B. als Q15-Werte formatiert sind) zurück an die entsprechenden Stellen in dem Zielregister 1460 geschrieben werden.
  • Wie erwähnt worden ist, kann in einer Ausführungsform ein anderer Typ des Rundens in Übereinstimmung mit einem Rundungssteuerwert, der in einem Steuerregister 1461 gespeichert ist, verwendet werden. In einer Implementierung kann der Rundungssteuerwert vier verschiedene Rundungsbetriebsarten spezifizieren, die durch die Schaltungsanordnung 1485 zur Akkumulation und zum gebrochenen Runden/Sättigen implementiert sein können: Runden zum Nächsten, Aufrunden, Abrunden und Runden zur Null (die oben beschrieben worden sind).
  • Die Schaltungsanordnung 1485 zur Akkumulation und zum gebrochenen Runden/Sättigen kann eine unabhängige Akkumulationsschaltung (um die Zielwerte zu den temporären Produkten zu addieren) und eine unabhängige Runden-/Sättigungsschaltungsanordnung (zum Ausführen des Rundens/der Sättigung, wie hier beschrieben worden ist) umfassen, während sie als eine einzige, integrierte Komponente veranschaulicht ist.
  • 14B veranschaulicht eine weitere beispielhafte Implementierung zum Ausführen einer gepackten gebrochenen Multiplikation vorzeichenbehafteter Wörter im xmm2 und xmm3/m128, Runden, Sättigen und Speichern der hohen 16 Bits des Ergebnisses im xmml. Wie erwähnt worden ist, verwendet eine Ausführungsform dieses Befehls zwei Operanden gepackter Quelldaten, die in den Registern SRC1 1401 und SRC2 1402 gespeichert sind, und ein Quell-/Zielregister, SRC3/DEST 1460, zum Speichern der gepackten akkumulierten Werte. In der veranschaulichten Ausführungsform speichert das SRC1 1401 die vorzeichenbehafteten Wortdatenelemente S1A-S1H, speichert das SRC2 1402 die vorzeichenbehafteten Wortdatenelemente S2A-S2H und speichert das SRC3/DEST 1460 die vorzeichenbehafteten Wortdatenelemente S3A-S3H (wobei S1 das SRC1 bedeutet, S2 das SRC2 bedeutet und S3 das SRC3/DEST bedeutet).
  • Es wird angegeben, dass bestimmte in 14B gezeigte Komponenten, wie z. B. die Addierernetze 1410-1411, nicht verwendet werden können, um die gepackte gebrochene Multiplikation vorzeichenbehafteter Wörter auszuführen. Dies ist eine Folge der Tatsache, dass die veranschaulichte Architektur verwendet werden kann, um verschiedene unterschiedliche Befehle auszuführen, von denen einige die Addierernetze 1410-1411 verwenden und einige (wie der hier beschriebene Befehl) sie nicht verwenden. In der beschriebenen Implementierung werden die Daten einfach von den Multiplizierern 1405 ohne Modifikation zu den Akkumulatoren 1410-1411 hindurchgeleitet.
  • In einer Ausführungsform leitet ein Eingangsmultiplexer 1403 die im SRC1 gespeicherten vorzeichenbehafteten Wortdatenelemente A-H und die im SRC1 gespeicherten vorzeichenbehafteten Wortdatenelemente A-H zu den Multiplizierern 1405, die gleichzeitig acht Multiplikationen von zwei Wörtern ausführen. In der veranschaulichten Implementierung führen die Multiplizierer 1405 die folgenden Multiplikationen aus: S1A * S2A, S1B * S2B, S1C * S2C, S1D * S2D, SIE * S2E, S1F * S2F, S1G * S2G und S1H * S2H (wobei S1 das SRC1 bedeutet und S2 das SRC2 bedeutet) . Jedes der acht 32-Bit-Produkte wird in einem temporären Register/temporären Speicherstellen (die nicht gezeigt sind) gespeichert.
  • Ein oder mehrere Akkumulatoren 1420-1421 addieren die acht 32-Bit-Produkte zu dem entsprechenden Wortwert, der in dem dritten Quell-/Zielregister 1460 gespeichert ist, wobei die Runde-/Sättigungsschaltungsanordnung 1440-1441 dann das Runden und die Sättigung (gegebenenfalls) ausführt und die 16 höchstwertigen Bits der Ergebnisse beibehält. Ein Ausgangsmultiplexer 1450 speichert die 16 höchstwertigen Bits in jeder der Datenelementstellen A-H des Zielregisters SRC1/DEST 1460.
  • Während die oben beschriebene Ausführungsform die Akkumulation vor dem Runden/der Sättigung ausführt, rundet/sättigt eine alternative Ausführungsform die 32-Bit-Produkte, um temporäre 16-Bit-Werte zu erzeugen. Die Akkumulatoren 1420-1421 addieren dann die temporären 16-Bit-Werte zu den entsprechenden Wortwerten aus dem dritten Quell-/Zielregister 1460.
  • In einer Ausführungsform sind die in Reaktion auf den Befehl ausgeführten Operationen gemäß der folgenden Codefolge definiert:
    • TEMP0[31:0] ← (SRC1[15:0] * SRC2[15:0]);
    • TEMP1[31:0] ← (SRC1[31:16] * SRC2[31:16]);
    • TEMP2[31:0] ← (SRC1[47:32] * SRC2[47:32]);
    • TEMP3[31:0] ← (SRC1[63:48] * SRC2[63:48]);
    • TEMP4[31:0] ← (SRC1[79:64] * SRC2[79:64]);
    • TEMP5[31:0] ← (SRC1[95:80] * SRC2[95:80]);
    • TEMP6[31:0] ← (SRC1[111:96] * SRC2[111:96]);
    • TEMP7[31:0] ← (SRC1[127:112] * SRC2[127:112]);
    • DEST[15:0] ← Q15FractionalRoundSaturateToSignedWord (TEMP0[31:0], MXCSR.IRM[1:0], DEST[15:0]);
    • DEST[31:16] ← Q15FractionalRoundSaturateToSignedWord (TEMP1[31:0], MXCSR.IRM[1:0], DEST[31:16]);
    • DEST[47:32] ← Q15FractionalRoundSaturateToSignedWord (TEMP2[31:0], MXCSR.IRM[1:0], DEST[47:32]);
    • DEST[63:48] ← Q15FractionalRoundSaturateToSignedWord (TEMP3[31:0], MXCSR.IRM[1:0], DEST[63:48]);
    • DEST[79:64] ← Q15FractionalRoundSaturateToSignedWord (TEMP4[31:0], MXCSR.IRM[1:0], DEST[79:64]);
    • DEST[95:80] ← Q15FractionalRoundSaturateToSignedWord (TEMP5[31:0], MXCSR.IRM[1:0], DEST[95:80]);
    • DEST[111:96] ← Q15FractionalRoundSaturateToSignedWord (TEMP6[31:0], MXCSR.IRM[1:0], DEST[111:96]);
    • DEST[127:112] ← Q15FractionalRoundSaturateToSignedWord (TEMP7[31:0], MXCSR.IRM[1:0], DEST[127:112]);
  • In der obigen Codedarstellung werden die 32-Bit-Ergebnisse der acht Multiplikationen vorzeichenbehafteter Wörter anfangs im TEMPO bis TEMP7 gespeichert. Diese Werte werden dann jeder in die gebrochenen vorzeichenbehafteten Ergebnisse umgesetzt, die an den angegebenen Datenelementstellen innerhalb des Zielregisters gespeichert werden. Wie erwähnt worden ist, wird in einer Ausführungsform das gebrochene Q15-Datenformat verwendet. DEST[15:0] +-Q15FractionalRoundSaturateToSignedWord (TEMP0[31:0], MXCSR.IRM[1:0], DEST[15:0]) gibt z. B. an. dass der 32-Bit-Wert im TEMPO unter Verwendung des Rundens, der Sättigung (gegebenenfalls) und/oder der Trunkierung (z. B. der niedrigstwertigen 16 Bits des gerundeten Ergebnisses) in ein vorzeichenbehaftetes Q15-Format umgesetzt wird, wobei das endgültige vorzeichenbehaftete gebrochene Ergebnis an der Wortdatenelementstelle an den Bits [15:0] des DEST gespeichert wird.
  • In 15 ist ein Ablaufplan in Übereinstimmung mit einer Ausführungsform der Erfindung veranschaulicht. Das Verfahren kann innerhalb des Kontexts der oben beschriebenen Prozessor- und Systemarchitekturen implementiert sein, wobei es aber nicht auf irgendeine spezielle Systemarchitektur eingeschränkt ist.
  • Bei 1501 wird ein Befehl, der Felder für einen Opcode und einen ersten und einen zweiten Quelloperanden gepackter Wörter und einen Zieloperanden gepackter Wörter aufweist, geholt. Bei 1502 wird der Befehl (z. B. in mehrere Mikrooperationen) decodiert, um einen ersten decodierten Befehl zu erzeugen. Bei 1503 werden die gepackten vorzeichenbehafteten Wortwerte für den ersten und den zweiten Operanden (z. B. vom Speicher, einem Daten-Cache usw.) wiedergewonnen und in dem ersten bzw. dem zweiten Quellregister gespeichert. Wie erwähnt worden ist, sind in einer Ausführungsform die Quelloperanden in einem 128-Bit-Register für gepackte Daten mit gepackten vorzeichenbehafteten Wortdatenelementen (d. h., 32-Bit-Elementen) gespeichert.
  • Bei 1504 wird der decodierte Befehl ausgeführt, um jedes vorzeichenbehaftete Wortdatenelement in dem ersten Quellregister gleichzeitig mit einem entsprechenden vorzeichenbehafteten Wortdatenelement in dem zweiten Quellregister zu multiplizieren, um acht vorzeichenbehaftete Doppelwortprodukte zu erzeugen. Wie erwähnt worden ist, können die acht Doppelwortprodukte an temporären 32-Bit-Speicherstellen (z. B. Registern oder Speicherstellen) gespeichert werden. Die acht Doppelwortwerte werden dann in ein vorzeichenbehaftetes gebrochenes 16-Bit-Format, wie z. B. das Q15-Format, umgesetzt. Dies kann durch das Runden in Übereinstimmung mit einer spezifizierten Rundungsbetriebsart, das Sättigen und/oder das Trunkieren zu vorzeichenbehafteten gebrochenen 16-Bit-Wortwerten erreicht werden, wie oben beschrieben worden ist.
  • Bei 1505 werden dann die endgültigen vorzeichenbehafteten gebrochenen Wortwerte an spezifizierten Wortdatenelementstellen im Zielregister gespeichert.
  • In der vorhergehenden Beschreibung sind die Ausführungsformen der Erfindung bezüglich ihrer spezifischen beispielhaften Ausführungsformen beschrieben worden. Es ist jedoch offensichtlich, dass verschiedene Modifikationen und Änderungen daran vorgenommen werden können, ohne von dem breiteren Erfindungsgedanken und Schutzumfang der Erfindung abzuweichen, wie sie in den beigefügten Ansprüchen dargelegt sind. Die Beschreibung und die Zeichnungen sind anstatt in einem einschränkenden Sinn entsprechend in einem veranschaulichenden Sinn zu betrachten.
  • Die Ausführungsformen der Erfindung können verschiedene Schritte enthalten, wie oben beschrieben worden sind. Die Schritte können in maschinenausführbaren Befehlen verkörpert sein, die verwendet werden können, um einen Universal- oder Spezialprozessor zu veranlassen, die Schritte auszuführen. Alternativ können die Schritte durch spezifische Hardware-Komponenten, die eine festverdrahtete Logik zum Ausführen der Schritte enthalten, oder durch irgendeine Kombination aus programmierten Computer-Komponenten und kundenspezifischen Hardware-Komponenten ausgeführt werden.
  • Die Befehle, wie sie hier beschrieben worden sind, können sich auf spezifische Konfigurationen von Hardware, wie z. B. anwendungsspezifische integrierte Schaltungen (ASICs), die konfiguriert sind, um bestimmte Operationen auszuführen, oder die eine vorgegebene Funktionalität aufweisen, oder Software-Befehle, die in einem Speicher gespeichert sind, der in einem nicht transitorischen computerlesbaren Medium verkörpert ist, beziehen. Folglich können die in den Figuren gezeigten Techniken unter Verwendung von Code und Daten implementiert sein, die in einer oder mehreren elektronischen Vorrichtungen (z. B. einer Endstation, einem Netzelement usw.) gespeichert sind und ausgeführt werden. Derartige elektronische Vorrichtungen speichern und übertragen (intern und/oder mit anderen elektronischen Vorrichtungen über ein Netz) Code und Daten unter Verwendung computermaschinenlesbarer Medien, wie z. B. nicht transitorischer computermaschinenlesbarer Speichermedien (z. B. Magnetplatten; optischer Platten; Schreib-Lese-Speicher; Festwertspeicher; Flash-Speichervorrichtungen; Phasenänderungsspeicher) und transitorischer computermaschinenlesbarer Kommunikationsmedien (z. B. elektrischer, optischer, akustischer oder einer anderen Form ausgebreiteter Signale - wie z. B. Trägerwellen, Infrarotsignale, digitale Signale usw.). Zusätzlich enthalten derartige elektronische Vorrichtungen typischerweise einen Satz von einem oder mehreren Prozessoren, die an eine oder mehrere andere Komponenten, wie z. B. eine oder mehrere Speichervorrichtungen (nicht transitorische maschinenlesbare Speichermedien), Anwender-Eingabe/Ausgabe-Vorrichtungen (z. B. eine Tastatur, einen Berührungsschirm und/oder eine Anzeige) und Netzverbindungen, gekoppelt sind. Das Koppeln des Satzes von Prozessoren und der anderen Komponenten geschieht typischerweise durch einen oder mehrere Busse oder und eine oder mehrere Brücken (die außerdem als Bus-Controller bezeichnet werden). Die Speichervorrichtungen und die Signale, die den Netzverkehr tragen, repräsentieren jeweils eines oder mehrere maschinenlesbare Speichermedien und maschinenlesbare Kommunikationsmedien. Folglich speichert die Speichervorrichtung einer gegebenen elektronischen Vorrichtung typischerweise Code und/oder Daten zur Ausführung in dem Satz von einem oder mehreren Prozessoren dieser elektronischen Vorrichtung. Selbstverständlich können ein oder mehrere Teile einer Ausführungsform der Erfindung unter Verwendung verschiedener Kombinationen aus Software, Firmware und/oder Hardware implementiert sein. Überall in dieser ausführlichen Beschreibung sind für Erklärungszwecke zahlreiche spezifische Einzelheiten dargelegt worden, um ein umfassendes Verständnis der vorliegenden Erfindung bereitzustellen. Es ist jedoch für einen Fachmann auf dem Gebiet offensichtlich, dass die Erfindung ohne einige dieser spezifischen Einzelheiten praktiziert werden kann. In bestimmten Fällen sind wohlbekannte Strukturen und Funktionen nicht in ausgearbeiteten Einzelheiten beschrieben worden, um ein Verbergen des Gegenstands der vorliegenden Erfindung zu vermeiden. Entsprechend sollten der Schutzumfang und Erfindungsgedanke der Erfindung hinsichtlich der folgenden Ansprüche beurteilt werden.

Claims (25)

  1. Prozessor, der Folgendes umfasst: einen Decodierer, um einen Befehl zu decodieren; ein erstes Quellregister, um erste mehrere gepackte vorzeichenbehaftete Wortdatenelemente zu speichern; ein zweites Quellregister, um zweite mehrere gepackte vorzeichenbehaftete Wortdatenelemente zu speichern; ein Steuerregister, um einen Rundungssteuerwert zu speichern, um eine Rundungsbetriebsart anzugeben; eine Ausführungsschaltungsanordnung, um den decodierten Befehl auszuführen, wobei die Ausführungsschaltungsanordnung Folgendes umfasst: eine Multipliziererschaltungsanordnung, um jedes der gepackten vorzeichenbehafteten Wortdatenelemente der ersten Mehreren mit einem entsprechenden gepackten vorzeichenbehafteten Wortdatenelement der zweiten Mehreren gleichzeitig zu multiplizieren, um mehrere vorzeichenbehaftete Doppelwortprodukte zu erzeugen; eine Umsetzungsschaltungsanordnung, um die mehreren vorzeichenbehafteten Doppelwortprodukte in mehrere gebrochene vorzeichenbehaftete Wörter umzusetzen, wobei die Umsetzungsschaltungsanordnung eine Rundungsschaltungsanordnung enthält, um die vorzeichenbehafteten Doppelwortprodukte in Übereinstimmung mit der durch den Rundungssteuerwert angegebenen Rundungsbetriebsart zu runden, um die mehreren gebrochenen vorzeichenbehafteten Wörter zu erzeugen; und ein Zielregister, um die mehreren gebrochenen vorzeichenbehafteten Wörter als gepackte vorzeichenbehaftete gebrochene Wortdatenelemente an spezifizierten Datenelementpositionen innerhalb des Zielregisters zu speichern.
  2. Prozessor nach Anspruch 1, wobei die spezifizierte Rundungsbetriebsart eines der Folgenden umfasst: Runden zum Nächsten, Aufrunden, Abrunden und Runden zur Null.
  3. Prozessor nach Anspruch 2, wobei das Runden zum Nächsten bedeutet, dass sich ein gerundetes Ergebnis am nächsten bei dem unendlich genauen Ergebnis befindet, das Aufrunden bedeutet, dass sich das gerundete Ergebnis am nächsten bei dem unendlich genauen Ergebnis befindet, aber nicht größer als das unendlich genaue Ergebnis ist, das Abrunden bedeutet, dass sich das gerundete Ergebnis am nächsten bei dem unendlich genauen Ergebnis befindet, aber nicht kleiner als das unendlich genaue Ergebnis ist, und das Runden zur Null bedeutet, dass sich das gerundete Ergebnis am nächsten bei dem unendlich genauen Ergebnis befindet, aber sein Absolutwert nicht größer als das unendlich genaue Ergebnis ist.
  4. Prozessor nach Anspruch 2, wobei ein Rundungssteuerwert das Runden zum Nächsten angibt, ein zweiter Steuerwert das Aufrunden angibt, ein dritter Rundungssteuerwert das Abrunden angibt und ein vierter Rundungssteuerwert das Runden zur Null angibt.
  5. Prozessor nach Anspruch 1 oder 4, wobei die Umsetzungsschaltungsanordnung ferner eine Sättigungsschaltungsanordnung umfasst, um die vorzeichenbehafteten gebrochenen Wortdatenelemente zu sättigen.
  6. Prozessor nach Anspruch 1 oder 4, wobei die Umsetzungsschaltungsanordnung ferner eine Trunkierungsschaltungsanordnung umfasst, um einen niedrigstwertigen 16-Bit-Anteil jedes der vorzeichenbehafteten Doppelwortprodukte zu trunkieren, um die vorzeichenbehafteten gebrochenen Wortdatenelemente zu erzeugen.
  7. Prozessor nach Anspruch 1 oder 6, wobei sowohl die ersten als auch die zweiten mehreren gepackten vorzeichenbehafteten Wortdatenelemente acht gepackte vorzeichenbehaftete Wortdatenelemente umfassen, wobei die mehreren vorzeichenbehafteten Doppelwortprodukte acht vorzeichenbehaftete Doppelwortprodukte umfassen und wobei die mehreren gepackten vorzeichenbehafteten gebrochenen Wortdatenelemente acht gepackte vorzeichenbehaftete gebrochene Wortdatenelemente umfassen.
  8. Prozessor nach Anspruch 1 oder 4, wobei die ersten und die zweiten mehreren gepackten vorzeichenbehafteten Wortdatenelemente und die gebrochenen vorzeichenbehafteten Wörter gebrochene Q15-Werte umfassen.
  9. Verfahren, das Folgendes umfasst: Decodieren eines Befehls; Ausführen des Befehls, um die folgenden Operationen auszuführen: gleichzeitiges Multiplizieren jedes von mehreren gepackten vorzeichenbehafteten Wortdatenelementen von ersten Mehreren, die in einem ersten Quellregister gespeichert sind, mit einem entsprechenden gepackten vorzeichenbehafteten Wortdatenelement von zweiten Mehreren, die in einem zweiten Quellregister gespeichert sind, um mehrere vorzeichenbehaftete Doppelwortprodukte zu erzeugen; Umsetzen der mehreren vorzeichenbehafteten Doppelwortprodukte in mehrere gebrochene vorzeichenbehaftete Wörter, wobei das Umsetzen das Runden der vorzeichenbehafteten Doppelwortprodukte in Übereinstimmung mit einer durch einen Rundungssteuerwert, der in einem Steuerregister gespeichert ist, angegebenen Rundungsbetriebsart enthält, um die mehreren gebrochenen vorzeichenbehafteten Wörter zu erzeugen; und Speichern der mehreren gebrochenen vorzeichenbehafteten Wörter als gepackte vorzeichenbehaftete gebrochene Wortdatenelemente an spezifizierten Datenelementpositionen innerhalb des Zielregisters.
  10. Verfahren nach Anspruch 9, wobei die spezifizierte Rundungsbetriebsart eines der Folgenden umfasst: Runden zum Nächsten, Aufrunden, Abrunden und Runden zur Null.
  11. Verfahren nach Anspruch 10, wobei das Runden zum Nächsten bedeutet, dass sich ein gerundetes Ergebnis am nächsten bei dem unendlich genauen Ergebnis befindet, das Aufrunden bedeutet, dass sich das gerundete Ergebnis am nächsten bei dem unendlich genauen Ergebnis befindet, aber nicht größer als das unendlich genaue Ergebnis ist, das Abrunden bedeutet, dass sich das gerundete Ergebnis am nächsten bei dem unendlich genauen Ergebnis befindet, aber nicht kleiner als das unendlich genaue Ergebnis ist, und das Runden zur Null bedeutet, dass sich das gerundete Ergebnis am nächsten bei dem unendlich genauen Ergebnis befindet, aber sein Absolutwert nicht größer als das unendlich genaue Ergebnis ist.
  12. Verfahren nach Anspruch 10, wobei ein Rundungssteuerwert das Runden zum Nächsten angibt, ein zweiter Steuerwert das Aufrunden angibt, ein dritter Rundungssteuerwert das Abrunden angibt und ein vierter Rundungssteuerwert das Runden zur Null angibt.
  13. Verfahren nach Anspruch 9 oder 12, wobei die Umsetzungsschaltungsanordnung ferner eine Sättigungsschaltungsanordnung umfasst, um die vorzeichenbehafteten gebrochenen Wortdatenelemente zu sättigen.
  14. Verfahren nach Anspruch 9 oder 12, wobei die Umsetzungsschaltungsanordnung ferner eine Trunkierungsschaltungsanordnung umfasst, um einen niedrigstwertigen 16-Bit-Anteil jedes der vorzeichenbehafteten Doppelwortprodukte zu trunkieren, um die vorzeichenbehafteten gebrochenen Wortdatenelemente zu erzeugen.
  15. Verfahren nach Anspruch 9 oder 12, wobei sowohl die ersten als auch die zweiten mehreren gepackten vorzeichenbehafteten Wortdatenelemente acht gepackte vorzeichenbehaftete Wortdatenelemente umfassen, wobei die mehreren vorzeichenbehafteten Doppelwortprodukte acht vorzeichenbehaftete Doppelwortprodukte umfassen und wobei die mehreren gepackten vorzeichenbehafteten gebrochenen Wortdatenelemente acht gepackte vorzeichenbehaftete gebrochene Wortdatenelemente umfassen.
  16. Verfahren nach Anspruch 9 oder 12, wobei die ersten und die zweiten mehreren gepackten vorzeichenbehafteten Wortdatenelemente und die gebrochenen vorzeichenbehafteten Wörter gebrochene Q15-Werte umfassen.
  17. Maschinenlesbares Medium, das darin gespeicherten Programmcode aufweist, der, wenn er durch eine Maschine ausgeführt wird, die Maschine veranlasst, die folgenden Operationen auszuführen: Decodieren eines Befehls; Ausführen des Befehls, um die folgenden Operationen auszuführen: gleichzeitiges Multiplizieren jedes von mehreren gepackten vorzeichenbehafteten Wortdatenelementen von ersten Mehreren, die in einem ersten Quellregister gespeichert sind, mit einem entsprechenden gepackten vorzeichenbehafteten Wortdatenelement von zweiten Mehreren, die in einem zweiten Quellregister gespeichert sind, um mehrere vorzeichenbehaftete Doppelwortprodukte zu erzeugen; Umsetzen der mehreren vorzeichenbehafteten Doppelwortprodukte in mehrere gebrochene vorzeichenbehaftete Wörter, wobei das Umsetzen das Runden der vorzeichenbehafteten Doppelwortprodukte in Übereinstimmung mit einer durch einen Rundungssteuerwert, der in einem Steuerregister gespeichert ist, angegebenen Rundungsbetriebsart enthält, um die mehreren gebrochenen vorzeichenbehafteten Wörter zu erzeugen; und Speichern der mehreren gebrochenen vorzeichenbehafteten Wörter als gepackte vorzeichenbehaftete gebrochene Wortdatenelemente an spezifizierten Datenelementpositionen innerhalb des Zielregisters.
  18. Maschinenlesbares Medium nach Anspruch 17, wobei die spezifizierte Rundungsbetriebsart eines der Folgenden umfasst: Runden zum Nächsten, Aufrunden, Abrunden und Runden zur Null.
  19. Maschinenlesbares Medium nach Anspruch 18, wobei das Runden zum Nächsten bedeutet, dass sich ein gerundetes Ergebnis am nächsten bei dem unendlich genauen Ergebnis befindet, das Aufrunden bedeutet, dass sich das gerundete Ergebnis am nächsten bei dem unendlich genauen Ergebnis befindet, aber nicht größer als das unendlich genaue Ergebnis ist, das Abrunden bedeutet, dass sich das gerundete Ergebnis am nächsten bei dem unendlich genauen Ergebnis befindet, aber nicht kleiner als das unendlich genaue Ergebnis ist, und das Runden zur Null bedeutet, dass sich das gerundete Ergebnis am nächsten bei dem unendlich genauen Ergebnis befindet, aber sein Absolutwert nicht größer als das unendlich genaue Ergebnis ist.
  20. Maschinenlesbares Medium nach Anspruch 18, wobei ein Rundungssteuerwert das Runden zum Nächsten angibt, ein zweiter Steuerwert das Aufrunden angibt, ein dritter Rundungssteuerwert das Abrunden angibt und ein vierter Rundungssteuerwert das Runden zur Null angibt.
  21. Maschinenlesbares Medium nach Anspruch 17 oder 20, wobei die Umsetzungsschaltungsanordnung ferner eine Sättigungsschaltungsanordnung umfasst, um die vorzeichenbehafteten gebrochenen Wortdatenelemente zu sättigen.
  22. Maschinenlesbares Medium nach Anspruch 17 oder 20, wobei die Umsetzungsschaltungsanordnung ferner eine Trunkierungsschaltungsanordnung umfasst, um einen niedrigstwertigen 16-Bit-Anteil jedes der vorzeichenbehafteten Doppelwortprodukte zu trunkieren, um die vorzeichenbehafteten gebrochenen Wortdatenelemente zu erzeugen.
  23. Maschinenlesbares Medium nach Anspruch 17 oder 20, wobei sowohl die ersten als auch die zweiten mehreren gepackten vorzeichenbehafteten Wortdatenelemente acht gepackte vorzeichenbehaftete Wortdatenelemente umfassen, wobei die mehreren vorzeichenbehafteten Doppelwortprodukte acht vorzeichenbehaftete Doppelwortprodukte umfassen und wobei die mehreren gepackten vorzeichenbehafteten gebrochenen Wortdatenelemente acht gepackte vorzeichenbehaftete gebrochene Wortdatenelemente umfassen.
  24. Maschinenlesbares Medium nach Anspruch 17 oder 20, wobei die ersten und die zweiten mehreren gepackten vorzeichenbehafteten Wortdatenelemente und die gebrochenen vorzeichenbehafteten Wörter gebrochene Q15-Werte umfassen.
  25. Vorrichtung, die Folgendes umfasst: Mittel zum Decodieren eines Befehls; Mittel zum Ausführen des Befehls, um die folgenden Operationen auszuführen: Mittel zum gleichzeitigen Multiplizieren jedes von mehreren gepackten vorzeichenbehafteten Wortdatenelementen von ersten Mehreren, die in einem ersten Quellregister gespeichert sind, mit einem entsprechenden gepackten vorzeichenbehafteten Wortdatenelement von zweiten Mehreren, die in einem zweiten Quellregister gespeichert sind, um mehrere vorzeichenbehaftete Doppelwortprodukte zu erzeugen; Mittel zum Umsetzen der mehreren vorzeichenbehafteten Doppelwortprodukte in mehrere gebrochene vorzeichenbehaftete Wörter, wobei das Umsetzen das Runden der vorzeichenbehafteten Doppelwortprodukte in Übereinstimmung mit einer durch einen Rundungssteuerwert, der in einem Steuerregister gespeichert ist, angegebenen Rundungsbetriebsart enthält, um die mehreren gebrochenen vorzeichenbehafteten Wörter zu erzeugen; und Mittel zum Speichern der mehreren gebrochenen vorzeichenbehafteten Wörter als gepackte vorzeichenbehaftete gebrochene Wortdatenelemente an spezifizierten Datenelementpositionen innerhalb des Zielregisters.
DE102018128939.1A 2017-12-21 2018-11-19 Vorrichtung und Verfahren zur Vektormultiplikation vorzeichenbehafteter Wörter, Rundung und Sättigung Pending DE102018128939A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/850,248 US20190196828A1 (en) 2017-12-21 2017-12-21 Apparatus and method for vector multiply of signed words, rounding, and saturation
US15/850,248 2017-12-21

Publications (1)

Publication Number Publication Date
DE102018128939A1 true DE102018128939A1 (de) 2019-06-27

Family

ID=66767953

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018128939.1A Pending DE102018128939A1 (de) 2017-12-21 2018-11-19 Vorrichtung und Verfahren zur Vektormultiplikation vorzeichenbehafteter Wörter, Rundung und Sättigung

Country Status (3)

Country Link
US (1) US20190196828A1 (de)
CN (1) CN109947474A (de)
DE (1) DE102018128939A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11334319B2 (en) 2017-06-30 2022-05-17 Intel Corporation Apparatus and method for multiplication and accumulation of complex values
US11294679B2 (en) * 2017-06-30 2022-04-05 Intel Corporation Apparatus and method for multiplication and accumulation of complex values
CN113570392B (zh) * 2020-04-29 2024-04-09 中移动信息技术有限公司 用户分群方法、装置、电子设备及计算机存储介质
CN112181355B (zh) * 2020-10-12 2021-08-06 上海芯旺微电子技术有限公司 一种移位饱和处理方法及其应用
US20230004393A1 (en) * 2021-06-26 2023-01-05 Intel Corporation Apparatus and method for vector packed signed/unsigned shift, round, and saturate
US20230004387A1 (en) * 2021-06-26 2023-01-05 Intel Corporation Apparatus and method for vector packed multiply of signed and unsigned words

Also Published As

Publication number Publication date
CN109947474A (zh) 2019-06-28
US20190196828A1 (en) 2019-06-27

Similar Documents

Publication Publication Date Title
DE102018006757A1 (de) Festkomma-zu-gleitkomma-umwandlung
DE102018005977A1 (de) Gleitkomma- zu festkomma-umwandlung
DE102018128939A1 (de) Vorrichtung und Verfahren zur Vektormultiplikation vorzeichenbehafteter Wörter, Rundung und Sättigung
DE102018006008A1 (de) Vorrichtung und Verfahren zur Multiplikation einer komplexen Zahl mit der konjugierten
DE112014006508T5 (de) Prozessoren, Verfahren, Systeme und Anweisungen für Fliesskommaaddition mit drei Quellenoperanden
DE112012007058T5 (de) Vektormaskengesteuertes Clock-Gating für Leistungseffizenz eines Prozessors
DE102014003661A1 (de) Prozessoren, Verfahren, Systeme und Befehle zur Konsolidierung unmaskierter Elemente von Operationsmasken
DE102018125232A1 (de) Einrichtung und Verfahren für komplexe Multiplikation und Akkumulation
DE102013021221A1 (de) Befehle und Logik zur Vektorisierung von bedingten Schleifen
DE102018124945A1 (de) Einrichtung und verfahren für komplexe multiplikation
DE102018129341A1 (de) Verfahren und Einrichtung für Mehrfachlade- und Mehrfachspeicher-Vektorbefehle
DE102014004564A1 (de) Prozessoren, verfahren und systeme zum implementieren von teilregisterzugriffen mit maskierten gesamtregisterzugriffen
DE112016004351T5 (de) Prozessoren, Verfahren, System und Befehle zum Datenelement-Vergleich
DE112016004348T5 (de) Streuen-durch-indizes-zu-register- und datenelementumordnungsprozessoren, -verfahren, -systeme und -befehle
DE102018129263A1 (de) Vorrichtung und verfahren zum multiplizieren, summieren und akkumulieren von sätzen von gepackten bytes
DE102018129298A1 (de) Vorrichtung und Verfahren zum Vektormultiplizieren und Akkumulieren von vorzeichenbehafteten Doppelwörtern
DE102018131842A1 (de) Einrichtung und Verfahren zum Vektormultiplizieren und Akkumulieren von gepackten Wörtern
DE102018005170A1 (de) Anweisungen für vektoroperationen mit konstanten werten
DE102018006798A1 (de) Einrichtung und Verfahren zum Multiplizieren, Addieren/Subtrahieren und Akkumulieren von gepackten Datenelementen
DE102018005859A1 (de) Einrichtung und Verfahren zur Multiplikation und Akkumulation von komplexen und echten gepackten Datenelementen
DE102018132200A1 (de) Vorrichtung und verfahren zum verarbeiten von fraktionalen umkehroperationen
DE112017003347T5 (de) Systeme, Vorrichtungen und Verfahren für Strided-Ladevorgänge
DE102018124944A1 (de) Vorrichtung und Verfahren zum Umsetzen eines Gleitkommawertes von halber Genauigkeit in einfache Genauigkeit
DE102018005976A1 (de) Systeme, vorrichtungen und verfahren zur multiplikation und akkumulation von vektorgepackten vorzeichenbehafteten werten
DE102018129273A1 (de) Einrichtung und verfahren zum vektor-multiplizieren; und -akkumulieren von unsignierten doppelwörtern

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R083 Amendment of/additions to inventor(s)