DE112010004963T5 - Synchronisieren von SIMD Vektoren - Google Patents

Synchronisieren von SIMD Vektoren Download PDF

Info

Publication number
DE112010004963T5
DE112010004963T5 DE112010004963T DE112010004963T DE112010004963T5 DE 112010004963 T5 DE112010004963 T5 DE 112010004963T5 DE 112010004963 T DE112010004963 T DE 112010004963T DE 112010004963 T DE112010004963 T DE 112010004963T DE 112010004963 T5 DE112010004963 T5 DE 112010004963T5
Authority
DE
Germany
Prior art keywords
data elements
data
memory location
elements
mask
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.)
Withdrawn
Application number
DE112010004963T
Other languages
English (en)
Inventor
Ravi Rajwar
Andrew Thomas Forsyth
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 DE112010004963T5 publication Critical patent/DE112010004963T5/de
Withdrawn 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
    • 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
    • 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/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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
    • 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/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • 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
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols

Abstract

Eine Vektor-Vergleichs-und-Austausch-Operation wird durchgeführt durch: Decodieren durch einen Decodierer in einer Verarbeitungsvorrichtung einer einzelnen Instruktion, die eine Vektor-Vergleichs-und-Austausch-Operation für eine Vielzahl von Datenelementen zwischen einem ersten Speicherplatz, einem zweiten Speicherplatz und einem dritten Speicherplatz spezifiziert; Ausgeben der einzelnen Instruktion zur Ausführung durch eine Ausführungseinheit in der Verarbeitungsvorrichtung; und als Reaktion auf die Ausführung der einzelnen Instruktion, Verglemit entsprechenden Datenelementen im zweiten Speicherplatz; und auf die Feststellung, dass eine Übereinstimmung vorhanden ist, Ersetzen der Datenelemente vom ersten Speicherplatz mit entsprechenden Datenelementen vom dritten Speicherplatz.

Description

  • HINTERGRUND
  • Diese Offenbarung bezieht sich auf Mikroprozessoren und andere Verarbeitungsvorrichtungen und, insbesondere, auf die Synchronisation von SIMD-Vektoren.
  • Mehrfach-Thread- und/oder Verarbeitungseinheiten (im Folgenden als Agenten bezeichnet), z. B. in Systemen mit Multi-Threaded-Prozessoren, Multi-Verarbeitungsvorrichtungen und/oder Multi-Core Prozessoren müssen sich häufig Ressourcen und die gespeicherten Daten innerhalb des Systems teilen. Es wird darauf geachtet, sicherzustellen, dass ein Agent auf die neuesten und aktualisierten Daten zugreift, und auch sicherzustellen, dass ein Agent nicht auf Daten zugreift und verändert, die derzeit mit einem anderen Agenten verbunden sind. Noch komplizierter wird diese gemeinsame Nutzung von Daten und Ressourcen dadurch, dass die meisten modernen Verarbeitungsvorrichtungen einen oder mehrere dedizierte Cache-Speicher aufweisen. Innerhalb von Multiprozessor- und Multicore-Systemen werden die mehreren On-Chip-Caches häufig – und in der Praxis tun sie dies in der Regel auch – mehrere Kopien eines Datenelements enthalten. Dementsprechend wird, wenn ein Agent auf eine Kopie eines Datenelements zugreift, ihm versichert, dass eine aktualisierte oder gültige Daten Wert gelesen wird.
  • Somit bleibt in diesen Systemen die ”Cache-Kohärenz” erhalten. Cache-Kohärenz bezieht sich auf die Synchronisation von Daten die aus einem Cache-Speicher geschrieben, oder in einen Cache-Speicher gelesen werden, so dass jedes in einem Cache gespeicherte Datenelement, auf das durch einen Thread oder Prozessor zugegriffen wird, das jüngste Exemplar dieses Datenelement ist. Ferner sollte jeder Datenwert, der aus dem Cache zurück in den Hauptspeicher geschrieben wird, das aktuellste Datum sein.
  • Ein Verfahren zur Aufrechterhaltung der Cache-Kohärenz und der Versicherung, dass, wenn ein Datenelement von einem Agenten gebraucht wird, auf den am meisten aktuellen Wert für das Datenelement zugegriffen wird, ist es eine Semaphore zu implementieren (z. B. ein Flag oder Lock). Ein Lock umfasst beispielsweise ein Verfahren, das in Reaktion auf eine Anforderung für ein bestimmtes Datenelement aus dem Speicher durch einen Agenten (z. B. in einer Ladeoperation) durchgeführt wird, um die Synchronisation zwischen den Prozessoren und/oder Threads sicherzustellen. Im Allgemeinen ist ein Lock mit einem Satz von Instruktionen, einschließlich der Lese-/Ladeinstruktion, einer Instruktion, um das Datenelement zu modifizieren, und einer Schreib-/Speicher-Instruktion assoziiert. Der Lock – worauf hierin auch als ”Lock-Sequenz” oder ”Lock-Operation” Bezug genommen wird – kann zum Beispiel ein Erlangen der Eigentümerschaft eines Speicherplatzes, der Daten speichert, das Durchführen einer atomaren Operation an den Daten, während gleichzeitig verhindert wird, dass andere Prozesse an diesen Daten arbeiten, und die Freigabe der Eigentümerschaft an dem Speicherplatz nach dem Durchführen der atomaren Operation umfassen. Eine atomare Operation ist eine Operation, die sequentiell und in einer ununterbrochenen Weise durchgeführt wird, und die ferner gewährleistet, dass sie abgeschlossen oder überhaupt nicht abgeschlossen ist (d. h. Die Operation ist unteilbar).
  • BESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt ein Blockschaltbild eines Computersystems.
  • 2 ist eine schematische Darstellung einer Verarbeitungsvorrichtung, wie in 1 gezeigt ist.
  • 3 zeigt ein Codierungsschema einer Single-Instruction-Multiple-Data-(SIMD)-Vektor-Vergleichs-und-Austausch-Instruktion.
  • 4 ist ein Blockdiagramm eines ersten exemplarischen Computersystems zum Implementieren des in 3 dargestellten Instruktionsformats.
  • 5 ist ein Blockdiagramm eines zweiten exemplarischen Computersystems zum Implementieren des in 3 dargestellten Instruktionsformats.
  • 6 ist ein Blockdiagramm eines dritten exemplarischen Computersystems zum Implementieren des in 3 dargestellten Instruktionsformats.
  • 7 ist ein Blockdiagramm eines vierten exemplarischen Computersystems zum Implementieren des in 3 dargestellten Instruktionsformats.
  • Andere Merkmale und Vorteile werden aus der Beschreibung und den Zeichnungen sowie aus den Ansprüchen ersichtlich.
  • Detaillierte Beschreibung
  • In der folgenden Beschreibung werden zahlreiche spezifische Details dargelegt, wie Instruktionen, Instruktionsformate, Vorrichtungen, wie Register und Speicher, etc., um ein gründliches Verständnis der hierin bereitgestellten Beispiele zu ermöglichen. Es wird jedoch von einem Fachmann auf dem Gebiet erkannt, dass die vorliegende Erfindung auch ohne diese spezifischen Details praktiziert werden kann.
  • Eine Möglichkeit zur Bestimmung, ob ein Semaphor gesperrt ist (und/oder um ihn dazu zu machen), ist die Verwendung einer Lesen-Modifizieren-Schreiben-Sequenz (oder Operation). Allerdings bestehen Bedenken bei einer Lesen-Modifizieren-Schreiben-Umsetzung im Erwerb und der Freigabe des Semaphor-Mechanismus selber. Das heißt, wenn ein Prozess versucht, die Kontrolle über den gemeinsamen Speicherraum zu gewinnen, liest er zuerst den Lock-Wert, überprüft und ändert (wenn es erlaubt ist) den Wert und schreibt den veränderten Wert zurück zum Lock. Es ist allgemein wünschenswert, die Lesen-Modifizieren-Schreiben-Operation in einer atomaren Operation durchzuführen (d. h. ohne Unterbrechung abzuschließen, sobald die Ausführung begonnen hat), um andere Prozesse daran zu hindern den Lock-Wert zu verändern. Durch die Verwendung einer atomaren Operation kann ein Prozess den Semaphor erwerben (lesen), den Wert ändern (wenn erlaubt) und den Semaphor durch die Initiierung eines Schreibens, um die Operation abzuschließen, freigeben, bevor ein anderer Prozess versucht, den Lock zu erlangen.
  • Unter Bezugnahme auf 1 ist ein Computersystem 10 gezeigt, das eine Vielzahl von Verarbeitungseinheiten 11 (z. B. Prozessoren, Kerne, Ausführungseinheiten usw.) aufweist, die mit einem Speicher 12 (z. B. Registern, Cache, RAM, usw.) durch einen Bus 13 gekoppelt sind. Eine oder mehrere der Verarbeitungseinheiten 11 sind mit einem oder mehreren Threads verbunden. Dementsprechend umfasst das Computersystem 10 eine geeignete Anzahl von Verarbeitungseinheiten 11, von denen jede eine geeignete Anzahl von Threads aufweist. Die Verarbeitungseinheiten 11 können jeweils einen Teil einer separaten integrierten Schaltung bilden oder alternativ können alle Verarbeitungseinheiten 11 (oder ein Teil davon) auf einem einzigen Chip gebildet sein. In diesem speziellen Computersystem, sind vier Verarbeitungseinheiten 11 (bezeichnet als P1, P2, P3 und P4) als Teil des Systems 10 gezeigt. Alle vier Verarbeitungseinheiten 11 sind mit dem Speicher 12 und insbesondere mit einem gemeinsamen Speicherraum 15 im Speicher 12 gekoppelt.
  • Es versteht sich, dass der Speicher 12 in einer Vielzahl von Arten konfiguriert sein kann. Obwohl er als ein einziger Speicher dargestellt ist, kann der Speicher 12 mehrere interne und/oder externe Speicher aufweisen. In dem speziellen Beispiel greifen alle vier Verarbeitungseinheiten 11 auf den Speicher 12 zu und auf einen Teil des Speichers 12, der als gemeinsamer Raum 15 bezeichnet wird, wird durch mehr als eine Verarbeitungseinheit 11 zugegriffen. Es ist möglich, dass es in dem Speicher 12 andere gemeinsame Bereiche gibt, in welchen zwei oder mehr Verarbeitungseinheiten 11 auf solche gemeinsamen Bereiche zugreifen können. Die nicht geteilten Bereiche des Speichers 12 sind in der Regel so gestaltet, dass darauf nur eine Verarbeitungseinheit 11 zugreifen kann.
  • Das in 1 dargestellte Computersystem 10 soll ein beispielhaftes Computersystem sein und kann viele zusätzliche Komponenten umfassen, die aus Gründen der Übersichtlichkeit weggelassen sind. Beispielsweise kann das Computersystem 10 einen DMA-(Direct Memory Access)Controller, eine Netzwerkschnittstelle (z. B. ein Netzwerk Karte), einen Chipsatz, der einer oder mehreren der Verarbeitungseinheiten 11 zugeordnet ist, sowie zusätzliche Signalleitungen und Busse aufweisen. Es sollte auch verstanden werden, dass das Computersystem 10 nicht alle in 1 gezeigten Komponenten aufweisen muss.
  • In der 1 sind die Semaphoren als Locks 16 eingesetzt (oder Lock-Variablen), die zugeordnet sind, um Zugriffe auf einen oder mehrere jeweilige gemeinsame Räume 15 (wie durch die gestrichelte Linie 14 gezeigt) zu steuern. Das Lock 16 ist eine bestimmte Stelle im Speicher, die zugeordnet ist, um einen Wert zu enthalten, der mit dem Erhalten eines Zugangs zu dem gemeinsamen Raum 15 verbunden ist. Damit eine der Verarbeitungseinheiten 11 auf den gemeinsamen Raum 15 zugreift, greift sie zuerst auf das entsprechende Lock 16 zu und testet den Zustand (Wert) der in der Lockposition 16 gespeicherten Daten. In der einfachsten Form können dem Lock 12 zwei Werte zugewiesen sein. Ein erster Wert, der angibt, dass der gemeinsame Raum für einen Zugang verfügbar ist, und ein zweiter Wert, der anzeigt, dass der gemeinsame Raum derzeit verwendet wird und daher nicht für den Zugriff verfügbar ist. Wider können in der einfachsten Ausführungsform Bit-Zustände 1 und 0 für den gesperrten und nicht gesperrten Status für das Lock 16 verwendet werden.
  • Es ist anzumerken, dass die tatsächlichen Lock-Werte und Lock-Zustände für das Lock 16 eine Design-Wahl sind und viele Variationen erdacht werden können. Außerdem muss der Ort des Locks 16 nicht in dem Speicher 12 selbst liegen. Ferner ist in Bezug auf 1 ersichtlich, dass der Speicher 12 einer aus einer Vielzahl von Speichereinrichtungen sein kann. Es ist auch möglich, dass eine oder mehrere Verarbeitungseinheiten 11 durch eine Speicherzugriffsvorrichtung(en) (Vorrichtungen, wie Direkt-Speicher-Zugriffs-Kontroller) ersetzt werden, die auch auf den Speicher zugreifen. In diesen Fällen würden diese Vorrichtungen ähnlich wie die Verarbeitungseinheiten 11 funktionieren, die hierin für die Erlangung eines Zugangs zum gemeinsamen Raum 15 beschrieben wurden. Schließlich kann, obwohl nur ein einziger Bus 13 dargestellt ist, eine Vielzahl von Bussen zu denselben oder unterschiedlichen hierarchischen Ebene(n) als Bus 13 zum Anschließen der verschiedenen Vorrichtungen vorhanden sein.
  • Der Zugriff auf den Speicher 12 durch die Verarbeitungseinheiten 11 für die Datenübertragung umfasst typischerweise die Verwendung der Lade- und Speicheroperationen. Die Ladeoperation überträgt Speicherinhalt von einer Stelle im Speicher, auf die zugegriffen wurde, und die Speicheroperation überträgt Daten zu einer Stelle im Speicher, auf die zugegriffen wurde. Somit werden Lade-/Schreib-Operationen verwendet, um auf den Speicher 12 und Lock 16 zur Datenübertragung zwischen Verarbeitungseinheiten 11 und Speicher 12 zuzugreifen. Die Lade- und Speicher-Zugriffe werden auch als Schreib- bzw. und Lesezugriffe bezeichnet.
  • Bezugnehmend auf 1 und 2 umfasst das Computersystem 10 einen Nur-Lese-Speicher (ROM) 31 und einen Hauptspeicher 18, gekoppelt – über den Systembus 22 – mit Verarbeitungseinheiten 11, wobei der Hauptspeicher 18 zum Beispiel jede geeignete Art von Speicher mit wahlfreiem Zugriff (RAM) umfasst. Die Verarbeitungseinheiten 11 haben auch eine Daten-Speichereinrichtung 30, die mit diesen durch den Systembus 22 gekoppelt ist. Der Datenspeicher 30 umfasst jeden geeigneten nicht-flüchtigen Speicher, wie beispielsweise eine Festplatte. Das Computersystem 10 umfasst ferner einen Wechselspeicher 32, wie beispielsweise ein Diskettenlaufwerk, ein CD-ROM-Laufwerk, und/oder ein USB-Laufwerk.
  • In der 2 umfasst die Verarbeitungseinheit 11 eine Reihe von Komponenten, die durch einen oder mehrere Busse miteinander verbunden sind, wobei diese Busse in 2 symbolisch durch einen lokalen Bus 19 dargestellt sind. Der lokale Bus 19 – und somit die Komponenten der Verarbeitungseinheit 11 – sind mit einer Busschnittstelleneinheit 23 gekoppelt. Die Busschnittstelleneinheit 23 koppelt die Verarbeitungseinheit 11 mit dem Systembus 22, wodurch eine Kommunikation zwischen der Verarbeitungseinheit 11 und dem Hauptspeicher 18 sowie zwischen der Verarbeitungseinheit 11 und einem externen Speicher 20 ermöglicht wird.
  • Die Verarbeitungseinheit 11 enthält einen Instruktionsdecoder 21, der mit dem lokalen Bus 19 gekoppelt ist. Der Instruktionsdecoder 21 empfängt eine Instruktion (oder Instruktionen), die mit einem Programm oder einem Teil eines Codes verbunden sind, das/der auf der Verarbeitungseinheit 11 ausführt, und bricht die Instruktion in eine oder mehrere Maschinen-Ebenen-Instruktionen/Operationen (μops) auf. Es versteht sich, dass die Verarbeitungseinheit 11 eine oder mehrere Instruktionen empfangen kann, die mit einem Programm verknüpft sind, während eine andere Verarbeitungseinheit 11 des Computersystems 10 eine oder mehrere Instruktionen empfangen kann, die mit demselben Programm verbunden sind. So kann ein Programm auf mehreren Verarbeitungseinheiten 11 ausgeführt werden.
  • Die Verarbeitungseinheit 11 umfasst ferner mehrere Ausführungseinheiten, einschließlich von zum Beispiel einer Datenzugriffs-Steuereinheit (DAC) 24, einem Speicher-Ordnungs-Puffer (MOB) 26, einer Registerdatei-Einheit 29, und einer funktionellen Einheit 27.
  • Die Registerdatei-Einheit 29 umfasst eine Vielzahl von Registern, von denen jedes 16, 32, 64, 128, 256 oder 512 Speicherbits aufweist. Ferner kann die Registerdatei 29 ein oder mehrere Register-Dateien aufweisen, die jeweils ein oder mehrere Register aufweisen. Die funktionale Einheit 27 umfasst eine oder mehrere funktionale Einheiten, wie zum Beispiel eine arithmetische, logische und/oder Gleitkomma-Einheit. MOB 26 gewährleistet die richtige Reihenfolge der Lade und Speicherinstruktionen und sieht ferner die korrekte Abfolge der Transaktionen in der Speicherhierarchie vor (d. h. die verschiedenen Speicherebenen im Computersystem 10, einschließlich des L0-Cache 25, L1-Cache 28, externen Cache 20, Hauptspeicher 18 und Datenspeichervorrichtung 30). Jeder des L0-Cache 25 und L1-Cache können Daten speichern, auf die zuletzt durch die funktionale Einheit 27 zugegriffen wurde, oder für die erwartet wird, dass auf sie zugegriffen wird. Wenn ein Datenelement, das von der Funktionseinheit 27 angefordert wird, sich in einem der Cache-Speicher 25, 28 befindet, ist ein Cache-”Treffer” aufgetreten. Jedoch, wenn die angeforderten Daten nicht im Cache sind, dann ist ein Cache-”Miss” aufgetreten. Einer oder mehrere der Cache-Speicher (z. B. L0-Cache 25) kann mit dem DAC 24 gekoppelt sein. Der DAC 24 steuert alle Transaktionen, die zu einem Cache-Miss geführt haben, sowie andere Transaktionen, die einer besonderen Behandlung bedürfen. Ein Lock, wie oben beschrieben, ist eine Art von Transaktion, die eine spezielle Handhabung vom DAC 24 und von anderen Komponenten der Verarbeitungseinheit 11 erfordert. Wenn eine μop zum Beispiel einer arithmetischen Operation entspricht, wird die μop zur funktionalen Einheit 27 versendet, die dann die arithmetische Operation ausführt. Wenn eine μop einer Speicher-referenzierenden Instruktion entspricht – z. B. ein Laden oder Speichern – wird die μop zum MOB-26 versandt.
  • Es versteht sich, dass die Verarbeitungseinheit 11 in 2 ein Beispiel einer beispielhaften Verarbeitungsvorrichtung repräsentieren soll und ferner, dass eine solche Verarbeitungseinheit viele zusätzliche Komponenten, die in diesen Figuren nicht enthalten sind, enthalten kann. Diese Komponenten wurden zur Erleichterung des Verständnisses weggelassen. Zum Beispiel kann die Verarbeitungseinheit 11 eine Adresserzeugungseinheit, eine Reservierungsstation, einen Neuordnungspuffer, einen Scheduler, eine Segmentierungs- und Adressübersetzungseinheit, einen Adressumsetzpuffer, einen Speicherseiten-Miss-Handler, und/oder interne Taktschaltung umfassen. Außerdem versteht es sich, dass viele der in 2 gezeigten Komponenten, obwohl sie als diskrete Elemente dargestellt sind, kombiniert werden und/oder Schaltungen gemeinsam haben können. Am wichtigsten ist, dass die hierin beschriebenen Ausführungsformen nicht auf eine bestimmte Architektur oder Anordnung und auch nicht auf eine bestimmte Terminologie beschränkt sind, die verwendet wird, um eine solche Architektur oder Anordnung zu beschreiben, und die offenbarten Ausführungsformen auf jeder Art von Verarbeitungsvorrichtung unabhängig von der ihr zugeschriebenen Architektur oder Terminologie ausgeführt werden können.
  • Eine oder mehrere der zur Ausführung geplanten μops können eine gesperrte μop umfassen. Das Lock entspricht, wie oben erwähnt, einer Sequenz von Operationen (z. B. Laden, Ändern und Speichern), die in einer Weise, die die Synchronisierung zwischen den Prozessoren und/oder Threads sicherstellt, durchgeführt werden.
  • 3 zeigt eine Instruktion zum Durchführen einer Lese-Modifizieren-Schreib-Operation. Die Instruktion 40 ist eine einzige atomare Instruktion, die fünf Operanden 4145 umfasst. Der Opcode-Operand 41 identifiziert, dass es sich um eine VCMPXCHG-Instruktion handelt. Die Operanden 4244 entsprechen den Quell- und Ziel-Operanden, die SRC1/DEST, SRC2, SRC3 zugeordnet sind, und in einigen Implementierungen, einem Masken-Lagerort (MSK) und/oder einem Offset-(oder ”Immediate”)Operanden 45. Dieser Offset oder Immediate wird verwendet, um beim Adressieren des Speichers 12 für einen Offset von einer Basis-Adresse (wie SRC1) zu sorgen. Die unten angemerkten Instruktionen können derartige Offsets haben, jedoch sind diese aber nicht dargestellt. Implementierungen, die einen Masken-Lagerort 45 spezifizieren verweisen auf ein Register oder einen Speicherort, in dem die Maskenelemente gespeichert sind, die den jeweiligen Datenelementen an dem Speicherort entsprechen, auf den der SRC1/DEST Operand verweist.
  • Als Reaktion auf die Instruktion 40, liest die Verarbeitungseinheit 11 erste Quell-Daten, vergleicht sie mit anderen Quell-Daten und, wenn der Vergleich eine vorgezeichnete Bedingung (wie wahr oder Übereinstimmungsbedingung) erfüllt, werden einige modifizierte Werte in einen Ort geschrieben, der der ursprüngliche Ort der ersten Quelldaten sein kann. Wenn die vorbestimmte Bedingung nicht erfüllt ist, werden die ursprünglichen Daten am Ort nicht verändert. Die Instruktion verwendet drei Quellenoperanden (wie z. B. SRC1, SRC2 und SRC3, wie hier nachfolgend verwendet) und einen Ziel-Operanden (wie z. B. DEST, wie hier nachfolgend verwendet), um den Ort der verschiedenen Informationen zu liefern, die bei der Ausführung der Instruktion verwendet werden. Betriebsspezifische Register können zum Bereitstellen einer oder mehrerer der Quelldaten und/oder zum Speichern der Zieldaten verwendet werden, wenn die Instruktion ausgeführt wird, so dass die Notwendigkeit entfällt, die Operanden explizit in dem tatsächlichen Instruktionsformat zu spezifizieren. Ferner beziehen sich in diesem Beispiel der SRC1 Operand und der DEST Operand auf den gleichen Speicherort (SRC1/DEST).
  • Vor der Ausführung der Instruktion 40 werden SRC1, SRC2 und SRC3 in Register in der Registerdatei-Einheit 29 geladen. Zum Beispiel, um einen Wert sicher zu aktualisieren, der an einem Ort gespeichert ist, der durch den SRC1/DEST Operanden angegeben ist, wird der Wert zunächst in einen Ort gelesen, der durch den SRC2 Operanden angegeben ist, und ein Ersatz-Wert wird in einen Ort gelesen, der durch den SRC3 Operanden angegeben ist. Dann wird eine atomische Vergleiche-Austausch Operation ausgeführt, um den aktuellen Wert, der mit dem SRC1/DEST Operanden verbunden ist, mit dem Wert zu vergleichen, der mit dem SRC2 Operanden verbunden ist (d. h. der aktuelle Wert kann sich von dem eingangs kopierten Wert aufgrund einer Modifikation durch einen anderen Agenten unterscheiden). Wenn sich der Wert nicht geändert hat, wird er durch den Wert ersetzt, der mit dem SRC3 Operanden verknüpft ist, und das Null-Flag wird gesetzt, um ein erfolgreiches Update anzuzeigen. Allerdings, wenn ein anderer Agent den Wert zwischen der ursprünglichen Kopie und der Vergleiche-Austausch Operation geändert hat, wird der aktuelle Wert nicht ersetzt und das Null-Flag wird gelöscht, um ein fehlgeschlagenes Update anzuzeigen.
  • Das Blockdiagramm der 4 zeigt den Informationsfluss, wenn die Instruktion 40 ausgeführt wird. Die Verarbeitungseinheit 11 umfasst eine Ausführungseinheit 46 (z. B. DAC 24 aus 2), eine Registerdatei 29, eine BIU 23 und einen Decoder 21, die alle miteinander durch den lokalen Bus 19 gekoppelt sind. Die Registerdatei 29 weist eine Vielzahl von Registern auf, auf die von der Ausführungseinheit 46 zum Ausführen der verschiedenen Operationen zugegriffen werden kann. Wie in 4 angegeben, ist die Instruktion VCMPXCHG 40 innerhalb der Ausführungseinheit 46 gezeigt und gestrichelte Linien sind von den Operanden der Instruktion zu den entsprechenden Registern gezeigt, die mit SRC1, SRC2, SRC3 und DEST verbunden sind. Die Register befinden sich innerhalb der Registerdatei 29. Der Decoder 21 wird dazu verwendet, die verschiedenen Instruktionen (einschließlich der Instruktion VCMPXCHG 40) zu dekodieren, damit die Ausführungseinheit 46 die Operationen durchführt.
  • Der Speicher 12, der zuvor in den 1 und 2 beschrieben wurde, ist durch den Bus 19 und/oder Bus 22 mit der BIU 23 gekoppelt dargestellt. Dementsprechend können Datenübertragungen zwischen der Verarbeitungseinheit 11 und dem Speicher 12 durch die BIU 54a oder den lokalen Bus 19 erfolgen. Es ist anzumerken, dass sich die Programm-Routine, die die Instruktion VCMPXCHG 40 verwendet, in einem Speicher befinden kann, der auch der Speicher 12 sein oder diesen aufweisen kann.
  • Der folgende Pseudo-Code zeigt Beispiele, wie die Instruktion VCMPXCHG 40 arbeitet. Anderer Pseudo-Code, andere Sprachen, Operationen sowie Reihenfolgen von Operationen und/oder Zahlen können verwendet werden.
  • Figure 00090001
  • In den besonderen VEX.128 und VEX.256 Beispielen, die oben erwähnt sind, sind Lock-Werte in den Bits [127:0] bzw. Bits [255:0] eines 512-Bit-Speicherplatzes, auf den durch SRC1/DEST verwiesen wird, gespeichert (z. B. eine 64-Byte-Cache-Zeile oder Register). In einer Ausführungsform gibt es eine Eins-zu-Eins-Entsprechung zwischen den Lock-Werten, auf die durch SRC1/DEST verwiesen wird, und den gemeinsamen Speicherplätzen 15, welchen sie entsprechen. Zum Beispiel kann SRC1/DEST auf sechzehn 8-Bit-Lock-Werte (128 Bit) verweisen, die jeweils einem entsprechenden von sechzehn Speicherorten in einer Cache-Zeile oder SIMD Register entsprechen. Alternativ kann SRC1/DEST auf 32 8-Bit-Lock-Werte (256 Bits) verweisen, die jeweils einem jeweiligen von 32 Speicherplätzen in einer Cache-Zeile oder SIMD Register entsprechen.
  • Wieder mit Bezug auf die obigen Beispiele, zeigt das Ergebnis des Vergleichs zwischen SRC1/DEST und SRC2, ob die Lock-Werte verändert wurden. Eine wahre Bedingung zeigt an, dass die Locks nicht geändert wurden und dass die Locks im entsperrten Zustand sind. Wenn diese Bedingung erfüllt ist, werden die Werte, auf die durch SRC3 verwiesen wird, zu SRC1/DEST geschrieben, wobei die Lock-Werte in einen verriegelten Zustand geändert werden, um zu verhindern, dass andere Agenten Zugang zum gemeinsamen Raum (den gemeinsamen Räumen) haben. Danach wird das Null-Flag (ZF) gesetzt, um eine erfolgreiche Operation anzuzeigen.
  • Eine falsche Bedingung zeigt an, dass eine oder mehrere der Locks geändert (verriegelt) wurden und dass ein anderer Agent die Eigentümerschaft am gemeinsamen Raum erlangt hat. Wenn die Bedingung falsch ist, werden die Werte, auf die durch SRC1/DEST verwiesen wird (die aktuellen Lock-Werte) zu SRC2 gespeichert, und das Null-Flag wird gelöscht, um eine erfolglose Operation anzuzeigen. Die oberen Bytes von SRC2 werden dann vor der Rückkehr von der Operation gelöscht.
  • In der Regel wird der abfragende Agent, wenn der Zugang zunächst abgelehnt wird, den Zugang weiterhin wieder versuchen, bis der Zugang erlangt ist. In einigen Implementierungen wird eine äußere Schleife vor dem erneuten Ausführen der VCMPXCHG Instruktion 40 ein nicht atomisches Laden und Testen umfassen. Sobald der Prozessor seinen Zugang (seine Zugänge) zum gemeinsamen Speicherplatz 15 abschließt, wird er in der Regel seine Kontrolle über den gemeinsamen Speicherplatz 15 mit einem Schreib-Zyklus zum Lock 16 freigeben, um es zu entriegeln, so dass andere Agenten nun den Eintritt in den gemeinsamen Speicherraum 15 erlangen können. Es ist jedoch klar, dass es dies eine Design-Wahl ist, die von der Systemarchitektur bestimmt sein kann, wie der Prozessor den gemeinsam verwendeten Speicherplatz freigibt.
  • In einigen Implementierungen umfasst die VCMPXCHG Instruktion 40 einen Maskenvektor mit mehreren Maskenelementen, die jeweils einem aus einer Vielzahl von Datenelementen entsprechen, auf die von SRC1/DEST verwiesen wird. Der Maskenvektor-Speicherort kann ein Register in einer Registerdatei-Einheit 29, wie zum Beispiel ein Schattenregister, ein Steuerregister, ein Flag-Register, ein Allzweck-Register, ein SIMD-Register oder ein anderes geeignetes Register sein. In einer Ausführungsform gibt es eine Eins-zu-Eins-Entsprechung zwischen Datenelementen, auf die von SRC1/DEST verwiesen wird, und entsprechenden Maskenelementen, die in einem Maskenregister gespeichert sind. Maskenelemente oder -werte können Flags, Marker, Tabs, Indikatoren, und oder andere Zahlen, Bits und/oder Codes zum Angeben umfassen, ob ein entsprechendes Datenelement (z. B. in einem entsprechenden oder angezeigten Registerplatz) zu vergleichen und/oder zu modifizieren ist. Zum Beispiel kann ein Maskenelement mit einem Wert von ”1” anzeigen, dass ein entsprechendes Datenelement zu modifizieren ist, andernfalls kann eine ”0” verwendet werden. Andere Zahlen oder Flags können verwendet werden.
  • Beispiele von maskierten VCMPXCHGD- und VCMPXCHGQ Instruktionen werden unten in Pseudo-Code für einen 16 breiten, 512-Byte-Vektor bzw. ein 8 breiten, 512-Byte-Vektor dargestellt. In den maskierten Vergleichs-Implementierungen werden nur die aktiven Elemente verglichen und aktualisiert.
  • Figure 00120001
  • In den speziellen oben erwähnten VCMPXCHGD- und VCMPXCHGQ Beispielen wird eine Variable ALL_CMPS_SUCCEED zuerst auf 1 voreingestellt (d. h. eine wahre Bedingung). Nach der Einstellung wird für jedes aktive Maskenelement (z. B. ein Maskenelement mit einem bestimmten, darin gespeicherten Wert, einschließlich von, zum Beispiel, einer binären 1 oder Hexadezimalwerten 0 × 01, 0 × FF oder 0 × 80) der entsprechende Speicherplatz, auf den durch SRC1/DEST verwiesen ist, mit dem Wert verglichen, auf den durch entsprechende Bits in SRC2 verwiesen wird. Wenn keine Maske verwendet wird, wird jeder der Speicherplätze, auf die durch SRC1/DEST verwiesen ist, mit dem Wert verglichen, auf den durch entsprechende Bits in SRC2 verwiesen ist.
  • Wiederum zeigt das Ergebnis des Vergleichs zwischen entsprechenden Werten von SRC1/DEST und SRC2 an, ob der betreffende Lock-Werte modifiziert wurde. In diesen Beispielen zeigt jedoch eine wahre Bedingung (d. h. ein nicht übereinstimmender Zustand) an, dass das Lock geändert wurde und dass ein anderer Agent die Eigentümerschaft der gemeinsamen Speicherplatzes übernommen hat. Wenn diese Bedingung für irgendeinen der referenzierten Speicherplätze erfüllt ist, wird ALL_CMPS_SUCCEED gelöscht, was darauf hinweist, dass alle Vergleiche nicht gelungen sind. Danach wird das Null-Flag gelöscht und für jedes aktive Maskenelement wird der Wert, der in den entsprechenden Speicherplatz gespeichert ist, auf den durch SRC1/DEST verwiesen ist, in entsprechende Bits in SRC2 geladen.
  • Wenn das Ergebnis des Vergleichs falsch ist (d. h. für jedes der aktiven Maskenelemente ein entsprechender Wert, auf den durch SRC1/DEST verwiesen ist, mit einem entsprechenden Wert in SRC2 übereinstimmt), bleibt ALL_CMPS_SUCCEED ohne Veränderung gesetzt. Danach wird das Null-Flag (ZF) gesetzt und für jedes aktive Maskenelement wird der Wert, der in dem entsprechenden Speicherplatz in SRC3 gespeichert ist, in entsprechende Bits in SRC1/DEST geladen, wobei die Lock-Werte in einen verriegelten Zustand geändert werden, um andere Agenten an einem Zugriff auf die gemeinsamen Bereiche zu hindern.
  • Das Blockdiagramm aus 5 zeigt ein anderes Beispiel des Informationsflusses, wenn die Instruktion 40 ausgeführt wird. Wie in 5 angegeben, ist die Instruktion VCMPXCHG 40 als sich innerhalb der Ausführungseinheit 46 befindend gezeigt und gestrichelte Linien sind von den Operanden der Instruktion zu den entsprechenden Registern gezeigt, die SRC2, SRC3 und MSK zugeordnet sind. In diesem Beispiel ist der Maskenspeicherort (MSK) ein Maskenregister und die Speicherposition, die SRC1/DEST zugeordnet ist, ist ein L1-Cache. Die Register befinden sich der Registerdatei-Einheit 29.
  • Vor der Ausführung der Instruktion 40 wird SRC1 in den L1-Cache vorgeladen und SRC2, SRC3 und MSK-Daten werden in die Register in der Registerdatei-Einheit 29 geladen. Das Maskenregister speichert eine Vielzahl von Maskenelementen, die jeweiligen Datenelementen in dem Speicherplatz entsprechen, die dem SRC1/DEST Operanden zugeordnet ist. Darüber hinaus wird ein Vergleichswert zunächst in eine Stelle gelesen, die durch den SRC2 Operanden spezifiziert ist, und ein Ersatz-Wert wird in eine Stelle gelesen, die durch den SRC3 Operanden spezifiziert ist. Dann wird die Instruktion 40 ausgeführt, um die Ausführungseinheit 46 dazu zu veranlassen, entsprechende Datenelemente, die den SRC1/DEST und SRC2 Operanden zugeordnet sind, zu vergleichen, und um, wenn eine Übereinstimmung vorhanden ist, Datenelemente von SRC1/DEST mit entsprechenden Datenelementen aus SRC3 zu ersetzen. Wenn keine Übereinstimmung vorhanden ist, bewirkt die Ausführung der Instruktion 40, dass die Ausführungseinheit 46 SRC2-Datenelemente mit entsprechenden SRC1/DEST-Datenelementen ersetzt.
  • Bei einigen Implementierungen wird der Vergleich zwischen Paaren von SRC1/DEST und SRC2 Datenelementen nur ausgeführt, wenn ein entsprechendes Maskenelement aktiv ist. Bei bestimmten Implementierungen ist die Ausführungseinheit 46 ferner konfiguriert, ein Flag zu setzen, wenn eine Übereinstimmung zwischen jedem Paar von entsprechenden Datenelementen existiert, für die ein entsprechendes Maskenelement aktiv ist, und das Flag zu löschen, wenn keine Übereinstimmung zwischen irgendeinem der Paare existiert, für die ein entsprechendes Maskenbit Element aktiv ist. Weiterhin wird bei einigen Implementierungen der Austausch der SRC1/DEST-Datenelemente durch entsprechende SRC3-Datenelemente nur ausgeführt, wenn ein Maskenelement aktiv ist, das dem jeweiligen SRC1/DEST-Datenelement entspricht. Ferner wird bei einigen Implementierungen der Austausch des SRC2-Datenelements durch ein entsprechendes SRC1/DEST-Datenelement nur durchgeführt, wenn ein Maskenelement aktiv ist, das dem SRC1/DEST-Datenelement entspricht.
  • Bei einigen Ausführungsformen ist der Lock-Wert, der einen verriegelten Zustand angibt, der gleiche wie der Maskenwert, der ein aktives Maskenelement angibt (z. B. eine binäre 1). In solchen Fällen kann SRC3 sowohl als ein Maskenvektor als auch als ein Lock-Wert-Ersatzvektor verwendet werden.
  • Bei einigen Implementierungen beschließt die Vergleich-Austausch-Operation die Ausführung ohne Aktualisierung des Wertes, der mit dem SRC2-Operanden verbunden ist. Danach wird ein Flag (z. B. das Null-Flag) geprüft und wenn es anzeigt, dass die Aktualisierungs-Operation mit Bezug auf den Wert, der dem SRC1/DEST-Operanden zugeordnet ist, fehlgeschlagen ist, werden die Schritte kurz vor der Vergleich-Austausch-Operation wiederholt, um vor der Wiederholung der Vergleich-Austausch-Operation Werte zu aktualisieren, die SRC2 und SRC3 zugeordnet sind.
  • Eine oder mehrere Ausführungsformen beinhalten einen Herstellungsartikel, der ein konkretes Maschinen-zugängliches und/oder maschinenlesbares Medium mit einer darauf gespeicherten SIMD Instruktion umfasst, die eine Vektor-Vergleichs-und-Austauschoperation für eine Vielzahl von Datenelementen spezifiziert, wobei jedes Datenelement ein entsprechendes Testelement, Ersatzelement und Maskenelement aufweist, das, wenn es von einer Maschine (z. B. einer Ausführungseinheit) ausgeführt wird, die Maschine veranlasst, Datenelemente mit entsprechenden Testelementen zu vergleichen, wenn jeweilige Maskenelemente aktiv sind; und in Reaktion auf die Feststellung, dass alle Vergleiche eine Übereinstimmung zeigen, ein Flag zu setzen, und verglichene Datenelemente mit entsprechenden Ersatzelementen zu ersetzen und in Reaktion auf die Feststellung, dass alle Vergleiche keine Übereinstimmung zeigen, ein Flag zu löschen und verglichene Testelemente mit entsprechenden Datenelementen zu ersetzen. Das konkrete Medium kann eines oder mehrere feste Materialien umfassen. Das Medium kann einen Mechanismus umfassen, der Informationen bereitstellt, zum Beispiel in einer Form speichert, auf welche durch die Maschine zugegriffen werden kann. Optional kann das Medium zum Beispiel beschreibbare Medien, wie zum Beispiel eine Floppy-Diskette, ein optisches Speichermedium, eine optische Platte, eine CD-ROM, eine magnetische Platte, eine magneto-optische Platte, einen Festspeicher (ROM), einen programmierbaren ROM (PROM), einen löschbaren und programmierbaren ROM (EPROM), einen elektrisch löschbaren und programmierbaren ROM (EEPROM), einen Direktzugriffsspeicher (RAM), einen statischen RAM (SRAM), einen dynamischen RAM (DRAM), einen Flash-Speicher und Kombinationen davon umfassen.
  • Geeignete Maschinen umfassen, sind aber nicht beschränkt auf, Ausführungseinheiten, Allzweck-Prozessoren, Spezial-Prozessoren (z. B. Grafik-Prozessoren und kryptographische Prozessoren), Verschlüsselungs-Beschleuniger, Netzwerk-Kommunikation-Prozessoren, Computersysteme, Netzwerk-Geräte, Modems, Personal Digital Assistants (PDAs), Mobiltelefone und eine Vielzahl von anderen elektronischen Geräten mit einer oder mehreren Ausführungseinheiten, um nur einige Beispiele zu nennen. Noch andere Ausführungsformen beziehen sich auf ein Computersystem, ein eingebettetes System oder eine andere elektronische Vorrichtung mit einer Ausführungseinheit und/oder eine Durchführung eines Verfahrens, wie es hierin offenbart ist.
  • 6 zeigt ein Beispiel für ein geeignetes Computersystem 50, das einen Prozessor 51 aufweist. Der Prozessor weist mindestens eine Ausführungseinheit 52 auf, die geeignet ist, mindestens eine Vektor-Vergleichs-und-Austausch-Instruktion 53 auszuführen.
  • Der Prozessor ist über einen Bus (z. B. einen Front-Side-Bus) oder eine andere Verbindung 55 an einen Chipsatz 54 gekoppelt. Die Verbindung kann verwendet werden, um Datensignale zwischen dem Prozessor und anderen Komponenten in dem System über den Chipsatz zu übertragen.
  • Der Chipsatz enthält einen System-Logikchip, der als Speicher-Controller-Hub (MCH) 56 bekannt ist. Der MCH ist mit dem Front-Side-Bus oder der anderen Verbindung 55 gekoppelt.
  • Ein Speicher 58 ist mit dem MCH gekoppelt ist. In verschiedenen Ausführungsformen kann der Speicher einen Speicher mit wahlfreiem Zugriff (RAM) aufweisen. Ein DRAM ist ein Beispiel für eine Art von RAM, die in einigen, aber nicht allen Computersystemen verwendet wird. Wie gezeigt, kann der Speicher verwendet werden, um Instruktionen 59, wie beispielsweise eine oder mehrere Mehrfach-Instruktionen und Daten 60 zu speichern.
  • Ein Komponenten-Interconnect 61 ist ebenfalls mit dem MCH gekoppelt. Bei einer oder mehreren Ausführungsformen kann der Komponenten-Interconnect eine oder mehrere periphere Komponenten-Interconnect-Express (PCIe) Schnittstellen aufweisen. Der Komponenten-Interconnect kann zulassen, dass andere Komponenten mit dem Rest des Systems über den Chipsatz gekoppelt sind. Ein Beispiel für solche Komponenten ist ein Grafik-Chip oder eine andere Grafik-Vorrichtung, wenngleich dies optional und nicht erforderlich ist.
  • Der Chipsatz weist auch einen Eingabe/Ausgabe(I/O)-Controller-Hub (ICH) 62 auf. Der ICH ist mit dem MCH durch einen MCH-Schnittstellen-Bus oder einen anderen Interconnect 63 gekoppelt. Bei einer oder mehreren Ausführungsformen kann der Bus oder der andere Interconnect 63 ein Direct-Media-Interface (DMI) aufweisen.
  • Eine Datenspeichervorrichtung 64 ist mit dem ICH gekoppelt. Bei verschiedenen Ausführungsformen kann der Datenspeicher eine Festplatte, ein Diskettenlaufwerk, eine CD-ROM-Vorrichtung, eine Flash-Speichervorrichtung oder dergleichen oder eine Kombination davon aufweisen.
  • Ein zweiter Komponenten-Interconnect 65 ist auch mit dem ICH gekoppelt. Bei einer oder mehreren Ausführungsformen kann der zweite Komponenten-Interconnect eine oder mehrere periphere Komponenten-Interconnect-Express (PCIe) Schnittstellen aufweisen. Der Komponenten-Interconnect kann zulassen, dass verschiedene Arten von Komponenten mit dem Rest des Systems über den Chipsatz gekoppelt sind.
  • Ein serieller Erweiterungs-Port 66 ist ebenfalls mit dem ICH gekoppelt. Bei einer oder mehreren Ausführungsformen kann der serielle Erweiterungs-Port einen oder mehrere Universal-Serial-Bus(USB)Ports aufweisen. Der serielle Erweiterungs-Port gestattet es, dass verschiedene andere Arten von Eingabe/Ausgabe-Vorrichtungen an den Rest des Systems über den Chipsatz gekoppelt sein.
  • Einige veranschaulichende Beispiele für andere Komponenten, die gegebenenfalls mit dem ICH gekoppelt werden können, umfassen, sind aber nicht beschränkt auf, einen Audio-Controller, einen drahtlosen Transceiver und eine Benutzereingabevorrichtung (z. B. eine Tastatur, Maus).
  • Ein Netzwerk-Controller 67 ist auch mit dem ICH gekoppelt. Der Netzwerk-Controller kann es dem System ermöglichen, mit einem Netzwerk gekoppelt zu sein.
  • Bei einer oder mehreren Ausführungsformen kann das Computersystem eine Version des Windows (TM) Betriebssystems, erhältlich von der Microsoft Corporation, Redmond, Washington ausführen. Alternativ können auch andere Betriebssysteme, wie z. B. UNIX, Linux oder Embedded-Systeme verwendet werden.
  • Dies ist nur ein besonderes Beispiel für ein geeignetes Computersystem. Zum Beispiel kann in einer oder mehreren alternativen Ausführungsformen der Prozessor mehrere Kerne aufweisen. Als ein weiteres Beispiel kann der MCH 56 in einer oder mehreren alternativen Ausführungsformen physisch auf dem Chip mit dem Prozessor 51 integriert sein und der Prozessor kann direkt mit einem Speicher 58 durch den integrierten MCH gekoppelt sein. Als ein weiteres Beispiel können bei einer oder mehreren alternativen Ausführungsformen andere Komponenten auf dem Chip mit dem Prozessor integriert werden, um z. B. ein System-on-Chip(SoC)Design bereitzustellen. Als ein weiteres Beispiel kann das Computersystem in einer oder mehreren alternativen Ausführungsformen mehrere Prozessoren aufweisen.
  • 7 ist ein weiteres Beispiel eines geeigneten Computer-Systems 70. Die zweite beispielhafte Ausführungsform weist eine gewisse Ähnlichkeit mit dem Computersystem 50 auf, das oben beschrieben wurde. Aus Gründen der Übersichtlichkeit wird die Diskussion überwiegend die Unterschiede betonen ohne erneut alle Ähnlichkeiten zu wiederholen.
  • Ähnlich dem Computersystem 50 umfasst das Computersystem 70 einen Prozessor 71 und einen Chipsatz 74 mit einem I/O-Controller-Hub (ICH) 72. Das Computersystem 70 umfasst auch einen ersten Komponenten-Interconnect 81, der mit einem Chipsatz 74 gekoppelt ist, einen zweiten Komponenten-Interconnect 85, der mit dem ICH gekoppelt ist, einen seriellen Erweiterungs-Port 86, der mit dem ICH gekoppelt ist, einen Netzwerk-Controller 87, der mit dem ICH gekoppelt ist, und einen Datenspeicher 84, der mit dem ICH gekoppelt ist.
  • Der Prozessor 71 ist ein Multi-Core-Prozessor und umfasst Prozessor-Kerne 72-1 bis 72-M, wobei M eine ganze Zahl gleich oder größer als zwei (z. B. zwei, vier, sieben oder mehr) sein kann. Jeder Kern kann mindestens eine Ausführungseinheit aufweisen, die geeignet ist, mindestens eine Ausführungsform einer Instruktion auszuführen, wie hierin offenbart ist. Wie gezeigt, weist der Kern-1 einen Cache 88 (z. B. einen L1-Cache) auf. Jeder der anderen Kerne kann in ähnlicher Weise einen dedizierten Cache aufweisen. Die Prozessorkerne können auf einem einzigen integrierten Schaltungs-(IC)-Chip implementiert werden.
  • Der Prozessor beinhaltet auch mindestens einen gemeinsamen Cache 89. Der gemeinsam genutzte Cache kann Daten (z. B. Instruktionen) speichern, die durch eine oder mehrere Komponenten des Prozessors, wie z. B. die Kerne, verwendet werden. Zum Beispiel kann der gemeinsam genutzte Cache lokal Daten, die in einem Speicher 78 gespeichert sind, für einen schnelleren Zugriff durch Komponenten des Prozessors zwischenspeichern. Bei einer oder mehreren Ausführungsformen kann der gemeinsam genutzte Cache einen oder mehrere Caches einer mittleren Ebene, wie z. B. Ebene 2 (L2), Ebene 3 (L3), Ebene 4 (L4), oder einer anderen Cache-Ebene, wie z. B. einen Cache der letzten Ebene (LLC) und/oder Kombinationen davon aufweisen.
  • Die Prozessor-Kerne und der gemeinsam genutzte Cache sind jeweils mit einem Bus oder einer anderen Verbindung 90 gekoppelt. Der Bus oder die andere Verbindung kann die Kerne und den gemeinsamen Cache koppeln und eine Kommunikation ermöglichen.
  • Der Prozessor umfasst auch einen Speicher-Controller-Hub (MCH) 76. Wie in dieser beispielhaft gezeigten Ausführungsform gezeigt ist, ist der MCH in den Prozessor 71 integriert. Zum Beispiel kann sich der MCH auf dem Chip mit den Prozessor-Kernen befinden. Der Prozessor ist mit dem Speicher 78 durch den MCH gekoppelt. Bei einer oder mehreren Ausführungsformen kann der Speicher einen DRAM aufweisen, obwohl dies nicht erforderlich ist.
  • Der Chipsatz weist einen Eingabe/Ausgabe(I/O)-Hub 91 auf. Der I/O-Hub ist mit dem Prozessor über einen Bus (z. B. einen QuickPath-Interconnect (QPI)) oder eine andere Verbindung 75 gekoppelt. Der erste Komponenten-Interconnect 81 ist mit dem I/O-Hub 91 gekoppelt.
  • Dies ist nur ein besonderes Beispiel für ein geeignetes System. Andere System-Designs und Konfigurationen, die auf dem Gebiet der Laptops, Desktops, Handheld PCs, Personal Digital Assistants, Engineering-Workstations, Server, Netzwerkgeräte, Netzwerk-Hubs, Switches, Embedded-Prozessoren, digitalen Signalprozessoren (DSPs), Grafik-Geräte, Video-Spiel-Geräte, Set-Top-Boxen, Mikro-Controller, Mobiltelefone, tragbaren Media-Player, Handheld-Geräte und verschiedener anderer elektronischer Geräte bekannt sind, sind ebenfalls geeignet. Im Allgemeinen ist eine große Vielfalt von Systemen oder elektronischen Vorrichtungen, die geeignet sind, einen eingebauten Prozessor und/oder eine Ausführungseinheit einzubeziehen, wie hierin offenbart ist, allgemein geeignet.
  • In der obigen Beschreibung sind für die Zwecke der Erläuterung zahlreiche spezifische Details ausgeführt worden, um ein gründliches Verständnis der Ausführungsformen der Erfindung zu vermitteln. Es ist jedoch für einen Fachmann auf dem Gebiet offensichtlich, dass eine oder mehrere andere Ausführungsbeispiele ohne einige dieser spezifischen Details praktiziert werden können. Die beschriebenen besonderen Ausführungsformen sind nicht vorgesehen, um die Erfindung zu beschränken, sondern um Ausführungsformen der Erfindung zu veranschaulichen. Der Umfang der Erfindung ist nicht durch die oben angegebnen spezifischen Beispiele, sondern nur durch die nachfolgenden Ansprüche bestimmt. In anderen Fällen sind gut bekannte Schaltungen, Strukturen, Vorrichtungen, und Operationen in Form eines Blockdiagramms oder ohne Details gezeigt, um das Verständnis der Beschreibung nicht unnötig zu verschleiern. Wo angemessen, wurden Bezugszeichen oder Endabschnitte von Bezugszeichen bei den Figuren wiederholt, um entsprechende oder analoge Elemente zu kennzeichnen, die optional ähnliche Charakteristika zeigen können.
  • Bestimmte Funktionen können durch Hardware-Komponenten ausgeführt werden, oder können durch Maschinen-ausführbare Instruktionen verkörpert werden, die verwendet werden können, um eine Schaltung oder Hardware, die mit den Instruktionen zum Durchführen der Operationen programmiert ist, zu bewirken, oder um wenigstens zu dieser zu führen. Die Schaltung kann einen Allzweck- oder Spezial-Prozessor oder eine Logik-Schaltung aufweisen, um nur einige Beispiele zu nennen. Die Operationen können auch gegebenenfalls durch eine Kombination von Hardware und Software ausgeführt werden. Eine Ausführungseinheit und/oder ein Prozessor kann eine spezielle oder besondere technische Schaltung oder eine andere Logik aufweisen, die auf eine Maschinen-Instruktion oder auf ein oder mehrere Steuersignale, die von der Maschinen-Instruktion abgeleitet sind, reagieren, um einen Instruktions-spezifizierten Ergebnisoperanden zu speichern.
  • Es ist auch festzustellen, dass Verweise in dieser Beschreibung auf ”eine einzelne Ausführungsform”, ”eine Ausführungsform” oder ”eine oder mehrere Ausführungsformen” zum Beispiel bedeuten, dass ein bestimmtes Merkmal bei der Praktizierung von Ausführungsformen der Erfindung umfasst sein kann. Ebenso ist festzustellen, dass in der Beschreibung manchmal verschiedene Merkmale zusammen in einer einzigen Ausführungsform, Figur oder Beschreibung davon zum Zweck der Vereinfachung der Offenbarung und der Unterstützung des Verständnisses der verschiedenen erfindungsgemäßen Aspekte gruppiert sind. Dieses Verfahren der Offenbarung ist jedoch nicht dahin zu interpretieren, dass beabsichtigt ist, dass die Erfindung mehr Merkmale erfordert, als ausdrücklich in jedem Anspruch genannt sind. Vielmehr können, wie die folgenden Ansprüche reflektieren, erfinderische Aspekte in weniger als allen Merkmalen einer einzelnen offenbarten Ausführungsform liegen. Somit werden die der detaillierten Beschreibung folgenden Ansprüche hiermit ausdrücklich in diese detaillierte Beschreibung aufgenommen, wobei jeder Anspruch für sich selbst für eine separate Ausführungsform der Erfindung steht.
  • Eine Anzahl von Ausführungsformen der Erfindung wurde beschrieben. Dennoch ist klar, dass verschiedene Modifikationen ohne Abweichung vom Geist und Umfang der Erfindung vorgenommen werden können. Zum Beispiel müssen die Computersysteme nicht auf Computersysteme mit mehreren Prozessoren oder Speicher-Zugriffs-Vorrichtungen beschränkt sein. Die vorliegende Erfindung kann leicht in einem Einzel-Prozessor-System verwendet werden, in dem eine Lese-Modifizieren-Schreiben-Instruktion implementiert ist.
  • Es versteht sich weiterhin, dass die Zugriffssteuerungen auf gemeinsam genutzte Bereiche des Speichers durch andere Mittel als die Test-und-Set-Sequenz, die in dem obigen Beispiel beschrieben wurde, erreicht werden können. Zum Beispiel kann ein einfacher Zähler verwendet werden, bei dem jeder Zugriff durch einen festgelegten Zählwert inkrementiert wird.
  • Es sei auch angemerkt, dass die VCMPXCHG Instruktion der bevorzugten Ausführungsform die Lese-Modifizieren-Schreib-Operation ausführt, dass aber die Änderungs- und Schreib-Phasen im Wesentlichen in einem einzigen Schritt erreicht werden. Anstelle der Berechnung von modifizierenden Werten nach dem Lesen der ursprünglichen Daten und anschließendem Schreiben der modifizierenden Werte, sind die modifizierenden Werte der VCMPXCHG Instruktion für den Gebrauch durch die Instruktion vorhanden. Obwohl ihre Verwendung von der Entscheidung abhängig ist, die erhalten wird, wenn der Vergleich gemacht wird, können diese voreingestellten modifizierenden Werte (SRC3) unmittelbar in das Ziel geschrieben werden, um den Zielwert zu ändern.
  • Somit wird eine Technik für die Durchführung einer Vektor-Vergleichs-und-Austausch-Operation, die eine Maske verwendet, beschrieben. Es versteht sich, dass die hierin beschriebenen VCMPXCHG Instruktionen und Implementierungen auch in anderen Eigenschaften verwendet werden können und nicht auf die Funktion der Steuerung des Zugriffs auf einen gemeinsam verwendeten Speicherplatz begrenzt sein müssen. Zum Beispiel können die VCMPXCHG Instruktionen für eine spekulative Ausführung verwendet werden, in der eine SIMD Operation an einer Vielzahl von Datenelementen durchgeführt wird, deren Ergebnisse nur in den gemeinsam verwendeten Speicherplatz geschrieben werden, wenn die Datenelemente nicht von einem anderen Agenten während der Operation geändert wurden. Dementsprechend liegen andere Ausführungsformen innerhalb des Umfangs der folgenden Ansprüche.

Claims (22)

  1. Verfahren, umfassend: Decodieren durch einen Decodierer in einer Verarbeitungsvorrichtung einer einzelnen Instruktion, die eine Vektor-Vergleichs-und-Austausch-Operation für eine Vielzahl von Datenelementen zwischen einem ersten Speicherplatz, einem zweiten Speicherplatz, und einem dritten Speicherplatz spezifiziert; Ausgeben der einzelnen Instruktion zur Ausführung durch eine Ausführungseinheit in der Verarbeitungsvorrichtung und in Reaktion auf die Ausführung der einzelnen Instruktion, Vergleichen von Datenelementen vom ersten Speicherplatz mit entsprechenden Datenelementen im zweiten Speicherplatz; und auf die Feststellung, dass eine Übereinstimmung vorhanden ist, Ersetzen der Datenelemente vom ersten Speicherplatz durch entsprechende Datenelemente vom dritten Speicherplatz.
  2. Verfahren nach Anspruch 1, wobei die einzelne Instruktion des Weiteren einen Masken-Speicherplatz spezifiziert, der eine Vielzahl von Maskenelementen, die jeweiligen Datenelementen im ersten Speicherplatz entsprechen, speichert.
  3. Verfahren nach Anspruch 2, wobei das Vergleichen von Datenelementen vom ersten Speicherplatz mit entsprechenden Datenelementen im zweiten Speicherplatz aufweist: Vergleichen eines Datenelements vom ersten Speicherplatz mit einem entsprechenden Datenelement im zweiten Speicherplatz, wenn ein Maskenelement, das dem Datenelement vom ersten Speicherplatz entspricht, aktiv ist.
  4. Verfahren nach Anspruch 2, wobei das Ersetzen der Datenelemente vom ersten Speicherplatz mit entsprechenden Datenelementen vom dritten Speicherplatz aufweist: Ersetzen eines Datenelements vom ersten Speicherplatz mit einem entsprechenden Datenelement vom dritten Speicherplatz, wenn ein Maskenelement, das dem Datenelement vom ersten Speicherplatz entspricht, aktiv ist.
  5. Verfahren nach Anspruch 1, ferner umfassend: Ersetzen der Datenelemente aus der zweiten Mehrzahl von Datenelementen mit entsprechenden Datenelementen vom ersten Speicherplatz, wenn eine Übereinstimmung nicht vorhanden ist.
  6. Verfahren nach Anspruch 5, wobei die einzelne Instruktion des Weiteren einen Maskenspeicherort spezifiziert, der eine Vielzahl von Maskenelementen speichert, die jeweiligen Datenelementen im ersten Speicherplatz entsprechen.
  7. Verfahren nach Anspruch 6, wobei das Vergleichen von Datenelementen vom ersten Speicherplatz mit entsprechenden Datenelementen im zweiten Speicherplatz aufweist: Vergleichen eines Datenelements vom ersten Speicherplatz mit einem entsprechenden Datenelement im zweiten Speicherplatz, wenn ein Maskenelement, das dem Datenelement vom ersten Speicherplatz entspricht, aktiv ist.
  8. Verfahren nach Anspruch 6, wobei das Ersetzen der Datenelemente vom ersten Specherplatz mit entsprechenden Datenelementen vom dritten Speicherplatz aufweist: Ersetzen eines Datenelements vom ersten Speicherplatz mit einem entsprechenden Datenelement vom dritten Speicherplatz, wenn ein Maskenelement, das dem Datenelement vom ersten Speicherplatz entspricht, aktiv ist.
  9. Verfahren nach Anspruch 6, wobei das Ersetzen der Datenelemente vom zweiten Speicherplatz mit entsprechenden Datenelementen vom ersten Speicherplatz aufweist: Ersetzen eines Datenelements vom zweiten Speicherplatz mit einem entsprechenden Datenelement vom ersten Speicherplatz, wenn ein Maskenelement, das dem Datenelement vom ersten Speicherplatz entspricht, aktiv ist.
  10. Prozessor mit: einem Speicherplatz, der konfiguriert ist, um eine erste Vielzahl von Datenelementen, eine zweite Vielzahl von Datenelementen, und eine dritte Vielzahl von Datenelementen zu speichern, wobei jedes der zweiten und dritten Vielzahl von Datenelementen einem der ersten Mehrzahl von Datenelementen entspricht, einem Decoder, der konfiguriert ist, um eine einzelne Instruktion zu dekodieren, die eine Vektor-Vergleichs-und-Austausch-Operation für die erste, zweite und dritte Vielzahl von Datenelementen spezifiziert, und einer Ausführungseinheit, die an den Decoder gekoppelt ist, um decodierte Instruktionen zu empfangen, und mit dem Speicherplatz gekoppelt ist, um die Vektor-Vergleichs-und-Austausch-Operation auszuführen; wobei auf die Ausführung der Vektor-Vergleichs-und-Austausch-Operation, die Ausführungseinheit konfiguriert ist zum: Vergleichen entsprechender Datenelemente aus der ersten und zweiten Mehrzahl von Datenelementen; und auf die Feststellung, dass eine Übereinstimmung vorhanden ist, Ersetzen von Datenelementen von der ersten Mehrzahl von Datenelementen mit entsprechenden Datenelementen der dritten Vielzahl von Datenelementen.
  11. Prozessor nach Anspruch 10, wobei als Reaktion auf die Ausführung der Vektor-Vergleichs-und-Austausch-Operation, die Ausführungseinheit ferner konfiguriert ist zum: Ersetzen von Datenelementen aus der zweiten Mehrzahl von Datenelementen mit entsprechenden Datenelementen aus der ersten Mehrzahl von Datenelementen, wenn eine Übereinstimmung nicht vorhanden ist.
  12. Prozessor nach Anspruch 11, wobei die einzelne Instruktion des Weiteren einen Maskenspeicherort spezifiziert, der eine Vielzahl von Maskenelementen speichert, die den jeweiligen Datenelementen in der ersten Vielzahl von Datenelementen entsprechen.
  13. Prozessor nach Anspruch 12, wobei die Ausführungseinheit konfiguriert ist, um entsprechende Datenelemente von der ersten und zweiten Mehrzahl von Datenelementen zu vergleichen, wenn ein jeweiliges Maskenelement aktiv ist.
  14. Prozessor nach Anspruch 12, wobei die Ausführungseinheit konfiguriert ist, um die Datenelemente aus der ersten Mehrzahl von Datenelementen mit entsprechenden Datenelementen der dritten Vielzahl von Datenelementen zu ersetzen, wenn ein jeweiliges Maskenelement aktiv ist.
  15. Prozessor nach Anspruch 12, wobei die Ausführungseinheit konfiguriert ist, um Datenelemente von der zweiten Mehrzahl von Datenelementen mit entsprechenden Datenelementen aus der ersten Mehrzahl von Datenelementen zu ersetzen, wenn ein jeweiliges Maskenelement aktiv ist.
  16. Prozessor nach Anspruch 12, wobei die Ausführungseinheit die Vektor-Vergleichs-und-Austausch-Operation als eine atomare Operation ausführt.
  17. Prozessor nach Anspruch 12, wobei auf die Ausführung der Vektor-Vergleichs-und-Austausch-Operation die Ausführungseinheit ferner konfiguriert ist, um: ein Flag zu setzen, wenn eine Übereinstimmung zwischen jedem Paar von entsprechenden Datenelementen existiert, für das ein entsprechendes Maskenelement aktiv ist, und das Flag zu deaktivieren, wenn eine Übereinstimmung nicht existiert.
  18. System, umfassend: einen Speicher-Controller, der mit einem ersten Speicherplatz gekoppelt ist, der konfiguriert ist, um eine erste Vielzahl von Datenelementen zu speichern, und einen Prozessor, der mit dem Speicher-Controller gekoppelt ist, wobei der Prozessor aufweist: eine Registerdatei, die konfiguriert ist, um eine zweite Vielzahl von Datenelementen und eine dritte Vielzahl von Datenelementen zu speichern, wobei jedes der zweiten und dritten Vielzahl von Datenelementen einem der ersten Mehrzahl von Datenelementen entspricht; einen Decoder, der konfiguriert ist, um eine einzelnen Instruktion zu dekodieren, die eine Vektor-Vergleichs-und-Austausch-Operation für die erste, zweite und dritte Vielzahl von Datenelementen spezifiziert, und eine Ausführungseinheit, die mit dem Decoder gekoppelt ist, um decodierte Instruktionen zu empfangen, und mit dem ersten Speicherplatz und der Registerdatei gekoppelt ist, um die Vektor-Vergleichs-und-Austausch-Operation auszuführen; wobei, auf die Ausführung der Vektor-Vergleichs-und-Austausch-Operation, die Ausführungseinheit konfiguriert ist zum: Vergleichen entsprechender Datenelemente aus der ersten und zweiten Mehrzahl von Datenelementen; und auf die Feststellung, dass eine Übereinstimmung vorhanden ist, Ersetzen von Datenelementen von der ersten Mehrzahl von Datenelementen mit entsprechenden Datenelementen aus der dritten Vielzahl von Datenelementen; und auf die Feststellung, dass eine Übereinstimmung nicht vorhanden ist, Ersetzen von Datenelementen aus der zweiten Mehrzahl von Datenelementen mit entsprechenden Datenelementen aus der ersten Mehrzahl von Datenelementen.
  19. System nach Anspruch 18, wobei die einzelne Instruktion des Weiteren ein Maskenregister spezifiziert, das eine Vielzahl von Maskenelementen speichert, die jeweiligen Datenelementen in der ersten Vielzahl von Datenelementen entsprechen.
  20. System nach Anspruch 19, wobei die Ausführungseinheit konfiguriert ist, um Paare von entsprechenden Datenelementen von der ersten und zweiten Mehrzahl von Datenelementen zu vergleichen, wenn ein jeweiliges Maskenelement aktiv ist, um ein Flag zu setzen, wenn jeder Vergleich zu einer Übereinstimmung führt, und das Flag zu deaktivieren, wenn jeder Vergleich nicht zu einer Übereinstimmung führt.
  21. System nach Anspruch 20, wobei die Ausführungseinheit die Vektor-Vergleichs-und-Austausch-Operation als eine atomare Operation ausführt.
  22. Computerlesbares Medium mit darauf gespeicherten Instruktionen, die betrieben werden können, um eine Prozessor-Vorrichtung zu veranlassen zum: Decodieren einer einzigen Instruktion, die eine Vektor-Vergleichs-und-Austausch-Operation für eine Vielzahl von Datenelementen spezifiziert, wobei jedes Datenelement ein entsprechendes Testelement, Ersatzelement und Maskenelement aufweist; Vergleichen von Datenelementen mit entsprechenden Testelementen, wenn jeweilige Maskenelemente aktiv sind; und auf die Feststellung, dass alle Vergleiche eine Übereinstimmung zeigen, Setzen eines Flag und ersetzen verglichener Datenelemente mit entsprechenden Ersatzelementen und auf die Feststellung, dass alle Vergleiche keine Übereinstimmung zeigen, Löschen eines Flag und ersetzen verglichener Testelemente mit entsprechenden Datenelementen.
