DE19581873C2 - Prozessor zum Ausführen von Schiebeoperationen an gepackten Daten - Google Patents
Prozessor zum Ausführen von Schiebeoperationen an gepackten DatenInfo
- 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
Links
- 238000006073 displacement reaction Methods 0.000 claims description 3
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 23
- 102100026150 Tyrosine-protein kinase Fgr Human genes 0.000 description 23
- 238000000034 method Methods 0.000 description 9
- 238000007792 addition Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000009738 saturating Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 240000008881 Oenanthe javanica Species 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 210000004072 lung Anatomy 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding 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.
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.
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.
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.
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.
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.
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.
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.
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.
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 3 veranschaulicht die In-Register-Darstellung
der gepackten logischen Schiebeoperation nach rechts an ge
packten Byte-Daten.
Tabelle 4 veranschaulicht die In-Register-Darstellung
der gepackten logischen Schiebeoperation nach links an ge
packten Byte-Daten.
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].
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.
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.
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.
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)
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)
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)
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 |
-
1995
- 1995-11-29 ZA ZA9510127A patent/ZA9510127B/xx unknown
- 1995-12-01 KR KR1019970703653A patent/KR100252411B1/ko not_active IP Right Cessation
- 1995-12-01 WO PCT/US1995/015682 patent/WO1996017289A1/en active IP Right Grant
- 1995-12-01 DE DE19581873T patent/DE19581873C2/de not_active Expired - Lifetime
- 1995-12-01 CA CA002205830A patent/CA2205830C/en not_active Expired - Fee Related
- 1995-12-01 AU AU45955/96A patent/AU4595596A/en not_active Abandoned
- 1995-12-01 BR BR9509841A patent/BR9509841A/pt not_active IP Right Cessation
- 1995-12-01 JP JP8519115A patent/JPH10512069A/ja not_active Withdrawn
-
1996
- 1996-08-22 US US08/701,564 patent/US5666298A/en not_active Expired - Lifetime
-
1997
- 1997-04-17 US US08/840,245 patent/US5818739A/en not_active Expired - Lifetime
-
2005
- 2005-12-19 JP JP2005364534A patent/JP3924307B2/ja not_active Expired - Lifetime
Patent Citations (2)
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 |