DE112011103197T5 - Verfahren und Vorrichtung für universelle logische Operationen - Google Patents

Verfahren und Vorrichtung für universelle logische Operationen Download PDF

Info

Publication number
DE112011103197T5
DE112011103197T5 DE112011103197T DE112011103197T DE112011103197T5 DE 112011103197 T5 DE112011103197 T5 DE 112011103197T5 DE 112011103197 T DE112011103197 T DE 112011103197T DE 112011103197 T DE112011103197 T DE 112011103197T DE 112011103197 T5 DE112011103197 T5 DE 112011103197T5
Authority
DE
Germany
Prior art keywords
value
bits
bit
direct
instruction
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
DE112011103197T
Other languages
English (en)
Inventor
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 DE112011103197T5 publication Critical patent/DE112011103197T5/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
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes

Landscapes

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

Abstract

Eine Vorrichtung und ein Verfahren zum Ausführen arbiträrer logischer Operationen, die durch eine Tabelle spezifiziert werden, werden beschrieben. Beispielsweise umfasst eine Ausführungsform ein Verfahren zum Ausführen einer logischen Operation auf einem Computerprozessor: Lesen von Daten aus jedem von zwei oder mehr Quelloperanden; Kombinieren der Daten, die aus dem Quelloperanden gelesen worden sind, um einen Indexwert zu erzeugen, wobei der Indexwert eine Untermenge von Bits innerhalb eines direkten Wertes identifiziert, der mit der Anweisung übertragen wird; Lesen der Bits aus dem direkten Wert und speichern der Bits, die aus dem direkten Wert gelesen worden sind, in einem Zielregister, um das Ergebnis der Anweisung zu erzeugen.

Description

  • Hintergrund
  • Gebiet der Erfindung
  • Diese Erfindung betrifft allgemein das Gebiet von Computerprozessoren. Insbesondere bezieht sich die Erfindung auf eine Vorrichtung und ein Verfahren zum Unterstützen universeller logischer Operationen auf einem Computerprozessor.
  • Beschreibung des verwandten Standes der Technik
  • Computerprozessoren führen Anweisungen aus, um mathematische Operationen und logische Operationen durchzuführen. Mathematische Operationen umfassen z. B. Fließkomma- und ganzzahlig Addition, Subtraktion, Multiplikation und Division mit unterschiedlichen Genauigkeitsgraden. Logische Operationen umfassen Funktionen wie AND, OR, NAND, NOR, XOR, Links-/Rechtsverschiebung, Swizzle, Selektion und Voting, um nur einige zu nennen.
  • Unter bestimmte Umständen (insbesondere, wenn drei oder mehr Operanden involviert sind, können relativ einfache logische Operationen die Ausführung in einer erheblichen Anzahl von Anweisungen erfordern. Beispielsweise erfordert eine Logik wie dest = (src1 AND dest) OR (src2 AND (NOT dest)) eine Spezifizierung, dass, falls ein bestimmtes Bit in dem Zählregister (dest) gesetzt ist, das Sourceregister 1 (src1) gewählt wird, während andernfalls das Sourceregister 2 (src2) ausgewählt wird. Das Ausführen dieser Operationen unter Verwendung herkömmlicher Techniken erfordert die Ausführung mehrerer verschiedener Anweisungen (zwei AND-Operationen, eine OR-Operation und eine NOT-Operation). Einer Auswahl anderer verhältnismäßig einfacher Funktionen muss mit mehreren Sequenzen von Anweisungen unter Verwendung herkömmlicher Techniken implementiert werden.
  • Daher waren neue Techniken von Vorteil zum Ausführen von logischen Operationen, welche die Ausführung weniger Anweisungen erfordern.
  • Kurze Beschreibung der Zeichnungen
  • Ein besseres Verständnis der vorliegenden Erfindung kann aus der folgenden Beschreibung in Verbindung mit den folgenden Zeichnungen erlangt werden, in denen Folgendes dargestellt ist:
  • 1 stellt eine Ausführungsform der Erfindung dar, in welcher Indices zu einem direkten Wert aus drei Quelloperanden erzeugt werden.
  • 2 stellt eine Ausführungsform des Verfahrens zum Indizieren eines direkten Wertes dar, um logische Operationen auszuführen.
  • 3 stellt eine weitere Ausführungsform des Verfahrens dar, um logische Operationen auszuführen.
  • 4 stellt eine Prozessorarchitektur dar, die in einer Ausführungsform der Erfindung eingesetzt wird.
  • 5 stellt eine Systemarchitektur dar, die in einer Ausführungsform der Erfindung eingesetzt wird.
  • 6 stellt mehrere Bearbeitungselemente gemäß einer Ausführungsform der Erfindung dar.
  • Detaillierte Beschreibung
  • In der folgenden Beschreibung werden zu Zwecken der Erklärung mehrere spezifische Details dargestellt, um ein vollständiges Verständnis der Ausführungsform der Erfindung, die nachfolgend beschrieben wird, zu geben. Es wird jedoch von dem Fachmann verstanden, dass die Ausführungsformen der Erfindung ohne einige dieser spezifischen Details ausgeführt werden können. In anderen Fällen werden gut bekannte Strukturen und Vorrichtungen in Form von Blockdiagrammen dargestellt, um von den grundlegenden Prinzipien der Ausführungsform der Erfindung nicht abzulenken.
  • Ein „direkter Wert” ist ein binärer Wert, der zu einer Anweisung gehört (z. B. explizit als Teil der Anweisung enthalten ist oder mit der Anweisung kombiniert ist). Ein gut bekannter direkter Wert, der zu dem Befehlssatz des x86 gehört, ist in einem 8-Bit direkter Wert, der mit imm8 bezeichnet wird. Der direkte Wert für eine Anweisung wird mit der Anweisung zur Kompilierungszeit erzeugt. Obgleich die Ausführungsformen der Erfindung, die nachfolgend beschrieben werden, die direkten Werte imm8 oder imm16 verwenden, sind die zugrundeliegenden Prinzipien der Erfindung nicht auf diese spezielle Art des direkten Wertes beschränkt. Tatsächlich können die zugrundeliegenden Prinzipien der Erfindung unter Verwendung jeder Art von binärem Code, der mit einer Anweisung verknüpft ist, implementiert werden.
  • In einer Ausführungsform der Erfindung werden verschiedene direkte Werte verwendet, um verschiedene logische Operationen zu identifizieren (z. B. AND, NAND, XOR, Inversion, Selektion, Vote, etc.). In dieser Ausführungsform werden bestimmte Bits aus den Quelloperanden einer Anweisung kombiniert, um einen Indexwert zu bilden, der Bitpositionen innerhalb des direkten Werts der Anweisung identifiziert. Die Bits, welche aus den identifizierten Positionen gelesen werden, werden in einem Zielregister kombiniert, um zu dem Ergebnis der logischen Operation zu gelangen. In anderer Weise ausgedrückt, wird der direkte Wert als eine Nachschlagtabelle verwendet werden, um zum Ergebnis für jede logische Operation zu gelangen.
  • 1 stellt ein spezielles Beispiel dar, in welchem Bits aus drei Operanden gelesen werden, die in einem Quellregister 1 (src1) 102, in einem Quellregister 2 (src2) 101 und einem Zielregister (dest) 100 gespeichert sind, um einen Index 105 zu bilden, der eine Bitposition innerhalb eines direkten Wertes 110 identifiziert. Die binären Werte an den identifizierten Bitpositionen werden dann in das Zielregister 100 kopiert. Obgleich diese besondere Registeranordnung zum Zwecke der Beschreibung verwendet wird, sind die zugrundeliegenden Prinzipien der Erfindung nicht auf irgendwelche besondere Registersätze beschränkt. Beispielsweise kann ein drittes bestimmtes Quellregister benutzt werden (z. B. „source register 3”), anstelle ein „destination” Register zu verwenden, um einen Quelloperanden zu speichern.
  • In dem speziellen Beispiel, das in 1 gezeigt ist, werden Bits aus den ersten Bitpositionen des Zielregisters 100 und den Quellregistern 101 und 102 anfänglich gelesen, um einen Index 010 zu bilden, wie dargestellt (wie durch die durchgezogenen Pfeile angezeigt). In einer Ausführungsform wird der Index aus einer bitweisen Verknüpfug (Konkatenation) der drei Quellwerte gebildet. Der Index 010 identifiziert die Position 2 des direkten Wertes 110 (d. h. der binäre Wert 010 ist 2). Das Bit aus der Bitposition 2 wird dann aus dem direkten Wert gelesen (eine binäre 1 in dem dargestellten Beispiel) und in dem Zielregister an der ersten Bitposition gespeichert, wie gezeigt. Der gleiche Vorgang wird für jedes der Bits von jedem der Quelloperanden implementiert, bis alle Bits gelesen wurden und die indizierten Bitwerte aus dem direkten Wert in das Zielregister kopiert wurden. Beispielsweise wird, wie in 1 gezeigt, ein Indexwert von 110 erzeugt unter Verwendung von Bits aus den zweiten Bitpositionen der Ziel- und Quellregister und dieser Indexwert wird verwendet, um den direkten Wert an der Bitposition 6 zu indizierten (d. h. ein binärer Wert 110 ist 6). Das Bit von der Bitposition 6 wird dann von dem direkten Wert (eine binäre 0) gelesen und in der zweiten Bitposition des Zielregisters gespeichert.
  • Ein Verfahren gemäß einer Ausführungsform der Erfindung wird in 2 dargestellt. Bei 201 werden Werte aus den spezifizierten Bitpositionen der Operandenregister (z. B. dest, src1, src2) gelesen. Mehrere Sätze von Werten können gleichzeitig aus mehreren Indexwerten parallel gelesen werden. Bei 202 werden die Werte kombiniert, um einen Index zu dem direkten Wert zu bilden, und bei 203 wird der Index verwendet, um eine oder mehrere Bitpositionen innerhalb des direkten Wertes zu identifizieren. Wie vorhergehend erwähnt, werden in einer Ausführungsform Bits aus den entsprechenden Bitpositionen in den Quelloperanden verknüpft, um die Indices des direkten Wertes zu bilden. Bei 204 wird der Wert (werden die Werte) an der Bitposition (den Bitpositionen), welche durch die Indexwerte indiziert ist (sind), gelesen und bei 205 werden die Werte aus den indizierten Bitpositionen in das Zielregister kopiert.
  • Unter Verwendung der vorhergehend genannten Techniken können verschiedene direkte Werte spezifiziert werden, um verschiedene logische Operationen zu implementieren. Als ein Beispiel, welches aber nicht beschränkend ist, können die folgenden Arten von Operationen ausgeführt werden, unter Verwendung der folgenden direkten Werte:
    • 1. Setze das Ergebnis alle auf eins. Direkter Wert = 11111111. In diesem Beispiel führen alle Bits, die aus dem direkten Wert gelesen werden, zu einer binären 1 in dem Zielregister.
    • 2. Invertieren beim Kopieren. Direkter Wert = 01010101. Aktuelle NOT-Anweisungen (z. B. jene, die im aktuellen x86 Anweisungssatz implementiert sind) invertieren am Ort unter Zerstörung der ursprünglichen Daten. Im Unterschied dazu kopieren die oben beschriebenen Techniken unter Verwendung des obigen direkten Werts in ein anderes Register. Diese Anweisung kann die Form annehmen dest = NOT src1.
    • 3. Emulieren einer existierenden logischen Operation. Direkter Wert = 10001000. Dieser direkte Wert führt zu einer AND-Operation der Werte in dem Quellregister 1 und im Quellregister 2, d. h. dest = src1 AND src2. Es ist zu beachten, dass, da die Bits 0–3 und die Bits 7–4 identisch sind, der Wert in dem direkten Register (dest) das Ergebnis nicht beeinflusst. Demzufolge wird in einer Ausführungsform das Zielregister nicht gelesen, um den Stromverbrauch zu senken.
  • Die folgende Tabelle (Tabelle A) stellt imm8-Werte dar, welche den bestehenden logischen Operationen des x86 entsprechen: Tabelle A
    Bestehende Operation Direkter Wert
    dest = NOT src1 01010101
    dest = src1 OR src2 11101110
    dest = src1 AND src2 10001000
    dest = src1 ANDN src2 00100010
    dest = src1 XOR src2 01100110
    • 4. Kombinieren zweier existierender logischer Operationen. Direkter Wert = 01111000. Dieser direkter Wert führt zu einem AND des Quellregisters 1 und des Quellregisters 2, wobei das Ergebnis mit dem Wert in dem Zielregister einem XOR unterzogen wird. Diese Anweisung kann die Form annehmen dest = (src1 AND src2) XOR dest. Wie vorhergehend beschrieben, ist der einzige Weg, um diese Operation unter Verwendung von herkömmlichen Techniken zu implementieren, die Ausführung mehrerer unterschiedlicher Anweisungen, welche einen erheblichen Anteil von Zeit und Bearbeitungsressourcen benötigen. Im Unterschied dazu, kann die Verwendung des oben spezifizierten direkten Wertes zu einem Ergebnis in der gleichen Zeit führen, wie die anderen hierin beschriebenen Operationen.
    • 5. Selektion. Direkter Wert = 10101100. Das Ziel dieser Operation ist es, das Zielregister 1 auszuwählen, falls das entsprechende Bit in dem Ziel gesetzt ist, und andernfalls das Zielregister 2 auszuwählen. Üblicherweise würde dies eine Logik erfordern wie: dest = (src1 AND dest) OR (src2 AND (NOT dest)), was eine erhebliche Anzahl von Anweisungen erfordert. Im Unterschied dazu wird die Verwendung des oben spezifizierten direkten Wertes das Ergebnis so effektiv liefern, wie die anderen Operationen mit direktem Wert, die hierin spezifiziert sind.
    • 6. Voting. Direkter Wert = 11101000. Durch Verwendung dieser Operation wird von den drei Eingaben der populärste Wert ausgewählt. Beispielsweise, falls ein Bit im Zielregister 0 ist, das Bit in dem Quellregister 11 ist und das Bit in dem Quellregister 20 ist, dann ist der populärste Wert 0. Somit wird eine 0 ausgewählt und in dem Zielregister gespeichert.
  • Es ist zu verstehen, dass die vorangehenden Operationen lediglich zum Zwecke der Darstellung vorgesehen sind. Die zugrundeliegenden Prinzipien der Erfindung sind nicht auf irgendeinen besonderen Satz von Operationen beschränkt. Eine virtuelle unbeschränkte Anzahl von logischen Operationen kann unter Verwendung verschiedener direkter Werte gemäß den zugrundeliegenden Prinzipien der Erfindung implementiert werden (obgleich mit einem direkten Wert von 8 Bit nur 256 logische Operationen möglich sind).
  • Der folgende Pseudo-Code stellt eine Ausführungsform der Erfindung dar, wenn diese in einer Prozessorpipeline mit Operanden mit 64 Bit implementiert ist und ein direkter Wert von imm8 verwendet wird:
    Figure 00060001
  • In dieser Implementierung wird ein Indexwert berechnet durch Verknüpfung von jedem der Bitwerte aus dem Zielregister (dest), Quellregister 1 (src1) und Quellregister 2 (src2) an den Bitpositionen i (zwischen 0 und 63). Der Effekt von den Operationen <<2 und <<1 ist, die Bits um zwei bzw. eins nach links zu schieben, wodurch die Bits angeordnet werden, um genau den Index zu bilden. Beispielsweise ist, falls der Bitwert aus dem Operanden 1 ist, das Ergebnis von dest[i]<<2 100, das Ergebnis von src2[i]<<1 ist 010 und das Ergebnis von src1[i] ist 001. Eine bitweise OR-Operation wird dann an den Ergebnissen durchgeführt (wie durch den | Operator angezeigt). Das Endergebnis ist ein Indexwert, welcher ein bestimmtes Bit innerhalb von imm8 identifiziert. Es ist zu beachten, dass die äußere for()-Schleife nur zu Zwecken einer Pseudo-Code-Darstellung dient. In einer Ausführungsform werden alle 64 Operationen parallel in separaten Kopien der Hardware durchgeführt.
  • Der folgende Pseudo-Code stellt eine andere Ausführungsform der Erfindung dar, wenn diese in einer Prozessorpipeline implementiert ist unter Verwendung von 512-Bit-Registern, von denen jedes 16 32-Bit gepackte Datenelemente speichert, und einem direkten Wert von imm8:
    Figure 00070001
  • In dieser Ausführungsform wird ein Maskenregister verwendet, welches ein Bit speichert, das mit jedem der 16 32-Bit gepackten Datenelementen verknüpft ist. Der Test mask[n] != 0 zeigt an, dass, wenn ein Maskenbit, welches mit dem Datenelement verknüpft ist, Null ist, der aktuelle Wert, der in dem Zielregister (dest) gespeichert ist, für dieses Datenelement unverändert ist. Falls jedoch das Maskenbit nicht Null ist, dann wird die next-FOR-Schleife ausgeführt, was dazu führt, dass Indexwerte für die Datenelemente berechnet werden (wie oben beschrieben). Die for()-Schleifen dienen wiederum lediglich zur Darstellung. In einer Ausführungsform werden alle 512 Operationen parallel durchgeführt.
  • Obgleich die Ausführungsformen der Erfindung, die oben beschrieben wurden, mit drei Quelloperanden arbeiten, können die zugrundeliegenden Prinzipien der Erfindung auf jede Anzahl von Operanden angewandt werden. Beispielsweise stellt der folgende Pseudo-Code dar, wie vier Operanden (drei Quellen und ein Ziel) benutzt werden können, um einen Indexwert in einem 16-Bit-Direktwert (imm16) zu erzeugen:
    Figure 00080001
  • Alternativ kann eine der Quellen von einem Maskenregister kommen:
    Figure 00080002
  • Wie in dem obigen Code angezeigt, können in dieser Ausführungsform vier Operanden in dem Maskenregister gespeichert werden. Der Indexwert wird erzeugt durch Ausführen eines bitweisen OR auf entsprechenden Bits aus dem Maskenregister (um 3 nach links geschoben); dem Zielregister (um 2 nach links geschoben); dem Quellregister 2 (um 1 nach links geschoben) und dem Quellregister 1. Der resultierende 4-Bit-Wert wird dann benutzt als ein lookup zu dem 16-Bit-Direktwert imm16.
  • Eine beispielhafte Prozessorarchitektur
  • 3 stellt einen beispielhaften Prozessorkern 300 dar, auf dem Ausführungsformen der Erfindung implementiert werden können. Der generische Prozessorkern 300 soll viele verschiedene Arten von Prozessorkernarchitekturen beschreiben, wie Complex Instruction Set (CISC), Reduced Instruction Set (RISC) und Very Long Instruction Word (VLIW). Der generische Prozessorkern 300 der Figur weist Folgendes auf: 1) eine Fetch-Einheit 303, die Anweisungen abruft (z. B. von einem Cache und/oder einem Speicher); 2) eine Dekodiereinheit 304, welche die Anweisungen dekodiert; 3) eine Schedule-Einheit 305, welche das Timing und/oder die Reihenfolge der Anweisungsausgabe zu den Ausführungseinheiten 306 bestimmt (es ist zu beachten, dass der Scheduler optional ist); 4) Ausführungseinheiten 306, welche die Anweisungen auführen (typische Anweisungsausfürungseinheiten weisen Verzweigungsausführungseinheiten auf, ganzeilige Arithmetik-Ausführungseinheiten (z. B. ALUs), Fließkomma-Arithmetik-Ausführungseinheiten (z. B. FPUs) und Speicherzugriffseinheiten); und 5) eine Stilllegungseinheit 307, welche den erfolgreichen Abschluss einer Anweisung bezeichnet. Es ist zu beachten, dass der Prozessorkern 300 Mikrocode 308 nutzen kann. Maskenregister 302 können gemäß Ausführungsformen der Erfindungen, wie oben beschrieben, verwendet werden.
  • Ein beispielhaftes Computersystem
  • Das Folgende sind beispielhafte Systeme, die zum Ausführen der Anweisung(en), die hier detailliert beschrieben wurden, geeignet sind. Andere Systeme in Bauformen und Konfigurationen, die im Stand der Technik bekannt sind für Laptops, Desktops, handgehaltene PCs, Personal Digital Assistants, Arbeits- und Workstation, Server, Netwerkgeräte, Netzwerkhubs, Schalter, eingebaute Prozessoren, Digital-Signal-Prozessoren (DSPs), Grafikgeräte, Videospielvorrichtungen, Set-Top-Boxen, Mikrocontroller, Handys, tragbare Medien-Player, handgehaltene Geräte und verschiedene andere elektronische Geräte, sind auch geeignet. Im Allgemeinen ist eine große Auswahl von Systemen oder elektronischen Geräten, die in der Lage sind, einen Prozessor und/oder irgendeine andere Ausführungslogik, wie hier offenbart, aufzunehmen, geeignet.
  • In der 4, auf die nun Bezug genommen wird, ist ein Blockdiagramm eines Systems 400 gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Das System 400 kann eine oder mehrere Bearbeitungselemente 410, 415 aufweisen, die mit einem Grafikspeichersteuerhub (GMCH) 420 gekoppelt sind. Die optionale Natur des zusätzlichen Bearbeitungselements 415 ist in 4 mit unterbrochenen Linien angezeigt.
  • Jedes Bearbeitungselement kann einen einzelnen Kern oder, alternativ, mehrere Kerne aufweisen. Die Bearbeitungselemente können optional andere Elemente neben dem Prozessorkern auf dem Halbleiterchip aufweisen, wie z. B. einen integrierter Speicherkontroller und/oder eine integrierte Eingabe-/Ausgabesteuerlogik. Außerdem können für wenigstens eine Ausführungsform der/die Kern(e) Bearbeitungselemente für Multithreads eingerichtet sein, dadurch, dass sie mehr als einen Hardwarethreadcontext pro Kern aufweisen.
  • 4 stellt dar, dass der GMCH 420 mit einem Speicher 440 gekoppelt sein kann, der z. B. ein Dynamic Random Access Memory (DRAM) sein kann. Der DRAM kann in wenigstens einer Ausführungsform mit einem nicht flüchtigen Cache verknüpft sein.
  • Der GMCH 420 kann ein Chipsatz oder ein Teil eines Chipsatzes sein. Der GMCH 420 kann mit dem/den Prozessor(en) 410, 415, kommunizieren und die Wechselwirkung zwischen dem/den Prozessor(en) 410, 415 und dem Speicher 440 steuern. Der GMCH 420 kann außerdem als eine beschleunigte Bus-Schnittstelle zwischen dem/den Prozessor(en) 410, 415 und anderen Elementen des Systems 400 wirken. In wenigstens einer Ausführungsform kommuniziert der GMCH 420 mit dem/den Prozessor(en) 410, 415 über einen Multi-Drop-Bus, wie einem Frontside-Bus (FSB) 495.
  • Ferner ist der GMCH 420 mit einer Anzeige 440 (wie einem Flachbildschirm) gekoppelt. Der GMCH 420 kann einen integrierten Grafikbeschleuniger aufweisen. Der GMCH 420 ist ferner mit einem Eingabe-/Ausgabe-(I/O)-Steuerhub (ICH) 450 gekoppelt, der verwendet werden kann, um verschiedene Peripheriegeräte an das System 400 zu koppeln. Beispielsweise ist in der Ausführungsform der 4 ein externes Grafikgerät 46 gezeigt, welches ein separates Grafikgerät ist, das mit dem ICH 450 gekoppelt ist, zusammen mit anderen Peripheriegeräten 470.
  • Alternativ können zusätzliche oder andere Bearbeitungselemente auch in dem System 400 vorhanden sein. Zum Beispiel können eine oder mehrere zusätzliche Prozessorelemente 415 einen oder mehrere zusätzliche Prozessor(en) aufweisen, die in dem gleichen Prozessor 410 vorhanden sind, einen oder mehrere zusätzliche Prozessor(en), die heterogen oder asymmetrisch zum Prozessor 410 sind, Beschleuniger (wie z. B. Grafikbeschleuniger oder Digital Signal Processing(DSP)-Einheiten), Field Programmable Gate Arrays, oder andere Bearbeitungselemente. Zwischen den physikalischen Ressourcen 410, 415 kann hinsichtlich eines Spektrums von Metriken von Erfordernissen einschließlich im architektonischen, mikroarchitektonischen, thermischen, Stromverbrauchs-Eigenschaften und dergleichen eine Auswahl von Unterschieden bestehen. Diese Unterschiede können sich effektiv als Asymmetrie und Heterogenität zwischen den Bearbeitungselementen 410, 415 manifestieren. In wenigstens einer Ausführungsform können sich die verschiedenen Bearbeitungselemente 410, 415 in der gleichen Halbleitereinheit befinden.
  • Nun Bezug nehmend auf 5 ist ein Blockdiagramm eines zweiten Systems 500 gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Wie in 5 gezeigt, ist das Multiprozessorsystem 500 ein Punkt-zu-Punkt-Verbindungssystem und umfasst ein erstes Bearbeitungselement 570 und ein zweites Bearbeitungselement 580, die über eine Punkt-zu-Punkt-Verbindung 550 gekoppelt sind. Wie in 5 gezeigt, kann jedes Bearbeitungselement 570 und 580 ein Mehrkernprozessor sein einschließlich erster und zweiter Prozessorkerne (d. h. Prozessorkerne 574a und 574b und Prozessorkerne 584a und 584b).
  • Alternativ kann eines oder mehrere der Bearbeitungselemente 570, 580 ein von einem Prozessor verschiedenes Element sein, wie ein Beschleuniger oder ein Field Programmable Gate Array.
  • Obgleich nur zwei Bearbeitungselemente 570, 580 gezeigt sind, ist es zu verstehen, dass der Umfang der vorliegenden Erfindung darauf nicht beschränkt ist. In anderen Ausführungsformen können ein oder mehrere zusätzliche Bearbeitungselemente in einem gegebenen Prozessor vorhanden sein.
  • Das erste Bearbeitungselement 570 kann ferner ein Speichersteuerhub (MCH) 572 und Punkt-zu-Punkt-(P-P)-Schnittstellen 576 und 578 aufweisen. Ebenso kann das zweite Bearbeitungselemente 580 ein MCH 582 und P-P-Schnittstellen 586 und 588 aufweisen. Die Prozessoren 570, 580 können Daten über eine Punkt-zu-Punkt-(PtP)-Schnittstelle 550 unter Verwendung von PtP-Schnittstellenschaltungen 578, 588 austauschen. Wie in 5 gezeigt, koppeln die MCHs 572 und 582 die Prozessoren an jeweilige Speicher, nämlich einen Speicher 542 und einen Speicher 544, die Teile eines Hauptspeichers sein können, die lokal an den jeweiligen Prozessoren angebracht sind.
  • Die Prozessoren 570, 580 können Daten mit einem Chipsatz 590 über individuelle PtP-Schnittstellen 553, 554 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 576, 594, 586, 598 austauschen. Der Chipsatz 590 kann auch Daten mit einer High-Performance-Grafik-Schaltung 548 über eine High-Performance-Grafikschnittstelle 539 austauschen. Ausführungsformen der Erfindung können sich in jedem Prozessor mit einer Anzahl von Bearbeitungskernen oder in jedem der PtP-Busagenten der 5 befinden. In einer Ausführungsform kann jeder Prozessorkern einen lokalen Cachespeicher (nicht gezeigt) aufweisen oder in anderer Weise mit diesem verbunden sein. Ferner kann gemeinsam genutzter Cache (nicht gezeigt) in einem Prozessor außerhalb der beiden Prozessoren vorhanden sein, jedoch mit den zwei Prozessoren über eine p2p-Zwischenverbindung verbunden sein, so dass die Informationen von einem oder beiden lokalen Cache der Prozessoren in einem gemeinsam genutzten Cache gespeichert werden kann, wenn ein Prozessor in einen Niedrigstromzustand versetzt wird.
  • Die erste Bearbeitungseinheit 570 und die zweite Bearbeitungseinheit 580 können mit einem Chipsatz 590 über eine P-P-Verbindung 576, 586 bzw. 584 gekoppelt sein. Wie in 5 gezeigt ist, weist der Chipsatz 590 eine PtP-Schnittstelle 594 und 598 auf.
  • Ferner weist der Chipsatz 590 nur eine Schnittstelle 592 auf, um den Chipsatz 590 mit einer High-Performance Grafikmaschine 548 zu koppeln. In einer Ausführungsform kann ein Bus 594 benutzt werden, um die Grafikmaschine 548 mit dem Chipsatz 590 zu koppeln. Alternativ kann eine Punkt-zu-Punkt-Zwischenverbindung 549 diese Komponenten koppeln.
  • Umgekehrt kann der Chipsatz 590 mit einem ersten Bus 516 über eine Schnittstelle 596 gekoppelt sein. In einer Ausführungsform kann der Bus 516 ein Peripheral Component Interconnect(PCI)-Bus sein oder ein Bus, wie ein PCI Express-Bus oder andere Arten von I/O-Verbindungsbus der dritten Generation, obgleich der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist.
  • Wie in 5 gezeigt, können verschiedene I/O-Geräte 524 mit dem ersten Bus 516 entlang einer Busbrücke 518 gekoppelt sein, welche den ersten Bus 516 mit einem zweiten Bus 520 koppelt. In einer Ausführungsform kann der zweite Bus 520 ein Low-Pin-Count(LPC)-Bus sein. Verschiedene Geräte können mit dem zweiten Bus gekoppelt sein, einschließlich z. B. eine Tastatur/Maus 522, Kommunikationsgeräten 526 und einer Datenspeichereinheit 528, wie ein Plattenlaufwerk oder ein anderes Massenspeichergerät, welches in einer Ausführungsform einen Code 530 aufweisen kann. Ferner kann ein Audio-I/O-Gerät 524 mit dem zweiten Bus 520 gekoppelt sein. Es ist zu beachten, dass andere Architekturen möglich sind. Zum Beispiel kann anstelle der Punkt-zu-Punkt-Architektur der 5 ein System einen Multi-Drop-Bus oder eine andere solche Architektur implementieren.
  • Nun Bezug nehmend auf 6 ist ein Blockdiagramm eines dritten Systems 600 gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Die gleichen Elemente in den 5 und 6 tragen die gleichen Bezugszeichen und verschiedene Aspekte der 5 wurden aus der 6 weggelassen, um eine Ablenkung von anderen Aspekten in 6 zu vermeiden.
  • 6 stellt dar, dass die Bearbeitungselemente 570, 580 einen integrierten Speicher und eine I/O-Steuerlogik („CL”) 572 bzw. 582 aufweisen. In wenigstens einer Ausführungsform kann die CL 572, 582 eine Speichersteuerhublogik (MCH) aufweisen, wie jene, die vorhergehend in Verbindung mit den 4 und 5 beschrieben wurde. Zusätzlich kann die CL 572, 582 auch eine I/O-Steuerlogik aufweisen. 6 stellt dar, dass nicht nur die Speicher 542, 544 mit der CL 572, 582 gekoppelt sind, sondern auch I/O-Geräte 614 mit der Steuerlogik 572, 582 gekoppelt sind. Legacy I/O-Geräte 516 sind mit dem Chipsatz 590 gekoppelt.
  • Ausführungsformen der Mechanismen, die hier offenbart werden, können in Hardware, Software, Firmware oder Kombinationen solcher Implementierungsansätze implementiert sein. Ausführungsformen der Erfindung können als Computerprogramme oder Programmcode, welcher auf programmierbaren Systemen ausgeführt wird, die wenigstens einen Prozessor, ein Datenspeichersystem (einschließlich flüchtigen und nicht-flüchtigen Speicher und/oder Speicherelementen), wenigstens ein Eingabegerät und wenigstens ein Ausgabegerät umfassen, implementiert werden.
  • Ein Programmcode, wie der Code 530, der in 5 dargestellt ist, kann auf Eingabedaten angewandt werden, um die Funktionen, die hierin beschrieben wurden, auszuführen und Ausgabeinformationen zu erzeugen. Die Ausgabeinformationen können auf ein oder mehrere Ausgabegeräte in bekannter Weise angewandt werden. Zu Zwecken dieser Anwendung weist ein Bearbeitungssystem ein beliebiges System auf, das einen Prozessor besitzt, wie z. B. einen Digital Signal Processor (DSP), einen Microkontroller, einen anwendungsspezifischen integrierten Schaltkreis (ASIC) oder einen Mikroprozessor.
  • Der Programmcode kann in einer high-level procedural- oder objektorientierten Programmiersprache implementiert sein, um mit einem Bearbeitungssystem zu kommunizieren. Der Programmcode kann auch in einer Assembly- oder Maschinensprache implementiert sein, falls dies gewünscht ist. Tatsächlich sind die hierin beschriebenen Mechanismen im Umfang nicht auf eine besondere Programmiersprache beschränkt. In jedem Fall kann die Sprache eine Compilersprache oder eine Interpretersprache sein.
  • Ein oder mehrere Aspekte von wenigstens einer Ausführungsform kann durch darstellende Daten implementiert sein, die auf einem maschinenlesbaren Medium gespeichert sind, welches verschiedene Logiken in dem Prozessor darstellt, welche, wenn sie durch die Maschine gelesen werden, die Maschine dazu veranlassen, eine Logik zu erzeugen, um die hierin beschriebenen Techniken auszuführen. Solche Darstellungen, die als „IP-Kerne” bekannt sind, können auf einem greifbaren, maschinenlesbaren Medium gespeichert werden und an verschiedene Kunden oder Herstellereinrichtungen geliefert werden, um in die Fertigungsmaschinen geladen zu werden, die tatsächlich die Logik oder den Prozessor erzeugen.
  • Solche maschinenlesbaren Speichermedien können, ohne darauf beschränkt zu sein, Folgendes aufweisen: nicht-transistorische, greifbare Anordnungen von Partikeln, die hergestellt oder durch eine Maschine oder ein Gerät gebildet wurden, einschließlich Speichermedien, wie Festplatten, jede andere Art von Disketten einschließlich Floppydisks, optische Disketten, Kompaktdisketten mit Nur-Lesespeicher (CD-ROMs), wiederbeschreibbare Kompaktdisketten (CD-RWs), und magneto-optische Disketten, Halbleitergeräte wie Nur-Lesepeicher (ROMS) Random Access Memories (RAMs) wie dynamische Random Access Memories (DRAMs), Static Random Access Memories (SRAMs), erasable programmable read-only memories (EPROMs), Flash-Speicher, electronically erasable programmable read-only memories (EEPROMs), magnetische und optische Karten oder andere Arten von Medien, die zum Speichern elektronischer Anweisungen geeignet sind.
  • Somit weisen Ausführungsformen der Erfindung nicht-transistorische, greifbare maschinenlesbare Medien auf, welche Anweisungen enthalten, zum Ausführen der Verfahrensausführungsformen der Erfindung, oder Konstruktionsdaten aufweisen, wie HDL, welche Strukturen, Schaltungen, Geräte, Prozessoren und/oder Systemmerkmale, die hier beschrieben wurden, definieren. Solche Ausführungsformen können auch als Programmprodukte bezeichnet werden.
  • Verschiedene Operationen der Anweisung(en), die hier offenbart wurden, können durch Hardwarekomponenten ausgeführt werden und können in maschinenausführbaren Anweisungen verkörpert sein, die verwendet werden, um zu bewirken oder wenigstens dazu zu führen, dass eine Schaltung oder andere Hardwarekomponenten, die mit den Anweisungen programmiert werden, die Operationen ausführen. Die Schaltung kann ein General-Purpose- oder ein Special-Purpose-Prozessor oder eine Logikschaltung sein, um nur einige Beispiele zu nennen.
  • Die Vorgänge können optional durch eine Kombination von Hardware und Software ausgeführt werden. Eine Ausführungslogik und/oder ein Prozessor kann eine spezifische oder spezielle Schaltung oder eine andere Logik, die auf Maschinenanweisungen anspricht oder auf ein oder mehrere Steuersignale, die von den Maschinenanweisungen erlangt werden, enthalten, um eine Anweisung, die einen resultierenden Operanden spezifiziert, zu speichern. Beispielsweise können Ausführungsformen der Anweisung(en), die hierin offenbart sind, in einem oder mehreren Systemen der 4, 5 und 6 ausgeführt werden und Ausführungsformen der Anweisung(en) können in einem Programmcode gespeichert werden, um in dem System ausgeführt zu werden. Zusätzlich können die Bearbeitungselemente dieser Figuren eine der detailliert beschriebenen Pipelines und/oder Architekturen (z. B. der In-Order- und Out-of-Order-Architekturen), die hier detailliert beschrieben wurden, verwenden. Zum Beispiel kann die Dekodiereinheit der In-Order-Architektur die Anweisung(en) dekodieren, die dekodierte Anweisung an eine Vektor- oder Scalar-Einheit weiterleiten usw.
  • In der vorhergehende Beschreibung wurden zu Zwecken der Erklärung zahlreiche spezifische Details ausgeführt, um ein vollständiges Verständnis der Erfindung zu liefern. Es wird dem Fachmann jedoch deutlich, dass die Erfindung ohne diese spezifischen Details ausgeführt werden kann. Somit sollte der Umfang und der Geist der Erfindung in dem Sinne der folgenden Ansprüche beurteilt werden.

