DE19914617C2 - Prozessor und Verfahren zum Ausführen von Befehlen an gepackten Daten - Google Patents
Prozessor und Verfahren zum Ausführen von Befehlen an gepackten DatenInfo
- Publication number
- DE19914617C2 DE19914617C2 DE19914617A DE19914617A DE19914617C2 DE 19914617 C2 DE19914617 C2 DE 19914617C2 DE 19914617 A DE19914617 A DE 19914617A DE 19914617 A DE19914617 A DE 19914617A DE 19914617 C2 DE19914617 C2 DE 19914617C2
- Authority
- DE
- Germany
- Prior art keywords
- data
- packed
- data elements
- packed data
- register
- 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
- 238000000034 method Methods 0.000 title claims description 34
- 238000012545 processing Methods 0.000 claims description 20
- 230000008569 process Effects 0.000 claims description 16
- 108090000623 proteins and genes Proteins 0.000 claims 1
- 238000007667 floating Methods 0.000 description 31
- 238000010586 diagram Methods 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 238000007792 addition Methods 0.000 description 4
- 239000000872 buffer Substances 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000008030 elimination Effects 0.000 description 3
- 238000003379 elimination reaction Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 230000010076 replication Effects 0.000 description 3
- GSDSWSVVBLHKDQ-UHFFFAOYSA-N 9-fluoro-3-methyl-10-(4-methylpiperazin-1-yl)-7-oxo-2,3-dihydro-7H-[1,4]oxazino[2,3,4-ij]quinoline-6-carboxylic acid Chemical compound FC1=CC(C(C(C(O)=O)=C2)=O)=C3N2C(C)COC3=C1N1CCN(C)CC1 GSDSWSVVBLHKDQ-UHFFFAOYSA-N 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000001356 surgical procedure Methods 0.000 description 2
- 238000013475 authorization Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 150000001768 cations Chemical class 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000002002 slurry Substances 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Classifications
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3875—Pipelining a single stage, e.g. superpipelining
-
- 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/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- 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/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
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- 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
-
- 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
-
- 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/3017—Runtime instruction translation, e.g. macros
-
- 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/30181—Instruction operation extension or modification
-
- 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/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
Die Erfindung bezieht sich auf einen Prozessor mit
einer Mehrzahl von Registern und einer Registerumbenennungs
einheit, die mit der Mehrzahl von Registern gekoppelt ist,
um eine Architekturregisterdatei zum Speichern gepackter
Datenoperanden zur Verfügung zu stellen, wobei jeder der
gepackten Datenoperanden eine Mehrzahl von Datenelementen
aufweist. Ferner bezieht sich die Erfindung auf ein Verfah
ren zum Ausführen eines Makrobefehls in einem solchen Pro
zessor. Dabei verwendet der Prozessor beispielsweise die
SIMD-Technologie.
Multimedia-Anwendungen, wie beispielsweise 2D/3D-Gra
fikanwendungen, Bildverarbeitung, Videokompression/Dekom
pression, Spracherkennungsalgorithmen und Audioverarbeitun
gen erfordern oftmals, daß die gleiche Operation an einer
großen Anzahl von Datenelementen ausgeführt werden soll (was
als "Datenparallelität") bezeichnet wird. Jede Art von
Multimediaanwendungen implementiert typischerweise einen
oder mehrere Algorithmen, die eine Anzahl von Gleitkomma-
oder Ganzzahloperationen, wie beispielsweise Addieren (ADD)
oder Multiplizieren (MUL) erfordern. Indem Makrobefehle zur
Verfügung gestellt werden, deren Ausführung einen Prozessor
veranlaßt, die gleiche Operation an mehreren Datenelementen
parallel auszuführen (Einzelbefehl-Mehrfachdaten(SIMD)-Tech
nologie, wie sie beispielsweise von der Pentium®-Prozessor-
Architektur und dem MMX-Befehlssatz verwendet wird), wurde
eine signifikante Verbesserung bei der Leistung von Multime
dia-Anwendungen ermöglicht (Pentium® und MMXTM sind eingetra
gene Marken beziehungsweise Handelsbezeichnungen der Intel
Corporation in Santa Clara, Kalifornien).
Die SIMD-Technologie ist insbesondere für solche Syste
me geeignet, die gepackte Datenformate vorsehen. Ein gepacktes
Datenformat ist ein solches, bei dem die Bits in einem
Register logisch in eine Anzahl von Datenelementen fester
Größe unterteilt sind, wobei jedes Datenelement einen sepa
raten Wert repräsentiert. Beispielsweise kann ein 64-Bit-Re
gister in vier 16-Bit-Elemente aufgeteilt werden, von denen
jedes einen separaten 16-Bit-Wert repräsentiert. Gepackte-
Daten-Befehle können dann separat jedes Element in diesen
gepackten Daten parallel verarbeiten.
Operationen an gepackten Daten sowie ein Prozessor zur
Ausführung derartiger Operationen sind beispielsweise in
WO 97/08608 beschrieben.
Es wird auf Fig. 1 Bezug genommen, in der ein Beispiel
eines Gepackte-Daten-Befehls veranschaulicht ist. Bei diesem
Beispiel addiert ein gepackter ADD-Befehl (beispielsweise
ein SIMD-ADD-Befehl) zugehörige Datenelemente eines ersten
gepackten Datenoperanden X und eines zweiten gepackten Da
tenoperanden Y, um ein Ergebnis Z gepackter Daten zu er
zeugen, d. h. X0 + Y0 = Z0 X1 + Y1 = Z1 X2 + Y2 = Z2 und X3 + Y3 = Z3. Das Packen
vieler Datenelemente in ein Register bzw. einen Speicher
platz und das Benutzen einer parallelen Hardware-Ausführung
gestattet es der SIMD-Architektur, mehrere Operationen
gleichzeitig durchzuführen, was zu einer signifikanten Lei
stungsverbesserung führt. Beispielsweise können bei diesem
Beispiel vier einzelne Ergebnisse in derselben Zeit erlangt
werden, die zuvor erforderlich war, um ein einziges Ergebnis
zu gewinnen.
Bei dem in WO 97/08608 beschriebenen Prozessor werden
die Operationen stets an allen Datenelementen parallel
durchgeführt. Ein großer Teil der vorhandenen Software ist
für skalare Befehle geschrieben, d. h. für Befehle, die an
Daten operieren, die nur ein Datenelement in einem Register
für gepackte Daten umfassen, welches eine geringere Breite
als das Register hat. Betrachtet man den Umfang der Soft
ware, die für skalare Architekturen (z. B. Einzelbefehl-Ein
zeldaten(SISD)-Architekturen), die skalare Operationen an
Gleitkommadaten einfacher Genauigkeit, Gleitkommadaten dop
pelter Genauigkeit und Ganzzahldaten benutzen, geschrieben
worden ist, so ist es eine Aufgabe der Erfindung, Ent
wicklern die Option zur Verfügung zu stellen, ihre Software
auf Architekturen zu portieren, die Befehle an gepackten
Daten unterstützt, wie beispielsweise SIMD-Architekturen,
ohne daß deren Software umgeschrieben werden muß und/oder
neue Befehle gelernt werden müssen.
Diese Aufgabe wird erfindungsgemäß durch einen Prozes
sor mit den Merkmalen des Patentanspruchs 1 bzw. ein Verfah
ren mit den Merkmalen des Patentanspruchs 6 gelöst.
Es werden ein Verfahren und eine Vorrichtung (Prozessor)
zum Ausführen von Gepackte-Daten-Befehlen für eine partielle
Breite angegeben. Gemäß einem Aspekt der Erfindung enthält
ein Prozessor eine Mehrzahl von Registern, eine mit der
Mehrzahl von Registern gekoppelte Registerumbenennungseinheit,
einen mit der Registerumbenennungseinheit
gekoppelten Decodierer und eine mit dem Decodierer gekop
pelte Ausführungseinheit partieller Breite. Die Registerum
benennungseinheit stellt eine Architekturregisterdatei zur
Verfügung, um gepackte Datenoperanden zu speichern, von
denen jeder eine Mehrzahl von Datenelementen enthält. Der
Decodierer ist so konfiguriert, daß er einen ersten und
einen zweiten Befehlssatz decodieren kann, wobei jeder
Befehl wenigstens ein Register in der Architekturregisterda
tei angibt. Jeder der Befehle des ersten Befehlssatzes spe
zifiziert Operationen, die an sämtlichen der in dem wenig
stens einen spezifizierten Register gespeicherten Datenele
mente ausgeführt werden sollen. Im Unterschied dazu spezifi
ziert jeder der Befehle des zweiten Befehlssatzes Operatio
nen, die nur an einer Untermenge der in dem wenigstens einen
spezifizierten Register gespeicherten Datenelemente ausge
führt werden sollen. Die Ausführungseinheit partieller Brei
te ist so konfiguriert, daß sie von sowohl dem ersten als
auch von dem zweiten Satz von Befehlen spezifizierte Opera
tionen ausführen kann.
Vorteilhafte Weiterbildungen der Erfindung sind in den
Unteransprüchen gekennzeichnet.
Im folgenden wird die Erfindung anhand von in der
Zeichnung beschriebenen Ausführungsbeispielen näher erläu
tert. In der Zeichnung zeigen:
Fig. 1 einen gepackten ADD-Befehl, der zugehörige
Datenelemente aus einem ersten gepackten Datenoperanden und
einem zweiten gepackten Datenoperanden addiert.
Fig. 2A ist eine vereinfachte Blockdarstellung, die
ein beispielhaftes Computersystem nach einem Ausführungsbei
spiel der Erfindung veranschaulicht.
Fig. 2B ist eine vereinfachte Blockdarstellung, die
einen Beispielsatz logischer Register gemäß einem Ausfüh
rungsbeispiel der Erfindung veranschaulicht.
Fig. 2C ist eine vereinfachte Blockdarstellung, die
Beispielsätze logischer Register gemäß einem weiteren Aus
führungsbeispiel der Erfindung veranschaulicht.
Fig. 3 ist ein Ablaufdiagramm, das die Befehlsausfüh
rung nach einem Ausführungsbeispiel der Erfindung veran
schaulicht.
Fig. 4 veranschaulicht das Ergebnis der Ausführung
eines Befehls für eine partielle Breite gepackter Daten
gemäß den verschiedenen Ausführungsbeispielen der Erfindung.
Fig. 5A veranschaulicht eine Schaltungsanordnung zum
Ausführen eines Befehls für gepackte Daten voller Breite und
für gepackte Daten partieller Breite gemäß einem Ausfüh
rungsbeispiel der Erfindung.
Fig. 5B veranschaulicht eine Schaltungsanordnung zum
Ausführen von Befehlen an gepackten Daten voller Breite und
partieller Breite gemäß einem weiteren Ausführungsbeispiel
der Erfindung.
Fig. 5C veranschaulicht eine Schaltungsanordnung zum
Ausführen von Befehlen an gepackten Daten voller Breite und
partieller Breite gemäß einem weiteren Ausführungsbeispiel
der Erfindung.
Fig. 6 veranschaulicht eine ADD-Ausführungseinheit und
eine MUL-Ausführungseinheit, die in der Lage sind, als vier
separate ADD-Ausführungseinheiten bzw. vier separate MUL-
Ausführungseinheiten zu arbeiten, gemäß einer beispielhaften
Prozessorimplementierung von SIMD.
Fig. 7A-7B veranschaulichen eine Operation an
gepackten Daten voller Breite und eine Operation an gepack
ten Daten partieller Breite, die in einer "gestaffelten"
Weise ausgeführt werden.
Fig. 8A veranschaulicht eine Schaltungsanordnung
innerhalb eines Prozessors, die auf Operanden voller Breite
aus logischen Registern zugreift, während sie jeweils Opera
tionen an der halben Breite der Operanden ausführt.
Fig. 8B ist ein Zeitdiagramm, das die Schaltungsanord
nung gemäß Fig. 8A weiter veranschaulicht.
Fig. 9 veranschaulicht ein Ausführungsbeispiel einer
Außer-der-Reihe-Pipeline zum Ausführen von Operationen an
Operanden in einer "gestaffelten" Weise, indem ein Makrobe
fehl in eine Mehrzahl von Mikrobefehlen konvertiert wird,
die jeweils einen Abschnitt des Operanden voller Breite
bearbeiten.
Fig. 10 ist ein Zeitschaubild, das das in Fig. 9
beschriebene Ausführungsbeispiel weiter veranschaulicht.
Fig. 11 ist ein Blockschaltbild, das die Dekodierlogik
veranschaulicht, die benutzt werden kann, um die decodie
rende Verarbeitung gemäß einem Ausführungsbeispiel der
Erfindung durchzuführen.
Es werden ein Verfahren und eine Vorrichtung zum Aus
führen von Befehlen an gepackten Daten partieller Breite
beschrieben. Hierbei wird die Bezeichnung "Befehl an gepack
ten Daten voller Breite" verwendet, um einen Befehl an
gepackten Daten (z. B. einen SIMD-Befehl) zu bezeichnen, der
an sämtlichen Datenelementen wenigstens eines gepackten
Datenoperanden ausgeführt wird. Im Unterschied dazu bezeich
net der Begriff "Befehl an gepackten Daten partieller Brei
te" ganz allgemein einen Befehl an gepackten Daten, der nur
eine Untermenge der Datenelemente des wenigstens einen
gepackten Datenoperanden verarbeiten soll und der ein
gepacktes Datenergebnis (beispielsweise an eine Registerda
tei gepackter Daten) zurückgibt. Beispielsweise kann ein
skalarer SIMD-Befehl nur ein Ergebnis einer Operation zwi
schen dem am geringsten bewerteten Paar von Datenelementen
der gepackten Datenoperanden erfordern. Bei diesem Beispiel
können die verbleibenden Datenelemente des gepackten Daten
ergebnisses unberücksichtigt bleiben, da sie keinen Einfluß
auf den skalaren SIMD-Befehl haben (beispielsweise können
die verbleibenden Datenelemente beliebigen Inhalts sein).
Gemäß den verschiedenen Ausführungsbeispielen der Erfindung
können Ausführungseinheiten so konfiguriert werden, daß sie
effizient sowohl Befehle an gepackten Daten voller Breite
(z. B. SIMD-Befehle) als auch einen Satz von Befehlen an
gepackten Daten partieller Breite (z. B. skalare SIMD-Befeh
le) unterbringen können.
In der folgenden detaillierten Beschreibung werden aus
Gründen der Erläuterung zahlreiche spezielle Details angege
ben, um ein besseres Verständnis der Erfindung zu erreichen.
Für einen Fachmann ist es jedoch klar, daß diese speziellen
Details nicht verwendet werden müssen, um die Erfindung aus
zuführen. An anderen Stellen werden gut bekannte Einrichtun
gen, Strukturen, Schnittstellen und Prozesse nicht oder nur
in Blockdarstellung gezeigt.
Betrachtet man den Umfang der Software, die für skalare
Architekturen (z. B. Einzelbefehl-Einzeldaten(SISD)-Architek
turen), die skalare Operationen an Gleitkommadaten einfacher
Genauigkeit, Gleitkommadaten doppelter Genauigkeit und Ganz
zahldaten benutzen, geschrieben worden ist, so ist es wün
schenswert, Entwicklern die Option zur Verfügung zu stellen,
ihre Software auf Architekturen zu portieren, die Befehle an
gepackten Daten unterstützt, wie beispielsweise SIMD-Archi
tekturen, ohne daß deren Software umgeschrieben werden muß
und/oder neue Befehle gelernt werden müssen. Durch die
Schaffung von Befehlen an gepackten Daten partieller Breite
kann eine einfache Übersetzung alten skalaren Code in skala
ren gepackten Datencode transformieren. Beispielsweise wäre
es sehr leicht für einen Compiler, skalare SIMD-Befehle aus
skalarem Code zu erzeugen. Wenn dann die Entwickler erken
nen, daß Abschnitte ihrer Software unter Verwendung von
SIMD-Befehlen optimiert werden können, können sie schritt
weise Vorteil aus den Befehlen für gepackte Daten ziehen.
Selbstverständlich ist es wahrscheinlich, daß die SIMD-Tech
nologie benutzende Computersysteme außerdem abwärtskompatibel
bleiben, indem sie SISD-Befehle ebenso unterstützen.
Jedoch machen es viele jüngere Architekturverbesserungen und
andere hier erörterte Faktoren vorteilhaft für Entwickler,
zur SIMD-Technologie überzugehen und sie auszunutzen, selbst
wenn zunächst nur skalare SIMD-Befehle verwendet werden.
Eine weitere Rechtfertigung für das Vorsehen von Befeh
len für gepackte Daten partieller Breite besteht in den vie
len Vorteilen, die erreicht werden können, indem nur eine
Untermenge des Operanden voller Breite bearbeitet wird, ein
schließlich des reduzierten Stromverbrauchs, der erhöhten
Geschwindigkeit, eines sauberen Ausnahmemodells und einer
erhöhten Speicherung. Wie unten erläutert wird, können auf
der Grundlage eines mit dem Befehl für gepackte Daten parti
eller Breite zur Verfügung gestellten Hinweises Stromeinspa
rungen erreicht werden, indem selektiv diejenigen Hardware
einheiten abgeschaltet werden, die zum Ausführen der gegen
wärtigen Operation nicht erforderlich sind.
Eine weitere Situation, in welcher es nicht erwünscht
ist, einen Befehl für gepackte Daten zu zwingen, einzelne
Ergebnisse für jedes Paar von Datenelementen zurückzugeben,
umfaßt arithmetische Operationen in einer Umgebung, die eine
Hardware partieller Breite zur Verfügung stellt. Infolge der
Kosten- und/oder Chip-Einschränkungen ist es üblich, für
bestimmte arithmetische Operationen, wie beispielsweise das
Dividieren, nicht die vollständige Unterstützung zur Verfü
gung zu stellen. Ihrer Natur nach ist die Divisionsoperation
sehr lang, selbst wenn Hardware voller Breite
(beispielsweise eine Eins-zu-eins-Korrespondenz zwischen
Ausführungseinheiten und Datenelementen) implementiert ist.
Folglich wird in einer Umgebung, die nur Operationen an
gepackten Daten voller Breite unterstützt, während Hardware
partieller Breite zur Verfügung gestellt wird, die Verzöge
rung noch länger. Wie unten näher veranschaulicht wird, kann
eine Operation für gepackte Daten partieller Breite, wie
beispielsweise eine Divisionsoperation für gepackte Daten
partieller Breite, es selektiv bestimmten Abschnitten ihrer
Operanden gestatten, die Divisionshardware zu umgehen. Auf
diese Weise wird kein Leistungsnachteil dadurch verursacht,
daß nur eine Untermenge der Datenelemente in den gepackten
Datenoperanden bearbeitet wird.
Zusätzlich können Ausnahmen, die in Verbindung mit
unwesentlichen Datenelementen entstehen, eine Konfusion für
den Entwickler und/oder eine Inkompatibilität zwischen SISD-
und SIMD-Maschinen verursachen. Folglich ist es vorteilhaft,
Ausnahmen nur für diejenigen Datenelemente zu berichten, für
die der Befehl gedacht ist. Eine Unterstützung von Befehlen
für gepackte Daten partieller Breite gestattet, daß ein vor
hersagbares Ausnahmemodell erreicht wird, indem das Auslösen
von Ausnahmebedingungen auf diejenigen begrenzt wird, die in
Verbindung mit solchen Datenelementen auftreten, die bear
beitet werden, oder bei welchen durch unwesentliche Daten
elemente erzeugte Ausnahmen wahrscheinlich eine Konfusion
oder Inkompatibilität zwischen SISD- und SIMD-Maschinen ver
ursachen würde.
Schließlich stellen bei Ausführungsbeispielen, bei
denen Abschnitte des gepackten Zieldatenoperanden nicht im
Ergebnis der Ausführung einer Operation für gepackte Daten
partieller Breite verfälscht werden, Befehle für gepackte
Daten partieller Breite effektiv einen zusätzlichen Regi
sterraum zum Speichern von Daten zur Verfügung. Wenn bei
spielsweise an dem unteren Abschnitt des gepackten Datenope
randen eine Operation ausgeführt wird, können Daten im obe
ren Abschnitt gespeichert werden und umgekehrt.
Fig. 2A ist ein vereinfachtes Blockschaltbild, das ein
Beispielcomputersystem gemäß einem Ausführungsbeispiel der
Erfindung veranschaulicht. Bei dem dargestellten Ausfüh
rungsbeispiel enthält ein Computersystem 200 einen Prozessor
205, eine Speichereinrichtung 210 und einen Bus 215. Der
Prozessor 205 ist mit der Speichereinrichtung 210 durch den
Bus 215 gekoppelt. Zusätzlich sind eine Reihe von Benutzereingabe/Ausgabeeinrichtungen,
wie beispielsweise eine Tasta
tur 220 und eine Anzeige 225, ebenfalls mit dem Bus 215 ge
koppelt. Das Computersystem 200 kann darüber hinaus mit
einem Netzwerk 230 über den Bus 215 gekoppelt sein. Der Pro
zessor 205 repräsentiert eine zentrale Verarbeitungseinheit
einer beliebigen Architektur, wie beispielsweise einer CISC-,
RISC-, VLIW- oder Hybrid-Architektur. Darüber hinaus kann
der Prozessor 205 auf einem oder mehreren Chips
implementiert sein. Die Speichereinrichtung 210 repräsen
tiert einen oder mehrere Mechanismen zum Speichern von
Daten. Beispielsweise kann die Speichereinrichtung 210 einen
Nur-Lese-Speicher (ROM), einen Speicher mit wahlfreiem
Zugriff (RAM), ein magnetisches Plattenspeichermedium, ein
optisches Speichermedium, Flash-Speicherbauelemente und/oder
andere maschinenlesbare Medien umfassen. Der Bus 215 reprä
sentiert einen oder mehrere Busse (z. B. AGP, PCI, ISA, X-
Bus, EISA, VESA usw.) und Brücken (die auch als Bussteuer
einrichtungen bezeichnet werden). Während dieses Ausfüh
rungsbeispiel in Bezug auf ein Einzelprozessor-Compuzersy
stem beschrieben wird, ist es klar, daß die Erfindung auch
in einem Multi-Prozessor-Computersystem implementiert werden
kann. Außerdem ist, obwohl das vorliegende Ausführungsbei
spiel in Bezug auf ein 32-Bit- und ein 64-Bit-Computersystem
beschrieben wird, die Erfindung nicht auf ein derartiges
Computersystem begrenzt.
Fig. 2A veranschaulicht zusätzlich, daß der Prozessor
205 eine Befehlssatzeinheit 260 enthält. Selbstverständlich
enthält der Prozessor 205 zusätzliche Schaltungen; jedoch
sind derartige zusätzliche Schaltungen nicht für das Ver
ständnis der Erfindung erforderlich. Auf jeden Fall enthält
die Befehlssatzeinheit 260 die Hardware und/oder Firmware
zum Decodieren und Ausführen eines oder mehrerer Befehls
sätze. Bei dem dargestellten Ausführungsbeispiel enthält die
Befehlssatzeinheit 260 eine Dekodier/Ausführungs-Einheit
275. Die Dekodiereinheit dekodiert Befehle, die von dem Pro
zessor 205 empfangen worden sind, in einen oder mehrere
Mikrobefehle. Die Ausführungseinheit führt in Erwiderung der
von der Dekodiereinheit empfangenen Mikrobefehle geeignete
Operationen durch. Die Dekodiereinheit kann unter Verwendung
einer Reihe unterschiedlicher Mechanismen (beispielsweise
einer Nachschlagetabelle, einer Hardware-Implementierung,
einer PLA etc.) implementiert werden.
Bei dem vorliegenden Beispiel ist eine Deko
dier/Ausführungs-Einheit 275 gezeigt, die einen Befehlssatz
280 enthält, der sowohl Befehle für gepackte Daten voller
Breite als auch Befehle für gepackte Daten partieller Breite
enthält. Diese Befehle für gepackte Daten können, wenn sie
ausgeführt werden, den Prozessor 205 veranlassen, gepackte
Gleitkommaoperationen voller/partieller Breite und/oder
gepackte Ganzzahloperationen voller/partieller Breite durch
zuführen. Zusätzlich zu den Befehlen für gepackte Daten kann
der Befehlssatz 280 weitere in vorhandenen Mikroprozessoren
zu findende Befehle enthalten. Beispielsweise unterstützt
der Prozessor 205 bei einem Ausführungsbeispiel einen
Befehlssatz, der mit der Intel-32-Bit-Architektur (IA-32)
und/oder der Intel-64-Bit-Architektur (IA-64) kompatibel
ist.
Außerdem ist in der Befehlssatzeinheit 260 eine Spei
chereinheit 285 enthalten. Die Speichereinheit 285 kann
einen oder mehrere Sätze von Architekturregistern (auch als
logische Register bezeichnet), enthalten, die von dem Pro
zessor 205 zum Speichern von Informationen, einschließlich
Gleitkommadaten und gepackten Gleitkommadaten, benutzt wer
den. Zusätzlich können weitere logische Register zum Spei
chern von Ganzzahldaten, gepackten Ganzzahldaten und ver
schiedenen Steuerdaten, wie beispielsweise einer Anzeige für
die Spitze des Stapelspeichers und dergleichen, enthalten
sein. Die Begriffe Architekturregister und logische Register
werden im folgenden verwendet, um auf das Konzept der Art
und Weise Bezug zu nehmen, auf welche Befehle einen Spei
cherbereich angeben, der einen einzelnen Operanden enthält.
So kann ein logisches Register in Hardware unter Verwendung
einer beliebigen Anzahl gut bekannter Techniken
implementiert sein, einschließlich eines speziellen physika
lischen Registers, eines oder mehrerer dynamisch unter Ver
wendung eines Registerumbenennungsmechanismus (detaillierter
unten beschrieben) zugewiesener physikalischer Register,
etc. In jedem Fall repräsentiert ein logisches Register die
kleinste Einheit eines durch einen Befehl für gepackte Daten
adressierbaren Speichers.
Bei dem dargestellten Ausführungsbeispiel ist in der
Speichereinrichtung 210 ein Betriebssystem (OS) 235 und eine
Routine für gepackte Daten 240 zur Ausführung durch das Com
putersystem 200 gespeichert. Die Routine 240 für gepackte
Daten ist eine Sequenz von Befehlen, die einen oder mehrere
Befehle für gepackte Daten, wie beispielsweise skalara SIMD-
Befehle oder SIMD-Befehle enthalten kann. Wie unten näher
erörtert wird, gibt es Situationen, einschließlich Geschwin
digkeits-, Stromverbrauchs- und Ausnahmebehandlung, in denen
es erwünscht ist, eine Operation nur an einer Untermenge von
Datenelementen in einem gepackten Datenoperanden oder einem
Paar gepackter Datenoperanden durchzuführen (oder nur für
diese Untermenge einzelne Ergebnisse zurückzugeben). Folg
lich ist es für den Prozessor 205 vorteilhaft, in der Lage
zu sein, zwischen Befehlen für gepackte Daten voller Breite
und Befehlen für gepackte Daten partieller Breite unter
scheiden zu können und diese entsprechend ausführen zu kön
nen.
Fig. 2B ist eine vereinfachte Blockdarstellung, die
Beispielsätze von logischen Registern gemäß einem Ausfüh
rungsbeispiel der Erfindung veranschaulicht. Bei diesem Bei
spiel enthält die Speichereinheit 285 eine Mehrzahl skalarer
Gleitkommaregister 291 (eine skalare Registerdatei) und eine
Mehrzahl gepackter Gleitkommaregister 292 (eine Registerda
tei für gepackte Daten). Die skalaren Gleitkommaregister 291
(z. B. die Register R0-R7) können als eine als Stapel refe
renzierte Registerdatei implementiert sein, wenn Gleitkomma
befehle so ausgeführt werden, daß sie kompatibel mit der
vorhandenen, für die Intel-Architektur geschriebenen Soft
ware sein sollen. Bei alternativen Ausführungsbeispielen je
doch können die Register 291 als eine flache Registerdatei
behandelt werden. Bei dem dargestellten Ausführungsbeispiel
ist jedes der gepackten Gleitkommaregister (z. B. XMM0-XMM7)
als ein einzelnes logisches 128-Bit-Register implementiert.
Es ist jedoch klar, daß breitere oder schmalere Register
benutzt werden können, um an eine Implementierung angepaßt
zu sein, die mehr oder weniger Datenelemente oder größere
oder kleinere Datenelemente verwendet. Zusätzlich können
mehr oder weniger packte Gleitkommaregister 292 vorgesehen
sein. Ähnlich wie die skalaren Gleitkommaregister 291 können
die gepackten Gleitkommaregister 292 entweder als stapel
referenzierte Registerdatei oder als flache Registerdatei
implementiert werden, wenn die gepackten Gleitkommabefehle
ausgeführt werden
Fig. 2C ist eine vereinfachte Blockdarstellung, die
beispielhafte Sätze logischer Register nach einem weiteren
Ausführungsbeispiel der Erfindung veranschaulicht. Bei die
sem Beispiel enthält die Speichereinheit 285 wiederum eine
Mehrzahl skalarer Gleitkommaregister 291 (eine skalare Regi
sterdatei) und eine Mehrzahl gepackter Gleitkommaregister
292 (eine Registerdatei gepackter Daten). Jedoch werden bei
dem dargestellten Ausführungsbeispiel sämtliche gepackten
Gleitkommaregister (z. B. XMM0-XMM7) als einander entspre
chende Paare hoher 293 und niedriger Register 294
implementiert. Wie unten näher erörtert werden wird, ist es
für die Zwecke der Befehlsdekodierung vorteilhaft, den logi
schen Registeradreßraum für die gepackten Gleitkommaregister
292 so zu organisieren, daß sich die Paare hoher und niedri
ger Register durch ein einzelnes Bit unterscheiden. Bei
spielsweise können die hohen und niedrigen Abschnitte von
XMM0-XMM7 durch das MSB (most significant bit) differenziert
werden. Vorzugsweise ist jedes der gepackten Gleitkommaregi
ster 291 breit genug, um vier 32-Bit-Gleitkommadaten-Elemen
te einfacher Genauigkeit aufzunehmen. Wie oben jedoch können
breitere oder schmalere Register benutzt werden, um an
Implementierungen angepaßt zu werden, die mehr oder weniger
Datenelemente bzw. größere oder kleinere Datenelemente ver
wenden. Zusätzlich können, während die logischen gepackten
Gleitkommaregister 292 bei diesem Beispiel jeweils einander
entsprechende Paare von 64-Bit-Registern aufweisen, bei
alternativen Ausführungsbeispielen sämtliche gepackten
Gleitkommaregister eine beliebige Anzahl von Registern
umfassen.
Nachdem ein Beispielcomputersystem beschrieben worden
ist, in welchem ein Ausführungsbeispiel der Erfindung
implementiert werden kann, wird jetzt die Befehlsausführung
beschrieben.
Fig. 3 ist ein Ablaufdiagramm, das die Befehlsausfüh
rung gemäß einem Ausführungsbeispiel der Erfindung veran
schaulicht. Im Schritt 310 wird ein Befehl durch den Prozes
sor 205 empfangen. Im Schritt 320 wird die Verarbeitung auf
der Grundlage der Art des Befehls (ob es ein Befehl für
gepackte Daten partieller Breite (zum Beispiel ein skalarer
SIMD-Befehl) oder ein Befehl für gepackte Daten voller
Breite (zum Beispiel ein SIMD-Befehl) ist) entweder mit dem
Schritt 330 oder dem Schritt 340 fortgesetzt. Üblicherweise
wird in der Dekodiereinheit die Art des Befehls auf der
Grundlage der in dem Befehl enthaltenen Informationen
bestimmt. Beispielsweise können die Informationen einen Prä
fix oder Suffix enthalten, der an den Befehlscode angehängt
oder über einen Direktdatenwert zur Verfügung gestellt wird,
um anzuzeigen, ob die zugehörige Operation an sämtlichen
oder einer Untermenge der Datenelemente des gepackten Daten
operanden bzw. der gepackten Datenoperanden ausgeführt wer
den soll. Auf diese Weise kann der gleiche Befehlscode
sowohl für Operationen an gepackten Daten voller Breite als
auch für Operationen an gepackten Daten partieller Breite
verwendet werden. Alternativ kann ein Satz von Befehlscodes
für Operationen an gepackten Daten partieller Breite und ein
anderer Befehlscodesatz für Operationen an gepackten Daten
voller Breite verwendet werden.
In jedem Fall wird dann, wenn der Befehl ein herkömmli
cher Befehl für gepackte Daten voller Breite ist, im Schritt
330 ein gepacktes Datenergebnis bestimmt, indem die von dem
Befehl spezifizierte Operation an jedem der Datenelemente in
dem bzw. den Operanden ausgeführt wird. Wenn jedoch der
Befehl ein Befehl für gepackte Daten partieller Breite ist,
dann wird im Schritt 340 ein erster Abschnitt des Ergebnis
ses bestimmt, indem die von dem Befehl spezifizierte Opera
tion an einer Untermenge der Datenelemente durchgeführt wird
und indem der Rest des Ergebnisses auf einen oder mehrere
vorgegebene Werte gesetzt wird. Bei einem Ausführungsbei
spiel ist der vorgegebene Wert der Wert der jeweils einander
entsprechenden Datenelemente in einem der Operanden. Das
heißt, es können Datenelemente von den Datenelementen eines
der Operanden zu den jeweils entsprechenden Datenelementen
in dem gepackten Datenergebnis "durchgeleitet" werden. Bei
einem anderen Ausführungsbeispiel können die Datenelemente
in dem verbleibenden Abschnitt des Ergebnisses sämtlich
gelöscht (auf Null gesetzt) werden. Eine Beispiellogik zum
Durchführen des Durchleitens der Datenelemente von einem der
Operanden zu dem Ergebnis und eine Beispiellogik zum Löschen
der Datenelemente in dem Ergebnis werden unten beschrieben.
Fig. 4 veranschaulicht das Ergebnis der Ausführung
eines Befehls für gepackte Daten partieller Breite gemäß den
verschiedenen Ausführungsbeispielen der Erfindung. Bei die
sem Beispiel wird eine Operation an Datenelementen von zwei
logischen Quellenregistern 410 und 420 durch eine Ausfüh
rungseinheit 440 ausgeführt. Die Ausführungseinheit 440 ent
hält eine Schaltungsanordnung und Logik zum Durchführen der
von dem Befehl spezifizierten Operationen. Zusätzlich kann
die Ausführungseinheit 440 eine Auswahlschaltung enthalten,
die es der Ausführungseinheit 440 gestattet, entweder in
einem Modus für gepackte Daten partieller Breite oder in
einem Modus für gepackte Daten voller Breite zu arbeiten.
Beispielsweise kann die Ausführungseinheit 440 eine
Durchleitschaltung zum Durchleiten von Datenelementen von
einem der logischen Quellregister 410, 420 zu dem logischen
Zielregister 430 enthalten, oder sie kann eine Löschschal
tung zum Löschen eines oder mehrerer Datenelemente des logi
schen Zielregisters 430 enthalten. Zahlreiche andere Techni
ken können ebenfalls benutzt werden, um das Ergebnis der
Operation zu beeinflussen, wobei diese Techniken einschlie
ßen, daß eines der Eingangssignale für die Operation auf
einen vorgegebenen Wert gezwungen wird, wie beispielsweise
einen Wert, der die Operation zwingen würde, ihre Identi
tätsfunktion durchzuführen, oder einen Wert, der durch die
arithmetischen Operationen laufen kann, ohne eine Ausnahme
(z. B. eine quiet not-a-number (QNaN)) zu signalisieren.
Bei dem veranschaulichten Beispiel wird nur das Ergeb
nis (Z0) der Operation an dem ersten Paar von Datenelementen
(X0 und Y0) in dem logischen Zielregister 430 gespeichert.
Nimmt man an, daß die Ausführungseinheit 440 eine Durchleit
logik enthält, so werden die verbleibenden Datenelemente des
logischen Zielregisters 430 auf die Werte aus den zugehöri
gen Datenelementen des logischen Quellregisters 410 (d. h.
X3, X2 und X1) gesetzt. Während das logische Zielregisters
430 als ein separates logisches Register gezeigt ist, ist es
wichtig anzumerken, daß es gleichzeitig als eines der logi
schen Quellregister 410, 420 dienen kann. Folglich sollte es
klar sein, daß das Setzen der Datenelemente des logischen
Zielregisters 430 auf Werte aus einem der logischen Quellre
gister 410, 420 in diesem Kontext bedeuten kann, daß in die
sen Datenelementen überhaupt nichts passiert. Beispielsweise
können in dem Fall, daß das logische Quellregister 410 so
wohl ein logisches Quell- als auch ein Zielregister ist,
verschiedene Ausführungsbeispiele Vorteile daraus ziehen,
und einfach eines oder mehrere der Datenelemente, die durch
geleitet werden sollen, nicht berühren.
Alternativ kann die Ausführungseinheit 440 eine Lösch
logik enthalten. So werden anstelle des Durchleitens von
Werten von einem der logischen Quellregister zu dem logi
schen Zielregister 430 diejenigen Datenelemente in dem Er
gebnis, die nicht erforderlich sind, gelöscht. Wiederum wird
bei diesem Beispiel nur das Ergebnis (Z0) der Operation an
dem ersten Paar von Datenelementen (X0 und Y0) in dem logi
schen Zielregister 430 gespeichert. Die verbleibenden Daten
elemente des logischen Zielregisters 430 werden "gelöscht"
(d. h. auf Null oder auf einen anderen für diesen Fall vorge
gebenen Wert gesetzt).
Die Fig. 5A-5C veranschaulichen Ausführungseinheiten
540, 560 bzw. 580, welche sowohl Befehle für gepackte Daten
voller Breite als auch für gepackte Daten partieller Breite
ausführen können. Die in den Ausführungseinheiten gemäß
Fig. 5A und 5C enthaltene Auswahllogik stellt eine bei
spielhafte Durchleitlogik dar, während die Auswahllogik
gemäß Fig. 5B für eine Löschlogik, die benutzt werden kann,
repräsentativ ist. Bei den dargestellten Ausführungsbeispie
len enthalten die Ausführungseinheiten 540, 560 und 580
jeweils eine geeignete Logik, Schaltungsanordnung und/oder
Firmware zum gleichzeitigen Ausführen einer Operation 570,
571 und 572 an den Operanden voller Breite (X und Y).
Es wird jetzt auf Fig. 5A Bezug genommen, bei der die
Ausführungseinheit 540 eine Auswahllogik (zum Beispiel Mul
tiplexer (MUX) 555-557) enthält, um zwischen einem durch die
Operation 570 erzeugten Wert und einem aus einem entspre
chenden Datenelement eines der Operanden herrührenden Wert
auszuwählen. Die MUX 555-557 können beispielsweise durch ein
Signal gesteuert werden, das anzeigt, ob die gerade ausge
führte Operation eine Operation an gepackten Daten voller
Breite oder eine Operation an gepackten Daten partieller
Breite ist. Bei alternativen Ausführungsbeispielen kann eine
zusätzliche Flexibilität dadurch erreicht werden, daß eine
zusätzliche MUX für das Datenelement 0 eingeschlossen wird
und/oder jede MUX unabhängig gesteuert wird. Verschiedene
Einrichtungen zum Schaffen einer MUX-Steuerung sind möglich.
Gemäß einem Ausführungsbeispiel kann eine solche Steuerung
aus dem Befehl selbst herrühren, oder aus ihm abgeleitet
werden oder sie kann durch einen Direktwert zur Verfügung
gestellt werden. Beispielsweise kann ein 4-Bit-Direktwert,
der dem Befehl zugeordnet ist, verwendet werden, um eine
direkte Steuerung der MUX 555-557 durch Software zu gestat
ten. Diejenigen Multiplexer, die zu einer Eins in dem
Direktwert gehören, können angewiesen werden, das Ergebnis
der Operation auszuwählen, während diejenigen Multiplexer,
die zu einer Null gehören, veranlaßt werden können, das
Durchleiten von Daten auszuwählen. Selbstverständlich kann
eine größere oder geringere Auflösung bei verschiedenen
Implementierungen erreicht werden, indem mehr oder weniger
Bits zum Darstellen des Direktwerts benutzt werden.
Es wird jetzt auf Fig. 5B Bezug genommen, bei der die
Ausführungseinheit 540 eine Auswahllogik (z. B. Multiplexer
565-567) zum Auswählen zwischen einem durch eine Operation
571 erzeugten Wert und einem vorgegebenen Wert (z. B. Null)
enthält. Wie oben, können die Multiplexer 565-567 sich unter
einer gemeinsamen Steuerung befinden oder unabhängig gesteu
ert werden.
Die Durchleitlogik gemäß Fig. 5C (z. B. Multiplexer
575-576) wählt zwischen einem Datenelement eines der Operan
den und einem Identitätsfunktionswert 590 aus. Der Identi
tätsfunktionswert 590 wird grundsätzlich so ausgewählt, daß
das Ergebnis der Durchführung der Operation 572 zwischen dem
Identitätsfunktionswert 590 und dem Datenelement identisch
dem Wert des Datenelements ist. Wenn beispielsweise die Ope
ration 572 eine Multiplikationsoperation wäre, dann wäre der
Identitätsfunktionswert 590 eine Eins. In ähnlicher Weise
wäre dann, wenn die Operation 572 eine Additionsoperation
wäre, der Identitätsfunktionswert 590 eine Null. Auf diese
Weise kann der Wert eines Datenelements selektiv zu dem
logischen Zielregister 430 hindurchgeleitet werden, indem
die entsprechenden Multiplexer 575-577 veranlaßt werden, den
Identitätsfunktionswert 590 auszugeben.
Bei den oben beschriebenen Ausführungsbeispielen war
die Schaltung fest verdrahtet, so daß die Operationen parti
eller Breite an dem am geringsten bewerteten Datenelementab
schnitt durchgeführt wurden. Es ist klar, daß die Operation
an anderen Datenelementabschnitten als die dargestellten
durchgeführt werden kann. Darüber hinaus können, wie oben
beschrieben wurde, die zu bearbeitenden Datenelemente durch
Software konfigurierbar gemacht werden, indem sämtliche der
Operationen mit einem Multiplexer oder dergleichen und nicht
nur eine Untermenge der Operationen, wie es in den Fig.
5A-5C dargestellt ist, gekoppelt werden. Während eine
Durchleit- und eine Löschlogik als zwei Optionen zum Behan
deln der sich ergebenden Datenelemente, die Operationen ent
sprechen, die nicht berücksichtigt werden sollen, beschrie
ben werden, können darüber hinaus alternative Ausführungs
beispiele andere Techniken benutzen. Beispielsweise kann ein
QNaN als einer der Operanden einer Operation eingegeben wer
den, deren Ergebnis vernachlässigt werden soll. Auf diese
Weise leiten Operationen, die mit dem IEEE 754-Standard,
IEEE std. 754-1985, veröffentlicht am 21. März 1985, über
einstimmen, ein NaN zu dem Ergebnis weiter, ohne eine arith
metische Ausnahme auszulösen.
Während keine deutliche Geschwindigkeitserhöhung bei
den oben beschriebenen Ausführungsbeispielen erreicht wird,
da die volle Breite der Operanden parallel verarbeitet wer
den kann, ist es klar, daß der Stromverbrauch reduziert wer
den kann, indem diejenigen der Operationen abgeschaltet wer
den, deren Ergebnisse vernachlässigt werden. So können
beträchtliche Energieeinsparungen erreicht werden. Darüber
hinaus kann bei Verwendung von QNaNs und/oder von Identi
tätsfunktionswerten ein vorhersagbares Ausnahmemode 11 auf
rechterhalten werden, indem vermieden wird, daß Ausnahmen
durch Datenelemente ausgelöst werden, die nicht Teil der
Operation an gepackten Daten partieller Breite sind. Folg
lich sind die berichteten Ausnahmen auf diejenigen begrenzt,
die in Verbindung mit denjenigen Datenelementen entstehen,
an welchen die Operation für gepackte Daten partieller
Breite vorgibt zu arbeiten.
Fig. 6 veranschaulicht eine aktuelle Prozessorimple
mentierung einer arithmetisch-logischen Einheit (ALU), die
zum Ausführen von Befehlen für gepackte Daten voller Breite
verwendet werden kann. Die ALU gemäß Fig. 6 enthält die
Schaltung, die zum Ausführen von Operationen an der vollen
Breite der Operanden (d. h. an sämtlichen Datenelementen)
erforderlich ist. Fig. 6 zeigt darüber hinaus, daß die ALU
mehrere unterschiedliche Arten von Ausführungseinheiten ent
halten kann. Bei diesem Beispiel enthält die ALU zwei unter
schiedliche Arten von Ausführungseinheiten zum Ausführen
unterschiedlicher Arten von Operationen (z. B. verwenden
bestimmte ALUs separate Einheiten zum Durchführen von ADD-
und MUL-Operationen). Die ADD-Ausführungseinheit und die
MUL-Ausführungseinheit sind jeweils in der Lage, als vier
separate ADD-Ausführungseinheiten bzw. vier separate MUL-
Ausführungseinheiten betrieben zu werden. Alternativ kann
die ALU eine oder mehrere Multipliziere-Akkumuliere(MAC)-
Einheiten enthalten, die jeweils in der Lage sind, mehr als
nur eine Art einer Operation durchzuführen. Während die fol
genden Beispiele die Verwendung von ADD- und MUL-Ausfüh
rungseinheiten und Gleitkommaoperationen unterstellen, ist
es klar, daß andere Ausführungseinheiten, wie beispielsweise
MAC und/oder Ganzzahloperationen ebensogut verwendet werden
können. Ferner kann es vorzuziehen sein, eine Implementie
rung partieller Breite zu benutzen (z. B. eine Implementie
rung mit weniger als einer Eins-zu-eins-Korrespondenz zwi
schen den Ausführungseinheiten und den Datenelementen) sowie
eine zusätzliche Logik, zum Koordinieren der erneuten Ver
wendung der Ausführungseinheiten, wie es unten beschrieben
wird.
Die Fig. 7A-7B veranschaulichen eine Operation für
gepackte Daten voller Breite bzw. eine in einer
"gestaffelten" Weise durchgeführte Operation für gepackte
Daten partieller Breite. Im Kontext dieses Ausführungsbei
spiels bezieht sich die "gestaffelte Ausführung" auf den
Prozeß des Unterteilens jedes der Operanden eines Befehls in
separate Segmente und die sequentielle Verarbeitung jedes
Segments unter Verwendung derselben Hardware. Die Segmente
werden sequentiell verarbeitet, indem eine Verzögerung in
die Verarbeitung aufeinanderfolgender Segmente eingeführt
wird. Wie es in den Fig. 7A-7B veranschaulicht ist, wer
den in beiden Fällen die gepackten Datenoperanden in ein
"hoch bewertetes Segment" (Datenelemente 3 und 2) und ein
"niedrig bewertetes Segment" (Datenelemente 1 und 0) unter
teilt. Bei dem Beispiel gemäß Fig. 7A wird das niedrig
bewertete Segment verarbeitet, während das hoch bewertete
Segment verzögert wird. Nachfolgend wird das hoch bewertete
Segment verarbeitet, und es wird ein Ergebnis voller Breite
erzielt. Bei dem Beispiel gemäß Fig. 7B wird das niedrig
bewertete Segment verarbeitet, während die Tatsache, ob das
hoch bewertete Datensegment verarbeitet wird, von der Imple
mentierung abhängig ist. Beispielsweise braucht das hoch
bewertete Datensegment nicht verarbeitet zu werden, sofern
das zugehörige Ergebnis auf Null gesetzt werden soll.
Zusätzlich ist es klar, daß dann, wenn das hoch bewertete
Datensegment nicht verarbeitet wird, sowohl das hoch als
auch das niedrig bewertete Datensegment zur gleichen Zeit
bearbeitet werden können. In ähnlicher Weise können bei
einer Implementierung voller Breite (z. B. einer Implementie
rung mit einer Eins-zu-Eins-Korrespondenz zwischen Ausfüh
rungseinheiten und Datenelementen) die hoch und niedrig
bewerteten Datensegmente gleichzeitig verarbeitet werden
oder alternativ so, wie es in Fig. 7A gezeigt ist.
Obwohl im folgenden nur Ausführungsbeispiele beschrie
ben werden, die nur ADD- und MUL-Ausführungseinheiten aufweisen,
können darüber hinaus auch andere Arten von Ausfüh
rungseinheiten, wie beispielsweise MAC-Einheiten, verwendet
werden.
Während es eine Reihe unterschiedlicher Wege gibt, auf
welchen die gestaffelte Ausführung von Befehlen erreicht
werden kann, beschreiben die folgenden Abschnitte zwei exem
plarische Ausführungsbeispiele, um diesen Aspekt der Erfin
dung zu veranschaulichen. Insbesondere empfangen beide der
beschriebenen Ausführungsbeispiele jeweils denselben Makro
befehl, der 128-Bit-Operanden enthaltende logische Register
spezifiziert.
Bei dem ersten Ausführungsbeispiel bewirkt jeder Makro
befehl, der 128-Bit-Operanden enthaltende logische Register
spezifiziert, daß auf die volle Breite der Operanden aus den
physikalischen Registern zugegriffen wird. Nach dem Zugriff
auf die Operanden voller Breite aus den Registern werden die
Operanden in die niedrig und hoch bewertete Segmente unter
teilt (z. B. unter Verwendung von Latch-Speichern und Multi
plexern) und sequentiell unter Verwendung derselben Hardware
ausgeführt. Die resultierenden Ergebnisse halber Breite wer
den gesammelt und dann gleichzeitig in ein einziges logi
sches Register geschrieben.
Im Unterschied dazu wird bei dem zweiten Ausführungs
beispiel jeder 128-Bit-Operanden enthaltende logische Regi
ster spezifizierende Makrobefehl in zumindest zwei Mikrobe
fehle unterteilt, die jeweils an nur der Hälfte der Operan
den operieren. Somit werden die Operanden in ein hoch und
ein niedrig bewertetes Segment unterteilt und jeder Mikrobe
fehl bewirkt separat, daß nur auf die Hälfte der Operanden
aus den Registern zugegriffen wird. Diese Art einer Unter
teilung ist bei einer SIMD-Architektur möglich, weil jeder
der Operanden unabhängig von dem anderen ist. Während Imple
mentierungen des zweiten Ausführungsbeispiels die Mikrobe
fehle in einer beliebigen Reihenfolge (entweder in einem In-
der-Reihenfolge oder einem Außer-der-Reihe-Ausführungsmo
dell) ausführen können, bewirken die jeweiligen Mikrobefehle,
daß die von dem Makrobefehl spezifizierte Operation
unabhängig oder separat an dem niedrig und hoch bewerteten
Segment der Operanden durchgeführt wird. Darüber hinaus
bewirkt jeder Mikrobefehl, daß die Hälfte der sich ergeben
den Operanden in ein einziges logisches Zielregister, das
durch den Makrobefehl spezifiziert ist, geschrieben wird.
Während Ausführungsbeispiele beschrieben werden, bei
welchen 128-Bit-Operanden in zwei Segmente unterteilt wer
den, könnten alternative Ausführungsbeispiele größere oder
kleinere Operanden verwenden und/oder diese Operanden in
mehr als zwei Segmente unterteilen. Zusätzlich könnten,
obwohl zwei Ausführungsbeispiel zum Durchführen einer
gestaffelten Ausführung beschrieben wurden, alternative Aus
führungsbeispiele andere Techniken verwenden.
Fig. 8A veranschaulicht eine Schaltungsanordnung in
nerhalb eines Prozessors gemäß einem ersten Ausführungsbei
spiel, die auf Operanden voller Breite aus den logischen
Registern zugreift, aber die die Operationen jeweils an der
Hälfte der Breite der Operanden durchführt. Dieses Ausfüh
rungsbeispiel unterstellt, daß die Prozessorausführungsma
schine in der Lage ist, einen Befehl pro Taktzyklus zu ver
arbeiten. Als Beispiel sei angenommen, daß die folgende
Sequenz von Befehlen ausgeführt wird: ADD X, Y; MUL A, B. Zum
Zeitpunkt T werden jeweils 128 Bits von X und 128 Bits von Y
aus den jeweiligen physikalischen Registern über die Ports 1
und 2 gewonnen bzw. gelesen. Die niedriger bewerteten Daten
segmente, nämlich die unteren 64 Bits, von sowohl X als auch
Y werden an die Multiplexer 802 und 804 weitergeleitet und
dann weiter zu den Ausführungseinheiten für die Verarbei
tung. Die höher bewerteten Datensegmente, nämlich die höhe
ren 64 Bits von X und Y werden in den Verzögerungselementen
M1 und M2 gehalten. Zum Zeitpunkt T + 1 werden die höher
bewerteten Datensegmente von X und Y aus den Verzögerungselementen
M1 und M2 gelesen und an die Multiplexer 802 und
804 weitergeleitet und dann weiter zu den Ausführungseinhei
ten zur Verarbeitung. Grundsätzlich gestattet der Verzöge
rungsmechanismus des Speicherns der höher bewerteten Daten
segmente in den Verzögerungselementen M1 und M2 einer N-Bit-
Hardware (N = 64 in diesem Beispiel), 2N-Bits von Daten zu
verarbeiten. Die niedrig bewerteten Ergebnisse aus der Aus
führungseinheit werden in dem Verzögerungselement M3 gehal
ten, bis die höher bewerteten Ergebnisse bereit sind. Die
Ergebnisse beider Verarbeitungsschritte werden dann in die
Registerdatei 800 über den Port 3 zurückgeschrieben. Man er
innere sich, daß im Falle einer Operation für gepackte Daten
partieller Breite ein oder mehrere Datenelemente des niedrig
oder hoch bewerteten Ergebnisses auf einen vorgegebenen Wert
(z. B. Null oder den Wert eines entsprechenden Datenelements
in entweder X oder Y) anstelle der Ausgabe der ADD- oder
MUL-Operation gezwungen werden können.
Zum Zeitpunkt T + 1 kann darüber hinaus der MUL-Befehl
gestartet worden sein. Somit können zum Zeitpunkt T + 1 128 Bits
von A und B jeweils von ihren zugehörigen Registern
über die Ports 1 und 2 gelesen worden sein. Die niedriger
bewerteten Datensegmente, nämlich die unteren 64 Bits, von
sowohl A als auch B, können in die Multiplexer 806 und 808
geleitet werden. Nachdem die höher bewerteten Bits von X und
Y aus den Verzögerungselementen M1 und M2 entfernt und in
die Multiplexer 806 und 808 geleitet worden sind, können die
höher bewerteten Bits von A und B im Speicher der Verzöge
rungselemente M1 und M2 gehalten werden. Die Ergebnisse bei
der Verarbeitungsschritte werden dann in die Registerdatei
800 über den Port 3 zurückgeschrieben.
Somit werden gemäß einem Ausführungsbeispiel der Erfin
dung Ausführungseinheiten vorgesehen, die nur die Hälfte der
Hardware enthalten (z. B. zwei ADD-Ausführungseinheiten ein
facher Genauigkeit und zwei MUL-Ausführungseinheiten einfa
cher Genauigkeit) anstelle der Ausführungseinheiten, die zur
parallelen Verarbeitung der vollen Breite der Operanden
erforderlich sind, wie sie in einem gegenwärtigen Prozessor
zu finden sind. Diese Ausführungsform zieht Vorteil aus
einer statistischen Analyse, die zeigt, daß Multimedia-
Anwendungen etwa 50% ADD-Befehle und 50% MUL-Befehle ver
wenden. Auf der Grundlage dieser Statistik unterstellt die
ses Ausführungsbeispiel, daß Multimedia-Befehle grundsätz
lich dem folgenden Muster folgen: ADD, MUL, ADD, MUL, etc.
Durch Verwenden der ADD und MUL-Ausführungseinheiten in der
oben beschriebenen Weise sorgt die vorliegende Erfindung für
eine optimale Verwendung der Ausführungseinheiten, wobei sie
eine mit gegenwärtigen Prozessoren vergleichbare Leistung zu
niedrigeren Kosten ermöglicht.
Fig. 8B ist ein Zeitdiagramm, das die Schaltung gemäß
Fig. 8A näher veranschaulicht. Wie es in Fig. 8B veran
schaulicht ist, führen die beiden ADD-Ausführungseinheiten
dann, wenn der Befehl "ADD X, Y" zum Zeitpunkt T ausgegeben
wird, zunächst eine Addition der niedriger bewerteten Daten
segmente oder der niedriger bewerteten beiden gepackten
Datenelement gemäß Fig. 1, nämlich X0Y0 und X1Y1 aus. Zum
Zeitpunkt T + 1 wird die ADD-Operation an den verbleibenden
zwei Datenelementen der Operanden durch dieselben Ausfüh
rungseinheiten durchgeführt, und die nachfolgenden zwei
Datenelemente des höher bewerteten Datensegments werden
addiert, nämlich X2Y2 und X3Y3. Während das obige Ausfüh
rungsbeispiel unter Bezugnahme auf ADD- und MUL-Operationen
unter Verwendung von zwei Ausführungseinheiten beschrieben
wurde, können alternative Ausführungsbeispiele eine belie
bige Anzahl von Ausführungseinheiten verwenden und/oder eine
beliebige Anzahl unterschiedlicher Operationen in einer
gestaffelten Weise ausführen.
Gemäß diesem Ausführungsbeispiel kann eine 64-Bit-Hard
ware verwendet werden, um 128-Bit-Daten zu verarbeiten. Ein
128-Bit-Register kann in vier 32-Bit-Elemente unterteilt
werden, von denen jedes einen separaten 32-Bit-Wert reprä
sentiert. Zum Zeitpunkt T führen die beiden ADD-Ausführungs
einheiten zunächst Additionen an den zwei niedrigen 32-Bit-
Werten durch, gefolgt von einer Addition an den höheren 32-
Bit-Werten zum Zeitpunkt T + 1. Im Falle einer MUL-Operation
verhalten sich die MUL-Ausführungseinheiten in der gleichen
Weise. Diese Fähigkeit zu einer Verwendung gegenwärtig ver
fügbarer 64-Bit-Hardware, um 128-Bit-Daten zu verarbeiten,
stellt einen signifikanten Kostenvorteil für Hardware-Her
steller dar.
Wie oben beschrieben, werden die ADD- und MUL-Ausfüh
rungseinheiten gemäß dem vorliegenden Ausführungsbeispiel
erneut verwendet, um eine zweite ADD- oder MUL-Operation bei
einem nachfolgenden Taktzyklus erneut auszuführen. Selbst
verständlich werden im Fall eines Befehls für gepackte Daten
partieller Breite die Ausführungseinheiten erneut verwendet,
aber die Operation wird nicht notwendigerweise erneut ausge
führt, da die Stromversorgung zur Ausführungseinheit selek
tiv abgeschaltet werden kann. In jedem Fall zieht, wie oben
beschrieben wurde, dieses Ausführungsbeispiel für diese Neu-
Verwendung bzw. "gestaffelte Ausführung" Vorteil aus dem
statistischen Verhalten von Multimedia-Anwendungen.
Wenn ein zweiter ADD-Befehl einem ersten ADD-Befehl
folgt, kann der zweite ADD-Befehl durch eine Einplanungsein
heit (scheduling unit) verzögert werden, um den ADD-Ausfüh
rungseinheiten zu gestatten, den ersten ADD-Befehl abzu
schließen, bzw. genauer, den ADD-Befehl für das höher bewer
tete Datensegment abzuschließen. Der zweite ADD-Befehl kann
dann mit der Ausführung beginnen. Alternativ kann bei einem
Außer-der-Reihe-Prozessor die Einplanungseinheit bestimmen,
daß ein MUL-Befehl, der sich weiter hinten im Befehlsstrom
befindet, außer der Reihe ausgeführt werden kann. Wenn dies
der Fall ist, kann die Einplanungseinheit die MUL-Ausfüh
rungseinheiten informieren, mit der Verarbeitung des MUL-
Befehls zu beginnen. Wenn keine MUL-Befehle zur Verarbeitung
zum Zeitpunkt T + 1 verfügbar sind, gibt der Einplaner keinen
dem ersten ADD-Befehl folgenden Befehl aus, womit den ADD-
Ausführungseinheiten Zeit gegeben wird, den ersten ADD-
Befehl abzuschließen, bevor der zweite ADD-Befehl begonnen
wird.
Noch ein weiteres Ausführungsbeispiel der Erfindung
gestattet, daß "back-to-back"-ADD- oder -MUL-Befehle ausge
geben werden, indem die Befehle auf den gleichen Ausfüh
rungseinheiten in halben Taktzyklen anstelle von vollen
Taktzyklen ausgeführt werden. Die Ausführung eines Befehls
in einem halben Taktzyklus "verdoppelt" effektiv die Hard
ware, d. h. macht die Hardware zweimal so schnell. Auf diese
Weise können die ADD- oder MUL-Ausführungseinheiten während
jedes Taktzyklus verfügbar sein, um einen neuen Befehl zu
verarbeiten. Eine verdoppelte Hardware gestattet, daß die
Hardwareeinheiten zweimal so effektiv ausführen, wie eine
einfache Hardware, die nur bei vollständigen Taktzyklen
ausführt. Eine derart verdoppelte Hardware erfordert
signifikant mehr Hardware, kann jedoch effektiv den Befehl
im halben Taktzyklus verarbeiten.
Es ist klar, daß Modifikationen und Variationen der
Erfindung von der obigen Lehre abgedeckt werden und inner
halb des Umfangs der anhängigen Ansprüche liegen können,
ohne vom Geist und Umfang der Erfindung abzuweichen. Bei
spielsweise können, obwohl nur zwei Ausführungseinheiten
oben beschrieben wurden, beliebig viele logische Einheiten
zur Verfügung gestellt werden.
Gemäß einem alternativen Ausführungsbeispiel der Erfin
dung wird die gestaffelte Ausführung eines Operanden voller
Breite erreicht, indem ein Makrobefehl für eine volle Breite
in zumindest zwei Mikrobefehle konvertiert wird, die jeweils
an nur der Hälfte der Operanden operieren. Wie unten näher
beschrieben wird, kann dann, wenn die Makrobefehle eine Ope
ration für gepackte Daten partieller Breite spezifizieren,
eine bessere Leistung erreicht werden, indem Mikrobefehle
eliminiert werden, die zum Bestimmen des Ergebnisses partieller
Breite nicht erforderlich sind. Auf diese Weise werden
die Einschränkungen der Prozessorressourcen reduziert, und
der Prozessor wird nicht unnötigerweise mit wirkungslosen
Mikrobefehlen okkupiert. Obwohl die folgende Beschreibung
unter Berücksichtigung eines speziellen Registerumbenen
nungsverfahrens beschrieben ist, ist es klar, daß andere
Registerumbenennungsmechanismen ebenfalls im Rahmen der
Erfindung benutzt werden können. Das unten beschriebene
Registerumbenennungsverfahren unterstellt die Verwendung
einer Register-Alias-Tabelle (RAT), eines Umordnungspuffers
(ROB) und eines Retirement-Puffers, wie sie im Detail in dem
US-Patent Nr. 5,446,912 beschrieben sind. Alternative Regi
sterumbenennungsverfahren, wie sie beispielsweise im US-
Patent Nr. 5,197,132 beschrieben sind, können ebenfalls
implementiert werden.
Fig. 9 veranschaulicht ein Ausführungsbeispiel einer
Pipeline zum Durchführen von Operationen an Operanden in
einer "gestaffelten" Weise, indem ein Makrobefehl in eine
Mehrzahl von Mikrobefehlen konvertiert wird, die jeweils
einen Abschnitt der Operanden voller Breite bearbeiten. Es
sei angemerkt, daß verschiedene andere Stufen der Pipeline,
zum Beispiel eine "Vorab-Heranhol-Stufe", nicht im Detail
gezeigt sind, um die Erfindung nicht unnötigerweise zu ver
dunkeln. Wie veranschaulicht, wird an der Dekodierstufe der
Pipeline ein Makrobefehl für eine volle Breite empfangen,
der logische Quellregister spezifiziert, die jeweils einen
Operanden voller Breite (z. B. 128 Bits) speichern. Bei
spielsweise sind die beschriebenen Operanden gepackte 128-
Bit-Gleitkomma-Datenoperanden. Bei diesem Beispiel unter
stützt der Prozessor Y logische Register zum Speichern
gepackter Gleitkomma-Daten. Der Makrobefehl wird in Mikrobe
fehle konvertiert, nämlich eine "hoch bewertete Operation"
und eine "niedrig bewertete Operation", die jeweils bewir
ken, daß die Operation des Makrobefehls an der halben Breite
der Operanden (z. B. 64 Bits) durchgeführt wird.
Die zwei Mikrobefehle für die halbe Breite bewegen sich
dann in eine Registerumbenennungsstufe der Pipeline. Die Re
gisterumbenennungsstufe enthält eine Anzahl von Registerab
bildungs- und Umordnungspuffern. Die logischen Quellregister
jedes Mikrobefehls sind Zeiger auf spezielle Registereinträ
ge in einer Registerabbildungstabelle (z. B. einer RAT). Die
Einträge in der Registerabbildungstabelle wiederum zeigen
auf den Ort des physikalischen Quellspeicherplatzes in einem
ROB oder in einem Retirement-Register. Gemäß einem Ausfüh
rungsbeispiel wird, um die oben beschriebenen hoch und nied
rig bewerteten Operationen halber Breite unterzubringen,
eine RAT für gepackte Gleitkomma-Daten mit Y*2 Einträgen
vorgesehen. Somit wird beispielsweise anstelle einer RAT mit
den Einträgen für 8 logische Register eine RAT mit 15 Ein
trägen erzeugt, wobei jeder Eintrag entweder als "hoch" oder
als "niedrig" adressiert wird. Jeder Eintrag identifiziert
eine 64-Bit-Quelle, die entweder einem hohen oder einem
niedrigen Teil des logischen 128-Bit-Registers entspricht.
Jeder der hoch und niedrig bewerteten Mikrobefehle
weist somit zugehörige Einträge in der Registerabbildungsta
belle auf, die den jeweiligen Operanden entsprechen. Die
Mikrobefehle werden dann in eine Einplanungsstufe (bei einem
Außer-der-Reihe-Prozessor) oder an eine Ausführungsstufe
(bei einem In-der-Reihenfolge-Prozessor) bewegt. Jeder
Mikrobefehl liest und verarbeitet separat ein 64-Bit-Segment
der 128-Bit-Operanden. Eine der Operationen (z. B. die nied
riger bewertete Operation) wird zunächst von den 64-Bit-
Hardware-Einheiten ausgeführt. Dann führt dieselbe 64-Bit-
Hardware-Einheit die höher bewertete Operation aus. Es ist
klar, daß kein Befehl oder auch mehrere Befehle zwischen der
niedriger und der höher bewerteten Operation ausgeführt wer
den können.
Obwohl das obige Ausführungsbeispiel beschreibt, daß
der Makrobefehl in zwei Mikrobefehle unterteilt wird, können
alternative Ausführungsbeispiele den Makrobefehl in mehr als
zwei Mikrobefehle unterteilen. Während Fig. 9 zeigt, daß
die gepackten Gleitkomma-Daten an eine Retirement-Register
datei mit Y*2 64-Bit-Registern, die jeweils als hoch oder
niedrig bezeichnet sind, zurückgibt, können alternative Aus
führungsbeispiele eine Retirement-Registerdatei mit Y 128-
Bit-Registern verwenden. Zusätzlich können, während ein Aus
führungsbeispiel beschrieben ist, das einen Registerumbenen
nungsmechanismus mit einem Umordnungspuffer und einer Reti
rement-Registerdatei aufweist, alternative Ausführungsbei
spiele einen beliebigen Registerumbenennungsmechanismus ver
wenden. Beispielsweise verwendet der Registerumbenennungsme
chanismus gemäß dem US-Patent Nr. 5,197,132 eine Vorge
schichte-Warteschlange und eine Back-up-Abbildung.
Fig. 10 ist ein Zeitdiagramm, das das in Fig. 9
beschriebene Ausführungsbeispiel näher veranschaulicht. Zum
Zeitpunkt T tritt ein Makrobefehl "ADD X, Y" in die Dekodier
stufe der Pipeline gemäß Fig. 9 ein. Beispielsweise ist der
Makrobefehl hier ein 128-Bit-Befehl. Der 128-Bit-Makrobefehl
wird in zwei 64-Bit-Mikrobefehle konvertiert, nämlich die
hoch bewertete Operation "ADD XH, YH" und die niedrig bewer
tete Operation "ADD XL, YL". Jeder Mikrobefehl bearbeitet
dann ein Datensegment, das zwei Datenelemente enthält. Bei
spielsweise kann zum Zeitpunkt T die niedrig bewertete Ope
ration durch eine 64-Bit-Ausführungseinheit ausgeführt wer
den. Dann wird zu einem anderen Zeitpunkt (z. B. zum Zeit
punkt T + N) die höher bewertete Operation durch dieselbe 64-
Bit-Ausführungseinheit ausgeführt. Dieses Ausführungsbeisp
iel der Erfindung ist somit insbesondere für die Verarbei
tung von 128-Bit-Befehlen unter Verwendung vorhandener 64-
Bit-Hardwaresysteme ohne signifikante Veränderungen der
Hardware geeignet. Die vorhandenen Systeme können leicht er
weitert werden, so daß sie eine neue Abbildung zum Behandeln
gepackter Gleitkomma-Daten zusätzlich zu den vorhandenen
logischen Registerabbildungen enthalten.
Es wird jetzt auf Fig. 11 Bezug genommen, anhand der
die Dekodierlogik beschrieben wird, die gemäß einem Ausfüh
rungsbeispiel der Erfindung verwendet werden kann. Kurz
gesagt empfangen bei dem dargestellten Ausführungsbeispiel
eine Mehrzahl von Decodierern 1110, 1120 und 1130 jeweils
einen Makrobefehl und konvertieren ihn in einen Mikrobefehl.
Dann wird die Mikrooperation hinab zum Rest der Pipeline
gesendet. Selbstverständlich sind nicht N Mikrobefehle für
die Ausführung jedes Makrobefehls erforderlich. Folglich ist
es üblicherweise der Fall, daß nur eine Untermenge von
Mikrobefehlen zur Verarbeitung durch den Rest der Pipeline
eingereiht wird.
Wie oben beschrieben, können gepackte Datenoperationen
als zwei Mikrobefehle halber Breite implementiert werden
(z. B. eine hoch bewertete Operation und eine niedrig bewer
tete Operation). Anstelle des unabhängigen Decodierens des
Makrobefehls durch zwei Decodierer, um die hoch und die
niedrig bewertete Operation zu erzeugen, wie es typischer
weise bei bekannten Prozessorimplementierungen erforderlich
sein würde, können als Merkmal der vorliegenden Ausführungs
form beide Mikrobefehle durch den gleichen Decodierer
erzeugt werden. Bei diesem Beispiel wird dies durch die
Replikationslogik 1150 ausgeführt, welche entweder die hoch
bewertete oder die niedrig bewertete Operation repliziert
und nachfolgend die sich ergebende replizierte Operation
geeignet modifiziert, um die verbleibende Operation zu
erzeugen. Wie oben beschrieben wurde, ist es wichtig, daß
durch sorgfältiges Codieren des Registeradreßraums die von
den Mikrobefehlen adressierten Register (z. B. die logischen
Quell- und Zielregister) so gebildet werden können, daß sie
sich durch einziges Bit unterscheiden. Im Ergebnis kann die
Modifikationslogik 1160 in ihrer einfachsten Form einen oder
mehrere Inverter aufweisen, um die richtigen Bits zu inver
tieren, um eine hoch bewertete Operation aus einer niedrig
bewerteten Operation und umgekehrt zu erzeugen. In jedem
Fall wird dann der replizierte Mikrobefehl zum Multiplexer
1170 weitergeleitet. Der Multiplexer 1170 empfängt darüber
hinaus einen von dem Decodierer 1120 erzeugten Mikrobefehl.
Bei diesem Beispiel gibt der Multiplexer unter der Steuerung
eines Gültigkeitsdecodierers 1180 den replizierten Mikrobe
fehl für gepackte Datenoperationen (die Operationen für
gepackte Daten partieller Breite umfassen) aus und gibt den
Mikrobefehl aus, der vom Decodierer 1120 empfangen wurde,
für von gepackten Datenoperationen abweichende Operationen.
Folglich ist es vorteilhaft, die Befehlscodeabbildung zu
optimieren, um die Erfassung gepackter Datenoperationen
durch die Replikationslogik 1150 zu vereinfachen. Wenn bei
spielsweise nur ein geringer Abschnitt des Makrobefehls
überprüft werden muß, um gepackte Datenoperationen von ande
ren Operationen zu unterscheiden, so könnte eine geringere
Schaltungsmenge durch den Gültigkeitsdecodierer 1180 benutzt
werden.
Bei einer Implementierung, die Quelldatenelemente zu
dem logischen Zielregister zum Zwecke der Ausführung von
Operationen für gepackte Daten partieller Daten durchleitet,
kann zusätzlich zur Auswahllogik, ähnlich der die unter
Bezugnahme auf die Fig. 5A und 5C beschrieben worden ist,
Logik enthalten sein, um entweder die hoch oder die niedrig
bewertete Operation zu eliminieren (zu "vernichten"). Vor
zugsweise wird aus Leistungsgründen der unwesentliche Mikro
befehl früh in der Pipeline eliminiert. Diese Eliminierung
kann gemäß dem dargestellten Ausführungsbeispiel ausgeführt
werden, indem ein Mikrobefehlauswahlsignal verwendet wird,
das von der Mikrobefehlslängenbestimmungsschaltung 1190 aus
gegeben wird. Die Mikrobefehlslängenbestimmungsschaltung
1190 überprüft einen Abschnitt des Makrobefehls und erzeugt
das Mikrobefehlsauswahlsignal, welches eine spezielle Kombi
nation einer oder mehrerer Mikrobefehle anzeigt, die weiter
unten in der Pipeline ausgeführt werden sollen. Im Falle
eines skalaren SIMD-Befehls wird nur einer der sich ergeben
den hoch und niedrig bewerteten Operationen gestattet, fort
zufahren. Beispielsweise kann das Mikrobefehlsauswahlsignal
durch eine Bitmaske repräsentiert sein, die diejenigen der
Mikrobefehle identifiziert, die beibehalten werden sollen,
und diejenigen, die eliminiert werden sollen. Alternativ
kann das Mikrobefehlsauswahlsignal einfach die Nummer der
Mikrobefehle von einem vorgegebenen Standpunkt aus anzeigen,
die eliminiert bzw. zurückgehalten werden sollen. Die zum
Ausführen der oben beschriebenen Beseitigung erforderliche
Logik variiert in Abhängigkeit vom Steuerungsmechanismus,
der die Mikrobefehle durch den Rest der Pipeline leitet.
Wenn beispielsweise die Mikrobefehle in eine Warteschlange
eingereiht werden, würde Logik hinzugefügt werden, um den
Kopf- und den Ende-Zeiger der Mikrobefehlswarteschlange zu
bearbeiten, um zu bewirken, daß ungültige Mikrobefehle durch
nachfolgend erzeugte gültige Mikrobefehle überschrieben wer
den. Zahlreiche weitere Eliminierungstechniken sind Fachleu
ten auf diesem Gebiet klar.
Obwohl aus Gründen der Vereinfachung nur ein einzelner
Makrobefehl gezeigt ist, der zu einem vorgegebenen Zeitpunkt
bei dem dargestellten Ausführungsbeispiel decodiert wird,
können bei alternativen Ausführungsbeispielen mehrere Makro
befehle gleichzeitig decodiert werden. Darüber hinaus ist es
klar, daß die Mikrobefehlsreplikation eine breitere Anwen
dung findet, als die bei dem obigen Ausführungsbeispiel dar
gestellte. Beispielsweise könne auf eine Weise, die ähnlich
der oben beschriebenen ist, Makrobefehle für gepackte Daten
voller Breite und partieller Breite durch denselben Decodie
rer decodiert werden. Sofern ein Präfix verwendet wird, um
Makrobefehle für gepackte Daten voller Breite und partieller
Breite zu unterscheiden, kann der Decodierer einfach den
Präfix ignorieren und beide Arten von Befehlen auf die glei
che Weise decodieren. Dann werden die geeigneten Bits in den
sich ergebenden Mikrooperationen modifiziert, um selektiv
die Verarbeitung für entweder sämtliche oder eine Untermenge
der Datenelemente zu ermöglichen. Auf diese Weise können Mi
krobefehle für gepackte Daten voller Breite aus Mikrobefeh
len für gepackte Daten partieller Breite erzeugt werden oder
umgekehrt, wodurch sich die Komplexität des Decodierers ver
ringert.
Claims (13)
1. Prozessor mit einer Mehrzahl von Registern (850)
und einer Registerumbenennungseinheit, die mit der Mehrzahl
von Registern gekoppelt ist, um eine Architekturregister
datei zum Speichern gepackter Datenoperanden zur Verfügung
zu stellen, wobei jeder der gepackten Datenoperanden eine
Mehrzahl von Datenelementen aufweist,
wobei ein Decodierer mit der Registerumbenennungsein heit gekoppelt ist und Befehle decodiert, die jeweils wenig stens ein Register in der Architekturregisterdatei spezifi zieren, wobei eine Ausführungseinheit mit dem Decodierer und den Registern gekoppelt ist,
dadurch gekennzeichnet,
daß die Befehle Gepackte-Daten-Befehle eines ersten Satzes (Fig. 7A) und Gepackte-Daten-Befehle eines zweiten Satzes (Fig. 7B) umfassen, wobei jeder Gepackte-Daten-Befehl in dem ersten Satz Operationen an sämtlichen in jedem der wenigstens einen spezifizierten Register gespeicherten Da tenelementen (X0-X3; Y0-Y3) Spezifiziert, wobei jeder Ge packte-Daten-Befehl des zweiten Satzes eine Operation an nur einer ersten Untermenge (X0; Y0) der in jedem der wenigstens einen spezifizierten Register gespeicherten Datenelemente spezifiziert, und
daß die Ausführungseinheit (ADD, MUL) eine Ausführungs einheit partieller Breite zum Ausführen von sowohl von dem ersten als auch von dem zweiten Satz von Gepackte-Daten-Be fehlen spezifizierten Operationen ist, wobei die partielle Breite der Ausführungseinheit der Breite einer zweiten Un termenge (X0, X1; Y0, Y1) der Datenelemente entspricht, wo bei die zweite Untermenge die erste Untermenge umfaßt, wobei die Operationen des ersten Satzes an sämtlichen Datenelemen ten des wenigstens einen spezifizierten Registers in einer gestaffelten Weise ausgeführt werden.
wobei ein Decodierer mit der Registerumbenennungsein heit gekoppelt ist und Befehle decodiert, die jeweils wenig stens ein Register in der Architekturregisterdatei spezifi zieren, wobei eine Ausführungseinheit mit dem Decodierer und den Registern gekoppelt ist,
dadurch gekennzeichnet,
daß die Befehle Gepackte-Daten-Befehle eines ersten Satzes (Fig. 7A) und Gepackte-Daten-Befehle eines zweiten Satzes (Fig. 7B) umfassen, wobei jeder Gepackte-Daten-Befehl in dem ersten Satz Operationen an sämtlichen in jedem der wenigstens einen spezifizierten Register gespeicherten Da tenelementen (X0-X3; Y0-Y3) Spezifiziert, wobei jeder Ge packte-Daten-Befehl des zweiten Satzes eine Operation an nur einer ersten Untermenge (X0; Y0) der in jedem der wenigstens einen spezifizierten Register gespeicherten Datenelemente spezifiziert, und
daß die Ausführungseinheit (ADD, MUL) eine Ausführungs einheit partieller Breite zum Ausführen von sowohl von dem ersten als auch von dem zweiten Satz von Gepackte-Daten-Be fehlen spezifizierten Operationen ist, wobei die partielle Breite der Ausführungseinheit der Breite einer zweiten Un termenge (X0, X1; Y0, Y1) der Datenelemente entspricht, wo bei die zweite Untermenge die erste Untermenge umfaßt, wobei die Operationen des ersten Satzes an sämtlichen Datenelemen ten des wenigstens einen spezifizierten Registers in einer gestaffelten Weise ausgeführt werden.
2. Prozessor nach Anspruch 1, dadurch gekennzeichnet,
daß die erste Untermenge der in dem wenigstens einen
spezifizierten Register gespeicherten Datenelemente einander
entsprechende am geringsten bewertete Datenelemente umfaßt.
3. Prozessor nach Anspruch 1 oder 2, dadurch gekenn
zeichnet, daß die zweite Untermenge der Datenelemente der
Hälfte der Datenelemente jedes Datenoperanden entspricht.
4. Prozessor nach einem der Ansprüche 1 bis 3, dadurch
gekennzeichnet, daß der Decodierer jeden Gepackte-Daten-Be
fehl des ersten Satzes und des zweiten Satzes als Makrobe
fehl in wenigstens zwei Mikrobefehle konvertiert, wobei je
der Mikrobefehl die Verarbeitung der Daten einer zugehörigen
zweiten Untermenge der Datenelemente der gepackten Datenope
randen bewirkt.
5. Prozessor nach Anspruch 4, dadurch gekennzeichnet,
daß die zweite Untermenge der Hälfte der Datenelemente ent
spricht und jeder Gepackte-Daten-Befehl des ersten und des
zweiten Satzes in zwei Mikrobefehle konvertiert wird, wobei
jeder der beiden Mikrobefehle die Verarbeitung der Daten an
der Hälfte der einander entsprechenden Datenelemente der ge
packten Datenoperanden bewirkt.
6. Prozessor nach Anspruch 4 oder 5, dadurch gekenn
zeichnet, daß dann, wenn der Makrobefehl dem zweiten Satz
von Gepackte-Daten-Befehlen angehört und wenigstens einer
der Mikrobefehle die Verarbeitung von lediglich solchen Da
tenelementen bewirkt, die nicht der ersten Untermenge von
Datenelementen angehören, so daß diese Mikrobefehle keine in
dem Makrobefehl spezifizierte Operation ausführen, der Pro
zessor ein Beseitigen dieser Mikrobefehle derart ausführt,
daß diese nicht die Ausführungseinheit partieller Breite er
reichen.
7. Verfahren zum Ausführen eines Makrobefehls in einem
Prozessor, wobei
ein einzelner Makrobefehl empfangen wird, der zumindest zwei logische Register in einem Registersatz gepackter Daten spezifiziert, wobei die beiden logischen Register einen er sten gepackten Datenoperanden bzw. einen zweiten gepackten Datenoperanden speichern, die einander entsprechende Daten elemente aufweisen, und
die Datenoperanden in wenigstens ein erstes Segment mit einer ersten Mehrzahl (X0, X1; Y0, Y1) und ein zweites Seg ment mit einer zweiten Mehrzahl (X2, X3; Y2, Y3) der einan der entsprechenden Datenelemente unterteilt werden und die erste Mehrzahl und die zweite Mehrzahl unabhängig zu ver schiedenen Zeiten unter Verwendung der gleichen Schaltungen verarbeitet werden, um unabhängig eine erste (Z0, Z1) und eine zweite Mehrzahl (Z2, Z3) von Ergebnisdatenelementen zu erzeugen, indem
eine von dem einzelnen Makrobefehl spezifizierte Ope ration an zumindest einem Paar (X0; Y0) einander entspre chender Datenelemente in der ersten (X0, X1; Y0, Y1) und der zweiten (X2, X3; Y2, Y3) Mehrzahl entsprechender Datenele mente durchgeführt wird, um zumindest ein Ergebnisdatenele ment (Z0) der ersten und zweiten Mehrzahl von Ergebnisdaten elementen zu erzeugen, und
die verbleibenden Ergebnisdatenelemente (Z1, Z2, Z3) der ersten und zweiten Mehrzahl von Ergebnisdatenelementen auf wenigstens einen vorgegebenen Wert gesetzt werden, und
die erste und zweite Mehrzahl von Ergebnisdatenelemen ten in einem einzigen logischen Register als dritter gepack ter Datenoperand gespeichert werden.
ein einzelner Makrobefehl empfangen wird, der zumindest zwei logische Register in einem Registersatz gepackter Daten spezifiziert, wobei die beiden logischen Register einen er sten gepackten Datenoperanden bzw. einen zweiten gepackten Datenoperanden speichern, die einander entsprechende Daten elemente aufweisen, und
die Datenoperanden in wenigstens ein erstes Segment mit einer ersten Mehrzahl (X0, X1; Y0, Y1) und ein zweites Seg ment mit einer zweiten Mehrzahl (X2, X3; Y2, Y3) der einan der entsprechenden Datenelemente unterteilt werden und die erste Mehrzahl und die zweite Mehrzahl unabhängig zu ver schiedenen Zeiten unter Verwendung der gleichen Schaltungen verarbeitet werden, um unabhängig eine erste (Z0, Z1) und eine zweite Mehrzahl (Z2, Z3) von Ergebnisdatenelementen zu erzeugen, indem
eine von dem einzelnen Makrobefehl spezifizierte Ope ration an zumindest einem Paar (X0; Y0) einander entspre chender Datenelemente in der ersten (X0, X1; Y0, Y1) und der zweiten (X2, X3; Y2, Y3) Mehrzahl entsprechender Datenele mente durchgeführt wird, um zumindest ein Ergebnisdatenele ment (Z0) der ersten und zweiten Mehrzahl von Ergebnisdaten elementen zu erzeugen, und
die verbleibenden Ergebnisdatenelemente (Z1, Z2, Z3) der ersten und zweiten Mehrzahl von Ergebnisdatenelementen auf wenigstens einen vorgegebenen Wert gesetzt werden, und
die erste und zweite Mehrzahl von Ergebnisdatenelemen ten in einem einzigen logischen Register als dritter gepack ter Datenoperand gespeichert werden.
8. Verfahren nach Anspruch 7, dadurch gekennzeichnet,
daß der wenigstens eine vorgegebene Wert Werte der Datenele
mente von entweder dem ersten gepackten Datenoperanden oder
dem zweiten gepackten Datenoperanden umfaßt wird.
9. Verfahren nach Anspruch 7, dadurch gekennzeichnet,
daß der wenigstens eine vorgegebene Wert Null ist.
10. Verfahren nach Anspruch 7, dadurch gekennzeichnet,
daß der wenigstens eine vorgegebene Wert eine Keine-
Zahl(NaN)-Anzeige ist.
11. Verfahren nach einem der Ansprüche 7 bis 10, da
durch gekennzeichnet, daß der Makrobefehl von einem Decodie
rer empfangen und in wenigstens zwei Mikrobefehle konver
tiert wird, wobei jeder der wenigstens zwei Mikrobefehle die
Verarbeitung der Mehrzahl von Datenelementen eines zugehöri
gen Segments bewirkt.
12. Verfahren nach Anspruch 11, dadurch gekennzeichnet,
daß die von dem Makrobefehl spezifizierte Operation nur an
einem Teil der einander entsprechenden Datenelemente durch
geführt wird, wobei wenigstens einer der Mikrobefehle aus
schließlich Datenelementen zugeordnet ist, an denen die von
dem Makrobefehl spezifizierte Operation nicht durchgeführt
wird, und dieser wenigstens eine Mikrobefehl vor seiner Aus
führung eliminiert wird.
13. Verfahren nach Anspruch 12, dadurch gekennzeichnet,
daß die dem wenigstens einen eliminierten Mikrobefehl zuge
ordneten Ergebnisdatenelemente auf den vorgegebenen Wert ge
setzt werden.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/053,127 US6230253B1 (en) | 1998-03-31 | 1998-03-31 | Executing partial-width packed data instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19914617A1 DE19914617A1 (de) | 1999-10-14 |
DE19914617C2 true DE19914617C2 (de) | 2002-10-31 |
Family
ID=21982113
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19914617A Expired - Lifetime DE19914617C2 (de) | 1998-03-31 | 1999-03-31 | Prozessor und Verfahren zum Ausführen von Befehlen an gepackten Daten |
Country Status (7)
Country | Link |
---|---|
US (3) | US6230253B1 (de) |
CN (3) | CN1286002C (de) |
DE (1) | DE19914617C2 (de) |
GB (1) | GB2339040C (de) |
HK (1) | HK1027402A1 (de) |
SG (1) | SG85630A1 (de) |
TW (1) | TW470914B (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8185571B2 (en) | 1995-08-31 | 2012-05-22 | Intel Corporation | Processor for performing multiply-add operations on packed data |
Families Citing this family (64)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7395298B2 (en) * | 1995-08-31 | 2008-07-01 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed data |
US6418529B1 (en) * | 1998-03-31 | 2002-07-09 | Intel Corporation | Apparatus and method for performing intra-add operation |
US6230257B1 (en) * | 1998-03-31 | 2001-05-08 | Intel Corporation | Method and apparatus for staggering execution of a single packed data instruction using the same circuit |
US6233671B1 (en) | 1998-03-31 | 2001-05-15 | Intel Corporation | Staggering execution of an instruction by dividing a full-width macro instruction into at least two partial-width micro instructions |
US7395302B2 (en) * | 1998-03-31 | 2008-07-01 | Intel Corporation | Method and apparatus for performing horizontal addition and subtraction |
US6230253B1 (en) | 1998-03-31 | 2001-05-08 | Intel Corporation | Executing partial-width packed data instructions |
US7392275B2 (en) * | 1998-03-31 | 2008-06-24 | Intel Corporation | Method and apparatus for performing efficient transformations with horizontal addition and subtraction |
US6192467B1 (en) | 1998-03-31 | 2001-02-20 | Intel Corporation | Executing partial-width packed data instructions |
US6687806B1 (en) * | 2000-06-15 | 2004-02-03 | Advanced Micro Devices, Inc. | Apparatus and method for generating 64 bit displacement and immediate values |
CN1299198C (zh) * | 2001-06-27 | 2007-02-07 | 凌阳科技股份有限公司 | 由可改变的指令格式而提高程序码密集度的微控制器结构 |
US7430578B2 (en) * | 2001-10-29 | 2008-09-30 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed byte data |
US7200738B2 (en) * | 2002-04-18 | 2007-04-03 | Micron Technology, Inc. | Reducing data hazards in pipelined processors to provide high processor utilization |
DE10225230B4 (de) * | 2002-06-06 | 2004-10-21 | Infineon Technologies Ag | Prozessor und Verfahren zum gleichzeitigen Ausführen einer Berechnung und eines Kopiervorgangs |
US7426529B2 (en) * | 2002-06-06 | 2008-09-16 | Infineon Technologies Ag | Processor and method for a simultaneous execution of a calculation and a copying process |
US7249350B2 (en) * | 2002-09-30 | 2007-07-24 | Intel Corporation | Optimized translation of scalar type SIMD instructions into non-scalar SIMD instructions |
US7386704B2 (en) | 2002-10-31 | 2008-06-10 | Lockheed Martin Corporation | Pipeline accelerator including pipeline circuits in communication via a bus, and related system and method |
US7668897B2 (en) * | 2003-06-16 | 2010-02-23 | Arm Limited | Result partitioning within SIMD data processing systems |
US7237096B1 (en) * | 2004-04-05 | 2007-06-26 | Sun Microsystems, Inc. | Storing results of producer instructions to facilitate consumer instruction dependency tracking |
US7383427B2 (en) * | 2004-04-22 | 2008-06-03 | Sony Computer Entertainment Inc. | Multi-scalar extension for SIMD instruction set processors |
US20050251649A1 (en) * | 2004-04-23 | 2005-11-10 | Sony Computer Entertainment Inc. | Methods and apparatus for address map optimization on a multi-scalar extension |
US7389406B2 (en) * | 2004-09-28 | 2008-06-17 | Intel Corporation | Apparatus and methods for utilization of splittable execution units of a processor |
US20060101250A1 (en) | 2004-10-01 | 2006-05-11 | Lockheed Martin Corporation | Configurable computing machine and related systems and methods |
US7257695B2 (en) * | 2004-12-28 | 2007-08-14 | Intel Corporation | Register file regions for a processing system |
CN100452090C (zh) * | 2006-03-14 | 2009-01-14 | 腾讯科技(深圳)有限公司 | 一种实现高动态光照范围的方法及*** |
US7761694B2 (en) * | 2006-06-30 | 2010-07-20 | Intel Corporation | Execution unit for performing shuffle and other operations |
US7783862B2 (en) * | 2006-08-07 | 2010-08-24 | International Characters, Inc. | Method and apparatus for an inductive doubling architecture |
US20080071851A1 (en) * | 2006-09-20 | 2008-03-20 | Ronen Zohar | Instruction and logic for performing a dot-product operation |
US8631224B2 (en) * | 2007-09-13 | 2014-01-14 | Freescale Semiconductor, Inc. | SIMD dot product operations with overlapped operands |
US8103858B2 (en) * | 2008-06-30 | 2012-01-24 | Intel Corporation | Efficient parallel floating point exception handling in a processor |
US8755515B1 (en) | 2008-09-29 | 2014-06-17 | Wai Wu | Parallel signal processing system and method |
US20100274961A1 (en) * | 2009-04-22 | 2010-10-28 | Golla Robert T | Physically-indexed logical map table |
US8335912B2 (en) * | 2009-04-22 | 2012-12-18 | Oracle America, Inc. | Logical map table for detecting dependency conditions between instructions having varying width operand values |
US8458444B2 (en) * | 2009-04-22 | 2013-06-04 | Oracle America, Inc. | Apparatus and method for handling dependency conditions between floating-point instructions |
US8504805B2 (en) * | 2009-04-22 | 2013-08-06 | Oracle America, Inc. | Processor operating mode for mitigating dependency conditions between instructions having different operand sizes |
US8495125B2 (en) * | 2009-05-27 | 2013-07-23 | Microchip Technology Incorporated | DSP engine with implicit mixed sign operands |
US8495341B2 (en) * | 2010-02-17 | 2013-07-23 | International Business Machines Corporation | Instruction length based cracking for instruction of variable length storage operands |
US9052890B2 (en) * | 2010-09-25 | 2015-06-09 | Intel Corporation | Execute at commit state update instructions, apparatus, methods, and systems |
US8914615B2 (en) | 2011-12-02 | 2014-12-16 | Arm Limited | Mapping same logical register specifier for different instruction sets with divergent association to architectural register file using common address format |
US10866807B2 (en) | 2011-12-22 | 2020-12-15 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of integers in numerical order that differ by a constant stride |
US10223112B2 (en) | 2011-12-22 | 2019-03-05 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset |
WO2013095580A1 (en) | 2011-12-22 | 2013-06-27 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset |
WO2013095554A1 (en) | 2011-12-22 | 2013-06-27 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of consecutive integers in numerical order |
CN104185837B (zh) | 2011-12-23 | 2017-10-13 | 英特尔公司 | 在不同的粒度等级下广播数据值的指令执行单元 |
CN116414459A (zh) | 2011-12-23 | 2023-07-11 | 英特尔公司 | 在不同的粒度水平下对数据值进行广播和掩码的指令执行 |
US9513912B2 (en) | 2012-07-27 | 2016-12-06 | Micron Technology, Inc. | Memory controllers |
US20140281418A1 (en) * | 2013-03-14 | 2014-09-18 | Shihjong J. Kuo | Multiple Data Element-To-Multiple Data Element Comparison Processors, Methods, Systems, and Instructions |
US9477467B2 (en) * | 2013-03-30 | 2016-10-25 | Intel Corporation | Processors, methods, and systems to implement partial register accesses with masked full register accesses |
US10228941B2 (en) * | 2013-06-28 | 2019-03-12 | Intel Corporation | Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register |
US9424034B2 (en) | 2013-06-28 | 2016-08-23 | Intel Corporation | Multiple register memory access instructions, processors, methods, and systems |
US9495155B2 (en) | 2013-08-06 | 2016-11-15 | Intel Corporation | Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment |
US9513907B2 (en) | 2013-08-06 | 2016-12-06 | Intel Corporation | Methods, apparatus, instructions and logic to provide vector population count functionality |
US9355061B2 (en) | 2014-01-28 | 2016-05-31 | Arm Limited | Data processing apparatus and method for performing scan operations |
US10108454B2 (en) * | 2014-03-21 | 2018-10-23 | Intel Corporation | Managing dynamic capacitance using code scheduling |
JP6307975B2 (ja) * | 2014-03-28 | 2018-04-11 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
FR3021428B1 (fr) * | 2014-05-23 | 2017-10-13 | Kalray | Multiplication de matrices de bits utilisant des registres explicites |
TWI681300B (zh) * | 2014-11-14 | 2020-01-01 | 美商凱為有限責任公司 | 在64位元資料路徑上實行128位元simd操作之方法、系統及電腦可讀取媒體 |
US10001995B2 (en) * | 2015-06-02 | 2018-06-19 | Intel Corporation | Packed data alignment plus compute instructions, processors, methods, and systems |
US10459731B2 (en) * | 2015-07-20 | 2019-10-29 | Qualcomm Incorporated | Sliding window operation |
US20170192789A1 (en) * | 2015-12-30 | 2017-07-06 | Rama Kishnan V. Malladi | Systems, Methods, and Apparatuses for Improving Vector Throughput |
US10901940B2 (en) * | 2016-04-02 | 2021-01-26 | Intel Corporation | Processors, methods, systems, and instructions to atomically store to memory data wider than a natively supported data width |
US10296342B2 (en) * | 2016-07-02 | 2019-05-21 | Intel Corporation | Systems, apparatuses, and methods for cumulative summation |
US10838720B2 (en) * | 2016-09-23 | 2020-11-17 | Intel Corporation | Methods and processors having instructions to determine middle, lowest, or highest values of corresponding elements of three vectors |
CN111010883B (zh) | 2018-08-06 | 2022-07-12 | 华为技术有限公司 | 矩阵的处理方法、装置及逻辑电路 |
CN111459546B (zh) * | 2020-03-30 | 2023-04-18 | 芯来智融半导体科技(上海)有限公司 | 一种实现操作数位宽可变的装置及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4677582A (en) * | 1982-04-19 | 1987-06-30 | Hitachi, Ltd. | Operation processing apparatus |
WO1997008608A1 (en) * | 1995-08-31 | 1997-03-06 | Intel Corporation | A set of instructions for operating on packed data |
Family Cites Families (73)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3675001A (en) | 1970-12-10 | 1972-07-04 | Ibm | Fast adder for multi-number additions |
US3723715A (en) | 1971-08-25 | 1973-03-27 | Ibm | Fast modulo threshold operator binary adder for multi-number additions |
FR2212952A5 (de) | 1972-12-29 | 1974-07-26 | Cit Alcatel | |
US3900724A (en) | 1974-02-11 | 1975-08-19 | Trw Inc | Asynchronous binary multiplier using non-threshold logic |
JPS5824941A (ja) | 1981-08-07 | 1983-02-15 | Hitachi Ltd | 演算装置 |
JPS60134974A (ja) | 1983-12-23 | 1985-07-18 | Hitachi Ltd | ベクトル処理装置 |
US4945479A (en) | 1985-07-31 | 1990-07-31 | Unisys Corporation | Tightly coupled scientific processing system |
JPS6284335A (ja) | 1985-10-09 | 1987-04-17 | Hitachi Ltd | 乗算回路 |
JPS6297060A (ja) * | 1985-10-23 | 1987-05-06 | Mitsubishi Electric Corp | デイジタルシグナルプロセツサ |
US5021945A (en) | 1985-10-31 | 1991-06-04 | Mcc Development, Ltd. | Parallel processor system for processing natural concurrencies and method therefor |
US4890218A (en) | 1986-07-02 | 1989-12-26 | Raytheon Company | Variable length instruction decoding apparatus having cross coupled first and second microengines |
US4985848A (en) | 1987-09-14 | 1991-01-15 | Visual Information Technologies, Inc. | High speed image processing system using separate data processor and address generator |
US5189636A (en) | 1987-11-16 | 1993-02-23 | Intel Corporation | Dual mode combining circuitry |
US5047975A (en) | 1987-11-16 | 1991-09-10 | Intel Corporation | Dual mode adder circuitry with overflow detection and substitution enabled for a particular mode |
US5126964A (en) | 1988-04-01 | 1992-06-30 | Digital Equipment Corporation | High performance bit-sliced multiplier circuit |
US4972362A (en) | 1988-06-17 | 1990-11-20 | Bipolar Integrated Technology, Inc. | Method and apparatus for implementing binary multiplication using booth type multiplication |
CA1311063C (en) | 1988-12-16 | 1992-12-01 | Tokumichi Murakami | Digital signal processor |
US5134693A (en) * | 1989-01-18 | 1992-07-28 | Intel Corporation | System for handling occurrence of exceptions during execution of microinstructions while running floating point and non-floating point instructions in parallel |
US5081698A (en) | 1989-02-14 | 1992-01-14 | Intel Corporation | Method and apparatus for graphics display data manipulation |
US5001662A (en) | 1989-04-28 | 1991-03-19 | Apple Computer, Inc. | Method and apparatus for multi-gauge computation |
US5590365A (en) | 1990-03-30 | 1996-12-31 | Kabushiki Kaisha Toshiba | Pipeline information processing circuit for floating point operations |
JP2651267B2 (ja) | 1990-07-26 | 1997-09-10 | 富士通株式会社 | 演算処理装置及び演算処理方法 |
DE69129960T2 (de) * | 1990-09-18 | 1998-12-24 | Fujitsu Ltd | System zur Gestaltung eines geteilten Speichers |
US5765011A (en) | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams |
US5303355A (en) | 1991-03-27 | 1994-04-12 | Motorola, Inc. | Pipelined data processor which conditionally executes a predetermined looping instruction in hardware |
US5241493A (en) | 1991-12-16 | 1993-08-31 | International Business Machines Corporation | Floating point arithmetic unit with size efficient pipelined multiply-add architecture |
US5311508A (en) | 1991-12-23 | 1994-05-10 | Square D Company | Apparatus for receiving and decoding a serial data packet containing the status of a network of single point I/O devices |
US5210711A (en) | 1992-02-26 | 1993-05-11 | Sony Corporation Of America | Very fast variable input multi-bit adder |
US5606677A (en) | 1992-11-30 | 1997-02-25 | Texas Instruments Incorporated | Packed word pair multiply operation forming output including most significant bits of product and other bits of one input |
JPH06242928A (ja) | 1993-02-22 | 1994-09-02 | Nec Corp | 加算器およびこれを用いた乗算回路 |
US5327369A (en) | 1993-03-31 | 1994-07-05 | Intel Corporation | Digital adder and method for adding 64-bit, 16-bit and 8-bit words |
US5806049A (en) | 1993-04-21 | 1998-09-08 | Petruzzi; Christopher R. | Data processing system for global assessment of investment opportunity and cost |
US5883824A (en) | 1993-11-29 | 1999-03-16 | Hewlett-Packard Company | Parallel adding and averaging circuit and method |
US5390135A (en) | 1993-11-29 | 1995-02-14 | Hewlett-Packard | Parallel shift and add circuit and method |
US5673427A (en) | 1994-03-01 | 1997-09-30 | Intel Corporation | Packing valid micro operations received from a parallel decoder into adjacent locations of an output queue |
US5642306A (en) | 1994-07-27 | 1997-06-24 | Intel Corporation | Method and apparatus for a single instruction multiple data early-out zero-skip multiplier |
US5579253A (en) | 1994-09-02 | 1996-11-26 | Lee; Ruby B. | Computer multiply instruction with a subresult selection option |
WO1996017291A1 (en) | 1994-12-02 | 1996-06-06 | Intel Corporation | Microprocessor with packing operation of composite operands |
US5819101A (en) * | 1994-12-02 | 1998-10-06 | Intel Corporation | Method for packing a plurality of packed data elements in response to a pack instruction |
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 |
US5742840A (en) | 1995-08-16 | 1998-04-21 | Microunity Systems Engineering, Inc. | General purpose, multiple precision parallel operation, programmable media processor |
US6006318A (en) | 1995-08-16 | 1999-12-21 | Microunity Systems Engineering, Inc. | General purpose, dynamic partitioning, programmable media processor |
US6643765B1 (en) | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
US5721892A (en) | 1995-08-31 | 1998-02-24 | Intel Corporation | Method and apparatus for performing multiply-subtract operations on packed data |
US6385634B1 (en) * | 1995-08-31 | 2002-05-07 | Intel Corporation | Method for performing multiply-add operations on packed data |
US6470370B2 (en) * | 1995-09-05 | 2002-10-22 | Intel Corporation | Method and apparatus for multiplying and accumulating complex numbers in a digital filter |
US5936872A (en) | 1995-09-05 | 1999-08-10 | Intel Corporation | Method and apparatus for storing complex numbers to allow for efficient complex multiplication operations and performing such complex multiplication operations |
US5701508A (en) * | 1995-12-19 | 1997-12-23 | Intel Corporation | Executing different instructions that cause different data type operations to be performed on single logical register file |
US5852726A (en) | 1995-12-19 | 1998-12-22 | Intel Corporation | Method and apparatus for executing two types of instructions that specify registers of a shared logical register file in a stack and a non-stack referenced manner |
WO1997024681A1 (en) | 1995-12-19 | 1997-07-10 | Intel Corporation | A computer system performing a two-dimensional rotation of packed data representing multimedia information |
US5835748A (en) | 1995-12-19 | 1998-11-10 | Intel Corporation | Method for executing different sets of instructions that cause a processor to perform different data type operations on different physical registers files that logically appear to software as a single aliased register file |
US5793661A (en) | 1995-12-26 | 1998-08-11 | Intel Corporation | Method and apparatus for performing multiply and accumulate operations on packed data |
US5983257A (en) * | 1995-12-26 | 1999-11-09 | Intel Corporation | System for signal processing using multiply-add operations |
US5835392A (en) | 1995-12-28 | 1998-11-10 | Intel Corporation | Method for performing complex fast fourier transforms (FFT's) |
US5880983A (en) | 1996-03-25 | 1999-03-09 | International Business Machines Corporation | Floating point split multiply/add system which has infinite precision |
US6041403A (en) | 1996-09-27 | 2000-03-21 | Intel Corporation | Method and apparatus for generating a microinstruction responsive to the specification of an operand, in addition to a microinstruction based on the opcode, of a macroinstruction |
US6061521A (en) * | 1996-12-02 | 2000-05-09 | Compaq Computer Corp. | Computer having multimedia operations executable as two distinct sets of operations within a single instruction cycle |
TW357318B (en) * | 1997-03-18 | 1999-05-01 | Ind Tech Res Inst | Branching forecast and reading device for unspecified command length extra-purity pipeline processor |
US5884071A (en) * | 1997-03-31 | 1999-03-16 | Intel Corporation | Method and apparatus for decoding enhancement instructions using alias encodings |
FR2766353B1 (fr) | 1997-07-28 | 1999-11-26 | Dimso Sa | Implant, notamment plaque anterieure cervicale |
US6260137B1 (en) * | 1997-09-12 | 2001-07-10 | Siemens Aktiengesellschaft | Data processing unit with digital signal processing capabilities |
US5864703A (en) * | 1997-10-09 | 1999-01-26 | Mips Technologies, Inc. | Method for providing extended precision in SIMD vector arithmetic operations |
US7197625B1 (en) * | 1997-10-09 | 2007-03-27 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
US6178482B1 (en) | 1997-11-03 | 2001-01-23 | Brecis Communications | Virtual register sets |
US6230253B1 (en) | 1998-03-31 | 2001-05-08 | Intel Corporation | Executing partial-width packed data instructions |
US6233671B1 (en) | 1998-03-31 | 2001-05-15 | Intel Corporation | Staggering execution of an instruction by dividing a full-width macro instruction into at least two partial-width micro instructions |
US6122725A (en) | 1998-03-31 | 2000-09-19 | Intel Corporation | Executing partial-width packed data instructions |
US6230257B1 (en) * | 1998-03-31 | 2001-05-08 | Intel Corporation | Method and apparatus for staggering execution of a single packed data instruction using the same circuit |
US6192467B1 (en) | 1998-03-31 | 2001-02-20 | Intel Corporation | Executing partial-width packed data instructions |
US6378060B1 (en) | 1998-08-24 | 2002-04-23 | Microunity Systems Engineering, Inc. | System to implement a cross-bar switch of a broadband processor |
US6272512B1 (en) | 1998-10-12 | 2001-08-07 | Intel Corporation | Data manipulation instruction for enhancing value and efficiency of complex arithmetic |
US7313788B2 (en) * | 2003-10-29 | 2007-12-25 | International Business Machines Corporation | Vectorization in a SIMdD DSP architecture |
-
1998
- 1998-03-31 US US09/053,127 patent/US6230253B1/en not_active Expired - Lifetime
-
1999
- 1999-03-19 SG SG9901386A patent/SG85630A1/en unknown
- 1999-03-29 GB GB9907221A patent/GB2339040C/en not_active Expired - Fee Related
- 1999-03-31 CN CNB99104620XA patent/CN1286002C/zh not_active Expired - Lifetime
- 1999-03-31 CN CNB2004100835854A patent/CN100385432C/zh not_active Expired - Lifetime
- 1999-03-31 CN CNB200410083584XA patent/CN100367269C/zh not_active Expired - Lifetime
- 1999-03-31 DE DE19914617A patent/DE19914617C2/de not_active Expired - Lifetime
- 1999-05-03 TW TW088105137A patent/TW470914B/zh active
-
2000
- 2000-07-11 HK HK00104251A patent/HK1027402A1/xx not_active IP Right Cessation
-
2001
- 2001-05-08 US US09/852,217 patent/US6970994B2/en not_active Expired - Lifetime
-
2005
- 2005-05-09 US US11/126,049 patent/US7467286B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4677582A (en) * | 1982-04-19 | 1987-06-30 | Hitachi, Ltd. | Operation processing apparatus |
WO1997008608A1 (en) * | 1995-08-31 | 1997-03-06 | Intel Corporation | A set of instructions for operating on packed data |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8185571B2 (en) | 1995-08-31 | 2012-05-22 | Intel Corporation | Processor for performing multiply-add operations on packed data |
US8396915B2 (en) | 1995-08-31 | 2013-03-12 | Intel Corporation | Processor for performing multiply-add operations on packed data |
US8495123B2 (en) | 1995-08-31 | 2013-07-23 | Intel Corporation | Processor for performing multiply-add operations on packed data |
US8626814B2 (en) | 1995-08-31 | 2014-01-07 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed data |
US8725787B2 (en) | 1995-08-31 | 2014-05-13 | Intel Corporation | Processor for performing multiply-add operations on packed data |
US8745119B2 (en) | 1995-08-31 | 2014-06-03 | Intel Corporation | Processor for performing multiply-add operations on packed data |
US8793299B2 (en) | 1995-08-31 | 2014-07-29 | Intel Corporation | Processor for performing multiply-add operations on packed data |
Also Published As
Publication number | Publication date |
---|---|
GB2339040A (en) | 2000-01-12 |
CN100367269C (zh) | 2008-02-06 |
CN1244675A (zh) | 2000-02-16 |
CN1286002C (zh) | 2006-11-22 |
US20050216706A1 (en) | 2005-09-29 |
HK1027402A1 (en) | 2001-01-12 |
GB2339040C (en) | 2008-06-16 |
CN1595389A (zh) | 2005-03-16 |
CN1595390A (zh) | 2005-03-16 |
US6230253B1 (en) | 2001-05-08 |
TW470914B (en) | 2002-01-01 |
US20020010847A1 (en) | 2002-01-24 |
GB9907221D0 (en) | 1999-05-26 |
GB2339040B (en) | 2000-07-12 |
US6970994B2 (en) | 2005-11-29 |
CN100385432C (zh) | 2008-04-30 |
US7467286B2 (en) | 2008-12-16 |
SG85630A1 (en) | 2002-01-15 |
DE19914617A1 (de) | 1999-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19914617C2 (de) | Prozessor und Verfahren zum Ausführen von Befehlen an gepackten Daten | |
DE19914210B4 (de) | Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung | |
DE69308548T2 (de) | Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor. | |
DE69017178T2 (de) | Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung. | |
DE69833008T2 (de) | Prozessor mit instruktionskodierung mittels eines schablonenfeldes | |
DE69311330T2 (de) | Befehlsablauffolgeplanung von einem risc-superskalarprozessor | |
DE4301417C2 (de) | Computersystem mit Einrichtung zur parallelen Befehlsausführung | |
DE68927371T2 (de) | Verfahren und Vorrichtung zur Verarbeitung von mehreren Zustandscodes wie für einen Parallel-Pipeline-Rechner | |
DE69932066T2 (de) | Mechanismus zur "store-to-load forwarding" | |
DE4010119C2 (de) | Anordnung und Verfahren zur Umordnung eines Speicherformats in einem Mikroprozessor | |
DE102007045496B4 (de) | Anweisung und Logik zum Bearbeiten von Textstrings | |
DE69736105T2 (de) | Hierarchische durchsuchlogik für ungeordnete lade/speicherausführungssteuerung | |
DE102015111333A1 (de) | Betreiben eines 32-bit betriebssystems auf einer 64-bit maschine | |
DE69636861T2 (de) | Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern | |
DE102020126212A1 (de) | Vorrichtungen, Verfahren und Systeme für Anweisungen eines Matrixoperationsbeschleunigers | |
DE102016006400A1 (de) | Hardware-prozessoren und verfahren für eng-gekoppelte heterogene datenverarbeitung | |
DE102015002383A1 (de) | Verfahren und Vorrichtung zum Implementieren einer dynamischen Out-of-order-Prozessorpipeline | |
DE102014003706A1 (de) | BEREICHSBEGRENZTE VEKTORSPEICHERZUGRIFFSINSTRUKTIONEN, PROZESSOREN, VERFAHREN und SYSTEME | |
US6233671B1 (en) | Staggering execution of an instruction by dividing a full-width macro instruction into at least two partial-width micro instructions | |
DE112004001648T5 (de) | Verfahren, Vorrichtung und Befehle für parallele Datenumwandlung | |
DE102018132521A1 (de) | Vorrichtung und verfahren zur verflachung und reduktion von schleifen in einer single instruction, multiple data- (simd-) pipeline | |
DE69732793T2 (de) | Acht-bit-mikrokontroller mit risc-architektur | |
DE112017003347T5 (de) | Systeme, Vorrichtungen und Verfahren für Strided-Ladevorgänge | |
EP0825540A1 (de) | Prozessor mit Pipelining-Aufbau | |
DE102014003659A1 (de) | Systeme, vorrichtungen und verfahren zum bestimmen eines folgenden niedrigstwertigen maskierungsbits eines schreibmaskenregisters |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8181 | Inventor (new situation) |
Free format text: ROUSSEL, PATRICE, PORTLAND, OREG., US THAKKAR, TICKY, PORTLAND, OREG., US ABDALLAH, MOHAMMAD A., FOLSOM, CALIF., US COKE, JAMES, SHINGLE SPRINGS, CALIF., US |
|
8181 | Inventor (new situation) |
Free format text: ROUSSEL, PATRICE, PORTLAND, OREG., US THAKKAR, TICKY, PORTLAND, OREG., US ABDALLAH, MOHAMMAD A., FOLSOM, CALIF., US PENTKOVSKI, VLADIMIR, FOLSOM, CALIF., US COKE, JAMES, SHINGLE SPRINGS, CALIF., US |
|
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
R071 | Expiry of right |