DE102018124944A1 - Vorrichtung und Verfahren zum Umsetzen eines Gleitkommawertes von halber Genauigkeit in einfache Genauigkeit - Google Patents

Vorrichtung und Verfahren zum Umsetzen eines Gleitkommawertes von halber Genauigkeit in einfache Genauigkeit Download PDF

Info

Publication number
DE102018124944A1
DE102018124944A1 DE102018124944.6A DE102018124944A DE102018124944A1 DE 102018124944 A1 DE102018124944 A1 DE 102018124944A1 DE 102018124944 A DE102018124944 A DE 102018124944A DE 102018124944 A1 DE102018124944 A1 DE 102018124944A1
Authority
DE
Germany
Prior art keywords
field
processor
instruction
point value
precision floating
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
DE102018124944.6A
Other languages
English (en)
Inventor
Robert Valentine
Mark Charney
Raanan Sade
Elmoustapha Ould-Ahmed-Vall
Jesus Corbal
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 DE102018124944A1 publication Critical patent/DE102018124944A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/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/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/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address 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
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/14Conversion to or from non-weighted codes
    • H03M7/24Conversion to or from floating-point codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Eine Ausführungsform der Erfindung ist ein Prozessor, der eine Ausführungsschaltungsanordnung enthält, um in Reaktion auf einen decodierten Befehl einen Gleitkommawert mit halber Genauigkeit in einen Gleitkommawert mit einfacher Genauigkeit umzusetzen und den Gleitkommawert mit einfacher Genauigkeit an jedem der mehreren Elementorte eines Zielregisters zu speichern. Der Prozessor enthält außerdem einen Decodierer und ein Zielregister. Der Decodierer decodiert einen Befehl, um den decodierten Befehl zu erzeugen.