DE112010004963T 2009-12-22 2010-11-29 Synchronisieren von SIMD Vektoren Withdrawn DE112010004963T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/644,529 2009-12-22
US12/644,529 US8996845B2 (en) 2009-12-22 2009-12-22 Vector compare-and-exchange operation
PCT/US2010/058238 WO2011087590A2 (en) 2009-12-22 2010-11-29 Synchronizing simd vectors

Publications (1)

Publication Number Publication Date
DE112010004963T5 true DE112010004963T5 (de) 2012-11-22

Family

ID=44152784

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112010004963T Withdrawn DE112010004963T5 (de) 2009-12-22 2010-11-29 Synchronisieren von SIMD Vektoren

Country Status (9)

Country Link
US (1) US8996845B2 (de)
JP (2) JP5421458B2 (de)
KR (1) KR101461378B1 (de)
CN (2) CN105094749A (de)
BR (1) BRPI1005259A2 (de)
DE (1) DE112010004963T5 (de)
GB (1) GB2488619B (de)
TW (2) TWI525539B (de)
WO (1) WO2011087590A2 (de)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US8996845B2 (en) 2009-12-22 2015-03-31 Intel Corporation Vector compare-and-exchange operation
US9417855B2 (en) 2011-09-30 2016-08-16 Intel Corporation Instruction and logic to perform dynamic binary translation
US10318291B2 (en) 2011-11-30 2019-06-11 Intel Corporation Providing vector horizontal compare functionality within a vector register
US9665371B2 (en) 2011-11-30 2017-05-30 Intel Corporation Providing vector horizontal compare functionality within a vector register
US20140108480A1 (en) * 2011-12-22 2014-04-17 Elmoustapha Ould-Ahmed-Vall Apparatus and method for vector compute and accumulate
WO2013095637A1 (en) 2011-12-23 2013-06-27 Intel Corporation Apparatus and method of improved permute instructions
US9946540B2 (en) 2011-12-23 2018-04-17 Intel Corporation Apparatus and method of improved permute instructions with multiple granularities
WO2013095659A1 (en) 2011-12-23 2013-06-27 Intel Corporation Multi-element instruction with different read and write masks
US9588764B2 (en) 2011-12-23 2017-03-07 Intel Corporation Apparatus and method of improved extract instructions
US9632980B2 (en) 2011-12-23 2017-04-25 Intel Corporation Apparatus and method of mask permute instructions
US9619236B2 (en) 2011-12-23 2017-04-11 Intel Corporation Apparatus and method of improved insert instructions
WO2013095635A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Instruction for merging mask patterns
WO2013095609A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Systems, apparatuses, and methods for performing conversion of a mask register into a vector register
CN104067224B (zh) 2011-12-23 2017-05-17 英特尔公司 在不同的粒度水平下对数据值进行广播和掩码的指令执行
CN107908427B (zh) 2011-12-23 2021-11-09 英特尔公司 用于多维数组中的元素偏移量计算的指令
US10037205B2 (en) * 2011-12-23 2018-07-31 Intel Corporation Instruction and logic to provide vector blend and permute functionality
CN104011649B (zh) * 2011-12-23 2018-10-09 英特尔公司 用于在simd/向量执行中传播有条件估算值的装置和方法
WO2013100948A1 (en) * 2011-12-28 2013-07-04 Intel Corporation Delivering real time interrupts with an advanced programmable interrupt controller
US20140019723A1 (en) * 2011-12-28 2014-01-16 Koichi Yamada Binary translation in asymmetric multiprocessor system
EP2798471A4 (de) * 2011-12-30 2016-12-21 Intel Corp Prozessoren, verfahren, systeme und anweisungen für den zugang zu einer struktur
US9575753B2 (en) 2012-03-15 2017-02-21 International Business Machines Corporation SIMD compare instruction using permute logic for distributed register files
US9405538B2 (en) 2012-12-28 2016-08-02 Intel Corporation Functional unit having tree structure to support vector sorting algorithm and other algorithms
US9170789B2 (en) 2013-03-05 2015-10-27 Intel Corporation Analyzing potential benefits of vectorization
US9411593B2 (en) * 2013-03-15 2016-08-09 Intel Corporation Processors, methods, systems, and instructions to consolidate unmasked elements of operation masks
US9405937B2 (en) 2013-06-28 2016-08-02 Intel Corporation Method and apparatus for securing a dynamic binary translation system
US9292298B2 (en) * 2013-07-08 2016-03-22 Arm Limited Data processing apparatus having SIMD processing circuitry
US9495155B2 (en) 2013-08-06 2016-11-15 Intel Corporation Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment
GB2520603B (en) * 2013-09-26 2016-04-06 Imagination Tech Ltd Atomic memory update unit and methods
US11257271B2 (en) 2013-09-26 2022-02-22 Imagination Technologies Limited Atomic memory update unit and methods
US9466091B2 (en) 2013-09-26 2016-10-11 Imagination Technologies Limited Atomic memory update unit and methods
US9891936B2 (en) 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
US9390023B2 (en) * 2013-10-03 2016-07-12 Cavium, Inc. Method and apparatus for conditional storing of data using a compare-and-swap based approach
US10445092B2 (en) * 2014-12-27 2019-10-15 Intel Corporation Method and apparatus for performing a vector permute with an index and an immediate
US9996350B2 (en) 2014-12-27 2018-06-12 Intel Corporation Hardware apparatuses and methods to prefetch a multidimensional block of elements from a multidimensional array
US10528345B2 (en) * 2015-03-27 2020-01-07 Intel Corporation Instructions and logic to provide atomic range modification operations
US10019264B2 (en) * 2016-02-24 2018-07-10 Intel Corporation System and method for contextual vectorization of instructions at runtime
GB2549737B (en) * 2016-04-26 2019-05-08 Advanced Risc Mach Ltd An apparatus and method for managing address collisions when performing vector operations
CN109313552A (zh) * 2016-07-27 2019-02-05 英特尔公司 用于复用向量比较的系统和方法
WO2018022525A1 (en) * 2016-07-27 2018-02-01 Intel Corporation System and method for multiplexing vector mask matches
EP3336692B1 (de) 2016-12-13 2020-04-29 Arm Ltd Replikatpartitionsanweisung
EP3336691B1 (de) * 2016-12-13 2022-04-06 ARM Limited Replikatelementanweisung
CN107832845A (zh) * 2017-10-30 2018-03-23 上海寒武纪信息科技有限公司 一种信息处理方法及相关产品
CN111258640B (zh) * 2018-11-30 2022-10-04 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
CN111258642B (zh) * 2018-11-30 2022-10-04 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
CN111258637B (zh) * 2018-11-30 2022-08-05 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
CN111258638B (zh) * 2018-11-30 2022-10-04 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
CN111258639B (zh) * 2018-11-30 2022-10-04 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
US20200210181A1 (en) * 2018-12-29 2020-07-02 Intel Corporation Apparatuses, methods, and systems for vector element sorting instructions
US20200401412A1 (en) * 2019-06-24 2020-12-24 Intel Corporation Hardware support for dual-memory atomic operations
CN110515659B (zh) * 2019-08-28 2021-10-01 中国人民解放军国防科技大学 一种原子指令的执行方法和装置
CN110515660B (zh) * 2019-08-28 2021-08-06 中国人民解放军国防科技大学 一种加速原子指令执行的方法和装置
WO2022266842A1 (zh) * 2021-06-22 2022-12-29 华为技术有限公司 一种多线程数据处理方法及装置
CN115098165B (zh) * 2022-06-13 2023-09-08 昆仑芯(北京)科技有限公司 数据处理方法、装置、芯片、设备及介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4482956A (en) * 1982-11-04 1984-11-13 International Business Machines Corporation Parallel queueing method
JPS61288243A (ja) * 1985-06-17 1986-12-18 Fujitsu Ltd コンペアアンドスワツプ命令処理方式
JPS6285372A (ja) 1985-10-09 1987-04-18 Nec Corp マルチプロセツサシステムにおけるコンペアアンドスワツプ方式
US6460121B1 (en) * 1998-09-14 2002-10-01 Compaq Information Technologies Group, L.P. Method for providing an atomic memory read using a compare-exchange instruction primitive
US7308559B2 (en) 2000-02-29 2007-12-11 International Business Machines Corporation Digital signal processor with cascaded SIMD organization
US6880071B2 (en) 2001-04-09 2005-04-12 Sun Microsystems, Inc. Selective signalling of later reserve location memory fault in compound compare and swap
US7107305B2 (en) 2001-10-05 2006-09-12 Intel Corporation Multiply-accumulate (MAC) unit for single-instruction/multiple-data (SIMD) instructions
CN100545804C (zh) * 2003-08-18 2009-09-30 上海海尔集成电路有限公司 一种基于cisc结构的微控制器及其指令集的实现方法
US8607241B2 (en) * 2004-06-30 2013-12-10 Intel Corporation Compare and exchange operation using sleep-wakeup mechanism
US7219213B2 (en) 2004-12-17 2007-05-15 Intel Corporation Flag bits evaluation for multiple vector SIMD channels execution
US7509463B2 (en) 2005-12-01 2009-03-24 Sony Computer Entertainment, Inc. Cell processor atomic compare and swap using dedicated synergistic processor element
US20070260634A1 (en) 2006-05-04 2007-11-08 Nokia Corporation Apparatus, system, method, and computer program product for synchronizing the presentation of media content
US7627723B1 (en) 2006-09-21 2009-12-01 Nvidia Corporation Atomic memory operators in a parallel processor
US7908255B2 (en) * 2007-04-11 2011-03-15 Microsoft Corporation Transactional memory using buffered writes and enforced serialization order
US8996845B2 (en) 2009-12-22 2015-03-31 Intel Corporation Vector compare-and-exchange operation

