-
HINTERGRUND DER OFFENBARUNG
-
Bei
typischen Computersystemen werden Prozessoren implementiert, die
mit Werten arbeiten, welche durch eine große Anzahl von Bits (z. B. 64)
dargestellt werden, wobei Befehle verwendet werden, die ein Ergebnis
erzeugen. Zum Beispiel wird das Ausführen eines Addierbefehls einen
ersten Wert mit 64 Bit und einen zweiten Wert mit 64 Bit addieren
und das Ergeb nis als einen dritten Wert mit 64 Bit speichern. Multimedia-Anwendungen
(z. B. Anwendungen, die auf das computerunterstützte Zusammenwirken abzielen
(CSC – Computer
Supported Cooperation – die
Integration von Telekonferenzschaltung mit der Behandlung gemischter Mediendaten),
2D/3D-Grafik, Bildverarbeitung, Videokompression/dekompression,
Erkennungsalgorithmen und Audiobehandlung) erfordern die Behandlung
großer
Mengen an Daten. Die Daten können
durch einen einzigen großen
Wert (z. B. 64 Bit oder 128 Bit) dargestellt werden oder können stattdessen
mit einer kleinen Anzahl von Bits (z. B. 8 oder 16 oder 32 Bit)
dargestellt werden. Zum Beispiel können Grafikdaten durch 8 oder 16
Bit dargestellt werden, Audiodaten können durch 8 oder 16 Bit dargestellt
werden, ganzzahlige Daten (integer data) können durch 8, 16 oder 32 Bit
dargestellt werden und Fließkommadaten
können
durch 32 oder 64 Bit dargestellt werden.
-
Um
die Leistungsfähigkeit
von Multimedia-Anwendungen (ebenso wie von anderen Anwendungen,
die dieselben Eigenschaften haben) zu verbessern, können Prozessoren
Formate mit gepackten Daten zur Verfügung stellen. Ein Format mit
gepackten Daten ist eines, in dem die Bits, die typischerweise verwendet
werden, um einen einzelnen Wert darzustellen, in eine Anzahl von
Datenelementen mit fester Größe aufgebrochen werden,
von denen jedes einen getrennten Wert darstellt. Zum Beispiel kann
ein Register mit 128 Bit in vier Elemente mit 32 Bit aufgebrochen
werden, von denen jedes einen getrennten Wert mit 32 Bit darstellt.
Auf diese Weise können
diese Prozessoren Multimedia-Anwendungen effizienter bearbeiten.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Die
vorliegende Erfindung wird beispielhaft und nicht beschränkend in
den Figuren der begleitenden Zeichnungen veranschaulicht.
-
1a–1c veranschaulichen
beispielhafte Computersysteme gemäß alternativen Ausführungsformen
der Erfindung.
-
2a–2b veranschaulichen
Registerdateien von Prozessoren gemäß alternativen Ausführungsformen
der Erfindung.
-
3 veranschaulicht
ein Ablaufdiagramm für
wenigstens eine Ausführungsform
eines Prozesses, der von einem Prozessor ausgeführt wird, um Daten zu behandeln.
-
4 veranschaulicht
Typen gepackter Daten gemäß alternativen
Ausführungsformen
der Erfindung.
-
5 veranschaulicht
im Register gepackte Byte- und im Register gepackte Wortdatendarstellungen gemäß wenigstens
einer Ausführungsform
der Erfindung.
-
6 veranschaulicht
im Register gepackte Doppelwort- und im Register gepackte Vierfachwort-Datendarstellungen
gemäß wenigstens
einer Ausführungsform
der Erfindung.
-
7 ist
ein Ablaufdiagramm, das eine Ausführungsform eines Prozesses
zum Durchführen
einer Auswahl-Operation veranschaulicht.
-
8 ist
ein Ablaufdiagramm, das eine Ausführungsform eines Prozesses
zum Durchführen
einer unmittelbaren Auswahl-Operation veranschaulicht.
-
9a–9c veranschaulichen
verschiedene Ausführungsformen
von Schaltungen zum Durchführen
von unmittelbaren Auswahl-Operationen.
-
10 ist
ein Ablaufdiagramm, das eine Ausführungsform eines Prozesses
zum Durchführen
variabler Auswahl-Operationen veranschaulicht.
-
11a–11c veranschaulichen verschiedene Ausführungsformen
von Schaltungen zum Durchführen
von variablen Auswahl-Operationen.
-
12 ist
ein Blockschaubild, das verschiedene Ausführungsformen von Operation-Codeformaten für Prozessorbefehle
veranschaulicht.
-
GENAUE BESCHREIBUNG
-
Offenbart
hierin sind Ausführungsformen
von Verfahren, Systemen und Schaltungen, um in einen Prozessor Befehle
zum Durchführen
von Auswahl-Operationen bei mehreren Bits aus Daten als Antwort
auf ein Steuersignal einzubauen. Die Daten, die in den Auswahl-Operationen enthalten
sind, können
gepackte oder nicht gepackte Daten sein. Bei wenigstens einer Ausführungsform
ist ein Prozessor mit einem Speicher gekoppelt. Im Speicher ist
eine erste Datengröße und eine
zweite Datengröße gespeichert.
Der Prozessor führt
Auswahl-Operationen
bei Datenelementen in der ersten Datengröße und in der zweiten Datengröße als Antwort auf
das Empfangen eines Befehls aus und speichert die Ergebnisse in
der zweiten Datengröße basierend
auf dem Steuersignal.
-
Diese
und weitere Ausführungsformen
der vorliegenden Erfindung können
gemäß den folgenden
Lehren in die Praxis umgesetzt werden, und es sollte offensichtlich
sein, dass verschiedene Modifikationen und Änderungen bei den folgenden
Lehren vorgenommen werden können,
ohne dass man sich vom breiteren Gedanken und Umfang der Erfindung
entfernt. Die Beschreibung und die Zeichnungen sollen demgemäß in einem
veranschaulichenden anstatt einem beschränkenden Sinne betrachtet werden
und die Erfindung nur bezüglich
der Ansprüche
gemessen werden.
-
COMPUTERSYSTEM
-
1a veranschaulicht
ein beispielhaftes Computersystem 100 gemäß einer
Ausführungsform
der Erfindung. Das Computersystem 100 umfasst eine Verbindung 101 zum
Kommunizieren von Information. Die Verbindung 101 kann
einen Multi-Drop-Bus, eine oder mehrere Punkt-zu-Punkt-Verbindungen
oder irgendeine Kombination aus beiden umfassen, ebenso wie jedwede
weitere Kommunikationshardware und/oder -software.
-
Die 1a veranschaulicht
einen Prozessor 109 zum Verarbeiten von Information, der
mit der Verbindung 101 gekoppelt ist. Der Prozessor 109 stellt
eine zentrale Verarbeitungseinheit mit irgendeinem Typ einer Architektur
dar, einschließlich
eines Typs der Architektur CISC oder RISC.
-
Das
Computersystem 100 umfasst weiter einen Speicher mit wahlfreiem
Zugriff (RAM – Random
Access Memory) oder irgendeine andere dynamische Speichervorrichtung
(als Hauptspeicher 104 bezeichnet), der/die mit der Verbindung 101 zum
Speichern von Information und Befehlen, die von dem Prozessor 109 ausgeführt werden
sollen, gekoppelt ist. Der Hauptspeicher 104 kann außerdem zum
Speichern temporärer
Variablen oder anderer Zwischeninformation während des Ausführens von
Befehlen durch den Prozessor 109 verwendet werden.
-
Das
Computersystem 100 umfasst außerdem einen Nur-Lese-Speicher
(ROM – Read
Only Memory) 106 und/oder eine weitere statische Speichervorrichtung,
der/die mit der Verbindung 101 zum Speichern von statischer
Information und von Befehlen für
den Prozessor 109 gekoppelt sind. Eine Datenspeichervorrichtung 107 ist
mit der Verbindung 101 zum Speichern von Informationen
und Befehlen gekoppelt.
-
1a veranschaulicht
außerdem,
dass der Prozessor 109 eine Ausführungseinheit 130,
eine Registerdatei 150, einen Cache 160, einen
Decodierer 165 und eine interne Verbindung 170 umfasst.
Natürlich
enthält
der Prozessor 109 zusätzliche
Schaltung, die nicht notwendig ist, um die Erfindung zu verstehen.
-
Der
Decodierer 165 dient zum Decodieren von Befehlen, die von
dem Prozessor 109 empfangen werden, und die Ausführungseinheit 103 dient
zum Ausführen
von Befehlen, die von dem Prozessor 109 empfangen werden.
Zusätzlich
zum Erkennen von Befehlen, die typischerweise bei universellen Prozessoren
implementiert werden, erkennen der Decodierer 106 und die
Ausführungseinheit 130 Befehle,
wie hierin beschrieben, zum Ausführen
von bedingten Kopier-Operationen (BLENDS). Der Decodierer 165 und
die Ausführungseinheit 130 erkennen
Befehle zum Ausführen
von BLEND-Operationen sowohl auf gepackten als auch auf nicht gepackten
Daten.
-
Die
Ausführungseinheit 130 ist über die
interne Verbindung 170 mit der Registerdatei 150 gekoppelt. Wiederum
braucht die interne Verbindung 170 nicht notwendigerweise
ein Multi-Drop-Bus
sein und kann bei alternativen Ausführungsformen eine Punkt-zu-Punkt-Verbindung oder ein
anderer Typ eines Kommunikationsweges sein.
-
Die
Registerdatei(en) 150 stellt/stellen einen Speicherbereich
des Prozessors 109 zum Speichern von Information, die Daten
umfasst, dar. Es wird verstanden, dass ein Aspekt der Erfindung
in den beschriebenen Ausführungsformen
von Befehlen zum Durchführen
von BLEND-Operationen
auf gepackten oder nicht gepackten Daten liegt. Gemäß diesem
Aspekt der Erfindung ist der Speicherbereich, der zum Speichern
der Daten verwendet wird, nicht kritisch. Jedoch werden Ausführungsformen
der Registerdatei 150 später mit Bezug auf die 2a–2b beschrieben.
-
Die
Ausführungseinheit 130 ist
mit dem Cache 160 und mit dem Decodierer 165 gekoppelt.
Der Cache 160 wird verwendet, um Daten und/oder Steuersignale
beispielsweise vom Hauptspeicher 104 zwischenzuspeichern.
Der Decodierer 165 wird zum Decodieren von Befehlen, die
von dem Prozessor 109 empfangen werden, in Steuersignale
und/oder Mikrocode-Eintrittspunkte
verwendet. Diese Steuersignale und/oder Mikrocode-Eintrittspunkte
können
von dem Decodierer 165 an die Ausführungseinheit 130 geschickt
werden. Als Antwort auf diese Steuersignale und/oder Mikrocode-Eintrittspunkte
führt die
Ausführungseinheit 130 die zweckmäßigen Operationen
aus.
-
Der
Decodierer 165 kann implementiert werden, indem irgendeine
Anzahl unterschiedlicher Mechanismen (z. B. eine Nachschlagetabelle,
eine Hardware-Implementierung, ein PLA usw.) verwendet wird. Somit, obwohl
die Ausführung
der verschiedenen Befehle durch den Decodierer 165 und
die Ausführungseinheit 130 hierin
durch eine Anzahl von Falls/Dann-Aussagen
dargestellt werden kann, wird verstanden, dass die Ausführung eines
Befehls nicht eine serielle Verarbeitung dieser Falls/Dann-Aussagen
nicht erfordert. Stattdessen wird irgendein Mechanismus zum logischen
Ausführen
dieser Falls/Dann-Verarbeitung als innerhalb des Umfangs der Erfindung
liegend betrachtet.
-
1a zeigt
zusätzlich
eine Datenspeichervorrichtung 107 (z. B. eine Magnetplatte,
eine optische Platte und/oder ein anderes maschinenlesbares Medium),
die an das Computersystem 100 gekoppelt werden kann. Zusätzlich ist
die Datenspeichervorrichtung 107 so gezeigt, dass sie einen
Code 195 zum Ausführen durch
den Prozessor 109 umfasst. Der Code 195 kann eine
oder mehrere Ausführungsformen
eines BLEND-Befehls 142 umfassen und kann geschrieben werden,
um zu bewirken, dass der Prozessor 109 das Prüfen von
Bits mit dem/den BLEND-Befehl(en) 142 für jedwede
Anzahl von Zwecken durchführt
(z. B. Videokompression/Dekompression bei Bewegung, Bildfilterung,
Kompression, Filterung oder Synthese von Audiosignalen, Modulation/Demodulation
usw.).
-
Das
Computersystem 100 kann außerdem über die Verbindung 101 an
eine Anzeigevorrichtung 121 zum Anzeigen von Information
für einen
Benutzer des Computers gekoppelt sein. Die Anzeigevorrichtung 121 kann
einen Frame-Puffer, spezialisierte Vorrichtungen, die Gra fik zur
Verfügung
stellen, eine Flüssigkristallanzeige
(LCD – Liquid
Crystal Display) und/oder eine Flachbildschirmanzeige sein.
-
Eine
Eingabevorrichtung 122, die alphanumerische und weitere
Tasten umfasst, kann mit der Verbindung 101 zum Kommunizieren
von Information und Befehlsauswahlen an den Prozessor 109 gekoppelt
sein. Ein weitere Typ einer Eingabevorrichtung für Benutzer ist eine Cursorsteuerung 123,
so wie eine Maus, eine Rollkugel, ein Stift, ein Berührungsbildschirm
oder Cursor-Richtungstasten, zum Kommunizieren von Richtungsinformation
und Befehlsauswahlen an den Prozessor 109 und zum Steuern
der Cursorbewegung auf der Anzeigevorrichtung 121. Diese
Eingabevorrichtung hat typischerweise zwei Freiheitsgrade in zwei
Achsen, einer ersten Achse (z. B. x) und einer zweiten Achse (z.
B. y), was es der Vorrichtung erlaubt, Positionen in einer Ebene
festzulegen. Diese Erfindung jedoch sollte nicht auf Eingabevorrichtung
mit nur zwei Freiheitsgraden beschränkt sein.
-
Eine
weitere Vorrichtung, die an die Verbindung 101 gekoppelt
werden kann, ist eine Ausdruckvorrichtung 124, die zum
Ausdrucken von Befehlen, Daten oder anderer Information auf einem
Medium, so wie Papier, Film oder ähnlichen Typen von Medien verwendet
werden kann. Zusätzlich
kann das Computersystem 100 an eine Vorrichtung zum Aufzeichnen
und/oder Wiedergeben von Ton 125 gekoppelt sein, so wie
einem Audiodigitalisierer, der zum Aufzeichnen von Information an
ein Mikrofon gekoppelt ist. Weiter kann die Vorrichtung 125 einen
Lautsprecher umfassen, der mit einem Digital-Analog(D/A)-Wandler
zum Wiedergeben der digitalen Töne
gekoppelt ist.
-
Das
Computersystem 100 kann ein Endgerät in einem Computernetzwerk
(z. B. einem LAN) sein. Das Computersystem 100 würde dann
ein Computeruntersystem eines Computernetzwerkes sein. Das Computersystem 100 umfasst
als Option eine Video digitalisierende Vorrichtung 126 und/oder
eine Kommunikationsvorrichtung 190 (z. B. einen seriellen
Kommunikationschip, eine Drahtlos-Schnittstelle, einen Ethernet-Chip
oder ein Modem, das für
Kom munikation mit einem externen Gerät oder einem Netzwerk sorgt).
Die Video digitalisierende Vorrichtung 126 kann verwendet
werden, um Videobilder aufzufangen, die an andere in dem Computernetzwerk
gesendet werden können.
-
Bei
wenigstens einer Ausführungsform
unterstützt
der Prozessor 109 einen Befehlssatz, der mit dem Befehlssatz
kompatibel ist, der von vorhandenen Prozessoren verwendet wird (so
wie z. B. dem Intel® Pentium®-Prozessor,
dem Intel® Pentium® Pro-Prozessor,
dem Intel® Pentium® II-Prozessor,
dem Intel® Pentium® III-Prozessor,
dem Intel® Pentium® IV-Prozessor,
dem Intel® Itanium®-Prozessor,
dem Intel® Itanium® 2-Prozessor
oder dem Intel® CoreTM Duo-Prozessor),
die von der Intel Corporation, Santa Clara, Kalifornien, hergestellt werden.
Als ein Ergebnis kann der Prozessor 109 vorhandene Prozessoroperationen
unterstützen,
zusätzlich zu
den Operationen der Erfindung. Der Prozessor 109 kann auch
für die
Herstellung mit einer oder mehreren Prozesstechnologien geeignet
sein, und wenn er auf einem maschinenlesbaren Medium in ausreichenden
Einzelheiten dargestellt wird, kann dies geeignet sein, die Herstellung
zu vereinfachen. Obwohl die Erfindung hiernach so beschrieben wird,
dass sie in einen auf x86 basierenden Befehlssatz eingebaut ist,
könnten
alternative Ausführungsformen
die Erfindung in andere Befehlssätze
einbauen. Zum Beispiel könnte
die Erfindung in einen Prozessor mit 64 Bit eingebaut werden, indem
ein anderer Befehlssatz als der auf x86 basierende Befehlssatz verwendet
wird.
-
1b veranschaulicht
eine alternative Ausführungsform
eines Datenverarbeitungssystems 102, das die Grundsätze der
vorliegenden Erfindung implementiert. Eine Ausführungsform des Datenverarbeitungssystems 102 ist
ein Anwendungsprozessor mit der Intel XScaleTM Technologie.
Es wird von einem Fachmann leicht verstanden werden, dass die hierin
beschriebenen Ausführungsformen
bei alternativen Verarbeitungssystemen verwendet werden können, ohne
dass man sich vom Umfang der Erfindung entfernt.
-
Das
Computersystem 102 weist einen Prozessorkern 110 auf,
der in der Lage ist, BLEND-Operationen auszuführen. Bei
einer Ausführungsform
stellt der Prozessorkern 110 eine Prozessoreinheit irgendeines
Typs einer Architektur dar, einschließlich, jedoch nicht beschränkt auf
eine Architektur vom Typ CISC, RISC oder VLIW. Der Prozessorkern 110 kann
auch zur Herstellung mit einer oder mehreren Prozesstechnologien
geeignet sein, und wenn er auf einem maschinenlesbaren Medium in
ausreichenden Einzelheiten dargestellt wird, kann dies geeignet
sein, diese Herstellung zu vereinfachen.
-
Der
Prozessorkern 110 weist eine Ausführungseinheit 130,
einen Satz Registerdatei(en) 150 und einen Decodierer 165 auf.
Der Prozessorkern 110 umfasst außerdem zusätzliche Schaltung (nicht gezeigt),
die für
das Verständnis
der vorliegenden Erfindung nicht notwendig ist.
-
Die
Ausführungseinheit 130 wird
zum Ausführen
von Befehlen, die von dem Prozessorkern 110 empfangen werden,
verwendet. Zusätzlich
zum Erkennen typischer Prozessorbefehle erkennt die Ausführungseinheit 130 Befehle
zum Ausführen
von BLEND-Operationen auf gepackten und nicht gepackten Datenformaten. Der
Befehlssatz, der von dem Decodierer 165 und der Ausführungseinheit 130 erkannt
wird, kann einen oder mehrere Befehle für BLEND-Operationen umfassen und kann außerdem weitere
gepackte Befehle umfassen.
-
Die
Ausführungseinheit 130 ist über einen
internen Bus (der wieder irgendein Typ eines Kommunikationsweges
sein kann, einschließlich
eines Multi-Drop-Busses, einer Punkt-zu-Punkt-Verbindung usw.) an die Registerdatei 150 gekoppelt.
Die Registerdatei 150 stellt einen Speicherbereich des
Prozessorkerns 110 zum Speichern von Information, die Daten
umfasst, dar. Wie zuvor angesprochen, wird verstanden, dass der Speicherbereich,
der zum Speichern der Daten verwendet wird, nicht kritisch ist.
Die Ausführungseinheit 130 ist
an den Decodierer 165 gekoppelt. Der Decodierer 165 wird
zum Decodieren von Befehlen, die von dem Prozessorkern 110 empfangen
werden, in Steuersignale und/oder Mikrocode-Eintrittspunkte verwendet.
Als Antwort auf diese Steuersignale und/oder Mikrocode-Eintrittspunkte
können diese
Steuersignale und/oder Mikrocode-Eintrittspunkte an die Ausführungseinheit 130 weitergeleitet
werden. Die Ausführungseinheit 130 kann
die zweckmäßigen Operationen
ausführen,
ansprechend auf den Empfang der Steuersignale und/oder der Mikrocode-Eintrittspunkte.
Bei wenigstens einer Ausführungsform
kann die Ausführungseinheit 130 beispielsweise
die logischen Vergleiche durchführen,
die hierin beschrieben sind, und kann auch die Status-Flags setzen, wie
es hierin diskutiert ist, oder zu einem bestimmten Codeort abzweigen
oder beides.
-
Der
Prozessorkern 110 ist mit dem Bus 214 zum Kommunizieren
mit verschiedenen anderen Systemeinheiten gekoppelt, die zum Beispiel
eine Steuerung 271 für
einen synchronen dynamischen Speicher mit wahlfreiem Zugriff (SDRAM – Synchronous
Dynamic Random Access Memory), eine Steuerung 272 für einen statischen
Speicher mit wahlfreiem Zugriff (SRAM – Static Random Access Memory),
eine Burst-Flash-Speicherschnittstelle 273, eine Steuerung
für eine
Personal Computer Memory Card International Association(PCMCIA)/Compact
Flash(CF)-Karte, eine Steuerung 275 für eine Flüssigkristallanzeige (LCD),
einen Controller 276 für
den direkten Speicherzugriff (DMA – Direct Memory Access) und
eine alternative Bus-Masterschnittstelle 277 umfassen können, jedoch
nicht darauf beschränkt
sind.
-
Bei
wenigstens einer Ausführungsform
kann das Datenverarbeitungssystem 102 auch eine I/O-Brücke 290 zum
Kommunizieren mit verschiedenen I/O-Einheiten über einen I/O-Bus 295 aufweisen.
Derartige I/O-Einheiten können
zum Beispiel einen universellen asynchronen Empfänger/Sender (UART – Universal Asynchronous
Receiver/Transmitter) 291, einen universellen seriellen
Bus (USB – Universal
Serial Bus) 292, einen über
Bluetooth arbeitenden drahtlosen UART 293 und eine I/O-Erweiterungsschnittstelle 294 umfassen, sind
jedoch nicht darauf beschränkt.
Wie bei den anderen Bussen, die oben diskutiert worden sind, kann
der I/O-Bus 295 irgendein Typ eines Kommunikationsweges
sein, einschließlich
eines Multi-Drop-Busses,
einer Punkt-zu-Punkt-Verbindung usw.
-
Wenigstens
eine Ausführungsform
des Datenverarbeitungssystems 102 sorgt für mobile, über Netzwerk
geschaltete und/oder drahtlose Kommunikation und stellt einen Prozessorkern 110 zur
Verfügung,
der in der Lage ist, BLEND-Operationen sowohl auf gepackten als
auch auf nicht gepackten Daten durchzuführen. Der Prozessorkern 110 kann
mit verschiedenen Audio-, Video-, Abbildungs- und Kommunikationsalgorithmen programmiert
werden, einschließlich
diskreter Transformationen, Filter oder Konvolutionen, Kompressions/Dekompressionstechniken,
so wie Farbraumtransformation, videocodierte Bewegungsabschätzung oder
videodecodierte Bewegungskompensation; und Modulations/Demodulations(MODEM)-Funktionen, so wie
die pulscodierte Modulation (PCM – Pulse Coded Modulation).
-
1c veranschaulicht
alternative Ausführungsformen
eines Datenverarbeitungssystems 103, das in der Lage ist,
BLEND-Operationen auf gepackten und nicht gepackten Daten durchzuführen. Gemäß einer
alternativen Ausführungsform
kann das Datenverarbeitungssystem 103 eine Chipbaugruppe 310 umfassen,
die einen Hauptprozessor 224 und einen oder mehrere Coprozessoren 226 umfasst.
Die Optionseigenschaft der zusätzlichen
Coprozessoren 226 ist in der 1c durch
gestrichelte Linien bezeichnet. Einer oder mehrere der Coprozessoren 226 kann/können zum
Beispiel ein Grafik-Coprozessor sein, der in der Lage ist, SIMD-Befehle auszuführen.
-
1c veranschaulicht,
dass das Datenverarbeitungssystem 103 auch einen Cache-Speicher 278 und
ein Eingabe/Ausgabe-System 265 umfassen kann, die beide
an die Chipbaugruppe 310 gekoppelt sind und das Eingabe/Ausgabesystem 265 kann
als Option an eine Drahtlos-Schnittstelle 296 gekoppelt
sein.
-
Der
Coprozessor 226 ist in der Lage, allgemeine Rechenoperationen
auszuführen,
und ist auch in der Lage, SIMD-Operationen auszuführen. Bei
wenigstens einer Ausführungsform
ist der Coprozessor 226 in der Lage, BLEND-Operationen
auf gepackten und nicht gepackten Daten auszuführen.
-
Bei
wenigstens einer Ausführungsform
weist der Coprozessor 226 eine Ausführungseinheit 130 und Registerdatei(en) 209 auf.
Wenigstens eine Ausführungsform
des Hauptprozessors 224 weist einen Decodierer 165 auf,
um Befehle aus einem Befehlssatz zu erkennen und zu decodieren,
der BLEND-Befehle zum Ausführen
durch die Ausführungseinheit 130 umfasst.
Bei alternativen Ausführungsformen
weist der Coprozessor 226 auch wenigstens einen Teil eines
Decodierers 166 auf, um Befehle aus einem Befehlssatz zu
decodieren, der BLEND-Befehle
umfasst. Das Datenverarbeitungssystem 103 umfasst außerdem zusätzliche
Schaltung (nicht gezeigt), die für
das Verständnis
der vorliegenden Erfindung nicht notwendig ist.
-
Im
Betrieb führt
der Hauptprozessor 224 einen Strom aus Datenverarbeitungsbefehlen
aus, der Datenverarbeitungsoperationen eines allgemeinen Typs steuert,
einschließlich
dem Zusammenspiel mit dem Cache-Speicher 278 und dem Eingabe/Ausgabe-System 295.
Eingebettet innerhalb des Stroms der Datenverarbeitungsbefehle sind
Coprozessorbefehle. Der Decodierer 165 des Hauptprozessors 224 erkennt
diese Coprozessorbefehle als von einem Typ, der durch einen angehängten Coprozessor 226 ausgeführt werden
sollte. Demgemäß gibt der
Hauptprozessor 224 diese Coprozessorbefehle (oder Steuersignale,
die die Coprozessorbefehle darstellen) auf die Coprozessorverbindung 236,
von der sie an irgendwelchen angehängten Coprozessoren empfangen
werden. Für
die Ausführungsform
mit einem einzigen Coprozessor, die in der 1c veranschaulicht
ist, akzeptiert der Coprozessor 226 jedwede empfangenen
Coprozessorbefehle, die für
ihn geplant sind, und führt
sie aus. Die Coprozessorverbindung kann irgendein Typ eines Kommunikationswegs
sein, einschließlich
eines Multi-Drop-Busses,
einer Punkt-zu-Punkt-Verbindung oder dergleichen.
-
Die
Daten können
zur Verarbeitung durch die Coprozessorbefehle über eine Drahtlos-Schnittstelle 296 empfangen
werden. Als ein Beispiel kann Sprachkommunikation in der Form eines
digitalen Signals empfangen werden, das durch die Coprozessorbefehle
verarbeitet werden kann, um erneut digitale Audiomuster zu erzeugen,
die für
die Sprachkommunikation repräsentativ
sind. Als anderes Beispiel kann komprimiertes Audio und/oder Video
in der Form eines digitalen Bitstroms empfangen werden, der von
den Coprozessorbefehlen verarbeitet werden kann, um erneut digitale
Audiomuster und/oder Bewegungsvideoframes zu erzeugen.
-
Bei
wenigstens einer alternativen Ausführungsform können der
Hauptprozessor 224 und ein Coprozessor 226 in
einen einzigen Prozessorkern integriert sein, der eine Ausführungseinheit 130,
Registerdatei(en) 209 und einen Decodierer 156,
um Befehle aus einem Befehlssatz zu erkennen, der BLEND-Befehle
zur Ausführung
von der Ausführungseinheit 130 umfasst,
aufweist.
-
2a veranschaulicht
die Registerdatei des Prozessors gemäß einer Ausführungsform
der Erfindung. Die Registerdatei 150 kann zum Speichern
von Information, einschließlich
Steuer/Statusinformation, ganzzahligen Daten, Fließkommadaten
und gepackten Daten verwendet werden. Ein Fachmann wird erkennen,
dass die vorstehende Liste der Information und Daten nicht als eine
erschöpfende,
alles einschließende Liste
gedacht ist.
-
Bei
der Ausführungsform,
die in der 2a gezeigt ist, umfasst die
Registerdatei 150 Register 201 für ganze
Zahlen (integer register), Register 209, Statusregister 208 und
Befehlszeigerregister 211. Die Statusregister 208 geben
den Status des Prozessors 109 an und können verschiedene Statusregister
umfassen. Das Befehlszeigerregister 211 speichert die Adresse
des nächsten
Befehls, der ausgeführt
werden soll. Die Register 201 für ganze Zahlen, die Register 209,
die Statusregister 208 und die Befehlszeigerregister 211 sind
alle mit der internen Verbindung 170 gekoppelt. Zusätzliche
Register können
ebenfalls mit der internen Verbindung 170 gekoppelt sein.
Die interne Verbindung 170 kann, braucht jedoch nicht notwendigerweise
ein Multi-Drop-Bus sein. Die interne Verbindung 170 kann
stattdessen irgendein anderer Typ eines Kommunikationsweges sein,
einschließlich
einer Punkt-zu-Punkt-Verbindung.
-
Bei
einer Ausführungsform
können
die Register 209 sowohl für gepackte Daten als auch für Fließkommadaten
verwendet werden. Bei einer solchen Ausführungsform behandelt zu irgendeinem
gegebenen Zeitpunkt der Prozessor 109 die Register 209 als
entweder stapelbezogene Fließkommaregister
oder nicht stapelbezogene Register für gepackte Daten. Bei dieser
Ausführungsform
ist ein Mechanismus enthalten, um es dem Prozessor 109 zu
erlauben, zwischen dem Arbeiten auf den Registern 209 als
stapelbezogene Fließkommaregister
und nicht stapelbezogene Register für gepackte Daten umzuschalten.
Bei einer weiteren derartigen Ausführungsform kann der Prozessor 109 gleichzeitig
auf den Registern 209 als nicht stapelbezogene Fließkommaregister
und Register für
gepackte Daten arbeiten. Als ein weiteres Beispiel können bei
einer weiteren Ausführungsform
diese selben Register zum Speichern ganzzahliger Daten verwendet
werden.
-
Natürlich können alternative
Ausführungsformen
implementiert werden, die mehr oder weniger Sätze aus Registern enthalten.
Zum Beispiel kann eine alternative Ausführungsform einen getrennten
Satz aus Fließkommaregistern
zum Speichern von Fließkommadaten
umfassen. Als ein weiteres Beispiel kann eine alternative Ausführungsform
einen ersten Satz von Registern, jeweils zum Speichern von Steuer/Status-Information, und
einen zweiten Satz von Registern, die jede in der Lage sind, ganzzahlige,
Fließkomma-
und gepackte Daten zu speichern, umfassen. Als eine Sache der Klarheit
sollten die Register einer Ausführungsform
in ihrer Bedeutung nicht auf einen bestimmten Typ einer Schaltung
beschränkt
sein. Stattdessen braucht ein Register einer Ausführungsform
nur in der Lage zu sein, Daten zu speichern und zur Verfügung zu
stellen und die hierin beschriebenen Funktionen auszuführen.
-
Die
verschiedenen Sätze
aus Registern (z. B. die Register 201 für ganze Zahlen, die Register 209) können so
implementiert werden, dass sie unterschiedliche Anzahlen von Registern
und/oder Register unterschiedlicher Größe umfassen. Zum Beispiel werden
bei einer Ausführungsform
die Register 201 für
ganze Zahlen so implementiert, dass sie zweiunddreißig Bit
speichern, während
die Register 209 so implementiert werden, dass sie achtzig
Bit speichern (alle achtzig Bit werden zum Speichern von Fließkommadaten
verwendet, während
nur vierundsechzig für
gepackte Daten verwendet werden). Zusätzlich können die Register 209 acht
Register R0 212a bis R7 212h enthalten.
R1 212b, R2 212c und
R3 212d sind Beispiele einzelner
Register in den Registern 209. Zweiunddreißig Bit
eines Registers in den Registern 209 können in ein Register für ganze
Zahlen innerhalb der Register 201 für ganze Zahlen bewegt werden.
Auf ähnliche
Weise kann ein Wert in einem Register für ganze Zahlen in zweiunddreißig Bit
eines Registers innerhalb der Register 209 bewegt werden.
Bei einer weiteren Ausführungsform
enthalten die Register 201 für ganze Zahlen jedes 64 Bit,
und 64 Bit Daten können
zwischen dem Register 201 für ganze Zahlen und den Registern 209 bewegt
werden. Bei einer weiteren alternativen Ausführungsform enthalten die Register 209 jeweils
64 Bit, und die Register 209 enthalten sechzehn Register.
Bei noch einer weiteren alternativen Ausführungsform enthalten die Register 209 zweiunddreißig Register.
-
2b veranschaulicht
die Registerdatei des Prozessors gemäß einer alternativen Ausführungsform der
Erfindung. Die Registerdatei 150 kann zum Speichern von
Information, einschließlich
Steuer/Status-Information, ganzzahligen Daten, Fließkommadaten
und gepackten Daten verwendet werden. Bei der Ausführungsform,
die in 2b gezeigt ist, umfasst die
Registerdatei 150 Register 201 für ganze
Zahlen, Register 209, Statusregister 208, Erweiterungsregister 210 und
ein Befehlszeigerregister 211. Die Statusregister 208, das
Befehlszeigerregister 211, die Register 201 für ganze
Zahlen und die Register 209 sind alle mit der internen
Verbindung 170 gekoppelt. Zusätzlich sind außerdem die
Erweiterungsregister 210 mit der internen Verbindung 170 gekoppelt.
Die interne Verbindung 170 kann ein Multi-Drop-Bus sein, braucht
es jedoch nicht notwendigerweise zu sein. Die interne Verbindung 170 kann
stattdessen irgendein anderer Typ eines Kommunikationsweges sein,
einschließlich
einer Punkt-zu-Punkt-Verbindung.
-
Bei
wenigstens einer Ausführungsform
werden die Erweiterungsregister 210 sowohl für gepackte ganzzahlige
Daten als auch für
gepackte Fließkommadaten
verwendet. Bei alternativen Ausführungsformen können die
Erweiterungsregister 210 für skalare Daten, gepackte Boole'sche Daten, gepackte
ganzzahlige Daten und/oder gepackte Fließkommadaten verwendet werden.
Natürlich
können
alternative Ausführungsformen implementiert
werden, die mehr oder weniger Sätze
von Registern enthalten, mehr oder weniger Register in jedem Satz
oder mehr oder weniger Datenspeicherbits in jedem Register, ohne
dass man sich von dem weiteren Umfang der Erfindung entfernt.
-
Bei
wenigstens einer Ausführungsform
sind die Register 201 für
ganze Zahlen so implementiert, dass sie zweiunddreißig Bits
speichern, die Register 209 sind so implementiert, dass
sie achtzig Bit speichern (alle achtzig Bit werden zum Speichern
von Fließkommadaten
verwendet, während
nur vierundsechzig für
gepackte Daten verwendet werden), und die Erweiterungsregister 210 sind
so implementiert, dass sie 128 Bit speichern. Zusätzlich können die
Erweiterungsregister 210 acht Register, XR0 213a bis
XR7 213h, enthalten. XR0 213a, XR1 213b und
XR2 213c sind Beispiele einzelner
Register innerhalb der Register 210. Bei einer weiteren
Ausführungsform
enthalten die Register 201 für ganze Zahlen jeweils vierundsechzig
Bit, die Erweiterungsregister 210 enthalten jeweils vierundsechzig
Bit und die Erweiterungsregister 210 enthalten sechzehn
Register. Bei einer Ausführungsform
kann auf zwei Registern aus den Erweiterungsregistern 210 als
ein Paar gearbeitet werden. Bei noch einer alternativen Ausführungsform
enthalten die Erweiterungsregister 210 zweiunddreißig Register.
-
3 veranschaulicht
ein Ablaufdiagramm für
eine Ausführungsform
eines Prozesses 300, um Daten gemäß einer Ausführungsform
der Erfindung zu behandeln. Das heißt, 3 veranschaulicht
den Prozess, dem zum Beispiel der Prozessor 109 folgt (siehe
z. B. 1a), während eine BLEND-Operation
auf gepackten Daten ausgeführt
wird, eine BLEND-Operation
auf nicht gepackten Daten ausgeführt
wird oder irgendeine andere Operation ausgeführt wird. Der Prozess 300 und
weitere hierin offenbarte Prozesse werden ausgeführt, indem Blöcke verarbeitet
werden, welche besondere Hardware- oder Software- oder Firmware- Operationscodes aufweisen,
die von universellen Maschinen oder speziellen Maschinen oder durch
eine Kombination aus beiden ausführbar
sind.
-
3 veranschaulicht,
dass die Bearbeitung für
das Verfahren bei „Start" beginnt und zum
Verarbeitungsblock 301 fortschreitet. Am Verarbeitungsblock 301 empfängt der
Decodierer (siehe z. B. 1a) ein Steuersignal
entweder von dem Cache 160 (siehe z. B. 1a)
oder von der Verbindung 101 (siehe z. B. 1a).
Das Steuersignal, das am Block 301 empfangen wird, kann
bei wenigstens einer Ausführungsform ein
Typ eines Steuersignals sein, das üblicherweise als ein Software-„Befehl” bezeichnet
wird. Der Decodierer 165 decodiert das Steuersignal, um
die Operationen, die ausgeführt
werden sollen, festzulegen. Die Verarbeitung geht vom Verarbeitungsblock 301 weiter
zum Verarbeitungsblock 302.
-
Am
Verarbeitungsblock 302 greift der Decodierer 165 auf
die Registerdatei 150 (1a) oder
auf einen Ort im Speicher (siehe z. B. den Hauptspeicher 104 oder
den Cache-Speicher 160 der 1a) zu.
Auf die Register in der Registerdatei 150 oder auf die
Speicherorte in den Speicher wird abhängig von der Registeradresse,
die in dem Steuersignal festgelegt ist, zugegriffen. Zum Beispiel
kann das Steuersignal für
eine Operation die Registeradressen SRC1, SRC2 und DEST umfassen.
SRC1 ist die Adresse des ersten Quellenregisters. SRC2 ist die Adresse
des zweiten Quellenregisters. In manchen Fällen ist die Adresse SRC2 optional, da
nicht alle Operationen zwei Quellenadressen erfordern. Wenn für eine Operation
die Adresse SRC2 nicht erforderlich ist, dann wird nur die Adresse
SRC1 verwendet. DEST ist die Adresse des Zielregisters, in dem die
sich ergebenden Daten gespeichert werden. Bei wenigstens einer Ausführungsform
können
SRC1 oder SRC2 bei wenigstens einem der Steuersignale, die von dem
Decodierer 165 erkannt werden, auch als DEST verwendet
werden.
-
Die
Daten, die in den entsprechenden Registern gespeichert werden, werden
als Quelle 1, Quelle 2 bzw. Ergebnis bezeichnet. Bei einer Ausführungsform
können
alle diese Datengrößen eine
Länge von
vierundsechzig Bit haben. Bei alternativen Ausführungsformen können eine
oder mehrere dieser Datengrößen andere Längen haben,
so wie einhundertzweiunddreißig
Bit Länge.
-
Bei
einer weiteren Ausführungsform
der Erfindung kann irgendeine oder alle aus SRC1, SRC2 und DEST
einen Speicherort in dem adressierbaren Speicherraum des Prozessors 109 (1a)
oder in dem Prozessorkern 110 (1b) definieren.
Zum Beispiel kann SRC1 einen Speicherort in dem Hauptspeicher 104 identifizieren,
während
SRC2 ein erstes Register innerhalb der Register 201 für ganze
Zahlen identifiziert und DEST ein zweites Register innerhalb der
Register 209 identifiziert. Aus Gründen der Einfachheit der Beschreibung
hierin wird die Erfindung in Bezug auf den Zugriff auf die Registerdatei 150 beschrieben.
Jedoch wird ein Fachmann erkennen, dass diese beschriebenen Zugriffe
stattdessen auf einen Speicher vorgenommen werden können.
-
Vom
Block 302 geht die Verarbeitung weiter zum Verarbeitungsblock 303.
Am Verarbeitungsblock 303 wird die Ausführungseinheit 130 (siehe
z. B. 1a) aktiviert, um die Operation
auf den zugegriffenen Daten auszuführen.
-
Die
Verarbeitung geht weiter vom Verarbeitungsblock 303 zum
Verarbeitungsblock 304. Am Verarbeitungsblock 304 wird
das Ergebnis zurück
in die Registerdatei 150 oder in den Speicher entsprechend
den Anforderungen des Steuersignals gespeichert. Die Verarbeitung
endet dann mit „Stopp".
-
DATENSPEICHERFORMATE
-
4 veranschaulicht
Typen gepackter Daten entsprechend einer Ausführungsform der Erfindung. Vier
Formate mit gepackten und ein Format mit nicht gepackten Daten sind
veranschaulicht, die das gepackte Byteformat 421, das gepackte
Halbformat 422, das gepackte Ein zelformat 423,
das gepackte Doppeltformat 424 und das Format 412 mit
nicht gepacktem doppelten Vierfachwort 421 umfassen.
-
Das
gepackte Byteformat 421 ist bei wenigstens einer Ausführungsform
einhundertachtundzwanzig Bit lang, wobei sechzehn Datenelemente
(B0–B15)
enthalten sind. Jedes Datenelement (B0–B15) ist ein Byte (z. B. 8
Bit) lang.
-
Das
gepackte Halbformat 422 ist für wenigstens eine Ausführungsform
einhundertachtundzwanzig Bit lang, wobei acht Datenelemente (Halb
0 bis Halb 7) enthalten sind. Jedes der Datenelemente (Halb 0 bis
Halb 7) kann sechzehn Bit Information halten. Jedes dieser Datenelemente
mit sechzehn Bit kann entweder als „halbes Wort" oder „kurzes
Wort" oder einfach
als „Wort" bezeichnet werden.
-
Das
gepackte Einfachformat 423 kann für wenigstens eine Ausführungsform
einhundertachtundzwanzig Bit lang sein und kann vier Datenelemente 423 halten
(Einfach 0 bis Einfach 3). Jedes dieser Datenelemente (Einfach 0
bis Einfach 3) kann zweiunddreißig
Bit Information halten. Jedes der Datenelemente mit 32 Bit kann
entweder als „d-Wort" oder „doppeltes
Wort" bezeichnet
werden. Jedes der Datenelemente (Einfach 0 bis Einfach 3) kann zum
Beispiel einen Fließkommawert
in einfacher Genauigkeit mit 32 Bit darstellen, daher der Ausdruck „gepacktes
Einfach"-Format.
-
Das
gepackte Doppelformat 424 kann bei wenigstens einer Ausführungsform
einhundertachtundzwanzig Bit lang sein und kann zwei Datenelemente
halten. Jedes Datenelement (Doppelt 0, Doppelt 1) des gepackten
Doppelformats 424 kann vierundsechzig Bit Information halten.
Jedes der Datenelemente mit vierundsechzig Bit kann als ein „q-Wort" oder „Vierfachwort" bezeichnet werden.
Jedes der Datenelemente (Doppelt 0, Doppelt 1) kann zum Beispiel
einen Fließkommawert
in doppelter Genauigkeit mit 64 Bit darstellen, daher der Ausdruck „gepacktes
Doppel"-Format.
-
Das
nicht gepackte, doppelte Vierfachwort(quadword)-Format 412 kann
bis zu 128 Bit Daten halten. Die Daten brauchen nicht notwendigerweise
gepackte Daten zu sein. Bei wenigstens einer Ausführungsform können zum
Beispiel die 128 Bit Information des nicht gepackten, doppelten
Vierfachwort-Formats 412 ein einziges skalares Datenelement
darstellen, so wie ein Zeichen, eine ganze Zahl, einen Fließkommawert
oder einen Binärbit-Maskenwert.
Als Alternative können
die 128 Bit des nicht gepackten, doppelten Vierfachwort-Formats 412 eine
Aggregation nicht zueinander in Bezug stehender Bits (beispielsweise
einen Statusregisterwert, wobei jedes Bit oder jeder Satz aus Bits
einen unterschiedlichen Flag darstellt) oder dergleichen darstellen.
-
Bei
wenigstens einer Ausführungsform
der Erfindung können
die Datenelemente des gepackten Einfach- 423 und der gepackten
Doppel- 424 Formats gepackte Fließkommadatenelemente sein, wie
oben angegeben. Bei einer alternativen Ausführungsform der Erfindung können die
Datenelemente des gepackten Einfach- 423 und des gepackten
Doppel- 424 Formats gepackte ganze Zahlen, gepackte Boole'sche Elemente oder
gepackte Fließkommadatenelemente
sein. Bei einer weiteren alternativen Ausführungsform der Erfindung können die
Datenelemente des gepackten Byte- 421, des gepackten Halb- 422,
des gepackten Einfach- 423 und des gepackten Doppel- 424 Formats
gepackte ganzzahlige oder gepackte Boole'sche Datenelemente sein. Bei alternativen
Ausführungsformen
der Erfindung brauchen nicht alle gepackten Byte- 421,
gepackten Halb- 422, gepackten Einfach- 423 und
gepackten Doppel- 424 Datenformate erlaubt oder unterstützt zu werden.
-
Die 5 und 6 veranschaulichen
im Register gepackte Datenspeicherdarstellungen gemäß wenigstens
einer Ausführungsform
der Erfindung.
-
Die 5 veranschaulicht
vorzeichenfreie (unsigned) und vorzeichenbehaftete (signed) gepackte Byteformate 510 bzw. 511 im
Register. Die vorzeichenfreie gepackte Bytedarstellung 510 im
Register veranschaulicht das Speichern vorzeichenfreier gepackter
Bytedaten, zum Beispiel in einem der Erweiterungsregister XR0 213a bis XR7 213h mit
128 Bit (siehe z. B. 2b). Information für jedes
der sechzehn Byte-Datenelemente ist in dem Bit Sieben bis zum Bit
Null für
das Byte Null gespeichert, im Bit Fünfzehn bis zum Bit Acht für das Byte
Eins, im Bit Dreiundzwanzig bis zum Bit Sechzehn für das Byte
Zwei, im Bit Einunddreißig
bis zum Bit Vierundzwanzig für
das Byte Drei, im Bit Neununddreißig bis zum Bit Zweiunddreißig für das Bit
Vier, im Bit Siebenundvierzig bis zum Bit Vierzig für das Byte
Fünf, im
Bit Fünfundfünfzig bis
zum Bit Achtundvierzig für das
Byte Sechs, im Bit Dreiundsechzig bis zum Bit Sechsundfünfzig für das Byte
Sieben, im Bit Einundsiebzig bis zum Bit Vierundsechzig für das Byte
Acht, im Bit Neunundsiebzig bis zum Bit Zweiundsiebzig für das Byte Neun,
im Bit Siebenundachtzig bis zum Bit Achtzig für das Byte Zehn, im Bit Fünfundneunzig
bis zum Bit Achtundachtzig für
das Byte Elf, im Bit Einhundertdrei bis zum Bit Sechsundneunzig
für das
Byte Zwölf,
im Bit im Einhundertelf bis zum Bit Einhundertvier für das Byte
Dreizehn, im Bit Einhundertneunzehn bis zum Bit Einhundertzwölf für das Byte
Vierzehn und im Bit Einhundertsiebenundzwanzig bis zum Bit Einhundertzwanzig
für das
Byte Fünfzehn.
-
Somit
werden alle verfügbaren
Bits in dem Register verwendet. Diese Speicheranordnung erhöht die Speicherleistungsfähigkeit
des Prozessors. Ebenso, wenn auf sechzehn Datenelemente zugegriffen
wird, kann eine Operation nun bei sechzehn Datenelementen gleichzeitig
durchgeführt
werden.
-
Die
vorzeichenbehaftete gepackte Bytedarstellung 511 im Register
veranschaulicht das Speichern vorzeichenbehafteter gepackter Bytes.
Man bemerke, dass das achte (MSB) Bit jedes Byte-Datenelementes die
Vorzeichenangabe („s") ist.
-
5 veranschaulicht
außerdem
vorzeichenfreie und vorzeichenbehaftete gepackte Wortdarstellungen 512 bzw. 513 im
Register.
-
Die
vorzeichenfreie gepackte Wortdarstellung 512 im Register
zeigt, wie die Erweiterungsregister 210 acht Wort(jedes
mit 16 Bit)-Datenelemente speichern. Das Wort Null ist im Bit Fünfzehn bis
zum Bit Null des Registers gespeichert. Das Wort Eins ist im Bit
Einunddreißig
bis zum Bit Sechzehn des Registers gespeichert. Das Wort Zwei ist
im Bit Siebenundvierzig bis zum Bit Zweiunddreißig des Registers gespeichert.
Das Wort Drei ist im Bit Dreiundsechzig bis zum Bit Achtundvierzig
des Registers gespeichert. Das Wort Vier ist im Bit Neunundsiebzig
bis zum Bit Vierundsechzig des Registers gespeichert. Das Wort Fünf ist im
Bit Fünfundneunzig
bis zum Bit Achtzig des Registers gespeichert. Das Wort Sechs ist
im Bit Einhundertelf bis zum Bit Sechsundneunzig des Registers gespeichert.
Das Wort Sieben ist im Bit Einhundertsiebenundzwanzig bis zum Bit Einhundertzwölf des Registers
gespeichert.
-
Die
vorzeichenbehaftete gepackte Wort-Darstellung Fünfhundertdreizehn im Register
ist ähnlich
der nicht signierten, gepackten Wort-Darstellung 512 im
Register. Man bemerke, dass das Vorzeichenbit („s") im sechzehnten Bit (MSB) für jedes
Wort Datenelement gespeichert ist.
-
6 veranschaulicht
ein vorzeichenfreies und ein vorzeichenbehaftetes gepacktes Doppelwort-Format 514 bzw. 515 im
Register. Die vorzeichenfreie gepackte Doppelwort-Darstellung 514 im
Register zeigt, wie die Erweiterungsregister 210 Vier Doppelwort(jeweils
mit 32 Bit)-Datenelemente speichern. Das Doppelwort Null ist im
Bit Einunddreißig
bis zum Bit Null des Registers gespeichert. Das Doppelwort Eins
ist im Bit Dreiundsechzig bis zum Bit Zweiunddreißig des
Registers gespeichert. Das Doppelwort Zwei ist im Bit Fünfundneunzig
bis zum Bit Vierundsechzig des Registers gespeichert. Das Doppelwort
Drei ist im Bit Einhundertsiebenundzwanzig bis zum Bit Sechsundneunzig
des Registers gespeichert.
-
Die
vorzeichenbehaftete, gepackte Doppelwort-Darstellung 515 im
Register ist ähnlich
der vorzeichenfreien, gepackten Vierfachwort-Darstellung 516 im
Register. Man bemerke, dass das Vorzeichenbit („s") das zweiunddreißigste Bit (MSB) jedes Doppelwort-Datenelementes
ist.
-
6 veranschaulicht
ebenfalls vorzeichenfreie und vorzeichenbehaftete, gepackte Vierfachwort-Formate 516 bzw. 517 im
Register. Die vorzeichenfreie, gepackte Vierfachwort-Darstellung 516 im
Register zeigt, wie die Erweiterungsregister 210 zwei Vierfachwort
(jedes mit vierundsechzig Bit)-Datenelemente speichert. Das Vierfachwort
Null ist im Bit Dreiundsechzig bis zum Bit Null des Registers gespeichert.
Das Vierfachwort Eins ist im Bit Einhundertsiebenundzwanzig bis
zum Bit Vierundsechzig des Registers gespeichert.
-
Die
vorzeichenbehaftete, gepackte Vierwort-Darstellung 517 im
Register ist ähnlich
der vorzeichenfreien, gepackten Vierfachwort-Darstellung 516 im
Register. Es sei angemerkt, dass das Hörzeichenbit („s") das vierundsechzigste
Bit (MSB) jedes Vierfachwort-Datenelementes ist.
-
BLEND-OPERATIONEN
-
7 ist
ein Ablaufdiagramm eines allgemeinen Verfahrens 700 zum
Durchführen
von BLEND-Operationen gemäß wenigstens
einer Ausführungsform
der Erfindung. Der Prozess 700 und weitere hierin offenbarte
Prozesse werden durch Verarbeitungsblöcke ausgeführt, die bestimmte Hardware-
oder Software- oder Firmware-Operationscodes aufweisen, die durch
universelle Maschinen oder spezielle Maschinen oder durch eine Kombination
aus beiden ausführbar
sind.
-
7 veranschaulicht,
dass das Verfahren bei „Start" beginnt und weiter
zum Verarbeitungsblock 705 läuft. Am Verarbeitungsblock 705 decodiert
der Decodierer 165 das Steuersignal, das von dem Prozessor 109 empfangen
worden ist. Somit decodiert der Decodierer 165 den Operationscode
für einen
BLEND-Befehl. Die Verarbeitung geht dann weiter vom Verarbeitungsblock 705 zum
Verarbeitungsblock 710.
-
Am
Verarbeitungsblock 710 greift der Decodierer 165 über den
internen Bus 170 auf die Register 209 in der Registerdatei 150 zu,
wobei die Adressen SRC1 und DEST in dem Befehl codiert sind. Bei
wenigstens einer Ausführungsform
geben die Adressen, die in dem Befehl codiert sind, jede ein Erweiterungsregister
an (siehe z. B. die Erweiterungsregister 210 der 2B).
Bei einer solchen Ausführungsform
wird auf die angegebenen Erweiterungsregister 210 am Block 710 zugegriffen,
um die Ausführungseinheit 130 mit
den Daten, die in dem Register für
SRC1 (Quelle 1) gespeichert sind, und den Daten, die in
dem Register DEST (Ziel) gespeichert sind, zu versorgen. Bei wenigstens
einer Ausführungsform
kommunizieren die Erweiterungsregister 210 die Daten an
die Ausführungseinheit 130 über den
internen Bus 170.
-
Vom
Verarbeitungsblock 710 geht die Verarbeitung zum Verarbeitungsblock 715.
Am Verarbeitungsblock 715 aktiviert der Decodierer 165 die
Ausführungseinheit 130,
um den Befehl durchzuführen.
Bei wenigstens einer Ausführungsform
wird eine derartige Aktivierung 715 durchgeführt, indem
ein oder mehrere Steuersignale an die Ausführungseinheit gesendet werden,
um die gewünschte
Operation (BLEND) anzugeben.
-
Vom
Block 715 geht die Verarbeitung weiter zum Verarbeitungsblock 720.
Am Verarbeitungsblock 720 werden die Daten, die in den
Befehlen gespeichert sind, von der gewünschten Operation erhalten.
-
Vom
Block 720 geht die Verarbeitung weiter zum Verarbeitungsblock 725.
Am Verarbeitungsblock 725 stellt der Prozessor fest, ob
ein Steuerbit für
das Datenelement auf „1" gesetzt ist. Das
Datenbit kann basierend auf dem Datenspeicherformat variieren. Wie
in der 4 veranschaulicht, gibt es verschiedene Typen
gepackter Daten.
-
Das
gepackte Byteformat 421 ist für wenigstens eine Ausführungsform
einhundertachtundzwanzig Bit lang, wobei sechzehn Datenelemente
(B0–B15)
enthalten sind. Jedes Datenelement (B0–B15) ist ein Byte (z. B. 8
Bit) lang.
-
Das
gepackte Halbformat 422 ist bei wenigstens einer Ausführungsform
einhundertachtundzwanzig Bit lang, wobei es acht Datenelemente (Halb
0 bis Halb 7) enthält.
Jedes der Datenelemente (Halb 0 bis Halb 7) kann sechzehn Bit Information
halten. Jedes dieser Datenelemente mit sechzehn Bit kann entweder
als „Halbwort" oder „kurzes
Wort" oder einfach
als „Wort" bezeichnet werden.
-
Das
gepackte Einfachformat 423 kann für wenigstens eine Ausführungsform
einhundertachtundzwanzig Bit lang sein und kann vier Datenelemente 423 (Einfach
Null bis Einfach Drei) halten. Jedes der Datenelemente (Einfach
Null bis Einfach Drei) kann zweiunddreißig Bit Information halten.
Jedes der Datenelemente mit zweiunddreißig Bit kann entweder als „d-Wort" oder „Doppelwort" bezeichnet werden.
Jedes der Datenelemente (Einfach Null bis Einfach Drei) kann zum
Beispiel einen Fließkommawert
in einfacher Genauigkeit mit zweiunddreißig Bit darstellen, daher der
Ausdruck „gepacktes
Einfach"-Format.
-
Das
gepackte Doppelformat 424 kann bei wenigstens einer Ausführungsform
einhundertachtundzwanzig Bit lang sein und kann zwei Datenelemente
halten. Jedes Datenelement (Doppelt Null, Doppelt Eins) des gepackten
Doppelformats 424 kann vierundsechzig Bit Information halten.
Jedes der Datenelemente mit vierundsechzig Bit kann entweder als
ein „q-Wort" oder „Vierfachwort" bezeichnet werden.
Jedes der Datenelemente (Doppelt 0, Doppelt 1) kann zum Beispiel
einen Fließkommawert
mit doppelter Genauigkeit mit 64 Bit darstellen, daher der Ausdruck „gepacktes
Doppel-„Format.
-
Bei
wenigstens einer Ausführungsform
der Erfindung können
die Datenelemente des gepackten Einfach- 423 und gepackten
Doppel- 424 Formats gepackte Fließkomma-Datenelemente sein,
wie oben angegeben. Bei einer alternativen Ausführungsform der Erfindung können die
Datenelemente des gepackten Einfach- 423 und des gepackten
Doppel- 424 Formats gepackte ganzzahlige, gepackte Boole'sche oder gepackte Fließkomma-Datenelemente
sein.
-
Bei
wenigstens einer Ausführungsform
der Erfindung kann sich das Steuerbit auf das MSB eines Datenelementes
beziehen. Das MSB kann auch als eine Vorzeichenangabe oder ein Vorzeichenbit
bekannt sein. Zum Beispiel ist das achte Bit (MSB) jedes Byte-Datenelementes
eine Vorzeichenangabe; das sechzehnte Bit (MSB) jedes Wort-Datenelementes
ist ein Vorzeichenbit; das zweiunddreißigste Bit (MSB) jedes Doppelwort-Datenelementes
ist ein Vorzeichenbit; und das vierundsechzigste Bit (MSB) jedes
Vierfachwort-Datenelementes ist ein Vorzeichenbit.
-
Wenn
das Steuerbit „1" für das Datenelement
Quelle 1 ist, dann geht die Verarbeitung zum Verarbeitungsblock 730 weiter.
Am Verarbeitungsblock 730 wählt ein Multiplexierer das
Datenelement Quelle 1 mit dem Steuerbit „1" aus. Die Anzahl der Multiplexierer
hängt von
der Granularität
des Befehls ab. Das Datenelement in SRC1 wird in DEST kopiert. Die
Verarbeitung geht zum Verarbeitungsblock 735 weiter. Am
Block 735 speichert der Speicher das ausgewählte Datenelement
im DEST-Register. Sobald gespeichert ist, endet die Verarbeitung.
-
Wenn
das Steuerbit „0" ist, dann endet
die Verarbeitung. Das Datenelement in DEST bleibt dasselbe und wird
nicht kopiert.
-
UNMITTELBARE BLEND-OPERATIONEN
-
8 veranschaulicht
ein Ablaufdiagramm für
wenigstens eine Ausführungsform
eines Prozesses für eine
unmittelbare Auswahloperation 800 des allgemeinen Verfahrens 700,
das in der 7 veranschaulicht ist. Für die bestimmte
Ausführungsform 800,
die in der 8 veranschaulicht ist, wird
die unmittelbare BLEND-Operation auf den Datenwerten Quelle 1 und
Ziel ausgeführt,
die einhundertachtundzwanzig Bit Länge haben und die gepackte
Daten sein können
oder nicht. Auch erkennt ein Fachmann, dass die Operationen, die in
der 8 veranschaulicht sind, ebenfalls für Datenwerte
anderer Längen
ausgeführt
werden können,
einschließlich
solcher, die größer oder
kleiner sind.
-
Die
unmittelbaren BLEND-Befehle benutzen Bitmasken anstelle von Bytes,
Wörtern
oder Doppelwort-Masken. Indem Bitmasken verwendet werden, ermöglicht dies
für kleine
unmittelbare Operanden (statt 64 oder 128 Bit) so kleinere Codegrößen, und
ein effizienteres Decodieren kann geschehen.
-
Die
Verarbeitungsblöcke 805 bis 820 arbeiten
im Wesentlichen ebenso für
das Verfahren 800, wie die Verarbeitungsblöcke 705 bis 720,
die oben in Verbindung mit dem Verfahren 700 beschrieben
sind, das in der 7 veranschaulicht ist. Wenn
der Decodierer 165 die Ausführungseinheit 130 aktiviert,
um den Befehl am Block 815 auszuführen, ist der Befehl ein BLEND-Befehl
zum Auswählen
der jeweiligen Datenwerte aus den Werten Quellel und Ziel.
-
Vom
Verarbeitungsblock 820 geht die Verarbeitung weiter zum
Verarbeitungsblock 825. Am Block 825 wird das
Folgende durchgeführt.
-
Für einen
unmittelbaren BLEND-Befehl ist die mnemonische Angabe wie folgt:
BLEND xmm1, xmm2/m128, imm8. Der Befehl benötigt 3 Operanden. Der erste
Operand kann der Quellenoperand sein, der Operand kann der Zieloperand
sein und der dritte Operand kann das unmittelbare Bit sein. Der
unmittelbare BLEND-Befehl wählt
Werte aus Quellel (xmm1) und aus Ziel (xmm2) basierend auf einer
Bitmaske aus. Die Bitmaske kann ein Bit sein, das in dem unmittelbaren
Feld des Datenelementes gespeichert ist. Die unmittelbaren Bits
(Ib[]) können
für Steuerzwecke
verwendet werden und werden innerhalb des Befehls codiert und als
Steuerbits verwendet.
-
Vom
Verarbeitungsblock 825 geht die Verarbeitung weiter zum
Verarbeitungsblock 830. Am Verarbeitungsblock 830,
wenn die Bitmaske des unmittelbaren Bits von Quellel "1" ist, dann wird die Eingabe von Quellel
durch einen Multiplexierer ausgewählt. Wie zuvor ausgeführt, hängt die
Anzahl der Multiplexierer von der Granularität des Befehls ab. Der Prozess
geht dann weiter zum Verarbeitungsblock 835. Am Verarbeitungsblock 835 wird
die ausgewählte
Eingabe in dem endgültigen
Ziel gespeichert. Wenn somit das unmittelbare Bit von Quelle 1 "1" ist, dann wird dieser Datenwert in
dem endgültigen
Ziel gespeichert.
-
Vom
Verarbeitungsblock 850 geht die Verarbeitung weiter zu "Stopp", wenn die Bitmaske
in dem unmittelbaren Bit von Quellel "0" ist,
dann gibt es keine Änderung
an dem Wert in Ziel. Der Datenwert von Quelle 1 wird nicht in Ziel
gespeichert.
-
Da
die unmittelbaren BLEND-Befehle unmittelbare Operanden verwenden,
ermöglicht
dies eine Grafikanwendung, bei der statische Maskenmuster verwendet
werden, die codiert werden, ohne dass irgendwelche Belastungen für die Datenmuster
erforderlich waren. Zum Beispiel Musterfüllungen in Grafikanwendungen wie
Powerpoint oder Texturabbildung oder glitzerndes Sonnenlicht auf
Wasser oder andere Animationseffekte.
-
Der
unmittelbare BLEND-Befehl sorgt auch für das schnelle Packen von Ergebnissen,
bei denen Komponenten unterschiedlich behandelt werden müssen und
die Muster vorab bekannt sind. Zum Beispiel komplexe Zahlen oder
Alpha-Pixelformate in rot, grün,
blau.
-
Vorteilhaft,
da der unmittelbare BLEND-Befehl keine Ladeoperation oder Vergleichsoperation
erfordert, um die Maske einzurichten, kann der Befehl zweimal so
schnell arbeiten.
-
9a veranschaulicht
ein Schaltungsdiagramm für
wenigstens eine bestimmte Ausführungsform
eines Prozesses der unmittelbaren Auswahloperation 800,
die in der 8 veranschaulicht ist. Bei der
bestimmten Ausführungsform,
die in der 9a veranschaulicht ist, ist
der Befehl ein gepackter Fließkomma BLEND-Wert
(BLENDPD) in doppelter Genauigkeit. Die BLENDPD-Operation wird auf
den Datenwerten von Quellel und Ziel ausgeführt, die 128 Bit Länge haben
und die gepackte Daten sein können
oder nicht. Auch erkennt ein Fachmann, dass die Operationen, die
in der 9a veranschaulicht sind, auch
bei Datenwerten mit anderen Längen
ausgeführt
werden können,
einschließlich
derjenigen, die kürzer
oder länger
sind.
-
Mit
Bezug nun auf die 9a können für eine BLENDPD-Operation Fließkommawerte
in doppelter Genauigkeit von einem Quellenoperanden, so wie xmm1 905a,
bedingt in den Zieloperanden, so wie xmm2 910a geschrieben
werden, abhängig
von den Bits in dem unmittelbaren Operanden 915a. Wie zuvor
ausgeführt,
bestimmen die unmittelbaren Bits, ob der entsprechende Fließkommawert
in doppelter Genauigkeit in dem Zieloperanden ausgewählt und/oder
von dem Quellenoperanden kopiert wird. Wenn ein unmittelbares Bit in
der Maske, das einem Wort entspricht, "1" ist,
dann wird der Fließkommawert
in doppelter Genauigkeit ausgewählt
und/oder kopiert, ansonsten bleibt der Wert im Ziel unverändert.
-
Da
das BLENDPD ein Typ eines gepackten Fließkommaelementes in doppelter
Genauigkeit ist, kann es achtundzwanzig Bit lang sein und kann es
zwei Datenelemente für
jedes xmm Register halten. Zum Beispiel kann ein Quellenoperand,
das xmm1 Register, Datenelemente 920a und 925a halten,
und ein Zieloperand, das xmm2 Register, kann Datenelemente 930a und 935a halten.
Jedes Datenelement des gepackten Doppelformates 424 kann
vierundsechzig Bits Information halten. Das unmittelbare Bit für diesen
Fall ist bei jedem Datenelement Ib[] 915a. Ein Multiplexierer 940a wählt aus,
ob der Zielwert von dem xmm1 Register 905a kopiert wird,
basierend auf dem unmittelbaren Bit 915a jedes Datenelementes
in dem xmm1 Register 905.
-
Mit
Bezug auf die 9a, wenn die Operation wie folgt
ist: BLENDPD xmm1, xmm2, 01b. Die Operation sagt an, das Datenelement
aus dem Quellenoperanden, dessen unmittelbares Bit "1" ist, in das Zielregister zu bringen.
Da Ib[0] 915a das Bit "1" enthält, wird
das Datenelement 925a von dem MUX 940a ausgewählt und in
dem Zielregister 910a gespeichert. Da Ib[1] 915a das
Bit "0" enthält, bleibt
das Datenelement 930a in dem Zielregister 910a dasselbe.
Nach dem Abschluss der Operation enthält das endgültige Zielregister 910a die Datenelemente 930a und 925a.
Dieser Wert kann nun in dem Speicher gespeichert werden.
-
9b veranschaulicht
ein Schaltdiagramm für
wenigstens eine bestimmte Ausführungsform
eines Prozesses der unmittelbaren Auswahloperation 800,
die in der 8 veranschaulicht ist. Bei der
bestimmten Ausführungsform,
die in der 9b veranschaulicht ist, ist
der Befehl ein gepackter Fließkomma-BLEND-Wert in
einfacher Genauigkeit (BLENDPS). Die BLENDPS-Operation wird auf
den Datenwerten für
Quellel und Ziel ausgeführt,
die 128 Bit Länge
haben und die gepackte Daten sein können oder nicht. Auch erkennt
ein Fachmann, dass die Operationen, die in der 9b veranschaulicht
sind, für
Datenwerte mit anderen Längen
ausgeführt
werden können,
einschließlich
derjenigen, die kürzer
oder laänger
sind.
-
Mit
Bezug nun auf die 9b können für eine BLENDPS-Operation Fließkommawerte
in einfacher Genauigkeit von einem Quellenoperanden, sowie xmm1 905b,
bedingt in den Zieloperanden, so wie xmm2 910b, geschrieben
werden, abhängig
von den Bits in dem unmittelbaren Operanden 915b. Wie zuvor
ausgeführt
bestimmen diese unmittelbaren Bits, ob der entsprechende Fließkommawert
in doppelter Genauigkeit in dem Zieloperanden ausgewählt und/oder
von dem Quellenoperanden kopiert wird. Wenn ein unmittelbares Bit in
der Maske, die einem Wort entspricht, "1" ist,
dann wird der Fließkommawert
in doppelter Genauigkeit von einem MUX 940b ausgewählt und
kopiert, ansonsten bleibt der Wert im Ziel unverändert.
-
Da
der BLENDPS ein Typ eines gepackten Fließkommaelementes in einfacher
Genauigkeit ist, kann er achtundzwanzig Bit lang sein und kann vier
Datenelemente 423 für
jedes xmm Register halten. Zum Beispiel kann ein Quellenoperand,
das xmm1 Register, die Datenele mente 920b, 925b, 926b und 927b halten.
Ein Zieloperand, das xmm2 Register, kann die Datenelemente 930b, 936b, 936b und 937b halten.
Jedes Datenelement des gepackten Einfachformates 423 kann
zweiunddreißig
Bit Information halten. Das unmittelbare Bit für diesen Fall ist Ib[] 915b für jedes
Datenelement. Ein Multiplexierer 940b wählt aus, ob der Zielwert aus
dem xmm1 Register 905 kopiert wird, basierend auf dem unmittelbaren
Bit 915b jedes Datenelementes in dem mmx1 Register 905b.
-
Mit
Bezug auf 9b, wenn die Operation wie folgt
ist: BLENDPS xmm1, xmm2, 0101b. Diese Operation sieht vor, das Datenelement
von den Quellenoperanden, dessen unmittelbares Bit "1" ist, in das Zielregister zu bringen.
Da Ib[0] 915b das Bit "1" enthält, wird
das Datenelement 927b ausgewählt und in dem Zielregister 910b gespeichert.
Da Ib[1] 915b das Bit "0" enthält, verbleibt
das Datenelement 936b in dem Zielregister 910b dasselbe.
Ib[2] 915b enthält
das Bit "1", somit wird das
Datenelement 925b ausgewählt und in dem Zielregister 910b gespeichert.
Schließlich
enthält
Ib[3] das Bit "0", somit verbleibt
das Datenelement 930b in dem Zielregister 910b dasselbe.
Nach dem Abschluss der Operation enthält das endgültige Zielregister 910b die
Datenelemente 930b, 925b, 936b und 927b.
Dieser Wert kann nun im Speicher gespeichert werden.
-
9c veranschaulicht
ein Schaltdiagramm für
wenigstens eine bestimmte Ausführungsform
eines Prozesses der unmittelbaren Auswahloperation 800,
die in der 8 veranschaulicht ist. Bei der
bestimmten Ausführungsform,
die in der 9c veranschaulicht ist, ist
der Befehl ein BLEND für
gepackte Wörter
(PBLENDDW). Die PBLENDDW-Operation wird auf den Datenwerten von
Quellel und Ziel ausgeführt,
die 128 Bit Länge
haben und die gepackte Daten sein können oder nicht. Auch erkennt
ein Fachmann, dass die Operationen, die in der 9c veranschaulicht
sind, für
Datenwerte anderer Längen
ausgeführt
werden können,
einschließlich
derjenigen, die kürzer
oder länger
sind.
-
Mit
Bezug nun auf die 9c können für eine PBLENDDW-Operation die
Wortwerte von einem Quellenoperanden, so wie xmm1 905c,
bedingt in den Zieloperanden, so wie xmm2 910c geschrieben
werden, abhängig
von den Bits in dem unmittelbaren Operanden 915c. Wie zuvor
ausgeführt,
bestimmen die unmittelbaren Bits, ob der entsprechende Wortwert
in dem Zieloperanden durch einen Multiplexierer aus dem Quellenoperanden
ausgewählt
wird. Wenn ein unmittelbares Bit in der Maske, die einem Wort entspricht, "1" ist, dann wird der Wortwert ausgewählt und/oder
kopiert, ansonsten verbleibt der Wert im Ziel unverändert.
-
Da
das PBLENDDW ein Typ eines gepackten Wortelementes ist, kann es
achtundzwanzig Bit lang sein und kann acht Datenelemente für jedes
xmm Register halten. Zum Beispiel kann ein Quellenoperand, das xmm1
Register, die Datenelemente 920c, 925c, 926c, 927c, 928c, 929c, 921c und 922c halten.
Der Zieloperand, das xmm2 Register, kann die Datenelemente 930c, 935c, 936c, 937c, 938c, 939c, 931c und 932c halten.
Jedes Datenelement des gepackten Doppelformates 422 kann
sechzehn Bit Information halten. Das unmittelbare Bit für diesen
Fall ist Ib[] 915c für
jedes Datenelement. Multiplexierer 940c wählen aus,
ob der Zielwert aus dem xmm1 Register 95c kopiert wird,
basierend auf dem unmittelbaren Bit 915c jedes Datenelementes
in dem xmm1 Register 905c.
-
Mit
Bezug auf 9c, wenn die Operation wie folgt
ist: PBLENDDW xmm1, xmm2, 00001111b. Diese Operation sagt aus, das
Datenelement von dem Quellenoperand, dessen unmittelbares Bit "1" ist, in das Zielregister zu bringen.
Da Ib[0] 915c das Bit "1" enthält, wird
das Datenelement 922c von dem MUX 940c ausgewählt und
in dem Zielregister 910c gespeichert. Ib[1] 915c enthält das Bit "1", das Datenelement 921c wird
von dem MUX 940c ausgewählt
und in dem Zielregister 910c gespeichert. Da Ib[2] 915c das
Bit "1" enthält, wird das
Datenelement 929c von dem MUX 940c ausgewählt und
in dem Zielregister 910c gespeichert. Ib[3] 915c enthält das Bit "1", das Datenelement 928c wird
von dem MUX 940c ausgewählt
und in dem Zielregister 910c gespeichert. Da Ib[4] 915c das
Bit "0" enthält, bleibt
das Datenelement 937c in dem Zielregister 910c dasselbe. Ib[5] 915c enthält das Bit "0", das Datenelement 936c bleibt
in dem Zielregister 910c dasselbe. Da Ib[6] 915c das
Bit "0" enthält, bleibt
das Datenelement 935c in dem Zielregister 910c dasselbe.
Da Ib[7] 915c das Bit "0" enthält, bleibt
das Datenelement 930c in dem Zielregister 910c dasselbe.
Nach dem Abschluss der Operation enthält das endgültige Zielregister 910c die
Datenelemente 930c, 935c, 936c, 937c, 928c, 929c, 921c und 922c.
Dieser Wert kann nun im Speicher gespeichert werden.
-
VARIABLE BLEND-OPERATIONEN
-
10 veranschaulicht
ein Ablaufdiagramm für
wenigstens eine Ausführungsform
eines Prozesses für
eine unmittelbare Auswahloperation 1000 des allgemeinen
Verfahrens 700, das in der 7 veranschaulicht
ist. Für
die bestimmte Ausführungsform 1000,
die in der 10 veranschaulicht ist, wird
die variable BLEND-Operation auf den Datenwerten Quellel und Ziel
ausgeführt,
die eine Länge
von 128 Bit haben und die gepackte Daten sein können oder nicht. Auch erkennt
ein Fachmann, dass die Operationen, die in der 10 veranschaulicht
sind, auch für
Datenwerte anderer Längen
ausgeführt
werden können,
einschließlich
derjenigen, die kürzer
oder länger
sind. Zusätzlich
verwenden variable BLEND-Befehle das Vorzeichenbit und oder höchstwertige
Bit (MSB – Most
Significant Bit) für
jedes Datenelement.
-
Die
Verarbeitungsblöcke 1005 bis 1020 arbeiten
im Wesentlichen ebenso für
das Verfahren 1000, wie es die Verarbeitungsblöcke 705 bis 720 tun,
die oben in Verbindung mit dem Verfahren 700, das in der 7 veranschaulicht
ist, beschrieben sind. Wenn der Decodierer 165 die Ausführungseinheit 130 aktiviert,
um den Befehl im Block 1015 auszuführen, ist der Befehl ein BLEND-Befehl
zum Auswählen
der jeweiligen Datenelemente aus den Werten für Quellel und Ziel.
-
Vom
Verarbeitungsblock 1020 geht die Verarbeitung weiter zum
Verarbeitungsblock 1025. Am Verarbeitungsblock 1025 wird
das Folgende ausgeführt.
-
Für einen
variablen BLEND-Befehl ist die mnemonische Angabe wie folgt: BLEND
xmm1, xmm2/m128, <XMM0>. Der Befehl braucht
3 Operanden. Der erste Operand kann der Quellenoperand sein, der
zweite Operand kamt der Zieloperand sein und der dritte Operand
kann das Steuerregister sein. Der variable BLEND-Befehl wählt Werte
aus Quellel (xmm1) und aus Ziel (xmm2) basierend auf dem höchstwertigen Bit
in einem impliziten Register xmm0. Die Steuerung kommt von dem MSB
jeden Feldes. Die Feldbreite entspricht dem Feld des Befehlstyps.
-
Vom
Verarbeitungsblock 1025 geht die Verarbeitung weiter zum
Verarbeitungsblock 1030. Am Verarbeitungsblock 1030 wird,
falls das MSB in dem xmm0 Register von Quellel "1" ist,
dann die Eingabe von Quellel von einem Multiplexierer ausgewählt. Wie
zuvor ausgeführt,
hängt die
Anzahl der Multiplexierer von der Granularität des Befehls ab. Der Prozess
geht dann weiter zum Verarbeitungsblock 1035. Am Verarbeitungsblock 1035 wird
die ausgewählte
Eingabe in dem endgültigen
Ziel gespeichert. Wenn somit das MSB von Quelle 1 "1" ist, dann wird der Datenwert in dem
endgültigen
Ziel gespeichert.
-
Vom
Verarbeitungsblock 1025 geht die Verarbeitung weiter zu "Stopp", falls das MSB von
Quelle 1 "0" ist, dann gibt es
keine Änderung
an dem Wert in Ziel. Der Datenwert von Quellel wird nicht in Ziel
gespeichert.
-
Da
die Variable BLEND-Operation das MSB jeden Feldes verwendet, erlaubt
sie die Verwendung jedweder arithmetischer Ergebnisse (Fließkomma oder
ganzzahlig) als Masken. Sie erlaubt auch die Verwendung von Vergleichsergebnissen
(z. B. können
Fließkommaoperationen
im z-Puffer mit 32 Bit verwendet werden, um Pixel mit 32 Bit zu
maskieren).
-
Vorteilhaft
erlaubt es die Variable BLEND-Operation, dass Masken für mehrere
Zwecke (so wie Animationseffekte) gestaltet werden. Das höchstwertige
Bit könnte
zuerst verwendet werden, dann die Maske nach links verschoben und
das zweithöchstwertige
Bit verwendet werden, dann das dritte usw. Durch Verwenden dieser
Technik könnten
vorberechnete Sequenzen für
Masken, Ladeoperationen und Speicher stark verkürzt werden.
-
11a veranschaulicht ein Schaltdiagramm für wenigstens
eine bestimmte Ausführungsform
eines Prozesses der variablen Auswahloperation 1000, die
in der 10 veranschaulicht ist. Bei
der bestimmten Ausführungsform,
die in der 11a veranschaulicht ist, ist
der Befehl ein variabler gepackter Fließkomma-BLEND-Wert in doppelter
Genauigkeit (BLENDVPD). Die BLENDVPD-Operation wird auf den Datenwerten
von Quellel und Ziel ausgeführt,
die 128 Bit Länge
haben und die gepackte Daten sein können oder nicht. Auch erkennt
ein Fachmann, dass die Operationen, die in der 11a veranschaulicht sind, auch für Datenwerte
mit anderen Längen
durchgeführt
werden, einschließlich
derjenigen, die kürzer
oder länger
sind.
-
Mit
Bezug nun auf die 11a können bei einer BLENDVPD-Operation
Fließkommawerte
in doppelter Genauigkeit von einem Quellenoperanden, so wie xmm1 1105a,
bedingt in den Zieloperanden, so wie xmm2 1110a geschrieben
werden, abhängig
von dem MSB in dem impliziten dritten Register, xmm0 1115a.
Die Registerzuweisung des dritten Operanden kann das architektonische
Register XMM0 sein. Wie zuvor ausgeführt, bestimmt das MSB in dem
impliziten dritten Register für
jede Quelle 1, ob der entsprechende Fließkommawert in doppelter Genauigkeit
in dem Zieloperanden ausgewählt
und/oder von dem Quellenoperanden kopiert wird. Wenn das MSB in
der Maske einer "1" entspricht, dann
wird der Fließkommawert
in doppelter Genauigkeit ausgewählt
und/oder kopiert, ansonsten verbleibt der Wert in dem Ziel unverändert.
-
Da
das BLENDVPD ein Typ eines gepackten Fließkommaelementes in doppelter
Genauigkeit ist, kann es achtundzwanzig Bit lang sein und kann es
zwei Datenelemente für
jedes xmm Register halten. Zum Beispiel kann ein Quellenoperand,
das xmm1 Register 1105x, die Datenelemente 1120a und 1125a halten,
und ein Zieloperand, das xmm2 Register 1110x, kann die
Datenelemente 1130a und 1135a halten. Jedes Datenelement
des gepackten Doppelformats 424 kann vierundsechzig Bit
Information halten. Ein Multiplexierer 1140a wählt aus,
ob der Zielwert vom xmm1 Register 1105a ausgewählt wird,
basierend auf dem MSB im Register 1115a jedes Datenelementes
in dem xmm1 Register 1105.
-
Mit
Bezug auf die 11a, wenn die Operation wie
folgt ist: BLENDVPD xmm1, xmm2, <XMM0>. Diese Operation sagt
aus, das Datenelement von dem Quellenoperanden, dessen MSB im impliziten
Register XMM0 "1" ist, in das Zielregister
zu bringen. Da das MSB des Registers XMM0 1117a das Bit "0" enthält, wird das Datenelement 1125a von
dem MUX 1140a nicht ausgewählt. Das Datenelement 1135a im
Register xmm2 1110a verbleibt in dem Zielregister. Jedoch
enthält
das MSB des Register XMM0 1116a das Bit "1", das Datenelement 1120a wird
von dem MUX 1140a ausgewählt und in dem Zielregister 1110a gespeichert.
Beim Abschluss der Operation enthält das endgültige Zielregister 1110a die
Datenelemente 1120a und 1135a. Dieser Wert kann
nun im Speicher gespeichert werden.
-
11b veranschaulicht ein Schaltdiagramm für wenigstens
eine bestimmte Ausführungsform
eines Prozesses der variablen Auswahloperation 1000, die
in der 10 veranschaulicht ist. Bei
der bestimmten Ausführungsform,
die in der 11b veranschaulicht ist, ist
der Befehl ein variabler gepackter Fließkomma-BLEND-Wert in einfacher
Genauigkeit (BLENDVPS). Die BLENDVPS-Operation wird auf Datenwerten
von Quellel und Ziel ausgeführt,
die 128 Bit Länge
haben und die gepackte Daten sein können oder nicht. Auch erkennt
ein Fachmann, dass die Operationen, die in der 11b veranschaulicht sind, auch für Datenwerte mit
anderen Längen
durchgeführt
werden können,
einschließlich
derjenigen, die kürzer
oder länger
sind.
-
Mit
Bezug nun auf die 11b können bei einer BLENDVPS-Operation
Fließkommawerte
in einfacher Genauigkeit von einem Quellenoperanden, so wie xmm1 1105b bedingt
in den Zieloperanden, so wie xmm2 1110b geschrieben werden,
abhängig
von dem MSB in dem impliziten dritten Register xmm0 1115b.
Die Registerzuweisung des dritten Operanden kann das architektonische
Register XMM0 sein. Wie zuvor ausgeführt, bestimmt das MSB in dem
impliziten dritten Register für
jede Quellel, ob der entsprechende Fließkommawert in einfacher Genauigkeit
in dem Zieloperanden ausgewählt
und/oder von dem Quellenoperanden kopiert wird. Wenn das MSB in
der Maske "1" entspricht, dann
wird der Fließkommawert
in doppelter Genauigkeit von einem MUX 1140b ausgewählt und
kopiert, ansonsten bleibt der Wert im Ziel unverändert.
-
Da
das BLENDVPS ein Typ eines gepackten Fließkommaelementes in einfacher
Genauigkeit ist, kann es achtundzwanzig Bit lang sein und kann vier
Datenelemente 423 für
jedes xmm Register halten. Zum Beispiel kann ein Quellenoperand,
das xxm1 Register, die Datenelemente 1120b, 1125b, 1126b und 1127b halten.
Der Zieloperand, das xmm2 Register, kann die Datenelemente 1130b, 1135b, 1136b und 1137b halten. Jedes
Datenelement des gepackten Einfachformats 423 kann zweiunddreißig Bit
Information halten. Ein Multiplexierer 1140b wählt aus,
ob der Zielwert aus dem xmm1 Register 1105 ausgewählt wird,
basierend auf dem MSB in dem Register 1115b für jedes
Datenelement in dem xmm1 Register 1105b.
-
Mit
Bezug auf die 11b, wenn die Operation wie
folgt ist: BLENDVPS xmm1, xmm2, <XMM0>. Diese Operation sagt
aus, das Datenelement von dem Quellenoperanden, dessen MSB im impliziten
Register XMM0 "1" ist, in das Zielregister
zu bringen. Da das MSB des Registers XMM0 1117a das Bit "0" enthält, wird das Datenelement 1127b von
dem MUX 1140b nicht ausgewählt. Der Wert des Zielregisters 1137b verbleibt ungeändert. Da
das MSB des Registers XMM0 1118b das Bit "1" enthält, wird das Datenelement 1126b von dem
MUX 1140b ausgewählt
und in dem Zielregister 1110b gespeichert. Der Wert des
Zielregisters 1136b wird durch den Quellenoperanden ersetzt.
Das MSB des Registers XMM0 1117b enthält das Bit "0",
das Datenelement 1125b wird von dem MUX 1140b nicht
ausgewählt.
Der Wert des Zielregisters 1135b verbleibt unverändert. Schließlich enthält das MSB
des Registers XMMO 1116b das Bit "1",
das Datenelement 1120b wird von dem MUX 1140b aus gewählt. Der
Wert des Zielregisters 1130b wird durch den Quellenoperanden
ersetzt. Nach dem Abschluss der Operation enthält das endgültige Zielregister 1110b die
Datenelemente 1120b, 1135b, 112b und 1137b.
Dieser Wert kann nun im Speicher gespeichert werden.
-
11c veranschaulicht ein Schaltdiagramm für wenigstens
eine bestimmte Ausführungsform
eines Prozesses der variablen Auswahloperation 1000, die
in der 10 veranschaulicht ist. Bei
der bestimmten Ausführungsform,
die in der 11c veranschaulicht ist, ist
der Befehl ein variabler BLEND für
gepackte Bytes (PBLENDVB). Die PBLENDVB-Operation wird auf Datenwerten
von Quelle 1 und Ziel ausgeführt,
die 128 Bit Länge
haben und die gepackte Daten sein können oder nicht. Auch erkennt
ein Fachmann, dass die Operationen, die in der 11c veranschaulicht sind, auch für Datenwerte
anderer Längen
durchgeführt
werden können,
einschließlich
derjenigen, die kürzer
oder länger
sind.
-
Mit
Bezug nun auf die 11c können für eine PBLENDVB-Operation die
Bytewerte von einem Quellenoperanden, so wie xmm1 1105c,
bedingt in den Zieloperanden, so wie xmm2 1110c geschrieben
werden, abhängig
von dem MSB in dem impliziten dritten Register, xmm0 1115c.
Die Registerzuweisung des dritten Operanden kann das architektonische
Register XMM0 sein. Wie zuvor ausgeführt, bestimmt das MSB in dem impliziten
dritten Register für
jede Quellel, ob der entsprechende Bytewert in dem Zieloperanden
ausgewählt und/oder
von dem Quellenoperanden kopiert wird. Wenn das MSB in der Maske "1" entspricht, dann wird der Bytewert
von einem MUX 1140c ausgewählt und kopiert, ansonsten
bleibt der Wert im Ziel unverändert.
-
Da
das PBLENDVB ein Typ eines gepackten Byteelementes ist, kann es
achtundzwanzig Bit lang sein und kann es sechzehn Datenelemente
für jedes
xmm Register halten. Zum Beispiel kann ein Quellenoperand, das xmm1
Register, die Datenelemente 1120c1 bis 1120c16 halten.
Wobei c1 bis c16 darstellen: die sechzehn Datenelemente für das Register
xmm1 1105c; die sechzehn Datenelemente für das Register
xmm2 1110c; die sechzehn Multiplexierer 1140c;
und die sechzehn impliziten Register XMM0 1115c.
-
Der
Zieloperand, das xmm2 Register, kann die Datenelemente 1130c1 bis 1130c16 halten.
Jedes Datenelement des gepackten Byteformats 421 kann sechzehn
Bit Information halten. Ein Multiplexierer 1140c wählt aus,
ob der Zielwert aus dem xmm1 Register 1105c ausgewählt wird,
basierend auf dem MSB im Register 1115c jedes Datenelementes
in dem xmm1 Register 1105c.
-
Mit
Bezug auf die 11c, wenn die Operation wie
folgt ist: PBLENDVB xmm1, xmm2, <XXM0>. Diese Operation sagt
aus, das Datenelement von dem Quellenoperanden, dessen MSB in dem
impliziten Register XMM0 "1" ist, in das Zielregister
zu bringen. Wie zuvor ausgeführt,
wird der Quellenoperand 1120c von dem MUX 1140c basierend
auf dem MSB in dem impliziten Register 115c ausgewählt. Wenn
das MSB "1" ist, dann wird der
Quellenoperand ausgewählt
und in das Zielregister 1110c kopiert. Wenn das MSB "0" ist, dann bleibt das Zielregister unverändert. Die
Werte werden dann im Speicher gespeichert.
-
Der
Bezug auf die 12 veranschaulicht verschiedene
Ausführungsformen
von Operationscodes, die verwendet werden können, die um das Steuersignal
für einen
BLEND-Befehl zu codieren (Operationscode). 12 veranschaulicht
ein Format eines Befehls 1200 gemäß einer Ausführungsform
der Erfindung. Das Befehlsformat 1200 umfasst verschiedene
Felder; diese Felder können
ein Präfix-Feld 1210,
ein Operationscode-Feld 1220 und Operandenspezifizierfelder
(z. B. modR/M, Skalen-Index-Basis, Verlagerung, unmittelbar usw.)
umfassen. Die Operandenspezifizierfelder sind optional und umfassen
ein modR/M-Feld 1230, ein SIB-Feld 1240 ein Verlagerungsfeld 1250 und
ein unmittelbar-Feld 1260.
-
Ein
Fachmann wird erkennen, dass das Format 1200, das in der 12 erläutert ist,
veranschaulichend ist und dass andere Organisationsformen von Daten
innerhalb eines Befehlsco des bei den offenbarten Ausführungsformen
verwendet werden können.
Zum Beispiel brauchen die Felder 1210, 1220, 1230, 1240, 1250, 1260 nicht
in der gezeigten Reihenfolge organisiert zu sein, sondern können an
anderen Orten in Bezug aufeinander reorganisiert sein und brauchen
nicht nebeneinander zu liegen. Auch sollten die hierin diskutierten Feldlängen nicht
als beschränkend
genommen werden. Ein Feld, das als ein bestimmtes Element aus Bytes diskutiert
wird, kann bei alternativen Ausführungsformen
als ein größeres oder
kleineres Feld implementiert werden. Auch kann der Ausdruck "Byte", obwohl er hierin
so verwendet wird, dass er sich auf eine Gruppierung mit acht Bit
bezieht, bei weiteren Ausführungsformen
als eine Gruppierung irgendeiner anderen Größe implementiert werden, einschließlich mit
4 Bit, 16 Bit und 32 Bit.
-
Wie
hierin verwendet kann ein Operationscode für einen bestimmten Fall eines
Befehls, so wie ein BLEND-Befehl, bestimmte Werte in den Feldern
des Befehlsformates 200 enthalten, um die gewünschte Operation
anzugeben. Ein solcher Befehl wird manchmal als "ein tatsächlicher Befehl" bezeichnet. Die
Bitwerte für einen
tatsächlichen
Befehl werden manchmal insgesamt hierin als ein "Befehlscode" bezeichnet.
-
Für jeden
Befehlscode stellt der entsprechende decodierte Befehlscode eindeutig
eine Operation dar, die von einer Ausführungseinheit (so wie z. B. 130 der 1a)
ansprechend auf den Befehlscode durchgeführt werden soll. Der decodierte
Befehlscode kann eine oder mehrere Mikrooperationen umfassen.
-
Die
Inhalte des Operationscode-Feldes 1220 legen die Operation
fest. Bei wenigstens einer Ausführungsform
hat das Operationscode-Feld 1220 für die Ausführungsformen der hierin diskutierten
BLEND-Befehle drei Byte in der Länge.
Das Operationscode-Feld 1220 kann ein, zwei oder drei Byte
an Information umfassen. Bei wenigstens einer Ausführungsform
wird ein Ausstiegs-Operationscodewert mit drei Byte in einem Ausstiegsfeld 118c mit
zwei Byte des Operationscode-Feldes 1220 mit den Inhalten
eines dritten Byte 1225 des Operati onscode-Feldes 1220 kombiniert,
um eine BLEND-Operation festzulegen. Diese dritte Byte 1225 wird
hierin als ein befehlsspezifischer Operationscode bezeichnet.
-
Bei
wenigstens einer Ausführungsform
wird der Präfix-Wert
0x66 in das Präfix-Feld 1210 gebracht
und wird als ein Teil des Befehls-Operationscodes verwendet, um
die gewünschte
Operation zu definieren. Das heißt, der Wert in dem Präfix-Feld 1210 wird
als ein Teil des Operationscodes decodiert, anstatt dass er so ausgelegt
wird, dass er lediglich den Operationscode qualifiziert, der folgt.
Bei wenigstens einer Ausführungsform
wird zum Beispiel der Präfix-Wert
0x66 verwendet, um anzugeben, dass der Ziel- und Quellenoperand eines
BLEND-Befehls in
128 Bit Intel® SSE2
XMM Registern liegt. Weitere Präfixe
können
in ähnlicher
Weise verwendet werden. Für
jedoch wenigstens einige Ausführungsformen
von BLEND-Befehlen
kann ein Präfix stattdessen
unter bestimmten Betriebsbedingungen in der traditionellen Rolle
des Verstärkens
des Operationscodes oder des Qualifizierens des Operationscodes
verwendet werden.
-
Eine
erste Ausführungsform 1226 und
eine zweite Ausführungsform 1228 eines
Befehlsformates umfassen beide ein Austritts-Operationscodefeld 118c für 3 Byte
und ein befehlsspezifisches Operationscode-Feld 1225. Das
Austritts-Operationscodefeld 118c für 3 Byte hat bei wenigstens
einer Ausführungsform eine
Länge von
zwei Byte. Das Befehlsformat 1226 verwendet einen von vier
bestimmten Austritts-Operationscodes, die Austritts-Operationscode
mit drei Byte genannt werden. Diese Austritts-Operationscodes für 3 Byte haben
zwei Byte Länge
und sie geben der Decodierhardware an, dass der Befehl ein drittes
Byte in dem Operationscode-Feld 1220 verwendet, um den
Befehl zu definieren. Das Austritts-Operationscodefeld 118c für 3 Byte
kann irgendwo in dem Befehlsoperationscode liegen und braucht nicht
notwendigerweise das Feld höchster
Ordnung oder niedrigster Ordnung innerhalb des Befehls zu sein.
-
Tabelle
1 hiernach führt
Beispiele von BLEND-Befehlscodes auf, die Präfixe und Austritts-Operationscodes für drei Byte
benutzen. Tabelle 1
Befehl | Definition |
BLENDPD
xmm1,
mxx2/m128, imm8 | Gepackte
Fließkommawerte
in doppelter Genauigkeit aus Quelle xmm1 und Ziel xmm2/m128 von
der Maske, die in imm8 festgelegt ist, auswählen. Sobald ausgewählt, Werte
in xmm1 speichern. |
BLENDPS
xmm1,
xmm2/m128, imm8 | Gepackte
Fließkommawerte
in einfacher Genauigkeit aus Quelle xmm1 und Ziel xmm2/m128 von
der Maske, die in imm8 festgelegt ist, auswählen. Sobald ausgewählt, Werte
in xxm1 speichern. |
PBLENDDW
xmm1,
xmm2/m128, imm8 | Wörter aus
xmm1 und xmm2/m128 von der Maske, die in imm8 festgelegt ist, auswählen. Sobald
ausgewählt,
Werte in xmm1 speichern. |
BLENDVPD
xmm1,
xmm2/m128, <XMM0> | Gepackte
Fließkommawerte
in doppelter Genauigkeit aus Quelle xmm1 und Ziel xmm2/m128 von
der Maske, die in XMM0 festgelegt ist, auswählen. Sobald ausgewählt, den
Wert in xmm1 speichern. |
BLENDVPS
xmm1,
xmm2/m128, <XMM0> | Gepackte
Fließkommawerte
in einfacher Genauigkeit aus Quelle xmm1 und Ziel xmm2/m128 von
der Maske, die in dem hohen Bit jeder Fließkommazahl in einfacher Genauigkeit
in XMM0 festgelegt ist, auswählen.
Sobald ausgewählt,
den Wert in xxm1 speichern. |
PBLENDVB
xmm1,
xmm2/m128, <XMM0> | Bytewerte
aus xmm1 und xmm2/m128 von der Maske, die in dem hohen Bit jedes
Bytes in XMM0 festgelegt ist, auswählen. Sobald ausgewählt, den
Wert xmm1 speichern. |
-
Um
das Äquivalent
wenigstens einiger Ausführungsformen
der gepackten BLEND-Befehle, die oben im Zusammenhang mit den
7–
11 diskutiert worden sind, durchzuführen, werden
zusätzliche
Befehle benötigt,
die der Operation Maschinenzykluswartezeit hinzufügen. Zum
Beispiel erläutert
der Pseudocode, der in Tabelle 2 hiernach aufgeführt ist, dieses, wobei ein
BLEND-Befehl verwendet wird. Tabelle 2
BLEND-Befehl |
movapd
pmaxd
_a[eax}
psubd
psrad
pblendv
paddd | xmm0,
xmm7//x
xmm7, XMMWORD PTR
xmm0, xmm7
xmm0, 31
xmm2,
xmm5
xmm5, xmm3 |
-
Der
Pseudocode, der in der Tabelle 2 aufgeführt ist, hilft dabei zu veranschaulichen,
dass die beschriebenen Ausführungsformen
des BLEND-Befehls verwendet werden können, um das Leistungsverhalten
eines Softwarecodes zu verbessern. Als ein Ergebnis kann der BLEND-Befehl in einem universellen
Prozessor verwendet werden, um die Leistungsfähigkeit einer größeren Anzahl
von Algorithmen zu verbessern, als es zuvor geschehen ist.
-
Alternative Ausführungsformen
-
Während die
beschriebenen Ausführungsformen
das MSB verwenden, um den Datenelementen verschiedener Größe für die gepackten
Ausführungsformen
der BLEND-Befehle Signale zu setzen, können alternative Ausführungsformen
unterschiedlich große
Eingaben, unter schiedliche Datenelemente und/oder den Vergleich
unterschiedlicher Bits verwenden (z. B. das LSB der Datenelemente).
Zusätzlich,
obwohl bei manchen beschriebenen Ausführungsformen Quellel und Ziel
jeweils Daten mit 128 Bit enthalten, könnten alternative Ausführungsformen
auf gepackten Daten mit mehr oder weniger Daten arbeiten. Zum Beispiel
arbeitet eine alternative Ausführungsform
auf gepackten Daten, die Daten mit 64 Bit haben.
-
Obwohl
die Erfindung mit Bezug auf mehrere Ausführungsformen beschrieben worden
ist, werden die Fachleute erkennen, dass die Erfindung nicht auf
die beschriebenen Ausführungsformen
beschränkt
ist. Das Verfahren und die Vorrichtung der Erfindung können mit
Modifikation und Abänderung
innerhalb des Gedankens und Umfangs der angefügten Ansprüche in die Praxis umgesetzt
werden. Die Beschreibung soll daher als veranschaulichend anstatt
die Erfindung beschränkend
betrachtet werden.
-
Die
obige Beschreibung ist dazu gedacht, bevorzugte Ausführungsformen
der vorliegenden Erfindung zu veranschaulichen. Aus der obigen Diskussion
sollte auch deutlich sein, dass insbesondere in einem solchen Gebiet
der Technologie, in dem das Wachstum schnell ist und weitere Fortschritte
nicht leicht vorhersehbar sind, die Erfindung in Anordnung und Einzelheiten
von den Fachleuten abgeändert
werden kann, ohne dass man sich von den Grundsätzen der vorliegenden Erfindung
innerhalb des Umfangs der beigefügten
Ansprüche entfernt.
-
ZUSAMMENFASSUNG
-
Ein
Verfahren und eine Vorrichtung zum Einbauen von Befehlen zum Ausführen von
Auswahloperationen bei gepackten oder nicht gepackten Daten in einen
Prozessor. Bei einer Ausführungsform
ist ein Prozessor mit einem Speicher gekoppelt. Im Speicher sind
erste gepackte Daten in einem Quellenoperanden und zweite gepackte
Daten in einem Zieloperanden gespeichert. Der Prozessor wählt die
ersten gepackten Daten aus, wenn das Steuerbit für den Quellenoperanden auf „1" gesetzt ist, und
speichert die Daten in dem Zieloperanden. Ansonsten hält der Prozessor
die Daten in dem Zieloperanden. Der endgültige Wert des Zieloperanden
wird in dem Speicher gespeichert.