DE102014003697A1 - Systeme, Vorrichtungen und Verfahren zur Nullsetzung von Bits in einem Datenelement - Google Patents

Systeme, Vorrichtungen und Verfahren zur Nullsetzung von Bits in einem Datenelement Download PDF

Info

Publication number
DE102014003697A1
DE102014003697A1 DE102014003697.9A DE102014003697A DE102014003697A1 DE 102014003697 A1 DE102014003697 A1 DE 102014003697A1 DE 102014003697 A DE102014003697 A DE 102014003697A DE 102014003697 A1 DE102014003697 A1 DE 102014003697A1
Authority
DE
Germany
Prior art keywords
source
operand
bits
bit
processor
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
DE102014003697.9A
Other languages
English (en)
Inventor
Elmoustapha Ould-Ahmed-Vall
Robert Valentine
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 DE102014003697A1 publication Critical patent/DE102014003697A1/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/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • 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/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions

Landscapes

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

Abstract

Es werden Ausführungsformen von Systemen, Verfahren und Vorrichtungen zur Ausführung eines NAME-Befehls beschrieben. Die Ausführung eines VPBZHI bewirkt auf einer Pro-Datenelement-Basis einer zweiten Quelle eine Nullsetzung von Bits, die höher (höherwertiger) sind als ein Startpunkt in dem Datenelement. Der Startpunkt wird durch die Inhalte eines Datenelements in einer ersten Quelle festgelegt. Die sich ergebenden Datenelemente werden an einer entsprechenden Position des Datenelements eines Ziels gespeichert.

Description

  • GEBIET DER ERFINDUNG
  • Das Gebiet der Erfindung betrifft allgemein eine Computerprozessorarchitektur und insbesondere Befehle, die bei ihrer Ausführung ein bestimmtes Ergebnis bewirken.
  • HINTERGRUND
  • Ein Befehlssatz oder eine Befehlssatzarchitektur (ISA) ist der Teil der Computerarchitektur, der das Programmieren betrifft, und kann die nativen Datentypen, Befehle, Registerarchitektur, Adressierungsmodi, Speicherarchitektur, Interrupt-Verarbeitung und Ausnahmebehandlung sowie externen Ein- und Ausgänge aufweisen. Es ist zu beachten, dass der Begriff Befehl sich hier allgemein auf einen Makrobefehl bezieht, das heißt Befehle, die zwecks Ausführung an den Prozessor geliefert werden – im Gegensatz zu Mikrobefehlen oder Mikro-Ops, die sich aus den dekodierenden Makrobefehlen eines Prozessor-Dekoders ergeben.
  • Kurzbeschreibung der Zeichnungen
  • Die Erfindung wird beispielhaft und nicht einschränkend durch die Figuren der beigefügten Zeichnungen veranschaulicht, wobei gleiche Bezugszeichen ähnliche Elemente angeben und wobei:
  • 1 eine Korrelation zwischen der Anzahl von Schreibmasken-Elementen mit einem aktiven Bitvektor und der Vektorgröße und der Größe des Datenelements gemäß einer Ausführungsform der Erfindung veranschaulicht.
  • 2 ein Blockdiagramm eines Ausführungsbeispiels eines Prozessors (Prozessorkerns) ist, um einen oder mehrere Befehle auszuführen.
  • 3 ein Ausführungsbeispiel einer VPBZHI-Operation ist.
  • 4 veranschaulicht eine Ausführungsform der Ausführung eines VPBZHI-Befehls in einem Prozessor.
  • 5 veranschaulicht eine Ausführungsform eines Verfahrens zum Verarbeiten eines VPBZHI-Befehls.
  • 6 ist ein Blockdiagramm einer Registerarchitektur 600 gemäß einer Ausführungsform der Erfindung.
  • 7A ist Blockdiagramm, das sowohl eine beispielhafte In-Order-Pipeline als auch eine beispielhafte Umbenennung des Registers, Out-of-Order-Issue/Ausführungspipeline gemäß Ausführungsformen der Erfindung veranschaulicht.
  • 7B ist ein Blockdiagramm, das sowohl ein Ausführungsbeispiel eines In-Order-Architekturkerns als auch eine beispielhafte Umbenennung des Registers, Out-of-Order-Issue/Ausführungsarchitekturkerns, der in einem Prozessor enthalten sein soll, gemäß Ausführungsformen der Erfindung veranschaulicht.
  • 8A–B veranschaulichen ein Blockdiagramm einer spezifischeren beispielhaften In-Order-Kernarchitektur, deren Kern einer von mehreren Logikbausteinen (einschließlich anderer Kerne derselben Art und/oder unterschiedlicher Art) in einem Chip ist.
  • 9 ist ein Blockdiagramm eines Prozessors 900, der mehr als einen Kern aufweisen kann, einen integrierten Speichercontroller aufweisen kann und eine integrierte Grafik gemäß Ausführungsformen der Erfindung aufweisen kann.
  • 1013 sind Blockdiagramme von beispielhaften Computer-Architekturen.
  • 14 ist ein Blockdiagramm, das die Verwendung eines Softwarebefehlsumwandlers zum Umwandeln binärer Befehle in einem Quellbefehlssatz in binäre Befehle in einem Zielbefehlssatz gemäß Ausführungsformen der Erfindung gegenüberstellt.
  • DETAILED DESCRIPTION
  • In der folgenden Beschreibung werden zahlreiche spezifische Details dargelegt. Es versteht sich jedoch, dass Ausführungsformen der Erfindung ohne diese spezifischen Details umgesetzt werden können. Bei anderen Beispielen wurden bekannte Schaltkreise, Strukturen und Techniken nicht detailliert dargestellt, um das Verständnis dieser Beschreibung nicht zu verschleiern.
  • Verweise in der Beschreibung auf ”eine Ausführungsform”, ”ein Ausführungsbeispiel”, usw. weisen darauf hin, dass die beschriebene Ausführungsform ein bestimmtes Merkmal, eine bestimmte Struktur oder Eigenschaft aufweisen kann, dass aber nicht jede Ausführungsform notwendigerweise das bestimmte Merkmal, die bestimmte Struktur oder Eigenschaft aufweist. Außerdem beziehen sich derartige Ausdrücke nicht unbedingt auf dieselbe Ausführungsform. Wird außerdem ein bestimmtes Merkmal, eine bestimmte Struktur oder Eigenschaft in Zusammenhang mit einer Ausführungsform beschrieben, wird davon ausgegangen, dass ein Fachmann aufgrund seiner Kenntnisse dieses Merkmal, diese Struktur oder Eigenschaft anderen Ausführungsformen zuweisen kann, auch wenn es nicht ausdrücklich beschrieben wird.
  • Übersicht
  • Die Befehlssatzarchitektur (ISA) wird von der Mikroarchitektur unterschieden, welche die interne Anordnung des Prozessors ist, der die ISA ausführt. Prozessoren mit unterschiedlichen Mikroarchitekturen können einen gemeinsamen Befehlssatz nutzen. Intel Pentium 4-Prozessoren, Intel Core-Prozessoren und Prozessoren von Advanced Micro Devices, Inc. of Sunnyvale CA, zum Beispiel, führen fast identische Versionen des x86-Befehlssatzes aus (mit einigen Erweiterungen bei den neueren Versionen), weisen jedoch unterschiedliche interne Anordnungen auf. Die gleiche Registerarchitektur der ISA kann zum Beispiel auf verschiedene Arten in verschiedenen Mikroarchitekturen ausgeführt werden unter Verwendung bekannter Techniken, einschließlich bestimmter physikalischer Register, wobei ein oder mehrere dynamisch zugeordnete physikalische Register einen Mechanismus zur Register-Umbenennung verwenden (z. B. die Verwendung einer Register-Alias-Tabelle (RAT), eines Reorder-Buffers (ROB) und eine Retirement-Registerdatei, wie im US-Patent Nr. 5,446,912 beschrieben; die Verwendung von mehreren Karten und einem Registerpool, wie im US-Patent Nr. 5,207,132 beschrieben) usw. Sofern nichts anderes festgelegt ist, beziehen sich die Ausdrücke Registerarchitektur, Registerdatei und Register auf das, was für die Software/den Programmierer sichtbar ist, und die Art, in der Befehle Register spezifizieren. Ist eine Spezifität gewünscht, wird das Adjektiv logisch, architektonisch oder für die Software sichtbar verwendet, um Register/Dateien in der Registerarchitektur anzugeben, während verschiedene Adjektive verwendet werden, um Register in einer bestimmten Mikroarchitektur zu bezeichnen (z. B. physikalisches Register, Reorder-Buffer, Retirement-Register, Registerpool).
  • Ein Befehlssatz weist ein oder mehrere Befehlsformate auf. Ein bestimmtes Befehlsformat legt verschiedene Felder fest (Anzahl der Bits, Anordnung der Bits), um unter anderem die durchzuführende Operation und den/die Operanden, an denen die Operation durchgeführt werden soll, festzulegen. Ein bestimmter Befehl wird durch Verwendung eines bestimmten Befehlsformats ausgedrückt und legt die Operation und die Operanden fest. Ein Befehlsstrom ist eine spezifische Abfolge von Befehlen, bei der jeder Befehl in der Abfolge ein Ereignis eines Befehls in einem Befehlsformat ist.
  • Bei wissenschaftlichen, finanziellen, selbst vektorisierten universellen, RMS (recognition, mining and synthesis)/visuellen und Multimedia-Anwendungen (z. B. 2D/3D-Grafiken, Bildverarbeitung, Videokompression/-dekompression, Spracherkennungsalgorithmen und Audio-Manipulation) ist es häufig erforderlich, dieselbe Operation bei einer großen Zahl von Dateneinheiten durchzuführen (”Datenparallelität” genannt). SIMD (Single-Instruction Multiple Data) bezieht sich auf eine Befehlsart, die bewirkt, dass ein Prozessor dieselbe Operation bei mehreren Dateneinheiten ausführt. Die SIMD-Technologie ist besonders für Prozessoren geeignet, die die Bits in einem Register logisch in eine Anzahl von Datenelementen mit fester Größe aufteilen können, von denen jedes einen getrennten Wert darstellt. Die Bits in einem 64-Bit-Register, zum Beispiel, können als Quelloperand festgelegt werden, die als vier getrennte 16-Bit-Datenelemente ausgeführt werden können, von denen jedes einen getrennten 16-Bit-Wert darstellt. Als weiteres Beispiel können die Bits in einem 256-Bit-Register als Quelloperand festgelegt werden, der als vier getrennte gepackte 64-Bit-Datenelement (Datenelemente mit Quad-Word(Q)-Größe), acht getrennte gepackte 32-Bit-Datenelemente (Datenelemente mit Double-Word(D)-Größe), sechzehn getrennte gepackte 16-Bit-Datenelemente (Datenelemente mit Word(W)-Größe) oder zweiunddreißig getrennte gepackte 8-Bit-Datenelemente (Datenelemente mit Byte(B)-Größe) ausgeführt wird. Diese Art von Daten wird gepackter Datentyp oder Vektordatentyp bezeichnet, und Operanden dieses Datentyps werden als gepackte Datenoperanden oder Vektoroperanden bezeichnet. Anders gesagt betrifft eine gepackte Dateneinheit oder ein Vektor eine Folge von gepackten Datenelementen, und ein gepackter Datenoperand oder ein Vektoroperand ist ein Quell- oder Zieloperand eines SIMD-Befehls (auch bekannt als gepackter Datenbefehl oder Vektorbefehl).
  • Eine Art von SIMD-Befehl bestimmt beispielsweise eine einzelne Vektoroperation, der bei zwei Quellvektoroperanden in vertikaler Art ausgeführt werden sollen, um einen Zielvektoroperanden derselben Größe (auch als Ergebnisvektoroperand bezeichnet) mit der gleichen Anzahl von Datenelementen und in der gleichen Reihenfolge der Datenelemente zu erzeugen. Die Datenelemente in den Quellvektoroperanden werden als Quelldatenelemente bezeichnet, während die Datenelemente in dem Zielvektoroperanden als Ziel- oder Ergebnisdatenelemente bezeichnet werden. Diese Quellvektoroperanden weisen die gleiche Größe auf und enthalten Datenelemente der gleichen Breite, und somit enthalten sie die gleiche Anzahl von Datenelementen. Die Quelldatenelemente in den gleichen Bitpositionen in den beiden Quellvektoroperanden bilden Paare von Datenelementen (auch als entsprechende Datenelemente bezeichnet, das heißt, das Datenelement in der Datenelementposition 0 jedes Quelloperanden entspricht sich, das Datenelement in der Datenelementposition 1 jedes Quelloperanden entspricht sich, und so weiter). Die durch diesen SIMD-Befehl festgelegte Operation wird getrennt bei jedem dieser Paare von Quelldatenelementen ausgeführt, um eine entsprechende Anzahl von Ergebnisdatenelementen zu erzeugen, und somit weist jedes Paar von Quelldatenelementen ein entsprechendes Ergebnisdatenelement auf. Da die Operation vertikal erfolgt und da der Ergebnisvektoroperand die gleiche Größe aufweist, die gleiche Anzahl von Datenelementen aufweist und die Ergebnisdatenelemente in derselben Reihenfolge der Datenelemente gespeichert werden wie die Quellvektoroperanden, befinden sich die Ergebnisdatenelemente in den gleichen Bitpositionen des Ergebnisvektoroperanden wie ihr entsprechendes Paar von Quelldatenelementen in den Quellvektoroperanden. Zusätzlich zu dieser als Beispiel aufgeführten Art von SIMD-Befehl gibt es eine Vielzahl anderer Arten von SIMD-Befehlen (z. B. Arten, die nur einen oder die mehr als zwei Quellvektoroperanden aufweisen; die horizontal arbeiten; die einen Ergebnisvektoroperanden erzeugen, der eine andere Größe aufweist, die eine andere Größe der Datenelemente aufweisen und/oder die eine andere Reihenfolge der Datenelemente aufweisen). Es versteht sich, dass der Begriff ”Zielvektoroperand” (oder Zieloperand) als das direkte Ergebnis der Durchführung der durch einen Befehl festgelegten Operation definiert ist, einschließlich der Speicherung dieses Zieloperanden an einer Position (in einem Register oder an einer Speicheradresse, die von diesem Befehl festgelegt wird), so dass ein anderer Befehl als Quelloperand auf ihn zugreifen kann (durch Festlegung dieser Position durch einen anderen Befehl).
  • Die SIMD-Technologie, wie sie von den Intel® CoreTM-Prozessoren verwendet wird, die einen Befehlssatz mit X86, MMXTM, Streaming SIMD Extensions (SSE), SSE2, SSE3, SSE4.1, und SSE4.2-Befehlen aufweisen, hat eine bedeutende Verbesserung bei der Anwendungsleistung ermöglicht (CoreTM and MMXTM sind eingetragene Warenzeichen oder Warenzeichen der Intel Corporation of Santa Clara, Calif.). Ein weiterer Satz von SIMD-Erweiterungen, der sich auf die Advanced Vector Extensions (AVX) (AVX1 and AVX2) beziehen und die das VEX-Kodierungsschema verwenden, wurde freigegeben und/oder veröffentlicht (siehe zum Beispiel Intel® 64 and IA-32 Architectures Software Developers Manual, Oktober 2011; und siehe auch Intel® Advanced Vector Extensions Programming Reference, Juni 2011).
  • In der unten stehenden Beschreibung gibt es einige Elemente, die einer Erläuterung bedürfen, bevor die Operationen dieses besonderen Befehls in der Befehlssatzarchitektur beschrieben werden. Ein solches Element nennt sich ”Schreibmaskenregister”, das allgemein verwendet wird, um einen Operanden zu benennen, um die Rechenoperation pro Element bedingt zu steuern (unten kann der Begriff Maskenregister ebenfalls verwendet werden, und er bezieht sich auf ein Schreibmaskenregister, wie zum Beispiel die unten erörterten ”K”-Register). Wie unten verwendet, speichert ein Schreibmaskenregister mehrere Bits (16, 32, 64, usw.), wobei jedes aktive Bit des Schreibmaskenregisters die Operation/die Aktualisierung eines gepackten Datenelements eines Vektorregisters während der SIMD-Verarbeitung steuert. Üblicherweise gibt es mehr als ein Schreibmaskenregister, die zur Verwendung durch einen Prozessorkern zur Verfügung stehen.
  • Die Befehlssatzarchitektur umfasst mindestens einige SIMD-Befehle, die Vektoroperationen bestimmen und die Felder aufweisen, um Quellregister und/oder Zielregister aus diesen Vektorregistern auszuwählen (ein beispielhafter SIMD-Befehl kann eine Vektoroperation bestimmen, die an den Inhalten von einem oder mehreren Vektorregistern ausgeführt werden soll, sowie das Ergebnis dieser Vektoroperation, die in einem der Vektorregister gespeichert werden soll). Verschiedene Ausführungsformen der Erfindung können Vektorregister unterschiedlicher Größen aufweisen und mehr/weniger/verschieden große Datenelemente unterstützen.
  • Die Größe der Multi-Bit-Datenelemente, die von einem SIMD-Befehl festgelegt wird (zum Beispiel Byte, Wort, Double-Word, Quad-Word) bestimmt die Bit-Positionen der ”Datenelementpositionen” innerhalb eines Vektorregisters, und die Größe des Vektoroperanden bestimmt die Anzahl der Datenelemente. Ein gepacktes Datenelement bezieht sich auf die Daten, die in einer bestimmten Position gespeichert werden. Anders ausgedrückt ändern sich je nach der Größe der Datenelemente in dem Zieloperanden und der Größe des Zieloperanden (der Gesamtzahl der Bits in dem Zieloperanden) (oder anders gesagt, je nach der Größe des Zieloperanden und der Anzahl der Datenelemente innerhalb des Zieloperanden) die Bitpositionen der Positionen der Multi-Bit-Datenelemente innerhalb des sich ergebenden Vektoroperanden (zum Beispiel, falls das Ziel für den sich ergebenden Vektoroperanden ein Vektorregister ist (in dieser Erörterung sind Vektorregister und gepackte Datenelementregister untereinander austauschbar), ändern sich die Bitpositionen der Positionen der Multi-Bit-Datenelemente innerhalb des Zielvektorregisters). Die Bitpositionen der Multi-Bit-Datenelemente unterscheiden sich zum Beispiel bei einer Vektoroperation, die bei 32-Bit-Datenelementen agiert (Datenelement-Position 0 belegt Bitpositionen 31:0, Datenelement-Position 1 belegt Bitpositionen 63:32, und so weiter) und bei einer Vektoroperation, die bei 64-Bit-Datenelementen agiert (Datenelement-Position 0 belegt Bitpositionen 63:0, Datenelement-Position 1 belegt Bitpositionen 127:64, und so weiter).
  • Außerdem besteht eine Korrelation zwischen der Anzahl von Schreibmasken-Elementen mit einem aktiven Bitvektor und der Vektorgröße und der Größe des Datenelements gemäß einer Ausführungsform der Erfindung, wie in 1 dargestellt. Vektorgrößen von 128 Bits, 256 Bits und 512 Bits werden gezeigt, auch wenn andere Breiten ebenfalls möglich sind. Datenelementgrößen von 8-Bit-Bytes (B), 16-Bit-Wörtern (W), 32-Bit-Doublewords (D) oder Fließkomma mit einfacher Genauigkeit sowie 64-Bit Quadwords (Q) oder Fließkomma mit doppelter Genauigkeit werden berücksichtigt, auch wenn andere Breiten ebenfalls möglich sind. Wie dargestellt wird, können, wenn die Vektorgröße 128-Bits ist, 16-Bits zur Maskierung verwendet werden, wenn die Datenelementgröße des Vektoren 8 Bits beträgt, 8-Bits können zur Maskierung verwendet werden, wenn die Datenelementgröße des Vektoren 16-Bits beträgt, 4 Bits können zur Maskierung verwendet werden, wenn die Datenelementgröße des Vektoren 32 Bits beträgt, und 2 Bits können zur Maskierung verwendet werden, wenn die Datenelementgröße des Vektoren 64 Bits beträgt. Beträgt die Vektorgröße 256 Bits, können 32 Bits zur Maskierung verwendet werden, wenn die gepackte Datenelementbreite 8 Bits beträgt, 16 Bits können zur Maskierung verwendet werden, wenn die Datenelementgröße des Vektoren 16 Bits beträgt, 8 Bits können zur Maskierung verwendet werden, wenn die Datenelementgröße des Vektoren 32 Bits beträgt, und 4 Bits können zur Maskierung verwendet werden, wenn die Datenelementgröße des Vektoren 64 Bits beträgt. Beträgt die Vektorgröße 512 Bits, können 64 Bits zur Maskierung verwendet werden, wenn die Datenelementgröße des Vektoren 8 Bits beträgt, 32 Bits können zur Maskierung verwendet werden, wenn die Datenelementgröße des Vektoren 16 Bits beträgt, 16 Bits können zur Maskierung verwendet werden, wenn die Datenelementgröße des Vektoren 32 Bits beträgt, und 8 Bits können zur Maskierung verwendet werden, wenn die Datenelementgröße des Vektoren 64 Bits beträgt. Je nach der Kombination der Vektorgröße und der Datenelementgröße können entweder alle 64 Bits oder nur eine Untergruppe der 64 Bits als Schreibmaske verwendet werden. Wird ein einzelnes Maskierungssteuerungsbit pro Element verwendet, ist allgemein die Anzahl der Bits in dem Vektorschreibmaskenregister, das zur Maskierung verwendet wird (aktive Bits), gleich der Vektorgröße in Bits geteilt durch die Datenelementgröße des Vektoren in Bits.
  • Wie oben erwähnt, enthalten Schreibmaskenregister Maskenbits, die Elementen in einem Vektorregister (oder Speicherplatz) entsprechen, und verfolgen die Elemente, an denen Operationen ausgeführt werden sollen. Aus diesem Grund sind gemeinsame Operationen wünschenswert, die ein ähnliches Verhalten bei diesen Maskenbits wie bei den Vektorregistern reproduzieren und die im Allgemeinen eine Operation ermöglichen, um diese Maskenbits innerhalb der Schreibmaskenregister anzupassen.
  • Unten werden Ausführungsformen eines Befehls beschrieben, der einen Steuervektor verwendet, um Bits zu eliminieren, die an einer bestimmten Position in jedem Datenelement der Quelle beginnen. Dieser Befehl kann verwendet werden, um wirksam viele Bitmanipulierungsaufgaben zu vektorisieren, einschließlich der Entnahme von Bits innerhalb von Datenelementen eines Vektorregisters und des Einfügens von Bits in jedes Datenelement. Unten finden sich Ausführungsformen eines Befehls, der allgemein als VPBZHI (Vector Packed Zero High Bits Starting with a Specified Bit Position Instruction) des Befehlssatzes bezeichnet wird, sowie Ausführungsformen von Systemen, Architekturen, Befehlsformaten, usw., die verwendet werden können, um einen derartigen Befehl auszuführen. Die Ausführung eines VPBZHI bewirkt auf einer Pro-Datenelement-Basis einer zweiten Quelle eine Nullsetzung von Bits, die höher (höherwertiger) sind als ein Startpunkt in dem Datenelement. Der Startpunkt wird durch die Inhalte eines Datenelements in einer ersten Quelle festgelegt. Die sich ergebenden Datenelemente werden an einer entsprechenden Position des Datenelements eines Ziels gespeichert.
  • 2 ist ein Blockdiagramm eines Ausführungsbeispiels eines Prozessors (Prozessorkerns) 200, um einen oder mehrere VPBZHI-Befehle 204 auszuführen. Bei einigen Ausführungsformen kann der Prozessor ein Universalprozessor sein (zum Beispiel der bei Desktops, Laptops, Servern und ähnlichen Rechnern verwendeten Art). Alternativ kann der Prozessor ein Spezialprozessor sein. Geeignete Spezialprozessoren umfassen beispielsweise, sind aber nicht beschränkt auf, Netzwerkprozessoren, Kommunikationsprozessoren, kryptografische Prozessoren, Grafikprozessoren, Koprozessoren, eingebettete Prozessoren und Digitalsignal-Prozessoren (DSPs), um nur einige Beispiele zu nennen. Der Prozessor kann einer von verschiedenen CISC(complex instruction set computing)-Prozessoren, verschiedenen RISC(reduced instruction set computing)-Prozessoren, verschiedenen VLIW(very long instruction word)-Prozessoren, verschiedenen Hybriden davon oder vollständig andere Art von Prozessor sein.
  • Der Prozessor 200 weist architektonisch sichtbare Register auf (zum Beispiel eine Architekturregisterdatei) 205. Die Architekturregister können hier auch einfach als Register bezeichnet werden. Sofern nichts anderes festgelegt ist oder offenbar, werden die Ausdrücke Architekturregister, Registerdatei und Register hier verwendet, um Register zu bezeichnen, die für die Software und/oder den Programmierer und/oder die Register, die durch Makrobefehle oder Assembler-Sprachbefehle festgelegt sind, um Operanden zu bestimmen, sichtbar sind. Diese Register stehen im Gegensatz zu anderen, nicht architektonischen oder nicht architektonisch sichtbaren Registern in einer bestimmten Mikroarchitektur (zum Beispiel temporäre Register, die von Befehlen verwendet werden, Umordnungspuffer, Retirement-Register, usw.). Die Register stellen allgemein On-Die-Prozessorspeicherzellen dar. Die veranschaulichten Architekturregister weisen gepackte Datenregister 206 auf. Jedes der gepackten Datenregister kann betreibbar sein, um gepackte oder Vektordaten zu speichern. Die veranschaulichten Architekturregister weisen ebenfalls Maskenregister für gepackte Datenoperationen 207 auf. Jedes der Maskenregister für gepackte Datenoperationen kann betreibbar sein, um eine gepackte Datenoperationsmaske zu speichern. Diese Register können in dieser Beschreibung als Schreibmaskenregister bezeichnet werden. Gepackte Datenoperanden können in den gepackten Datenregistern 207 gespeichert werden.
  • Der Prozessor weist ebenfalls eine Ausführungslogik 208 auf. Die Ausführungslogik dient dazu, um den einen oder die mehreren VPBZHI-Befehle 204 auszuführen oder zu verarbeiten. Bei einigen Ausführungsformen kann die Ausführungslogik eine besondere Logik aufweisen (zum Beispiel eine besondere Schaltung oder Hardware, die möglicherweise mit Firmware kombiniert ist), um diese Befehle auszuführen.
  • 3 veranschaulicht ein Ausführungsbeispiel einer VPBZHI-Operation. In dem veranschaulichten Beispiel 3(A) schaffen Datenelemente aus einem ersten Quellregister 301 auf einer Basis pro Datenelement den Startpunkt für das Nullsetzen von Bits in einem entsprechenden Datenelement in dem zweiten Quellregister/Speicherplatz 303. In diesem Beispiel weisen sowohl die erste als auch die zweite Quelle 301, 303 vier Datenelemente in den Positionen 0–3 auf (die niederwertigen auf der rechten Seite). In der Datenelementposition 0 weist die erste Quelle 301 einen Wert von 00000002 in Hexadezimalformat auf. Dies ist 2 in dezimaler Notation und gibt an, dass die Bitposition 2 der zweiten Quelle 303 der Punkt ist, an welchem eine Nullsetzung beginnen kann. Bei dieser Veranschaulichung wird jedoch die Schreibmaskierung verwendet und es soll wegen des Wertes der Schreibmaske 305 an dieser Bitposition keine Nullsetzung von Bits in der zweiten Quelle erfolgen und an dem entsprechenden Ziel 309 gespeichert werden. In diesem Beispiel sind die Inhalte des Ziels 309 dieselben wie die vor der Ausführung des Befehls.
  • In der Datenelementposition 1 weist die erste Quelle 301 einen Wert von 00000010 in Hexadezimalformat auf. Dies ist 16 in dezimaler Notation und gibt an, dass die Bitposition 16 der zweiten Quelle 303 der Punkt ist, an welchem eine Nullsetzung beginnen kann. Bei dieser Veranschaulichung wird wieder die Schreibmaskierung verwendet, jedoch gibt diesmal der Wert bei dieser Bitposition der Schreibmaske 305 an, dass die Nullsetzung und das Schreiben erfolgen sollen. Daher werden die Daten der zweiten Quelle 303 auf null gesetzt, beginnend bei Bitposition 16, und dieser neue Wert wird an der Datenelementposition 1 des Ziels 309 gespeichert.
  • In dem veranschaulichten Beispiel 3(B) schaffen Datenelemente aus einem ersten Quellregister 311 auf einer Basis pro Datenelement den Startpunkt für das Nullsetzen von Bits in einem entsprechenden Datenelement in dem zweiten Quellregister/Speicherplatz 313. In diesem Beispiel weisen sowohl die erste als auch die zweite Quelle 311, 313 vier Datenelemente in den Positionen 0–3 auf (die niederwertigen auf der rechten Seite). In der Datenelementposition 0 weist die erste Quelle 311 einen Wert von 00000002 in Hexadezimalformat auf. Dies ist 2 in dezimaler Notation und gibt an, dass die Bitposition 2 der zweiten Quelle 313 der Punkt ist, an welchem eine Nullsetzung beginnen kann. Bei dieser Veranschaulichung wird jedoch die Schreibmaskierung verwendet und es soll wegen des Wertes der Schreibmaske 315 an dieser Bitposition keine Nullsetzung von Bits in der zweiten Quelle erfolgen und an dem entsprechenden Ziel 319 gespeichert werden. In diesem Beispiel werden die Inhalte des Ziels 319 vollständig auf null gesetzt.
  • In der Datenelementposition 1 weist die erste Quelle 311 einen Wert von 00000010 in Hexadezimalformat auf. Dies ist 16 in dezimaler Notation und gibt an, dass die Bitposition 16 der zweiten Quelle 313 der Punkt ist, an welchem eine Nullsetzung beginnen kann. Bei dieser Veranschaulichung wird wieder die Schreibmaskierung verwendet, jedoch gibt diesmal der Wert bei dieser Bitposition der Schreibmaske 315 an, dass die Nullsetzung und das Schreiben erfolgen sollen. Daher werden die Daten der zweiten Quelle 313 auf null gesetzt, beginnend bei Bitposition 16, und dieser neue Wert wird an der Datenelementposition 1 des Ziels 319 gespeichert.
  • Beispielhaftes Format von VPBZHI
  • Ein beispielhaftes Format dieses Befehls ist ”VPBZHI{K1} R1, R2/MEM, R3”, wobei der Zieloperand K1 ein optionales Schreibmaskenregister ist, R1 ein Quellregister für gepackte Daten ist (wie zum Beispiel ein 128-, 256-, 512-Bit-Register, usw.), R2 ein Zielregister für gepackte Daten (wie zum Beispiel ein 128-, 256-, 512-Bit-Register, usw.) oder Speicherort ist und R3 ein Zielregister (wie zum Beispiel ein 128-, 256-, 512-Bit-Register, usw.) ist und VPBZHI der Opcode des Befehls ist. Der Opcode kann auch die Größe des Datenelements der Quelle bezeichnen. VPBZHID gibt zum Beispiel an, dass die Datenelemente 32-Bit sind, VPBZHIB ist 8-Bit, usw. Die Größe der Datenelemente und der Quelloperanden bestimmt ebenfalls die Anzahl aktiver Bits in dem Schreibmaskenregister.
  • Beispielhafte Verfahren der Ausführung von VPBZHI
  • 4 veranschaulicht eine Ausführungsform eines VPBZHI-Befehls in einem Prozessor. Ein VPBZHI-Befehl mit einem ersten und einem zweiten Quelloperanden, einem Zieloperanden, einem optionalen Schreibmaskenoperanden und einem Opcode wird bei 401 abgerufen.
  • Ein VPBZHI-Befehl wird dekodiert, indem die Logik bei 403 dekodiert wird. Je nach Befehlsformat können in diesem Stadium eine Vielzahl von Daten interpretiert werden, zum Beispiel, ob eine Datentransformation stattfinden soll, welche Register zu beschreiben und/oder abzurufen sind, auf welche Speicheradresse zuzugreifen ist, usw.
  • Die Werte des Quelloperanden werden bei 405 abgerufen/gelesen. Es wird beispielsweise ein Quellvektorregister gelesen. Ist der Quelloperand ein Speicheroperand, werden die mit diesem Operanden verknüpften Datenelemente abgerufen. Bei einigen Ausführungsformen werden Datenelemente aus dem Speicher in einem temporären Register gespeichert.
  • Der VPBZHI-Befehl (oder Operationen, die einen derartigen Befehl aufweisen, wie zum Beispiel Mikrooperationen) wird von Ausführungsressourcen, wie zum Beispiel einer oder mehreren funktionalen Einheiten bei 407 ausgeführt, um für jede Datenelementposition des ersten Quelloperanden eine Startbitposition für die Nullsetzung von Werten des zweiten Quelloperanden festzulegen, beginnend bei dem Datenelement an dieser Bitposition. Die Ausführung des Befehls bewirkt ebenfalls für jede entsprechende Datenelementposition des zweiten Quelloperanden eine Nullsetzung von Bits, die sich in Bitpositionen befinden, die größer (höherwertiger) oder gleich der Startbitposition sind, die in der entsprechenden Datenelementposition in der ersten Quelle zu finden ist. Beispiele dafür finden sich in 3. Bei einigen Ausführungsformen wird jede Datenelementposition parallel bewertet. Bei anderen Ausführungsformen werden die Datenelementpositionen nacheinander bewertet.
  • Die Datenelemente der zweiten Quelle, die verändert wurden, werden an entsprechende Datenelementpositionen des Ziels bei 409 geschrieben. Bei einigen Ausführungsformen, wenn die Schreibmaske verwendet wird, kann an den entsprechenden Datenelementpositionen je nach dem Wert der Schreibmaske an der Bitposition nicht geschrieben werden. Bei einigen Ausführungsformen, wenn die Schreibmaske angibt, dass an der Datenelementposition nicht geschrieben werden sollte, wird die Datenelementposition des Ziels auf alle Nullen gesetzt. Bei anderen Ausführungsformen, wenn die Schreibmaske angibt, dass an der Datenelementposition nicht geschrieben werden sollte, wird die Datenelementposition des Ziels nicht verändert. Zwar wurden 407 und 409 getrennt veranschaulicht, jedoch werden sie bei einigen Ausführungsformen zusammen als ein Teil der Ausführung des Befehls ausgeführt.
  • Bei einigen Ausführungsformen werden die Daten der zweiten Quelle in dem Zielregister vor einer Änderung der Datenelemente gespeichert. Wird zum Beispiel keine Schreibmaskierung verwendet, würden sämtliche Datenelemente aus der zweiten Quelle in dem Ziel gespeichert und dann verändert werden. Wird die Schreibmaskierung verwendet, würden nur ausgewählte Datenelemente entsprechend der Schreibmaske verschoben werden.
  • Bei einigen Ausführungsformen wird ein temporärer Speicherort für Änderungen verwendet, so dass die Daten des zweiten Quellregisters nicht zerstört werden, wenn Nullsetzungsoperationen darin ausgeführt werden.
  • 5 veranschaulicht eine Ausführungsform eines Verfahrens zum Verarbeiten eines VPBZHI-Befehls. Bei dieser Ausführungsform wird angenommen, dass einige oder sogar alle Operationen 401405 früher ausgeführt wurden, sie werden jedoch nicht gezeigt, um die unten genannten Einzelheiten nicht zu verschleiern. Das Abholen und Dekodieren wird beispielsweise nicht zeigt, und auch der Operandenabruf wird nicht gezeigt. In diesem Beispiel wird jede Datenelementposition parallel verarbeitet, die Datenelementpositionen können jedoch ebenso nacheinander bewertet werden.
  • Bei 501 erfolgt für jede Datenelementposition der ersten Quelle eine Bestimmung einer Startbitposition für die (potentielle) Nullsetzung eines Datenelements an einer entsprechenden Datenelementposition der zweiten Quelle. In 3 betrug beispielsweise an der Datenelementposition 0 dieser Wert 2, und an der Datenelementposition 1 betrug er 16. Daher liegen die Startbitpositionen für eine potentielle Nullsetzung bei 2 und 16 für die Datenelemente der entsprechenden Datenelementpositionen der zweiten Quelle. „Potentiell” wird in dieser Erörterung verwendet, da es bei der Nullsetzung möglich ist, je nach Verwendung der Schreibmaske, dass das veränderte Datenelement nicht in dem Zielregister gespeichert wird.
  • Für jede Datenelementposition der zweiten Quelle werden alle Bitpositionen an und über der Startbitposition eines Datenelements an einer entsprechenden Datenelementposition der zweiten Quelle bei 503 auf null gesetzt. In 3 beginnt beispielsweise an der Datenelementposition 0 die Nullsetzung bei Bit 2 und setzt sich bis zum höchstwertigen Bit dieses Datenelements fort.
  • Für jede Datenelementposition wird bei 505 festgelegt, ob die Datenelementposition schreibmaskiert werden soll. In 3 gibt dieser Wert beispielsweise bei der Datenbitposition 0 an, dass kein Schreiben erfolgt.
  • Die Werte der zweiten Quelle, die von der Schreibmaske nicht blockiert werden, werden in dem Ziel an der entsprechenden Position bei 507 gespeichert.
  • Bei einigen Ausführungsformen werden die Datenelemente aller Datenelementpositionen des Ziels, in die nicht geschrieben wurde, bei 509 auf null gesetzt.
  • Zwar wurde bei den vorstehenden Ausführungen beschrieben, dass mit der festgelegten Startbitposition begonnen wird und weitergeführt wird, jedoch sollen noch andere Varianten betrachtet werden. Bei einigen Ausführungsformen zum Beispiel beginnt die Operation an der Startbitposition und geht nach unten. Bei anderen Ausführungsformen wird die Startbitposition nicht auf null gesetzt, sondern erst die nächste.
  • Bei einigen Ausführungsformen werden die Daten der zweiten Quelle in dem Zielregister vor einer Änderung der Datenelemente von 503 gespeichert. Wird zum Beispiel keine Schreibmaskierung verwendet, würden sämtliche Datenelemente aus der zweiten Quelle in dem Ziel gespeichert und dann verändert werden. Wird die Schreibmaskierung verwendet, würden nur ausgewählte Datenelemente entsprechend der Schreibmaske verschoben werden.
  • Bei einigen Ausführungsformen wird ein temporärer Speicherort für Änderungen verwendet, so dass die Daten des zweiten Quellregisters nicht zerstört werden, wenn Nullsetzungsoperationen darin ausgeführt werden.
  • Beispielhafte Registerarchitektur
  • 6 ist ein Blockdiagramm einer Registerarchitektur 600 gemäß einer Ausführungsform der Erfindung. Bei der veranschaulichten Ausführungsform gibt es 32 Vektorregister 610, die 512 Bits breit sind; diese Register werden als zmm0 bis zmm31 bezeichnet. Die 256 Bits niedrigerer Ordnung der niedrigeren 16 zmm-Register werden auf den Registern ymm0–16 überlagert. Die 128 Bits niedrigerer Ordnung der niedrigeren 16 zmm-Register (die 128 Bits niedrigerer Ordnung der ymm-Register) werden auf den Registern xmm0–15 überlagert.
  • Allzweckregister 625 – bei der veranschaulichten Ausführungsform gibt es sechzehn Allzweckregister mit 64 Bits, die zusammen mit den vorhandenen x86-Adressierungsmodi verwendet werden, um Speicheroperanden anzusprechen. Diese Register werden durch die Bezeichnungen RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP, sowie R8 bis R15 bezeichnet.
  • Skalare Gleitkomma-Stack-Registerdatei (x87-Stack) 645, auf die die MMX-gepackte integer-flache Registerdatei 650 mit Alias verweist – in der dargestellten Ausführungsform ist der x87-Stack ein Stack mit acht Elementen, der zum Durchführen von skalaren Gleitkommaoperationen auf 32/64/80 Bit-Gleitkommadaten unter Verwendung der x87-Befehlssatzerweiterung verwendet wird; während die MMX-Register verwendet werden, um Operationen auf 64 Bit-gepackten Ganzzahl-Daten durchzuführen, sowie um Operanden für einige Operationen zu halten, die zwischen dem MMX- und XMM-Registern durchgeführt werden.
  • Alternative Ausführungsformen der Erfindung können breitere oder engere Register verwenden. Zusätzlich können alternative Ausführungsformen der Erfindungen mehr, weniger oder unterschiedliche Registerdateien und Register verwenden.
  • Beispielhafte Kernarchitekturen, Prozessoren und Rechnerarchitekturen
  • Prozessorkerne können auf verschiedene Arten, für verschiedene Zwecke und in verschiedenen Prozessoren implementiert sein. Die Implementierungen derartiger Kerne können zum Beispiel Folgendes umfassen: 1) einen universellen In-Order-Kern, der für allgemeine Berechnungen dienen soll; 2) einen universellen Hochleistungs-Out-of-Order-Kern, der für allgemeine Berechnungen dienen soll; 3) einen Spezialkern, der vor allem für Grafiken und/oder wissenschaftliche (Durchsatz-)Berechnungen dienen soll. Die Implementierungen verschiedener Prozessoren können Folgendes umfassen: 1) eine CPU, die einen oder mehrere universelle In-Order-Kerne aufweist, die für allgemeine Berechnungen dienen sollen und/oder einen oder mehrere universelle Out-of-Order-Kerne, die für allgemeine Berechnungen dienen sollen; und 2) einen Koprozessor, der einen oder mehrere Spezialkerne aufweist, die vor allem für Grafiken und/oder wissenschaftlichen (Durchsatz) dienen sollen. Derartige unterschiedliche Prozessoren führen zu unterschiedlichen Computersystemarchitekturen, die Folgendes aufweisen können: 1) den Koprozessor auf einem von der CPU getrennten Chip; 2) den Koprozessor auf einem getrennten Chip in demselben Paket wie eine CPU; 3) den Koprozessor auf demselben Chip wie eine CPU (in diesem Fall wird ein derartiger Koprozessor manchmal als Speziallogik bezeichnet, wie zum Beispiel eine integrierte Grafik- und/oder wissenschaftliche (Durchsatz-)Logik, oder als Sonderkerne); und 4) ein System auf einem Chip, das auf demselben Chip die beschriebene CPU aufweisen kann (manchmal als der/die Anwendungskern(e) oder Anwendungsprozessor(en) bezeichnet), den oben beschriebenen Koprozessor und zusätzliche Funktionen. Als nächstes werden beispielhaft Kernarchitekturen beschrieben, gefolgt von Beschreibungen von beispielhaften Prozessoren und Computerarchitekturen.
  • Beispielhafte Kernarchitekturen
  • In-Order und Out-of-Order-Kern-Blockdiagramm
  • 7A ist ein Blockdiagramm, das sowohl eine beispielhafte In-Order-Pipeline als auch eine beispielhafte Umbenennung des Registers, Out-of-Order-Issue/Ausführungspipeline gemäß Ausführungsformen der Erfindung veranschaulicht. 7B ist ein Blockdiagramm, das sowohl ein Ausführungsbeispiel eines In-Order-Architekturkerns als auch eine beispielhafte Umbenennung des Registers, Out-of-Order-Issue/Ausführungsarchitekturkerns, der in einem Prozessor enthalten sein soll, gemäß Ausführungsformen der Erfindung veranschaulicht. Die durchgehend umrandeten Boxen in den 7A–B veranschaulichen die In-Order-Pipeline und den In-Order-Kern, während die optionale Hinzufügung der gestrichelt umrandeten Boxen die Register-Umbenennung, Out-of-Order-Issue/Ausführungspipeline und Kern veranschaulicht. Da der In-Order-Aspekt eine Untergruppe des Out-of-Order-Aspekts ist, wird der Out-of-Order-Aspekt beschrieben.
  • In 7A weist eine Prozessorpipeline 700 eine Holstufe 702, eine Längendekodierstufe 704, eine Dekodierstufe 706, eine Zuordnungsstufe 708, eine Umbenennungsstufe 710, eine Scheduling-Stufe (auch bekannt als Dispatch- oder Issue-Stufe) 712, eine Registerlese-/Speicherlesestufe 714, eine Ausführungsstufe 716, eine Rückschreibestufe/Speicherschreibstufe 718, eine Ausnahmebehandlungsstufe 722 und eine Bindungsstufe 724 auf.
  • 7B zeigt einen Prozessorkern 790, der eine Front-End-Einheit 730 aufweist, die mit einer Ausführungsmoduleinheit 750 gekoppelt ist, und beide sind mit einer Speichereinheit 770 gekoppelt. Der Kern 790 kann ein RISC(reduced instruction set computing)-Kern, ein CISC(complex instruction set computing)-Kern, ein VLIW (very long instruction word)-Kern oder eine hybride oder alternative Kernart sein. Als weitere Möglichkeit kann der Kern 790 ein Spezialkern sein, wie zum Beispiel ein Netzwerk- oder Kommunikationskern, ein Kompressionsmodul, ein Koprozessorkern, ein GPGPU(general purpose computing graphics processing unit)-Kern, Grafikkern oder ähnliches.
  • Die Front-End-Einheit 730 weist eine Sprungvorhersageeinheit 732 auf, die mit einer Befehls-Cache-Einheit 734 gekoppelt ist, welche mit einem Befehlsübersetzungspuffer (TLB) 736 gekoppelt ist, der mit einer Befehlabrufeinheit 738 gekoppelt ist, die mit einer Dekodiereinheit 740 gekoppelt ist. Die Dekodiereinheit 740 (oder Dekoder) kann Befehle entschlüsseln und als Ausgabe eine oder mehrere Mikrooperationen, Mikrocodeeintrittspunkte, Mikrobefehle, andere Befehle oder andere Steuersignale generieren und ausgeben, die von den Originalbefehlen dekodiert werden oder die sie auf andere Art und Weise widerspiegeln oder von ihnen abgeleitet werden. Die Dekodiereinheit 740 kann unter Verwendung verschiedener anderer Mechanismen implementiert werden. Beispiele für geeignete Mechanismen umfassen, sind aber nicht beschränkt auf Nachschlagtabellen, Hardwareimplementierungen, programmierbare Logik-Arrays (PLAs), Mikrocode-Read Only Memories (ROMs) oder andere Medien, die einen Mikrocode für bestimmte Makrobefehle speichern (zum Beispiel in der Dekodiereinheit 740 oder an einer anderen Stelle innerhalb der Front-End-Einheit 730). Die Dekodiereinheit 740 ist mit einer Umbenennungs-/Zuteilereinheit 752 in der Ausführungsmoduleinheit 750 gekoppelt.
  • Die Ausführungsmoduleinheit 750 umfasst die Umbenennungs-/Zuteilereinheit 752, die mit einer Retirement-Einheit 754 und einer Gruppe von einer oder mehreren Scheduler-Einheit(en) 756 gekoppelt ist. Die Scheduler-Einheit(en) 756 stellt/stellen eine beliebige Anzahl verschiedener Scheduler dar, einschließlich Buchungsstationen, zentralem Befehlsfenster, usw. Die Scheduler-Einheit(en) 756 ist/sind mit der/den physikalischen Registerdateieinheit(en) 758 gekoppelt. Jede der physikalischen Registerdateneinheit(en) 758 stellt eine oder mehrere physikalische Registerdateien dar, von denen verschiedene einen oder mehrere verschiedene Datentypen speichern, wie zum Beispiel Skalar-Ganzzahl, skalares Gleitkommaregister, gepackte Ganzzahl, gepacktes Gleitkommaregister, Vektorganzzahl, Vektor-Gleitkommaregister, Status (zum Beispiel ein Befehlsanzeiger, der die Adresse des nächsten auszuführenden Befehls ist), usw. Bei einer Ausführungsform weist die physikalische Registerdatei-Einheit 758 eine Vektorregistereinheit und eine skalare Registereinheit auf. Diese Registereinheiten können architektonische Vektorregister, Vektormaskenregister und Universalregister vorsehen. Die physikalische(n) Registerdatei-Einheit(en) 758 wird/werden von der Retirement-Einheit 754 überlappt, um verschiedene Arten zu veranschaulichen, wie die Registerumbenennung und die Out-of-Order-Ausführung implementiert werden können (zum Beispiel durch Verwendung von Reorder-Puffern und Retirement-Register-Dateien; durch Verwendung von zukünftigen Dateien, History-Puffern und Retirement-Register-Dateien; durch Verwendung von Registerabbildungen und einer Gruppe von Registern, usw.). Die Retirement-Einheit 754 und die physikalische(n) Registerdatei-Einheit(en) 758 sind mit dem/den Ausführungscluster(n) 760 gekoppelt. Das/Die Ausführungscluster 760 weisen eine Gruppe von einer oder mehreren Ausführungseinheiten 762 und eine Gruppe von einer oder mehreren Speicherzugangseinheiten 764 auf. Die Ausführungseinheiten 762 können verschiedene Operationen ausführen (zum Beispiel Verschiebungen, Addition, Subtraktion, Multiplikation) und bei verschiedenen Arten von Daten (zum Beispiel skalare Gleitkommaregister, gepackte Ganzzahlen, gepackte Gleitkommaregister, Vektorganzzahlen, Vektor-Gleitkommaregister). Während einige Ausführungsformen eine Zahl von Ausführungseinheiten aufweisen können, die für spezielle Funktionen oder Gruppen von Funktionen bestimmt sind, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten aufweisen, die alle Funktionen ausführen. Die Scheduler-Einheit(en) 756, die physikalische Registerdateieinheit(en) 758 und das/die Ausführungscluster 760 werden als möglicherweise mehrfach dargestellt, weil bestimmte Ausführungsformen getrennte Pipelines für bestimmte Arten von Daten/Operationen erzeugen (zum Beispiel eine skalare Ganzzahl-Pipeline, eine skalare Gleitkomma-/gepackte Ganzzahl-/gepackte Gleitkomma-/Vektor-Ganzzahl-/Vektor-Gleitkomma-Pipeline, und/oder eine Speicherzugangspipeline, die jeweils ihre eigene Scheduler-Einheit, physikalische Registerdatei-Einheit und/oder Ausführungscluster aufweisen – und im Fall einer getrennten Speicherzugangspipeline werden bestimmte Ausführungsformen implementiert, bei denen nur das Ausführungscluster dieser Pipeline die Speicherzugangseinheit(en) 764 aufweist). Es versteht sich ebenfalls, dass bei Verwendung getrennter Pipelines eine oder mehrere dieser Pipelines Out-of-Order-Issue/Ausführung und der Rest In-Order sein können.
  • Die Gruppe der Speicherzugangseinheiten 764 ist mit der Speichereinheit 770 gekoppelt, die eine Daten-TLB-Einheit 772 aufweist, die mit einer Daten-Cache-Einheit 774 gekoppelt ist, die mit einer Level 2(L2)-Cache-Einheit 776 gekoppelt ist. Bei einem Ausführungsbeispiel können die Speicherzugangseinheiten 764 eine Ladeeinheit, eine Speicheradresseneinheit und eine Speicherdateneinheit aufweisen, von denen jede mit der Daten-TLB-Einheit 772 in der Speichereinheit 770 gekoppelt ist. Die Befehlscache-Einheit 734 ist außerdem mit einer Level 2(L2)-Cache-Einheit 776 in der Speichereinheit 770 gekoppelt. Die L2-Cache-Einheit 776 ist mit einem oder mehreren Cache-Levels und eventuell mit einem Hauptspeicher gekoppelt.
  • Die beispielhafte Registerumbenennung, Out-of-Order-Issue-/Ausführungskernarchitektur kann zum Beispiel die Pipeline 700 wie folgt implementieren: 1) der Befehlsabruf 738 führt die Abruf- und Längendekodierstufen 702 und 704 aus; 2) die Dekodiereinheit 740 führt die Dekodierstufe 706 aus; 3) die Umbenennungs-/Zuteilungseinheit 752 führt die Zuteilungsstufe 708 und die Umbenennungsstufe 710 aus; 4) die Scheduler-Einheit(en) 756 führt die Schedule-Stufe 712 aus; 5) die physikalische Registerdatei-Einheit(en) 758 und die Speichereinheit 770 führen die Register-Lese-/Speicherlesestufe 714 aus; das Ausführungscluster 760 führt die Ausführungsstufe 716 aus; 6) die Speichereinheit 770 und die physikalische Registerdateieinheit(en) 758 führen die Rückschreibe-/Speicherschreibstufe 718 aus; 7) verschiedene Einheiten können in die Ausnahmebehandlungsstufe 722 einbezogen sein; und 8) die Retirement-Einheit 754 und die physikalische Registerdateieinheit(en) 758 führen die Bindungsstufe 724 aus.
  • Der Kern 790 kann einen oder mehrere Befehlssätze unterstützen (zum Beispiel den x86-Befehlssatz (mit einigen Erweiterungen, die bei neueren Versionen hinzugefügt wurden); den MIPS-Befehlssatz von MIPS Technologies of Sunnyvale, CA; den ARM-Befehlssatz (mit optionalen zusätzlichen Erweiterungen, wie zum Beispiel NEON) von ARM Holdings of Sunnyvale, CA), einschließlich der hier beschriebenen Befehle. Bei einer Ausführungsform weist der Kern 790 eine Logik auf, um eine Erweiterung eines gepackten Datenbefehlssatzes (zum Beispiel AVX1, AVX2 und/oder eine Form des vorher beschriebenen allgemeinen vektorfreundlichen Befehlsformats (U = 0 und/oder U = 1) zu unterstützen, so dass die Operationen, die bei vielen Multimedia-Anwendungen verwendet werden, unter Verwendung gepackter Daten ausgeführt werden können.
  • Es versteht sich, dass der Kern Multithreading unterstützt (das Ausführen von zwei oder mehreren parallelen Reihen von Operationen oder Threads) und dies auf verschiedene Arten erfolgen kann, einschließlich Time-Slice-Multithreading, gleichzeitiges Multithreading (wobei ein einzelner physikalischer Kern einen logischen Kern für jeden der Threads mit gleichzeitigem Multithreading durch den physikalischen Kern bereitstellt) oder eine Kombination davon (zum Beispiel time-slice-Abrufen und -Dekodieren und danach gleichzeitiges Multithreading, wie zum Beispiel bei der Intel® Hyperthreading-Technologie).
  • Die Registerumbenennung wird zwar im Rahmen der Out-of-Order-Ausführung beschrieben, jedoch versteht es sich, dass die Registerumbenennung in einer In-Order-Architektur verwendet werden kann. Die veranschaulichte Ausführungsform des Prozessors weist zwar ebenfalls getrennte Befehls- und Daten-Cache-Einheiten 734/774 und eine gemeinsame L2-Cache-Einheit 776 auf, jedoch können alternative Ausführungsformen einen einzelnen internen Cache für beide Befehle und Daten aufweisen, wie zum Beispiel einen Level 1(L1)-internen Cache oder mehrere Level eines internen Cache. Bei einigen Ausführungsformen kann das System eine Kombination eines internen Cache und eines externen Cache aufweisen, der sich außerhalb des Kerns und/oder des Prozessors befindet. Alternativ kann der gesamte Cache sich außerhalb des Kerns und/oder des Prozessors befinden.
  • Spezielle beispielhafte In-Order-Kern-Architektur
  • Die 8A–B veranschaulichen ein Blockdiagramm einer spezifischeren beispielhaften In-Order-Kernarchitektur, deren Kern einer von mehreren Logikbausteinen (einschließlich anderer Kerne derselben Art und/oder unterschiedlicher Art) in einem Chip ist. Die Logikbausteine kommunizieren je nach Anwendung über ein Interconnect-Netzwerk mit hoher Bandbreite (zum Beispiel ein Ringnetzwerk) mit einer festen Funktionslogik, Speicher-I/O-Schnittstellen und anderer erforderlicher I/O-Logik.
  • 8A ist ein Blockdiagramm eines einzelnen Prozessorkerns, zusammen mit seiner Verbindung zu dem On-Die-Interconnect-Netzwerk 802 und mit lokalem Teilsatz des Levels 2(L2)-Cache 804, entsprechend Ausführungsformen der Erfindung. Bei einer Ausführungsform unterstützt ein Befehlsdekoder 800 den X86-Befehlssatz mit einer gepackten Datenbefehlssatz-Erweiterung. Ein L1-Cache 806 ermöglicht einen latenzarmen Zugriff auf den Cache-Speicher in die den skalaren und Vektor-Einheiten. Während bei einer Ausführungsform (um die Zeichnung zu vereinfachen) eine skalare Einheit 808 und eine Vektoreinheit 810 getrennte Registersätze (skalare Register 812 beziehungsweise Vektorregister 814) verwendet werden und die zwischen ihnen übertragenen Daten in den Speicher geschrieben und dann von einem Level 1(L1)-Cache 806 zurückgelesen werden, kann bei anderen Ausführungsformen der Erfindung ein anderer Ansatz verwendet werden (zum Beispiel die Verwendung eines einzelnen Registersatzes oder eines Kommunikationspfades, mit dem Daten zwischen den beiden Registerdateien übertragen werden können, ohne geschrieben und zurückgelesen zu werden).
  • Der lokale Teilsatz des L2-Cache 804 ist Teil eines globalen L2-Cache, der in getrennte lokale Teilsätze unterteilt ist, eine pro Prozessorkern. Jeder Prozessor hat einen direkten Zugriffspfad auf seinen eigenen lokalen Teilsatz des L2-Cache 804. Daten, die von einem Prozessorkern gelesen werden, werden in seinem L2-Cache-Teilsatz 804 gespeichert und auf sie kann parallel mit anderen CPUs schnell zugegriffen werden, die auf ihren eigenen lokalen L2-Cache-Teilsatz zugreifen. Daten, die von einem CPU-Kern geschrieben werden, werden in seinem eigenen L2-Cache-Teilsatz 1704 gespeichert und aus anderen Teilsätzen geflusht, wenn dies notwendig ist. Das Ring-Netzwerk stellt die Kohärenz von gemeinsam genutzten Daten sicher. Das Ring-Netzwerk ist bidirektional, um Agenten, wie z. B. CPU-Kerne, L2-Caches und andere Logikblöcke, in die Lage zu versetzen, miteinander innerhalb des Chips zu kommunizieren. Jeder Ringdatenpfad ist pro Richtung 1612 Bits breit.
  • 8B ist eine erweiterte Ansicht eines Teils des Prozessorkerns in 8A gemäß Ausführungsformen der Erfindung. 8B weist einen L1-Datacache 806A, Teil des L1-Cache 804 sowie weitere Einzelheiten zu der Vektoreinheit 810 und den Vektorregistern 814 auf. Insbesondere ist die Vektoreinheit 810 eine 16-breite Vektorverarbeitungseinheit (VPU) (siehe die 16-breite ALU 828), die einen oder mehrere von Ganzzahl-Float-Befehlen mit einfacher und mit doppelter Genauigkeit ausführt. Die VPU unterstützt das Swizzling der Registereingaben bei der Swizzle-Einheit 820, die numerische Umwandlung bei den numerischen Umwandeleinheiten 822A–B und die Replikation bei der Replikationseinheit 824 am Speichereingang.
  • Prozessor mit integriertem Speichercontroller und Grafik
  • 9 ist ein Blockdiagramm eines Prozessors 900, der mehr als einen Kern aufweisen kann, einen integrierten Speichercontroller aufweisen kann und integrierte Grafiken gemäß Ausführungsformen der Erfindung aufweisen kann. Die durchgehend umrandeten Boxen in 9 veranschaulichen einen Prozessor 900 mit einem Single-Core 902A, einen Systemagenten 910, eine Gruppe von einer oder mehreren Bus-Controller-Einheiten 916, während die optionale Hinzufügung der gestrichelt umrandeten Boxen einen alternativen Prozessor 900 mit Multiple-Cores 902A–N, eine Gruppe von einer oder mehreren integrierten Speicher-Controller-Einheiten 914 in der System-Agent-Einheit 910 und Speziallogik 908 veranschaulicht.
  • Daher können verschiedene Implementierungen des Prozessors 900 Folgendes umfassen: 1) eine CPU mit der Speziallogik 908, wobei Grafiken und/oder wissenschaftliche (Durchsatz-)Logik integriert sind (die einen oder mehrere Kerne aufweisen können) und die Kerne 902A–N ein oder mehrere universelle Kerne sind (z. B. universelle In-Order-Kerne, universelle Out-of-Order-Kerne, eine Kombination der beiden); 2) einen Koprozessor mit den Kernen 902A–N, die eine große Anzahl von Sonderkernen sind, die vor allem für Grafiken und/oder wissenschaftliche (Durchsatz-)Anwendungen bestimmt sind; und 3) ein Koprozessor mit den Kernen 902A–N, die eine große Anzahl von universellen In-Order-Kernen sind. Daher kann der Prozessor 900 ein universeller Prozessor, ein Koprozessor oder ein Spezialprozessor sein, wie zum Beispiel ein Netzwerk- oder Kommunikationsprozessor, ein Kompressionsmodul, ein Grafikprozessor, eine GPGPU (general purpose graphics processing unit), ein Hochleistungs-MIC(many integrated core)-Koprozessor (der 30 oder mehr Kerne aufweist), ein eingebetteter Prozessor oder ähnliches sein. Der Prozessor kann auf einem oder mehreren Chips implementiert werden. Der Prozessor 900 kann ein Teil von einem oder mehreren Trägern sein, die eine beliebige aus einer Anzahl von Prozesstechnologien verwenden, wie zum Beispiel BiCMOS, CMOS oder NMOS.
  • Die Speicherhierarchie weist ein oder mehrere Cache-Level innerhalb der Kerne, einen Satz oder eine oder mehrere gemeinsam genutzte Cache-Einheiten 906 und einen externen Speicher (nicht dargestellt) auf, der mit dem Satz der integrierten Speicher-Controller-Einheiten 914 gekoppelt ist. Der Satz der gemeinsam genutzten Cache-Einheiten 906 kann einen oder mehrere Caches auf mittleren Ebenen (Mid-Level-Caches), wie z. B. ein Cache auf Ebene 2 (Level 2, L2), auf Ebene 3 (Level 3, L3), auf Ebene 4 (Level 4, L4) oder auf anderen Ebenen, einen Cache auf letzter Ebene (Last Level Cache, LLC) und/oder Kombinationen davon aufweisen. Während bei einer Ausführungsform eine ringbasierte Interconnect-Einheit 912 die integrierte Grafiklogik 908, den Satz von gemeinsam genutzten Cache-Einheiten 906 und die Systemagenteneinheit 910/integrierte Speicher-Controller-Einheit(en) 914 zusammenschaltet, können alternative Ausführungsformen eine beliebige Anzahl von wohlbekannten Techniken zur Zusammenschaltung solcher Einheiten verwenden. Bei einer Ausführungsform wird die Kohärenz zwischen einer oder mehreren Cache-Einheiten 906 und den Kernen 902A–N gewahrt.
  • Bei einigen Ausführungsformen weisen ein oder mehrere Kerne 902A–N die Fähigkeit des Multi-Threading auf. Der Systemagent 910 weist die Bauteile auf, die die Kerne 902A–N koordinieren und betreiben. Die Systemagent-Einheit 910 kann zum Beispiel eine Energiesteuereinheit (power control unit (PCU) und ein Anzeigegerät aufweisen. Die PCU kann eine Logik und Bauteile sein oder aufweisen, die zum Einstellen des Leistungszustandes der Kerne 902A–N und der integrierten Grafiklogik 908 benötigt werden. Das Anzeigegerät dient zum Steuern einer oder mehrerer extern verbundener Anzeigen.
  • Die Kerne 902A–N können homogen oder heterogen in Bezug auf den Architekturbefehlssatz sein; das heißt, zwei oder mehrere der Kerne 902A–N können den gleichen Befehlssatz ausführen, während andere nur einen Untersatz des Befehlssatzes oder einen anderen Befehlssatz ausführen können.
  • Beispielhafte Computerarchitekturen
  • Die 1013 sind Blockdiagramme von beispielhaften Computer-Architekturen. Andere bekannte System-Designs und Konfigurationen für Laptops, Desktops, Handheld PCs, Personal Digital Assistants, Engineering-Workstations, Server, Netzwerkgeräte, Netzwerk Hubs, Switches, Embedded-Prozessoren, digitalen Signalprozessoren (DSPs), Grafikvorrichtungen, Video-Spiel-Vorrichtungen, Set-Top-Boxen, Mikro-Controller, Mobiltelefone, tragbaren Media-Player, Handheld-Geräte und verschiedene andere elektronische Geräte sind ebenfalls geeignet. Im Allgemeinen gibt es eine große Vielfalt von Systemen oder elektronischen Vorrichtungen, die im Allgemeinen geeignet sind, einen Prozessor und/oder eine Ausführungseinheit, wie hierin offenbart, einzubeziehen.
  • In 10 ist ein Blockdiagramm eines Systems 1000 gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Das System 1000 kann einen oder mehrere Prozessoren 1010, 1015 aufweisen, die mit einem Controller-Hub 1020 gekoppelt sind. Bei einer Ausführungsform weist der Controller-Hub 1020 einen Grafik-Speicher-Controller-Hub (GMCH) 1090 und einen Input/Output-Hub (IOH) 1050 auf (die sich auf getrennten Chips befinden können); der GMCH 1090 weist Speicher- und Grafik-Controller auf, mit denen der Speicher 1040 und ein Koprozessor 1045 gekoppelt sind; der IOH 1050 koppelt die Input/Output(I/O)-Geräte 1060 mit dem GMCH 1090. Alternativ werden ein oder beide Speicher- und Grafik-Controller innerhalb des Prozessors integriert (wie hier beschrieben), der Speicher 1040 und der Koprozessor 1045 werden direkt mit dem Prozessor 1010 gekoppelt und der Controller-Hub 1020 in einem einzelnen Chip mit dem IOH 1050.
  • Die optionale Art von zusätzlichen Prozessoren 1015 ist in 10 durch gestrichelte Linien dargestellt. Jeder Prozessor 1010, 1015 kann einen oder mehrere Prozessorkerne aufweisen, die hier beschrieben werden, und kann eine Version des Prozessors 900 sein.
  • Der Speicher 1040 kann beispielsweise ein dynamischer Speicher mit wahlfreiem Zugriff (DRAM), ein Phasenwechselspeicher (phase change memory – PCM) oder eine Kombination der beiden sein. Bei mindestens einer Ausführungsform kommuniziert der Controller-Hub 1020 mit dem/den Prozessor(en) 1010, 1015 über einen Multi-Drop-Bus, wie zum Beispiel einen Frontside-Bus (FSB), eine Punkt-zu-Punkt-Schnittstelle wie zum Beispiel ein QuickPath Interconnect (QPI) oder eine ähnliche Verbindung 1095.
  • Bei einer Ausführungsform ist der Koprozessor 1045 ein Spezialprozessor, wie beispielsweise ein Hochleistungs-MIC-Prozessor, ein Netzwerk- oder Kommunikationsprozessor, ein Kompressionsmodul, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder ähnliches. Bei einer Ausführungsform kann der Controller-Hub 1020 einen integrierten Grafikbeschleuniger aufweisen.
  • Es kann eine Vielzahl von Unterschieden zwischen den physischen Ressourcen 1010, 1015 im Hinblick auf ein Metrikspektrum, einschließlich Architektur-, Mikroarchitektur, thermischen, Stromverbrauchs-Eigenschaften und dergleichen geben.
  • Bei einer Ausführungsform führt der Prozessor 1010 Befehle aus, die die Datenverarbeitungsoperationen allgemeiner Art steuern. Koprozessorbefehle können in die Befehle eingebettet sein. Der Prozessor 1010 erkennt diese Koprozessor-Befehle als von der Art, die von dem angeschlossenen Koprozessor 1045 auszuführen sind. Folglich gibt der Prozessor 1010 diese Koprozessor-Befehle (oder Steuerungssignale, die Koprozessorbefehle darstellen) auf einem Koprozessor-Bus oder eine andere Zwischenverbindung an den Koprozessor 1045 aus. Der/Die Koprozessor(en) 1045 akzeptieren und führen die empfangenen Koprozessor-Befehle aus.
  • In 11 wird ein Blockdiagramm eines ersten, spezifischeren beispielhaften Systems 100 gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Wie in 11 gezeigt, ist das Multiprozessor-System 1100 ein Punkt-zu-Punkt-Zwischenverbindungssystem und weist einen ersten Prozessor 1170 und einen zweiten Prozessor 1180 auf, die über eine Punkt-zu-Punkt-Zwischenverbindung kann eine Version des Prozessors 900 sein. Bei einer Ausführungsform der Erfindung sind die Prozessoren 1170 und 1180 die Prozessoren 1010 beziehungsweise 1015, während der Koprozessor 1138 der Koprozessor 1045 ist. Bei einer anderen Ausführungsform sind die Prozessoren 1170 und 1180 der Prozessor 101 beziehungsweise der Koprozessor 1045.
  • Die Prozessoren 1170 und 1180 werden einschließlich der integrierten Speicher-Controller-(IMC)-Einheiten 1172 beziehungsweise 1182 gezeigt. Der Prozessor 1170 weist ebenfalls als Teil seiner Bus-Controller-Einheiten die Punkt-zu-Punkt(P-P)-Schnittstellen 1176 und 1178 auf; ebenso weist der zweite Prozessor 1180 die P-P-Schnittstellen 1186 und 1188 auf. Die Prozessoren 1170, 1180 können unter Verwendung der P-P-Interface-Schaltungen 1178, 1188 Informationen über eine Punkt-zu-Punkt(P-P)-Schnittstelle 1150 austauschen. Wie in 11 gezeigt, koppelt die IMC 1172 und 1182 die Prozessoren mit den jeweiligen Speichern, nämlich einem Speicher 1132 und einem Speicher 1134, die Abschnitte des Hauptspeichers sein können, der lokal mit den jeweiligen Prozessoren verbunden ist.
  • Die Prozessoren 1170, 1180 können jeweils Informationen mit einem Chipsatz 1190 über einzelne P-P-Schnittstellen 1152, 1154 austauschen unter Verwendung der Punkt-zu-Punkt-Schnittstellenschaltungen 1176, 1194, 1186, 1198. Der Chipsatz 1190 kann optional über eine Hochleistungsschnittstelle 1139 Informationen mit dem Koprozessor 1138 austauschen. Bei einer Ausführungsform ist der Koprozessor 1138 ein Spezialprozessor, wie beispielsweise ein Hochleistungs-MIC-Prozessor, ein Netzwerk- oder Kommunikationsprozessor, ein Kompressionsmodul, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder ähnliches.
  • Ein gemeinsam genutzter Cache (nicht dargestellt) kann in einem der Prozessoren oder außerhalb der beiden Prozessoren enthalten sein, auch wenn er mit den Prozessoren über eine P-P-Zwischenschaltung verbunden ist, so dass die lokalen Cache-Informationen entweder eines oder beider Prozessoren in dem gemeinsam genutzten Cache gespeichert werden können, wenn ein Prozessor in einen Niedrigleistungsmodus versetzt wird.
  • Der Chipsatz 1190 kann mit einem ersten Bus 1116 über eine Schnittstelle 1196 gekoppelt werden. Bei einer Ausführungsform kann der erste Bus 1116 ein Peripheral Component Interconnect(PCI)-Bus oder ein Bus wie zum Beispiel ein PCI-Express-Bus oder ein anderer I/O-Verbindungsbus der dritten Generation sein, obwohl der Umfang der Erfindung nicht so beschränkt ist.
  • Wie in 11 gezeigt, können verschiedene I/O-Geräte zusammen mit einer Busbrücke 1118, die den ersten Bus 1116 mit einem zweiten Bus 1120 koppelt, mit dem ersten Bus 1116 gekoppelt sein. Bei einer Ausführungsform werden ein oder mehrere zusätzliche Prozessor(en) 1115, wie zum Beispiel Koprozessoren, Hochleistungs-MIC-Prozessoren, GPGPUs, Beschleuniger (wie zum Beispiel Grafikbeschleuniger oder digitale Signalverarbeitungs-(DSP)-Geräte), feldprogrammierbare Gatterarrays oder andere Prozessoren mit dem ersten Bus 1116 gekoppelt. Bei einer Ausführungsform kann der zweite Bus 1120 ein Bus mit geringer Leitungsanzahl (low pin count – LPC) sein. Verschiedene Vorrichtungen können mit einem zweiten Bus 1120 gekoppelt werden, wie zum Beispiel eine Tastatur und/oder eine Maus 1122, Kommunikationsvorrichtungen 1127 und eine Speichervorrichtung 1128, wie zum Beispiel ein Laufwerk oder eine anderen Massenspeichervorrichtung, die bei einer Ausführungsform Befehle/Code und Daten 1130 aufweisen können. Außerdem kann ein Audio-I/O 1124 mit dem zweiten Bus 1120 gekoppelt werden. Es ist anzumerken, dass andere Architekturen möglich sind. Statt der Punkt-zu-Punkt-Architektur aus 11, zum Beispiel, kann ein System einen Multi-Drop-Bus oder eine andere derartige Architektur implementieren.
  • In 12 wird ein Blockdiagramm eines zweiten, spezifischeren beispielhaften Systems 1200 gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Gleiche Elemente in den 11 und 12 tragen gleiche Bezugszeichen, und bestimmte Aspekte aus 11 wurden aus 12 ausgelassen, um das Verschleiern anderer Aspekte aus 12 zu vermeiden.
  • 12 veranschaulicht, dass die Prozessoren 1170, 1180 eine integrierte Speicher- und I/O-Steuerlogik (control logic – CL) 1172 beziehungsweise 1182 aufweisen. Daher weisen die CL 1172, 1182 integrierte Speichersteuerungsgeräte auf und weisen eine I/O-Steuerlogik auf. 12 veranschaulicht, dass nicht nur die Speicher 1132, 1134 mit den CL 1172, 1182 gekoppelt werden, sondern auch, dass I/O-Geräte auch mit der Steuerlogik 1172, 1182 gekoppelt werden. Legacy I/O-Geräte 1215 werden mit dem Chipsatz 1190 gekoppelt.
  • In 13 ist ein Blockdiagramm eines SoC 1300 gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Ähnliche Elemente in 9 tragen gleiche Bezugszeichen. Ebenso sind Boxen mit gestrichelten Linien optionale Merkmale in weiter fortgeschrittenen SoCs. In 13 ist eine/sind Zusammenschaltungseinheit(en) 1302 gekoppelt an: einen Anwendungsprozessor 1310, der einen Satz von einem oder mehreren Kernen 202A–N und (eine) gemeinsame genutzte Cache-Einheit(en) 906 aufweist; eine Systemagent-Einheit 910; (eine) Bus-Controller-Einheit (23) 916; (eine) integrierte Speicher-Controller-Einheit(en) 914; einen Satz oder einen oder mehrere Koprozessoren, 1320, die integrierte Grafiklogik, einen Bildprozessor, einen Audioprozessor und einen Videoprozessor aufweisen können; eine Einheit 1330 mit statischen Direktzugriffsspeicher (Static Random Access Memory, SRAM); eine Direktspeicherzugriff(DMA)-Einheit 1332; und eine Anzeigeeinheit 1340 zum Koppeln an eine oder mehrere externe Anzeigen. Bei einer Ausführungsform weisen der/die Koprozessor(en) 1320 einen Spezialprozessor auf, wie beispielsweise einen Netzwerk- oder Kommunikationsprozessor, ein Kompressionsmodul, eine GPGPU, einen Hochleistungs-MIC-Prozessor, einen eingebetteten Prozessor oder ähnliches.
  • Ausführungsformen der hier offenbarten Mechanismen können in Hardware, Software, Firmware oder als eine Kombination solcher Implementierungsansätze implementiert sein. Ausführungsformen der Erfindung können als Computerprogramme oder Programmcodes implementiert sein, die auf programmierbaren Systemen ausführen, umfassend mindestens einen Prozessor, ein Speichersystem (das flüchtigen und nicht flüchtigen Speicher und/oder Speicherelemente aufweist), mindestens eine Eingabevorrichtung und mindestens eine Ausgabevorrichtung.
  • Der Programmcode, wie zum Beispiel der in 11 veranschaulichte Code 1130, kann auf Eingabedaten angewendet werden, um die hier beschriebenen Funktionen durchzuführen und Ausgabeinformationen zu generieren. Die Ausgabeinformationen können auf eine oder mehrere Ausgabevorrichtungen in einer bekannten Art und Weise angewendet werden. Für die Zwecke dieser Anmeldung weist ein Verarbeitungssystem ein beliebiges System auf, 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 prozeduralen oder objektorientierten Programmiersprache implementiert sein, um mit einem Verarbeitungssystem zu kommunizieren. Der Programmcode kann ebenfalls in Assembler oder in einer Maschinensprache implementiert sein, wenn dies gewünscht ist. In der Tat sind die hier beschriebenen Mechanismen nicht im Umfang auf irgendeine bestimmte Programmiersprache beschränkt. Auf jeden Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein.
  • Ein Aspekt oder mehrere Aspekte von mindestens einer Ausführungsform können durch repräsentative Befehle implementiert sein, die auf einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logik innerhalb des Prozessors darstellt, die, wenn sie von einer Maschine gelesen werden, die Maschine dazu veranlassen, Logik herzustellen, um die hier beschriebenen Techniken durchzuführen. Solche Darstellungen, die als „IP cores” bekannt sind, können auf greifbaren, maschinenlesbaren Medien gespeichert sein und an verschiedene Kunden oder Herstellungseinrichtungen geliefert werden, um in Herstellungsmaschinen geladen zu werden, die die Logik oder den Prozessor tatsächlich machen.
  • Derartige maschinenlesbaren Speichermedien können ohne eine Beschränkung nicht flüchtige, greifbare Anordnungen von Artikeln aufweisen, die von einer Maschine oder Vorrichtung hergestellt oder geformt sind, einschließlich Speichermedien wie z. B. Festplatten, ein beliebiger anderer Typ von Platte, einschließlich Disketten, optische Platten, Compact Disk Read-only Memories (CD-ROMS), wiederbeschreibbare Compact Disks (CD-RWs), und magneto-optische Platten, Halbleitervorrichtungen, wie zum Beispiel Festwertspeicher (Read-only Memories, ROMS), Direktzugriffsspeicher (Random Access Memories, RAMs), wie zum Beispiel dynamische Direktzugriffsspeicher (DRAMs), statische Direktzugriffsspeicher (SRAMs), löschbare programmierbare Festwertspeicher (EPROMs), Flash-Speicher, elektrisch löschbare programmierbare Festwertspeicher (EEPROMs), Phasenwechselspeicher (PCM), magnetische oder optische Karten oder ein beliebiger anderer Typ von Medien, die zum Speichern von elektronischen Befehlen geeignet sind.
  • Entsprechend weisen Ausführungsformen der Erfindung ebenfalls nicht-vergängliche, greifbare maschinenlesbare Medien auf, die Befehle enthalten oder Design-Daten enthalten, wie z. B. Hardware Description Language (HDL), die die hier beschriebenen Strukturen, Schaltungen, Vorrichtungen, Prozessoren und/oder Systemmerkmale definieren. Auf solche Ausführungsformen kann ebenfalls als Programmprodukte Bezug genommen werden.
  • Emulation (einschließlich binärer Übersetzung, Code-Morphing, usw.)
  • In einigen Fällen kann ein Befehlsumwandler verwendet werden, um einen Befehl aus einem Quellbefehlssatz in einen Zielbefehlssatz zu konvertieren. Beispielsweise kann der Befehlsumwandler übersetzen (z. B. unter Verwendung einer statischen binären Übersetzung, dynamischer binärer Übersetzung, einschließlich dynamischer Kompilierung), morphen, emulieren oder anderweitig einen Befehl in einen oder mehrere andere Befehle konvertieren, die von dem Kern verarbeitet werden sollen. Der Befehlsumwandler kann in Software, Hardware, Firmware oder als eine Kombination davon implementiert sein. Der Befehlsumwandler kann auf dem Prozessor, außerhalb des Prozessors oder teils auf und teils außerhalb des Prozessors sein.
  • 14 ist ein Blockdiagramm, das die Verwendung eines Software-Befehlsumwandlers zum Umwandeln binärer Befehle in einem Quellbefehlssatz in binäre Befehle in einem Zielbefehlssatz gemäß Ausführungsformen der Erfindung gegenüberstellt. In der dargestellten Ausführungsform ist der Befehlsumwandler ein Softwarebefehlsumwandler, obwohl alternativ der Befehlsumwandler in Software, Firmware, Hardware oder als verschiedene Kombinationen davon implementiert sein kann. 14 zeigt ein Programm in einer Hochsprache 1402, das unter Verwendung eines x86-Compilers 1404 kompiliert werden kann, um einen x86-Binärcode 1406 zu generieren, der von einem Prozessor mit mindestens einem x86-Befehlssatzkern 1416 nativ ausgeführt werden kann. Der Prozessor mit mindestens einem x86-Befehlssatzkern 1416 stellt einen beliebigen Prozessor dar, der im Wesentlichen dieselben Funktionen wie ein Intel-Prozessor mit mindestens einem x86-Befehlssatzkern durchführen kann, durch kompatibles Ausführen oder anderweitiges Verarbeiten (1) eines wesentlichen Abschnitts des Befehlssatzes des Intel x86-Befehlssatzkerns oder (2) von Objektcodeversionen von Anwendungen oder anderer Software, die zum Laufen auf einem Intel-Prozessor mit mindestens einem x86-Befehlssatzkern gerichtet ist, um im Wesentlichen dasselbe Ergebnis wie ein Intel-Prozessor mit mindestens einem x86-Befehlssatzkern zu erreichen. Der x86-Compiler 1404 repräsentiert einen Compiler, der betrieben werden kann, um x86-Binärcode 1406 (z. B. Objektcode) zu generieren, der mit oder ohne zusätzliche Verlinkungsverarbeitung auf dem Prozessor mit mindestens einem x86-Befehlssatzkern 1416 ausgeführt werden kann. In einer ähnlichen Art und Weise zeigt 14, dass das Programm in der Hochsprache 1402 unter Verwendung eines alternativen Befehlssatzcompilers 1408 kompiliert werden kann, um einen Binärcode 1410 für einen alternativen Befehlssatz zu generieren, der von einem Prozessor ohne mindestens einem x86-Befehlssatzkern 1414 nativ ausgeführt werden kann (z. B. ein Prozessor mit Kernen, die den MIPS-Befehlssatz von MIPS Technologies aus Sunnyvale, CA ausführen und/oder die den ARM-Befehlssatz von ARM Holdings aus Sunnyvale, CA ausführen). Der Befehlsumwandler 1412 wird verwendet, um den x86-Binärcode 1406 in Code zu konvertieren, der von dem Prozessor ohne einen x86-Befehlssatzkern 1414 nativ ausgeführt werden kann. Es ist unwahrscheinlich, dass dieser konvertierte Code derselbe ist wie der Binärcode 1410 für den alternativen Befehlssatz, da ein Befehlsumwandler, der dazu in der Lage wäre, schwierig zu machen ist; jedoch wird der konvertierte Code die allgemeine Operation erreichen und aus Befehlen aus dem alternativen Befehlssatz gemacht sein. Somit repräsentiert der Befehlsumwandler 1412 Software, Firmware, Hardware oder eine Kombination davon, die durch Emulierung, Simulation oder einen beliebigen anderen Prozess, einem Prozessor oder einer anderen elektronischen Vorrichtung, die keinen x86-Befehlssatz-Prozessor oder Kern hat, erlaubt, den x86-Binärcode 1406 auszuführen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 5446912 [0018]
    • US 5207132 [0018]

Claims (20)

  1. Vorrichtung umfassend: Dekodierlogik zum Dekodieren eines Vector Packed Zero High Bits Starting with a Specified Bit Position(VPBZHI)-Befehls, wobei der VPBZHI-Befehl einen ersten und einen zweiten Quelloperanden und einen Zieloperanden aufweist; Ausführungslogik zum Ausführen des dekodierten VPBZHI-Befehls, um zu bewirken, dass für jede Datenelementposition des ersten Quelloperanden eine Startbitposition für die Nullsetzung von Werten der zweiten Quelle festgelegt wird, beginnend bei dem Datenelement an dieser Startposition, für jede entsprechende Datenelementposition des zweiten Quelloperanden Bits auf null gesetzt werden, die sich in Bitpositionen befinden, die höherwertiger oder gleich der Startbitposition einer entsprechenden Datenelementposition des ersten Quelloperanden sind, in dem Zieloperanden Werte der zweiten Quelle nach einer Nullsetzung an entsprechenden Datenelement-Positionen gespeichert werden.
  2. Vorrichtung nach Anspruch 1, wobei die Quell- und Zieloperanden gepackte Datenregister sind.
  3. Vorrichtung nach Anspruch 2, wobei die gepackten Datenregister der Größe 128 Bit, 256 Bit oder 512 Bit sind.
  4. Vorrichtung nach einem der vorhergehenden Ansprüche, wobei der Befehl ferner einen Schreibmasken-Operanden aufweist.
  5. Vorrichtung nach Anspruch 4, wobei die Speicherung im Zielregister den Werten des Schreibmasken-Operanden unterliegt.
  6. Vorrichtung nach Anspruch 4 oder 5, wobei die Zahl der aktiven Bits in dem Schreibmasken-Operanden gleich einer Zahl von Datenelementen in den Quelloperanden ist.
  7. Vorrichtung nach einem der vorhergehenden Ansprüche, wobei der erste Quell- und der Zieloperand gepackte Datenregister sind und der zweite Quelloperand ein Speicherplatz ist.
  8. Verfahren zum Durchführen eines Vector Packed Zero High Bits Starting with a Specified Bit Position(VPBZHI)-Befehls in einem Computerprozessor, wobei der VPBZHI-Befehl einen ersten und einen zweiten Quelloperanden und einen Zieloperanden aufweist, wobei das Verfahren Folgendes umfasst: für jede Datenelementposition des ersten Quelloperanden das Festlegen einer Startbitposition für die Nullsetzung von Werten der zweiten Quelle, beginnend bei einem Datenelement an dieser Startposition, für jede entsprechende Datenelementposition des zweiten Quelloperanden die Nullsetzung von Bits, die sich in Bitpositionen befinden, die höherwertiger oder gleich der Startbitposition einer entsprechenden Datenelementposition des ersten Quelloperanden sind, das Speichern von Werten der zweiten Quelle nach einer Nullsetzung an entsprechenden Datenelement-Positionen in den Zieloperanden.
  9. Verfahren nach Anspruch 8, wobei die Quell- und Zieloperanden gepackte Datenregister sind.
  10. Verfahren nach Anspruch 9, wobei die gepackten Datenregister der Größe 128 Bit, 256 Bit oder 512 Bit sind.
  11. Verfahren nach einem der Ansprüche 8–10, wobei der Befehl ferner einen Schreibmasken-Operanden aufweist.
  12. Verfahren nach Anspruch 11, wobei die Speicherung im Zielregister den Werten des Schreibmasken-Operanden unterliegt.
  13. Verfahren nach Anspruch 11 oder 12, wobei die Zahl der aktiven Bits in dem Schreibmasken-Operanden gleich einer Zahl von Datenelementen in den Quelloperanden ist.
  14. Verfahren nach einem der Ansprüche 8 bis 13, wobei der erste Quell- und der Zieloperand gepackte Datenregister sind und der zweite Quelloperand ein Speicherplatz ist.
  15. Greifbares maschinenlesbares Medium, das einen Code aufweist, der, wenn er von einem Prozessor ausgeführt wird, bewirkt, dass der Prozessor einen Vector Packed Zero High Bits Starting with a Specified Bit Position(VPBZHI)-Befehl durchführt, wobei der VPBZHI-Befehl einen ersten und einen zweiten Quelloperanden und einen Zieloperanden aufweist, wobei das Verfahren Folgendes umfasst: für jede Datenelementposition des ersten Quelloperanden das Festlegen einer Startbitposition für die Nullsetzung von Werten der zweiten Quelle, beginnend bei einem Datenelement an dieser Startposition, für jede entsprechende Datenelementposition des zweiten Quelloperanden die Nullsetzung von Bits, die sich in Bitpositionen befinden, die höherwertiger oder gleich der Startbitposition einer entsprechenden Datenelementposition des ersten Quelloperanden sind, das Speichern von Werten der zweiten Quelle nach einer Nullsetzung an entsprechenden Datenelement-Positionen in den Zieloperanden.
  16. Maschinenlesbares Medium nach Anspruch 15, wobei die Quell- und Zieloperanden gepackte Datenregister sind.
  17. Maschinenlesbares Medium nach Anspruch 16, wobei die gepackten Datenregister der Größe 128 Bit, 256 Bit oder 512 Bit sind.
  18. Maschinenlesbares Medium nach einem der Ansprüche 15 bis 17, wobei der Befehl ferner einen Schreibmasken-Operanden aufweist.
  19. Maschinenlesbares Medium nach Anspruch 18, wobei die Speicherung im Zielregister den Werten des Schreibmasken-Operanden unterliegt.
  20. Maschinenlesbares Medium nach einem der Ansprüche 15 bis 19, wobei der erste Quell- und der Zieloperand gepackte Datenregister sind und der zweite Quelloperand ein Speicherplatz ist.
DE102014003697.9A 2013-03-15 2014-03-13 Systeme, Vorrichtungen und Verfahren zur Nullsetzung von Bits in einem Datenelement Pending DE102014003697A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/840,669 US9207942B2 (en) 2013-03-15 2013-03-15 Systems, apparatuses,and methods for zeroing of bits in a data element
US13/840,669 2013-03-15

Publications (1)

Publication Number Publication Date
DE102014003697A1 true DE102014003697A1 (de) 2014-09-18

Family

ID=50634779

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102014003697.9A Pending DE102014003697A1 (de) 2013-03-15 2014-03-13 Systeme, Vorrichtungen und Verfahren zur Nullsetzung von Bits in einem Datenelement

Country Status (7)

Country Link
US (2) US9207942B2 (de)
JP (1) JP5753603B2 (de)
KR (1) KR101635856B1 (de)
CN (1) CN104133660A (de)
DE (1) DE102014003697A1 (de)
GB (1) GB2514885B (de)
IN (1) IN2014CH00953A (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230027561A (ko) * 2021-08-19 2023-02-28 삼성전자주식회사 전자 장치 및 전자 장치의 메모리 제로화 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5207132A (en) 1991-10-16 1993-05-04 Textron Inc. Elliptical lobed drive system
US5446912A (en) 1993-09-30 1995-08-29 Intel Corporation Partial width stalls within register alias table

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR1587656A (de) * 1968-08-01 1970-03-27
US4785393A (en) * 1984-07-09 1988-11-15 Advanced Micro Devices, Inc. 32-Bit extended function arithmetic-logic unit on a single chip
JPS61103241A (ja) * 1984-10-27 1986-05-21 Nec Corp 情報処理装置
JPH02299082A (ja) * 1989-05-12 1990-12-11 Fujitsu Ltd 可変長データを処理するプロセッサ
US5201056A (en) * 1990-05-02 1993-04-06 Motorola, Inc. RISC microprocessor architecture with multi-bit tag extended instructions for selectively attaching tag from either instruction or input data to arithmetic operation output
US5268858A (en) * 1991-08-30 1993-12-07 Cyrix Corporation Method and apparatus for negating an operand
US6128725A (en) * 1997-01-24 2000-10-03 Texas Instruments Incorporated Microprocessor with an instruction for setting or clearing a bit field
US20040054877A1 (en) * 2001-10-29 2004-03-18 Macy William W. Method and apparatus for shuffling data
JP3857614B2 (ja) * 2002-06-03 2006-12-13 松下電器産業株式会社 プロセッサ
JP2006127460A (ja) * 2004-06-09 2006-05-18 Renesas Technology Corp 半導体装置、半導体信号処理装置、およびクロスバースイッチ
US8417921B2 (en) * 2008-08-15 2013-04-09 Apple Inc. Running-min and running-max instructions for processing vectors using a base value from a key element of an input vector
US9003170B2 (en) * 2009-12-22 2015-04-07 Intel Corporation Bit range isolation instructions, methods, and apparatus
US20120078597A1 (en) * 2010-09-27 2012-03-29 Infosys Technologies Limited Mobile device with a modeling platform
US20120185670A1 (en) * 2011-01-14 2012-07-19 Toll Bret L Scalar integer instructions capable of execution with three registers
KR101595637B1 (ko) * 2011-04-01 2016-02-18 인텔 코포레이션 벡터 친숙형 명령어 형식 및 그의 실행
US20120254593A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for jumps using a mask register
US9411592B2 (en) * 2012-12-29 2016-08-09 Intel Corporation Vector address conflict resolution with vector population count functionality

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5207132A (en) 1991-10-16 1993-05-04 Textron Inc. Elliptical lobed drive system
US5446912A (en) 1993-09-30 1995-08-29 Intel Corporation Partial width stalls within register alias table

Also Published As

Publication number Publication date
JP5753603B2 (ja) 2015-07-22
US20140281400A1 (en) 2014-09-18
KR101635856B1 (ko) 2016-07-05
GB2514885B (en) 2015-10-28
IN2014CH00953A (de) 2015-05-08
GB201404575D0 (en) 2014-04-30
US20160092226A1 (en) 2016-03-31
CN104133660A (zh) 2014-11-05
JP2014182800A (ja) 2014-09-29
US9207942B2 (en) 2015-12-08
GB2514885A (en) 2014-12-10
KR20140113579A (ko) 2014-09-24

Similar Documents

Publication Publication Date Title
DE102018005977A1 (de) Gleitkomma- zu festkomma-umwandlung
DE102018006757A1 (de) Festkomma-zu-gleitkomma-umwandlung
DE102014003706A1 (de) BEREICHSBEGRENZTE VEKTORSPEICHERZUGRIFFSINSTRUKTIONEN, PROZESSOREN, VERFAHREN und SYSTEME
DE102016006400A1 (de) Hardware-prozessoren und verfahren für eng-gekoppelte heterogene datenverarbeitung
DE112011105818T5 (de) Systeme, Vorrichtungen und Verfahren zum Expandieren einer Speicherquelle in ein Zielregister und komprimieren eines Quellenregisters in eine Zielspeicherstelle
DE112011105122T5 (de) Systeme, Vorrichtungen und Verfahren zum Vermischen zweier Quelloperanden in einem einzigen Ziel unter Verwendung einer Schreibmaske
DE102018124945A1 (de) Einrichtung und verfahren für komplexe multiplikation
DE112013003743T5 (de) Beschleunigte spurübergreifende Vektorreduzierungsbefehle
DE112012007058T5 (de) Vektormaskengesteuertes Clock-Gating für Leistungseffizenz eines Prozessors
DE102018125817A1 (de) Systeme und Verfahren zum Laden eines Kachelregisterpaars
DE102014003661A1 (de) Prozessoren, Verfahren, Systeme und Befehle zur Konsolidierung unmaskierter Elemente von Operationsmasken
DE102014004564A1 (de) Prozessoren, verfahren und systeme zum implementieren von teilregisterzugriffen mit maskierten gesamtregisterzugriffen
DE102018132521A1 (de) Vorrichtung und verfahren zur verflachung und reduktion von schleifen in einer single instruction, multiple data- (simd-) pipeline
DE112013003741T5 (de) Systeme, Vorrichtungen und Verfahren zum Durchführen einer Konfliktdetektion unf einer Übertragung von Inhalten eines Registers an Datenelementpositionen eines anderen Registers
DE102018125805A1 (de) Systeme, verfahren, und vorrichtungen für skalarproduktoperationen
DE112016004351T5 (de) Prozessoren, Verfahren, System und Befehle zum Datenelement-Vergleich
DE102015002253A1 (de) Verfahren und Vorrichtung zum Ausführen mehrerer Multiplikationsoperationen
DE112013003735B4 (de) Systeme, Vorrichtungen und Verfahren zum Ausführen von Rotation und XOR als Reaktion auf eine einzige Anweisung
DE112017003347T5 (de) Systeme, Vorrichtungen und Verfahren für Strided-Ladevorgänge
DE102018129298A1 (de) Vorrichtung und Verfahren zum Vektormultiplizieren und Akkumulieren von vorzeichenbehafteten Doppelwörtern
DE102018129263A1 (de) Vorrichtung und verfahren zum multiplizieren, summieren und akkumulieren von sätzen von gepackten bytes
DE102014003659A1 (de) Systeme, vorrichtungen und verfahren zum bestimmen eines folgenden niedrigstwertigen maskierungsbits eines schreibmaskenregisters
DE102018125971A1 (de) Systeme und verfahren zum berechnen von skalaprodukten von halbbytes in operanden aus zwei kacheln
DE102018005976A1 (de) Systeme, vorrichtungen und verfahren zur multiplikation und akkumulation von vektorgepackten vorzeichenbehafteten werten
DE102018131484A1 (de) Einrichtung und verfahren zum vektormultiplizieren und zur subtraktion von vorzeichenbehafteten doppelwörtern

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication