DE19920214C2 - 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 GanzzahlformatInfo
- Publication number
- DE19920214C2 DE19920214C2 DE19920214A DE19920214A DE19920214C2 DE 19920214 C2 DE19920214 C2 DE 19920214C2 DE 19920214 A DE19920214 A DE 19920214A DE 19920214 A DE19920214 A DE 19920214A DE 19920214 C2 DE19920214 C2 DE 19920214C2
- Authority
- DE
- Germany
- Prior art keywords
- format
- register
- floating point
- bit
- integer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/14—Conversion to or from non-weighted codes
- H03M7/24—Conversion to or from floating-point codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
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 Verfahren zum Konver
tieren von Zahlen zwischen einem Gleitkommaformat und einem
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 oder -Segmente unterteilt
werden, von denen jedes einen separaten 32-Bit-Wert dar
stellt. Zusätzlich liefern diese bekannten Prozessoren Be
fehle zum separaten und parallelen Bearbeiten jedes Elements
dieser gepackten Datentypen. Beispielsweise addiert ein ge
packter Additionsbefehl einander entsprechende Datenelemente
aus einem ersten gepackten Datenoperanden und einem zweiten
gepackten Datenoperanden 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 Multimedia-Anwendungen ef
fektiver 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[1 . . . 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, Verarbeitungsabläufe
in einem Prozessor zur Verfügung zu stellen, die die o. g.
Verarbeitung von Graphikdaten beschleunigen.
Diese Aufgabe wird erfindungsgemäß durch ein Verfahren
mit den Merkmalen des Anspruchs 1 bzw. durch ein Verfahren
mit den Merkmalen des Anspruchs 11 bzw. ein Verfahren mit
den Merkmalen des Anspruchs 19 bzw. ein Verfahren mit den
Merkmalen des Anspruchs 30 gelöst.
Es werden Verfahren zum Konvertieren einer Zahl zwi
schen einem Gleitkommaformat und einem Ganzzahlformat be
schrieben.
Bei einer Ausführungsform werden Zahlen in dem Ganz
zahlformat in einem Register eines ersten Satzes von Archi
tekturregistern in einem skalaren Format gespeichert. Zumindest
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 Beispiel-Computersystem;
Fig. 2 einen beispielhaften Prozessor;
Fig. 3 eine beispielhafte Doppel-Daten-Pipeline;
Fig. 4 eine Cache-Architektur eines Prozessors;
Fig. 5 ein von 128-Bit-Multimedia-Erweiterungsregi
stern verwendetes binäres Gleitkommaformat;
Fig. 6 die Operation eines gepackten Befehls an ein
Paar von Operanden;
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;
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
CVTPS2PI-Befehls gemäß einem Ausführungsbeispiel;
Fig. 19 ein Datenflußdiagramm einer parallelen Konver
tierung graphischer Farbdaten unter Verwendung eines
CVTPS2PW-Befehls gemäß einem Ausführungsbeispiel; und
Fig. 20 ein Datenflußdiagramm einer parallelen Konver
tierung graphischer Farbdaten unter Verwendung eines
CVTPS2PB-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 Gleitkommaformat
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 dreidimensionaler
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 Architekturregister
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ührungsformen
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 Prozessor 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 Klangaufzeichnung
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 aufzu
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 verwendet. 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
packte 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
Gache-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
wenn 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, Operandenlesen
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
typen 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-Erweiterungsregister
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
weist 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 MM0-MM7 und die
acht 128-Bit-Multimedia-Erweiterungsregister XMM0-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 128-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 Precision
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,
wenn 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-Gepackt-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-Gleitkommaformat
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 (CVTPS2PI-Befehl) 922, der die beiden am geringsten
bewerteten Gleitkommazahlen einfacher Genauigkeit aus einem
126-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-Erweiterungsregister
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 gepeichert
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-Ganzzahlformat
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-Multimedia-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
mit 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 -bildern,
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 Speicherzugriff
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 Register
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-
B 20755 00070 552 001000280000000200012000285912064400040 0002019920214 00004 20636it-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 MM0-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 (entpacke 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-Register
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 eines
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 (41)
1. Verfahren zum Konvertieren von Zahlen aus einem Ganz
zahlformat in ein Gleitkommaformat in einem Prozessor (109),
wobei
eine Zahl in dem Ganzzahlformat in einem Prozessorregi ster (902) eines ersten Satzes (414) von Architekturregi stern in einem skalaren Format gespeichert wird, und
bei der Ausführung eines Befehls (CVTSI2SS 910) des Pro zessors (109)
die Zahl in dem Ganzzahlformat gelesen und in eine Zahl in dem Gleitkommaformat konvertiert wird und
die Zahl in dem Gleitkommaformat in ein Segment eines Prozessorregisters (906) eines zweiten Satzes (412) von Architekturregistern in einem gepackten Format gespeichert wird.
eine Zahl in dem Ganzzahlformat in einem Prozessorregi ster (902) eines ersten Satzes (414) von Architekturregi stern in einem skalaren Format gespeichert wird, und
bei der Ausführung eines Befehls (CVTSI2SS 910) des Pro zessors (109)
die Zahl in dem Ganzzahlformat gelesen und in eine Zahl in dem Gleitkommaformat konvertiert wird und
die Zahl in dem Gleitkommaformat in ein Segment eines Prozessorregisters (906) eines zweiten Satzes (412) von Architekturregistern in einem gepackten Format gespeichert wird.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet,
daß beim Konvertieren auf Rundungssteuerbits in einem Steu
er- und Status-Register zugegriffen wird und die Zahl in dem
Gleitkommaformat in Abhängigkeit von den Rundungssteuerbits
gerundet wird.
3. Verfahren nach Anspruch 1 oder 2, dadurch gekenn
zeichnet, daß mehrere Zahlen in dem Gleitkommaformat in ei
ner entsprechenden Anzahl von Segmenten des Prozessorregi
sters (906) des zweiten Satzes (412) von Architekturregi
stern in dem gepacken Format gespeichert werden, und
bei der Ausführung eines weiteren Befehls (CVTSS2SI 912; CVTTSS2SI 914) des Prozessors
eine der Zahlen in dem Gleitkommaformat gelesen und in eine Zahl in dem Ganzzahlformat konvertiert wird und
die Zahl in dem Ganzzahlformat in ein Prozessor register (902) des ersten Satzes (414) von Architek turregistern in dem skalaren Format gespeichert wird.
bei der Ausführung eines weiteren Befehls (CVTSS2SI 912; CVTTSS2SI 914) des Prozessors
eine der Zahlen in dem Gleitkommaformat gelesen und in eine Zahl in dem Ganzzahlformat konvertiert wird und
die Zahl in dem Ganzzahlformat in ein Prozessor register (902) des ersten Satzes (414) von Architek turregistern in dem skalaren Format gespeichert wird.
4. Verfahren nach Anspruch 3, dadurch gekennzeichnet,
daß beim Konvertieren der Zahl in dem Gleitkommaformat in
eine Zahl in dem Ganzzahlformat auf Rundungssteuerbits in
einem Steuer- und Status-Register zugegriffen wird und die
Zahl in dem Ganzzahlformat in Abhängigkeit von den Rundungs
steuerbits gerundet wird.
5. Verfahren nach Anspruch 3, dadurch gekennzeichnet,
daß beim Konvertieren der Zahl in dem Gleitkommaformat in
eine Zahl in dem Ganzzahlformat in Abhängigkeit von einem
Rundungsmodusbit in dem weiteren Befehl (CVTSS2SI 912;
CVTTSS2SI 914)
entweder (CVTTSS2SI 914) die Zahl in dem Ganzzahl format entsprechend einem von dem Rundungsmodusbit ange zeigten Rundungsmodus gerundet wird
oder (CVTSS2SI 912) auf Rundungssteuerbits in einem Steuer- und Status-Register zugegriffen wird und die Zahl in dem Ganzzahlformat in Abhängigkeit von den Run dungssteuerbits gerundet wird.
entweder (CVTTSS2SI 914) die Zahl in dem Ganzzahl format entsprechend einem von dem Rundungsmodusbit ange zeigten Rundungsmodus gerundet wird
oder (CVTSS2SI 912) auf Rundungssteuerbits in einem Steuer- und Status-Register zugegriffen wird und die Zahl in dem Ganzzahlformat in Abhängigkeit von den Run dungssteuerbits gerundet wird.
6. Verfahren nach Anspruch 5, dadurch gekennzeichnet,
daß der von dem Rundungsmodusbit angezeigte Rundungsmodus
ein Abschneide-Modus ist.
7. Verfahren nach einem der Ansprüche 1-6, dadurch ge
kennzeichnet, daß das Register (906) des zweiten Satzes
(412) von Architekturregistern vier Segmente zum gepackten
Speichern von vier Zahlen in dem Gleitkommaformat aufweist.
8. Verfahren nach einem der Ansprüche 1-7, dadurch ge
kennzeichnet, daß das Ganzzahlformat und das Gleitkommafor
mat 32 Bit breit sind.
9. Verfahren nach einem der Ansprüche 1-8, dadurch ge
kennzeichnet, daß der erste Satz (414) von Architekturregi
stern und der zweite Satz (412) von Architekturregistern je
weils acht Register umfassen.
10. Verfahren nach einem der Ansprüche 1-9, dadurch
gekennzeichnet, daß die Zahl in dem Gleitkommaformat in das
am niedrigsten bewertete Segment des Prozessorregisters
(906) des zweiten Satzes (412) von Architekturregistern ge
speichert wird und die übrigen Segmente dabei unverändert
bleiben.
11. Verfahren zum Konvertieren von Zahlen aus einem
Gleitkommaformat in ein Ganzzahlformat in einem Prozessor
(109), wobei
mehrere Zahlen in dem Gleitkommaformat in einer entspre chenden Anzahl von Segmenten eines Prozessorregisters (906) eines ersten Satzes (412) von Architekturregistern in einem gepacken Format gespeichert werden, und
bei der Ausführung eines Befehls (CVTSS2SI 912; CVTTSS2SI 914) des Prozessors (109)
eine der Zahlen in dem Gleitkommaformat gelesen und in eine Zahl in dem Ganzzahlformat konvertiert wird und
die Zahl in dem Ganzzahlformat in ein Prozessor register (902) eines zweiten Satzes (414) von Archi tekturregistern in einem skalaren Format gespeichert wird.
mehrere Zahlen in dem Gleitkommaformat in einer entspre chenden Anzahl von Segmenten eines Prozessorregisters (906) eines ersten Satzes (412) von Architekturregistern in einem gepacken Format gespeichert werden, und
bei der Ausführung eines Befehls (CVTSS2SI 912; CVTTSS2SI 914) des Prozessors (109)
eine der Zahlen in dem Gleitkommaformat gelesen und in eine Zahl in dem Ganzzahlformat konvertiert wird und
die Zahl in dem Ganzzahlformat in ein Prozessor register (902) eines zweiten Satzes (414) von Archi tekturregistern in einem skalaren Format gespeichert wird.
12. Verfahren nach Anspruch 11, dadurch gekennzeichnet,
daß beim Konvertieren der Zahl in dem Gleitkommaformat in
eine Zahl in dem Ganzzahlformat auf Rundungssteuerbits in
einem Steuer- und Status-Register zugegriffen wird und die
Zahl in dem Ganzzahlformat in Abhängigkeit von den Rundungs
steuerbits gerundet wird.
13. Verfahren nach Anspruch 11, dadurch gekennzeichnet,
daß beim Konvertieren der Zahl in dem Gleitkommaformat in
eine Zahl in dem Ganzzahlformat in Abhängigkeit von einem
Rundungsmodusbit in dem Befehl (CVTSS2SI 912; CVTTSS2SI 914)
entweder (CVTTSS2SI 914) die Zahl in dem Ganzzahl format entsprechend einem von dem Rundungsmodusbit ange zeigten Rundungsmodus gerundet wird
oder (CVTSS2SI 912) auf Rundungssteuerbits in einem Steuer- und Status-Register zugegriffen wird und die Zahl in dem Ganzzahlformat in Abhängigkeit von den Run dungssteuerbits gerundet wird.
entweder (CVTTSS2SI 914) die Zahl in dem Ganzzahl format entsprechend einem von dem Rundungsmodusbit ange zeigten Rundungsmodus gerundet wird
oder (CVTSS2SI 912) auf Rundungssteuerbits in einem Steuer- und Status-Register zugegriffen wird und die Zahl in dem Ganzzahlformat in Abhängigkeit von den Run dungssteuerbits gerundet wird.
14. Verfahren nach Anspruch 13, dadurch gekennzeichnet,
daß der von dem Rundungsmodusbit angezeigte Rundungsmodus
ein Abschneide-Modus ist.
15. Verfahren nach einem der Ansprüche 11-14, dadurch
gekennzeichnet, daß das Register (906) des ersten Satzes
(412) von Architekturregistern vier Segmente zum gepackten
Speichern von vier Zahlen in dem Gleitkommaformat aufweist.
16. Verfahren nach einem der Ansprüche 11-15, dadurch
gekennzeichnet, daß das Ganzzahlformat und das Gleitkom
maformat 32 Bit breit sind.
17. Verfahren nach einem der Ansprüche 11-16, dadurch
gekennzeichnet, daß der erste Satz (412) von Architekturre
gistern und der zweite Satz (414) von Architekturregistern
jeweils acht Register umfassen.
18. Verfahren nach einem der Ansprüche 11-17, dadurch
gekennzeichnet, daß die aus dem Prozessorregister (906) des
ersten Satzes (412) von Architekturregistern gelesene Zahl
in dem Gleitkommaformat aus dem am niedrigsten bewerteten
Segment des Prozessorregisters (906) gelesen wird.
19. Verfahren zum Konvertieren von Zahlen aus einem
Ganzzahlformat in ein Gleitkommaformat in einem Prozessor
(109), wobei
eine Mehrzahl von Zahlen in dem Ganzzahlformat in einem Prozessorregister (904) eines ersten Satzes (410) von Archi tekturregistern in einem gepackten Format gespeichert wird, und
bei der Ausführung eines Befehls des Prozessors (109)
wenigstens eine der Mehrzahl von Zahlen in dem Ganzzahlformat gelesen und in eine Zahl in dem Gleitkommaformat konvertiert wird und
die wenigstens eine Zahl in dem Gleitkommaformat in ein Segment eines Prozessorregisters (906) eines zweiten Satzes (412) von Architekturregistern in ei nem gepackten Format gespeichert wird.
eine Mehrzahl von Zahlen in dem Ganzzahlformat in einem Prozessorregister (904) eines ersten Satzes (410) von Archi tekturregistern in einem gepackten Format gespeichert wird, und
bei der Ausführung eines Befehls des Prozessors (109)
wenigstens eine der Mehrzahl von Zahlen in dem Ganzzahlformat gelesen und in eine Zahl in dem Gleitkommaformat konvertiert wird und
die wenigstens eine Zahl in dem Gleitkommaformat in ein Segment eines Prozessorregisters (906) eines zweiten Satzes (412) von Architekturregistern in ei nem gepackten Format gespeichert wird.
20. Verfahren nach Anspruch 19, dadurch gekennzeichnet,
daß bei der Ausführung des Befehls (CVTPI2PS 920) jede der
Mehrzahl von Zahlen in dem Ganzzahlformat parallel gelesen
und in jeweils eine Zahl in dem Gleitkommaformat konvertiert
wird.
21. Verfahren nach Anspruch 19 oder 20, dadurch gekenn
zeichnet, daß beim Konvertieren auf Rundungssteuerbits in
einem Steuer- und Status-Register zugegriffen wird und die
Zahl in dem Gleitkommaformat in Abhängigkeit von den Run
dungssteuerbits gerundet wird.
22. Verfahren nach einem der Ansprüche 19-21, dadurch
gekennzeichnet, daß mehrere Zahlen in dem Gleitkommaformat
in einer entsprechenden Anzahl von Segmenten des Prozessorregisters
(906) des zweiten Satzes (412) von Architekturre
gistern in dem gepacken Format gespeichert werden, und
bei der Ausführung eines weiteren Befehls (CVTPS2PI 922; CVTPS2PW 924; CVTPS2PB 926; CVTTPS2SI 928) des Prozessors
die Zahlen in dem Gleitkommaformat parallel ge lesen und in jeweils eine Zahl in dem Ganzzahlformat konvertiert werden und
die Zahlen in dem Ganzzahlformat in ein Prozes sorregister (904) des ersten Satzes (410) von Archi tekturregistern in einem gepackten Format gespei chert werden.
bei der Ausführung eines weiteren Befehls (CVTPS2PI 922; CVTPS2PW 924; CVTPS2PB 926; CVTTPS2SI 928) des Prozessors
die Zahlen in dem Gleitkommaformat parallel ge lesen und in jeweils eine Zahl in dem Ganzzahlformat konvertiert werden und
die Zahlen in dem Ganzzahlformat in ein Prozes sorregister (904) des ersten Satzes (410) von Archi tekturregistern in einem gepackten Format gespei chert werden.
23. Verfahren nach Anspruch 22, dadurch gekennzeichnet,
daß beim Konvertieren der Zahlen in dem Gleitkommaformat in
jeweils eine Zahl in dem Ganzzahlformat auf Rundungssteuer
bits in einem Steuer- und Status-Register zugegriffen wird
und die Zahlen in dem Ganzzahlformat in Abhängigkeit von den
Rundungssteuerbits gerundet werden.
24. Verfahren nach Anspruch 22, dadurch gekennzeichnet,
daß beim Konvertieren der Zahlen in dem Gleitkommaformat in
jeweils eine Zahl in dem Ganzzahlformat in Abhängigkeit von
einem Rundungsmodusbit in dem weiteren Befehl (CVTPS2PI 922;
CVTPS2PW 924; CVTPS2PB 926; CVTTPS2SI 928)
entweder (CVTTPS2SI 928) die Zahlen in dem Ganzzahl format entsprechend einem von dem Rundungsmodusbit ange zeigten Rundungsmodus gerundet werden
oder (CVTPS2PI 922; CVTPS2PW 924; CVTPS2PB 926) auf Rundungssteuerbits in einem Steuer- und Status-Register zugegriffen wird und die Zahlen in dem Ganzzahlformat in Abhängigkeit von den Rundungssteuerbits gerundet werden.
entweder (CVTTPS2SI 928) die Zahlen in dem Ganzzahl format entsprechend einem von dem Rundungsmodusbit ange zeigten Rundungsmodus gerundet werden
oder (CVTPS2PI 922; CVTPS2PW 924; CVTPS2PB 926) auf Rundungssteuerbits in einem Steuer- und Status-Register zugegriffen wird und die Zahlen in dem Ganzzahlformat in Abhängigkeit von den Rundungssteuerbits gerundet werden.
25. Verfahren nach Anspruch 24, dadurch gekennzeichnet,
daß der von dem Rundungsmodusbit angezeigte Rundungsmodus
ein Abschneide-Modus ist.
26. Verfahren flach einem der Ansprüche 19-25, dadurch
gekennzeichnet, daß das Register (906) des zweiten Satzes
(412) von Architekturregistern vier Segmente zum gepackten
Speichern von vier Zahlen in dem Gleitkommaformat aufweist.
27. Verfahren nach einem der Ansprüche 19-26, dadurch
gekennzeichnet, daß das Ganzzahlformat und das Gleitkom
maformat jeweils 32 Bit breit sind.
28. Verfahren nach einem der Ansprüche 19-27, dadurch
gekennzeichnet, daß der erste Satz (410) von Architekturre
gistern und der zweite Satz (412) von Architekturregistern
jeweils acht Register umfassen.
29. Verfahren nach einem der Ansprüche 19-28, dadurch
gekennzeichnet, daß die Zahlen in dem Gleitkommaformat in
die am niedrigsten bewerteten Segmente des Prozessorregi
sters (906) des zweiten Satzes (412) von Architekturregi
stern gespeichert werden und die übrigen Segmente dabei un
verändert bleiben.
30. Verfahren zum Konvertieren von Zahlen aus einem
Gleitkommaformat in ein Ganzzahlformat in einem Prozessor
(109), wobei
mehrere Zahlen in dem Gleitkommaformat in einer entspre chenden Anzahl von Segmenten eines Prozessorregisters (906) eines ersten Satzes (412) von Architekturregistern in einem gepacken Format gespeichert werden, und
bei der Ausführung eines Befehls (CVTPS2PI 922; CVTPS2PW 924; CVTPS2PB 926; CVTTPS2PI 928) des Prozessors (109)
eine Mehrzahl der Zahlen in dem Gleitkommaformat parallel gelesen und in jeweils eine Zahl in dem Ganzzahlformat konvertiert wird und
die Zahlen in dem Ganzzahlformat in ein Prozes sorregister (904) eines zweiten Satzes (410) von Architekturregistern in einem gepackten Format gespei chert werden.
mehrere Zahlen in dem Gleitkommaformat in einer entspre chenden Anzahl von Segmenten eines Prozessorregisters (906) eines ersten Satzes (412) von Architekturregistern in einem gepacken Format gespeichert werden, und
bei der Ausführung eines Befehls (CVTPS2PI 922; CVTPS2PW 924; CVTPS2PB 926; CVTTPS2PI 928) des Prozessors (109)
eine Mehrzahl der Zahlen in dem Gleitkommaformat parallel gelesen und in jeweils eine Zahl in dem Ganzzahlformat konvertiert wird und
die Zahlen in dem Ganzzahlformat in ein Prozes sorregister (904) eines zweiten Satzes (410) von Architekturregistern in einem gepackten Format gespei chert werden.
31. Verfahren nach Anspruch 30, dadurch gekennzeichnet,
daß beim Konvertieren der Zahlen in dem Gleitkommaformat in
jeweils eine Zahl in dem Ganzzahlformat auf Rundungssteuer
bits in einem Steuer- und Status-Register zugegriffen wird
und die Zahlen in dem Ganzzahlformat in Abhängigkeit von den
Rundungssteuerbits gerundet werden.
32. Verfahren nach Anspruch 30, dadurch gekennzeichnet,
daß beim Konvertieren der Zahlen in dem Gleitkommaformat in
jeweils eine Zahl in dem Ganzzahlformat in Abhängigkeit von
einem Rundungsmodusbit in dem Befehl (CVTPS2PI 922; CVTPS2PW
924; CVTPS2PB 926; CVTTPS2PI 928)
entweder (CVTTPS2PI 928) die Zahlen in dem Ganzzahl format entsprechend einem von dem Rundungsmodusbit ange zeigten Rundungsmodus gerundet werden
oder (CVTPS2PI 922; CVTPS2PW 924; CVTPS2PB 926) auf Rundungssteuerbits in einem Steuer- und Status-Register zugegriffen wird und die Zahlen in dem Ganzzahlformat in Abhängigkeit von den Rundungssteuerbits gerundet werden.
entweder (CVTTPS2PI 928) die Zahlen in dem Ganzzahl format entsprechend einem von dem Rundungsmodusbit ange zeigten Rundungsmodus gerundet werden
oder (CVTPS2PI 922; CVTPS2PW 924; CVTPS2PB 926) auf Rundungssteuerbits in einem Steuer- und Status-Register zugegriffen wird und die Zahlen in dem Ganzzahlformat in Abhängigkeit von den Rundungssteuerbits gerundet werden.
33. Verfahren nach Anspruch 32, dadurch gekennzeichnet,
daß der von dem Rundungsmodusbit angezeigte Rundungsmodus
ein Abschneide-Modus ist.
34. Verfahren nach einem der Ansprüche 30-33, dadurch
gekennzeichnet, daß das Register (906) des ersten Satzes
(412) von Architekturregistern vier Segmente zum gepackten
Speichern von vier Zahlen in dem Gleitkommaformat aufweist.
35. Verfahren nach einem der Ansprüche 30-34, dadurch
gekennzeichnet, daß das Gleitkommaformat 32 Bit breit ist.
36. Verfahren nach einem der Ansprüche 30-35, dadurch
gekennzeichnet, daß die Mehrzahl der Zahlen in dem Gleitkom
maformat, die parallel gelesen und in jeweils eine Zahl in
dem Ganzzahlformat konvertiert werden, gleich zwei ist.
37. Verfahren nach Anspruch 36, dadurch gekennzeichnet,
daß das Register (904) des zweiten Satzes (410) von Archi
tekturregistern 64 Bit breit ist und das Ganzzahlformat 32
Bit breit ist.
38. Verfahren nach einem der Ansprüche 30-35, dadurch
gekennzeichnet, daß die Mehrzahl der Zahlen in dem Gleitkom
maformat, die parallel gelesen und in jeweils eine Zahl in
dem Ganzzahlformat konvertiert werden, gleich vier ist.
39. Verfahren nach Anspruch 38, dadurch gekennzeichnet,
daß das Register (904) des zweiten Satzes (410) von Archi
tekturregistern 64 Bit breit ist und das Ganzzahlformat 16
Bit breit ist.
40. Verfahren nach Anspruch 38, dadurch gekennzeichnet,
daß das Register (904) des zweiten Satzes (410) von Archi
tekturregistern 64 Bit breit ist und das Ganzzahlformat 8
Bit breit ist und die Zahlen in dem Ganzzahlformat in die
niedrig bewertete Hälfte des Registers (904) des zweiten
Satzes (410) gespeichert werden.
41. Verfahren nach einem der Ansprüche 30-40, dadurch
gekennzeichnet, daß der erste Satz (412) von Architekturre
gistern und der zweite Satz (410) von Architekturregistern
jeweils acht Register umfassen.
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 DE19920214A1 (de) | 1999-11-25 |
DE19920214C2 true 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)
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 |
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 |
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 |
US6650327B1 (en) * | 1998-06-16 | 2003-11-18 | Silicon Graphics, Inc. | Display system having floating point rasterization and floating point framebuffering |
ATE467171T1 (de) * | 1998-08-24 | 2010-05-15 | Microunity Systems Eng | System mit breiter operandenarchitektur und verfahren |
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 |
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 |
US7418543B2 (en) * | 2004-12-21 | 2008-08-26 | Intel Corporation | Processor having content addressable memory with command ordering |
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 |
US7877582B2 (en) * | 2008-01-31 | 2011-01-25 | International Business Machines Corporation | Multi-addressable register file |
US7849294B2 (en) * | 2008-01-31 | 2010-12-07 | International Business Machines Corporation | Sharing data in internal and memory representations with dynamic data-driven conversion |
EP2360926A1 (de) | 2010-01-19 | 2011-08-24 | Fraunhofer-Gesellschaft zur Förderung der Angewandten Forschung e.V. | Bildkodierer und Bilddekodierer |
US9411585B2 (en) | 2011-09-16 | 2016-08-09 | International Business Machines Corporation | Multi-addressable register files and format conversions associated therewith |
US9727336B2 (en) | 2011-09-16 | 2017-08-08 | International Business Machines Corporation | Fine-grained instruction enablement at sub-function granularity based on an indicated subrange of registers |
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 |
Citations (1)
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 |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4949291A (en) | 1988-12-22 | 1990-08-14 | Intel Corporation | Apparatus and method for converting floating point data formats in a microprocessor |
US5157388A (en) | 1989-02-14 | 1992-10-20 | Intel Corporation | Method and apparatus for graphics data interpolation |
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 |
US5933160A (en) * | 1995-11-27 | 1999-08-03 | Sun Microsystems | High-performance band combine function |
US5802219A (en) | 1995-11-27 | 1998-09-01 | Sun Microsystems, Inc. | Methods and apparatus for table lookup transformation of digital images |
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 |
US5729724A (en) | 1995-12-20 | 1998-03-17 | Intel Corporation | Adaptive 128-bit floating point load and store operations for quadruple precision compatibility |
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 |
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 |
-
1998
- 1998-04-30 US US09/069,796 patent/US6292815B1/en not_active Expired - Lifetime
-
1999
- 1999-04-07 SG SG1999001659A patent/SG75945A1/en unknown
- 1999-04-29 DE DE19920214A patent/DE19920214C2/de not_active Expired - Fee Related
- 1999-04-30 GB GB9910126A patent/GB2343765B/en not_active Expired - Fee Related
-
2000
- 2000-10-30 HK HK00106905A patent/HK1028683A1/xx not_active IP Right Cessation
Patent Citations (1)
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 |
Also Published As
Publication number | Publication date |
---|---|
HK1028683A1 (en) | 2001-05-18 |
GB9910126D0 (en) | 1999-06-30 |
GB2343765B (en) | 2001-02-14 |
US6292815B1 (en) | 2001-09-18 |
GB2343765A (en) | 2000-05-17 |
DE19920214A1 (de) | 1999-11-25 |
SG75945A1 (en) | 2000-10-24 |
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 | |
DE69419697T2 (de) | Arithmetisch-logische Einheit mit mehreren unabhängigen Abschnitten und ein Register zur Speicherung der Statusbits | |
DE69430510T2 (de) | Arithmetik-Logikschaltung mit drei Eingängen | |
DE69624636T2 (de) | Verfahren und Vorrichtung zur geometrischen Komprimierung von dreidimensionelen Grafiken | |
DE69709078T2 (de) | Verwaltungssystem zur datenverarbeitung | |
DE69233361T2 (de) | Ein-Chip-Mikrocomputer | |
DE102018005977A1 (de) | Gleitkomma- zu festkomma-umwandlung | |
DE102019109847A1 (de) | Beschleunigung der matrixmultplikation dünnbesetzter matrizen unter verwendung einer spaltenfaltung und -verdichtung | |
DE102019133028A1 (de) | Für neuronale netzwerke geeignetes effizientes matrixformat | |
DE69725057T2 (de) | Gleitkommaprozessor für einen dreidimensionalen graphischen Beschleuniger | |
DE69720477T2 (de) | Von einem media-koprozessor auf gemeinsamem speicher einer workstation ausgeführtes kompressions- und dekompressionsschema | |
US6480868B2 (en) | Conversion from packed floating point data to packed 8-bit integer data in different architectural registers | |
DE102010051476B4 (de) | Addierbefehle, um drei Quelloperanden zu addieren | |
US6502115B2 (en) | Conversion between packed floating point data and packed 32-bit integer data in different architectural registers | |
DE112004001648T5 (de) | Verfahren, Vorrichtung und Befehle für parallele Datenumwandlung | |
DE102018114286A1 (de) | Durchführen einer Traversierungs-Stack-Komprimierung | |
DE69432659T2 (de) | Rotationsregister zur orthogonalen Datentransformation | |
DE112012007088B4 (de) | Vorrichtung, verfahren und system mit einem befehl zum reduzieren von elementen in einem vektorregister mit einem schrittweisem zugriffsmuster | |
DE69624578T2 (de) | Multiplixier-addierungsvorrichtung für gepackte daten | |
DE19983504B4 (de) | Verbesserung der Portabilität von digitalen Bildern | |
DE102013022257A1 (de) | Programmierbares Mischen in mehrsträngigen Verarbeitungseinheiten | |
DE102014003706A1 (de) | BEREICHSBEGRENZTE VEKTORSPEICHERZUGRIFFSINSTRUKTIONEN, PROZESSOREN, VERFAHREN und SYSTEME | |
DE102018125817A1 (de) | Systeme und Verfahren zum Laden eines Kachelregisterpaars | |
DE102018125805A1 (de) | Systeme, verfahren, und vorrichtungen für skalarproduktoperationen |
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 |