-
Die
Erfindung bezieht sich auf Verfahren zum gestaffelten Ausführen von
Anweisungen bzw. auf einen Prozessor.
-
Aus
dem US-Patent 5,642,306 ist ein Verfahren bzw. eine Einrichtung
bekannt, bei der Registeroperanden mit gepackten Daten, die vier
unabhängige
Blöcke
der Daten aufweisen, unter Verwendung eines vereinfachten Multiplizierers
multipliziert werden, der jeweils nur einen der vier Datenblöcke eines
ersten Operanden mit einem von vier Datenblöcken eines zweiten Operanden
multipliziert. Dies dient der Verringerung des Hardware-Aufwands
für den
Multiplizierer, erfordert aber, daß nacheinander jeweils die
zugehörigen
Einzelblöcke
aus den Operanden abgerufen, miteinander multipliziert und das Ergebnis
in einem Block eines Registerergebnisoperanden gespeichert wird,
bevor das nächste
Block-Paar abgerufen und multipliziert werden kann. Darüber hinaus
beschreibt die Druckschrift einige Verbesserungen bei der Durchführung von
Multiplikationsoperationen durch Fortlassen unnötiger Multiplikationen mit
Null.
-
Multimedia-Anwendungen,
wie 2D/3D-Graphikanwendungen, Bildverarbeitung, Video-Kompression/Dekompression,
Spracherkennungsalgorithmen 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-Anwendungsleistung 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 Datenelement 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 Element 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 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.
-
2A–2B zeigen
eine derzeitige Prozessor-Realisierung einer Arithmetik-Logik-Einheit
(ALU), die zum Ausführen
von SIMD-Anweisungen verwendbar ist. Die ALU gemäß 2A weist die notwendige Schaltung zur
Durchführung
von Operationen an der vollen Breite der Operanden (d.h. allen Datenelementen)
auf. 2A zeigt auch,
daß die
ALU zwei verschiedenartige 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-Ausführungseinheiten
und vier MUL-Ausführungseinheiten
sind jeweils in der Lage, als vier separate ADD-Ausführungseinheiten
und vier separate MUL-Ausführungseinheiten
zu arbeiten. Alternativ kann die ALU mehrere Gleitkomma-Multiplikation-Akkumulation(FMAC)-Einheiten enthalten,
von denen jede mehr als eine Operationsart ausführen kann. Bei den folgenden
Beispielen wird angenommen, daß ADD-
und MUL-Ausführungseinheiten
verwendet werden; jedoch können
auch andere Ausführungseinheiten,
wie FMAC, verwendet werden.
-
Wenn
gemäß Darstellung
in 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ührungseinheiten 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 Zeitpunkt
T+2 ausgegeben wird, so führt
jede der vier MUL-Einheiten separat eine MUL-Operation an einem
der vier gepackten Datenelemente aus, während die vier ADD-Ausführungseinheiten
im Ruhezustand bleiben. Wenn schließlich zum Zeitpunkt 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 erhebliche 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-Ausführungsmaschine
in der Lage ist, eine Anweisung pro Taktzyklus zu verarbeiten.
-
Aufgabe
der Erfindung ist es, diese Nachteile zu vermeiden, wobei die erforderliche
Hardware reduziert, die vorhandene Hardware effektiver genutzt und
die Zeitdauer des Untätig-Seins
der Ausführungseinheiten
verringert werden soll.
-
Diese
Aufgabe wird erfindungsgemäß durch
ein Verfahren mit den Merkmalen des Anspruchs 1 bzw. einen Prozessor
mit den Merkmalen des Anspruchs 8 gelöst.
-
Vorteilhafte
Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
-
Im
folgenden wird die Erfindung anhand von in der Zeichnung dargestellten
Ausführungsbeispielen
beschrieben.
-
In
der Zeichnung zeigen:
-
1,
eine gepackte SIMD-ADD-Anweisung, wobei entsprechende Datenelemente
von einem ersten gepackten Datenoperanden und einem zweiten gepackten
Datenoperanden addiert werden;
-
2A,
vier ADD-Ausführungseinheiten
und vier MUL-Ausführungseinheiten
gemäß einer
derzeitigen Prozessorimplementierung des SIMD;
-
2B,
eine derzeitige Prozessorimplementierung eines SIMD-ADD und -MUL
unter Verwendung der vier ADD-Ausführungseinheiten und vier MUL-Ausführungseinheiten
gemäß 2A;
-
3,
das Konzept einer Operation, die an den Operanden in einer "gestaffelten" Weise ausgeführt wird;
-
4A,
das Prinzip einer Schaltung innerhalb eines Prozessors, der auf
Operanden voller Breite aus den logischen Registern zugreift, jedoch
Operationen an der Hälfte
der Breite der Operanden jeweils durchführt,
-
4B,
ein Zeitdiagramm, welches die Schaltung gemäß 4A verdeutlicht;
-
5,
die Schaltung gemäß 4 mit Bypass gemäß einem Ausführungsbeispiel
der Erfindung;
-
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;
-
6B,
ein Zeitdiagramm, welches das anhand von 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
spezielle Details angeben, um das Verständnis für die vorliegende Erfindung
zu erleichtern. Es ist für
den Fachmann aber klar, daß diese
speziellen Details zum Umsetzen der vorliegenden Erfindung nicht
erforderlich sind. In anderen Fällen
werden bekannte Strukturen, Schnittstellen und Prozesse nicht im
einzelnen beschrieben, um den Gegenstand der Erfindung nicht mit
unnötigen
Einzelheiten zu belasten.
-
3 zeigt
das Konzept einer Operation, die an Operanden in einer "gestaffelten" Weise durchgeführt wird.
Obwohl bei einem Ausführungsbeispiel
der Erfindung ein gepacktes 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
Kontext dieses Ausführungsbeispiels
auf den Prozeß der
Unterteilung der Operanden einer Anweisung in separate Segmente
und das sequentielle Verarbeiten jedes Segments unter Verwendung
derselben Hardware. Segmente werden sequentiell dadurch verarbeitet,
daß eine
Verzögerung
in die Verarbeitung der aufeinanderfolgenden Segmente eingeführt wird.
Wie in der 3 gezeigt ist, werden die gepackten
Datenoperanden 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ührungsbeispiele
nur ADD- und MUL-Ausführungseinheiten
aufweisen, können
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, beschreiben die folgenden Abschnitte zwei
exemplarische Ausführungen
zur Erläuterung
der Erfindung. Insbesondere erhalten beide beschriebenen exemplarischen
Ausführungen
dieselben Makroanweisungen, welche die 128-Bit-Operanden enthaltenden
logischen Register spezifizieren. Der Ausdruck "logisches Register" 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-Umbenennungsmechanismus
(weiter unten genauer beschrieben) usw. implementiert werden.
-
Bei
dem ersten Ausführungsbeispiel
bewirkt jede Makroanweisung, 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 Registern werden die Operanden in niedrig
und hoch Segmente (z.B. unter Verwendung von Latch-Schaltungen und
Multiplexern) 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ührungsbeispiel jede Makroanweisung,
welche 128-Bit-Operanden enthaltende logische Register spezifiziert,
in wenigstens zwei Mikroanweisungen unterteilt, welche jeweils nur
an der Hälfte
der Operanden arbeiten. So werden die Operanden in hoch und niedrig bewertete
Segmente unterteilt, und jede Mikroanweisung bewirkt separat, daß nur auf
die Hälfte
der Operanden aus den Registern zugegriffen wird. Diese Art der
Unterteilung ist in einer SIMD-Architektur möglich, da jeder der Operanden
vom anderen unabhängig
ist. Während
Implementierungen 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 resultierenden Operanden in ein von der Makroanweisung spezifiziertes
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 Operanden 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.
-
4A veranschaulicht
das Konzept einer Schaltung innerhalb eines Prozessors gemäß einem
ersten Ausführungsbeispiel,
das auf die volle Breite der Operanden aus den logischen Registern
zugreift, jedoch zu jedem Zeitpunkt Operationen nur auf der Hälfte der
Breite der Operanden ausführt.
Bei diesem Ausführungsbeispiel
wird angenommen, daß die
Prozessor-Ausführungsmaschine
eine Anweisung pro Taktzyklus zu verarbeiten vermag. Es sei beispielsweise
angenommen, 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 übertragen
und danach zur Verarbeitung zu den Ausführungseinheiten. 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 Xund 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öglicht
daher der 64-Bit-Hardware, die 128 Daten Bits zu verarbeiten. Die
niedrig bewerteten Ergebnisse aus der Ausführungseinheit werden im Verzögerungselement
M3 solange gehalten, 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 Datensegmente,
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
bewerteten 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 Registerdatei 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 Parallelverarbeitung der
vollen Breite der Operanden entsprechend derzeitigen Prozessor-Ausführungen
erforderlich wären.
Dieses Ausführungsbeispiel
zieht Nutzen aus der statistischen Analyse, wonach Multimedia-Anwendungen
annähernd
50% ADD-Anweisungen und 50% MUL-Anweisungen benutzen. Um die Vorteile
dieses Ausführungsbeispiels
der Erfindung in einer Der-Reihe-Nach-Maschine nutzbar zu machen,
muß die
Reihenfolge der ADD-Anweisungen und MUL-Anweisungen nach dem folgenden
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.
-
4B ist
ein Zeitdiagramm, welches die Schaltung gemäß 4A erläutert. Gemäß 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äß 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 nachfolgenden beiden Datenelemente des höher bewerteten Datensegments,
nämlich
X2Y2 und X3Y3, werden addiert.
Zum Zeitpunkt T+1 kann auch die Verarbeitung der MUL-Anweisung "MUL X,Y" beginnen. Zum Zeitpunkt
T+1 führen
die beiden MUL-Ausführungseinheiten
zunächst
MUL-Operationen an den niedriger bewerteten Datensegmenten oder
den beiden niedrigeren gepackten Datenelementen gemäß 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 Datensegments,
nämlich
X2Y2 und X3Y3, werden multipliziert. Wenn
auch das zuvor beschriebene Ausführungsbeispiel
unter Bezugnahme auf ADD- und MUL-Operationen unter Verwendung von zwei
Ausführungseinheiten
erläutert
wurde, können
andere Ausführungsbeispiele
mit einer beliebigen Anzahl von Ausführungseinheiten 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-Operation
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
zur gleichzeitigen Verwendung von verfügbarer 64-Bit-Hardware zur
Verarbeitung von 128-Bit- Daten
stellt einen beträchtlichen
Kostenvorteil für
Hardware-Hersteller
dar.
-
Wie
oben gesagt, werden die ADD- und MUL-Ausführungseinheiten nach dem beschriebenen
Ausführungsbeispiel
zur Neuausfü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 statistische 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 verwenden. Um aus diesem Ausführungsbeispiel
der Erfindung in einer Der-Reihe-Nach-Maschine nutzen zu ziehen,
muß die
Reihenfolge 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ührungseinheiten die zweite
RDD-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
werden, 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 Operationsleistung wie zuvor
beibehalten wird.
-
Wenn
jedoch eine zweite ADD-Anweisung der ersten folgt, kann die zweite
ADD-Anweisung mit Hilfe einer Einplanungseinheit verzögert werden,
um den ADD-Ausführungseinheiten
die Möglichkeit
zu geben, die erste ADD-Anweisung zu beenden, 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 Einplanungseinheit 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ührungseinheiten
in einem halben Taktzyklus anstelle eines vollen Taktzyklus. Die
Wiederausführung
der Anweisung in dem halben Taktzyklus sorgt effektiv für eine Operationsverdoppelung
der Hardware, d.h. sie macht die Hardware doppelt so schnell. Auf
diese Weise stehen die ADD- oder MUL-Ausführungseinheiten 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
vollen Taktzyklus ausführt.
Eine doppelt so schnelle (double pumped) Hardware bedingt jedoch
beträchtlich
mehr Hardware zur wirksamen Verarbeitung der Anweisung im halben
Taktzyklus.
-
5 zeigt
die Schaltung gemäß 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äß 5 steht
in Verbindung mit zwei Quellregistern 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 Eingangsdaten werden über
die Vollbreiten-Datenleitungen 115 bzw. 125 gelesen.
In der Darstellung gemäß 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.
-
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 5 gezeigt sind, können mehr oder weniger Ausführungseinheiten
im Rahmen der vorliegenden Erfindung vorgesehen sein. Um Vollbreitenkalkulationen
auszuführen,
werden die Vollbreiten-Eingangsdaten in zwei Halbbreiten-Segmente unterteilt
und sequentiell in eine Logikeinheit eingegeben. Die Schaltung gemäß 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 unabhä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 Datenleitungen 154 und 164 führen hoch
bewertete Daten. Die Datenleitungen 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
niedrig 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,
welche 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 typischerweise
Eingaben über
zwei Eingangsanschlüsse
IN1 und IN2. Eingangsdaten gelangen zu jedem Eingangsanschluß über die
dritte Schalterstufe. Die dritte Stufe bildet für jede Ausfü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 vorgesehen. 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 Eingangsdaten
stammen von den niedrigen und hohen Datenschaltern 210, 230 der
zweiten Stufe. Ein zweites Paar Eingangsdaten werden über die
Datenleitungen 310 und 320, jeweils einem "niedrigen lokalen
Bypass-Bus" und
einem "hohen lokalen
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 identisch den Eingaben zu dem Schalter 270.
Ebenso leiten die dem IN2-Anschlufl zugeordneten Schalter ihre Eingaben
von derselben Quelle ab. Eingaben an den Schalter 300 sind
identisch mit den Eingaben an den Schalter 280. Obwohl
die Eingaben identisch sind, können
die Schalter 270–300 unabhängig voneinander
gesteuert werden.
-
Die
Ausführungseinheiten 130 und 140 erzeugen
die Ausgabedaten als zwei Datensegmente halber Breite. Niedrig bewertete
Daten werden an einem OUTLO-Anschluß ausgegeben. Hoch bewertete
Daten werden einen Taktzyklus später
am OUTHI-Anschluß ausgegeben.
Die niedrig und hoch bewerteten Ausgabedaten 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 eingegeben werden sein. Die hoch bewerteten
Ausgabendaten, die einen Taktzyklus später erzeugt wurden, können in
jede logische Einheit ein Zyklus nach ihrer Erzeugung eingegeben
werden. 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 erscheinen 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-Datenleitungen. Das Flip-Flop 400 verzögert die
niedrig bewerteten Datenleitungen um einen Taktzyklus, um einen
Aufbau von Daten 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 Ergebnisregister 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ührungseinheit 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.
-
Eine
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. Die Bypass-Steuereinrichtung 180 konfiguriert
das Schalten jedes Schalters, um jeden gewünschten Bypass zu implementieren.
Wenn die Bypass-Steuereinrichtung 180 eine Anweisung aus dem
Prozessor kern empfängt,
bestimmt sie, ob die Eingangsdaten 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
-
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 ausfü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 Schaltung einlesen zu müssen.
-
Die
Bypass-Steuereinrichtung 180 hält einen Drei-Register-Speicher (nicht gezeigt).
Ein Register, ein lokales Bypass-Register,
ist dem unteren lokalen Bypass-Bus 310 zugeordnet. Ein
zweites Register, ein globales Bypass-Register, 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-
Steuereinrichtung 180 gespeichert.
-
Jedesmal
dann, wenn eine Anweisung durch die in 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 Übereinstimmung,
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 lei ten. Die Steuereinrichtung 180 muß nur die Daten verfolgen,
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-Bussen einen Taktzyklus später um.
-
Die
folgende Tabelle erläutert,
wie die Bypass-Steuereinrichtung 180 ihre Überwachungsfunktion
ausführt.
Am Taktzyklus T wird die PADD-Funktion ausgeführt, wobei ein Ergebnis erzeugt
wird, das im als Register "C" bezeichneten Bestimmungsregister 390 gespeichert
werden soll. Die Bypass- Steuereinrichtung 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 lokalen, 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-Steuereinrichtung 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 Etikett 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 bewerteten Daten zur PSHFT-Anweisung
folgen, läßt die Steuereinrichtung 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 zugeordneten Register
festgestellt. Dementsprechend läßt die Bypass-Steuereinrichtung 180 den
globalen Bypaß wirksam
werden. 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ückgeleitet
zur Logikeinheit 130.
-
Im
Taktzyklus T+3 rücken
die Daten innerhalb der Register der Bypass-Steuereinrichtung 180 in
einer dem Fortschreiten 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 abzuschließ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 Schalter 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
konventionellen Verfahren gelesen wird.
-
Bus-Konflikte
können
auftreten bei sequentiellen Operationen, die von einer einzelnen
Ausführungseinheit
durchgefü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 Ausfü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 einzugeben.
-
Bei
einem Ausführungsbeispiel
können
die Schalter der Schaltung als Multiplexer-Latch-Schaltungen ("LMUX") ausgebildet 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 Mikroprozessorkern 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 Vollbreiten- Makrooperation in
wenigstens zwei Mikroanweisungen erreicht werden, von denen jede
nur mit der Hälfte
der Operanden arbeitet. Obgleich die folgende Beschreibung unter
Berücksichtigung
eines speziellen Registerumbenennungsverfahrens beschrieben ist,
ist einzusehen, daß andere
Register-Umbenennungsmechanismen ebenfalls verwendet werden können. 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.
-
6A veranschaulicht
begrifflich ein Ausführungsbeispiel
einer Pipeline zur Durchführung
von Operationen an Operanden in "gestaffelter" Weise, indem eine
Makrooperation in eine Mehrzahl von Mikroperationen konvertiert
wird, so daß jede
einen Teil der vollen Breite der Operanden verarbeitet. 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ötigerweise
zu verundeutlichen. Wie dargestellt, wird in der Dekodierstufe 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 unterstü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 halber 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 Registerabbildungen und Umordnungspuffern. Die
Quellen jeder Mikroanweisung 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-Register. 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 Operanden entsprechenden Registerabbildungstabelle.
Die Mikroanweisungen 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 ausführt). Jede Mikroanweisung empfängt und
bearbeitet getrennt ein 64-Bit-Segment des 128-Bit-Operanden. Eine
der Operationen (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
Operation, 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 Operation
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 6A zeigt,
daß die
gepackten Gleitkommadaten an eine Realregisterdatei mit Y*2 64-Bit-Registern,
die jeweils als hoch und niedrig gekennzeichnet sind, zurückgegeben
werden, können
alternative Ausführungsbeispiele
eine Realregisterdatei mit Y 128-Bit-Registern verwenden. Zusätzlich können, während ein
Ausführungsbeispiel
mit einem Registerumbenennungsmechanismus mit Umordnungspuffer und
Realregisterdateien beschrieben wurde, andere Ausführungsbeispiele
einen beliebigen Registerumbenennungsmechanismus verwenden. Beispielsweise
verwendet der Registerumbenennungsmechanismus gemäß U.S.-Patent
Nr. 5,197,132 eine Vorgeschichte-Warteschlange-Sicherungs-Abbildung (Back up map).
-
6B ist
ein Zeitablaufplan, der das in 6A beschriebene
Ausführungsbeispiel
näher beschreibt. Zum
Zeitpunkt T tritt eine Makroanweisung "ADD X,Y" in die Dekodierstufe der Pipeline gemäß 6A ein. Die
Makroanweisung ist hierbei beispielsweise eine 128-Bit-Anweisung.
Die 128-Bit-Makroanweisung
wird konvertiert zu zwei 64-Bit-Mikroanweisungen, 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
ausgeführt.
Zum Zeitpunkt T+1 wird die hoch bewertete Operation dann von derselben 64-Bit-Einheit
ausgeführt.
Dieses Ausführungsbeispiel
der vorliegenden Erfindung ist daher speziell zur Verarbeitung von
128-Bit-Anweisungen unter Nutzung vorhandener 64-Bit-Hardwaresysteme ohne
signifikante Änderungen
der Hardware, geeignet. Die vorhandenen Systeme werden einfach um
eine neue Abbildung zur Behandlung gepackter Gleitkommawerte erweitert,
zusätzlich
zu der vorhandenen Abbildung für
skalare gepackte Gleitkomma/Ganzzahl-Daten und skalarer Ganzzahldaten.