DE19983189B4 - System, Verfahren, Befehl und Prozessor zum Parallelverarbeiten von Graphikdaten - Google Patents

System, Verfahren, Befehl und Prozessor zum Parallelverarbeiten von Graphikdaten Download PDF

Info

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
Application number
DE19983189T
Other languages
English (en)
Other versions
DE19983189T1 (de
Inventor
Hsien-Cheng E. Gold River Hsieh
Thomas R. Portland Huff
Vladimir Folsom Pentkovski
Patrice Portland Roussel
Shreekant S. Portland Thakkar
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE19983189T1 publication Critical patent/DE19983189T1/de
Application granted granted Critical
Publication of DE19983189B4 publication Critical patent/DE19983189B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/14Conversion to or from non-weighted codes
    • H03M7/24Conversion to or from floating-point codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor 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...

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 und 18b Datenflußdiagramme einer Parallelumwandlung von Graphikfarbdaten unter Verwendung eines CVTPS2PI-Befehls einer Ausführungsform ist.
  • 19a und 19b Datenflußdiagramme einer Parallelumwandlung von Graphikfarbdaten unter Verwendung eines CVTPS2PW-Befehls einer Ausführungsform sind.
  • 20a und 20b 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 Computersystem 100 einer Ausführungsform. Das Computersystem 100 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 Computersystem 100 umfaßt einen Bus 101, oder andere Kommunikations-Hardware und -Software, zum Übertragen von Information, und einen Prozessor 109, der mit dem Bus 101 zum Verarbeiten von Information gekoppelt ist. Der Prozessor 109 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 Prozessor 109 umfaßt eine Ausführungseinheit 130, eine Registerdatei 150, einen Cache 160, einen Decoder 165 und einen internen Bus 170. 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 Registerdatei 150 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 Hauptspeicher 104, der mit dem Bus 101 zum Speichern von Information und Befehlen gekoppelt ist, die von dem Prozessor 109 ausgeführt werden sollen. Der Hauptspeicher 104 kann für das Speichern von temporären Variablen oder anderer Zwischeninformation während der Ausführung von Befehlen durch den Prozessor 109 verwendet werden. Das Computersystem 100 umfaßt ferner einen nur Nur-Lese-Speicher (ROM) 106 oder andere statische Speicherbauteile, die mit dem Bus 101 zum Speichern statischer Information und Befehlen für den Prozessor 109 gekoppelt sind.
  • Ein Datenspeicherbauteil 107, wie eine Magnetscheibe oder eine optische Scheibe und ein entsprechendes Laufwerk sind mit dem Bus 101 gekoppelt. Das Computersystem 100 kann über den Bus 101 mit einem Anzeigegerät 121 zum Anzeigen von Information an ei nen Benutzer des Computersystems 100 gekoppelt sein. Die Anzeigeeinrichtung 121 kann einen Bildwiederholspeicher, spezialisierte Graphikwiedergabebauteile, eine Kathodenstrahlröhre (CRT) und eine Flachbildschirmanzeige aufweisen. Die Erfindung ist jedoch nicht darauf beschränkt. Ein alphanumerisches Eingabebauteil 120, das alphanumerische und andere Tasten umfaßt, kann mit dem Bus 101 zum Übertragen von Information und Befehlsauswahlen an den Prozessor 109 gekoppelt sein. Ein weiterer Typ eines Benutzereingabegeräts ist eine Cursorsteuerung 123, die eine Mouse, einen Trackball, einen Stift, eine Touch-Screen oder Cursor-Richtungstasten zum Übertragen von Richtungsinformation und Befehlsauswahlen an dem Prozessor 109 und zum Steuern einer Cursorbewegung auf dem Anzeigegerät 121 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 Bus 101 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 Computersystem 100 mit einem Gerät für die Tonaufnahme und -wiedergabe 125 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 Computersystem 100 ein Computer-Untersystem eines Computer-Netzwerkes ist. Die Erfindung ist jedoch nicht hierauf beschränkt. Das Computersystem 100 kann ferner ein Videodigitizer-Gerät 126 aufweisen. Das Videodigitizer-Gerät 126 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 Prozessor 109 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 Prozessor 109 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 Prozessor 109 empfangene Befehle auszuführen. Zusätzlich zu dem Erkennen von Befehlen, die typischerweise in Vielzweckprozessoren implementiert sind, erkennt die Ausführungseinheit 130 Befehle in einem gepackten Befehlssatz 140 zum Durchführen von Operationen an gepackten Daten-Formaten. In einer Ausführungsform umfaßt der gepackte Befehlssatz 140 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 Befehlssatz 140 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 Registerdatei 150 unter Verwendung eines internen Busses 170 gekoppelt. Die Registerdatei 150 stellt einen Speicherbereich beim Prozessor 109 zum Speichern von Information, einschließlich Daten dar. Die Ausführungseinheit 130 ist ferner mit einem Cache 160 und einem Decoder 165 gekoppelt. Der Cache 160 wird dazu verwendet, Daten und Steuerungssignale von beispielsweise dem Hauptspeicher 104 zu cachen. Der Decoder 165 wird dazu verwendet, von dem Prozessor 109 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ührungseinheit 130 die geeigneten Operationen durch. Falls beispielsweise ein Addierbefehl empfangen wird, veranlaßt der Decoder 165 die Ausführungseinheit 130, die erforderliche Addition durchzuführen, falls ein Subtrahierbefehl empfangen wird, veranlaßt der Decoder 165 die Ausführungseinheit 130, die erforderliche Subtraktion durchzu führen. Während die Ausführung der verschiedenen Befehle durch den Decoder 165 und die Ausführungseinheit 130 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 Registerdatei 150 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 Bus 170 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 Prozessor 109 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 Prozessor 109 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 Prozessor 109 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 Prozessor 109 umfaßt eine Busschnittstelleneinheit 202, die den Prozessor 109 an einen externen Bus 204 koppelt, wobei der externe Bus 204 dazu verwendet wird, mit anderen Systemgeräten zu kommunizieren. Die Busschnittstelleneinheit 202 führt Transaktionen durch, wenn diese vom L2-Cache 206 oder vom Prozessorkern 208 angefragt werden. Ferner koppelt die Busschnittstelleninheit 202 den Prozessor 109 an einen vereinheitlichten L2-Cache 206 unter Verwendung eines Rückbusses (backside bus) 210. Der L2-Cache 206 kann chipextern sein und kann bei einem Bruchteil der Geschwindigkeit des Kernprozessors 208 laufen. Die Erfindung ist jedoch nicht hierauf beschränkt. Der L2-Cache 206 einer Ausführungsform umfaßt 512 KBytes. Die Erfindung ist jedoch nicht hierauf beschränkt. Der L2-Cache 206 bedient Fehltreffer auf den L1-Datencache 220 und den Codecache 220 und kann Anfragen an die Busschnittstelleneinheit 202 ausgeben.
  • Die Busschnittstelleneinheit 202 einer Ausführungsform ist mit dem Prozessorkern 208 unter Verwendung eines L1-Datencaches 220 und eines L1-Codecaches 222 gekoppelt, von denen jeder 16 KBytes hat. Die Erfindung ist jedoch nicht hierauf beschränkt. Die L1-Caches 220 bis 222 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 Cache 206, eingebracht. Der L1-Datencache 220 bedient Datenlade- und -speicheranfragen, die von den Lade- und Speicherausführungseinheiten ausgegeben werden; wenn ein Fehltreffer auftritt, führt der L1-Datencache 220 Anfragen weiter zu dem L2-Cache-206. Der L1-Codecache 222 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 Prozessorkern 208 kann bei Geschwindigkeiten von 233, 266 und 300 Megahertz (MHz) laufen. Die Erfindung ist jedoch nicht hierauf beschränkt. Der Prozessor 109 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-Steuerungseinheit 230 (APIC = Asynchronous Prozessor Interrupt Control) empfängt Interruptanfragen und setzt Prioritäten fest und leitet diese Anfragen für die Ausführung an den Prozessorkern 208 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 Datenpipeline 300 einer Ausführungsform. Andere Ausführungsformen können eine Pipeline oder mehr als zwei Pipelines haben. Die erste logische Pipeline wird als die U-Pipeline 302 bezeichnet und die zweite logische Pipeline wird als die V-Pipeline 304 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-Pipeline 302 und der zweite in der V-Pipeline 304 ausgeführt wird. Falls es nicht möglich ist, zwei Befehle zu paaren, wird der nächste Befehl der U-Pipeline 302 ausgegeben und kein Befehl wird der V-Pipeline 304 ausgegeben. Wenn Befehle in den beiden Pipelines 302304 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-Prefetching 310, einen Befehls-Fetching 312, eine Befehlsdecodierung, -paarung und -abfertigung 314, eine Adresserzeugung 316, eine Operandenlesung und -ausführung 318 und ein Rückschreiben 320. 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-Schreibpuffer 404, einen Satz skalarer 32-Bit-Register 414, einen Satz an acht 64-Bit-Registern 410, einen Satz an acht 128-Bit-Multimediaerweiterungsregistern 412 und einen Stapelrückführpuffer (RSB = return stack buffer) 406. Der BTB 402 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 RSB 406 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-Pipeline 304. Diese Pipelines 302304 arbeiten parallel und können eine Ausführungsrate von bis zu zwei Befehlen pro Taktzyklus aufrechterhalten. Die U-Pipeline 302 und die V-Pipeline 304 können in irgendeinen der vier Schreib-Puffer 404 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-Register 410 können auf die Register 414 abgebildet oder aliased werden. Die Erfindung ist jedoch nicht hierauf beschränkt. Da die 64-Bit-Register 410 Teil des Gleitkomma-Zustandes sind, gibt es keinen neuen Zustand. Wenn die 64-Bit-Register 410 auf die skalaren 32-Bit-Register 414 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-Register 410 zusätzlich zu den acht skalaren 32-Bit-Register 414 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-Register 414 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-Register 414, 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-Registern 414 oder dem Speicher. Die 32-Bit- und 64-Bit- Speicherzugriffsunterstützung in der U-Pipeline 302 wird dazu verwendet, 32-Bit- und 64-Bit-Speicherübertragungen zu und von den 64-Bit-Registern 410 durchzuführen. Ferner verwendet der Prozessor die U-Pipeline 302 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-Register 412 direkt zu, unter Verwendung von Registernamen. Die Erfindung ist jedoch nicht hierauf beschränkt. Die 128-Bit-Register 412 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-Format 500, das von den 128-Bit-Multimediaerweiterungsregistern einer Ausführungsform verwendet wird. Dieses Format ist konform mit dem IEEE-Standard. Das Vorzeichen 502 ist ein binärer Wert, der angibt, ob die Zahl positiv (0) oder negativ (1) ist. Die Mantisse 506 hat zwei Teile: eine binäre 1-Bit-Ganzzahl 508, die auch als das J-Bit bezeichnet wird, und einen binären Bruchteil 510. In anderen Ausführungsformen ist das J-Bit 508 nicht explizit dargestellt, sondern ist stattdessen ein impliziter Wert. Der Exponent 504 ist eine binäre ganze Zahl, welche die Potenz zur Basis zwei darstellt, zu der die Mantisse 506 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 Registerdatei 150 und den entsprechenden Umwandlungsbefehlen 910928 einer Ausführungsform unterstützt werden. Die Registerdatei unterstützt einen Satz skalarer 32-Bit-IATM-Register, einen Satz gepackter Ganzzahl-Register 904 oder 64-Bit-Multimediaerweiterungsregister und einen Satz gepackter einfach genauer Gleitkomma-Register 906, 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-Register 904 auf den Speicherraum der skalaren Register oder den Systemspeicher 902 aliased werden. Die Erfindung ist jedoch nicht hierauf beschränkt.
  • Die Umwandlungsbefehle 910928, die den Registern 902906 der Registerdatei 150 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-Befehls 922, einschließlich einem CVTPS2PW-Befehls 924 und einem CVTPS2PB-Befehl 926, 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-Register 902 in eine einfach genaue Gleitkommazahl um. Die einfach genaue Gleitkommazahl wird in ein Register eines Satzes von 128-Bit-Multimediaerweiterungsregister 906 gestellt. Alternativ wandelt der CVTSI2SS-Befehl 910 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-Multimediaerweiterungsregister 906 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 Schritt 1002, 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 Schritt 1004 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 Schritt 1006 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-Multimediaerweiterungsregister 906 in eine vorzeichenbehaftete 32-Bit-Ganzzahl um. Die vorzeichenbehaftete 32-Bit-Ganzzahl wird in ein skalares IATM-32-Bit-Ganzzahl-Register 902 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-Multimediaerweiterungsregister 906 in eine vorzeichenbehaftete 32-Bit-Ganzzahl um. Die vorzeichenbehaftete 32-Bit-Ganzzahl wird in ein skalares IATM-32-Bit-Ganzzahl-Register 902 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 Schritt 1102, 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 Schritt 1104 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-Register 904 in zwei niedrigstwertige einfach genaue Gleitkommazahlen um. Die einfach genauen Gleitkommazahlen werden in ein 128-Bit-Multimediaerweiterungsregister 906 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 Schritt 1202, 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 Schritt 1204 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 Schritt 1206 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 922926 eines Befehls, der gepackte einfach genaue Gleitkomma-Werte in einem 128-Bit-Multimediaerweiterungsregister 906 in gepackte 32-Bit-Ganzzahlen umwandelt, die in einem 64-Bit-Multimediaerweiterungsregister 904 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-Multimediaerweiterungsregister 906 in zwei vorzeichenbehaftete 32-Bit-Ganzzahlen umwandelt. Die beiden vorzeichenbehafteten 32-Bit-Ganzzahlen werden in ein 64-Bit-Multimediaerweiterungsregister 904 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-Erweiterungregister 906 in vier 16-Bit-Ganzzahlen umwandelt, die in einem 64-Bit-Multimediaerweiterungsregister 904 gespeichert sind. Die dritte Variante ist der CVTPS2PB-Befehl 926, der vier einfach genaue Gleitkommazahlen in einem 128-Bit-Multimediaerweiterungsregister 906 in vier 8-Bit-Ganzzahlen umwandelt, die in den niedrigen 32-Bit-Feldern eines 64-Bit-Multimediaerweiterungsregisters 904 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-Multimediaerweiterungsregister 906 in zwei vorzeichenbehaftete 32-Bit-Ganzzahlen um. Die zwei vorzeichenbehafteten 32-Bit-Ganzzahlen werden in ein 64-Bit-Multimediaerweiterungsregister 904 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 Schritt 1302, 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 Schritt 1304 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 Schritt 1306 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 Schritt 1402, 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 Schritt 1404 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 Schritt 1406 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 Schritt 1502, 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 Schritt 1504 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 Schritt 1506 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 Schritt 1602, bei dem eine Lichtintensität berechnet wird. Ein Lichtfarbwert wird beim Schritt 1604 für jeden Scheitelpunkt berechnet. Der Lichtfarbwert wird beim Schritt 1606 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 Schritt 1702, 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 Schritt 1704 in Farbwerte, oder Zahlen, in einem Ganzzahl-Format umgewandelt. Die Zahlen in dem Ganzzahl-Format werden beim Schritt 1706 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 und 18b 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 Umwandeln 1810 erster und zweiter 32-Bit-Farbwerte, die in den niedrigeren 64 Bits 18021804 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-Farbwerte 18061808, die in den höheren 64 Bits des 128-Bit-Registers XMM0 angeordnet sind, in die niedrigeren 64 Bits des 128-Bit-Registers 18021804 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-Zahlen 18121814 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-Zahlen 18161818 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, Schritt 1706, 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, Schritt 1708, 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-Register 1850 drei 8-Bit-Farbkomponenten für sowohl einen ersten 18201824 als auch einen zweiten 18301834 Pixel umfaßt, wobei die drei 8-Bit-Farbkomponenten die Farbe eines Pixels definieren. Die Inhalte des ersten kombinierten Registers 1850 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 Operation 1898 und den Inhalten des dritten 64-Bit-Registers MM2 durchgeführt. Das Ergebnis dieser bei den logischen Operationen ist ein erstes kombiniertes 64-Bit-Register 1850, das drei 8-Bit-Farbkomponenten für sowohl einen ersten 18201824 als auch einen zweiten 18301834 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 Operation 1897 und den Inhalten des sechsten 64-Bit-Registers MM5 durchgeführt. Das Ergebnis dieser beiden logischen Operationen ist ein zweites kombiniertes 64-Bit-Register 1852, das drei 8-Bit-Farbkomponenten für sowohl einen dritten als auch einen vierten Pixel umfaßt. Die Inhalte des zweiten kombinierten Registers 1852 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 und 19b 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-Farbkomponenten 19021908, die in einem 128-Bit-Register XMM0 angeordnet sind, in vier 16-Bit-Zahlen 19121918, 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-Registern 19981999 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 Auspackoperation 1920 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 Auspackoperation 1922 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, Schritt 1708, 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-Registers 1950 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-Registers 1950 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-Registers 1950 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 19981999 umfaßt das Durchführen einer ersten logischen ODER-Verknüpfung 1924 des ersten MM4 und des dritten MM3 kombinierten 64-Bit-Registers, um ein erstes Graphikregister 1998 zu erzeugen, und das Durchführen einer zweiten logischen ODER-Verknüpfung 1926 des zwei ten MM5 und des vierten MM6 kombinierten 64-Bit-Registers, um ein zweites Graphikregister 1999 zu erzeugen. Das erste Graphikregister 1998 umfaßt drei 8-Bit-Farbkomponenten, die sowohl einen ersten 1930 als auch einen zweiten 1932 Pixel definieren. Das zweite Graphikregister 1999 umfaßt drei 8-Bit-Farbkomponenten, die sowohl einen dritten 1934 als auch einen vierten 1936 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 und 20b 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, Schritt 1704, das Umwandeln von vier 32-Bit-Farbkomponenten 20022008, die in einem 128-Bit-Register XMM0 angeordnet sind, in vier 8-Bit-Zahlen 20122018, 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-Registern 20982099 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-Registers 1910 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 Graphikregister 2098 umfaßt drei 8-Bit-Farbkomponenten 2030, die eine Farbe eines ersten Pixels definieren, und drei 8-Bit-Farbkomponenten 2032, 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-Graphikregister 2099; das zweite Graphikregister 2099 umfaßt drei 8-Bit-Farbkomponenten 2034, die eine Farbe eines dritten Pixels definieren, und drei 8-Bit-Farbkomponenten 2036, 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, Schritt 1708, 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-Register 20982099, 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-Register 2050 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-Registers 2050 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-Registers 2050 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-Registers 2050 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-Register 2060 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-Registers 2060 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-Registers 2060 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-Registers 2060 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 20982099 umfaßt das Durchführen einer ersten logischen ODER-Verknüpfung 2070 des ersten MM4 und des dritten MM3 kombinierten 64-Bit-Registers, um ein erstes Graphikregister 2098 zu erzeugen, und das Durchführen einer zweiten logischen ODER-Verknüpfung 2072 des zweiten MM5 und des vierten MM6 kombinierten 64-Bit-Registers, um ein zweites Graphikregister 2099 zu erzeugen. Das erste Graphikregister 2098 umfaßt drei 8-Bit-Farbkomponenten, die sowohl einen ersten 2030 als auch einen zweiten 2032 Pixel definieren. Das zweite Graphikregister 2099 umfaßt drei 8-Bit-Farbkomponenten, die sowohl einen dritten 2034 als auch einen vierten 2036 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)

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. 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.
  11. 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.
  12. 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.
  13. 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.
  14. 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.
  15. 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.
  16. 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.
  17. 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.
  18. 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.
  19. 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.
  20. 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.
  21. 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.
  22. 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.
  23. 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.
  24. 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.
  25. 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.
  26. 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.
  27. 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.
  28. 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.
  29. 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.
  30. 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.
  31. 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.
  32. 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.
  33. 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.
  34. 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.
  35. 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.
  36. 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.
  37. 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.
  38. 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.
  39. 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.
  40. 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.
  41. 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.
  42. 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.
  43. 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.
  44. 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.
  45. 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.
  46. 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.
  47. 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.
  48. 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.
  49. 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.
  50. Computersystem mit einem Prozessor nach einem der Ansprüche 39 bis 49 und einem Speicher.
DE19983189T 1998-04-30 1999-04-29 System, Verfahren, Befehl und Prozessor zum Parallelverarbeiten von Graphikdaten Expired - Fee Related DE19983189B4 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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