DE19914210A1 - Verfahren und Vorrichtung für eine gestaffelte Ausführung einer Anweisung - Google Patents
Verfahren und Vorrichtung für eine gestaffelte Ausführung einer AnweisungInfo
- Publication number
- DE19914210A1 DE19914210A1 DE19914210A DE19914210A DE19914210A1 DE 19914210 A1 DE19914210 A1 DE 19914210A1 DE 19914210 A DE19914210 A DE 19914210A DE 19914210 A DE19914210 A DE 19914210A DE 19914210 A1 DE19914210 A1 DE 19914210A1
- Authority
- DE
- Germany
- Prior art keywords
- data
- subset
- instruction
- data elements
- execution
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 30
- 238000012545 processing Methods 0.000 title description 17
- 230000003252 repetitive effect Effects 0.000 title 1
- 230000003111 delayed effect Effects 0.000 claims description 6
- 241000153282 Theope Species 0.000 claims description 2
- 230000008569 process Effects 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 239000000872 buffer Substances 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000007619 statistical method Methods 0.000 description 2
- 238000001356 surgical procedure Methods 0.000 description 2
- 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 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012544 monitoring process 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/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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- 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, look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
- G06F9/3828—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
-
- 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, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, 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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
Abstract
Bei einem Verfahren bzw. einem Prozessor wird zunächst eine einzelne Makroanweisung empfangen, wobei die einzelne Makroanweisung eine Operation (z. B. ADD, MUL) und wenigstens zwei logische Register (X, Y) einer Registerdatei (480) spezifiziert. Die beiden logischen Register enthalten einen ersten bzw. zweiten gepackten Datenoperanden mit einander entsprechenden Datenelementen. Die von der Makroanweisung spezifizierte Operation wird dann von derselben Schaltung (Ausführungseinheit (ADD, MUL)) zu verschiedenen Zeiten unabhängig zunächst an einer ersten Mehrzahl und dann an einer zweiten Mehrzahl von einander entsprechenden Datenelementen des ersten bzw. zweiten Operanden ausgeführt, um eine erste bzw. eine zweite Mehrzahl von Ergebnisdatenelementen zu erzeugen. Die erste und zweite Mehrzahl von Ergebnisdatenelementen werden als dritter gepackter Daten-Operand (Z) in die Registerdatei (480) gespeichert.
Description
Die Erfindung bezieht sich auf Verfahren und Einrichtun
gen zum Staffeln der Ausführung einer Anweisung.
Multimedia-Anwendungen, wie 2D/3D-Graphikanwendungen,
Bildverarbeitung, Video-Kompression/Dekompression, Spracher
kennungsalgorithmen und Audio-Verarbeitung erfordern die
Durchführung der gleichen Operation an einer großen Anzahl
von Datenelementen (bezeichnet als "Datenparallelität"),
welche in einer kleinen Anzahl von Bits dargestellt werden
können. So werden graphische und Audiodaten typischerweise
durch 32 Bits in Gleitkomma-Format und 8 oder 16 Bits in
Ganzzahl-Format dargestellt. Gleitkommazahlen werden in
einem Computersystem in der Form einer Datenkette mit drei
Komponenten dargestellt: Einem Vorzeichen, einem Exponenten
(der die Größe der Zahl anzeigt) und einer Kenngröße oder
Mantisse (welche den Wert des Bruchteils der Zahl angibt).
Jede Art von Multimedia-Anwendung implementiert mindestens
einen Algorithmus, wobei jeder Algorithmus eine Anzahl von
Gleitkomma- oder Ganzzahl-Operationen, wie Addition (ADD)
oder Multiplikation (MUL), erforderlich machen kann.
Einzelanweisungs-Mehrfachdaten(SIMD)-Technologie hat
eine beträchtliche Verbesserung in der Multimedia-Anwen
dungsleistung ermöglicht. Die SIMD-Technologie liefert eine
einzige Makroanweisung, deren Ausführung bewirkt, daß der
Prozessor die gleiche Operation an mehreren Datenelementen
parallel durchführt. Diese Technologie ist insbesondere für
Systeme geeignet, welche gepackte Datenformate liefern. Ein
gepacktes Datenformat ist ein solches, bei dem die in einem
Register befindlichen Bits in eine Anzahl von Datenelementen
fester Größe logisch unterteilt werden, wobei jedes Daten
element einen separaten Wert darstellt. So kann ein 64-Bit-
Register in vier 16-Bit-Elemente aufgebrochen werden, von
denen jedes einen separaten 16-Bit-Wert darstellt. SIMD-
Anweisungen verarbeiten dann separat und parallel jedes Ele
ment in diesen gepackten Datentypen. Beispielsweise addiert
eine gepackte SIMD-ADD-Anweisung zugehörige Datenelemente
aus einem ersten gepackten Datenoperanden und einem zweiten
gepackten Datenoperanden, wie dies in Fig. 1 dargestellt
ist. Insbesondere werden die entsprechenden Datenelemente
für X und Y addiert mit dem Ergebnis Z, d. h.
X0+Y0 = Z0, X1+Y1 = Z1, X2+Y2 = Z2 und X3+Y3 = Z3.
Fig. 2A-2B zeigen eine derzeitige Prozessor-Realisie
rung einer Arithmetik-Logik-Einheit (ALU), die zum Ausführen
von SIMD-Anweisungen verwendbar ist. Die ALU gemäß Fig. 2A
weist die notwendige Schaltung zur Durchführung von Opera
tionen an der vollen Breite der Operanden (d. h. allen Daten
elementen) auf. Fig. 2A zeigt auch, daß die ALU zwei ver
schiedenartige Ausführungseinheiten zum jeweiligen Ausführen
verschiedener Operationsarten enthält (z. B. gewisse ALU's
verwenden separate Einheiten zum Durchführen von ADD- und
MUL-Operationen). Bei diesem Beispiel ist angenommen, daß
die Prozessor-Ausführungsmaschine in der Lage ist, eine
Anweisung pro Taktzyklus zu verarbeiten. Die vier ADD-Aus
führungseinheiten und vier MUL-Ausführungseinheiten sind
jeweils in der Lage, als vier separate ADD-Ausführungsein
heiten und vier separate MUL-Ausführungseinheiten zu arbei
ten. Alternativ kann die ALU mehrere Gleitkomma-Multiplika
tion-Akkumulation(FMAC)-Einheiten enthalten, von denen jede
mehr als eine Operationsart ausführen kann. Bei den folgen
den Beispielen wird angenommen, daß ADD- und MUL-Ausfüh
rungseinheiten verwendet werden; jedoch können auch andere
Ausführungseinheiten, wie FMAC, verwendet werden.
Wenn gemäß Darstellung in Fig. 2B zum Zeitpunkt T eine
"ADD X,Y"-Anweisung über den Ausgabeport 105 ausgegeben
wird, führt jede der vier ADD-Ausführungseinheiten eine ADD-
Operation an den separaten gepackten Datenelementen aus. Die
vier MUL-Einheiten bleiben zum Zeitpunkt T in Ruhestellung.
Angenommen, eine "ADD A,B"-Anweisung wird ausgegeben, so
führt zum Zeitpunkt T+1 jede der vier ADD-Ausführungseinhei
ten erneut eine ADD-Operation an den getrennt gepackten
Datenelementen aus, während die vier MUL-Einheiten wiederum
im Ruhezustand sind. Wenn eine "MUL X,Y"-Anweisung zum Zeit
punkt T+2 ausgegeben wird, so führt jede der vier MUL-Ein
heiten separat eine MUL-Operation an einem der vier gepack
ten Datenelemente aus, während die vier ADD-Ausführungsein
heiten im Ruhezustand bleiben. Wenn schließlich zum Zeit
punkt T+3 eine "ADD S,T"-Anweisung ausgegeben wird, so führt
jede der vier ADD-Ausführungseinheiten Additionsoperationen
(ADD's) aus, während die vier MUL-Einheiten im Ruhezustand
bleiben.
Die oben beschriebene Implementierung kann eine erhebli
che Menge duplizierter Hardware-Komponenten erforderlich
machen und ist bei der Ausnutzung der Hardware-Komponenten
(nämlich der ADD- und MUL-Ausführungseinheiten) ineffizient.
Zu jeder Zeit bleibt eine Ausführungseinheit im Ruhezustand,
während die zweite Ausführungseinheit aktiv ist. Wiederum
wird bei diesem Beispiel angenommen, daß die Prozessor-Aus
führungsmaschine in der Lage ist, eine Anweisung pro Taktzy
klus zu verarbeiten.
Die Erfindung befaßt sich mit einem Verfahren und einer
Einrichtung zum Staffeln der Ausführung einer Anweisung.
Gemäß einem Ausführungsbeispiel der Erfindung wird eine ein
zelne Makroanweisung aufgenommen, wobei die einzelne Makro
anweisung wenigstens zwei logische Register spezifiziert und
wobei die beiden logischen Register jeweils einen ersten und
zweiten gepackten Datenoperanden mit einander entsprechenden
Datenelementen speichern. Eine von der einzelnen Makroanwei
sung spezifizierte Operation wird dann unabhängig an einer
ersten und zweiten Mehrzahl der einander entsprechenden
Datenelemente aus dem ersten und dem zweiten gepackten
Datenoperanden zu verschiedenen Zeiten ausgeführt, wobei
dieselbe Schaltung zum unabhängigen Generieren einer ersten
und zweiten Mehrzahl von resultierenden Datenelementen ver
wendet wird. Die erste und zweite Mehrzahl von resultieren
den Datenelementen werden in einem einzigen logischen Regi
ster als ein dritter gepackter Datenoperand gespeichert.
Vorteilhafte Weiterbildungen der Erfindung sind in den
Unteransprüchen gekennzeichnet.
Im folgenden wird die Erfindung anhand von in der Zeich
nung dargestellten Ausführungsbeispielen beschrieben.
In der Zeichnung zeigen:
Fig. 1, eine gepackte SIMD-ADD-Anweisung, wobei ent
sprechende Datenelemente von einem ersten gepackten Daten
operanden und einem zweiten gepackten Datenoperanden addiert
werden;
Fig. 2A, vier ADD-Ausführungseinheiten und vier MUL-
Ausführungseinheiten gemäß einer derzeitigen Prozessorimple
mentierung des SIMD;
Fig. 2B, eine derzeitige Prozessorimplementierung eines
SIMD-ADD und -MUL unter Verwendung der vier ADD-Ausführungs
einheiten und vier MUL-Ausführungseinheiten gemäß Fig. 2A;
Fig. 3, das Konzept einer Operation, die an den Operan
den in einer "gestaffelten" Weise ausgeführt wird;
Fig. 4A, das Prinzip einer Schaltung innerhalb eines
Prozessors, der auf Operanden voller Breite aus den logi
schen Registern zugreift, jedoch Operationen an der Hälfte
der Breite der Operanden jeweils durchführt,
Fig. 4B, ein Zeitdiagramm, welches die Schaltung gemäß
Fig. 4A verdeutlicht;
Fig. 5, die Schaltung gemäß Fig. 4 mit Bypass gemäß
einem Ausführungsbeispiel der Erfindung;
Fig. 6A, das Konzept eines Ausführungsbeispiels einer
Außer-der-Reihe-Pipeline zum Durchführen von Operationen an
Operanden in einer "gestaffelten" Weise durch Umwandeln
einer Makrooperation in eine Vielzahl von Mikrooperationen,
von denen jede einen Teil der vollen Breite der Operanden
verarbeitet;
Fig. 6B, ein Zeitdiagramm, welches das anhand von Fig. 6A
beschriebene Ausführungsbeispiel näher erläutert.
Die Erfindung befaßt sich mit einem Verfahren und einer
Einrichtung zur Staffelung der Ausführung einer Anweisung.
In der folgenden Figurenbeschreibung werden zahlreiche spe
zielle Details angeben, um das Verständnis für die vorlie
gende Erfindung zu erleichtern. Es ist für den Fachmann aber
klar, daß diese speziellen Details zum Umsetzen der vorlie
genden Erfindung nicht erforderlich sind. In anderen Fällen
werden bekannte Strukturen, Schnittstellen und Prozesse
nicht im einzelnen beschrieben, um den Gegenstand der Erfin
dung nicht mit unnötigen Einzelheiten zu belasten.
Fig. 3 zeigt das Konzept einer Operation, die an Ope
randen in einer "gestaffelten" Weise durchgeführt wird. Ob
wohl bei einem Ausführungsbeispiel der Erfindung ein gepack
tes Datenoperandenformat angenommen wird, ist die folgende
Beschreibung auch bei der Ausführung gewisser Operationen
(z. B. logische Operationen) an einem skalaren Datenformat
anwendbar. Die "gestaffelte Ausführung" bezieht sich im Kon
text dieses Ausführungsbeispiels auf den Prozeß der Unter
teilung der Operanden einer Anweisung in separate Segmente
und das sequentielle Verarbeiten jedes Segments unter Ver
wendung derselben Hardware. Segmente werden sequentiell
dadurch verarbeitet, daß eine Verzögerung in die Verarbei
tung der aufeinanderfolgenden Segmente eingeführt wird. Wie
in der Fig. 3 gezeigt ist, werden die gepackten Datenope
randen einer ADD-Anweisung in ein "hoch bewertetes Segment"
(Datenelemente 3 und 2) und ein "niedrig bewertetes Segment"
(Datenelemente 1 und 0) unterteilt. Das niedrig bewertete
Segment wird verarbeitet, während das hoch bewertete Segment
verzögert wird. Nachfolgend wird dann das hoch bewertete
Segment verarbeitet und das Ergebnis in voller Breite
gewonnen. Obwohl die folgenden beschriebenen Ausführungsbei
spiele nur ADD- und MUL-Ausführungseinheiten aufweisen, kön
nen zusätzlich andere Arten von Ausführungseinheiten, z. B.
FMAC-Einheiten, verwendet werden.
Während es eine Anzahl unterschiedlicher Möglichkeiten
zum Staffeln der Ausführung von Anweisungen gibt, beschrei
ben die folgenden Abschnitte zwei exemplarische Ausführungen
zur Erläuterung der Erfindung. Insbesondere erhalten beide
beschriebenen exemplarischen Ausführungen dieselben Makro
anweisungen, welche die 128-Bit-Operanden enthaltenden logi
schen Register spezifizieren. Der Ausdruck "logisches Regi
ster" wird hier verwendet, um das Konzept zu beschreiben, in
welchem Anweisungen einen Speicherbereich spezifizieren,
welcher einen einzelnen Operanden enthält. Daher kann ein
logisches Register in Hardware unter Verwendung bekannter
Techniken, einschließlich dedizierter physikalischer
Register, eines oder mehrerer dynamisch zugeordneter
physikalischer Register unter Verwendung eines Register-Um
benennungsmechanismus (weiter unten genauer beschrieben)
usw. implementiert werden.
Bei dem ersten Ausführungsbeispiel bewirkt jede Makroan
weisung, welche 128-Bit-Operanden enthaltende logische
Register spezifiziert, den Zugriff aus den physikalischen
Registern über die volle Breite der Operanden. Nach dem
Zugriff auf die Operanden der vollen Breite aus den Regi
stern werden die Operanden in niedrig und hoch Segmente
(z. B. unter Verwendung von Latch-Schaltungen und Multiple
xern) unterteilt und unter Verwendung derselben Hardware
sequentiell ausgeführt. Die resultierenden Ergebnisse halber
Breite werden gesammelt und gleichzeitig in ein einziges
logisches Register geschrieben.
Im Gegensatz dazu wird bei dem zweiten Ausführungsbei
spiel jede Makroanweisung, welche 128-Bit-Operanden enthal
tende logische Register spezifiziert, in wenigstens zwei
Mikroanweisungen unterteilt, welche jeweils nur an der Hälf
te der Operanden arbeiten. So werden die Operanden in hoch
und niedrig bewertete Segmente unterteilt, und jede Mikroan
weisung bewirkt separat, daß nur auf die Hälfte der Operan
den aus den Registern zugegriffen wird. Diese Art der Unter
teilung ist in einer SIMD-Architektur möglich, da jeder der
Operanden vom anderen unabhängig ist. Während Implementie
rungen des zweiten Ausführungsbeispiels die Mikrobefehle in
jeder Reihenfolge (entweder der Reihe nach oder nach einem
Außer-der-Reihe-Ausführungsmodell) ausführen kann, bewirken
die Mikroanweisungen jeweils, daß die von der Makroanweisung
spezifizierte Operation unabhängig an den niedrigen und
hohen Segmenten der Operanden durchgeführt wird. Außerdem
bewirkt jede Mikroanweisung, daß die Hälfte des resultie
renden Operanden in ein von der Makroanweisung spezifizier
tes einziges logisches Register geschrieben wird.
Obwohl bei den beschriebenen Ausführungsbeispielen 128-
Bit-Operanden in zwei Segmente unterteilt werden, könnten
alternative Ausführungsbeispiele größere oder kleinere Ope
randen verwenden und/oder diese Operanden in mehr als zwei
Segmente unterteilen. Wenn auch zwei Ausführungsbeispiele
zur gestaffelten Ausführung beschrieben werden, könnten
alternative Ausführungsbeispiele andere Methoden verwenden.
Fig. 4A veranschaulicht das Konzept einer Schaltung
innerhalb eines Prozessors gemäß einem ersten Ausführungs
beispiel, das auf die volle Breite der Operanden aus den
logischen Registern zugreift, jedoch zu jedem Zeitpunkt Ope
rationen nur auf der Hälfte der Breite der Operanden aus
führt. Bei diesem Ausführungsbeispiel wird angenommen, daß
die Prozessor-Ausführungsmaschine eine Anweisung pro Taktzy
klus zu verarbeiten vermag. Es sei beispielsweise angenom
men, daß die folgende Folge von Anweisungen ausgeführt wird:
ADD X,Y; MUL A,B. Zum Zeitpunkt T werden jeweils 128 Bits
aus X und 128 Bits aus Y über die Ports 1 und 2 aus deren
zugehörigen Registern gewonnen. Die niedriger bewerteten
Datensegmente, nämlich die niedrigeren 64 Bits, sowohl von X
als auch von Y werden zu den Multiplexern 400 und 404 über
tragen und danach zur Verarbeitung zu den Ausführungseinhei
ten. Die höher bewerteten Datensegmente, die höheren 64 Bits
von X und Y, werden in 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+M2
ausgelesen, in die Multiplexer 402 und 404 und von dort
zum Verarbeiten in die Ausführungseinheiten geleitet. Der
Verzögerungsmechanismus zum Speichern der höher bewerteten
Datensegmente in den Verzögerungselementen M1 und M2 ermög
licht daher der 64-Bit-Hardware, die 128 Daten Bits zu ver
arbeiten. Die niedrig bewerteten Ergebnisse aus der Ausfüh
rungseinheit werden im Verzögerungselement M3 solange gehal
ten, bis die hoch bewerteten Ergebnisse fertig sind. Die
Ergebnisse der beiden Verarbeitungsschritte werden danach
über Port 3 in die Registerdatei 400 zurückgeschrieben.
Zum Zeitpunkt T+1 kann auch die MUL-Anweisung gestartet
worden sein. Daher können zum Zeitpunkt T+1 128 Bits von A
und B aus ihren entsprechenden Registern über Ports 1 und 2
gewonnen worden sein. Die niedriger bewerteten Datenseg
mente, nämlich die unteren 64 Bits, sowohl von A als auch B
können in die Multiplexer 406 und 408 übertragen werden.
Nachdem die höher bewerteten Bits von X und Y aus den Verzö
gerungselementen M1 und M2 entfernt und in die Multiplexer
406 und 408 übertragen worden sind, können die höher bewer
teten Bits von A und B in den Verzögerungselementen M1 und
M2 gespeichert gehalten werden. Die Ergebnisse der beiden
Verarbeitungsschritte werden über Port 3 in die Registerda
tei 400 zurückgeschrieben.
Somit sind nach diesem Ausführungsbeispiel der Erfindung
Ausführungseinheiten vorgesehen, die nur die Hälfte der
Hardware (z. B. zwei ADD-Ausführungseinheiten einfacher
Genauigkeit und zwei MUL-Ausführungseinheiten einfacher
Genauigkeit) derjenigen Anordnung enthalten, die zur Paral
lelverarbeitung der vollen Breite der Operanden entsprechend
derzeitigen Prozessor-Ausführungen erforderlich wären. Diese
Ausführungsbeispiel zieht Nutzen aus der statistischen Ana
lyse, wonach Multimedia-Anwendungen annähernd 50% ADD-
Anweisungen und 50% MUL-Anweisungen benutzen. Um die Vor
teile dieses Ausführungsbeispiels der Erfindung in einer
Der-Reihe-Nach-Maschine nutzbar zu machen, muß die Reihen
folge der ADD-Anweisungen und MUL-Anweisungen nach dem fol
genden Muster festgelegt werden: ADD, MUL, ADD, MUL. Bei
einer Außer-Der-Reihe-Maschine braucht jedoch dieses Muster
nicht angewendet zu werden, da ein Einplanungsmechanismus
verwendet werden kann, um die Anweisungen, soweit möglich,
in dem richtigen Muster zu ordnen. Durch Verwendung der ADD-
und MUL-Ausführungseinheiten in der oben beschriebenen
Weise, sorgt das beschriebene Ausführungsbeispiel für eine
optimierte Nutzung der Ausführungseinheiten, wodurch eine
mit einem derzeitigen Prozessor vergleichbare Arbeitsweise
bei niedrigeren Kosten ermöglicht wird.
Fig. 4B ist ein Zeitdiagramm, welches die Schaltung
gemäß Fig. 4A erläutert. Gemäß Fig. 4B gilt insbesondere,
daß bei einer Anweisung "ADD X,Y" zum Zeitpunkt T die beiden
ADD-Ausführungseinheiten zuerst die ADD's an den niedriger
bewerteten Datensegmenten oder den beiden niedrigeren
gepackten Datenelementen gemäß Fig. 1, nämlich an X0Y0 und
X1Y1 ausführen. Zum Zeitpunkt T+1 wird die ADD-Operation an
den restlichen beiden Datenelementen aus den Operanden von
denselben Ausführungseinheiten durchgeführt, und die nach
folgenden beiden Datenelemente des höher bewerteten Daten
segments, nämlich X2Y2 und X3Y3, werden addiert. Zum Zeit
punkt T+1 kann auch die Verarbeitung der MUL-Anweisung "MUL X,Y"
beginnen. Zum Zeitpunkt T+1 führen die beiden MUL-Aus
führungseinheiten zunächst MUL-Operationen an den niedriger
bewerteten Datensegmenten oder den beiden niedrigeren
gepackten Datenelementen gemäß Fig. 1, nämlich X0Y0 und
X1Y1, aus. Zum Zeitpunkt T+2 wird die MUL-Operation an den
restlichen beiden Datenelementen aus den Operanden mit Hilfe
derselben Ausführungseinheiten durchgeführt, und die beiden
nachfolgenden Datenelemente des höher bewerteten Datenseg
ments, nämlich X2Y2 und X3Y3, werden multipliziert. Wenn
auch das zuvor beschriebene Ausführungsbeispiel unter Bezug
nahme auf ADD- und MUL-Operationen unter Verwendung von zwei
Ausführungseinheiten erläutert wurde, können andere Ausfüh
rungsbeispiele mit einer beliebigen Anzahl von Ausführungs
einheiten und/oder zur Ausführung einer beliebigen Anzahl
unterschiedlicher Operationen in einer gestaffelten Weise
verwendet werden.
Nach dem beschriebenen Ausführungsbeispiel kann 64-Bit-
Hardware zur Verarbeitung von 128-Bit-Daten verwendet
werden. Ein 128-Bit-Register kann in vier 32-Bit-Elemente
untergliedert werden, von denen jedes einen separaten 32-
Bit-Wert darstellt. Zum Zeitpunkt T führen die beiden ADD-
Ausführungseinheiten ADD-Operationen zunächst an den beiden
niedrigeren 32-Bit-Werten aus, gefolgt von einer ADD-Opera
tion an den höheren 32-Bit-Werten zum Zeitpunkt T+1. Im
Falle einer MUL-Operation verhalten sich die MUL-Ausfüh
rungseinheiten in der gleichen Weise. Diese Fähigkeit zur
gleichzeitigen Verwendung von verfügbarer 64-Bit-Hardware
zur Verarbeitung von 128-Bit-Daten stellt einen beträchtli
chen Kostenvorteil für Hardware-Hersteller dar.
Wie oben gesagt, werden die ADD- und MUL-Ausführungsein
heiten nach dem beschriebenen Ausführungsbeispiel zur Neu
ausführung einer zweiten ADD- oder MUL-Operation während
eines nachfolgenden Taktzyklus wiederverwendet. Um diese
Wiederverwendung oder "gestaffelte Ausführung" effizient
durchzuführen, nutzt dieses Ausführungsbeispiel das stati
stische Verhalten von Multimedia-Anwendungen aus. Wie oben
gesagt, nutzt dieses Ausführungsbeispiel insbesondere die
statistische Analyse aus, wonach Multimedia-Anwendungen
annähernd 50% ADD-Anweisungen und 50% MUL-Anweisungen ver
wenden. Um aus diesem Ausführungsbeispiel der Erfindung in
einer Der-Reihe-Nach-Maschine nutzen zu ziehen, muß die Rei
henfolge der ADD-Anweisungen und MUL-Anweisungen nach dem
folgenden Muster festgelegt werden: ADD, MUL, ADD, MUL. Bei
einer Außer-Der-Reihe-Maschine braucht dieses Muster jedoch
nicht festgelegt zu werden, da ein Einplanungsmechanismus
verwendet werden kann, der die Anweisungen, soweit möglich,
in das richtige Muster ordnet.
Wenn zum Zeitpunkt T+1 die beiden ADD-Ausführungseinhei
ten die zweite ADD-Operation an den beiden Datenelementen
des höher bewerteten Datensegments ausführen, können die
beiden MUL-Einheiten eine Multiplikationsoperation beginnen.
Die ersten beiden Datenelemente der MUL-Operation, d. h. das
niedriger bewertete Datensegment, können zum Zeitpunkt T+1
von den beiden MUL-Ausführungseinheiten multipliziert wer
den, gefolgt zum Zeitpunkt T+2 von den MUL-Einheiten, welche
die MUL-Operation an den beiden gepackten Datenelementen des
höher bewerteten Datenelements erneut ausführen. Auf diese
Weise wird bei einem Ausführungsbeispiel der Erfindung die
Anzahl von ADD- und MUL-Ausführungseinheiten um die Hälfte
reduziert, während die gleiche oder eine vergleichbare Ope
rationsleistung wie zuvor beibehalten wird.
Wenn jedoch eine zweite ADD-Anweisung der ersten folgt,
kann die zweite ADD-Anweisung mit Hilfe einer Einplanungs
einheit verzögert werden, um den ADD-Ausführungseinheiten
die Möglichkeit zu geben, die erste ADD-Anweisung zu been
den, oder genauer gesagt, das höher bewertete Datensegment
der ersten ADD-Anweisung. Die zweite ADD-Anweisung kann dann
mit der Ausführung beginnen. Alternativ kann dann in einem
Außer-Der-Reihe-Prozessor die Einplanungseinheit festlegen,
daß eine MUL-Anweisung weiter unten im Anweisungsstrom außer
der Reihe ausgeführt wird. Ist dies der Fall, kann die Ein
planungseinheit die MUL-Ausführungseinheiten informieren,
mit der Verarbeitung der MUL-Anweisung zu beginnen. Wenn
keine MUL-Anweisung zum Zeitpunkt T+1 zur Ausführung
ansteht, gibt der Einplaner keine der ersten ADD-Anweisung
folgende Anweisung aus, womit den ADD-Ausführungseinheiten
Zeit gegeben wird, vor Beginn der zweiten ADD-Anweisung die
erste ADD-Anweisung abzuschließen.
Ein anderes Ausführungsbeispiel der Erfindung ermöglicht
die Ausgabe von "back-to-back"-ADD- oder -MUL-Anweisungen
durch erneute Ausführung der Anweisung in denselben Ausfüh
rungseinheiten in einem halben Taktzyklus anstelle eines
vollen Taktzyklus. Die Wiederausführung der Anweisung in dem
halben Taktzyklus sorgt effektiv für eine Operationsverdop
pelung der Hardware, d. h. sie macht die Hardware doppelt so
schnell. Auf diese Weise stehen die ADD- oder MUL-Ausfüh
rungseinheiten während jedes Taktzyklus zur Ausführung einer
neuen Anweisung zur Verfügung. Die doppelt schnelle Hardware
ermöglicht den Hardware-Einheiten die Ausführung doppelt so
wirkungsvoll, wie einfache Hardware, welche nur auf den vol
len Taktzyklus ausführt. Eine doppelt so schnelle (double
pumped) Hardware bedingt jedoch beträchtlich mehr Hardware
zur wirksamen Verarbeitung der Anweisung im halben Taktzy
klus.
Fig. 5 zeigt die Schaltung gemäß Fig. 4A mit einer
Bypass-Funktionalität gemäß einem Ausführungsbeispiel der
Erfindung. Die Bypass-Funktion dieses Ausführungsbeispiels
kann zusätzlich zu der "gestaffelten Ausführungs"-Funktion
gemäß vorstehender Beschreibung implementiert werden. Die
Schaltung gemäß Fig. 5 steht in Verbindung mit zwei Quell
registern und einem Zielregister entsprechend den oben
beschriebenen Techniken. Typischerweise werden die Register
von der Steuerlogik (nicht gezeigt) selektiv adressiert.
Daher kann die Schaltung bei einer Makroanweisung Operanden
aus den beiden Registern lesen und ein Ergebnis in das
dritte Register schreiben. Die Register speichern Daten
einer vorgegebenen Breite, beispielsweise 128 Bits. Die Ein
gangsdaten werden über die Vollbreiten-Datenleitungen 115
bzw. 125 gelesen. In der Darstellung gemäß Fig. 5 sollten
alle Datenleitungen als Halbbreiten-Paralleldatenleitungen
betrachtet werden, sofern sie nicht anders markiert sind.
Vollbreiten-Paralleldatenleitungen sind als solche durch die
Markierung "\F" bezeichnet.
Fig. 5 zeigt zusätzlich Ausführungseinheiten 130 und
140, welche Operationen an der Hälfte der Breite der aus den
Quellregistern gewonnenen Operanden durchführen. Obwohl zwei
Ausführungseinheiten in Fig. 5 gezeigt sind, können mehr
oder weniger Ausführungseinheiten im Rahmen der vorliegenden
Erfindung vorgesehen sein. Um Vollbreitenkalkulationen aus
zuführen, werden die Vollbreiten-Eingangsdaten in zwei Halb
breiten-Segmente unterteilt und sequentiell in eine Logik
einheit eingegeben. Die Schaltung gemäß Fig. 5 bildet eine
erste Schaltstufe mit Schaltern 150 und 160. Die Schalter
150 und 160 geben Daten aus einem von mehreren Eingängen
aus. Datenleitung 115 ist ein erster Eingang zum Schalter
150. Datenleitung 125 ist ein erster Eingang zum Schalter
160. Die Schalter 150 und 160 sind beide mit Datenleitungen
170, einem "Schreibe-zurück-Bypass-Bus" verbunden, und zwar
als zweiten Eingang. Die Schalter 150 und 160 wählen unab
hängig unter Steuerung einer Steuereinrichtung 180 einen
Eingang aus. Die Schalter 150 und 160 empfangen und geben
Daten als Vollbreitensignale aus.
Die Ausgangssignale voller Breite der Schalter 150 und
160 wird in zwei Halbbreiten-Datenelemente unterteilt. Die
Datenleitungen 152 und 162 führen das niedrig bewertete
Daten-Ausgangssignal der Schalter 150 und 160. Die Datenlei
tungen 154 und 164 führen hoch bewertete Daten. Die Daten
leitungen 154 und 156 bilden jeweils die Eingänge zu den
Verzögerungselementen 190 bzw. 200. Die Verzögerungselemente
190 und 200 verzögern die Eingangsdaten um einen vollen
Taktzyklus. Die hoch bewerteten Daten werden daher durch die
Schaltung um einen Taktzyklus verzögert gegenüber den nied
rig bewerteten Daten übertragen. Bei einem Ausführungsbeispiel
können die Verzögerungselemente 190 und 200 als Master-
Slave-Flip-Flops ausgebildet sein.
Bei einem Ausführungsbeispiel weist die Schaltung eine
zweite Schaltstufe, gebildet aus Schaltern 210-240, auf.
Schalter 210 erhält das niedrig bewertete Ausgangssignal vom
Schalter 150; Schalter 230 erhält das hoch bewertete Daten-
Ausgangssignal vom Schalter 150. Schalter 220 erhält ein
niedrig bewertetes Daten-Ausgangssignal vom Schalter 160;
Schalter 240 erhält ein hoch bewertetes Daten-Ausgangssignal
vom Schalter 160. Schalter 210 und 220 erhalten beide Daten
aus Datenleitung 250, einem "niedrig bewerteten globalen
Bypass-Bus", als zweiten Eingang. Schalter 230 und 240
erhalten jeweils Daten von Datenleitungen 260, einen "hoch
bewerteten globalen Bypass-Bus" als zweiten Eingang. Die
Schalter 210-240 geben die Daten des jeweils ausgewählten
Eingangs auf die Datenleitungen 215, 225, 235 bzw. 245, wel
che zu einer dritten Schaltstufe übertragen werden. Jeder
Schalter 210-240 schaltet nach Maßgabe der Steuereinrichtung
180 unabhängig voneinander auf einen ausgewählten Eingang.
Jede Ausführungseinheit 130 oder 140 empfängt typischer
weise Eingaben über zwei Eingangsanschlüsse IN1 und IN2.
Eingangsdaten gelangen zu jedem Eingangsanschluß über die
dritte Schalterstufe. Die dritte Stufe bildet für jede Aus
führungseinheit ein Schalterpaar. Daher ist ein Schalterpaar
270 und 280 für die Ausführungseinheit 130 und ein zweites
Schalterpaar 290 und 300 für die Ausführungseinheit 140 vor
gesehen. Jeder Schalter der dritten Stufe wählt einen von
vier in zwei Paaren organisierten Eingängen aus. Betrachtet
sei der Schalters 270 als Beispiel. Ein erstes Paar Ein
gangsdaten stammen von den niedrigen und hohen Datenschal
tern 210, 230 der zweiten Stufe. Ein zweites Paar Eingangs
daten werden über die Datenleitungen 310 und 320, jeweils
einem "niedrigen lokalen Bypass-Bus" und einem "hohen loka
len Bypass-Bus" empfangen. In ähnlicher Weise empfängt der
Schalter 280 ein erstes Paar Eingaben von den Schaltern 220,
240 der zweiten Stufe und ein zweites Paar Eingaben von den
niedrigen und hohen lokalen Bypass-Bussen 310 und 320.
Für jede Ausführungseinheit 130, 140 leiten die dem IN1
Anschluß zugeordneten Schalter ihre Eingaben von derselben
Quelle ab. Daher, sind die Eingaben zu dem Schalter 290 iden
tisch den Eingaben zu dem Schalter 270. Ebenso leiten die
dem IN2-Anschluß zugeordneten Schalter ihre Eingaben von
derselben Quelle ab. Eingaben an den Schalter 300 sind iden
tisch mit den Eingaben an den Schalter 280. Obwohl die Ein
gaben identisch sind, können die Schalter 270-300 unabhän
gig voneinander gesteuert werden.
Die Ausführungseinheiten 130 und 140 erzeugen die Ausga
bedaten als zwei Datensegmente halber Breite. Niedrig bewer
tete Daten werden an einem OUTLO-Anschluß ausgegeben. Hoch
bewertete Daten werden einen Taktzyklus später am OUTHI-
Anschluß ausgegeben. Die niedrig und hoch bewerteten Ausga
bedaten werden über getrennte Treiber 330 und 340 an die
jeweils unteren bzw. oberen lokalen Bypass-Busse 310 und 320
übertragen. Daher können niedrig bewertete Ausgabedaten im
nächsten Zyklus nach Erzeugung in jede logische Einheit ein
gegeben werden sein. Die hoch bewerteten Ausgabendaten, die
einen Taktzyklus später erzeugt wurden, können in jede logi
sche Einheit ein Zyklus nach ihrer Erzeugung eingegeben wer
den. Daher gibt es in Zuordnung zu dem lokalen Bypass
keinerlei Verzögerung.
Daten auf jedem der unteren und oberen lokalen Bypass-
Busse 310 und 320 werden über Verzögerungselemente 350 und
360 zu den jeweiligen globalen unteren und oberen Bypass-
Bussen 250 und 260 übertragen. Jedes Verzögerungselement
350, 360 kann ein Latch 370 und einen Treiber 380 aufweisen.
Einem Verzögerungselement 350, 360 eingegebene Daten er
scheinen an dessen Ausgang mit einem Taktzyklus Verzögerung.
So erscheinen Daten an den unteren und oberen globalen
Bypass-Bussen 250, 260 einen Taktzyklus, nachdem sie an den
jeweiligen lokalen Bypass-Bussen 310, 320 erschienen sind.
Wie gesagt, bilden die globalen Bypass-Busse 250, 260
die Eingänge für die Schalter 210-240 der zweiten Stufe.
Niedrig bewertete Daten erreichen den globalen Bypass-Bus
260 einen Taktzyklus bevor die zugeordneten, hoch bewerteten
Daten an dem oberen globalen Bypass-Bus 250 ankommen. Wenn
jedes Paar von Schaltern 210-240 der zweiten Stufe so
geschaltet wird, daß es Daten vom globalem Bypass-Bus als
Eingabe erhält, können die globalen Bypass-Daten zu den
logischen Einheiten 130, 140 zurückgeleitet werden.
Daten fließen von den globalen Bypass-Bussen 250, 260
über die Datenleitung 410 zurück zu einem Ergebnisregister
390. Das Ergebnisregister 390 ist ein Register, das die
volle Breite der Datenregister 110 und 120 besitzt. Die
Daten werden in das Ergebnisregister 390, unter Nutzung der
parallelen Datenleitung voller Breite geschrieben. Ein
Master-Slave-Flip-Flop 400 verbindet den niedrig bewerteten
globalen Bypass-Bus 250 mit den Datenleitungen 410. Die
Datenleitungen 410 sind parallele Vollbreiten-Datenleitun
gen. Das Flip-Flop 400 verzögert die niedrig bewerteten
Datenleitungen um einen Taktzyklus, um einen Aufbau von Da
ten auf dem hoch bewerteten globalen Bypass-Bus 260 zu
ermöglichen. Wenn solche Daten verfügbar werden, können
niedrig und hoch bewertete Daten gleichzeitig in das Ergeb
nisregister 390 geschrieben werden.
Der Schreib-Bypass-Bus 170 erlaubt es, Daten, die in das
Ergebnisregister 390 geschrieben worden sind, zurück in die
Schalter 150, 160 der ersten Stufe zu leiten. Daher können
Daten vom Schreib-Bypass-Bus 170 zurück auf die Ausführungs
einheit 130 zurückgeführt werden, indem einer der ersten
Schalter 150, 160 auf Ausgabe von Daten des Schreib-Bypass-
Busses 170 geschaltet wird. Daten, die über den Schreib-
Bypass-Bus 170 zur Ausführungseinheit 150 fließen, werden
drei Taktzyklen nach ihrer Erzeugung am Ausgangsanschluß
OUTLO in die Ausführungseinheit getaktet.
Ein Bypass-Steuereinrichtung 180 ist in Verbindung mit
den Schaltern aller drei Schaltstufen vorgesehen. Die
Bypass-Steureinrichtung 180 überwacht die Anweisungen, die
vom Mikroprozessorkern (nicht gezeigt) ausgegeben werden.
Der Bypass-Steuereinrichtung 180 konfiguriert das Schalten
jedes Schalters, um jeden gewünschten Bypass zu implementie
ren. Wenn die Bypass-Steuereinrichtung 180 eine Anweisung
aus dem Prozessorkern empfängt, bestimmt sie, ob die Ein
gangsdaten der neuen Anweisung auf einem Bypass-Bus des
Systems anstehen. Betrachtet sei ein Beispiel, bei dem der
Kern die folgenden Anweisungen ausgibt:
PADD A,B → C,
PSHFT A,C → D,
PXOR A,C → E, und
PSUB A,C → F
PSHFT A,C → D,
PXOR A,C → E, und
PSUB A,C → F
Es sei ferner angenommen, daß die Ausführungseinheit 130
selektiv die PADD-, PXOR- oder die PSUB-Funktionen ausführt,
und daß die Ausführungseinheit 140 die PSHFT-Funktion aus
führt. Das mit "C"- bezeichnete Ergebnis der PADD-Funktion,
ist eine Eingabe an jede der folgenden drei Anweisungen. Die
Bypass-Architektur leitet den C-Wert vorteilhafterweise
zurück zu den Eingängen der Ausführungseinheiten, ohne dabei
Daten in das Register 390 schreiben und wieder in die Schal
tung einlesen zu müssen.
Die Bypass-Steuereinrichtung 180 hält einen Drei-Regi
ster-Speicher (nicht gezeigt). Ein Register, ein lokales
Bypass-Register, ist dem unteren lokalen Bypass-Bus 310 zu
geordnet. Ein zweites Register, ein globales Bypass-Regi
ster, ist dem niedrig bewerteten globalen Bypass-Bus 250
zugeordnet. Das dritte Register, ein Rückschreib-Bypass
Register, ist dem Rückschreib-Bypass Bus 170 zugeordnet.
Etiketten (label) der auf jedem Bypass-Bus vorliegenden
Daten werden in einem zugehörigen Register der Bypass-Steu
ereinrichtung 180 gespeichert.
Jedesmal dann, wenn eine Anweisung durch die in Fig. 5
gezeigte Schaltung ausgeführt werden soll, vergleicht die
Bypass-Steuereinrichtung 180 die Etiketten der Eingangsdaten
mit den Etiketten, die in ihren drei Registern gespeichert
sind. Die Bypass-Steuereinrichtung 180 erkennt eine Überein
stimmung, wenn Daten, die zur Anweisung eingegeben werden,
bereits auf einem der Bypasse vorhanden sind. Wenn eine
Übereinstimmung festgestellt wird, veranlaßt die Bypass-
Steuereinrichtung 180 die Schaltstufen dazu, die Daten an
die geeigneten Eingänge der richtigen Ausführungseinheit zu
leiten. Die Steuereinrichtung 180 muß nur die Daten verfol
gen, die auf den niedrig bewerteten Bypass-Bussen vorhanden
sind. Wenn er bestimmt, daß Daten von einem der niedrig
bewerteten Bypass-Busse umgeleitet werden, leitet er Daten
automatisch von dem zugeordneten hoch bewerteten Bypass-Bus
sen einen Taktzyklus später um.
Die folgende Tabelle erläutert, wie die Bypass-Steuerein
richtung 180 ihre Überwachungsfunktion ausführt. Am Taktzy
klus T wird die PADD-Funktion ausgeführt, wobei ein Ergebnis
erzeugt wird, das im als Register "C" bezeichneten Bestim
mungsregister 390 gespeichert werden soll. Die Bypass-Steu
ereinrichtung 180 speichert ein Etikett für C in einem dem
lokalen Bypass für niedrig bewertete Daten zugeordneten
Speicherregister.
Zum Taktzyklus T+1 gibt der Kern die PSHFT-Anweisung
aus. Die Bypass-Steuereinrichtung 180 vergleicht ihre loka
len, globalen und Rückschreib-Busse mit den bezeichneten
Eingängen des PSHFT-Befehls, A und C. Eine Übereinstimmung
wird an dem dem lokalen Bypass-Bus 310 zugeordneten Register
erkannt. Dementsprechend bewirkt die Bypass-Steuereinrich
tung 180, daß der lokale Bypass wirksam wird. In diesem Fall
wählt der Schalter 300 den lokalen Bypass-Bus 310 aus, um C
zur PSHFT-Ausführungseinheit 140 zurückzuleiten.
Zum Taktzyklus T+2 sind die Daten innerhalb der Register
der Bypass-Steuereinrichtung 180, entsprechend der Bewegung
der Daten von Bypass-Bus zu Bypass-Bus vorgerückt. Das Eti
kett für C bewegt sich zu dem dem globalen Bypass-Bus 250
zugeordneten Register; das Etikett für D wird in das dem
lokalen Bypass 310 zugeordnete Register eingegeben. Um zu
bewirken, daß die hoch bewerteten Daten den niedrig bewerte
ten Daten zur PSHFT-Anweisung folgen, läßt die Steuerein
richtung 180, den Schalter 300 den lokalen Bypass 320 für
hoch bewertete Daten als Eingang auswählen.
Wenn der Kern die PXOR-Anweisung ausgibt, vergleicht die
Bypass-Steuereinrichtung 180 wiederum ihre Register mit den
bezeichneten Eingängen der PXOR-Anweisung, A und C. Eine
Übereinstimmung wird bei dem dem globalen Bypass 250 zuge
ordneten Register festgestellt. Dementsprechend läßt die
Bypass-Steuereinrichtung 180 den globalen Bypaß wirksam wer
den. Hier wählt der Schalter 220 den globalen Bypass-Bus 250
und der Schalter 280 die Datenleitung 225. Die Daten vom
niedrig bewerteten globalen Bypass-Bus 250 werden zurückge
leitet zur Logikeinheit 130.
Im Taktzyklus T+3 rücken die Daten innerhalb der Regi
ster der Bypass-Steuereinrichtung 180 in einer dem Fort
schreiten der Daten entsprechenden Weise vor. Das Etikett C
bewegt sich in das Register, das dem Rückschreib-Bypass-Bus
170 zugeordnet ist, das Etikett für D bewegt sich in das
globale Bypass-Register und das Etikett für E wird in das
lokale Bypass-Register geschrieben. Die Steuereinrichtung
180 läßt den Schalter 240 den hoch bewerteten globalen
Bypass-Bus 260 auswählen, um die hoch bewerteten Daten zur
Logikeinheit 140 zu leiten und die PXOR-Anweisung abzu
schließen.
Wenn der Kern die PSUB-Anweisung ausgibt, führt die
Bypass-Steuereinrichtung 180 den Vergleich durch und stellt
dabei eine Übereinstimmung auf dem Rückschreib-Bypass-Bus
170 fest. Die Steuereinrichtung 180 veranlaßt den Schalter
160, den Rückschreib-Bypass Bus 170 auszuwählen, den Schal
ter 220, die Datenleitung 162 auszuwählen, und den Schalter
280, die Datenleitung 225 auswählen. Für Taktzyklen T+4 und
folgende gilt, daß dann, wenn C als eine Eingabe für eine
Anweisung bezeichnet wird, es aus dem Register 390 nach kon
ventionellen Verfahren gelesen wird.
Bus-Konflikte können auftreten bei sequentiellen Opera
tionen, die von einer einzelnen Ausführungseinheit durchge
führt werden sollen. Unter erneuter Verwendung des Beispiels
der Tabelle 1 sei betrachtet, was passieren würde, wenn der
Kern eine PADD-Anweisung im Taktzyklus T+4 ausgibt. Die Aus
führungseinheit 130 führt PADDs aus. Zum Zyklus T+4 leitet
die Steuereinrichtung 180 jedoch hoch bewertete Daten von
dem Verzögerungs-Latch 200 zur Ausführungseinheit 130 um, um
die PSUB-Anweisung aus dem Zyklus T+3 abzuschließen. Die
Ausführungseinheit 130 ist beschäftigt mit der Beendigung
der PSUB-Anweisung. Dementsprechend berücksichtigen die
Kern-Einplaner den Bus-Konflikt und verzögern die Ausgabe
der PADD-Anweisung, bis die Ausführungseinheit 130 nicht
mehr belegt ist.
Der oben beschriebene Bus-Konflikt tritt nur auf, wenn
hoch bewertete Daten von einem Bypass-Bus und eine neue
Anweisung dieselbe Logikeinheit, wie die Einheit 130 in dem
obigen Beispiel, nutzen müssen. Wenn die neue Anweisung eine
PSHFT oder andere Anweisung ist, bei der die referenzierte
Ausführungseinheit irgendeine andere als die Einheit 130
ist, dann würde kein Konflikt auftreten. Daher erlaubt es
die Bypass-Architektur der vorliegenden Erfindung, Daten
gleichzeitig in zwei oder mehr Ausführungseinheiten einzuge
ben.
Bei einem Ausführungsbeispiel können die Schalter der
Schaltung als Multiplexer-Latch-Schaltungen ("LMUX") ausge
bildet sein. Die LMUXs wählen eine aus einer Mehrzahl von
Eingängen aus und leiten die Daten von dem gewählten Eingang
zu einem Ausgang. Die oben beschriebene Bypass-Architektur
sieht vorteilhafterweise ein Architekturschema vor, das
unnötiges Lesen und Schreiben von Daten zwischen dem Mikro
prozessorkern und den Ausführungseinheiten vermeidet und
sieht darüber hinaus das gewünschte "one UOP, two data"-
Prinzip der gestaffelten Ausführung vor.
Gemäß einem alternativen Ausführungsbeispiel kann mit
der vorliegenden Erfindung die gestaffelte Ausführung eines
Operanden voller Breite durch das Konvertieren einer Voll
breiten-Makrooperation in wenigstens zwei Mikroanweisungen
erreicht werden, von denen jede nur mit der Hälfte der Ope
randen arbeitet. Obgleich die folgende Beschreibung unter
Berücksichtigung eines speziellen Registerumbenennungsver
fahrens beschrieben ist, ist einzusehen, daß andere Regi
ster-Umbenennungsmechanismen ebenfalls verwendet werden kön
nen. Das unten beschriebene Registerumbenennungsverfahren,
setzt die Benutzung einer Register-Alias-Tabelle (RAT),
eines Umordnungspuffers (ROB) und eines Retirement-Puffers,
wie sie im U.S.-Patent Nr. 5,446,912 detailliert beschrieben
sind, voraus. Andere Registerumbenennungsverfahren, wie im
U.S.-Patent Nr. 5,197,132 beschrieben, können ebenfalls
implementiert werden.
Fig. 6A veranschaulicht begrifflich ein Ausführungsbei
spiel einer Pipeline zur Durchführung von Operationen an
Operanden in "gestaffelter" Weise, indem eine Makrooperation
in eine Mehrzahl von Mikrooperationen konvertiert wird, so
daß jede einen Teil der vollen Breite der Operanden verar
beitet. Es sollte angemerkt werden, daß zahlreiche weitere
Stufen der Pipeline, z. B. eine Vorab-Heranhol-Stufe, nicht
im Detail gezeigt werden, um die Erfindung nicht unnötiger
weise zu verundeutlichen. Wie dargestellt, wird in der Deko
dierstufe der Pipeline eine die logischen Quellregister, von
denen jedes einen Operanden voller Breite (z. B. 128-Bit)
speichert, spezifizierende Makroanweisung empfangen. Die
beschriebenen Operanden sind beispielsweise gepackte 128-
Bit-Gleitkommadatenoperanden. Bei diesem Beispiel unter
stützt der Prozessor Y logische Register zum Speichern
gepackter Gleitkommadaten. Die Makroanweisung wird in zwei
Mikroanweisungen halber Breite (z. B. 64 Bit) konvertiert,
nämlich eine "hoch bewertete Operation" und eine "niedrig
bewertete Operation". Jede der beiden Mikroanweisungen hal
ber Breite spezifiziert eine erste und eine zweite Quelle
und ein Ziel.
Die beiden Mikroanweisungen halber Breite bewegen sich
dann in eine Registerumbenennungsstufe der Pipeline. Die
Registerumbenennungsstufe umfaßt eine Vielfalt von Register
abbildungen und Umordnungspuffern. Die Quellen jeder Mikro
anweisung sind Zeiger auf spezifische Registereinträge in
einer Registerabbildungstabelle (z. B. ein RAT). Die Einträge
in der Registerabbildungstabelle zeigen wiederum auf die
Orte der Quellen in einem ROB oder in einem Retirement-Regi
ster. Um die oben beschriebenen hoch und niedrig bewerteten
Operationen halber Breite gemäß einem Ausführungsbeispiel
aufzunehmen, ist ein RAT für gepackte Gleitkommadaten mit
Y.2 Einträgen vorgesehen. Daher wird z. B. anstelle einer RAT
mit den acht Einträgen eine RAT mit 16 jeweils "hoch" und
"niedrig" adressierten Einträgen erzeugt. Jeder Eintrag
kennzeichnet eine 64-Bit-Quelle, die entweder dem hohen oder
niedrigen Teil des logischen 128-Bit-Registers entspricht.
Jede der hoch oder niedrig bewerteten Mikroanweisungen
hat somit zugeordnete Einträge in der den jeweiligen Operan
den entsprechenden Registerabbildungstabelle. Die Mikroan
weisungen bewegen sich dann in die Einplanungsstufe bei
einem außer der Reihe ausführenden Prozessor oder in die
Ausführungsstufe (wenn der Prozessor in der Reihenfolge aus
führt). Jede Mikroanweisung empfängt und bearbeitet getrennt
ein 64-Bit-Segment des 128-Bit-Operanden. Eine der Operatio
nen (d. h. die niedriger bewertete Operation) wird zuerst von
den 64-Bit-Hardwareeinheiten ausgeführt, und 64-Bit-Daten
(z. B. die niedriger bewerteten 64 Bits) werden empfangen und
bearbeitet. Die andere Operation (z. B. die höher bewertete
Operation) wartet, bis die 64-Bit-Hardwareeinheiten die
niedriger bewertete Operation komplettiert haben. Dann führt
dieselbe 64-Bit-Hardwareeinheit die höher bewerteten Opera
tion, wobei sie zuerst weitere 64-Bit-Daten (z. B. die höher
bewerteten Bits) zur Verarbeitung gewinnt. Obwohl das obige
Beispiel die Ausführung der niedriger bewerteten Operationen
und der höher bewerteten Operationen in sequentieller Weise
beschreibt, müssen die Operationen nicht tatsächlich in
sequentieller Reihenfolge durchgeführt werden. Jede Opera
tion ist vollständig unabhängig von der anderen, d. h. jede
Operation kann als erste ausgeführt werden, und jede Anzahl
anderer Operationen kann zwischen diesen beiden Operationen
durchgeführt werden. Die Ergebnisse der Operation werden
jedoch sequentiell abgelegt.
Obgleich das obige Ausführungsbeispiel beschreibt, daß
die Makroanweisung in zwei Mikrooperationen aufgeteilt wird,
können alternative Ausführungsbeispiele die Makroanweisung
auch in mehrere Mikroanweisungen unterteilen. Während Fig.
6A zeigt, daß die gepackten Gleitkommadaten an eine Realre
gisterdatei mit Y.2 64-Bit-Registern die jeweils als hoch
und niedrig gekennzeichnet sind, zurückgegeben werden, kön
nen alternative Ausführungsbeispiele eine Realregisterdatei
mit Y 128-Bit-Registern verwenden. Zusätzlich können, wäh
rend ein Ausführungsbeispiel mit einem Registerumbenennungs
mechanismus mit Umordnungspuffer und Realregisterdateien
beschrieben wurde, andere Ausführungsbeispiele einen belie
bigen Registerumbenennungsmechanismus verwenden. Beispiels
weise verwendet der Registerumbenennungsmechanismus gemäß
U.S.-Patent Nr. 5,197,132 eine Vorgeschichte-Warteschlange-
Sicherungs-Abbildung (Back up map).
Fig. 6B ist ein Zeitablaufplan, der das in Fig. 6A
beschriebene Ausführungsbeispiel näher beschreibt. Zum Zeit
punkt T tritt eine Makroanweisung "ADD X,Y" in die Dekodier
stufe der Pipeline gemäß Fig. 6A ein. Die Makroanweisung ist
hierbei beispielsweise eine 128-Bit-Anweisung. Die 128-Bit-
Makroanweisung wird konvertiert zu zwei 64-Bit-Mikroanwei
sungen, nämlich der hoch bewerteten Operation "ADD XH,YH"
und der niedrig bewerteten Operation "ADD XL,YL". Jede
Mikroanweisung verarbeitet dann ein Segment von Daten, das
zwei Datenelemente enthält. Zum Zeitpunkt T wird die niedrig
bewertete Operation von einer 64-Bit-Ausführungseinheit aus
geführt. Zum Zeitpunkt T+1 wird die hoch bewertete Operation
dann von derselben 64-Bit-Einheit ausgeführt. Dieses Ausfüh
rungsbeispiel der vorliegenden Erfindung ist daher speziell
zur Verarbeitung von 128-Bit-Anweisungen unter Nutzung vor
handener 64-Bit-Hardwaresysteme ohne signifikante Änderungen
der Hardware, geeignet. Die vorhandenen Systeme werden ein
fach um eine neue Abbildung zur Behandlung gepackter Gleit
kommawerte erweitert, zusätzlich zu der vorhandenen Abbil
dung für skalare gepackte Gleitkomma/Ganzzahl-Daten und
skalarer Ganzzahldaten.
Claims (29)
1. Verfahren zum Ausführen einer Anweisung in einem
Prozessor, wobei:
eine einzelne Makroanweisung, die wenigstens zwei logi sche Register spezifiziert, empfangen wird, wobei die beiden logischen Register jeweils einen ersten und einen zweiten gepackten Datenoperanden mit einander entsprechenden Daten elementen speichern; und
eine von der einzelnen Makroanweisung spezifizierte Ope ration an einer ersten und zweiten Mehrzahl der einander entsprechenden Datenelemente aus dem ersten und dem zweiten gepackten Datenoperanden zu unterschiedlichen Zeiten unter Nutzung derselben Schaltung zum unabhängigen Erzeugen einer ersten und zweiten Mehrzahl von Ergebnisdatenelementen aus geführt wird, wobei die erste und zweite Mehrzahl von Ergeb nisdatenelementen in einem einzelnen logischen Register als dritter gepackter Datenoperand gespeichert werden.
eine einzelne Makroanweisung, die wenigstens zwei logi sche Register spezifiziert, empfangen wird, wobei die beiden logischen Register jeweils einen ersten und einen zweiten gepackten Datenoperanden mit einander entsprechenden Daten elementen speichern; und
eine von der einzelnen Makroanweisung spezifizierte Ope ration an einer ersten und zweiten Mehrzahl der einander entsprechenden Datenelemente aus dem ersten und dem zweiten gepackten Datenoperanden zu unterschiedlichen Zeiten unter Nutzung derselben Schaltung zum unabhängigen Erzeugen einer ersten und zweiten Mehrzahl von Ergebnisdatenelementen aus geführt wird, wobei die erste und zweite Mehrzahl von Ergeb nisdatenelementen in einem einzelnen logischen Register als dritter gepackter Datenoperand gespeichert werden.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet,
daß der Schritt der unabhängigen Ausführung der Operation
folgende Schritte umfaßt:
gleichzeitiges Zugreifen auf die erste und die zweite Mehrzahl der einander entsprechenden Datenelemente aus dem ersten und dem zweiten logischen Register;
unabhängiges Durchführen der von der einzelnen Makroan weisung spezifizierten Operation an der ersten und zweiten Mehrzahl einander entsprechender Datenelemente; und
gleichzeitiges Speichern der ersten und zweiten Mehrzahl von Ergebnisdatenelementen in dem einzelnen logischen Regi ster.
gleichzeitiges Zugreifen auf die erste und die zweite Mehrzahl der einander entsprechenden Datenelemente aus dem ersten und dem zweiten logischen Register;
unabhängiges Durchführen der von der einzelnen Makroan weisung spezifizierten Operation an der ersten und zweiten Mehrzahl einander entsprechender Datenelemente; und
gleichzeitiges Speichern der ersten und zweiten Mehrzahl von Ergebnisdatenelementen in dem einzelnen logischen Regi ster.
3. Verfahren zum Staffeln der Ausführung einer Anwei
sung, wobei
Daten in Erwiderung einer eine Operation spezifizieren den Einzelanweisung wiedergewonnen (retrieve) werden, wobei die Daten eine Mehrzahl von Datenelementen umfassen;
die Operation auf einer Ausführungseinheit ausgeführt wird, wobei der Ausführungsschritt an einer ersten Unter menge der Mehrzahl von Datenelementen durchgeführt wird; und
die Operation auf der Ausführungseinheit erneut ausge führt wird, wobei der Schritt der erneuten Ausführung an einer zweiten Untermenge der Mehrzahl von Datenelemente aus geführt wird.
Daten in Erwiderung einer eine Operation spezifizieren den Einzelanweisung wiedergewonnen (retrieve) werden, wobei die Daten eine Mehrzahl von Datenelementen umfassen;
die Operation auf einer Ausführungseinheit ausgeführt wird, wobei der Ausführungsschritt an einer ersten Unter menge der Mehrzahl von Datenelementen durchgeführt wird; und
die Operation auf der Ausführungseinheit erneut ausge führt wird, wobei der Schritt der erneuten Ausführung an einer zweiten Untermenge der Mehrzahl von Datenelemente aus geführt wird.
4. Verfahren nach Anspruch 3, dadurch gekennzeichnet,
daß die zweite Untermenge der Mehrzahl von Datenelementen
verzögert wird, während der Ausführungsschritt an der ersten
Untermenge der Mehrzahl von Datenelementen durchgeführt
wird.
5. Verfahren nach Anspruch 3 oder 4, dadurch gekenn
zeichnet, daß beim Wiedergewinnen der Daten in Erwiderung
der Einzelanweisung 128 Bit Daten aus einer Registerdatei
wiedergewonnen werden.
6. Verfahren nach Anspruch 5, dadurch gekennzeichnet,
daß die 128 Bit Daten aus der Registerdatei in ein niedriger
bewertetes Datensegment und ein höher bewertetes Datenseg
ment unterteilt werden.
7. Verfahren nach Anspruch 6, dadurch gekennzeichnet,
daß die erste Untermenge der Mehrzahl von Datenelementen das
niedriger bewertete Datensegment ist und die zweite Unter
menge der Mehrzahl von Datenelementen das höher bewertete
Datensegment ist.
8. Verfahren nach einem der Ansprüche 3-7, dadurch ge
kennzeichnet, daß der Schritt der Ausführung der Operation
während eines ersten Taktzyklus' durchgeführt wird und der
Schritt der erneuten Ausführung der Operation während des
nachfolgenden Taktzyklus' durchgeführt wird.
9. Verfahren nach einem der Ansprüche 3-7, dadurch ge
kennzeichnet, daß der Schritt der Ausführung der Operation
während eines ersten halben Taktzyklus' durchgeführt wird
und der Schritt der erneuten Ausführung der Operation wäh
rend des zweiten halben Taktzyklus' durchgeführt wird.
10. Verfahren nach einem der Ansprüche 3-7, dadurch ge
kennzeichnet, daß der Schritt der Ausführung der Operation
an der ersten Untermenge der Daten den Schritt der Ausfüh
rung einer Einzelanweisungs-Mehrfachdaten(SIMD)-Operation an
der ersten Untermenge der Mehrzahl von Datenelementen und
der erneuten Ausführung der SIMD-Operation an der zweiten
Untermenge der Mehrzahl von Datenelementen umfaßt.
11. Verfahren nach Anspruch 10, dadurch gekennzeichnet,
daß die SIMD-Operation eine ADDIER-Operation ist.
12. Verfahren nach Anspruch 10, dadurch gekennzeichnet,
daß die SIMD-Operation eine MULTIPLIZIER-Operation ist.
13. Prozessor mit einer Registerdatei, die gepackte
Daten enthält, wobei die Daten eine Mehrzahl von Datenele
menten umfassen,
gekennzeichnet durch:
eine mit der Registerdatei gekoppelte Schaltung, wobei die Schaltung in Erwiderung einer eine Operation spezifizie renden Einzelanweisung
die Mehrzahl von Datenelementen aus der Registerdatei wiedergewinnen kann;
die Operation auf einer Ausführungseinheit ausführen kann, wobei die Operation an einer ersten Untermenge der Mehrzahl von Datenelementen durchgeführt wird, um ein erstes Ergebnis auszu geben; und
die Operation auf der Ausführungseinheit erneut ausführen kann, wobei die Operation an einer zweiten Untermenge der Mehrzahl von Datenelementen durchgeführt wird, um ein zweites Ergebnis auszu geben.
gekennzeichnet durch:
eine mit der Registerdatei gekoppelte Schaltung, wobei die Schaltung in Erwiderung einer eine Operation spezifizie renden Einzelanweisung
die Mehrzahl von Datenelementen aus der Registerdatei wiedergewinnen kann;
die Operation auf einer Ausführungseinheit ausführen kann, wobei die Operation an einer ersten Untermenge der Mehrzahl von Datenelementen durchgeführt wird, um ein erstes Ergebnis auszu geben; und
die Operation auf der Ausführungseinheit erneut ausführen kann, wobei die Operation an einer zweiten Untermenge der Mehrzahl von Datenelementen durchgeführt wird, um ein zweites Ergebnis auszu geben.
14. Prozessor nach Anspruch 13, dadurch gekennzeichnet,
daß eine Verzögerungsschaltung vorgesehen ist, die die zwei
te Untermenge der Mehrzahl von Datenelementen verzögert,
während die Schaltung an der ersten Untermenge der Mehrzahl
von Datenelementen die Operation ausführt.
15. Prozessor nach Anspruch 14, gekennzeichnet durch
eine Bypass-Schaltung.
16. Prozessor nach einem der Ansprüche 13-15, dadurch
gekennzeichnet, daß die Mehrzahl von Datenelementen 128 Bit
Daten aus der Registerdatei enthält.
17. Prozessor nach Anspruch 16, dadurch gekennzeichnet,
daß die 128 Bit Daten aus der Registerdatei in ein niedriger
bewertetes Datensegment und ein höher bewertetes Datenseg
ment unterteilt sind.
18. Prozessor nach Anspruch 17, dadurch gekennzeichnet,
daß die erste Untermenge der Mehrzahl von Datenelementen das
niedriger bewertete Datensegment ist und die zweite Unter
menge der Mehrzahl von Datenelementen das höher bewertete
Datensegment ist.
19. Prozessor nach einem der Ansprüche 13-18, dadurch
gekennzeichnet, daß die Schaltung die Operation während
eines ersten Taktzyklus' ausführt und die Operation während
des nachfolgenden Taktzyklus' erneut ausführt.
20. Prozessor nach einem der Ansprüche 13-18, dadurch
gekennzeichnet, daß die Schaltung die Operation während
einer ersten Hälfte eines Taktzyklus' ausführt und die Ope
ration während der zweiten Hälfte des Taktzyklus' erneut
ausführt.
21. Prozessor nach einem der Ansprüche 13-20, dadurch
gekennzeichnet, daß die Schaltung eine Einzelanweisungs-
Mehrfachdaten(SIMD)-Operation an der ersten Untermenge der
Mehrzahl von Datenelementen ausführt und die SIMD-Operation
an der zweiten Untermenge der Mehrzahl von Datenelementen
erneut ausführt.
22. Prozessor nach Anspruch 21, dadurch gekennzeichnet,
daß die SIMD-Operation eine ADDIER-Operation ist.
23. Prozessor nach Anspruch 21, dadurch gekennzeichnet,
daß die SIMD-Operation eine MULTIPLIZIER-Operation ist.
24. System zur gestaffelten Ausführung von Anweisungen,
aufweisend:
eine Registerdatei, die eine Mehrzahl von Datenelementen aufweisende Daten speichert;
einen Prozessor, der die Mehrzahl von Datenelementen aus der Registerdatei in Erwiderung einer eine Operation spezi fizierenden einzelne Anweisung wiedergewinnt (retrieve);
eine die Anweisung an einer ersten Untermenge der Mehr zahl von Datenelementen ausführende Ausführungseinheit, wobei die Ausführungseinheit dann die Anweisung an einer zweiten Untermenge der Mehrzahl von Datenelementen ausführt.
eine Registerdatei, die eine Mehrzahl von Datenelementen aufweisende Daten speichert;
einen Prozessor, der die Mehrzahl von Datenelementen aus der Registerdatei in Erwiderung einer eine Operation spezi fizierenden einzelne Anweisung wiedergewinnt (retrieve);
eine die Anweisung an einer ersten Untermenge der Mehr zahl von Datenelementen ausführende Ausführungseinheit, wobei die Ausführungseinheit dann die Anweisung an einer zweiten Untermenge der Mehrzahl von Datenelementen ausführt.
25. System nach Anspruch 24, gekennzeichnet durch eine
Verzögerungsschaltung, die die zweite Untermenge der Mehr
zahl von Datenelementen verzögert, während die Ausführungs
einheit die Operation an der ersten Untermenge der Mehrzahl
von Datenelementen ausführt.
26. System nach Anspruch 24 oder 25, dadurch gekenn
zeichnet, daß die Operation eine Einzelanweisungs-Mehrfach
daten(SIMD)-Operation ist.
27. System Anspruch 26, dadurch gekennzeichnet, daß die
SIMD-Operation eine ADDIER-Operation ist.
28. System nach Anspruch 26, dadurch gekennzeichnet, daß
die SIMD-Operation eine MULTIPLIZIER-Operation ist.
29. Schaltung zur Ausführung von Anweisungen, aufwei
send:
Ausführungseinheiten, die einer eine Operation spezifi zierende einzelnen Anweisung entsprechende gepackte Daten empfangen; und
eine Auswahleinheit, die den Ausführungseinheiten selek tiv gestattet, die Anweisung an einer ersten Untermenge der gepackten Daten auszuführen und dann die Anweisung an einer zweiten Untermenge der gepackten Daten erneut auszuführen.
Ausführungseinheiten, die einer eine Operation spezifi zierende einzelnen Anweisung entsprechende gepackte Daten empfangen; und
eine Auswahleinheit, die den Ausführungseinheiten selek tiv gestattet, die Anweisung an einer ersten Untermenge der gepackten Daten auszuführen und dann die Anweisung an einer zweiten Untermenge der gepackten Daten erneut auszuführen.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/053,004 | 1998-03-31 | ||
US09/053,004 US6230257B1 (en) | 1998-03-31 | 1998-03-31 | Method and apparatus for staggering execution of a single packed data instruction using the same circuit |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19914210A1 true DE19914210A1 (de) | 1999-10-07 |
DE19914210B4 DE19914210B4 (de) | 2006-01-05 |
Family
ID=21981307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19914210A Expired - Fee Related DE19914210B4 (de) | 1998-03-31 | 1999-03-29 | Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung |
Country Status (2)
Country | Link |
---|---|
US (6) | US6230257B1 (de) |
DE (1) | DE19914210B4 (de) |
Families Citing this family (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6643765B1 (en) * | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
US7301541B2 (en) | 1995-08-16 | 2007-11-27 | Microunity Systems Engineering, Inc. | Programmable processor and method with wide operations |
US6295599B1 (en) * | 1995-08-16 | 2001-09-25 | Microunity Systems Engineering | System and method for providing a wide operand architecture |
US5742840A (en) * | 1995-08-16 | 1998-04-21 | Microunity Systems Engineering, Inc. | General purpose, multiple precision parallel operation, programmable media processor |
US7483935B2 (en) * | 1995-08-16 | 2009-01-27 | Microunity Systems Engineering, Inc. | System and method to implement a matrix multiply unit of a broadband processor |
US6385634B1 (en) | 1995-08-31 | 2002-05-07 | Intel Corporation | Method for performing multiply-add operations on packed data |
US7395298B2 (en) * | 1995-08-31 | 2008-07-01 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed data |
US7392275B2 (en) * | 1998-03-31 | 2008-06-24 | Intel Corporation | Method and apparatus for performing efficient transformations with horizontal addition and subtraction |
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 |
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 |
US6820189B1 (en) | 1999-05-12 | 2004-11-16 | Analog Devices, Inc. | Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation |
US7111155B1 (en) | 1999-05-12 | 2006-09-19 | Analog Devices, Inc. | Digital signal processor computation core with input operand selection from operand bus for dual operations |
US6859872B1 (en) | 1999-05-12 | 2005-02-22 | Analog Devices, Inc. | Digital signal processor computation core with pipeline having memory access stages and multiply accumulate stages positioned for efficient operation |
US7107302B1 (en) | 1999-05-12 | 2006-09-12 | Analog Devices, Inc. | Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units |
US7100025B1 (en) * | 2000-01-28 | 2006-08-29 | Hewlett-Packard Development Company, L.P. | Apparatus and method for performing single-instruction multiple-data instructions |
FR2818145B1 (fr) * | 2000-12-18 | 2003-11-28 | Oreal | Compositions cosmetiques antisolaires a base d'un melange synergetique de filtres et utilisations |
WO2003021423A2 (en) * | 2001-09-04 | 2003-03-13 | Microunity Systems Engineering, Inc. | System and method for performing multiplication |
US7430578B2 (en) * | 2001-10-29 | 2008-09-30 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed byte data |
JP2006527865A (ja) * | 2003-06-16 | 2006-12-07 | エレクトロニクス アンド テレコミュニケーションズ リサーチ インスチチュート | ラインドールブロック暗号化装置、及びその暗号化並びに復号化方法 |
US7668897B2 (en) * | 2003-06-16 | 2010-02-23 | Arm Limited | Result partitioning within SIMD data processing systems |
US7457938B2 (en) * | 2005-09-30 | 2008-11-25 | Intel Corporation | Staggered execution stack for vector processing |
US7650474B2 (en) * | 2006-01-09 | 2010-01-19 | Lsi Corporation | Method and system for interleaving first and second halves of a data segment of unknown length |
US8239659B2 (en) * | 2006-09-29 | 2012-08-07 | Intel Corporation | Vector completion mask handling |
US7565513B2 (en) * | 2007-02-28 | 2009-07-21 | Advanced Micro Devices, Inc. | Processor with power saving reconfigurable floating point unit decoding an instruction to single full bit operation or multiple reduced bit operations |
US20080209185A1 (en) * | 2007-02-28 | 2008-08-28 | Advanced Micro Devices, Inc. | Processor with reconfigurable floating point unit |
EP2148272B1 (de) * | 2007-05-17 | 2012-08-08 | Fujitsu Limited | Berechnungseinheit, prozessor und prozessorarchitektur |
US20090327657A1 (en) * | 2008-06-25 | 2009-12-31 | Zeev Sperber | GENERATING AND PERFORMING DEPENDENCY CONTROLLED FLOW COMPRISING MULTIPLE MICRO-OPERATIONS (uops) |
US8949575B2 (en) | 2011-12-14 | 2015-02-03 | International Business Machines Corporation | Reversing processing order in half-pumped SIMD execution units to achieve K cycle issue-to-issue latency |
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 |
US9361106B2 (en) * | 2013-12-27 | 2016-06-07 | Intel Corporation | SMS4 acceleration processors, methods, systems, and instructions |
US9665372B2 (en) | 2014-05-12 | 2017-05-30 | International Business Machines Corporation | Parallel slice processor with dynamic instruction stream mapping |
US9672043B2 (en) * | 2014-05-12 | 2017-06-06 | International Business Machines Corporation | Processing of multiple instruction streams in a parallel slice processor |
US9513913B2 (en) * | 2014-07-22 | 2016-12-06 | Intel Corporation | SM4 acceleration processors, methods, systems, and instructions |
US9760375B2 (en) | 2014-09-09 | 2017-09-12 | International Business Machines Corporation | Register files for storing data operated on by instructions of multiple widths |
US9467279B2 (en) | 2014-09-26 | 2016-10-11 | Intel Corporation | Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality |
US9720696B2 (en) | 2014-09-30 | 2017-08-01 | International Business Machines Corporation | Independent mapping of threads |
GB2537523B (en) * | 2014-09-30 | 2017-09-27 | Imagination Tech Ltd | Multimode variable length execution pipeline |
KR102270791B1 (ko) | 2014-12-10 | 2021-06-29 | 삼성전자주식회사 | 매크로 명령어를 처리하는 방법 및 장치 |
US20160188341A1 (en) * | 2014-12-24 | 2016-06-30 | Elmoustapha Ould-Ahmed-Vall | Apparatus and method for fused add-add instructions |
US9977678B2 (en) | 2015-01-12 | 2018-05-22 | International Business Machines Corporation | Reconfigurable parallel execution and load-store slice processor |
US10133576B2 (en) | 2015-01-13 | 2018-11-20 | International Business Machines Corporation | Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries |
US10133581B2 (en) | 2015-01-13 | 2018-11-20 | International Business Machines Corporation | Linkable issue queue parallel execution slice for a processor |
US11544214B2 (en) | 2015-02-02 | 2023-01-03 | Optimum Semiconductor Technologies, Inc. | Monolithic vector processor configured to operate on variable length vectors using a vector length register |
US9983875B2 (en) | 2016-03-04 | 2018-05-29 | International Business Machines Corporation | Operation of a multi-slice processor preventing early dependent instruction wakeup |
US10037211B2 (en) | 2016-03-22 | 2018-07-31 | International Business Machines Corporation | Operation of a multi-slice processor with an expanded merge fetching queue |
US10346174B2 (en) | 2016-03-24 | 2019-07-09 | International Business Machines Corporation | Operation of a multi-slice processor with dynamic canceling of partial loads |
US10761854B2 (en) | 2016-04-19 | 2020-09-01 | International Business Machines Corporation | Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor |
US10037229B2 (en) | 2016-05-11 | 2018-07-31 | International Business Machines Corporation | Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions |
US9934033B2 (en) | 2016-06-13 | 2018-04-03 | International Business Machines Corporation | Operation of a multi-slice processor implementing simultaneous two-target loads and stores |
US10042647B2 (en) | 2016-06-27 | 2018-08-07 | International Business Machines Corporation | Managing a divided load reorder queue |
US10318419B2 (en) | 2016-08-08 | 2019-06-11 | International Business Machines Corporation | Flush avoidance in a load store unit |
US10853067B2 (en) * | 2018-09-27 | 2020-12-01 | Intel Corporation | Computer processor for higher precision computations using a mixed-precision decomposition of operations |
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 |
JPS5680720A (en) * | 1979-12-05 | 1981-07-02 | Fujitsu Ltd | Synchronous processing unit with partial processing circuit |
JPS5824941A (ja) * | 1981-08-07 | 1983-02-15 | Hitachi Ltd | 演算装置 |
JPS58182754A (ja) * | 1982-04-19 | 1983-10-25 | 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 |
US4773038A (en) * | 1986-02-24 | 1988-09-20 | Thinking Machines Corporation | Method of simulating additional processors in a SIMD parallel processor array |
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 |
US5047975A (en) * | 1987-11-16 | 1991-09-10 | Intel Corporation | Dual mode adder circuitry with overflow detection and substitution enabled for a particular mode |
US5189636A (en) * | 1987-11-16 | 1993-02-23 | Intel Corporation | Dual mode combining circuitry |
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 | 富士通株式会社 | 演算処理装置及び演算処理方法 |
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 |
US5390135A (en) * | 1993-11-29 | 1995-02-14 | Hewlett-Packard | Parallel shift and add circuit and method |
US5883824A (en) * | 1993-11-29 | 1999-03-16 | Hewlett-Packard Company | Parallel adding and averaging 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 |
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 |
KR100329338B1 (ko) * | 1994-12-02 | 2002-07-18 | 피터 엔. 데트킨 | 복합피연산자의팩연산을수행하는마이크로프로세서 |
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 |
US6643765B1 (en) * | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
US5742840A (en) * | 1995-08-16 | 1998-04-21 | Microunity Systems Engineering, Inc. | General purpose, multiple precision parallel operation, programmable media processor |
US6295599B1 (en) * | 1995-08-16 | 2001-09-25 | Microunity Systems Engineering | System and method for providing a wide operand architecture |
US6006318A (en) * | 1995-08-16 | 1999-12-21 | Microunity Systems Engineering, Inc. | General purpose, dynamic partitioning, programmable media processor |
US6385634B1 (en) * | 1995-08-31 | 2002-05-07 | Intel Corporation | Method for performing multiply-add operations on packed data |
CN1892589B (zh) | 1995-08-31 | 2011-02-23 | 英特尔公司 | 执行多媒体应用的操作的装置、系统及实现该操作的方法 |
US5721892A (en) * | 1995-08-31 | 1998-02-24 | Intel Corporation | Method and apparatus for performing multiply-subtract 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 |
WO1997024681A1 (en) | 1995-12-19 | 1997-07-10 | Intel Corporation | A computer system performing a two-dimensional rotation of packed data representing multimedia information |
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 |
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 |
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 |
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 |
JPH10268117A (ja) | 1997-03-27 | 1998-10-09 | Fuji Photo Optical Co Ltd | ピックアップ光学系用対物レンズ |
US5884071A (en) * | 1997-03-31 | 1999-03-16 | Intel Corporation | Method and apparatus for decoding enhancement instructions using alias encodings |
US6260137B1 (en) * | 1997-09-12 | 2001-07-10 | Siemens Aktiengesellschaft | Data processing unit with digital signal processing capabilities |
US6178482B1 (en) * | 1997-11-03 | 2001-01-23 | Brecis Communications | Virtual register sets |
US6192467B1 (en) * | 1998-03-31 | 2001-02-20 | Intel Corporation | Executing partial-width packed data instructions |
US6230253B1 (en) * | 1998-03-31 | 2001-05-08 | 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 |
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 |
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 |
-
1998
- 1998-03-31 US US09/053,004 patent/US6230257B1/en not_active Expired - Lifetime
-
1999
- 1999-03-29 DE DE19914210A patent/DE19914210B4/de not_active Expired - Fee Related
-
2001
- 2001-03-13 US US09/805,280 patent/US6425073B2/en not_active Expired - Lifetime
-
2002
- 2002-06-06 US US10/164,976 patent/US6687810B2/en not_active Expired - Lifetime
- 2002-06-06 US US10/164,774 patent/US6694426B2/en not_active Expired - Lifetime
-
2003
- 2003-10-20 US US10/689,291 patent/US6925553B2/en not_active Expired - Fee Related
-
2005
- 2005-04-11 US US11/103,702 patent/US7366881B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6925553B2 (en) | 2005-08-02 |
US20010034826A1 (en) | 2001-10-25 |
US7366881B2 (en) | 2008-04-29 |
DE19914210B4 (de) | 2006-01-05 |
US6425073B2 (en) | 2002-07-23 |
US20050251645A1 (en) | 2005-11-10 |
US6694426B2 (en) | 2004-02-17 |
US20020178348A1 (en) | 2002-11-28 |
US6687810B2 (en) | 2004-02-03 |
US6230257B1 (en) | 2001-05-08 |
US20020184474A1 (en) | 2002-12-05 |
US20040083353A1 (en) | 2004-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19914210A1 (de) | Verfahren und Vorrichtung für eine gestaffelte Ausführung einer Anweisung | |
DE69933088T2 (de) | Vliw-verarbeiter verarbeitet befehle von verschiedenen breiten | |
DE19914617C2 (de) | Prozessor und Verfahren zum Ausführen von Befehlen an gepackten Daten | |
DE19735350B4 (de) | Vektorprozessor zum Ausführen paralleler Operationen und Verfahren hierfür | |
DE69928428T2 (de) | Multiplizier-akkumulator-konfiguration zur effizienten planung in einem digitalen signalverarbeitungsrechner | |
DE4010119C2 (de) | Anordnung und Verfahren zur Umordnung eines Speicherformats in einem Mikroprozessor | |
DE19735348B4 (de) | Vektorprozessor zur Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern und zugehöriges Verfahren zum Betreiben desselben | |
DE2714805C2 (de) | ||
DE69837791T2 (de) | VERFAHREN UND GERÄT FÜR EFFIZIENTE, SYNCHRONE MIMD-OPERATIONEN MIT iVLIW PE-ZU-PE KOMMUNIKATIONEN | |
DE69636861T2 (de) | Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern | |
DE69628480T2 (de) | Ausnahmebehandlung in einem Datenprozessor | |
DE2856483C2 (de) | ||
DE3424962C2 (de) | ||
DE4301417A1 (de) | ||
DE2847934A1 (de) | Datenverarbeitungseinrichtung mit einem mikrobefehlsspeicher | |
DE112015005597T5 (de) | Verknüpfungsfähige Parallelausführungs-Schicht einer Ausgabewarteschlange für einen Prozessor | |
DE60226141T2 (de) | Fifo-speicher system und verfahren dafür | |
DE2421130C2 (de) | ||
DE69732793T2 (de) | Acht-bit-mikrokontroller mit risc-architektur | |
DE112011103211T5 (de) | Auf einem Halbleiterchip implementierte vektorlogische Reduktionsoperation | |
DE3114921C2 (de) | Mikroprogramm-Speicheranordnung | |
DE2801543A1 (de) | Datenverarbeitungsanlage | |
DE2401364A1 (de) | Datenverarbeitungssystem | |
DE19526008A1 (de) | Vertikal partitionierter, primärer Befehls-Cache-Speicher | |
DE69823302T2 (de) | Verfahren und Vorrichtung zum Verschieben von Daten |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8364 | No opposition during term of opposition | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |