-
Hintergrund
-
1. Gebiet
-
Die
vorliegende Offenbarung betrifft das Gebiet von Verarbeitungsvorrichtungen
und damit in Beziehung stehender Software und Softwaresequenzen,
die mathematische Operationen ausführen.
-
2. Beschreibung des Stands
der Technik
-
Durch
die Verbesserung der Leistungsfähigkeit
von Computersystemen und anderen Verarbeitungssystemen wird im allgemeinen
die Gesamtdurchlaufleistung verbessert und eine verbesserte Nutzererfahrung zur
Verfügung
gestellt. Ein Interessengebiet ist die Verarbeitung von Bilddaten.
Da Computer und andere Verarbeitungssysteme größere Mengen an Video- oder Bilddaten handhaben,
gewinnen Techniken zur Beschleunigung derartiger Bearbeitungen an
Bedeutung.
-
Videodaten
können
in der Form von Pixeln dargestellt werden. Ein beispielhaftes Format
für ein
Pixel ist das Rot, Grün,
Blau (RGB) Format. Die Zahl der zur Darstellung eines Pixels verwendeten
Bits kann abhängig
von dem speziellen System variieren. Beispielsweise können bei
einer RGB-Darstellung mit vierundzwanzig Bit acht Bits für jede Komponente
reserviert werden. Ein anderes gängiges
Format ist das RGBA-Format, das eine „Alpha"-Information, d.h. einen Transparenzindikator
umfaßt.
Eine Alpha-Kanal-Nummer spezifiziert die Transparenz des speziellen
Pixels in einem Bereich von 0 (vollständig lichtundurchlässig) bis
255 (vollständig
transparent). Andere Formate, wie beispielsweise das Luminanz (YUV)-Format
oder jedes andere bekannte oder anderweitig verfügbare Format können ebenfalls
verwendet werden.
-
Die
Verarbeitung von Pixeln kann in anderen Formaten als in ihrer Pixel-Darstellung
(z.B. als ganze Zahl) durchgeführt
werden. Beispielsweise kann zur Durchführung einiger mathematischer
Operationen auf Pixelwerte zunächst
eine Umwandlung in eine Fließkommadarstellung
wünschenswert
sein. Von verschiedenen Hochsprachen (z.B. C, Java, etc.) können Befehle
zur Verfügung
gestellt werden, die zur Umwandlung eines Pixelwerts in einem ganzzahligen
Format in einen anderen Formattyp verwendet werden können. Diese
Hochsprachen sind jedoch aufgrund ihrer Natur in systemspezifische
Befehlssequenzen untergliedert und können keine Parallelität oder Wirksamkeit
bei der Ausführung
der Umwandlung garantieren.
-
Andererseits
können
in der systemspezifischen Sprache einer Verarbeitungsvorrichtung
geschriebene Softwaresequenzen für
eine Durchführung
der Verarbeitung derartiger Pixel verfaßt werden. Jedoch sind derartige
systemspezifische Sprachsequenzen durch den Befehlssatz der Verarbeitungsvorrichtung
beschränkt. Falls
die Verarbeitungsvorrichtung keine Befehle für eine wirkungsvolle Verarbeitung
von Werten, wie beispielsweise Pixelwerten bietet, kann es schwierig
sein, eine wirkungsvolle Softwaresequenz aufzubauen. Einige Prozessoren
des Stands der Technik umfassen eine Vielzahl von Umwandlungsbefehlen.
Beispielsweise umfaßt
der Intel Pentium® 4 Prozessor Umwandlungsbefehle,
wie beispielsweise die im IA-32 Intel Architecture Software Developer's Manual: Vol. 2:
Instruction Set Reference (Dokumentnummer 2454761) in Einzelheiten beschriebenen.
Jedoch können
unter bestimmten Umständen
und für
einige Anwendungen, wie beispielsweise die Umwandlung und Verarbeitung
von Bilddaten, zusätzliche
Umwandlungen nützlich
sein.
-
Kurzbeschreibung
der Zeichnungen
-
Die
vorliegende Erfindung wird beispielhaft und ohne Beschränkung auf
die Figuren in den beigefügten
Zeichnungen veranschaulicht.
-
1 veranschaulicht
eine Ausführungsform
eines für
eine Umwandlung tauglichen Prozessors.
-
2a veranschaulicht
weitere Einzelheiten einer Verarbeitungsvorrichtung gemäß einer
Ausführungsform.
-
2b veranschaulicht
Einzelheiten einer funktionalen Einheit mit der eine Umwandlung
durchgeführt werden
kann, gemäß einer
Ausführungsform.
-
2c veranschaulicht
ein Befehlsformat gemäß einer
Ausführungsform.
-
2d veranschaulicht
eine Verarbeitungsvorrichtung gemäß einer Ausführungsform.
-
2e veranschaulicht
ein Fließkommaformat
gemäß einer
Ausführungsform.
-
3a veranschaulicht
Umwandlungen, die gemäß einer
Ausführungsform
eines Befehls zur Umwandlung eines ersten Ganzzahltyps in Fließkomma durchgeführt werden.
-
3b veranschaulicht
Umwandlungen, die gemäß einer
weiteren Ausführungsform
eines Befehls zur Umwandlung des ersten Ganzzahltyps in Fließkomma durchgeführt werden.
-
4a veranschaulicht
Umwandlungen, die gemäß einer
Ausführungsform
eines Befehls zur Umwandlung von Fließkomma in den ersten Ganzzahltyp
durchgeführt
werden.
-
4b veranschaulicht
Umwandlungen, die gemäß einer
weiteren Ausführungsform
eines Befehls zur Umwandlung von Fließkomma in einen ersten Ganzzahltyp
gemäß einer
Ausführungsform
durchgeführt werden.
-
5 veranschaulicht
Umwandlungen, die gemäß einer
Ausführungsform
eines Befehls zur Umwandlung eines zweiten Ganzzahltyps in Fließkomma durchgeführt werden.
-
6 veranschaulicht
Umwandlungen, die gemäß einer
Ausführungsform
eines Befehls zur Umwandlung von Fließkommas in einen zweiten Ganzzahltyp
durchgeführt
werden.
-
7a veranschaulicht
Umwandlungen, die gemäß einer
Ausführungsform
eines Befehls einer alternativen Umwandlung in Fließkomma durchgeführt werden.
-
7b veranschaulicht
Umwandlungen, die gemäß einer
Ausführungsform
eines Befehls einer alternativen Umwandlung aus Fließkomma durchgeführt werden.
-
8a veranschaulicht
Umwandlungen, die gemäß einer
Ausführungsform
eines Befehls einer weiteren alternativen Umwandlung in Fließkomma durchgeführt werden.
-
8b veranschaulicht
Umwandlungen, die gemäß einer
Ausführungsform
eines Befehls einer weiteren alternativen Umwandlung aus Fließkomma durchgeführt werden.
-
9 veranschaulicht
eine Ausführungsform
eines Systems, bei dem verschiedene der offenbarten Umwandlungsbefehle
verwendet werden können.
-
10 veranschaulicht
eine Sequenz, bei der verschiedene offenbarte Umwandlungsbefehle
verwendet werden, gemäß einer
Ausführungsform.
-
Detaillierte
Beschreibung
-
In
der folgenden Beschreibung werden Ausführungsformen von Techniken
für parallele
Datenumwandlungen beschrieben. In der folgenden Beschreibung sind
zahlreiche spezielle Einzelheiten, wie beispielsweise Prozessortypen,
Datentypen, Datenformate, Registertypen, Registeranordnungen, Systemkonfigurationen
und dergleichen dargelegt, um ein umfassenderes Verständnis der
vorliegenden Erfindung zu geben. Es ist jedoch zu beachten, daß der Fachmann
die Erfindung ohne derartige spezielle Einzelheiten ausführen kann.
Zusätzlich
wurden einige gut bekannte Strukturen, Schaltungen und dergleichen
nicht in Einzelheiten beschrieben, um die folgende Erfindung nicht
unnötig
zu verschleiern.
-
Mit
der vorliegenden Offenbarung werden verschiedene Umwandlungs- und
Verarbeitungstechniken in Einzelheiten beschrieben, die in einigen
Umgebungen für
einige Datentypen vorteilhaft sein können. Beispielsweise kann in
einigen Fällen
die Bildverarbeitung und insbesondere die Pixelverarbeitung unter
Verwendung der offenbarten Techniken beschleunigt werden. In einigen
Fällen
kann eine Ganzzahl-Fließkomma-Umwandlung
verwendet werden. In anderen Fällen
können
die offenbarten Umwandlungstechniken zur Umwandlung von einem anderen
ersten Format (einen anderen als dem Ganzzahl-Format) in ein zweites
Format (ein anderes als das Fließkommaformat) oder umgekehrt
verwendet werden. Beispielsweise können das redundante numerische
Format oder andere wissenschaftliche, mathematische oder andere
kodierte Formen für
das Ursprungs- oder Zielformat verwendet werden. Zusätzlich wird
vorausgesetzt, daß die
offenbarten Umwandlungstechniken bei einer großen Vielzahl von Signalverarbeitungsszenarien
und/oder in vielen verschiedenen Verarbeitungsumgebungen Anwendung
finden.
-
In 1 ist
eine Ausführungsform
eines Prozessors 100 gezeigt, der Umwandlungen von einem
ersten Format (F1) in ein zweites Format (F2) und umgekehrt durchführt. Bei
dem Prozessor kann es sich um jeden einer Vielzahl unterschiedlicher
Typen von Prozessoren handeln, die Befehle ausführen. Beispielsweise kann es
sich bei dem Prozessor um einen allgemein verwendbaren Prozessor,
wie beispielsweise einen Prozessor aus der Pentium®-Prozessorfamilie
oder der Itanium®-Prozessorfamilie oder
aus anderen Prozessorfamilien der Intel Corporation oder um andere
Prozessoren anderer Firmen handeln. Somit kann es sich bei dem Prozessor
um einen Prozessor mit reduziertem Befehlssatz (RISC), einen Prozessor
mit komplexen Befehlssatz (CISC), einen Prozessor mit einem sehr
langen Befehlswort (VLIW) oder um jeden beliebigen Hybrid- oder alternativen
Prozessortypus handeln. Darüber
hinaus können
die offenbarten Techniken bei zweckbestimmten Prozessoren, wie beispielsweise
Netz- oder Kommunikationsprozessoren, Koprozessoren, eingebetteten
Prozessoren, Kompressionsmaschinen, Grafikprozessoren etc. verwendet
werden.
-
Bei
der Ausführungsform
aus 1 werden ein erstes Register 120 und
zweites Register 125 als ein Teil einer Registerdatei 122 bereitgestellt.
Ein einzelnes physikalisches Register kann bei Ausführungsformen, bei
welchen keine Registerumbenennungstechniken verwendet werden, einem
Architekturregister (architectural register) entsprechen oder gewissermaßen als
ein solches dienen. Bei Ausführungsformen,
bei welchen Registerumbenennungstechniken verwendet werden, kann
der Wert eines Architekturregisters typischerweise zu unterschiedlichen
Zeitpunkten von einem anderen physikalischen Register gehalten werden.
Daher können zu
unterschiedlichen Zeitpunkten verschiedene physikalische Register
aus einer Gruppe umbenannter Register den Architekturregistern entsprechen,
wobei die Entsprechung über
eine Registerumbenennungsschaltung verfolgt wird.
-
Bei
einigen Ausführungsformen
können
das erste Register 120 und das zweite Register einen Teil
eines einzigen Registersatzes bilden. Ein Registersatz oder eine
Gruppe von Registern ist eine Anzahl von Registern (die ggf. umbenannt
sein können),
auf die durch den Befehlssatz in ähnlicher Weise zugegriffen
wird. Beispielsweise können
ein erstes Register (r0) und ein letztes Register (r15) in einer
Registergruppe in derselben Weise adressiert werden, indem lediglich
die Registernummer im Operanden-Spezifikator geändert wird. Bei einigen Mikroprozessorprodukten
der Intel Corporation (z.B. den IA-32 Mirkoprozessoren) umfassen
die Registergruppen Ganzzahlregister (z.B. EAX, EBX, etc.), MMX-Register
(mm1, mm2, etc.), XMM-Register (xmm1, xmm2, etc.) und Fließkommaregister.
-
Die
Registergruppe kann zur Speicherung gepackter Daten angepaßt werden.
Bei gepackten Daten handelt es sich um ein Datenelement, das zumindest
zwei Unterelemente aufweist. Eine Registergruppe kann zur Speicherung
gepackter Datenelemente angepaßt
werden, indem ein Zugriff auf eines oder verschiedene der Unterelemente
des Registers zugelassen wird. Zu verschiedenen Zeitpunkten können gepackte
Datenelemente mit unterschiedlichen Größen in einem speziellen Register
in einer Registergruppe gehalten werden und es können alle der gepackten Elemente
mit unterschiedlichen individuellen Größen individuell oder nicht alle individuell
zugänglich
sein. Bei dem Beispiel aus 1 ist die
Registergruppe 122 mit vier gespeicherten gepackten Datenelementen
gezeigt, wobei jedes dieser ein Viertel der gesamten Bits des Registers
verbraucht.
-
Die
Ausführungsform
aus 1 umfaßt
auch eine funktionale Einheit 130, die in Reaktion auf
Steuersignale arbeitet. Wie im folgenden weiter erläutert wird,
kann es sich bei den Steuersignalen um zusammengesetzte Signale
handeln, die mehrere Bits oder Signalleitungen umfassen, und/oder
kann es sich um Mikrooperationen oder andere Ausgänge von
einer Schaltung, wie beispielsweise einem Decoder, einem Umwandler,
Translator etc. handeln. Wie gezeigt ist, kann die funktionale Einheit 130 ein
Steuersignal empfangen, wie mit dem Pfeil 135 angegeben
ist. In Reaktion auf das Steuersignal 135 kann die funktionale
Einheit auf eines der vier gepackten Datenelemente des Registers 125 zugreifen.
Das spezielle Datenelement, auf das zugegriffen werden soll, kann
durch einen Teil des Steuersignals spezifiziert sein. Bei dem gezeigten
Beispiel wird auf das Element B zugegriffen und wird dieses zur
funktionalen Einheit 130, wie mit dem Pfeil 135' gezeigt ist, weitergeleitet.
Das Ursprungselement B kann bei einigen Ausführungsformen alternativ von
einem Speicherort abgerufen werden.
-
Die
funktionale Einheit wandelt den Wert B aus dem ersten Format (F1)
in mehrere Werte im zweiten Format (F2) um. Diese Mehrzahl von Werten
wird dann im zweiten Register 120 gespeichert, wie mit
dem Pfeil 135'' gezeigt ist.
Die mehreren Werte können
jeweils einem Unterelement von B (z.B. B1, B2, B3 und B4) entsprechen,
das in einem anderen Format wiedergegeben ist. Bei einigen Ausführungsformen
kann der Wert B aus dem Register 125 Unterelemente aufweisen,
die einfach durch die Bitpositionen (die Bitpositionen 1 bis N bilden
das Unterelement 1, die Bitposition N+1 bis 2N bilden das Unterelement
2, etc.) abgegrenzt sind. In anderen Ausführungsformen ist eine spezielle
Umwandlung der gesamten Anzahl in vier verschiedene Komponenten
möglich,
die mathematisch aus der Gesamtzahl abgeleitet werden.
-
Bei
einer Vielzahl von Anwendungen kann es vorteilhaft sein, eine Gruppe
kleinerer Unterelemente in einem ersten Format in dieselbe Anzahl
von Elementen in einem erweiterten oder detaillierten Format aufzuspalten.
Beispielsweise können
Pixeldaten eine Anzahl von Komponenten umfassen, wobei jedoch die
Pixel im allgemeinen als eine Einheit gehandhabt oder bewegt werden.
Es kann sich bei den Elementen A, B, C und D im Register 125 um
einzelne Pixel handeln. Es kann von Vorteil sein, die Unterelemente
dieser Pixel zu verarbeiten. Daher kann eine Umwandlungsoperation
gemäß den offenbarten
Techniken zur Extraktion der Pixelunterelement-(Komponenten) Informationen
für eine
weitere Bearbeitung in einem anderen Format verwendet werden. Die
Durchführung
der Umwandlung aller einzelnen Unterelemente eines Pixels in Reaktion
auf ein einzelnes Steuersignal kann in einigen Fällen die Pixelverarbeitungssequenzen
deutlich beschleunigen.
-
Ähnlich kann
es von Vorteil sein, Daten, wie beispielsweise Pixeldaten, nach
einer Verarbeitung im zweiten Format zurück in ein kompaktes Format
umzuwandeln. Die funktionale Einheit 130 kann eine derartige Umwandlung
in Reaktion auf ein zweites Steuersignal durchführen, wie durch den Pfeil 140 gekennzeichnet ist.
In Reaktion auf das zweite Steuersignal ruft die funktionale Einheit 130 die
vier Komponenten des Wertes B im zweiten Format aus dem Register 120 ab
(Pfeil 140'),
wandelt diese vier Komponenten in das erste Format um und speichert
den kombinierten Wert (B) im Register 125, wie mit dem
Pfeil 140'' angegeben ist.
In diesem Fall wird eine größere Gruppe
von Bits von jedem der mehreren gepackten Datenelemente auf eine kleinere
Gruppe (weniger Bits) reduziert und an einer Position eines Registers
gespeichert, das mehrere Elemente gepackter Daten halten kann.
-
In 2a ist
eine weiter detaillierte Ansicht eines Prozessors 200 gemäß einer
Ausführungsform
gezeigt. In 2a ist auch ein mit dem Prozessor 200 gekoppelter
Speicher 270 gezeigt. Bei dem Speicher 270 kann
es sich um jeden einer Vielzahl von Speichern (einschließlich verschiedener
Schichten einer Speicherhierarchie) handeln, die dem Fachmann bekannt
oder in anderer Weise verfügbar
sind. Der Prozessor 200 folgt einer Programmsequenz einschließlich zumindest
eines Umwandlungsbefehls. Der Umwandlungsbefehl tritt in einen Front-End-Abschnitt 210 ein
und wird durch einen oder mehrere Decoder 220 bearbeitet.
Der Decoder kann als sein Ausgangssignal eine Mikrooperation erzeugen,
wie beispielsweise eine Mikrooperation mit fester Breite in einem
vordefinierten Format, oder kann andere Befehle, Mikrobefehle oder
Steuersignale erzeugen, die den ursprünglichen Umwandlungsbefehl
wiedergeben. Das Front-End 210 umfaßt auch eine Registerumbenennungslogik 225 und
eine Planungslogik 230, die im allgemeinen Ressourcen zuordnen
und die Operation entsprechend dem Umwandlungsbefehl zur Ausführung in
eine Warteschleife versetzen.
-
Der
Prozessor 200 ist einschließlich einer Ausführungslogik 250 mit
einer Gruppe von Ausführungseinheiten 255-1 bis 255-N gezeigt.
Einige Ausführungsformen
können
eine Anzahl von Ausführungseinheiten umfassen,
die für
spezielle Funktionen oder Funktionsgruppen bestimmt sind. Andere
Ausführungsformen können lediglich
eine einzige Ausführungseinheit
oder eine einzige Ausführungseinheit,
die eine spezielle Funktion ausführen
kann, umfassen. Die durch den Umwandlungsbefehl spezifizierten Operationen
werden von der Ausführungslogik
durchgeführt,
wie mit Bezugnahme auf 2b nachfolgend erläutert wird.
-
Sobald
die Ausführung
der speziellen Operationen abgeschlossen ist, werden die Befehle
von der Back-End Logik 260 außer Dienst gestellt. Bei einer
Ausführungsform
läßt der Prozessor 200 eine
(Out-Of-Order) Ausführung
außerhalb
der Reihe zu, verlangt jedoch eine Außerdienststellung (retirement)
von Befehlen in der Reihenfolge (in order). Die Außerdienststellungslogik
(retirement logic) 265 kann eine Vielzahl von Formen annehmen,
wie dem Fachmann bekannt ist (z.B. Umordnungspuffer oder dergleichen).
-
In 2b sind
weitere Einzelheiten der Wechselwirkung zwischen einer Ausführungseinheit 262 und einer
Registerdatei 268 gezeigt. Die Ausführungseinheit 262 umfaßt eine
arithmetische Logikeinheit (ALU) 264 sowie eine Sättigungsschaltung
(saturation circuitry) 266. Abhängig von der Umwandlung werden
von der ALU gemäß der empfangenen
Mikrooperation oder dem Steuersignal Umwandlungen von Ganzzahl zu
Fließkomma
oder umgekehrt ausgeführt.
Abhängig
von der Operation können
die Eingänge
auch vorzeichenbehaftet oder vorzeichenlos sein und die Arithmetik
kann in geeigneter Weise angepaßt
sein.
-
Bei
einer Ausführungsform
sind mehrere ALU-Abschnitte zur parallelen oder gleichzeitigen Durchführung von
Umwandlungen verfügbar.
Eine ALU kann für
eine Bearbeitung von größeren Operanden
oder zur parallelen Bearbeitung von mehreren kleineren Operanden
eingerichtet sein. Es wird davon ausgegangen, daß die Umwandlungen gleichzeitig
durchgeführt
werden sollen, wenn sie in einem einzigen Taktzyklus des Prozessors
gesendet wurden. Beispielsweise können die in 1 gezeigten
vier Umwandlungen zusammen an die ALU-Logik gesendet werden, um
schnell ein Resultat zu erzeugen. Bei anderen Ausführungsformen kann
eine kleinere Logikschaltung vorgesehen sein und dementsprechend
kann die Logik durch sequentielles Durchführen einer oder mehrerer Wiederholungen
von weniger als der gesamten Gruppe von Umwandlungen wiederverwendet
werden.
-
Das
Umwandlungsergebnis kann beispielsweise in dem Fall einer Umwandlung
von einem Gleitkommawert in einen Ganzzahlwert gesättigt sein.
Typischerweise kann bei Verwendung derselben Anzahl von Bits mit
einem Gleitkommawert ein größerer Wertebereich
dargestellt werden als mit einem Ganzzahlformat. Die Fließkommawerte
umfassen ein noch größeres Potential,
um den Bereich eines Ganzzahlformats zu übersteigen, wenn die Fließkommadarstellung
eine größere Anzahl
von Bits umfaßt
als das Ganzzahlformat. Daher kann es bei einer Umwandlung von Fließkomma in
Ganzzahl wünschenswert
sein, den Wert zu sättigen,
was bedeutet, daß falls
der Fließkommawert
außerhalb
des Bereichs des Ganzzahlformats lag, die entsprechenden Enden des
Ganzzahlbereichs verwendet werden. Wenn es sich beispielsweise bei
einer Fließkommazahl um
eine negative Zahl außerhalb
des Bereichs des Ganzzahlformats handelt, wird die kleinste negative
ganze Zahl bei dem Sättigungsprozeß verwendet. Ähnlich,
wenn es sich bei der Fließkommazahl
um eine positive Zahl handelt, die größer ist als die höchste ganzzahlige
Zahl, die gemäß dem Ganzzahlformat
verfügbar
ist, wird die höchste
ganze Zahl verwendet. Alternative Techniken, wie beispielsweise
Einhüllen
(Wrapping) (wobei Bits höherer
Ordnung ignoriert werden) oder Abrunden (Beseitigen von Bits niedriger
Ordnung) können
bei alternativen Ausführungsformen
verwendet werden.
-
In 2c ist
eine alternative Implementierung eines Prozessors 293 gezeigt.
Bei der Ausführungsform aus 2c empfängt ein
erstes Modul 295 Befehle in einer ersten Instruction Set
Architecture (ISA) wie beispielsweise einer CISC ISA (und oder ruft
diese ab). Die Befehle von der ersten ISA werden durch ein Binärtranslationsmittel 297 in
eine zweite ISA umgewandelt. Das Binärtranslationsmittel 297 umfaßt typischerweise ein
Softwareprogramm, das von einer ISA in eine andere ISA umwandelt.
Das binäre
Translationssoftwareprogramm kann auf einem Prozessor laufen, um
die ersten ISA-Befehle in die zweite ISA umzuwandeln. Alternativ kann
Hardware, Firmware oder eine beliebige Mischung aus Hardware, Firmware
und Softwarestrukturen verwendet werden, um eine Translationsschicht
bereitzustellen. Die Ausführungsressourcen
für die
zweite ISA 299 führen
dann die Befehle in der zweiten ISA aus. Die Ausführungsressourcen 299 können dieselben
Ressourcen sein, die das binäre
Translationssoftwareprogramm ausführen, falls ein binäres Translationsprogramm
verwendet wird.
-
In 2d ist
eine Ausführungsform
eines Befehlsformats gezeigt, das bei den offenbarten Umwandlungsbefehlen
verwendet werden kann. Dieses Format umfaßt einen Operationscode (Opcode),
ein MOD R/M Byte und einen Direktoperanden. Das MOD R/M Byte umfaßt ein Mod-Feld
(Bits 7:6), ein Reg/Opcode-Feld (Bits 5:3) und ein R/M-Feld (Bits
2:0). Das Mod-Feld
wird mit dem R/M-Feld kombiniert, um 32 mögliche Werte, acht Register
und vierundzwanzig Adreßmodi
zu bilden. Durch das Reg/Opcode-Feld wird entweder eine Register nummer
oder werden drei weitere Bits an Opcode-Informationen definiert.
Der Zweck des Reg/Opcode-Feldes wird im primären Opcode festgelegt. Durch
das R/M-Feld kann ein Register als ein Operand definiert werden
oder kann es mit dem Mod-Feld zur Kodierung eines Adressierungsmodus
kombiniert werden. Somit liefert das Mod R/M-Feld Ursprungs- und
Zielspezifizierer. In dem Fall eines Ursprungs-Speicher Operanden
werden zusätzlich
zum Mod R/M-Feld auch zusätzliche
Adreßinformationen
festgelegt. Selbstverständlich
können
andere Befehlsformate ebenso verwendet werden, die sich speziell
für eine
bestimmte Implementierung oder Anwendung eignen oder einer anderen
ISA entsprechen. Daher können
andere Kodierungen als Ursprungs- und Zielspezifizierer verwendet
werden.
-
2e ist
ein bei einer Ausführungsform
verwendetes binäres
Fließkommaformat.
Dieses Format kann einem IEEE-Standard entsprechen (z.B. 854-1987
IEEE-Standard für
Radixunabhängige
Fließkommaarithmetik
1987). Das Vorzeichen ist ein binärer Wert, der angibt, ob die
Zahl positiv (0) oder negativ (1) ist. Der Festkommateil weist zwei
Teile auf: eine binäre
ganze Zahl mit einem Bit, das auch als das J-Bit bezeichnet wird,
und einen binären
Bruchteil. Bei anderen Ausführungsformen
ist das J-Bit nicht explizit dargestellt, sondern ist statt dessen
ein indirekter Wert. Der Exponent ist eine binäre ganze Zahl, die die Potenz
zur Basis 2 wiedergibt, auf die der Festkommateil angehoben
wird.
-
In 3a sind
gemäß einer
Ausführungsform
eines Umwandlungsbefehls durchgeführte Umwandlungen gezeigt.
Bei diesem Beispiel stellt jeder Pfeil eine Umwandlung von einer
ganzen Zahl in Fließkomma
dar. Daher wird bei diesem Beispiel jedes Unterelement B1, G1, R1,
A1 des zweiten gepackten Datenelements (B1G1R1A1) in eine Fließkommazahl umgewandelt, wobei
jede Fließkommazahl
dieselbe Anzahl von Bits wie das gesamte ganzzahlige Element erfordert.
Die vier Unterelemente des zweiten gepackten Datenelements im Ursprungsregister 310 werden
umgewandelt und im Zielregister 320 als vier gepackte Datenelemente
in einer Reihenfolge gespeichert, die durch die vier Unterelementpositionen
im Register 310 definiert ist.
-
Die
RGB & A-Markierungen
für die
Datenunterelemente geben an, daß die
Daten ganzzahlige Darstellungen der roten, grünen, blauen und Alphakomponente
eines Pixels sein können.
Bei einer Ausführungsform wird
ein für
jede der RGBA-Komponenten bestimmtes Byte in eine 32-Bit-Fließkommadarstellung
umgewandelt (die als Fließkommadarstellung
mit „einfa cher
Genauigkeit" bezeichnet
werden kann). Somit können
vier 8-Bit-Bytes der 32 Bit RGBA-Daten in vier 32-Bit-Fließkommazahlen
umgewandelt werden.
-
Im
allgemeinen werden entsprechend einem derartigen Befehl M Unterelemente
eines einzigen Elements gepackter Daten, die M Elemente aufweisen,
umgewandelt, expandiert und als M Elemente eines Zielspeicherorts
gepackter Daten gespeichert, wobei jedes Element ein Zweipotenz-Vielfaches
der Zahl der Bits der Unterelemente umfaßt. Beispielsweise können die
Elemente jeweils N Bits und die Unterelemente N/M Bits aufweisen,
wobei M eine Zweierpotenz ist (d.h. M=2k,
wobei k ein positiver ganzzahliger Wert ist). Für den Fachmann ist verständlich,
daß die
Dimensionen dieser Elemente vergrößert werden können. Beispielsweise kann
jedes Unterelement 16 oder 32 Bit umfassen und daher kann ein Pixel
entsprechend 64 oder 128 Bit umfassen. Die entsprechenden Fließkommazahlen
können
auf 256- oder 512-Bit-Register
oder eine andere Anzahl von Bits erweitert werden, wenn eine andere
Anzahl von Bits in der Fließkommadarstellung
verwendet wird. Zusätzlich
müssen,
wie mit Bezug auf die weiteren nachfolgenden Ausführungsformen
ersichtlich wird, die Zahlen der gepackten Datenelemente und Unterelemente
nicht gleich sein.
-
Bei
der in 3a gezeigten Ausführungsform
wird das zweite gepackte Datenelement (B1G1R1A1)
umgewandelt. Das zweite Element kann durch Bereitstellen eines Direktoperanden
zum Umwandlungsbefehl zur Umwandlung ausgewählt werden. Mit dem den Direktoperanden
kann kodiert werden, welches der gepackten Datenelemente der gepackten
Daten umgewandelt werden sollte. Bei einigen Ausführungsformen
können auch
andere Techniken, wie beispielsweise die Festlegung eines Orts durch
Setzen eines Werts an einem anderen Speicherort (z.B. einem anderen
Register) verwendet werden. Alternativ kann ein zugeordneter Umwandlungsbefehl
bereitgestellt werden, so daß durch
den Operationscode unmittelbar kodiert wird, welches der mehreren
gepackten Datenelemente umzuwandeln ist.
-
Beispielsweise
ist bei der in 3b gezeigten Ausführungsform
eine Umwandlung gezeigt, die der aus 3a darin ähnlich ist,
daß RGBA-Daten
aus einem Element eines ersten Registers 330 in den vier
Elementen eines zweiten Registers 340 umgewandelt und gespeichert
werden mit der Ausnahme, daß das
erste Element der gepackten Daten umgewandelt wird. Dies kann dadurch
erreicht werden, daß ein
bestimmter Befehl vorhanden ist, mit dem das erste Element im Ursprungsregister
automatisch umgewandelt wird. Weitere drei zugeordnete Befehle können verwendet
werden, um die drei verbleibenden Elemente der gepackten Daten umzuwandeln.
Jedoch besteht ein weiterer Ansatz darin, Verschiebebefehle zu verwenden,
um Daten an die erste Position zu verschieben, und wobei dann der
zugehörige
Befehl, mit dem das erste Element im Ursprungsregister automatisch
umgewandelt wird, erneut dazu verwendet werden kann, jedes nachfolgende
Element umzuwandeln. Bei diesem Verschiebe- und Umwandlungsansatz werden vorteilhafterweise
weniger Operationscodes verwendet und wird der Gebrauch von unmittelbaren
Codes vermieden, während
jedoch Code durch Verwenden zusätzlicher
Verschiebebefehle erweitert wird.
-
In 4a sind
entsprechend einer Ausführungsform
eines weiteren Umwandlungsbefehls durchgeführte Umwandlungen gezeigt.
Bei diesem Beispiel stellt jeder Pfeil eine Umwandlung von Fließkomma-
zur Ganzzahl dar. Jede der vier Komponenten B1G1R1A1 aus
dem ersten Register 410 wird vom Fließkommaformat in ein Ganzzahlformat
umgewandelt und als ein Unterelement eines Elements in einem zweiten
Register 420 gespeichert. In diesem Fall ist das zweite
Element im Register 420 das Ziel für die Unterelemente. Welches der
Elemente der gepackten Daten das Ziel für die vier Unterelemente wird,
kann wiederum durch einen mit dem Befehl gelieferten Direktoperanden
ausgewählt
werden, oder kann durch den Befehl selbst oder ein anderes indirektes
Mittel, wie zuvor erläutert
wurde, festgelegt werden. Die Reihenfolge der vier Unterelemente im
gewählten
Element des Zielregisters 420 wird durch die Positionen
der Datenelemente im Ursprungsregister 410 bestimmt. Wie
zuvor sind RGBA-Daten lediglich ein Beispiel für einen Datentyp und ein Datenformat, das
gemäß derartigen
Befehlen bearbeitet werden kann, und es können andere Formen oder andere
Typen von Daten verwendet werden.
-
In 4b ist
ein Beispiel gezeigt, das dem Beispiel aus 4a darin ähnlich ist,
daß gepackte
Daten mehrerer Fließkommazahlen
von einem ersten Register 430 in mehrere ganzzahlige Unterelemente
eines gepackten Datenelements umgewandelt werden und an einer Untergruppe
der Orte eines zweiten Registers 440 gespeichert werden.
Jedoch ist im Fall von 4b das erste Element im Register 440 mit
dem Befehl besetzt. Dies kann der Fall sein, wenn ein anderer Direktoperand
verwendet wird oder wenn ein einzelner zugeordneter Umwandlungsbefehl
dieses Typs bereitgestellt wird und man auf Verschiebungen setzt,
um die Daten zu weiteren Positionen für gepackte Datenelemente zu
bewegen.
-
In 5 sind
gemäß einer
Ausführungsform
eines weiteren Umwandlungsbefehls durchgeführte Umwandlungen gezeigt.
Die Ausführungsform
aus 5 ist der Ausführungsform
aus
-
4a,
mit der Ausnahme ähnlich,
daß die
Datenelemente in ganzzahliger Form eine höhere Präzision aufweisen. Bei diesem
Beispiel gibt jeder Pfeil eine Umwandlung von Fließkomma zu
Ganzzahl wieder. Daher werden bei der Ausführungsform aus 5 die
RGBA-Komponenten
im Fließkommaformat
aus einem ersten Register 510 gelesen, von Fließkomma zu
Ganzzahl umgewandelt und in einem zweiten Register 520 gespeichert.
Wiederum kann die Position des Zielregisters in der zuvor erläuterten
Weise bestimmt werden.
-
Bei
der Ausführungsform
aus 5 verbraucht jedes RGBA-Pixel am Bestimmungsort
eine Hälfte
des Zielregister 520, da jedes einzelne Unterelement die
Hälfte
der Zahl der Bits wie in Fließkommadarstellung
umfaßt.
Beispielsweise umfaßt
bei einer Ausführungsform
jede der ganzzahligen Komponenten 16 Bit und ist jede Fließkommakomponente
eine Fließkommazahl
mit einfacher Präzision
mit 32 Bits. Bei einer anderen Ausführungsform kann jede ganzzahlige
Komponente 32 Bit und jeder Fließkommawert 64 Bit umfassen
(z.B. bei 256-Bit-Registern).
Verschiedene andere Permutationen sind für den Fachmann ersichtlich.
-
In 6 sind
gemäß einer
Ausführungsform
eines weiteren Umwandlungsbefehls durchgeführte Umwandlungen gezeigt.
Bei diesem Beispiel gibt jeder Pfeil eine Umwandlung von Ganzzahl
zu Fließkomma
wieder. Jede der vier Komponenten B1G1R1A1 von
einem Element eines ersten Registers 610 wird vom Fließkommaformat
in ein Ganzzahlformat umgewandelt und als ein Unterelement eines
Elements in einem zweiten Register 620 gespeichert. In
diesem Fall ist das zweite Element im Register 620 das
Ziel für
die Unterelemente. Welches der Elemente der gepackten Daten das
Ziel für
die vier Unterelemente wird, kann wiederum mittels einer mit dem
Befehl gelieferten Direktvariablen ausgewählt werden oder kann durch
den Befehl selbst oder ein anderes indirektes Mittel, wie zuvor
erläutert
wurde, festgelegt werden. Die Reihenfolge der vier Unterelemente
im ausgewählten
Element des Zielregisters 620 wird durch die Positionen
der Datenelemente im Quellregister 610 bestimmt.
-
Das
Beispiel aus 6 ist ähnlich dem aus 3a mit
der Ausnahme, daß die
Datenelemente in ganzzahliger Form eine höhere Präzision aufweisen. Daher sind
lediglich zwei Pixel in einem einzigen Register gespeichert und
eines der beiden Pixel kann zur Belegung des gesamten Zielregisters
erweitert werden. Bei einer Ausführungsform
umfaßt
jede der Ganzzahlkomponenten 16 Bit und ist jede Fließkommakomponente eine
Fließkommazahl
mit einfacher Präzision
mit 32 Bits. Bei einer anderen Ausführungsform kann jede Ganzzahlkomponente
32 Bit und jeder Fließkommawert
64 Bit umfassen (z.B. bei 256-Bit-Registern). Verschiedene andere
Permutationen sind für
den Fachmann ersichtlich.
-
In
der folgenden Tabelle ist eine beispielhafte Gruppe von Umwandlungsbefehlen
zusammengefaßt.
-
-
Beispiel
einer Umwandlung von Byte in gepacktes Fließkomma mit einfacher Genauigkeit. CVT[U]B2PS
xmm1, xmm2/m128, imm8
-
Beispiel
einer Umwandlung von Wort in gepacktes Fließkomma mit einfacher Genauigkeit CVT[U]W2PS
xmm1, xmm2/m128, imm8
-
CVTPS2[U]PB
xmm1/m128, xmm2, imm8
-
CVTPS2[U]PW
xmm1/m128, xmm2, imm8
-
7a veranschaulicht
einen weiteren alternativen Umwandlungsbefehl, mit dem eine weitere
Funktionalität
zum Einzelbefehl hinzugefügt
wird. Eine derartige Ausführungsform
kann für
eine weitere Reduzierung der Code-Größe nützlich sein, wenn mehrere Instanzierungen (instantiations)
der Umwandlungsbefehle für
einzelne Elemente gemeinsam verwendet werden, um in und aus einem
vollen Register von SIMD-Werten umzuwandeln. Bei der Ausführungsform
aus 7a werden vier in einem ersten Register 710 gespeicherte Werte
(z.B. Pixelwerte) umgewandelt und in vier getrennten Registern 720, 725, 730 und 735 gespeichert. Während diese
Umwandlungen bei diesem Beispiel in Reaktion auf einen einzigen
Befehl (z.B. einen Makrobefehl) ausgeführt werden, kann in einigen
Fällen
eine unzulängliche
parallele Hardware (insufficient parallel hardware) zur parallelen
Durchführung
der Umwandlungen vorhanden sein. Daher können in Reaktion auf einen
derartigen Makrobefehl mehrere Mikrooperationen erzeugt und die
Umwandlungshardware kann seriell zur Durchführung der 16 Umwandlungen verwendet
werden.
-
Bei
der Ausführungsform
aus 7a stellt jeder Pfeil eine Umwandlung von Ganzzahl
in Fließkomma dar.
Somit wird ein erstes Datenelement (B0,
G0, R0, A0) im Ganzzahlformat im Ursprungsregister 710 in
vier Fließkommawerte
im Zielregister 735 umgewandelt. Das Ordnen der Elemente
folgt wiederum den Ursprungsunterelementen. Darüber hinaus können Elemente
und Unterelemente mit einer Vielzahl von Größen verwendet werden, wie zuvor
erläutert
wurde. Ähnlich
wird ein zweites Datenelement (B1G1R1A1)
im Ganzzahlformat im Ursprungsregister 710 in vier Fließkommawert
im Zielregister 730, ein drittes Datenelement (B2G2R2A2) im Ganzzahlformat im Ursprungsregister 710 in
vier Fließkommawerte
im Zielregister 725 und ein viertes Datenelement (B3G3R3A3) im Ganzzahlformat im Ursprungsregister 710 in
vier Fließkommawerte
im Zielregister 720 umgewandelt.
-
In 7b ist
ein zur 7a umgekehrter Fall gezeigt,
bei dem vier Register, die Fließkommawerte enthalten,
in ein Ganzzahlwerte enthaltendes einzelnes Register verdichtet
werden. Somit stellt bei der Ausführungsform aus 7b jeder
Pfeil eine Umwandlung von Fließkomma
zu Ganzzahl dar. Vier getrennte Fließkommawerte B0,
G0, R0, A0 aus einem ersten Ursprungsregister 750 werden
in ein Ganzzahlformat umgewandelt und an der ersten Elementposition
eines Zielregisters 770 gespeichert. Auf ähnliche
Weise werden die vier getrennten Fließkommawerte B1,
G1, R1, A1 aus einem zweiten Ursprungsregister 755 in
ein Ganzzahlformat umgewandelt und an der zweiten Elementposition
des Zielregisters 770 gespeichert, die vier getrennten
Fließkommawerte
B2, G2, R2, A2 aus einem dritten
Ursprungsregister 760 in ein Ganzzahlformat umgewandelt
und an der dritten Elementposition des Zielregisters 770 gespeichert
und die vier getrennten Fließkommawerte
B3, G3, R3, A3 aus einem vierten
Ursprungsregister 765 in ein Ganzzahlformat umgewandelt
und an der vierten Elementposition des Zielregisters 770 gespeichert.
-
In 8a sind
Operationen für
einen anderen Umwandlungsbefehl gezeigt, der dem aus 7a mit der
Ausnahme ähnlich
ist, daß die
ganzzahligen Elemente im Verhältnis
zu den Fließkommaelementen
größer sind
als in 7a. Zur Verdeutlichung gibt
jeder Pfeil in 8a eine Umwandlung von Ganzzahl
zu Fließkomma
wieder. Ein erstes Element (B0, G0, R0, A0)
der in einem Ursprungsregister 810 im Ganzzahlformat gespeicherten
gepackten Daten wird in Fließkommawerte
umgewandelt und in einem ersten Zielregister 830 gespeichert.
Ein zweites Element (B1, G1,
R1, A1) der im Quellregister 810 im
Ganzzahlformat gespeicherten gepackten Daten wird in Fließkommawerte
umgewandelt und in einem zweiten Zielregister 820 gespeichert.
Beide Umwandlungen werden bei dieser Ausführungsform in Reaktion auf
einen einzigen Befehl durchgeführt
und die Anordnung der Elemente in den jeweiligen Zielregistern folgt
der Ordnung der Ursprungsunterelemente.
-
In 8b sind
Operationen für
einen anderen Umwandlungsbefehl gezeigt, der dem aus 7b mit der
Ausnahme ähnlich
ist, daß die
ganzzahligen Elemente im Verhältnis
zu den Fließkommaelementen
größer sind
als in 7b. Jeder Pfeil in 8b stellt
eine Umwandlung von Fließkomma
zu Ganzzahl dar. Vier getrennte Fließkommawerte B0,
G0, R0, A0 aus einem ersten Ursprungsregister 860 werden
in ein ganzzahliges Format umgewandelt und an der ersten Elementposition
eines Zielregisters 870 gespeichert. Auf ähnliche
Weise werden die vier getrennten Fließkommawerte B1,
G1, R1, A1 aus einen zweiten Ursprungsregister 850 in
ein Ganzzahlformat umgewandelt und an der zweiten Elementposition
des Zielregisters 870 gespeichert. Bei dieser Ausführungsform
werden beide Umwandlungen in Reaktion auf einen einzigen Befehl
durchgeführt
und die Ordnung der Unterelemente im Zielregister folgt der Ordnung
der Ursprungselemente.
-
Bei
mehreren der oben gezeigten Beispiele weisen die Ursprungs- und
Zielspeicherorte dieselbe Größe auf.
Tatsächlich
kann es sich bei dem Ursprung und dem Ziel um Register in einer
einzigen Gruppe Architekturregistern handeln (z.B. um die Xmm-Register
in einem Prozessor, wie den Pentium®-Prozessoren
von Intel). Jedoch müssen
bei anderen Ausführungsformen
die Ursprungs- und Zielregister weder dieselbe Größe aufweisen
noch in derselben Registergruppe liegen. In einigen Fällen kann
es vorteilhaft sein, eine Fließkommaregistergruppe
zu verwenden, die mehr Bits umfaßt als die Ganzzahlregistergruppe.
-
In 9 ist
eine Ausführungsform
eines Systems gezeigt, bei dem die offenbarten Umwandlungstechniken
verwendet werden. Bei dieser Ausführungsform wird ein Prozessor 900 mit
einem Speicherkontroller 990 gekoppelt. Der Speicherkontroller
kann eine integral mit dem Prozessor 900 ausgebildete Komponente
oder bei anderen Ausführungsformen
eine davon getrennte Komponente sein. Der Speicherkontroller 990 ist
mittels eines Busses 992 mit einem Hauptspeicher 994 verbunden.
Bei dem Bus kann es sich um jeden beliebigen Kommunikationsbus einschließlich und
nicht beschränkt
auf einen oder mehrere parallele Signalbusse, serielle Busse, Mehrpunkt-(Multidrop)-Busse,
Punkt-zu-Punkt-Busse, etc. handeln. Der Hauptspeicher umfaßt eine erste
Umwandlungssequenz 995, eine Pixelbearbeitungssequenz 996,
eine zweite Umwandlungssequenz 997 und eine Anzeigesequenz 998.
-
Der
Prozessor 900 umfaßt
eine Front-End-Logik 910, eine Ausführungslogik 920, die
mehrere ALU-Schaltungen 925-1 bis 925-N umfaßt, und
eine Back-end-Logik 930. Der Prozessor 900 führt aus
dem Speicher abgerufene Befehlssequenzen, wie beispielsweise die
erste Umwandlungssequenz 995, die Pixelbearbeitungssequenz 996,
die zweite Umwandlungssequenz 997 und die Anzeigesequenz 998 aus.
Das System umfaßt
auch eine Kommunikations-/Netzschnittstelle 950.
Die Schnittstelle 950 ist funktionstechnisch so mit dem
Prozessor 900 gekoppelt, so daß der Prozessor Befehle zur
Schnittstelle 950 senden und Daten über ein Netz (wobei es sich
um ein verdrahtetes oder drahtloses Netz handeln kann) oder ein
Kommunikationsmedium senden und empfangen kann. Die Schnittstelle
kann eine oder mehrere der Gruppen von Softwaresequenzen in einem
elektronischen Format empfangen. In jeder Darstellung der Softwaresequenz
können
die Befehle in jeder beliebigen Form eines maschinenlesbaren Mediums
gespeichert oder übertragen
werden. Bei dem maschinenlesbaren Medium kann es sich um eine modulierte
oder auf andere Weise erzeugte optische oder elektrische Welle zur Übertragung
derartiger Informationen, um einen Speicher oder um einen magnetischen
oder optischen Speicher, wie beispielsweise eine Platte handeln.
Auf jedem dieser Medien können
die Befehlsinformationen gespeichert bzw. getragen werden.
-
Das
System umfaßt
auch eine Graphikschnittstelle 955 mit einem Bildpuffer 957 und
eine Anzeigeeinheit 960. Die Graphikschnittstelle 955 ist
funktionstechnisch mit dem Prozessor gekoppelt (wobei in diese Kopplung
eine oder mehrere Schnittstellen- oder Brückenkomponenten einbezogen
sein können),
so daß der Prozessor
Befehle und Daten zur Graphikschnitt stelle 955 senden kann.
Bei einigen Ausführungsformen
können
in den Bildpuffer Bilddaten geschrieben werden, um eine Anzeige
der Daten auf der Anzeige 960 zu bewirken.
-
Weitere
Funktionen des Systems aus 9 werden
unter Bezugnahme auf das Flußdiagramm
aus 10 ersichtlich. Wie im Block 1010 angegeben
ist, wird eine Gruppe von Pixeln (z.B. N Pixel) vom SIMD-Ganzzahlformat
ins SIMD-Fließkommaformat
umgewandelt. Diese Umwandlung kann bei der Ausführungsform aus 9 mittels
des Prozessors 900, der die erste Umwandlungssequenz 995 ausführt, erreicht werden.
Die erste Umwandlungssequenz kann N Umwandlungsbefehle, wie die
aus den 3a, 3b und 6,
oder kann einen einzelnen Umwandlungsbefehl, wie beispielsweise
den in 7a oder 8a gezeigten,
umfassen. Der (die) Umwandlungsbefehl(e) speichert die resultierenden
umgewandelten Daten in Architekturregistern, wie im Block 1020 angegeben
ist. Bei Ausführungsformen,
die den in den 3a und 3b gezeigten
Ausführungsformen ähnlich sind,
können
beispielsweise vier Umwandlungsbefehle verwendet werden, um vier
gepackte Datenelemente in einem einzigen Register umzuwandeln.
-
In
einigen Fällen
können
die umgewandelten Werte nach einer Umwandlung an Ort und Stelle
direkt verwendet werden. Optional können die nunmehr umgewandelten
Pixelwerte im Fließkommaformat
verschoben bzw. bewegt werden, wie im Block 1030 angegeben
ist. Die Pixel können
zu anderen Orten zur Bearbeitung oder zu einer temporären Speicherung
vor einer Bearbeitung bewegt werden. Einige der Zielwerte können während des
Umwandlungsprozesses vor der Ausführung aller N-Umwandlungen
bewegt werden, um die Zahl der beim Umwandlungsprozeß der N
Pixel verwendeten Register zu begrenzen.
-
Wie
im Block 1040 angegeben ist, können die Fließkommaoperationen
auf die Pixelwerte angewandt werden. Dem Fachmann ist eine Vielzahl
unterschiedlicher Pixelbearbeitungstechniken bekannt. Wie für den Fachmann
ersichtlich ist, hängt
eine geeignete Routine von der beabsichtigten Wirkung ab. Jedoch
kann der Umwandlungsprozeß zu
und von Fließkomma
wirkungsvoller unter Verwendung der offenbarten Techniken durchgeführt werden.
-
Sobald
die beabsichtigten Bearbeitungen ausgeführt wurden, können die
resultierenden Fließkommawerte
zurück
umgewandelt werden. Wie im Block 1050 angegeben ist, werden
die N Pixel von ihrem SIMD-Fließkommaformat
in Reaktion auf einen oder mehrere Umwandlungsbefehle zurück ins SIMD-Ganzzahlformat
umgewandelt. Bei der zweiten Umwand lungsroutine 497 kann
diese Rückumwandlung ähnlich wie bei
der ersten Umwandlungsroutine mit einer Folge von N Befehlen erreicht
werden (z.B. Ausführungsformen aus 4a, 4b, 5)
oder mit einem einzigen Befehl (z.B. Ausführungsformen aus 7b, 8b).
-
Schließlich können die
Pixel angezeigt werden, wie im Block 1060 angegeben ist.
Die Anzeigesequenz 998 kann Befehle zum Bewegen der Pixeldaten
zum Bildpuffer 957 oder andere für ein spezielles System geeignete
Befehle zur Anzeige eines Pixels umfassen.
-
Eine
beispielhafte, optimierte Befehlssequenz, bei der die offenbarten
Umwandlungsbefehle verwendet werden, ist unten in Tabelle 2 gezeigt.
Wie aus diesem Beispiel leicht ersichtlich ist, können die
neuen Umwandlungsbefehle bei einigen Sequenzen zu einem wesentlich
kürzeren
und in einigen Fällen
wesentlich schneller ausgeführten
Code führen.
-
Tabelle
2: Beispielhafte Befehlssequenzverbesserung
-
Der
Aufbau eines Prozessors kann mehrere Stufen vom Entwurf über die
Simulation bis zur Herstellung umfassen. Die einen Entwurf wiedergebenden
Daten können
den Entwurf auf eine Mehrzahl von Arten wiedergeben. Zunächst kann
die Hardware, wie es für
Simulationen zweckmäßig ist,
unter Verwendung einer Sprache zur Beschreibung von Hardware oder
einer anderen funktionalen Beschreibungssprache dargestellt werden.
Zusätzlich
kann bei einigen Stufen des Entwurfsprozesses ein Modell auf Schaltungsebene
mit logischen Steuerelementen und/oder Transistorsteuerelementen
erstellt werden. Darüber
hinaus wird bei den meisten Entwürfen
bei einer bestimmten Stufe eine Datenebene erreicht, die die physikalische
Anordnung verschiedener Vorrichtungen im Hardware-Modell wiedergibt.
In den Fällen,
in welchen herkömmliche
Halbleiterherstellungstechniken verwendet werden, kann es sich bei
den das Hardwaremodell wiedergebenden Daten um Daten handeln, die
das Vorhandensein oder Nicht-Vorhandensein verschiedener Merkmale
auf verschiedenen Maskenebenen für
Masken, die zur Herstellung der integrierten Schaltung verwendet
werden, spezifizieren. Bei jeder Darstellung des Entwurfs können die
Daten in jeder beliebigen Form eines maschinenlesbaren Mediums gespeichert
werden. Bei dem maschinenlesbaren Medium kann es sich um eine modulierte
oder auf andere Weise erzeugte optische oder elektrische Welle zur Übertragung
derartiger Informationen, einen Speicher oder einen magnetischen
oder optischen Speicher, wie beispielsweise eine Platte, handeln.
Auf jedem dieser Medien kann der Entwurf oder die Softwareinformation „getragen" werden bzw. „abgebildet" sein. Wenn eine
elektrische Trägerwelle,
die den Code oder den Entwurf abbildet oder trägt, in dem Umfang übertragen
wird, daß eine
Zwischenspeicherung oder Rückübertragung
des elektrischen Signals durchgeführt wird, wird eine neue Kopie
hergestellt. Somit stellt ein Kommunikations- oder Netzanbieter
Kopien eines Artikels (einer Trägerwelle)
her, die Techniken der vorliegenden Erfindung verkörpern.
-
Es
werden somit Techniken für
parallele Datenumwandlungen offenbart. Während bestimmte beispielhafte
Ausführungsformen
beschrieben und in den begleitenden Zeichnungen gezeigt wurden,
ist zu beachten, daß derartige
Ausführungsformen
lediglich beispielhaft und für
die Erfindung in ihrer Breite nicht einschränkend sind und daß diese
Erfindung nicht auf spezielle gezeigte und beschriebene Konstruktionen
und Anordnungen beschränkt
ist, da sich beim Studium dieser Offenbarung für den Fachmann zahlreiche andere
Abwandlungen ergeben. Auf einem technischen Gebiet wie diesem, auf
dem ein schnelles Wachstum stattfindet und weitere Fortschritte
nicht einfach vorhersehbar sind, können die offenbarten Ausführungsformen
bezüglich ihrer
Anordnung und Einzelheiten in einfacher Weise mit Hilfe dies möglich machender
technischer Fortschritte einfach modifiziert werden, ohne von den
Prinzipien der Offenbarung oder dem Umfang der begleitenden Ansprüche abzuweichen.
-
Zusammenfassung
-
Verfahren,
Vorrichtung und Programmmittel zur Durchführung einer Umwandlung. Bei
einer Ausführungsform
umfaßt
eine offenbarte Vorrichtung einen Zielspeicherort, der einem ersten
Architekturregister entspricht. Eine funktionale Einheit wird in
Reaktion auf ein Steuersignal tätig,
um einen ersten gepackten Erstformatwert, der aus einer Gruppe gepackter
Erstformatwerte gewählt
ist, in eine Mehrzahl von Zweitformatwerten umzuwandeln. Jeder der
Erstformatwerte umfaßt
mehrere Unterelemente mit einer ersten Anzahl von Bits. Die Zweitformatwerte
umfassen eine größere Anzahl
von Bits. Die funktionale Einheit speichert die Mehrzahl von Zweitformatwerten
in einem Architekturregister.