DE112004001648T5 - Verfahren, Vorrichtung und Befehle für parallele Datenumwandlung - Google Patents

Verfahren, Vorrichtung und Befehle für parallele Datenumwandlung Download PDF

Info

Publication number
DE112004001648T5
DE112004001648T5 DE112004001648T DE112004001648T DE112004001648T5 DE 112004001648 T5 DE112004001648 T5 DE 112004001648T5 DE 112004001648 T DE112004001648 T DE 112004001648T DE 112004001648 T DE112004001648 T DE 112004001648T DE 112004001648 T5 DE112004001648 T5 DE 112004001648T5
Authority
DE
Germany
Prior art keywords
format
values
register
integer
value
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.)
Ceased
Application number
DE112004001648T
Other languages
English (en)
Inventor
Gopalan City Portland Ramanujam
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 DE112004001648T5 publication Critical patent/DE112004001648T5/de
Ceased 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/82Architectures of general purpose stored program computers data or demand driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • 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/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

Vorrichtung, umfassend:
einen Zielspeicherort, der einem ersten Architekturregister entspricht;
eine funktionale Einheit zur Umwandlung eines ersten gepackten Erstformatwertes in einem ersten Format gewählt aus einer ersten Mehrzahl gepackter Erstformatwerte im ersten Format in eine erste Mehrzahl von Zweitformatwerten in Reaktion auf ein Steuersignal, wobei der erste gepackte Erstformatwert mehrere Unterelemente umfaßt, die jeweils eine erste Anzahl von Bits umfassen, wobei jeder der ersten Mehrzahl von Zweitformatwerten eine Zahl ist, die in einem zweiten Format dargestellt ist und eine zweite Anzahl von Bits umfaßt, die größer ist als die erste Anzahl von Bits, wobei die funktionale Einheit zur Speicherung der gesamten ersten Mehrzahl von Zweitformatwerten im ersten Architekturregister vorgesehen ist.

Description

  • Hintergrund
  • 1. Gebiet
  • Die vorliegende Offenbarung betrifft das Gebiet von Verarbeitungsvorrichtungen und damit in Beziehung stehender Software und Softwaresequenzen, die mathematische Operationen ausführen.
  • 2. Beschreibung des Stands der Technik
  • Durch die Verbesserung der Leistungsfähigkeit von Computersystemen und anderen Verarbeitungssystemen wird im allgemeinen die Gesamtdurchlaufleistung verbessert und eine verbesserte Nutzererfahrung zur Verfügung gestellt. Ein Interessengebiet ist die Verarbeitung von Bilddaten. Da Computer und andere Verarbeitungssysteme größere Mengen an Video- oder Bilddaten handhaben, gewinnen Techniken zur Beschleunigung derartiger Bearbeitungen an Bedeutung.
  • Videodaten können in der Form von Pixeln dargestellt werden. Ein beispielhaftes Format für ein Pixel ist das Rot, Grün, Blau (RGB) Format. Die Zahl der zur Darstellung eines Pixels verwendeten Bits kann abhängig von dem speziellen System variieren. Beispielsweise können bei einer RGB-Darstellung mit vierundzwanzig Bit acht Bits für jede Komponente reserviert werden. Ein anderes gängiges Format ist das RGBA-Format, das eine „Alpha"-Information, d.h. einen Transparenzindikator umfaßt. Eine Alpha-Kanal-Nummer spezifiziert die Transparenz des speziellen Pixels in einem Bereich von 0 (vollständig lichtundurchlässig) bis 255 (vollständig transparent). Andere Formate, wie beispielsweise das Luminanz (YUV)-Format oder jedes andere bekannte oder anderweitig verfügbare Format können ebenfalls verwendet werden.
  • Die Verarbeitung von Pixeln kann in anderen Formaten als in ihrer Pixel-Darstellung (z.B. als ganze Zahl) durchgeführt werden. Beispielsweise kann zur Durchführung einiger mathematischer Operationen auf Pixelwerte zunächst eine Umwandlung in eine Fließkommadarstellung wünschenswert sein. Von verschiedenen Hochsprachen (z.B. C, Java, etc.) können Befehle zur Verfügung gestellt werden, die zur Umwandlung eines Pixelwerts in einem ganzzahligen Format in einen anderen Formattyp verwendet werden können. Diese Hochsprachen sind jedoch aufgrund ihrer Natur in systemspezifische Befehlssequenzen untergliedert und können keine Parallelität oder Wirksamkeit bei der Ausführung der Umwandlung garantieren.
  • Andererseits können in der systemspezifischen Sprache einer Verarbeitungsvorrichtung geschriebene Softwaresequenzen für eine Durchführung der Verarbeitung derartiger Pixel verfaßt werden. Jedoch sind derartige systemspezifische Sprachsequenzen durch den Befehlssatz der Verarbeitungsvorrichtung beschränkt. Falls die Verarbeitungsvorrichtung keine Befehle für eine wirkungsvolle Verarbeitung von Werten, wie beispielsweise Pixelwerten bietet, kann es schwierig sein, eine wirkungsvolle Softwaresequenz aufzubauen. Einige Prozessoren des Stands der Technik umfassen eine Vielzahl von Umwandlungsbefehlen. Beispielsweise umfaßt der Intel Pentium® 4 Prozessor Umwandlungsbefehle, wie beispielsweise die im IA-32 Intel Architecture Software Developer's Manual: Vol. 2: Instruction Set Reference (Dokumentnummer 2454761) in Einzelheiten beschriebenen. Jedoch können unter bestimmten Umständen und für einige Anwendungen, wie beispielsweise die Umwandlung und Verarbeitung von Bilddaten, zusätzliche Umwandlungen nützlich sein.
  • Kurzbeschreibung der Zeichnungen
  • Die vorliegende Erfindung wird beispielhaft und ohne Beschränkung auf die Figuren in den beigefügten Zeichnungen veranschaulicht.
  • 1 veranschaulicht eine Ausführungsform eines für eine Umwandlung tauglichen Prozessors.
  • 2a veranschaulicht weitere Einzelheiten einer Verarbeitungsvorrichtung gemäß einer Ausführungsform.
  • 2b veranschaulicht Einzelheiten einer funktionalen Einheit mit der eine Umwandlung durchgeführt werden kann, gemäß einer Ausführungsform.
  • 2c veranschaulicht ein Befehlsformat gemäß einer Ausführungsform.
  • 2d veranschaulicht eine Verarbeitungsvorrichtung gemäß einer Ausführungsform.
  • 2e veranschaulicht ein Fließkommaformat gemäß einer Ausführungsform.
  • 3a veranschaulicht Umwandlungen, die gemäß einer Ausführungsform eines Befehls zur Umwandlung eines ersten Ganzzahltyps in Fließkomma durchgeführt werden.
  • 3b veranschaulicht Umwandlungen, die gemäß einer weiteren Ausführungsform eines Befehls zur Umwandlung des ersten Ganzzahltyps in Fließkomma durchgeführt werden.
  • 4a veranschaulicht Umwandlungen, die gemäß einer Ausführungsform eines Befehls zur Umwandlung von Fließkomma in den ersten Ganzzahltyp durchgeführt werden.
  • 4b veranschaulicht Umwandlungen, die gemäß einer weiteren Ausführungsform eines Befehls zur Umwandlung von Fließkomma in einen ersten Ganzzahltyp gemäß einer Ausführungsform durchgeführt werden.
  • 5 veranschaulicht Umwandlungen, die gemäß einer Ausführungsform eines Befehls zur Umwandlung eines zweiten Ganzzahltyps in Fließkomma durchgeführt werden.
  • 6 veranschaulicht Umwandlungen, die gemäß einer Ausführungsform eines Befehls zur Umwandlung von Fließkommas in einen zweiten Ganzzahltyp durchgeführt werden.
  • 7a veranschaulicht Umwandlungen, die gemäß einer Ausführungsform eines Befehls einer alternativen Umwandlung in Fließkomma durchgeführt werden.
  • 7b veranschaulicht Umwandlungen, die gemäß einer Ausführungsform eines Befehls einer alternativen Umwandlung aus Fließkomma durchgeführt werden.
  • 8a veranschaulicht Umwandlungen, die gemäß einer Ausführungsform eines Befehls einer weiteren alternativen Umwandlung in Fließkomma durchgeführt werden.
  • 8b veranschaulicht Umwandlungen, die gemäß einer Ausführungsform eines Befehls einer weiteren alternativen Umwandlung aus Fließkomma durchgeführt werden.
  • 9 veranschaulicht eine Ausführungsform eines Systems, bei dem verschiedene der offenbarten Umwandlungsbefehle verwendet werden können.
  • 10 veranschaulicht eine Sequenz, bei der verschiedene offenbarte Umwandlungsbefehle verwendet werden, gemäß einer Ausführungsform.
  • Detaillierte Beschreibung
  • In der folgenden Beschreibung werden Ausführungsformen von Techniken für parallele Datenumwandlungen beschrieben. In der folgenden Beschreibung sind zahlreiche spezielle Einzelheiten, wie beispielsweise Prozessortypen, Datentypen, Datenformate, Registertypen, Registeranordnungen, Systemkonfigurationen und dergleichen dargelegt, um ein umfassenderes Verständnis der vorliegenden Erfindung zu geben. Es ist jedoch zu beachten, daß der Fachmann die Erfindung ohne derartige spezielle Einzelheiten ausführen kann. Zusätzlich wurden einige gut bekannte Strukturen, Schaltungen und dergleichen nicht in Einzelheiten beschrieben, um die folgende Erfindung nicht unnötig zu verschleiern.
  • Mit der vorliegenden Offenbarung werden verschiedene Umwandlungs- und Verarbeitungstechniken in Einzelheiten beschrieben, die in einigen Umgebungen für einige Datentypen vorteilhaft sein können. Beispielsweise kann in einigen Fällen die Bildverarbeitung und insbesondere die Pixelverarbeitung unter Verwendung der offenbarten Techniken beschleunigt werden. In einigen Fällen kann eine Ganzzahl-Fließkomma-Umwandlung verwendet werden. In anderen Fällen können die offenbarten Umwandlungstechniken zur Umwandlung von einem anderen ersten Format (einen anderen als dem Ganzzahl-Format) in ein zweites Format (ein anderes als das Fließkommaformat) oder umgekehrt verwendet werden. Beispielsweise können das redundante numerische Format oder andere wissenschaftliche, mathematische oder andere kodierte Formen für das Ursprungs- oder Zielformat verwendet werden. Zusätzlich wird vorausgesetzt, daß die offenbarten Umwandlungstechniken bei einer großen Vielzahl von Signalverarbeitungsszenarien und/oder in vielen verschiedenen Verarbeitungsumgebungen Anwendung finden.
  • In 1 ist eine Ausführungsform eines Prozessors 100 gezeigt, der Umwandlungen von einem ersten Format (F1) in ein zweites Format (F2) und umgekehrt durchführt. Bei dem Prozessor kann es sich um jeden einer Vielzahl unterschiedlicher Typen von Prozessoren handeln, die Befehle ausführen. Beispielsweise kann es sich bei dem Prozessor um einen allgemein verwendbaren Prozessor, wie beispielsweise einen Prozessor aus der Pentium®-Prozessorfamilie oder der Itanium®-Prozessorfamilie oder aus anderen Prozessorfamilien der Intel Corporation oder um andere Prozessoren anderer Firmen handeln. Somit kann es sich bei dem Prozessor um einen Prozessor mit reduziertem Befehlssatz (RISC), einen Prozessor mit komplexen Befehlssatz (CISC), einen Prozessor mit einem sehr langen Befehlswort (VLIW) oder um jeden beliebigen Hybrid- oder alternativen Prozessortypus handeln. Darüber hinaus können die offenbarten Techniken bei zweckbestimmten Prozessoren, wie beispielsweise Netz- oder Kommunikationsprozessoren, Koprozessoren, eingebetteten Prozessoren, Kompressionsmaschinen, Grafikprozessoren etc. verwendet werden.
  • Bei der Ausführungsform aus 1 werden ein erstes Register 120 und zweites Register 125 als ein Teil einer Registerdatei 122 bereitgestellt. Ein einzelnes physikalisches Register kann bei Ausführungsformen, bei welchen keine Registerumbenennungstechniken verwendet werden, einem Architekturregister (architectural register) entsprechen oder gewissermaßen als ein solches dienen. Bei Ausführungsformen, bei welchen Registerumbenennungstechniken verwendet werden, kann der Wert eines Architekturregisters typischerweise zu unterschiedlichen Zeitpunkten von einem anderen physikalischen Register gehalten werden. Daher können zu unterschiedlichen Zeitpunkten verschiedene physikalische Register aus einer Gruppe umbenannter Register den Architekturregistern entsprechen, wobei die Entsprechung über eine Registerumbenennungsschaltung verfolgt wird.
  • Bei einigen Ausführungsformen können das erste Register 120 und das zweite Register einen Teil eines einzigen Registersatzes bilden. Ein Registersatz oder eine Gruppe von Registern ist eine Anzahl von Registern (die ggf. umbenannt sein können), auf die durch den Befehlssatz in ähnlicher Weise zugegriffen wird. Beispielsweise können ein erstes Register (r0) und ein letztes Register (r15) in einer Registergruppe in derselben Weise adressiert werden, indem lediglich die Registernummer im Operanden-Spezifikator geändert wird. Bei einigen Mikroprozessorprodukten der Intel Corporation (z.B. den IA-32 Mirkoprozessoren) umfassen die Registergruppen Ganzzahlregister (z.B. EAX, EBX, etc.), MMX-Register (mm1, mm2, etc.), XMM-Register (xmm1, xmm2, etc.) und Fließkommaregister.
  • Die Registergruppe kann zur Speicherung gepackter Daten angepaßt werden. Bei gepackten Daten handelt es sich um ein Datenelement, das zumindest zwei Unterelemente aufweist. Eine Registergruppe kann zur Speicherung gepackter Datenelemente angepaßt werden, indem ein Zugriff auf eines oder verschiedene der Unterelemente des Registers zugelassen wird. Zu verschiedenen Zeitpunkten können gepackte Datenelemente mit unterschiedlichen Größen in einem speziellen Register in einer Registergruppe gehalten werden und es können alle der gepackten Elemente mit unterschiedlichen individuellen Größen individuell oder nicht alle individuell zugänglich sein. Bei dem Beispiel aus 1 ist die Registergruppe 122 mit vier gespeicherten gepackten Datenelementen gezeigt, wobei jedes dieser ein Viertel der gesamten Bits des Registers verbraucht.
  • Die Ausführungsform aus 1 umfaßt auch eine funktionale Einheit 130, die in Reaktion auf Steuersignale arbeitet. Wie im folgenden weiter erläutert wird, kann es sich bei den Steuersignalen um zusammengesetzte Signale handeln, die mehrere Bits oder Signalleitungen umfassen, und/oder kann es sich um Mikrooperationen oder andere Ausgänge von einer Schaltung, wie beispielsweise einem Decoder, einem Umwandler, Translator etc. handeln. Wie gezeigt ist, kann die funktionale Einheit 130 ein Steuersignal empfangen, wie mit dem Pfeil 135 angegeben ist. In Reaktion auf das Steuersignal 135 kann die funktionale Einheit auf eines der vier gepackten Datenelemente des Registers 125 zugreifen. Das spezielle Datenelement, auf das zugegriffen werden soll, kann durch einen Teil des Steuersignals spezifiziert sein. Bei dem gezeigten Beispiel wird auf das Element B zugegriffen und wird dieses zur funktionalen Einheit 130, wie mit dem Pfeil 135' gezeigt ist, weitergeleitet. Das Ursprungselement B kann bei einigen Ausführungsformen alternativ von einem Speicherort abgerufen werden.
  • Die funktionale Einheit wandelt den Wert B aus dem ersten Format (F1) in mehrere Werte im zweiten Format (F2) um. Diese Mehrzahl von Werten wird dann im zweiten Register 120 gespeichert, wie mit dem Pfeil 135'' gezeigt ist. Die mehreren Werte können jeweils einem Unterelement von B (z.B. B1, B2, B3 und B4) entsprechen, das in einem anderen Format wiedergegeben ist. Bei einigen Ausführungsformen kann der Wert B aus dem Register 125 Unterelemente aufweisen, die einfach durch die Bitpositionen (die Bitpositionen 1 bis N bilden das Unterelement 1, die Bitposition N+1 bis 2N bilden das Unterelement 2, etc.) abgegrenzt sind. In anderen Ausführungsformen ist eine spezielle Umwandlung der gesamten Anzahl in vier verschiedene Komponenten möglich, die mathematisch aus der Gesamtzahl abgeleitet werden.
  • Bei einer Vielzahl von Anwendungen kann es vorteilhaft sein, eine Gruppe kleinerer Unterelemente in einem ersten Format in dieselbe Anzahl von Elementen in einem erweiterten oder detaillierten Format aufzuspalten. Beispielsweise können Pixeldaten eine Anzahl von Komponenten umfassen, wobei jedoch die Pixel im allgemeinen als eine Einheit gehandhabt oder bewegt werden. Es kann sich bei den Elementen A, B, C und D im Register 125 um einzelne Pixel handeln. Es kann von Vorteil sein, die Unterelemente dieser Pixel zu verarbeiten. Daher kann eine Umwandlungsoperation gemäß den offenbarten Techniken zur Extraktion der Pixelunterelement-(Komponenten) Informationen für eine weitere Bearbeitung in einem anderen Format verwendet werden. Die Durchführung der Umwandlung aller einzelnen Unterelemente eines Pixels in Reaktion auf ein einzelnes Steuersignal kann in einigen Fällen die Pixelverarbeitungssequenzen deutlich beschleunigen.
  • Ähnlich kann es von Vorteil sein, Daten, wie beispielsweise Pixeldaten, nach einer Verarbeitung im zweiten Format zurück in ein kompaktes Format umzuwandeln. Die funktionale Einheit 130 kann eine derartige Umwandlung in Reaktion auf ein zweites Steuersignal durchführen, wie durch den Pfeil 140 gekennzeichnet ist. In Reaktion auf das zweite Steuersignal ruft die funktionale Einheit 130 die vier Komponenten des Wertes B im zweiten Format aus dem Register 120 ab (Pfeil 140'), wandelt diese vier Komponenten in das erste Format um und speichert den kombinierten Wert (B) im Register 125, wie mit dem Pfeil 140'' angegeben ist. In diesem Fall wird eine größere Gruppe von Bits von jedem der mehreren gepackten Datenelemente auf eine kleinere Gruppe (weniger Bits) reduziert und an einer Position eines Registers gespeichert, das mehrere Elemente gepackter Daten halten kann.
  • In 2a ist eine weiter detaillierte Ansicht eines Prozessors 200 gemäß einer Ausführungsform gezeigt. In 2a ist auch ein mit dem Prozessor 200 gekoppelter Speicher 270 gezeigt. Bei dem Speicher 270 kann es sich um jeden einer Vielzahl von Speichern (einschließlich verschiedener Schichten einer Speicherhierarchie) handeln, die dem Fachmann bekannt oder in anderer Weise verfügbar sind. Der Prozessor 200 folgt einer Programmsequenz einschließlich zumindest eines Umwandlungsbefehls. Der Umwandlungsbefehl tritt in einen Front-End-Abschnitt 210 ein und wird durch einen oder mehrere Decoder 220 bearbeitet. Der Decoder kann als sein Ausgangssignal eine Mikrooperation erzeugen, wie beispielsweise eine Mikrooperation mit fester Breite in einem vordefinierten Format, oder kann andere Befehle, Mikrobefehle oder Steuersignale erzeugen, die den ursprünglichen Umwandlungsbefehl wiedergeben. Das Front-End 210 umfaßt auch eine Registerumbenennungslogik 225 und eine Planungslogik 230, die im allgemeinen Ressourcen zuordnen und die Operation entsprechend dem Umwandlungsbefehl zur Ausführung in eine Warteschleife versetzen.
  • Der Prozessor 200 ist einschließlich einer Ausführungslogik 250 mit einer Gruppe von Ausführungseinheiten 255-1 bis 255-N gezeigt. Einige Ausführungsformen können eine Anzahl von Ausführungseinheiten umfassen, die für spezielle Funktionen oder Funktionsgruppen bestimmt sind. Andere Ausführungsformen können lediglich eine einzige Ausführungseinheit oder eine einzige Ausführungseinheit, die eine spezielle Funktion ausführen kann, umfassen. Die durch den Umwandlungsbefehl spezifizierten Operationen werden von der Ausführungslogik durchgeführt, wie mit Bezugnahme auf 2b nachfolgend erläutert wird.
  • Sobald die Ausführung der speziellen Operationen abgeschlossen ist, werden die Befehle von der Back-End Logik 260 außer Dienst gestellt. Bei einer Ausführungsform läßt der Prozessor 200 eine (Out-Of-Order) Ausführung außerhalb der Reihe zu, verlangt jedoch eine Außerdienststellung (retirement) von Befehlen in der Reihenfolge (in order). Die Außerdienststellungslogik (retirement logic) 265 kann eine Vielzahl von Formen annehmen, wie dem Fachmann bekannt ist (z.B. Umordnungspuffer oder dergleichen).
  • In 2b sind weitere Einzelheiten der Wechselwirkung zwischen einer Ausführungseinheit 262 und einer Registerdatei 268 gezeigt. Die Ausführungseinheit 262 umfaßt eine arithmetische Logikeinheit (ALU) 264 sowie eine Sättigungsschaltung (saturation circuitry) 266. Abhängig von der Umwandlung werden von der ALU gemäß der empfangenen Mikrooperation oder dem Steuersignal Umwandlungen von Ganzzahl zu Fließkomma oder umgekehrt ausgeführt. Abhängig von der Operation können die Eingänge auch vorzeichenbehaftet oder vorzeichenlos sein und die Arithmetik kann in geeigneter Weise angepaßt sein.
  • Bei einer Ausführungsform sind mehrere ALU-Abschnitte zur parallelen oder gleichzeitigen Durchführung von Umwandlungen verfügbar. Eine ALU kann für eine Bearbeitung von größeren Operanden oder zur parallelen Bearbeitung von mehreren kleineren Operanden eingerichtet sein. Es wird davon ausgegangen, daß die Umwandlungen gleichzeitig durchgeführt werden sollen, wenn sie in einem einzigen Taktzyklus des Prozessors gesendet wurden. Beispielsweise können die in 1 gezeigten vier Umwandlungen zusammen an die ALU-Logik gesendet werden, um schnell ein Resultat zu erzeugen. Bei anderen Ausführungsformen kann eine kleinere Logikschaltung vorgesehen sein und dementsprechend kann die Logik durch sequentielles Durchführen einer oder mehrerer Wiederholungen von weniger als der gesamten Gruppe von Umwandlungen wiederverwendet werden.
  • Das Umwandlungsergebnis kann beispielsweise in dem Fall einer Umwandlung von einem Gleitkommawert in einen Ganzzahlwert gesättigt sein. Typischerweise kann bei Verwendung derselben Anzahl von Bits mit einem Gleitkommawert ein größerer Wertebereich dargestellt werden als mit einem Ganzzahlformat. Die Fließkommawerte umfassen ein noch größeres Potential, um den Bereich eines Ganzzahlformats zu übersteigen, wenn die Fließkommadarstellung eine größere Anzahl von Bits umfaßt als das Ganzzahlformat. Daher kann es bei einer Umwandlung von Fließkomma in Ganzzahl wünschenswert sein, den Wert zu sättigen, was bedeutet, daß falls der Fließkommawert außerhalb des Bereichs des Ganzzahlformats lag, die entsprechenden Enden des Ganzzahlbereichs verwendet werden. Wenn es sich beispielsweise bei einer Fließkommazahl um eine negative Zahl außerhalb des Bereichs des Ganzzahlformats handelt, wird die kleinste negative ganze Zahl bei dem Sättigungsprozeß verwendet. Ähnlich, wenn es sich bei der Fließkommazahl um eine positive Zahl handelt, die größer ist als die höchste ganzzahlige Zahl, die gemäß dem Ganzzahlformat verfügbar ist, wird die höchste ganze Zahl verwendet. Alternative Techniken, wie beispielsweise Einhüllen (Wrapping) (wobei Bits höherer Ordnung ignoriert werden) oder Abrunden (Beseitigen von Bits niedriger Ordnung) können bei alternativen Ausführungsformen verwendet werden.
  • In 2c ist eine alternative Implementierung eines Prozessors 293 gezeigt. Bei der Ausführungsform aus 2c empfängt ein erstes Modul 295 Befehle in einer ersten Instruction Set Architecture (ISA) wie beispielsweise einer CISC ISA (und oder ruft diese ab). Die Befehle von der ersten ISA werden durch ein Binärtranslationsmittel 297 in eine zweite ISA umgewandelt. Das Binärtranslationsmittel 297 umfaßt typischerweise ein Softwareprogramm, das von einer ISA in eine andere ISA umwandelt. Das binäre Translationssoftwareprogramm kann auf einem Prozessor laufen, um die ersten ISA-Befehle in die zweite ISA umzuwandeln. Alternativ kann Hardware, Firmware oder eine beliebige Mischung aus Hardware, Firmware und Softwarestrukturen verwendet werden, um eine Translationsschicht bereitzustellen. Die Ausführungsressourcen für die zweite ISA 299 führen dann die Befehle in der zweiten ISA aus. Die Ausführungsressourcen 299 können dieselben Ressourcen sein, die das binäre Translationssoftwareprogramm ausführen, falls ein binäres Translationsprogramm verwendet wird.
  • In 2d ist eine Ausführungsform eines Befehlsformats gezeigt, das bei den offenbarten Umwandlungsbefehlen verwendet werden kann. Dieses Format umfaßt einen Operationscode (Opcode), ein MOD R/M Byte und einen Direktoperanden. Das MOD R/M Byte umfaßt ein Mod-Feld (Bits 7:6), ein Reg/Opcode-Feld (Bits 5:3) und ein R/M-Feld (Bits 2:0). Das Mod-Feld wird mit dem R/M-Feld kombiniert, um 32 mögliche Werte, acht Register und vierundzwanzig Adreßmodi zu bilden. Durch das Reg/Opcode-Feld wird entweder eine Register nummer oder werden drei weitere Bits an Opcode-Informationen definiert. Der Zweck des Reg/Opcode-Feldes wird im primären Opcode festgelegt. Durch das R/M-Feld kann ein Register als ein Operand definiert werden oder kann es mit dem Mod-Feld zur Kodierung eines Adressierungsmodus kombiniert werden. Somit liefert das Mod R/M-Feld Ursprungs- und Zielspezifizierer. In dem Fall eines Ursprungs-Speicher Operanden werden zusätzlich zum Mod R/M-Feld auch zusätzliche Adreßinformationen festgelegt. Selbstverständlich können andere Befehlsformate ebenso verwendet werden, die sich speziell für eine bestimmte Implementierung oder Anwendung eignen oder einer anderen ISA entsprechen. Daher können andere Kodierungen als Ursprungs- und Zielspezifizierer verwendet werden.
  • 2e ist ein bei einer Ausführungsform verwendetes binäres Fließkommaformat. Dieses Format kann einem IEEE-Standard entsprechen (z.B. 854-1987 IEEE-Standard für Radixunabhängige Fließkommaarithmetik 1987). Das Vorzeichen ist ein binärer Wert, der angibt, ob die Zahl positiv (0) oder negativ (1) ist. Der Festkommateil weist zwei Teile auf: eine binäre ganze Zahl mit einem Bit, das auch als das J-Bit bezeichnet wird, und einen binären Bruchteil. Bei anderen Ausführungsformen ist das J-Bit nicht explizit dargestellt, sondern ist statt dessen ein indirekter Wert. Der Exponent ist eine binäre ganze Zahl, die die Potenz zur Basis 2 wiedergibt, auf die der Festkommateil angehoben wird.
  • In 3a sind gemäß einer Ausführungsform eines Umwandlungsbefehls durchgeführte Umwandlungen gezeigt. Bei diesem Beispiel stellt jeder Pfeil eine Umwandlung von einer ganzen Zahl in Fließkomma dar. Daher wird bei diesem Beispiel jedes Unterelement B1, G1, R1, A1 des zweiten gepackten Datenelements (B1G1R1A1) in eine Fließkommazahl umgewandelt, wobei jede Fließkommazahl dieselbe Anzahl von Bits wie das gesamte ganzzahlige Element erfordert. Die vier Unterelemente des zweiten gepackten Datenelements im Ursprungsregister 310 werden umgewandelt und im Zielregister 320 als vier gepackte Datenelemente in einer Reihenfolge gespeichert, die durch die vier Unterelementpositionen im Register 310 definiert ist.
  • Die RGB & A-Markierungen für die Datenunterelemente geben an, daß die Daten ganzzahlige Darstellungen der roten, grünen, blauen und Alphakomponente eines Pixels sein können. Bei einer Ausführungsform wird ein für jede der RGBA-Komponenten bestimmtes Byte in eine 32-Bit-Fließkommadarstellung umgewandelt (die als Fließkommadarstellung mit „einfa cher Genauigkeit" bezeichnet werden kann). Somit können vier 8-Bit-Bytes der 32 Bit RGBA-Daten in vier 32-Bit-Fließkommazahlen umgewandelt werden.
  • Im allgemeinen werden entsprechend einem derartigen Befehl M Unterelemente eines einzigen Elements gepackter Daten, die M Elemente aufweisen, umgewandelt, expandiert und als M Elemente eines Zielspeicherorts gepackter Daten gespeichert, wobei jedes Element ein Zweipotenz-Vielfaches der Zahl der Bits der Unterelemente umfaßt. Beispielsweise können die Elemente jeweils N Bits und die Unterelemente N/M Bits aufweisen, wobei M eine Zweierpotenz ist (d.h. M=2k, wobei k ein positiver ganzzahliger Wert ist). Für den Fachmann ist verständlich, daß die Dimensionen dieser Elemente vergrößert werden können. Beispielsweise kann jedes Unterelement 16 oder 32 Bit umfassen und daher kann ein Pixel entsprechend 64 oder 128 Bit umfassen. Die entsprechenden Fließkommazahlen können auf 256- oder 512-Bit-Register oder eine andere Anzahl von Bits erweitert werden, wenn eine andere Anzahl von Bits in der Fließkommadarstellung verwendet wird. Zusätzlich müssen, wie mit Bezug auf die weiteren nachfolgenden Ausführungsformen ersichtlich wird, die Zahlen der gepackten Datenelemente und Unterelemente nicht gleich sein.
  • Bei der in 3a gezeigten Ausführungsform wird das zweite gepackte Datenelement (B1G1R1A1) umgewandelt. Das zweite Element kann durch Bereitstellen eines Direktoperanden zum Umwandlungsbefehl zur Umwandlung ausgewählt werden. Mit dem den Direktoperanden kann kodiert werden, welches der gepackten Datenelemente der gepackten Daten umgewandelt werden sollte. Bei einigen Ausführungsformen können auch andere Techniken, wie beispielsweise die Festlegung eines Orts durch Setzen eines Werts an einem anderen Speicherort (z.B. einem anderen Register) verwendet werden. Alternativ kann ein zugeordneter Umwandlungsbefehl bereitgestellt werden, so daß durch den Operationscode unmittelbar kodiert wird, welches der mehreren gepackten Datenelemente umzuwandeln ist.
  • Beispielsweise ist bei der in 3b gezeigten Ausführungsform eine Umwandlung gezeigt, die der aus 3a darin ähnlich ist, daß RGBA-Daten aus einem Element eines ersten Registers 330 in den vier Elementen eines zweiten Registers 340 umgewandelt und gespeichert werden mit der Ausnahme, daß das erste Element der gepackten Daten umgewandelt wird. Dies kann dadurch erreicht werden, daß ein bestimmter Befehl vorhanden ist, mit dem das erste Element im Ursprungsregister automatisch umgewandelt wird. Weitere drei zugeordnete Befehle können verwendet werden, um die drei verbleibenden Elemente der gepackten Daten umzuwandeln. Jedoch besteht ein weiterer Ansatz darin, Verschiebebefehle zu verwenden, um Daten an die erste Position zu verschieben, und wobei dann der zugehörige Befehl, mit dem das erste Element im Ursprungsregister automatisch umgewandelt wird, erneut dazu verwendet werden kann, jedes nachfolgende Element umzuwandeln. Bei diesem Verschiebe- und Umwandlungsansatz werden vorteilhafterweise weniger Operationscodes verwendet und wird der Gebrauch von unmittelbaren Codes vermieden, während jedoch Code durch Verwenden zusätzlicher Verschiebebefehle erweitert wird.
  • In 4a sind entsprechend einer Ausführungsform eines weiteren Umwandlungsbefehls durchgeführte Umwandlungen gezeigt. Bei diesem Beispiel stellt jeder Pfeil eine Umwandlung von Fließkomma- zur Ganzzahl dar. Jede der vier Komponenten B1G1R1A1 aus dem ersten Register 410 wird vom Fließkommaformat in ein Ganzzahlformat umgewandelt und als ein Unterelement eines Elements in einem zweiten Register 420 gespeichert. In diesem Fall ist das zweite Element im Register 420 das Ziel für die Unterelemente. Welches der Elemente der gepackten Daten das Ziel für die vier Unterelemente wird, kann wiederum durch einen mit dem Befehl gelieferten Direktoperanden ausgewählt werden, oder kann durch den Befehl selbst oder ein anderes indirektes Mittel, wie zuvor erläutert wurde, festgelegt werden. Die Reihenfolge der vier Unterelemente im gewählten Element des Zielregisters 420 wird durch die Positionen der Datenelemente im Ursprungsregister 410 bestimmt. Wie zuvor sind RGBA-Daten lediglich ein Beispiel für einen Datentyp und ein Datenformat, das gemäß derartigen Befehlen bearbeitet werden kann, und es können andere Formen oder andere Typen von Daten verwendet werden.
  • In 4b ist ein Beispiel gezeigt, das dem Beispiel aus 4a darin ähnlich ist, daß gepackte Daten mehrerer Fließkommazahlen von einem ersten Register 430 in mehrere ganzzahlige Unterelemente eines gepackten Datenelements umgewandelt werden und an einer Untergruppe der Orte eines zweiten Registers 440 gespeichert werden. Jedoch ist im Fall von 4b das erste Element im Register 440 mit dem Befehl besetzt. Dies kann der Fall sein, wenn ein anderer Direktoperand verwendet wird oder wenn ein einzelner zugeordneter Umwandlungsbefehl dieses Typs bereitgestellt wird und man auf Verschiebungen setzt, um die Daten zu weiteren Positionen für gepackte Datenelemente zu bewegen.
  • In 5 sind gemäß einer Ausführungsform eines weiteren Umwandlungsbefehls durchgeführte Umwandlungen gezeigt. Die Ausführungsform aus 5 ist der Ausführungsform aus
  • 4a, mit der Ausnahme ähnlich, daß die Datenelemente in ganzzahliger Form eine höhere Präzision aufweisen. Bei diesem Beispiel gibt jeder Pfeil eine Umwandlung von Fließkomma zu Ganzzahl wieder. Daher werden bei der Ausführungsform aus 5 die RGBA-Komponenten im Fließkommaformat aus einem ersten Register 510 gelesen, von Fließkomma zu Ganzzahl umgewandelt und in einem zweiten Register 520 gespeichert. Wiederum kann die Position des Zielregisters in der zuvor erläuterten Weise bestimmt werden.
  • Bei der Ausführungsform aus 5 verbraucht jedes RGBA-Pixel am Bestimmungsort eine Hälfte des Zielregister 520, da jedes einzelne Unterelement die Hälfte der Zahl der Bits wie in Fließkommadarstellung umfaßt. Beispielsweise umfaßt bei einer Ausführungsform jede der ganzzahligen Komponenten 16 Bit und ist jede Fließkommakomponente eine Fließkommazahl mit einfacher Präzision mit 32 Bits. Bei einer anderen Ausführungsform kann jede ganzzahlige Komponente 32 Bit und jeder Fließkommawert 64 Bit umfassen (z.B. bei 256-Bit-Registern). Verschiedene andere Permutationen sind für den Fachmann ersichtlich.
  • In 6 sind gemäß einer Ausführungsform eines weiteren Umwandlungsbefehls durchgeführte Umwandlungen gezeigt. Bei diesem Beispiel gibt jeder Pfeil eine Umwandlung von Ganzzahl zu Fließkomma wieder. Jede der vier Komponenten B1G1R1A1 von einem Element eines ersten Registers 610 wird vom Fließkommaformat in ein Ganzzahlformat umgewandelt und als ein Unterelement eines Elements in einem zweiten Register 620 gespeichert. In diesem Fall ist das zweite Element im Register 620 das Ziel für die Unterelemente. Welches der Elemente der gepackten Daten das Ziel für die vier Unterelemente wird, kann wiederum mittels einer mit dem Befehl gelieferten Direktvariablen ausgewählt werden oder kann durch den Befehl selbst oder ein anderes indirektes Mittel, wie zuvor erläutert wurde, festgelegt werden. Die Reihenfolge der vier Unterelemente im ausgewählten Element des Zielregisters 620 wird durch die Positionen der Datenelemente im Quellregister 610 bestimmt.
  • Das Beispiel aus 6 ist ähnlich dem aus 3a mit der Ausnahme, daß die Datenelemente in ganzzahliger Form eine höhere Präzision aufweisen. Daher sind lediglich zwei Pixel in einem einzigen Register gespeichert und eines der beiden Pixel kann zur Belegung des gesamten Zielregisters erweitert werden. Bei einer Ausführungsform umfaßt jede der Ganzzahlkomponenten 16 Bit und ist jede Fließkommakomponente eine Fließkommazahl mit einfacher Präzision mit 32 Bits. Bei einer anderen Ausführungsform kann jede Ganzzahlkomponente 32 Bit und jeder Fließkommawert 64 Bit umfassen (z.B. bei 256-Bit-Registern). Verschiedene andere Permutationen sind für den Fachmann ersichtlich.
  • In der folgenden Tabelle ist eine beispielhafte Gruppe von Umwandlungsbefehlen zusammengefaßt.
  • Beispielhafte Befehle
    Figure 00140001
  • Beispiel einer Umwandlung von Byte in gepacktes Fließkomma mit einfacher Genauigkeit. CVT[U]B2PS xmm1, xmm2/m128, imm8
    Figure 00150001
  • Beispiel einer Umwandlung von Wort in gepacktes Fließkomma mit einfacher Genauigkeit CVT[U]W2PS xmm1, xmm2/m128, imm8
    Figure 00150002
  • CVTPS2[U]PB xmm1/m128, xmm2, imm8
    Figure 00160001
  • CVTPS2[U]PW xmm1/m128, xmm2, imm8
    Figure 00160002
  • 7a veranschaulicht einen weiteren alternativen Umwandlungsbefehl, mit dem eine weitere Funktionalität zum Einzelbefehl hinzugefügt wird. Eine derartige Ausführungsform kann für eine weitere Reduzierung der Code-Größe nützlich sein, wenn mehrere Instanzierungen (instantiations) der Umwandlungsbefehle für einzelne Elemente gemeinsam verwendet werden, um in und aus einem vollen Register von SIMD-Werten umzuwandeln. Bei der Ausführungsform aus 7a werden vier in einem ersten Register 710 gespeicherte Werte (z.B. Pixelwerte) umgewandelt und in vier getrennten Registern 720, 725, 730 und 735 gespeichert. Während diese Umwandlungen bei diesem Beispiel in Reaktion auf einen einzigen Befehl (z.B. einen Makrobefehl) ausgeführt werden, kann in einigen Fällen eine unzulängliche parallele Hardware (insufficient parallel hardware) zur parallelen Durchführung der Umwandlungen vorhanden sein. Daher können in Reaktion auf einen derartigen Makrobefehl mehrere Mikrooperationen erzeugt und die Umwandlungshardware kann seriell zur Durchführung der 16 Umwandlungen verwendet werden.
  • Bei der Ausführungsform aus 7a stellt jeder Pfeil eine Umwandlung von Ganzzahl in Fließkomma dar. Somit wird ein erstes Datenelement (B0, G0, R0, A0) im Ganzzahlformat im Ursprungsregister 710 in vier Fließkommawerte im Zielregister 735 umgewandelt. Das Ordnen der Elemente folgt wiederum den Ursprungsunterelementen. Darüber hinaus können Elemente und Unterelemente mit einer Vielzahl von Größen verwendet werden, wie zuvor erläutert wurde. Ähnlich wird ein zweites Datenelement (B1G1R1A1) im Ganzzahlformat im Ursprungsregister 710 in vier Fließkommawert im Zielregister 730, ein drittes Datenelement (B2G2R2A2) im Ganzzahlformat im Ursprungsregister 710 in vier Fließkommawerte im Zielregister 725 und ein viertes Datenelement (B3G3R3A3) im Ganzzahlformat im Ursprungsregister 710 in vier Fließkommawerte im Zielregister 720 umgewandelt.
  • In 7b ist ein zur 7a umgekehrter Fall gezeigt, bei dem vier Register, die Fließkommawerte enthalten, in ein Ganzzahlwerte enthaltendes einzelnes Register verdichtet werden. Somit stellt bei der Ausführungsform aus 7b jeder Pfeil eine Umwandlung von Fließkomma zu Ganzzahl dar. Vier getrennte Fließkommawerte B0, G0, R0, A0 aus einem ersten Ursprungsregister 750 werden in ein Ganzzahlformat umgewandelt und an der ersten Elementposition eines Zielregisters 770 gespeichert. Auf ähnliche Weise werden die vier getrennten Fließkommawerte B1, G1, R1, A1 aus einem zweiten Ursprungsregister 755 in ein Ganzzahlformat umgewandelt und an der zweiten Elementposition des Zielregisters 770 gespeichert, die vier getrennten Fließkommawerte B2, G2, R2, A2 aus einem dritten Ursprungsregister 760 in ein Ganzzahlformat umgewandelt und an der dritten Elementposition des Zielregisters 770 gespeichert und die vier getrennten Fließkommawerte B3, G3, R3, A3 aus einem vierten Ursprungsregister 765 in ein Ganzzahlformat umgewandelt und an der vierten Elementposition des Zielregisters 770 gespeichert.
  • In 8a sind Operationen für einen anderen Umwandlungsbefehl gezeigt, der dem aus 7a mit der Ausnahme ähnlich ist, daß die ganzzahligen Elemente im Verhältnis zu den Fließkommaelementen größer sind als in 7a. Zur Verdeutlichung gibt jeder Pfeil in 8a eine Umwandlung von Ganzzahl zu Fließkomma wieder. Ein erstes Element (B0, G0, R0, A0) der in einem Ursprungsregister 810 im Ganzzahlformat gespeicherten gepackten Daten wird in Fließkommawerte umgewandelt und in einem ersten Zielregister 830 gespeichert. Ein zweites Element (B1, G1, R1, A1) der im Quellregister 810 im Ganzzahlformat gespeicherten gepackten Daten wird in Fließkommawerte umgewandelt und in einem zweiten Zielregister 820 gespeichert. Beide Umwandlungen werden bei dieser Ausführungsform in Reaktion auf einen einzigen Befehl durchgeführt und die Anordnung der Elemente in den jeweiligen Zielregistern folgt der Ordnung der Ursprungsunterelemente.
  • In 8b sind Operationen für einen anderen Umwandlungsbefehl gezeigt, der dem aus 7b mit der Ausnahme ähnlich ist, daß die ganzzahligen Elemente im Verhältnis zu den Fließkommaelementen größer sind als in 7b. Jeder Pfeil in 8b stellt eine Umwandlung von Fließkomma zu Ganzzahl dar. Vier getrennte Fließkommawerte B0, G0, R0, A0 aus einem ersten Ursprungsregister 860 werden in ein ganzzahliges Format umgewandelt und an der ersten Elementposition eines Zielregisters 870 gespeichert. Auf ähnliche Weise werden die vier getrennten Fließkommawerte B1, G1, R1, A1 aus einen zweiten Ursprungsregister 850 in ein Ganzzahlformat umgewandelt und an der zweiten Elementposition des Zielregisters 870 gespeichert. Bei dieser Ausführungsform werden beide Umwandlungen in Reaktion auf einen einzigen Befehl durchgeführt und die Ordnung der Unterelemente im Zielregister folgt der Ordnung der Ursprungselemente.
  • Bei mehreren der oben gezeigten Beispiele weisen die Ursprungs- und Zielspeicherorte dieselbe Größe auf. Tatsächlich kann es sich bei dem Ursprung und dem Ziel um Register in einer einzigen Gruppe Architekturregistern handeln (z.B. um die Xmm-Register in einem Prozessor, wie den Pentium®-Prozessoren von Intel). Jedoch müssen bei anderen Ausführungsformen die Ursprungs- und Zielregister weder dieselbe Größe aufweisen noch in derselben Registergruppe liegen. In einigen Fällen kann es vorteilhaft sein, eine Fließkommaregistergruppe zu verwenden, die mehr Bits umfaßt als die Ganzzahlregistergruppe.
  • In 9 ist eine Ausführungsform eines Systems gezeigt, bei dem die offenbarten Umwandlungstechniken verwendet werden. Bei dieser Ausführungsform wird ein Prozessor 900 mit einem Speicherkontroller 990 gekoppelt. Der Speicherkontroller kann eine integral mit dem Prozessor 900 ausgebildete Komponente oder bei anderen Ausführungsformen eine davon getrennte Komponente sein. Der Speicherkontroller 990 ist mittels eines Busses 992 mit einem Hauptspeicher 994 verbunden. Bei dem Bus kann es sich um jeden beliebigen Kommunikationsbus einschließlich und nicht beschränkt auf einen oder mehrere parallele Signalbusse, serielle Busse, Mehrpunkt-(Multidrop)-Busse, Punkt-zu-Punkt-Busse, etc. handeln. Der Hauptspeicher umfaßt eine erste Umwandlungssequenz 995, eine Pixelbearbeitungssequenz 996, eine zweite Umwandlungssequenz 997 und eine Anzeigesequenz 998.
  • Der Prozessor 900 umfaßt eine Front-End-Logik 910, eine Ausführungslogik 920, die mehrere ALU-Schaltungen 925-1 bis 925-N umfaßt, und eine Back-end-Logik 930. Der Prozessor 900 führt aus dem Speicher abgerufene Befehlssequenzen, wie beispielsweise die erste Umwandlungssequenz 995, die Pixelbearbeitungssequenz 996, die zweite Umwandlungssequenz 997 und die Anzeigesequenz 998 aus. Das System umfaßt auch eine Kommunikations-/Netzschnittstelle 950. Die Schnittstelle 950 ist funktionstechnisch so mit dem Prozessor 900 gekoppelt, so daß der Prozessor Befehle zur Schnittstelle 950 senden und Daten über ein Netz (wobei es sich um ein verdrahtetes oder drahtloses Netz handeln kann) oder ein Kommunikationsmedium senden und empfangen kann. Die Schnittstelle kann eine oder mehrere der Gruppen von Softwaresequenzen in einem elektronischen Format empfangen. In jeder Darstellung der Softwaresequenz können die Befehle in jeder beliebigen Form eines maschinenlesbaren Mediums gespeichert oder übertragen werden. Bei dem maschinenlesbaren Medium kann es sich um eine modulierte oder auf andere Weise erzeugte optische oder elektrische Welle zur Übertragung derartiger Informationen, um einen Speicher oder um einen magnetischen oder optischen Speicher, wie beispielsweise eine Platte handeln. Auf jedem dieser Medien können die Befehlsinformationen gespeichert bzw. getragen werden.
  • Das System umfaßt auch eine Graphikschnittstelle 955 mit einem Bildpuffer 957 und eine Anzeigeeinheit 960. Die Graphikschnittstelle 955 ist funktionstechnisch mit dem Prozessor gekoppelt (wobei in diese Kopplung eine oder mehrere Schnittstellen- oder Brückenkomponenten einbezogen sein können), so daß der Prozessor Befehle und Daten zur Graphikschnitt stelle 955 senden kann. Bei einigen Ausführungsformen können in den Bildpuffer Bilddaten geschrieben werden, um eine Anzeige der Daten auf der Anzeige 960 zu bewirken.
  • Weitere Funktionen des Systems aus 9 werden unter Bezugnahme auf das Flußdiagramm aus 10 ersichtlich. Wie im Block 1010 angegeben ist, wird eine Gruppe von Pixeln (z.B. N Pixel) vom SIMD-Ganzzahlformat ins SIMD-Fließkommaformat umgewandelt. Diese Umwandlung kann bei der Ausführungsform aus 9 mittels des Prozessors 900, der die erste Umwandlungssequenz 995 ausführt, erreicht werden. Die erste Umwandlungssequenz kann N Umwandlungsbefehle, wie die aus den 3a, 3b und 6, oder kann einen einzelnen Umwandlungsbefehl, wie beispielsweise den in 7a oder 8a gezeigten, umfassen. Der (die) Umwandlungsbefehl(e) speichert die resultierenden umgewandelten Daten in Architekturregistern, wie im Block 1020 angegeben ist. Bei Ausführungsformen, die den in den 3a und 3b gezeigten Ausführungsformen ähnlich sind, können beispielsweise vier Umwandlungsbefehle verwendet werden, um vier gepackte Datenelemente in einem einzigen Register umzuwandeln.
  • In einigen Fällen können die umgewandelten Werte nach einer Umwandlung an Ort und Stelle direkt verwendet werden. Optional können die nunmehr umgewandelten Pixelwerte im Fließkommaformat verschoben bzw. bewegt werden, wie im Block 1030 angegeben ist. Die Pixel können zu anderen Orten zur Bearbeitung oder zu einer temporären Speicherung vor einer Bearbeitung bewegt werden. Einige der Zielwerte können während des Umwandlungsprozesses vor der Ausführung aller N-Umwandlungen bewegt werden, um die Zahl der beim Umwandlungsprozeß der N Pixel verwendeten Register zu begrenzen.
  • Wie im Block 1040 angegeben ist, können die Fließkommaoperationen auf die Pixelwerte angewandt werden. Dem Fachmann ist eine Vielzahl unterschiedlicher Pixelbearbeitungstechniken bekannt. Wie für den Fachmann ersichtlich ist, hängt eine geeignete Routine von der beabsichtigten Wirkung ab. Jedoch kann der Umwandlungsprozeß zu und von Fließkomma wirkungsvoller unter Verwendung der offenbarten Techniken durchgeführt werden.
  • Sobald die beabsichtigten Bearbeitungen ausgeführt wurden, können die resultierenden Fließkommawerte zurück umgewandelt werden. Wie im Block 1050 angegeben ist, werden die N Pixel von ihrem SIMD-Fließkommaformat in Reaktion auf einen oder mehrere Umwandlungsbefehle zurück ins SIMD-Ganzzahlformat umgewandelt. Bei der zweiten Umwand lungsroutine 497 kann diese Rückumwandlung ähnlich wie bei der ersten Umwandlungsroutine mit einer Folge von N Befehlen erreicht werden (z.B. Ausführungsformen aus 4a, 4b, 5) oder mit einem einzigen Befehl (z.B. Ausführungsformen aus 7b, 8b).
  • Schließlich können die Pixel angezeigt werden, wie im Block 1060 angegeben ist. Die Anzeigesequenz 998 kann Befehle zum Bewegen der Pixeldaten zum Bildpuffer 957 oder andere für ein spezielles System geeignete Befehle zur Anzeige eines Pixels umfassen.
  • Eine beispielhafte, optimierte Befehlssequenz, bei der die offenbarten Umwandlungsbefehle verwendet werden, ist unten in Tabelle 2 gezeigt. Wie aus diesem Beispiel leicht ersichtlich ist, können die neuen Umwandlungsbefehle bei einigen Sequenzen zu einem wesentlich kürzeren und in einigen Fällen wesentlich schneller ausgeführten Code führen.
  • Tabelle 2: Beispielhafte Befehlssequenzverbesserung
    Figure 00210001
  • Der Aufbau eines Prozessors kann mehrere Stufen vom Entwurf über die Simulation bis zur Herstellung umfassen. Die einen Entwurf wiedergebenden Daten können den Entwurf auf eine Mehrzahl von Arten wiedergeben. Zunächst kann die Hardware, wie es für Simulationen zweckmäßig ist, unter Verwendung einer Sprache zur Beschreibung von Hardware oder einer anderen funktionalen Beschreibungssprache dargestellt werden. Zusätzlich kann bei einigen Stufen des Entwurfsprozesses ein Modell auf Schaltungsebene mit logischen Steuerelementen und/oder Transistorsteuerelementen erstellt werden. Darüber hinaus wird bei den meisten Entwürfen bei einer bestimmten Stufe eine Datenebene erreicht, die die physikalische Anordnung verschiedener Vorrichtungen im Hardware-Modell wiedergibt. In den Fällen, in welchen herkömmliche Halbleiterherstellungstechniken verwendet werden, kann es sich bei den das Hardwaremodell wiedergebenden Daten um Daten handeln, die das Vorhandensein oder Nicht-Vorhandensein verschiedener Merkmale auf verschiedenen Maskenebenen für Masken, die zur Herstellung der integrierten Schaltung verwendet werden, spezifizieren. Bei jeder Darstellung des Entwurfs können die Daten in jeder beliebigen Form eines maschinenlesbaren Mediums gespeichert werden. Bei dem maschinenlesbaren Medium kann es sich um eine modulierte oder auf andere Weise erzeugte optische oder elektrische Welle zur Übertragung derartiger Informationen, einen Speicher oder einen magnetischen oder optischen Speicher, wie beispielsweise eine Platte, handeln. Auf jedem dieser Medien kann der Entwurf oder die Softwareinformation „getragen" werden bzw. „abgebildet" sein. Wenn eine elektrische Trägerwelle, die den Code oder den Entwurf abbildet oder trägt, in dem Umfang übertragen wird, daß eine Zwischenspeicherung oder Rückübertragung des elektrischen Signals durchgeführt wird, wird eine neue Kopie hergestellt. Somit stellt ein Kommunikations- oder Netzanbieter Kopien eines Artikels (einer Trägerwelle) her, die Techniken der vorliegenden Erfindung verkörpern.
  • Es werden somit Techniken für parallele Datenumwandlungen offenbart. Während bestimmte beispielhafte Ausführungsformen beschrieben und in den begleitenden Zeichnungen gezeigt wurden, ist zu beachten, daß derartige Ausführungsformen lediglich beispielhaft und für die Erfindung in ihrer Breite nicht einschränkend sind und daß diese Erfindung nicht auf spezielle gezeigte und beschriebene Konstruktionen und Anordnungen beschränkt ist, da sich beim Studium dieser Offenbarung für den Fachmann zahlreiche andere Abwandlungen ergeben. Auf einem technischen Gebiet wie diesem, auf dem ein schnelles Wachstum stattfindet und weitere Fortschritte nicht einfach vorhersehbar sind, können die offenbarten Ausführungsformen bezüglich ihrer Anordnung und Einzelheiten in einfacher Weise mit Hilfe dies möglich machender technischer Fortschritte einfach modifiziert werden, ohne von den Prinzipien der Offenbarung oder dem Umfang der begleitenden Ansprüche abzuweichen.
  • Zusammenfassung
  • Verfahren, Vorrichtung und Programmmittel zur Durchführung einer Umwandlung. Bei einer Ausführungsform umfaßt eine offenbarte Vorrichtung einen Zielspeicherort, der einem ersten Architekturregister entspricht. Eine funktionale Einheit wird in Reaktion auf ein Steuersignal tätig, um einen ersten gepackten Erstformatwert, der aus einer Gruppe gepackter Erstformatwerte gewählt ist, in eine Mehrzahl von Zweitformatwerten umzuwandeln. Jeder der Erstformatwerte umfaßt mehrere Unterelemente mit einer ersten Anzahl von Bits. Die Zweitformatwerte umfassen eine größere Anzahl von Bits. Die funktionale Einheit speichert die Mehrzahl von Zweitformatwerten in einem Architekturregister.

Claims (33)

  1. Vorrichtung, umfassend: einen Zielspeicherort, der einem ersten Architekturregister entspricht; eine funktionale Einheit zur Umwandlung eines ersten gepackten Erstformatwertes in einem ersten Format gewählt aus einer ersten Mehrzahl gepackter Erstformatwerte im ersten Format in eine erste Mehrzahl von Zweitformatwerten in Reaktion auf ein Steuersignal, wobei der erste gepackte Erstformatwert mehrere Unterelemente umfaßt, die jeweils eine erste Anzahl von Bits umfassen, wobei jeder der ersten Mehrzahl von Zweitformatwerten eine Zahl ist, die in einem zweiten Format dargestellt ist und eine zweite Anzahl von Bits umfaßt, die größer ist als die erste Anzahl von Bits, wobei die funktionale Einheit zur Speicherung der gesamten ersten Mehrzahl von Zweitformatwerten im ersten Architekturregister vorgesehen ist.
  2. Vorrichtung nach Anspruch 1, wobei die zweite Anzahl von Bits ein Zweierpotenz-Vielfaches der ersten Anzahl von Bits ist.
  3. Vorrichtung nach Anspruch 2, wobei ein Ursprungsspezifizierer zur Spezifizierung entweder eines zweiten Architekturregisters oder eines Speicherorts als ein Ursprungsspeicherort und des weiteren ein Zielspezifizierer zur Spezifizierung des ersten Architekturregisters als der Zielspeicherort vorgesehen ist.
  4. Vorrichtung nach Anspruch 3, wobei das erste Format ein Ganzzahlformat und das zweite Format ein Fließkommaformat ist.
  5. Vorrichtung nach Anspruch 4, die des weiteren umfaßt: einen Dekoder zum Empfang eines einzelnen Umwandlungsbefehls, wobei der Dekoder zur Erzeugung des Steuersignals in Reaktion auf den einzelnen Umwandlungsbefehl eingerichtet ist.
  6. Vorrichtung nach Anspruch 1, wobei die funktionale Einheit einen der ersten Mehrzahl gepackter Erstformatwerte zum Umwandeln basierend auf einem Direktoperandenwert wählt.
  7. Vorrichtung nach Anspruch 5, wobei ein Operationscodeabschnitt des einzelnen Umwandlungsbefehls spezifiziert, welcher der ersten Mehrzahl gepackter Erstformatwerte umzuwandeln ist.
  8. Vorrichtung nach Anspruch 5, wobei das Steuersignal eine Mikrooperation umfaßt, die vom Dekoder in Reaktion auf den einzelnen Umwandlungsbefehl erzeugt wird.
  9. Vorrichtung nach Anspruch 5, die eine Registerumbenennungsschaltung umfaßt, wobei der Ursprungsspeicherort und der Zielspeicherort physikalische Register sind, die jeweils eine Entsprechung zu einem Architekturregister aufweisen, wobei die Entsprechung von der Registerumbenennungsschaltung verfolgt wird.
  10. Vorrichtung nach Anspruch 9, wobei der einzelne Umwandlungsbefehl einen Operationscode und einen Operandenspezifizierer umfaßt, wobei der Operandenspezifizierer in einem MOD R/M-Format ist.
  11. Vorrichtung nach Anspruch 9, wobei die erste Mehrzahl gepackter Erstformatwerte N-Bit-Ganzzahlwerte sind und der erste gepackte Erstformatwert ein N-Bit-Ganzzahlwert ist, die Mehrzahl von Unterelementen M Unterelemente umfaßt und jedes der M Unterelemente N/M Bit umfaßt und wobei des weiteren jeder der ersten Mehrzahl von Zweitformatwerten ein N-Bit-Fließkommaergebnis ist.
  12. Vorrichtung nach Anspruch 1, die des weiteren einen zweiten Zielspeicherort umfaßt, wobei die funktionale Einheit des weiteren auf ein zweites Steuersignal zur Umwandlung einer zweiten Mehrzahl von Zweitformatwerten im zweiten Format mit der zweiten Anzahl von Bits in einen zweiten Erstformatwert und zur Speicherung des zweiten Erstformatwerts an einer von einer Mehrzahl gepackter Erstformatwertpositionen am zweiten Zielspeicherort reagiert, wobei der zweite Erstformatwert gesättigte Darstellungen der zweiten Mehrzahl von Zweitformatwerten im ersten Format umfaßt.
  13. Vorrichtung nach Anspruch 3, wobei das erste Architekturregister und das zweite Architekturregister einen Teil einer ersten Gruppe von Architekturregistern bilden, wobei die erste Gruppe von Architekturregistern eine erste Größe umfaßt.
  14. Vorrichtung nach Anspruch 12, wobei das erste Architekturregister und der zweite Zielspeicherort Register in einer Gruppe aus Xmm Registern sind.
  15. Vorrichtung, umfassend: einen Dekoder zum Empfang eines ersten Befehls und zur Dekodierung des ersten Befehls in ein Steuersignal; eine mit dem Dekoder gekoppelte funktionale Einheit zum Empfang des Steuersignals, wobei die funktionale Einheit für eine Umwandlung in Reaktion darauf einer ersten Mehrzahl von Fließkommawerten in einem ersten Fließkommaformat mit einer ersten Anzahl von Bits in einen ersten Ganzzahlwert, der mehrere Unterelemente umfaßt, die jeweils eine zweite Anzahl von Bits umfassen, die geringer ist als die erste Anzahl von Bits, und zum Speichern des ersten Ganzzahlwerts an einer ersten Position in einem ersten Register vorgesehen ist, wobei das erste Register dazu eingerichtet ist, mehrere Ganzzahlwerte an einer Mehrzahl von individuell zugänglichen Positionen zu speichern.
  16. Vorrichtung nach Anspruch 15, wobei der erste Befehl einen Operationscode, einen ersten Operandenspezifizierer, einen Direktoperanden und einen zweiten Operandenspezifizierer umfaßt, wobei der erste Operandenspezifizierer einen Ursprung spezifiziert, von der die funktionale Einheit die erste Mehrzahl von Fließkommazahlen abrufen soll, der zweite Operandenspezifizierer das erste Register aus einer Mehrzahl von Registern bestimmt und der Direktoperand einen einer Mehrzahl von Orten im ersten Register spezifiziert, an dem der erste Ganzzahlwert gespeichert werden soll.
  17. Vorrichtung nach Anspruch 16, wobei der Dekoder zur Dekodierung eines zweiten Befehls und zur Erzeugung in Reaktion darauf eines zweiten Signals vorgesehen ist und wobei die funktionale Einheit in Reaktion auf das zweite Signal zur Umwandlung eines zweiten Ganzzahlwerts in eine zweite Mehrzahl von Fließkommawerten im ersten Fließkommaformat und zur Speicherung der zweiten Mehrzahl von Fließkommawerten in einem zweiten Register vorgesehen ist.
  18. Vorrichtung nach Anspruch 17, wobei das erste Register und das zweite Register einen Teil einer ersten Gruppe von Architekturregistern bilden und wobei des weiteren die Mehrzahl von Unterelementen gesättigte Darstellungen der ersten Mehrzahl von Fließkommawerten umfassen.
  19. Vorrichtung nach Anspruch 18, wobei ein zweiter Direktoperand zur Spezifizierung eines Ortes einer zweiten Mehrzahl von Orten in einem Register vorgesehen ist, von dem der zweite Ganzzahlwert abgerufen werden soll.
  20. Verfahren, umfassend: Abrufen eines ersten Befehls, der einen Ort eines Erstformatwerts in einem ersten Format unter einer Mehrzahl von Erstformatwerten eines gepackten Datenelements spezifiziert, wobei der Erstformatwert mehrere Unterelemente umfaßt, wobei jedes Unterelement eine erste Anzahl von Bits umfaßt; Umwandeln des Erstformatwerts in eine erste Mehrzahl von Zweitformatwerten in einem zweiten Format, wobei jeder der ersten Mehrzahl von Zweitformatwerten ein zweites Format aufweist und einem der Mehrzahl von Unterelementen entspricht, wobei das Zweiformat eine Mehrzahl der ersten Anzahl von Bits umfaßt; Speichern der ersten Mehrzahl von Zweitformatwerten in einem ersten Register.
  21. Verfahren nach Anspruch 20, wobei der Ort ein zweites Register ist, wobei das erste Register und das zweite Register Register in einer einzelnen Gruppe von Architekturregistern sind.
  22. Verfahren nach Anspruch 21, das des weiteren umfaßt: Abrufen eines zweiten Befehls, der einen zweiten Ort einer zweiten Mehrzahl von Zweiformatwerten im zweiten Format spezifiziert; Umwandeln der zweiten Mehrzahl von Zweiformatwerten in einen zweiten Erstformatwert; Speichern des zweiten Erstformatwerts in einem dritten Register, wobei das dritte Register ebenfalls in der einzelnen Gruppe von Architekturregistern ist.
  23. Verfahren nach Anspruch 22, das des weiteren umfaßt: Spezifizieren, welcher der Werte aus der Mehrzahl der Erstformatwerte mittels eines Direktoperanden umzuwandeln ist; Spezifizieren einer aus einer Mehrzahl von Zielpositionen für gepackte Daten für den zweiten Erstformatwert mit einem zweiten Direktoperanden.
  24. Verfahren nach Anspruch 22, wobei das Erstformat ein Ganzzahlformat ist und wobei das Zweitformat ein Fließkommaformat ist.
  25. Verfahren nach Anspruch 24, welches des weiteren umfaßt: Sättigen jedes Wertes aus der zweiten Mehrzahl von Zweitformatwerten, um eine Mehrzahl geklemmter (clamped) Unterelemente des zweiten Erstformatwerts zu erzeugen.
  26. System, umfassend: einen Speicher zum Speichern eines ersten Befehls und einer Bildverarbeitungssequenz, die auf Bilddaten in einem zweiten Format einwirkt; einen mit dem Speicher gekoppelten Prozessor zur Verarbeitung eines ersten Operanden, der mehrere gepackte ganzzahlige Datenwerte umfaßt, gemäß dem ersten Befehl durch Umwandlung eines aus einer Mehrzahl gepackter ganzzahliger Datenwerte in eine erste Mehrzahl von Werten in einem zweiten Format und zum Speichern der ersten Mehrzahl von Werten im zweiten Format in einem Register, das einem Architekturregister entspricht, wobei die erste Mehrzahl von Werten im zweiten Format als Teil eines Bilds durch die Bildverarbeitungssequenz bearbeitet wird; eine mit dem Prozessor gekoppelte Graphikschnittstelle zum Empfang graphischer Daten, die das Bild vom Prozessor wiedergeben; eine Anzeigevorrichtung zur Anzeige des Bildes.
  27. System nach Anspruch 26, wobei die erste Mehrzahl von Werten im zweiten Format eine größere Gesamtzahl von Bits umfaßt als der eine der Mehrzahl gepackter ganzzahliger Datenwerte.
  28. System nach Anspruch 26, wobei im Speicher ein zweiter Befehl gespeichert ist, um zu bewirken, daß der Prozessor eine zweite Mehrzahl von Werten im zweiten Format, wobei es sich um ein Ergebnis einer Bearbeitung der ersten Mehrzahl von Werten im zweiten Format durch die Bildverarbeitungssequenz handelt, in einen zweiten ganzzahligen Datenwert umwandelt und den zweiten ganzzahligen Datenwert in einem zweiten Register speichert, das einem zweiten Architekturregister entspricht, und wobei des weiteren der zweite ganzzahlige Datenwert als ein Pixelwert zur Graphikschnittstelle geschrieben wird.
  29. System nach Anspruch 28, wobei der erste Befehl ein erster Umwandlungsbefehl ist, wobei jeder der Mehrzahl gepackter ganzzahliger Datenwerte eine Mehrzahl von Unterelementen umfaßt, die jeweils eine erste Anzahl von Bits umfassen, und jeder der ersten Mehrzahl von Werten einem der Mehrzahl von Unterelementen entspricht und ein erstes Fließkommaformat mit einer Mehrzahl der ersten Anzahl von Bits aufweist.
  30. System nach Anspruch 26, wobei der erste Befehl einen ersten der Mehrzahl gepackter ganzzahliger Datenwerte spezifiziert und die Mehrzahl gepackter ganzzahliger Datenwerte N ganzzahlige Datenwerte umfaßt, wobei im Speicher N Umwandlungsbefehle einschließlich des ersten Befehls zur Umwandlung der N ganzzahligen Datenwerte in eine Gruppe von N Mehrzahlen von Fließkommawerten gespeichert sind.
  31. System nach Anspruch 30, wobei die Bildbearbeitungssequenz zur Einwirkung auf die Gruppe von N Mehrzahlen von Fließkommawerten zur Erzeugung von zweiten N Mehrzahlen von Fließkommawerten als ein Teil des Bildes vorgesehen ist und wobei des weiteren im Speicher eine zweite Mehrzahl von N Umwandlungsbefehlen gespeichert ist, um jede der zweiten N Mehrzahlen von Fließkommawerten zurück in ganzzahlige Datenwerte in einem gepackten Format umzuwandeln.
  32. Maschinenlesbares Medium, welches einen Befehl trägt, der, wenn er von einer Maschine ausgeführt wird, bewirkt, daß die Maschine die folgenden Schritte ausführt: Umwandeln eines ganzzahligen Werts, wobei der ganzzahlige Wert sich in einer Vielzahl von ganzzahligen Werten eines gepackten Datenelements befindet und ein erstes ganzzahliges Format mit einer Mehrzahl von Unterelementen umfaßt, wobei jedes eine erste Anzahl von Bits umfaßt, in eine Mehrzahl von Fließkommawerten, wovon jeder der Mehrzahl von Fließkommawerten ein erstes Fließkommaformat aufweist, wobei das erste Fließkommaformat eine Mehrzahl der ersten Anzahl von Bits umfaßt; Speichern der Mehrzahl von Fließkommawerten in einem ersten Register.
  33. Maschinenlesbares Medium nach Anspruch 32, wobei im maschinenlesbaren Medium des weiteren ein oder mehrere zusätzliche Befehle gespeichert sind, die, wenn sie durch die Maschine ausgeführt werden, bewirken, daß die Maschine ausführt: Umwandeln einer zweiten Mehrzahl von Fließkommawerten im ersten Fließkommaformat in einen zweiten Ganzzahlwert im ersten Ganzzahlformat; Speichern des zweiten Ganzzahlwerts in einem dritten Register, wobei das dritte Register sich ebenfalls in der Gruppe von Architekturregistern befindet und dazu eingerichtet ist, mehrere Ganzzahlwerte im ersten Ganzzahlformat zu speichern.
DE112004001648T 2003-09-08 2004-08-25 Verfahren, Vorrichtung und Befehle für parallele Datenumwandlung Ceased DE112004001648T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/658,612 US7899855B2 (en) 2003-09-08 2003-09-08 Method, apparatus and instructions for parallel data conversions
US10/658,612 2003-09-08
PCT/US2004/027683 WO2005026944A2 (en) 2003-09-08 2004-08-25 Method, apparatus and instructions for parallel data conversions

Publications (1)

Publication Number Publication Date
DE112004001648T5 true DE112004001648T5 (de) 2006-07-13

Family

ID=34226810

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112004001648T Ceased DE112004001648T5 (de) 2003-09-08 2004-08-25 Verfahren, Vorrichtung und Befehle für parallele Datenumwandlung

Country Status (4)

Country Link
US (15) US7899855B2 (de)
CN (1) CN100414493C (de)
DE (1) DE112004001648T5 (de)
WO (1) WO2005026944A2 (de)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7899855B2 (en) 2003-09-08 2011-03-01 Intel Corporation Method, apparatus and instructions for parallel data conversions
JP2006154979A (ja) * 2004-11-25 2006-06-15 Sony Corp 浮動小数点数演算回路
CN100573443C (zh) * 2004-12-30 2009-12-23 英特尔公司 从混合源指令集架构到单一目标指令集架构的二进制代码转换中的多格式指令的格式选择
US7644115B2 (en) * 2005-01-07 2010-01-05 Sas Institute Inc. System and methods for large-radix computer processing
US7792814B2 (en) * 2005-09-30 2010-09-07 Sap, Ag Apparatus and method for parsing unstructured data
US8280936B2 (en) * 2006-12-29 2012-10-02 Intel Corporation Packed restricted floating point representation and logic for conversion to single precision float
US8744198B1 (en) * 2007-11-20 2014-06-03 Lucasfilm Entertainment Company Ltd. Image compression and decompression
US8281109B2 (en) * 2007-12-27 2012-10-02 Intel Corporation Compressed instruction format
EP2360926A1 (de) * 2010-01-19 2011-08-24 Fraunhofer-Gesellschaft zur Förderung der Angewandten Forschung e.V. Bildkodierer und Bilddekodierer
JP5367020B2 (ja) * 2011-06-24 2013-12-11 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、情報処理方法、プログラム及び情報記憶媒体
WO2013095603A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Apparatus and method for down conversion of data types
US9335993B2 (en) * 2011-12-29 2016-05-10 International Business Machines Corporation Convert from zoned format to decimal floating point format
US9329861B2 (en) 2011-12-29 2016-05-03 International Business Machines Corporation Convert to zoned format from decimal floating point format
CN104756505B (zh) * 2012-06-28 2020-04-07 爱立信股份有限公司 用于过顶实况媒体递送中的广告插入的方法和系统
JP2015012305A (ja) * 2013-06-26 2015-01-19 ソニー株式会社 コンテンツ供給装置、コンテンツ供給方法、プログラム、端末装置、およびコンテンツ供給システム
US10228941B2 (en) * 2013-06-28 2019-03-12 Intel Corporation Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register
US10061581B2 (en) * 2014-01-31 2018-08-28 Qualcomm Incorporated On-the-fly conversion during load/store operations in a vector processor
US9916130B2 (en) * 2014-11-03 2018-03-13 Arm Limited Apparatus and method for vector processing
US20160283242A1 (en) * 2014-12-23 2016-09-29 Intel Corporation Apparatus and method for vector horizontal logical instruction
US10282109B1 (en) * 2016-09-15 2019-05-07 Altera Corporation Memory interface circuitry with distributed data reordering capabilities
US10489204B2 (en) 2017-01-31 2019-11-26 Samsung Electronics Co., Ltd. Flexible in-order and out-of-order resource allocation
US11140242B2 (en) 2017-12-15 2021-10-05 New Relic, Inc. System for processing coherent data
CN111078286B (zh) * 2018-10-19 2023-09-01 上海寒武纪信息科技有限公司 数据通信方法、计算系统和存储介质
CN112395004A (zh) * 2019-08-14 2021-02-23 上海寒武纪信息科技有限公司 运算方法、系统及相关产品
CN110837719A (zh) * 2019-11-15 2020-02-25 广州健飞通信有限公司 数据参考模块整合系统
TWI760880B (zh) * 2020-10-07 2022-04-11 瑞昱半導體股份有限公司 與儲存裝置相關的傳輸控制電路、資料傳輸系統及操作資料傳輸系統的方法
CN114372009A (zh) * 2020-10-15 2022-04-19 瑞昱半导体股份有限公司 传输控制电路、数据传输系统及操作数据传输系统的方法
US20230350678A1 (en) * 2022-04-28 2023-11-02 Qualcomm Incorporated Instruction Set Architecture for Neural Network Quantization and Packing
EP4318224A1 (de) * 2022-08-03 2024-02-07 Intel Corporation Befehle zur umwandlung von fp16 in fp8

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996017291A1 (en) * 1994-12-02 1996-06-06 Intel Corporation Microprocessor with packing operation of composite operands
US5819101A (en) * 1994-12-02 1998-10-06 Intel Corporation Method for packing a plurality of packed data elements in response to a pack instruction
US5959636A (en) * 1996-02-23 1999-09-28 Intel Corporation Method and apparatus for performing saturation instructions using saturation limit values
US5835782A (en) * 1996-03-04 1998-11-10 Intel Corporation Packed/add and packed subtract operations
US5793654A (en) * 1996-09-30 1998-08-11 Intel Corporation Saturating alignment shifter
US6253311B1 (en) 1997-11-29 2001-06-26 Jp First Llc Instruction set for bi-directional conversion and transfer of integer and floating point data
US6292815B1 (en) * 1998-04-30 2001-09-18 Intel Corporation Data conversion between floating point packed format and integer scalar format
US6247116B1 (en) * 1998-04-30 2001-06-12 Intel Corporation Conversion from packed floating point data to packed 16-bit integer data in different architectural registers
US5995122A (en) * 1998-04-30 1999-11-30 Intel Corporation Method and apparatus for parallel conversion of color values from a single precision floating point format to an integer format
US6282554B1 (en) * 1998-04-30 2001-08-28 Intel Corporation Method and apparatus for floating point operations and format conversion operations
US6266769B1 (en) * 1998-04-30 2001-07-24 Intel Corporation Conversion between packed floating point data and packed 32-bit integer data in different architectural registers
US6263426B1 (en) * 1998-04-30 2001-07-17 Intel Corporation Conversion from packed floating point data to packed 8-bit integer data in different architectural registers
US7051060B2 (en) * 2001-09-28 2006-05-23 Intel Corporation Operand conversion optimization
US20050026944A1 (en) * 2003-07-24 2005-02-03 Patrick Betschmann Thienopyridine and furopyridine kinase inhibitors
US7899855B2 (en) 2003-09-08 2011-03-01 Intel Corporation Method, apparatus and instructions for parallel data conversions

Also Published As

Publication number Publication date
US9047081B2 (en) 2015-06-02
US20170109319A1 (en) 2017-04-20
US9026569B2 (en) 2015-05-05
US20170109320A1 (en) 2017-04-20
US20160350111A1 (en) 2016-12-01
US20110106867A1 (en) 2011-05-05
US20150301801A1 (en) 2015-10-22
US9032003B2 (en) 2015-05-12
US20170300335A1 (en) 2017-10-19
US20130024665A1 (en) 2013-01-24
US9026570B2 (en) 2015-05-05
US9002914B2 (en) 2015-04-07
CN1846193A (zh) 2006-10-11
US9824063B2 (en) 2017-11-21
US20130080742A1 (en) 2013-03-28
US7899855B2 (en) 2011-03-01
CN100414493C (zh) 2008-08-27
US9824062B2 (en) 2017-11-21
US20170109321A1 (en) 2017-04-20
US20130326194A1 (en) 2013-12-05
US9852109B2 (en) 2017-12-26
US20170109318A1 (en) 2017-04-20
US8533244B2 (en) 2013-09-10
US9436433B2 (en) 2016-09-06
US20130218936A1 (en) 2013-08-22
US20050055389A1 (en) 2005-03-10
US9032004B2 (en) 2015-05-12
US20130024664A1 (en) 2013-01-24
US20130238879A1 (en) 2013-09-12
US9952873B2 (en) 2018-04-24
WO2005026944A3 (en) 2006-04-06
US9715384B2 (en) 2017-07-25
US9824061B2 (en) 2017-11-21
WO2005026944A2 (en) 2005-03-24

Similar Documents

Publication Publication Date Title
DE112004001648T5 (de) Verfahren, Vorrichtung und Befehle für parallele Datenumwandlung
DE19983189B4 (de) System, Verfahren, Befehl und Prozessor zum Parallelverarbeiten von Graphikdaten
DE102018005977A1 (de) Gleitkomma- zu festkomma-umwandlung
DE19920214C2 (de) Verfahren und Einrichtung zum Konvertieren einer Zahl zwischen einem Gleitkommaformat und einem Ganzzahlformat
DE102007045496B4 (de) Anweisung und Logik zum Bearbeiten von Textstrings
DE69233361T2 (de) Ein-Chip-Mikrocomputer
DE102018006757A1 (de) Festkomma-zu-gleitkomma-umwandlung
DE19914617C2 (de) Prozessor und Verfahren zum Ausführen von Befehlen an gepackten Daten
DE102019109847A1 (de) Beschleunigung der matrixmultplikation dünnbesetzter matrizen unter verwendung einer spaltenfaltung und -verdichtung
DE19983632B4 (de) Emulation eines Befehlssatzes bei einem Befehlssatzarchitekturübergang
DE102004030034A1 (de) Anweisungssatzerweiterung mit einem 3-Byte-Escape-Opcode
DE112013005236T5 (de) Verfahren und Vorrichtung für Integralbild-Berechnungsbefehle
DE102018125817A1 (de) Systeme und Verfahren zum Laden eines Kachelregisterpaars
DE102020126212A1 (de) Vorrichtungen, Verfahren und Systeme für Anweisungen eines Matrixoperationsbeschleunigers
DE112011105818T5 (de) Systeme, Vorrichtungen und Verfahren zum Expandieren einer Speicherquelle in ein Zielregister und komprimieren eines Quellenregisters in eine Zielspeicherstelle
DE112012003864T5 (de) Mehrfach adressierbare Registerdateien und dazugehörige Formatumwandlungen
DE112010004887T5 (de) Verfahren und Vorrichtung zur Durchführung einer Verschiebe- und Exklusiv-ODER-Operation in einer einzelnen Instruktion
DE112013005372T5 (de) Befehl zum Bestimmen von Histogrammen
DE112013005416T5 (de) Verfahren, Vorrichtungen, Befehle und Logik zum Bereitstellen von Vektoradressenkonflikt-Detektionsfunktionalität
DE112012007063T5 (de) Zusammenfügen von benachbarten Sammel-/Streuoperationen
DE102014003706A1 (de) BEREICHSBEGRENZTE VEKTORSPEICHERZUGRIFFSINSTRUKTIONEN, PROZESSOREN, VERFAHREN und SYSTEME
DE102018125805A1 (de) Systeme, verfahren, und vorrichtungen für skalarproduktoperationen
DE112013005343T5 (de) Befehle für Codierungsalgorithemen mit gleitendem Fenster
DE112012001542T5 (de) System, Vorrichtung und Verfahren zum Ausrichten von Registern
DE102015002253A1 (de) Verfahren und Vorrichtung zum Ausführen mehrerer Multiplikationsoperationen

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8131 Rejection