DE112005003130T5 - Bewertungseinheit für Merkerregister einer Einzelbefehl-Mehrdaten-Ausführungsmaschine - Google Patents

Bewertungseinheit für Merkerregister einer Einzelbefehl-Mehrdaten-Ausführungsmaschine Download PDF

Info

Publication number
DE112005003130T5
DE112005003130T5 DE112005003130T DE112005003130T DE112005003130T5 DE 112005003130 T5 DE112005003130 T5 DE 112005003130T5 DE 112005003130 T DE112005003130 T DE 112005003130T DE 112005003130 T DE112005003130 T DE 112005003130T DE 112005003130 T5 DE112005003130 T5 DE 112005003130T5
Authority
DE
Germany
Prior art keywords
flag register
bit
output
channel
information
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.)
Granted
Application number
DE112005003130T
Other languages
English (en)
Other versions
DE112005003130B4 (de
Inventor
Michael El Dorado Hills DWYER
Hong San Jose Jiang
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 DE112005003130T5 publication Critical patent/DE112005003130T5/de
Application granted granted Critical
Publication of DE112005003130B4 publication Critical patent/DE112005003130B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Abstract

Verfahren, das aufweist:
Speichern von Information in einem Merkerregister mit n Orten einer Einzelbefehl-Mehrdaten (SIMD)-Ausführungsmaschine mit n Kanälen, wobei die Information mehrere unabhängige m-Kanal-Vektoren darstellt, wobei n und m ganze Zahlen größer als Eins sind; und
Erzeugen einer Ausgabe basierend auf der Information in dem Merkerregister, wobei die Ausgabe wenigstens einen Ort umfaßt, dessen Wert auf Information basiert, welche verschiedene unabhängige Vektoren darstellt.

Description

  • HINTERGRUND
  • Um die Leistung eines Verarbeitungssystems zu verbessern, kann ein Befehl gleichzeitig für mehrere Operanden auf Daten in einer einzigen Befehlsperiode durchgeführt werden. Ein solcher Befehl kann als ein Einzelbefehl-Mehrdaten (SIMD – Single Instruction, Multiple Data)-Befehl bezeichnet werden. Zum Beispiel könnte eine SIMD-Ausführungsmaschine mit acht Kanälen gleichzeitig einen Befehl für acht Operanden auf Daten mit 32 Bit ausführen, wobei jeder Operand auf einen eindeutigen Rechenkanal der SIMD-Ausführungsmaschine abgebildet wird. Darüber hinaus können ein oder mehrere Merkerregister verwendet werden, wobei jedes Merkerregister Orte hat, die jedem Kanal der Ausführungsmaschine zugewiesen sind (z.B. könnten drei Merkerregister mit 8 Bit für eine SIMD-Ausführungsmaschine mit acht Kanälen vorgesehen sein). Eine Möglichkeit, in effizienter Weise und flexibel auf Information im Merkerregister auf unterschiedlichen Wegen zuzugreifen, kann die Leistung der Ausführungsmaschine verbessern.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 und 2 veranschaulichen Verarbeitungssysteme.
  • 3 veranschaulicht ein Verarbeitungssystem, um zwei Vektoren im wesentlichen gleichzeitig zu verarbeiten.
  • 4 veranschaulicht eine horizontale Bewertungseinheit für ein Merkerregister einer SIMD-Ausführungsmaschine gemäß einigen Ausführungsformen.
  • 5 ist ein Ablaufdiagramm eines Verfahrens gemäß einigen Ausführungsformen.
  • 6 ist ein Ablaufdiagramm eines Verfahrens gemäß einigen Ausführungsformen.
  • 7 veranschaulicht eine vertikale Bewertungseinheit für Merkerregister einer SIMD-Ausführungsmaschine gemäß einigen Ausführungsformen.
  • 8 ist ein Ablaufdiagramm eines Verfahrens gemäß einigen Ausführungsformen.
  • 9 veranschaulicht eine vertikale Bewertungseinheit für Merkerregister einer SIMD-Ausführungsmaschine gemäß einigen Ausführungsformen.
  • 10 ist ein Ablaufdiagramm eines Verfahrens gemäß einigen Ausführungsformen.
  • 11 veranschaulicht eine horizontale und eine vertikale Bewertungseinheit für Merkerregister einer SIMD-Ausführungsmaschine gemäß einigen Ausführungsformen.
  • 12 ist ein Blockschaubild eines Systems gemäß einigen Ausführungsformen.
  • GENAUE BESCHREIBUNG
  • Einige hierin beschriebene Ausführungsformen sind mit einem "Verarbeitungssystem" verknüpft. Wie hierin benutzt, kann sich der Ausdruck "Verarbeitungssystem" auf irgendeine Vorrichtung beziehen, welche Daten verarbeitet. Ein Verarbeitungssystem kann zum Beispiel einer Graphikmaschine zugewiesen sein, die Graphikdaten und/oder andere Typen der Medieninformation verarbeitet. In manchen Fällen kann die Leistung eines Verarbeitungssystems durch die Verwendung einer SIMD-Ausführungsmaschine verbessert werden. Zum Beispiel kann eine SIMD-Ausführungsmaschine gleichzeitig einen einzigen Fließpunkt-SIMD-Befehl für mehrere Kanäle mit Daten ausführen (z.B. um die Transformation zu beschleunigen und/oder dreidimensionale geometrische Formen zu erzeugen). Weitere Beispiele von Verarbeitungssystemen umfassen eine zentrale Verarbeitungseinheit (CPU – Central Processing Unit) und einen Digitalsignalprozessor (DSP – Digital Signal Processor).
  • 1 veranschaulicht einen Typ eines Verarbeitungssystems 100, welches eine SIMD-Ausführungsmaschine 110 umfaßt. in diesem Fall empfängt die Ausführungsmaschine 110 einen Befehl zusammen mit vier Operanden für Daten, wobei jeder Operand einem unterschiedlichen Vektor zugewiesen ist (z.B. den vier X-Komponenten der Vektoren V0 bis V3). Jeder Vektor kann zum Beispiel drei Ortswerte (z.B. X, Y und Z) umfassen, die mit einem dreidimensionalen Graphikort verknüpft sind. Die Maschine 110 kann dann gleichzeitig den Befehl für alle die Operanden in einer einzigen Befehlsperiode ausführen. Ein solcher Ansatz wird eine "vertikale", "kanal-serielle" oder "Struktur aus Anordnungen (SOA – Structure of Arrays)"-Implementierung genannt.
  • 2 veranschaulicht einen anderen Typ eines Verarbeitungssystems 200, welches eine SIMD-Ausführungsmaschine 210 umfaßt. In diesem Fall empfängt die Ausführungsmaschine 210 einen Befehl (z.B. aus einer Befehlspeichereinheit) zusammen mit einem Datenvektor mit vier Komponenten (z.B. den Vektorkomponenten X, Y, Z und W, wobei jede Bits hat, die zum Verarbeiten auf entsprechenden Kanälen 0 bis 3 der SIMD-Ausführungsmaschine 210 ausgelegt sind). Die Maschine 210 kann dann gleichzeitig den Befehl für alle die Komponenten in dem Vektor ausführen. Ein solcher Ansatz wird eine "horizontale", "kanal-parallele" oder "Anordnung aus Strukturen (AOS – Array of Structures)"-Implementierung genannt. Obwohl manche hierin beschriebene Ausführungsformen mit einer SIMD-Ausführungsmaschine 110 mit vier Kanälen verknüpft sind, sei angemerkt, daß eine SIMD-Ausführungsmaschine irgendeine Anzahl von Kanälen größer als Eins haben könnte (z.B. könnten Ausführungsformen mit einer Ausführungsmaschine mit 32 Kanälen verknüpft sein).
  • Gemäß einigen Ausführungsformen kann eine SIMD-Maschine Information, die mit mehreren Vektoren verbunden ist, gleichzeitig verarbeiten. Zum Beispiel veranschaulicht 3 ein Verarbeitungssystem 400, welches eine SIMD-Ausführungsmaschine 300 mit acht Kanälen umfaßt, die zwei Vektoren gleichzeitig verarbeiten kann. Das heißt, die Kanäle 0 bis 3 könnten den Vektor 0 verarbeiten, während die Kanäle 4 bis 7 den Vektor 1 verarbeiten.
  • Die Ausführungsmaschine 310 kann weiter ein Merkerregister 320 mit Orten, die jedem Kanal zugewiesen sind, umfassen. Zum Beispiel könnte das Merkerregister 320 ein Register mit 8 Bit sein, und jedes Bit kann ein Merker (F – Flag) sein, der einem der logischen Rechenkanäle zugewiesen ist. Ein Merker könnte zum Beispiel einem oder mehreren Ergebnissen zugewiesen sein, die für den Kanal durch den Betrieb einer arithmetischen Logikeinheit (ALU – Arithmetic-Logic Unit) erzeugt worden ist. Das Ergebnis könnte zum Beispiel ein Null-, ein nicht-Null-, ein Gleich-, ein Ungleich-, ein größer als-, ein größer als oder gleich-, ein kleiner als-, ein kleiner als oder gleich- und/oder ein Überlaufzustand sein. Man betrachtet zum Beispiel den folgenden Befehl für eine SIMD-Ausführungsmaschine:
  • Figure 00050001
  • In diesem Fall wird der Wert in dem Register r2 von dem Wert in dem Register r1 subtrahiert, das Ergebnis wird im Register r0 gespeichert, und ein Bit in dem Merkerregister 320 (".f") wird gesetzt werden, wenn das Ergebnis gleich Null ist (".z"). Dies wird für alle acht Kanäle gleichzeitig durchgeführt, und alle acht Bit in dem Merkerregister 320 werden, sofern erforderlich, aktualisiert.
  • Bei manchen Anwendungen kann es hilfreich sein, auf verschiedenen Wegen auf Information in dem Merkerregister 320 zuzugreifen. Bei einer Graphikanwendung zum Beispiel könnte es zu manchen Zeiten hilfreich sein, festzustellen, ob irgendwelche Merker in dem Merkerregi ster 320 Null sind, während es zu anderen Zeiten hilfreich sein kann, sowohl zu wissen, ob: (i) welche der Merker, die den Kanälen 0 bis 3 zugewiesen sind, die einem ersten Vektor zugewiesen sind, Null sind, als auch ob (ii) irgendwelche der Merker, die den Kanälen 4 bis 7 zugewiesen sind, die einem zweiten Vektor zugewiesen sind, Null sind.
  • 4 veranschaulicht ein System 400 gemäß einigen Ausführungsformen, das ein Merkerregister 420 umfaßt. Wie zuvor kann das System 400 Information, die mit mehreren Vektoren verbunden ist, gleichzeitig verarbeiten. Obwohl in 4 ein Merkerregister 420 mit 8 Bit veranschaulicht ist, sei angemerkt, daß andere Anzahlen der Bits zur Verfügung gestellt werden können. Zum Beispiel kann das Merkerregister 420 ein Merkerregister mit n Bit bei einer SIMD-Ausführungsmaschine mit n Kanälen sein, wobei n eine ganze Zahl größer als Eins ist. Gemäß manchen Ausführungsformen kann jedes Bit des Merkerregisters 420 einem Kanal zugewiesen sein, und das Merkerregister 420 kann Information von einer SIMD-Ausführungseinheitempfangen und speichern. Gemäß manchen Ausführungsformen ist diese Information mit mehr als einem Mehrkanal-Vektor verbunden (z.B. können zwei Graphikvektoren gleichzeitig verarbeitet werden).
  • Gemäß manchen Ausführungsformen kann eine Ausführungsmaschine mit n Kanälen ein Merkerregister mit p Bit haben, wobei p kleiner als n ist. Zum Beispiel könnte ein Merkerregister mit vier Bit für eine SIMD-Ausführungsmaschine mit sechzehn Kanälen vorgesehen sein, und jedes Bit in dem Merkerregister könnte mit vier Kanälen verknüpft sein.
  • Darüber hinaus kann eine horizontale "Bewertungs"-Einheit 430 zur Verfügung gestellt werden, um eine Ausgabe mit n Bit zu erzeugen, wobei jedes Bit in der Ausgabe einem Kanal der SIMD-Ausführungsmaschine zugewiesen ist. Wie hierin verwendet, kann sich der Ausdruck "Bewertung" auf einen Zugriff auf Information in Verbindung mit Swizzle-, Assemble- und/oder logischen Operationen beziehen. Zum Beispiel kann eine Swizzle-Operation mit einer Neuanordnung oder Gruppierung der Information verbunden sein. Als weitere Beispiele könnte Information kopiert, neu angeordnet und/oder gruppiert werden. Darüber hinaus kann Information derart zusammengesetzt werden, daß Teile getrennter Speicherelemente in ein einziges logisches Speicherelement gesammelt werden. Es sei angemerkt, daß die logischen Operationen, die auf der Information durchgeführt werden können, logische bitweise Operationen umfassen, so wie AND, OR und andere logische Operationen.
  • Zum Beispiel kann die in 4 veranschaulichte horizontale Bewertungseinheit 430 acht Bit von dem Merkerregister 420 empfangen und eine Ausgabe mit acht Bit erzeugen. Die Arbeit der horizontalen Bewertungseinheit 430 kann zum Beispiel durch eine Operanden-Abholeinheit gesteuert werden. Die horizontale Bewertungseinheit 430 kann gemäß manchen Ausführungsformen einfach jeden Merker in dem Merkerregister 420 auf einen entsprechenden Merker in der Ausgabe abbilden (z.B. würde die Ausgabe der 4 in diesem Fall ein Durchlauf von "0100 1111" sein).
  • Gemäß manchen Ausführungsformen kann die horizontale Bewertungseinheit 430 statt dessen gesteuert werden, um eine Bewertung aller Bits in dem Merkerregister 420 durchzuführen. Zum Beispiel könnte eine "any8"-Bedingung bewirken, daß die horizontale Bewertungseinheit 430 feststellt, ob irgendeines der acht Bit in dem Merkerregister gesetzt ist. Wenn dies so ist, werden alle acht Bit der Ausgabe auf Eins gesetzt. Wenn nicht, werden alle acht Bit der Ausgabe auf Null gesetzt (z.B. würde die Ausgabe der 4 "1111 1111") sein. Somit kann ein Wert wenigstens eines Bit in der Ausgabe auf Bits in dem Merkerregister 420 basieren, die verschiedene Ausführungskanäle und/oder Vektoren darstellen.
  • Gemäß manchen Ausführungsformen kann eine horizontale Bewertungseinheit für eine Ausführungsmaschine mit n Kanälen eine Ausgabe mit p Bit haben, wobei p kleiner als n ist. Zum Beispiel könnte für eine SIMD-Ausführungsmaschine mit acht Kanälen eine Ausgabe mit vier Bit vorgesehen sein, und jedes Bit in der Ausgabe könnte zwei Kanälen zugewiesen sein.
  • Gemäß einigen Ausführungsformen kann die horizontale Bewertungseinheit 430 gesteuert werden, um eine Bewertung einer Untermenge der Bits in dem Merkerregister 420 durchzuführen. Zum Beispiel kann die horizontale Bewertungseinheit 430 gesteuert werden, um eine Bewertung für die Bits in dem Merkerregister 420 durchzuführen, die CH0, CH2, CH4 und CH6 zugewiesen sind.
  • 5 ist ein Ablaufdiagramm eines Verfahrens gemäß einigen Ausführungsformen. Das Verfahren könnte zum Beispiel in Verbindung mit dem System 400 der 4 durchgeführt werden. Die hierin beschriebenen Ablaufdiagramme implizieren nicht notwendigerweise eine feste Reihenfolge für die Handlungen, und Ausführungsformen können in irgendeiner Reihenfolge, die praktikabel ist, durchgeführt werden. Es sei angemerkt, daß irgendeines der hierin beschriebenen Verfahren durch Hardware, Software (einschließlich Mikrocode), Firmware oder irgendeine Kombination dieser Ansätze ausgeführt werden kann. Zum Beispiel kann ein Speichermedium Befehle speichern, die, wenn sie von einer Maschine ausgeführt werden, zu der Leistung nach irgendeiner der hierin beschriebenen Ausführungsformen führen.
  • Bei 502 wird Information in einem Merkerregister mit n Orten einer SIMD-Ausführungsmaschine mit n Kanälen gespeichert. Die Information kann zum Beispiel mehrere unabhängige m-Kanal-Vektoren darstellen, wobei n und m ganze Zahlen größer als Eins sind.
  • Bei 504 wird eine Ausgabe basierend auf der Information in dem Merkerregister erzeugt. Die Ausgabe kann zum Beispiel wenigstens einen Ort umfassen, dessen Wert auf Information basiert, welche unterschiedliche unabhängige Vektoren darstellt. Zum Beispiel könnte das erste Bit einer Ausgabe mit acht Bit basierend auf Information gesetzt werden, die mit zwei unterschiedlichen Vektoren verbunden ist, welche gleichzeitig verarbeitet werden.
  • In manchen Fällen kann eine horizontale Bewertungseinheit gesteuert werden, um auf unterschiedlichen Mengen von Orten des Merkerregisters zu arbeiten. Zum Beispiel ist 6 ein Ablaufdiagramm eines Verfahrens gemäß einigen Ausführungsformen. Bei 602 wird eine Angabe empfangen, die mit wenigstens einer Menge der Kanäle einer SIMD-Ausführungsmaschine verknüpft ist. Bei 604 werden Bits, die mit der Menge der Kanäle verbunden sind, bewertet.
  • Die horizontale Bewertungseinheit kann zum Beispiel eine Angabe einer "all4"-Bedingung empfangen. Mit Bezug wieder auf 4 kann eine solche Bedingung bewirken, daß die horizontale Bewertungseinheit 430 getrennt bewertet, ob alle Merkerbits Eins sind, sowohl für: (i) die Bits in dem Merkerregister, die den Kanälen 0 bis 3 entsprechen, als auch (ii) die Bits in dem Merkerregister, die den Kanälen 4 bis 7 entsprechen.
  • Ein Ergebnis jeder Bewertung kann dann in der Menge der Bits in der Ausgabe gespeichert werden, die die Menge der Kanäle der SIMD-Ausführungsmaschine darstellen. Wenn zum Beispiel alle Bits in dem Merkerregister 420, die den Kanälen 0 bis 3 entsprechen, gesetzt sind, können die Bits in der Ausgabe, die den Kanälen 0 bis 3 entsprechen, gesetzt werden. In ähnlicher Weise, wenn alle Bits in dem Merkerregister 420, die den Kanälen 4 bis 7 entsprechen, gesetzt sind, können die Bits in der Ausgabe, die den Kanälen 4 bis 7 entsprechen, gesetzt werden. In dem Fall, der in der 4 veranschaulicht ist, würde die Ausgabe "0000 1111" sein.
  • Die Angaben, die von der horizontalen Bewertungseinheit 430 erhalten werden, könnten mit unterschiedlich bemessenen Mengen der Kanäle der SIMD-Ausführungsmaschine verbunden werden. Zum Beispiel könnten, wie zuvor beschrieben, die Mengen, die von der horizontalen Bewertungseinheit 430 bewertet werden, einer Menge mit acht Bit oder zwei Mengen mit vier Bit zugewiesen werden. Als ein weiteres Beispiel könnte die horizontale Bewertungseinheit 430 eine Angabe empfangen, die mit einer "any2"-Bedingung verbunden ist, was bedeutet, daß vier Paare Merker bewertet werden sollen (und das Ergebnis jeder Bewertung auf die entsprechenden beiden Bits in der Ausgabe abgebildet werden soll). In dem Fall, der in der 4 veranschaulicht ist, würde die Ausgabe "1100 1111" sein.
  • Es sei angemerkt, daß Mengen jeglicher Größe oder Kombinationen von Größen von Mengen vorgesehen werden können (und daß die Bits in der Menge nicht Nachbarn sein müssen). Man betrachte zum Beispiel ein Merkerregister mit sechzehn Bit. In diesem Fall könnten acht Mengen mit zwei Bit bewertet werden. Als ein anderes Beispiel können die zwei höchstwertigen Bits (MSBs – Most Significant Bits) und die zwei niederwertigsten Bits (LSBs – Least Significant Bits) kombiniert und als eine erste Menge bewertet werden, während die verbleibenden zwölf Bit als eine zweite Menge bewertet werden.
  • Diese Typen der Bewertungsoperationen "horizontal" können Information über ein einziges Merkerregister 420 gruppieren, neu anordnen und/oder bewerten. Es sei nun auf das System 700 der 7 verwiesen, welches zwei Merkerregister 720 (f0 und f1) mit 8 Bit umfaßt. Obwohl in 7 zwei Merkerregister 720 veranschaulicht sind, können mehr als zwei vorgesehen sein.
  • Man betrachte nun zum Beispiel die folgenden Befehle für eine SIMD-Ausführungsmaschine:
  • Figure 00100001
  • In diesem Fall wird der Wert im Register r2 von dem Wert im Register r1 subtrahiert, das Ergebnis wird im Register r0 gespeichert, und ein Bit im Merkerregister 0 (".fn") wird gesetzt, wenn das Ergebnis gleich Null ist (".z"). Man bemerke, daß dieser Befehl auf acht Operanden für Daten gleichzeitig durchgeführt werden kann (und alle acht Bit in f0 können gleichzeitig aktualisiert werden). In ähnlicher Weise wird der Wert in Register r5 zu dem Wert im Register r4 addiert, das Ergebnis wird im Register r3 gespeichert, und ein Bit im Merkerregister 1 (".f1") wird gesetzt, wenn das Ergebnis gleich Null ist (".z").
  • Gemäß manchen Ausführungsformen kann eine vertikale Bewertungseinheit 740 zur Verfügung gestellt werden, um eine Ausgabe mit n Bit zu erzeugen, wobei die Ausgabe wenigstens ein Bit umfaßt, dessen Wert auf Information aus beiden Merkerregistern 720 basiert. Zum Beispiel kann die vertikale Bewertungseinheit 740 die acht Bit von f0 zusammen mit den acht Bit von f1 empfangen und eine Ausgabe mit 8 Bit erzeugen.
  • 8 ist ein Ablaufdiagramm eines Verfahrens gemäß einigen Ausführungsformen. Das Verfahren kann zum Beispiel mit dem System 700 der 7 verbunden sein. Bei 802 wird Information in einem ersten Merkerregister mit n Orten einer SIMD-Ausführungsmaschine mit n Kanälen gespeichert, wobei n eine ganze Zahl größer als Eins ist. In ähnlicher Weise wird Information einem zweiten Merkerregister mit n Orten der Ausführungsmaschine bei 804 gespeichert. Bei 806 wird eine Ausgabe erzeugt, wobei die Ausgabe wenigstens einen Ort umfaßt, dessen Wert auf Information aus sowohl dem ersten Merkerregister als auch dem zweiten Merkerregister basiert.
  • Mit Bezug wieder auf die 7 könnte die vertikale Bewertungseinheit 740 gesteuert werden, um die Werte von f0 (oder f1) als eine Ausgabe durchzuleiten. In diesem Fall würde die in 7 veranschaulichte Ausgabe "0100 1101" von im Fall von f0 (oder "1101 0111") im Fall von f1) sein. Gemäß einigen Ausführungsformen könnte die vertikale Bewertungseinheit 740 Information sowohl aus f0 als auch aus f1 kombinieren, um die Ausgabe zu erzeugen. Zum Beispiel könnte die vertikale Bewertungseinheit 740 eine Angabe empfangen, die mit einem "all2"-Zustand verknüpft ist, so daß ein Bit in der Ausgabe nur gesetzt werden sollte, wenn das entsprechende Bit sowohl in f0 als auch in f1 gesetzt ist (z.B. würde die Ausgabe der 7 "0100 0101" sein). In ähnlicher Weise könnte ein "any2"-Zustand zu einer Ausgabe von "1101 1111" bei 7 führen.
  • Die "vertikale" Bewertungseinheit 740 kann somit Information über die verschiedenen Merkerregister 740 hinweg kombinieren. In manchen Fällen könnte die vertikale Bewertungseinheit 940 Information über Mengen der Merkerregister hinweg kombinieren. Man betrachte zum Beispiel das System 900 der 9, welches vier Merkerregister 920 (f0 bis f3) mit acht Bit umfaßt. Darüber hinaus empfängt die vertikale Bewertungseinheit 940 acht Bit aus jedem der Merkerregister und erzeugt eine Ausgabe mit acht Bit.
  • 10 veranschaulicht ein Verfahren, das mit einem solchen System 900 verknüpft sein kann. Bei 902 wird eine Angabe, die einer Menge der Merkerregister zugewiesen ist, empfangen. Die Angabe könnte die vertikale Bewertungseinheit 940 steuern, um zum Beispiel auf einem der Merkerregister oder allen vieren der Merkerregister zu arbeiten.
  • Gemäß einigen Ausführungsformen könnte die vertikale Bewertungseinheit 940 gesteuert werden, um auf anderen Mengen der Merkerregister zu arbeiten. Zum Beispiel könnte die vertikale Bewertungseinheit 940 gesteuert werden, um f0 und f1 zu bewerten (und um f2 und f3 zu ignorieren). Als ein anderes Beispiel könnte die vertikale Bewertungseinheit 940 gesteuert werden, um auf f0, f2 und f3 zu arbeiten (und um f1 zu ignorieren).
  • Für jeden Kanal der SIMD-Ausführungsmaschine werden die Bits, die den Kanal darstellen, aus den Merkerregistern in der Menge bei 1004 bewertet. Das Ergebnis dieser Bewertungen wird bei 1006 in geeigneten Ausgabebits gespeichert.
  • Mit Bezug wieder auf 7 sei angenommen, daß die vertikale Bewertungseinheit 940 eine Angabe empfangen hat, daß f0 und f1 bewertet werden sollten und daß jedes Ausgabebit dann und nur dann gesetzt werden sollte, wenn das entsprechende Bit in beiden der zwei Merkerregister auf Eins gesetzt ist. Bei dem Beispiel der 9 würde die Ausgabe dann "0100 1111" sein. Wenn die vertikale Bewertungseinheit 940 statt dessen gesteuert worden war, um f2 und f3 zu bewerten, würde die Ausgabe "1100 1100" gewesen sein.
  • Gemäß einigen Ausführungsformen können horizontale und vertikale Bewertungsoperationen unterstützt werden. Man betrachte zum Beispiel das System 1100 der 11, welches vier Merkerregister 1120 (f0 bis f3) mit acht Bit umfaßt. Gemäß einigen Ausführungsformen bestimmt ein Multiplexer 1150, ob acht Bit Daten oder acht Ergebnisbits (z.B. jedes Bit, das einen oder mehrere ALU-Merker darstellt) in einem Merkerregister 1120 gespeichert sind. Darüber hinaus kann ein nachgestelltes Element einer SIMD-Ausführungseinheit zum Beispiel einen FlagWrite, FlagSelect-Befehl verwenden, um auszuwählen, welches aus f0 bis f3 die Information speichern wird.
  • Gemäß einigen Ausführungsformen empfängt eine horizontale Bewertungseinheit 1130 vier Bit (eines von jedem Merkerregister) für jeden SIMD-Ausführungskanal und erzeugt eine Ausgabe mit acht Bit. Eine vertikale Bewertungseinheit 1140 empfängt acht Bit (für jeden SIMD-Ausführungskanal) von jedem Merkerregister und erzeugt eine Ausgabe mit acht Bit. Die horizontale Bewertungseinheit 1130 und die vertikale Bewertungseinheit 1140 können gemäß irgendeiner der hierin beschriebenen Ausführungsformen arbeiten und können zum Beispiel durch ein vorgestelltes Element einer SIMD-Ausführungseinheit gesteuert werden.
  • Ein Multiplexer 1160 kann bestimmen, ob ein vorgestelltes Element der Ausführungseinheit die Ausgabe der horizontalen Bewertungseinheit 1130 oder die Ausgabe der vertikalen Bewertungseinheit 1140 empfängt. Zum Beispiel könnte ein Befehl bewirken, daß das System 1100 eine horizontale Bewertung auf den Merkerregistern durchführt (z.B. "any2horizontal for f2", was bewirkt, daß Paare aus Bits in f2 bewertet werden), während ein anderer Befehl zu einer vertikalen Bewertung führt (z.B. "all4vertical", was bewirkt, daß vier Bits für jeden Kanal bewertet werden).
  • Da auf Information in den Merkerregistern 1120 in effizienter Weise und flexibel auf unterschiedlichen Wegen zugegriffen werden kann, kann die Leistung des Systems 1100 verbessert werden. Zum Beispiel kann die Cross-Channel-Verteilung und logische Information von Merkerbits die Befehlsmenge verringern, die ansonsten benötigt werden würde, um über Software eine solche Merkerbewertung durchzuführen.
  • Darüber hinaus sei eine Ausführungsmaschine betrachtet, die sowohl den Betrieb mit acht Kanälen als auch mit sechzehn Kanälen unterstützt. Gemäß einigen Ausführungsformen können horizontale Bewertungsarbeitsgänge die Verwendung aller Merkerregisterbits vereinfachen, wenn der Acht-Kanal-Betrieb freigegeben ist (z.B. zwei Mengen von Merkerregisterbits für acht Kanäle können für die horizontale Bewertungsoperation verwendet werden). Zusätzlich kann das SOA- und das AOS-Programmieren unterstützt werden.
  • 12 ist ein Blockschaubild eines Systems 1200 gemäß einigen Ausführungsformen. Das System 1200 kann zum Beispiel mit einem Medienprozessor verbunden sein, der dazu ausgelegt ist, digitale Fernsehsignale aufzuzeichnen und/oder anzuzeigen. Das System 1200 umfaßt eine Graphikmaschine 1210 und hat eine SIMD-Ausführungsmaschine 1220 für n Operanden gemäß irgendeiner der hierin beschriebenen Ausführungsformen. Zum Beispiel könnte die SIMD-Ausführungsmaschine 1220 horizontale und/oder vertikale Bewertungseinheiten für ein oder mehrere Merkerregister haben. Das System 1200 kann auch eine Befehlspeichereinheit 1230 umfassen, um SIMD-Befehle zu speichern, und eine Graphikspeichereinheit 1240, um Graphikdaten zu speichern (z.B. Vektoren, die mit einem dreidimensionalen Bild verknüpft sind). Die Befehlsspeichereinheit 1230 und die Graphikspeichereinheit 1240 können zum Beispiel Speichereinheiten mit wahlfreiem Zugriff (RAM – Random Access Memory) aufweisen. Gemäß einigen Ausführungsformen umfaßt das System 1200 auch ein Festplattenlaufwerk 1250 (z.B. um Medieninformation zu speichern und zur Verfügung zu stellen).
  • Das Folgende veranschaulicht verschiedene zusätzliche Ausführungsformen. Diese bilden keine Definition aller möglichen Ausführungsformen, und die Fachleute werden verstehen, daß viele weitere Ausführungsformen möglich sind. Weiter, obwohl die folgenden Ausführungsformen aus Gründen der Klarheit kurz beschrieben sind, werden die Fachleute verstehen, wie jegliche Änderungen, falls notwendig, an der obigen Beschreibung vorzunehmen sind, um diese und weitere Ausführungsformen und Anwendungen damit in Einklang zu bringen.
  • Obwohl bestimmte Bewertungsoperationen hierin als Beispiele beschrieben worden sind, können Ausführungsformen Merkerregisterinformation auf irgendeiner Anzahl von Wegen neu anordnen und/oder neu organisieren. Zum Beispiel könnte eine horizontale Bewertungseinheit die sechzehn LSBs eines Merkerregisters mit zweiunddreißig Bit mit den sechzehn MSBs vertauschen (to swap). In ähnlicher Weise könnten einige Bits in dem Merkerregister in andere Bits kopiert werden (z.B. das Merkerbit, das mit einer X-Komponente eines Graphikvektors verbunden ist, könnte für die Merkerbits kopiert werden, die mit den anderen drei Komponenten des Vektors verknüpft sind).
  • Als ein weiteres Beispiel betrachte man einen Fall, bei des es hilfreich sein würde, festzustellen, ob keines der folgenden Bits gesetzt ist: (i) diejenigen in f2, die mit den SIMD-Ausführungskanälen 0 bis 3 verknüpft sind, und (ii) diejenigen in f0, die mit den SIMD-Ausführungskanälen 4 bis 7 verknüpft sind. In diesem Fall könnte eine horizontale Bewertungseinheit die Bits aller vier Merkerregister für jeden Ausführungskanal empfangen und eine zusammengesetzte Menge an Information mit acht Bit erzeugen, bevor die geeignete Bewertung durchgeführt wird, um eine Ausgabe zu erzeugen.
  • Als ein noch weiteres Beispiel könnte ein System einen ersten Graphikvektor verarbeiten, indem die Kanäle 0 bis 3 verwendet werden, und einen zweiten Graphikvektor, in dem die Kanäle 4 bis 7 verwendet werden. Zusätzlich sei angenommen, daß es hilfreich sein würde, auf einer Basis pro Kanal zu bestimmen, wann beides des folgenden wahr ist: (i) das Bit in f0 und das Bit in f1 sind für den zweiten Graphikvektor Null und (ii) das Bit in f2 und das Bit in f3 sind für den ersten Graphikvektor Null. In diesem Fall könnte eine Bewertungseinheit die niedrigeren vier Bit von f2 mit den oberen vier Bit von f2 vertauschen (und eine ähnliche Operation für f3 durchführen), bevor eine vertikale Bewertungsoperation durchgeführt wird.
  • Zusätzlich sei angemerkt, daß die hierin beschriebenen Ausführungsformen eine Multithread-Ausführungsmaschine unterstützen könnten. Man betrachte zum Beispiel einen SIMD mit sechzehn Kanälen und vier Merkerregistern, die drei Threads ausführen kann. In diesem Fall könnte eine horizontale Bewertungseinheit drei Mengen mit vier Bits (drei Threads der vier Merkerregister) für jeden der sechzehn Ausführungskanäle empfangen. In ähnlicher Weise könnte eine vertikale Bewertungseinheit drei Mengen mit sechzehn Bit (drei Threads der sechzehn Kanäle) für jedes der vier Merkerregister empfangen.
  • Die mehreren Ausführungsformen, die hierin beschrieben sind, dienen lediglich dem Zweck der Veranschaulichung. Fachleute werden aus dieser Beschreibung erkennen, wie weitere Ausführungsformen in die Praxis umgesetzt werden können, mit Modifikationen und Änderungen, die nur durch die Ansprüche beschränkt sind.
  • ZUSAMMENFASSUNG
  • Gemäß einiger Ausführungsformen kann eine Bewertungseinheit für Merkerregister von Einzelbefehl-Mehrfachdaten(SIMD)-Ausführungsmaschinen zur Verfügung gestellt werden. Zum Beispiel kann eine horizontale Bewertungseinheit Bewertungsoperationen über mehrere Vektoren durchführen, die von der SIMD-Ausführungsmaschine verarbeitet werden. Gemäß einiger Ausführungsformen könnte eine vertikale Bewertungseinheit Bewertungsoperationen über mehrere Merkerregister durchführen.

Claims (29)

  1. Verfahren, das aufweist: Speichern von Information in einem Merkerregister mit n Orten einer Einzelbefehl-Mehrdaten (SIMD)-Ausführungsmaschine mit n Kanälen, wobei die Information mehrere unabhängige m-Kanal-Vektoren darstellt, wobei n und m ganze Zahlen größer als Eins sind; und Erzeugen einer Ausgabe basierend auf der Information in dem Merkerregister, wobei die Ausgabe wenigstens einen Ort umfaßt, dessen Wert auf Information basiert, welche verschiedene unabhängige Vektoren darstellt.
  2. Verfahren nach Anspruch 1, bei dem das Merkerregister p Bit hat, wobei jedes Bit wenigstens einen Kanal der SIMD-Ausführungsmaschine darstellt, und p kleiner als n ist.
  3. Verfahren nach Anspruch 1, bei dem die Ausgabe p Bit hat, wobei jedes Bit wenigstens einen Kanal der SIMD-Ausführungsmaschine darstellt, und p kleiner als n ist.
  4. Verfahren nach Anspruch 1, bei dem jeder Vektor (i) wenigstens zwei Kanälen der SIMD-Ausführungsmaschine zugewiesen ist und (ii) zwei Ortswerte umfaßt, die einem Graphikort zugewiesen sind.
  5. Verfahren nach Anspruch 1, bei dem (i) das Merkerregister n Bit hat, wobei jedes Bit einen Kanal der SIMD-Ausführungsmaschine darstellt, und (ii) die Ausgabe n Bit hat, wobei jedes Bit einen Kanal der SIMD-Ausführungsmaschine darstellt.
  6. Verfahren nach Anspruch 5, bei dem ein erstes Bit in der Ausgabe einen ersten Kanal der SIMD-Ausführungsmaschine darstellt und der Wert des ersten Bit in der Ausgabe wenigstens teilweise auf einem Bit in dem Merkerregister basiert, das den ersten Kanal nicht darstellt.
  7. Verfahren nach Anspruch 1, bei dem das Erzeugen der Ausgabe aufweist: Empfangen einer Angabe, die mit wenigstens einer Menge von Kanälen der SIMD-Ausführungsmaschine verbunden ist; Bewerten der Menge der Bits in dem Merkerregister, die die Menge der Kanäle der SIMD-Ausführungsmaschine darstellt; und Speichern eines Ergebnisses der Bewertung in der Menge der Bits der Ausgabe, die die Menge der Kanäle der SIMD-Ausführungsmaschine darstellt.
  8. Verfahren nach Anspruch 7, bei dem das Bewerten das Bestimmen, ob: (i) alle aus der Menge der Bits in dem Merkerregister einen ersten Wert haben, oder (ii) irgenwelcheaus der Menge der Bits in dem Merkerregister einen ersten Wert haben, aufweist.
  9. Verfahren nach Anspruch 7, bei dem die Angaben unterschiedlich bemessenen Mengen der Kanäle der SIMD-Ausführungsmaschine zugewiesen sind.
  10. Verfahren nach Anspruch 7, bei dem die empfangene Angabe mehreren Mengen zugewiesen ist und das Bewerten und das Speichern für jede Menge durchgeführt wird.
  11. Verfahren nach Anspruch 1, bei dem das Speichern das Speichern erster Information in einem ersten Merkerregister aufweist und das weiter aufweist: Speichern von zweiter Information in einem zweiten Merkerregister der SIMD-Ausführungsmaschine; und Erzeugen einer zweiten Ausgabe basierend auf Information in dem ersten und dem zweiten Merkerregister, wobei die zweite Ausgabe wenigstens einen Ort umfaßt, dessen Wert auf Information sowohl aus dem ersten Merkerregister als auch aus dem zweiten Merkerregister basiert.
  12. Verfahren, das aufweist: Speichern von Information in einem ersten Merkerregister mit p Orten einer Einzelbefehl-Mehrfachdaten (SIMD)-Ausführungsmaschine mit n Kanälen, wobei n und p ganze Zahlen größer als Eins sind; Speichern von Information in einem zweiten Merkerregister der Ausführungsmaschine; und Erzeugen einer Ausgabe, wobei die Ausgabe wenigstens einen Ort umfaßt, dessen Wert auf Information sowohl aus dem ersten Merkerregister als auch aus dem zweiten Merkerregister basiert.
  13. Verfahren nach Anspruch 12, bei dem (i) das erste Merkerregister n Bit hat, wobei jedes Bit einen Kanal der SIMD-Ausführungsmaschine darstellt, (ii) das zweite Merkerregister n Bit hat, wobei jedes Bit einen Kanal der SIMD-Ausführungsmaschine darstellt, und (iii) die Ausgabe n Bit hat, wobei jedes Bit einen Kanal der SIMD-Ausführungsmaschine darstellt.
  14. Verfahren nach Anspruch 13, bei dem ein erstes Bit in der Ausgabe einen ersten Kanal der SIMD-Ausführungsmaschine darstellt und der Wert des ersten Bits in der Ausgabe wenigstens teilweise auf einem Bit in einem Merkerregister basiert, das den ersten Kanal nicht darstellt.
  15. Verfahren nach Anspruch 13, bei dem das Erzeugen der Ausgabe aufweist: Empfangen einer Angabe, die mit einer Menge aus Merkerregistern verbunden ist; und für jeden Kanal der SIMD-Ausführungsmaschine: Bewerten der Bits, die den Kanal darstellen, aus den Merkerregistern in der Menge und Speichern eines Ergebnisses der Bewertung in dem Ausgabebit, das den Kanal darstellt.
  16. Verfahren nach Anspruch 15, bei dem das Bewerten, für jeden Kanal der SIMD-Ausführungsmaschine, das Bestimmen, aufweist, ob eines aus: (i) allen Bits aus den Merkerregistern in der Menge, die den Kanal darstellen, einen ersten Wert haben, oder (ii) irgendwelche der Bit, aus den Merkerregistern in der Menge, die den Kanal darstellen, einen ersten Wert haben.
  17. Verfahren nach Anspruch 15, bei dem Angaben unterschiedlich großen Mengen Merkerregistern zugewiesen werden können.
  18. Verfahren nach Anspruch 13, bei dem die erste Information mehrere unabhängige m-Kanal-Vektoren darstellt, wobei m eine ganze Zahl größer als Eins ist, und das Erzeugen das Erzeugen einer ersten Ausgabe ist, weiter aufweisend: Erzeugen einer zweiten Ausgabe basierend auf der ersten Information, wobei die zweite Ausgabe wenigstens einen Ort umfaßt, dessen Wert auf Information basiert, welche verschiedene unabhängige Vektoren darstellt.
  19. Verfahren nach Anspruch 18, bei dem jeder Vektor (i) wenigstens zwei Kanälen der SIMD-Ausführungsmaschine zugewiesen ist und (ii) zwei Werte umfaßt, denen ein Ort zugewiesen ist.
  20. Verfahren, das aufweist: Speichern von Information in einem Merkerregister einer Einzelbefehl-Mehrdaten (SIMD)-Ausführungsmaschine mit n Kanälen, wobei n eine ganze Zahl größer als Eins ist; Empfangen einer Angabe, die einer Menge von Kanälen der SIMD-Ausführungsmaschine zugewiesen ist, und Erzeugen einer Ausgabe basierend auf der Information in dem Merkerregister, das der Menge der Kanäle der SIMD-Ausführungsmaschine zugewiesen ist.
  21. Vorrichtung, die aufweist: ein Merkerregister mit n Bit einer Einzelbefehl-Mehrdaten (SIMD)-Ausführungsmaschine mit n Kanälen, wobei n eine ganze Zahl größer als Eins ist und jedes Bit des Merkerregisters einem Kanal zugewiesen ist, und bei der das Merkerregister dazu dient, Information von einer Ausführungseinheit zu speichern, wobei die Information mehr als einem Mehrkanal-Graphikvektor zugewiesen ist; und einer horizontalen Bewertungseinheit, um eine Ausgabe mit n Bit zu erzeugen, wobei jedes Bit in der Ausgabe einem Kanal der SIMD-Ausführungsmaschine zugewiesen ist, und ein Wert wenigstens eines Bit der Ausgabe auf Bits in dem Merkerregister basiert, die unterschiedliche Graphikvektoren darstellen.
  22. Vorrichtung nach Anspruch 21, bei der die horizontale Bewertungseinheit weiter dazu dient, (i) eine Angabe zu empfangen, die wenigstens einer Menge von Kanälen der SIMD-Ausführungsmaschine zugewiesen ist, (ii) die Menge der Bits in dem Merkerregister zu bewerten, die die Menge der Kanäle der SIMD-Ausführungsmaschine darstellt, und (iii) ein Ergebnis der Bewertung an die Ausführungseinheit auszugeben.
  23. Vorrichtung nach Anspruch 22, bei der Angaben unterschiedlich großen Mengen von Kanälen der SIMD-Ausführungsmaschine zugewiesen sein können.
  24. Vorrichtung, die aufweist: ein erstes Merkerregister mit n Bit einer Einzelbefehl-Mehrdaten (SIMD)-Ausführungsmaschine mit n Kanälen, wobei n eine ganze Zahl größer als Eins ist; ein zweites Merkerregister mit n Bit der SIMD-Ausführungsmaschine; und eine vertikale Bewertungseinheit, um eine Ausgabe mit n Bit zu erzeugen, wobei die Ausgabe wenigstens ein Bit umfaßt, dessen Wert basierend auf Information sowohl von dem ersten Merkerregister als auch von dem zweiten Merkerregister basiert.
  25. Vorrichtung nach Anspruch 24, bei der die vertikale Bewertungseinheit weiter dazu dient, (i) eine Angabe zu empfangen, die einer Menge Merkerregister zugewiesen ist, und, für jeden Kanal der SIMD-Ausführungsmaschine: (ii) die Bits, aus den Merkerregistern in der Menge zu bewerten, die den Kanal darstellen, und (ii) ein Ergebnis der Bewertung in dem Ausgabebit, das den Kanal darstellt, zu speichern.
  26. Vorrichtung nach Anspruch 25, die weiter aufweist: eine Ausführungseinheit, um die Angabe zur Verfügung zu stellen und die Ausgabe zu empfangen.
  27. System, das aufweist: einen Prozessor, einschließlich: einer Einzelbefehl-Mehrdaten (SIMD)-Ausführungsmaschine mit n Kanälen, wobei n eine ganze Zahl größer als Eins ist, die umfaßt: ein erstes Merkerregister mit n Bit, ein zweites Merkerregister mit n Bit, und eine vertikale Bewertungseinheit, um eine Ausgabe mit n Bit zu erzeugen, wobei die Ausgabe wenigstens ein Bit umfaßt, dessen Wert auf Information sowohl von dem ersten Merkerregister als auch von dem zweiten Merkerregister basiert; und eine Graphikspeichereinheit.
  28. System nach Anspruch 27, bei dem das erste Merkerregister dazu dient, Information von einer Ausführungseinheit zu speichern, wobei die Information mehr als einem Mehrkanal-Graphikvektor zugewiesen ist.
  29. System nach Anspruch 27, das weiter aufweist: eine horizontale Bewertungseinheit.
DE112005003130T 2004-12-17 2005-12-15 Verfahren und Vorrichtung zum Bewerten von Flag-Registern in einer Einzelbefehl-Mehrdaten-Ausführungsmaschine Expired - Fee Related DE112005003130B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/015,778 US7219213B2 (en) 2004-12-17 2004-12-17 Flag bits evaluation for multiple vector SIMD channels execution
US11/015,778 2004-12-17
PCT/US2005/046321 WO2006066262A2 (en) 2004-12-17 2005-12-15 Evalutation unit for single instruction, multiple data execution engine flag registers

Publications (2)

Publication Number Publication Date
DE112005003130T5 true DE112005003130T5 (de) 2007-11-22
DE112005003130B4 DE112005003130B4 (de) 2009-09-17

Family

ID=36123387

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112005003130T Expired - Fee Related DE112005003130B4 (de) 2004-12-17 2005-12-15 Verfahren und Vorrichtung zum Bewerten von Flag-Registern in einer Einzelbefehl-Mehrdaten-Ausführungsmaschine

Country Status (8)

Country Link
US (1) US7219213B2 (de)
JP (1) JP4901754B2 (de)
KR (1) KR100958964B1 (de)
CN (1) CN100422979C (de)
DE (1) DE112005003130B4 (de)
GB (1) GB2436499B (de)
TW (1) TWI297853B (de)
WO (1) WO2006066262A2 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008071130A (ja) * 2006-09-14 2008-03-27 Ricoh Co Ltd Simd型マイクロプロセッサ
EP2478440A1 (de) * 2009-09-17 2012-07-25 Nokia Corp. Mehrkanaliger zwischenspeicher
US8996845B2 (en) * 2009-12-22 2015-03-31 Intel Corporation Vector compare-and-exchange operation
WO2013081588A1 (en) * 2011-11-30 2013-06-06 Intel Corporation Instruction and logic to provide vector horizontal compare functionality
US10318291B2 (en) 2011-11-30 2019-06-11 Intel Corporation Providing vector horizontal compare functionality within a vector register
US10255228B2 (en) * 2011-12-06 2019-04-09 Nvidia Corporation System and method for performing shaped memory access operations
US10042813B2 (en) * 2014-12-15 2018-08-07 Intel Corporation SIMD K-nearest-neighbors implementation
GB2536069B (en) * 2015-03-25 2017-08-30 Imagination Tech Ltd SIMD processing module

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2768803B2 (ja) * 1990-04-26 1998-06-25 株式会社東芝 並列演算処理装置
JP2793357B2 (ja) * 1990-11-20 1998-09-03 株式会社東芝 並列演算装置
JP2793342B2 (ja) * 1990-08-09 1998-09-03 株式会社東芝 演算処理装置
US5659722A (en) 1994-04-28 1997-08-19 International Business Machines Corporation Multiple condition code branching system in a multi-processor environment
JP3442225B2 (ja) * 1996-07-11 2003-09-02 株式会社日立製作所 演算処理装置
US5805875A (en) * 1996-09-13 1998-09-08 International Computer Science Institute Vector processing system with multi-operation, run-time configurable pipelines
JP3652518B2 (ja) 1998-07-31 2005-05-25 株式会社リコー Simd方式の演算器及び演算処理装置
US20020083311A1 (en) * 2000-12-27 2002-06-27 Paver Nigel C. Method and computer program for single instruction multiple data management
GB2382886B (en) * 2001-10-31 2006-03-15 Alphamosaic Ltd Vector processing system
US6986023B2 (en) * 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
JP3958662B2 (ja) * 2002-09-25 2007-08-15 松下電器産業株式会社 プロセッサ

Also Published As

Publication number Publication date
JP4901754B2 (ja) 2012-03-21
GB0713878D0 (en) 2007-08-29
WO2006066262A3 (en) 2006-12-14
GB2436499B (en) 2009-07-22
GB2436499A (en) 2007-09-26
KR100958964B1 (ko) 2010-05-20
DE112005003130B4 (de) 2009-09-17
CN1790310A (zh) 2006-06-21
TWI297853B (en) 2008-06-11
US7219213B2 (en) 2007-05-15
US20060149924A1 (en) 2006-07-06
CN100422979C (zh) 2008-10-01
TW200636573A (en) 2006-10-16
WO2006066262A2 (en) 2006-06-22
KR20070089208A (ko) 2007-08-30
JP2008524723A (ja) 2008-07-10

Similar Documents

Publication Publication Date Title
DE112005003130B4 (de) Verfahren und Vorrichtung zum Bewerten von Flag-Registern in einer Einzelbefehl-Mehrdaten-Ausführungsmaschine
DE60018078T2 (de) Einstellung von bedingungswerten in einem rechner
DE102008034519B4 (de) Aufgeteilte Datenstruktur, und Verfahren zum Laden einer Partikel-basierten Simulation unter Verwendung der aufgeteilten Datenstruktur in GPU, usw.
DE112005003265T5 (de) Registerdateibereiche für ein Verarbeitungssystem
DE69933088T2 (de) Vliw-verarbeiter verarbeitet befehle von verschiedenen breiten
DE19540102C2 (de) Verfahren und Gleitkomma-Recheneinheit mit einer Logik für eine Vierfach-Präzisions-Arithmetik
DE19735350B4 (de) Vektorprozessor zum Ausführen paralleler Operationen und Verfahren hierfür
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE2714805A1 (de) Datenverarbeitungssystem
DE112006004005T5 (de) Kommunikation zwischen Mehrfach-Ausführungsfolgen in einem Prozessor
DE102017113735B4 (de) Statistische Operationen auf einem zweidimensionalen Bildprozessor
DE102008031998A1 (de) System, Verfahren und Computerprogrammprodukt zum Ausführen einer Scanfunktion
DE69722859T2 (de) Formatumwandlung von Datenwörtern graphischer Bilder
DE102008017846A1 (de) Verfahren und Benutzerschnittstelle für die grafische Darstellung von medizinischen Daten
DE112011103211T5 (de) Auf einem Halbleiterchip implementierte vektorlogische Reduktionsoperation
DE112011103197T5 (de) Verfahren und Vorrichtung für universelle logische Operationen
DE69233282T2 (de) Datenverarbeitungsvorrichtung
DE4040348A1 (de) Vorrichtung zur designauswertung
DE602004008818T2 (de) Verfahren zur Bezugnahme auf die Adresse von Vektordaten und Vektorprozessor
DE19526008A1 (de) Vertikal partitionierter, primärer Befehls-Cache-Speicher
DE69824032T2 (de) Computer-prozessor und verfahren zum kontinuierlichen schreiben und lesen von daten
DE2324063C3 (de) Pufferspeichereinrichtung
DE19528760A1 (de) Bildverarbeitende Schaltung eines hohen Integrationsgrads
DE2458259A1 (de) Datenverarbeitungssystem zum vergleichen verschiedener datenstrukturen
DE2702722A1 (de) Instruktionsinterpretation in elektronischen datenverarbeitungsanlagen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee