DE112005003130B4 - Verfahren und Vorrichtung zum Bewerten von Flag-Registern in einer Einzelbefehl-Mehrdaten-Ausführungsmaschine - Google Patents

Verfahren und Vorrichtung zum Bewerten von Flag-Registern in einer Einzelbefehl-Mehrdaten-Ausführungsmaschine Download PDF

Info

Publication number
DE112005003130B4
DE112005003130B4 DE112005003130T DE112005003130T DE112005003130B4 DE 112005003130 B4 DE112005003130 B4 DE 112005003130B4 DE 112005003130 T DE112005003130 T DE 112005003130T DE 112005003130 T DE112005003130 T DE 112005003130T DE 112005003130 B4 DE112005003130 B4 DE 112005003130B4
Authority
DE
Germany
Prior art keywords
bit
bits
output
execution engine
flag register
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.)
Expired - Fee Related
Application number
DE112005003130T
Other languages
English (en)
Other versions
DE112005003130T5 (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/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/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/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 or 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 or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3888Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel

Landscapes

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

Abstract

Verfahren zum Bewerten von Flag-Registern einer Einzelbefehl-Mehrdaten (SIMD)-Ausführungsmaschine, mit den Schritten:
– Speichern von Information in einem Flag-Register mit n Bit in einer SIMD-Ausführungsmaschine, wobei die Information durch Ausführen eines einzelnen Befehls auf mehreren unabhängigen m-Kanal-Vektoren erzeugt wird, wobei n und m ganze Zahlen größer als 1 sind, wobei jeder Vektor wenigstens drei Ortswerte aufweist, die mit einer dreidimensionalen Grafikposition verknüpft sind;
– Empfangen einer Bewertungsbedingung, die mit wenigstens einer Menge der Kanäle der SIMD-Ausführungsmaschine verknüpft ist;
– Bewerten der Menge der Bits in dem Flag-Register, die der angegebenen Menge der Kanäle der SIMD-Ausführungsmaschine entspricht; und
– Erzeugen einer Ausgabe basierend auf der Bewertung;
dadurch gekennzeichnet, dass die Menge der Bits solche Bits umfasst, die mit wenigstens zwei unterschiedlichen unabhängigen Vektoren verknüpft sind.

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 Flag-Register verwendet werden, wobei jedes Flag-Register Bits hat, die jedem Kanal der Ausführungsmaschine zugewiesen sind (z. B. könnten drei Flag-Register 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 Flag-Register auf unterschiedlichen Wegen zuzugreifen, kann die Leistung der Ausführungsmaschine verbessern.
  • Die EP 0 682 309 A2 offenbart ein Datenverarbeitungssystem, geeignet zur Verzweigung eines Einzelbefehls durch mehrere Bediencodes aus mehreren Verarbeitungselementen, bei dem jedes der Verarbeitungselemente ein oder mehrere Zustandssignale sowie ein oder mehrere Speicherelemente erzeugt, die den Verarbeitungselementen zugeordnet sind, um eine Eigenschaft, die mit jedem der Verarbeitungselemente im Zusammenhang steht, zu speichern.
  • Die US 2002/0083311 A1 offenbart ein Verfahren und ein Computerprogramm für das Extrahieren und Zusammenführen arithmetischer Flags, die bei der Verarbeitung einer Vielzahl von Datensätzen in einem SIMD-Prozessor verwendet werden. Die JP 2000 47 998 A offenbart eine artverwandte arithmetische Einheit sowie einen entsprechenden arithmetischen Prozessor.
  • Es ist die Aufgabe der Erfindung, ein Verfahren und eine Vorrichtung zur Verfügung zu stellen, mit dem/mit der in effizienter Weise und flexible auf Information in einem Flag-Register zugegriffen und diese bewertet werden kann.
  • 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 Flag-Register 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 Flag-Register 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 Flag-Register 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 Flag-Register 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 umfasst. in diesem Fall empfangt 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 umfasst. 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, dass 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 300, welches eine SIMD-Ausführungsmaschine 310 mit acht Kanälen umfasst, 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 Flag-Register 320 mit Orten, die jedem Kanal zugewiesen sind, umfassen. Zum Beispiel könnte das Flag-Register 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 – A rithmetic-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:
    add.f.z(8) r0 r1 –r2
  • 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 Flag-Register 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 Bits in dem Flag-Register 320 werden, sofern erforderlich, aktualisiert.
  • Bei manchen Anwendungen kann es hilfreich sein, auf verschiedenen Wegen auf Information in dem Flag-Register 320 zuzugreifen. Bei einer Graphikanwendung zum Beispiel könnte es zu manchen Zeiten hilfreich sein, festzustellen, ob irgendwelche Flags in dem Flag-Register 320 Null sind, während es zu anderen Zeiten hilfreich sein kann, sowohl zu wissen, ob: (i) welche der Flags, die den Kanälen 0 bis 3 zugewiesen sind, die einem ersten Vektor zugewiesen sind, Null sind, als auch ob (ii) irgendwelche der Flags, 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 Flag-Register 420 umfasst. Wie zuvor kann das System 400 Information, die mit mehreren Vektoren verbunden ist, gleichzeitig verarbeiten. Obwohl in 4 ein Flag-Register 420 mit 8 Bit veranschaulicht ist, sei angemerkt, dass andere Anzahlen der Bits zur Verfügung gestellt werden können. Zum Beispiel kann das Flag-Register 420 ein Flag-Register 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 Flag-Registers 420 einem Kanal zugewiesen sein, und das Flag-Register 420 kann Information von einer SIMD-Ausführungseinheit empfangen 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 Flag-Register mit p Bit haben, wobei p kleiner als n ist. Zum Beispiel könnte ein Flag-Register mit vier Bit für eine SIMD-Ausführungsmaschine mit sechzehn Kanälen vorgesehen sein, und jedes Bit in dem Flag-Register 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 Bits 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-, Assembleund/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, dass Teile getrennter Speicherelemente in ein einziges logisches Speicherelement gesammelt werden. Es sei angemerkt, dass 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 Bits von dem Flag-Register 420 empfangen und eine Ausgabe mit acht Bits 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 Flag in dem Flag-Register 420 auf einen entsprechenden Flag 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 Flag-Register 420 durchzuführen. Zum Beispiel könnte eine ”any8”-Bedingung bewirken, dass die horizontale Bewertungseinheit 430 feststellt, ob irgendeines der acht Bit in dem Flag-Register 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 Flag-Register 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 Bits 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 Flag-Register 420 durchzuführen. Zum Beispiel kann die horizontale Bewertungseinheit 430 gesteuert werden, um eine Bewertung für die Bits in dem Flag-Register 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, dass 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 Flag-Register mit n Bits 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 Flag-Register erzeugt. Die Ausgabe kann zum Beispiel wenigstens ein Bit umfassen, dessen Wert auf Information basiert, welche unterschiedliche unabhängige Vektoren darstellt. Zum Beispiel könnte das erste Bit einer Ausgabe mit acht Bits 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 Bits des Flag-Registers zu arbeiten. Zum Beispiel ist 6 ein Ablaufdiagramm eines Verfahrens gemäß einigen Ausführungsformen. Bei 602 wird eine Bewertungsbedingung 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, dass die horizontale Bewertungseinheit 430 getrennt bewertet, ob alle Flagbits Eins sind, sowohl für: (i) die Bits in dem Flag-Register, die den Kanälen 0 bis 3 entsprechen, als auch (ii) die Bits in dem Flag-Register, die den Kanälen 4 bis 7 entsprechen.
  • Ein Ergebnis jeder Bewertung kann darin 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 Flag-Register 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 Flag-Register 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 Bewertungsbedingung empfangen, die mit einer ”any2”-Bedingung verbunden ist, was bedeutet, dass vier Paare Flags 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, dass Mengen jeglicher Größe oder Kombinationen von Größen von Mengen vorgesehen werden können (und dass die Bits in der Menge nicht Nachbarn sein müssen).
  • Man betrachte zum Beispiel ein Flag-Register 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 Bits als eine zweite Menge bewertet werden.
  • Diese Typen der Bewertungsoperationen ”horizontal” können Information über ein einziges Flag-Register 420 gruppieren, neu anordnen und/oder bewerten. Es sei nun auf das System 700 der 7 verwiesen, welches zwei Flag-Register 720 (f0 und f1) mit 8 Bits umfass. Obwohl in 7 zwei Flag-Register 720 veranschaulicht sind, können mehr als zwei vorgesehen sein.
  • Man betrachte nun zum Beispiel die folgenden Befehle für eine SIMD-Ausführungsmaschine:
    add.f0.z(8) r0 r1 –r2
    add.fl.z(8) r3 r4 r5
  • 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 Flag-Register 0 (”.f0”) wird gesetzt, wenn das Ergebnis gleich Null ist (”.z”). Man bemerke, dass dieser Befehl auf acht Operanden für Daten gleichzeitig durchgeführt werden kann (und alle acht Bits 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 Flag-Register 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 Bits zu erzeugen, wobei die Ausgabe wenigstens ein Bit umfasst, dessen Wert auf Information aus beiden Flag-Registern 720 basiert. Zum Beispiel kann die vertikale Bewertungseinheit 740 die acht Bit von f0 zusammen mit den acht Bits von f1 empfangen und eine Ausgabe mit 8 Bits 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 Flag-Register mit n Bits 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 Flag-Register mit n Bits der Ausführungsmaschine bei 804 gespeichert. Bei 806 wird eine Ausgabe erzeugt, wobei die Ausgabe wenigstens ein Bit umfasst, dessen Wert auf Information aus sowohl dem ersten Flag-Register als auch dem zweiten Flag-Register 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 dass 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 Flag-Register 740 hinweg kombinieren. In manchen Fällen könnte die vertikale Bewertungseinheit 940 Information über Mengen der Flag-Register hinweg kombinieren. Man betrachte zum Beispiel das System 900 der 9, welches vier Flag-Register 920 (f0 bis f3) mit jeweils acht Bits umfasst. Darüber hinaus empfangt die vertikale Bewertungseinheit 940 acht Bits aus jedem der Flag-Register und erzeugt eine Ausgabe mit acht Bits.
  • 10 veranschaulicht ein Verfahren, das mit einem solchen System 900 verknüpft sein kann. Bei 902 wird eine Angabe, die einer Menge der Flag-Register zugewiesen ist, empfangen. Die Angabe könnte die vertikale Bewertungseinheit 940 steuern, um zum Beispiel auf einem der Flag-Register oder allen vieren der Flag-Register zu arbeiten.
  • Gemäß einigen Ausführungsformen könnte die vertikale Bewertungseinheit 940 gesteuert werden, um auf anderen Mengen der Flag-Register 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 Flag-Registern in der Menge bei 1004 bewertet. Das Ergebnis dieser Bewertungen wird bei 1006 in geeigneten Ausgabebits gespeichert.
  • Mit Bezug wieder auf 7 sei angenommen, dass die vertikale Bewertungseinheit 940 eine Bewertungsbedingung empfangen hat, dass f0 und f1 bewertet werden sollten und dass jedes Ausgabebit dann und nur dann gesetzt werden sollte, wenn das entsprechende Bit in beiden der zwei Flag-Register auf Eins gesetzt ist. Bei dem Beispiel der 9 würde die Ausgabe dann ”0100 1111” sein. Wenn die vertikale Bewertungseinheit 940 stattdessen 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 Flag-Register 1120 (f0 bis f3) mit acht Bits umfasst. Gemäß einigen Ausführungsformen bestimmt ein Multiplexer 1150, ob acht Bit Daten oder acht Ergebnisbits (z. B. jedes Bit, das einen oder mehrere ALU-Flags darstellt) in einem Flag-Register 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 Bits (eines von jedem Flag-Register) für jeden SIMD-Ausführungskanal und erzeugt eine Ausgabe mit acht Bits. Eine vertikale Bewertungseinheit 1140 empfangt acht Bits (für jeden SIMD-Ausführungskanal) von jedem Flag-Register und erzeugt eine Ausgabe mit acht Bits. 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, dass das System 1100 eine horizontale Bewertung auf den Flag-Registern durchführt (z. B. ”any2horizontal for f2”, was bewirkt, dass Paare aus Bits in f2 bewertet werden), während ein anderer Befehl zu einer vertikalen Bewertung führt (z. B. ”all4vertical”, was bewirkt, dass vier Bits für jeden Kanal bewertet werden).
  • Da auf Information in den Flag-Registern 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 die Befehlsmenge verringern, die ansonsten benötigt werden würde, um über Flag-Registerbits 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 Flag-Registerbits vereinfachen, wenn der Acht-Kanal-Betrieb freigegeben ist (z. B. zwei Mengen von Flag-Registerbits 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 umfasst 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 Flag-Register 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 umfasst 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, dass 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 Flag-Registerinformation auf irgendeiner Anzahl von Wegen neu anordnen und/oder neu organisieren. Zum Beispiel könnte eine horizontale Bewertungseinheit die sechzehn LSBs eines Flag-Registers mit zweiunddreißig Bit mit den sechzehn MSBs vertauschen (to swap). In ähnlicher Weise könnten einige Bits in dem Flag-Register 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 Flag-Register 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, dass es hilfreich sein würde, auf einer Basis pro Kanal zu bestimmen, warm 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, dass 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 Flag-Registern, die drei Threads ausführen kann. In diesem Fall könnte eine horizontale Bewertungseinheit drei Mengen mit vier Bits (drei Threads der vier Flag-Register) 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 Flag-Register 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.

Claims (25)

  1. Verfahren zum Bewerten von Flag-Registern einer Einzelbefehl-Mehrdaten (SIMD)-Ausführungsmaschine, mit den Schritten: – Speichern von Information in einem Flag-Register mit n Bit in einer SIMD-Ausführungsmaschine, wobei die Information durch Ausführen eines einzelnen Befehls auf mehreren unabhängigen m-Kanal-Vektoren erzeugt wird, wobei n und m ganze Zahlen größer als 1 sind, wobei jeder Vektor wenigstens drei Ortswerte aufweist, die mit einer dreidimensionalen Grafikposition verknüpft sind; – Empfangen einer Bewertungsbedingung, die mit wenigstens einer Menge der Kanäle der SIMD-Ausführungsmaschine verknüpft ist; – Bewerten der Menge der Bits in dem Flag-Register, die der angegebenen Menge der Kanäle der SIMD-Ausführungsmaschine entspricht; und – Erzeugen einer Ausgabe basierend auf der Bewertung; dadurch gekennzeichnet, dass die Menge der Bits solche Bits umfasst, die mit wenigstens zwei unterschiedlichen unabhängigen Vektoren verknüpft sind.
  2. Verfahren nach Anspruch 1, bei dem das Flag-Register 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 Bitwerte umfasst, die einer Grafikposition zugewiesen sind.
  5. Verfahren nach Anspruch 1, bei dem (i) das Flag-Register 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 Flag-Register basiert, das den ersten Kanal nicht darstellt.
  7. Verfahren nach Anspruch 1, bei dem das Erzeugen der Ausgabe aufweist: 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 1, bei dem das Bewerten das Bestimmen, ob: (i) alle aus der Menge der Bits in dem Flag-Register einen ersten Wert haben, oder (ii) irgendwelche aus der Menge der Bits in dem Flag-Register einen ersten Wert haben, aufweist.
  9. Verfahren nach Anspruch 1, bei dem die Bewertungsbedingungen unterschiedlich bemessenen Mengen der Kanäle der SIMD-Ausführungsmaschine zugewiesen sind.
  10. Verfahren nach Anspruch 7, bei dem die empfangene Bewertungsbedingung 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 Flag-Register aufweist und das weiter aufweist: Speichern von zweiter Information in einem zweiten Flag-Register der SIMD-Ausführungsmaschine; und Erzeugen einer zweiten Ausgabe basierend auf Information in dem ersten und dem zweiten Flag-Register, wobei die zweite Ausgabe wenigstens ein Bit umfasst, dessen Wert auf Information sowohl aus dem ersten Flag-Register als auch aus dem zweiten Flag-Register basiert.
  12. Verfahren zum Bewerten von Flag-Registern einer Einzelbefehl-Mehrdaten (SIMD)-Ausführungsmaschine, das aufweist: Speichern von Information in einem ersten Flag-Register mit p Bit 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 Flag-Register der Ausführungsmaschine; und Erzeugen einer Ausgabe, wobei die Ausgabe wenigstens ein Bit umfasst, dessen Wert auf Information sowohl aus dem ersten Flag-Register als auch aus dem zweiten Flag-Register basiert; dadurch gekennzeichnet, dass die Menge der Bits solche Bits umfasst, die mit wenigstens zwei unterschiedlichen unabhängigen Vektoren verknüpft sind.
  13. Verfahren nach Anspruch 12, bei dem (i) das erste Flag-Register n Bit hat, wobei jedes Bit einen Kanal der SIMD-Ausführungsmaschine darstellt, (ii) das zweite Flag- Register 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 Flag-Register basiert, das den ersten Kanal nicht darstellt.
  15. Verfahren nach Anspruch 13, bei dem das Erzeugen der Ausgabe aufweist: Empfangen einer Bewertungsbedingung, die mit einer Menge aus Flag Registern verbunden ist; und für jeden Kanal der SIMD-Ausführungsmaschine: Bewerten der Bits, die den Kanal darstellen, aus den Flag-Registern 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 (i) alle Bits aus den Flag-Registern in der Menge, die den Kanal darstellen, einen ersten Wert haben oder (ii) irgendwelche der Bits aus den Flag-Registern in der Menge, die den Kanal darstellen, einen ersten Wert haben.
  17. Verfahren nach Anspruch 15, bei dem Bewertungsbedingungen unterschiedlich großen Mengen Flag-Registern 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 umfasst, 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 umfasst, denen ein Ort zugewiesen ist.
  20. Vorrichtung zum Bewerten von Flag-Registern in einer Einzelbefehl-Mehrdaten (SIMD)-Ausführungsmaschine, die aufweist: ein Flag-Register 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 Flag-Registers einem Kanal zugewiesen ist, und bei der das Flag-Register dazu dient, Information von einer Ausführungseinheit zu speichern, wobei die Information mit mehreren Mehrkanal-Grafikvektoren verbunden ist; und eine horizontale Bewertungseinheit, die entsprechend einer Bewertungsbedingung, die wenigstens einer Menge von Kanälen der SIMD-Ausführungsmaschine zugewiesen ist, die Menge der Bits in dem Flag-Register bewertet und eine Ausgabe mit n Bit erzeugt, wobei jedes Bit in der Ausgabe einem Kanal der SIMD-Ausführungsmaschine zugewiesen ist, und wobei die Ausgabe ein Ergebnis der Bewertung umfasst, das mit der Ausgabe an die Ausführungseinheit ausgegeben wird, dadurch gekennzeichnet, dass ein Wert wenigstens eines Bits der Ausgabe auf Bits in dem Flag-Register basiert, die unterschiedliche Grafikvektoren darstellen.
  21. Vorrichtung nach Anspruch 20, bei der Bewertungsbedingungen unterschiedlich großen Mengen von Kanälen der SIMD-Ausführungsmaschine zugewiesen sein können.
  22. Vorrichtung zum Bewerten von Flag-Registern in einer Einzelbefehl-Mehrdaten (SIMD)-Ausführungsmaschine, die aufweist: ein erstes Flag-Register mit n Bit in einer SIMD-Ausführungsmaschine mit n Kanälen, wobei n eine ganze Zahl größer als Eins ist; ein zweites Flag-Register mit n Bit in der SIMD-Ausführungsmaschine; und eine vertikale Bewertungseinheit, die entsprechend einer Bewertungsbedingung, die wenigstens einer Menge von Kanälen der SIMD-Ausführungsmaschine zugewiesen ist, die Menge der Bits in dem ersten und dem zweiten Flag-Register bewertet und eine Ausgabe mit n Bit erzeugt, wobei die Ausgabe wenigstens ein Bit umfasst, dessen Wert auf Information sowohl von dem ersten Flag-Register als auch von dem zweiten Flag-Register basiert, und wobei die Ausgabe ein Ergebnis der Bewertung umfasst, das mit der Ausgabe an die Ausführungseinheit ausgegeben wird; dadurch gekennzeichnet, dass ein Wert wenigstens eines Bits der Ausgabe auf Bits in den Flag-Registern basiert, die unterschiedliche Grafikvektoren darstellen.
  23. Vorrichtung nach Anspruch 22, die weiter aufweist: eine Ausführungseinheit, um die Bewertungsbedingung zur Verfügung zu stellen und die Ausgabe zu empfangen.
  24. System unter Verwendung einer Vorrichtung zum Bewerten von Flag-Registern in einer SIMD-Ausführungsmaschine, 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 umfasst: ein erstes Flag-Register mit n Bit, ein zweites Flag-Register mit n Bit, und eine vertikale Bewertungseinheit, die entsprechend einer Bewertungsbedingung, die wenigstens einer Menge von Kanälen der SIMD-Ausführungsmaschine zugewiesen ist, die Menge der Bits in dem ersten und dem zweiten Flag-Register bewertet und eine Ausgabe mit n Bit erzeugt, wobei die Ausgabe wenigstens ein Bit umfasst, dessen Wert auf Information sowohl von dem ersten Flag-Register als auch von dem zweiten Flag-Register basiert, wobei die Ausgabe ein Ergebnis der Bewertung umfasst, das mit der Ausgabe an die Ausführungseinheit ausgegeben wird, und wobei das erste Flag-Register dazu dient, Information von einer Ausführungseinheit zu speichern, wobei die Information mit mehreren Mehrkanal-Grafikvektoren verbunden ist; und eine Grafikspeichereinheit; dadurch gekennzeichnet, dass ein Wert wenigstens eines Bits der Ausgabe auf Bits in den Flag-Registern basiert, die unterschiedliche Grafikvektoren darstellen
  25. System nach Anspruch 24, 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 DE112005003130T5 (de) 2007-11-22
DE112005003130B4 true 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 (9)

* 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型マイクロプロセッサ
WO2011032593A1 (en) * 2009-09-17 2011-03-24 Nokia Corporation Multi-channel cache memory
US8996845B2 (en) * 2009-12-22 2015-03-31 Intel Corporation Vector compare-and-exchange operation
CN103959237B (zh) 2011-11-30 2016-09-28 英特尔公司 用于提供向量横向比较功能的指令和逻辑
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
US20200341772A1 (en) * 2019-04-29 2020-10-29 DeGirum Corporation Efficient Architectures For Deep Learning Algorithms

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0682309A2 (de) * 1994-04-28 1995-11-15 International Business Machines Corporation Datenverarbeitungssystem, geeignet zur Verzweigung eines Einzelbefehls durch mehrere Bedingungscodes aus mehreren Verarbeitungselementen
JP2000047998A (ja) * 1998-07-31 2000-02-18 Ricoh Co Ltd Simd方式の演算器及び演算処理装置
US20020083311A1 (en) * 2000-12-27 2002-06-27 Paver Nigel C. Method and computer program for single instruction multiple data management

Family Cites Families (8)

* 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 株式会社東芝 演算処理装置
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
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 松下電器産業株式会社 プロセッサ

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0682309A2 (de) * 1994-04-28 1995-11-15 International Business Machines Corporation Datenverarbeitungssystem, geeignet zur Verzweigung eines Einzelbefehls durch mehrere Bedingungscodes aus mehreren Verarbeitungselementen
JP2000047998A (ja) * 1998-07-31 2000-02-18 Ricoh Co Ltd Simd方式の演算器及び演算処理装置
US20020083311A1 (en) * 2000-12-27 2002-06-27 Paver Nigel C. Method and computer program for single instruction multiple data management

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Patent Abstracts of Japan, JP 2000-47 998 A
PATENT ABSTRACTS OF JAPAN; & JP 2000 047998 A *

Also Published As

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

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
DE68928727T2 (de) Cachespeicheranlage zum Versorgen eines Festworts eines Befehlscodes mit variabler Länge und Befehlsabrufanlage
DE69933088T2 (de) Vliw-verarbeiter verarbeitet befehle von verschiedenen breiten
DE102008034519B4 (de) Aufgeteilte Datenstruktur, und Verfahren zum Laden einer Partikel-basierten Simulation unter Verwendung der aufgeteilten Datenstruktur in GPU, usw.
DE69328070T2 (de) Maske zum Auswählen von Kompenenten in einem Verbundoperand
DE112005003265T5 (de) Registerdateibereiche für ein Verarbeitungssystem
EP0689694B1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
DE19735348B4 (de) Vektorprozessor zur Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern und zugehöriges Verfahren zum Betreiben desselben
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE112006004005T5 (de) Kommunikation zwischen Mehrfach-Ausführungsfolgen in einem Prozessor
DE102015112202A1 (de) Kombinieren von Pfaden
DE2714805A1 (de) Datenverarbeitungssystem
DE102017113735B4 (de) Statistische Operationen auf einem zweidimensionalen Bildprozessor
DE102013022722B4 (de) System und verfahren zur synchronisierung von strängen in einem divergenten codegebiet
DE69230626T2 (de) Informationsverarbeitungssystem mit der Fähigkeit zum Betreiben von mehreren Vektorpipelines in zwei unterscheidlichen Wirkungsweisen
DE69130757T2 (de) Ausführungsvorrichtung für bedingte Verzweigungsbefehle
DE3689389T2 (de) Datenverarbeitungsprozessor.
DE69722859T2 (de) Formatumwandlung von Datenwörtern graphischer Bilder
DE112011103197T5 (de) Verfahren und Vorrichtung für universelle logische Operationen
DE69025650T2 (de) Multiprozessorsystem mit Vektorpipelinen
DE102010050430A1 (de) Das Durchführen paralleler Schattierungsoperationen
DE69233282T2 (de) Datenverarbeitungsvorrichtung
DE3855524T2 (de) Arithmetik-Parallelverarbeitungseinheit und zugehöriger Kompilator
DE4040348A1 (de) Vorrichtung zur designauswertung

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