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