DE19983189B4 - System, Verfahren, Befehl und Prozessor zum Parallelverarbeiten von Graphikdaten - Google Patents
System, Verfahren, Befehl und Prozessor zum Parallelverarbeiten von Graphikdaten Download PDFInfo
- Publication number
- DE19983189B4 DE19983189B4 DE19983189T DE19983189T DE19983189B4 DE 19983189 B4 DE19983189 B4 DE 19983189B4 DE 19983189 T DE19983189 T DE 19983189T DE 19983189 T DE19983189 T DE 19983189T DE 19983189 B4 DE19983189 B4 DE 19983189B4
- Authority
- DE
- Germany
- Prior art keywords
- bit
- register
- registers
- pixel
- color
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/14—Conversion to or from non-weighted codes
- H03M7/24—Conversion to or from floating-point codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Image Processing (AREA)
Abstract
Verfahren zum Parallelverarbeiten von Graphikdaten, wobei das Verfahren die folgenden Schritte umfaßt:
Speichern einer Vielzahl an Farbkomponenten in einem ersten Format in wenigstens einem Register eines Satzes an ersten Registern in dem gepackten Format;
Stellen der Vielzahl an Farbkomponenten in einem Ganzzahl-Format in wenigstens ein Register eines Satzes an 64-Bit-Registern in dem gepackten Format; und
Zusammenfügen von Farbkomponenten für jeden Pixel einer Vielzahl an Pixeln aus der Vielzahl an Zahlen in dem Ganzzahl-Format in dem wenigstens einen Register eines Satzes an 64-Bit-Registern,
wobei die obigen Operationen mittels eines Mikroprozessors in Antwort auf wenigstens einen Befehl ausgeführt werden;
dadurch gekennzeichnet, dass das erste Format ein Gleitkomma-Format ist und die ersten Register 128-Bit-Register sind und das Verfahren zwischen dem Speicher- und dem Stellschritt in Antwort auf den wenigstens einen Befehl weiter den folgenden Schritt umfasst;
Umwandeln der Vielzahl an Farbkomponenten in dem Gleitkomma-Format in eine Vielzahl...
Speichern einer Vielzahl an Farbkomponenten in einem ersten Format in wenigstens einem Register eines Satzes an ersten Registern in dem gepackten Format;
Stellen der Vielzahl an Farbkomponenten in einem Ganzzahl-Format in wenigstens ein Register eines Satzes an 64-Bit-Registern in dem gepackten Format; und
Zusammenfügen von Farbkomponenten für jeden Pixel einer Vielzahl an Pixeln aus der Vielzahl an Zahlen in dem Ganzzahl-Format in dem wenigstens einen Register eines Satzes an 64-Bit-Registern,
wobei die obigen Operationen mittels eines Mikroprozessors in Antwort auf wenigstens einen Befehl ausgeführt werden;
dadurch gekennzeichnet, dass das erste Format ein Gleitkomma-Format ist und die ersten Register 128-Bit-Register sind und das Verfahren zwischen dem Speicher- und dem Stellschritt in Antwort auf den wenigstens einen Befehl weiter den folgenden Schritt umfasst;
Umwandeln der Vielzahl an Farbkomponenten in dem Gleitkomma-Format in eine Vielzahl...
Description
- GEBIET DER ERFINDUNG
- Die vorliegende Erfindung betrifft im allgemeinen die parallele Manipulation von Daten und insbesondere die parallele Umwandlung von Daten zwischen Datenformaten in verschiedenen architektonischen Registern.
- HINTERGRUND DER ERFINDUNG
- In typischen Computersystemen sind Prozessoren implementiert, die auf Werte wirken, welche durch eine große Anzahl an Bits, beispielsweise 32 Bits, dargestellt werden, unter Anwendung von Befehlen, die ein einziges Ergebnis erzeugen. Beispielsweise werden bei der Ausführung eines Addier-Befehls ein erster 32-Bit-Wert und ein zweiter 32-Bit-Wert miteinander addiert und das Ergebnis als ein dritter 32-Bit-Wert gespeichert. Einige Anwendungen erfordern jedoch die Manipulation großer Datenmengen, die mit weniger als 32 Bits dargestellt sind. Multimedia-Graphiken werden typischerweise erzeugt, indem ein Bild als eine Sammlung kleiner, unabhängig gesteuerter Punkte oder Pixel behandelt wird. Den Pixeln entsprechende Positionskoordinaten und Farbwerte werden typischerweise mit weniger als 32 Bits dargestellt. Die Verarbeitung großer Datenmengen durch eine für Graphikanwendungen erforderliche Pipeline kann die Verarbeitungszeit stark erhöhen und die Graphikwiedergabe dementsprechend verlangsamen.
- Multimedia-Graphikanwendungen umfassen, sind jedoch nicht darauf beschränkt, Anwendungen, die auf eine computerunterstützte Zusammenarbeit (CSC = ”computer supported cooperation), zweidi mensionale (2D) Graphiken, dreidimensionale (3D) Graphiken, eine Bildverarbeitung, eine Bildkomprimierung/dekomprimierung, Erkennungsalgorithmen und eine Audiomanipulation gerichtet sind. Als solche umfassen die Daten von Multimedia-Anwendungen typischerweise Standbilder oder Bild-Frames und Sound-Daten. Die Pixel des Standbildes oder Videodaten werden typischerweise mit 8- oder 16-Bit-Datenelementen dargestellt und die Sound-Daten werden typischerweise mit 8- oder 16-Bit-Datenelementen dargestellt. Beim Bearbeiten von Multimedia-Daten, welche Standbilder oder Bild-Frames umfassen, wird die gleiche Operation oftmals wiederholt über alle Pixel des Bildes oder des Frames durchgeführt. Da jede dieser Multimediaanwendungen typischerweise ein oder mehrere Algorithmen verwendet und jeder Algorithmus typischerweise eine Anzahl an Operationen verwendet, beschleunigen Multimediaerweiterungen, die zum Ausführen der gleichen Operation an 8-Bit-, 16-Bit- oder sogar 32-Bit-Daten während der gleichzeitigen Verarbeitung von zwei, vier oder acht Datensamples verwendet werden, die Berechnungen, die Datenparallelität aufzeigen.
- Um die Effizienz von Multimedia-Anwendungen sowie von anderen Anwendungen mit ähnlichen Eigenschaften zu verbessern, verwenden Prozessoren aus dem Stand der Technik gepackte Datenformate. Ein gepacktes Datenformat ist ein Format, bei dem eine bestimmte Anzahl an Datenelementen mit fester Größe, von denen jedes einen getrennten Wert darstellt, zusammen gespeichert werden. Beispielsweise kann ein 64-Bit-Register in zwei 32-Bit-Elemente aufgebrochen werden, von denen jedes einen getrennten 32-Bit-Wert darstellt. Zusätzlich stellen diese Prozessoren aus dem Stand der Technik viele Befehle bereit zum getrennten, parallelen Handhaben jedes Elementes in diesen gepackten Datentypen. Beispielsweise addiert ein gepackter Additionsbefehl entsprechend Datenelemente aus einem ersten gepackten Datenwert und einem zweiten gepackten Datenwert. Somit ist es wünschenswert, falls ein Multimedia-Algorithmus eine Schleife benötigt, die fünf Operationen enthält, die an einer großen Anzahl an Datenelementen durchgeführt werden müssen, die Daten zu packen und diese Operationen unter Verwendung gepackter Datenbefehle parallel auszuführen. Auf diese Weise können diese Prozessoren Multimedia-Anwendungen effizienter bearbeiten.
- Daher wird zum Vermindern der für die Graphikwiedergabe bei Multimedia-Anwendungen benötigte Zeit eine parallele Verarbeitung angewandt, wobei ein einzelner Befehl auf mehrere Datenelemente wirkt; dieser Prozeß wird typischerweise als eine Ein-Befehl-Mehrdaten-Verarbeitung (SIMD = ”Single Instruction Multiple Data”) bezeichnet. Typischerweise wirken Ganzzahl-Befehle auf einzelne Ganzzahl-Datenelemente (A + B). Die SIMD-Befehle wirken jedoch auf Ganzzahl-Datenarrays (A[1...n] + B[1...n]), wobei n die Elementezahl in dem Array ist.
- Typische Verarbeitungssysteme aus dem Stand der Technik verwendeten bei der Wiedergabe von 2D-Bildern lediglich Ganzzahl-Daten in den Geometrie- und Rasterungsphasen, da der kleinere Bereich an Koordinatenwerten nicht die Genauigkeit einer Gleitkomma-Arithmetik erforderte. Daher wurden die Graphikdaten unter Anwendung einer SIMD-Verarbeitung an Ganzzahl-Daten wiedergegeben, was bedeutet, daß typischerweise keine Umwandlung zwischen dem Ganzzahl-Format und dem Gleitkomma-Format benötigt wurde.
- Bei der Wiedergabe von 3D-Bildern wurden jedoch die Datenmanipulationen, die für die Geometriephase durchgeführt wurden, typischerweise unter Anwendung einer Gleitkomma-Arithmetik durchgeführt, wegen des großen Bereiches an Werten, welche den Koordinatenraum definieren, und wegen der innerhalb dieses Bereiches benötigten Genauigkeit, um die wiedergegebenen Bilder genau zu plazieren. Da die Farbkomponentendaten oftmals zusammen mit den entsprechenden Positionsdaten gespeichert und manipuliert werden, ist es vorteilhaft, Operationen an den Rasterungsdaten, welche Farbkomponentendaten umfassen, unter Anwendung einer Gleitkomma-Arithmetik durchzuführen. Nach dem Bearbeitungsende werden die Koordinaten der zusammengesetzten Bilder der Rasterungsschaltung unter Verwendung des Gleitkomma-Formats bereitgestellt. Demgegenüber werden die Farbkomponentendaten der Rasterungsschaltung unter Verwendung des Ganzzahl-Formats bereitgestellt. Daher werden die Farbkomponentendaten, die für die Wiedergabe des Bildes verwendet werden, von dem Gleitkomma-Format in das Ganzzahl-Format umgewandelt, um eine Bildanzeige wiederzugeben.
- Das Problem bei den Prozessoren aus dem Stand der Technik, welche eine SIMD-Bearbeitung von 3D-Graphikdaten anwenden, liegt darin, daß, während eine parallele Bearbeitung an den Gleitkomma-Daten durchgeführt werden kann, die Umwandlung der Gleitkomma-Daten in Ganzzahl-Daten für die Rasterung einen Flaschenhals in der Bearbeitungs-Pipeline erzeugt, da die Algorithmen aus dem Stand der Technik Umwandlungen sequentiell ausführen. Ein Verfahren aus dem Stand der Technik, das sich mit diesem Problem auseinandersetzt, dupliziert die Gleitkomma-Ausführungsressourcen des Prozesses. Diese Ressourcenduplizierung ermöglicht, dass zwei Gleitkomma-Pipelines gleichzeitig ausgeführt werden, wobei die Gleitkomma-Daten jedes Zweiges der Pipeline gleichzeitig sequentiell in das Ganzzahl-Format umgewandelt werden können. Während die Verzögerung aufgrund des Umwandlungsausführung-Flaschenhalses mit der Verwendung dieser Zusatzhardware die Kosten und die Größe des Systems und erhöht dabei die Gesamtkomplexität des Systems.
- Die Druckschrift LEE, Ruby B.: ”Subword Parallelism with MAX-2”, IEEE Micro, Aug 1996, 51–59 offenbart ein Verfahren zum Parallelverarbeiten von Graphikdaten, bei dem in einem Register gepackte Gleitkommazahlen als Ganzes umgewandelt und in einem 64-Bit-Register gespeichert oder die Komponenten innerhalb eines gepackten Registers anders angeordnet werden können.
- ZUSAMMENFASSUNG DER ERFINDUNG
- Die Erfindung löst obiges Problem jeweils mit den Gegenständen der Ansprüche 1, 28 und 39. Bevorzugte Ausführungsbeispiele sind in den Unteransprüchen beschrieben.
- Weitere Merkmale und Vorteile der vorliegenden Erfindung werden aus der beigefügten Zeichnung und aus der detaillierten Be schreibung und den beigefügten nachfolgenden Ansprüchen deutlich.
- KURZBESCHREIBUNG DER ZEICHNUNG
- Die vorliegende Erfindung wird anhand eines Beispiels und ohne Beschränkung in den Figuren der beigefügten Zeichnung dargestellt, in der gleiche Bezugszeichen ähnliche Elemente darstellen, und in der:
-
1 ein Computersystem einer Ausführungsform ist. -
2 ein Prozessor einer Ausführungsform ist. -
3 eine duale Daten-Pipeline einer Ausführungsform ist. -
4 eine Cache-Architektur eines Prozessors einer Ausführungsform ist. -
5 ein binäres Gleitkomma-Format ist, das von einem 128-Bit-Multimediaerweiterungsregister einer Ausführungsform verwendet wird. -
6 einen gepackten Befehl zeigt, der auf ein Paar Operanden wirkt. -
7 einen skalaren Befehl zeigt, der auf ein niedrigstwertiges Paar der beiden Operanden wirkt. -
8 eine gepackte Mischoperation entsprechend einem SHUFPS-Befehl einer Ausführungsform zeigt. -
9 eine Registerdatei und entsprechende Umwandlungsbefehle einer Ausführungsform zeigt. -
10 ein Flußdiagramm für die Umwandlung einer Zahl aus einem skalaren Format in ein gepacktes Gleitkomma-Format entsprechend einem CVTSI2SS-Befehl einer Ausführungsform ist. -
11 ist ein Flußdiagramm für die Umwandlung einer Zahl aus einem gepackten Gleitkomma-Format in ein skalares Format entsprechend einem CVTSS2SI- und einem CVTTSS2SI-Befehl einer Ausführungsform ist. -
12 ein Flußdiagramm für die Umwandlung einer Zahl aus einem gepackten Ganzzahl-Format in ein gepacktes Gleitkomma-Format gemäß einem CVTPI2PS-Befehl einer Ausführungsform ist. -
13 ein Flußdiagramm für die Umwandlung einer Zahl aus einem gepackten Gleitkomma-Format in ein gepacktes Ganzzahl-Format entsprechend einem CVTPS2PI- und einem CVTTPS2PI-Befehl einer Ausführungsform ist. -
14 ein Flußdiagramm für einen zweiten unterschiedlichen Befehl ist, der zum Umwandeln einer Zahl aus einem gepackten Gleitkomma-Format in ein gepacktes Ganzzahl-Format gemäß einem CVTPS2PW-Befehl einer Ausführungsform verwendet wird. -
15 ein Flußdiagramm für eine dritte Variante ist, die zum Umwandeln einer Zahl aus einem gepackten Gleitkomma-Format in ein gepacktes Ganzzahl-Format gemäß einem CVTPS2PB-Befehl einer Ausführungsform verwendet wird. -
16 ein Flußdiagramm für eine Beleuchtungsberechnung in einer 3D-Geometrie ist, bei der die Befehle einer Ausführungsform verwendet werden. -
17 ein Flußdiagramm für eine Parallelumwandlung von mehreren Farbwerten aus einem einfach genauen Gleitkomma-Format in ein spezielles Ganzzahl-Format einer Ausführungsform ist. -
18a und18b Datenflußdiagramme einer Parallelumwandlung von Graphikfarbdaten unter Verwendung eines CVTPS2PI-Befehls einer Ausführungsform ist. -
19a und19b Datenflußdiagramme einer Parallelumwandlung von Graphikfarbdaten unter Verwendung eines CVTPS2PW-Befehls einer Ausführungsform sind. -
20a und20b Datenflußdiagramme einer Parallelumwandlung von Graphikfarbdaten unter Verwendung eines CVTPS2PB-Befehls einer Ausführungsform sind. - DETAILLIERTE BESCHREIBUNG
- Es wird ein Verfahren und eine Vorrichtung zum Durchführen einer Parallelumwandlung von 3D-Graphiken beschrieben, wobei die Graphikdaten parallel zwischen verschiedenen Sätzen architektonischer Register umgewandelt werden. Als solches können skalare Ganzzahl-Daten oder Speicherdaten parallel in ein gepacktes Gleitkomma-Format umgewandelt werden, indem die hier geschaffenen Befehle verwendet werden. Die gepackten Gleitkomma-Daten werden manipuliert, um die bei der 3D-Bildwiedergabe verwende ten Graphikdaten zu liefern. Nach der Manipulation werden die gepackten Gleitkomma-Graphikdaten parallel in ein gepacktes Ganzzahl-Format umgewandelt, unter Verwendung der hier beschriebenen Befehle. Die gepackten Ganzzahl-Daten werden für die Wiedergabe einer Bildanzeige verwendet.
- In den beschriebenen Ausführungsformen werden Daten in einem Format in einem architektonischen Register in ein anderes Format umgewandelt und in ein anderes architektonisches Register gestellt. Es ist vorteilhaft, wenn ein Ergebnis einer Umwandlung in ein architektonisches Register gestellt wird, anstatt in einen Speicherplatz. Das Stellen von Umwandlungsergebnissen in ein architektonisches Register macht Bedienermodelle, die den Gebrauch eines Registerergebnisses bevorzugen, effizienter. Beispielsweise würde es in dem Fall, daß dreidimensionale Operationen, die Gleitkomma-Einbefehl-Mehrdaten-Register (SIMD = ”Single Instruction Multiple Data”) verwenden und eine Rasterung unter Verwendung von SIMD-Registern durchführen, nachteilig sein, wenn Umwandlungszwischenergebnisse im Speicher gespeichert werden müßten. Dies liegt daran, daß die Umwandlungsergebnisse unmittelbar aus dem Speicher benötigt würden, was eine Speicherzugriffsoperation erforderlich machen würde, die die Ergebnisse zurück in ein Register stellen müßte. Falls es jemals erforderlich sein würde, ein Umwandlungsergebnis in den Speicher zu bewegen, kann dies leicht mit einem SPEICHER-Befehl erfolgen.
- In einigen Systemen macht es die Verwendung von Umwandlungsbefehlen flexibler, wenn die Umwandlungsergebnisse in ein Register gestellt werden. Genauer gesagt, kann bei einigen Prozessorarchitekturen eine Berechnungsoperation keinen Speicher sowohl als eine Quelle eines Operanden als auch als das Ziel des Ergebnisses haben. Falls ein architektonisches Register das Ziel ist, wie in den beschriebenen Ausführungsformen, kann eine Umwandlungsoperation einen Speicher als eine Operandenquelle haben.
- Genauer gesagt wird ein Verfahren und eine Vorrichtung zum Umwandeln von Daten zwischen einem gepackten einfach genauen Gleitkomma-Format und einem skalaren Format beschrieben. In einer Ausführungsform werden die gepackten Daten im einfach genauen Gleitkomma-Format in architektonische Register eines Satzes architektonischer 128-Bit-Register gestellt, während die Daten im skalaren Format in architektonische 32-Bit-Register oder einen Speicher gestellt werden. Ferner wird ein Verfahren und eine Vorrichtung zum Umwandeln von Daten zwischen einem gepackten einfach genauen Gleitkomma-Format und einem gepackten Ganzzahl-Format beschrieben. In einer Ausführungsform werden gepackte 32-Bit-Daten im einfach genauen Gleitkomma-Format in architektonische Register eines Satzes architektonischer 128-Bit-Register gestellt, während gepackte 32-Bit-Daten im Ganzzahl-Format in architektonische Register aus einem Satz architektonischer 64-Bit-Register gestellt werden. In anderen Ausführungsbeispielen können die architektonischen Register unterschiedliche Größen haben. Beispielsweise können 128-Bit-Register anstelle von 64-Bit-Register verwendet werden. Überdies wird ein Verfahren und eine Vorrichtung zum Anwenden der Umwandlungsbefehle bei der Parallelumwandlung von mehreren Farbkomponentendaten, oder Werten, aus einem gepackten einfach genauen Gleitkomma-Format in ein gepacktes Ganzzahl-Format beschrieben. Angestrebte Vorteile der Paralllelumwandlungsbefehle können eine verminderte Verarbeitungszeit gegenüber sequenziellen Umwandlungstechniken haben, eine verminderte Anzahl an Befehlen bei der Verarbeitung von Graphikdaten, keinen Notwendigkeit für duplizierte Gleitkomma-Ausführungsressourcen und eine höhere Anwendungsverarbeitungseffizienz.
-
1 ist ein Computersystem100 einer Ausführungsform. Das Computersystem100 ist ein Beispiel eines Computersystemtyps, der mit Ausführungsformen der vorliegenden Erfindung verwendet werden kann. Andere, nicht gezeigte Computersystemtypen, die unterschiedlich konfiguriert sind, könnten ebenfalls mit Ausführungsformen der vorliegenden Erfindung verwendet werden. Das Computersystem100 umfaßt einen Bus101 , oder andere Kommunikations-Hardware und -Software, zum Übertragen von Information, und einen Prozessor109 , der mit dem Bus101 zum Verarbeiten von Information gekoppelt ist. Der Prozessor109 stellt eine zentrale Verarbeitungseinheit (CPU) mit irgendeinem Architek turtyp dar, einschließlich einer Berechnungsarchitektur mit komplexem Befehlssatz (CISC) oder einer Berechnungsarchitektur mit reduziertem Befehlssatz (RISC). Der Prozessor109 umfaßt eine Ausführungseinheit130 , eine Registerdatei150 , einen Cache160 , einen Decoder165 und einen internen Bus170 . Der Begriff ”Register” wird hier mit Bezug auf die On-board-Prozessorspeicherstellen verwendet, die als Teil von Macro-Befehlen zum Identifizieren von Operanden (auch als architektonische Register bezeichnet) verwendet werden. Mit anderen Worten sind die hier in Bezug genommenen Register solche, die von außerhalb des Prozessors (aus der Perspektive eines Programmierers) sichtbar sind. Die hier beschriebenen Register können jedoch durch eine Schaltung innerhalb eines Prozessors unter Anwendung einer beliebigen Anzahl unterschiedlicher Techniken implementiert werden, wie dedizierte physikalische Register, dynamisch zugeordnete physikalische Register unter Anwendung einer Registerumbenennung, Kombinationen aus dedizierten und dynamisch zugeordneten physikalischen Registern, etc. Die Registerdatei150 kann eine einzelne Registerdatei, die mehrere architektonische Register umfaßt, oder mehrere Registerdateien umfassen, von denen jede mehrere architektonische Register umfaßt. - Das Computersystem
100 umfaßt ferner einen Direktzugriffspeicher (RAM) oder ein anderes dynamisches Speicherbauteil in einem Hauptspeicher104 , der mit dem Bus101 zum Speichern von Information und Befehlen gekoppelt ist, die von dem Prozessor109 ausgeführt werden sollen. Der Hauptspeicher104 kann für das Speichern von temporären Variablen oder anderer Zwischeninformation während der Ausführung von Befehlen durch den Prozessor109 verwendet werden. Das Computersystem100 umfaßt ferner einen nur Nur-Lese-Speicher (ROM)106 oder andere statische Speicherbauteile, die mit dem Bus101 zum Speichern statischer Information und Befehlen für den Prozessor109 gekoppelt sind. - Ein Datenspeicherbauteil
107 , wie eine Magnetscheibe oder eine optische Scheibe und ein entsprechendes Laufwerk sind mit dem Bus101 gekoppelt. Das Computersystem100 kann über den Bus101 mit einem Anzeigegerät121 zum Anzeigen von Information an ei nen Benutzer des Computersystems100 gekoppelt sein. Die Anzeigeeinrichtung121 kann einen Bildwiederholspeicher, spezialisierte Graphikwiedergabebauteile, eine Kathodenstrahlröhre (CRT) und eine Flachbildschirmanzeige aufweisen. Die Erfindung ist jedoch nicht darauf beschränkt. Ein alphanumerisches Eingabebauteil120 , das alphanumerische und andere Tasten umfaßt, kann mit dem Bus101 zum Übertragen von Information und Befehlsauswahlen an den Prozessor109 gekoppelt sein. Ein weiterer Typ eines Benutzereingabegeräts ist eine Cursorsteuerung123 , die eine Mouse, einen Trackball, einen Stift, eine Touch-Screen oder Cursor-Richtungstasten zum Übertragen von Richtungsinformation und Befehlsauswahlen an dem Prozessor109 und zum Steuern einer Cursorbewegung auf dem Anzeigegerät121 umfaßt. Das Eingabegerät einer Ausführungsform hat zwei Freiheitsgrade entlang zweier Achsen, einer ersten Achse, oder x-Achse, und einer zweiten Achse, oder y-Achse, die es dem Eingabegerät ermöglichen, Positionen in einer Ebene festzulegen. Die Erfindung ist jedoch nicht hierauf beschränkt. - In einer Ausführungsform ist ein Hardcopy-Gerät
124 mit dem Bus101 gekoppelt und wird für das Ausdrucken von Befehlen, Daten und anderer Information auf einem Medium, wie Papier, Film bzw. Folie oder ähnlichen Mediumstypen verwendet. Zusätzlich kann das Computersystem100 mit einem Gerät für die Tonaufnahme und -wiedergabe125 gekoppelt sein. Die Tonaufnahme kann unter Verwendung eines Audiodigitalisierers durchgeführt werden, der mit einem Mikrofon gekoppelt ist. Die Tonwiedergabe kann mit einem Lautsprecher durchgeführt werden, der mit einem Digital-zu-Analog-Wandler (D/A-Wandler) gekoppelt ist, zum Wiedergeben der digitalisierten Töne. Die Erfindung ist jedoch nicht hierauf beschränkt. - Das Computersystem
100 kann als ein Terminal in einem Computernetzwerk funktionieren, wobei das Computersystem100 ein Computer-Untersystem eines Computer-Netzwerkes ist. Die Erfindung ist jedoch nicht hierauf beschränkt. Das Computersystem100 kann ferner ein Videodigitizer-Gerät126 aufweisen. Das Videodigitizer-Gerät126 kann dazu verwendet werden, Videobilder aufzunehmen, die zu anderen mit dem Computer-Netzwerk gekoppelten Computersystemen übertragen werden können. - In einer Ausführungsform unterstützt der Prozessor
109 zusätzlich einen Befehlssatz, der kompatibel mit den x86 und/oder x87-Befehlssätzen, den von existierenden Mikroprozessoren verwendeten Instruktionssätzen, wie den Pentium® Prozessoren, die von der Intel Corporation aus Santa Clara, Kalifornien hergestellt werden. Somit unterstützt in einer Ausführungsform der Prozessor109 all die Operationen, die in der Intel-Architektur (IATM) unterstützt werden, wie sie von der Intel Corporation aus Santa Clara, Kalifornien definiert sind. Siehe Mikroprozessoren, Intel Datenbücher, Band 1 und Band 2, 1992 und 1993, verfügbar von Intel aus Santa Clara, Kalifornien. Im Ergebnis kann der Prozessor109 existierende x86 und/oder x87-Operationen zusätzlich zu den Operationen der Erfindung unterstützen. Alternative Ausführungsformen der Erfindung können die Erfindung in andere Befehlssätze einbauen. - Die Ausführungseinheit
130 wird dazu verwendet, von dem Prozessor109 empfangene Befehle auszuführen. Zusätzlich zu dem Erkennen von Befehlen, die typischerweise in Vielzweckprozessoren implementiert sind, erkennt die Ausführungseinheit130 Befehle in einem gepackten Befehlssatz140 zum Durchführen von Operationen an gepackten Daten-Formaten. In einer Ausführungsform umfaßt der gepackte Befehlssatz140 Befehle zum Unterstützen von Pack-Operationen, Auspack-Operationen, gepackten Additionsoperationen, gepackten Subtraktionsoperationen, gepackten Multiplizieroperationen, gepackten Verschiebeoperationen, gepackten Vergleichsoperationen, Mehrfachadditionsoperationen, Mehrfachsubtraktionsoperationen, Population-Zähloperationen und einen Satz gepackter logischer Operationen. Die Erfindung ist jedoch nicht hierauf beschränkt. Der Satz gepackter logischer Operationen einer Ausführungsform umfaßt gepackte UND-, gepackte UND-NICHT-, gepackte ODER- und gepackte EXKLUSIVODER-Operationen. Die Erfindung ist jedoch nicht hierauf beschränkt. Auch wenn eine Ausführungsform beschrieben ist, bei welcher der gepackte Befehlssatz140 diese Befehle umfaßt, können alterna tive Ausführungsformen einen Untersatz oder einen Obersatz dieser Befehle umfassen. - Diese Befehle stellen die Durchführung der Operationen bereit, die von vielen der Algorithmen benötigt werden, die in Multimedia-Anwendungen verwendet werden, welche gepackte Daten verwenden. Somit können diese Algorithmen geschrieben werden, die Daten zu packen und die erforderlichen Operationen an den gepackten Daten durchzuführen, ohne daß die gepackten Daten ausgepackt werden müßten, um eine oder mehrere Operationen an einem Datenelement pro Zeitpunkt durchzuführen. Daher stellen diese Algorithmen Leistungsvorteile gegenüber Vielzweckprozessoren aus dem Stand der Technik bereit, welche nicht die gepackten Datenoperationen unterstützen, die von bestimmten Multimedia-Algorithmen benötigt werden. Beispielsweise muß das Programm aus dem Stand der Technik, falls ein Multimedia-Algorithmus eine Operation erfordert, die nicht an gepackten Daten durchgeführt werden kann, im Gegensatz zu der vorliegenden Erfindung die Daten auspacken, die Operation an den getrennten Elementen einzeln durchführen und anschließend die Ergebnisse in ein gepacktes Ergebnis zum weiteren gepackten Verarbeiten packen.
- Die Ausführungseinheit
130 ist mit der Registerdatei150 unter Verwendung eines internen Busses170 gekoppelt. Die Registerdatei150 stellt einen Speicherbereich beim Prozessor109 zum Speichern von Information, einschließlich Daten dar. Die Ausführungseinheit130 ist ferner mit einem Cache160 und einem Decoder165 gekoppelt. Der Cache160 wird dazu verwendet, Daten und Steuerungssignale von beispielsweise dem Hauptspeicher104 zu cachen. Der Decoder165 wird dazu verwendet, von dem Prozessor109 empfangene Befehle in Steuerungssignale und Microcode-Eintrittspunkte (micro code entry points) zu dekodieren. In Antwort auf diese Steuerungssignale und Microcode-Eintrittspunkte führt die Ausführungseinheit130 die geeigneten Operationen durch. Falls beispielsweise ein Addierbefehl empfangen wird, veranlaßt der Decoder165 die Ausführungseinheit130 , die erforderliche Addition durchzuführen, falls ein Subtrahierbefehl empfangen wird, veranlaßt der Decoder165 die Ausführungseinheit130 , die erforderliche Subtraktion durchzu führen. Während die Ausführung der verschiedenen Befehle durch den Decoder165 und die Ausführungseinheit130 durch eine Abfolge von IF/THEN-Anweisungen dargestellt wird, erfordert die Ausführung eines Befehles einer Ausführungsform somit keine serielle Verarbeitung dieser IF/THEN-Anweisungen. - Die Registerdatei
150 wird dazu verwendet, Information, einschließlich Steuerungs- und Statusinformation, skalare Daten, Ganzzahl-Daten, gepackte Ganzzahl-Daten und gepackte Gleitkomma-Daten zu speichern. In einer Ausführungsform kann die Registerdatei150 Speicherregister, Steuerungs- und Statusregister, skalare Ganzzahl-Register, skalare Gleitkomma-Register, gepackte Gleitkomma-Register einfacher Genauigkeit, gepackte Ganzzahl-Register und ein Befehlszeiger-Register umfassen, die mit dem internen Bus170 gekoppelt sind. Die Erfindung ist jedoch nicht hierauf beschränkt. In einer Ausführungsform sind die skalaren Ganzzahl-Register 32-Bit-Register, die gepackten einfach genauen Gleitkomma-Register 128-Bit-Register und die gepackten Ganzzahl-Register 64-Bit-Register. Die Erfindung ist jedoch nicht hierauf beschränkt. - In einer Ausführungsform werden die gepackten Ganzzahl-Register auf dem gleichen Speicherplatz wie die skalaren Gleitkomma-Register untergebracht (aliased). Es werden getrennte Register für die gepackten Gleitkomma-Daten verwendet. Durch die Verwendung von Registern der Registerdatei
150 muß der Prozessor109 zu jedem gegebenen Zeitpunkt die Register so behandeln, als wären sie entweder stapelbezogene Gleitkomma-Register oder nicht-stapelbezogene gepackte Ganzzahl-Register. In dieser Ausführungsform ist ein Mechanismus enthalten, der es dem Prozessor109 ermöglicht, zwischen dem Betreiben von Registern als stapelbezogene Gleitkomma-Register und als nicht-stapelbezogene gepackte Datenregister umzuschalten. In einer anderen solchen Ausführungsform kann der Prozessor109 gleichzeitig auf Register als nicht-stapelbezogene Gleitkomma- und gepackte Datenregister wirken. Ferner können in einer alternativen Ausführungsform die selben Register zum Speichern skalarer Ganzzahl-Daten verwendet werden. - Alternative Ausführungsformen können verschiedene Sätze an Registern enthalten. Beispielsweise kann eine alternative Ausführungsform getrennte Register für die gepackten Ganzzahl-Register und die skalaren Daten-Register umfassen. Eine alternative Ausführungsform kann einen ersten Satz an Registern, jedes zum Speichern von Steuerungs- und Statusinformation, und einen zweiten Satz von Registern umfasssen, von denen jedes geeignet ist, skalare Ganzzahl-, gepackte Ganzzahl- und gepackte Gleitkomma-Daten zu speichern.
- Die Register der Registerdatei
150 können so implementiert sein, daß sie verschiedene Anzahlen an Registern und Register unterschiedlicher Größe aufweisen. Die Erfindung ist jedoch nicht hierauf beschränkt. Beispielsweise können in einer Ausführungsform die Ganzzahl-Register so implementiert sein, daß sie 32 Bits speichern, während andere Register so implementiert sind, daß sie 128 Bits speichern, wobei alle 128 Bits zum Speichern von Gleitkomma-Daten verwendet werden, während lediglich 64 Bits für gepackte Daten verwendet werden. In einer alternativen Ausführungsform enthalten die Ganzzahl-Register jeweils 32 oder 64 Bits. -
2 ist ein Prozessor einer Ausführungsform. Der Prozessor109 umfaßt eine Busschnittstelleneinheit202 , die den Prozessor109 an einen externen Bus204 koppelt, wobei der externe Bus204 dazu verwendet wird, mit anderen Systemgeräten zu kommunizieren. Die Busschnittstelleneinheit202 führt Transaktionen durch, wenn diese vom L2-Cache206 oder vom Prozessorkern208 angefragt werden. Ferner koppelt die Busschnittstelleninheit202 den Prozessor109 an einen vereinheitlichten L2-Cache206 unter Verwendung eines Rückbusses (backside bus)210 . Der L2-Cache206 kann chipextern sein und kann bei einem Bruchteil der Geschwindigkeit des Kernprozessors208 laufen. Die Erfindung ist jedoch nicht hierauf beschränkt. Der L2-Cache206 einer Ausführungsform umfaßt 512 KBytes. Die Erfindung ist jedoch nicht hierauf beschränkt. Der L2-Cache206 bedient Fehltreffer auf den L1-Datencache220 und den Codecache220 und kann Anfragen an die Busschnittstelleneinheit202 ausgeben. - Die Busschnittstelleneinheit
202 einer Ausführungsform ist mit dem Prozessorkern208 unter Verwendung eines L1-Datencaches220 und eines L1-Codecaches222 gekoppelt, von denen jeder 16 KBytes hat. Die Erfindung ist jedoch nicht hierauf beschränkt. Die L1-Caches220 bis222 sind Direktcaches, die Daten in einem Taktzyklus bei einem Cachetreffer bereitstellen können. Ein Cachetreffer tritt auf, wenn sich die angefragten Daten bereits in dem Cache befinden; andernfalls tritt ein Cachefehltreffer auf und die Daten werden von dem Hauptspeicher oder dem L2-Cache, oder indirektem Cache206 , eingebracht. Der L1-Datencache220 bedient Datenlade- und -speicheranfragen, die von den Lade- und Speicherausführungseinheiten ausgegeben werden; wenn ein Fehltreffer auftritt, führt der L1-Datencache220 Anfragen weiter zu dem L2-Cache-206 . Der L1-Codecache222 bedient die Befehls-Fetch-Anfragen, die von dem Befehls-Prefetcher ausgegeben werden. - Der Prozesserkern
208 umfaßt eine Logikeinheit, die verantwortlich ist für: das Befehls-Fetching; eine Sprung- bzw. Verzweigungsvorhersage; eine syntaktische Analyse von Befehlsströmen; das Decodieren von Befehlen in Berechnungsbefehle eines verminderten Befehlssatzes (RISC) oder Micro-Ops; das Abbilden von Zugriffen unter Registersätzen; und Abfertigen, die Ausführung und den Rückzug von Micro-Ops. Der Prozessorkern208 kann bei Geschwindigkeiten von 233, 266 und 300 Megahertz (MHz) laufen. Die Erfindung ist jedoch nicht hierauf beschränkt. Der Prozessor109 unterstützt eine Aus-der-Reihenfolge-Ausführung, bei der Micro-Ops basierend auf der Bereitschaft ihrer Daten ausgeführt werden, anstatt in der Reihenfolge, in der diese in die Ausführungseinheit gelangen. Eine asynchrone Prozessorinterrupt-Steuerungseinheit230 (APIC = Asynchronous Prozessor Interrupt Control) empfängt Interruptanfragen und setzt Prioritäten fest und leitet diese Anfragen für die Ausführung an den Prozessorkern208 weiter. - Der Prozessor einer Ausführungsform ist ein erweiterter superskalarer Prozessor, der um zwei Vielzweck-Ganzzahl-Pipelines und eine überlappte (pipelined) Gleitkomma-Einheit gebaut ist, wodurch dem Prozessor ermöglicht wird, zwei Ganzzahl-Befehle gleichzeitig auszuführen. Der Prozessor kann zwei Befehle in jedem Taktzyklus ausgeben, einen in jeder Pipeline. Die Erfindung ist jedoch nicht hierauf beschränkt.
-
3 ist eine duale Datenpipeline300 einer Ausführungsform. Andere Ausführungsformen können eine Pipeline oder mehr als zwei Pipelines haben. Die erste logische Pipeline wird als die U-Pipeline302 bezeichnet und die zweite logische Pipeline wird als die V-Pipeline304 bezeichnet. Während des Decodierens eines gegebenen Befehls werden die nächsten beiden Befehle geprüft, und sie werden gegebenenfalls so ausgegeben, daß der erste in der U-Pipeline302 und der zweite in der V-Pipeline304 ausgeführt wird. Falls es nicht möglich ist, zwei Befehle zu paaren, wird der nächste Befehl der U-Pipeline302 ausgegeben und kein Befehl wird der V-Pipeline304 ausgegeben. Wenn Befehle in den beiden Pipelines302 –304 ausgeführt werden ist ihr Verhalten dasselbe, als wenn sie sequenziell ausgeführt worden wären. Die Prozessor-Microarchitektur umfaßt die folgenden Stufen: eine Befehls-Prefetching310 , einen Befehls-Fetching312 , eine Befehlsdecodierung, -paarung und -abfertigung314 , eine Adresserzeugung316 , eine Operandenlesung und -ausführung318 und ein Rückschreiben320 . Eine Befehldecodierlogikeinheit decodiert, wickelt ab und gibt die Befehle mit einer Rate von bis zu zwei Befehlen pro Taktzyklus aus. -
4 ist eine Cache-Architektur eines Prozessors einer Ausführungsform. Der Prozessor umfaßt eine zwölfstufige überlagerte (pipelined) Architektur mit einem Aus-der-Reihenfolge-Ausführungskern (out-of-order execution unit). Ferner umfaßt der Prozessor einer Ausführungsform drei parallele Decodierer, fünf Ausführungsanschlüsse 0–4, einen Verzweigungszielpuffer (BTB = branch target buffer)402 mit 512 Einträgen, vier 32-Byte-Schreibpuffer404 , einen Satz skalarer 32-Bit-Register414 , einen Satz an acht 64-Bit-Registern410 , einen Satz an acht 128-Bit-Multimediaerweiterungsregistern412 und einen Stapelrückführpuffer (RSB = return stack buffer)406 . Der BTB402 hält eine Vorgeschichte an Verzweigungen, die während der Ausführung einer Anwendung falsch vorhergesagt wurde. Er speichert die Adressen der falsch vorhergesagten Verzweigungsbefehle, die Sprungzieladressen und die Ergebnisse der Fehlvorhersage. Wenn die gleichen Befehle wieder auftauchen, nutzt die Verzweigungsvorhersageeinheit diese Information aus, das Ziel der Verzweigung vorherzusagen. Der RSB406 kann Rücksprungadressen für Prozeduren korrekt vorhersagen, die in Abfolge von unterschiedlichen Stellen aufgerufen werden. - Wie hier zuvor diskutiert, umfaßt der Prozessor zwei Ausführungs-Pipelines, die U-Pipeline
302 und die V-Pipeline304 . Diese Pipelines302 –304 arbeiten parallel und können eine Ausführungsrate von bis zu zwei Befehlen pro Taktzyklus aufrechterhalten. Die U-Pipeline302 und die V-Pipeline304 können in irgendeinen der vier Schreib-Puffer404 schreiben. Ferner kann eine Ausführungsform Pipelining- oder überlappende Operationen unterstützen. Beim Pipelining spaltet der Prozessor die Befehlsausführung in mehrere Stufen auf, einschließlich Fetching, Decodieren, Ausführen und Zurückschreiben. Daher kann der Prozessor mehrere Befehle gleichzeitig ausführen, jeden in einer unterschiedlichen Ausführungsstufe. Beispielsweise könnte ein Befehl in der Prefetch-Stufe, einer bei der Decodierung, einer bei der Ausführung und einer bei dem Rückschreiben sein. Wie hier zuvor diskutiert, wird eine Parallelverarbeitung, bei welcher ein einzelner Befehl auf mehrere Datenelemente wirkt, oftmals als ein Einbefehl-Mehrdaten-Verarbeitung (SIMD) bezeichnet. - Der Satz an acht 64-Bit-Registern
410 einer Ausführungsform ermöglicht eine Parallelverarbeitung bis zu einem Level, bei dem ein einzelner Befehl auf mehrere Datenelemente wirkt. Dieser Prozeß ist für Anwendungen von Vorteil, die die gleiche Operation wiederholt an einem zusammenhängenden Datenblock durchführt, wie bei Multimediaalgorithmen. Die 64-Bit-Register410 können auf die Register414 abgebildet oder aliased werden. Die Erfindung ist jedoch nicht hierauf beschränkt. Da die 64-Bit-Register410 Teil des Gleitkomma-Zustandes sind, gibt es keinen neuen Zustand. Wenn die 64-Bit-Register410 auf die skalaren 32-Bit-Register414 aliased werden, interpretieren die Multimediaerweiterungsbefehle beim Zugriff auf die aliased Register die Daten als gepackte Ganzzahl-Bytes, oder Wörter, und die Gleitkomma-Befehle interpretieren die gleichen Daten als den Mantissenteil einer Gleitkommazahl. Gleichwichtig ist, daß die Multimediaerweiterungsbefehle Zugriff auf die 8 dedizierten 64-Bit-Register410 zusätzlich zu den acht skalaren 32-Bit-Register414 haben. - Es sind drei gepackte Datentypen und ein 64-Bit-Vierfachwort für die 64-Bit-Register
410 einer Ausführungsform definiert. Jedes Element innerhalb des gepackten Datentyps ist eine Festkomma-Ganzzahl. Der Benutzer steuert die Stelle des Festkommas, innerhalb jedes Elementes und ist verantwortlich für dessen Anordnung während der Berechnung. Dies gibt dem Benutzer die Flexibilität, Festkomma-Formate während der Anwendung auszuwählen und zu ändern, um den dynamischen Wertebereich vollständig zu steuern. - Die 64-Bit-Register
410 enthalten gepackte Festkomma-Ganzzahl-Daten. Jedes 64-Bit-Multimediaerweiterungsregister MM0–MM7 kann direkt durch Angeben eines Registernamens in den Befehlen adressiert werden. Hinsichtlich des Registerzugriffes werden diese Register MM0–MM7 Direktzugriffsregister, d. h., auf sie wird nicht über ein Stapelmodell zugegriffen, da sie mit den Gleitkomma-Befehlen kommen. Befehle, die einen Speicheroperanden festlegen, verwenden die skalaren 32-Bit-Register414 zum Adressieren dieses Operanden. - Da die 64-Bit-Register
410 die Gleitkomma-Register verwenden, haben Anwendungen, welche die Multimediaerweiterungstechnologien einsetzen, 16 Ganzzahl-Register zur Verwendung. Acht Register sind die 64-Bit-Multimediaerweiterung-Gleitkomma-Register MM0–MM7, die gepackte Daten umfassen, und acht Register sind die skalaren 32-Bit-Register414 , die für unterschiedliche Operationen, wie Adressierung, Schleifensteuerung, oder irgend eine andere Datenmanipulation verwendet werden können. - Speicher- und Ganzzahl-Registeroperationen unterstützen die Datenbewegung zwischen den 64-Bit-Registern
410 und den skalaren 32-Bit-Registern414 oder dem Speicher. Die 32-Bit- und 64-Bit- Speicherzugriffsunterstützung in der U-Pipeline302 wird dazu verwendet, 32-Bit- und 64-Bit-Speicherübertragungen zu und von den 64-Bit-Registern410 durchzuführen. Ferner verwendet der Prozessor die U-Pipeline302 für Übertragungen zwischen den Ganzzahl- und Multimediaverarbeitung-Datenwegen. - Die den 64-Bit-Registern
410 entsprechenden Befehle wirken parallel auf die gepackten Byte-, gepackten Wort-, gepackten Doppelwort- und Vierfachwort-Datentypen, die in 64-Bit-Register gepackt sind. Der gepackte Byte-Datentyp umfaßt acht gepackte aufeinanderfolgende Bytes in einem 64-Bit-Register, oder acht Elemente pro Operand. Der gepackte Wortdatentyp umfaßt vier gepackte aufeinanderfolgende Wörter in einem 64-Bit-Register, oder vier Elemente pro Operand. Der gepackte Doppelwort-Datentyp umfaßt zwei gepackte aufeinanderfolgende Doppelwörter in einem 64-Bit-Register, oder zwei Elemente pro Operand. Der Vierfachwort-Datentyp umfaßt ein Vierfachwort in einem 64-Bit-Register, oder ein Element pro Operand. Die Befehle führen vorzeichenbehaftete und vorzeichenlose arithmetische, logische, einpackende und auspackende Operationen an den Datentyp-Bereichen durch. Ferner ermöglichen die Befehle eine Sättigung oder das Umherkreisen, um Overflow- und Underflow-Zustände handzuhaben. Die Befehle einer Ausführungsform umfassen MOVQ-, POR-, PSLLD- und UNPACK-Befehle. Der MOVQ-Befehl überträgt 64 Bits unter dem ersten Satz an Multimediaerweiterungsregister sowie unter dem ersten Satz an Multimediaerweiterungsregister und dem Speicher. Der POR-Befehl veranlaßt die Ausführung einer bitweisen logischen ODER-Verknüpfung in dem ersten Satz an Multimediaerweiterungsregistern. Der PSLLD-Befehl veranlaßt die Ausführung einer Linksverschiebe-Logikfunktion ohne Übertrag über den Datentyp-Bereich in dem ersten Satz an Multimediaerweiterungsregistern. Der UNPACK-Befehl verschachtelt Daten, indem er einen Operanden aus einem Register und einen Operanden aus einer entsprechenden Stelle in einem anderen Register nimmt und beide Operanden aneinander in ein Register stellt. Beispielsweise stellt ein UNPACK-HIGH-Befehl den hohen Operanden eines Registers und den hohen Operanden eines anderen Registers aneinander in ein Register. In einer Ausführungsform wirkt ein UNPACK-Befehl auf einen Null-Operanden aus einem Quellenregi ster und auf einen Nicht-Null-Operanden aus einem anderen Quellenregister und stellt beide Operanden in das Quellenregister des Null-Operanden. - Die Prozessorarchitektur, welche die 128-Bit-Multimediaerweiterungsregister
412 einer Ausführungsform umfaßt, beschleunigt ferner die Leistungsfähigkeit von 3D-Graphikanwendungen gegenüber Multimediaerweiterungstechnologien aus dem Stand der Technik. Das zugehörige Programmiermodell verwendet Befehle, die auf neue gepackte Gleitkomma-Datentypen wirken, die vier einfach genaue Gleitkommazahlen enthalten. Die Erfindung ist jedoch nicht hierauf beschränkt. Es werden Vielzweck-Gleitkomma-Befehle verwendet, um auf den Satz von acht 128-Bit-Multimediaerweiterungsregister XMM0–XMM7 zu wirken, wodurch dem Programmierer die Möglichkeit geschaffen wird, Algorithmen zu entwickeln, die gepackte einfach genaue Gleitkomma-Daten und Ganzzahl-Daten leicht vermischen können. Ferner können Befehle eingefügt werden, um die Cache-Fähigkeit gepackter Gleitkomma-Daten und Ganzzahl-Daten zu steuern. Diese neuen Befehle umfassen die Möglichkeit, Daten in die acht 64-Bit-Multimediaerweiterungsregister MM0–MM7 und die acht 128-Bit-Multimediaerweiterungsregister XMM0–XMM7 zu strömen, ohne die Caches zu verschmutzen. Ferner umfassen diese Befehle die Möglichkeit, Daten zu prefetchen, bevor sie tatsächlich verwendet werden. Der beabsichtigte Vorteil von gepackten Gleitkomma-Befehlen ist die Beschleunigung von 3D-Geometrien und -Graphiken, die Beschleunigung einer 3D-Wiedergabe und die Beschleunigung von Videocodierung und -decodierung. - In einer Ausführungsform wird die Einbefehl-Mehrdaten-Technik (SIMD-Technik) verwendet. Die Erfindung ist jedoch nicht darauf beschränkt. Wie zuvor diskutiert, beschleunigt diese Technik die Softwareleistungsfähigkeit, indem mehrere Datenelemente parallel verarbeitet werden, unter Verwendung eines einzelnen Befehls. Die 128-Bit-Multimediaerweiterungsregister 412 unterstützen Operationen an gepackten einfach genauen Gleitkomma-Datentypen. Die 64-Bit-Register
410 unterstützen Operationen an gepackten Vierfachdatentypen, oder Byte-, Wort- und Doppel-Wort-Datentypen. Dieser Ansatz wird verwendet, da die meisten 3D-Graphiken und Digitalsignalverarbeitungsanwendungen (DSP-Anwendungen) folgende Eigenschaften umfassen: in sich parallel; breiter dynamischer Bereich, somit Gleitkomma-basierend; gleichmäßige und wiederauftretende Speicherzugriffsmuster; lokalisierte wiederauftretende Operationen, die an den Daten durchgeführt werden; und datenunabhängiger Steuerungsfluß. - In einer Ausführungsform sind acht 128-Bit-Vielzweckregister XMM0–XMM7 vorgesehen, von denen jedes direkt adressiert werden kann. Diese 128-Bit-Register XMM0–XMM7 halten gepackte 128-Bit-Daten. In einer Ausführungsform ist der grundsätzliche Datentyp der 128-Bit-Multimediaerweiterungsregister
412 ein gepackter einfach genauer Gleitkomma-Operand, genauer gesagt vier einfach genaue 32-Bit-Gleitkommazahlen. Die Erfindung ist jedoch nicht hierauf beschränkt. Die entsprechenden Multimediaerweiterungsbefehle greifen auf die 128-Bit-Register412 direkt zu, unter Verwendung von Registernamen. Die Erfindung ist jedoch nicht hierauf beschränkt. Die 128-Bit-Register412 können dazu verwendet werden, Berechnungen an Daten durchzuführen. - Das System reeller Zahlen umfaßt das Kontinuum reeller Zahlen von minus Unendlich bis plus Unendlich. Da die Größe und Anzahl an Registern, die ein Computer haben kann, beschränkt ist, kann lediglich eine Untermenge des Kontinuums reeller Zahlen bei Berechnungen mit reellen Zahlen verwendet werden. Da die Untermenge an reellen Zahlen, die ein bestimmter Prozessor unterstützt, eine Näherung des Systems reeller Zahlen darstellt, ist der Bereich und die Genauigkeit dieser Untermenge reeller Zahlen durch das Format bestimmt, das der Prozessor zum Darstellen von reellen Zahlen verwendet. Um die Geschwindigkeit und die Effizienz von Berechnungen mit reellen Zahlen zu erhöhen, stellen Computer reelle Zahlen typischerweise in einem binären Gleitkomma-Format dar. In diesem Format hat eine reelle Zahl drei Teile: ein Vorzeichen, eine Mantisse und einen Exponenten.
-
5 ist ein binäres Gleitkomma-Format500 , das von den 128-Bit-Multimediaerweiterungsregistern einer Ausführungsform verwendet wird. Dieses Format ist konform mit dem IEEE-Standard. Das Vorzeichen502 ist ein binärer Wert, der angibt, ob die Zahl positiv (0) oder negativ (1) ist. Die Mantisse506 hat zwei Teile: eine binäre 1-Bit-Ganzzahl508 , die auch als das J-Bit bezeichnet wird, und einen binären Bruchteil510 . In anderen Ausführungsformen ist das J-Bit508 nicht explizit dargestellt, sondern ist stattdessen ein impliziter Wert. Der Exponent504 ist eine binäre ganze Zahl, welche die Potenz zur Basis zwei darstellt, zu der die Mantisse506 erhoben wird. - Bezüglich der Speicherdatenformate umfaßt der gepackte 128-Bit-Datentyp vier einfach genaue Gleitkommazahlen. Die 128 Bits werden von 0 bis 127 durchnumeriert, wobei das Bit 0 das niedrigstwertige Bit (LSB) und das Bit 127 das höchstwertige Bit (MSB) ist. Die Bytes des gepackten 128-Bit-Datentyps einer Ausführungsform haben aufeinanderfolgende Speicheradressen, wobei die Reihenfolge im Little-Endian-Format erfolgt, d. h. die Bytes mit den niedrigeren Adressen sind weniger wertig als die Bytes mit den höheren Adressen.
- Bezüglich der Register-Datenformate haben die Werte in dem 128-Bit-Multimediaerweiterungsregistern das gleiche Format wie ein 128-Bit-Wert im Speicher. Es werden zwei Datenzugriffsmoden unterstützt, ein 128-Bit-Zugriffsmodus und ein 32-Bit-Zugriffsmodus. Die Erfindung ist jedoch nicht hierauf beschränkt. Der Datentyp entspricht unmittelbar dem einfach genauen Format in dem IEEE-Standard. Der Bruchteilabschnitt der Mantisse ist codiert. Es wird angenommen, daß die ganze Zahl für alle Zahlen außer 0 und nicht-normalisierte endliche Zahlen gleich 1 ist. Der Exponent des einfach genauen Datentyps wird im Biased-Format codiert. Die Biasing-Konstante ist
127 für das einfach genaue Format. - Beim Speichern von reellen Werten in den Speicher werden einfach reelle Werte in vier aufeinanderfolgenden Bytes in den Speicher gespeichert. Der 128-Bit-Zugriffsmodus wird für 128-Bit-Speicherzugriffe, 128-Bit-Übertragungen zwischen den 128-Bit-Multimediaerweiterungsregistern und für alle logische Auspack- und arithmetische Befehle verwendet. Der 32-Bit-Zugriffsmodus wird für 32-Bit-Speicherzugriffe, 32-Bit-Übertragungen zwischen den 128-Bit-Multimediaerweiterungs registern und für alle arithmetische Befehle verwendet. Der 64-Bit-Zugriffsmodus wird für einen 64-Bit-Speicherzugriff, 64-Bit-Übertragungen zwischen den 128-Bit-Multimediaerweiterungsregistern und für alle arithmetische Befehle verwendet. Es wird ein Direktzugriff auf all die 128-Bit-Multimediaerweiterungsregister ermöglicht.
- Der Befehlssatz einer Ausführungsform, die dazu verwendet wird, auf Datenoperanden der 128-Bit-Multimediaerweiterungsregister zu wirken, wirkt parallel entweder auf alle oder die niedrigstwertigen Paare gepackter Datenoperanden.
6 zeigt die auf ein Paar Operanden wirkenden gepackten Befehle.7 zeigt die auf die niedrigstwertigen Paare der beiden Operanden wirkenden skalaren Befehle; für skalare Operationen werden die drei oberen Komponenten aus dem ersten Operanden zum Ziel durchgeleitet. Alternativ können die drei oberen Komponenten auf Null gesetzt werden. Im allgemeinen ist die Adresse eines Speicheroperanden auf einen 16-Byte-Bereich für alle Befehle ausgerichtet, außer für unausgerichtetes (unaligned) Laden und Speichern. - Die Befehle einer Ausführungsform umfassen einen Shuffle Packed Single Precision Floating Point Befehl (SHUFPS = ”Mischen gepackter einfach genauer Gleitkommazahlen”). Der SHUFPS-Befehl ist in der Lage, jede der gepackten vier einfach genauen Gleitkommazahlen aus einem Quellenoperanden zu den unteren beiden Zielfeldern umzustellen (shuffle); die oberen zwei Zielfeldern werden aus einer Umstellung irgendeiner der vier einfach genauen Gleitkommazahlen aus dem zweiten Quellenoperanden erzeugt.
8 zeigt die gepackte Shuffle-Operation (den SHUFPS-Befehl) einer Ausführungsform. Indem das gleiche Register für beide Quellen verwendet wird, kann der SHUFPS-Befehl irgendeine Kombination der vier einfach genauen Gleitkommazahlen aus diesem Register zurückgeben. - In einer Ausführungsform können skalare Ganzzahl- oder Speicherdaten unter Verwendung der hier bereitgestellten Befehle parallel in ein gepacktes Gleitkomma-Format umgewandelt werden. Das gepackte Gleitkomma-Format wird manipuliert, um die bei der 3D-Bildwiedergabe verwendeten Graphikdaten bereitzustellen. Nach der Manipulation werden die gepackten Gleitkomma-Graphikdaten unter Verwendung der hier beschriebenen Befehle parallel in ein gepacktes Ganzzahl-Format umgewandelt. Die gepackten Ganzzahl-Daten werden für die Wiedergabe einer Bildanzeige verwendet. Hierfür kann eine Anwendung 128-Bit-Multimediaerweiterungsregister-Befehle in Kombination mit 64-Bit-Multimedia-Registerbefehlen oder 128-Bit-Multimediaerweiterungsregister-Befehle in Kombination mit einem skalaren Register oder Speicherbefehlen verwendet werden. Somit umfassen die Befehle einer Ausführungsform Umwandlungsbefehle, die gepackte und skalare Umwandlungen zwischen den 128-Bit-Multimediaerweiterungsregistern und entweder den 64-Bit-Multimediaerweiterungs-Ganzzahl-Register oder den 32-Bit-Ganzzahl-IATM-Registern zu unterstützen.
-
9 zeigt architektonische Register, die von der Registerdatei150 und den entsprechenden Umwandlungsbefehlen910 –928 einer Ausführungsform unterstützt werden. Die Registerdatei unterstützt einen Satz skalarer 32-Bit-IATM-Register, einen Satz gepackter Ganzzahl-Register904 oder 64-Bit-Multimediaerweiterungsregister und einen Satz gepackter einfach genauer Gleitkomma-Register906 , oder 128-Bit-Multimediaerweiterungsregister. Die Erfindung ist jedoch nicht hierauf beschränkt. In einer Ausführungsform können, wie hier zuvor diskutiert, die gepackten Ganzzahl-Register904 auf den Speicherraum der skalaren Register oder den Systemspeicher902 aliased werden. Die Erfindung ist jedoch nicht hierauf beschränkt. - Die Umwandlungsbefehle
910 –928 , die den Registern902 –906 der Registerdatei150 entsprechen, stellen ein effizientes Mittel für die Umwandlung zwischen SIMD-Gleitkomma-Daten und SIMD-Ganzzahl-Daten während der Datenumwandlung zwischen den Registern dar. Die Umwandlungsbefehle umfassen, sind jedoch nicht darauf beschränkt, einen Wandle-Skalare-Ganzzahl-In-skalare-Einfachgenaue-Gleitkommazahl-Befehl (CVTSI2SS-Befehl)910 , einen Wandle-Skalare-Einfachgenaue-Gleitkommazahl-In-eine-32-Bit-Ganzzahl-Befehl (CVTSS2SI-Befehl)912 , einen Wandle-Abgeschnittene-Skalare-Einfachgenaue-Gleitkommazahl-In-Skalare-32-Bit- Ganzzahl-Befehl (CVTTSS2SI-Befehl)914 , einen Wandle-Gepackte-32-Bit-Ganzzahl-In-Gepackte-Einfachgenaue-Gleitkommazahl-Befehl (CVTPI2PS-Befehl)920 , einen Wandle-Gepackte-Einfachgenaue-Gleitkommazahl-In-Gepackte-32-Bit-Ganzzahl-Befehl (CVTPS2PI-Befehl)922 , zwei Varianten des CVTPS2PI-Befehls922 , einschließlich einem CVTPS2PW-Befehls924 und einem CVTPS2PB-Befehl926 , und einen Wandle-Abgeschnittene-Gepackte-Einfachgenaue-Gleitkommazahl-In-Gepackten-32-Bit-Ganzzahl-Befehl (CVTTPS2PI-Befehl)928 . Der Wandle-Skalare-Ganzzahl-In-Skalare-Einfachgenaue-Gleitkommazahl-Befehl (CVTSI2SS-Befehl)910 einer Ausführungsform wandelt eine vorzeichenbehaftete 32-Bit-Ganzzahl-aus einem skalaren 32-Bit-Register oder einem 32-Bit-Ganzzahl-Register902 in eine einfach genaue Gleitkommazahl um. Die einfach genaue Gleitkommazahl wird in ein Register eines Satzes von 128-Bit-Multimediaerweiterungsregister906 gestellt. Alternativ wandelt der CVTSI2SS-Befehl910 eine vorzeichenbehaftete 32-Bit-Ganzzahl-aus dem Speicher in eine einfach genaue Gleitkommazahl um, wobei die einfach genaue Gleitkommazahl in einem Register eines Satzes von 128-Bit-Multimediaerweiterungsregister906 gespeichert wird. Wenn diese Umwandlungen ungenau sind, wird ein Runden entsprechend den Inhalten eines Steuer- und Statusregisters durchgeführt. -
10 ist ein Flußdiagramm zum Umwandeln einer Zahl aus einem skalaren Format in ein gepacktes Gleitkomma-Format (der CVTSI2SS-Befehl) einer Ausführungsform. Die Operation beginnt beim Schritt1002 , bei dem eine Zahl in dem Ganzzahl-Format in ein Register eines ersten Satzes architektonischer Register in einem skalaren Format gespeichert wird. Das Ganzzahl-Format einer Ausführungsform ist ein 32-Bit-Ganzzahl-Format. Die Erfindung ist jedoch nicht hierauf beschränkt. Der erste Satz architektonischer Register kann acht 32-Bit-Register umfassen. Die Erfindung ist jedoch nicht hierauf beschränkt. Die Zahl in dem Ganzzahl-Format wird beim Schritt1004 in eine Zahl in dem Gleitkomma-Format umgewandelt. Das Gleitkomma-Format einer Ausführungsform ist ein einfach genaues 32-Bit-Gleitkomma-Format. Die Erfindung ist jedoch nicht hierauf beschränkt. In einer Ausführungsform umfaßt der Umwandlungsschritt den Zugriff auf Rundungssteuerbits in einem Steuer- und Statusregister und das Runden der Zahl in dem Gleitkomma-Format entsprechend den Rundungssteuerbits. Die Zahl in dem Gleitkomma-Format wird bei Schritt1006 in ein Register eines zweiten Satzes architektonischer Register in einem gepackten Format gestellt. In einer Ausführungsform umfaßt der zweite Satz architektonischer Register acht 128-Bit-Register. Die Erfindung ist jedoch nicht hierauf beschränkt. Der Schritt, bei dem die Zahl in dem Gleitkomma-Format in ein Register eines zweiten Satzes architektonischer Register gestellt wird, kann folgendes umfassen: die Zahl in dem Gleitkomma-Format in ein niedrigstes Segment des Registers zu stellen und das die oberen Segmente des Registers unverändert beizubehalten. Die Erfindung ist jedoch nicht hierauf beschränkt. - Der Wandle-Skalare-Einfachgenaue-Gleitkommazahl-In-Eine-32-Bit-Ganzzahl-Befehl (CVTSS2SI-Befehl)
912 wandelt die niedrigstwertige einfach genaue Gleitkommazahl aus einem 128-Bit-Multimediaerweiterungsregister906 in eine vorzeichenbehaftete 32-Bit-Ganzzahl um. Die vorzeichenbehaftete 32-Bit-Ganzzahl wird in ein skalares IATM-32-Bit-Ganzzahl-Register902 gestellt. Wenn die Umwandlung ungenau ist, wird eine Rundung entsprechend den Inhalten eines Steuer- und Statusregisters durchgeführt. - Der Wandle-Abgeschnittene-Skalare-Einfachgenaue-Gleitkommazahl-In-Skalare-32-Bit-Ganzzahl-Befehl (CVTTSS2SI-Befehl)
914 wandelt die niedrigstwertige einfach genaue Gleitkommazahl aus einem 128-Bit-Multimediaerweiterungsregister906 in eine vorzeichenbehaftete 32-Bit-Ganzzahl um. Die vorzeichenbehaftete 32-Bit-Ganzzahl wird in ein skalares IATM-32-Bit-Ganzzahl-Register902 gestellt. Wenn die Umwandlung ungenau ist, wird das Ergebnis implizit abgeschnitten, ohne den Zugriffsschritt auf einen Rundungsmodus aus einem Steuer- und Statusregister. -
11 ist ein Flußdiagramm zum Umwandeln einer Zahl aus einem gepackten Gleitkomma-Format in ein skalares Format (der CVTSS2SI- und der CVTTSS2SI-Befehl) einer Ausführungsform. Die Operation beginnt beim Schritt1102 , bei dem mehrere Zahlen in dem Gleitkomma-Format in ein Register des zweiten Satzes architektonischer Register in einem gepackten Format gespeichert werden. In einer Ausführungsform werden vier Zahlen in dem Gleitkomma-Format gespeichert. Die Erfindung ist jedoch nicht hierauf beschränkt. Das Gleitkomma-Format einer Ausführungsform ist ein einfach genaues 32-Bit-Gleitkomma-Format. Die Erfindung ist jedoch nicht hierauf beschränkt. In einer Ausführungsform umfaßt der zweite Satz architektonischer Register acht 128-Bit-Register. Die Erfindung ist jedoch nicht hierauf beschränkt. Eine der mehreren Zahlen in dem Gleitkomma-Format wird beim Schritt1104 in eine Zahl in dem Ganzzahl-Format umgewandelt. Das Ganzzahl-Format einer Ausführungsform ist ein 32-Bit-Ganzzahl-Format. Die Erfindung ist jedoch nicht hierauf beschränkt. In einer Ausführungsform des CVTSS2SI-Befehls umfaßt der Umwandlungsschritt den Zugriff auf Rundungsmodusbits aus einem Steuer- und Statusregister und das Runden der Zahl in dem Ganzzahl-Format entsprechend dem angegebenen Rundungsmodus. - In einer Ausführungsform des CVTTSS2SI-Befehls umfaßt der Umwandlungsschritt das implizite Abschneiden der Zahl in dem Ganzzahl-Format entsprechend den Modusbits in einem Umwandlungsbefehl. Die Abschneideoperation wird somit von dem Umwandlungsbefehl impliziert und die für den Zugriff auf das Steuer- und Statusregister zum Bestimmen eines Rundungsmodus erforderliche Verarbeitungszeit wird eliminiert. Typische Anwendungen führen Gleitkomma-Berechnungen durch, in dem der Runde-Zum-Nächsten-Rundungsmodus verwendet wird. Der Abschneide-Rundungsmodus wird im allgemeinen beim Umwandeln von der Gleitkomma- zu der Ganzzahldarstellung verwendet. Das Ändern des Rundungsmodus erfordert typischerweise das Ändern der Rundungssteuerung in einem Steuerstatusregister. Das Codieren des Abschneide-Rundungsmodus in dem Befehl vermeidet eine Aktualisierung des Statusregisters, da der von dem Befehl festgelegte Rundungsmodus die Statusregistereinstellung lahmlegt (overrides).
- Die Zahl in dem Ganzzahl-Format wird beim Schritt
1106 in ein Register des ersten Satzes architektonischer Register in einem skalaren Format gestellt. Der erste Satz architektonischer Register kann acht 32-Bit-Register umfassen. Die Erfindung ist jedoch nicht hierauf beschränkt. - Der Wandle-Gepackte-32-Bit-Ganzzahl-In-Gepackte-Einfachgenaue-Gleitkommazahl-Befehl (CVTPI2PS-Befehl)
920 wandelt zwei vorzeichenbehaftete 32-Bit-Ganzzahlen aus einem gepackten 64-Bit-Multimediaerweiterungs-Ganzzahl-Register904 in zwei niedrigstwertige einfach genaue Gleitkommazahlen um. Die einfach genauen Gleitkommazahlen werden in ein 128-Bit-Multimediaerweiterungsregister906 gestellt. Wenn die Umwandlung ungenau ist, wird eine Rundung entsprechend einem Steuer- und Statusregister aus dem Speicher durchgeführt. Die zwei höchstwertigen Zahlen in dem Zielregister werden zu Null gesetzt. -
12 ist ein Flußdiagramm für die Umwandlung einer Zahl aus einem gepackten Ganzzahl-Format in ein gepacktes Gleitkomma-Format (der CVTPI2PS-Befehl) einer Ausführungsform. Die Operation beginnt beim Schritt1202 , bei dem eine erste Vielzahl an Zahlen in dem Ganzzahl-Format in ein Register eines ersten Satzes architektonischer Register in einem gepackten Format gespeichert wird. In einer Ausführungsform werden zwei Zahlen in dem Ganzzahl-Format gespeichert. Die Erfindung ist jedoch nicht hierauf beschränkt. Das Ganzzahl-Format einer Ausführungsform ist ein 32-Bit-Ganzzahl-Format. Die Erfindung ist jedoch nicht hierauf beschränkt. Der erste Satz architektonischer Register kann acht 64-Bit-Register umfassen. Die Erfindung ist jedoch nicht hierauf beschränkt. Es wird wenigstens eine Zahl in dem Ganzzahl-Format beim Schritt1204 in wenigstens eine Zahl in dem Gleitkomma-Format umgewandelt. Das Gleitkomma-Format einer Ausführungsform ist ein einfach genaues 32-Bit-Gleitkomma-Format. Die Erfindung ist jedoch nicht hierauf beschränkt. In einer Ausführungsform umfaßt der Umwandlungsschritt den Zugriff auf Rundungssteuerbits in einem Steuer- und Statusregister und das Runden der Zahl in dem Gleitkomma-Format entsprechen den Rundungssteuerbits. Beim Schritt1206 wird wenigstens eine Zahl im dem Gleitkomma-Format in ein Register eines zweiten Satzes architektonischer Register in einem gepackten Format gestellt. Die wenigstens eine Zahl in dem Gleitkomma-Format kann zwei Zahlen umfassen. Die Erfindung ist jedoch nicht hierauf beschränkt. In einer Ausführungsform umfaßt der zweite Satz architektonischer Register acht 128-Bit-Register. Die Erfindung ist jedoch nicht hierauf beschränkt. Der Schritt, bei dem wenigstens eine Zahl in dem Gleitkomma-Format in ein Register eines zweiten Satzes architektonischer Register gestellt wird, kann folgendes umfassen: zwei Zahlen in dem Gleitkomma-Format in eine untere Hälfte des Registers zu stellen und das eine obere Hälfte des Registers unverändert beizubehalten. Die Erfindung ist jedoch nicht hierauf beschränkt. - In einer Ausführungsform gibt es verschiedene Varianten
922 –926 eines Befehls, der gepackte einfach genaue Gleitkomma-Werte in einem 128-Bit-Multimediaerweiterungsregister906 in gepackte 32-Bit-Ganzzahlen umwandelt, die in einem 64-Bit-Multimediaerweiterungsregister904 gespeichert sind. Die erste Variante ist der Wandle-Gepackte-Einfachgenaue-Gleitkommazahl-In-Gepackte-32-Bit-Ganzzahl-Befehl (CVTPS2PI-Befehl)922 , der die beiden niedrigstwertigen einfach genauen Gleitkommazahlen aus einem 128-Bit-Multimediaerweiterungsregister906 in zwei vorzeichenbehaftete 32-Bit-Ganzzahlen umwandelt. Die beiden vorzeichenbehafteten 32-Bit-Ganzzahlen werden in ein 64-Bit-Multimediaerweiterungsregister904 gestellt. Wenn die Umwandlung ungenau ist, wird eine Rundung entsprechend den Inhalten eines Steuer- und Statusregisters durchgeführt. - Die zweite Variante ist der CVTPS2PW-Befehl
924 , der vier einfach genaue Gleitkommazahlen in einem 128-Bit-Multimedia-Erweiterungregister906 in vier 16-Bit-Ganzzahlen umwandelt, die in einem 64-Bit-Multimediaerweiterungsregister904 gespeichert sind. Die dritte Variante ist der CVTPS2PB-Befehl926 , der vier einfach genaue Gleitkommazahlen in einem 128-Bit-Multimediaerweiterungsregister906 in vier 8-Bit-Ganzzahlen umwandelt, die in den niedrigen 32-Bit-Feldern eines 64-Bit-Multimediaerweiterungsregisters904 gespeichert sind. Andere mögliche Varianten umfassen Ganzzahl-, Byte- und Wort-Versionen von Umwandlungsbefehlen, die auf Daten in Ganzzahlen, Bytes bzw. Wörter wirken. - Der Wandle-Abgeschnittene-Gepackte-Einfachgenaue-Gleitkommazahl-In-Gepackte-32-Bit-Ganzzahl-Befehl (CVTTPS2PI-Befehl)
928 wandelt die zwei niedrigstwertigen einfach genauen Gleitkomma zahlen aus einem 128-Bit-Multimediaerweiterungsregister906 in zwei vorzeichenbehaftete 32-Bit-Ganzzahlen um. Die zwei vorzeichenbehafteten 32-Bit-Ganzzahlen werden in ein 64-Bit-Multimediaerweiterungsregister904 gestellt. Wenn die Umwandlung ungenau ist, wird das Ergebnis ohne den Zugriffsschritt auf einen Rundungsmodus von einem Steuer- und Statusregister implizit abgeschnitten. -
13 ist ein Flußdiagramm für die Umwandlung einer Zahl aus einem gepackten Gleitkomma-Format in ein gepacktes Ganzzahl-Format (der CVTPS2PI- und der CVTTPS2PI-Befehl) einer Ausführungsform. Die Operation beginnt beim Schritt1302 , bei dem eine zweite Vielzahl an Zahlen in dem Gleitkomma-Format in ein Register des zweiten Satzes architektonischer Register in einem gepackten Format gespeichert wird. In einer Ausführungsform werden vier Zahlen in dem Gleitkomma-Format gespeichert. Die Erfindung ist jedoch hierauf beschränkt. Das Gleitkomma-Format einer Ausführungsform ist ein einfach genaues 32-Bit-Gleitkomma-Format. Die Erfindung ist jedoch nicht hierauf beschränkt. In einer Ausführungsform umfaßt der zweite Satz architektonischer Register acht 128-Bit-Register. Die Erfindung ist jedoch nicht hierauf beschränkt. Wenigstens eine der Vielzahl an Zahlen in dem Gleitkomma-Format wird beim Schritt1304 in wenigstens eine Zahl in dem Ganzzahl-Format umgewandelt. Das Ganzzahl-Format einer Ausführungsform ist ein 32-Bit-Ganzzahl-Format. Die Erfindung ist jedoch nicht hierauf beschränkt. In einer Ausführungsform des CVTPS2PI-Befehls umfaßt der Umwandlungsschritt den Zugriff auf Rundungsmodusbits aus einem Steuer- und Statusregister und das Runden der Zahl in dem Ganzzahl-Format entsprechend einem Rundungsmodus, der von den Rundungsmodusbits anzeigt wird. In einer Ausführungsform des CVTTPS2PI-Befehls umfaßt der Umwandlungsschritt das implizite Abschneiden der Zahl in dem Ganzzahl-Format entsprechend einem Abschneidemodus, der von dem Umwandlungsbefehl angezeigt wird. Die Zahl in dem Ganzzahl-Format wird beim Schritt1306 in ein Register des ersten Satzes architektonischer Register in einem gepackten Format gestellt. Der erste Satz architektonischer Register kann acht 64-Bit-Register umfassen. Die Erfindung ist jedoch nicht hierauf beschränkt. - Der CVTTPS2PI-Befehl einer Ausführungsform codiert den Rundungsmodus in dem Befehl, was die Leistungsfähigkeit verbessert, wie oben bezüglich des CVTTSS2SI-Befehls beschrieben wurde.
-
14 ist ein Flußdiagramm für einen zweiten unterschiedlichen Befehl, der zum Umwandeln einer Zahl aus einem gepackten Gleitkomma-Format in ein gepacktes Ganzzahl-Format verwendet wird (der CVTPS2PW-Befehl). Die Operation beginnt beim Schritt1402 , bei dem eine Vielzahl an Zahlen in dem Gleitkomma-Format in ein Register eines ersten Satzes architektonischer Register in einem gepackten Format gespeichert wird. In einer Ausführungsform werden vier Zahlen in dem Gleitkomma-Format gespeichert. Die Erfindung ist jedoch nicht hierauf beschränkt. Das Gleitkomma-Format einer Ausführungsform ist ein einfach genaues 32-Bit-Gleitkomma-Format. Die Erfindung ist jedoch nicht hierauf beschränkt. In einer Ausführungsform umfaßt der erste Satz architektonischer Register acht 128-Bit-Register. Die Erfindung ist jedoch nicht hierauf beschränkt. Beim Schritt1404 wird wenigstens eine der Vielzahl an Zahlen in dem Gleitkomma-Format in wenigstens eine Zahl in dem Ganzzahl-Format umgewandelt. Das Ganzzahl-Format einer Ausführungsform ist ein 16-Bit-Ganzzahl-Format. Die Erfindung ist jedoch nicht hierauf beschränkt. Der Umwandlungsschritt einer Ausführungsform umfaßt den Zugriff auf Rundungsmodusbits aus einem Steuer- und Statusregister und das Runden der Zahl in dem Ganzzahl-Format entsprechend einem Rundungsmodus, der von den Rundungsmodusbits angezeigt wird. Die Zahlen in dem 16-Bit-Ganzzahl-Format werden beim Schritt1406 in ein Register eines zweiten Satzes architektonischer Register in einem gepackten Format gestellt. Der zweite Satz architektonischer Register kann acht 64-Bit-Register umfassen. Die Erfindung ist jedoch nicht hierauf beschränkt. Nach der Umwandlung kann jedes 64-Bit-Register vier 16-Bit-Register umfassen, welche die Inhalte eines 128-Bit-Gleitkomma-Registers darstellen. Die Erfindung ist jedoch nicht hierauf beschränkt. -
15 ist ein Flußdiagramm für eine dritte Variante, die zum Umwandeln einer Zahl aus einem gepackten Gleitkomma-Format in ein gepacktes Ganzzahl-Format verwendet wird (der CVTPS2PB-Befehl). Die Operation beginnt beim Schritt1502 , bei dem eine Vielzahl an Zahlen in dem Gleitkomma-Format in ein Register eines ersten Satzes architektonischer Register in einem gepackten Format gespeichert wird. In einer Ausführungsform werden vier Zahlen in dem Gleitkomma-Format gespeichert. Die Erfindung ist jedoch nicht hierauf beschränkt. Das Gleitkomma-Format einer Ausführungsform ist ein einfach genaues 32-Bit-Gleitkomma-Format. Die Erfindung ist jedoch nicht hierauf beschränkt. In einer Ausführungsform umfaßt der erste Satz architektonischer Register acht 128-Bit-Register. Die Erfindung ist jedoch nicht hierauf beschränkt. Beim Schritt1504 wird wenigstens eine der Vielzahl an Zahlen in dem Gleitkomma-Format in wenigstens eine Zahl in dem Ganzzahl-Format umgewandelt. Das Ganzzahl-Format einer Ausführungsform ist ein 8-Bit-Ganzzahl-Format. Die Erfindung ist jedoch nicht hierauf beschränkt. Der Umwandlungsschritt einer Ausführungsform umfaßt den Zugriff auf Rundungsmodusbits aus einem Steuer- und Statusregister und das Runden der Zahl in dem Ganzzahl-Format entsprechend einem Rundungsmodus, der von den Rundungsmodusbits angezeigt wird. Die Zahlen in dem 8-Bit-Ganzzahl-Format werden beim Schritt1506 in ein Register eines zweiten Satzes architektonischer Register in einem gepackten Format gestellt. Der zweite Satz architektonischer Register kann acht 64-Bit-Register umfassen. Die Erfindung ist jedoch nicht hierauf beschränkt. Nach der Umwandlung kann jedes 64-Bit-Register vier 8-Bit-Ganzzahlen umfassen, die die Inhalte eines 128-Bit-Gleitkomma-Registers darstellen. Die Erfindung ist jedoch nicht hierauf beschränkt. - Die Umwandlungsbefehle behalten die SIMD-Parallelität bei, selbst wenn die Größen der Register unterschiedlich sind. Für Umwandlungen aus den 128-Bit- in die 64-Bit-Multimediaerweiterungsregister werden die beiden niedrigeren SIMD-Gleitkomma-Elemente pro Umwandlungsbefehl in 32-Bit-Ganzzahlelemente umgewandelt; daher werden zwei Spezialisierungen eines speziellen Befehls verwendet, um alle vier einfach genauen Elemente umzuwandeln, wobei ein Vermischen (shuffling) der Operanden vor der Ausgabe des zweiten Umwandlungsbefehls durchgeführt wird. Für Umwandlungen aus den 64-Bit- in die 128-Bit-Multi mediaerweiterungsregister werden zwei 32-Bit-Ganzzahlwerte in einfach genaue Gleitkommazahlen umgewandelt und in die beiden niedrigeren Elemente des Gleitkomma-128-Bit-Multimediaerweiterungsregisters gestellt; die beiden oberen Elemente des Gleitkomma-128-Bit-Multimediaerweiterungsregisters bleiben unverändert. Dieser Ansatz, die oberen Elemente unversehrt durchzuleiten, stellt eine größere Flexibilität bei dem Mischen neuer Daten mit existierenden Daten bereit.
- Multimediagraphiken werden typischerweise erzeugt, indem ein Bild als eine Sammlung kleiner, unabhängig gesteuerter Punkte oder Pixel behandelt wird, die auf einem Bildschirm oder einer Kathodenstrahlröhre angeordnet sind. Ein Computergraphikbild wird typischerweise aus einer Anzahl an Objekten zusammengesetzt, die auf einem Hintergrundbild wiedergegeben werden. Während der Wiedergabe kann das Objekt mit zuvor erzeugten Objekten kombiniert werden, indem Zusammensetztechniken angewandt werden, wobei das Zusammensetzen das Kombinieren mehrerer Bilder durch Übereinanderlegen oder Verschachteln der Bilder bedeutet. In einem zusammengesetzten Bild wird der Wert jedes Pixels aus den Einzelbildern berechnet. Bei der Wiedergabe von Multimedia-3D-Graphiken werden Bilder in zwei Phasen zusammengesetzt – Geometrie und Rasterung. Die Geometriephase umfaßt den Aufbau von Bildern für die Zusammensetzung unter Verwendung von Dreiecken, die durch im 3D-Koordinatenraum definierte Scheitelpunkte gebildet werden. Die Rasterung ist die Umwandlung von Vektorgraphiken, oder von anhand mathematischer Elemente, wie Punkte und Linien, beschriebener Bilder, in äquivalente aus Pixelmustern zusammengesetzte Bilder, die als Bitsätze gespeichert und manipuliert werden können.
- Beim Zusammensetzen der Dreiecke, welche die Bilder bilden, hat jeder Scheitelpunkt oder jede Koordinate einen entsprechenden Farbwert aus einem speziellen Farbmodell. Ein Farbmodell ist eine Festlegung eines 3D-Farbkoordinatensystems und eine sichtbare Untermenge in dem Koordinatensystem, in dem alle Farben in einer speziellen Farbpalette liegen, wobei eine Farbpalette eine Untermenge aller sichtbaren Chromatizitäten ist. Beispielsweise ist das Rot (R), Grün (G), Blau (B)-Farbmodell (RGB) die Einheitswürfel-Untermenge des kartesischen 3D-Koordinatensystem. Der Zweck eines Farbmodells liegt darin, geeignete Farbfestlegungen innerhalb einer bestimmten Farbpalette zu ermöglichen. Die RGB-Primärwerte sind additive Primärwerte derart, daß individuelle Beiträge jedes Primärwertes zusammenaddiert werden, um den resultierenden Pixel zu ergeben.
- Der Wert jedes Pixel in einem zusammengesetzten Multimediabild wird aus den Teilbildern auf bestimmte Weise berechnet. Bei einer Überlagerung werden den Pixeln des Vordergrundbildes Transparentwerte zusätzlich zu den RGB-Werten gegeben. Der Wert eines Pixels in dem zusammengesetzten Bild wird aus dem Hintergrundbild genommen, es sei denn, das Vordergrundbild hat einen nichttransparenten Wert bei diesem Punkt. In diesem Fall wird der Wert von dem Vordergrundbild genommen. Daher wird beim Erzeugen eines Bildes eine Bedeckungsinformation aufgezeichnet, so daß der Farbe, die jedem Pixel in dem Bild zugeordnet ist, ein Alphawert (A) gegeben wird, der die Bedeckung des Pixels darstellt. Folglich werden für ein Bild, das ein Vordergrundelement eines zusammengesetzten Bildes werden soll, viele der Pixel mit einer Bedeckung Null registriert, da sie transparent sind; die verbleibenden Pixel, welche den wichtigen Inhalt des Vordergrundpixels aufstellen, haben größere Bedeckungswerte, typischerweise 1. Um somit die Zusammensetzung auf vernünftige Weise durchzuführen, wird die Alphainformation bei jedem Pixel des zusammengesetzten Bildes bereitgestellt, so daß es zusammen mit den RGB-Werten eines Bildes einen Alphawert (A) gibt, der die Bedeckung jedes Pixels codiert.
- Bei Multimediaalgorithmen kann eine Datenparallelität auf viele verschiedene Weisen ausgenutzt werden. Ein möglicher Weg ist es, die gleichen Operationen an allen Elementen einer Farbebene auszuführen. Dieses Verfahren umfaßt das Organisieren der Information für ein Bild in einem Speicher, indem das Bild mittels einer Farbebene gespeichert wird. Folglich werden all die R-Komponenten bei aufeinanderfolgenden Adressen in dem Speicher gespeichert, all die G-Komponenten werden ebenfalls bei aufeinanderfolgenden Adressen gespeichert usw. für die B- und Alpha-Komponenten. An den Komponenten jeder Farbebene eines Bildes muß die gleiche Operation durchgeführt werden. Mit all den Farbkomponenten bei aufeinanderfolgenden Adressen ist es leicht, vier Elemente der R-Ebene in einem einzigen Speicherzugriff zu greifen, und auf gleiche Weise die entsprechenden vier Elemente der Alpha-Ebene in einem einzigen Speicherzugriff zu greifen. Das Ausführen der Operation mittels der Farbebene und das Verwenden einer Multimediaerweiterungstechnik zum parallelen Berechnen an vier Elementen einer vorgegebenen Farbebene ermöglicht die Ausnutzung einer Datenparallelität.
- Ein zweites Verfahren zum Ausnutzen einer Datenparallelität liegt darin, die gleichen Operationen an allen Farbelementen eines Pixels auszuführen. Dieses Verfahren umfaßt das Organisieren der Information für ein Bild in dem Speicher, indem die Information über jedes Bild so gespeichert wird, daß die drei Farbkomponenten R, G und B und die Alpha-Komponente jedes Pixels bei aufeinanderfolgenden Adressen in dem Speicher liegen. Beim Anwenden der Multimediaerweiterungstechnik greift ein Speicherzugriff die RGBA-Komponenten für einen Pixel und führt Operationen an all den repräsentativen Komponenten des Pixels parallel durch.
- Ein weiteres Beispiel für die Ausnutzung von Datenparallelität bei Multimediaanwendungen umfaßt das Manipulieren von Koordinaten von Punkten im Raum. Unter Anwendung dieser Technik wird eine Parallelität ausgenutzt, indem die gleichen Operationen an einer vorgegebenen Koordinate durchgeführt werden, oder indem die gleichen Operationen an allen Punkten des Raumes durchgeführt werden.
- Die hier offenbarten Befehle ermöglichen die parallele Umwandlung von mehreren einfach genauen Gleitkomma-Farbwerten in ein spezielles Ganzzahl-Format. Eine hier beschriebene Anwendung, auf die die Erfindung jedoch nicht beschränkt ist, verwendet die Umwandlungsbefehle für die parallele Umwandlung von Beleuchtungsfunktionsdaten in 3D-Graphiken.
16 ist ein Flußdiagramm für die Beleuchtungsberechnung bei einer 3D-Geometrie, bei der die Befehle einer Ausführungsform verwendet werden. Die Operation beginnt beim Schritt1602 , bei dem eine Lichtintensität berechnet wird. Ein Lichtfarbwert wird beim Schritt1604 für jeden Scheitelpunkt berechnet. Der Lichtfarbwert wird beim Schritt1606 von einem Gleitkomma-Format in ein Ganzzahl-Format umgewandelt, wobei die Gleitkomma-Farbwerte für Rot- (R), Grün- (G) und Blau-(B)-Farbkomponenten in Ganzzahlwerte umgewandelt werden. -
17 ist ein Flußdiagramm für die parallele Umwandlung von mehreren Farbwerten aus einem einfach genauen Gleitkomma-Format in ein spezielles Ganzzahl-Format einer Ausführungsform. Die Operation beginnt beim Schritt1702 , bei dem eine Anzahl an Farbkomponenten in einem Gleitkomma-Format in ein Register eines Satzes an 128-Bit-Register gespeichert wird. Die Gleitkomma-Daten werden in den 128-Bit-Registern in dem gepackten Format gespeichert. Jede der Farbkomponenten in dem Gleitkomma-Format wird beim Schritt1704 in Farbwerte, oder Zahlen, in einem Ganzzahl-Format umgewandelt. Die Zahlen in dem Ganzzahl-Format werden beim Schritt1706 in wenigstens ein Register eines Satzes an 64-Bit-Registern gestellt. Die Ganzzahl-Daten werden in den 64-Bit-Registern in dem gepackten Format gespeichert. Die Farbkomponenten werden für jeden Pixel einer zusammengesetzten Graphik unter Verwendung der Zahlen in dem Ganzzahl-Format aus dem Satz an 64-Bit-Registern zusammengefügt. In einer Ausführungsform stellen die Farbkomponenten in jedem der Register des Satzes an 128-Bit-Registern Werte in der gleichen Farbebene dar. In einer alternativen Ausführungsform stellen die Farbkomponenten in jedem der Register des Satzes an 128-Bit-Registern Farbkomponenten dar, welche eine Farbe eines Pixels definieren. - In einer Ausführungsform wird der zuvor hier diskutierte CVTPS2PI-Befehl dazu verwendet, beim Schritt
1704 die Farbkomponenten in dem Gleitkomma-Format in Farbwerte in einem Ganzzahl-Format umzuwandeln.18a und18b sind Datenflußdiagramme für die Parallelumwandlung von Graphikfarbdaten unter Verwendung des CVTPS2PI-Befehls einer Ausführungsform. In dieser Ausführungsform ist es erforderlich, den Wert von Gleitkomma-Operanden abzuklemmen bzw. auszuschließen bzw. abzufangen, die bei der Umwandlung von Graphikfarbdaten in 8-Bit-Werte ver wendet werden. Dies ist erforderlich, da einige der Datenmanipulationen bedeutungslose Werte erzeugen würden, falls die Gleitkommazahlen größer als 8 Bit breit sein würden. - Unter Verwendung des CVTPS2PI-Befehls umfaßt der Umwandlungsschritt, Schritt
1704 , das Umwandeln1810 erster und zweiter 32-Bit-Farbwerte, die in den niedrigeren 64 Bits1802 –1804 eines 128-Bit-Registers XMM0 angeordnet sind, in erste und zweite 32-Bit-Zahlen in dem Ganzzahlfomat. Nach diesem Schritt werden die dritten und vierten 32-Bit-Farbwerte1806 –1808 , die in den höheren 64 Bits des 128-Bit-Registers XMM0 angeordnet sind, in die niedrigeren 64 Bits des 128-Bit-Registers1802 –1804 verschoben. Die dritten und vierten 32-Bit-Farbwerte werden in dritte und vierte 32-Bit-Zahlen in dem Ganzzahl-Format umgewandelt. In einer Ausführungsform werden die zuvor erwähnten Schritte für jedes der drei 128-Bit-Register XMM0–XMM2 durchgeführt, wobei ein 128-Bit-Register XMM0 Daten für eine Rot-Farbkomponente jeder der vier Pixel, ein 128-Bit-Register XMM1 Daten für eine Grün-Farbkomponente jeder der vier Pixel und ein 128-Bit-Register XMM2 Daten für eine Blau-farbkomponente für jeden der vier Pixel umfaßt. Die Erfindung ist jedoch nicht hierauf beschränkt. In einer alternativen Ausführungsform kann ein viertes 128-Bit-Register (nicht dargestellt) Transparenzdaten für jeden der vier Pixel umfassen. - In einer Ausführungsform umfaßt der Stellschritt, Schritt
1706 , das Stellen der ersten und zweiten 32-Bit-Zahlen1812 –1814 in dem Ganzzahl-Format aus einem ersten 128-Bit-Register XMM0 in ein erstes 64-Bit-Register MM0 und das Stellen der dritten und vierten 32-Bit-Zahlen1816 –1818 in dem Ganzzahl-Format aus dem ersten 128-Bit-Register XMM0 in ein zweites 64-Bit-Register MM3. Die ersten und zweiten 32-Bit-Zahlen in dem Ganzzahl-Format aus einem 128-Bit-Register XMM1 werden in ein drittes 64-Bit-Register MM1 gestellt und die dritten und vierten 32-Bit-Zahlen in dem Ganzzahl-Format aus dem zweiten 128-Bit-Register XMM1 werden in ein viertes 64-Bit-Register MM4 gestellt. Die ersten und zweiten 32-Bit-Zahlen in dem Ganzzahl-Format aus einem dritten 128-Bit-Register XMM2 werden in ein fünftes 64-Bit-Register MM2 gestellt, und die dritten und vier ten 32-Bit-Zahlen in dem Ganzzahl-Format aus dem dritten 128-Bit-Register XMM2 werden in ein sechstes 64-Bit-Register MM5 gestellt. In einer alternativen Ausführungsform werden die ersten und zweiten 32-Bit-Zahlen in dem Ganzzahl-Format aus einem vierten 128-Bit-Register (nicht dargestellt) in ein siebtes 64-Bit-Register (nicht dargestellt) gestellt, und die dritten und vierten 32-Bit-Zahlen in dem Ganzzahl-Format werden aus dem vierten 128-Bit-Register in ein achtes 64-Bit-Register (nicht dargestellt) gestellt. - Der Zusammenfügschritt, Schritt
1708 , umfaßt im allgemeinen das Manipulieren der Inhalte des Satzes an sechs 64-Bit-Registern MM0–MM5, wobei die Manipulation dazu führt, daß jedes 64-Bit-Register die Farbkomponenten umfaßt, die einen Pixel definieren. Genauer gesagt, umfaßt in einer Ausführungsform, nach dem Stellschritt, Schritt1706 , jedes Register des Satzes an sechs 64-Bit-Register MM0–MM5 Daten für eine Farbkomponente jedes der beiden Pixel. Daher umfaßt der Zusammenfügschritt, Schritt1708 , eine logische Kombination der ersten drei Register MM0–MM2 des Satzes an sechs 64-Bit-Registern, wobei die Kombination dazu führt, daß ein erstes kombiniertes 64-Bit-Register1850 drei 8-Bit-Farbkomponenten für sowohl einen ersten1820 –1824 als auch einen zweiten1830 –1834 Pixel umfaßt, wobei die drei 8-Bit-Farbkomponenten die Farbe eines Pixels definieren. Die Inhalte des ersten kombinierten Registers1850 werden in das Register MM0 gestellt. - Die logische Kombination einer Ausführungsform umfaßt das Durchführen einer bitweisen logischen ODER-Verknüpfung
1899 der Inhalte des ersten MM0 und des zweiten MM1 64-Bit-Registers. Die Erfindung ist jedoch nicht hierauf beschränkt. Die bitweise logische ODER-Verknüpfung führt bitweise logische ODER-Verknüpfung an 64 Bits des Ziel- und des Quellenoperanden durch und schreibt das Ergebnis in das Zielregister. Jedes Bit des Ergebnisses wird auf 0 gesetzt, falls die entsprechenden Bits beider Operanden 0 sind; andernfalls wird das Bit gleich 1. Eine bitweise logische ODER-Verknüpfung wird dann an dem Ergebnis der ersten logischen Operation1898 und den Inhalten des dritten 64-Bit-Registers MM2 durchgeführt. Das Ergebnis dieser bei den logischen Operationen ist ein erstes kombiniertes 64-Bit-Register1850 , das drei 8-Bit-Farbkomponenten für sowohl einen ersten1820 –1824 als auch einen zweiten1830 –1834 Pixel umfaßt. - Darüber hinaus wird eine logische Kombination der zweiten drei Register MM3–MM5 des Satzes an sechs 64-Bit-Registern MM0–MM5 durchgeführt, wobei die Kombination dazu führt, daß ein zweites kombiniertes 64-Bit-Register
1852 drei 8-Bit-Farbkomponenten für sowohl einen dritten als auch einen vierten Pixel umfaßt. Die logische Kombination der zweiten drei Register MM3–MM5 einer Ausführungsform umfaßt das Durchführen einer bitweisen logischen ODER-Verknüpfung der Inhalte des vierten MM3 und des fünften MM4 64-Bit-Registers. Die Erfindung ist jedoch nicht hierauf beschränkt. Eine bitweise logische ODER-Verknüpfung wird anschließend an dem Ergebnis dieser dritten logischen Operation1897 und den Inhalten des sechsten 64-Bit-Registers MM5 durchgeführt. Das Ergebnis dieser beiden logischen Operationen ist ein zweites kombiniertes 64-Bit-Register1852 , das drei 8-Bit-Farbkomponenten für sowohl einen dritten als auch einen vierten Pixel umfaßt. Die Inhalte des zweiten kombinierten Registers1852 werden in ein Register MM3 gestellt. In einer alternativen Ausführungsform können Transparenzdaten zusammen mit den R-, G-, B-Daten eines Pixels manipuliert werden, wobei die beiden verbleibenden 8-Bit-Slots der kombinierten 64-Bit-Register Transparenzdaten für den entsprechenden Pixel umfassen werden. - In einer Ausführungsform wird der hier zuvor diskutierte CVTPS2PW-Befehl dazu verwendet, beim Schritt
1704 die Farbkomponenten in dem Gleitkomma-Format in Farbwerte in einem Ganzzahl-Format umzuwandeln.19a und19b sind Datenflußdiagramme der parallelen Umwandlung von Graphikfarbdaten unter Verwendung des CVTPS2PW-Befehls einer Ausführungsform. In dieser Ausführungsform ist es erforderlich, den Wert von Gleitkomma-Operanden -abzufangen, die bei der Umwandlung von Graphikfarbdaten in 8-Bit-Werte verwendet werden. Dies ist erforderlich, da einige der Datenmanipulationen bedeutungslose Werte erzeugen würden, falls die Gleitkomma-Daten größer als 8 Bit breit wären. - Unter Verwendung dieses Befehls umfaßt der Umwandlungsschritt, Schritt
1704 , das Umwandeln von vier 32-Bit-Farbkomponenten1902 –1908 , die in einem 128-Bit-Register XMM0 angeordnet sind, in vier 16-Bit-Zahlen1912 –1918 , oder Farbkomponenten, in einem 64-Bit-Register MM0. In einer Ausführungsform werden die zuvor erwähnten Schritte für jedes der drei 128-Bit-Register XMM0–XMM2 durchgeführt, wobei ein 128-Bit-Register XMM0 Daten für eine Rot-Farbkomponente für jeden der vier Pixel umfaßt, ein 128-Bit-Register XMM1 Daten für eine Grün-Farbkomponente für jeden der vier Pixel umfaßt und ein 128-Bit-Register XMM2 Daten für eine Blau-Farbkomponente für jeden der vier Pixel umfaßt. Die Erfindung ist jedoch nicht hierauf beschränkt. In einer alternativen Ausführungsform kann ein viertes 128-Bit-Register (nicht dargestellt) Transparenzdaten für jeden der vier Pixel umfassen. In einer anderen alternativen Ausführungsform kann jedes Register eines Satzes an drei 128-Bit-Register Daten für die Farbkomponenten eines Pixels umfassen, und jedes Register des Satzes an drei 64-Bit-Registern kann Daten für die Farbkomponenten umfassen, welche einen Pixel definieren. - Der Stellschritt, Schritt
1706 , umfaßt das Stellen der vier 16-Bit-Zahlen, oder Farbkomponenten, in dem Ganzzahl-Format in ein 64-Bit-Register. Daher umfaßt in einer ersten Ausführungsform ein erstes 64-Bit-Register MM0, das einem ersten 128-Bit-Register XMM0 entspricht, die Rot-Komponentendaten für jeden der vier Pixel. Ein zweites 64-Bit-Register MM1, das einem zweiten 128-Bit-Register XMM1 entspricht, umfaßt die Grün-Komponentendaten für jeden der vier Pixel und ein drittes 64-Bit-Register MM2, das einem dritten 128-Bit-Register XMM2 entspricht, umfaßt die Blau-Komponentendaten für jeden der vier Pixel. Die Erfindung ist jedoch nicht hierauf beschränkt. - Der Zusammenfügschritt, Schritt
1708 , umfaßt im allgemeinen das Manipulieren der Inhalte des Satzes an drei 64-Bit-Registern MM0–MM2 wobei die Manipulation zu zwei 64-Bit-Registern1998 –1999 führt, die jeweils die Farbkomponenten umfassen, die den jeweiligen Pixel der beiden Pixel definieren. In einer Ausführungsform umfaßt die Manipulation die logische Kombination von zwei Registern MM0–MM1 des Satzes an drei 64-Bit-Registern MM0–MM2, wobei die Kombination zu einem ersten MM4 und einem zweiten MM5 kombinierten 64-Bit-Register führt. Das erste kombinierte Register MM4 umfaßt eine erste und eine zweite 8-Bit-Farbkomponente für sowohl einen ersten als auch einen zweiten Pixel und das zweite kombinierte Register MM5 umfaßt eine erste und eine zweite 8-Bit-Farbkomponente für sowohl einen dritten als auch einen vierten Pixel. Ein drittes kombiniertes 64-Bit-Register MM3 wird erzeugt, indem eine Auspackoperation1920 an den niedrigeren 32-Bits des dritten 64-Bit-Registers MM2 durchgeführt wird, wobei das dritte kombinierte Register MM3 einen dritten 8-Bit-Farbwert für sowohl den ersten als auch den zweiten Pixel umfaßt. Ein viertes kombiniertes 64-Bit-Register MM6 wird erzeugt, indem eine Auspackoperation1922 an den höheren 32-Bits des dritten 64-Bit-Registers MM2 durchgeführt wird, wobei das vierte kombinierte Register MM6 einen dritten 8-Bit-Farbwert für sowohl den dritten als auch den vierten Pixel umfaßt. - Genauer gesagt, umfaßt in einer Ausführungsform nach dem Stellschritt, Schritt
1706 , jedes Register des Satzes an drei 64-Bit-Registern Daten für eine Farbkomponente jedes der vier Pixel. Daher umfaßt der Zusammenfügschritt, Schritt1708 , die Ergebnisse des Zusammenfügschrittes für die Rot- und Grün-Farbkomponente von vier Pixeln, die Ergebnisse des Zusammenfügschrittes für die Blau-Farbkomponenten von vier Pixeln und den Zusammensetzschritt der Rot-, Grün- und Blau-Komponenten zum Ausbilden zweier 64-Bit-Register, wobei jedes Register die Daten für die Farbkomponenten umfassen, welche den jeweiligen Pixel der beiden Pixel definieren. - Der Schritt zum Zusammenfügen der Ergebnisse für die Rot- und Grün-Farbkomponenten von vier Pixeln umfaßt das Durchführen einer bitweisen logischen ODER-Verknüpfung der Inhalte des ersten MM0 und des zweiten MM1 64-Bit-Registers des Satzes an drei 64-Bit-Registern. Das resultierende 64-Bit-Register
1950 umfaßt acht 8-Bit-Zahlen, oder Farbkomponenten, wobei vier 8-Bit-Zahlen Daten für die Rot-Farbkomponente jedes von vier Pixeln umfaßt und vier 8-Bit-Zahlen Daten für die Grün-Farbkomponente jedes der vier Pixel umfaßt. Die Erfindung ist jedoch nicht hierauf beschränkt. In einer Ausführungsform werden die Inhalte des resultierenden 64-Bit-Registers1950 für das erste 64-Bit-Register MM0 des Satzes an drei 64-Bit-Registern ersetzt. Eine Auspackoperation, (packe niedrig vom Wort zum Doppelwort aus)1952 wird an den niedrigeren 32 Bits des resultierenden 64-Bit-Registers1950 durchgeführt, um ein erstes kombiniertes 64-Bit-Register MM4 zu erzeugen, das Daten für die Rot-Farbkomponente und die Grün-Farbkomponente sowohl eines ersten als auch eines zweiten Pixels umfaßt. Eine Auspackoperation verschachtelt Daten, indem ein Operand aus einem Register und ein Operand aus einer entsprechenden Stelle in einem anderen Register genommen wird und beide Operanden nebeneinander in ein Register gestellt werden. Eine Auspackoperation (packe hoch vom Wort zum Doppelwart aus)1954 wird an den höheren 32-Bits des resultieren 64-Bit-Registers1950 durchgeführt, um ein zweites kombiniertes 64-Bit-Register MM5 zu erzeugen, das Daten für die Rot-Farbkomponenten und die Grün-Farbkomponente für sowohl einen dritten als auch einen vierten Pixel umfaßt. - Der Schritt zum Zusammenfügen der Ergebnisse der Blau-Farbkomponenten von vier Pixeln umfaßt das Durchführen einer Auspackoperation (packe niedrig vom Wort zum Doppelwort aus)
1920 an den niedrigeren 32-Bits des dritten 64-Bit-Registers MM2, um ein drittes kombiniertes 64-Bit-Register MM3 zu erzeugen, das Daten für die Blau-Farbkomponenten für sowohl einen ersten als auch einen zweiten Pixel umfaßt. Eine Auspackoperation (packe hoch vom Wort zum Doppelwort aus)1922 wird an den höheren 32-Bits des dritten 64-Bit-Registers MM2 durchgeführt, um ein viertes kombiniertes 64-Bit-Register MM6 zu erzeugen, das Daten für die Blau-Farbkomponenten für sowohl einen dritten als auch einen vierten Pixel umfaßt. - Der Schritt zum Zusammensetzen der Rot- Grün und Blaukomponenten zum Ausbildern zweier 64-Bit-Register
1998 –1999 umfaßt das Durchführen einer ersten logischen ODER-Verknüpfung1924 des ersten MM4 und des dritten MM3 kombinierten 64-Bit-Registers, um ein erstes Graphikregister1998 zu erzeugen, und das Durchführen einer zweiten logischen ODER-Verknüpfung1926 des zwei ten MM5 und des vierten MM6 kombinierten 64-Bit-Registers, um ein zweites Graphikregister1999 zu erzeugen. Das erste Graphikregister1998 umfaßt drei 8-Bit-Farbkomponenten, die sowohl einen ersten1930 als auch einen zweiten1932 Pixel definieren. Das zweite Graphikregister1999 umfaßt drei 8-Bit-Farbkomponenten, die sowohl einen dritten1934 als auch einen vierten1936 Pixel definieren. - In einer Ausführungsform wird der hier zuvor diskutierte CVTPS2PB-Befehl dazu verwendet, die beim Schritt
1704 die Farbkomponenten in dem Gleitkomma-Format in Farbwerte in einem Ganzzahl-Format umzuwandeln.20a und20b sind Datenflußdiagramme für die parallele Umwandlung von Graphikfarbdaten unter Verwendung des CVTPS2PB-Befehls einer Ausführungsform. Unter Verwendung dieses Befehls umfaßt der Umwandlungsschritt, Schritt1704 , das Umwandeln von vier 32-Bit-Farbkomponenten2002 –2008 , die in einem 128-Bit-Register XMM0 angeordnet sind, in vier 8-Bit-Zahlen2012 –2018 , oder Farbkomponenten, in einem 64-Bit-Register MM0. In einer Ausführungsform werden die zuvor erwähnten Schritte für jedes der drei 128-Bit-Register XMM0–XMM2 durchgeführt, wobei ein 128-Bit-Register XMM0 Daten für eine Rot-Farbkomponente jedes der vier Pixel umfaßt, ein 128-Bit-Register XMM1 Daten für eine Grün-Farbkomponente jedes von vier Pixeln umfaßt und ein 128-Bit-Register XMM2 Daten für eine Blau-Farbkomponente jedes von vier Pixeln umfaßt. Die Erfindung ist jedoch nicht hierauf beschränkt. In einer alternativen Ausführungsform kann ein viertes 128-Bit-Register (nicht dargestellt) Transparenzdaten für jedes von vier Pixeln umfassen. In einer anderen alternativen Ausführungsform kann jedes Register eines Satzes an drei 128-Bit-Registern Daten für die Farbkomponenten eines Pixels umfassen, und jedes Register des Satzes an drei 64-Bit-Registern kann Daten für die Farbkomponenten umfassen, die einen Pixel definieren. - Der Stellschritt, Schritt
1706 , umfaßt das Stellen der vier 8-Bit- Zahlen, oder Farbkomponenten, in dem Ganzzahl-Format in ein 64-Bit-Register. Daher umfaßt in einer Ausführungsform ein erstes 64-Bit-Register MM0, das einem ersten 128-Bit-Register XMM0 entspricht, die Rot-Komponentendaten für jedes von vier Pixeln, ein zweites 64-Bit-Register MM1, das einen zweiten 128-Bit-Register XMM1 entspricht, umfaßt die Grün-Komponentendaten für jedes der vier Pixel und ein drittes 64-Bit-Register MM2, das einem dritten 128-Bit-Register XMM2 entspricht, umfaßt die Blau-Komponentendaten für jedes der vier Pixel. Die Erfindung ist jedoch nicht hierauf beschränkt. - Der Zusammenfügschritt, Schritt
1708 , umfaßt im allgemeinen das Manipulieren der Inhalte des Satzes an drei 64-Bit-Registern MM0–MM2, wobei die Manipulation zu zwei 64-Bit-Registern2098 –2099 führt, von denen jedes die Farbkomponenten umfaßt, die den jeweiligen Pixel von zwei Pixeln definieren. In einer Ausführungsform umfaßt die Manipulation die logische Kombination von zwei Registern MM0–MM1 des Satzes an drei 64-Bit-Registern MM0–MM2, wobei die Kombination zu einem ersten MM4 und einem zweiten MM5 kombinierten 64-Bit-Register führt. Das erste kombinierte Register MM4 umfaßt eine erste und eine zweite 8-Bit-Farbkomponente für sowohl einen ersten als auch einen zweiten Pixel, und das zweite kombinierte MM5 Register umfaßt eine erste und eine zweite 8-Bit-Farbkomponente für sowohl einen dritten als auch einen vierten Pixel. Ein drittes MM3 und ein viertes MM6 kombiniertes 64-Bit-Register werden aus der logischen Kombination eines Registers MM2 des Satzes an drei 64-Bit-Registern und eines vierten 64-Bit-Registers1910 erzeugt, das logische Nullen enthält. Das dritte kombinierte Register MM3 umfaßt eine dritte 8-Bit-Farbkomponente für sowohl den ersten als auch den zweiten Pixel, und das vierte kombinierte Register MM6 umfaßt eine dritte 8-Bit-Farbkomponente für sowohl den dritten als auch den vierten Pixel. - Eine logische Kombination des ersten MM4 und dritten MM3 kombinierten Registers führt zu einem ersten 64-Bit-Graphikregister
2098 . Das erste Graphikregister2098 umfaßt drei 8-Bit-Farbkomponenten2030 , die eine Farbe eines ersten Pixels definieren, und drei 8-Bit-Farbkomponenten2032 , die eine Farbe eines zweiten Pixels definieren. Eine logische Kombination des zweiten MM5 und vierten MM6 kombinierten Registers führt zu einem zweiten 64-Bit-Graphikregister2099 ; das zweite Graphikregister2099 umfaßt drei 8-Bit-Farbkomponenten2034 , die eine Farbe eines dritten Pixels definieren, und drei 8-Bit-Farbkomponenten2036 , die eine Farbe eines vierten Pixels definieren. In einer alternativen Ausführungsform kann jedes der kombinierten Register zwei 8-Bit-Transparenzkomponenten für jeden der entsprechenden Pixel umfassen, und jedes der Graphikregister kann eine 8-Bit-Transparenzkomponente umfassen, entsprechend jedem dargestellten Pixel. - Genauer gesagt, kann in einer Ausführungsform nach dem Stellschritt, Schritt
1706 , jedes Register des Satzes an drei 64-Bit-Registern MM0–MM2 Daten für eine Farbkomponente für jeden Pixel von vier Pixeln umfassen. Daher umfaßt der Zusammenfügschritt, Schritt1708 , den Schritt zum Zusammenfügen von Ergebnissen für die Rot- und Grün-Farbkomponenten von vier Pixeln, den Schritt zum Zusammenfügen von Ergebnissen für die Blau-Farbkomponenten von vier Pixeln, und der Schritt zum Zusammensetzen der Rot- Grün- und Blau-Komponenten zum Ausbilden zweier 64-Bit-Register2098 –2099 , wobei jedes Register die Daten für die Farbkomponenten umfaßt, die den jeweiligen Pixel von zwei Pixeln definieren. - Der Schritt zum Zusammenfügen der Ergebnisse für die Rot- und Grün-Farbkomponenten von vier Pixeln umfaßt das Durchführen einer Auspackoperation (packe niedrig vom Byte zum Wort aus)
2056 an den Inhalten des ersten MM0 und des zweiten MM1 64-Bit-Registers des Satzes an drei 64-Bit-Registern MM0–MM2. Das resultierende 64-Bit-Register2050 umfaßt acht 8-Bit-Zahlen, oder Farbkomponenten, wobei vier 8-Bit-Zahlen Daten für die Rot-Farbkomponente jedes von vier Pixeln umfaßt, und vier 8-Bit-Zahlen Daten für die Grün-Farbkomponente jedes der vier Pixel umfaßt. Die Erfindung ist jedoch nicht hierauf beschränkt. In einer Ausführungsform werden die Inhalte des resultierenden 64-Bit-Registers2050 für das erste 64-Bit-Register MM0 des Satzes an drei 64-Bit-Registern MM0–MM2 ersetzt. Eine Auspackoperation (packe niedrig vom Wort zum Doppelwort aus)2052 wird an den niedrigeren 32-Bits des resultierenden 64-Bit-Registers2050 durchgeführt, um ein erstes kombiniertes 64-Bit-Register MM4 zu erzeugen, das Daten für die Rot-Farbkomponente und die Grün-Farbkomponente sowohl eines ersten Pixels als auch eines zwei ten Pixels umfaßt. Eine Auspackoperation (packe hoch vom Wort zum Doppelwort aus)2054 wird an den höheren 32-Bits des resultierenden 64-Bit-Registers2050 durchgeführt, um ein zweites kombiniertes 64-Bit-Register MM5 zu erzeugen, das Daten für die Rot-Farbkomponente und Grün-Farbkomponente sowohl eines dritten als auch eines vierten Pixels umfaßt. - Der Schritt zum Zusammenfügen der Ergebnisse für die Blau-Farbkomponenten von vier Pixeln umfaßt das Durchführen einer Auspackoperation (packe niedrig vom Byte zum Wort aus)
2058 an den Inhalten des dritten 64-Bit-Registers und eines vierten 64-Bit-Registers MM3, welches logische Nullen enthält. Das resultierende 64-Bit-Register2060 umfaßt vier 8-Bit-Zahlen, die die Daten für die Blau-Komponente jedes der vier Pixel sind. In einer Ausführungsform werden die Inhalte des resultierenden 64-Bit-Registers2060 für das dritte 64-Bit-Register MM2 des Satzes an drei 64-Bit-Registern MM0–MM2 ersetzt. Eine Auspackoperation (packe niedrig vom Wort zum Doppelwort aus)2062 wird an den niedrigeren 32 Bits des resultierenden 64-Bit-Registers2060 durchgeführt; das Ergebnis des Auspacken ersetzt die Inhalte des vierten 64-Bit-Registers MM3, wobei das vierte 64-Bit-Register MM3 nunmehr Daten für die Blau-Farbkomponente sowohl eines ersten als auch eines zweiten Pixels umfaßt. Eine Auspackoperation (packe hoch vom Wort zum Doppelwort aus)2064 wird an den höheren 32 Bits des resultierenden 64-Bit-Registers2060 durchgeführt, um ein siebtes 64-Bit-Register MM6 zu erzeugen, das Daten für die Blau-Farbkomponente sowohl eines dritten als auch eines vierten Pixels umfaßt. - Der Schritt zum Zusammensetzen der Rot-, Grün- und Blau-Komponenten zum Ausbilden zweier 64-Bit-Register
2098 –2099 umfaßt das Durchführen einer ersten logischen ODER-Verknüpfung2070 des ersten MM4 und des dritten MM3 kombinierten 64-Bit-Registers, um ein erstes Graphikregister2098 zu erzeugen, und das Durchführen einer zweiten logischen ODER-Verknüpfung2072 des zweiten MM5 und des vierten MM6 kombinierten 64-Bit-Registers, um ein zweites Graphikregister2099 zu erzeugen. Das erste Graphikregister2098 umfaßt drei 8-Bit-Farbkomponenten, die sowohl einen ersten2030 als auch einen zweiten2032 Pixel definieren. Das zweite Graphikregister2099 umfaßt drei 8-Bit-Farbkomponenten, die sowohl einen dritten2034 als auch einen vierten2036 Pixel definieren. - Während die Erfindung mit Bezug auf spezielle beispielhafte Ausführungsformen beschrieben worden ist, ist es selbstverständlich, daß zahlreiche Modifikationen und Änderungen an diesen Ausführungsformen durchgeführt werden können, ohne den breiteren Geist und Umfang der Erfindung zu verlassen, wie er in den Ansprüchen dargelegt ist. Dementsprechend sollen die Beschreibung und die Zeichnung lediglich beispielhaft anstatt in einer beschränkenden Weise angesehen werden.
Claims (50)
- Verfahren zum Parallelverarbeiten von Graphikdaten, wobei das Verfahren die folgenden Schritte umfaßt: Speichern einer Vielzahl an Farbkomponenten in einem ersten Format in wenigstens einem Register eines Satzes an ersten Registern in dem gepackten Format; Stellen der Vielzahl an Farbkomponenten in einem Ganzzahl-Format in wenigstens ein Register eines Satzes an 64-Bit-Registern in dem gepackten Format; und Zusammenfügen von Farbkomponenten für jeden Pixel einer Vielzahl an Pixeln aus der Vielzahl an Zahlen in dem Ganzzahl-Format in dem wenigstens einen Register eines Satzes an 64-Bit-Registern, wobei die obigen Operationen mittels eines Mikroprozessors in Antwort auf wenigstens einen Befehl ausgeführt werden; dadurch gekennzeichnet, dass das erste Format ein Gleitkomma-Format ist und die ersten Register 128-Bit-Register sind und das Verfahren zwischen dem Speicher- und dem Stellschritt in Antwort auf den wenigstens einen Befehl weiter den folgenden Schritt umfasst; Umwandeln der Vielzahl an Farbkomponenten in dem Gleitkomma-Format in eine Vielzahl an Farbkomponenten in einem Ganzzahl-Format.
- Verfahren nach Anspruch 1, bei welchem die Farbkomponenten in jedem des wenigstens einen Registers eines Satzes an 128-Bit-Registern Werte in der gleichen Farbebene darstellen.
- Verfahren nach Anspruch 1, bei welchem die Farbkomponenten in jedem des wenigstens einen Registers eines Satzes an 128-Bit-Registern Farbkomponenten darstellen, die eine Farbe eines Pixels definieren.
- Verfahren nach Anspruch 1, bei welchem der Umwandlungsschritt die folgenden Schritte umfaßt: Umwandeln von ersten und zweiten 32-Bit-Farbwerten, die in den niedrigeren 64 Bits eines 128-Bit-Registers angeordnet sind, in erste und zweite 32-Bit-Zahlen in dem Ganzzahl-Format; Verschieben von dritten und vierten 32-Bit-Farbwerten, die in den höheren 64 Bits des 128-Bit-Registers angeordnet sind, zu den niedrigeren 64 Bits des 128-Bit-Registers; und Umwandeln der dritten und vierten 32-Bit-Farbwerte in dritte und vierte 32-Bit-Zahlen in dem Ganzzahl-Format.
- Verfahren nach Anspruch 4, bei welchem der Stellschritt die folgenden Schritte umfaßt: Stellen der ersten und zweiten 32-Bit-Zahlen in dem Ganzzahl-Format in ein erstes 64-Bit-Register; und Stellen der dritten und vierten 32-Bit-Zahlen in dem Ganzzahl-Format in ein zweites 64-Bit-Register.
- Verfahren nach Anspruch 5, bei welchem der Zusammenfügschritt das Manipulieren der Inhalte des Satzes an 64-Bit-Registern umfaßt, wobei die Manipulation dazu führt, daß jedes 64-Bit-Register eine Vielzahl an Farbkomponenten eines Pixels umfaßt.
- Verfahren nach Anspruch 5, bei welchem jedes Register eines Satzes an sechs 64-Bit-Registern Daten für eine Farbkomponente für jeden Pixels von zwei Pixeln umfaßt.
- Verfahren nach Anspruch 7, bei welchem ein siebtes und ein achtes 64-Bit-Register jeweils Transparenzdaten für jeden Pixel von zwei Pixeln umfaßt.
- Verfahren nach Anspruch 7, bei welchem der Zusammenfügschritt die folgenden Schritte umfaßt: logisches Kombinieren von ersten drei Registern des Satzes an sechs 64-Bit-Registern, wobei die Kombination dazu führt, daß ein erstes kombiniertes 64-Bit-Register drei 8-Bit-Farbkomponenten für sowohl einen ersten als auch einen zweiten Pixel umfaßt; logisches Kombinieren von zweiten drei Registern des Satzes an sechs 64-Bit-Registern, wobei die Kombination dazu führt, daß ein zweites kombiniertes 64-Bit-Register drei 8-Bit-Farbkomponenten für sowohl einen dritten als auch einen vierten Pixel umfaßt.
- Verfahren nach Anspruch 1, bei welchem der Umwandlungsschritt das Umwandeln von vier 32-Bit-Farbkomponenten, die in einem 128-Bit-Register angeordnet sind, in vier 16-Bit-Zahlen in einem 64-Bit-Register umfaßt.
- Verfahren nach Anspruch 10, bei welchem jedes Register eines Satzes an drei 128-Bit-Registern Daten für eine Farbkomponente für jeden Pixel von vier Pixeln umfaßt, wobei jedes Register eines Satzes an drei 64-Bit-Registern Daten für eine Farbkomponente für jeden Pixel von vier Pixeln umfaßt.
- Verfahren nach Anspruch 11, bei welchem ein viertes 128-Bit-Register und ein viertes 64-Bit-Register jeweils Transparenzdaten für jeden Pixel von vier Pixeln umfassen.
- Verfahren nach Anspruch 10, bei welchem jedes Register eines Satzes an drei 128-Bit-Registern Daten für eine Vielzahl an Farbkomponenten eines Pixels umfassen, wobei jedes Register eines Satzes an drei 64-Bit-Registern Daten für eine Vielzahl an Farbkomponenten eines Pixels umfassen, wobei die Daten für eine Vielzahl an Farbkomponenten eine Pixelfarbe definieren.
- Verfahren nach Anspruch 11, bei welchem der Stellschritt das Stellen der vier 16-Bit-Zahlen in dem Ganzzahl-Format in ein 64-Bit-Register umfaßt.
- Verfahren nach Anspruch 14, bei welchem der Zusammenfügschritt das Manipulieren der Inhalte des Satzes an 64-Bit-Registern umfaßt, wobei die Manipulation dazu führt, daß jedes 64-Bit-Register eine Vielzahl an Farbkomponenten umfaßt, die eine Farbe eines Pixels definieren.
- Verfahren nach Anspruch 15, bei welchem die Manipulation die folgenden Schritte umfaßt: logisches Kombinieren zweier Register des Satzes an drei 64-Bit-Registern, wobei die Kombination zu einem ersten und einem zweiten kombinierten 64-Bit-Register führt, wobei das erste kombinierte Register eine erste und eine zweite 8-Bit-Farbkomponente für sowohl einen ersten als auch einen zweiten Pixel umfaßt, und das zweite kombinierte Register eine erste und eine zweite 8-Bit-Farbkomponente für sowohl einen dritten als auch einen vierten Pixel umfaßt; Erzeugen eines dritten und eines vierten kombinierten 64-Bit-Registers, wobei das dritte kombinierte Register eine dritte 8-Bit-Farbkomponente für sowohl den ersten Pixel als auch den zweiten Pixel umfaßt, wobei das vierte kombinierte Register eine dritte 8-Bit-Farbkomonente für sowohl den dritten Pixel als auch den vierten Pixel umfaßt; logisches Kombinieren des ersten und des dritten kombinierten Registers, wobei die Kombination zu einem ersten 64-Bit-Graphikregister führt, und das erste Graphikregister drei 8-Bit-Farbkomponenten, die eine Farbe eines ersten Pixels definieren, und drei 8-Bit-Farbkomponenten umfaßt, die eine Farbe eines zweiten Pixels definieren; logisches Kombinieren des zweiten und des vierten kombinierten Registers, wobei die Kombination zu einem zweiten 64-Bit-Graphikregister führt, und das zweite Graphikregister drei 8-Bit-Farbkomponenten, die eine Farbe eines dritten Pixels definieren, und drei 8-Bit-Farbkomponenten umfaßt, die eine Farbe eines vierten Pixels definieren.
- Verfahren nach Anspruch 16, bei welchem jedes der kombinierten Register zwei 8-Bit-Transparentkomponenten für sowohl einen ersten als auch einen zweiten Pixel umfassen, wobei jedes der Graphikregister eine 8-Bit-Transparenzkomponente umfaßt.
- Verfahren nach Anspruch 1, bei welchem der Umwandlungsschritt das Umwandeln von vier 32-Bit-Farbkomponenten, die in einem 128-Bit-Register angeordnet sind, in vier 8-Bit-Zahlen in einem 64-Bit-Register umfaßt.
- Verfahren nach Anspruch 18, bei welchem jedes Register eines Satzes an drei 128-Bit-Registern Daten für eine Farbkomponente für jeden Pixel von vier Pixeln umfaßt, wobei jedes Register eines Satzes an drei 64-Bit-Registern Daten für eine Farbkomponente für jeden Pixel von vier Pixeln umfaßt.
- Verfahren nach Anspruch 19, bei welchem ein viertes 128-Bit-Register und ein viertes 64-Bit-Register jeweils Transparenzdaten für jeden Pixel von vier Pixeln umfassen.
- Verfahren nach Anspruch 18, bei welchem jedes Register eines Satzes an drei 128-Bit-Registern Daten für eine Vielzahl an Farbkomponenten eines Pixels umfassen, wobei jedes Register eines Satzes an drei 64-Bit-Registern Daten für eine Vielzahl an Farbkomponenten eines Pixels umfassen, und die Daten für eine Vielzahl an Farbkomponenten eine Pixelfarbe definieren.
- Verfahren nach Anspruch 19, bei welchem der Stellschritt das Stellen der vier 8-Bit-Zahlen in dem Ganzzahl-Format in ein 64-Bit-Register umfaßt.
- Verfahren nach Anspruch 14, bei welchem der Zusammenfügschritt das Manipulieren der Inhalte des Satzes an 64-Bit-Registern umfaßt, wobei die Manipulation dazu führt, daß jedes 64-Bit-Register eine Vielzahl an Farbkomponenten umfaßt, die eine Farbe für jeden Pixel von zwei Pixeln definieren.
- Verfahren nach Anspruch 23, bei welchem die Manipulation die folgenden Schritte umfaßt: logisches Kombinieren zweier Register des Satzes an drei 64-Bit-Registern, wobei die Kombination zu einem ersten und einem zweiten kombinierten 64-Bit-Register führt, und das erste kombinierte Register eine erste und eine zweite 8-Bit-Farbkomponente für sowohl einen ersten als auch einen zweiten Pixel umfaßt, und das zweite kombinierte Register eine erste und eine zweite 8-Bit-Farbkomponente für sowohl einen dritten als auch einen vierten Pixel umfaßt; logisches Kombinieren eines Registers des Satzes an drei 64-Bit-Registern mit einem 64-Bit-Register, das logische Nullen enthält, wobei die Kombination zu einem dritten und einem vierten kombinierten 64-Bit-Register führt, wobei das dritte kombinierte Register eine dritte 8-Bit-Farbkomponente für sowohl den ersten als auch den zweiten Pixel umfaßt, und das vierte kombinierte Register eine dritte 8-Bit-Farbkomponente für sowohl den dritten als auch den vierten Pixel umfaßt; logisches Kombinieren des ersten und des dritten kombinierten Registers, wobei die Kombination zu einem ersten 64-Bit-Graphikregister führt, und das erste Graphikregister drei 8-Bit-Farbkomponenten, die eine Farbe eines ersten Pixels definieren, und drei 8-Bit-Farbkomponenten umfaßt, die eine Farbe eines zweiten Pixels definieren; und logisches Kombinieren des zweiten und des vierten kombinierten Registers, wobei die Kombination zu einem zweiten 64-Bit-Graphikregister führt, und das zweite Graphikregister drei 8-Bit-Farbkomponenten, die eine Farbe eines dritten Pixels, und drei 8-Bit-Farbkomponenten umfaßt, die eine Farbe eines vierten Pixels definieren.
- Verfahren nach Anspruch 24, bei welchem jedes der kombinierten Register eine 8-Bit-Transparenzkomponente für jeden entsprechenden Pixel umfaßt, wobei jedes der Graphikregister eine 8-Bit-Transparenzkomponente umfaßt, entsprechend jedem dargestellten Pixel.
- Verfahren nach Anspruch 1, bei welchem der Umwandlungsschritt die folgenden Schritte umfaßt: Zugreifen auf Rundungmodusbits aus einem Register, das einen Umwandlungsbefehl enthält; und Runden der wenigstens einen Zahl in dem Ganzzahl-Format entsprechend einem Rundungsmodus, der von den Rundungmodusbits angezeigt wird.
- Verfahren nach Anspruch 1, bei welchem das Gleitkomma-Format ein einfach genaues 32-Bit-Gleitkomma-Format ist, und bei welchem das Ganzzahl-Format ein 32-Bit-Ganzzahl-Format ist.
- Wenigstens ein Befehl zum Parallelverarbeiten von Graphikdaten, der bei Ausführung einen Computer veranlaßt, die folgenden Schritte durchzuführen: Speichern einer Vielzahl an Farbkomponenten in einem ersten Format in wenigstens einem Register eines Satzes an ersten Registern in dem gepackten Format; Stellen der Vielzahl an Farbkomponenten in einem Ganzzahl-Format in wenigstens ein Register eines Satzes an 64-Bit-Registern in dem gepackten Format; und Zusammenfügen von Farbkomponenten für jeden Pixel einer Vielzahl an Pixeln aus der Vielzahl an Zahlen in dem Ganzzahl-Format in dem wenigstens einen Register eines Satzes an 64-Bit-Registern; dadurch gekennzeichnet, dass das erste Format ein Gleitkomma-Format ist und die ersten Register 128-Bit-Register sind und das Verfahren zwischen dem Speicher- und dem Stellschritt weiter den folgenden Schritt umfasst: Umwandeln der Vielzahl an Farbkomponenten in dem Gleitkomma-Format in eine Vielzahl an Farbkomponenten in einem Ganzzahl-Format.
- Der wenigstens eine Befehl nach Anspruch 28, bei welchem der Umwandlungsschritt die folgenden Schritte umfaßt: Umwandeln eines ersten und eines zweiten 32-Bit-Farbwertes, die in den niedrigeren 64 Bits eines 128-Bit-Registers angeordnet sind, in eine erste und eine zweite 32-Bit-Zahl in dem Ganzzahl-Format; Verschieben von dritten und vierten 32-Bit-Farbwerten, die in den höheren 64 Bits des 128-Bit-Registers angeordnet sind, in die niedrigeren 64 Bits des 128-Bit-Registers; und Umwandeln des dritten und des vierten 32-Bit-Farbwertes in dritte und vierte 32-Bit-Zahlen in dem Ganzzahl-Format.
- Der wenigstens eine Befehl nach Anspruch 29, bei welchem der Stellschritt die folgenden Schritte umfaßt: Stellen der ersten und der zweiten 32-Bit-Zahlen in dem Ganzzahl-Format in ein erstes 64-Bit-Register; und Stellen der dritten und vierten 32-Bit-Zahlen in dem Ganzzahl-Format in ein zweites 64-Bit-Register.
- Der wenigstes eine Befehl nach Anspruch 30, bei welchem der Zusammenfügschritt das Manipulieren der Inhalte des Satzes an 64-Bit-Registern umfaßt; wobei die Manipulation dazu führt, daß jedes 64-Bit-Register eine Vielzahl an Farbkomponenten eines Pixels umfaßt.
- Der wenigstens eine Befehl nach Anspruch 30, bei welchem jedes Register eines Satzes an sechs 64-Bit-Registern Daten für eine Farbkomponente für jeden Pixel von zwei Pixeln umfaßt, wobei der Zusammenfügschritt die folgenden Schritte umfaßt: logisches Kombinieren von ersten drei Registern des Satzes an sechs 64-Bit-Registern, wobei die Kombination zu einem ersten kombinierten 64-Bit-Register führt, das drei 8-Bit-Farbkomponenten für sowohl einen ersten als auch einen zweiten Pixel umfaßt; logisches Kombinieren von zweiten drei Registern des Satzes an sechs 64-Bit-Registern, wobei die Kombination zu einem zweiten kombinierten 64-Bit-Register führt, das drei 8-Bit-Farbkomponenten für sowohl einen dritten als auch einen vierten Pixel umfaßt.
- Der wenigstens eine Befehl nach Anspruch 28, bei welchem der Umwandlungsschritt das Umwandeln von vier 32-Bit-Farbkomponenten, die in einem 128-Bit-Rgister angeordnet sind, in vier 16-Bit-Zahlen in einem 64-Bit-Register umfaßt; wobei jedes Register eines Satzes an drei 128-Bit-Registern Daten für eine Farbkomponente für jeden Pixel von vier Pixeln umfaßt, und jedes Register eines Satzes an drei 64-Bit-Registern Daten für eine Farbkomponente für jeden Pixel von vier Pixeln umfaßt.
- Der wenigstens eine Befehl nach Anspruch 33, bei welchem jedes Register eines Satzes an drei 128-Bit-Register Daten für eine Farbkomponente für jeden Pixel von vier Pixeln umfaßt, wobei jedes Register eines Satzes an 64-Bit-Registern Daten für eine Farbkomponente für jeden Pixel von vier Pixeln umfaßt.
- Der wenigstens eine Befehl nach Anspruch 34, bei welchem der Zusammenfügschritt die folgenden Schritte umfaßt: logisches Kombinieren zweier Register des Satzes an drei 64-Bit-Registern, wobei die Kombination zu einem ersten und einem zweiten kombinierten 64-Bit-Register führt, und das erste kombinierte Register eine erste und eine zweite 8-Bit-Farbkomponente für sowohl einen ersten als auch einen zweiten Pixel umfaßt, und das zweite kombinierte Register eine erste und eine zweite 8-Bit-Farbkomponente für sowohl einen dritten als auch einen vierten Pixel umfaßt; Erzeugen eines dritten und eines vierten kombinierten 64-Bit-Registers, wobei das dritte kombinierte Register eine dritte 8-Bit-Farbkomponente für sowohl den ersten als auch den zweiten Pixel umfaßt, und das vierte kombinierte Register eine dritte 8-Bit-Farbkomponente für sowohl den dritten als auch den vierten Pixel umfaßt; logisches Kombinieren des ersten und dritten kombinierten Registers, wobei die Kombination zu einem ersten 64-Bit-Graphikregister führt, und das erste Graphikregister drei 8-Bit-Farbkomponenten, die eine Farbe eines ersten Pixels definieren, und drei 8-Bit-Farbkomponenten umfaßt, die eine Farbe eines zweiten Pixels definieren; logisches Kombinieren des zweiten und des vierten kombinierten Registers, wobei die Kombination zu einem zweiten 64-Bit-Graphikregister führt, und das zweite Graphikregister drei 8-Bit-Farbkomponenten, die eine Farbe eines dritten Pixels, und drei 8-Bit-Farbkomponenten umfaßt, die eine Farbe eines vierten Pixels definieren.
- Der wenigstens eine Befehl nach Anspruch 28, bei welchem der Umwandlungsschritt das Umwandeln von vier 32-Bit-Farbkomponenten, die in einem 128-Bit-Register angeordnet sind, in vier 8-Bit-Zahlen in einem 64-Bit-Register umfaßt.
- Der wenigstens eine Befehl nach Anspruch 36, bei welchem jedes Register eines Satzes an drei 128-Bit-Registern Daten für eine Farbkomponente für jeden Pixel von vier Pixeln umfaßt, wobei jedes Register eines Satzes an drei 64-Bit-Registern Daten für eine Farbkomponente für jeden Pixel von vier Pixeln umfaßt.
- Der wenigstens eine Befehl nach Anspruch 37, bei welchem der Zusammenfügschritt die folgenden Schritte umfaßt: logisches Kombinieren zweier Register des Satzes an drei 64-Bit-Registern, wobei die Kombination zu einem ersten und einem zweiten kombinierten 64-Bit-Register führt, und das erste kombinierte Register eine erste und eine zweite 8-Bit-Farbkomponente für sowohl einen ersten als auch einen zweiten Pixel umfaßt, und das zweite kombinierte Register eine erste und eine zweite 8-Bit-Farbkomponente für sowohl einen dritten als auch einen vierten Pixel umfaßt; logisches Kombinieren eines Registers des Satzes an drei 64-Bit-Registern mit einem 64-Bit-Register, das logische Nullen enthält, wobei die Kombination zu einem dritten und einem vierten kombinierten 64-Bit-Register führt, und das dritte kombinierte Register eine dritte 8-Bit-Farbkomponente für sowohl den ersten als auch den zweiten Pixel umfaßt, und das vierte kombinierte Register eine dritte 8-Bit-Farbkomponente für sowohl den dritten als auch den vierten Pixel umfaßt; logisches Kombinieren des ersten und des dritten kombinierten Registers, wobei die Kombination zu einem ersten 64-Bit-Graphikregister führt, und das erste Graphikregister drei 8-Bit-Farbkomponenten umfaßt, die eine Farbe eines ersten Pixels definieren, und drei 8-Bit-Farbkomponenten umfaßt, die eine Farbe eines zweiten Pixels definieren; und logisches Kombinieren des zweiten und des vierten kombinierten Registers, wobei die Kombination zu einem zweiten 64-Bit-Graphikregister führt, und das zweite Gra phikregister drei 8-Bit-Farbkomponenten, die eine Farbe eines dritten Pixels, und drei 8-Bit-Farbkomponenten umfaßt, die eine Farbe eines vierten Pixels definieren.
- Prozessor, mit: einem Decodierer, der zum Decodieren von Befehlen konfiguriert ist, und einer mit dem Decodierer gekoppelten Schaltung, wobei die Schaltung so konfiguriert ist, daß sie in Antwort auf wenigstens einen decodierten Befehl, eine Vielzahl an Farbkomponenten in einem ersten Format in wenigstens ein Register eines Satzes an ersten Registern in dem gepackten Format speichert, die Vielzahl an Farbkomponenten in einem Ganzzahl-Format in wenigstens ein Register eines Satzes an 64-Bit-Registern in dem gepackten Format stellt, und Farbkomponenten für jeden einer Vielzahl an Pixeln aus der Vielzahl an Zahlen in dem Ganzzahl-Format in dem wenigstens einen Register eines Satzes an 64-Bit-Registern zusammenfügt dadurch gekennzeichnet, dass das erste Format ein Gleitkomma-Format ist und die ersten Register 128-Bit-Register sind und die Schaltung weiter so konfiguriert ist, daß sie in Antwort auf den wenigstens einen decodierten Befehl zwischen dem Speichern und dem Stellen die Vielzahl an Farbkomponenten in dem Gleitkomma-Format in eine Vielzahl an Zahlen in dem Ganzzahl-Format umwandelt.
- Prozessor nach Anspruch 39, bei welchem die Schaltung ferner so konfiguriert ist, daß sie die Vielzahl an Farbkomponenten umwandelt, indem: erste und zweite 32-Bit-Farbwerte, die in den niedrigeren 64 Bits eines 128-Bit-Registers angeordnet sind, in erste und zweite 32-Bit-Zahlen in dem Ganzzahl-Format umgewandelt werden; dritte und vierte 32-Bit-Farbwerte, die in den höheren 64 Bits des 128-Bit-Registers angeordnet sind, in die niedrigeren 64 Bits des 128-Bit-Registers verschoben werden; und die dritten und vierten 32-Bit-Farbwerte in dritte und vierte 32-Bit-Zahlen in dem Ganzzahl-Format umgewandelt werden.
- Prozessor nach Anspruch 40, bei welchem die Schaltung ferner so konfiguriert ist, daß sie die Vielzahl an Zahlen stellt, indem: die ersten und zweiten 32-Bit-Zahlen in dem Ganzzahl-Format in ein erstes 64-Bit-Register gestellt werden; und die dritten und vierten 32-Bit-Zahlen in dem Ganzzahl-Format in ein zweites 64-Bit-Register gestellt werden.
- Prozessor nach Anspruch 41, bei welchem die Schaltung ferner so konfiguriert ist, daß sie Farbkomponenten zusammenfügt, indem die Inhalte des Satzes an 64-Bit-Registern manipuliert werden, wobei die Manipulation dazu führt, daß jedes 64-Bit-Register eine Vielzahl an Farbkomponenten eines Pixels umfaßt.
- Prozessor nach Anspruch 41, bei welchem jedes Register eines Satzes an sechs 64-Bit-Registern Daten für eine Farbkomponente für jeden Pixel von zwei Pixeln umfaßt, wobei die Schaltung ferner so konfiguriert ist, daß sie Farbkomponenten zusammenfügt, indem: erste drei Register des Satzes an sechs 64-Bit-Registern logisch kombiniert werden, wobei die Kombination zu einem ersten kombinierten 64-Bit-Register führt, das drei 8-Bit-Farbkomponenten für sowohl einen ersten als auch einen zweiten Pixel umfaßt; zweite drei Register des Satzes an sechs 64-Bit-Registern logisch kombiniert werden, wobei die Kombination zu einem zweiten kombinierten 64-Bit-Register führt, das drei 8-Bit-Farbkomponenten für sowohl einen dritten als auch einen vierten Pixel umfaßt.
- Prozessor nach Anspruch 39, bei welchem die Schaltung ferner so konfiguriert ist, daß sie die Vielzahl an Farbkom ponenten umwandelt, indem vier 32-Bit-Farbkomponenten, die in einem 128-Bit-Register angeordnet sind, in vier 16-Bit-Zahlen in einem 64-Bit-Register umgewandelt werden, wobei jedes Register eines Satzes an drei 128-Bit-Registern Daten für eine Farbkomponente für jeden Pixel von vier Pixeln umfaßt, und jedes Register eines Satzes an drei 64-Bit-Registern Daten für eine Farbkomponente für jeden Pixel von vier Pixeln umfaßt.
- Prozessor nach Anspruch 44, bei welchem jedes Register eines Satzes an drei 128-Bit-Registern Daten für eine Farbkomponente für jeden Pixel von vier Pixeln umfaßt, und jedes Register eines Satzes an 64-Bit-Registern Daten für eine Farbkomponente für jeden Pixel von vier Pixeln umfaßt.
- Prozessor nach Anspruch 45, bei welchem die Schaltung ferner so konfiguriert ist, daß sie die Farbkomponenten zusammenfügt, indem: zwei Register des Satzes an drei 64-Bit-Registern logisch kombiniert werden, wobei die Kombination zu einem ersten und einem zweiten kombinierten 64-Bit-Registers führt, und das erste kombinierte Register eine erste und eine zweite 8-Bit-Farbkomponente für sowohl einen ersten Pixel als auch einen zweiten Pixel umfaßt, und das zweite kombinierte Register eine erste und eine zweite 8-Bit-Farbkomponente für sowohl einen dritten als auch einen vierten Pixel umfaßt; ein drittes und ein viertes kombiniertes 64-Bit-Register erzeugt werden, wobei das dritte kombinierte Register eine dritte 8-Bit-Farbkomponente für sowohl den ersten als auch den zweiten Pixel umfaßt, und das vierte kombinierte Register eine dritte 8-Bit-Farbkomponente für sowohl den dritten als auch den vierten Pixel umfaßt; das erste und das dritte kombinierte Register logisch kombiniert werden, wobei die Kombination zu einem ersten 64-Bit-Graphikregister führt, und das erste Graphikregister drei 8-Bit-Farbkomponenten, die eine Farbe eines ersten Pixels, und drei 8-Bit-Farbkomponenten umfaßt, die eine Farbe eines zweiten Pixels definieren; und das zweite und das vierte kombinierte Register logisch kombiniert werden, wobei die Kombination zu einem zweiten 64-Bit-Graphikregister führt, und das zweite Graphikregister drei 8-Bit-Farbkomponenten, die eine Farbe eines dritten Pixels, und drei 8-Bit-Farbkomponenten umfaßt, die eine Farbe eines vierten Pixels definieren.
- Prozessor nach Anspruch 39, bei welchem die Schaltung ferner so konfiguriert ist, daß sie die Vielzahl an Farbkomponenten umwandelt, indem vier 32-Bit-Farbwerte, die in einem 128-Bit-Register angeordnet sind, in vier 8-Bit-Zahlen in einem 64-Bit-Register umgewandelt werden.
- Prozessor nach Anspruch 47, bei welchem jedes Register eines Satzes an drei 128-Bit-Registern Daten für eine Farbkomponente für jeden Pixel von vier Pixeln umfaßt, und jedes Register eines Satzes an drei 64-Bit-Registern Daten für eine Farbkomponente für jeden Pixel von vier Pixeln umfaßt.
- Prozessor nach Anspruch 48, bei welchem die Schaltung ferner so konfiguriert ist, daß sie Farbkomponenten zusammenfügt, indem: zwei Register des Satzes an drei 64-Bit-Registern logisch kombiniert werden, wobei die Kombination zu einem ersten und einem zweiten kombinierten 64-Bit-Register führt, und das erste kombinierte Register eine erste und eine zweite 8-Bit-Farbkomponente für sowohl einen ersten als auch einen zweiten Pixel umfaßt, und das zweite kombinierte Register eine erste und eine zweite 8-Bit-Farbkomponente für sowohl einen dritten als auch einen vierten Pixel umfaßt; ein Register des Satzes an drei 64-Bit-Registern mit einem 64-Bit-Register logisch kombiniert wird, das logische Nullen enthält, wobei die Kombination zu einem dritten und einem vierten kombinierten 64-Bit-Register führt, und das dritte kombinierte Register eine dritte 8-Bit-Farbkomponente für sowohl den ersten Pixel als auch den zweiten Pixel umfaßt, und das vierte kombinierte Register eine dritte 8-Bit-Farbkomponente für sowohl den dritten als auch den vierten Pixel umfaßt; das erste und das dritte kombinierte Register logisch kombiniert werden, wobei die Kombination zu einem ersten 64-Bit-Graphikregister führt, und das erste Graphikregister drei 8-Bit-Farbkomponenten, die eine Farbe eines ersten Pixels definieren, und drei 8-Bit-Farbkomponenten umfaßt, die eine Farbe eines zweiten Pixels definieren; und das zweite und das vierte kombinierte Register logisch kombiniert werden, wobei die Kombination zu einem zweiten 64-Bit-Graphikregister führt, und das zweite Graphikregister drei 8-Bit-Farbkomponenten, die eine Farbe eines dritten Pixels, und drei 8-Bit-Farbkomponenten umfaßt, die eine Farbe eines vierten Pixels definieren.
- Computersystem mit einem Prozessor nach einem der Ansprüche 39 bis 49 und einem Speicher.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/071,468 US5995122A (en) | 1998-04-30 | 1998-04-30 | Method and apparatus for parallel conversion of color values from a single precision floating point format to an integer format |
US09/071,468 | 1998-04-30 | ||
PCT/US1999/009472 WO1999056245A2 (en) | 1998-04-30 | 1999-04-29 | Color conversion from floating point format to integer format |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19983189T1 DE19983189T1 (de) | 2001-04-26 |
DE19983189B4 true DE19983189B4 (de) | 2009-12-24 |
Family
ID=22101523
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19983189T Expired - Fee Related DE19983189B4 (de) | 1998-04-30 | 1999-04-29 | System, Verfahren, Befehl und Prozessor zum Parallelverarbeiten von Graphikdaten |
Country Status (6)
Country | Link |
---|---|
US (1) | US5995122A (de) |
AU (1) | AU3776299A (de) |
DE (1) | DE19983189B4 (de) |
GB (1) | GB2354143B (de) |
HK (1) | HK1031939A1 (de) |
WO (1) | WO1999056245A2 (de) |
Families Citing this family (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10228382A (ja) * | 1997-02-14 | 1998-08-25 | Nec Corp | コンパイル方式 |
US6282554B1 (en) * | 1998-04-30 | 2001-08-28 | Intel Corporation | Method and apparatus for floating point operations and format conversion operations |
US6263426B1 (en) * | 1998-04-30 | 2001-07-17 | Intel Corporation | Conversion from packed floating point data to packed 8-bit integer data in different architectural registers |
US6247116B1 (en) | 1998-04-30 | 2001-06-12 | Intel Corporation | Conversion from packed floating point data to packed 16-bit integer data in different architectural registers |
US6292815B1 (en) | 1998-04-30 | 2001-09-18 | Intel Corporation | Data conversion between floating point packed format and integer scalar format |
US6266769B1 (en) | 1998-04-30 | 2001-07-24 | Intel Corporation | Conversion between packed floating point data and packed 32-bit integer data in different architectural registers |
US6650327B1 (en) | 1998-06-16 | 2003-11-18 | Silicon Graphics, Inc. | Display system having floating point rasterization and floating point framebuffering |
US6292168B1 (en) * | 1998-08-13 | 2001-09-18 | Xerox Corporation | Period-based bit conversion method and apparatus for digital image processing |
US6195672B1 (en) * | 1998-08-31 | 2001-02-27 | Mentor Graphics Corporation | Saturation detection in floating point to integer conversions |
US6212627B1 (en) * | 1998-10-12 | 2001-04-03 | Intel Corporation | System for converting packed integer data into packed floating point data in reduced time |
US6321327B1 (en) * | 1998-12-30 | 2001-11-20 | Intel Corporation | Method for setting a bit associated with each component of packed floating-pint operand that is normalized in SIMD operations |
US6732259B1 (en) | 1999-07-30 | 2004-05-04 | Mips Technologies, Inc. | Processor having a conditional branch extension of an instruction set architecture |
US7242414B1 (en) | 1999-07-30 | 2007-07-10 | Mips Technologies, Inc. | Processor having a compare extension of an instruction set architecture |
US7346643B1 (en) | 1999-07-30 | 2008-03-18 | Mips Technologies, Inc. | Processor with improved accuracy for multiply-add operations |
US6697832B1 (en) | 1999-07-30 | 2004-02-24 | Mips Technologies, Inc. | Floating-point processor with improved intermediate result handling |
US6631392B1 (en) | 1999-07-30 | 2003-10-07 | Mips Technologies, Inc. | Method and apparatus for predicting floating-point exceptions |
US6714197B1 (en) | 1999-07-30 | 2004-03-30 | Mips Technologies, Inc. | Processor having an arithmetic extension of an instruction set architecture |
US6912559B1 (en) | 1999-07-30 | 2005-06-28 | Mips Technologies, Inc. | System and method for improving the accuracy of reciprocal square root operations performed by a floating-point unit |
US6460177B1 (en) * | 1999-09-22 | 2002-10-01 | Lucent Technologies Inc. | Method for target-specific development of fixed-point algorithms employing C++ class definitions |
US6330660B1 (en) * | 1999-10-25 | 2001-12-11 | Vxtel, Inc. | Method and apparatus for saturated multiplication and accumulation in an application specific signal processor |
US6832306B1 (en) | 1999-10-25 | 2004-12-14 | Intel Corporation | Method and apparatus for a unified RISC/DSP pipeline controller for both reduced instruction set computer (RISC) control instructions and digital signal processing (DSP) instructions |
US6557096B1 (en) | 1999-10-25 | 2003-04-29 | Intel Corporation | Processors with data typer and aligner selectively coupling data bits of data buses to adder and multiplier functional blocks to execute instructions with flexible data types |
US6535898B1 (en) * | 2000-01-24 | 2003-03-18 | Microsoft Corporation | Fast floating-point truncation to integer form |
US6732203B2 (en) * | 2000-01-31 | 2004-05-04 | Intel Corporation | Selectively multiplexing memory coupling global bus data bits to narrower functional unit coupling local bus |
US7890566B1 (en) * | 2000-02-18 | 2011-02-15 | Texas Instruments Incorporated | Microprocessor with rounding dot product instruction |
US6996596B1 (en) | 2000-05-23 | 2006-02-07 | Mips Technologies, Inc. | Floating-point processor with operating mode having improved accuracy and high performance |
US6806886B1 (en) * | 2000-05-31 | 2004-10-19 | Nvidia Corporation | System, method and article of manufacture for converting color data into floating point numbers in a computer graphics pipeline |
US6606097B1 (en) * | 2000-08-03 | 2003-08-12 | International Business Machines Corporation | Circuit for generating frame buffer values |
JP3845814B2 (ja) * | 2000-08-10 | 2006-11-15 | 株式会社テルミナス・テクノロジー | 連想メモリとその検索方法及びルータとネットワークシステム |
US7003093B2 (en) * | 2000-09-08 | 2006-02-21 | Intel Corporation | Tone detection for integrated telecommunications processing |
US20020116186A1 (en) * | 2000-09-09 | 2002-08-22 | Adam Strauss | Voice activity detector for integrated telecommunications processing |
GB2409074B (en) * | 2001-03-14 | 2005-08-03 | Micron Technology Inc | Arithmetic pipeline |
US7103621B2 (en) * | 2002-03-29 | 2006-09-05 | Pts Corporation | Processor efficient transformation and lighting implementation for three dimensional graphics utilizing scaled conversion instructions |
US20030219113A1 (en) * | 2002-05-21 | 2003-11-27 | Bershad Neil J. | Echo canceller with double-talk and channel impulse response adaptation |
US7903892B2 (en) * | 2002-10-29 | 2011-03-08 | Ati Technologies Ulc | Image analysis for image compression suitability and real-time selection |
US7643679B2 (en) | 2003-02-13 | 2010-01-05 | Ati Technologies Ulc | Method and apparatus for block based image compression with multiple non-uniform block encodings |
US8111928B2 (en) | 2003-02-13 | 2012-02-07 | Ati Technologies Ulc | Method and apparatus for compression of multi-sampled anti-aliasing color data |
US7764833B2 (en) * | 2003-02-13 | 2010-07-27 | Ati Technologies Ulc | Method and apparatus for anti-aliasing using floating point subpixel color values and compression of same |
US7899855B2 (en) * | 2003-09-08 | 2011-03-01 | Intel Corporation | Method, apparatus and instructions for parallel data conversions |
US7821520B1 (en) * | 2004-12-10 | 2010-10-26 | Nvidia Corporation | Fragment processor having dual mode register file |
US8880571B2 (en) * | 2006-05-05 | 2014-11-04 | Microsoft Corporation | High dynamic range data format conversions for digital media |
US8154554B1 (en) * | 2006-07-28 | 2012-04-10 | Nvidia Corporation | Unified assembly instruction set for graphics processing |
US8280936B2 (en) * | 2006-12-29 | 2012-10-02 | Intel Corporation | Packed restricted floating point representation and logic for conversion to single precision float |
US8054886B2 (en) * | 2007-02-21 | 2011-11-08 | Microsoft Corporation | Signaling and use of chroma sample positioning information |
US20080252652A1 (en) * | 2007-04-13 | 2008-10-16 | Guofang Jiao | Programmable graphics processing element |
US7849294B2 (en) | 2008-01-31 | 2010-12-07 | International Business Machines Corporation | Sharing data in internal and memory representations with dynamic data-driven conversion |
US7877582B2 (en) * | 2008-01-31 | 2011-01-25 | International Business Machines Corporation | Multi-addressable register file |
US8977669B2 (en) * | 2010-01-08 | 2015-03-10 | International Business Machines Corporation | Multi-input and binary reproducible, high bandwidth floating point adder in a collective network |
US9003170B2 (en) | 2009-12-22 | 2015-04-07 | Intel Corporation | Bit range isolation instructions, methods, and apparatus |
US9411585B2 (en) | 2011-09-16 | 2016-08-09 | International Business Machines Corporation | Multi-addressable register files and format conversions associated therewith |
US9727336B2 (en) | 2011-09-16 | 2017-08-08 | International Business Machines Corporation | Fine-grained instruction enablement at sub-function granularity based on an indicated subrange of registers |
KR101893814B1 (ko) * | 2014-03-26 | 2018-10-04 | 인텔 코포레이션 | 3 소스 피연산자 부동 소수점 가산 프로세서, 방법, 시스템, 및 명령어 |
US10853067B2 (en) | 2018-09-27 | 2020-12-01 | Intel Corporation | Computer processor for higher precision computations using a mixed-precision decomposition of operations |
US11372643B2 (en) * | 2018-11-09 | 2022-06-28 | Intel Corporation | Systems and methods for performing instructions to convert to 16-bit floating-point format |
US11552650B2 (en) * | 2019-10-03 | 2023-01-10 | Raytheon Company | Methods to compress range doppler map (RDM) values from floating point to decibels (dB) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1997022921A1 (en) * | 1995-12-19 | 1997-06-26 | Intel Corporation | A method and apparatus for executing floating point and packed data instructions using a single register file |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4949291A (en) * | 1988-12-22 | 1990-08-14 | Intel Corporation | Apparatus and method for converting floating point data formats in a microprocessor |
US5157388A (en) * | 1989-02-14 | 1992-10-20 | Intel Corporation | Method and apparatus for graphics data interpolation |
US5257215A (en) * | 1992-03-31 | 1993-10-26 | Intel Corporation | Floating point and integer number conversions in a floating point adder |
EP0578950A3 (en) * | 1992-07-15 | 1995-11-22 | Ibm | Method and apparatus for converting floating-point pixel values to byte pixel values by table lookup |
GB2287111B (en) * | 1994-03-01 | 1998-08-05 | Intel Corp | Method for pipeline processing of instructions by controlling access to a reorder buffer using a register file outside the reorder buffer |
US5673407A (en) * | 1994-03-08 | 1997-09-30 | Texas Instruments Incorporated | Data processor having capability to perform both floating point operations and memory access in response to a single instruction |
US5761103A (en) * | 1995-03-08 | 1998-06-02 | Texas Instruments Incorporated | Left and right justification of single precision mantissa in a double precision rounding unit |
US5764548A (en) * | 1995-09-29 | 1998-06-09 | Intel Corporation | Fast floating-point to integer conversion |
US5802219A (en) * | 1995-11-27 | 1998-09-01 | Sun Microsystems, Inc. | Methods and apparatus for table lookup transformation of digital images |
US5805486A (en) * | 1995-11-28 | 1998-09-08 | Intel Corporation | Moderately coupled floating point and integer units |
US5740093A (en) * | 1995-12-20 | 1998-04-14 | Intel Corporation | 128-bit register file and 128-bit floating point load and store for quadruple precision compatibility |
US5874969A (en) * | 1996-07-01 | 1999-02-23 | Sun Microsystems, Inc. | Three-dimensional graphics accelerator which implements multiple logical buses using common data lines for improved bus communication |
-
1998
- 1998-04-30 US US09/071,468 patent/US5995122A/en not_active Expired - Lifetime
-
1999
- 1999-04-29 GB GB0026502A patent/GB2354143B/en not_active Expired - Fee Related
- 1999-04-29 DE DE19983189T patent/DE19983189B4/de not_active Expired - Fee Related
- 1999-04-29 WO PCT/US1999/009472 patent/WO1999056245A2/en active Application Filing
- 1999-04-29 AU AU37762/99A patent/AU3776299A/en not_active Abandoned
-
2001
- 2001-04-04 HK HK01102413A patent/HK1031939A1/xx not_active IP Right Cessation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1997022921A1 (en) * | 1995-12-19 | 1997-06-26 | Intel Corporation | A method and apparatus for executing floating point and packed data instructions using a single register file |
Non-Patent Citations (5)
Title |
---|
CROCKETT,Thomas W.: "An introduction to parallel rendering", 1997, Elsevier Science B.V. * |
LEE, Ruby B.: "Subword Parallelism with MAX-2", IEEE Micro, Aug 1996,51-59,DOI: 10.1109/40.526925 * |
PELEG, A. * |
PELEG, A. WEISER, U.: MMX Technology Extension to the Intel Architecture. IEEE Micro, August 1996, S. 42-50 LEE, Ruby B.: "Subword Parallelism with MAX-2", IEEE Micro, Aug 1996,51-59,DOI: 10.1109/40.526925 CROCKETT,Thomas W.: "An introduction to parallel rendering", 1997, Elsevier Science B.V. |
WEISER, U.: MMX Technology Extension to the Intel Architecture. IEEE Micro, August 1996, S. 42-50 * |
Also Published As
Publication number | Publication date |
---|---|
US5995122A (en) | 1999-11-30 |
AU3776299A (en) | 1999-11-16 |
GB2354143B (en) | 2002-10-30 |
WO1999056245A2 (en) | 1999-11-04 |
GB2354143A (en) | 2001-03-14 |
GB0026502D0 (en) | 2000-12-13 |
DE19983189T1 (de) | 2001-04-26 |
HK1031939A1 (en) | 2001-06-29 |
WO1999056245A3 (en) | 1999-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19983189B4 (de) | System, Verfahren, Befehl und Prozessor zum Parallelverarbeiten von Graphikdaten | |
DE19920214C2 (de) | Verfahren und Einrichtung zum Konvertieren einer Zahl zwischen einem Gleitkommaformat und einem Ganzzahlformat | |
US6480868B2 (en) | Conversion from packed floating point data to packed 8-bit integer data in different architectural registers | |
US6502115B2 (en) | Conversion between packed floating point data and packed 32-bit integer data in different architectural registers | |
US6247116B1 (en) | Conversion from packed floating point data to packed 16-bit integer data in different architectural registers | |
DE69625790T2 (de) | Verfahren und vorrichtung für anpassbare operationen durch einen prozessor | |
JP4607105B2 (ja) | データをシャッフルするための方法及び装置 | |
DE102007045496B4 (de) | Anweisung und Logik zum Bearbeiten von Textstrings | |
USRE45458E1 (en) | Dual function system and method for shuffling packed data elements | |
DE69428499T2 (de) | Bedingtes Speicherladen von einem Registerpaar | |
US7395298B2 (en) | Method and apparatus for performing multiply-add operations on packed data | |
DE69725057T2 (de) | Gleitkommaprozessor für einen dreidimensionalen graphischen Beschleuniger | |
US6573846B1 (en) | Method and apparatus for variable length decoding and encoding of video streams | |
US6693643B1 (en) | Method and apparatus for color space conversion | |
US20040268094A1 (en) | Method and apparatus for floating point operations and format conversion operations | |
DE102018006757A1 (de) | Festkomma-zu-gleitkomma-umwandlung | |
US20070074007A1 (en) | Parameterizable clip instruction and method of performing a clip operation using the same | |
DE102007045187A1 (de) | Verfahren und Vorrichtung zum Ausführen einer logischen Vergleichsoperation | |
US20100011042A1 (en) | Method and Apparatus for Efficient Integer Transform | |
DE112004001648T5 (de) | Verfahren, Vorrichtung und Befehle für parallele Datenumwandlung | |
EP0817003B1 (de) | Formatumwandlung von Datenwörtern graphischer Bilder | |
DE102014003706A1 (de) | BEREICHSBEGRENZTE VEKTORSPEICHERZUGRIFFSINSTRUKTIONEN, PROZESSOREN, VERFAHREN und SYSTEME | |
WO1997032278A1 (en) | Computer implemented method for compressing 48-bit pixels to 16-bit pixels | |
DE112012003864T5 (de) | Mehrfach adressierbare Registerdateien und dazugehörige Formatumwandlungen | |
US5905661A (en) | Method for handling an overflow condition in a processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8172 | Supplementary division/partition in: |
Ref document number: 19964562 Country of ref document: DE Kind code of ref document: P |
|
Q171 | Divided out to: |
Ref document number: 19964562 Country of ref document: DE Kind code of ref document: P |
|
AH | Division in |
Ref document number: 19964562 Country of ref document: DE Kind code of ref document: P |
|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |