DE112007002146T5 - Verfahren und Vorrichtung zum Durchführen von Auswahl-Operationen - Google Patents

Verfahren und Vorrichtung zum Durchführen von Auswahl-Operationen Download PDF

Info

Publication number
DE112007002146T5
DE112007002146T5 DE112007002146T DE112007002146T DE112007002146T5 DE 112007002146 T5 DE112007002146 T5 DE 112007002146T5 DE 112007002146 T DE112007002146 T DE 112007002146T DE 112007002146 T DE112007002146 T DE 112007002146T DE 112007002146 T5 DE112007002146 T5 DE 112007002146T5
Authority
DE
Germany
Prior art keywords
data
bit
operand
register
bits
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.)
Withdrawn
Application number
DE112007002146T
Other languages
English (en)
Inventor
Ronen Sunnyvale Zohar
Mohammad Folsom Abdallah
Boris Sabanin
Mark Beaverton Seconi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112007002146T5 publication Critical patent/DE112007002146T5/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Abstract

Verfahren, das aufweist:
Empfangen eines Befehlscodes, der ein Befehlsformat hat, welches ein erstes Feld und ein zweites Feld aufweist, wobei das erste Feld einen ersten Mehrbitoperanden angibt und das zweite Feld einen zweiten Mehrbitoperanden angibt; und
Abändern des zweiten Operanden als Antwort auf ein Vorzeichenbit, das mit dem ersten Operanden verknüpft ist, wenn das Vorzeichenbit für ein oder mehrere Datenelemente in dem ersten Operanden von Null verschieden ist.

Description

  • 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.
  • 1a1c veranschaulichen beispielhafte Computersysteme gemäß alternativen Ausführungsformen der Erfindung.
  • 2a2b 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.
  • 9a9c 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.
  • 11a11c 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 2a2b 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 711 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.

Claims (36)

  1. Verfahren, das aufweist: Empfangen eines Befehlscodes, der ein Befehlsformat hat, welches ein erstes Feld und ein zweites Feld aufweist, wobei das erste Feld einen ersten Mehrbitoperanden angibt und das zweite Feld einen zweiten Mehrbitoperanden angibt; und Abändern des zweiten Operanden als Antwort auf ein Vorzeichenbit, das mit dem ersten Operanden verknüpft ist, wenn das Vorzeichenbit für ein oder mehrere Datenelemente in dem ersten Operanden von Null verschieden ist.
  2. Verfahren nach Anspruch 1, das weiter das Unveränderthalten des Datenelementes des zweiten Operanden, wenn das Vorzeichenbit Null ist, aufweist.
  3. Verfahren nach Anspruch 2, bei dem der erste Operand weiter eine Vielzahl von Datenelementen aufweist, die wenigstens A1 und A2 als Datenelemente umfassen, jedes mit einer Länge von N Bits; und der zweite Operand weiter eine Vielzahl von Datenelementen aufweist, die wenigstens B1 und B2 umfassen, jedes mit einer Länge von N Bits.
  4. Verfahren nach Anspruch 3, bei dem das Vorzeichenbit ein unmittelbares Bit ist, das in dem unmittelbaren Feld der Datenelemente in dem ersten Operanden gespeichert wird.
  5. Verfahren nach Anspruch 3, bei dem das Vorzeichenbit das höchstwertige Bit in einem dritten Operanden ist, der mit dem ersten Operanden verknüpft ist.
  6. Verfahren nach Anspruch 5, bei dem der dritte Operand ein implizites Register ist.
  7. Verfahren nach Anspruch 1, bei dem das Vorzeichenbit den Strom der Daten zwischen dem ersten und dem zweiten Operanden steuert.
  8. Verfahren nach Anspruch 2, das weiter das Speichern des ersten Datenelementes aus dem ersten Operanden in den zweiten Operanden aufweist, wenn das Vorzeichenbit von Null verschieden ist.
  9. Verfahren nach Anspruch 1, bei dem der erste und der zweite Operand jeder 128 Bit aufweist.
  10. Verfahren nach Anspruch 3, bei dem N 64 ist.
  11. Verfahren nach Anspruch 1, bei dem das eine oder die mehreren Datenelemente als gepacktes Byte behandelt werden.
  12. Verfahren nach Anspruch 1, bei dem das eine oder die mehreren Datenelemente als gepacktes Wort behandelt werden.
  13. Verfahren nach Anspruch 1, bei dem das eine oder die mehreren Datenelemente als Doppelwort behandelt werden.
  14. Verfahren nach Anspruch 1, bei dem das eine oder die mehreren Datenelemente als Vierfachwort behandelt werden.
  15. Vorrichtung zum Ausführen des Verfahrens nach Anspruch 1, die aufweist: eine Ausführeinheit; und ein durch eine Maschine zugreifbares Medium, das Daten enthält, die, wenn auf sie von der Ausführungseinheit zugegriffen wird, bewirken, dass die Ausführungseinheit das Verfahren nach Anspruch 1 durchführt.
  16. Vorrichtung, die aufweist: einen ersten Eingang, um erste Daten zu empfangen; einen zweiten Eingang, um zweite Daten zu empfangen, die dieselbe Anzahl von Bits haben wie die ersten Daten; eine Schaltung, um, ansprechend auf einen ersten Prozessorbefehl, ein erstes Datenelement von einem ersten Operanden basierend auf einem Steuerbit auszuwählen, wobei das Steuerbit das erste Datenelement auswählt, wenn das Steuerbit von Null verschieden ist.
  17. Vorrichtung nach Anspruch 16, bei der das ausgewählte erste Datenelement in einen zweiten Operanden zu kopieren ist.
  18. Vorrichtung nach Anspruch 16, bei der das Steuerbit ein Vorzeichenbit ist.
  19. Vorrichtung nach Anspruch 17, bei der das Steuerbit in unmittelbares Bit ist, das in dem unmittelbaren Feld des ersten Datenelementes in dem ersten Operanden gespeichert ist.
  20. Vorrichtung nach Anspruch 17, bei der das Vorzeichenbit ein höchstwertiges Bit in einem dritten Operanden ist, der mit dem ersten Operanden verknüpft ist.
  21. Vorrichtung nach Anspruch 20, bei der der dritte Operand ein implizites Register ist.
  22. Vorrichtung nach Anspruch 16, bei der die ersten und die zweiten Daten jeweils wenigstens Daten mit 128 Bit enthalten.
  23. Vorrichtung nach Anspruch 16, bei der die ersten Daten weiter wenigstens zwei Datenelemente aufweisen.
  24. Vorrichtung nach Anspruch 23, bei der die Datenelemente jeweils 64 Bit aufweisen.
  25. Vorrichtung nach Anspruch 16, bei der die ersten Daten weiter wenigstens vier Datenelemente aufweist.
  26. Vorrichtung nach Anspruch 25, bei der die Datenelemente jeweils 32 Bit aufweisen.
  27. Vorrichtung nach Anspruch 16, bei der die ersten Daten weiter wenigstens acht Datenelemente aufweist.
  28. Vorrichtung nach Anspruch 27, bei der die Datenelemente jeweils 16 Bit aufweisen.
  29. Vorrichtung nach Anspruch 16, bei der die ersten Daten weiter wenigstens sechzehn Datenelemente aufweist.
  30. Vorrichtung nach Anspruch 29, bei der die Datenelemente jeweils 8 Bit aufweisen.
  31. Rechensystem, das aufweist: einen adressierbaren Speicher, um Daten zu speichern; einen Prozessor, der umfasst: einen architektonisch sichtbaren Speicherbereich, um ein Steuerbit zu speichern; einen Decodierer, um einen Befehl zu decodieren, der ein erstes Feld hat, um einen Quellenoperanden mit N Bit zu spezifizieren, und ein zweites Feld, um einen Zieloperanden mit N Bit zu spezifizieren; und eine Ausführungseinheit, um, ansprechend darauf, dass der Decodierer den Befehl decodiert, ein erstes Datenelement von dem Quellenoperanden auszuwählen, basierend auf einem Steuerbit, wobei das Steuerbit das erste Datenelement auswählt, wenn das Steuerbit von Null verschieden ist.
  32. Computersystem nach Anspruch 31, bei dem N 128 ist.
  33. Computersystem nach Anspruch 31, bei dem der Prozessor das erste Datenelement in dem Zieloperanden speichert.
  34. Computersystem nach Anspruch 31, bei dem das Steuerbit ein unmittelbares Bit in dem ersten Datenelement ist.
  35. Computersystem nach Anspruch 31, bei dem das Steuerbit das höchstwertige Bit in einem dritten Operanden ist.
  36. Computersystem nach Anspruch 35, bei dem der dritte Operand ein implizites Register ist.
DE112007002146T 2006-09-22 2007-09-20 Verfahren und Vorrichtung zum Durchführen von Auswahl-Operationen Withdrawn DE112007002146T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/526,065 US20080077772A1 (en) 2006-09-22 2006-09-22 Method and apparatus for performing select operations
US11/526,065 2006-09-22
PCT/US2007/020416 WO2008039354A1 (en) 2006-09-22 2007-09-20 Method and apparatus for performing select operations

Publications (1)

Publication Number Publication Date
DE112007002146T5 true DE112007002146T5 (de) 2009-07-02

Family

ID=39226408

Family Applications (2)

Application Number Title Priority Date Filing Date
DE112007002146T Withdrawn DE112007002146T5 (de) 2006-09-22 2007-09-20 Verfahren und Vorrichtung zum Durchführen von Auswahl-Operationen
DE112007003786T Withdrawn DE112007003786A5 (de) 2006-09-22 2007-09-20 Verfahren und Vorrichtung zum Durchführen von Auswahl-Operationen

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE112007003786T Withdrawn DE112007003786A5 (de) 2006-09-22 2007-09-20 Verfahren und Vorrichtung zum Durchführen von Auswahl-Operationen

Country Status (7)

Country Link
US (1) US20080077772A1 (de)
JP (2) JP5383021B2 (de)
KR (1) KR20090042333A (de)
CN (4) CN101980148A (de)
BR (1) BRPI0718446A2 (de)
DE (2) DE112007002146T5 (de)
WO (1) WO2008039354A1 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9747105B2 (en) * 2009-12-17 2017-08-29 Intel Corporation Method and apparatus for performing a shift and exclusive or operation in a single instruction
US20120254588A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask
CN104011647B (zh) 2011-12-22 2018-06-15 英特尔公司 浮点舍入处理器、方法、系统和指令
WO2013095657A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Instruction and logic to provide vector blend and permute functionality
US9395988B2 (en) 2013-03-08 2016-07-19 Samsung Electronics Co., Ltd. Micro-ops including packed source and destination fields
US9411600B2 (en) * 2013-12-08 2016-08-09 Intel Corporation Instructions and logic to provide memory access key protection functionality
US20170177350A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instructions and Logic for Set-Multiple-Vector-Elements Operations
US10120680B2 (en) * 2016-12-30 2018-11-06 Intel Corporation Systems, apparatuses, and methods for arithmetic recurrence
CN111078291B (zh) * 2018-10-19 2021-02-09 中科寒武纪科技股份有限公司 运算方法、系统及相关产品

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6275834B1 (en) * 1994-12-01 2001-08-14 Intel Corporation Apparatus for performing packed shift operations
US5996066A (en) * 1996-10-10 1999-11-30 Sun Microsystems, Inc. Partitioned multiply and add/subtract instruction for CPU with integrated graphics functions
US6173393B1 (en) * 1998-03-31 2001-01-09 Intel Corporation System for writing select non-contiguous bytes of data with single instruction having operand identifying byte mask corresponding to respective blocks of packed data
US6484255B1 (en) * 1999-09-20 2002-11-19 Intel Corporation Selective writing of data elements from packed data based upon a mask using predication
JP2001142694A (ja) * 1999-10-01 2001-05-25 Hitachi Ltd データフィールドのエンコード方法、情報フィールドの拡張方法、及び、コンピュータシステム
US7155601B2 (en) * 2001-02-14 2006-12-26 Intel Corporation Multi-element operand sub-portion shuffle instruction execution
US20040054877A1 (en) * 2001-10-29 2004-03-18 Macy William W. Method and apparatus for shuffling data
US7853778B2 (en) * 2001-12-20 2010-12-14 Intel Corporation Load/move and duplicate instructions for a processor
US7441104B2 (en) * 2002-03-30 2008-10-21 Hewlett-Packard Development Company, L.P. Parallel subword instructions with distributed results
GB2409063B (en) * 2003-12-09 2006-07-12 Advanced Risc Mach Ltd Vector by scalar operations
GB2414308B (en) * 2004-05-17 2007-08-15 Advanced Risc Mach Ltd Program instruction compression

Also Published As

Publication number Publication date
DE112007003786A5 (de) 2012-11-15
BRPI0718446A2 (pt) 2013-11-19
JP2012119009A (ja) 2012-06-21
US20080077772A1 (en) 2008-03-27
KR20090042333A (ko) 2009-04-29
CN102915226A (zh) 2013-02-06
CN101154154A (zh) 2008-04-02
CN106155631A (zh) 2016-11-23
JP5383021B2 (ja) 2014-01-08
CN101980148A (zh) 2011-02-23
WO2008039354A1 (en) 2008-04-03
JP2008140372A (ja) 2008-06-19
JP5709775B2 (ja) 2015-04-30

Similar Documents

Publication Publication Date Title
DE112007002146T5 (de) Verfahren und Vorrichtung zum Durchführen von Auswahl-Operationen
DE102007045187A1 (de) Verfahren und Vorrichtung zum Ausführen einer logischen Vergleichsoperation
DE112012007063B4 (de) Zusammenfügen von benachbarten Sammel-/Streuoperationen
DE102018005977A1 (de) Gleitkomma- zu festkomma-umwandlung
DE69233361T2 (de) Ein-Chip-Mikrocomputer
DE19920214C2 (de) Verfahren und Einrichtung zum Konvertieren einer Zahl zwischen einem Gleitkommaformat und einem Ganzzahlformat
DE112011105122T5 (de) Systeme, Vorrichtungen und Verfahren zum Vermischen zweier Quelloperanden in einem einzigen Ziel unter Verwendung einer Schreibmaske
DE19581873C2 (de) Prozessor zum Ausführen von Schiebeoperationen an gepackten Daten
DE102010051476B4 (de) Addierbefehle, um drei Quelloperanden zu addieren
DE102018006757A1 (de) Festkomma-zu-gleitkomma-umwandlung
DE102018124945A1 (de) Einrichtung und verfahren für komplexe multiplikation
DE102018125232A1 (de) Einrichtung und Verfahren für komplexe Multiplikation und Akkumulation
DE112012001542T5 (de) System, Vorrichtung und Verfahren zum Ausrichten von Registern
DE112013005236T5 (de) Verfahren und Vorrichtung für Integralbild-Berechnungsbefehle
DE102018005105A1 (de) Befehle für entfernte atomare operationen
DE112007001989T5 (de) Ausführung von Rundungsoperationen entsprechend einer Anweisung
DE112014006508T5 (de) Prozessoren, Verfahren, Systeme und Anweisungen für Fliesskommaaddition mit drei Quellenoperanden
DE102018125817A1 (de) Systeme und Verfahren zum Laden eines Kachelregisterpaars
DE112011105818T5 (de) Systeme, Vorrichtungen und Verfahren zum Expandieren einer Speicherquelle in ein Zielregister und komprimieren eines Quellenregisters in eine Zielspeicherstelle
DE112013005343T5 (de) Befehle für Codierungsalgorithemen mit gleitendem Fenster
DE102018129341A1 (de) Verfahren und Einrichtung für Mehrfachlade- und Mehrfachspeicher-Vektorbefehle
DE102008061062A1 (de) Befehle und Logik zum Durchführen von Maskenlade- und -speicheroperationen
DE2903349A1 (de) Datenverarbeitungseinrichtung
DE112017003336T5 (de) Vorrichtungen, verfahren und systeme zum elementsortieren von vektoren
DE102015007422A1 (de) Befehlssatz zum Eliminieren fehlausgerichteter Speicherzugriffe während der Verarbeitung eines Arrays mit fehlausgerichteten Datenzeilen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R130 Divisional application to

Ref document number: 112007003786

Country of ref document: DE

Effective date: 20120904

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20140401