Description

  • GEBIET DER ERFINDUNG
  • Die Ausführungsformen der Erfindung beziehen sich im Allgemeinen auf das Gebiet der Computerprozessoren. Spezieller beziehen sich die Ausführungsformen auf eine Vorrichtung und ein Verfahren zum Umsetzen eines Gleitkommawertes von halber Genauigkeit in einfache Genauigkeit.
  • HINTERGRUND
  • 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“ im Allgemeinen hier 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. of 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.
  • Figurenliste
  • Die vorliegende Erfindung wird beispielhaft und ohne Einschränkung in den Figuren der beigefügten Zeichnung veranschaulicht, in der gleiche Bezugszeichen ähnliche Elemente angeben und worin:
    • 1A-1B Blockschaltpläne sind, die ein generisches vektorfreundliches Befehlsformat und dessen Befehlsschablonen gemäß den Ausführungsformen der vorliegenden Erfindung veranschaulichen;
    • 1A ein Blockschaltplan ist, der ein generisches vektorfreundliches Befehlsformat und dessen Befehlsschablonen der Klasse A gemäß den Ausführungsformen der Erfindung veranschaulicht;
    • 1B ein Blockschaltplan ist, der ein generisches vektorfreundliches Befehlsformat und dessen Befehlsschablonen der Klasse B gemäß den Ausführungsformen der Erfindung veranschaulicht;
    • 2A ein Blockschaltplan ist, der ein beispielhaftes spezifisches vektorfreundliches Befehlsformat gemäß den Ausführungsformen der Erfindung veranschaulicht;
    • 2B ein Blockschaltplan ist, der die Felder des spezifischen vektorfreundlichen Befehlsformats 200, die das volle Opcode-Feld 174 bilden, gemäß einer Ausführungsform der Erfindung veranschaulicht;
    • 2C ein Blockschaltplan ist, der die Felder des spezifischen vektorfreundlichen Befehlsformats 200, die das Registerindexfeld 144 bilden, gemäß einer Ausführungsform der Erfindung veranschaulicht;
    • 2D ein Blockschaltplan ist, der die Felder des spezifischen vektorfreundlichen Befehlsformats 200, die das Vergrößerungsoperationsfeld 150 bilden, gemäß einer Ausführungsform der Erfindung veranschaulicht;
    • 3 ein Blockschaltplan einer Registerarchitektur 300 gemäß einer Ausführungsform der Erfindung ist;
    • 4A ein Blockschaltplan ist, 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 ein Blockschaltplan ist, der eine beispielhafte Ausführungsform sowohl eines In-Order-Architekturkerns 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-B einen Blockschaltplan einer spezifischeren beispielhaften Kernarchitektur veranschaulichen, 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;
    • 5A ein Blockschaltplan eines einzelnen Prozessorkerns zusammen mit seiner Verbindung zu einem Zusammenschaltungsnetz 502 auf dem Die und mit seiner lokalen Teilmenge des Ebene-2-Caches (L2-Caches) 504 gemäß den Ausführungsformen der Erfindung ist;
    • 5B eine erweiterte Ansicht eines Teils des Prozessorkerns in 5A gemäß den Ausführungsformen der Erfindung ist;
    • 6 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 ist;
    • 7-10 Blockschaltpläne beispielhafter Computerarchitekturen sind;
    • 7 einen Blockschaltplan eines Systems in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung zeigt;
    • 8 ein Blockschaltplan eines ersten spezifischeren beispielhaften Systems in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung ist;
    • 9 ein Blockschaltplan eines zweiten spezifischeren beispielhaften Systems in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung ist;
    • 10 ein Blockschaltplan eines SoC in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung ist;
    • 11 ein Blockschaltplan ist, 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 ein Blockschaltplan einer Vorrichtung zum Umsetzen eines Gleitkommawertes von halber Genauigkeit in einfache Genauigkeit gemäß einer Ausführungsform der Erfindung ist;
    • 13 ein Ablaufplan eines Verfahrens zum Umsetzen eines Gleitkommawertes von halber Genauigkeit in einfache Genauigkeit gemäß einer Ausführungsform der Erfindung ist; und
    • 14A und 14B Ausführungsformen eines FP16-Steuer- und Statusregisters veranschaulichen, das Felder aufweist, die auf die Gleitkommaverwendung mit halber Genauigkeit für einen Befehl bezogen sind.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der folgenden Beschreibung werden zahlreiche spezifische Einzelheiten dargelegt. Es wird jedoch erkannt, dass die Ausführungsformen der Erfindung ohne diese spezifischen Einzelheiten praktiziert werden können. In anderen Fällen sind wohlbekannte Schaltungen, Strukturen und Techniken nicht ausführlich gezeigt worden, um das Verständnis dieser Beschreibung nicht undeutlich zu machen.
  • Die Bezugnahmen in der Beschreibung auf „eine Ausführungsform“, „eine Ausführungsform“, „eine beispielhafte Ausführungsform“ usw. geben an, dass die beschriebene Ausführungsform ein spezielles Merkmal, eine spezielle Struktur oder eine spezielle Eigenschaft enthalten kann, wobei aber jede Ausführungsform nicht notwendigerweise das spezielle Merkmal, die spezielle Struktur oder die spezielle Eigenschaft enthalten kann. Überdies beziehen sich derartige Redewendungen nicht notwendigerweise auf die gleiche Ausführungsform. Wenn ferner ein spezielles Merkmal, eine spezielle Struktur oder eine spezielle Eigenschaft im Zusammenhang mit einer Ausführungsform beschrieben wird, wird behauptet, dass es sich innerhalb der Kenntnis eines Fachmanns auf dem Gebiet befindet, ein derartiges Merkmal, eine derartige Struktur oder eine derartige Eigenschaft im Zusammenhang mit anderen Ausführungsformen zu bevorzugen, ob sie explizit beschrieben sind oder nicht.
  • Die Verwendung der Aufzählungsadjektive „erster“, „zweiter“, „dritter“ usw., um ein Element zu beschreiben, wie sie in dieser Beschreibung und den Ansprüchen verwendet wird und wenn es nicht anders spezifiziert ist, gibt lediglich an, dass auf einen speziellen Fall eines Elements oder andere Fälle ähnlicher Elemente Bezug genommen wird, und ist nicht vorgesehen, zu implizieren, dass die so beschrieben Elemente sich in einer speziellen Reihenfolge entweder zeitlich, räumlich, in einer Rangordnung oder irgendeiner anderen Weise befinden müssen.
  • Die durch einen Prozessorkern gemäß den Ausführungsformen der Erfindung auszuführenden Befehle können in einem „generischen vektorfreundlichen Befehlsformat“ verkörpert sein, das im Folgenden ausführlich beschrieben wird. In anderen Ausführungsformen wird ein derartiges Format nicht verwendet und wird ein anderes Befehlsformat verwendet, wobei jedoch die Beschreibung im Folgenden der Schreibmaskenregister, der verschiedenen Datentransformationen (Swizzle, Rundsenden usw.), der Adressierung usw. allgemein auf die obige Beschreibung der Ausführungsformen des Befehls (der Befehle) anwendbar ist. Zusätzlich werden beispielhafte Systeme, Architekturen und Pipelines im Folgenden ausführlich beschrieben. Die Befehle können in derartigen Systemen, Architekturen und Pipelines ausgeführt werden, sind jedoch nicht auf jene, die ausführlich beschrieben sind, eingeschränkt.
  • Befehlssätze
  • Ein Befehlssatz kann ein oder mehrere Befehlsformate enthalten. Ein gegebenes Befehlsformat definiert verschiedene Felder (z. B. die Anzahl der Bits, den Ort der Bits), um unter anderem die auszuführende Operation (z. B. den Opcode) und den (die) Operanden, an dem (denen) die Operation auszuführen ist, und/oder andere Datenfelder (z. B. eine Maske) 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 (Quellel/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. Ein Satz von SIMD-Erweiterungen, die als die weiterentwickelten Vektorerweiterungen (AVX, AVX2 und AVX-512) bezeichnet werden und das Vektorerweiterungs-Codierungsschema (VEX-Codierungsschema) verwenden, ist freigegeben und/oder veröffentlicht worden (siehe z. B. Intel® 64 and IA-32 Architectures Software Developer's Manual, September 2014; Intel® Advanced Vector Extensions Programming Reference, Oktober 2014; und Intel® Architecture Instruction Set Extensions Programming Reference, Oktober 2016).
  • Beispielhafte Befehlsformate
  • 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 Sofortwerts. Dieses Feld ist in dem Sinn optional, dass es in einer Implementierung des generischen vektorfreundlichen Formats nicht vorhanden ist, die keinen Sofortwert unterstützt, und dass es in Befehlen nicht vorhanden ist, die keinen Sofortwert 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 162, 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 Universalkernen 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.
  • Ein beispielhaftes spezifisches vektorfreundliches Befehlsformat
  • 2A ist ein Blockschaltplan, der ein beispielhaftes spezifisches vektorfreundliches Befehlsformat gemäß den Ausführungsformen der Erfindung veranschaulicht. 2A zeigt ein spezifisches vektorfreundliches Befehlsformat 200, das in dem Sinn spezifisch ist, dass es sowohl den Ort, die Größe, die Interpretation und die Reihenfolge der Felder als auch die Werte für einige dieser Felder spezifiziert. Das spezifische vektorfreundliche Befehlsformat 200 kann verwendet werden, um den x86-Befehlssatz zu erweitern, wobei folglich einige der Felder ähnlich oder die gleichen wie jene sind, die in dem vorhandenen x86-Befehlssatz und dessen Erweiterung (z. B. AVX) verwendet werden. Dieses Format bleibt mit dem Präfixcodierungsfeld, dem echten Opcode-Byte-Feld, dem MOD R/M-Feld, dem SIB-Feld, dem Verschiebungsfeld und den Sofortfeldern des vorhandenen x86-Befehlssatzes mit Erweiterungen konsistent. Die Felder nach 1B, in die die Felder nach 2A abbilden, sind veranschaulicht.
  • Es sollte erkannt werden, dass, obwohl die Ausführungsformen der Erfindung unter Bezugnahme auf das spezifische vektorfreundliche Befehlsformat 200 im Kontext des generischen vektorfreundlichen Befehlsformats 100 für Veranschaulichungszwecke beschrieben werden, die Erfindung nicht auf das spezifische vektorfreundliche Befehlsformat 200 eingeschränkt ist, mit Ausnahme, wo es beansprucht ist. Das generische vektorfreundliche Befehlsformat 100 betrachtet z. B. verschiedene mögliche Größen für die verschiedenen Felder, während gezeigt ist, dass das spezifische vektorfreundliche Befehlsformat 200 Felder mit spezifischen Größen aufweist. Während als ein spezifisches Beispiel das Datenelementbreitenfeld 164 in dem spezifischen vektorfreundlichen Befehlsformat 200 als ein Ein-Bit-Feld veranschaulicht ist, ist die Erfindung nicht in dieser Weise eingeschränkt (d. h., das generische vektorfreundliche Befehlsformat 100 betrachtet andere Größen des Datenelementbreitenfelds 164).
  • Das generische vektorfreundliche Befehlsformat 100 enthält die folgenden Felder, die im Folgenden in der in 2A veranschaulichten Reihenfolge aufgelistet sind.
  • Das EVEX-Präfix (die Bytes 0-3) 202 - ist in einer Vier-Byte-Form codiert.
  • Das Formatfeld 140 (das EVEX-Byte 0, die Bits [7:0]) - das erste Byte (das EVEX-Byte 0) ist das Formatfeld 1340, wobei es 0x62 enthält (den eindeutigen Wert, der zum Unterscheiden des vektorfreundlichen Befehlsformats in einer Ausführungsform der Erfindung verwendet wird).
  • Die zweiten-vierten Bytes (die EVEX-Bytes 1-3) enthalten eine Anzahl von Bitfeldern, die eine spezifische Fähigkeit bereitstellen.
  • Das REX-Feld 205 (das EVEX-Byte 1, die Bits [7-5]) - besteht aus einem EVEX.R-Bitfeld (dem EVEX-Byte 1, dem Bit [7] - R), einem EVEX.X-Bitfeld (dem EVEX-Byte 1, dem Bit [6] - X) und dem 157BEX-Byte 1, dem Bit [5] - B). Das EVEX.R-, das EVEX.X- und das EVEX.B-Bitfeld stellen die gleiche Funktionalität wie die entsprechenden VEX-Bitfelder bereit, wobei sie unter Verwendung der 1-Komplementform codiert sind, d. h., ZMM0 ist als 1111B codiert, ZMM15 ist als 0000B codiert. 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 EVEX.R, EVEX.X und EVEX.B gebildet werden können.
  • Das REX'-Feld 110 - dies ist der erste Teil des REX'-Feldes 110 und ist das EVEX.R'-Bitfeld (das EVEX-Byte 1, das Bit [4] - R'), das verwendet wird, um entweder die oberen 16 oder die unteren 16 des erweiterten 32-Register-Satzes zu codieren. In einer Ausführungsform der Erfindung ist dieses Bit zusammen mit anderen, wie im Folgenden angegeben wird, in einem bitinvertierten Format gespeichert, um es (in dem wohlbekannten x86-32-Bit-Modus) von dem BOUND-Befehl zu unterscheiden, dessen echtes Opcode-Byte 62 ist, das aber in dem (im Folgenden beschriebenen) MOD R/M-Feld den Wert von 11 in dem MOD-Feld nicht akzeptiert; alternative Ausführungsformen der Erfindung speichern dieses und die anderen im Folgenden angegebenen Bits nicht in dem invertierten Format. Ein Wert von 1 wird verwendet, um die unteren 16 Register zu codieren. Mit anderen Worten, R'Rrrr wird durch das Kombinieren von EVEX.R', EVEX.R und den anderen RRR von den anderen Feldern gebildet.
  • Das Opcode-Abbildungsfeld 215 (das EVEX-Byte 1, die Bits [3:0] - mmmm) - sein Inhalt codiert ein impliziertes führendes Opcode-Byte (0F, 0F 38 oder 0F 3).
  • Das Datenelementbreitenfeld 164 (das EVEX-Byte 2, das Bit [7] - W) - ist durch die Schreibweise EVEX.W dargestellt. EVEX.W wird verwendet, um die Granularität (die Größe) des Datentyps zu definieren (entweder 32-Bit-Datenelemente oder 64-Bit-Datenelemente).
  • Das EVEX.vvvv 220 (das EVEX-Byte 2, die Bits [6:3] - vvvv) - die Rolle des EVEX.vvvv kann das Folgende enthalten: 1) EVEX.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) EVEX.vvvv codiert den Zielregisteroperanden und ist in 1-Komplement-Form für bestimmte Vektorverschiebungen spezifiziert; oder 3) EVEX.vvvv codiert keinen Operanden, das Feld ist reserviert und sollte 1111b enthalten. Folglich codiert das EVEX.vvvv-Feld 220 die 4 Bits niedriger Ordnung des ersten Quellregister-Spezifikationselements, das in invertierter (1-Komplement-) Form gespeichert ist. In Abhängigkeit von dem Befehl wird ein zusätzliches anderes EVEX-Bitfeld verwendet, um die Größe des Spezifikationselements auf 32 Register zu erweitern.
  • Das EVEX.U 168 Klassenfeld (das EVEX-Byte 2, das Bit [2] - U) - Falls EVEX.U = 0 gilt, gibt es die Klasse A oder EVEX.U0 an; falls EVEX.U = 1 gilt, gibt es die Klasse B oder EVEX.U1 an.
  • Das Präfixcodierungsfeld 225 (das EVEX-Byte 2, die Bits [1:0] - pp) - stellt zusätzliche Bits für das Basisoperationsfeld bereit. Zusätzlich zum Bereitstellen von Unterstützung für die Alt-SSE-Befehle in dem EVEX-Präfixformat weist dies außerdem den Vorteil des Verdichtens des SIMD-Präfixes auf (anstatt ein Byte zu erfordern, um das SIMD-Präfix auszudrücken, erfordert das EVEX-Präfix nur 2 Bits). Um die Alt-SSE-Befehle, die das SIMD-Präfix verwenden (66H, F2H, F3H), sowohl im Altformat als auch im EVEX-Präfixformat zu unterstützen, sind in einer Ausführungsform diese Alt-SIMD-Präfixe in dem SIMD-Präfixcodierungsfeld codiert; wobei sie zur Laufzeit in den Alt-SIMD-Präfix expandiert werden, bevor sie dem PLA des Codierers bereitgestellt werden (so kann der PLA sowohl das Alt- als auch das EVEX-Format dieser Altbefehle ohne Modifikation ausführen). Obwohl neuere Befehle den Inhalt des EVEX-Präfixcodierungsfeldes als eine Opcode-Erweiterung direkt verwenden könnten, erweitern bestimmte Ausführungsformen in einer ähnlichen Weise für die Konsistenz, wobei sie es aber ermöglichen, dass durch diese Alt-SIMD-Präfixe verschiedene Bedeutungen spezifiziert werden. Eine alternative Ausführungsform kann den PLA neu konstruieren, um die 2-Bit-SIMD-Präfixcodierungen zu unterstützen, und erfordert folglich die Erweiterung nicht.
  • Das Alphafeld 152 (das EVEX-Byte 3, das Bit [7] - EH; außerdem als EVEX.EH, EVEX.rs, EVEX.RL, EVEX.Schreibmaskensteuerung und EVEX.N bekannt; außerdem mit α veranschaulicht) - wie vorher beschrieben worden ist, ist dieses Feld kontextspezifisch.
  • Das Betafeld 154 (das EVEX-Byte 3, die Bits [6:4] - SSS, außerdem als EVEX.s2-0, EVEX.r2-0, EVEX.rr1, EVEX.LL0, EVEX.LLB bekannt; außerdem mit βββ veranschaulicht) - wie vorher beschrieben worden ist, ist dieses Feld kontextspezifisch.
  • Das REX'-Feld 110 - dies ist der Rest des REX'-Feldes und ist das EVEX.V'-Bitfeld (das EVEX-Byte 3, das Bit [3] - V'), das verwendet werden kann, um entweder die oberen 16 oder die unteren 16 des erweiterten 32-Register-Satzes zu codieren. Dieses Bit ist in einem bitinvertierten Format gespeichert. Ein Wert von 1 wird verwendet, um die unteren 16 Register zu codieren. Mit anderen Worten, V'VVVV wird durch das Kombinieren von EVEX.V', EVEX.vvvv gebildet.
  • Das Schreibmaskenfeld 170 (das EVEX-Byte 3, die Bits [2:0] - kkk) - sein Inhalt spezifiziert den Index eines Registers in den Schreibmaskenregistern, wie vorher beschrieben worden ist. In einer Ausführungsform der Erfindung weist der spezifische Wert EVEX.kkk = 000 ein spezifisches Verhalten auf, das impliziert, dass für den speziellen Befehl keine Schreibmaske verwendet wird (dies kann in verschiedenen Weisen einschließlich der Verwendung einer Schreibmaske, die mit allen festverdrahtet ist, oder Hardware, die die Maskierungs-Hardware umgeht, implementiert sein).
  • Das echte Opcode-Feld 230 (das Byte 4) 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 5) enthält das MOD-Feld 242, das Reg-Feld 244 und das R/M-Feld 246. Wie vorher beschrieben worden ist, unterscheidet der Inhalt des MOD-Feldes 242 zwischen Operationen mit Speicherzugriff und ohne Speicherzugriff. Die Rolle des Reg-Feldes 244 kann in zwei Situationen zusammengefasst werden: Codieren entweder des Zielregisteroperanden oder eines Quellregisteroperanden oder kann 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.
  • Das Maßstab-, Index-, Basis- (SIB-) Byte (das Byte 6) - Wie vorher beschrieben worden ist, wird der Inhalt des Maßstabfeldes 150 für die Speicheradressenerzeugung verwendet. Das SIB.xxx 254 und das SIB.bbb 256 - auf die Inhalte dieser Felder ist vorher bezüglich der Registerindizes Xxxx und Bbbb verwiesen worden.
  • Das Verschiebungsfeld 162A (die Bytes 7-10) - wenn das MOD-Feld 242 10 enthält, sind die Bytes 7-10 das Verschiebungsfeld 162A, wobei es gleich wie die Alt-32-Bit-Verschiebung (disp32) arbeitet und auf Byte-Granularität arbeitet.
  • Das Verschiebungsfaktorfeld 162B (das Byte 7) - wenn das MOD-Feld 242 01 enthält, ist das Byte 7 das Verschiebungsfaktorfeld 162B. Der Ort dieses Feldes ist der gleiche wie der der 8-Bit-Verschiebung (disp8) des Alt-x86-Befehlssatzes, die auf Byte-Granularität arbeitet. Weil der disp8 vorzeichenerweitert ist, kann er nur zwischen -128- und 127-Byte-Versätzen adressieren; hinsichtlich von 64-Byte-Cache-Zeilen verwendet der disp8 8 Bits, die auf nur vier wirklich nützliche Werte -128, -64, 0 und 64 gesetzt werden können; weil oft ein größerer Bereich benötigt wird, wird der disp32 verwendet; der disp32 erfordert jedoch 4 Bytes. Im Gegensatz zum disp8 und zum disp32 ist das Verschiebungsfaktorfeld 162B eine Neuinterpretation des disp8; wenn das Verschiebungsfaktorfeld 162B verwendet wird, ist die tatsächliche Verschiebung durch den Inhalt des Verschiebungsfaktorfeldes multipliziert mit der Größe des Speicheroperandenzugriffs (N) bestimmt. Dieser Typ der Verschiebung wird als disp8 * N bezeichnet. Dies verringert die durchschnittliche Befehlslänge (ein einziges Byte wird für die Verschiebung verwendet, aber mit einem viel größeren Bereich). Eine derartige komprimierte Verschiebung basiert auf der Annahme, dass die effektive Verschiebung ein Vielfaches der Granularität des Speicherzugriffs ist, wobei folglich die redundanten Bits niedriger Ordnung des Adressenversatzes nicht codiert werden müssen. Mit anderen Worten, das Verschiebungsfaktorfeld 162B ersetzt die 8-Bit-Verschiebung des Alt-x86-Befehlssatzes. Folglich ist das Verschiebungsfaktorfeld 162B in der gleichen Weise wie eine 8-Bit-Verschiebung des x86-Befehlssatzes codiert (daher keine Änderungen der ModRM/SIB-Codierungsregeln), mit der einzigen Ausnahme, dass der disp8 zum disp8 * N überladen wird. Mit anderen Worten, es gibt keine Änderungen der Codierungsregeln oder der Codierungslängen, sondern nur in der Interpretation des Verschiebungswertes durch die Hardware (die die Verschiebung mit der Größe des Speicheroperanden skalieren muss, um einen byteweisen Adressenversatz zu erhalten). Das Sofortfeld 172 arbeitet so, wie vorher beschrieben worden ist.
  • Das vollständige Opcode-Feld
  • 2B ist ein Blockschaltplan, der die Felder des spezifischen vektorfreundlichen Befehlsformats 200 veranschaulicht, die das vollständige Opcode-Feld 174 gemäß einer Ausführungsform der Erfindung bilden. Spezifisch enthält das vollständige Opcode-Feld 174 das Formatfeld 140, das Basisoperationsfeld 142 und das Datenelementbreitenfeld 164 (W). Das Basisoperationsfeld 142 enthält das Präfixcodierungsfeld 225, das Opcode-Abbildungsfeld 215 und das echte Opcode-Feld 230.
  • Das Registerindexfeld
  • 2C ist ein Blockschaltplan, der die Felder des spezifischen vektorfreundlichen Befehlsformats 200 veranschaulicht, die das Registerindexfeld 144 gemäß einer Ausführungsform der Erfindung bilden. Spezifisch enthält das Registerindexfeld 144 das REX-Feld 205, das REX'-Feld 210, das MODR/M.reg-Feld 244, das MODR/M.r/m-Feld 246, das VVVV-Feld 220, das xxx-Feld 254 und das bbb-Feld 256.
  • Das Vergrößerungsoperationsfeld
  • 2D ist ein Blockschaltplan, der die Felder des spezifischen vektorfreundlichen Befehlsformats 200 veranschaulicht, die das Vergrößerungsoperationsfeld 150 gemäß einer Ausführungsform der Erfindung bilden. Wenn das Klassenfeld 168 (U) 0 enthält, bedeutet es EVEX.U0 (Klasse A 168A); wenn es 1 enthält, bedeutet es EVEX.U1 (Klasse B 168B). Wenn U = 0 gilt und das MOD-Feld 242 11 enthält (was eine Operation ohne Speicherzugriff bedeutet), wird das Alphafeld 152 (das EVEX-Byte 3, das Bit [7] - EH) als das rs-Feld 152A interpretiert. Wenn das rs-Feld 152A eine 1 enthält (das Runden 152A.1), wird das Betafeld 154 (das EVEX-Byte 3, die Bits [6:4] - SSS) als das Rundensteuerfeld 154A interpretiert. Das Rundensteuerfeld 154A enthält ein Ein-Bit-SAE-Feld 156 und ein Zwei-Bit-Rundenoperationsfeld 158. Wenn das rs-Feld 152A eine 0 enthält (die Datentransformation 152A.2), wird das Betafeld 154 (das EVEX-Byte 3, die Bits [6:4] - SSS) als ein Drei-Bit-Datentransformationsfeld 154B interpretiert. Wenn U = 0 gilt und das MOD-Feld 242 00, 01 oder 10 enthält (was eine Operation mit Speicherzugriff bedeutet), wird das Alphafeld 152 (das EVEX-Byte 3, das Bit [7] - EH) als das Räumungshinweisfeld 152B (EH-Feld) interpretiert und wird das Betafeld 154 (das EVEX-Byte 3, die Bits [6:4] - SSS) als ein Drei-Bit-Datenmanipulationsfeld 154C interpretiert.
  • Wenn U = 1 gilt, wird das Alphafeld 152 das (EVEX-Byte 3, das Bit [7] - EH) als das Schreibmasken-Steuerfeld 152C (Z) interpretiert. Wenn U = 1 gilt und das MOD-Feld 242 11 enthält (was eine Operation ohne Speicherzugriff bedeutet), wird ein Teil des Betafeldes 154 (das EVEX-Byte 3, das Bit [4] - S0) als das RL-Feld 157A interpretiert; wenn es eine 1 enthält (das Runden 157A.1), wird der Rest des Betafeldes 154 (das EVEX-Byte 3, das Bit [6-5] - S2-1) als das Rundenoperationsfeld 159A interpretiert, während, wenn das RL-Feld 157A eine 0 enthält (VSIZE 157.A2), der Rest des Betafeldes 154 (das EVEX-Byte 3, das Bit [6-5] - S2-1) als das Vektorlängenfeld 159B (das EVEX-Byte 3, das Bit [6-5] - L1-0) interpretiert wird. Wenn U = 1 gilt und das MOD-Feld 242 00, 01 oder 10 enthält (was eine Operation mit Speicherzugriff bedeutet), wird das Betafeld 154 (das EVEX-Byte 3, die Bits [6:4] - SSS) als das Vektorlängenfeld 159B (das EVEX-Byte 3, das Bit [6-5] - L1-0) und das Rundsendefeld 157B (das EVEX-Byte 3, das Bit [4] - B) interpretiert.
  • 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 (der zmm-Registersatz). Andere Ausführungsformen können anstelle des zmm-Registersatzes einen Satz aus sechzehn Vektorregistern enthalten, die 256 Bits breit sind, diese Register werden als ymm0 bis ymm15 bezeichnet (der ymm-Registersatz). Andere Ausführungsformen können anstelle des zmm-Registersatzes oder des ymm-Registersatzes einen Satz aus sechzehn Vektorregistern enthalten, die 256 Bits breit sind, diese Register werden als xmm0 bis xmm15 bezeichnet (der xmm-Registersatz) . In 3 sind die 256 Bits niedrigerer Ordnung der unteren 16 zmm-Register den Registern ymm0-15 überlagert, während die 128 Bits niedriger Ordnung der unteren 16 zmm-Register (die 128 Bits niedriger Ordnung der ymm-Register) den Registern xmm0-15 überlagert sind.
  • Das spezifische vektorfreundliche Befehlsformat 200 wirkt auf diese überlagerte Registerdatei so, wie in der Tabelle im Folgenden veranschaulicht ist.
    einstellbare Vektorlänge Klasse Operatione n Register
    Befehlsschablonen, die das Vektorlängenfeld 159B nicht enthalten A (1A ; U = 0) 110, 115, 125, 130 zmm-Register (die Vektorlänge ist 64 Bytes)
    B (1B ; U = 1) 112 zmm-Register (die Vektorlänge ist 64 Bytes)
    Befehlsschablonen, die das Vektorlängenfeld 159B enthalten B (1B ; U = 1) 117, 127 zmm-, ymm- oder xmm-Register (die Vektorlänge ist in Abhängigkeit vom Vektorlängen feld 159B 64 Bytes, 32 Bytes oder 16 Bytes)
  • Mit anderen Worten, das Vektorlängenfeld 159B wählt zwischen einer maximalen Länge und einer oder mehreren anderen kürzeren Längen aus, wobei jede derartige kürzere Länge die Hälfte der Länge der vorhergehenden Länge ist; wobei die Befehlsschablonen ohne das Vektorlängenfeld 159B auf die maximale Vektorlänge wirken. Ferner arbeiten in einer Ausführungsform die Befehlsschablonen der Klasse B des spezifischen vektorfreundlichen Befehlsformats 200 auf gepackte oder skalare Gleitkommadaten mit einfacher/doppelter Genauigkeit und gepackte oder skalare Ganzzahldaten. Die Skalaroperationen sind Operationen, die an der Datenelementposition niedrigster Ordnung in einem zmm/ymm/xmm-Register ausgeführt werden; die Datenelementpositionen höherer Ordnung werden in Abhängigkeit von der Ausführungsform entweder als die gleichen gelassen, die sie vor dem Befehl waren, oder auf null gesetzt.
  • Die Schreibmaskenregister 315 - in der veranschaulichten Ausführungsform gibt es 8 Schreibmaskenregister (k0 bis k7), jedes mit einer Größe von 64 Bits. In einer alternativen Ausführungsform weisen die Schreibmaskenregister 315 eine Größe von 16 Bits auf. In einer Ausführungsform der Erfindung kann das Vektormaskenregister k0 nicht als eine Schreibmaske verwendet werden; wenn die Codierung, die normalerweise k0 angeben würde, für eine Schreibmaske verwendet wird, wählt sie die festverdrahtete Schreibmaske OxFFFF aus, die die Schreibmaskierung für diesen Befehl effektiv sperrt.
  • 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, in denen die Erfindung verkörpert sein kann, 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 Zentraleinheit (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 wissenschaftliche (Durchsatz-) Berechnung 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.
  • Beispielhafte Kernarchitekturen
  • Ein Blockschaltplan eines In-Order- und Out-of-Order-Kerns
  • 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 einen Mikro-Op-Cache 433 und 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). Der Mikro-Op-Cache 433 und die Decodiereinheit 440 sind an eine Umbenennungs-/Zuweisereinheit 452 in der Ausführungsmaschineneinheit 450 gekoppelt. In verschiedenen Ausführungsformen kann der Mikro-Op-Cache, wie z. B. der 433, außerdem oder stattdessen als ein OP-Cache bezeichnet werden.
  • 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, eine Schreibmasken-Registereinheit und eine skalare Registereinheit. 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 of Sunnyvale, CA; den ARM-Befehlssatz (mit optional zusätzlichen Erweiterungen, wie z. B. NEON) von ARM Holdings of 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. AVX, AVX2, AVX-512) 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 SMT (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 SMT, 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 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 pro Richtung 1012 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 16 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. Die Schreibmaskenregister 526 erlauben das Aussagen der resultierenden Vektorschreibvorgänge.
  • Spezifische Prozessorarchitekturen
  • 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, 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 (die integrierte Graphiklogik 608 ist ein Beispiel einer Speziallogik und wird hier außerdem als eine Speziallogik bezeichnet), 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, wie z. B. eine QuickPath Interconnect (QPI), 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, 715 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 bzw. 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 der dritten Generation, 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 820 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“) 872 bzw. 882 enthalten können. Folglich enthalten die CL 872, 882 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 von einem oder mehreren Kernen 602A-N, die die Cache-Einheiten 604A-N enthalten, und gemeinsam benutzte 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 x86-Kompilierers 1104 kompiliert werden kann, um einen binären x86-Code 1106 zu erzeugen, der nativ durch einen Prozessor mit wenigstens einem x86-Befehlssatz-Kern 1116 ausgeführt werden kann. Der Prozessor mit wenigstens einem x86-Befehlssatz-Kern 1116 repräsentiert 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 x86-Kompilierer 1104 repräsentiert einen Kompilierer, der betreibbar ist, um binären x86-Code 1106 (z. B. Objektcode) zu erzeugen, der mit einer oder ohne eine zusätzliche Verbindungsverarbeitung in dem Prozessor mit wenigstens einem x86-Befehlssatz-Kern 1116 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 x86-Befehlssatz-Kern 1114 (z. B. einen Prozessor mit Kernen, die den MIPS-Befehlssatz von MIPS Technology of Sunnyvale, CA, ausführen und/oder die den ARM-Befehlssatz von ARM Holdings of Sunnyvale, CA, ausführen) ausgeführt werden kann. Der Befehlsumsetzer 1112 wird verwendet, um den binären x86-Code 1106 in Code umzusetzen, der nativ durch den Prozessor ohne einen x86-Befehlssatz-Kern 1114 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 x86-Befehlssatz-Prozessor oder -Kern aufweist, ermöglicht, den binären x86-Code 1106 auszuführen.
  • Das Umsetzen eines Gleitkommawertes von halber Genauigkeit in einfache Genauigkeit
  • Die Ausführungsformen der Erfindung können die in 12 gezeigte Vorrichtung verwenden, um einen Gleitkommawert von halber Genauigkeit in einfache Genauigkeit umzusetzen. Die Vorrichtung nach 12 kann in einem Prozessor und/oder einem System nach den 4 bis 10 enthalten sein, jeweils wie oben beschrieben worden ist, die die Prozessoren und Systeme veranschaulichen, die die Ausführungsformen der Erfindung enthalten, in denen die Prozessoren 490, 600, 710, 715, 870, 880 und 1110 und die Systeme 700, 800, 900 und 1000 irgendeinen oder alle der Blöcke und/oder Elemente, die in 12 gezeigt sind, enthalten können, die gemäß den Techniken und/oder dem Verfahren, die in den Beschreibungen nach 13 beschrieben sind, arbeiten können.
  • Die Ausführungsformen der Erfindung verwenden die in 12 gezeigte Architektur, um einen Gleitkommawert von halber Genauigkeit in einfache Genauigkeit umzusetzen. Die beschriebenen Ausführungsformen führen Operationen an 16-Bit-Gleitkommawerten mit halber Genauigkeit in gepackten 128-Bit-, 256-Bit- und 512-Bit-Datenregistern und -Speicherstellen aus. Eine Ausführungsform setzt z. B. sechzehn gepackte Gleitkomma-Datenwerte mit halber Genauigkeit in zmm2/m512 um, wobei die sechzehn gepackten Gleitkommawerte mit halber Genauigkeit in den unteren 16 Bits jedes 32-Bit-Wortes gespeichert sind, und speichert vier resultierende gepackte Gleitkomma-Datenwerte mit einfacher Genauigkeit in zmm1. Andere Ausführungsformen können jedoch die Operationen an anderen Größen und/oder Datentypen ausführen.
  • In einer in 12 veranschaulichten Ausführungsform setzt die Verarbeitungs-Hardware, die einen Genauigkeitsumsetzer 1200 enthält, einen Gleitkommawert, der an einem Quellort in einer Registerdatei/einem Speicher 1210 gespeichert ist, von halber Genauigkeit in einfache Genauigkeit um und speichert den resultierenden Gleitkommawert an einem Zielort in der Registerdatei/dem Speicher 1210. Eine Ausführungsform verwendet die Verarbeitungs-Hardware, um die Umsetzung gepackter Datenwerte in Reaktion auf das Decodieren eines einzigen Befehls, der hier mit der Mnemonik VCVTPH2PS identifiziert wird, auszuführen. In verschiedenen Ausführungsformen kann ein VCVTPH2PS-Befehl das optionale Schreibmaskieren, das Rundsenden und/oder das Nullsetzen bereitstellen.
  • In einer Ausführungsform kann ein Format eines VCVTPH2PS-Befehls ein Rundsendefeld enthalten, dessen Inhalt unterscheidet, ob eine Datenmanipulationsoperation des Rundsendetyps ausgeführt werden soll. Falls der Inhalt des Rundsendefeldes angibt, dass eine Datenmanipulation des Rundsendetyps ausgeführt werden soll, kann das Rundsenden durch das Umsetzen des Gleitkommawertes, der in dem untersten Element des Quellspeicherorts gespeichert ist, von halber Genauigkeit in einfache Genauigkeit und das Speichern des Ergebnisses in jedem Element des Zielregisters ausgeführt werden.
  • Ein Verfahren gemäß einer Ausführungsform der Erfindung ist in 13 veranschaulicht. Das Verfahren kann innerhalb des Kontexts der hier beschriebenen Prozessorarchitekturen implementiert sein, wobei es aber nicht auf irgendeine spezielle Prozessorarchitektur eingeschränkt ist.
  • In 1302 wird ein erster Befehl (z. B. VCVTPH2PS) geholt, wobei der Befehl Felder aufweist, um einen Opcode, einen Quelloperanden, einen Zieloperanden und einen Rundsendeindikator zu spezifizieren. In einer Ausführungsform spezifiziert das erste Quelloperandenfeld einen 512-Bit-Speicherort, der sechzehn gepackte Gleitkomma-Datenwerte mit halber Genauigkeit speichert, wobei die sechzehn gepackten Gleitkommawerte mit halber Genauigkeit in den unteren 16 Bits jedes 32-Bit-Worts gespeichert sind, wobei der Zieloperand ein gepacktes 512-Bit-Datenregister spezifiziert, in dem sechzehn gepackte Gleitkommawerte mit einfacher Genauigkeit zu speichern sind.
  • In 1304 wird der erste Befehl decodiert. In 1306 wird bestimmt, dass der Rundsendeindikator angibt, dass eine Datenmanipulation des Rundsendetyps ausgeführt werden soll.
  • In 1308 wird der Gleitkommawert mit halber Genauigkeit, der in den untersten sechzehn Bits des Quellspeicherorts gespeichert ist, in einen Gleitkommawert mit einfacher Genauigkeit umgesetzt. In 1310 wird der resultierende Gleitkommawert mit einfacher Genauigkeit in jedem 32-Bit-Element des Zielregisters gespeichert.
  • In anderen Ausführungsformen können die Quell- und Zieloperandenfelder 128-Bit- oder 256-Bit-Register oder -Speicherorte spezifizieren.
  • In einer Ausführungsform kann der ISA eines Prozessors einen ersten einzelnen Befehl (z. B. VCVTPH2PS), um Gleitkommawerte mit halber Genauigkeit in Gleitkommawerte mit einfacher Genauigkeit umzusetzen, als einen einer Teilmenge von Befehlen (die hier als FP16-Befehle bezeichnet werden) enthalten, um auf Gleitkommawerte mit halber Genauigkeit zu wirken (wobei die Operationen hier als FP16-Operationen bezeichnet werden). In einer Ausführungsform kann die Ausführung der FP16-Befehle, wie z. B. des VCVTPH2PS, und der FP16-Operationen basierend auf dem Inhalt eines FP16-Steuer- und Statusregisters gesteuert sein oder anderweitig von dem Inhalt eines FP16-Steuer- und Statusregisters abhängig sein.
  • 14A veranschaulicht eine Ausführungsform eines FP16-Steuer- und Statusregisters, das Felder aufweist, die auf die Gleitkommaverwendung mit halber Genauigkeit für einen Befehl bezogen sind. Wie gezeigt ist, werden zwei Bits (Felder) des Steuer- und Statusregisters 14A01 verwendet, um die Handhabung denormaler Zahlen für FP16-Operationen zu steuern. Das Bit 18, Die-Denormalen-sindnull-FP16 (DAZ16), wenn es gesetzt ist, gibt an, dass die eingegebenen denormalen FP16-Elemente der Operanden für die Berechnungen als null behandelt werden sollen (der Die-Denormalen-als-null-Modus für FP16). Jedes denormale Eingabeelement wird z. B. auf null gesetzt, bevor die Operation des Befehls ausgeführt wird. In einigen Ausführungsformen weisen die auf null gesetzten Elemente das gleiche Vorzeichen wie die denormale Eingabe auf.
  • Der Die-Denormalen-sind-Nullen-FP16-Modus ist nicht mit dem IEEE-Standard 754 kompatibel. Der Die-Denormalen-sind-Nullen-FP16-Modus verbessert jedoch die Prozessorleistung für Anwendungen, wie z. B. die Streaming-Medienverarbeitung, bei denen das Runden eines denormalen Operanden auf null die Qualität der verarbeiteten Daten nicht wahrnehmbar beeinflusst.
  • Das Bit 19, FZ16, wenn es gesetzt ist, gibt an, dass die ausgegebenen denormalen FP16-Elementergebnisse zu null gelöscht werden (der Löschen-zu-Nullen-Modus für FP16). Die Unterlaufergebnisse werden z. B. auf null gesetzt, nachdem die Operation des Befehls ausgeführt worden ist.
  • Wenn ein Befehl einen FP16-Wert in einem Quelloperanden verwendet, wird typischerweise DAZ16 verwendet, während, wenn ein Befehl eine FP16-Ausgabe erzeugt, FZ16 verwendet wird. Es wird angegeben, dass in einigen Ausführungsformen beide Bits verwendet werden können.
  • Es können mehrere andere Bits des Steuer- und Statusregisters für andere Operationen verwendet werden. Die Bits 0 bis 5 geben z. B. Ausnahmen an, die detektiert worden sind, (z. B. eine Genauigkeit, ein Unterlauf, ein Überlauf, eine Division durch null, ein Denormal und eine ungültige Operation). Die Bits 7 bis 12 stellen Maskenbits für Ausnahmetypen (z. B. eine Maske für eine ungültige Operation, eine Maske für eine denormale Operation, eine Division-durch-null-Maske, eine Überlaufmaske, eine Unterlaufmaske und eine Genauigkeitsmaske) bereit. Die Bits 13 und 14 steuern, wie die Ergebnisse der Gleitkommabefehle gerundet werden. Die Bits 6 und 15 ermöglichen die Die-Denormalen-sind-Nullen- und der Löschen-zu-Nullen-Modus für Nicht-FP16-Daten.
  • Wenn eine oder mehrere Gleitkomma-Ausnahmebedingungen detektiert werden, setzt der Prozessor die geeigneten Merkerbits, wobei er dann in Abhängigkeit von den Einstellungen der entsprechenden Maskenbits einen von zwei möglichen Handlungsverläufen nimmt: 1) das Maskenbit ist gesetzt - der Prozessor behandelt die Ausnahme automatisch, wobei er ein vorgegebenes (und oftmals anwendbares) Ergebnis erzeugt, während er erlaubt, dass die Programmausführung ungestört weitergeht; und 2) das Maskenbit ist gelöscht - der Prozessor ruft eine Software-Ausnahmebehandlungseinrichtung auf, um die Ausnahme zu behandeln.
  • 14B veranschaulicht eine Ausführungsform eines FP16-Steuer- und Statusregisters, das Felder aufweist, die auf die Gleitkommaverwendung mit halber Genauigkeit für einen Befehl bezogen sind. Wie gezeigt ist, werden zwei Bits des Steuer- und Statusregisters 14B01 verwendet, um die Behandlung denormaler Zahlen für FP16-Operationen zu steuern. Das Bit 19, Die-Denormalen-sind-Nullen-FP16 (DAZ16), wenn es gesetzt ist, gibt an, dass die eingegebenen denormalen FP16-Elemente der Operanden für die Berechnungen als null zu behandeln sind (der Die-Denormalen-als-null-Modus für FP16). Jedes denormale Eingangselement wird z. B. auf null gesetzt, bevor die Operation des Befehls ausgeführt wird. In einigen Ausführungsformen weisen die auf null gesetzten Elemente das gleiche Vorzeichen wie die denormale Eingabe auf.
  • Der Die-Denormalen-sind-Nullen-FP16-Modus ist nicht mit dem IEEE-Standard 754 kompatibel. Der Die-Denormalen-sind-Nullen-FP16-Modus verbessert jedoch die Prozessorleistung für Anwendungen, wie z. B. die Streaming-Medienverarbeitung, bei denen das Runden eines denormalen Operanden auf null die Qualität der verarbeiteten Daten nicht wahrnehmbar beeinflusst.
  • Das Bit 18, FZ16, wenn es gesetzt ist, gibt an, dass die ausgegebenen denormalen FP16-Elementergebnisse zu null gelöscht werden (der Löschen-zu-Nullen-Modus für FP16). Die Unterlaufergebnisse werden z. B. auf null gesetzt, nachdem die Operation des Befehls ausgeführt worden ist.
  • Wenn ein Befehl einen FP16-Wert in einem Quelloperanden verwendet, wird typischerweise DAZ16 verwendet, während, wenn ein Befehl eine FP16-Ausgabe erzeugt, FZ16 verwendet wird. Es wird angegeben, dass in einigen Ausführungsformen beide Bits verwendet werden können.
  • Es können mehrere andere Bits des Steuer- und Statusregisters für andere Operationen verwendet werden. Die Bits 0 bis 5 geben z. B. Ausnahmen an, die detektiert worden sind, (z. B. eine Genauigkeit, ein Unterlauf, ein Überlauf, eine Division durch null, ein Denormal und eine ungültige Operation). Die Bits 7 bis 12 stellen Maskenbits für Ausnahmetypen (z. B. eine Maske für eine ungültige Operation, eine Maske für eine denormale Operation, eine Division-durch-null-Maske, eine Überlaufmaske, eine Unterlaufmaske und eine Genauigkeitsmaske) bereit. Die Bits 13 und 14 steuern, wie die Ergebnisse der Gleitkommaoperationen gerundet werden. Die Bits 6 und 15 ermöglichen der Die-Denormalensind-Nullen- und der Löschen-zu-Nullen-Modus für Nicht-FP16-Daten.
  • Wenn eine oder mehrere Gleitkomma-Ausnahmebedingungen detektiert werden, setzt der Prozessor die geeigneten Merkerbits, wobei er dann in Abhängigkeit von den Einstellungen der entsprechenden Maskenbits einen von zwei möglichen Handlungsverläufen nimmt: 1) das Maskenbit ist gesetzt - der Prozessor behandelt die Ausnahme automatisch, wobei er ein vorgegebenes (und oftmals anwendbares) Ergebnis erzeugt, während er erlaubt, dass die Programmausführung ungestört weitergeht; und 2) das Maskenbit ist gelöscht - der Prozessor ruft eine Software-Ausnahmebehandlungseinrichtung auf, um die Ausnahme zu behandeln.
  • Die Operationen in den Ablaufplänen sind bezüglich beispielhafter Ausführungsformen anderer Figuren beschrieben worden. Es sollte jedoch erkannt werden, das die Operationen der Ablaufpläne durch die Ausführungsformen der Erfindung ausgeführt werden können, die anders als jene sind, die bezüglich anderer Figuren erörtert worden sind, wobei die Ausführungsformen der Erfindung, die bezüglich der anderen Figuren erörtert worden sind, andere Operationen als jene, die bezüglich der Ablaufpläne erörtert worden sind, ausführen können. Während die Ablaufpläne in den Figuren eine spezielle Reihenfolge der durch die bestimmten Ausführungsformen der Erfindung ausgeführten Operationen zeigen, sollte weiterhin erkannt werden, dass eine derartige Reihenfolge beispielhaft ist (z. B. alternative Ausführungsformen die Operationen in einer anderen Reihenfolge ausführen, bestimmte Operationen kombinieren, bestimmte Operationen überlappen können usw.).
  • Entsprechend kann die Erfindung in maschinenausführbaren Befehlen verkörpert sein, die verwendet werden können, um einen Universal- oder Spezialprozessor zu veranlassen, die Operationen auszuführen. Alternativ können diese Operationen durch spezifische Hardware-Komponenten, die eine festverdrahtete Logik zum Ausführen der Operationen enthalten, oder durch irgendeine Kombination programmierter Computerkomponenten und kundenspezifischer Hardware-Komponenten ausgeführt werden.
  • Folglich können eine oder mehrere Teile der Ausführungsformen der Erfindung unter Verwendung unterschiedlicher Kombinationen aus Software, Firmware und/oder Hardware implementiert sein. Die Ausführungsformen können unter Verwendung einer elektronischen Vorrichtung implementiert sein, die Code (der aus Software-Befehlen besteht und der manchmal als Computerprogrammcode oder ein Computerprogramm bezeichnet wird) und/oder Daten unter Verwendung maschinenlesbarer Medien (die außerdem als computerlesbare Medien bezeichnet werden), wie z. B. maschinenlesbarer Speichermedien (z. B. Magnetplatten, optischer Platten, Festwertspeichern (ROM), Flash-Speicher-Vorrichtungen, Phasenänderungsspeichern) und maschinenlesbarer Übertragungsmedien (die außerdem als ein Träger bezeichnet werden) (z. B. elektrischer, optischer, Funk-, akustischer oder einer anderen Form ausgebreiteter Signale - wie z. B. Trägerwellen, Infrarotsignale) (intern und/oder mit anderen elektronischen Vorrichtungen über ein Netz) speichert und überträgt. Folglich kann eine elektronische Vorrichtung (z. B. ein Computer) Hardware und Software enthalten, wie z. B. einen Satz aus einem oder mehreren Prozessoren, die an ein oder mehrere maschinenlesbare Speichermedien gekoppelt sind, um Code für die Ausführung in dem Satz von Prozessoren zu speichern und/oder um Daten zu speichern. Eine elektronische Vorrichtung kann z. B. nichtflüchtigen Speicher enthalten, der Code enthält, weil der nichtflüchtige Speicher den Code/die Daten halten kann, selbst wenn die elektronische Vorrichtung ausgeschaltet wird (wenn die Leistung entfernt wird), wobei, während die elektronische Vorrichtung eingeschaltet wird, der Teil des Codes, der durch den Prozessor (die Prozessoren) der elektronischen Vorrichtung ausgeführt werden soll, typischerweise von dem langsameren nichtflüchtigen Speicher in den flüchtigen Speicher (z. B. einen dynamischen Schreib-Lese-Speicher (DRAM), einen statischen Schreib-LeseSpeicher (SRAM)) dieser elektronischen Vorrichtung kopiert wird. Typische elektronische Vorrichtungen enthalten außerdem einen Satz aus einer oder mehreren physikalischen Netzschnittstellen, um mit anderen elektronischen Vorrichtungen Netzverbindungen aufzubauen (um Code und/oder Daten unter Verwendung sich ausbreitender Signale zu senden und/oder zu empfangen).
  • Eine Ausführungsform der Erfindung ist ein Prozessor, der eine Ausführungsschaltungsanordnung enthält, um in Reaktion auf einen decodierten Befehl einen Gleitkommawert mit halber Genauigkeit in einen Gleitkommawert mit einfacher Genauigkeit umzusetzen und den Gleitkommawert mit einfacher Genauigkeit an jedem der mehreren Speicherorte eines Zielregisters zu speichern. Der Prozessor enthält außerdem einen Decodierer und ein Zielregister. Der Decodierer decodiert einen Befehl, um den decodierten Befehl zu erzeugen.
  • Der erste Befehl kann ein erstes Feld enthalten, um einen Quellort zu spezifizieren, von dem der Gleitkommawert mit halber Genauigkeit empfangen werden soll. Der Quellort kann ein Ort in einem Systemspeicher sein. Der Prozessor kann ein Quellregister enthalten, wobei der Quellort das Quellregister ist. Der Gleitkommawert mit halber Genauigkeit kann einer von einem ersten Satz von Gleitkommawerten mit halber Genauigkeit sein, die durch einen ersten Vektor repräsentiert werden, der an dem ersten Quellort gespeichert werden soll. Der Gleitkommawert mit halber Genauigkeit kann an einem untersten Elementort des Quellorts gespeichert sein. Der Befehl kann ein zweites Feld enthalten, um einen Rundsendeindikator bereitzustellen. Die Ausführung des ersten decodierten Befehls kann in Reaktion auf das Bestimmen, dass der Rundsendeindikator gesetzt ist, das Speichern des Gleitkommawerts mit einfacher Genauigkeit an jedem der mehreren Elementorte des Zielregisters enthalten. Die Ausführung des ersten decodierten Befehls kann in Reaktion auf das Bestimmen, dass der Rundsendeindikator nicht gesetzt ist, das Umsetzen jedes von mehreren Gleitkommawerten mit halber Genauigkeit in Gleitkommawerte mit einfacher Genauigkeit und das Speichern jedes Gleitkommawerts mit einfacher Genauigkeit an jedem der mehreren Elementorte des Zielregisters enthalten.
  • Eine Ausführungsform der Erfindung ist ein System, das den Prozessor und einen Systemspeicher enthält. Der Systemspeicher kann den Gleitkommawert mit halber Genauigkeit bereitstellen.
  • In einer Ausführungsform kann ein Verfahren das Decodieren eines ersten Befehls, um einen ersten decodierten Befehl zu erzeugen; das Bestimmen, dass ein Rundsendeindikator gesetzt ist; das Umsetzen in Reaktion auf den ersten decodierten Befehl eines Gleitkommawerts mit halber Genauigkeit in einen Gleitkommawert mit einfacher Genauigkeit; und das Speichern des Gleitkommawerts mit einfacher Genauigkeit an jedem der mehreren Elementorte eines Zielregisters enthalten.
  • Der erste Befehl kann ein erstes Feld enthalten, um einen Quellort zu spezifizieren, von dem der Gleitkommawert mit halber Genauigkeit empfangen werden soll. Der Quellort kann ein Ort in einem Systemspeicher sein. Der Quellort kann ein Quellregister sein. Der Gleitkommawert mit halber Genauigkeit kann einer von einem ersten Satz von Gleitkommawerten mit halber Genauigkeit sein, der durch einen ersten Vektor repräsentiert ist, der an dem ersten Quellort gespeichert werden soll. Der Gleitkommawert mit halber Genauigkeit kann an einem untersten Elementort des Quellorts gespeichert sein. Der Befehl enthält ein zweites Feld, um den Rundsendeindikator bereitzustellen.
  • In einer Ausführungsform kann eine Vorrichtung Mittel zum Ausführen irgendeines der oben beschriebenen Verfahren enthalten. In einer Ausführungsform kann ein maschinenlesbares greifbares Medium Befehle speichern, die, wenn sie durch eine Maschine ausgeführt werden, die Maschine veranlassen, irgendeines der oben beschriebenen Verfahren auszuführen.
  • Obwohl die Erfindung hinsichtlich mehrerer Ausführungsformen beschrieben worden ist, ist die Erfindung nicht auf die beschriebenen Ausführungsformen eingeschränkt, wobei sie mit verschiedenen Änderungen praktiziert werden kann, ohne vom Erfindungsgedanken und Schutzumfang der Erfindung abzuweichen, wie sie in den beigefügten Ansprüchen dargelegt sind. Entsprechend sind die Beschreibung und die Zeichnung als veranschaulichend anstatt als einschränkend zu betrachten.

