-
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:
-
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.