DE102008061062A1 - Befehle und Logik zum Durchführen von Maskenlade- und -speicheroperationen - Google Patents

Befehle und Logik zum Durchführen von Maskenlade- und -speicheroperationen Download PDF

Info

Publication number
DE102008061062A1
DE102008061062A1 DE102008061062A DE102008061062A DE102008061062A1 DE 102008061062 A1 DE102008061062 A1 DE 102008061062A1 DE 102008061062 A DE102008061062 A DE 102008061062A DE 102008061062 A DE102008061062 A DE 102008061062A DE 102008061062 A1 DE102008061062 A1 DE 102008061062A1
Authority
DE
Germany
Prior art keywords
mask
memory
vector
destination
command
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.)
Ceased
Application number
DE102008061062A
Other languages
English (en)
Inventor
Doron Orenstien
Zeev Sperber
Robert Valentine
Benny Eitan
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 DE102008061062A1 publication Critical patent/DE102008061062A1/de
Ceased legal-status Critical Current

Links

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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8061Details on data memory access
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Abstract

Bei einer Ausführungsform wird eine Logik zum Empfangen und Ausführen eines Maskenverschiebungsbefehls bereitgestellt, um ein Vektordatenelement mit mehreren gepackten Datenelementen von einem Quellen-Speicherplatz an einen Ziel-Speicherplatz entsprechend Maskeninformationen für den Befehl zu übertragen. Es werden weitere Ausführungsformen beschrieben und beansprucht.

Description

  • Mit dem Fortschritt der Prozessortechnologie wird jetzt auch ein neuerer Software-Code erzeugt, der auf Maschinen mit diesen Prozessoren laufen soll. Nutzer erwarten und fordern im Allgemeinen eine höhere Leistung von ihren Computer unabhängig von der Art der verwendeten Software. Probleme können sich aus der Art von Befehlen und Operationen ergeben, die gerade in dem Prozessor ausgeführt werden. Bestimmte Arten von Operationen erfordern aufgrund der Komplexität der Operationen und/oder des Typs der benötigten Schaltung mehr Zeit für die Ausführung. Dies bietet eine Möglichkeit zur Optimierung der Art und Weise, in der bestimmte komplexe Operationen in dem Prozessor ausgeführt werden.
  • Medien-Anwendungen treiben die Mikroprozessor-Entwicklung voran. Daher sind das Anzeigen von Bildern und das Wiedergeben von Audio- und Videodaten, die kollektiv als Inhalt bezeichnet werden, immer weiter verbreitete Anwendungen für aktuelle Rechengeräte geworden. Solche Operationen sind zwar rechenintensiv, bieten aber ein hohes Maß an Datenparallelität, die über eine effiziente Implementierung unter Verwendung verschiedener Datenspeichergeräte, wie etwa SIMD-Register (SIMD: Single Instruction Multiple Data), genutzt werden kann. Mehrere aktuelle Architekturen erfordern außerdem mehrere Operationen, Befehle oder Teilbefehle (die oft als „Mikro-Operationen" oder „μops" bezeichnet werden), um verschiedene mathematische Operationen oder Datenübertragungsoperationen an mehreren Operanden auszuführen, wodurch der Durchsatz verringert wird und die Anzahl von Taktzyklen zunimmt, die zum Ausführen dieser Operationen erforderlich sind.
  • Eine Maskierung wird häufig bei SIMD- oder Vektorisierungsoperationen verwendet, damit ein Programmierer einen Teil der Vektoren maskieren kann. Sie wird oft für bedingte Operationen, für den Beginn/das Ende einer vektorisierten Schleife oder zur Kurzvektor-Unterstützung verwendet. Das Maskenladen und -speichern von Vektordaten sind ziemlich komplexe Operationen, die normalerweise zahlreiche einzelne Befehle und Taktzyklen für die Ausführung erfordern. Während dieser Operationen sollten einige Teile der vektorisierten Lade-/Speicheroperationen (die „maskierten" Teile) überhaupt nicht ausgeführt werden. Da Speicheroperationen normalerweise in Blöcken (z. B. Laden von 128 Bit, Speicher von 128 Bit) ausgeführt werden, wird es ziemlich anspruchsvoll, Maskenoperationen mit einer angemessenen Leistung zu unterstützen, da diese Blockladungen ohne Referenzierung einer Maske erfolgen.
  • Das Durchführen des Ladens und Speicherns unter Verwendung einer Prozessor-Architektur, wie etwa eines Prozessors auf Basis der Intel®-Architektur (IA-32), ist wegen fehlausgerichteter Ladungen, Seiten-/Segmentierungsfehlern, Daten-Breakpoint-Unterstützung und dergleichen sogar noch anspruchsvoller. Zum Beispiel kann sich beim Laden einer 128-Bit-Maske ein Teil der Daten auf einer Seite befinden, während sich der andere Teil auf einer anderen Seite befinden kann. Wenn eine der Seiten nicht vorhanden ist, dürfte ein Seitenfehler nur dann auftreten, wenn der Teil, der zu dieser Seite gehört, nicht maskiert ist. Somit nehmen aktuelle Architekturen nicht adäquat die effiziente Ausführung von Maskenlade- und -speicheroperationen in Angriff. Stattdessen erfordern diese Techniken zahlreiche Verarbeitungszyklen und können einen Prozessor oder ein System unnötige Energie verbrauchen lassen, um diese maskierten Operationen auszuführen.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist ein Blockdiagramm eines beispielhaften Computersystems, das mit einem Prozessor konfiguriert ist, der eine Logik zum Ausführen von Befehlen für Maskenlade- und -speicheroperationen nach einer Ausführungsform der vorliegenden Erfindung hat.
  • 2 ist ein Ablaufdiagramm eines Verfahrens zum Ausführen einer Maskenladeoperation nach einer Ausführungsform der vorliegenden Erfindung.
  • 3 ist ein Ablaufdiagramm eines Verfahrens zum Ausführen einer Maskenladeoperation nach einer weiteren Ausführungsform der vorliegenden Erfindung.
  • 4 ist ein Ablaufdiagramm zum Ausführen einer Maskenspeicheroperation nach einer Ausführungsform der vorliegenden Erfindung.
  • 5 ist ein Ablaufdiagramm eines Verfahrens zum Ausführen einer Maskenspeicheroperation nach einer weiteren Ausführungsform der vorliegenden Erfindung.
  • 6 ist ein Blockdiagramm eines Prozessors nach einer Ausführungsform der vorliegenden Erfindung.
  • 7 ist ein Blockdiagramm eines Systems nach einer Ausführungsform der vorliegenden Erfindung.
  • Detaillierte Beschreibung
  • Bei modernen Prozessoren werden mehrere verschiedene Ausführungseinheiten zum Verarbeiten und Ausführen verschiedener Codes und Befehle verwendet. Nicht alle Befehle werden in der gleichen Weise erzeugt, da einige schneller auszuführen sind, während andere eine enorme Anzahl von Taktzyklen dauern können. Je schneller der Durchsatz von Befehlen ist, umso besser ist die Gesamtleistung des Prozessors. Es gibt jedoch bestimmte Befehle, die eine größere Komplexität haben und mehr Ausführungszeit und Prozessorressourcen erfordern. Dazu gehören zum Beispiel Gleitkomma-Befehle, Lade-/Speicheroperationen, Datenverschiebungen usw.
  • Da immer mehr Computersysteme in Internet- und Multimedia-Anwendungen verwendet werden, ist mit der Zeit eine zusätzliche Prozessor-Unterstützung eingeführt worden. Zum Beispiel sind SIMD-Ganzzahl-/-Gleitkommabefehle und SSE-Befehle (SSE: Streaming SIMD Extensions) Befehle, die die Gesamtanzahl von Befehlen verringern, die erforderlich sind, um eine spezielle Programm-Task auszuführen, was wiederum den Energieverbrauch senken kann. Diese Befehle können durch paralleles Arbeiten an mehreren Datenelementen die Software-Leistung erhöhen. Dadurch können Leistungszuwächse in einem großen Bereich von Anwendungen, unter anderem Video-, Sprach- und Bild-/Fotoverarbeitung, erzielt werden.
  • Bei verschiedenen Ausführungsformen können einzelne Befehle eines Befehlsvorrats bereitgestellt werden, um eine effizientere Ausführung von Maskenlade- und -speicherbefehlen zu ermöglichen. Insbesondere können Ausführungsformen mehrere Flavors von Maskenlade- und -speicherbefehlen bereitstellen, um jeweils das Laden von gepackten SIMD-Daten aus dem Speicher an einen gewählten Speicherplatz oder das Abspeichern von gepackten SIMD-Daten von einem gewählten Quellen-Speicherplatz zu ermöglichen. Ausführungsformen können mehrere Flavors dieser Befehle bereitstellen, um das Laden und Speichern von gepackten Werten mit verschiedenen Bitbreiten von und an Quellen- und Ziel-Speicherplätze(n) verschiedener Größe in dem System zu ermöglichen. Allgemein können diese Befehle als bedingte gepackte SIMD-Lade- und -Speicherbefehle zum Ermöglichen des bedingten Ladens und Speicherns von gepackten Datenelementen aufgrund von Maskenwerten angesehen werden, die mit den gepackten Datenelementen assoziiert sind.
  • 1 ist ein Blockdiagramm eines beispielhaften Computersystems, das mit einem Prozessor konfiguriert ist, der eine Logik zum Ausführen der Maskenverschiebungsbefehle nach einer Ausführungsform der vorliegenden Erfindung hat. Ein System 100 weist eine Komponente, wie etwa einen Prozessor 102, auf, um Ausführungseinheiten mit einer Logik zum Ausführen von Algorithmen zum Verarbeiten von Maskenverschiebungsoperationen gemäß der vorliegenden Erfindung zu verwenden, wie etwa bei den hier beschriebenen Ausführungsformen. Das System 100 ist für Verarbeitungssysteme typisch, die auf den Mikroprozessoren PENTIUM® 4, PENTIUM® Dual-Core, CoreTM 2 Duo und Quad, XeonTM, Itanium®, XScaleTM und/oder StrongARMTM basieren, die von Intel Corporation in Santa Clara, Kalifornien, erhältlich sind, obwohl auch andere Systeme (mit PCs mit anderen Mikroprozessoren, Engineering Workstations, Set-Top-Boxes und dergleichen) verwendet werden können. Bei einer Ausführungsform kann das System 100 eine Version des Betriebssystems WINDOWSTM abarbeiten, das von Microsoft Corporation in Redmond, Washington, erhältlich ist, obwohl auch andere Betriebssysteme (zum Beispiel UNIX und Linux), eingebettete Software und/oder grafische Benutzeroberflächen verwendet werden können. Daher sind Ausführungsformen der vorliegenden Erfindung nicht auf eine spezielle Kombination aus Hardware-Schaltungen und Software beschränkt. Bei anderen Geräten, wie etwa Handheld-Geräten, und eingebetteten Anwendungen können alternative Ausführungsformen der vorliegenden Erfindung verwendet werden.
  • Der Prozessor 102 weist eine oder mehrere Ausführungseinheiten 108 zum Ausführen eines Algorithmus zum Ausführen von Maskenlade- und -speicheroperationen an SIMD-Datenelementen nach einer Ausführungsform der vorliegenden Erfindung auf. Das System 100 ist ein Beispiel für eine Hub-Architektur. Der Prozessor 102 kann ein CISC-Mikroprozessor (CISC: Complex Instruction Set Computer), ein RISC-Mikroprozessor (RISC: Reduced Instruction Set Computing), ein VLIW-Mikroprozessor (VLIW: Very Long Instruction Word), ein Prozessor, der eine Kombination aus Befehlsvorräten implementiert, oder ein anderer Prozessor sein, wie zum Beispiel ein Digitalsignalprozessor. Der Prozessor 102 ist mit einem Prozessorbus 110 verbunden, der Datensignale zwischen dem Prozessor 102 und anderen Komponenten in dem System 100 übertragen kann.
  • Bei einer Ausführungsform weist der Prozessor 102 einen internen Ebene-1(L1)-Cache-Speicher 104 auf. In Abhängigkeit von der Architektur kann der Prozessor 102 einen einzelnen internen Cache oder mehrere Interner-Cache-Ebenen haben. Alternativ kann bei einer anderen Ausführungsform der Cache-Speicher außerhalb des Prozessors 102 residieren. Weitere Ausführungsformen können auch eine Kombination aus internen und externen Caches in Abhängigkeit von der speziellen Implementierung und den speziellen Erfordernissen haben. Eine Registerdatei 106 kann verschiedene Typen von Daten in verschiedenen Registern speichern, unter anderem in Ganzzahlregistern, Gleitkommaregistern, Vektor- oder erweiterten Registern, Statusregistern und einem Befehlszeigerregister.
  • Die Ausführungseinheit 108, die eine Logik zum Ausführen von Ganzzahl- und Gleitkomma-Operationen hat, residiert ebenfalls in dem Prozessor 102. Der Prozessor 102 hat auch einen Mikrocode(μcode)-Nur-Lese-Speicher (ROM), der einen Mikrocode für bestimmte Makrobefehle speichert. Bei dieser Ausführungsform hat die Ausführungseinheit 108 eine Logik zum Verarbeiten eines gepackten Befehlsvorrats 109. Bei einer Ausführungsform hat der gepackte Befehlsvorrat 109 verschiedene Instanzen von Maskenlade- und -speicherbefehlen zum effizienten Verarbeiten dieser Operationen. Durch Integrieren des gepackten Befehlsvorrats 109 in den Befehlsvorrat eines Mehrzweckprozessors 102 sowie eine zugehörige Schaltung zum Ausführen der Befehle können die von zahlreichen Multimedia-Anwendungen verwendeten Operationen unter Verwendung von gepackten Daten in dem Mehrzweckprozessor 102 ausgeführt werden. Durch Nutzung der vollen Breite eines Datenbusses des Prozessors zum Ausführen dieser Maskenlade- und -speicheroperationen an gepackten Daten können zahlreiche Multimedia-Anwendungen beschleunigt und effizienter ausgeführt werden. Dadurch kann die Notwendigkeit eliminiert werden, kleinere Einheiten von Daten über den Datenbus des Prozessors zu übertragen, um eine oder mehrere Operationen an einem Datenelement auf einmal auszuführen.
  • Alternative Ausführungsformen der Ausführungseinheit 108 können auch in Mikrocontrollern, eingebetteten Prozessoren, Grafikgeräten, Digitalsignalprozessoren (DSPs) und anderen Arten von Logikschaltungen zum Einsatz kommen. Das System 100 weist einen Speicher 120 auf. Der Speicher 120 kann ein dynamischer Schreib-Lese-Speicher (DRAM), ein statischer Schreib-Lese-Speicher (SRAM), ein Flash-Speicher oder ein anderes Speichergerät sein. Der Speicher 120 kann Befehle und/oder Daten speichern, die durch Datensignale dargestellt sind, die von dem Prozessor 102 verarbeitet werden können.
  • Ein Systemlogikchip 116 ist mit dem Prozessorbus 110 und dem Speicher 120 verbunden. Der Systemlogikchip 116 in der dargestellten Ausführungsform ist ein MCH (Memory Controller Hub). Der Prozessor 102 kann über den Prozessorbus 110 mit dem MCH 116 kommunizieren. Der MCH 116 stellt einen Speicherweg 118 mit hoher Bandbreite zu dem Speicher 120 für die Befehls- und Datenspeicherung und zum Speichern von Grafikbefehlen, Daten und Texturen bereit. Der MCH 116 soll Datensignale zwischen dem Prozessor 102, dem Speicher 120 und anderen Komponenten in dem System 100 senden und mit den Datensignalen eine Verbindung zwischen dem Prozessorbus 110, dem Speicher 120 und einem Hub-Schnittstellenbus 122 herstellen. Bei einigen Ausführungsformen kann der Systemlogikchip 116 einen Grafik-Anschluss zum Verbinden mit einem Grafik-Steuergerät 112 bereitstellen. Der MCH 116 ist über eine Speicher-Schnittstelle 118 mit dem Speicher 120 verbunden. Die Grafikkarte 112 ist über einen AGP-Interconnect 114 (AGP: Accelerated Graphics Port) mit dem MCH 116 verbunden.
  • Das System 100 verwendet den Hub-Schnittstellenbus 122 zum Verbinden des MCH 116 mit einem ICH (I/O Controller Hub; E/A-Steuer-Hub) 130. Der ICH 130 stellt direkte Verbindungen zu einigen E/A-Geräten über einen lokalen E/A-Bus her. Der lokale E/A-Bus ist ein schneller E/A-Bus zum Verbinden von Peripheriegeräten mit dem Speicher 120, einem Chipsatz und dem Prozessor 102. Einige Beispiele sind ein Audio-Steuergerät, ein Firmware-Hub (Flash-BIOS) 128, ein Funk-Sende-Empfänger 126, ein Datenspeicher 124, ein E/A-Legacy-Steuergerät mit Nutzer-Eingabe- und Tastatur-Schnittstellen, ein serieller Erweiterungsport, wie etwa ein USB (Universal Serial Bus), und ein Netzwerk-Steuergerät 134. Das Datenspeichergerät 124 kann ein Festplattenlaufwerk, ein Diskettenlaufwerk, ein CD-ROM, ein Flash-Speicher oder ein anderer Massenspeicher sein.
  • Der Schutzumfang der vorliegenden Erfindung ist diesbezüglich nicht beschränkt, und die Maskenverschiebungsbefehle können auch für andere Datenbreiten verwendet werden. Zum Beispiel können gepackte Werte mit verschiedenen Bitbreiten erhalten und geladen oder gespeichert werden. Zum Beispiel können 128-Bit- oder 256-Bit-Werte von einem ersten Speicherplatz erhalten werden, der einem Quellenindikator entspricht. In diesen Vektordatenwerten können mehrere gepackte Datenelemente oder -felder vorhanden sein. Zum Beispiel können diese einzelnen Datenelemente in dem größeren Vektordatenelement die Form von Doppelwörtern (Dwords) und Quadwörtern (Qwords) annehmen, obwohl auch kleinere und größere Datenelemente möglich sind. Darüber hinaus können andere Datentypen verwendet werden, wie etwa Ganzzahl- und Gleitkomma-Datentypen mit einfacher und doppelter Genauigkeit. Somit können bei einigen Implementierungen gepackte Werte mit einfacher Genauigkeit (single precision; PS) vorhanden sein, während andere Implementierungen mit gepackten Werten mit doppelter Genauigkeit (double precision; PD) arbeiten können.
  • Der Begriff „Register" wird hier benutzt, um Speicherplätze eines Prozessors auf der Platine zu bezeichnen, die als Teil von Makrobefehlen zum Identifizieren von Operanden verwendet werden. Mit anderen Worten, die Register, auf die hier Bezug genommen wird, sind solche, die von außerhalb des Prozessors (aus der Perspektive eines Programmierers) zu sehen sind. Die Register einer Ausführungsform sollten in ihrer Bedeutung jedoch nicht auf einen bestimmten Schaltkreistyp beschränkt werden. Vielmehr braucht ein Register einer Ausführungsform nur Daten speichern und bereitstellen zu können und die hier beschriebenen Funktionen ausführen zu können. Die hier beschriebenen Register können durch Schaltungen in einem Prozessor unter Verwendung mehrerer verschiedener Verfahren implementiert werden, wie etwa dedizierte physische Register, dynamisch zugewiesene physische Register, die eine Register-Umbenennung verwenden, Kombinationen von dedizierten und dynamisch zugewiesenen physischen Registern usw. Bei einer Ausführungsform speichern Ganzzahlregister 32-Bit- oder 64-Bit-Ganzzahldaten. Eine Registerdatei einer Ausführungsform enthält außerdem Multimedia-SIMD-Register (z. B. XMM) für gepackte Daten. Diese Register können 128 Bit breite XMM-Register und 256 Bit breite Register (die die XMM-Register in ihren niedrigwertigen Bits enthalten können) für die Technologien SSE2, SSE3, SSE4, GSSE und darüber hinaus (was generisch als „SSEx" bezeichnet wird) haben, um diese gepackten Datenoperanden zu halten.
  • Im Allgemeinen ist ein Datenelement ein einzelnes Datenelement, das in einem einzelnen Register oder Speicherplatz mit anderen Datenelementen der gleichen Länge gespeichert wird. Bei gepackten Datensequenzen für die SSEx-Technologie beträgt die Anzahl von Datenelementen, die in einem XMM-Register gespeichert werden, 128 Bit (die auf größere Breiten, z. B. 256 Bit oder 512 Bit, erweitert werden können), dividiert durch die Länge, in Bit, eines einzelnen Datenelements. Beispiele für einen 128 Bit breiten Operanden sind gepackte Datenelemente mit sechzehn Byte. Ein Byte wird hier als 8-Bit-Daten definiert. Informationen für jedes Byte-Datenelement werden im Bit 7 bis Bit 0 für das Byte 0, im Bit 15 bis Bit 8 für das Byte 1, im Bit 23 bis Bit 16 für das Byte 2 und schließlich im Bit 120 bis Bit 127 für das Byte 15 gespeichert. Ebenso beträgt bei gepackten Datensequenzen für die MMX- und SSE-Technologie die Anzahl von Datenelementen, die in einem MMX-Register gespeichert werden, 64 Bit, dividiert durch die Länge, in Bit, eines einzelnen Datenelements. Ein gepackter Wortvektor kann eine Länge von 128 Bit haben und acht gepackte Wortdatenelemente enthalten, wobei jedes gepackte Wort sechzehn Bit Informationen enthält. Ein gepacktes Doppelwort kann eine Länge von 128 Bit haben und vier gepackte Doppelwort-Datenelemente enthalten, wobei jedes gepackte Vektor-Doppelwort-Datenelement 32 Bit Informationen enthält. Ein gepackter Quadwort-Vektor kann eine Länge von 128 Bit haben und enthält zwei gepackte Quadwort-Datenelemente. Natürlich kann bei 256-Bit-Vektoren die doppelte Anzahl dieser Datentypen vorhanden sein. Es dürfte wohlverstanden sein, dass diese gepackten Datenformate weiter auf andere Registerlängen, zum Beispiel auf 96 Bit, 160 Bit, 192 Bit, 224 Bit, 256 Bit oder mehr, erweitert werden können. Darüber hinaus ist klar, dass verschiedene Darstellungen von gepackten Datentypen mit und ohne Vorzeichen in Multimedia-Registern nach einer Ausführungsform der vorliegenden Erfindung gespeichert werden können.
  • Bei einigen Implementierungen können Ladeformen eines bedingten SIMD-Datenübertragungsbefehls zum Laden von gepackten Werten aus z. B. 128-Bit- (bei XMM-Formen) oder 256-Bit-Speicherplätzen in ein Ziel-XMM-Register einer gegebenen Breite z. B. unter Verwendung von Maskenwerten verwendet werden, die aus einem Vektor-Maskenregister (z. B. in XMM0 gespeichert) geholt werden können. Bei einer Ausführungsform kann diese Maske aus dem höchstwertigen Bit jedes Dwords (Formen mit einfacher Genauigkeit) oder dem höchstwertigen Bit jedes Qwords (Formen mit einfacher Genauigkeit) des Maskenregisters berechnet werden. Die Maske kann als Ergebnis eines SIMD-Vergleichsbefehls abgeleitet werden. Dieser Befehl setzt die Zielregister-Teiloperanden entweder alle auf „1" oder „0". Einige Implementierungen können ein Bit [z. B. das höchstwertige Bit (MSB)] des Vergleichsziels als Maskenbit verwenden. Wenn sie auf „0" gesetzt sind, erfolgt für keines der Bits der Maske eine entsprechende Ladung, und das entsprechende Feld des Ziel-Speicherplatzes wird auf null gesetzt.
  • Bei einigen Implementierungen können mit Speicherformen eines bedingten SIMD-Datenübertragungsbefehls gepackte Werte aus einem Quellenspeicher, wie etwa einem XMM-Register, an einem Ziel-Speicherplatz [z. B. einem 128-Bit-(XMM-Formen)-Speicherplatz] unter Verwendung von Werten gespeichert werden, die aus einem Vektormaskenregister, das z. B. in XMM0 gespeichert ist, geholt werden können. Bei einer Ausführungsform kann diese Maske auch aus dem höchstwertigen Bit jedes Dwords (Formen mit einfacher Genauigkeit) oder dem höchstwertigen Bit jedes Qwords (Formen mit einfacher Genauigkeit) des Maskenregisters berechnet werden. Wenn sie auf „0" gesetzt sind, erfolgt für keines der Bits der Maske eine entsprechende Speicherung, und das entsprechende Feld des Ziel-Speicherplatzes wird nicht geändert.
  • Bezugnehmend auf Tabelle 1, in der eine Aufstellung verschiedener Flavors von Vektormaskenlade- und -speicherbefehlen nach einer Ausführungsform der vorliegenden Erfindung gezeigt ist. In Tabelle 1 sind mehrere einzelne Befehle jeweils zum Ausführen einer gegebenen bedingten gepackten SIMD-Lade- oder -Speicheroperation an bestimmten Datentypen gezeigt. Jeder Befehl entspricht außerdem einem Opcode. Die Befehle nehmen jeweils die Form eines Befehlsnamens (z. B. VMASKMOVPS) an, an den sich ein Ziel-Indikator und ein Quellenindikator anschließen. Zum Beispiel dient der erste Befehl in Tabelle 1 (d. h. VMASKMOVPS) zum Aktivieren des Ladens von gepackten Werten mit einfacher Genauigkeit von einem Quellen-Speicherplatz, nämlich 128 Bit Speicher (m128), an einen Ziel-Speicherplatz, nämlich das Register XMM1. Darüber hinaus soll diese Ladeoperation unter Verwendung einer Maske an einem vorgegebenen Speicherplatz, z. B. XMM0, ausgeführt werden, der als Vektormaskenregister verwendet werden kann. Man beachte, dass die Bezeichnung YMM zum Identifizieren von Registern mit einer größeren Breite, z. B. 256 Bit, dient. Tabelle 1
    Opcode Befehl Beschreibung
    VEX 128.66 38 A6/r VMASKMOVPS XMM1, m128 Lädt gepackte Werte mit einfacher Genauigkeit unter Verwendung einer Maske aus dem Speicher in XMM0
    VEX 256.66 38 A6/r VMASKMOVPS YMM1, m256 Lädt gepackte Werte mit einfacher Genauigkeit unter Verwendung einer Maske aus dem Speicher in YMM0
    VEX 128.66 38 A7/r VMASKMOVPD XMM1, m128 Lädt gepackte Werte mit doppelter Genauigkeit unter Verwendung einer Maske aus dem Speicher in XMM0
    VEX 256.66 38 A7/r VMASKMOVPD YMM1, m256 Lädt gepackte Werte mit doppelter Genauigkeit unter Verwendung einer Maske aus dem Speicher in YMM0
    VEX 128.66 38 A8/r VMASKMOVPS m128, XMM1 Speichert gepackte Werte mit einfacher Genauigkeit unter Verwendung einer Maske in XMM0 ab
    VEX 256.66 38 A8/r VMASKMOVPS m256, YMM1 Speichert gepackte Werte mit einfacher Genauigkeit unter Verwendung einer Maske in YMM0 ab
    VEX 128.66 38 A9/r VMASKMOVPD m128, YMM1 Speichert gepackte Werte mit doppelter Genauigkeit unter Verwendung einer Maske in XMM0 ab
    VEX 256.66 38 A9/r VMASKMOVPD m256, YMM1 Speichert gepackte Werte mit doppelter Genauigkeit unter Verwendung einer Maske in YMM0 ab
  • Da es relativ ineffizient sein kann, eine Maskenladeoperation, bei der jedes einzelne gepackte Datenelement in einem Vektor oder einem anderen SIMD-Datenelement einzeln aus dem Speicher geladen wird, zu implementieren, da Prüfungen, Zweige und zahlreiche kleine (z. B. 32-Bit-) Ladeoperationen erforderlich sind, können Ausführungsformen eine Ladung mit voller Breite spekulativ durchführen. Insbesondere kann, um mehrere einzelne Ladungen von gepackten Datenelementen zu vermeiden, eine volle Ladung (z. B. 128 Bit oder 256 Bit), z. B. aus einem normalen Write-back(WB)-Speicher, auch dann spekulativ durchgeführt werden, wenn ein Teil davon maskiert ist (und hinsichtlich der Architektur als nicht-durchgeführt angesehen wird). Das geschieht deshalb, weil das Laden von einem WB-Speicherplatz normalerweise spekulativ (mit Prefetching usw.) erfolgen kann. Um jedoch Nebenwirkungen durch Lesen von Daten von einem Masken-Speicherplatz zu vermeiden, können zusätzliche Schritte ausgeführt werden. Beispiele für Nebenwirkungen des Lesens von Daten von einem Masken-Speicherplatz sind Sicherheitsprobleme, nicht-deterministisches Verhalten und so weiter. Somit führen Maskenladungen zu Nullen an maskierten Speicherplätzen. Dadurch ist der eigentliche Ablauf bei einer Maskenladeoperation eine volle Ladung (128 Bit, 256 Bit), an die sich eine UND-Verknüpfung mit dem Maskenregister (z. B. YMM0/XMM0-Vorzeichenbits) anschließt, um alle Maskenspeicherplätze zu nullen.
  • Eine Maskenlade-/-speicheroperation kann unter Verwendung der Mikrocode(μcode)-Verarbeitung nicht-spekulativ implementiert werden. Um jedoch Leistungsvorteile zu erzielen, kann die Hardware eine spekulative Ladung (oder Speicherung) mit voller Breite befehlen. Wenn ein Fehler (real oder in anderer Weise) auftritt, kann ein μcode-Handler abgearbeitet werden. Wenn zum Beispiel Ladungen das Ende einer Seite (oder eines Segments) kreuzen, kann nur dann eine Ausnahme aufgestellt werden, wenn dieser Teil nicht maskiert ist, oder sie kann nur für Operationen an nicht-cachefähigen Daten aufgestellt werden. In diesen Fällen kann ein Fehler (Seitenfehler, Segmentverletzung, Daten-Breakpoint usw.) entstehen, und dadurch erzeugt die Hardware eine μcode-Ausnahme. Der μcode-Ausnahmen-Handler prüft, ob die Ausnahme durch einen Maskenladebefehl auftritt. Wenn die Ausnahme in einem anderen Befehl auftritt, kann der Handler einen normalen Ausnahmen-Ablauf durchführen. Andernfalls startet er die Ausführung des Maskenladebefehls unter Verwendung eines langsamen μcodes neu, wodurch die Maskenspeicherplätze übersprungen werden. Ebenso geht die Hardware zu dem Ausnahmen-Handler, um ihn langsam abzuarbeiten, wenn sie erkennt, dass der Speichertyp nicht cachefähig (un-cacheable; UC) ist und somit keine spekulative Ladung durchgeführt werden kann.
  • Bezugnehmend nun auf 2, in der ein Ablaufdiagramm eines Verfahrens zum Ausführen einer Maskenladeoperation nach einer Ausführungsform der vorliegenden Erfindung gezeigt ist. Ein Verfahren 200 kann durch Empfangen eines Vektormaskenladebefehls in einem Prozessor beginnen (Block 220). Zum Beispiel kann bei zahlreichen Implementierungen ein Nutzerebenenbefehl, z. B. ein Befehl eines Befehlsvorrats mit einer gegebenen Prozessorbefehlsvorratsarchitektur (prozessor instruction set architecture; prozessor ISA), in dem Prozessor empfangen werden. Außer dem Befehl können auch Quellen- und Ziel-Indikatoren mit dem Befehl empfangen werden.
  • Immer noch bezugnehmend auf 2, kann in einem Block 225 ein mit dem Befehl assoziiertes Flag gesetzt werden. Insbesondere kann ein Maskenladeflag gesetzt werden, um anzugeben, dass der entsprechende Befehl ein Vektormaskenladebefehl ist. Die Verwendung dieses Flags wird später näher erläutert. Dann kann bei einem Block 230 eine Ladeoperation mit voller Breite ausgeführt werden, und die geladenen Daten können in einem Zwischenspeicher gespeichert werden. Insbesondere kann die Ladeoperation mit voller Breite eine spekulative Ladeoperation sein, bei der Daten an dem Quellen-Speicherplatz, der einem Platz im Speicher entsprechen kann, spekulativ in einen Zwischenspeicher des Prozessors geladen werden können. Die Daten können zum Beispiel in ein nicht-sichtbares Zwischenregister geladen werden.
  • Immer noch bezugnehmend auf 2, kann dann ermittelt werden, ob während der Ausführung der Operation eine Ausnahme aufgetreten ist (Raute 235). Wenn zum Beispiel während der Operation eine Ausnahme (z. B. ein Seitenfehler, eine Segmentverletzung, ein Daten-Breakpoint oder dergleichen) auftritt, kann eine Ausnahme erzeugt werden. Wenn nicht, geht die Steuerung zu einem Block 240, wo eine optimierte Maskenladeoperation realisiert werden kann.
  • Immer noch bezugnehmend auf 2, wenn keine Ausnahme erkannt wird, geht die Steuerung zu dem Block 240, wo eine mitlaufende UND-Verknüpfung zwischen den geladenen Daten und dem mit dem Vektormaskenladebefehl assoziierten Maskenwert durchgeführt werden kann. Insbesondere kann bei einigen Ausführungsformen der Maskenwert mehreren Bits entsprechen, die jeweils mit einem anderen gepackten Datenelement der geladenen Daten assoziiert sind. Bei einer Ausführungsform kann eine Maske, die die Maskenwerte enthält, aus dem höchstwertigen Bit jedes Dwords (Formen mit einfacher Genauigkeit) oder dem höchstwertigen Bit jedes Qwords (Formen mit doppelter Genauigkeit) des Maskenregisters errechnet werden. Wenn die Bits der Maske auf „0" gesetzt sind, erfolgt bei keinem der Bits der Maske eine entsprechende Ladung, und bei jedem der Bits der Maske wird das entsprechende Feld des Ziels auf null gesetzt. Oder bei einigen Implementierungen kann das Ziel für Masken-Operanden unberührt bleiben. Wenn durch Ausführen einer mitlaufenden UND-Verknüpfung das entsprechende Bit einen Wert Eins hat, ist das Ergebnis das Gleiche wie bei dem Datenelement. Das Ergebnis dieser mitlaufenden UND-Verknüpfung kann dann in dem Zielspeicher gespeichert werden (Block 245). Bei einigen Ausführungsformen kann zum Beispiel der Zielspeicher ein erweitertes Register sein, das in dem Ziel-Indikator des Vektormaskenladebefehls angegeben ist. Das Zielregister kann einem sichtbaren Register entsprechen, wie etwa einem erweiterten Multimedia-Register, wie etwa einem 128-Bit- oder einem größeren Register, zum Beispiel einem 256-Bit-Register.
  • Immer noch bezugnehmend auf 2, wenn eine Ausnahme erkannt wird, geht die Steuerung zu einer Raute 250, wo ermittelt werden kann, ob das Maskenflag (das vorstehend bei Block 225 erörtert wurde) gesetzt ist. Wenn nicht, wird eine Ausnahme für einen anderen Befehl erzeugt, und dadurch kann die Ausnahme mit einem entsprechenden Ausnahmen-Handler verarbeitet werden (Block 255). Zum Beispiel kann ein Hardware- oder Software-Ausnahmen-Handler den gegebenen Fehler verarbeiten.
  • Wenn hingegen das Maskenflag gesetzt ist, geht die Steuerung zu einem Block 260, wo eine nicht-optimierte (d. h., nicht-spekulative) Ladung der angeforderten Daten durchgeführt werden kann. Insbesondere kann diese nicht-optimierte Ladeoperation einzeln für jedes einzelne Datenelement in der Quelle ausgeführt werden. Somit kann bei dem Block 260 die Ladeoperation unter Verwendung eines Langsame-Mikrocodesequenz-Handlers neu gestartet werden. Auf diese Weise können die unmaskierten Teile der Quelle einzeln in den Zielspeicher geladen werden. Eine spezielle Implementierung zum Abarbeiten dieses Mikrocode-Handlers wird weiter unten unter Bezugnahme auf 3 erörtert.
  • Auf diese Weise kann unter Verwendung des in der Ausführungsform von 2 beschriebenen Verfahrens eine bedingte gepackte SIMD-Ladung durchgeführt werden, um ein Vektordatenelement unter einer Maske an einen Ziel-Speicherplatz zu laden. Wie vorstehend dargelegt worden ist, können mit einigen Implementierungen gepackte Datenelemente, wie etwa gepackte Werte mit einfacher Genauigkeit oder gepackte Werte mit doppelter Genauigkeit, von einer Quelle, wie etwa einem Speicher (z. B. einem 128-Bit-Speichercluster oder einem 256-Bit-Speichercluster), in einen Zielspeicher geladen werden, wie etwa ein oder mehrere Architekturregister, z. B. ein erweitertes Multimedia-Register, wie etwa einen niedrigwertigen Teil eines 256-Bit-Registers oder das gesamte 256-Bit-Register. Es ist zwar die spezielle Implementierung in der Ausführungsform von 2 beschrieben worden, aber der Schutzumfang der vorliegenden Erfindung ist diesbezüglich nicht beschränkt.
  • Bezugnehmend nun auf 3, in der ein Ablaufdiagramm eines Verfahrens zum Ausführen einer nicht-optimierten Vektormaskenladeoperation nach einer weiteren Ausführungsform der vorliegenden Erfindung gezeigt ist. Man beachte, dass ein Verfahren 270, das in 3 gezeigt ist, der nicht-optimierten Ladeoperation entsprechen kann, die vorstehend bei Block 260 von 2 beschrieben worden ist.
  • Wie in 3 gezeigt ist, kann das Verfahren 270 durch Erhalten von Maskenindikatoren beginnen, die mit der Maskenladeoperation verbunden sind (Block 272). Wie vorstehend dargelegt worden ist, können bei einer Ausführungsform die Maskenindikatoren jeweils ein einzelnes Bit sein, das mit einem anderen gepackten Datenelement der zu ladenden Vektordaten assoziiert ist. Von dem Block 272 geht die Steuerung zu einer Raute 274, wo ermittelt werden kann, ob alle Maskenindikatoren einen zweiten Wert haben. Bei einer Ausführungsform kann der zweite Wert einem logischen Wert Null entsprechen, mit anderen Worten, die Maske wird für die gegebenen entsprechenden Datenelemente festgelegt. Wenn alle Maskenindikatoren den zweiten Wert haben, geht die Steuerung zu einem Block 275, wo alle Nullen in den Zielspeicher geschrieben werden können. Da alle Datenelemente maskiert werden sollen, können alle Nullen direkt geschrieben werden und das Verfahren 270 kann beendet werden, wodurch eine effiziente Beendigung der Ladeoperation ermöglicht wird, wenn alle Daten maskiert werden sollen.
  • Wenn bei der Raute 274 ermittelt wird, dass nicht alle Indikatoren den zweiten Wert haben, geht die Steuerung zu einem Block 276, wo die Quellen- und Ziel-Speicherplätze auf das niedrigstwertige Feld gesetzt werden können. Wenn man zum Beispiel annimmt, dass der Ziel-Indikator des Vektormaskenladebefehls für ein Zielregister XMM1 ist, so kann der Ziel-Speicherplatz auf das niedrigste Datenelementfeld in diesem Register gesetzt werden, z. B. die Bits [31:0]. Ebenso kann der Quellen-Speicherplatz eine niedrigwertige Position eines Speichersegments, z. B. mem0, sein.
  • Die Steuerung geht dann zu einer Raute 278, wo ermittelt werden kann, ob der entsprechende Maskenindikator für dieses gepackte Datenelement einen ersten Wert hat. Der erste Wert kann zum Beispiel einem Wert Eins entsprechen, der angibt, dass das gegebene Datenelement unmaskiert sein soll. Wenn dem nicht so ist und der mit dem entsprechenden Feld assoziierte Maskenindikator stattdessen einen Wert Null hat, können alle Nullen in diese Bits des Zielregisters geschrieben werden (Block 280). Wenn hingegen bei der Raute 278 ermittelt wird, dass der Maskenindikator einen ersten Wert, z. B. einen Wert Eins, hat, kann eine Ladeoperation ausgeführt werden, um den gepackten Wert von dem Quellen-Speicherplatz in das Zielfeld zu laden (Block 285). Auf diese Weise kann eine Ladeoperation ausgeführt werden, um das Lesen des gegebenen gepackten Datenelements von dem Quellen-Speicherplatz und das Laden des gepackten Datenelements in den gegebenen Teil des Ziel-Speicherplatzes zu ermöglichen.
  • Von den Blöcken 280 und 285 geht die Steuerung zu einer Raute sb0, wo ermittelt werden kann, ob das Laden an den Ziel-Speicherplatz zu Ende ist. Wenn ja, kann das Verfahren 270 beendet werden. Andernfalls geht die Steuerung zu einem Block 295, wo der Quellen-Speicherplatz und der Ziel-Speicherplatz inkrementiert werden können. Die Steuerung geht dann zu der Raute 278 zur weiteren Abarbeitung zurück, damit weitere gepackte Datenelemente des Vektordatenelements an den Ziel-Speicherplatz geladen werden können, wenn sie unmaskiert sind. Es ist zwar diese spezielle Implementierung in der Ausführungsform von 3 beschrieben worden, aber der Schutzumfang der vorliegenden Erfindung ist diesbezüglich nicht beschränkt.
  • Bezugnehmend nun auf Tabelle 2, in der ein Pseudocode zum Ausführen einer Maskenladeoperation nach einer Ausführungsform der vorliegenden Erfindung gezeigt ist. Insbesondere zeigt Tabelle 2 einen Pseudocode zum Durchführen einer 256-Bit-Ladung von gepackten Datenelementen mit einfacher Genauigkeit von einem Speicherplatz (d. h., mem-mem+28) an einen Ziel-Speicherplatz (d. h., DEST[255:0]).
  • Tabelle 2
    Figure 00150001
  • Wie in Tabelle 2 gezeigt ist, kann also die langsame Mikrocodesequenz mehreren einzelnen Ladeoperationen entsprechen, die nur dann ausgeführt werden, wenn das entsprechende Maskenbit für das gegebene gepackte Datenelement auf eins gesetzt ist. Andernfalls wird die Ladung nicht durchgeführt, und das Zielfeld wird mit Nullen gefüllt. Somit wird diese Sequenz von Ladeoperationen von einer niedrigen zu einer hohen Adresse geordnet. Man beachte, dass ein Fehler dazu führen kann, dass die Sequenz von Anfang an neu startet, sodass die gleiche Adresse mehrmals gelesen oder geschrieben werden kann.
  • Die Grundoperation eines Maskenspeicherbefehls ist einer Maskenladung ähnlich, die vorstehend beschrieben worden ist. Allgemein kann angenommen werden, dass die Speicherung nicht fehlerhaft ist und eine Speicheroperation mit voller Breite entsprechend der Maske ausgeführt werden kann. Bei Fehlern (wie Seitenfehlern, wie etwa Blindfehlern und UC-Speicherungen) kann der μcode aktiviert werden, um sie langsam zu verarbeiten. Der Unterschied zwischen Maskenlade- und Maskenspeicheroperationen besteht darin, dass das Speicher-Teilsystem des Prozessors den Maskenwert erhält, sodass am Ende der Ausführung (d. h., wenn der ältere Speicher zu arbeiten aufhört) der Cache-Speicher oder andere Zielspeicher nur in dem nichtmaskierten Bereich aktualisiert wird. Das geschieht durch einen μop-Ablauf, der die Maskenbits in das Speicher-Teilsystem verschiebt. Und da ein Teil der in dem Speicher-Teilsystem gespeicherten Daten potentiell nicht gültig ist (d. h., einer Maskierung unterzogen wird), können die Daten während des Wartens auf die Ausführung der Maskenspeicheroperationen (z. B. durch eine Ladespeicher-Vorwärtsoperation) nicht verwendet werden.
  • Bezugnehmend nun auf 4, in der ein Ablaufdiagramm eines Verfahrens zum Ausführen einer Maskenspeicheroperation nach einer Ausführungsform der vorliegenden Erfindung gezeigt ist. Ein Verfahren 300 kann durch Empfangen eines Vektormaskenspeicherbefehls in einem Prozessor beginnen (Block 320). Zum Beispiel kann bei zahlreichen Implementierungen ein Nutzerebenenbefehl in dem Prozessor empfangen werden. Außer dem Befehl können auch Quellen- und Ziel-Indikatoren mit dem Befehl empfangen werden.
  • Immer noch bezugnehmend auf 4, kann bei einem Block 325 eine mit dem Befehl assoziierte Maske aus dem Maskenregister extrahiert werden. Wie vorstehend dargelegt worden ist, können zum Beispiel spezielle Bits extrahiert werden, die jeweils mit einem gegebenen Datenelement eines Vektordatenelements assoziiert sind. Außerdem kann ein Flag gesetzt werden, das mit dem Befehl assoziiert ist. Insbesondere kann ein Maskenspeicherflag gesetzt werden, um anzugeben, dass der entsprechende Befehl ein Vektormaskenspeicherbefehl ist. Die Verwendung dieses Flags wird weiter unten erläutert. Dann kann bei einem Block 330 eine Speicheroperation mit voller Breite ausgeführt werden. Insbesondere kann die Speicheroperation mit voller Breite einen Eintrag in einem Speicher-Teilsystem des Prozessors erzeugen, z. B. einem Speicherpuffer, einem Speicherordnungspuffer oder einer anderen derartigen Speicher-Teilsystem-Komponente. Der Eintrag kann sowohl die Mikro-Operation (d. h., die Speicheroperation) als auch die Quellen-Adresse und die Ziel-Adresse, an der die Daten gespeichert werden sollen, sowie den extrahierten Maskenwert umfassen.
  • Immer noch bezugnehmend auf 4, kann dann ermittelt werden, ob während der Ausführung der Operation eine Ausnahme aufgetreten ist. Wenn zum Beispiel während der Operation ein Fehler (z. B. ein Seitenfehler, eine Segmentverletzung, ein Daten-Breakpoint oder dergleichen) auftritt, kann eine Ausnahme erzeugt werden. Bei einer Raute 335 kann also ermittelt werden, ob eine Ausnahme auftritt. Wenn nicht, geht die Steuerung zu einem Block 340, wo eine optimierte Maskenspeicheroperation realisiert werden kann.
  • Insbesondere können die partiellen Daten der unmaskierten Teile des Vektordatenelements unter Verwendung der Maskenwerte in den Zielspeicher geschrieben werden (Block 340). Das heißt, für jedes Bit der Vektormasken-Informationen in dem Speicher-Teilsystem, das einen ersten Wert (z. B. einen logischen Wert Eins) hat, kann das entsprechende Vektordatenelement von seinem Quellen-Speicherplatz an den Ziel-Speicherplatz geschrieben werden, der ein mit dem Speicher-Teilsystem verbundener Cache-Speicher sein kann, und das Vektordatenelement kann dann später an den endgültigen Speicherplatz (z. B. den Hauptspeicher) gesendet werden.
  • Immer noch bezugnehmend auf 4, wenn eine Ausnahme erkannt wird, geht die Steuerung zu einer Raute 350, wo ermittelt werden kann, ob das Maskenflag (das vorstehend bei Block 325 erörtert wurde) gesetzt ist. Wenn nicht, wird eine Ausnahme für einen anderen Befehl erzeugt, und dadurch kann die Ausnahme mit einem entsprechenden Ausnahmen-Handler verarbeitet werden (Block 355). Zum Beispiel kann ein Hardware- oder Software-Ausnahmen-Handler den gegebenen Fehler verarbeiten.
  • Wenn hingegen das Maskenflag gesetzt ist, geht die Steuerung zu einem Block 360, wo eine nicht-optimierte (d. h., nicht-spekulative) Speicherung der angeforderten Daten durchgeführt werden kann. Insbesondere kann diese nicht-optimierte Speicheroperation einzeln für jedes einzelne Datenelement in der Quelle ausgeführt werden. Somit kann bei dem Block 360 die Speicheroperation unter Verwendung eines Langsame-Mikrocodesequenz-Handlers neu gestartet werden. Auf diese Weise können die unmaskierten Teile der Quelle einzeln in den Zielspeicher geladen werden. Eine spezielle Implementierung zum Abarbeiten dieses Mikrocode-Handlers wird weiter unten unter Bezugnahme auf 5 erörtert.
  • Auf diese Weise kann unter Verwendung des in der Ausführungsform von 4 beschriebenen Verfahrens eine bedingte gepackte SIMD-Speicherung durchgeführt werden, um ein Vektordatenelement unter einer Maske an einem Ziel-Speicherplatz zu speichern. Wie vorstehend dargelegt worden ist, können mit einigen Implementierungen gepackte Datenelemente, wie etwa gepackte Werte mit einfacher Genauigkeit oder gepackte Werte mit doppelter Genauigkeit, von einer Quelle, wie etwa einem oder mehreren Architekturregistern, z. B. einem erweiterten Multimedia-Register, wie etwa einem niedrigwertigen Teil eines 256-Bit-Registers oder dem gesamten 256-Bit-Register, in einem Zielspeicher gespeichert werden, wie etwa einem Speicher (z. B. einem 128-Bit-Speichercluster oder einem 256-Bit-Speichercluster). Es ist zwar die spezielle Implementierung in der Ausführungsform von 4 beschrieben worden, aber der Schutzumfang der vorliegenden Erfindung ist diesbezüglich nicht beschränkt. Bezugnehmend nun auf 5, in der ein Ablaufdiagramm eines Verfahrens zum Ausführen einer nicht-optimierten Vektormaskenspeicheroperation nach einer weiteren Ausführungsform der vorliegenden Erfindung gezeigt ist. Man beachte, dass ein Verfahren 370, das in 5 gezeigt ist, der nicht-optimierten Speicheroperation entsprechen kann, die vorstehend bei Block 360 von 4 beschrieben worden ist.
  • Wie in 5 gezeigt ist, kann das Verfahren 370 durch Erhalten von Maskenindikatoren beginnen, die mit der Maskenspeicheroperation verbunden sind (Block 372). Wie vorstehend dargelegt worden ist, können bei einer Ausführungsform die Maskenindikatoren jeweils ein einzelnes Bit sein, das mit einem anderen gepackten Datenelement der zu speichernden Vektordaten assoziiert ist. Von dem Block 372 geht die Steuerung zu einer Raute 374, wo ermittelt werden kann, ob alle Maskenindikatoren einen zweiten Wert, z. B. einen logischen Wert Null, haben. Wenn alle Maskenindikatoren den zweiten Wert haben, sind keine Speicheroperationen erforderlich und das Verfahren 370 kann beendet werden, wodurch eine effiziente Beendigung der Speicheroperation ermöglicht wird, wenn alle Daten maskiert werden sollen.
  • Wenn bei der Raute 374 ermittelt wird, dass nicht alle Indikatoren den zweiten Wert haben, geht die Steuerung zu einem Block 376, wo die Quellen- und Ziel-Speicherplätze auf das niedrigstwertige Feld gesetzt werden können. Wenn man zum Beispiel annimmt, dass der Ziel-Indikator des Vektormaskenspeicherbefehls für ein Speichersegment ist, so kann der Ziel-Speicherplatz auf das niedrigste Datenelementfeld in diesem Segment gesetzt werden, z. B. mem0. Ebenso kann der Quellen-Speicherplatz ein niedrigwertiges Quellenregister sein, z. B. das Register XMM1, z. B. die Bits [31:0].
  • Die Steuerung geht dann zu einer Raute 378, wo ermittelt werden kann, ob der entsprechende Maskenindikator für dieses gepackte Datenelement einen ersten Wert (z. B. einen Wert Null) hat, die Steuerung kann dann zu einer Raute 390 gehen. Wenn stattdessen bei der Raute 378 ermittelt wird, dass der Maskenindikator einen ersten Wert, z. B. einen Wert Eins, hat, kann eine Speicheroperation ausgeführt werden, um den gepackten Wert von dem Quellen-Speicherplatz in das Zielfeld zu speichern (Block 385). Auf diese Weise kann eine Speicheroperation ausgeführt werden, um das Schreiben des gegebenen gepackten Datenelements von dem Quellen-Speicherplatz und das Speichern des gepackten Datenelements in den gegebenen Teil des Ziel-Speicherplatzes zu ermöglichen.
  • Bei der Raute 390 kann ermittelt werden, ob die Speicherung an dem Ziel-Speicherplatz zu Ende ist. Wenn ja, kann das Verfahren 370 beendet werden. Andernfalls geht die Steuerung zu einem Block 395, wo der Quellen-Speicherplatz und der Ziel-Speicherplatz inkrementiert werden können. Die Steuerung geht dann zu der Raute 378 zur weiteren Abarbeitung zurück, damit weitere gepackte Datenelemente des Vektordatenelements an dem Ziel-Speicherplatz gespeichert werden können, wenn sie unmaskiert sind. Es ist zwar diese spezielle Implementierung in der Ausführungsform von 5 beschrieben worden, aber der Schutzumfang der vorliegenden Erfindung ist diesbezüglich nicht beschränkt.
  • Bezugnehmend nun auf Tabelle 3, in der eine Pseudocode-Implementierung einer Vektormaskenspeicheroperation nach einer Ausführungsform der vorliegenden Erfindung gezeigt ist. Insbesondere kann der in Tabelle 3 gezeigte Pseudocode einem VMASKMOVPS-Befehl zum Ausführen einer 256-Bit-Speicheroperation entsprechen. Wie gezeigt ist, werden für jedes einzelne gepackte Datenelement, das gepackten Datenelementen mit einfacher Genauigkeit entsprechen kann, wenn das entsprechende Maskenbit einen ersten Wert, z. B. einen Wert Eins, hat, die Daten an dem Quellen-Speicherplatz in dem entsprechenden Teil des Ziel-Speicherplatzes gespeichert. Ansonsten werden keine weiteren Aktionen für das gegebene Datenelement durchgeführt.
  • Tabelle 3
    Figure 00190001
  • Bezugnehmend nun auf 6, in der ein Blockdiagramm eines Prozessors nach einer Ausführungsform der vorliegenden Erfindung gezeigt ist. Wie in 6 gezeigt ist, kann ein Prozessor 400 ein Mehrstufen-Pipeline-Out-of-Order-Prozessor sein. Der Prozessor 400 ist in 6 mit einer relativ einfachen Darstellung gezeigt, um verschiedene Merkmale darzustellen, die in Verbindung mit den vorstehend beschriebenen Maskenlade- und -speicheroperationen verwendet werden.
  • Wie in 6 gezeigt ist, weist der Prozessor 400 Front-End-Einheiten 410 auf, die zum Abrufen von Makrobefehlen, die ausgeführt werden sollen, und zum Vorbereiten der Befehle auf die spätere Verwendung in dem Prozessor verwendet werden können. Die Front-End-Einheiten 410 können zum Beispiel einen Befehls-Prefetcher, einen Befehlsdecodierer und einen Trace-Cache zusammen mit einem Mikrocodespeicher sowie einen μop-Speicher umfassen. Der Befehls-Prefetcher kann Makrobefehle aus dem Speicher abrufen und kann sie dem Befehlsdecodierer zuführen, um sie zu Primitiven, d. h. μops zur Ausführung mit dem Prozessor, zu decodieren. Der Trace-Cache kann decodierte μops nehmen und sie in programmgeordnete Sequenzen zur Speicherung in dem Mikrocodespeicher assemblieren. Bei komplexen Makrobefehlen kann jedoch der Mikrocodespeicher die μops bereitstellen, die für die Ausführung der Operation benötigt werden. Natürlich können weitere Komponenten und Funktionen in den Front-End-Einheiten 410 implementiert werden.
  • Zwischen die Front-End-Einheiten 410 und Ausführungseinheiten 420 ist eine Out-of-Order(OOO)-Maschine 415 geschaltet, die dazu verwendet werden kann, die Mikrobefehle zu empfangen und sie für die Ausführung vorzubereiten. Insbesondere kann die OOO-Maschine 415 verschiedene Puffer haben, um den Mikrobefehlsfluss neu zu ordnen und verschiedene Ressourcen zuzuweisen, die zur Ausführung benötigt werden, sowie um eine Umbenennung von Logikregistern in Speicherplätze in verschiedenen Registerdateien, wie etwa einer Registerdatei 430 und einer erweiterten Registerdatei 435, durchzuführen. Die Registerdatei 430 kann getrennte Registerdateien für Ganzzahl- und Gleitkomma-Operationen haben. Die erweiterte Registerdatei 435 kann erweiterte Register, wie etwa XMM-Register (z. B. 128-Bit-Register) und/oder YMM-Register (z. B. 256-Bit-Register), haben, aber bei einigen Implementierungen können die XMM-Register auch in niedrigwertigen Bits der YMM-Register untergebracht sein. Darüber hinaus kann sich ein Steuerregister 436, das zum Speichern verschiedener Maskeninformationen verwendet werden kann, in der erweiterten Registerdatei 435 befinden. Zum Beispiel kann bei einigen Maskenlade- und -speicheroperationen das Steuerregister 436 einem XMM0- oder YMM0-Register entsprechen, das Maskeninformationen speichern kann, aus denen eine Maske zum Ausführen der Maskenlade- und -speicheroperationen erhalten werden kann.
  • In den Ausführungseinheiten 420 können verschiedene Ressourcen vorhanden sein, unter anderem zum Beispiel verschiedene Ganzzahl-, Gleitkomma- und SIMD-Logikeinheiten und andere spezialisierte Hardware. Nachdem die Mikrobefehle in den Ausführungseinheiten 420 ausgeführt worden sind, können die Ergebnisse für ein Speicher-Teilsystem des Prozessors bereitgestellt werden, das einen Speicherordnungspuffer (memory Order buffer; MOB) 440 hat, der eine Steuerlogik 442, einen Ladepuffer 444 und einen Speicherpuffer 446 haben kann. Die MOB-Steuerlogik 442, die ein Steuergerät oder dergleichen sein kann, dient zum Steuern der Puffer in dem MOB 440. Der Ladepuffer 444 kann zum Speichern von Lade-μops vor ihrer Ausführung und zum Verfolgen früherer Ladungen oder anderer Operationen verwendet werden, die beendet sein müssen, bevor eine gegebene Speicheroperation selbst beendet werden kann. Ebenso kann der Speicherpuffer 446 zum Speichern von Operationen des Speichers, zum Beispiel von Speicheroperationen, und zum Verfolgen früherer Operationen des Speichers (normalerweise Ladungen) verwendet werden, die beendet sein müssen, bevor eine gegebene Speicheroperation selbst beginnen kann. Der Ladepuffer 444 kann verschiedene Informationen, die mit Ladebefehlen assoziiert sind, wie etwa die μop, sowie Identifikatoren für die Quellen- und Ziel-Speicherplätze speichern. Der Speicherpuffer 446 kann bei einer Ausführungsform der vorliegenden Erfindung ähnliche Informationen sowie erweiterte Informationen enthalten, unter anderem Maskeninformationen zur Verwendung für Maskenspeicheroperationen. In 6 ist ein Eintrag 445 aus dem Speicherpuffer 446 gezeigt, der verschiedene Felder enthält, unter anderem ein μop-Feld a, ein Zielidentifikator-Feld b, ein Quellenidentifikator-Feld c und ein Maskenfeld d. Das Maskenfeld d kann entsprechende Maskenbits enthalten, die während der Ausführung der Speicheroperation zum Ermitteln dienen, ob die entsprechenden gepackten Datenelemente abgespeichert werden sollen oder nicht. Wie in 6 gezeigt ist, ist der MOB 440 mit einem Cache 450 verbunden, der bei einer Ausführungsform ein niedriger Cache (z. B. ein L1-Cache) sein kann, aber der Schutzumfang der vorliegenden Erfindung ist diesbezüglich nicht beschränkt. Von dem Cache 450 kann eine Datenkommunikation mit höheren Caches, dem Systemspeicher und dergleichen erfolgen. Es ist zwar diese spezielle Implementierung in der Ausführungsform von 6 beschrieben worden, aber der Schutzumfang der vorliegenden Erfindung ist diesbezüglich nicht beschränkt.
  • Somit können, wie in 6 gezeigt ist, verschiedene Komponenten des Prozessors 400 mit z. B. den Ausführungseinheiten 420 und dem MOB 440 bei einer Ausführungsform der vorliegenden Erfindung eine Logik zum Ausführen von Vektormaskenverschiebungsoperationen haben. Auf diese Weise kann eine Befehlsvorratsunterstützung für Maskenlade- und -speicheroperationen erfolgen. Nach dieser ISA-Definition kann ein Compiler mit kombinierten neuen spekulativen Maskenlade- und -speicheroperationen eine stärkere Vektorisierung unter Verwendung von Maskenladungen und -speicherungen ohne Leistungsverlust als unter Verwendung von normalen unmaskierten Ladungen und Speicherungen durchführen.
  • Ausführungsformen können in vielen verschiedenen Arten von Systemen implementiert werden. Kommen wir nun zu 7, wo ein Blockdiagramm eines Systems nach einer Ausführungsform der vorliegenden Erfindung gezeigt ist. Wie in 7 gezeigt ist, ist ein Mehrprozessorensystem 500 ein Punkt-zu-Punkt-Verbindungssystem und weist einen ersten Prozessor 570 und einen zweiten Prozessor 580 auf, die über eine Punkt-zu-Punkt-Verbindung 550 verbunden sind. Wie in 7 gezeigt ist, kann jeder der Prozessoren 570 und 580 ein Mehrkernprozessor mit einem ersten und einem zweiten Prozessorkern sein (d. h., Prozessorkernen 574a und 574b und Prozessorkernen 584a und 584b). Bei einer Ausführungsform der vorliegenden Erfindung kann jeder Prozessorkern eine Logik haben, wie sie in 6 gezeigt ist, um die Ausführung von Einzelbefehls-Vektormaskenverschiebungsoperationen zu ermöglichen. Auf diese Weise können Verschiebungsoperationen mit voller Breite spekulativ ausgeführt werden, und wenn dann eine Ausnahme auftritt, kann ein in dem Prozessor gespeicherter Mikrocode-Handler Verschiebungsoperationen einzeln für jedes nichtmaskierte Datenelement ausführen.
  • In 7 weist der erste Prozessor 570 weiterhin einen Speichersteuer-Hub (MCH) 572 und Punkt-zu-Punkt(P-P)-Schnittstellen 576 und 578 auf. Ebenso weist der zweite Prozessor 580 einen MCH 582 und P-P-Schnittstellen 586 und 588 auf. Wie in 7 gezeigt ist, verbinden die MCHs 572 und 582 die Prozessoren mit entsprechenden Speichern, und zwar einem Speicher 532 und einem Speicher 534, die Teile des Hauptspeichers [z. B. eines dynamischen Schreib-Lese-Speichers (DRAM)] sein können, der sich lokal an den entsprechenden Prozessoren befindet. Der erste Prozessor 570 und der zweite Prozessor 580 können über eine P-P-Verbindung 552 bzw. 554 mit einem Chipsatz 590 verbunden sein. Wie in 7 gezeigt ist, weist der Chipsatz 590 P-P-Schnittstellen 594 und 598 auf.
  • Außerdem weist der Chipsatz 590 eine Schnittstelle 592 zum Verbinden des Chipsatzes 590 mit einer Hochleistungs-Grafikmaschine 538 auf. Der Chipsatz 590 kann wiederum über eine Schnittstelle 596 mit einem ersten Bus 516 verbunden sein. Wie in 7 gezeigt ist, können verschiedene E/A-Geräte 514 zusammen mit einer Busbrücke, die den ersten Bus 516 mit einem zweiten Bus 520 verbindet, mit dem ersten Bus 516 verbunden sein. Bei einer Ausführungsform können verschiedene Geräte, unter anderem zum Beispiel eine Tastatur/Maus 522, Kommunikationsgeräte 526 und eine Datenspeichereinheit 528, wie etwa ein Plattenlaufwerk oder ein anderes Massenspeichergerät, die einen Code 530 enthalten kann, mit dem zweiten Bus 520 verbunden sein. Darüber hinaus kann ein Audio-E/A-Gerät 524 mit dem zweiten Bus 520 verbunden sein.
  • Ausführungsformen können in einem Code implementiert werden oder können in einem Speichermedium gespeichert werden, in dem Befehle gespeichert sind, die dazu verwendet werden können, ein System so zu programmieren, dass es die Befehle ausführt. Das Speichermedium kann unter anderem jede Art von Platten sein, unter anderem Disketten, optische Platten, Compact Disk Read-Only Memories (CD-ROMs), Compact Disk Rewritables (CD-RWs) und magnetooptische Platten, Halbleiteranordnungen, wie etwa Nur-Lese-Speicher (ROMs), Schreib-Lese-Speicher (RAMs), wie etwa dynamische Schreib-Lese-Speicher (DRAMs), statische Schreib-Lese-Speicher (SRAMs), löschbare programmierbare Nur-Lese-Speicher (EPROMs), Flash-Speicher, elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROMs), magnetische oder optische Karten oder jede andere Art von Medien, die zum Speichern von elektronischen Befehlen geeignet sind.
  • Die vorliegende Erfindung ist zwar anhand einer begrenzten Anzahl von Ausführungsformen beschrieben worden, aber Fachleute werden daraus zahlreiche Modifikationen und Abwandlungen erkennen. Die beigefügten Ansprüche sollen alle diese Modifikationen und Abwandlungen erfassen, die innerhalb des eigentlichen Grundgedankens und Schutzumfangs dieser vorliegenden Erfindung liegen.

Claims (25)

  1. Vorrichtung mit einer Logik zum Empfangen und Ausführen eines Maskenverschiebungsbefehls, um ein Vektordatenelement mit mehreren gepackten Datenelementen von einem Quellen-Speicherplatz an einen Ziel-Speicherplatz zu übertragen, wobei der Maskenverschiebungsbefehl entsprechend Maskeninformationen in einem Vektormaskenregister ausgeführt werden soll.
  2. Vorrichtung nach Anspruch 1, die weiterhin eine Registerdatei mit mehreren erweiterten Registern jeweils zum Speichern eines Vektordatenelements mit mehreren gepackten Datenelementen und ein Steuerregister zum Speichern der Maskeninformationen umfasst.
  3. Vorrichtung nach Anspruch 2, wobei die Vorrichtung einen Prozessor aufweist, der weiterhin ein Speicher-Teilsystem mit einem Speicherpuffer aufweist, der mehrere Einträge jeweils zum Speichern eines anhängigen Befehls, eines Zielidentifikators, eines Quellenidentifikators und, wenn der anhängige Befehl ein Maskenspeicherbefehl ist, einen Eintrag zum Speichern der Maskeninformationen enthält.
  4. Vorrichtung nach Anspruch 1, wobei der Maskenverschiebungsbefehl ein Maskenladebefehl mit einem Opcode, einem Quellenidentifikator und einem Zielidentifikator ist und wobei die Logik in Reaktion auf den Maskenladebefehl auf das Vektormaskenregister zugreifen soll, um die Maskeninformationen zu erhalten.
  5. Vorrichtung nach Anspruch 4, wobei die Logik auf ein erstes Bit jedes von mehreren Feldern des Vektormaskenregisters zugreifen soll, um die Maskeninformationen zu erhalten, wobei jedes erste Bit ein Maskenwert für ein entsprechendes gepacktes Datenelement der mehreren gepackten Datenelemente eines Vektordatenelements ist.
  6. Vorrichtung nach Anspruch 1, wobei der Maskenverschiebungsbefehl ein Maskenladebefehl ist und wobei die Logik eine spekulative Ladeoperation mit voller Breite ausführen soll, um das Vektordatenelement zu erhalten und es in einem Zwischenspeicher zu speichern und um dann zu ermitteln, ob eine Ausnahme während der Ausführung aufgetreten ist.
  7. Vorrichtung nach Anspruch 6, wobei in dem Fall, dass keine Ausnahme aufgetreten ist, die Logik eine mitlaufende UND-Verknüpfung zwischen jedem eines entsprechenden Teils der Maskeninformationen und einem der mehreren gepackten Datenelemente ausführen soll und resultierende Daten an dem Ziel-Speicherplatz speichern soll.
  8. Vorrichtung nach Anspruch 6, wobei in dem Fall, dass eine Ausnahme aufgetreten ist, die Logik Ladeoperationen einzeln ausführen soll, um unmaskierte Teile des Vektordatenelements unter Verwendung eines Mikrocode-Handlers an den Ziel-Speicherplatz zu laden.
  9. Vorrichtung nach Anspruch 8, wobei der Mikrocode-Handler ermitteln soll, ob alle Maskeninformationen einen zweiten Wert haben, und wenn nicht, die unmaskierten Teile einzeln laden soll, und der Mikrocode-Handler andernfalls Null-Werte in die Ziel-Speicherplätze schreiben soll.
  10. Verfahren mit den folgenden Schritten: Erhalten von Daten mit mehreren gepackten Werten aus einem ersten Speicher eines Systems und Speichern der Daten in einem Zielspeicher des Systems in Reaktion auf die Ausführung eines Vektormaskenverschiebungsbefehls in einem Prozessor des Systems.
  11. Verfahren nach Anspruch 10, das weiterhin das spekulative Erhalten und Speichern der Daten in einem Zwischenspeicher als Ladeoperation mit voller Breite aufweist.
  12. Verfahren nach Anspruch 11, das weiterhin Folgendes aufweist: Ermitteln, ob eine Ausnahme während der Ladeoperation mit voller Breite auftritt, und wenn ja, Abarbeiten eines Handlers, um jeden der mehreren gepackten Werte einzeln zu erhalten und ihn in dem Zielspeicher zu speichern.
  13. Verfahren nach Anspruch 12, das weiterhin Folgendes aufweist: nur unabhängig Erhalten und Speichern jedes der mehreren gepackten Werte, die einen entsprechenden Teil von Maskeninformationen haben, die mit dem Vektormaskenverschiebungsbefehl assoziiert sind, der einen ersten Wert hat, und andernfalls Schreiben eines Null-Werts in den Zielspeicher für den entsprechenden gepackten Wert.
  14. Verfahren nach Anspruch 10, das weiterhin das spekulative Ausführen einer Speicheroperation mit voller Breite in Reaktion auf den Vektormaskenverschiebungsbefehl aufweist, wobei die Speicheroperation mit voller Breite das Speichern eines Befehlsfeldwerts, eines Quellenidentifikators, eines Zielidentifikators und von Maskeninformationen, die mit dem Vektormaskenverschiebungsbefehl assoziiert sind, in einem Speicherpuffer umfasst, wobei der Vektormaskenverschiebungsbefehl ein Vektormaskenspeicherbefehl ist.
  15. Verfahren nach Anspruch 14, das weiterhin Folgendes aufweist: Ermitteln, ob eine Ausnahme während der Speicheroperation mit voller Breite auftritt, und wenn ja, Abarbeiten eines Handlers, um jeden der mehreren gepackten Werte einzeln zu erhalten und ihn in dem Zielspeicher zu speichern.
  16. Verfahren nach Anspruch 15, das weiterhin nur unabhängig, ein Erhalten und Speichern jedes der mehreren gepackten Werte, die einen entsprechenden Teil der Maskeninformationen haben, die einen ersten Wert haben, umfasst.
  17. Maschinenlesbares Medium, auf dem ein Befehl gespeichert ist, der beim Ausführen mit einer Maschine die Maschine veranlasst, ein Verfahren mit den folgenden Schritten durchzuführen: spekulatives Ausführen einer Verschiebungsoperation mit voller Breite, um ein Vektordatenelement mit mehreren gepackten Werten aus einem ersten Speicher zu erhalten, und Speichern des Vektordatenelements in einem Zielspeicher in Reaktion auf die Ausführung des Befehls, wobei der Befehl ein maskierter Vektormaskenverschiebungsbefehl ist.
  18. Maschinenlesbares Medium nach Anspruch 17, dadurch gekennzeichnet, dass der Befehl ein Vektormaskenladebefehl zum Laden des Vektordatenelements von einem Speicherplatz, der durch einen mit dem Vektormaskenladebefehl assoziierten Quellenidentifikator angegeben wird, in den Zielspeicher ist, der durch einen mit dem Vektormaskenladebefehl assoziierten Zielidentifikator angegeben wird, wobei die Maske in einem Vektormaskenregister gespeichert ist.
  19. Maschinenlesbares Medium nach Anspruch 18, dadurch gekennzeichnet, dass der Vektormaskenladebefehl einen Prozessor veranlassen soll, das Vektordatenelement aus dem ersten Speicher spekulativ in einen Zwischenspeicher zu laden und zu ermitteln, ob eine Ausnahme während des spekulativen Ladens auftritt, und wenn nicht, unmaskierte Teile des Vektordatenelements in den Zielspeicher zu laden.
  20. Maschinenlesbares Medium nach Anspruch 19, dadurch gekennzeichnet, dass der Vektormaskenladebefehl es dem Prozessor ermöglichen soll, unmaskierte gepackte Werte der gepackten Werte einzeln aus dem ersten Speicher in den Zielspeicher zu laden, wenn die Ausnahme auftritt.
  21. System das umfasst: einen Prozessor mit einer Ausführungseinheit zum Ausführen eines Maskenverschiebungsbefehls, um ein Vektordatenelement mit mehreren gepackten Datenelementen entsprechend Maskeninformationen in einem Vektormaskenregister von einem Quellenspeicher zu einem Zielspeicher zu übertragen, einer Registerdatei, die mehrere Vektorregister jeweils zum Speichern eines Vektordatenelements und ein Steuerregister zum Speichern einer Maske für den Maskenverschiebungsbefehl hat, und einem Speicherpuffer, der mehrere Einträge jeweils zum Speichern eines anhängigen Befehls, eines Zielidentifikators, eines Quellenidentifikators und, wenn der anhängige Befehl ein Maskenspeicherbefehl ist, von Maskendaten aus der Maske hat; und einen dynamischen Schreib-Lese-Speicher (DRAM), der mit dem Prozessor verbunden ist.
  22. System nach Anspruch 21, wobei der Prozessor eine spekulative Ladeoperation mit voller Breite ausführen soll, um das Vektordatenelement zu erhalten und es in einem Zwischenspeicher zu speichern und um dann zu ermitteln, ob eine Ausnahme während der Ausführung aufgetreten ist.
  23. System nach Anspruch 22, wobei in dem Fall, dass keine Ausnahme aufgetreten ist, der Prozessor eine mitlaufende UND-Verknüpfung zwischen jedem eines entsprechenden Teils der Maske und einem der mehreren gepackten Datenelemente ausführen soll und resultierende Daten in dem Zielspeicher speichern soll, und andernfalls unmaskierte Teile des Vektordatenelements unter Verwendung eines Mikrocode-Handlers einzeln aus dem Quellenspeicher in den Zielspeicher laden soll.
  24. System nach Anspruch 21, wobei der Prozessor eine Speicheroperation mit voller Breite spekulativ ausführen soll, um den wartenden Befehl, den Quellenidentifikator, den Zielidentifikator und die Maskendaten in dem Speicherpuffer zu speichern.
  25. System nach Anspruch 25, wobei der Prozessor ermitteln soll, ob eine Ausnahme während der Speicheroperation mit voller Breite aufgetreten ist, und wenn ja, einen Handler abarbeiten soll, um jeden der mehreren gepackten Werte, die einen entsprechenden Teil der Maskendaten haben, die einen ersten Wert haben, unabhängig zu erhalten und ihn in dem Zielspeicher zu speichern.
DE102008061062A 2007-12-27 2008-12-08 Befehle und Logik zum Durchführen von Maskenlade- und -speicheroperationen Ceased DE102008061062A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/005,575 US9529592B2 (en) 2007-12-27 2007-12-27 Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation
US12/005,575 2007-12-27

Publications (1)

Publication Number Publication Date
DE102008061062A1 true DE102008061062A1 (de) 2009-07-16

Family

ID=40758613

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102008061062A Ceased DE102008061062A1 (de) 2007-12-27 2008-12-08 Befehle und Logik zum Durchführen von Maskenlade- und -speicheroperationen

Country Status (3)

Country Link
US (2) US9529592B2 (de)
CN (2) CN102937890B (de)
DE (1) DE102008061062A1 (de)

Families Citing this family (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6484255B1 (en) * 1999-09-20 2002-11-19 Intel Corporation Selective writing of data elements from packed data based upon a mask using predication
US9513905B2 (en) * 2008-03-28 2016-12-06 Intel Corporation Vector instructions to enable efficient synchronization and parallel reduction operations
US8209525B2 (en) * 2008-08-15 2012-06-26 Apple Inc. Method and apparatus for executing program code
US9110802B2 (en) * 2010-11-05 2015-08-18 Advanced Micro Devices, Inc. Processor and method implemented by a processor to implement mask load and store instructions
US8725989B2 (en) * 2010-12-09 2014-05-13 Intel Corporation Performing function calls using single instruction multiple data (SIMD) registers
US8688957B2 (en) 2010-12-21 2014-04-01 Intel Corporation Mechanism for conflict detection using SIMD
US20120185670A1 (en) * 2011-01-14 2012-07-19 Toll Bret L Scalar integer instructions capable of execution with three registers
US20120254593A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for jumps using a mask register
US20120254591A1 (en) * 2011-04-01 2012-10-04 Hughes Christopher J Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements
EP3805921B1 (de) 2011-04-01 2023-09-06 INTEL Corporation Vektorfreundliches befehlsformat und ausführung davon
US9201652B2 (en) 2011-05-03 2015-12-01 Qualcomm Incorporated Methods and apparatus for storage and translation of entropy encoded software embedded within a memory hierarchy
WO2013048369A1 (en) * 2011-09-26 2013-04-04 Intel Corporation Instruction and logic to provide vector load-op/store-op with stride functionality
CN106293631B (zh) * 2011-09-26 2020-04-10 英特尔公司 用于提供向量分散操作和聚集操作功能的指令和逻辑
CN103827813B (zh) * 2011-09-26 2016-09-21 英特尔公司 用于提供向量分散操作和聚集操作功能的指令和逻辑
US10157061B2 (en) 2011-12-22 2018-12-18 Intel Corporation Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks
US10209986B2 (en) * 2011-12-22 2019-02-19 Intel Corporation Floating point rounding processors, methods, systems, and instructions
CN104126170B (zh) * 2011-12-22 2018-05-18 英特尔公司 打包数据操作掩码寄存器算术组合处理器、方法、系统及指令
US9513918B2 (en) * 2011-12-22 2016-12-06 Intel Corporation Apparatus and method for performing permute operations
WO2013095661A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Systems, apparatuses, and methods for performing conversion of a list of index values into a mask value
CN110471699B (zh) * 2011-12-23 2023-07-28 英特尔公司 用于指令处理的处理器核、方法和系统
CN104115114B (zh) * 2011-12-23 2018-06-12 英特尔公司 经改进的提取指令的装置和方法
US9495162B2 (en) * 2011-12-23 2016-11-15 Intel Corporation Apparatus and method for performing a permute operation
CN111831335A (zh) 2011-12-23 2020-10-27 英特尔公司 经改进的插入指令的装置和方法
US9703558B2 (en) * 2011-12-23 2017-07-11 Intel Corporation Systems, apparatuses, and methods for setting an output mask in a destination writemask register from a source write mask register using an input writemask and immediate
CN107741861B (zh) * 2011-12-23 2022-03-15 英特尔公司 用于混洗浮点或整数值的装置和方法
CN107220029B (zh) 2011-12-23 2020-10-27 英特尔公司 掩码置换指令的装置和方法
US9870338B2 (en) * 2011-12-23 2018-01-16 Intel Corporation Systems, apparatuses, and methods for performing vector packed compression and repeat
CN104011616B (zh) 2011-12-23 2017-08-29 英特尔公司 改进置换指令的装置和方法
CN107220027A (zh) * 2011-12-23 2017-09-29 英特尔公司 用于执行掩码位压缩的系统、装置以及方法
US9946540B2 (en) 2011-12-23 2018-04-17 Intel Corporation Apparatus and method of improved permute instructions with multiple granularities
CN108647044B (zh) * 2011-12-28 2022-09-13 英特尔公司 浮点缩放处理器、方法、系统和指令
WO2013101124A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Packed data operation mask comparison processors, methods, systems, and instructions
US9378182B2 (en) * 2012-09-28 2016-06-28 Intel Corporation Vector move instruction controlled by read and write masks
US9665368B2 (en) * 2012-09-28 2017-05-30 Intel Corporation Systems, apparatuses, and methods for performing conflict detection and broadcasting contents of a register to data element positions of another register
US9411592B2 (en) * 2012-12-29 2016-08-09 Intel Corporation Vector address conflict resolution with vector population count functionality
US9411584B2 (en) * 2012-12-29 2016-08-09 Intel Corporation Methods, apparatus, instructions, and logic to provide vector address conflict detection functionality
US9778932B2 (en) * 2013-01-23 2017-10-03 International Business Machines Corporation Vector generate mask instruction
US9513906B2 (en) 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
US9804840B2 (en) 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
US9471308B2 (en) 2013-01-23 2016-10-18 International Business Machines Corporation Vector floating point test data class immediate instruction
US9823924B2 (en) 2013-01-23 2017-11-21 International Business Machines Corporation Vector element rotate and insert under mask instruction
US9715385B2 (en) 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code
US20140244987A1 (en) * 2013-02-22 2014-08-28 Mips Technologies, Inc. Precision Exception Signaling for Multiple Data Architecture
US9990202B2 (en) 2013-06-28 2018-06-05 Intel Corporation Packed data element predication processors, methods, systems, and instructions
US9645820B2 (en) * 2013-06-27 2017-05-09 Intel Corporation Apparatus and method to reserve and permute bits in a mask register
US9395990B2 (en) * 2013-06-28 2016-07-19 Intel Corporation Mode dependent partial width load to wider register processors, methods, and systems
GB2519107B (en) * 2013-10-09 2020-05-13 Advanced Risc Mach Ltd A data processing apparatus and method for performing speculative vector access operations
GB2523823B (en) * 2014-03-07 2021-06-16 Advanced Risc Mach Ltd Data processing apparatus and method for processing vector operands
GB2528115B (en) * 2014-07-11 2021-05-19 Advanced Risc Mach Ltd Dynamic saving of registers in transactions
US10324768B2 (en) * 2014-12-17 2019-06-18 Intel Corporation Lightweight restricted transactional memory for speculative compiler optimization
US9569127B2 (en) 2014-12-29 2017-02-14 International Business Machines Corporation Computer instructions for limiting access violation reporting when accessing strings and similar data structures
US9952867B2 (en) 2015-06-26 2018-04-24 Microsoft Technology Licensing, Llc Mapping instruction blocks based on block size
US10175988B2 (en) 2015-06-26 2019-01-08 Microsoft Technology Licensing, Llc Explicit instruction scheduler state information for a processor
US10169044B2 (en) 2015-06-26 2019-01-01 Microsoft Technology Licensing, Llc Processing an encoding format field to interpret header information regarding a group of instructions
US10409606B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US9946548B2 (en) 2015-06-26 2018-04-17 Microsoft Technology Licensing, Llc Age-based management of instruction blocks in a processor instruction window
US10191747B2 (en) 2015-06-26 2019-01-29 Microsoft Technology Licensing, Llc Locking operand values for groups of instructions executed atomically
US10409599B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Decoding information about a group of instructions including a size of the group of instructions
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
GB2540942B (en) * 2015-07-31 2019-01-23 Advanced Risc Mach Ltd Contingent load suppression
US11977891B2 (en) 2015-09-19 2024-05-07 Microsoft Technology Licensing, Llc Implicit program order
US10678544B2 (en) 2015-09-19 2020-06-09 Microsoft Technology Licensing, Llc Initiating instruction block execution using a register access instruction
US10871967B2 (en) 2015-09-19 2020-12-22 Microsoft Technology Licensing, Llc Register read/write ordering
US11681531B2 (en) 2015-09-19 2023-06-20 Microsoft Technology Licensing, Llc Generation and use of memory access instruction order encodings
US20170109093A1 (en) * 2015-10-14 2017-04-20 International Business Machines Corporation Method and apparatus for writing a portion of a register in a microprocessor
US20170177359A1 (en) * 2015-12-21 2017-06-22 Intel Corporation Instructions and Logic for Lane-Based Strided Scatter Operations
US10019262B2 (en) * 2015-12-22 2018-07-10 Intel Corporation Vector store/load instructions for array of structures
US20170192782A1 (en) * 2015-12-30 2017-07-06 Robert Valentine Systems, Apparatuses, and Methods for Aggregate Gather and Stride
WO2018174931A1 (en) 2017-03-20 2018-09-27 Intel Corporation Systems, methods, and appartus for tile configuration
WO2018186763A1 (en) * 2017-04-06 2018-10-11 Intel Corporation Vector compress2 and expand2 instructions with two memory locations
WO2019009870A1 (en) 2017-07-01 2019-01-10 Intel Corporation SAVE BACKGROUND TO VARIABLE BACKUP STATUS SIZE
GB2568230B (en) * 2017-10-20 2020-06-03 Graphcore Ltd Processing in neural networks
US11789734B2 (en) * 2018-08-30 2023-10-17 Advanced Micro Devices, Inc. Padded vectorization with compile time known masks
CN111381876B (zh) * 2018-12-28 2022-12-09 上海寒武纪信息科技有限公司 move指令译码方法、数据移动方法、译码器及数据存取装置
US11842200B2 (en) * 2019-09-27 2023-12-12 Advanced Micro Devices, Inc. Multi-modal gather operation
US11847463B2 (en) * 2019-09-27 2023-12-19 Advanced Micro Devices, Inc. Masked multi-lane instruction memory fault handling using fast and slow execution paths

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0731669B2 (ja) * 1986-04-04 1995-04-10 株式会社日立製作所 ベクトル・プロセツサ
US5185871A (en) * 1989-12-26 1993-02-09 International Business Machines Corporation Coordination of out-of-sequence fetching between multiple processors using re-execution of instructions
JP2665111B2 (ja) * 1992-06-18 1997-10-22 日本電気株式会社 ベクトル処理装置
US5577200A (en) * 1994-02-28 1996-11-19 Intel Corporation Method and apparatus for loading and storing misaligned data on an out-of-order execution computer system
US6076153A (en) * 1997-12-24 2000-06-13 Intel Corporation Processor pipeline including partial replay
US6052769A (en) * 1998-03-31 2000-04-18 Intel Corporation Method and apparatus for moving select non-contiguous bytes of packed data in a single instruction
US6173393B1 (en) 1998-03-31 2001-01-09 Intel Corporation System for writing select non-contiguous bytes of data with single instruction having operand identifying byte mask corresponding to respective blocks of packed data
US6484255B1 (en) 1999-09-20 2002-11-19 Intel Corporation Selective writing of data elements from packed data based upon a mask using predication
US6446198B1 (en) 1999-09-30 2002-09-03 Apple Computer, Inc. Vectorized table lookup
US6523108B1 (en) * 1999-11-23 2003-02-18 Sony Corporation Method of and apparatus for extracting a string of bits from a binary bit string and depositing a string of bits onto a binary bit string
US6952478B2 (en) 2000-05-05 2005-10-04 Teleputers, Llc Method and system for performing permutations using permutation instructions based on modified omega and flip stages
WO2001089098A2 (en) 2000-05-05 2001-11-22 Lee Ruby B A method and system for performing permutations with bit permutation instructions
US7739319B2 (en) * 2001-10-29 2010-06-15 Intel Corporation Method and apparatus for parallel table lookup using SIMD instructions
CN1253786C (zh) 2002-10-18 2006-04-26 华为技术有限公司 一种数字信号处理器程序的加载方法
US7043518B2 (en) * 2003-07-31 2006-05-09 Cradle Technologies, Inc. Method and system for performing parallel integer multiply accumulate operations on packed data
GB2409061B (en) 2003-12-09 2006-09-13 Advanced Risc Mach Ltd Table lookup operation within a data processing system
US7464255B1 (en) * 2005-07-28 2008-12-09 Advanced Micro Devices, Inc. Using a shuffle unit to implement shift operations in a processor
US9436468B2 (en) 2005-11-22 2016-09-06 Intel Corporation Technique for setting a vector mask
US7404065B2 (en) 2005-12-21 2008-07-22 Intel Corporation Flow optimization and prediction for VSSE memory operations
US8700884B2 (en) 2007-10-12 2014-04-15 Freescale Semiconductor, Inc. Single-instruction multiple-data vector permutation instruction and method for performing table lookups for in-range index values and determining constant values for out-of-range index values
US20090172348A1 (en) * 2007-12-26 2009-07-02 Robert Cavin Methods, apparatus, and instructions for processing vector data

Also Published As

Publication number Publication date
US9529592B2 (en) 2016-12-27
US20130191615A1 (en) 2013-07-25
US20090172365A1 (en) 2009-07-02
CN102937890B (zh) 2016-01-20
CN102937890A (zh) 2013-02-20
CN101488084A (zh) 2009-07-22
US10120684B2 (en) 2018-11-06
CN101488084B (zh) 2013-01-02

Similar Documents

Publication Publication Date Title
DE102008061062A1 (de) Befehle und Logik zum Durchführen von Maskenlade- und -speicheroperationen
DE112013005188B4 (de) Prozessor und vefrahren zur vektorisierung von zusammengeführten, mehrfach geschachtelten schleifen
DE102018005105A1 (de) Befehle für entfernte atomare operationen
DE112012007088B4 (de) Vorrichtung, verfahren und system mit einem befehl zum reduzieren von elementen in einem vektorregister mit einem schrittweisem zugriffsmuster
DE102018003612A1 (de) Befehle für Dualzieltyp-Umwandlung-, Akkumulation- mit gemischter Präzision und atomare Speicheroperationen mit gemischter Präzision
DE112011105122T5 (de) Systeme, Vorrichtungen und Verfahren zum Vermischen zweier Quelloperanden in einem einzigen Ziel unter Verwendung einer Schreibmaske
DE102018125232A1 (de) Einrichtung und Verfahren für komplexe Multiplikation und Akkumulation
DE112012007063T5 (de) Zusammenfügen von benachbarten Sammel-/Streuoperationen
DE112013005372T5 (de) Befehl zum Bestimmen von Histogrammen
DE102018124945A1 (de) Einrichtung und verfahren für komplexe multiplikation
DE102018132521A1 (de) Vorrichtung und verfahren zur verflachung und reduktion von schleifen in einer single instruction, multiple data- (simd-) pipeline
DE102018129341A1 (de) Verfahren und Einrichtung für Mehrfachlade- und Mehrfachspeicher-Vektorbefehle
DE112013004783T5 (de) Durch Lese- und Schreibmasken gesteuerter Vektor-Verschiebebefehl
DE112013005343T5 (de) Befehle für Codierungsalgorithemen mit gleitendem Fenster
DE102015007422A1 (de) Befehlssatz zum Eliminieren fehlausgerichteter Speicherzugriffe während der Verarbeitung eines Arrays mit fehlausgerichteten Datenzeilen
DE102015002253A1 (de) Verfahren und Vorrichtung zum Ausführen mehrerer Multiplikationsoperationen
DE112017000983T5 (de) System und Verfahren zum Ausführen eines Befehls zum Permutieren einer Maske
DE102018006744A1 (de) Bitmatrixmultiplikation
DE112017003347T5 (de) Systeme, Vorrichtungen und Verfahren für Strided-Ladevorgänge
DE112011105123T5 (de) Systeme, Vorrichtungen und Verfahren für Sprünge unter Verwendung eines Maskenregisters
DE102018126036A1 (de) Systeme und verfahren zum setzen eines kachelregisterpaars auf null
DE102018006798A1 (de) Einrichtung und Verfahren zum Multiplizieren, Addieren/Subtrahieren und Akkumulieren von gepackten Datenelementen
DE102018129263A1 (de) Vorrichtung und verfahren zum multiplizieren, summieren und akkumulieren von sätzen von gepackten bytes
DE102018131842A1 (de) Einrichtung und Verfahren zum Vektormultiplizieren und Akkumulieren von gepackten Wörtern
DE102018129298A1 (de) Vorrichtung und Verfahren zum Vektormultiplizieren und Akkumulieren von vorzeichenbehafteten Doppelwörtern

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final
R130 Divisional application to

Ref document number: 102008064820

Country of ref document: DE

Effective date: 20140516

R003 Refusal decision now final

Effective date: 20140627