Claims (25)

  1. Prozessor, der Folgendes umfasst: einen Decodierer, um einen ersten Befehl zu decodieren, um einen ersten decodierten Befehl zu erzeugen; ein Zielregister, das mehrere Elementorte aufweist; eine Ausführungsschaltungsanordnung, um den ersten decodierten Befehl auszuführen, wobei die Ausführung des ersten decodierten Befehls das Umsetzen eines Gleitkommawertes mit halber Genauigkeit in einen Gleitkommawert mit einfacher Genauigkeit und das Speichern des Gleitkommawertes mit einfacher Genauigkeit an jedem der mehreren Elementorte des Zielregisters umfasst.
  2. Prozessor nach Anspruch 1, wobei der erste Befehl ein erstes Feld enthält, um einen Quellort zu spezifizieren, von dem der Gleitkommawert mit halber Genauigkeit empfangen werden soll.
  3. Prozessor nach Anspruch 2, wobei der Quellort ein Ort in einem Systemspeicher ist.
  4. Prozessor nach Anspruch 2, der ferner ein Quellregister umfasst, wobei der Quellort das Quellregister ist.
  5. Prozessor nach Anspruch 2, wobei der Gleitkommawert mit halber Genauigkeit einer von einem ersten Satz von Gleitkommawerten mit halber Genauigkeit ist, der durch einen ersten Vektor repräsentiert wird, der an dem Quellort gespeichert werden soll.
  6. Prozessor nach Anspruch 5, wobei der Gleitkommawert mit halber Genauigkeit an einem untersten Elementort des Quellorts gespeichert werden soll.
  7. Prozessor nach Anspruch 1, wobei der Befehl ein zweites Feld enthält, um einen Rundsendeindikator bereitzustellen.
  8. Prozessor nach Anspruch 7, wobei die Ausführung des ersten decodierten Befehls in Reaktion auf das Bestimmen, dass der Rundsendeindikator gesetzt ist, das Speichern des Gleitkommawertes mit einfacher Genauigkeit an jedem der mehreren Elementorte des Zielregisters enthält.
  9. Prozessor nach Anspruch 8, wobei die Ausführung des ersten decodierten Befehls in Reaktion auf das Bestimmen, dass der Rundsendeindikator nicht gesetzt ist, das Umsetzen jedes von mehreren Gleitkommawerten mit halber Genauigkeit in Gleitkommawerte mit einfacher Genauigkeit und das Speichern jedes der Gleitkommawerte mit einfacher Genauigkeit an jedem der mehreren Elementorte des Zielregisters enthält.
  10. Verfahren, das Folgendes umfasst: Decodieren eines ersten Befehls, um einen ersten decodierten Befehl zu erzeugen; Bestimmen, dass ein Rundsendeindikator gesetzt ist; Umsetzen in Reaktion auf den ersten decodierten Befehl eines Gleitkommawertes mit halber Genauigkeit in einen Gleitkommawert mit einfacher Genauigkeit; und Speichern des Gleitkommawertes mit einfacher Genauigkeit an jedem der mehreren Elementorte eines Zielregisters.
  11. Verfahren nach Anspruch 10, wobei der erste Befehl ein erstes Feld enthält, um einen Quellort zu spezifizieren, von dem der Gleitkommawert mit halber Genauigkeit empfangen werden soll.
  12. Verfahren nach Anspruch 11, wobei der Quellort ein Ort in einem Systemspeicher ist.
  13. Verfahren nach Anspruch 11, wobei der Quellort ein Quellregister ist.
  14. Verfahren nach Anspruch 11, wobei der Gleitkommawert mit halber Genauigkeit einer von einem ersten Satz von Gleitkommawerten mit halber Genauigkeit ist, der durch einen ersten Vektor repräsentiert wird, der an dem Quellort gespeichert werden soll.
  15. Verfahren nach Anspruch 14, wobei der Gleitkommawert mit halber Genauigkeit an einem untersten Elementort des Quellorts gespeichert werden soll.
  16. Verfahren nach Anspruch 10, wobei der Befehl ein zweites Feld enthält, um einen Rundsendeindikator bereitzustellen.
  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 ersten Befehls, um einen ersten decodierten Befehl zu erzeugen; Bestimmen, dass ein Rundsendeindikator gesetzt ist; Umsetzen in Reaktion auf den ersten decodierten Befehl eines Gleitkommawertes mit halber Genauigkeit in einen Gleitkommawert mit einfacher Genauigkeit; und Speichern des Gleitkommawertes mit einfacher Genauigkeit an jedem der mehreren Elementorte eines Zielregisters in der Maschine.
  18. Maschinenlesbares Medium nach Anspruch 17, wobei der erste Befehl ein erstes Feld enthält, um einen Quellort zu spezifizieren, von dem der Gleitkommawert mit halber Genauigkeit empfangen werden soll, wobei der Quellort ein Ort in einem Systemspeicher ist.
  19. Maschinenlesbares Medium nach Anspruch 17, wobei der Gleitkommawert mit halber Genauigkeit einer von einem ersten Satz von Gleitkommawerten mit halber Genauigkeit ist, der durch einen ersten Vektor repräsentiert wird, der in dem untersten Element des ersten Quellorts gespeichert werden soll.
  20. Maschinenlesbares Medium nach Anspruch 17, wobei der Befehl ein zweites Feld enthält, um den Rundsendeindikator bereitzustellen.
  21. Prozessor, der Folgendes umfasst: einen Decodierer, um einen ersten Befehl zu decodieren, um einen ersten decodierten Befehl zu erzeugen; ein Zielregister, das mehrere Elementorte aufweist; Mittel zum Ausführen des ersten decodierten Befehls, wobei die Ausführung des ersten decodierten Befehls das Umsetzen eines Gleitkommawertes mit halber Genauigkeit in einen Gleitkommawert mit einfacher Genauigkeit und das Speichern des Gleitkommawertes mit einfacher Genauigkeit an jedem der mehreren Elementorte des Zielregisters enthält.
  22. Prozessor nach Anspruch 21, wobei der erste Befehl ein erstes Feld enthält, um einen Ort in einem Systemspeicher zu spezifizieren, von dem der Gleitkommawert mit halber Genauigkeit empfangen werden soll.
  23. Prozessor nach Anspruch 22, wobei der Gleitkommawert mit halber Genauigkeit einer von einem ersten Satz von Gleitkommawerten mit halber Genauigkeit ist, der durch einen ersten Vektor repräsentiert wird, der an dem Ort in dem Systemspeicher gespeichert werden soll.
  24. Prozessor nach Anspruch 23, wobei der Gleitkommawert mit halber Genauigkeit an einem untersten Elementort des Orts in dem Systemspeicher gespeichert werden soll.
  25. Prozessor nach Anspruch 21, wobei der Befehl ein zweites Feld enthält, um einen Rundsendeindikator bereitzustellen.
DE102018124944.6A 2017-11-28 2018-10-10 Vorrichtung und Verfahren zum Umsetzen eines Gleitkommawertes von halber Genauigkeit in einfache Genauigkeit Pending DE102018124944A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/824,339 2017-11-28
US15/824,339 US10684854B2 (en) 2017-11-28 2017-11-28 Apparatus and method for converting a floating-point value from half precision to single precision

Publications (1)

Publication Number Publication Date
DE102018124944A1 true DE102018124944A1 (de) 2019-05-29

Family

ID=66442115

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018124944.6A Pending DE102018124944A1 (de) 2017-11-28 2018-10-10 Vorrichtung und Verfahren zum Umsetzen eines Gleitkommawertes von halber Genauigkeit in einfache Genauigkeit

Country Status (3)

Country Link
US (2) US10684854B2 (de)
CN (1) CN109840066A (de)
DE (1) DE102018124944A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10684854B2 (en) * 2017-11-28 2020-06-16 Intel Corporation Apparatus and method for converting a floating-point value from half precision to single precision
CN112394997A (zh) * 2019-08-13 2021-02-23 上海寒武纪信息科技有限公司 八位整形转半精度浮点指令处理装置、方法及相关产品
US11275560B2 (en) * 2020-02-19 2022-03-15 Meta Platforms, Inc. Hardware for floating-point arithmetic in multiple formats
EP4318226A1 (de) * 2022-08-03 2024-02-07 Intel Corporation Befehle zur umwandlung von fp8

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6954204B2 (en) * 2002-07-18 2005-10-11 Nvidia Corporation Programmable graphics system and method using flexible, high-precision data formats
US7236995B2 (en) * 2002-12-27 2007-06-26 Arm Limited Data processing apparatus and method for converting a number between fixed-point and floating-point representations
JP2006154979A (ja) * 2004-11-25 2006-06-15 Sony Corp 浮動小数点数演算回路
US8745111B2 (en) * 2010-11-16 2014-06-03 Apple Inc. Methods and apparatuses for converting floating point representations
US11544214B2 (en) * 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
US10684854B2 (en) * 2017-11-28 2020-06-16 Intel Corporation Apparatus and method for converting a floating-point value from half precision to single precision

Also Published As

Publication number Publication date
CN109840066A (zh) 2019-06-04
US11500630B2 (en) 2022-11-15
US20190163474A1 (en) 2019-05-30
US20200341759A1 (en) 2020-10-29
US10684854B2 (en) 2020-06-16

Similar Documents

Publication Publication Date Title
DE112014006508T5 (de) Prozessoren, Verfahren, Systeme und Anweisungen für Fliesskommaaddition mit drei Quellenoperanden
DE112017001804T5 (de) Vorrichtung und Verfahren für träge synchrone Seitentabellenaktualisierungen mit geringem Aufwand
DE102018125232A1 (de) Einrichtung und Verfahren für komplexe Multiplikation und Akkumulation
DE112012007058T5 (de) Vektormaskengesteuertes Clock-Gating für Leistungseffizenz eines Prozessors
DE102018005977A1 (de) Gleitkomma- zu festkomma-umwandlung
DE102018006757A1 (de) Festkomma-zu-gleitkomma-umwandlung
DE102018124945A1 (de) Einrichtung und verfahren für komplexe multiplikation
DE112013004798T5 (de) Befehlssatz zur Nachrichtenplanung des SHA256-Algorithmus
DE112013005236T5 (de) Verfahren und Vorrichtung für Integralbild-Berechnungsbefehle
DE112012007119T5 (de) Threadmigration-Unterstützung für Kerne unterschiedlicher Architektur
DE102014003706A1 (de) BEREICHSBEGRENZTE VEKTORSPEICHERZUGRIFFSINSTRUKTIONEN, PROZESSOREN, VERFAHREN und SYSTEME
DE102019100009A1 (de) Vereinheitlichter Hardwarebeschleuniger für Verschlüsselungssysteme mit symmetrischen Schlüsseln
DE102018125817A1 (de) Systeme und Verfahren zum Laden eines Kachelregisterpaars
DE102014003661A1 (de) Prozessoren, Verfahren, Systeme und Befehle zur Konsolidierung unmaskierter Elemente von Operationsmasken
DE112016004351T5 (de) Prozessoren, Verfahren, System und Befehle zum Datenelement-Vergleich
DE102018129341A1 (de) Verfahren und Einrichtung für Mehrfachlade- und Mehrfachspeicher-Vektorbefehle
DE112013005343T5 (de) Befehle für Codierungsalgorithemen mit gleitendem Fenster
DE102018124944A1 (de) Vorrichtung und Verfahren zum Umsetzen eines Gleitkommawertes von halber Genauigkeit in einfache Genauigkeit
DE102018128939A1 (de) Vorrichtung und Verfahren zur Vektormultiplikation vorzeichenbehafteter Wörter, Rundung und Sättigung
DE102015002253A1 (de) Verfahren und Vorrichtung zum Ausführen mehrerer Multiplikationsoperationen
DE102018003612A1 (de) Befehle für Dualzieltyp-Umwandlung-, Akkumulation- mit gemischter Präzision und atomare Speicheroperationen mit gemischter Präzision
DE112017000983T5 (de) System und Verfahren zum Ausführen eines Befehls zum Permutieren einer Maske
DE112017003347T5 (de) Systeme, Vorrichtungen und Verfahren für Strided-Ladevorgänge
DE102018005170A1 (de) Anweisungen für vektoroperationen mit konstanten werten
DE112013003713T5 (de) Befehlssatz für SKEIN256 SHA3-Algorithmus auf einem 128-Bit-Prozessor

Legal Events

Date Code Title Description
R012 Request for examination validly filed