DE19581873C2 - Prozessor zum Ausführen von Schiebeoperationen an gepackten Daten - Google Patents

Prozessor zum Ausführen von Schiebeoperationen an gepackten Daten

Info

Publication number
DE19581873C2
DE19581873C2 DE19581873T DE19581873T DE19581873C2 DE 19581873 C2 DE19581873 C2 DE 19581873C2 DE 19581873 T DE19581873 T DE 19581873T DE 19581873 T DE19581873 T DE 19581873T DE 19581873 C2 DE19581873 C2 DE 19581873C2
Authority
DE
Germany
Prior art keywords
data
bits
packed
register
bit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE19581873T
Other languages
English (en)
Other versions
DE19581873T1 (de
Inventor
Alexander Peleg
Yaakov Yaari
Millind Mittal
Larry M Mennemeier
Benny Eitan
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 DE19581873T1 publication Critical patent/DE19581873T1/de
Application granted granted Critical
Publication of DE19581873C2 publication Critical patent/DE19581873C2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants

Description

Die Erfindung betrifft einen Prozessor, der Schiebeope­ rationen an gepackten Datenelementen ausführt.
Heutzutage arbeiten die meisten Personalcomputersysteme mit einem Befehl, um ein Ergebnis zu erzeugen. Leistungs­ steigerungen werden erreicht, indem die Ausführungsgeschwin­ digkeit von Befehlen und die Komplexität der Prozessorbefeh­ le erhöht wird; was als Computer mit komplexem Befehlssatz (CISC) bekannt ist. Solche Prozessoren sind der Mikroprozes­ sor Intel 80286™ von der Intel Corporation aus Santa Clara, Kalifornien, der zu der CISC-Kategorie gehört.
Frühere Computersystemarchitekturen wurden optimiert, um den Vorteil des CISC-Konzepts zu nutzen. Solche Systeme ha­ ben üblicherweise Datenbusse von 32 Bit Breite. Anwendungen jedoch, die gerichtet sind auf die computerunterstützte Ko­ operation (CSC - die Integration von Telekonferenzen mit Ma­ nipulationen von Daten gemischter Medien), 2D/3D-Grafik-An­ wendungen, Bildverarbeitungen, Videokompression/Dekompres­ sion, Erkennungsalgorithmen und Audio-Manipulationen, erhö­ hen das Erfordernis einer verbesserten Leistungsfähigkeit. Aber die Erhöhung der Ausführungsgeschwindigkeit und der Komplexität der Befehle ist nur eine Lösung.
Ein gemeinsamer Aspekt dieser Anwendungen besteht darin, daß sie oftmals eine große Menge von Daten manipulieren, wo­ bei nur wenige Bits wichtig sind. D. h., Daten, deren rele­ vante Bits in viel weniger Bits repräsentiert sind, als der Datenbus breit ist. Beispielsweise führen Prozessoren viele Operationen an 8-Bit- oder 16-Bit-Daten (z. B. Pixel-Farbkom­ ponenten in einem Videobild) aus, aber haben viel breitere Datenbusse und Register. Somit kann es passieren, daß ein Prozessor mit 32 Bit-Datenbus und -Registern, der einen die­ sen Algorithmen ausführt, bis zu 75% seiner Datenverarbei­ tungs-, Aufnahme- und Speicherkapazität verschwendet, weil nur die ersten 8 Bits der Daten wichtig sind.
Aus der Patentschrift DE 27 48 991 C2 ist ein Prozessor bekannt, in dem mit Hilfe eines Befehls binärcodierte Dezi­ malzahlen aus einem ungepackten in einen gepacktes Format umgesetzt werden. Mehrere Bits einer Binärzahl in einem ungepackten Format werden aus einem Hauptspeicher herange­ holt, im Mikroprozessor in ein gepacktes Format umgesetzt, wobei aus jedem Byte jeweils eine Tetrade entnommen und eine zweite Tetrade gelöscht wird, und das Ergebnis zurück in den Hauptspeicher geschrieben.
Aus der Deutschen Offenlegungsschrift DE 35 13 473 A1 ist ein Datenschieberegister bekannt, mit dem Datenelemente wählbarer Größe arithmetisch oder logisch verschoben werden können.
Aufgabe der Erfindung ist es, die Verarbeitungsgeschwin­ digkeit eines Prozessors zu erhöhen.
Diese Aufgabe wird durch einen Prozessor mit den Merkma­ len des Patentanspruchs 1 gelöst.
Bei dem erfindungsgemäßen Prozessor ist die Verarbei­ tungsgeschwindigkeit dadurch erhöht, daß dieser Prozessor Schiebeoperationen unterstützt, die gleichzeitig an mehre­ ren, in einer Sequenz gepackter Daten enthaltenen gepackten Datenelementen ausgeführt werden. Der Dekodierer des Prozes­ sors kann einen Befehl oder ein Steuersignal dekodieren, der bzw. das eine variable Anzahl und eine variable Größe der der Schiebeoperation zu unterwerfenden gepackten Datenele­ mente einstellt. Die Datenelemente werden gleichzeitig und unabhängig voneinander verschoben.
Bei einem bevorzugten Ausführungsbeispiel enthält der Prozessor einen Decodierer, der ein Steuersignal empfangen kann. Das Steuersignal hat eine erste Quelladresse, eine zweite Quelladresse, eine Zieladresse und ein Operations­ feld. Die erste Quelladresse entspricht einem ersten Ort. Die zweite Quelladresse entspricht einem zweiten Ort. Die Zieladresse entspricht einem dritten Ort. Das Operationsfeld zeigt an, daß eine Art einer Schiebeoperation an gepackten Daten ausgeführt werden soll. Der Prozessor enthält darüber hinaus eine mit dem Decodierer gekoppelte Schaltung. Die Schaltung dient der Verschiebung erster gepackter Daten, die an dem ersten Ort gespeichert sind, um einen Wert, der an dem zweiten Ort gespeichert ist. Die Schaltung dient ferner der Übermittlung entsprechender gepackter Ergebnisdaten zu dem dritten Ort.
Vorteilhafte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
Die vorliegende Erfindung wird anhand der Figuren veran­ schaulicht. Gleiche Bezugszeichen weisen auf ähnliche Ele­ mente hin.
Fig. 1 veranschaulicht ein Ausführungsbeispiel des Com­ putersystems, das die Verfahren und Einrichtungen der vorliegenden Erfindung verwendet.
Fig. 2 veranschaulicht ein Ausführungsbeispiel des Prozessors gemäß der vorliegenden Erfindung.
Fig. 3 ist ein Ablaufdiagramm, das die grundsätzlichen Schritte veranschaulicht, die von dem Prozessor zum Manipulieren der Daten in der Registerdatei verwendet werden.
Fig. 4a veranschaulicht Speicherdatentypen.
Fig. 4b, 4c und 4d veranschaulichen Darstellungen ganzzahliger Daten in Registern.
Fig. 5a veranschaulicht Arten gepackter Daten.
Fig. 5b, 5c und 5d veranschaulichen Darstellungen ge­ packter Daten in Registern.
Fig. 6a veranschaulicht ein Steuersignalformat, das bei dem Computersystem verwendet wird, um die Ver­ wendung gepackter Daten anzuzeigen.
Fig. 6b veranschaulicht ein zweites Steuersignalformat, das bei dem Computersystem verwendet werden kann, um die Verwendung gepackter Daten anzuzeigen.
Fig. 7 veranschaulicht ein Ausführungsbeispiel eines Verfahrens, dem ein Prozessor folgt, wenn er eine Schiebeoperation an gepackten Daten ausführt.
Fig. 8 veranschaulicht eine Schaltung, die einzelne Bytes an gepackten Daten manipulieren kann.
BESCHREIBUNG DES BEVORZUGTEN AUSFÜHRUNGSBEISPIELS Überblick
Es wird ein Prozessor beschrieben, der Schiebeoperatio­ nen aufweist, die an mehreren Datenelementen arbeiten. In der folgenden Beschreibung werden zahlreiche spezielle De­ tails, wie beispielsweise Schaltungen, undsoweiter ausge­ führt, um ein besseres Verständnis der vorliegenden Erfin­ dung zu erreichen. An anderen Stellen werden gut bekannte Strukturen und Techniken nicht im Detail gezeigt, um die vorliegende Erfindung nicht unnötig zu verdunkeln.
DEFINITIONEN
Um eine Grundlage für ein Verständnis der Beschreibung der Ausführungsbeispiele der vorliegenden Erfindung zu ge­ ben, werden die folgenden Definitionen zur Verfügung ge­ stellt.
Bit X bis Bit Y: definieren ein Unterfeld einer Binärzahl. Bei­ spielsweise stellen Bit 6 bis Bit 0 des Bytes 001110102 (gezeigt zur Basis zwei) ein Unter­ feld 1110102 dar. Die einer Binärzahl folgende '2' zeigt die Basis 2 an. Folglich ist 10002 gleich 810, während F16 gleich 1510 ist.
Rx: ist ein Register. Ein Register ist irgendeine Einrichtung, die Daten speichern und zur Ver­ fügung stellen kann. Eine weitere Funktionali­ tät des Registers wird unten beschrieben. Ein Register ist nicht notwendigerweise Teil des Prozessorbausteins.
DEST: ist eine Datenadresse.
SRC1: ist eine Datenadresse.
SRC2: ist eine Datenadresse.
Ergebnis: sind die in das von DEST adressierten Register zu speichernden Daten.
Quelle 1: sind die in dem von SRC1 adressierten Register gespeicherten Daten.
Quelle 2: sind die in dem von SRC2 adressierten Register gespeicherten Daten.
COMPUTERSYSTEM
Es wird auf Fig. 1 Bezug genommen, in der ein Computer­ system, auf welchem ein Ausführungsbeispiel der vorliegen Erfindung implementiert sein kann, als Computersystem 100 gezeigt ist. Das Computersystem 100 weist einen Bus 101 oder eine andere Kommunikationshardware und -Software zum Austau­ schen von Informationen und einen mit dem Bus 101 gekoppel­ ten Prozessor 109 zum Verarbeiten von Informationen auf. Das Computersystem 100 weist ferner einen mit dem Bus 101 gekop­ pelten Speicher mit wahlfreiem Zugriff (RAM) oder eine ande­ re dynamische Speichereinrichtung (als Hauptspeicher 104 be­ zeichnet) zum Speichern von Informationen und von von dem Prozessor 109 auszuführenden Befehlen auf. Der Hauptspeicher 104 kann außerdem zum Speichern temporärer Variablen oder anderer Zwischeninformationen während der Ausführung von Be­ fehlen durch den Prozessor 109 verwendet werden. Das Compu­ tersystem 100 weist außerdem einen mit dem Bus 101 gekoppel­ ten Nur-Lese-Speicher (ROM) 106 und/oder eine andere stati­ sche Speichereinrichtung zum Speichern statischer Informa­ tionen und Befehle für den Prozessor 109 auf. Die Datenspei­ chereinrichtung 107 ist mit dem Bus 101 zum Speichern von Informationen und Befehlen gekoppelt.
Darüber hinaus kann eine Datenspeichereinrichtung 107, wie beispielsweise eine Magnetplatte oder eine optische Platte und ihr entsprechendes Plattenlaufwerk, mit dem Com­ putersystem 100 gekoppelt sein. Das Computersystem 100 kann außerdem über den Bus 101 mit einer Anzeigeeinrichtung 121 zum Anzeigen von Informationen an einen Computerbenutzer ge­ koppelt sein. Die Anzeigeeinrichtung 121 kann einen Einzel­ bildpuffer, eine spezialisierte Grafikwiedergabeeinrichtung, eine Kathodenstrahlröhre (CRT) und/oder einen Flachbild­ schirm enthalten. Eine alphanumerische Eingabeeinrichtung 122, die alphanumerische und andere Tasten enthält, ist üb­ licherweise mit dem Bus 101 zum Übermitteln von Informatio­ nen und Befehlsauswahlen an den Prozessor 109 gekoppelt. Ei­ ne andere Art einer Benutzereingabeeinrichtung ist eine Cur­ sorsteuereinrichtung 123, wie beispielsweise eine Maus, ein Trackball, ein Stift, ein Touchscreen oder Cursortasten, zum Übermitteln von Richtungsinformationen und Befehlsauswahlen an den Prozessor 109 und zum Steuern der Cursorbewegung auf der Anzeigeeinrichtung 121. Diese Eingabeeinrichtung hat üb­ licherweise zwei Freiheitsgrade in zwei Achsen, einer ersten Achse (z. B. x) und einer zweiten Achse (z. B. y), was es der Einrichtung gestattet, eine Position in einer Ebene zu spe­ zifizieren. Jedoch sollte die Erfindung nicht auf Eingabe­ einrichtungen mit nur zwei Freiheitsgraden beschränkt blei­ ben.
Eine andere Einrichtung, welche mit dem Bus 101 gekop­ pelt sein kann, ist eine Hardcopy-Einrichtung 124, welche zum Ausdrucken von Befehlen, Daten oder anderen Informatio­ nen auf einem Medium, wie beispielsweise Papier, einem Film oder einem ähnlichen Medium, verwendet werden kann. Zusätz­ lich kann das Computersystem 100 mit einer Einrichtung zur Schallaufzeichnung und/oder -wiedergabe 125 gekoppelt sein, wie beispielsweise einem Audio-Digitalisierer, der mit einem Mikrophon zum Aufzeichnen von Informationen gekoppelt ist. Ferner kann die Einrichtung einen Lautsprecher enthalten, welcher mit einem Digital-Analog(D/A)-Konverter zum Wieder­ geben digitalisierter Klänge gekoppelt ist.
Auch kann das Computersystem 100 ein Terminal in einem Computernetzwerk (z. B. LAN) sein. Das Computersystem 100 wä­ re dann ein Computer-Subsystem eines Computersystems, das eine Anzahl von vernetzten Einrichtungen umfaßt. Das Compu­ tersystem 100 enthält optional eine Videosignale digitali­ sierende Einrichtung 126. Die Videodigitalisierungseinrich­ tung 126 kann verwendet werden, um Videobilder aufzuzeich­ nen, die anderen an dem Computernetzwerk übermittelt werden können.
Das Computersystem 100 ist nützlich bei der Unterstüt­ zung einer Computergestützen Kooperation (CSC - computer supported cooperation - die Integration von Telekonferenzen mit Datenmanipulationen gemischter Medien), von 2D/3D-Gra­ fikanwendungen, Bildverarbeitungen, Videokompressi­ ons/Dekompressionsanwendungen, Erkennungsalgorithmen und Au­ diobearbeitungen.
PROZESSOR
Fig. 2 veranschaulicht eine detaillierte Abbildung des Prozessors 109. Der Prozessor 109 kann auf einem oder mehre­ ren Substraten unter Verwendung einer Reihe von Prozeßtech­ nologien, wie beispielsweise BiCMOS, CMOS und NMOS, imple­ mentiert werden.
Der Prozessor 109 weist einen Decodierer 202 zum Deco­ dieren von Steuersignalen und von durch den Prozessor 109 verwendeten Daten auf. Die Daten können dann über einen in­ ternen Bus 205 in einer Registerdatei 204 gespeichert wer­ den. Klarstellend sei erwähnt, daß die Register eines Aus­ führungsbeispiels nicht als Einschränkung auf eine spezielle Schaltungsart verstanden werden sollen. Vielmehr braucht ein Register eines Ausführungsbeispiels nur in der Lage zu sein, Daten zu speichern und zur Verfügung zu stellen und die hier beschriebenen Funktionen auszuführen.
In Abhängigkeit von der Datenart können die Daten in Ganzzahlregistern 201, Registern 209, Statusregistern 208 oder Befehlszeigerregistern 211 gespeichert werden. Es kön­ nen auch andere Register in der Registerdatei 204 enthalten sein, beispielsweise Gleitkommaregister. Bei einem Ausfüh­ rungsbeispiel speichern die Ganzzahlregister 201 ganzzahlige 32-Bit-Daten. Bei einem Ausführungsbeispiel umfassen die Re­ gister 209 acht Register, R0 212a bis R7 212h. Jedes der Re­ gister 209 ist 64 Bit breit. R1 212a, R2 212b und R3 212c sind Beispiele einzelner Register in den Registern 209. 32 Bits eines Registers der Register 209 können in ein Ganz­ zahlregister der Ganzzahlregister 201 bewegt werden. In ähn­ licher Weise kann ein Wert in einem Ganzzahlregister in 32 Bits eines Registers der Register 209 bewegt werden.
Die Statusregister 208 zeigen den Zustand oder Status des Prozessors 109 an. Das Befehlszeigerregister oder Be­ fehlszählerregister 211 speichert die Adresse des nächsten auszuführenden Befehls. Die Ganzzahlregister 201, die Regi­ ster 209, die Statusregister 208 und das Befehlszeigerregi­ ster 211 sind mit dem internen Bus 205 verbunden. Irgendwel­ che zusätzlichen Register sind ggf. ebenfalls mit dem inter­ nen Bus 205 verbunden.
Bei einem anderen Ausführungsbeispiel können einige die­ ser Register für zwei unterschiedliche Datenarten verwendet werden. Beispielsweise können die Register 209 und die Ganz­ zahlregister 201 kombiniert werden, wobei jedes Register entweder Ganzzahldaten oder gepackte Daten speichern kann. Bei einem anderen Ausführungsbeispiel können die Register 209 als Gleitkommaregister verwendet werden. Bei diesem Aus­ führungsbeispiel können die gepackten Daten in den Registern 209 oder den Gleitkommaregistern gespeichert werden. Bei ei­ nem Ausführungsbeispiel sind die kombinierten Register 64 Bit breit und die Ganzzahlwerte werden als 64 Bits darge­ stellt. Bei diesem Ausführungsbeispiel müssen die Register beim Speichern der gepackten Daten und der Ganzzahldaten nicht zwischen den zwei Datentypen unterscheiden.
Die Funktionseinheit 203 führt die von dem Prozessor 109 durchgeführten Operationen aus. Solche Operationen können Verschiebungen, Additionen, Subtraktionen und Multiplikatio­ nen umfassen. Die Funktionseinheit 203 ist mit dem internen Bus 205 verbunden. Ein Cache 206 ist ein optionales Element des Prozessors 109 und kann verwendet werden, um Daten und/oder Steuersignale beispielsweise vom Hauptspeicher 104 zwischenzuspeichern. Der Cache 206 ist mit dem Decodierer 202 verbunden und kann die Steuersignale 207 empfangen.
Fig. 3 veranschaulicht den grundsätzlichen Betrieb des Prozessors 109. D. h., Fig. 3 veranschaulicht die Schritte, denen der Prozessor 109 folgt, während er eine Operation an gepackten Daten, eine Operation an ungepackten Daten oder irgendeine andere Operation ausführt. Beispielsweise umfas­ sen solche Operationen eine Ladeoperation zum Laden eines Registers in der Registerdatei 204 mit Daten aus dem Cache- Speicher 206, dem Hauptspeicher 204, dem Nur-Lese-Speicher (ROM) 106 oder der Datenspeichereinrichtung 107. Bei einem Ausführungsbeispiel der vorliegenden Erfindung unterstützt der Prozessor 109 die meisten der von dem Intel 80486™ (erhältlich bei der Intel Corporation in Santa Clara, Kali­ fornien) unterstützten Befehle. Bei einem anderen Ausfüh­ rungsbeispiel der vorliegenden Erfindung unterstützt der Prozessor 109 sämtliche von dem Intel 80486™ unterstützten Operationen. Bei einem weiteren Ausführungsbeispiel der vor­ liegenden Erfindung unterstützt der Prozessor 109 sämtliche von dem Pentium-Prozessor, dem Prozessor Intel 80486™, dem Prozessor Intel 80386™, dem Prozessor Intel 80286™ und dem Prozessor Intel 8086™ (sämtlich erhältlich von der Intel Corporation in Santa Clara, Kalifornien) unterstützten Ope­ rationen. Bei einem anderen Ausführungsbeispiel der vorlie­ genden Erfindung unterstützt der Prozessor 109 sämtliche in der IA™-Intel Architecture unterstützen Operationen, wie sie von der Intel Corporation in Santa Clara, Kalifornien definiert ist (siehe "Microprocessors", Intel-Datenbücher, Band 1 und Band 2, 1992 und 1993, erhältlich von Intel in Santa Clara, Kalifornien). Grundsätzlich kann der Prozessor 109 den Befehlssatz des Pentium-Prozessors unterstützen, aber er kann darüberhinaus modifiziert werden, um zukünftige Befehle, wie beispielsweise die hier beschriebenen, einzu­ schließen. Wichtig ist, daß der allgemeine Prozessor 109 zu­ sätzlich zu den hier beschriebenen Operationen die zuvor be­ nutzten Operationen unterstützen kann.
Beim Schritt 301 empfängt der Decodierer 202 ein Steuer­ signal 207 entweder von dem Cache-Speicher 206 oder dem Bus 101. Der Decodierer 202 decodiert das Steuersignal, um die auszuführenden Operationen zu bestimmen.
Der Decodierer 202 greift auf die Registerdatei 204 oder einen Speicherplatz im Schritt 302 zu. Auf die Register in der Registerdatei 204 oder die Speicherplätze in dem Spei­ cher wird in Abhängigkeit von der durch das Steuersignal 207 spezifizierten Adresse zugegriffen. Beispielsweise kann das Steuersignal 207 bei einer Operation an gepackten Daten die Registeradressen SRC1, SRC2 und DEST einschließen. SRC1 ist die Adresse des ersten Quellregisters. SRC2 ist die Adresse des zweiten Quellregisters. In einigen Fällen ist die Adres­ se SRC2 optional, da nicht sämtliche Operationen zwei Quelladressen benötigen. Wenn die Adresse SRC2 für eine Ope­ ration nicht erforderlich ist, dann wird nur die Adresse SRC1 verwendet. DEST ist die Adresse des Zielregisters (destination), in dem die Ergebnisdaten gespeichert werden. Bei einem Ausführungsbeispiel wird SRC1 oder SRC2 ebenfalls als DEST verwendet. SRC1, SRC2 und DEST werden vollständiger unter Bezugnahme auf die Fig. 6a und die Fig. 6b beschrie­ ben. Die in den entsprechenden Registern gespeicherten Daten werden als Quelle 1 (Source 1), als Quelle 2 (Source 2) bzw. Ergebnis (Result) bezeichnet. Diese Daten sind jeweils 24 Bit breit.
Bei einem anderen Ausführungsbeispiel der vorliegenden Erfindung können sämtliche oder beliebige der Adressen SRC1, SRC2 und DEST Speicherplätze in dem adressierbaren Speicher­ raum des Prozessors 109 definieren. Beispielsweise kann SRC1 einen Speicherplatz im Hauptspeicher 104 identifizieren, während SRC2 ein erstes Register der Ganzzahlregister 201 identifiziert, und während DEST ein zweites Register der Re­ gister 209 identifiziert. Zur Vereinfachung der Beschreibung wird im folgenden Bezug genommen auf Zugriffe auf die Regi­ sterdatei 204; die Zugriffe können jedoch stattdessen auch auf den Speicher erfolgen.
Bei einem anderen Ausführungsbeispiel der vorliegenden Erfindung enthält der Operationscode nur zwei Adressen, SRC1 und SRC2. Bei diesem Ausführungsbeispiel wird das Ergebnis der Operation entweder in dem SRC1- oder dem SRC2-Register gespeichert. D. h., SRC1 (oder SRC2) wird als DEST verwendet. Diese Art der Adressierung ist mit den bisherigen CISC-Be­ fehlen kompatibel, die nur zwei Adressen haben. Dies redu­ ziert die Komplexität des Decodierers 202. Man beachte, daß dann, wenn bei diesem Ausführungsbeispiel die in dem SRC1- Register enthaltenen Daten nicht zerstört werden sollen, die Daten dann zunächst vor Ausführung der Operation in ein an­ deres Register kopiert werden müssen. Dieses Kopieren würde einen zusätzlichen Befehl erfordern. Um die Beschreibung zu vereinfachen, wird im folgenden das Drei-Adressen-Adressier­ schema beschrieben (d. h., SRC1, SRC2 und DEST). Es sei je­ doch daran erinnert, daß das Steuersignal bei einem Ausfüh­ rungsbeispiel nur SRC1 und SRC2 enthalten, und daß SRC1 (oder SRC2) das Zielregister identifizieren kann.
Wenn das Steuersignal im Schritt 303 eine Operation an­ fordert, so wird die Funktionseinheit 203 freigegeben, um diese Operation an zugegriffenen Daten aus der Registerdatei 204 auszuführen. Sobald die Operation in der Funktionsein­ heit 203 beim Schritt 304 ausgeführt worden ist, wird das Ergebnis gemäß den Anforderungen des Steuersignals 207 in die Registerdatei 204 zurückgespeichert.
DATEN- UND SPEICHERFORMATE
Fig. 4a veranschaulicht einige der Datenformate, wie sie bei dem Computersystem gemäß Fig. 1 verwendet werden können. Diese Datenformate sind Festkommaformate. Der Prozessor 109 kann diese Datenformate bearbeiten. Multimediaalgorithmen verwenden oftmals diese Datenformate. Ein Byte 401 enthält 8 Bits Informationen. Ein Wort 402 enthält 16 Bits Informatio­ nen bzw. 2 Bytes. Ein Doppelwort 403 enthält 32 Bits Infor­ mationen oder 4 Bytes. Somit führt der Prozessor 109 Steuer­ signale aus, die an irgendeinem dieser Speicherdatenformate arbeiten.
In der folgenden Beschreibung wird auf Bit-, Byte-, Wort- und Doppelwort-Unterfelder Bezug genommen. Beispiels­ weise stellen Bit 6 bis Bit 0 des Bytes 001110102 (gezeigt zur Basis 2) das Unterfeld oder Subfeld 1110102 dar.
Die Fig. 4b bis 4d veranschaulichen In-Register-Darstel­ lungen, die bei einem Ausführungsbeispiel der vorliegenden Erfindung verwendet werden. Beispielsweise kann die vorzei­ chenlose Byte-in-Register-Darstellung 410 Daten darstellen, die in einem Register der Ganzzahlregister 201 gespeichert sind. Bei einem Ausführungsbeispiel ist ein Register der Ganzzahlregister 201 64 Bits lang bzw. breit. Bei einem an­ deren Ausführungsbeispiel ist ein Register der Ganzzahlregi­ ster 201 32 Bits breit. Zur Vereinfachung werden im folgen­ den 64-Bit-Ganzzahlregister beschrieben; es können jedoch auch 32-Bit-Register verwendet werden.
Die vorzeichenlose Byte-in-Register-Darstellung 410 ver­ anschaulicht die Speicherung eines Bytes 401 in den Ganz­ zahlregistern 201 durch den Prozessor 109, wobei die ersten 8 Bits, Bit 7 bis Bit 0, in dem Register dem Datenbyte 401 gewidmet sind. Diese Bits sind als {b} gezeigt. Um dieses Byte geeignet darzustellen, müssen die verbleibenden 56 Bits gleich Null sein. Für eine vorzeichenbehaftete Byte-in-Regi­ ster-Darstellung 411 speichern die Ganzzahlregister 201 die Daten in den ersten 7 Bits, wobei Bit 6 bis Bit 0 die Daten sind. Das siebente Bit stellt das Vorzeichenbit dar, das als ein {s} gezeigt ist. Die verbleibenden Bits 63 bis 8 sind die Fortsetzung des Vorzeichens des Bytes.
Die vorzeichenlose Wort-in-Register-Darstellung 412 ist in einem Register der Ganzzahlregister 201 gespeichert. Bit 15 bis Bit 0 enthalten ein vorzeichenloses Wort 402. Diese Bits sind als {w} gezeigt. Um dieses Wort geeignet darzu­ stellen, müssen die verbleibenden Bits 63 bis 16 gleich Null sein. Ein vorzeichenbehaftetes Wort 402 wird in den Bits 14 bis 0 gespeichert, wie es in der vorzeichenbehafteten Wort­ in-Register-Darstellung 413 gezeigt ist. Die verbleibenden Bits 63 bis 15 sind das Vorzeichenfeld.
Ein Doppelwort 403 kann als eine vorzeichenlose Doppel­ wort-in-Register-Darstellung 414 oder eine vorzeichenbehaf­ tete Doppelwort-in-Register-Darstellung 415 gespeichert wer­ den. Die Bits 31 bis 0 einer vorzeichenlosen Doppelwort-in- Register-Darstellung 414 sind die Daten. Diese Bits sind als {d} gezeigt. Um dieses vorzeichenlose Wort geeignet darzu­ stellen, müssen die verbleibenden Bits 63 bis 32 gleich Null sein. Die Ganzzahlregister 201 speichern eine vorzeichenbe­ haftete Doppelwort-in-Register-Darstellung 415 in ihren Bits 30 bis 0; die verbleibenden Bits 63 bis 31 sind das Vorzei­ chenfeld.
Wie es in den obengenannten Fig. 4b bis 4d gezeigt ist, ist die Speicherung einiger Datentypen in einem 64 Bit brei­ ten Register eine ineffiziente Methode der Speicherung. Bei­ spielsweise müssen zum Speichern einer vorzeichenlosen Byte­ in-Register-Darstellung 410 die Bits 63 bis 8 gleich Null sein, während nur die Bits 7 bis 0 Bits enthalten können, die ungleich Null sind. Folglich verwendet ein ein Byte in einem 64-Bit-Register speichernder Prozessor nur 12,5% der Registerkapazität. In ähnlicher Weise sind nur die ersten wenigen Bits der von der Funktionseinheit 203 ausgeführten Operationen wichtig.
Fig. 5a veranschaulicht das Datenformat für gepackte Da­ ten. Drei gepackte Datenformate sind veranschaulicht: ge­ packte Bytes 501, gepackte Worte 502 und gepackte Doppel­ worte 503. Bei einem Ausführungsbeispiel der vorliegenden Erfindung sind gepackte Bytes 64 Bits lang und enthalten 8 Datenelemente. Jedes Datenelement ist 1 Byte lang. Grund­ sätzlich ist ein Datenelement ein einzelner Datenabschnitt, der in einem einzelnen Register (oder einem Speicherplatz) mit anderen Datenelementen der gleichen Länge gespeichert ist. Bei einem Ausführungsbeispiel der vorliegenden Erfin­ dung ist die Anzahl der in einem Register gespeicherten Da­ tenelemente gleich 64 Bit geteilt durch die Länge eines Da­ tenelements in Bits.
Gepackte Worte 502 sind 64 Bits lang und enthalten 4 Wort-Datenelemente 402. Jedes Wort-Datenelement 402 enthält 16 Bits Informationen.
Gepackte Doppelworte 503 sind 64 Bits lang und enthalten 2 Doppelwort-Datenelemente 403. Jedes Doppelwort-Datenele­ ment 403 enthält 32 Bits Informationen.
Die Fig. 5b bis 5d veranschaulichen die In-Register- Speicherdarstellung gepackter Daten. Die vorzeichenlose ge­ packte Byte-in-Register-Darstellung 510 veranschaulicht die Speicherung eines gepackten Bytes 501 in einem der Register R0 212a bis Rn 212f. Die Informationen des jeweiligen Byte- Datenelements sind gespeichert in Bit 7 bis Bit 0 für das Byte 0, Bit 15 bis Bit 8 für das Byte 1, Bit 23 bis Bit 16 für das Byte 2, Bit 31 bis Bit 24 für das Byte 3, Bit 39 bis Bit 32 für das Byte 4, Bit 47 bis Bit 40 für das Byte 5, Bit 55 bis Bit 48 für das Byte 6 und Bit 63 bis 56 für das Byte 7. Somit werden sämtliche verfügbaren Bits in dem Register verwendet. Diese Speicheranordnung erhöht die Speichereffi­ zienz des Prozessors. Ebenso kann, indem auf acht Datenele­ mente zugegriffen wird, eine Operation jetzt an acht Daten­ elementen gleichzeitig ausgeführt werden. Die vorzeichenbe­ haftete gepackte Byte-in-Register-Darstellung 511 wird in ähnlicher Weise in einem Register der Register 209 gespei­ chert. Man beachte, daß nur das achte Bit jedes Byte-Daten­ elements das notwendige Vorzeichenbit ist; andere Bits kön­ nen oder können nicht verwendet werden, um das Vorzeichen anzuzeigen.
Die vorzeichenlose gepackte Wort-in-Register-Darstellung 512 veranschaulicht, wie die Worte 3 bis 0 in einem Register der Register 209 gespeichert werden. Bit 15 bis Bit 0 ent­ halten die Datenelementinformationen für Wort 0, Bit 31 bis Bit 16 enthalten die Informationen für das Datenelement Wort 1, Bit 47 bis Bit 32 enthalten die Informationen für das Da­ tenelement Wort 2 und Bit 63 bis Bit 48 enthalten die Infor­ mationen für das Datenelement Wort 3. Die vorzeichenbehafte­ te gepackte Wort-in-Register-Darstellung 513 ist ähnlich der vorzeichenlosen gepackten Wort-in-Register-Darstellung 512. Man beachte, daß nur das 16. Bit jedes Wort-Datenelements den notwendigen Vorzeichenindikator enthält.
Die vorzeichenlose gepackte Doppelwort-in-Register-Dar­ stellung 514 zeigt, wie die Register 209 zwei Doppelwort-Da­ tenelemente speichern. Das Doppelwort 0 ist in den Bits 31 bis 0 des Registers gespeichert. Das Doppelwort 1 ist in den Bits 63 bis 32 des Registers gespeichert. Die vorzeichenbe­ haftete gepackte Doppelwort-in-Register-Darstellung 515 ist ähnlich der vorzeichenlosen gepackten Doppelwort-in-Regi­ ster-Darstellung 514. Man beachte, daß das notwendige Vor­ zeichenbit das 32. Bit des Doppelwort-Datenelements ist.
Wie zuvor erwähnt, können die Register 209 sowohl für gepackte Daten als auch Ganzzahldaten verwendet werden. Bei diesem Ausführungsbeispiel der vorliegenden Erfindung kann die individuelle Programmierung des Prozessors 109 es erfor­ dern, zu verfolgen, ob ein adressiertes Register, beispiels­ weise R1 212a, gepackte Daten oder einfach Ganz­ zahl/Festkommadaten speichert. Bei einem alternativen Aus­ führungsbeispiel könnte der Prozessor 109 die Art der in den einzelnen Registern der Register 209 gespeicherten Daten verfolgen. Dieses alternative Ausführungsbeispiel könnte dann Fehler erzeugen, wenn beispielsweise eine gepackte Ad­ ditionsoperation an einfachen Festkomma/Ganzzahldaten ver­ sucht würde.
STEUERSIGNALFORMATE
Im folgenden wird ein Ausführungsbeispiel der Steuersi­ gnalformate beschrieben, die von dem Prozessor 109 zum Bear­ beiten der gepackten Daten verwendet werden. Bei einem Aus­ führungsbeispiel der vorliegenden Erfindung werden die Steu­ ersignale als 32 Bits dargestellt. Der Decodierer 202 kann Steuersignale 207 von dem Bus 101 empfangen. Bei einem ande­ ren Ausführungsbeispiel kann der Decodierer darüber hinaus solche Steuersignale von dem Cache-Speicher 206 empfangen.
Fig. 6a veranschaulicht ein allgemeines Format für ein Steuersignal, das an gepackten Daten operiert. Das Operati­ onsfeld OP 601, Bit 31 bis Bit 26, liefert Informationen über die von dem Prozessor 109 auszuführende Operation; bei­ spielsweise gepackte Addition, gepackte Subtraktion usw. SRC1 606, Bit 25 bis 20, liefert die Quellregisteradresse eines Registers der Register 209. Dieses Quellregister ent­ hält die ersten gepackten Daten, Quelle 1, die bei der Aus­ führung des Steuersignals verwendet werden sollen. In ähnli­ cher Weise enthält SRC2 603, Bit 19 bis Bit 14, die Adresse eines Registers der Register 209. Dieses zweite Quellregi­ ster enthält die gepackten Daten, Quelle 2, die während der Ausführung der Operation verwendet werden sollen. DEST 605, Bit 5 bis Bit 0, enthält die Adresse eines Registers der Re­ gister 209. Dieses Zielregister speichert die gepackten Er­ gebnisdaten, Ergebnis, der gepackten Datenoperation.
Die Steuerbits SZ 610, Bit 12 und Bit 13, zeigen die Länge der Datenelemente im ersten und zweiten Quellregister gepackter Daten an. Wenn SZ 610 gleich 012 ist, dann sind die gepackten Daten als gepackte Bytes 501 formatiert. Wenn Sz 610 gleich 102 ist, dann sind die gepackten Daten als ge­ packte Worte 502 formatiert. SZ 610 gleich 002 oder 112 sind reserviert; bei einem anderen Ausführungsbeispiel könnte je­ doch einer dieser Werte verwendet werden, um gepackte Dop­ pelworte 503 anzuzeigen.
Das Steuerbit T 611, das Bit 11, zeigt an, ob die Opera­ tion mit einem Sättigungsmodus ausgeführt werden soll. Wenn T 611 gleich 1 ist, dann wird eine Sättigungsoperation aus­ geführt. Wenn T 611 gleich 0 ist, dann wird eine nicht Sät­ tigende Operation ausgeführt. Sättigungsoperationen werden später beschrieben.
Das Steuerbit S 612, Bit 10, zeigt die Verwendung einer vorzeichenbehafteten Operation an. Wenn S 612 gleich 1 ist, dann wird eine vorzeichenbehaftete Operation ausgeführt. Wenn S 612 gleich 0 ist, dann wird eine vorzeichenlose Ope­ ration ausgeführt.
Fig. 6b veranschaulicht ein zweites allgemeines Format für ein Steuersignal, das an gepackten Daten arbeitet. Die­ ses Format entspricht dem allgemeinen Ganzzahlbefehlscode­ format, das in dem "Pentium™ Processor Family User's Ma­ nual" der Intel Corporation, Literature Sales, P. O. Box 7641, Mt. prospect, IL, 60056-7641 beschrieben wird. Man be­ achte, daß OP 601, SZ 610, T 611 und S 612 alle in einem großen Feld kombiniert sind. Bei einigen Steuersignalen sind die Bits 3 bis 5 SRC1 602. Bei einem Ausführungsbeispiel, bei dem es eine SRC1-Adresse 602 gibt, entsprechen dann die Bits 3 bis 5 außerdem dem DEST (Ziel) 605. Bei einem alter­ nativen Ausführungsbeispiel, bei dem es eine SRC2-Adresse 603 gibt, entsprechen außerdem die Bits 0 bis 2 dem DEST 605. Bei anderen Steuersignalen, wie beispielsweise einer gepackten Schiebe-Direktoperation, stellen die Bits 3 bis 5 eine Erweiterung des Befehlscodefelds dar. Bei einem Ausfüh­ rungsbeispiel gestattet diese Erweiterung einem Programmie­ rer, einen Direktwert in das Steuersignal einzubinden, wie beispielsweise einen Verschiebezählwert. Bei einem Ausfüh­ rungsbeispiel folgt der Direktwert dem Steuersignal. Dies ist detaillierter in "Pentium™ Processor Family User's Ma­ nual" in Anhang F, Seiten F-1 bis F-3 beschrieben. Die Bits 0 bis 2 stellen SRC2 603 dar. Dieses allgemeine Format ge­ stattet Register-zu-Register-, Speicher-zu-Register-, Regi­ ster-durch-Speicher-, Register-durch-Register-, Register­ durch-Direkt-, Register-zu-Speicher-Adressierungen. Darüber hinaus kann bei einem Ausführungsbeispiel dieses allgemeine Format Ganzzahlregister-zu-Register- und Register-zu-Ganz­ zahlregister-Adressierungen unterstützen.
BESCHREIBUNG VON SÄTTIGUNGS/NICHTSÄTTIGUNG
Wie zuvor erwähnt, zeigt T 611 an, ob Operationen optio­ nal sättigen. Wenn das Ergebnis einer Operation bei akti­ vierter Sättigung den Bereich der Daten überläuft oder un­ terläuft, so wird das Ergebnis geklammert. Klammern bedeu­ tet, daß das Ergebnis auf einen Maximal- oder Minimalwert gesetzt wird, sofern das Ergebnis den Maximal- oder Minimal­ wert des Bereichs überschreiten sollte. Im Falle eines Un­ terlaufs klammert die Sättigung das Ergebnis auf den klein­ sten Wert in dem Bereich und im Falle eines Überlaufs auf den höchsten Wert. Der erlaubte Bereich für jedes Datenfor­ mat ist in Tabelle 1 gezeigt.
Tabelle 1
Wie oben erwähnt, zeigt T 611 an, ob sättigende Opera­ tionen ausgeführt werden. Folglich würde bei Verwendung ei­ nes vorzeichenlosen Byte-Datenformats, wenn das Ergebnis ei­ ner Operation gleich 258 ist und die Sättigung freigegeben wurde, das Ergebnis auf 255 geklammert werden, bevor es in das Zielregister der Operation gespeichert wird. In ähnli­ cher Weise würde, wenn das Ergebnis einer Operation gleich - 32999 ist und der Prozessor 109 das vorzeichenbehaftete Wort-Datenformat mit freigegebener Sättigung verwendet, das Ergebnis auf -32768 geklammert werden, bevor es in das Ziel­ register der Operation gespeichert wird.
SCHIEBEOPERATION
Bei einem Ausführungsbeispiel der vorliegenden Erfindung wird die Leistungsfähigkeit von CSC-Anwendungen nicht nur dadurch verbessert, daß ein Standard-CISC-Befehlssatz (Operationen an ungepackten Daten) unterstützt wird, sondern auch, indem eine Schiebeoperation an gepackten Daten unter­ stützt wird. Die gepackte Verschiebung kann verwendet wer­ den, um die Geschwindigkeit von Festkomma-Implementierungen der schnellen Fouriertransformation, der Cosinustransforma­ tion und anderer Verarbeitungsalgorithmen für digitale Bil­ der und Audiosignale zu erhöhen.
Bei einem Ausführungsbeispiel der vorliegenden Erfindung enthält das Register SRC1 die zu verschiebenden Daten (Quelle 1), das Register SRC2 enthält die Daten (Quelle 2), die die Anzahl der Verschiebungen darstellen, und das Regi­ ster DEST soll das Ergebnis der Verschiebung (Ergebnis) ent­ halten.
D. h., Quelle 1 enthält jedes Datenelement, das unabhängig um die Verschiebeanzahl verschoben wird. Bei einem Ausfüh­ rungsbeispiel wird Quelle 2 als ein vorzeichenloser 64-Bit- Skalar interpretiert. Bei einem anderen Ausführungsbeispiel liegt Quelle 2 als gepackte Daten vor und enthält Verschiebe­ zählungen für die jeweils entsprechenden Datenelemente in Quelle 1.
Bei einem Ausführungsbeispiel der vorliegenden Erfindung werden sowohl arithmetische Verschiebungen als auch logische Verschiebungen unterstützt. Eine arithmetische Verschiebung verschiebt die Bits jedes Datenelements um eine vorgegebene Anzahl nach unten und füllt die Bits höherer Ordnung jedes Datenelements mit dem Anfangswert des Vorzeichenbits auf. Eine Verschiebungszahl größer als 7 bei gepackten Byte-Da­ ten, größer als 15 bei gepackten Wort-Daten oder größer als 31 bei gepackten Doppelworten bewirkt das Füllen des jewei­ ligen Ergebnis-Datentelements mit dem Anfangswert des Vor­ zeichenbits. Eine logische Verschiebung kann als Verschie­ bung der Bits nach oben oder nach unten arbeiten. Bei einer logischen Verschiebung nach rechts werden die höherwertigen Bits jedes Datenelements mit Nullen aufgefüllt. Eine logi­ sche Verschiebung nach links veranlaßt die am geringsten be­ werteten Bits jedes Datenelements, mit Nullen aufgefüllt zu werden.
Bei einem Ausführungsbeispiel der vorliegenden Erfindung werden das arithmetische Verschieben nach rechts, das logi­ sche Verschieben nach rechts und das logische Verschieben nach links für gepackte Bytes und gepackte Worte unter­ stützt. Bei einem anderen Ausführungsbeispiel der vorliegen­ den Erfindung werden dies Operationen außerdem für gepackte Doppelworte unterstützt.
Fig. 7 veranschaulicht ein Ausführungsbeispiel eines Verfahrens zum Ausführen einer Verschiebeoperation an ge­ packten Daten. Dieses Ausführungsbeispiel kann in dem Pro­ zessor 109 gemäß Fig. 2 implementiert werden.
Beim Schritt 701 decodiert der Decodierer 202 das Steu­ ersignal 207, das von dem Prozessor 109 empfangen wurde. Folglich decodiert der Decodierer 202: den Operationscode für die geeignete Schiebeoperation; die SRC1-Adresse 602, die SRC2-Adresse 603 und die DEST-Adresse 605 in den Ganz­ zahlregistern 209; das Vorliegen von Sättigung oder Nicht- Sättigung (nicht unbedingt erforderlich bei Schiebeoperatio­ nen), das Vorzeichenbehaftetsein oder die Vorzeichenlosig­ keit (wiederum nicht unbedingt erforderlich) und die Länge der Datenelemente in den gepackten Daten.
Beim Schritt 702 greift der Decodierer 202 über den in­ ternen Bus 205 auf diejenigen Ganzzahlregister 209 in der Registerdatei 204 zu, die durch die Adressen SRC1 602 und SRC2 603 vorgegeben sind. Die Ganzzahlregister 209 beliefern die Funktionseinheit 203 mit den im SRC1-Register 602 (Quelle 1) gespeicherten gepackten Daten und mit der skalaren Verschiebungszählung, die im Register SRC2 603 (Quelle 2) ge­ speichert ist. D. h., die Ganzzahlregister 209 übermitteln die gepackten Daten an die Funktionseinheit 203 über den in­ ternen Bus 205.
Beim Schritt 703 gibt der Decodierer 202 die Funktions­ einheit 203 frei zum Ausführen der geeigneten gepackten Schiebeoperation. Der Decodierer 202 übermittelt darüber hinaus über den internen Bus 205 die Größe der Datenele­ mente, die Art der Schiebeoperation und die Richtung der Verschiebung (für logische Verschiebungen).
Beim Schritt 710 bestimmt die Größe der Datenelemente, welcher Schritt als nächstes ausgeführt werden soll. Wenn die Größe der Datenelemente 8 Bits beträgt (Byte-Daten), dann führt die Funktionseinheit 203 den Schritt 712 aus. Wenn jedoch die Größe der Datenelemente in gepackten Daten 16 Bits (Wort-Daten) ist, dann führt die Funktionseinheit 203 den Schritt 714 aus. Bei einem Ausführungsbeispiel wer­ den nur gepackte Verschiebungen an 8-Bit- und 16-Bit-Daten­ elementen unterstützt. Bei einem anderen Ausführungsbeispiel jedoch werden außerdem gepackte Verschiebungen an 32-Bit-Da­ tenelementen unterstützt.
Angenommen, die Größe der Datenelemente ist 8 Bits, so wird Schritt 712 ausgeführt. Im Schritt 712 wird das folgen­ de ausgeführt: Die Bits 7 bis 0 der Quelle 1 werden um die Verschiebungszahl (Bits 63 bis 0 von Quelle 2) verschoben, wobei die Bits 7 bis 0 des Ergebnisses erzeugt werden. Bits 15 bis 8 von Quelle 1 werden um die Verschiebungszahl ver­ schoben, wobei die Ergebnisbits 15 bis 8 erzeugt werden. Die Bits 23 bis 16 der Quelle 1 werden um die Verschiebungszahl verschoben, wobei die Ergebnisbits 23 bis 16 erzeugt werden. Die Bits 31 bis 24 der Quelle 1 werden um die Verschiebungs­ zahl verschoben, wobei die Bits 31 bis 24 des Ergebnisses erzeugt werden. Die Bits 39 bis 32 der Quelle 1 werden um die Verschiebungszahl verschoben, wobei die Ergebnisbits 39 bis 32 erzeugt werden. Die Bits 47 bis 40 der Quelle 1 werden um die Verschiebungszahl verschoben, wobei die Ergebnisbits 47 bis 40 erzeugt werden. Die Bits 55 bis 48 der Quelle 1 werden um die Verschiebungszahl verschoben, wobei die Ergebnisbits 55 bis 48 erzeugt werden. Die Bits 63 bis 56 der Quelle 1 werden um die Verschiebungszahl verschoben, wobei die Ergeb­ nisbits 63 bis 56 erzeugt werden.
Angenommen, die Größe der Datenelemente beträgt 16 Bits, so wird der Schritt 714 ausgeführt. Im Schritt 714 wird das folgende ausgeführt. Die Bits 15 bis 0 der Quelle 1 werden um die Verschiebungszahl verschoben, wobei die Ergebnisbits 15 bis 0 erzeugt werden. Die Bits 31 bis 16 der Quelle 1 werden um die Verschiebungszahl verschoben, wobei die Ergebnisbits 31 bis 16 erzeugt werden. Die Bits 47 bis 32 der Quelle 1 werden um die Verschiebungszahl verschoben, wobei die Ergeb­ nisbits 47 bis 32 erzeugt werden. Die Bits 63 bis 48 der Quelle 1 werden um die Verschiebungszahl verschoben, wobei die Ergebnisbits 63 bis 48 erzeugt werden.
Bei einem Ausführungsbeispiel werden die Verschiebungen des Schritts 712 gleichzeitig ausgeführt. Bei einem anderen Ausführungsbeispiel jedoch werden diese Verschiebungen seri­ ell ausgeführt. In noch einem anderen Ausführungsbeispiel werden einige dieser Verschiebungen gleichzeitig und andere seriell ausgeführt. Dies trifft ebenso für die Verschiebun­ gen des Schritts 714 zu.
Beim Schritt 720 wird das Ergebnis in dem Register DEST gespeichert.
Tabelle 2 veranschaulicht die In-Register-Darstellung der gepackten arithmetischen Verschiebungsoperation nach rechts. Die erste Zeile von Bits ist die Darstellung der ge­ packten Daten von Quelle 1. Die zweite Zeile von Bits ist die Darstellung der Daten von Quelle 2. Die dritte Zeile von Bits ist die Darstellung der gepackten Daten des Ergebnisses. Die Zahl unter jedem Datenelementbit ist die Nummer des Daten­ elements. Beispielsweise ist das Quelle 1-Datenelement Nr. 3 gleich 100000002.
Tabelle 2
Tabelle 3 veranschaulicht die In-Register-Darstellung der gepackten logischen Schiebeoperation nach rechts an ge­ packten Byte-Daten.
Tabelle 3
Tabelle 4 veranschaulicht die In-Register-Darstellung der gepackten logischen Schiebeoperation nach links an ge­ packten Byte-Daten.
Tabelle 4
GEPACKTE-DATEN-SCHALTUNGEN
Bei einem Ausführungsbeispiel kann die Schiebeoperation an mehreren Datenelementen während der gleichen Anzahl von Taktzyklen wie bei einer einzelnen Schiebeoperation an unge­ packten Daten auftreten. Um eine Ausführung in der gleichen Anzahl von Taktzyklen zu erreichen, wird eine Parallelität verwendet. D. h., Register werden gleichzeitig instruiert, die Schiebeoperation an den Datenelementen auszuführen. Dies wird unten detaillierter erörtert. Fig. 8 veranschaulicht ein Ausführungsbeispiel eines Abschnitts einer Schaltung, die eine Schiebeoperation an gepackten Daten mit der glei­ chen Anzahl von Taktzyklen ausführen kann, wie eine Schiebe­ operation an ungepackten Daten.
Fig. 8 veranschaulicht die Verwendung einer modifizier­ ten Byte-Scheiben-Verschiebungsschaltung, der Byte-Scheiben- Stufei 899. Jede Byte-Scheibe mit Ausnahme der Byte-Scheibe für das am höchsten bewertete Datenelement enthält eine Schiebeeinheit und eine Bit-Steuerung. Die Byte-Scheibe des am höchsten bewerteten Datenelements benötigt nur eine Schiebeeinheit.
Die Schiebeeinheiti 811 und die Schiebeeinheiti+1 871 gestatten es jeweils 8 Bits von Quelle 1, um die Verschiebe­ anzahl verschoben zu werden. Bei einem Ausführungsbeispiel arbeitet jede Schiebeeinheit wie eine bekannte 8-Bit-Schieb­ eschaltung. Jede Schiebeeinheit hat einen Quelle 1-Eingang, einen Quelle 2-Eingang, einen Steuereingang, ein Nächste- Stufe-Signal, ein Letzte-Stufe-Signal und einen Ergebnis- Ausgang. Folglich hat die Schiebeeinheiti 811 einen Eingang für Quelle 1i 831, einen Eingang für Quelle 2 [63 : 0] 833, einen Eingang für das Steuersignali 801, ein Nächste-Stufei-Signal 813, ein Letzte-Stufei-Eingangssignal 812 und ein im Ergeb­ nisregisteri 851 gespeichertes Ergebnis. Folglich hat die Verschiebeeinheiti+1 871 ein Quelle 1i+1-Eingangssignal 832, ein Quelle 2 [63 : 0]-Eingangssignal 833, ein Steuereingangssi­ gnali+1 802, ein Nächste-Stufei+1-Signal 873, ein Letzte- Stufei+1-Eingangssignal 872 und ein im Ergebnisregisteri+1 852 gespeichertes Ergebnis.
Das Quelle 1-Eingangssignal ist üblicherweise ein 8-Bit- Abschnitt von Quelle 1. Die 8 Bits stellen die kleinste Art eines Datenelements dar, ein gepacktes Byte-Datenelement. Das Quelle 2-Eingangssignal stellt die Verschiebungszählung dar. Bei einem Ausführungsbeispiel empfängt jede Schiebeein­ heit die gleiche Verschiebungszahl von Quelle 2 [63 : 0] 833. Die Steuerung 800 der Operation übermittelt Steuersignale, um jede Schiebeeinheit zum Ausführen der erforderlichen Ver­ schiebung freizugeben. Die Steuersignale werden aus der Art der Verschiebung (arithmetisch/logisch) und der Richtung der Verschiebung bestimmt. Das Nächste-Stufe-Signal wird von der Bitsteuerung für diese Schiebeeinheit empfangen. Die Schieb­ eeinheit schiebt das am höchsten bewertete Bit hinaus/hinein auf das Nächste-Stufe-Signal, was von der Richtung der Ver­ schiebung (links/rechts) abhängt. In ähnlicher Weise schiebt jede Schiebeeinheit das am geringsten bewertete Bit hin­ aus/hinein auf das Letzte-Stufe-Signal, was von der Richtung der Verschiebung (rechts/links) abhängt. Das Letzte-Stufe- Signal wird von der Bitsteuereinheit der vorhergehenden Stufe empfangen. Der Ergebnisausgang repräsentiert das Er­ gebnis der Verschiebeoperation an dem Abschnitt der Quelle 1, an dem die Schiebeeinheit arbeitet.
Die Bitsteuerungi 820 wird von der Operationssteuerung 800 über die Gepackte-Daten-Freigabei 806 freigegeben. Die Bitsteuerungi 820 steuert das Nächste-Stufei-Signal 813 und das Letzte-Stufei+1-Signal 872. Es sei beispielsweise ange­ nommen, daß die Schiebeeinheiti 811 für die acht am gering­ sten bewerteten Bits von Quelle 1 verantwortlich ist, und daß die Schiebeeinheiti+1 871 für die nächsten acht Bits von Quelle 1 verantwortlich ist. Wenn eine Verschiebung an ge­ packten Bytes ausgeführt wird, gestattet es die Bitsteue­ rungi 820 den am geringsten bewerteten Bit der Schiebeein­ heiti+1 871 nicht, den am höchsten bewerteten Bit der Schie­ beeinheiti 811 übermittelt zu werden. Wird jedoch eine Ver­ schiebung an gepackten Worten ausgeführt, dann gestattet es die Bitsteuerungi 820 den am geringsten bewerteten Bit von der Schiebeeinheiti+1 871, dem am höchsten bewerteten Bit von der Schiebeeinheiti 811 übermittelt zu werden.
In Tabelle 1 wird beispielsweise eine arithmetische Ver­ schiebung nach rechts an gepackten Bytes ausgeführt. Es sei angenommen, daß die Schiebeeinheiti+1 871 am Datenelement 1 und die Schiebeeinheiti 811 am Datenelement 0 operiert. Die Schiebeeinheiti+1 871 schiebt ihr am geringsten bewertetes Bit hinaus. Die Operationssteuerung 800 bewirkt jedoch, daß die Bitsteuerungi 820 die Ausbreitung dieses von dem Letzte- Stufei+1-Signal 821 empfangenen Bits zum Nächste-Stufei-Si­ gnal 813 stoppt. Stattdessen füllt die Schiebeeinheiti 811 die höherwertigen Bits mit dem Vorzeichenbit, Quelle 1 [7].
Tabelle 5
Wenn jedoch eine arithmetische Verschiebung an gepackten Worten ausgeführt wird, dann wird das am geringsten bewer­ tete Bit der Schiebeeinheiti+1 871 dem am höchsten bewerte­ ten Bit der Schiebeeinheiti 811 übermittelt. Tabelle 6 ver­ anschaulicht dieses Ergebnis. Diese Übermittlung wird ebenso für gepackte Doppelworte gestattet.
Tabelle 6
Jede Schiebeeinheit ist optional mit einem Ergebnisregi­ ster verbunden. Das Ergebnisregister speichert vorübergehend das Ergebnis der Schiebeoperation, bis das vollständige Er­ gebnis, Ergebnis [63 : 0] 860, an das Register DEST übermittelt werden kann.
Für eine vollständige gepackte 64-Bit-Verschiebeschal­ tung werden 8 Schiebeeinheiten und 7 Bitsteuereinheiten ver­ wendet. Eine solche Schaltung kann darüber hinaus verwendet werden, um eine Verschiebung an ungepackten 64-Bit-Daten auszuführen, wobei unter Verwendung der gleichen Schaltung die ungepackte Verschiebeoperation und die gepackte Ver­ schiebeoperation ausgeführt werden.
Es wurde ein Prozessor beschrieben, der Verschiebeopera­ tionen aufweist, die an mehreren Datenelementen arbeiten.

Claims (5)

1. Prozessor mit einem Decodierer und einer mit dem De­ codierer gekoppelten Schaltung,
wobei der Decodierer einen Befehl oder ein Steuersignal decodieren kann, wobei der Befehl oder das Steuersignal eine Schiebeoperation spezifizieren, die an mehreren, in einer Sequenz gepackter Daten enthaltenen gepackten Datenelementen ausgeführt werden soll, und wobei der Befehl oder das Steu­ ersignal eine variable Anzahl und eine variable Größe der gepackten Datenelemente einstellt; und
wobei die mit dem Decodierer gekoppelte Schaltung die gepackten Datenelemente gleichzeitig und unabhängig vonein­ ander in Abhängigkeit von dem Befehl oder dem Steuersignal verschieben kann.
2. Prozessor nach Anspruch 1, dadurch gekennzeichnet, daß die Schaltung die gepackten Datenelemente logisch ver­ schieben kann, wobei eine der Verschiebungsanzahl entspre­ chende Anzahl von Bits in jedem gepackten Datenelement mit Nullen aufgefüllt wird.
3. Prozessor nach Anspruch 1 oder 2, dadurch gekenn­ zeichnet, daß die Schaltung arithmetische Verschiebungen der gepackten Datenelemente ausführen kann, wobei eine der Ver­ schiebungsanzahl entsprechende Anzahl von Bits in jedem ge­ packten Datenelement mit einem Vorzeichenbit des entspre­ chenden gepackten Datenelements aufgefüllt wird.
4. Prozessor nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß die Sequenz gepackter Daten zwei gepack­ te Datenelemente enthält, die jeweils 32 Bits aufweisen.
5. Prozessor nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß die Sequenz gepackter Daten vier gepack­ te Datenelemente enthält, wobei jedes Datenelement ein ge­ packtes Wort mit 16 Bits darstellt.
DE19581873T 1994-12-01 1995-12-01 Prozessor zum Ausführen von Schiebeoperationen an gepackten Daten Expired - Lifetime DE19581873C2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US34973094A 1994-12-01 1994-12-01
PCT/US1995/015682 WO1996017289A1 (en) 1994-12-01 1995-12-01 A novel processor having shift operations

Publications (2)

Publication Number Publication Date
DE19581873T1 DE19581873T1 (de) 1997-12-11
DE19581873C2 true DE19581873C2 (de) 1999-04-15

Family

ID=23373704

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19581873T Expired - Lifetime DE19581873C2 (de) 1994-12-01 1995-12-01 Prozessor zum Ausführen von Schiebeoperationen an gepackten Daten

Country Status (9)

Country Link
US (2) US5666298A (de)
JP (2) JPH10512069A (de)
KR (1) KR100252411B1 (de)
AU (1) AU4595596A (de)
BR (1) BR9509841A (de)
CA (1) CA2205830C (de)
DE (1) DE19581873C2 (de)
WO (1) WO1996017289A1 (de)
ZA (1) ZA9510127B (de)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6738793B2 (en) * 1994-12-01 2004-05-18 Intel Corporation Processor capable of executing packed shift operations
US6275834B1 (en) * 1994-12-01 2001-08-14 Intel Corporation Apparatus for performing packed shift operations
US6295599B1 (en) * 1995-08-16 2001-09-25 Microunity Systems Engineering System and method for providing a wide operand architecture
US5953241A (en) * 1995-08-16 1999-09-14 Microunity Engeering Systems, Inc. Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction
US7301541B2 (en) * 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US5742840A (en) 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US6006316A (en) * 1996-12-20 1999-12-21 International Business Machines, Corporation Performing SIMD shift and arithmetic operation in non-SIMD architecture by operation on packed data of sub-operands and carry over-correction
JP3790607B2 (ja) * 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US7197625B1 (en) 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US5933650A (en) 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US5864703A (en) * 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US6243803B1 (en) * 1998-03-31 2001-06-05 Intel Corporation Method and apparatus for computing a packed absolute differences with plurality of sign bits using SIMD add circuitry
US6098087A (en) * 1998-04-23 2000-08-01 Infineon Technologies North America Corp. Method and apparatus for performing shift operations on packed data
WO2000008552A1 (en) 1998-08-06 2000-02-17 Koninklijke Philips Electronics N.V. Data processor and method of processing data
GB0024312D0 (en) 2000-10-04 2000-11-15 Advanced Risc Mach Ltd Single instruction multiple data processing
US7711763B2 (en) 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
US7181484B2 (en) 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
US7162621B2 (en) 2001-02-21 2007-01-09 Mips Technologies, Inc. Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration
US7599981B2 (en) 2001-02-21 2009-10-06 Mips Technologies, Inc. Binary polynomial multiplier
US7685212B2 (en) * 2001-10-29 2010-03-23 Intel Corporation Fast full search motion estimation with SIMD merge instruction
US7818356B2 (en) 2001-10-29 2010-10-19 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction
US6986023B2 (en) * 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
GB2411974C (en) * 2003-12-09 2009-09-23 Advanced Risc Mach Ltd Data shift operations
US20060031272A1 (en) * 2004-08-05 2006-02-09 International Business Machines Corporation Alignment shifter supporting multiple precisions
US8502819B1 (en) 2007-12-17 2013-08-06 Nvidia Corporation System and method for performing ray tracing node traversal in image rendering
US8289324B1 (en) 2007-12-17 2012-10-16 Nvidia Corporation System, method, and computer program product for spatial hierarchy traversal
JP5182053B2 (ja) * 2008-12-10 2013-04-10 日本電気株式会社 バレルシフタ装置及びバレルシフト方法
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
US8564589B1 (en) 2010-05-17 2013-10-22 Nvidia Corporation System and method for accelerated ray-box intersection testing
US8555036B1 (en) 2010-05-17 2013-10-08 Nvidia Corporation System and method for performing predicated selection of an output register
US9442731B2 (en) * 2014-03-13 2016-09-13 Intel Corporation Packed two source inter-element shift merge processors, methods, systems, and instructions

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2748991C2 (de) * 1976-11-11 1983-09-29 International Business Machines Corp., 10504 Armonk, N.Y. Einrichtung zur Umsetzung von Dezimalzahlen
DE3513473A1 (de) * 1984-04-19 1985-10-24 The Perkin-Elmer Corp., Norwalk, Conn. Hochgeschwindigkeits-datenschieberegister

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3711692A (en) * 1971-03-15 1973-01-16 Goodyear Aerospace Corp Determination of number of ones in a data field by addition
US3723715A (en) * 1971-08-25 1973-03-27 Ibm Fast modulo threshold operator binary adder for multi-number additions
US4161784A (en) * 1978-01-05 1979-07-17 Honeywell Information Systems, Inc. Microprogrammable floating point arithmetic unit capable of performing arithmetic operations on long and short operands
US4418383A (en) * 1980-06-30 1983-11-29 International Business Machines Corporation Data flow component for processor and microprocessor systems
US4393468A (en) * 1981-03-26 1983-07-12 Advanced Micro Devices, Inc. Bit slice microprogrammable processor for signal processing applications
US4451883A (en) * 1981-12-01 1984-05-29 Honeywell Information Systems Inc. Bus sourcing and shifter control of a central processing unit
US4498177A (en) * 1982-08-30 1985-02-05 Sperry Corporation M Out of N code checker circuit
US4583197A (en) * 1983-06-30 1986-04-15 International Business Machines Corporation Multi-stage pass transistor shifter/rotator
US4707800A (en) * 1985-03-04 1987-11-17 Raytheon Company Adder/substractor for variable length numbers
JPH073653B2 (ja) * 1987-06-30 1995-01-18 三菱電機株式会社 シフタ
US4989168A (en) * 1987-11-30 1991-01-29 Fujitsu Limited Multiplying unit in a computer system, capable of population counting
US4931971A (en) * 1989-01-13 1990-06-05 International Business Machines Corporation Partial decode shifter/rotator
KR920007505B1 (ko) * 1989-02-02 1992-09-04 정호선 신경회로망을 이용한 곱셈기
JPH03248226A (ja) * 1990-02-26 1991-11-06 Nec Corp マイクロプロセッサ
US5327571A (en) * 1990-04-03 1994-07-05 Advanced Micro Devices, Inc. Processor having decoder for decoding unmodified instruction set for addressing register to read or write in parallel or serially shift in from left or right
US5201056A (en) * 1990-05-02 1993-04-06 Motorola, Inc. RISC microprocessor architecture with multi-bit tag extended instructions for selectively attaching tag from either instruction or input data to arithmetic operation output
US5418915A (en) * 1990-08-08 1995-05-23 Sumitomo Metal Industries, Ltd. Arithmetic unit for SIMD type parallel computer
WO1992009968A1 (en) * 1990-11-27 1992-06-11 Cray Research, Inc. VECTOR WORD SHIFT BY Vo SHIFT COUNT IN VECTOR SUPERCOMPUTER PROCESSOR
US5187679A (en) * 1991-06-05 1993-02-16 International Business Machines Corporation Generalized 7/3 counters
US5408670A (en) * 1992-12-18 1995-04-18 Xerox Corporation Performing arithmetic in parallel on composite operands with packed multi-bit components
US5379240A (en) * 1993-03-08 1995-01-03 Cyrix Corporation Shifter/rotator with preconditioned data
US5477543A (en) * 1994-08-03 1995-12-19 Chromatic Research, Inc. Structure and method for shifting and reordering a plurality of data bytes

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2748991C2 (de) * 1976-11-11 1983-09-29 International Business Machines Corp., 10504 Armonk, N.Y. Einrichtung zur Umsetzung von Dezimalzahlen
DE3513473A1 (de) * 1984-04-19 1985-10-24 The Perkin-Elmer Corp., Norwalk, Conn. Hochgeschwindigkeits-datenschieberegister

Also Published As

Publication number Publication date
AU4595596A (en) 1996-06-19
WO1996017289A1 (en) 1996-06-06
JP2006172486A (ja) 2006-06-29
JP3924307B2 (ja) 2007-06-06
KR100252411B1 (ko) 2000-04-15
CA2205830C (en) 2000-08-15
CA2205830A1 (en) 1996-06-06
US5818739A (en) 1998-10-06
JPH10512069A (ja) 1998-11-17
ZA9510127B (en) 1996-06-06
BR9509841A (pt) 1997-11-25
DE19581873T1 (de) 1997-12-11
US5666298A (en) 1997-09-09

Similar Documents

Publication Publication Date Title
DE19581873C2 (de) Prozessor zum Ausführen von Schiebeoperationen an gepackten Daten
DE60019148T2 (de) Dma-deskriptor-architektur mit verknüpfter liste
DE69730276T2 (de) Vorrichtung und Verfahren zur Erleichterung der Vermeidung von exzeptionellen bestimmten Zuständen während des Ablaufs eines Programmes
DE69834739T2 (de) Ausgleichen von daten die zwischen verschiedenen leitern fliessen die auf unterschiedlichen frequenzen operieren
DE2350884C2 (de) Adreßumsetzungseinheit
DE69636002T2 (de) Digitalrechnersystem mit Register für virtuelle Gerätetreiber
DE19914210B4 (de) Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung
DE69233361T2 (de) Ein-Chip-Mikrocomputer
DE3151745C2 (de)
DE602004012106T2 (de) Multikanal-DMA mit gemeinsamem FIFO-Puffer
DE112004002259B4 (de) Zugriff auf private Daten zum Status einer datenverarbeitenden Maschine von einem öffentlich zugänglichen Speicher
DE10297624T5 (de) Steuerung von Kompatibilitätsgraden von Binärcode-Übersetzungen zwischen Befehlssatzarchitekturen
DE19735348A1 (de) Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern
DE112013005236T5 (de) Verfahren und Vorrichtung für Integralbild-Berechnungsbefehle
DE3508640A1 (de) Computersystem zur implementierung eines ereignisgesteuerten simulationsalgorithmus
DE102012213631A1 (de) Zwischenspeichern von Kontextdatenstrukturen in einer Vektorregisterdatei zum Beibehalten von Zustandsdaten in einer Multithread-Bildverarbeitungs-Pipeline
DE102007045187A1 (de) Verfahren und Vorrichtung zum Ausführen einer logischen Vergleichsoperation
DE112009000344T5 (de) Zugriffsrechte auf eine Speicher-Map
DE102008061062A1 (de) Befehle und Logik zum Durchführen von Maskenlade- und -speicheroperationen
DE19545179A1 (de) Vektorspeicheroperationen
DE112013005343T5 (de) Befehle für Codierungsalgorithemen mit gleitendem Fenster
DE112013003741T5 (de) Systeme, Vorrichtungen und Verfahren zum Durchführen einer Konfliktdetektion unf einer Übertragung von Inhalten eines Registers an Datenelementpositionen eines anderen Registers
DE19920214A1 (de) Verfahren und Einrichtung zum Konvertieren einer Zahl zwischen einem Gleitkommaformat und einem Ganzzahlformat
DE69732793T2 (de) Acht-bit-mikrokontroller mit risc-architektur
DE2718110A1 (de) Datenverarbeitungseinheit

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
D2 Grant after examination
8364 No opposition during term of opposition
R071 Expiry of right