Claims (27)

  1. Verfahren zum Ausführen einer logischen Operation auf einem Computerprozessor, das Folgendes umfasst: Lesen von Daten aus jedem von zwei oder mehr Quelloperanden; Kombinieren der Daten, die von den Quelloperanden gelesen worden sind, um einen Indexwert zu erzeugen, wobei der Indexwert eine Untermenge von Bits mit einem direkten Wert identifiziert, der zu der Anweisung gehört; Lesen der Untermenge von Bits aus dem direkten Wert, die durch den Index identifiziert ist; und Speichern der Bits, die aus dem direkten Wert gelesen worden sind, in einem Zielregister, um ein Ergebnis der Anweisung zu erzeugen.
  2. Verfahren nach Anspruch 1, wobei das Kombinieren der Daten, die aus den Quelloperanden gelesen worden sind, um einen Indexwert zu erzeugen, Folgendes umfasst: Verknüpfen von Bits, die aus den entsprechenden Bitpositionen von jedem Quelloperanden gelesen worden sind, um den Indexwert zu erzeugen, wobei der Indexwert jeden Satz von verknüpften Bits aus den entsprechenden Bitpositionen umfasst, die eine Bitposition innerhalb des direkten Wertes identifizieren.
  3. Verfahren nach Anspruch 2, das ferner Folgendes umfasst: Lesen des Bit aus der identifizierten Bitposition von dem direkten Wert und Speichern des Ergebnisses in dem Zielregister an einer Bitposition entsprechend den Bitpositionen der Bits, die aus jedem Quelloperanden gelesen worden sind.
  4. Verfahren nach Anspruch 2, wobei die Quelloperanden in N-Bit-Quellregistern gespeichert werden und das Zielregister ein N-Bit-Zielregister ist, wobei das Verknüpfen der Bits ferner Folgendes umfasst: Lesen aller N Bits aus den Quelloperanden parallel, um N Indices zu dem direkten Wert zu bilden; und Verwenden der N Indices zum Identifizieren von N Bit-Positionen in dem direkten Wert; und Kopieren aller N indizierten Bits aus dem direkten Wert in das Zielregister parallel, um das Ergebnis der logischen Operation zu bilden.
  5. Verfahren nach Anspruch 4, wobei N gleich 64 ist.
  6. Verfahren nach Anspruch 1, wobei es drei Quelloperanden gibt und wobei der direkte Wert 8 Bits aufweist und das Verfahren ferner Folgendes umfasst: Verknüpfen von Bits, die aus entsprechenden Bitpositionen von jedem der drei Quelloperanden gelesen worden sind, um einen Indexwert zu erzeugen, wobei der Indexwert jeden Satz der drei verknüpften Bits aus den entsprechenden Bitpositionen umfasst, die eine Bitposition in dem direkten Wert von 8 Bit identifizieren.
  7. Verfahren nach Anspruch 1, wobei der direkte Wert ein 8-Bit-Wert ist, der mit der Anweisung übertragen wird.
  8. Verfahren nach Anspruch 6, wobei der 8-Bit-Wert ein imm8-Wert ist.
  9. Verfahren nach Anspruch 1, wobei der direkte Wert ein 16-Bit-Wert ist, der mit der Anweisung übertragen wird.
  10. Vorrichtung zum Bearbeiten von Anweisungen, die Folgendes umfasst: Eine Dekodiereinheit zum Dekodieren einer Anweisung und zum Identifizieren eines logischen Operanden, der von der Anweisung ausgeführt werden soll; eine Ausführungseinheit zum Ausführen der logischen Operation durch Ausführen der folgenden Vorgänge: Lesen von Daten aus jedem der zwei oder mehr Quelloperanden; Kombinieren der Daten, die aus den zwei Quelloperanden gelesen worden sind, um einen Indexwert zu erzeugen, wobei der Indexwert eine Teilmenge von Bits in einen direkten Wert identifizierte, der zu einer Anweisung gehört; Lesen der Teilmenge von Bits aus dem direkten Wert, die durch den Indexwert identifiziert ist; und Speichern der Bits, die aus dem direkten Wert gelesen worden sind, in einem Zielregister, um ein Ergebnis der Anweisung zu erzeugen.
  11. Vorrichtung nach Anspruch 10, wobei das Kombinieren der Daten, die von den Quelloperanden gelesen worden sind, um einen Indexwert zu erzeugen, Folgendes umfasst: Verknüpfen von Bits, die aus den entsprechenden Bitpositionen von jedem Operanden gelesen worden sind, um einen Indexwert zu generieren, wobei der Indexwert jeden Satz von verknüpften Bits aus entsprechenden Bitpositionen, welche eine Bitposition in dem direkten Wert identifizieren, umfasst.
  12. Vorrichtung nach Anspruch 11, wobei die Ausführungseinheit die zusätzlichen Operationen ausführt: Lesen des Bits aus der identifizierten Bitposition des direkten Wertes und Speichern des Ergebnisses in dem Zielregister an einer Bitposition, welche den Bitpositionen der Bits entspricht, die aus jedem Quelloperanden gelesen worden sind.
  13. Vorrichtung nach Anspruch 11, wobei die Quelloperanden in N-Bit-Quellregistern gespeichert werden und das Zielregister ein N Bit-Zielregister ist, wobei das Verknüpfen der Bits ferner Folgendes umfasst: Lesen aller N Bits aus den Quelloperanden parallel, um N Indices zu dem direkten Wert zu bilden; und Verwenden der N Indices zum Identifizieren von N Bit-Positionen in dem direkten Wert; und Kopieren aller N indizierten Bits aus dem direkten Wert zu dem Zielregister parallel, um das Ergebnis der logischen Operation zu bilden.
  14. Vorrichtung nach Anspruch 13, wobei N gleich 64 ist.
  15. Vorrichtung nach Anspruch 10, wobei es drei Quelloperanden gibt und wobei der direkte Wert acht Bits hat, und das Verfahren ferner Folgendes umfasst: Verknüpfen von Bits, die aus entsprechenden Bitpositionen von jedem der drei Operanden gelesen worden sind, um einen Indexwert zu erzeugen, wobei der Indexwert, welcher jeden Satz von drei verknüpften Bits aus den entsprechenden Bitpositionen umfasst, eine Bitposition in dem direkten Wert von acht Bit identifiziert.
  16. Vorrichtung nach Anspruch 10, wobei der direkte Wert ein 8-Bit-Wert ist, welcher mit der Anweisung übertragen wird.
  17. Vorrichtung nach Anspruch 16, wobei der 8-Bit-Wert ein imm8-Wert ist.
  18. Vorrichtung nach Anspruch 10, wobei der direkte Wert ein 16-Bit-Wert ist, der mit der Anweisung übertragen wird.
  19. Computersystem, das Folgendes umfasst: Eine Anzeigevorrichtung; einen Speicher zum Speichern von Anweisungen; einen Prozessor zum Bearbeiten der Anweisungen, der Folgendes umfasst: Eine Dekodiereinheit zum Dekodieren einer Anweisung und zum Identifizieren eines logischen Operanden, auf den die Anweisung anzuwenden ist; und eine Ausführungseinheit zum Ausführen der logischen Operation durch Ausführen der folgenden Operationen: Lesen von Daten aus jedem der zwei oder mehr Quelloperanden; Kombinieren der Daten, die aus den Quelloperanden gelesen worden sind, um einen Indexwert zu erzeugen, wobei der Indexwert eine Teilmenge von Bits innerhalb eines direkten Wertes identifiziert, der zu der Anweisung gehört; Lesen der Teilmenge von Bits aus dem direkten Wert, die durch den Indexwert identifiziert werden; und Speichern der Bits, die aus dem direkten Wert gelesen worden sind, in einem Zielregister, um ein Ergebnis der Anweisung zu erzeugen.
  20. System nach Anspruch 19, wobei das Kombinieren der Daten, die aus den Quelloperanden gelesen worden sind, um einen Indexwert zu erzeugen, Folgendes umfasst: Verknüpfen von Bits, die aus entsprechenden Bitpositionen von jedem Quelloperanden gelesen werden, um einen Indexwert zu erzeugen, wobei der Indexwert einen Satz von verknüpften Bits aus entsprechenden Bitpositionen umfasst, die eine Bitposition in dem direkten Wert identifizieren.
  21. System nach Anspruch 20, wobei die Ausführungseinheit die zusätzlichen Operation ausführt: Lesen des Bits aus der identifizierten Bitposition des direkten Wertes und Speichern des Ergebnisses in dem Zielregister an einer Bitposition, welche den Bitpositionen der Bits entspricht, die aus jedem Quelloperanden gelesen worden sind.
  22. System nach Anspruch 20, wobei die Quelloperanden in N-Bit-Quellregistern gespeichert werden und das Zielregister ein N-Bit-Zielregister ist, wobei das Verknüpfen der Bits ferner Folgendes umfasst: Lesen aller N Bits aus dem Quelloperanden parallel, um N Indices zum direkten Wert zu bilden; und Verwenden der N Indices zum Identifizieren von N Bit-Positionen in dem direkten Wert; und Kopieren aller N indizierten Bits aus dem direkten Wert in das Zielregister parallel, um das Ergebnis der logischen Operation zu bilden.
  23. System nach Anspruch 22, wobei N gleich 64 ist.
  24. System nach Anspruch 19, wobei es drei Quelloperanden gibt, und wobei der direkte Wert acht Bits hat, und das Verfahren ferner Folgendes umfasst: Verknüpfen von Bits, die aus entsprechenden Bitpositionen von jedem der drei Quelloperanden gelesen worden sind, um einen Indexwert zu erzeugen, wobei der Indexwert, der jeden Satz von drei verknüpften Bits aus entsprechenden Bitpositionen umfasst, eine Bitposition in dem direkten Wert mit acht Bit identifiziert.
  25. System nach Anspruch 19, wobei der direkte Wert ein 8-Bit-Wert ist, der mit der Anweisung übertragen wird.
  26. System nach Anspruch 25, wobei der 8-Bit-Wert ein imm8-Wert ist.
  27. System nach Anspruch 19, wobei der direkte Wert ein 16-Bit-Wert ist, der mit der Anweisung übertragen wird.
DE112011103197T 2010-09-24 2011-09-23 Verfahren und Vorrichtung für universelle logische Operationen Withdrawn DE112011103197T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/890,571 2010-09-24
US12/890,571 US8539206B2 (en) 2010-09-24 2010-09-24 Method and apparatus for universal logical operations utilizing value indexing
PCT/US2011/052913 WO2012040552A2 (en) 2010-09-24 2011-09-23 Method and apparatus for universal logical operations

Publications (1)

Publication Number Publication Date
DE112011103197T5 true DE112011103197T5 (de) 2013-07-04

Family

ID=45871870

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112011103197T Withdrawn DE112011103197T5 (de) 2010-09-24 2011-09-23 Verfahren und Vorrichtung für universelle logische Operationen

Country Status (9)

Country Link
US (1) US8539206B2 (de)
JP (1) JP5607832B2 (de)
KR (1) KR101524450B1 (de)
CN (1) CN103109261B (de)
BR (1) BR112013006661A2 (de)
DE (1) DE112011103197T5 (de)
GB (1) GB2499532B (de)
TW (2) TWI512618B (de)
WO (1) WO2012040552A2 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120124341A1 (en) * 2010-11-17 2012-05-17 Goodrich Allen B Methods and Apparatus for Performing Multiple Operand Logical Operations in a Single Instruction
US9128698B2 (en) * 2012-09-28 2015-09-08 Intel Corporation Systems, apparatuses, and methods for performing rotate and XOR in response to a single instruction
US20140095845A1 (en) 2012-09-28 2014-04-03 Vinodh Gopal Apparatus and method for efficiently executing boolean functions
US9471310B2 (en) * 2012-11-26 2016-10-18 Nvidia Corporation Method, computer program product, and system for a multi-input bitwise logical operation
GB2523823B (en) * 2014-03-07 2021-06-16 Advanced Risc Mach Ltd Data processing apparatus and method for processing vector operands
US20160179521A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Method and apparatus for expanding a mask to a vector of mask values
US20160283242A1 (en) * 2014-12-23 2016-09-29 Intel Corporation Apparatus and method for vector horizontal logical instruction
US10296334B2 (en) * 2014-12-27 2019-05-21 Intel Corporation Method and apparatus for performing a vector bit gather
US10296489B2 (en) * 2014-12-27 2019-05-21 Intel Corporation Method and apparatus for performing a vector bit shuffle
EP3782088B1 (de) * 2018-04-20 2024-06-05 Google LLC Durchführung einheitlicher wiederholungs- und indexierter operationen

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4237532A (en) * 1977-09-02 1980-12-02 Sperry Corporation Table driven decision and control logic for digital computers
EP0349124B1 (de) * 1988-06-27 1996-10-09 Digital Equipment Corporation Operandenspezifiererverarbeitung
US5493687A (en) * 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5881307A (en) 1997-02-24 1999-03-09 Samsung Electronics Co., Ltd. Deferred store data read with simple anti-dependency pipeline inter-lock control in superscalar processor
JPH1185507A (ja) * 1997-09-05 1999-03-30 Mitsubishi Electric Corp 中央処理装置およびマイクロコンピュータシステム
TW498275B (en) * 1999-05-24 2002-08-11 Toshiba Corp Processor unit
US6829750B2 (en) * 2001-06-15 2004-12-07 Science & Technology Corporation @ Unm Pass-transistor very large scale integration
US6721866B2 (en) 2001-12-21 2004-04-13 Intel Corporation Unaligned memory operands
US7014122B2 (en) * 2003-12-24 2006-03-21 International Business Machines Corporation Method and apparatus for performing bit-aligned permute
US7464255B1 (en) 2005-07-28 2008-12-09 Advanced Micro Devices, Inc. Using a shuffle unit to implement shift operations in a processor
US8732686B2 (en) * 2006-06-30 2014-05-20 Intel Corporation Generating optimal instruction sequences for bitwise logical expressions
US20080021942A1 (en) * 2006-07-20 2008-01-24 On Demand Microelectronics Arrangements for evaluating boolean functions
US20080100628A1 (en) * 2006-10-31 2008-05-01 International Business Machines Corporation Single Precision Vector Permute Immediate with "Word" Vector Write Mask
CN101178644B (zh) * 2006-11-10 2012-01-25 上海海尔集成电路有限公司 一种基于复杂指令集计算机结构的微处理器架构
US7941641B1 (en) 2007-10-01 2011-05-10 Yong-Kyu Jung Retargetable instruction decoder for a computer processor

Also Published As

Publication number Publication date
WO2012040552A2 (en) 2012-03-29
US20120079244A1 (en) 2012-03-29
CN103109261B (zh) 2016-03-09
TWI512618B (zh) 2015-12-11
BR112013006661A2 (pt) 2016-06-07
TW201232392A (en) 2012-08-01
CN103109261A (zh) 2013-05-15
US8539206B2 (en) 2013-09-17
JP5607832B2 (ja) 2014-10-15
TWI435266B (zh) 2014-04-21
JP2013543175A (ja) 2013-11-28
TW201432564A (zh) 2014-08-16
GB2499532A (en) 2013-08-21
GB201306690D0 (en) 2013-05-29
WO2012040552A3 (en) 2012-05-18
GB2499532B (en) 2020-04-01
KR101524450B1 (ko) 2015-06-02
KR20130064797A (ko) 2013-06-18

Similar Documents

Publication Publication Date Title
DE112011103197T5 (de) Verfahren und Vorrichtung für universelle logische Operationen
DE112012007088B4 (de) Vorrichtung, verfahren und system mit einem befehl zum reduzieren von elementen in einem vektorregister mit einem schrittweisem zugriffsmuster
DE102007063894B3 (de) Anweisung und Logik zum Bearbeiten von Textstrings
DE102018006757A1 (de) Festkomma-zu-gleitkomma-umwandlung
DE102018005977A1 (de) Gleitkomma- zu festkomma-umwandlung
DE112013005239B4 (de) Anweisung zur Beschleunigung des drahtlosen SNOW 3G- Sicherheitsalgorithmus
DE112017003340T5 (de) Unterbrechungsfähige und neustartfähige matrix-multiplikationsinstruktionen, prozessoren, verfahren, und systeme
DE102018005105A1 (de) Befehle für entfernte atomare operationen
DE102014004564A1 (de) Prozessoren, verfahren und systeme zum implementieren von teilregisterzugriffen mit maskierten gesamtregisterzugriffen
DE102015006863A1 (de) Befehle und Logik zum Unterbrechen und Wiederaufnehmen von Paging in Secure Enclaves
DE112013003743T5 (de) Beschleunigte spurübergreifende Vektorreduzierungsbefehle
DE112011105818T5 (de) Systeme, Vorrichtungen und Verfahren zum Expandieren einer Speicherquelle in ein Zielregister und komprimieren eines Quellenregisters in eine Zielspeicherstelle
DE102018124945A1 (de) Einrichtung und verfahren für komplexe multiplikation
DE102018125232A1 (de) Einrichtung und Verfahren für komplexe Multiplikation und Akkumulation
DE102018125817A1 (de) Systeme und Verfahren zum Laden eines Kachelregisterpaars
DE112012007058T5 (de) Vektormaskengesteuertes Clock-Gating für Leistungseffizenz eines Prozessors
DE102018125805A1 (de) Systeme, verfahren, und vorrichtungen für skalarproduktoperationen
DE102014003706A1 (de) BEREICHSBEGRENZTE VEKTORSPEICHERZUGRIFFSINSTRUKTIONEN, PROZESSOREN, VERFAHREN und SYSTEME
DE112013003735B4 (de) Systeme, Vorrichtungen und Verfahren zum Ausführen von Rotation und XOR als Reaktion auf eine einzige Anweisung
DE112011105665T5 (de) Befehl und Logik zum Liefern von Vektorladen und -speichern mit Schritt- und Maskierfunktionalität
DE102015002254A1 (de) Verfahren und Gerät zum wirksamen Ausführen von Hash-Operationen
DE112017001716T5 (de) Speicherkopierbefehle, prozessoren, verfahren und systeme
DE102010064599A1 (de) Drehbefehle, die ohne Lesen des Übertrags-Flags ausgeführt werden
DE102018132200A1 (de) Vorrichtung und verfahren zum verarbeiten von fraktionalen umkehroperationen
DE102018128626A1 (de) Systeme, Verfahren und Vorrichtungen für Matrixoperationen

Legal Events

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