-
Die
vorliegende Erfindung bezieht sich allgemein auf die Zuteilung von
Ressourcen während
der Befehlsausführung
in einem Mikroprozessor und insbesondere auf die Zuteilung von Ressourcen
in Mikroprozessoren, die eine Ladeoperation in mehrere Register
unterstützen.
-
Mehrregister-Lade-/Speicherbefehle
erfordern eine vollständige
Serialisierung, da diese Befehle bis zu alle Mehrzweckregister (üblicherweise
32), die in einem Mikroprozessor vorhanden sind, ändern oder
diese verwenden können.
In der PowerPCTM-Reihe von Mikroprozessoren, die von
der International Business Machines Corporation produziert wird,
sind mehrfache Lade-/Speicherbefehle
für ganze
Zahlen eingerichtet, die Datenblöcke
zu den und aus den Mehrzweckregistern (GPRs) des Mikroprozessors
verschieben. Die zur Verfügung
gestellten Mehrregisterbefehle sind die Befehle Lade-Mehrere-Wörter (lmw)
und Speichere-Mehrere-Wörter (stmw).
-
Da
solche Mehrregister-Lade-/Speicherbefehle bis zu alle Mehrzweckregister
in dem System verändern
oder verwenden können,
wurden nach dem Stand der Technik spätere Befehle in der Befehlsabfolge
im Befehlspufferspeicher gehalten, bis die Ausführung des Mehrregisterbefehls
abgeschlossen war. Es wurde daher angenommen, dass Mehrregisterbefehle
die vollständige
Serialisierung dieser Befehle im Befehlsstrom erzwingen. Um eine
derartige Serialisierung einzurichten, wurden den Mehrregisterbefehlen
bisher alle der benötigten
Mehrzweckregister zugeteilt, bis die Befehlsausführung abgeschlossen war. Ein
solches System schränkt
die Leistungsstärke
wesentlich ein, indem es sie die Befehlsleitung aufhält, bis
der Mehrregisterbefehl abgeschlossen ist.
-
Die
US-Patentschrift 5 416 911 A beschreibt ein Verfahren zur Ausführung mehrerer
Befehle in einem superskalaren Mikroprozessor einschließlich einem
mehrfachen Ladebefehl.
-
Entsprechend
stellt die Erfindung ein Verfahren nach Anspruch 1 und einen Mikroprozessor
nach Anspruch 3 bereit.
-
Der
oben beschriebene Ansatz erlaubt es, Ressourcen von den Mehrregisterbefehlen
zu entbinden, indem diese Befehle so ausgeführt werden, dass die Ressourcen
verfügbar
werden, damit nachfolgende Befehle die Ausführung gleichzeitig mit dem ausführenden
Mehrregisterbefehl beginnen können. Auf
diese Weise erlaubt die frühe
Freigabe von Ressourcen, die zu einer mehrfachen Lade-/Speicheroperation
gehören,
die gleichzeitige Ausführung
weiterer Befehle. Dies verbessert die Leistungsfähigkeit eines Mikroprozessors
mit superskalarem Aufbau wesentlich, indem Befehle, die mehrere
Register verwenden, parallel mit nachfolgenden Befehlen ausgeführt werden
können,
die die Mehrzweckregister verwenden.
-
So
kann in einer bevorzugten Ausführungsform
ein mehrfacher Ladebefehl in einem superskalaren Mikroprozessor
ausgeführt
werden, indem der mehrfache Ladebefehl an eine Lade-/Speichereinheit ausgegeben
wird. Die Lade-/Speichereinheit beginnt die Ausführung eines ausgegebenen mehrfachen Ladebefehls
und dieser lädt
Daten aus dem Speicher in eine Vielzahl von Registern. Es wird eine
Tabelle geführt,
die jedes Register aus der Vielzahl von Registern auflistet und
angibt, wann vom ausführenden mehrfachen
Ladebefehl Daten in jedes Register geladen wurden. Ein Befehl, der
von Daten eines Quelloperanden abhängt, die von dem mehrfachen
Ladebefehl in ein Register aus der Vielzahl von Registern geladen
wurden, welches vom Befehl als Quellregister angegeben wird, wird
ausgeführt,
bevor die Ausführung
des mehrfachen Ladebefehls abgeschlossen wird, nachdem die Tabelle
die Daten des Quelloperanden als in das Quellregister geladen angibt.
-
Eine
bevorzugte Ausführungsform
der Erfindung wird nun lediglich beispielhaft anhand der folgenden
Zeichnungen beschrieben:
-
1 veranschaulicht
ein Blockschaltbild eines Prozessors;
-
2 zeigt
ein Zeitschaubild der zur Verarbeitung eines mehrfachen Ladebefehls
und anschließender
Festkommabefehle erforderlichen Zyklen;
-
3 zeigt
ein Zeitschaubild der Zyklen, in denen ein mehrfacher Speicherbefehl
und zwei Festkommabefehle im Mikroprozessor verarbeitet werden.
-
Mit
Bezug auf die Figuren und insbesondere auf 1 ist mit
der allgemeinen Bezeichnung 10 ein Blockschaltbild eines
Prozessors zur Datenverarbeitung dargestellt. In der abgebildeten
Ausführungsform
umfasst der Prozessor 10 einen einzelnen superskalaren
Mikroprozessor als integrierten Schaltkreis. Entsprechend beinhaltet
der Prozessor 10, wie weiter unten ausgeführt wird,
verschiedene Ausführungseinheiten,
Register, Pufferspeicher, Speicher und andere funktionale Einheiten,
die alle als integrierte Schaltungen ausgeführt sind. Der Prozessor 10 kann
auch einen Mikroprozessor der PowerPCTM-Reihe
von Prozessoren umfassen, die von der International Business Corporation
herstellt wird und die gemäß Rechentechniken
mit reduziertem Befehlssatz (RISC) betrieben wird.
-
Wie
in 1 gezeigt ist, ist der Prozessor 10 mit
dem Systembus 11 über
eine Busschnittstelleneinheit (BIU) 12 innerhalb des Prozessors 10 verbunden.
Die BIU 12 steuert die Datenübertragung zwischen dem Prozessor 10 und
anderen Einheiten, die an den Systembus 11 angeschlossen
sind, z.B. ein Hauptspeicher (nicht dargestellt). Der Prozessor 10, der
Systembus 11 und andere an den Systembus 11 angeschlossene
Einheiten bilden zusammen ein Host-Datenverarbeitungssystem. Die
BIU 12 ist an den Befehls-Cachespeicher 14 und
den Daten-Cachespeicher 16 innerhalb
des Prozessors 10 angeschlossen. Der Hochgeschwindigkeits-Cachespeicher
sowie der Befehls-Cachespeicher 14 und
der Daten-Cachespeicher 16 ermöglichen es dem Prozessor 10,
eine relativ schnelle Zugriffszeit zu einer Teilmenge von Daten
oder Befehlen zu erreichen, die zuvor vom Hauptspeicher zum Hochgeschwindigkeits-Cachespeicher übertragen
wurden, womit die Arbeitsgeschwindigkeit des Host-Datenverarbeitungssystems
zunimmt. Der Befehls-Cachespeicher 14 ist weiterhin mit
dem sequenziellen Abrufer 17 verbunden, der Befehle aus
dem Befehls-Cachespeicher 14 während jedes Ausführungszyklus
abruft. Der sequenzielle Abruf er 17 überträgt Verzweigungsbefehle zur
Ausführung
an die Verzweigungsverarbeitungs-Einheit (BPU) 18 und überträgt sequenzielle
Befehle an die Befehlswarteschlange 19 zur vorübergehenden
Speicherung, bevor sie von anderen Ausführungsschaltungen innerhalb
von Prozessors 10 ausgeführt werden.
-
In
der abgebildeten Ausführungsform
umfassen die Ausführungsschaltungen
von Prozessor 10 zusätzlich
zur BPU 18 mehrere Ausführungseinheiten,
darunter die Festkommaeinheit (FXU) 22, die Lade-/Speichereinheit
(LSU) 28 und die Fließkommaeinheit
(FPU) 30. Wie dem Computerfachmann bestens bekannt ist,
führt jede
der Ausführungseinheiten 22, 28 und 30 einen
oder mehrere Befehle innerhalb einer bestimmten Klasse sequenzieller
Befehle während
jedes Prozessorzyklus aus. Z.B. führt die FXU 22 mathematische
Festkomma-Operationen wie Addition, Subtraktion, UND-, ODER- und
XOR-Operationen aus und verwendet dabei Quelloperanden, die aus
festgelegten Mehrzweckregistern (GPRs) 32 oder Puffern
zur GPR-Umbenennung 33 erhalten werden. Im Anschluss an
die Ausführung
eines Festkommabefehls gibt die FXU 22 die Datenergebnisse des
Befehls an Puffer zur GPR-Umbenennung 33 aus, die vorübergehend
Speicherplatz für
die Ergebnisdaten zur Verfügung
stellen, bis der Befehl mit der Übertragung
der Ergebnisdaten von den Puffern zur GPR-Umbenennung 33 an
eines oder mehrere GPRs 32 abgeschlossen wird. Umgekehrt
führt die FPU 30 Fließkommaoperationen
wie Fließkomma-Multiplikation
und Fließkomma-Division
an Quelloperanden durch, die von Fließkommaregistern (FPRs) 36 oder
Puffern zur FPR-Umbenennung 37 erhalten werden. Die FPU 30 gibt
Daten, die sich bei der Ausführung
von Fließkommabefehlen
ergeben, an ausgewählte
Puffer zur FPR-Umbenennung 37 aus, die vorübergehend
die Ergebnisdaten speichern bis die Befehle mit der Übertragung
der Ergebnisdaten von den Puffern zur FPR-Umbenennung 37 an ausgewählte FPRs 36 abgeschlossen
werden. Die LSU 28 führt Fließkomma-
und Festkommabefehle aus, die entweder Daten aus dem Speicher (dies
ist entweder der Daten-Cachespeicher 16 oder der Hauptspeicher)
in ausgewählte
GPRs 32 oder FPRs 36 laden oder Daten aus einem
ausgewählten
Register der GPRs 32, den Puffern zur GPR-Umbenennung,
den FPRs 36 oder den Puffern zur FPR-Umbenennung 37 im
Speicher ablegen.
-
Der
Prozessor 10 verwendet sowohl die Fließband-Ausführung als auch die Durcheinander-Ausführung von
Befehlen, um die Leistungsstärke
seiner superskalaren Architektur weiter zu verbessern. Entsprechend
können
Befehle von der FXU 22, der LSU 28 und FPU 30 in
beliebiger Reihenfolge ausgeführt
werden, solange Datenabhängigkeiten überwacht
werden. Außerdem
werden Befehle von jeder der Einheiten FXU 22, LSU 28 und
FPU 30 an einer Folge von Fließbandstationen verarbeitet.
Bei Hochleistungsprozessoren wird typischerweise jeder Befehl an
fünf verschiedenen
Stationen in der Befehlsleitung, nämlich Abrufen, Decodieren/Ausgeben,
Ausführen,
Beenden und Abschließen,
verarbeitet.
-
Während der
Abrufphase ruft der sequenzielle Abrufer 17 einen oder
mehrere Befehle ab, die zu einer oder mehreren Adressen aus dem
Befehlscache-Speicher 14 gehören. Sequenzielle Befehle,
die aus dem Befehlscache-Speicher 14 abgerufen wurden,
werden vom sequenziellen Abrufer 17 innerhalb der Befehlswarteschlange 19 gespeichert.
Abgerufene Verzweigungsbefehle werden aus dem Befehlsstrom entfernt
und an die BPU 18 zur Ausführung weitergeleitet. Die BPU 18 umfasst
einen Mechanismus zur Verzweigungsvorhersage, z.B. eine Tabelle zur
Verzweigungshistorie, die es der BPU 18 erlaubt, nicht
aufgelöste
bedingte Verzweigungsbefehle spekulativ auszuführen, indem vorhergesagt wird,
ob die Verzweigung eintritt.
-
Während der
Decodierungs-/Ausgabephase decodiert die Ausgabeeinheit 20 einen
oder mehrere Befehle aus der Befehlswarteschlange 19 und
gibt diese an die entsprechenden Einheiten der Ausführungseinheiten 22, 28 und 30 aus.
Ebenso während der
Decodierungs-/Ausgabephase weist die Ausgabeeinheit 20 allen
ausgegebenen Ergebnisdaten des Befehls einen Umbenennungspuffer
innerhalb der Puffer zur GPR-Umbenennung 33 oder
der Puffer zur FPR-Umbenennung 37 zu. Gemäß einer
bevorzugten Ausführungsform
der vorliegenden Erfindung gibt der Prozessor 10 Befehle
in Programmreihenfolge aus und verfolgt die Programmreihenfolge
der ausgegebenen Befehle während
der Durcheinander-Ausführung,
indem eindeutige Befehlsbezeichner verwendet werden. Zusätzlich zu
einem Befehlsbezeichner besitzt jeder Befehl in der Ausführungsleitung
von Prozessor 10 ein rA- und ein rB-Kennzeichen, das die Quellen der A-
und B-Operanden für den
Befehl angibt, und ein rD-Kennzeichen, das einen Empfangspuffer
zur Umbenennung innerhalb der GPR-Puffer zur Umbenennung 33 oder
der FPR-Puffer zur Umbenennung 37 für die Ergebnisdaten des Befehls
angibt.
-
Während der
Ausführungsphase
führen
die Ausführungseinheiten 22, 28 und 30 opportunistisch Befehle
aus, die sie von der Ausgabeeinheit 20 erhalten haben,
falls Operanden und Ausführungsressourcen
für die
angegebenen Operationen verfügbar sind.
Nachdem die Ausführung
beendet ist, speichern die Ausführungseinheiten 22, 28 und 30 Ergebnisdaten
abhängig
vom Befehlstyp entweder in Puffern zur GPR-Umbenennung 33 oder
in Puffern zur FPR-Umbenennung 37. Anschließend benachrichtigen
die Ausführungseinheiten 22, 28 und 30 die Abschlusseinheit 40,
bei welchen Befehlen die Ausführung
beendet ist. Schließlich
werden die Befehle von der Abschlusseinheit 40 in der Programmreihenfolge durch
die Übertragung
der Ergebnisdaten aus den Puffern zur GPR-Umbenennung 33 und den Puffern zur
FPR-Umbenennung 37 an die GPRs 32 bzw. FPRs 36 abgeschlossen.
-
Der
Prozessor 10 kann Mehrregister-Lade-/Speicherbefehle ausführen, die
Lade- und Speichervorgänge
in eine Vielzahl von Mehrzweckregistern aus dem und in den Speicher
ausführen.
Insbesondere in der bevorzugten Ausführungsform, die einen PowerPCTM-Mikroprozessor aufweist, führt der Mikroprozessor 10 einen
mehrfachen Ladebefehl (lmw), der mehrere Wörter aus dem Speicher lädt, und
einen mehrfachen Speicherbefehl (stmw), der mehrere Wörter im
Speicher ablegt, aus.
-
Diese
Mehrregisterbefehle werden vom sequenziellen Abrufer 17 aus
dem Befehls-Cachespeicher 14 abgerufen und in die Befehlswarteschlange 19 geladen.
Bei Ausgabe eines Mehrregisterbefehls durch die Ausgabeeinheit 20 beginnt
die LSU 28 mit der Ausführung
des Mehrregisterbefehls. Ebenso wird bei der Befehlsausgabe eine
Anzahl von Registern in den GPRs 32, die im Mehrregisterbefehl
bezeichnet sind, dem Befehl zugeteilt.
-
In
der bevorzugten Ausführungsform
erfordert die mehrfache Ladeanweisung, dass Ladevorgänge in bis
zu 32 benachbarte Register, die mit bis zu 32 benachbarten Wörtern aus
dem Speicher geladen werden, ausgeführt werden. Z.B. lädt der Befehl „lmw r3,
r2, r1" die Register
3 bis 31 mit Daten, die im Speicher an der Stelle <r2 + r1> gefunden werden. In diesem
Beispiel wird auf diese Weise zuerst ein Ladevorgang in das Register
3 (r3) ausgeführt.
Die LSU 28 fährt
anschließend
mit dem Ladevorgang bei Register 4, Register 5 usw. fort, bis in
alle Register bis zu einschließlich
Register 31 Ladevorgänge
ausgeführt
wurden. An dieser Stelle ist die Ausführung des mehrfachen Ladebefehls
beendet. Dies wird an die Abschlusseinheit 40 gemeldet,
die den Befehl mit der Übergabe
der Befehls an architektonische Registern in dem System abschließt.
-
In 2 ist
ein Zeitschaubild der zur Verarbeitung des mehrfachen Ladebefehls
und anschließender
Festkommaoperationen erforderlichen Zyklen gezeigt. Der mehrfache
Ladebefehl (Load Mult) wird vom Befehls-Cachespeicher 14 durch
den sequenziellen Abrufer 17 im Zyklus 1 abgerufen (F). Der
Befehl wird im Zyklus 2 decodiert (Dec) und von der Ausgabeeinheit 20 an
die LSU 28 im Zyklus 3 ausgegeben (Disp). Die LSU 28 führt den
mehrfachen Ladebefehl während
der Zyklen 4 bis 7 aus (E), und der Befehl wird von der Abschlusseinheit 40 in Zyklus
8 abgeschlossen (C).
-
In
diesem Beispiel werden Ladevorgänge
in vier Mehrzweckregister ausgeführt.
In einer bevorzugten Ausführungsform
wäre der
mehrfache Ladebefehl als lmw r28, r2, r1 formatiert. Dieser Befehl würde Ladevorgänge in die
Register 28 bis 31 ausführen
und, wie in 2 gezeigt ist, wird in den Zyklen
4 bis 7 je Systemtaktzyklus ein Ladevorgang in ein Register ausgeführt.
-
Nach
dem Stand der Technik würden
alle Festkommabefehle, die auf den mehrfachen Ladebefehl folgen,
serialisiert werden, so dass diese nicht vor dem Ausführungsende
des mehrfachen Ladebefehls abgerufen werden würden. Dies ermöglicht es, die Kohärenz der
Operandendaten, die von nachfolgenden Festkommabefehlen verwendet
werden, aufrecht zu erhalten. Deshalb konnten im Beispiel von 2 nach
dem Stand der Technik bis Zyklus 9 keine nachfolgenden Festkommabefehle
abgerufen werden.
-
Nach
der vorliegenden Erfindung steht ein Entbindungsmechanismus zur
Verfügung,
der es erlaubt, im Befehls-Cachespeicher wartende Befehle vor Abschluss
des mehrfachen Ladebefehls auszugeben. Wie in 2 ersichtlich
ist, werden dem mehrfachen Ladebefehl vor Zyklus 4 die Register
28 bis 31 zugeteilt. Nachdem jedoch der Ladevorgang durch den mehrfachen
Ladebefehls z.B. in Register 28 ausgeführt wurde, wird diese Ressource
freigegeben, um ihren Inhalt für
nachfolgende Befehle als Operandendaten verwendbar zu machen. Als
Vorteil daraus können
nachfolgende Festkommabefehle, die von den Ergebnissen des mehrfachen
Ladebefehls abhängig
sind, an andere funktionale Einheiten ausgegeben werden, bevor der
mehrfache Ladebefehl abgeschlossen ist.
-
Der
Prozessor 10 führt
eine Anzeigetafel oder eine Tabelle für alle Mehrzweckregister (GPR) 32,
die jedes Register auflistet und angibt, wann der mehrfache Ladebefehl
einen Ladevorgang in das zugehörige
Register ausgeführt
hat. Die Ausgabeeinheit 20 greift zur Bestimmung, ob nachfolgende
Befehle ausgegeben werden können,
auf die Anzeigetafel zu. Wie in 2 gezeigt
ist, wird beispielsweise betrachtet, wie ein mehrfacher Ladebefehl
(Load Mult) gefolgt von einem ersten und zweiten Festkommabefehl
(FX Inst 1 und FX Inst 2) verarbeitet wird, was in der anschließenden Befehlsfolge
dargestellt ist:
lmw r28, r2, r1
add r2, r2, r28
add
r3, r3, r30
(Anmerkung: die „adds" sind Festkommabefehle, um den Inhalt
eines ersten Registers zum Inhalt eines zweiten Registers zu addieren
und den Ergebnisoperanden im ersten Register zu speichern)
-
Wie
in 2 gezeigt ist, kann FX Inst 1 ausgegeben werden,
sobald das Register 28 von der Lade-/Speichereinheit für die Anzeigetafel
freigegeben wird. In Zyklus 4 hat die Lade-/Speichereinheit den mehrfachen Ladebefehl
für Register
28 ausgeführt, so
dass dieses Register auf der Anzeigetafel freigegeben wird. Im unmittelbar
folgenden Zyklus wird die Ausgabeeinheit 20 an die FXU 22 FX
Inst 1 ausgeben, da die Daten des Quelloperanden für diesen
Befehl nun in den Mehrzweckregistern zur Verfügung stehen. Dieser Befehl
wird von der FXU 22 in Zyklus 6 ausgeführt, die Abschlusseinheit 40 schließt den Befehl
aber bis Zyklus 9 nicht ab, um die Kohärenz der Registerdaten zu gewährleisten.
Wie in 2 zu erkennen ist, wird FX Inst 2 in den Zyklen
3 und 4 abgerufen und decodiert. Jedoch gibt die Ausgabeeinheit 20 diesen
Befehl an die FXU 22 nicht aus, bevor der mehrfache Ladebefehl
im Zyklus 6 einen Ladevorgang in Register 30 ausgeführt hat
und diesen in der Anzeigetafel eingetragen hat. Die Ausgabeeinheit 20 liest
die Freigabe von Register 30 und gibt in Zyklus 7 den zweiten Festkommabefehl
aus, den die FXU 22 in Zyklus 8 ausführt. Die Abschlusseinheit 40 schließt diesen
Befehl bis Zyklus 10 nicht ab, da alle Festkommabefehle in der Programmreihenfolge
abgeschlossen werden müssen.
-
Wie
in diesem Beispiel gezeigt ist, gab es eine Verbesserung von bis
zu acht Taktzyklen für
die Ausgabe und Ausführung
der nachfolgenden Festkommabefehle (einzeln portierten Registerspeicher und
Cache-Speicher vorausgesetzt). Dies ist eine wesentliche Steigerung
der Leistungsfähigkeit
des Prozessors im Vergleich zu bisher. Tatsächlich konnte in bestimmten
Beispielen eine Verbesserung von bis zu 32 Taktzyklen verwirklicht
werden. Es ist klar, dass diese verbesserte Leistungsfähigkeit
nur von der Tiefe des Abschlusspuffers in der Abschlusseinheit begrenzt
wird, d.h. durch die Anzahl der Befehle, die sich vor Abschluss
des mehrfachen Ladevorgangs in der Ausführungsleitung befinden können.
-
Die
frühzeitige
Freigabe von Ressourcen wird auch während der Ausführung eines
mehrfachen Speicherbefehls erreicht, obwohl dies nicht als eine
Ausführungsform
der Erfindung betrachtet wird. Der mehrfache Speicherbefehl erfordert
die Speicherung von bis zu 32 benachbarten Registern in bis zu 32
benachbarte Wortpositionen im Speicher. Beispielsweise speichert
der mehrfache Speicherbefehl stmw r3, r2, r1 den Inhalt der Register
3 bis Register 31 im Speicher an der Stelle <r2 + r1>. Bei Ausgabe des mehrfachen Speicherbefehls
können
zusätzliche nachfolgende
Festkommaoperationen bedingungslos an die anderen Festkomma-Ausführungseinheiten
im Mikroprozessor ausgegeben werden. Wie vorher müssen diese
Befehle in der Programmreihenfolge abgeschlossen werden, die Ausführung kann
aber unmittelbar nach Ausgabe der Befehle beginnen.
-
Der
mehrfache Speicherbefehl muss nicht mit nachfolgenden Festkommabefehlen
serialisiert werden. Folglich muss der gesamte benachbarte Registersatz,
der für
den mehrfachen Speicherbefehl benötigt wird, nicht ausschließlich dem
Befehl zugeteilt werden und kann stattdessen als Quelloperanden- Ressource für nachfolgende
Befehle verwendet werden. Jedoch müssen alle Ergebnisse der nachfolgenden
Befehlen in Puffern zur GPR-Umbenennung 33 gespeichert
werden, bis der mehrfache Speicherbefehl abgeschlossen ist, um das
Beschreiben noch nicht gespeicherter Register zu verhindern. Bei
Abschluss des mehrfachen Speicherbefehls können die nachfolgenden Befehle
mit der Übertragung
der Ergebnisoperanden aus den Puffern zur GPR-Umbenennung 33 an
ein architektonisches Register im GPR 32 abgeschlossen
werden.
-
In 3 ist
ein Zeitschaubild der Zyklen dargestellt, in denen ein mehrfacher
Speicherbefehl (Store Mult) und zwei Festkommabefehle (FX Inst 3 und
FX Inst 4) im Mikroprozessor verarbeitet werden. Als Beispiel wird
die Verarbeitung folgender Befehlsfolge betrachtet:
stmw r28,
r2, r1
add r2, r2, r28
add r3, r3, r30
-
Wie
in 3 zu sehen ist, wird der mehrfache Speicherbefehl
abgerufen in Zyklus 1, in Zyklus 2 decodiert, ausgegeben in Zyklus
3, von der Lade-/Speichereinheit 28 ausgeführt in den
Zyklen 4 bis 7 und abgeschlossen in Zyklus 8. FX Inst1 und FX Inst2
werden so bald wie möglich
ausgegeben, nachdem der vorhergehende mehrfache Speicherbefehl in
Zyklus 3 ausgegeben wurde. FX Inst 1 wird in Zyklus 4 ausgegeben
und FX Inst 2 wird, da nur ein Befehl je Zyklus abgerufen werden
kann, in Zyklus 5 ausgegeben. Diese Festkommabefehle können unmittelbar
ausgeführt
werden, wie es in Zyklus 5 und 6 geschieht, unabhängig vom
Fortschritt der Ausführung
des mehrfachen Speicherbefehls, da die zur Ausführung erforderlichen Operandendaten
bereits in Register 28 und 30 vorliegen.
-
Tatsächlich legt
die LSU 28 in Zyklus 6 die Daten aus dem Register 30 im
Speicher ab, und die FXU 22 addiert die im Register 30
enthaltenen Operandendaten zu den im Register 3 vorhandenen Operandendaten.
Die Ergebnisse der Festkommaoperationen 1 und 2 werden bis zu den
Zyklen 9 bzw. 10 in Umbenennungspuffern 33 gehalten, wobei
an diesem Zeitpunkt die Ergebnisoperanden in Register 2 bzw. 3 gespeichert
werden. Wie bereits erklärt
wurde, können
diese Festkommabefehle nicht abgeschlossen werden, bevor der mehrfache
Speicherbefehl abgeschlossen ist, um die Kohärenz der Ressourcen aufrecht
zu erhalten.
-
Zusammenfassend
betrachtet behandelt die vorliegende Erfindung das wesentliche Problem
des mit serialisierten Lade- und Speichervorgängen verbundenen erhöhten Arbeitsaufwandes.
Eine derartige Serialisierung von Operationen verlangt vollständig leere
Mikroprozessor-Register vor Ausgabe der serialisierten Operation
und erfordert die Zuteilung dieser Ressourcen an den serialisierten
Befehl bis zum Abschluss. Nach der vorliegenden Erfindung nimmt
die Leistungsfähigkeit
des Mikroprozessors wesentlich zu, indem eine Serialisierung nicht
verlangt wird und zusätzliche
nachfolgende Befehle gleichzeitig mit mehrfachen Ladebefehlen ausgeführt werden
können.
Abhängig
vom Abschlusspuffer des Mikroprozessor kann eine erhebliche Anzahl
von weiteren Befehlen vom Mikroprozessor während der Ausführung von
Mehrregisterbefehlen durchgeführt werden.
Beispielsweise gibt es in der bevorzugten Ausführungsform mit einer Tiefe
des Abschlusspuffers von fünf
Registern ein Potenzial von bis zu vier zusätzlich abschließenden Befehlen
ohne eine Verzögerung
in der Befehlskette. Da bis zum Abschluss solcher mehrfachen Ladebefehle
bis zu 36 Zyklen vergehen können,
bringt dies eine wesentliche Zeitersparnis mit sich, die die Geschwindigkeit
und Leistungsfähigkeit
des Mikroprozessors verbessert.