Also Published As

Publication number Publication date
CN102103570A (zh) 2011-06-22
TWI525539B (zh) 2016-03-11
TWI427533B (zh) 2014-02-21
GB2488619A (en) 2012-09-05
GB2488619B (en) 2017-10-18
US8996845B2 (en) 2015-03-31
KR101461378B1 (ko) 2014-11-20
TW201428622A (zh) 2014-07-16
JP5876458B2 (ja) 2016-03-02
CN105094749A (zh) 2015-11-25
WO2011087590A3 (en) 2011-10-27
JP2012531682A (ja) 2012-12-10
WO2011087590A2 (en) 2011-07-21
KR20120096588A (ko) 2012-08-30
JP5421458B2 (ja) 2014-02-19
TW201140435A (en) 2011-11-16
GB201119083D0 (de) 2011-12-21
US20110153989A1 (en) 2011-06-23
BRPI1005259A2 (pt) 2013-04-02
JP2014059902A (ja) 2014-04-03
CN102103570B (zh) 2015-08-12

Similar Documents

Publication Publication Date Title
DE112010004963T5 (de) Synchronisieren von SIMD Vektoren
DE112009000741B4 (de) Vektorbefehle zum Ermöglichen von effizienter Synchronisation und parallelen Reduktionsoperationen
DE112005003874B3 (de) Transaktionsgestützter Verarbeitungsbetrieb mit gemeinsam genutzten Daten in einer Multiprozessorumgebung
DE112005003098B4 (de) Verfahren und Vorrichtung zum Zugreifen auf einen physikalischen Speicher von einer CPU oder einem Prozessorelement mit hoher Leistung
DE112006002237B4 (de) Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem
DE112007000812B4 (de) Vorrichtung mit einer speichereinheit und drei logiken, verfahren zum durchführen der verfahrensschritte der vorrichtung undsystem mit einem speicher und einem prozessor zur bereitstellung eines effizienten mechanismus‘ für transaktionalspeicherausführungen in out-of-order-prozessoren
DE112005000706B4 (de) Verfahren und System zum Bereitstellen von Multi-Threading auf Nutzerebene
DE102018005105A1 (de) Befehle für entfernte atomare operationen
DE102013022299B3 (de) Schutz globaler Register in einem Multithreaded-Prozessor
DE112009005006T5 (de) Optimierungen für ein ungebundenes transaktionales Speichersystem (UTM)
DE202007019502U1 (de) Globaler Überlauf für virtualisierten Transaktionsspeicher
DE102008061062A1 (de) Befehle und Logik zum Durchführen von Maskenlade- und -speicheroperationen
DE102012023574A1 (de) Verfahren, Vorrichtung und System zum Effizienten Verarbeiten von mehreren Abbildungen virtueller Adressen bei der transaktionalen Abarbeitung
DE112004001133T5 (de) Warteschlangen-Sperren mit Monitor-Memory-Wait
DE102009012766A1 (de) Ein Zugriffssperrenvorgang, um atomare Aktualisierungen zu einem geteilten Speicher zu ermöglichen
DE112012007088B4 (de) Vorrichtung, verfahren und system mit einem befehl zum reduzieren von elementen in einem vektorregister mit einem schrittweisem zugriffsmuster
DE102018132521A1 (de) Vorrichtung und verfahren zur verflachung und reduktion von schleifen in einer single instruction, multiple data- (simd-) pipeline
DE102014003399A1 (de) Systeme und Verfahren zur Implementierung transaktionalen Speichers
DE102005032949A1 (de) Verfahren und Vorrichtung zum Implementieren von Speicherordnungsmodellen mit Ordnungsvektoren
DE102013206423A1 (de) Multithread-transaktionale-Speicherkohärenz
DE112005002402T5 (de) Hybride Hardware-/Software-Implementierung eines Transaktionsspeicherzugriffs
DE102014003799A1 (de) Systeme und Verfahren zur Übertragungseliminierung mit Bypass-Mehrfachinstanziierungstabelle
DE102007054057A1 (de) Mechanismus zum Detektieren und Vorhersagen eines kritischen Abschnitts zur Hardware-Lock-Elision
DE102007006190A1 (de) Techniken zur Verwendung von Speicher-Attributen
DE102018129341A1 (de) Verfahren und Einrichtung für Mehrfachlade- und Mehrfachspeicher-Vektorbefehle

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee