DE19920214A1 - Verfahren und Einrichtung zum Konvertieren einer Zahl zwischen einem Gleitkommaformat und einem Ganzzahlformat - Google Patents

Verfahren und Einrichtung zum Konvertieren einer Zahl zwischen einem Gleitkommaformat und einem Ganzzahlformat

Info

Publication number
DE19920214A1
DE19920214A1 DE19920214A DE19920214A DE19920214A1 DE 19920214 A1 DE19920214 A1 DE 19920214A1 DE 19920214 A DE19920214 A DE 19920214A DE 19920214 A DE19920214 A DE 19920214A DE 19920214 A1 DE19920214 A1 DE 19920214A1
Authority
DE
Germany
Prior art keywords
bit
register
format
floating point
registers
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.)
Granted
Application number
DE19920214A
Other languages
English (en)
Other versions
DE19920214C2 (de
Inventor
Mohammed A F Abdallah
Thomas R Huff
Patrice Roussel
Hsien-Cheng E Hsieh
Vladimir Pentkowski
Shreekant S 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 DE19920214A1 publication Critical patent/DE19920214A1/de
Application granted granted Critical
Publication of DE19920214C2 publication Critical patent/DE19920214C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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
    • 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

Abstract

Bei dem Verfahren bzw. dem auf einem Computer auszuführenden Befehl wird eine Zahl zwischen einem Gleitkommaformat und einem Ganzzahlformat konvertiert. Das Ganzzahlformat aufweisende Zahlen werden in einem Register eines ersten Satzes von Architekturregistern in einem skalaren Format gespeichert. Wenigstens eine der in dem skalaren Format vorliegenden Zahlen wird in eine Zahl in dem Gleitkommaformat konvertiert. Die in dem Gleitkommaformat vorliegende Zahl wird in einem Register eines zweiten Satzes von Architekturregistern in einem gepackten Format angeordnet.

Description

Die Erfindung bezieht sich auf ein Verfahren zum Kon­ vertieren einer Zahl zwischen einem Gleitkommaformat und ei­ nem Ganzzahlformat in einem Computersystem.
In typischen Computersystemen sind Prozessoren imple­ mentiert, um an durch eine große Anzahl von Bits, beispiels­ weise 32 Bits, repräsentierten Werten unter Verwendung von Befehlen, die ein Ergebnis erzeugen, Operationen auszufüh­ ren. Die Ausführung eines Additionsbefehls beispielsweise addiert einen ersten 32-Bit-Wert und einen zweiten 32-Bit- Wert zusammen und speichert das Ergebnis als dritten 32-Bit- Wert. Einige Anwendungen jedoch erfordern die Bearbeitung großer Menge von Daten, die jeweils durch weniger als 32 Bits repräsentiert sind. Beispielsweise Multimedia-Graphik­ anwendungen werden üblicherweise erzeugt, indem ein Bild als Sammlung kleiner, unabhängig gesteuerter Punkte oder Pixel behandelt wird. Die den Pixeln entsprechenden Positionskoor­ dinaten und Farbwerte werden üblicherweise durch weniger als 32 Bits dargestellt. Die von Graphikanwendungen geforderte Verarbeitung großer Datenmengen durch eine Pipeline kann die Bearbeitungszeit beträchtlich erhöhen und die Graphikwieder­ gabe dementsprechend verlangsamen.
Multimedia-Graphikanwendungen umfassen beispielsweise Anwendungen, die auf eine computerunterstützte Kooperation (CSC; computer supported cooperation), zweidimensionale (2D) Graphiken, dreidimensionale (3D-) Graphiken, die Bildverar­ beitung, die Videokompression/Dekompression, Erkennungsalgo­ rithmen und auf Audiobearbeitungen abzielen. Als solche um­ fassen die Daten von Multimedia-Anwendungen typischerweise Standbilder oder Videoeinzelbilder und Klangdaten. Die Pixel der Standbilder oder die Videodaten werden üblicherweise un­ ter Verwendung von 8- oder 16-Bit-Datenelementen dargestellt und die Klangdaten werden üblicherweise unter Verwendung von 8- oder 16-Bit-Datenelementen repräsentiert. Wenn Standbil­ der oder Videoeinzelbilder aufweisende Multimedia-Daten ver­ arbeitet werden, wird oftmals die gleiche Operation wieder­ holt an sämtlichen Pixeln des Bildes oder des Einzelbildes durchgeführt. Da jede dieser Multimedia-Anwendungen übli­ cherweise einen oder mehrere Algorithmen verwendet und da jeder Algorithmus üblicherweise eine Reihe von Operationen benutzt, beschleunigen die zum Ausführen der gleichen Opera­ tionen an 8-Bit-, 16-Bit- oder sogar 32-Bit-Daten bei gleichzeitiger Verarbeitung von 2, 4 oder 8 Datenwerten ver­ wendeten Multimedia-Erweiterungen die Berechnungen, die eine solche Datenparallelität aufweisen.
Um die Effizienz von Multimedia-Anwendungen ebenso wie von anderen Anwendungen mit ähnlichen Charakteristika zu verbessern, benutzen bekannte Prozessoren gepackte Datenfor­ mate. Ein gepacktes Datenformat ist ein Datenformat, bei welchem eine bestimmte Anzahl von Datenelementen fester Größe, die jeweils einen separaten Wert repräsentieren, ge­ meinsam gespeichert werden. Beispielsweise kann ein 64-Bit- Register in zwei 32-Bit-Elemente unterteilt werden, von de­ nen jedes einen separaten 32-Bit-Wert darstellt. Zusätzlich liefern diese bekannten Prozessoren Befehle zum separaten und parallelen Bearbeiten jedes Elements dieser gepackten Datentypen. Beispielsweise addiert ein gepackter Additions­ befehl einander entsprechende Datenelemente aus einem ersten gepackten Datenoperanden und einem zweiten gepackten Daten­ operanden miteinander. Wenn somit ein Multimedia-Algorithmus eine Schleife erfordert, die fünf Operationen, die an einer großen Anzahl von Datenelementen durchgeführt werden müssen, enthält, ist es wünschenswert, die Daten zu packen und diese Operationen parallel unter Verwendung gepackter Datenbefehle auszuführen. Auf diese Weise können diese Prozessoren Multi­ media-Anwendungen effektiver verarbeiten.
Um folglich die zur Graphikwiedergabe bei Multimedia- Anwendungen erforderliche Zeit zu verringern, wird eine pa­ rallele Verarbeitung verwendet, wobei ein einzelner Befehl mehrere Datenelemente bearbeitet; dieser Prozeß wird typi­ scherweise als Einzelbefehl-Mehrfachdaten-Verarbeitung oder SIMD-Verarbeitung (Single Instruction Multiple Data) be­ zeichnet. Üblicherweise arbeiten Ganzzahlbefehle an einzel­ nen Ganzzahldatenelementen (A + B). Die SIMD-Befehle jedoch arbeiten an Ganzzahldatenmatrizen oder -vektoren (A[1. . .n] + B[l. . .n]), wobei n die Anzahl der Elemente in der Matrix (bzw. dem Vektor) ist.
Typische bekannte Verarbeitungssysteme benutzten bei der Wiedergabe von 2D-Bildern nur Ganzzahldaten in der Geo­ metrie- und Rasterphase, da der kleinere Bereich der Koordi­ natenwerte nicht die Genauigkeit einer Gleitkommaarithmetik erforderte. Folglich wurden die Graphikdaten unter Verwen­ dung einer SIMD-Verarbeitung von Ganzzahldaten wiedergege­ ben, was bedeutete, daß üblicherweise keine Konvertierung zwischen dem Ganzzahlformat und dem Gleitkommaformat erfor­ derlich war.
Bei der Wiedergabe von 3D-Bildern jedoch werden die in der Geometriephase durchgeführten Datenverarbeitungen auf­ grund des großen Bereichs von Werten, die den Koordinaten­ raum definieren, und aufgrund der innerhalb dieses Bereichs erforderlichen Genauigkeit, um die wiedergegebenen Bilder genau zu plazieren, üblicherweise unter Verwendung einer Gleitkommaarithmetik durchgeführt. Da die Farbkomponentenda­ ten oftmals zusammen mit den zugehörigen Positionsdaten ge­ speichert und bearbeitet werden, ist es vorzuziehen, die Operationen an den die Farbkomponentendaten enthaltenden Ra­ sterdaten unter Verwendung von Gleitkommaarithmetik durchzu­ führen. Bei Abschluß der Verarbeitung werden die Koordinaten der zusammengesetzten Bilder der Rasterschaltung unter Ver­ wendung des Gleitkommaformats zur Verfügung gestellt. Im Ge­ gensatz dazu werden die Farbkomponentendaten der Raster­ schaltung unter Verwendung des Ganzzahlformats zur Verfügung gestellt. Folglich werden die zur Wiedergabe des Bildes ver­ wendeten Farbkomponentendaten von dem Gleitkommaformat in das Ganzzahlformat konvertiert, um eine Bildanzeige zu er­ zeugen.
Das Problem bei den bekannten, eine SIMD-Verarbeitung von 3D-Graphikdaten verwendenden Prozessoren besteht darin, daß, während die parallele Verarbeitung an Gleitkommadaten durchgeführt werden kann, die Konversion der Gleitkommadaten in Ganzzahldaten für die Rasterung einen Engpaß der Verar­ beitungspipeline erzeugt, weil die bekannten Algorithmen die Konvertierungen sequentiell durchführen. Ein bekanntes Ver­ fahren, das sich mit diesem Problem befaßt, dupliziert die Gleitkommaausführungsressourcen des Prozessors. Diese Dupli­ zierung der Ressourcen gestattet es, daß zwei Gleitkommapi­ pelines zur gleichen Zeit ausführen, wobei die Gleitkommada­ ten jedes Zweiges der Pipeline gleichzeitig sequentiell in das Ganzzahlformat konvertiert werden können. Während die Verzögerung infolge des Konvertierungsausführungsengpasses bei Verwendung zusätzlicher Hardware verringert werden kann, erhöht die zusätzliche Hardware die Kosten und die Größe des Systems, während sie zugleich die Gesamtkomplexität des Sy­ stems erhöht.
Die Aufgabe der Erfindung ist es, die genannten Nach­ teile zu vermeiden.
Diese Aufgabe wird erfindungsgemäß durch ein Verfahren mit den Merkmalen des Patentanspruchs 1 bzw. durch die Aus­ führung von Befehlen mit den Merkmalen der Patentansprüche 10 bzw. 17 gelöst.
Es werden ein Verfahren und eine Einrichtung zum Kon­ vertieren einer Zahl zwischen einem Gleitkommaformat und ei­ nem Ganzzahlformat beschrieben. Zahlen werden in dem Ganz­ zahlformat in einem Register eines ersten Satzes von Archi­ tekturregistern in einem skalaren Format gespeichert. Zumin­ dest eine der Zahlen in dem skalaren Format wird in eine Zahl in dem Gleitkommaformat konvertiert. Die Zahl in dem Gleitkommaformat wird in ein Register eines zweiten Satzes von Architekturregistern in einem gepackten Format hinein­ versetzt.
Vorteilhafte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
Im folgenden wird die Erfindung anhand von in der Zeichnung dargestellten Ausführungsbeispielen näher be­ schrieben. In der Zeichnung zeigen:
Fig. 1 ein Computersystem eines Ausführungsbeispiels;
Fig. 2 einen Prozessor eines Ausführungsbeispiels;
Fig. 3 eine Doppel-Daten-Pipeline eines Ausführungs­ beispiels;
Fig. 4 eine Cache-Architektur eines Prozessors eines Ausführungsbeispiels;
Fig. 5 ein von 128-Bit-Multimedia-Erweiterungsregi­ stern eines Ausführungsbeispiels verwendetes binäres Gleit­ kommaformat;
Fig. 6 die Operation eines gepackten Befehls an ein Paar von Operaden;
Fig. 7 die Operation eines skalaren Befehls an einem am geringsten bewerteten Paar zweier Operanden;
Fig. 8 eine gepackte Shuffle-Operation (Misch- oder Verschiebeoperation) gemäß einem SHUFPS-Befehl eines Ausfüh­ rungsbeispiels;
Fig. 9 einen Registersatz und zugehörige Konvertie­ rungsbefehle eines Ausführungsbeispiels;
Fig. 10 ein Ablaufdiagramm der Konvertierung einer Zahl aus einem skalaren Format in ein Gleitkommaformat gemäß einem CVTSI2SS-Befehl eines Ausführungsbeispiels;
Fig. 11 ein Ablaufdiagramm der Konvertierung einer Zahl aus einem Gleitkommaformat in ein skalares Ganzzahlfor­ mat gemäß dem CVTSS2SI- und dem CVTTSS2SI-Befehl eines Aus­ führungsbeispiels;
Fig. 12 ein Ablaufdiagramm des Konvertierens einer Zahl aus einem gepackten Ganzzahlformat in ein gepacktes Gleitkommaformat gemäß einem CVTPI2PS-Befehl eines Ausfüh­ rungsbeispiels;
Fig. 13 ein Ablaufdiagramm des Konvertierens einer Zahl aus einem gepackten Gleitkommaformat in ein gepacktes Ganzzahlformat gemäß dem CVTPS2PI- und dem CVTTPS2PI-Befehl eines Ausführungsbeispiels;
Fig. 14 ein Ablaufdiagramm eines Befehls einer zweiten Variante, der zum Konvertieren einer Zahl aus einem gepack­ ten Gleitkommaformat in ein gepacktes Ganzzahlformat gemäß einem CVTPS2PW-Befehl eines Ausführungsbeispiels verwendet wird;
Fig. 15 ein Ablaufdiagramm einer dritten Variante, die zum Konvertieren einer Zahl aus einem gepackten Gleitkom­ maformat in ein gepacktes Ganzzahlformat gemäß einem CVTPS2PB-Befehl eines Ausführungsbeispiels verwendet wird;
Fig. 16 ein Ablaufdiagramm einer Beleuchtungsberech­ nung in einer 3D-Geometrie, bei welcher die Befehle eines Ausführungsbeispiels verwendet werden;
Fig. 17 ein Ablaufdiagramm für eine parallele Konver­ tierung von mehreren Farbwerten aus einem Gleitkommaformat einfacher Genauigkeit in ein spezielles Ganzzahlformat gemäß einem Ausführungsbeispiel;
Fig. 18 ein Datenflußdiagramm einer parallelen Konver­ tierung graphischer Farbdaten unter Verwendung eines DVTPS2PI-Befehls gemäß einem Ausführungsbeispiel;
Fig. 19 ein Datenflußdiagramm einer parallelen Konver­ tierung graphischer Farbdaten unter Verwendung eines VTPS2PW-Befehls gemäß einem Ausführungsbeispiel; und
Fig. 20 ein Datenflußdiagramm einer parallelen Konver­ tierung graphischer Farbdaten unter Verwendung eines VTPS2PB-Befehls gemäß einem Ausführungsbeispiel.
Es werden ein Verfahren und eine Vorrichtung zum Durchführen einer parallelen Konvertierung von 3D-Graphikda­ ten beschrieben, wobei die Graphikdaten zur Verarbeitung parallel zwischen verschiedenen Sätzen von Architekturregi­ stern (d. h., einer vorgegebenen Architektur entsprechenden Registern) konvertiert werden. Als solches können skalare Ganzzahldaten oder Speicherdaten in ein gepacktes Gleitkom­ maformat parallel unter Verwendung der hier vorgesehenen Be­ fehle konvertiert werden. Die gepackten Gleitkommadaten wer­ den bearbeitet, um die bei der 3D-Bildwiedergabe verwendeten Graphikdaten zur Verfügung zu stellen. Nach der Bearbeitung werden die gepackten Gleitkommadaten parallel in ein gepack­ tes Ganzzahlformat unter Verwendung der hier beschriebenen Befehle konvertiert. Die gepackten Ganzzahldaten werden ver­ wendet, um eine Bildanzeige wiederzugeben.
Bei den beschriebenen Ausführungsbeispielen werden in einem Architekturregister in einem Format vorliegende Daten in ein anderes Format konvertiert und in ein anderes Archi­ tekturregister hineinversetzt. Aus dem Versetzen eines Er­ gebnisses einer Konvertierung in ein Architekturregister statt in einen Speicherplatz lassen sich Vorteile ziehen. Das Versetzen der Konvertierungsergebnisse in ein Architek­ turregister macht Verwendungsmodelle, die einen Verbrauch eines Registerergebnisses vorziehen, effektiver. Beispiels­ weise wäre es im Falle der Durchführung drei-dimensionaler Operationen unter Verwendung von Gleitkomma-Einzelbefehls Mehrfachdaten (SIMD)-Registern und der Durchführung von Ra­ sterungen unter Verwendung von SIMD-Registern unbequem, daß die Konvertierungszwischenergebnisse im Speicher gespeichert würden. Dies beruht darauf, daß die Konvertierungsergebnisse aus dem Speicher sofort erforderlich wären, was eine Spei­ cherzugriffsoperation, die die Ergebnisse zurück in ein Re­ gister versetzen würde, erfordern würde. Wenn es jemals er­ forderlich ist, ein Konvertierungsergebnis in den Speicher zu bewegen, so kann dies einfach mit einem Speichere-Befehl ausgeführt werden.
Darüber hinaus macht das Anordnen der Konvertierungser­ gebnisse in einem Register die Verwendung der Konvertie­ rungsbefehle bei einigen Systemen flexibler. Insbesondere bei einigen Prozessorarchitekturen kann eine Berechnungsope­ ration den Speicher nicht sowohl als Quelle eines Operanden als auch als Ziel des Ergebnisses aufweisen. Wenn, wie bei den beschriebenen Ausführungsbeispielen, ein Architekturre­ gister das Ziel ist, kann eine Konvertierungsoperation den Speicher als eine Operandenquelle aufweisen.
Insbesondere werden ein Verfahren und eine Vorrichtung zum Konvertieren von Daten zwischen einem gepackten Gleit­ kommaformat einfacher Genauigkeit und einem skalaren Format beschrieben. Bei einem Ausführungsbeispiel werden die Daten des gepackten Gleitkommaformats einfacher Genauigkeit in Ar­ chitekturregistern eines Satzes von 128-Bit-Architekturregi­ stern angeordnet, während die Daten skalaren Formats in 32- Bit-Architekturregistern oder im Speicher angeordnet werden. Darüber hinaus werden ein Verfahren und eine Vorrichtung zum Konvertieren von Daten zwischen einem gepackten Gleitkom­ maformat einfacher Genauigkeit und einem gepackten Ganzzahl­ format beschrieben. Bei einem Ausführungsbeispiel werden die gepackten 32-Bit-Daten des Gleitkommaformats einfacher Ge­ nauigkeit in Architekturregister eines Satzes von 128-Bit- Architekturregistern versetzt, während die gepackten 32-Bit- Ganzzahlformatdaten in Architekturregister eines Satzes von 64-Bit-Architekturregistern angeordnet werden. Bei anderen Ausführungsbeispielen können die Architekturregister von ab­ weichender Größe sein. Beispielsweise können 128-Bit-Regi­ ster anstelle von 64-Bit-Registern verwendet werden. Darüber hinaus werden ein Verfahren und eine Vorrichtung zum Verwen­ den der Konvertierungsbefehle bei der parallelen Konvertie­ rung mehrerer Farbkomponentendaten oder -werte aus dem ge­ packten Gleitkommaformat einfacher Genauigkeit in ein ge­ packtes Ganzzahlformat beschrieben. Beabsichtigte Vorteile der parallelen Konvertierungsbefehle können eine verringerte Verarbeitungszeit gegenüber sequentiellen Konvertierungs­ techniken, eine verringerte Anzahl von Befehlen bei der Ver­ arbeitung von Graphikdaten, das fehlende Erfordernis dupli­ zierter Gleitkommaausführungsressourcen und eine höhere An­ wendungsverarbeitungseffizienz umfassen.
Fig. 1 veranschaulicht ein Computersystem 100 eines Ausführungsbeispiels. Das Computersystem 100 ist ein Bei­ spiel einer Art eines Computersystems, das bei Ausführungs­ formen der vorliegenden Erfindung verwendet werden kann. An­ dere, nicht gezeigte Arten von Computersystemen, die abwei­ chend konfiguriert sind, könnten ebenfalls bei Ausführungs­ beispielen der vorliegenden Erfindung verwendet werden. Das Computersystem 100 weist einen Bus 101 oder eine andere Kom­ munikationshardware und -software zum Austauschen von Infor­ mationen und einen mit dem Bus 101 gekoppelten Prozessor 109 zum Verarbeiten von Informationen auf. Der Professor 109 re­ präsentiert eine zentrale Verarbeitungseinheit (CPU) eines beliebigen Architekturtyps, einschließlich einer Architektur mit komplexem Befehlssatz (CISC) oder reduziertem Befehls­ satz (RISC) . Der Prozessor 109 weist eine Ausführungseinheit 130, einen Registersatz 150, einen Cache-Speicher 160, einen Decodierer 165 und einen internen Bus 170 auf. Die Bezeich­ nung "Register" wird hier verwendet, um einen prozessoreige­ nen Speicherplatz zu bezeichnen, der als Teil der Makrobe­ fehle benutzt wird, um Operanden zu identifizieren (auch als Architekturregister bezeichnet). Mit anderen Worten, die hier bezeichneten Register sind diejenigen, die in dem Pro­ zessor von außen (aus einer Perspektive eines Programmie­ rers) sichtbar sind. Jedoch können die hier beschriebenen Register innerhalb des Prozessors durch eine Schaltungsan­ ordnung implementiert werden, die eine beliebige Anzahl un­ terschiedlicher Techniken, wie beispielsweise spezielle phy­ sikalische Register, dynamisch zugewiesene physikalische Re­ gister unter Verwendung einer Registerumbenennung, Kombina­ tionen spezieller und dynamisch zugewiesener physikalischer Register, etc., benutzt. Der Registersatz 150 kann einen einzelnen Registersatz umfassen, der mehrere Architekturre­ gister aufweist, oder er kann mehrere Registersätze, die je­ weils mehrere Architekturregister aufweisen, umfassen.
Das Computersystem 100 weist ferner einen Speicher mit wahlfreiem Zugriff (RAM) oder ein anderes dynamisches Spei­ cherbauelement in dem mit dem Bus 101 gekoppelten Hauptspei­ cher 104 zum Speichern von Informationen und durch den Pro­ zessor 109 auszuführenden Befehlen auf. Der Hauptspeicher 104 kann zum Speichern temporärer Variablen oder anderer Zwischeninformationen während der Ausführung von Befehlen durch den Prozessor 109 verwendet werden. Das Computersystem 100 weist ferner einen mit dem Bus 101 gekoppelten Nur-Lese- Speicher (ROM) 106 oder eine andere statische Speicherein­ richtung zum Speichern statischer Informationen und Befehle für den Prozessor 109 auf.
Eine Datenspeichereinrichtung 107, wie beispielsweise eine magnetische oder optische Platte und ein zugehöriges Plattenlaufwerk, ist mit dem Bus 101 gekoppelt. Das Compu­ tersystem 100 kann über den Bus 101 mit einer Anzeigeein­ richtung 121 zum Anzeigen von Informationen an einen Benut­ zer des Computersystems 100 gekoppelt sein. Die Anzeigeein­ richtung 121 kann einen Einzelbildpuffer, spezialisierte Graphikwiedergabeeinrichtungen, eine Kathodenstrahlröhre (CRT) und eine Flachbildschirmanzeige enthalten. Eine alpha­ numerische Eingabeeinrichtung 122, die alphanumerische oder andere Tasten aufweist, kann zum Austauschen von Informatio­ nen und Übermitteln von Kommandoauswahlen an den Prozessor 109 mit dem Bus 101 gekoppelt sein. Eine andere Art einer Benutzereingabeeinrichtung ist eine Cursorsteuerung 123, welche eine Maus, einen Trackball, einen Pen, einen Touch- Screen oder Cursorrichtungstasten zum Übermitteln von Rich­ tungsinformationen und Kommandoauswahlen an den Prozessor 109 und zum Steuern der Cursor-Bewegung auf der Anzeigeein­ richtung 121 umfassen kann. Die Eingabeeinrichtung eines Ausführungsbeispiel hat zwei Freiheitsgrade in zwei Achsen, einer ersten oder X-Achse und einer zweiten oder Y-Achse, was die Spezifikation von Positionen in einer Ebene gestat­ tet.
Eine Hardcopy-Einrichtung 124 kann mit dem Bus 101 ge­ koppelt sein und wird zum Ausdrucken von Befehlen, Daten und anderen Informationen auf einem Medium, wie beispielsweise Papier, Film oder ähnliche Arten, verwendet. Zusätzlich kann das Computersystem 100 mit einer Einrichtung zur Klangauf­ zeichnung und -wiedergabe 125 gekoppelt sein. Die Klangauf­ zeichnung kann unter Verwendung eines Audiodigitalisierers durchgeführt werden, der mit einem Mikrofon gekoppelt ist, und die Klangwiedergabe kann unter Verwendung eines Laut­ sprechers ausgeführt werden, der mit einem Digital-Analog- Wandler zur Wiedergabe der digitalisierten Klänge gekoppelt ist.
Das Computersystem 100 kann als Terminal in einem Com­ puternetzwerk fungieren, wobei das Computersystem 100 ein Computer-Subsystem eines Computernetzwerks ist. Das Compu­ tersystem 100 kann darüber hinaus eine Videodigitalisie­ rungseinrichtung 126 aufweisen. Die Videodigitalisierungs­ einrichtung 126 kann verwendet werden, um Videobilder auf zu­ nehmen, die an andere mit dem Computernetzwerk gekoppelte Computersysteme übermittelt werden können.
Der Prozessor 109 kann darüber hinaus einen Befehlssatz unterstützen, welcher mit dem x86- und/oder x87-Befehlssatz kompatibel ist, d. h. mit denjenigen Befehlssätzen, die durch vorhandene Mikroprozessoren, wie beispielsweise den durch Intel Corporation in Santa Clara, Kalifornien, hergestellten Pentium-Prozessor, verwendet werden. So unterstützt bei ei­ nem Ausführungsbeispiel der Prozessor 109 sämtliche in der Intel-Architektur (IATM), wie sie von der Intel Corporation in Santa Clara definiert ist, unterstützten Operationen. Siehe "Microprocessors", Intel Data Books, Band 1 und 2, 1992 und 1993, erhältlich bei der Intel Corporation, Santa Clara, Kalifornien. Im Ergebnis kann der Prozessor 109 vor­ handene x86- und/oder x87-Operationen zusätzlich zu den er­ findungsgemäßen Operationen unterstützen. Alternative Aus­ führungsbeispiele der Erfindung können die erfindungsgemäßen Operationen zu anderen Befehlssätzen hinzufügen.
Die Ausführungseinheit 130 wird zum Ausführen von von dem Prozessor 109 empfangenen Befehlen verwendet. Neben den üblicherweise bei Mehrzweckprozessoren implementierten Befehlen erkennt die Ausführungseinheit 130 Befehle eines Befehlssatzes 140 zum Durchführen von Operationen an gepackten Datenformaten. Der "gepackte" Befehlssatz 140 kann Befehle zum Unterstützen von Packoperationen, Entpackoperationen, gepackten Additionsoperationen, gepackten Subtraktionsoperationen, gepackten Multiplikationsoperationen, gepackten Schiebeoperationen, gepackten Vergleichsoperationen, Multiplikations-Additions- Operationen, Multiplikations-Subtraktions-Operationen, Mengenzähloperationen und eines Satzes gepackter logischer Operationen umfassen. Der Satz gepackter logischer Operationen kann ein gepacktes UND, ein gepacktes UNDNICHT, ein gepacktes ODER und ein gepacktes XOR umfassen. Andere Ausführungsbeispiele können Untermengen oder Kombinationen dieser Befehle umfassen.
Diese Befehle sorgen für die Leistungsfähigkeit der von vielen der bei Multimedia-Anwendungen verwendeten Algorith­ men erforderlichen Operationen, die gepackte Daten verwen­ den. So können diese Algorithmen so geschrieben werden, daß sie die erforderlichen Daten packen und die erforderlichen Operationen an den gepackten Daten durchführen, wobei es nicht erforderlich ist, daß die gepackten Daten entpackt werden, damit eine oder mehrere Operationen an jeweils einem Datenelement durchgeführt werden können. Folglich bringen diese Algorithmen Leistungsvorteile gegenüber bekannten Mehrzweckprozessoren, die nicht gepackte Datenoperationen, wie sie von bestimmten Multimedia-Algorithmen gefordert wer­ den, unterstützen. Wenn beispielsweise ein Multimedia-Algo­ rithmus eine Operation erfordert, die nicht an gepackten Da­ ten durchgeführt werden kann, muß das bekannte Programm im Unterschied zu dem erfindungsgemäßen Programm die Daten ent­ packen, die Operation an den getrennten Elementen einzeln durchführen und dann die Ergebnisse in ein gepacktes Ergeb­ nis für eine weitere gepackte Verarbeitung packen.
Die Ausführungseinheit 130 ist mit einem Registersatz 150 unter Verwendung eines internen Busses 170 gekoppelt. Der Registersatz 150 repräsentiert einen Speicherbereich auf dem Prozessor 109 zum Speichern von Informationen, die Daten umfassen. Darüber hinaus ist die Ausführungseinheit 130 mit einem Cache 160 und einem Decodierer 165 gekoppelt. Der Cache 160 wird verwendet, um Daten und Steuersignale aus beispielsweise dem Hauptspeicher 104 zwischenzuspeichern. Der Decodierer 165 wird zum Decodieren von durch den Prozes­ sor 109 empfangenen Befehlen in Steuersignale und Mikrobefehlscodeeintrittspunkten verwenden. In Abhängigkeit von diesen Steuersignalen und den Mikrobefehlscode- Eintrittspunkten führt die Ausführungseinheit 130 die gewünschten Operationen durch. Wenn beispielsweise ein Additionsbefehl empfangen wird, veranlaßt der Decodierer 165 die Ausführungseinheit 130, die geforderte Addition durchzuführen; wenn ein Subtraktionsbefehl empfangen wird, veranlaßt der Decodierer 165 die Ausführungseinheit 130, die erforderliche Subtraktion durchzuführen. Während somit die Ausführung verschiedener Befehle durch den Decodierer 165 und die Ausführungseinheit 130 durch eine Reihe von Wenn- Dann-Aussagen repräsentiert ist, erfordert bei einem Ausführungsbeispiel die Ausführung eines Befehls keine serielle Verarbeitung dieser Wenn-Dann-Aussagen.
Der Registersatz 150 wird zum Speichern von Informatio­ nen verwendet, die Steuer- und Statusinformationen, skalare Daten, Ganzzahldaten, gepackte Ganzzahldaten und gepackte Gleitkommadaten einschließen. Bei einem Ausführungsbeispiel kann der Registersatz 150 Speicherregister, Steuer- und Sta­ tusregister, skalare Ganzzahlregister, skalare Gleitkommare­ gister, gepackte Gleitkommaregister einfacher Genauigkeit, gepackte Ganzzahlregister und Befehlszeigerregister umfas­ sen, die mit dem internen Bus 170 gekoppelt sind. Bei einem Ausführungsbeispiel sind die skalaren Ganzzahlregister 32- Bit-Register, die gepackten Gleitkommaregister einfacher Ge­ nauigkeit 128-Bit-Register und die gepackten Ganzzahlregi­ ster 64-Bit-Register.
Bei einem Ausführungsbeispiel werden die gepackten Ganzzahlregister dem gleichen Speicherraum zugewiesen (aliased) wie die skalaren Gleitkommaregister. Separate Re­ gister werden für die gepackten Gleitkommadaten verwendet.
Bei Verwenden der Register des Registersatzes 150 muß der Prozessor 109 die Register jeweils entweder als stapel-refe­ renzierte Gleitkommaregister oder als nicht-stapel-referen zierte gepackte Ganzzahlregister behandeln. Bei diesem Aus­ führungsbeispiel ist ein Mechanismus enthalten, der dem Pro­ zessor 109 gestattet, zwischen dem Betreiben dieser Register als stapel-referenzierte Gleitkommaregister oder als nicht­ stapel-referenzierte gepackte Datenregister umzuschalten. Bei einem anderen derartigen Ausführungsbeispiel kann der Prozessor 109 gleichzeitig an den Registern als nicht-sta­ pel-referenzierte Gleitkommaregister und gepackte Datenregi­ ster arbeiten. Darüber hinaus können bei einem alternativen Ausführungsbeispiel diese gleichen Register zum Speichern skalarer Ganzzahldaten verwendet werden.
Ein alternatives Ausführungsbeispiel kann beispielswei­ se separate Register für die gepackten Ganzzahlregister und die skalaren Datenregister enthalten. Ein alternatives Aus­ führungsbeispiel kann einen ersten Registersatz enthalten, bei dem jedes Register Steuer- und Statusinformationen spei­ chert, und einen zweiten Registersatz, bei dem jedes Regi­ ster skalare Ganzzahldaten, gepackte Ganzzahldaten und ge­ nackte Gleitkommadaten speichern kann.
Die Register des Registersatzes 150 können so implementiert sein, daß sie eine unterschiedliche Anzahl von Registern und Register unterschiedlicher Größe enthalten. Beispielsweise können die Ganzzahlregister bei einem Ausfüh­ rungsbeispiel so implementiert sein, daß sie 32 Bits spei­ chern, während andere Register so implementiert sind, daß sie 128 Bits speichern, wobei sämtliche 128 Bits zum Spei­ chern von Gleitkommadaten verwendet werden, während nur 64 Bits zum Speichern von gepackten Daten verwendet werden. Bei einem alternativen Ausführungsbeispiel können die Ganzzahl­ register jeweils 32 oder 64 Bits enthalten.
Fig. 2 zeigt einen Prozessor 109 eines Ausführungsbei­ spiels. Der Prozessor 109 weist eine Busschnittstellenein­ heit 202 auf, die den Prozessor 109 mit einem externen Bus 204 koppelt, wobei der externe Bus 204 verwendet wird, um mit anderen Systemeinrichtungen zu kommunizieren. Die Bus­ schnittstelleneinheit 202 führt Bustransaktionen durch, wenn sie durch den L2-Cache 206 oder den Prozessorkern 208 ange­ fordert werden. Darüber hinaus koppelt die Busschnittstel­ leneinheit 202 den Prozessor 109 mit einem einheitlichen L2- Cache 206 unter Verwendung eines Rückseitenbusses 210. Der L2-Cache 206 kann sich außerhalb des Chips befinden und kann bei einem Bruchteil der Geschwindigkeit des Kernprozessors 208 laufen. Der L2-Cache 206 eines Ausführungsbeispiels weist 512 Kbytes auf. Der L2-Cache 206 bedient Fehlversuche des L1-Daten-Caches 220 und des L1-Befehlscode-Caches 222 und kann Anforderungen an die Busschnittstelleneinheit 202 ausgeben.
Die Busschnittstelleneinheit 202 eines Ausführungsbei­ spiels ist mit dem Prozessorkern 208 unter Verwendung eines L1-Daten-Caches 220 und eines L1-Befehlscode-Caches 222 ge­ koppelt, die jeweils 16 Kbyte groß sind. Die L1-Caches 220, 222 sind primäre Cache-Speicher, die bei einem Cache-Treffer Daten in einem Taktzyklus zur Verfügung stellen können. Ein Cache-Treffer tritt auf, wenn die angeforderten Daten be­ reits in dem Cache sind; anderenfalls tritt ein Cache-Fehl­ versuch auf, und die Daten müssen von dem Hauptspeicher oder dem L2- oder sekundären Cache 206 herangebracht werden. Der L1-Daten-Cache 220 bedient Datenlade- und Speichere-Anforde­ rungen, die von den Lade- und -speichere-Ausführungseinhei­ ten ausgegeben werden; sofern ein Fehlversuch auftritt, lei­ tet der L1-Daten-Cache 220 die Anforderungen an den L2-Cache 206 weiter. Der L1-Befehlscode-Cache 222 bedient Befehlsher­ anholanforderungen, die von dem Befehls-vorab-Heranholer ausgegeben werden.
Der Prozessorkern 208 weist eine Logik auf, die verant­ wortlich ist für: Befehlsheranholen; Verzweigungsvorhersage; Zergliederung (Parsing) des Befehlsstroms; Decodierung von Befehlen in Befehle eines reduzierten Befehlssatzes (RISC- Befehle) bzw. Mikrobefehle; Abbilden der Zugriffe auf die Registersätze; und Abfertigung, Ausführung und Abschluß (Retirement) von Mikrobefehlen. Der Prozessorkern 208 kann bei Geschwindigkeiten von 233, 266 und 300 MHz laufen. Der Prozessor 109 unterstützt eine Außer-der-Reihe-Ausführung, bei der Mikrobefehle auf der Grundlage der Bereitschaft ih­ rer Daten und nicht in der Reihenfolge, in welcher sie in die Ausführungseinheit eintreten, ausgeführt werden. Eine Asynchrone Prozessor-Interrupt-Steuerungs (APIC) -Einheit 230 empfängt Interrupt-Anforderungen und priorisiert und leitet diese Anforderungen an den Prozessorkern zur Ausführung wei­ ter.
Der Prozessor eines Ausführungsbeispiels ist ein fort­ geschrittener superskalarer Prozessor, der um zwei Mehr­ zweck-Ganzzahl-Pipelines und eine Pipeline-Gleitkommaeinheit herum aufgebaut ist, die es dem Prozessor gestatten, zwei Ganzzahlbefehle gleichzeitig auszuführen. Der Prozessor kann zwei Befehle in jedem Taktzyklus ausgeben, einen in jede -Pipeline.
Fig. 3 zeigt eine Dual-Daten-Pipeline 300 eines Aus­ führungsbeispiels. Andere Ausführungsbeispiele können eine Pipeline oder mehr als zwei Pipelines aufweisen. Die erste logische Pipeline wird als U-Pipeline 302 bezeichnet, und die zweite logische Pipeline als V-Pipeline 304. Während des Dekodierens irgendeines vorgegebenen Befehls werden die zwei nächsten Befehle überprüft und, sofern dies möglich ist, werden sie so ausgegeben, daß der erste Befehl in der U- Pipeline 302 und der zweite Befehl in der V-Pipeline 304 ausgeführt wird. Wenn es nicht möglich ist, aus den zwei Be­ fehlen ein derartiges Paar zu bilden, wird der nächste Be­ fehl an die U-Pipeline 302 und kein Befehl an die V-Pipeline 304 ausgegeben. Wenn die Befehle in den zwei Pipelines 302, 304 ausgeführt werden, ist ihr Verhalten das gleiche, wie denn sie sequentiell ausgeführt würden. Die Prozessor-Mikro­ architektur weist folgende Stufen auf: Befehls-Vorab-Heran­ holen 310, Befehls-Heranholen 312, Befehls-Decodierung, Paarbildung und Abfertigung 314, Adreßerzeugung 316, Operan­ denlesen und Ausführung 318 und Rückschreiben 320. Die Be­ fehlsdecodierlogik decodiert, plant und gibt die Befehle bei einer Rate von bis zu zwei Befehlen pro Taktzyklus aus.
Fig. 4 zeigt eine Cache-Architektur eines Prozessors eines Ausführungsbeispiels. Der Prozessor weist eine zwölfstufige Pipeline-Architektur mit einem Außer-der-Reihe- Ausführungskern auf. Darüber hinaus weist der Prozessor ei­ nes Ausführungsbeispiels drei parallele Decodierer, fünf Ausführungsports 0-4, einen Verzweigungszielpuffer (BTB; branch target buffer) 402 mit 512 Einträgen, vier 32.-Byte- Schreibpuffer 404, einen Satz von 32-Bit-Skalarregistern 414, einen Satz von acht 64-Bit-Registern 410, einen Satz von acht 128-Bit-Multimedia-Erweiterungs-Registern 412 und einen Rückkehrstapelpuffer (RSB; return stack buffer) 406 auf. Der BTB 402 enthält eine Vorgeschichte von Verzweigun­ gen, die während der Ausführung einer Anwendung falsch vor­ hergesagt wurden. Er speichert die Adressen der falsch vor­ hergesagten Verzweigungsbefehle, die Verzweigungszieladres­ sen und das Ergebnis der falschen Vorhersage. Wenn der glei­ che Befehl sich erneut zeigt, verwendet die Verzweigungsvor­ hersageeinheit diese Informationen, um den Ausgang der Ver­ zweigung vorherzusagen. Der RSB 406 kann die Rückkehradres­ sen für Prozeduren richtig vorhersagen, die von unterschied­ lichen Orten nacheinander aufgerufen wurden.
Wie zuvor erörtert, weist der Prozessor zwei Ausfüh­ rungspipelines, die U-Pipeline 302 und die V-Pipeline 304, auf. Diese Pipelines 302-304 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 jeweils in einen beliebigen der vier Schreibpuffer 404 schreiben. Bei einer Pipeline werden Operationen über­ lappt, d. h., der Prozessor unterteilt die Befehlsausführung in mehrere Stufen, die ein Heranholen, Decodieren, Ausführen und Rückschreiben umfassen. Im Ergebnis kann der Prozessor mehrere Befehle gleichzeitig jeweils in unterschiedlichen Ausführungsstufen ausführen. Beispielsweise kann sich ein Befehl in der Vorab-Heranhol-Stufe, einer in der Decodier- Stufe, einer in der Ausführungs-Stufe und einer in der Rück­ schreib-Stufe befinden. Hinzu kommt die oben erörterte pa­ rallele Verarbeitung, bei der ein einzelner Befehl an mehre­ ren Datenelementen arbeitet, was oftmals als SIMD (single instruction multiple data) bezeichnet wird.
Der Satz von acht 64-Bit-Registern 410 eines Ausfüh­ rungsbeispiels gestattet die parallele Verarbeitung, bei der einzelner Befehl an mehreren Datenelementen arbeitet. Dieser Prozeß bildet einen Vorteil für solche Anwendungen, die die gleiche Operation wiederholt an einem zusammenhängenden Block von Daten durchführen, wie dies beispielsweise bei Multimedia-Algorithmen der Fall ist. Die 64-Bit-Register 410 können auf die Register 414 abgebildet oder "aliased" wer­ den. Da die 64-Bit-Register 410 ein Teil des Gleitkommazu­ stands sind, gibt es keinen neuen Zustand. Wenn die 64-Bit- Register 410 auf die 32-Bit-Skalarregister 414 abgebildet werden, interpretieren Multimedia-Erweiterungsbefehle beim Zugreifen auf die abgebildeten Register (aliased register) die Daten als gepackten Ganzzahlbytes oder -worte und Gleit­ kommabefehle interpretieren die gleichen Daten als Mantis­ senteil einer Gleitkommazahl. Gleichermaßen wichtig ist, daß die Multimedia-Erweiterungsbefehle Zugriff auf die acht spe­ ziellen 64-Bit-Register 410 zusätzlich zu den acht 32-Bit- Skalarregistern 414 haben.
Bei einem Ausführungsbeispiel sind drei gepackte Daten- Dypen und ein 64-Bit-Quadwort für die 64-Bit-Register 410 definiert. Jedes Element innerhalb des gepackten Datentyps ist eine Festkommaganzzahl. Der Benutzer steuert den Ort des Festkommas innerhalb jedes Elements und ist für seine Pla­ zierung in der gesamten Berechnung verantwortlich. Dies stattet den Benutzer mit der Flexibilität zum Wählen und Än­ dern des Festkommaformats während der Anwendung aus, um den dynamischen Bereich der Werte vollständig zu steuern.
Die 64-Bit-Register 410 enthalten gepackte Festkomma­ ganzzahldaten. Auf jedes 64-Bit-Multimedia-Erweiterungsregi­ ster MM0-MM7 kann direkt zugegriffen werden, indem ein Regi­ stername in den Befehlen bezeichnet wird. In bezug auf den Registerzugriff werden diese Register MM0-MM7 wahlfrei zu­ greifbare Register, d. h., auf sie wird nicht über ein Sta­ pelmodell zugegriffen, wie das bei den Gleitkommabefehlen der Fall ist. Befehle, die einen Speicheroperanden spezifi­ zieren, verwenden die 32-Bit-Skalarregister 414, um den Ope­ randen zu adressieren.
Da die 64-Bit-Register 410 in Wirklichkeit die Gleit­ kommaregister verwenden, können Anwendungen, die die Multi­ media-Erweiterungstechnologie benutzen, insgesamt 16 Ganz­ zahlregister verwenden. Acht Register sind die 64-Bit-Multi­ media-Erweiterungs-Gleitkommaregister MM0-MM7, die gepackte Daten enthalten, und acht Register sind die 32-Bit-Skalarre­ gister 414, die für unterschiedliche Operationen, wie bei­ spielsweise Adressierung, Schleifensteuerung oder irgendwel­ che anderen Datenverarbeitungen, verwendet werden können.
Speicher- und Ganzzahlregisteroperationen unterstützen die Bewegung von Daten zwischen den 64-Bit-Registern 410 und den 32-Bit-Skalarregistern 414 oder dem Speicher. Die 32- Bit- und 64-Bit-Speicherzugriffsunterstützung in der U-Pipe­ line 302 wird zum Durchführen von 32-Bit- und 64-Bit-Spei­ cherübertragungen zu und aus den 64-Bit-Registern 410 ver­ wendet. Darüber hinaus verwendet der Prozessor die U-Pipe­ line 302 für Übertragungen zwischen den Ganzzahl- und Multi­ media-Verarbeitungsdatenpfaden.
Die den 64-Bit-Registern 410 entsprechenden Befehle ar­ beiten parallel an den in die 64-Bit-Register gepackten Da­ tentypen der gepackten Bytes, gepackten Worte, gepackten Doppelworte und des Quadworts. Der Datentyp der gepackten Bytes weist acht aufeinanderfolgend gepackte Bytes in einem 64-Bit-Register bzw. acht Elemente pro Operand auf. Der Da­ tentyp des gepackten Worts weist vier gepackte aufeinander­ folgende Worte in einem 64-Bit-Register oder vier Elemente pro Operand auf. Der Datentyp des gepackten Doppelworts eist zwei gepackte aufeinanderfolgende Doppelworte in einem 64-Bit-Register oder zwei Elemente pro Operand auf. Der Quadwort-Datentyp weist ein Quadwort in einem 64-Bit-Regi­ ster oder ein Element pro Operand auf. Die Befehle führen vorzeichenbehaftete oder vorzeichenlose arithmetische, logi­ sche, Pack- und Entpack-Operationen innerhalb der Datentyp­ begrenzungen aus. Darüber hinaus gestatten die Befehle eine Sättigung oder ein Umlaufen, um Überlauf- und Unterlauf-Be­ dingungen zu behandeln. Die Befehle eines Ausführungsbei­ spiels umfassen MOVQ-, POR-, PSLLD- und UNPACK-Befehle. Der MOVQ-Befehl überträgt 64 Bits innerhalb des ersten Satzes der Multimedia-Erweiterungsregister und zwischen dem ersten Satz der Multimedia-Erweiterungsregister und dem Speicher. Der POR-Befehl veranlaßt die Ausführung einer bitweise durchgeführten logischen ODER-Operation in dem ersten Satz von Multimedia-Erweiterungsregistern. Der PSLLD-Befehl be­ wirkt die Ausführung eines logischen Verschiebens nach links ohne Übertrag über die Datentypbegrenzungen in dem ersten Satz der Multimedia-Erweiterungsregister. Der UNPACK-Befehl verschachtelt Daten, indem er einen Operanden aus einem Re­ gister und einen Operanden aus einem entsprechenden Ort ei­ nes anderen Registers entnimmt und beide Operanden zusammen­ hängend in ein Register plaziert. Beispielsweise versetzt ein UNPACK HIGH-Befehl den hohen Operanden eines Registers und den hohen Operanden eines anderen Registers zusammenhän­ gend in ein Register. Bei einem Ausführungsbeispiel arbeitet ein UNPACK-Befehl an einem Null-Operanden aus einem Quellre­ gister und einem Operanden, der nicht Null ist, aus einem anderen Quellregister und plaziert beide Operanden in das Quellregister des Nulloperanden.
Die die 128-Bit-Multimedia-Erweiterungsregister 412 aufweisende Prozessorarchitektur eines Ausführungsbeispiels beschleunigt die Leistungsfähigkeit von 3D-Graphikanwendun­ gen gegenüber bekannten Multimedia-Erweiterungstechnologien noch weiter. Das zugehörige Programmierungsmodell verwendet Befehle, die an neuen gepackten Gleitkommadatentypen arbei­ ten, welche beispielsweise vier Gleitkommazahlen einfacher Genauigkeit enthalten. Es werden Mehrzweck-Gleitkommabefehle verwendet, um an dem Satz von acht 128-Bit-Multimedia-Erwei­ terungsregistern XMM0-XMM7 zu arbeiten, wodurch der Program­ mierer mit der Fähigkeit ausgerüstet wird, Algorithmen zu entwickeln, die gepackte Gleitkommadaten einfacher Genauig­ keit und Ganzzahldaten elegant mischen können. Darüber hin­ aus werden Befehle eingeführt, um die Cache-Speicherbarkeit gepackter Gleitkommadaten und Ganzzahldaten zu steuern. Diese neuen Befehle umfassen die Fähigkeit, Daten in die acht 64-Bit-Multimedia-Erweiterungsregister MMO-MM7 und die acht 128-Bit-Multimedia-Erweiterungsregister XMMO-XMM7 hin­ einströmen zu lassen, ohne die Cache-Speicher zu verunreini­ gen. Darüber hinaus weisen diese Befehle die Fähigkeit auf, Daten vorab heranzuholen, bevor sie tatsächlich benutzt wer­ den. Der beabsichtigte Vorteil der gepackten Gleitkommabe­ fehle besteht in der Beschleunigung von 3D-Geometrie- und Graphik, der Beschleunigung einer 3D-Wiedergabe und der Be­ schleunigung einer Videocodierung und -decodierung.
Bei einem Ausführungsbeispiel wird die Einzel-Befehls- Mehrfachdaten (SIMD) -Technik verwendet. Wie zuvor erörtert, beschleunigt diese Technik die Softwareleistung, indem meh­ rere Datenelemente parallel unter Verwendung eines einzelnen Befehls verarbeitet werden. Die 128-Bit-Multimedia-Erweite­ rungsregister 412 unterstützen Operationen an gepackten Gleitkommadatentypen einfacher Genauigkeit und die 64-Bit- Register 410 unterstützen Operationen an gepackten Quadwort- Datentypen oder Byte-, Wort- und Doppelwort-Datentypen. Diese Lösung wird benutzt, weil die meisten 3D-Graphikanwen­ dungen und digitalen Signalverarbeitungsanwendungen die fol­ genden Charakteristika aufweisen: Inhärente Parallelität; weiter dynamischer Bereich, somit gleitkomma-basiert; regel­ mäßige und wiederholt auftretende Speicherzugriffsmuster; Lokalisiert erneut auftretende Operationen, die an den Daten ausgeführt werden; und datenunabhängiger Steuerfluß.
Bei einem Ausführungsbeispiel sind acht 28-Bit-Mehr­ zweckregister XMM0-XMM7 vorgesehen, von denen jedes direkt adressiert werden kann. Diese 128-Bit-Register XMM0-XMM7 halten gepackte 128-Bit-Daten. Bei einem Ausführungsbeispiel ist der Hauptdatentyp der 128-Bit-Multimedia-Erweiterungsre­ gister 412 ein gepackter Gleitkommaoperand einfacher Genau­ igkeit, bzw. vier 32-Bit-Gleitkommazahlen einfacher Genauig­ keit. Die zugehörigen Multimediaerweiterungsbefehle greifen auf die 128-Bit-Register 412 direkt unter Verwendung der Re­ gisternamen zu. Die 128-Bit-Register 412 können verwendet werden, um Berechnungen an Daten durchzuführen.
Das System der reellen Zahlen umfaßt das Kontinuum der reellen Zahlen von minus unendlich bis plus unendlich. Da die Größe und Anzahl der Register, die irgendein Computer aufweist, begrenzt ist, kann nur eine Untermenge des Konti­ nuums der reellen Zahlen in den Berechnungen verwendet wer­ den. Da die Untermenge der reellen Zahlen, die ein bestimm­ ter Prozessor unterstützt, eine Näherung des Systems der re­ ellen Zahlen darstellt, sind der Bereich und die Genauigkeit dieser Untermenge der reellen Zahlen durch das Format be­ stimmt, das der Prozessor zum Darstellen der reellen Zahlen benutzt. Um die Geschwindigkeit und Effektivität der Berech­ nungen zu erhöhen, stellen Computer üblicherweise reelle Zahlen in einem binären Gleitkommaformat dar. Bei diesem Format weist eine reelle Zahl drei Teile auf: ein Vorzei­ chen, einen Signifikanden und einen Exponenten.
Fig. 5 zeigt ein binäres Gleitkommaformat 500, das von den 128-Bit-Multimedia-Erweiterungsregistern eines Ausfüh­ rungsbeispiels verwendet wird. Dieses Format entspricht dem IEEE-Standard. Das Vorzeichen 502 ist ein binärer Wert, der anzeigt, ob die Zahl positiv (0) oder negativ (1) ist. Der Signifikand 506 hat zwei Teile: eine 1-Bit-Binärzahl 508, die auch als J-Bit bezeichnet wird; und einen binären Bruch 510. Bei anderen Ausführungsbeispielen ist das J-Bit 508 nicht explizit dargestellt, sondern ist ein impliziter Wert. Der Exponent 504 ist eine binäre ganze Zahl, die die Potenz zur Basis 2 darstellt, um welche der Signifikand 506 poten­ ziert wird.
In Bezug auf Speicherdatenformate weist der gepackte 128-Bit-Datentyp 4 Gleitkommazahlen einfacher Genauigkeit auf. Die 128 Bits sind von 0 bis 127 durchnumeriert, wobei das Bit 0 das am geringsten bewertete Bit (LSB; least signi­ ficant bit) und das Bit 127 das am höchsten bewertete (MSB; most significant bit) ist. Die Bytes des gepackten 128-Bit- Datentyps eines Ausführungsbeispiels weisen aufeinanderfol­ gende Speicheradressen auf, wobei eine Little-Endian-Ordnung vorgesehen ist, d. h., die Bytes mit den niedrigeren Adressen sind geringer bewertet als die Bytes mit den höheren Adres­ sen.
In bezug auf die Registerdatenformate haben die Werte in den 128-Bit-Multimedia-Erweiterungsregistern das gleiche Format wie eine 128-Bit-Größe im Speicher. Es werden zwei Datenzugriffsmodi unterstützt, ein 128-Bit-Zugriffsmodus und ein 32-Bit-Zugriffsmodus. Der Datentyp entspricht direkt dem Format einfacher Genauigkeit des IEEE-Standards. Der Bruch­ teil des Signifikanden ist codiert. Von der ganzen Zahl wird angenommen, daß sie eins ist für alle Zahlen mit Ausnahme von Null und denormierten endlichen Zahlen. Der Exponent des Datentyps einfacher Genauigkeit ist in einem verschobenen Format (biased format) codiert. Die Konstante des Versatzes beträgt 127 für das Format einfacher Genauigkeit.
Wenn reelle Werte im Speicher gespeichert werden, wer­ den einzelne reelle Werte in vier aufeinanderfolgenden Bytes im Speicher gespeichert. Der 128-Bit-Zugriffsmodus wird für 128-Bit-Speicherzugriffe, 128-Bit-Übertragungen zwischen den 128 -Bit-Multimedia-Erweiterungsregistern und für sämtliche logischen, Entpack- und arithmetischen Befehle verwendet. Der 32-Bit-Zugriffsmodus wird für 32-Bit-Speicherzugriffe, 32-Bit-Übertragungen zwischen den 128 -Bit-Multimedia-Erwei­ terungsregistern und sämtliche arithmetischen Befehle ver­ wendet. Der 64-Bit-Zugriffsmodus wird für 64-Bit-Speicherzu­ griffe, 64-Bit-Übertragungen zwischen den 128-Bit-Multime­ dia-Erweiterungsregistern und für sämtliche arithmetischen Befehle verwendet. Ein direkter Zugriff ist auf sämtliche der 128-Bit-Multimedia-Erweiterungsregister gestattet.
Der Befehlssatz eines Ausführungsbeispiels, der zum Operieren an Datenoperanden der 128-Bit-Multimedia-Erweite­ rungsregister verwendet wird, operiert entweder an sämtli­ chen oder dem am geringsten bewerteten Paar der gepackten Datenoperanden parallel. Fig. 6 zeigt die gepackten Befeh­ le, die an einem Paar von Operanden arbeiten. Fig. 7 zeigt die skalaren Befehle, die an dem am geringsten bewerteten Paar der zwei Operanden arbeiten; bei skalaren Operationen werden die drei oberen Komponenten des ersten Operanden zum Ziel durchgeleitet. Alternativ können die drei oberen Kom­ ponenten auf Null gesetzt werden. Grundsätzlich wird die Adresse eines Speicheroperanden an einer 16-Byte-Begrenzung für sämtliche Befehle mit Ausnahme von nicht ausgerichteten Lade- und Speichere-Operationen, ausgerichtet.
Die Befehle eines Ausführungsbeispiels umfassen einen Mische-Gepackte-Einfache-Genauigkeit-Gleitkomma-Befehl (SHUFPS-Befehl; Shuffle Packed Single Precision Floating Point instruction). Der SHUFPS-Befehl ist in der Lage, eine beliebige der vier gepackten Gleitkommazahlen einfacher Ge­ nauigkeit aus einem Quelloperanden in die unteren zwei Ziel­ felder zu schieben; die oberen zwei Zielfelder werden er­ zeugt, indem irgendeine der vier Gleitkommazahlen einfacher Genauigkeit aus dem zweiten Quelloperanden hineingeschoben wird. Fig. 8 zeigt die gepackte Mischoperation (den SHUFPS- Befehl) eines Ausführungsbeispiels. Durch Verwenden der gleichen Register für beide Quellen kann der SHUFPS-Befehl eine beliebige Kombination der vier Gleitkommazahlen einfa­ cher Genauigkeit aus diesem Register zurückgeben.
Bei einem Ausführungsbeispiel können die skalaren Ganz­ zahl- oder Speicherdaten parallel unter Verwendung der hier vorgesehenen Befehle in ein gepacktes Gleitkommaformat kon­ vertiert werden. Die gepackten Gleitkommadaten werden verar­ beitet, um die bei der 3D-Bildwiedergabe verwendeten Gra­ phikdaten zur Verfügung zu stellen. Nach der Verarbeitung werden die gepackten Gleitkommagraphikdaten parallel unter Verwendung der hier beschriebenen Befehle in ein gepacktes Ganzzahlformat konvertiert. Die gepackten Ganzzahldaten wer­ den verwendet, um eine Bildwiedergabe zu erzeugen. Somit kann eine Anwendung 128-Bit-Multimedia-Erweiterungsregister­ befehle in Kombination mit 64-Bit-Multimedia-Registerbefeh­ len oder 128-Bit-Multimedia-Erweiterungsregisterbefehlen in Kombination mit Skalarregister- oder Speicherbefehlen ver­ wenden. So umfassen die Befehle eines Ausführungsbeispiels Konvertierungsbefehle, die gepackte und skalare Konvertie­ rungen zwischen den 128-Bit-Multimedia-Erweiterungsregistern und entweder den 64-Bit-Multimedia-Erweiterungsganzzahlregi­ stern oder den 32-Bit-Ganzzahl-IA-Registern unterstützen.
Fig. 9 zeigt Architekturregister, die von dem Regi­ stersatz 150 unterstützt werden, und die zugehörigen Konver­ tierungsbefehle 910-928 eines Ausführungsbeispiels. Der Re­ gistersatz unterstützt einen Satz von skalaren 32-Bit-IA-Re­ gistern, einen Satz von gepackten Ganzzahlregistern 904 oder 64-Bit-Multimedia-Erweiterungsregistern und einen Satz von gepackten Gleitkommaregistern 906 einfacher Genauigkeit oder 128-Bit-Multimedia-Erweiterungsregistern. Bei einem Ausfüh­ rungsbeispiel können, wie zuvor erörtert wurde, die gepack­ ten Ganzzahlregister 904 auf den Speicherraum der skalaren Register oder des Systemspeichers 902 abgebildet (aliased) werden.
Die Konvertierungsbefehle 910 bis 928, die zu den Regi­ stern 902 bis 906 des Registersatzes 150 korrespondieren, stellen ein effektives Mittel zum Konvertieren zwischen SIMD-Gleitkommadaten und SIMD-Ganzzahldaten während einer Datenkonversion zwischen den Registern zur Verfügung. Die Konvertierungsbefehle umfassen beispielsweise eine Konver­ tiere-Skalar-Ganzzahl-zu-Skalar-Einfache-Genauigkeit-Gleit­ komma-Befehl (CVTSI2SS-Befehl; Convert Scalar Integer to Scalar Single Precision Floating Point) 910, einen Konver­ tiere-Skalar-Einfache-Genauigkeit-Gleitkomma-zu-32-bit-Ganz­ zahl-Befehl (CVTSS2SI-Befehl; Convert Scalar Single Preci­ sion Floating Point to a 32-bit Integer) 912, einen Konver­ tiere-Abschneide-Skalar-Einfache-Genauigkeit-Gleitkomma-zu- Skalar-32-bit-Ganzzahl-Befehl (CVTTSS2SI-Befehl; Convert Truncate Scalar Single Precision Floating Point to Scalar 32-bit Integer) 914, einen Konvertiere-Gepackt-32-bit-Ganz­ zahl-zu-Gepackt-Einfache-Genauigkeit-Gleitkomma-Befehl (CVTPI2PS-Befehl; Convert Packed 32-bit Integer to Packed Single Precision Floating Point) 920, einen Konvertiere-Ge­ packt-Einfache-Genauigkeit-Gleitkomma-zu-Gepackt-32-bit- Ganzzahl-Befehl (CVTPS2PI-Befehl; Convert Packed Single Pre­ cision Floating Point to Packed 32-bit Integer) 922, zwei Abwandlungen des CVTPS2PI-Befehls 922, nämlich einen CVTPS2PW-Befehl 924 und einen CVTPS2PB-Befehl 926, und einen Konvertiere-Abschneide-Gepackt-Einfache-Genauigkeit-Gleit­ komma-zu-Gepackt-32-bit-Ganzzahl-Befehl (CVTTPS2PI-Befehl; Convert Truncate Packed Single Precision Floating Point to Packed 32-bit Integer) 928.
Der Konvertiere-Skalar-Ganzzahl-zu-Skalar-Einfache-Ge­ nauigkeit-Gleitkomma-Befehl (CVTSI2SS-Befehl) 910 konver­ tiert eine vorzeichenbehaftete ganze 32-Bit-Zahl aus einem 32-Bit-Skalar- oder Ganzzahlregister 902 in eine Gleitkomma­ zahl einfacher Genauigkeit. Die Gleitkommazahl einfacher Ge­ nauigkeit wird in einem Register eines Satzes von 128-Bit- Multimedia-Erweiterungsregistern 906 angeordnet. Alternativ konvertiert der CVTSI2SS-Befehl 910 eine vorzeichenbehaftete ganze 32-Bit-Zahl aus dem Speicher in eine Gleitkommazahl einfacher Genauigkeit, wobei die Gleitkommazahl einfacher Genauigkeit in einem Register eines Satzes von 128-Bit-Mul­ timedia-Erweiterungsregistern 906 gespeichert wird. Wenn diese Konvertierungen ungenau sind, wird eine Rundung ent­ sprechend dem Inhalt eines Steuer- und Status-Registers durchgeführt.
Fig. 10 ist ein Ablaufdiagramm des Konvertierens einer Zahl aus einem skalaren Ganzzahlformat in ein Gleitkommafor­ mat gemäß einem Ausführungsbeispiel (dem CVTSI2SS-Befehl). Die Operation beginnt im Schritt 1002, bei welchem die Zahl in dem Ganzzahlformat in einem Register eines ersten Satzes von Architekturregistern in einem Skalarformat gespeichert wird. Das Ganzzahlformat ist ein 32-Bit-Ganzzahlformat. Der erste Satz von Architekturregistern kann beispielsweise acht 32-Bit-Register umfassen. Die Zahl in dem Ganzzahlformat wird im Schritt 1004 in eine Zahl in dem Gleitkommaformat konvertiert. Das Gleitkommaformat ist beispielsweise bei ei­ ner Ausführungsform ein 32-Bit-Gleitkommaformat einfacher Genauigkeit. Bei einem Ausführungsbeispiel umfaßt der Schritt des Konvertierens das Zugreifen auf Rundungssteuer­ bits in einem Steuer- und Statusregister und das Runden der Zahl in dem Gleitkommaformat gemäß den Rundungssteuerbits. Die Zahl in dem Gleitkommaformat wird in ein Register eines zweiten Satzes von Architekturregistern eines gepackten For­ mat im Schritt 1006 hineinversetzt. Bei einem Ausführungs­ beispiel umfaßt der zweite Satz von Architekturregistern beispielsweise acht 128-Bit-Register. Der Schritt des Hin­ einversetzens der Zahl in dem Gleitkommaformat in ein Regi­ ster eines zweiten Satzes von Architekturregistern kann bei­ spielsweise das Anordnen der Gleitkommaformat-Zahl in ein niedrigstes Segment des Registers und das Unverändert-Halten der oberen Segmente des Registers umfassen.
Der Konvertiere-Skalar-Einfache-Genauigkeit-Gleitkomma­ zu-32-bit-Ganzzahl-Befehl (CVTSS2SI-Befehl) 912 konvertiert die am niedrigsten bewertete Gleitkommazahl einfacher Genau­ igkeit aus einem 128-Bit-Multimedia-Erweiterungsregister 906 in eine vorzeichenbehaftete ganze 32-Bit-Zahl. Der vorzei­ chenbehaftete 32-Bit-Ganzzahlwert wird in ein skalares 32- Bit-IA-Ganzzahl-Register 902 hineinversetzt. Sofern die Kon­ vertierung ungenau ist, wird eine Rundung entsprechend dem Inhalt eines Steuer- und Statusregisters durchgeführt.
Der Konvertiere-Abschneide-Skalar-Einfache-Genauigkeit- Gleitkomma-zu-Skalar-32-bit-Ganzzahl-Befehl (SVTTSS2SI-Be­ fehl) 914 konvertiert die am geringsten bewertete Gleitkom­ mazahl einfacher Genauigkeit aus einem 128-Bit-Multimedia- Erweiterungsregister 906 in eine vorzeichenbehaftete ganze 32-Bit-Zahl. Der vorzeichenbehaftete 32-Bit-Ganzzahlwert wird in einem skalaren 32-Bit-IA-Ganzzahlregister 902 ange­ ordnet. Wenn die Konvertierung ungenau ist, wird das Ergeb­ nis ohne den Schritt des Zugreifens auf einen Rundungsmodus aus dem Steuer- und Statusregister implizit abgeschnitten.
Fig. 11 ist ein Ablaufdiagramm des Konvertierens einer Zahl aus einem Register eines gepackten Gleitkommaformats in ein skalares Ganzzahlformat (der CVTSS2SI- und der CVTTSS2SI-Befehl) eines Ausführungsbeispiels. Die Operation beginnt im Schritt 1102, bei welchem eine Mehrzahl von Zah­ len in dem Gleitkommaformat in einem Register eines zweiten Satzes von Architekturregistern in einem gepackten Format gespeichert werden. Bei einem Ausführungsbeispiel werden vier Zahlen in dem Gleitkommaformat gespeichert. Das Gleit­ kommaformat eines Ausführungsbeispiels ist ein 32-Bit-Gleit­ kommaformat einfacher Genauigkeit. Bei einer Ausführungsform umfaßt der zweite Satz von Architekturregistern acht 128- Bit-Register. Eine der Mehrzahl von Zahlen in dem Gleitkom­ maformat wird im Schritt 1104 in eine Zahl in dem Ganzzahl­ format konvertiert. Das Ganzzahlformat eines Ausführungsbei­ spiels ist ein 32-Bit-Ganzzahlformat. Bei einer Ausführungs­ form des CVTSS2SI-Befehls umfaßt der Schritt des Konvertie­ rens ein Zugreifen auf ein Rundungsmodusbit aus einem Steuer- und Statusregister und das Runden der Zahl in dem Ganzzahlformat gemäß dem angezeigten Rundungsmodus.
Bei dem Ausführungsbeispiel des CVTTSS2SI-Befehls um­ faßt der Schritt des Konvertierens das implizite Abschneiden der Zahl in dem Ganzzahlformat gemäß den Modus-Bits in dem Konvertierungsbefehl. Die Abschneideoperation wird somit von dem Konvertierungsbefehl impliziert und die zum Zugreifen auf das Steuer- und Statusregister zum Bestimmen eines Run­ dungsmodus erforderliche Verarbeitungszeit wird beseitigt. Typische Anwendungen führen Gleitkommaberechnungen unter Verwendung des Runde-zum-Nächsten-Rundungsmodus durch, wobei der Abschneide-Rundungsmodus grundsätzlich benutzt wird, denn von Gleitkomma zu Ganzzahl konvertiert wird. Das Ändern des Rundungsmodus erfordert üblicherweise das Ändern der Rundungssteuerung in einem Steuerstatusregister. Das Codie­ ren des Abschneide-Rundungsmodus in dem Befehl vermeidet das Aktualisieren des Statusregisters, da der von dem Befehl spezifizierte Rundungsmodus sich über die Statusregisterein­ stellung hinwegsetzt.
Die Zahl in dem Ganzzahlformat wird im Schritt 1106 in ein Register eines ersten Satzes von Architekturregistern in einem skalaren Format angeordnet. Der erste Satz von Archi­ tekturregistern kann beispielsweise acht 32-Bit-Register um­ fassen.
Der Konvertiere-Gepackt-32-bit-Ganzzahl-zu-Gepack-Ein­ fache-Genauigkeit-Gleitkomma-Befehl (CVTPI2PS-Befehl) 920 konvertiert zwei vorzeichenbehaftete 32-Bit-Ganzzahlwerte aus einem gepackten Ganzzahl-64-Bit-Multimedia-Erweiterungs­ register 904 in zwei am geringsten bewertete Gleitkommazah­ len einfacher Genauigkeit. Die Gleitkommazahlen einfacher Genauigkeit werden in einem 128-Bit-Multimedia-Erweiterungs­ register 906 angeordnet. Wenn die Konvertierung ungenau ist, wird eine Rundung gemäß einem Steuer- und Statusregister aus dem Speicher durchgeführt. Die oberen zwei höherbewerteten Zahlen in dem Zielregister werden auf Null gesetzt.
Fig. 12 ist ein Ablaufdiagramm des Konvertierens einer Zahl aus einem gepackten Ganzzahlformat in ein gepacktes Gleitkommaformat (der CVTPI2PS-Befehl) gemäß einer Ausfüh­ rungsform. Die Operation beginnt im Schritt 1202, bei wel­ chem eine erste Mehrzahl von Zahlen in dem Ganzzahlformat in ein Register eines ersten Satzes von Architekturregistern in einem gepackten Format gespeichert werden. Bei einer Ausfüh­ rungsform werden zwei Zahlen in dem Ganzzahlformat gespei­ chert. Das Ganzzahlformat eines Ausführungsbeispiels ist ein 32-Bit-Ganzzahlformat. Der erste Satz von Architekturregi­ stern kann acht 64-Bit-Register umfassen. Zumindest eine Zahl in dem Ganzzahlformat wird im Schritt 1204 in zumindest eine Zahl in dem Gleitkommaformat konvertiert. Das Gleitkom­ maformat einer Ausführungsform ist ein 32-Bit-Gleitkommafor­ mat einfacher Genauigkeit. Bei einem Ausführungsbeispiel um­ faßt der Schritt des Konvertierens das Zugreifen auf Run­ dungssteuerbits in einem Steuer- und Statusregister und das Runden der Zahl in dem Gleitkommaformat gemäß den Rundungs­ steuerbits. Zumindest eine Zahl in dem Gleitkommaformat wird im Schritt 1206 in einem Register eines zweiten Satzes von Architekturregistern in einem gepackten Format angeordnet. Es können beispielsweise zwei Zahlen in dem Gleitkommaformat in dem gepackten Format in dem Register des zweiten Satzes angeordnet werden. Bei einer Ausführungsform weist der zweite Satz von Architekturregistern acht 128-Bit-Register auf. Der Schritt des Hineinversetzens wenigstens einer Zahl in dem Gleitkommaformat in ein Register eines zweiten Satzes von Architekturregistern kann das Anordnen von zwei Zahlen in dem Gleitkommaformat in einer unteren Hälfte des Regi­ sters und das Ungeändert-Lassen der oberen Hälfte des Regi­ sters umfassen.
Bei einem Ausführungsbeispiel gibt es verschiedene Va­ rianten 922-926 eines Befehls, der gepackte Gleitkommawerte einfacher Genauigkeit in einem 128-Bit-Multimedia-Erweite­ rungsregister 906 in in einem 64-Bit-Multimedia-Erweite­ rungsregister 904 gespeicherte gepackte 32-Bit-Ganzzahlwerte konvertiert. Die erste Variante ist der Konvertiere-Gepackt- Einfache-Genauigkeit-Gleitkomma-zu-Gepackt-32-Bit-Ganzzahl- Befehl (CVTPS2PT-Befehl) 922, der die beiden am geringsten bewerteten Gleitkommazahlen einfacher Genauigkeit aus einem 128-Bit-Multimedia-Erweiterungsregister 906 in zwei vorzei­ chenbehaftete 32-Bit-Ganzzahlwerte konvertiert. Die zwei 32- Bit-Ganzzahlwerte werden in ein 64-Bit-Multimedia-Erweite­ rungsregister 904 gebracht. Wenn die Konvertierung ungenau ist, wird eine Rundung gemäß dem Inhalt eines Steuer- und Statusregisters durchgeführt.
Die zweite Variante ist der CVTPS2PW-Befehl 924, der vier Gleitkommazahlen einfacher Genauigkeit in einem 128- Bit-Multimedia-Erweiterungsregister 906 in vier 16-Bit-Ganz­ zahlwerte konvertiert, die in einem 64-Bit-Multimedia-Erwei­ terungsregister 904 gespeichert werden. Die dritte Variante ist der CVTPS2PB-Befehl 926, der vier in einem 128-Bit-Mul­ timedia-Erweiterungsregister 906 befindliche Gleitkommazah­ len einfacher Genauigkeit in vier 8-Bit-Ganzzahlwerte kon­ vertiert, die in dem unteren 32-Bit-Feld eines 64-Bit-Multi­ media-Erweiterungsregister 904 gespeichert werden. Andere mögliche Varianten umfassen Ganzzahl-, Byte- und Wort-Ver­ sionen der Konvertierungsbefehle, die an Daten in ganzen Zahlen, Bytes bzw. Worten operieren.
Der Konvertiere-Abschneide-Gepackt-Einfache-Genauig­ keit-Gleitkomma-zu-Gepackt-32-bit-Ganzzahl-Befehl (CVTTPS2PI-Befehl) 928 konvertiert die beiden am geringsten bewerteten Gleitkommazahlen einfacher Genauigkeit eines 128- Bit-Multimedia-Erweiterungsregisters 906 in zwei vorzeichen­ behaftete 32-Bit-Ganzzahlwerte. Die zwei 32-Bit-Ganzzahl­ werte werden in einem 64-Bit-Multimedia-Erweiterungsregister 904 angeordnet. Wenn die Konvertierung ungenau ist, wird das Ergebnis ohne den Schritt des Zugreifens auf Rundungsmodus­ bits aus dem Steuer- und Statusregister implizit abgeschnit­ ten.
Fig. 13 ist ein Ablaufdiagramm des Konvertierens einer Zahl aus einem gepackten Gleitkommaformat in ein gepacktes Ganzzahlformat (der CVTPS2PI- und der CVTTPS2PI-Befehl) ei­ nes Ausführungsbeispiels. Die Operation beginnt im Schritt 1302, bei welchem eine zweite Mehrzahl von Zahlen in dem Gleikommaformat in einem Register eines zweiten Satzes von Architekturregistern in einem gepackten Format gespeichert wird. Bei einer Ausführungsform werden vier Zahlen in dem Gleitkommaformat gespeichert. Das Gleitkommaformat ist bei­ spielsweise ein 32-Bit-Gleitkommaformat einfacher Genauig­ keit. Der zweite Satz von Architekturregistern umfaßt bei­ spielsweise acht 128-Bit-Register. Zumindest eine der mehre­ ren Zahlen des Gleitkommaformats wird im Schritt 1304 in zu­ mindest eine Zahl in dem Ganzzahlformat konvertiert. Das Ganzzahlformat ist beispielsweise ein 32-Bit-Ganzzahlformat. Bei der Ausführungsform des CVTPS2PI-Befehls umfaßt der Schritt des Konvertierens ein Zugreifen auf Rundungsmodus­ bits aus einem Steuer- und Statusregister und das Runden der in dem Ganzzahlformat vorliegenden Zahl gemäß dem durch die Rundungsmodusbits angezeigten Rundungsmodus. Bei der Ausfüh­ rungsform des CVTTPS2PI-Befehls umfaßt der Schritt des Kon­ vertierens implizit das Abschneiden der in dem Ganzzahlfor­ mat vorliegenden Zahl gemäß einem durch den Konvertierungs­ befehl angezeigten Abschneidemodus. Die Zahl in dem Ganz­ zahlformat wird in ein Register eines ersten Satzes von Ar­ chitekturregistern eines gepackten Formats im Schritt 1006 angeordnet. Der erste Satz von Architekturregistern kann beispielsweise acht 64-Bit-Register umfassen.
Der CVTTPS2PI-Befehl codiert den Rundungsmodus in dem Befehl, was die Leistungsfähigkeit in der oben unter Bezug­ nahme auf den CVTTSS2SI-Befehl beschriebenen Weise verbes­ sert.
Fig. 14 ist ein Ablaufdiagramm oder zweiten Variante des für die Konvertierung einer Zahl aus einem gepackten Gleitkommaformat in ein gepacktes Ganzzahlformats verwende­ ten Befehls (dem CVTPS2PW-Befehl). Die Operation beginnt im Schritt 1402, in welchem eine Mehrzahl von Zahlen in dem Gleitkommaformat in einem Register eines ersten Satzes von Architekturregistern in einem gepackten Format gespeichert werden. Bei einer Ausführungsform werden vier Zahlen in dem Gleitkommaformat gespeichert. Das Gleitkommaformat eines Ausführungsbeispiels ist ein 32-Bit-Gleitkommaformat einfa­ cher Genauigkeit. Der erste Satz von Architekturregistern umfaßt beispielsweise acht 128-Bit-Register. Es wird zumin­ dest eine der mehreren Zahlen in dem Gleitkommaformat im Schritt 1404 in zumindest eine Zahl in dem Ganzzahlformat konvertiert. Das Ganzzahlformat ist ein 16-Bit-Ganzzahlfor­ mat (Wort). Der Schritt des Konvertierens umfaßt bei einem Ausführungsbeispiel das Zugreifen auf Rundungsmodusbits aus einem Steuer- und Statusregister und das Runden der Zahl in dem Ganzzahlformat gemäß einem von den Rundungsmodusbits an­ gezeigten Rundungsmodus. Die Zahlen in dem 16-Bit-Ganzzahl­ format werden im Schritt 1406 in einem Register eines zwei­ ten Satzes von Architekturregistern in einem gepackten For­ mat angeordnet. Der zweite Satz von Architekturregistern um­ faßt beispielsweise acht 64-Bit-Register. Nach der Konver­ tierung kann jedes 64-Bit-Register vier 16-Bit-Ganzzahlwerte aufweisen, die den Inhalt eines 128-Bit-Gleitkommaregisters darstellen.
Fig. 15 zeigt ein Ablaufdiagramm der dritten Variante, die zum Konvertieren einer Zahl aus einem gepackten Gleit­ kommaformat in ein gepacktes Ganzzahlformat verwendet wird (den CVTPS2PB-Befehl). Die Operation beginnt im Schritt 1502, bei welchem mehrere Zahlen in dem Gleitkommaformat in einem Register eines ersten Satzes von Architekturregistern in einem gepackten Format gespeichert werden. Es werden bei­ spielsweise vier Zahlen in dem Gleitkommaformat gespeichert. Das Gleitkommaformat ist beispielsweise ein 32-Bit-Gleitkom­ maformat einfacher Genauigkeit. Bei einem Ausführungsbei­ spiel umfaßt der erste Satz von Architekturregistern acht 128-Bit-Register. Es wird zumindest eine der mehreren in dem Gleitkommaformat vorliegenden Zahlen im Schritt 1504 in zu­ mindest eine Zahl in dem Ganzzahlformat konvertiert. Das Ganzzahlformat ist ein 8-Bit-Ganzzahlformat (Byte). Der Schritt des Konvertierens umfaßt bei einer Ausführungsform das Zugreifen auf Rundungsmodusbits aus einem Steuer- und Statusregister und das Runden der in dem Ganzzahlformat vor­ liegenden Zahl gemäß einem von dem Rundungsmodusbit ange­ zeigten Rundungsmodus. Die in dem 8-Bit-Ganzzahlformat vor­ liegende Zahl wird in einem Register eines zweiten Satzes von Architekturregistern in einem gepackten Format im Schritt 1506 angeordnet. Der zweite Satz von Architekturre­ gistern kann beispielsweise acht 64-Bit-Register umfassen. Nach der Konvertierung kann jedes 64-Bit-Register vier 8- Bit-Ganzzahlwerte enthalten, die den Inhalt eines 128-Bit- Gleitkommaregisters repräsentieren.
Die Konvertierungsbefehle behalten die SIMD-Paralleli­ tät bei, obwohl sich die Breiten der Register unterscheiden.
Für Konvertierungen aus den 128-Bit- in die 64-Bit-Multime­ dia-Erweiterungsregister werden die unteren beiden SIMD- Gleitkommaelemente in 32-Bit-Ganzzahlelemente pro Konvertie­ rungsbefehl konvertiert; folglich wird ein spezieller Befehl zweimal verwendet, um sämtliche vier Elemente einfacher Ge­ nauigkeit zu konvertieren, wobei ein Verschieben (shuffling) der Operanden vor dem Ausgeben des zweiten Konvertierungsbe­ fehls durchgeführt wird. Für Konvertierungen aus dem 64-Bit­ in die 128-Bit-Multimedia-Erweiterungsregister werden zwei 32-Bit-Ganzzahlwerte in Gleitkommawerte einfacher Genauig­ keit konvertiert und in die unteren beiden Elemente des 128- Bit-Multimedia-Erweiterungs-Gleitkommaregisters gebracht; die oberen beiden Elemente des 128-Bit-Multimediae-Erweite­ rungs-Gleitkommaregisters bleiben ungeändert. Diese Lösung des intakten Durchleitens der oberen Elemente schafft eine größere Flexibilität bei dem Verschmelzen der neuen Daten mit vorhandenen Daten.
Multimedia-Graphikanwendungen werden typischerweise er­ zeugt, indem ein Bild als Ansammlung kleiner, unabhängig ge­ steuerter Punkte oder Pixel, die auf einem Schirm oder einer Kathodenstrahlröhre angeordnet sind, behandelt wird. Ein Computergraphikbild ist üblicherweise aus einer Anzahl von Objekten zusammengesetzt, die vor einem Hintergrundbild wie­ dergegeben werden. Während der Wiedergabe kann das Objekt fit zuvor erzeugten Objekten unter Verwendung von Zusammen­ setztechniken kombiniert werden, wobei das Zusammensetzen in dem Kombinieren mehrerer Bilder durch Überlagerung oder Aus­ blendung der Bilder besteht. Bei einem zusammengesetzten Bild wird der Wert jedes Pixels aus den Komponentenbildern berechnet. Bei der Wiedergabe von Multimedia-3D-Graphikan­ wendungen werden Bilder in zwei Phasen zusammengesetzt: Der Geometrie- und der Rasterphase. Die Geometriephase umfaßt das Aufbauen der für das Zusammensetzen verwendeten Bilder unter Verwendung von Dreiecken, die durch in dem 3D-Koordi­ natenraum definierten Eckpunkten gebildet werden. Die Raste­ rung ist die Konvertierung von Vektorgraphiken oder -bil­ dern, die anhand von mathematischen Elementen, wie bei­ spielsweise Punkten und Linien, beschrieben sind, in äquiva­ lente Bilder, die aus Pixelmustern zusammengesetzt sind, die als Sätze von Bits gespeichert und bearbeitet werden können.
Beim Zusammensetzen der Dreiecke, die die Bilder bil­ den, weist jeder Eckpunkt oder jede Koordinate einen ent­ sprechenden Farbwert aus einem bestimmten Farbmodell auf. Ein Farbmodell ist eine Spezifikation eines 3D-Farbkoordina­ tensystems und eine sichtbare Untermenge in dem Koordinaten­ system, in welchem sämtliche Farben in einer bestimmten Farbskala liegen, wobei eine Farbreihe eine Untermenge sämt­ licher sichtbaren Farbtöne ist. Beispielsweise ist das Rot- Grün-Blau-Farbmodell (RGB) die Einheitswürfel-Untermenge des Kartesischen 3D-Koordinatensystems. Der Zweck eines Farbmo­ dells besteht darin, eine bequeme Spezifikation von Farben innerhalb bestimmter Farbskalen zu gestatten. Die RGB-Pri­ märfarben sind additive Primärfarben, da die einzelnen Bei­ träge jeder Primärfarbe miteinander addiert werden, um das sich ergebende Pixel hervorzubringen.
Der Wert jedes Pixels in einem zusammengesetzten Multi­ media-Bild wird aus den Komponentenbildern auf irgendeine Art und Weise berechnet. Bei einer Überlagerung wird den Pixeln eines Vordergrundbildes ein Transparenzwert zusätz­ lich zu den RGB-Werten gegeben. Der Wert eines Pixels in dem zusammengesetzten Bild wird aus dem Hintergrundbild entnom­ men, solange das Vordergrundbild keinen nicht-transparenten Wert in diesem Punkt aufweist, in welchem Fall der Wert aus dem Vordergrundbild entnommen wird. Folglich wird dann, wenn ein Bild erzeugt wird, eine Deckkraft-Information aufge­ zeichnet, so daß der jedem Pixel in dem Bild zugeordneten Farbe ein Alpha-Wert (A) zugeordnet wird, der die Deckkraft des Pixels darstellt. Demzufolge sind bei einem Bild, das das Vordergrundelement eines zusammengesetzten Bildes werden soll, viele der Pixel als mit einer Deckkraft von 0 regi­ striert, da sie transparent sind; der Rest, welcher den wichtigen Inhalt des Vordergrundbildes bildet, weist größere Deckkraft-Werte, üblicherweise von 1, auf. Somit wird, um das Zusammensetzen in einer vernünftigen Art und Weise durchzuführen, die Alpha-Information bei jedem Pixel des Bildes, das zusammengesetzt wird, zur Verfügung gestellt, so daß zusammen mit den RGB-Werten eines Bildes es einen die Deckkraft jedes Pixels codierenden Alpha-Wert (A) gibt.
Bei Multimedia-Algorithmen kann die Datenparallelität auf unterschiedliche Weise ausgenutzt werden. Ein möglicher Weg besteht darin, die gleichen Operationen an sämtlichen Elementen einer Farbebene auszuführen. Dieses Verfahren um­ faßt ein Organisieren der Informationen für ein Bild im Speicher durch Speichern des Bildes in Farbebenen. Demzu­ folge werden sämtliche R-Komponenten bei aufeinanderfolgen­ den Adressen im Speicher, sämtliche G-Komponenten ebenfalls bei aufeinanderfolgenden Adressen und in gleicher Weise die B- und die Alpha-Komponenten gespeichert. An sämtlichen Kom­ ponenten jeder Farbebene eines Bildes müssen die gleichen Operationen durchgeführt werden. Wenn sämtliche Rot-Farbkom­ ponenten sich an aufeinanderfolgenden Adressen befinden, ist es leicht, vier Elemente der R-Ebene bei einem einzigen Speicherzugriff zu greifen und in ähnlicher Weise einfach, die zugehörigen vier Elemente in der Alpha-Ebene in einem einzigen Speicherzugriff zu greifen. Die Ausführung der Ope­ ration je Farbebene und die Verwendung der Multimedia-Erwei­ terungstechnologie, um an vier Elementen einer gegebenen Farbebene parallel zu berechnen, gestattet die Ausnutzung der Datenparallelität.
Ein zweites Verfahren zum Ausnutzen der Datenparalleli­ tät besteht darin, die gleichen Operationen an sämtlichen Farbelementen eines Pixels auszuführen. Dieses Verfahren um­ faßt das Organisieren der Informationen für ein Bild im Speicher derart, daß die Informationen über jedes Bild so gespeichert werden, daß die drei Farbkomponenten R, G und B und die Alpha-Komponente jedes Pixels an aufeinanderfolgen­ den Adressen im Speicher gespeichert werden. Durch Verwen­ dung der Multimedia-Erweiterungstechnologie nimmt ein Spei­ cherzugriff die RGBA-Komponenten für ein Pixel auf und führt parallel Operationen an sämtlichen das Pixel darstellenden Komponenten durch.
Ein weiteres Beispiel der Ausnutzung der Datenparal­ lelität bei Multimedia-Anwendungen umfaßt die Bearbeitung von Koordinaten von Punkten im Raum. Bei Verwendung dieser Technik wird die Datenparallelität ausgenutzt, indem die gleichen Operationen bei einer gegebenen Koordinate oder die gleichen Operationen an sämtlichen Punkten des Raumes ausge­ führt werden.
Die hier offenbarten Befehle gestatten die parallele Konvertierung mehrerer Gleitkomma-Farbwerte einfacher Genau­ igkeit in ein spezielles Ganzzahlformat. Eine hier beschrie­ bene Anwendung benutzt die Konvertierungsbefehle für die pa­ rallele Konvertierung von Beleuchtungsfunktionsdaten in 3D- Graphiken. Fig. 16 ist ein Ablaufdiagramm der Beleuchtungs­ berechnung in einer 3D-Geometrie, bei welcher die Befehle eines Ausführungsbeispiels verwendet werden. Die Operation beginnt in Schritt 1602, bei welchem die Lichtintensität be­ rechnet wird. Für jeden Eckpunkt wird im Schritt 1604 ein Lichtfarbwert berechnet. Der Lichtfarbwert wird aus einem Gleitkommaformat in ein Ganzzahlformat im Schritt 1606 kon­ vertiert, wobei die Gleitkomma-Farbwerte für die Farbkompo­ nenten Rot (R), Grün (G) und Blau (B) in Ganzzahlwerte kon­ vertiert werden.
Fig. 17 ist ein Ablaufdiagramm für die parallele Kon­ vertierung mehrerer Farbwerte aus einem Gleitkommaformat einfacher Genauigkeit in ein spezielles Ganzzahlformat. Die Operation beginnt im Schritt 1702, bei welchem eine Anzahl von Farbkomponenten in einem Gleitkommaformat in ein Regi­ ster eines Satzes von 128-Bit-Registern gespeichert wird. Die Gleitkommadaten werden in den 128-Bit-Registern in dem gepackten Format gespeichert. Jede der in dem Gleitkommafor­ mat vorliegenden Farbkomponenten wird in Farbwerte oder - zahlen in einem Ganzzahlformat im Schritt 1704 konvertiert. Die Zahlen in dem Ganzzahlformat werden in zumindest ein Re­ gister eines Satzes von 64-Bit-Registern im Schritt 1706 ge­ speichert. Die Ganzzahldaten werden in den 64-Bit-Registern in dem gepackten Format gespeichert. Die Farbkomponenten werden für jedes Pixel einer zusammengesetzten Graphik unter Verwendung der Zahlen in dem Ganzzahlformat aus dem Satz von 64-Bit-Registern zusammengesetzt. Bei einem Ausführungsbei­ spiel repräsentieren die Farbkomponenten in jedem der Regi­ ster des Satzes von 128-Bit-Registern Werte der gleichen Farbebene. Bei einem alternativen Ausführungsbeispiel reprä­ sentieren die Farbkomponenten in jedem der Register des Sat­ zes von 128-Bit-Registern Farbkomponenten, die eine Farbe eines Pixels definieren.
Bei einem Ausführungsbeispiel wird der oben erörterte CVTPS2PI-Befehl verwendet, um die Farbkomponenten im Gleit­ kommaformat in Farbwerte in einem Ganzzahlformat im Schritt 1704 zu konvertieren. Fig. 18 ist eine Datenflußdarstellung der parallelen Konvertierung graphischer Farbdaten unter Verwendung des CVTPS2PI-Befehls. Bei diesem Ausführungsbei­ spiel ist es erforderlich, den bei der Konvertierung der Graphikfarbdaten in 8-Bit-Werte verwendeten Wert von Gleit­ kommaoperanden zu klammern (begrenzen). Dies ist erforder­ lich, da einige der Datenbearbeitungen sinnlose Werte erzeu­ gen würden, wenn die Gleitkommadaten mehr als 8 Bits breit wären.
Unter Verwendung des CVTPS2PI-Befehls umfaßt der Schritt des Konvertierens, der Schritt 1704, das Konvertie­ ren 1810 eines ersten und eines zweiten 32-Bit-Farbwertes, die in den unteren 64-Bits 1802-1804 eines 128-Bit-Registers XMM0 angeordnet sind, in eine erste und eine zweite 32-Bit- Zahl in dem Ganzzahlformat. Nach diesem Schritt werden der dritte und der vierte 32-Bit-Farbwert 1806-1808, die in den oberen 64 Bits des 128-Bit-Registers XMM0 angeordnet sind, in die unteren 64 Bits des 128-Bit-Registers 1802-1804 ver­ schoben. Der dritte und der vierte 32-Bit-Farbwert werden in eine dritte und eine vierte 32-Bit-Zahl in dem Ganzzahlfor­ mat konvertiert. Bei einem Ausführungsbeispiel werden die vorerwähnten Schritte für jedes der drei 128-Bit-Register XMM0-XMM2 durchgeführt, wobei das 128-Bit-Register XMM0 die Daten für eine rote Farbkomponente jedes der vier Pixel, das 128-Bit-Register XMM1 die Daten für eine grüne Farbkomponen­ te jedes der vier Pixel und das 128-Bit-Register XMM2 die Daten für eine blaue Farbkomponente jedes der vier Pixel aufweist. Bei einem alternativen Ausführungsbeispiel kann ein viertes 128-Bit-Register (welches nicht gezeigt ist) die Transparenzdaten für jedes der vier Pixel enthalten.
Bei einem Ausführungsbeispiel umfaßt der Schritt des Anordnens, der Schritt 1706, das Anordnen einer ersten und einer zweiten 32-Bit-Zahl 1812-1814 in dem Ganzzahlformat aus einem ersten 128-Bit-Register XMM0 in ein erstes 64-Bit- Register MM0 und das Anordnen der dritten und der vierten 32-Bit-Zahl 1816-1818 in dem Ganzzahlformat aus dem ersten 128-Bit-Register XMM0 in ein zweites 64-Bit-Register MM3. Die erste und die zweite 32-Bit-Zahl in dem Ganzzahlformat aus einem zweiten 128-Bit-Register XMM1 werden in ein drit­ tes 64-Bit-Register MM1 und die dritte und vierte 32-Bit- Zahl in dem Ganzzahlformat aus dem zweiten 128-Bit-Register XMM1 in ein viertes 64-Bit-Register MM4 gespeichert. Die er­ ste und die zweite 32-Bit-Zahl in dem Ganzzahlformat aus ei­ nem dritten 128-Bit-Register XMM2 werden in ein fünftes 64- Bit-Register MM2 und die dritte und die vierte 32-Bit-Zahl in dem Ganzzahlformat aus dem dritten 128-Bit-Register XMM2 in ein sechstes 64-Bit-Register MM5 gespeichert. Bei einem alternativen Ausführungsbeispiel werden die erste und die zweite 32-Bit-Zahl in dem Ganzzahlformat aus einem vierten 128-Bit-Register (welches nicht gezeigt ist) in ein siebtes (nicht gezeigtes) 64-Bit-Register gespeichert und die dritte und vierte 32-Bit-Zahl in dem Ganzzahlformat aus dem vierten 128-Bit-Register werden in ein (nicht gezeigtes) achtes 64- Bit-Register gespeichert.
Der Schritt des Zusammensetzens oder Ansammelns, der Schritt 1708, umfaßt grundsätzlich die Bearbeitung der In­ halte des Satzes von sechs 64-Bit-Registern MM0-MM5, wobei die Bearbeitungsergebnisse in jedem 64-Bit-Register die Farbkomponenten umfassen, die ein Pixel definieren. Insbe­ sondere weist bei einem Ausführungsbeispiel nach dem Schritt des Anordnens (Speicherns), dem Schritt 1706, jedes Register des Satzes von sechs 64-Bit-Registern MM0-MM5 Daten für eine Farbkomponente für jedes der zwei Pixel auf. Folglich umfaßt der Schritt des Zusammensetzens, der Schritt 1708, eine lo­ gische Kombination der ersten drei Register MM0-MM2 des Sat­ zes von sechs 64-Bit-Registern, wobei die Kombination zu ei­ nem ersten kombinierten 64-Bit-Register 1850 führt, das drei 8-Bit-Farbkomponenten für ein erstes (1820-1824) und ein zweites (1830-1834) Pixel aufweist, wobei die drei 8-Bit- Farbkomponenten die Farbe eines Pixels definieren. Der In­ halt des ersten kombinierten Registers 1850 wird in dem Re­ gister MM0 angeordnet.
Die logische Kombination gemäß einem Ausführungsbei­ spiel umfaßt die Durchführung einer bitweise durchgeführten logischen ODER-Operation 1899 der Inhalte des ersten 64-Bit- Registers MM0 und des zweiten 64-Bit-Registers MM1. Der bit­ weise logische ODER-Befehl führt ein bitweises logisches ODER an 64 Bits des Ziel- und des Quelloperanden durch und schreibt das Ergebnis in das Zielregister. Jedes Bit des Er­ gebnisses wird auf 0 gesetzt, wenn die zugehörigen Bits bei­ der Operanden 0 sind; anderenfalls ist das Bit 1. Ein bit­ weises logisches ODER wird dann an dem Ergebnis der ersten logischen Operation 1898 und des Inhalts des dritten 64-Bit- Registers MM2 durchgeführt. Das Ergebnis dieser zwei logi­ schen Operationen ist ein erstes kombiniertes 64-Bit-Regi­ ster 1850, das drei 8-Bit-Farbkomponenten für ein erstes 1820-1824 und ein zweites 1830-1834 Pixel aufweist.
Darüber hinaus wird eine logische Kombination der zwei­ ten drei Register MM3-MM5 des Satzes von sechs 64-Bit-Regi­ stern NM0-MM5 durchgeführt, wobei die Kombination zu einem zweiten kombinierten 64-Bit-Register 1852 führt, das die drei 8-Bit-Farbkomponenten für ein drittes und ein viertes Pixel aufweist. Die logische Kombination der zweiten drei Register MM3-MM5 gemäß einem Ausführungsbeispiel umfaßt die Durchführung eines bitweisen logischen ODERs des Inhalts des vierten Registers MM3 und des fünften Registers MM4. Dann wird ein bitweises logisches ODER des Ergebnisses dieser dritten logischen Operation 1897 und des Inhalts des sech­ sten 64-Bit-Registers MM5 durchgeführt. Das Ergebnis dieser zwei logischen Operationen ist ein zweites kombiniertes 64- Bit-Register 1852, das die drei 8-Bit-Farbkomponenten für ein drittes und ein viertes Pixel aufweist. Der Inhalt des zweiten kombinierten Registers 1852 wird in dem Register MM3 angeordnet. Bei einem alternativen Ausführungsbeispiel kön­ nen Transparenzdaten zusammen mit den R-, G-, B-Daten eines Pixels bearbeitet werden, wobei die zwei verbleibenden 8- Bit-Segmente des kombinierten 64-Bit-Registers die Transpa­ renzdaten für das zugehörige Pixel enthalten.
Bei einem Ausführungsbeispiel wird der oben erörterte CVTPS2PW-Befehl verwendet, um die in dem Gleitkommaformat vorliegenden Farbkomponenten in Farbwerte in einem Ganzzahl­ format im Schritt 1704 zu konvertieren. Fig. 19 ist eine Datenflußdarstellung der parallelen Konvertierung von Gra­ phikfarbdaten unter Verwendung des CVTPS2PW-Befehls. Bei diesem Ausführungsbeispiel ist es erforderlich, den Wert der bei der Konvertierung von Graphikfarbdaten in 8-Bit-Werte verwendeten Gleitkommaoperanden zu klammern (zu begrenzen). Dies ist erforderlich, da einige der Datenbearbeitungen sinnlose Werte erzeugen würden, wenn die Gleitkommadaten mehr als 8 Bits breit wären.
Unter Verwendung dieses Befehls umfaßt der Schritt des Konvertierens, der Schritt 1704, das Konvertieren von vier 32-Bit-Farbkomponenten 1902-1908, die in einem 128-Bit-Regi­ ster XMM0 angeordnet sind, in vier 16-Bit-Zahlen 1912-1918 oder Farbkomponenten in einem 64-Bit-Register MM0. Bei­ spielsweise werden die zuvor erwähnten Schritte für jede der drei 128-Bit-Register XMM0-XMM2 durchgeführt, wobei das Re­ gister XMM0 die Daten für eine rote Farbkomponente für jedes der vier Pixel, das Register XMM1 die Daten für eine grüne Farbkomponente jedes der vier Pixel und das Register XMM2 die Daten für eine blaue Farbkomponente jedes der vier Pixel aufweist. Bei einem alternativen Ausführungsbeispiel wird ein (nicht gezeigtes) viertes 128-Bit-Register verwendet, das die Transparenzdaten für jedes der vier Pixel enthalten kann. Bei einem weiteren alternativen Ausführungsbeispiel kann jedes Register des Satzes von drei 128-Bit-Registern Daten für die Farbkomponenten eines Pixels enthalten und je­ des Register des Satzes von drei 64-Bit-Registern kann Daten für die Farbkomponenten enthalten, die ein Pixel definieren.
Der Schritt des Anordnens, der Schritt 1706, umfaßt das Anordnen der vier 16-Bit-Zahlen oder Farbkomponenten in dem Ganzzahlformat in einem 64-Bit-Register. Folglich enthält bei einem Ausführungsbeispiel ein einem ersten 128-Bit-Regi­ ster XMM0 entsprechendes erstes 64-Bit-Register MM0 die Rot- Komponentendaten für jedes der vier Pixel, ein einem zweiten 128-Bit-Register XMM1 entsprechendes zweites 64-Bit-Register MM1 die Grün-Komponentendaten für jedes der vier Pixel und ein einem dritten 128-Bit-Register XMM2 entsprechendes drit­ tes 64-Bit-Register MM2 die Blau-Komponentendaten für jedes der vier Pixel.
Der Schritt des Zusammensetzens, der Schritt 1708, um­ faßt grundsätzlich die Bearbeitung des Inhalts des Satzes der drei 64-Bit-Register MM0-MM1, wobei die Bearbeitung zu zwei 64-Bit-Registern 1998-1999 führt, die jeweils die Farb­ komponenten enthalten, die jedes der beiden Pixel definie­ ren. Bei einem Ausführungsbeispiel umfaßt die Bearbeitung die logische Kombination der zwei Register MM0-MM1 des Sat­ zes von 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 weist eine erste und eine zweite 8-Bit-Farbkomponente für ein er­ stes und ein zweites Pixel, und das zweite kombinierte Regi­ ster MM5 weist eine erste und eine zweite 8-Bit-Farbkompo­ nente für ein drittes und ein viertes Pixel auf. Ein drittes kombiniertes 64-Bit-Register MM3 wird durch Ausführung einer Entpack-Operation 1920 an den unteren 32 Bits des dritten 64-Bit-Registers MM2 erzeugt, wobei das dritte kombinierte Register MM3 eine dritte 8-Bit-Farbkomponente für das erste und das zweite Pixel aufweist. Ein viertes kombiniertes 64- Bit-Register MM6 wird durch Ausführung einer Entpack-Opera­ tion 1922 an den oberen 32 Bits des dritten 64-Bit-Registers MM2 erzeugt, wobei das vierte kombinierte Register MM6 eine dritte 8-Bit-Farbkomponente für das dritte und das vierte Pixel enthält.
Insbesondere weist bei einem Ausführungsbeispiel jedes Register des Satzes von drei 64-Bit-Registern nach dem Schritt des Anordnens, Schritt 1706, Daten für eine Farbkom­ ponente jedes der vier Pixel auf. Folglich umfaßt der Schritt des Zusammensetzens, der Schritt 1708, den Schritt des Zusammensetzens der Ergebnisse für die roten und grünen Farbkomponenten der vier Pixel, den Schritt des Zusammenset­ zens der Ergebnisse für die blauen Farbkomponenten der vier Pixel und den Schritt des Zusammensetzens der roten, grünen und blauen Komponenten, um zwei 64-Bit-Register zu bilden, wobei jedes Register die Daten für die Farbkomponenten auf­ weist, die jedes der beiden Pixel definieren.
Der Schritt des Zusammensetzens der Ergebnisse für die roten und grünen Farbkomponenten von vier Pixeln umfaßt die Durchführung eines bitweisen logischen ODERs der Inhalte des ersten MM0 und zweiten MM1 64-Bit-Registers des Satzes von drei 64-Bit-Registern. Das sich ergebende 64-Bit-Register 1950 weist acht 8-Bit-Zahlen oder Farbkomponenten auf, wobei vier 8-Bit-Zahlen die Daten für die rote Farbkomponente je­ des der vier Pixel und vier 8-Bit-Zahlen die Daten für die grüne Farbkomponente jedes der vier Pixel umfassen. Bei ei­ nem Ausführungsbeispiel werden die Inhalte des sich ergeben­ den 64-Bit-Registers 1950 durch das erste 64-Bit-Register MM0 des Satzes von drei 64-Bit-Registern ausgetauscht. Eine Entpack-Operation (entpacke niedrig von Wort zu Doppelwort) 1952 wird an den unteren 32 Bits des sich ergebenden 64-Bit- Registers 1950 durchgeführt, um ein erstes kombiniertes 64- Bit-Register MM4 zu erzeugen, das die Daten für die rote Farbkomponente und die grüne Farbkomponente eines ersten und eines zweiten Pixels enthält. Eine Entpack-Operation ver­ schachtelt die Daten, indem ein Operand aus einem Register und ein Operand aus einem zugehörigen Platz in einem weite­ ren Register entnommen und beide Operanden zusammenhängend in einem Register angeordnet werden. Eine Entpack-Operation (entpacke hoch von Wort zu Doppelwort) 1954 wird an den obe­ ren 32 Bits des sich ergebenden 64-Bit-Registers 1950 durch­ geführt, um ein zweites kombiniertes 64-Bit-Register MM5 zu erzeugen, das die Daten für die rote Farbkomponente und die grüne Farbkomponente eines dritten und eines vierten Pixels enthält.
Der Schritt des Zusammensetzens der Ergebnisse für die blaue Farbkomponente der vier Pixel umfaßt die Durchführung einer Entpack-Operation (ent 10754 00070 552 001000280000000200012000285911064300040 0002019920214 00004 10635packe niedrig von Wort zu Dop­ pelwort) 1920 an den unteren 32 Bits des dritten 64-Bit-Re­ gisters MM2, um ein drittes kombiniertes 64-Bit-Register MM3 zu erzeugen, das die Daten für die blaue Farbkomponente ei­ nes ersten und eines zweiten Pixels enthält. Eine Entpack- Operation (entpacke hoch von Wort zu Doppelwort) 1922 wird an den oberen 32-Bits des dritten 64-Bit-Registers MM2 durchgeführt, um ein viertes kombiniertes 64-Bit-Register MM6 zu erzeugen, das die Daten für die blaue Farbkomponente eines dritten und vierten Pixels enthält.
Der Schritt des Zusammensetzens der roten, grünen und blauen Komponenten, um zwei 64-Bit-Register 1998, 1999 zu bilden, umfaßt das Durchführen eines ersten logischen ODERs 1924 des ersten MM4 und des dritten MM3 kombinierten 64-Bit- Registers, um ein erstes graphisches Register 1998 zu erzeu­ gen, und das Durchführen eines zweiten logischen ODERs 1926 des zweiten MM5 und vierten MM6 kombinierten 64-Bit-Regi­ sters, um ein zweites graphisches Register 1999 zu erzeugen. Das erste graphische Register 1998 weist drei 8-Bit-Farbkom­ ponenten auf, die ein erstes 1930 und ein zweites 1932 Pixel definieren. Das zweite Graphikregister 1999 weist drei 8- Bit-Farbkomponenten auf, die ein drittes 1934 und viertes 1936 Pixel definieren.
Bei einem Ausführungsbeispiel wird der oben erörterte CVTPS2PB-Befehl verwendet, um die in dem Gleitkommaformat vorliegenden Komponenten in Farbwerte in einem Ganzzahlfor­ mat im Schritt 1704 zu konvertieren. Fig. 20 ist eine Da­ tenflußdarstellung der parallelen Konvertierung der Graphik­ farbdaten unter Verwendung des CVTPS2PB-Befehls. Unter Ver­ wendung dieses Befehls umfaßt der Schritt des Konvertierens, der Schritt 1704, das Konvertieren von vier 32-Bit-Farbkom­ ponenten 2002-2008, die in einem 128-Bit-Register XMM0 ange­ ordnet sind, in vier 8-Bit-Zahlen 2012 bis 2018 oder Farb­ komponenten in ein 64-Bit-Register MM0. Bei einem Ausfüh­ rungsbeispiel werden die zuvor erwähnten Schritte für jedes von drei 128-Bit-Registern XMM0-XMM2 durchgeführt, wobei das Register XMM0 Daten für eine rote Farbkomponente jedes der vier Pixel, das Register XMM1 Daten für eine grüne Farbkom­ ponente jedes der vier Pixel und das Register XMM2 Daten für eine blaue Farbkomponente jedes der vier Pixel aufweist. Bei einem alternativen Ausführungsbeispiel kann ein (nicht ge­ zeigtes) 128-Bit-Register Transparenzdaten für jedes der vier Pixel enthalten. In einem weiteren alternativen Ausfüh­ rungsbeispiel kann jedes der Register eines Satzes von drei 128-Bit-Registern Daten für die Farbkomponenten eines Pixels und jedes Register eines Satzes von drei 64-Bit-Register Da­ ten für die Farbkomponenten, die ein Pixel definieren, ent­ halten.
Der Schritt des Anordnens, Schritt 1706, umfaßt das An­ ordnen der vier 8-Bit-Zahlen oder Farbkomponenten in dem Ganzzahlformat in einem 64-Bit-Register. So weist ein einem ersten 128-Bit-Register XMM0 entsprechendes erstes 64-Bit­ register MM0 die Rot-Komponentendaten für jedes der vier Pixel, ein einem zweiten 128-Bit-Register XMM1 entsprechen­ des zweites 64-Bit-Register MM1 die Grün-Komponentendaten für jedes der vier Pixel und ein einem dritten 128-Bit-Regi­ ster XMM2 entsprechendes drittes 64-Bit-Register MM2 die Blau-Komponentendaten für jedes der vier Pixel auf.
Der Schritt des Zusammensetzens, Schritt 1708, umfaßt grundsätzlich das Bearbeiten der Inhalte des Satzes von drei 64-Bit-Registern MM0-MM2, wobei die Bearbeitung zu zwei 64- Bit-Registern 2098, 2099 führt, die jeweils die Farbkompo­ nenten enthalten, die jeweils eines der beiden Pixel defi­ nieren. Bei einem Ausführungsbeispiel umfaßt die Bearbeitung die logische Kombination der zwei Register MM0-MM1 des Sat­ zes von 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 weist eine erste und eine zweite 8-Bit-Farbkomponente für jeweils ein erstes und ein zweites Pixel, und das zweite kombinierte Register MM5 weist eine erste und eine zweite 8-Bit-Farbkom­ ponente für jeweils ein drittes und ein viertes Pixel auf. Ein drittes MM3 und ein viertes MM6 kombiniertes 64-Bit-Re­ gister werden aus der logischen Kombination eines Registers MM2 des Satzes von drei 64-Bit-Registern und eines vierten logische Nullen enthaltenden 64-Bit-Register 1910 erzeugt. Das dritte kombinierte Register MM3 enthält eine dritte 8- Bit-Farbkomponente für jeweils das erste und zweite Pixel, und das vierte kombinierte Register MM6 enthält eine dritte 8-Bit-Farbkomponente für jeweils das dritte und vierte Pixel.
Eine logische Kombination des ersten MM4 und dritten MM3 kombinierten Registers führt zu einem ersten 64-Bit-Gra­ phikregister 2098; das erste Graphikregister 2098 enthält 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 Re­ gisters führt zu einem zweiten 64-Bit-Graphikregister 2099; das zweite Graphikregister 2099 enthält drei 8-Bit-Farbkom­ ponenten 2034, die eine Farbe eines dritten Pixels definie­ ren, und drei 8-Bit-Farbkomponenten 2036, die eine Farbe ei­ nes vierten Pixels definieren. Bei einem alternativen Aus­ führungsbeispiel kann jedes der kombinierten Register zwei 8-Bit-Transparenzkomponenten für jedes der zugehörigen Pixel enthalten, und jedes der Graphikregister kann eine 8-Bit- Transparenzkomponente enthalten, die jeweils dem dargestell­ ten Pixel entspricht.
Insbesondere enthält bei einem Ausführungsbeispiel nach dem Schritt des Anordnens, dem Schritt 1706, jedes Register des Satzes von drei 64-Bit-Registern MM0-MM2 Daten für eine Farbkomponente für jedes der vier Pixel. Folglich umfaßt der Schritt des Zusammensetzens, der Schritt 1708 den Schritt des Zusammensetzens der Ergebnisse für die rote und grüne Farbkomponente von vier Pixeln, den Schritt des Zusammenset­ zens der Ergebnisse für die blaue Farbkomponente von vier Pixeln und den Schritt des Zusammensetzens der roten, grünen und blauen Komponenten, um zwei 64-Bit-Register 2098, 2099 zu bilden, wobei jedes Register die Daten für die Farbkompo­ nenten enthält, die jedes der beiden Pixel definieren.
Der Schritt des Zusammensetzens der Ergebnisse für die rote und grüne Farbkomponente von vier Pixeln umfaßt das Durchführen einer Entpack-Operation (entpacke niedrig-von Byte zu Wort) 2056 an dem Inhalt des ersten MM0 und zweiten MM1 64-Bit-Registers des Satzes von drei 64-Bit-Registern MM0-MM2. Das sich ergebende 64-Bit-Register 2050 enthält acht 8-Bit-Zahlen oder Farbkomponenten, wobei vier 8-Bit- Zahlen die Daten für die rote Farbkomponente jedes der vier Pixel und vier 8-Bit-Zahlen die Daten für die grüne Farbkom­ ponente jedes der vier Pixel enthalten. Bei einem Ausfüh­ rungsbeispiel ersetzt der Inhalt des sich ergebenden 64-Bit- Registers 2050 das erste 64-Bit-Register MM0 des Satzes von drei 64-Bit-Registern MM0-MM2. Eine Entpack-Operation (entpacke niedrig von Wort zu Doppelwort) 2052 wird an den unteren 32 Bits des sich ergebenden 64-Bit-Registes 2050 durchgeführt, um ein erstes kombiniertes 64-Bit-Register MM4 zu erzeugen, das die Daten für die rote Farbkomponente und die grüne Farbkomponente von jeweils einem ersten und einem zweiten Pixel enthält. Eine Entpack-Operation (entpacke hoch von Wort zu Doppelwort) 2054 wird an den oberen 32 Bits des sich ergebenden 64-Bit-Registers 2050 durchgeführt, um ein zweites kombiniertes 64-Bit-Register MM5 zu erzeugen, das die Daten für die rote Farbkomponente und die grüne Farbkom­ ponente von jeweils einem dritten und vierten Pixel enthält.
Der Schritt des Zusammensetzens der Ergebnisse für die blaue Farbkomponente der vier Pixel umfaßt die Durchführung einer Entpack-Operation (entpacke niedrig von Byte zu Wort) 2058 an dem Inhalt des dritten 64-Bit-Registers und eines vierten 64-Bit-Registers MM3, das logische Nullen enthält. Das sich ergebende 64-Bit-Register 2060 weist vier 8-Bit- Zahlen auf, die die Daten für die blaue Komponente jedes der vier Pixel sind. Bei einem Ausführungsbeispiel ersetzt der Inhalt des sich ergebenden 64-Bit-Registers 2060 das dritte 64-Bit-Register MM2 des Satzes von drei 64-Bit-Registern MM0-MM2. Eine Entpack-Operation (entpacke niedrig von Wort zu Doppelwort) 2062 wird an den unteren 32 Bits des sich er­ gebenden 64-Bit-Registers 2060 durchgeführt; das Ergebnis der Entpack-Operation ersetzt den Inhalt des vierten 64-Bit- Registers MM3, wobei jetzt das vierte 64-Bit-Register MM3 die Daten für die blaue Farbkomponente jeweils eines ersten und eines zweiten Pixels enthält. Eine Entpack-Operation (entpacke hoch von Wort zu Doppelwort) 2064 wird an den obe­ ren 32 Bits des sich ergebenden 64-Bit-Registers 2060 durch­ geführt, um ein siebentes 64-Bit-Register MM6 zu erzeugen, das die Daten für die blaue Farbkomponente von jeweils einem dritten und vierten Pixel enthält.
Der Schritt des Zusammensetzens der roten, grünen und blauen Komponenten, um zwei 64-Bit-Register 2098, 2099 zu bilden, umfaßt das Durchführen eines ersten logischen ODER 2070 des ersten MM4 und dritten MM3 kombinierten 64-Bit-Re­ gisters, um ein erstes graphisches Register 2098 zu erzeu­ gen, und das Durchführen eines zweiten logischen ODER 2072 des zweiten MM5 und vierten MM6 kombinierten 64-Bit-Regi­ sters, um ein zweites graphisches Register 2099 zu erzeugen.
Das erste graphische Register 2098 weist drei 8-Bit-Farbkom­ ponenten auf, die jeweils ein erstes 2030 und ein zweites 2032 Pixel definieren. Das zweite graphische Register 2099 weist drei 8-Bit-Farbkomponenten auf, die jeweils ein drit­ tes 2034 und ein viertes 2036 Pixel definieren.

Claims (21)

1. Verfahren zum Konvertieren einer Zahl zwischen ei­ nem Gleitkommaformat und einem Ganzzahlformat, wobei:
eine in dem Ganzzahlformat vorliegende Zahl in einem Register eines ersten Satzes von Architekturregistern in ei­ nem skalaren Format gespeichert wird;
die Zahl in eine Zahl in dem Gleitkommaformat konver­ tiert wird; und
die in dem Gleitkommaformat vorliegende Zahl in ein Re­ gister eines zweiten Satzes von Architekturregistern in ei­ nem gepackten Format angeordnet wird.
2. Verfahren nach Anspruch l, dadurch gekennzeichnet, daß mehrere Zahlen in dem Gleitkommaformat in einem Re­ gister des zweiten Satzes von Architekturregistern in dem gepackten Format gespeichert werden;
daß eine der mehreren Zahlen in eine Zahl in dem Ganz­ zahlformat konvertiert wird; und
daß die Zahl in dem Ganzzahlformat in ein Register ei­ nes ersten Satzes von Architekturregistern in dem skalaren Format angeordnet wird.
3. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß beim Konvertieren auf Rundungssteuerbits in einem Steu­ er/Status-Register zugegriffen wird und die Zahl in dem Gleitkommaformat entsprechend den Rundungssteuerbits gerun­ det wird.
4. Das Verfahren nach Anspruch 2, dadurch gekennzeich­ net, daß beim Konvertieren einer der mehreren Zahlen in eine in dem Ganzzahlformat vorliegende Zahl auf Rundungsmodusbits aus einem Konvertierungsbefehl zugegriffen wird und die Zahl in dem Ganzzahlformat entsprechend einem von dem Rundungsmo­ dusbits angezeigten Rundungsmodus gerundet wird.
5. Verfahren nach Anspruch 4, dadurch gekennzeichnet, daß der Rundungsmodus ein Abschneide-Modus ist.
6. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß vier Zahlen in dem Gleitkommaformat in einem Register des zweiten Satzes gespeichert werden.
7. Verfahren nach Anspruch 6, dadurch gekennzeichnet ist, daß das Gleitkommaformat ein 32-Bit-Gleitkommaformat einfacher Genauigkeit ist und daß das Ganzzahlformat ein 32- Bit-Ganzzahlformat ist.
8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, daß der erste Satz von Architekturregistern acht 32-Bit-Re­ gister und der zweite Satz von Architekturregistern acht 128-Bit-Register umfaßt.
9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, daß der Schritt des Anordnens der in dem Gleitkommaformat vorliegenden Zahl in dem Register des zweiten Satzes von Ar­ chitekturregistern das Anordnen der in dem Gleitkommaformat vorliegenden Zahl in einem niedrigsten Segment des Registers und das ungeänderte Beibehalten der oberen Segmente des Re­ gisters umfaßt.
10. Befehl zum Konvertieren zwischen einem Gleitkom­ maformat und einem Ganzzahlformat, der bei seiner Ausführung einen Computer veranlaßt,
eine in dem Ganzzahlformat vorliegende Zahl, die in ei­ nem Register eines ersten Satzes von Architekturregistern gespeichert ist, in eine Zahl in dem Gleitkommaformat zu konvertieren, und
die in dem Gleitkommaformat vorliegende Zahl in ein ge­ packtes Register eines zweiten Satzes von Architekturregi­ stern zu speichern.
11. Befehl nach Anspruch 10, dadurch gekennzeichnet, daß er bei seiner Ausführung den Computer veranlaßt, den zu­ sätzlichen Schritt des Rundens der Zahl in dem Gleitkom­ maformat gemäß einem Rundungsfeld eines Steuer/Statusregi­ sters auszuführen.
12. Befehl nach Anspruch 11, dadurch gekennzeichnet, daß der erste Satz von Architekturregistern acht 32-Bit-Re­ gister umfaßt.
13. Befehl nach Anspruch 12, dadurch gekennzeichnet, daß der zweite Satz von Registern acht 128-Bit-Register um­ faßt.
14. Befehl nach Anspruch 13, dadurch gekennzeichnet, daß das Gleitkommaformat ein 32-Bit-Gleitkommaformat einfa­ cher Genauigkeit ist.
15. Befehl nach Anspruch 14, dadurch gekennzeichnet, daß das Ganzzahlformat ein 32-Bit-Ganzzahlformat ist.
16. Befehl nach Anspruch 15, dadurch gekennzeichnet, daß der Schritt des Speicherns das Speichern der in dem Gleitkommaformat vorliegenden Zahl in einem untersten Seg­ ment des gepackten Registers des zweiten Satzes von Archi­ tekturregistern und des ungeänderten Bewahrens der drei obe­ ren Segmente umfaßt.
17. Befehl zum Konvertieren zwischen einem Ganzzahlfor­ mat und einem Gleitkommaformat, der bei seiner Ausführung einen Computer veranlaßt,
eine in dem Gleitkommaformat vorliegende Zahl, die in einem gepackten Register eines ersten Satzes von Architek­ turregistern gespeichert ist, in eine Zahl in dem Ganzzahl­ format zu konvertieren; und
die in dem Ganzzahlformat vorliegende Zahl in einem skalaren Register eines zweiten Satzes von Architekturregi­ stern zu speichern.
18. Befehl nach Anspruch 17, dadurch gekennzeichnet, daß er bei seiner Ausführung den Computer veranlaßt, zusätz­ lich die in dem Ganzzahlformat vorliegende Zahl gemäß einem Rundungsmodusfeld in einem Befehlsregister zu runden.
19. Befehl nach Anspruch 18, dadurch gekennzeichnet, daß das Rundungsmodusfeld einen Abschneide-Rundungsmodus an­ zeigt.
20. Befehl nach Anspruch 17, dadurch gekennzeichnet, daß der erste Satz von Architekturregistern acht gepackte 128-Bit-Gleitkommaregister aufweist.
21. Befehl nach Anspruch 20, dadurch gekennzeichnet, daß der zweite Satz von Architekturregistern acht skalare 32-Bit-Ganzzahlregister aufweist.
DE19920214A 1998-04-30 1999-04-29 Verfahren und Einrichtung zum Konvertieren einer Zahl zwischen einem Gleitkommaformat und einem Ganzzahlformat Expired - Fee Related DE19920214C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/069,796 US6292815B1 (en) 1998-04-30 1998-04-30 Data conversion between floating point packed format and integer scalar format

Publications (2)

Publication Number Publication Date
DE19920214A1 true DE19920214A1 (de) 1999-11-25
DE19920214C2 DE19920214C2 (de) 2002-04-04

Family

ID=22091265

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19920214A Expired - Fee Related DE19920214C2 (de) 1998-04-30 1999-04-29 Verfahren und Einrichtung zum Konvertieren einer Zahl zwischen einem Gleitkommaformat und einem Ganzzahlformat

Country Status (5)

Country Link
US (1) US6292815B1 (de)
DE (1) DE19920214C2 (de)
GB (1) GB2343765B (de)
HK (1) HK1028683A1 (de)
SG (1) SG75945A1 (de)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7301541B2 (en) * 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide 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
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
ATE557342T1 (de) * 1998-08-24 2012-05-15 Microunity Systems Eng Prozessor und verfahren zur matrixmultiplikation mit einem breiten operand
US7932911B2 (en) 1998-08-24 2011-04-26 Microunity Systems Engineering, Inc. Processor for executing switch and translate instructions requiring wide operands
US6523050B1 (en) * 1999-08-19 2003-02-18 National Semiconductor Corporation Integer to floating point conversion using one's complement with subsequent correction to eliminate two's complement in critical path
US6546480B1 (en) * 1999-10-01 2003-04-08 Hitachi, Ltd. Instructions for arithmetic operations on vectored data
US6535898B1 (en) * 2000-01-24 2003-03-18 Microsoft Corporation Fast floating-point truncation to integer form
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
US6879992B2 (en) * 2000-12-27 2005-04-12 Intel Corporation System and method to efficiently round real numbers
US8285976B2 (en) 2000-12-28 2012-10-09 Micron Technology, Inc. Method and apparatus for predicting branches using a meta predictor
US20040190771A1 (en) * 2003-03-27 2004-09-30 Michel Eid Integer format for efficient image data processing
US7899855B2 (en) 2003-09-08 2011-03-01 Intel Corporation Method, apparatus and instructions for parallel data conversions
US7277990B2 (en) 2004-09-30 2007-10-02 Sanjeev Jain Method and apparatus providing efficient queue descriptor memory access
US7418543B2 (en) * 2004-12-21 2008-08-26 Intel Corporation Processor having content addressable memory with command ordering
US7555630B2 (en) 2004-12-21 2009-06-30 Intel Corporation Method and apparatus to provide efficient communication between multi-threaded processing elements in a processor unit
US7467256B2 (en) * 2004-12-28 2008-12-16 Intel Corporation Processor having content addressable memory for block-based queue structures
US9223751B2 (en) 2006-09-22 2015-12-29 Intel Corporation Performing rounding operations responsive to an instruction
US8667250B2 (en) * 2007-12-26 2014-03-04 Intel Corporation Methods, apparatus, and instructions for converting vector data
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
EP2360926A1 (de) * 2010-01-19 2011-08-24 Fraunhofer-Gesellschaft zur Förderung der Angewandten Forschung e.V. Bildkodierer und Bilddekodierer
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
US9411585B2 (en) 2011-09-16 2016-08-09 International Business Machines Corporation Multi-addressable register files and format conversions associated therewith
US9785565B2 (en) 2014-06-30 2017-10-10 Microunity Systems Engineering, Inc. System and methods for expandably wide processor instructions
US10228939B2 (en) 2016-12-14 2019-03-12 Oracle International Corporation Efficient conversion of numbers from database floating point format to binary integer format

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3872442A (en) * 1972-12-14 1975-03-18 Sperry Rand Corp System for conversion between coded byte and floating point format
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
US5303174A (en) 1991-10-07 1994-04-12 Nec Corporation Floating pointing arithmetic operation system
US5404469A (en) * 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
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
US5696709A (en) * 1995-03-31 1997-12-09 International Business Machines Corporation Program controlled rounding modes
US5627773A (en) 1995-06-30 1997-05-06 Digital Equipment Corporation Floating point unit data path alignment
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
US5933160A (en) * 1995-11-27 1999-08-03 Sun Microsystems High-performance band combine function
US5848284A (en) * 1995-11-28 1998-12-08 Intel Corporation Method of transferring data between moderately coupled integer and floating point units
US5805486A (en) 1995-11-28 1998-09-08 Intel Corporation Moderately coupled floating point and integer units
US5852726A (en) 1995-12-19 1998-12-22 Intel Corporation Method and apparatus for executing two types of instructions that specify registers of a shared logical register file in a stack and a non-stack referenced manner
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
US5729724A (en) 1995-12-20 1998-03-17 Intel Corporation Adaptive 128-bit floating point load and store operations for quadruple precision compatibility
US5968116A (en) 1996-03-27 1999-10-19 Intel Corporation Method and apparatus for facilitating the management of networked devices
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
US5768170A (en) * 1996-07-25 1998-06-16 Motorola Inc. Method and apparatus for performing microprocessor integer division operations using floating point hardware
US6058465A (en) * 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
US5978901A (en) 1997-08-21 1999-11-02 Advanced Micro Devices, Inc. Floating point and multimedia unit with data type reclassification capability
EP1025485B1 (de) 1997-10-23 2001-09-12 Advanced Micro Devices, Inc. Multifunktionnelle zweiteilige nachschlagetabelle
US6061782A (en) * 1997-11-29 2000-05-09 Ip First Llc Mechanism for floating point to integer conversion with RGB bias multiply
US5995122A (en) 1998-04-30 1999-11-30 Intel Corporation Method and apparatus for parallel conversion of color values from a single precision floating point format to an integer format

Also Published As

Publication number Publication date
GB9910126D0 (en) 1999-06-30
SG75945A1 (en) 2000-10-24
HK1028683A1 (en) 2001-05-18
GB2343765A (en) 2000-05-17
DE19920214C2 (de) 2002-04-04
GB2343765B (en) 2001-02-14
US6292815B1 (en) 2001-09-18

Similar Documents

Publication Publication Date Title
DE19920214C2 (de) Verfahren und Einrichtung zum Konvertieren einer Zahl zwischen einem Gleitkommaformat und einem Ganzzahlformat
DE19983189B4 (de) System, Verfahren, Befehl und Prozessor zum Parallelverarbeiten von Graphikdaten
DE69233361T2 (de) Ein-Chip-Mikrocomputer
DE69725057T2 (de) Gleitkommaprozessor für einen dreidimensionalen graphischen Beschleuniger
DE69632157T2 (de) Kompression und -kodierung eines 3D Maschennetzes
US6480868B2 (en) Conversion from packed floating point data to packed 8-bit integer data in different architectural registers
DE102018005977A1 (de) Gleitkomma- zu festkomma-umwandlung
US6502115B2 (en) Conversion between packed floating point data and packed 32-bit integer data in different architectural registers
DE69635624T2 (de) System und Verfahren zur Kompression und Dekompression von Daten
DE102019133028A1 (de) Für neuronale netzwerke geeignetes effizientes matrixformat
DE69728002T2 (de) Steuerprozessor für einen drei-dimensionalen Beschleuniger, der die Fähigkeit geometrischer Dekompression besitzt und Verfahren zur Bearbeitung von geometrischen Daten in diesem Beschleuniger
US6573846B1 (en) Method and apparatus for variable length decoding and encoding of video streams
US7230633B2 (en) Method and apparatus for image blending
DE112004001648T5 (de) Verfahren, Vorrichtung und Befehle für parallele Datenumwandlung
US6247116B1 (en) Conversion from packed floating point data to packed 16-bit integer data in different architectural registers
DE102018006757A1 (de) Festkomma-zu-gleitkomma-umwandlung
DE19983504B4 (de) Verbesserung der Portabilität von digitalen Bildern
DE102013022257A1 (de) Programmierbares Mischen in mehrsträngigen Verarbeitungseinheiten
DE102007045187A1 (de) Verfahren und Vorrichtung zum Ausführen einer logischen Vergleichsoperation
US5757432A (en) Manipulating video and audio signals using a processor which supports SIMD instructions
EP0817003B1 (de) Formatumwandlung von Datenwörtern graphischer Bilder
DE102018124919A1 (de) Skalierbare speicheroptimierte Hardware für Matrix-Solve
DE102018125805A1 (de) Systeme, verfahren, und vorrichtungen für skalarproduktoperationen
DE112017003347T5 (de) Systeme, Vorrichtungen und Verfahren für Strided-Ladevorgänge
DE112007002146T5 (de) Verfahren und Vorrichtung zum Durchführen von Auswahl-Operationen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
D2 Grant after examination
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee