DE19782105C2 - Prozessorkern und Verfahren zum Unterstützen unterschiedlicher Befehlsheranholeinheiten in einer Pipeline - Google Patents
Prozessorkern und Verfahren zum Unterstützen unterschiedlicher Befehlsheranholeinheiten in einer PipelineInfo
- Publication number
- DE19782105C2 DE19782105C2 DE19782105A DE19782105A DE19782105C2 DE 19782105 C2 DE19782105 C2 DE 19782105C2 DE 19782105 A DE19782105 A DE 19782105A DE 19782105 A DE19782105 A DE 19782105A DE 19782105 C2 DE19782105 C2 DE 19782105C2
- Authority
- DE
- Germany
- Prior art keywords
- pipeline
- instruction
- bundle
- stage
- latch
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
-
- 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
Description
Die Erfindung bezieht sich auf einen Prozessorkern mit
mehreren Pipelinestufen sowie auf ein Verfahren zur Unter
stützung unterschiedlicher Befehlsheranholeinheiten ohne ei
ne Modifikation des Prozessorkerns.
Die Verarbeitung in der Art einer Pipeline ist im Stand
der Technik grundsätzlich gut bekannt. Fig. 1 zeigt einen
derartigen typischen Pipeline-Prozessor. Der Prozessorkern 1
enthält fünf Pipelinestufen 2-6. Zwischen jeder Stufe be
findet sich ein (nicht gezeigtes) implizites Latch. Die In
formation wird von einer Pipelinestufe zur nächsten unter
der Steuerung des Pipeline-Sequenzers 7 latch-gespeichert.
Die erste Pipelinestufe ist eine Befehlszeigererzeugungsstu
fe (IP) 2, welche eine Adresse erzeugt, bei welcher der ge
wünschte Befehl gefunden werden kann. Diese Adresse wird
dann zur Befehlsheranholeinheitstufe (IFU) 3 latch-gespei
chert, welche den Befehl physisch heranholt. Üblicherweise
weist die IFU einen eigenen Speicher (on-board memory) ir
gendeiner Art auf. Dieser eigene Speicher kann in Form eines
Befehls-Cache-Speichers vorliegen. Die IFU ist darüber hin
aus mit der Bussteuereinrichtung 8 gekoppelt, welche es der
IFU gestattet, auf den Speicher 10 dann zuzugreifen, wenn
der gewünschte Befehl nicht in dem eigenen Speicher gefunden
wird.
Sobald der Befehl entweder aus dem eigenen oder einem
externen Speicher gewonnen worden ist, wird der Befehl an
eine dritte Pipeline-Stufe, die Befehlsdekodiereinheit/Re
gistersatz-Stufe (ID) 4 latch-gespeichert. Die ID 4 deko
diert den Befehl und erwirbt irgendwelche erforderlichen
Operanden aus einem Registersatz. Wenn jede Pipelinestufe
einen einzelnen Zyklus benötigt, erwartet die ID, daß ein
Befehl im dritten Zyklus und in jedem nachfolgenden Zyklus
eintrifft. Wenn die IFU 3 nicht in der Lage ist, einen Be
fehl an die ID 4 zu liefern, benachrichtigt sie den Pipe
line-Sequenzer 7, daß sie angehalten wurde, während sie den
erwarteten Befehl erlangt. Der Pipeline-Sequenzer hält dann
alle darüber befindliches Stufen an. Sobald der Befehl ge
liefert und dekodiert ist, werden der Befehl und die Operan
den zur nächsten Stufe weiter latch-gespeichert, die die
Ausführungseinheit 5 zum Ausführen des Befehls darstellt.
Die abschließende Pipelinestufe ist die Rückschreibstufe 6,
bei welcher die Ergebnisse des Befehls, der in der Ausfüh
rungseinheit 5 während des vorhergehenden Zyklus ausgeführt
wurde, zum Registersatz oder dem Daten-Cache 9 zurückge
schrieben werden. Der Verzweigungszielpfad 11 gestattet der
Ausführungseinheit 5, die IP 2 darüber zu informieren, daß
eine Verzweigung aufgetreten ist, und liefert eine Adresse,
bei welcher die Ausführung fortgesetzt werden soll. In Erwi
derung werden die gegenwärtig in der Pipeline sich befinden
den Informationen, die sich auf Befehle nach der Verzweigung
in den Befehlsstrom beziehen, einer Flush-Operation unterzo
gen. Der Pipeline-Sequenzer 7 behandelt die gemeinsame
Steuerung unter den Pipelinestufen und sichert die Synchro
nisation. Es ist entscheidend, daß der Pipeline-Sequenzer
weiß, was in den von ihm gesteuerten Stufen auftritt, so daß
die Synchronisation aufrechterhalten werden kann und Neu-
Versuche erzeugt werden können, wenn erwartete Daten nicht
in irgendeiner bestimmten Stufe empfangen werden.
Im Falle eines Anhaltens (Stall) benachrichtigt die das
Anhalten initiierende Stufe den Pipeline-Sequenzer 7, und
der Pipeline-Sequenzer 7 hält im gleichen Zyklus sämtliche
Einheiten oberhalb dieser Stufe an. Wenn beispielsweise die
ID 4 nicht in der Lage ist, das Dekodieren und das Register-
Gewinnen in dem zugewiesenen Zyklus abzuschließen, gibt sie
einen Haltebefehl an den Pipeline-Sequenzer 7 aus, welcher
sofort die IP 2 und die IFU 3 anhält. Dieses Anhalten muß innerhalb
des Zyklus abgeschlossen sein, sonst wird beispiels
weise ein herangeholter Befehl an die ID 4 mit einem neuen
Befehl, der seinen Platz in dem Latch einnimmt, latch-ge
speichert. Wenn ID 4 nicht in der Lage ist, den an sie
latch-gespeicherten Befehl zu akzeptieren, geht dieser Be
fehl verloren. Das Anhalten wird zu einem Pfad kritischer
Geschwindigkeit, welcher die maximale Frequenz verringert,
bei welcher der Kern arbeiten kann, da die ID bis zu einem
späten Zeitpunkt in den Zyklus nicht identifizieren kann,
daß sie beispielsweise nicht einen erforderlichen Operanden
hat und da die Anzahl der anzuhaltenden Latch-Speicher Zeit
erfordert, um das Haltesignal bis zu einem Pegel aufzupuf
fern, der in der Lage ist, sämtliche Stufen oberhalb der das
Anhalten initiierenden Stufe anzuhalten.
Fig. 2 zeigt eine Blockdarstellung eines Systems eines
alternativen Pipeline-Prozessors aus dem Stand der Technik.
Der Prozessorkern 30 enthält eine Mehrzahl von Pipelinestu
fen. Die Befehlszeigererzeugungsstufe (IP) 32 erzeugt einen
Befehlszeiger und Steuerinformationen, welche sie in einem
Befehlszeiger-Latch (IPL) 33 anordnet. Vom IPL 33 werden ei
ne Mehrzahl von Steuerinformationen und eine Befehlsadresse
umfassende Signale in eine Blind-Stufe 38 (Dummy-Stufe)
latch-gespeichert, welche die gleiche Tiefe aufweisen muß,
wie eine Befehlheranholeinheitsstufe (IFU) 39, welche sich
außerhalb der Kerngrenzen 31 aufhält. Gleichzeitig mit dem
Latch-Speichern der Steuersignale und der Befehlsadresse in
die Steuerstufe 38 wird die Befehlsadresse auf Leitung 43
hinaus an die IFU 39 latch-gespeichert. Die IFU 39 holt die
durch die Adresse angegebenen Befehle heran und stellt sie
einem Befehlsheranhol-Latch (IFL) 34 innerhalb des Kerns 30
zur Verfügung. Gleichzeitig treffen die Steuersignale und
die Befehlsadresse von der Blind-Pipelinestufe 38 ein. Die
Steuerinformationen, die Befehlsadresse und der Befehl wer
den dann in der Befehlsdekodier/Registersatz-Stufe (ID) 35
latch-gespeichert. Der Befehl wird in der ID 35 dekodiert
und die Operanden werden gewonnen. Der dekodierte Befehl und
die Operanden werden ebenso wie die Steuerinformationen an
die Ausführungseinheit 36 latch-gespeichert. Die zum Rück
schreiben erforderlichen Informationen werden an die Rück
schreibstufe 37 wie im Stand der Technik latch-gespeichert.
Die Latch-Speicher zwischen der ID 35 und der Ausführungs
einheit 36 und zwischen der Ausführungseinheit 36 und der
Rückschreibeinheit 37 sind aus Gründen der Klarheit in der
Zeichnung nicht gezeigt. Die Neustart-Leitung 48 wird ver
wendet, um die IP 32 über die neue Adresse zu informieren
und um die gegenwärtig in der Pipeline vorhandenen Daten un
gültig zu machen, wenn eine Verzweigung falsch vorhergesagt
wurde. Die Ausführungseinheit 36 wird sämtliche von ihr emp
fangenen Daten ignorieren, bis sie das durch die Pipeline
zusammen mit einem Befehl, der dem Verzweigungsergebnis ent
spricht, weitergeleitete Neustartsignal empfängt.
Im Falle eines Anhaltens wird beispielsweise in der ID
35 die Signalleitung 40 angelegt, um das IFL 34 anzuhalten,
und es wird nach oben weitergeleitet, um außerdem das IPL 33
anzuhalten. Sofern die Blindstufe 38 und die IFU 39 eine
Tiefe von mehr als 1 aufweisen, muß das Anhaltesignal 40
ebenso zur Blindstufe 38 und der IFU 39 geleitet werden. Ei
ne analoge Situation tritt für ein Anhalten ein, welches von
einer Stufe weiter unten in der Pipeline herrührt. Wie zuvor
erwähnt, führt dies zu einem kritischen Zeitpfad, der zum
Puffern und Ausbreiten des Signals erforderlich ist, um ein
Anhalten ohne Datenverlust zu erreichen. Während zusätzlich
die IFU 39 in Bezug auf die Größe ihres eigenen Speichers
flexibel gemacht wird, wird ihre Tiefe von der Blindstufe 38
diktiert, da die beiden von gleicher Tiefe sein müssen, um
die richtige Synchronisation der sich innerhalb des Kerns 30
hinab ausbreitenden Steuersignale zu sichern.
Änderungen der Anwendung oder gewünschten Verwendung er
fordern üblicherweise eine Neukonstruktion des Kerns. Übli
cherweise ist dies ein Ergebnis einer Änderung an der IFU.
Die Dinge, die sich beispielsweise im Ergebnis von Kosten-
oder Flächenbetrachtungen ändern können, sind die Größe des
eigenen Speichers und die Tiefe der IFU-Pipeline. Beispiels
weise ist es bei einigen Anwendungen aus Kosten- und Ent
wurfszeitgründen erwünscht, eine IFU zu verwenden, welche
mehr als einen Zyklus erfordert, um einen Befehl zu gewin
nen. Die IFUs sind schaltungsintensiv, und je rigoroser die
Zeitanforderungen für die Befehlsgewinnung sind, desto
größer sind die zum Gewährleisten dieser Zeitvorgaben erfor
derlichen Kosten und konstruktiven Bemühungen. So kann durch
Erweitern der zur Verfügung stehenden Zeit die IFU unter
Verwendung weniger qualifizierter Konstrukteure und bei ge
ringeren Kosten entworfen werden. Da die IFU 39 aus dem Kern
herausgenommen wurde, wie es in Fig. 2 gezeigt ist, kann
deren Größe geändert werden. Ohne eine Neukonstruktion des
Kerns reicht dies jedoch nicht, um auf Änderungen in der
Tiefe der IFU-Pipeline einzugehen.
Demzufolge ist es eine Aufgabe der Erfindung, es einem
Kern zu ermöglichen, in Verbindung mit einer großen Vielzahl
von IFUs unterschiedlicher Größen und Tiefen verwendet zu
werden.
Diese Aufgabe wird erfindungsgemäß durch einen
Prozessorkern mit den Merkmalen des Anspruchs 1 bzw. durch
ein Verfahren mit den Merkmalen des Anspruchs 7 gelöst.
Es wird ein Prozessorkern offenbart, der für eine Ver
wendung in Verbindung mit einer großen Vielzahl von Befehls
heranholeinheiten geeignet ist. Der Prozessorkern enthält
eine Mehrzahl von Pipelinestufen, die eine Befehlszeigerer
zeugungsstufe und eine Dekodierstufe einschließen. Der Kern
bündelt in der ersten Stufe sämtliche für eine stromabfol
gende Pipeline-Operation erforderlichen Steuersignale mit
einer Befehlsadresse. Das Bündel wird aus dem Kern an die
Befehlsheranholeinheit übermittelt. Die Befehlsheranholein
heit holt den Befehl heran und fügt ihn zu dem Bündel hinzu,
bevor sie das Bündel in der modifizierten Weise zurück in
den Kern und die Pipeline hinab weiterleitet. Auf die Weise
wird eine externe Pipelinestufe eingeführt, die eine Verbindung
zwischen entkoppelten Pipelinestufen in dem Kern zur
Verfügung stellt. Zusätzlich werden durch Bündelung der
Steuersignale und der Adreßinformationen in einem einzigen
Bündel, das die externe Pipelinestufe als Gruppe durchläuft,
die Synchronisationsanforderungen verringert oder beseitigt.
Vorteilhafte Weiterbildungen der Erfindung sind in den
Unteransprüchen gekennzeichnet.
Fig. 1 zeigt eine Blockdarstellung eines bekannten
Pipeline-Prozessorsystems.
Fig. 2 zeigt eine Blockdarstellung eines alternativen
bekannten Pipeline-Prozessorsystems.
Fig. 3 zeigt eine Blockdarstellung eines bevorzugten
Ausführungsbeispiels der Erfindung.
Fig. 4a-c zeigen Befehlszeitvorgaben in einer Pipe
line gemäß der Erfindung, bei welcher eine Befehlsheranhol
einheit eine Tiefe von 1, 2 bzw. 3 Zyklen hat.
Fig. 5 zeigt eine Blockdarstellung des Ausführungsbei
spiels gemäß Fig. 3, das ein Beispiel einer
Befehlsheranholeinheit benutzt.
Fig. 6 zeigt die Befehlszeitvorgaben in der Befehlsher
anholeinheit gemäß Fig. 5 unter bestimmten Anhaltebedingun
gen.
Fig. 3 zeigt ein System, das ein bevorzugtes Ausfüh
rungsbeispiel der Erfindung verwendet. Die Pipeline hat fünf
Stufen: Eine Befehlszeigererzeugungsstufe (IP) 52, eine IFU-
Stufe 59, eine Befehlsdekodier/Registersatz-Stufe (ID) 55,
eine Ausführungseinheitsstufe 56 und eine Rückschreibstufe
57. Sämtliche dieser Stufen mit Ausnahme der IFU 59 befinden
sich innerhalb des Prozessorkerns 50. Die IFU 59 ist außer
halb der Kerngrenzen 51, unterliegt bestimmten Schnittstel
lenanforderungen und kann hinsichtlich der Konstruktion und
insbesondere der Größe und Tiefe breit variieren. Bei diesem
Ausführungsbeispiel sind die Aktivitäten der IFU 59 für den
Kern 50 unsichtbar. Die IFU 59 muß einen Adreßzeiger und
Steuerinformationen aus der IP aufnehmen und die Befehle und
Steuerinformationen an die ID 55 zurückgeben, aber das, was
die IFU 57 zwischen dem Aufgeben und Rückgeben solcher Sig
nale tut, ist unabhängig von der Kernkonstruktion.
Die IP 52 erzeugt eine Adresse für einen gewünschten Be
fehl. Die IP ordnet diese Adresse und sämtliche für die wei
ter unten liegenden Pipelinestufen benötigten Steuerinforma
tionen als Bündel in einem Befehlszeiger-Latch-Speicher
(IPL) 53 an. Das Bündel von Informationen, die sowohl die
Befehlsadresse als auch sämtliche Steuerinformationen umfas
sen, wird entlang der Signalleitungen 63 über die Kernbe
grenzung 51 hinweg an die IFU 59 übermittelt. Die IFU 59 muß
das Bündel einbehalten, so daß es mit dem herangeholten Be
fehl die Pipeline hinab weitergeleitet werden kann. Dement
sprechend hängt die IFU an das Bündel den herangeholten Be
fehl an und leitet das mit dem Anhang versehene Bündel auf
die Leitungen 62 an das Befehlsheranhol-Latch (IFL) 54 wei
ter. Das mit Anhang versehene Bündel wird dann in die ID 55
latch-gespeichert. Die Funktion der ID 55, der Ausführungs
einheit 56 und der Rückschreibstufe 57 sind ähnlich dem
Stand der Technik. Da es jedoch keinen Pipeline-Sequenzer
gibt, ist die Steuerung verteilt und beruht auf den durch
die Pipeline hindurch als Teil des Bündels übermittelten
Steuersignalen. Da es darüber hinaus keine Gewissheit gibt,
daß die IFU den einem ausgegebenen Zeiger entsprechenden Be
fehl einen Zyklus später liefert, erwartet die ID derartige
Lieferungen nicht und hat daher keine Möglichkeit, die IP zu
veranlassen eine Adresse wiederholt auszugeben.
Im Falle eines Anhaltens in der ID 55 (oder weiter unten
in der Pipeline) hält die ID 55 zusätzlich das IFL 54 an und
stellt ein Anhaltesignale 60 an der Kernbegrenzung 51 zur
Verfügung. Was die IFU 59 mit dem Anhaltesignal 60 macht,
ist implementierungsspezifisch und unabhängig von den unter
ihr in der Pipeline befindlichen Stufen. Dies wird detail
lierter unten in Verbindung mit den Fig. 5 und 6 erör
tert. Die Neustartsignalleitung 58 benachrichtigt die IP 32
über ein Verzweigungsziel im Falle einer falsch vorhergesag
ten Verzweigung. Ein Neustartsignal wird in dem nächsten
Bündel ausgegeben, welches außerdem die Verzweigungsziel
adresse enthält. Wenn die IFU den Neustart empfängt, kann
sie in Abhängigkeit von ihrer Implementierung in der Lage
sein, unnötige Heranholoperationen zu vermeiden, indem sie
irgendwelche Operationen, die sich gerade im Ablauf befin
den, abbricht. Dies ist besonders vorteilhaft, wenn sich
stromabwärts Heranholoperationen zum Hauptspeicher 10 befin
den.
Da die ID 55 und die IP 52 entkoppelt worden sind und
sich sämtliche Steuerinformationen durch die IFU 59 hindurch
ausbreiten, werden die einer IFU veränderlichen Tiefe zuzu
schreibenden Synchronisationsanforderungen ausgeräumt. Da
rüber hinaus wird der beschriebene Kern 50 mit einer
beliebigen IFU einer großen Vielzahl von Größen und Tiefen
richtig funktionieren, ohne daß irgendeine Neukonstruktion
des Kerns 50 erforderlich wäre.
Die Fig. 4a-c zeigen, wie die Befehle durch die
Pipeline gemäß der Erfindung hindurchgeleitet werden, wobei
die IFU 1, 2 bzw. 3 Zyklen tief ist. In Fig. 4a gibt die IP
einen ersten Befehl in einem ersten Zyklus aus, und die IFU
gibt diesen Befehl in dem nächsten Zyklus aus, was so durch
die Pipeline hindurch fortgesetzt wird. Gemäß Fig. 4b gibt
die IP einen ersten Befehl in einem ersten Zyklus, einen
zweiten Befehl in einem zweiten Zyklus und einen dritten Be
fehl in dem dritten Zyklus aus. Die IFU jedoch gibt den ers
ten Befehl erst im dritten Zyklus aus. Somit gibt es beim
Start eine Verzögerung von zwei Zyklen, bevor die IFU mit
dem Ausgeben eines Befehls in jedem Zyklus beginnt. Fig. 4c
zeigt einen analogen Fall, bei welchem eine Verzögerung von
drei Zyklen auftritt, bevor die IFU beginnt, einen Befehl in
jedem Zyklus auszugeben. Die Fig. 4b und 4c setzen vor
aus, daß die IFU eine Tiefe von 2 bzw. 3 aufweist und daß
sie als. Pipeline strukturiert ist. Jedoch würde die Erfin
dung auch mit einer nicht in der Art einer Pipeline struktu
rierten IFU mit einer beliebigen Tiefe funktionieren. Dieses
würde selbstverständlich die Leistunge verschlechtern, da es
zwischen jedem aus der IFU ausgegebenen Befehl eine der
Tiefe der IFU entsprechende Verzögerung gäbe. Dennoch liegt
dies innerhalb des Umfangs und der Erwägungen der Erfindung.
Fig. 5 zeigt ein Beispiel der IFU 59, welche mit dem
Prozessorkern 50 gemäß Fig. 3 verwendet werden kann. In
Fig. 5 ist nur ein Abschnitt des Kerns 50 gezeigt. Die inter
nen Verbindungen sind die gleichen wie die in Fig. 3.
Die IFU 59 hat eine Tiefe von 2. Sie ist als Pipeline
mit einer ersten Stufe (FU1) 100 und einer zweiten Stufe
(FU2) 102 strukturiert. Das in der Mitte angeordnete Latch
101 ist zwischen die beiden Stufen der IFU 59 eingekoppelt.
Der Ausgang der FU2 102 ist mit einer Warteschlange 103
(FIFO) und einem Multiplexer 104 gekoppelt. Die Warte
schlange 103 wiederum ist ebenfalls mit dem Multiplexer 104
gekoppelt. Sofern die Warteschlange 103 freigegeben ist,
wird ein mit einem Anhang versehenes Bündel, das aus der FU2
102 ausgegeben wird, in der Warteschlange 103 gespeichert.
Sofern die Warteschlange 103 nicht freigegeben ist, geht das
von der FU2 102 ausgegebene mit einem Anhang versehene Bün
del durch den Multiplexer 104 hindurch in das IFL 54. Somit
können, da die Warteschlange 103, wie gezeigt ist, zwei
Speicherplätze aufweist, zwei Befehle durch die IFU 59 ver
arbeitet und in der Warteschlange 103 gespeichert werden,
während das IFL 54 angehalten ist.
Die gezeigte IFU 59 kann einen Vorteil aus dem entkop
pelten Anhaltemerkmal der Erfindung ziehen. Wenn die ID 55
ein Anhalten (Stall) 60 an das IFL 54 ausgibt, wird das An
haltesignal der IFU 59 zur Verfügung gestellt. Was die IFU
59 mit dem Anhaltesignal macht, ist implementierungsspezi
fisch. Dementsprechend kann, wenn die ID 55 das Anhaltesig
nal 60 ausgibt, das Signal verwendet werden, um die Warte
schlange 103 freizugeben, was dazu führt, daß die mit einem
Anhang versehenen Bündel darin gespeichert werden. Die IFU
59 kann auf der Grundlage des Speicherniveaus in der Warte
schlange 103 und auf der Grundlage anderer Faktoren bestim
men, ob das Anhaltesignal 61 ausgegeben werden sollte. Da
beispielsweise die IFU 59 die Menge von zwei Bündeln spei
chert, kann sie in der Lage sein, zusätzliche Bündel von dem
IPL 53 aufzunehmen, um mit der Verarbeitung dieser Bündel zu
beginnen. Die IFU 59 kann dann das IPL 53 unter Verwendung
der Signalleitung 61 anhalten, wenn ihre Möglichkeit zur
Aufnahme zusätzlicher Bündel aufgebraucht ist. Eine längere
Warteschlange würde die Verarbeitung weiterer Befehle ge
statten, bevor es erforderlich wäre, daß die IFU 59 das IFL
53 anhält. In jedem Fall wäre es nicht erforderlich, das
Haltesignal 61 sofort in dem gleichen Zyklus auszugeben, in
dem das Haltesignal 60 angelegt wird. Dies verringert oder
beseitigt den kritischen Zeitpfad, der zuvor derartigen Hal
tesignalen anhaftete, und gestattet die Möglichkeit einer
größeren Effektivität. Eine größere Effektivität wird er
reicht, wenn der IFU und der IP gestattet wird, die Verar
beitung fortzusetzen, was eine spätere Leerlaufzeit in der
ID verringert, weil während des Anhaltens beispielsweise ein
Heranholen aus dem Hauptspeicher begonnen oder sogar abge
schlossen werden konnte. Wenn man beispielsweise ein Anhal
ten von zwanzig Zyklen in der ID 55 annimmt und wenn man
weiterhin annimmt, daß der Befehl des nächsten an die IFU 59
ausgegebenen Bündels aus dem Speicher 10 herangeholt würde,
so würde während des Anhaltens eine beträchtliche Verarbei
tung durchgeführt werden, um diesen als nächstes benötigten
Befehl in dem Speicher zu gewinnen, sofern die IFU 59 dieses
nächste Bündel aufnimmt, bevor sie das IPL 53 anhält.
Fig. 6 zeigt ein Beispiel eines Befehlsflusses durch
die Pipeline des in Fig. 5 gezeigten Ausführungsbeispiels.
In dem ersten Zyklus wird ein erster Befehl I1 durch die IP
ausgegeben. Im Zyklus 2 hält sich I1 in dem IPL auf und wird
in FU1 latch-gespeichert. Im Zyklus 3 hält sich I1 im zen
tralen Latch auf und wird durch FU2 bearbeitet und ausgege
ben. Im. Zyklus 4 hält sich I1 in dem IFL auf, und I1 wird
durch die ID bearbeitet. Gemäß Fig. 6 wird angenommen, daß
ein Anhalten im Zyklus 4 durch die ID ausgegeben wurde. So
mit würde I2 dem gleichen Pfad wie I1 einen Zyklus nachfol
gen, I2 würde aber in die Warteschlange im Zyklus 5 eingege
ben werden, statt in das IFL. In ähnlicher Weise wird 13 in
die Warteschlange im Zyklus 6 eingegeben und verbraucht da
bei den zur Verfügung stehenden Speicherraum. Die IFU hält
IP im Zyklus 7 an, obwohl das IP-Anhalten im Zyklus 6 fal
lengelassen wurde. Somit verläßt in Zyklus 7 I2 die Warte
schlange an das IFL und die ID. Das Anhalten der IP setzt
sich bis zum Zyklus 8 fort, wodurch ein Entleeren der Warte
schlange in nachfolgenden Zyklen gestattet wird. Es sind
selbstverständlich andere Pipelineflüsse möglich, welche als
innerhalb des Umfangs der Erfindung liegend angesehen wer
den.
Da die Anhalte-Operationen entkoppelt sind, hat ein An
halten durch die ID in irgendeinem der Zyklen 1-3 keinen
Einfluß auf den gezeigten Fluß der Befehle. Wenn es bei
spielsweise erforderlich wäre, daß 13 aus dem externen Speicher
herangeholt wird, könnte darüber hinaus ein Anhalten
der IP in T4, T5 unabhängig von dem durch die ID initiierten
Anhalten initiiert werden. Die IFU setzt jedoch das Verar
beiten des Heranholens fort, so daß in Abhängigkeit von der
Länge des Anhaltens in der ID ein gültiger Befehl gewonnen
werden kann, bevor (oder kürzere Zeit nachdem) die ID ver
fügbar wird (wie oben erwähnt wurde).
In der vorstehenden Beschreibung wurde die Erfindung un
ter Bezugnahme auf spezielle Ausführungsbeispiele beschrie
ben. Es ist jedoch klar, daß verschiedene Modifikationen und
Änderungen daran vorgenommen werden können, ohne von dem
breiteren Geist und Umfang der Erfindung, wie er in den an
hängigen Ansprüchen angegeben ist, abzuweichen. Dementspre
chend sind die Beschreibung und die Zeichnungen eher in ei
nem veranschaulichenden Sinne als in einem einschränkenden
Sinne zu verstehen. Folglich sollte der Umfang der Erfindung
nur durch die anhängigen Ansprüche begrenzt sein.
Claims (9)
1. Prozessorkern (50) mit mehreren Pipelinestufen
(52, 55, 56, 57), umfassend:
eine Befehlszeigererzeugungsstufe (52), welche ein Bündel an eine externe Befehlsheranholeinheit (59) in einem ersten Zeitrahmen überträgt, wobei das Bündel für Pipeline- Operationen nachfolgender Stufen erforderliche Steuersignale und einen Befehlszeiger enthält; und
eine Befehlsdekodierstufe (55), welche das Bündel mit einem Anhang versehen von der externen Befehlsheranhol einheit (59) in einem zweiten Zeitrahmen empfängt, wobei der Anhang einen dem Befehlszeiger entsprechenden Befehl ent hält.
eine Befehlszeigererzeugungsstufe (52), welche ein Bündel an eine externe Befehlsheranholeinheit (59) in einem ersten Zeitrahmen überträgt, wobei das Bündel für Pipeline- Operationen nachfolgender Stufen erforderliche Steuersignale und einen Befehlszeiger enthält; und
eine Befehlsdekodierstufe (55), welche das Bündel mit einem Anhang versehen von der externen Befehlsheranhol einheit (59) in einem zweiten Zeitrahmen empfängt, wobei der Anhang einen dem Befehlszeiger entsprechenden Befehl ent hält.
2. Prozessorkern (50) nach Anspruch 1, gekennzeichnet
durch:
ein mit der Befehlszeigererzeugungsstufe (52) ge koppeltes erstes Latch (53), wobei das erste Latch (53) dem Latch-Speichern des Bündels dient und wobei das erste Latch (53) nicht auf ein Anhaltesignal aus der Befehlsdekodierstu fe (55) anspricht; und
ein mit der Befehlsdekodierstufe (55) gekoppeltes zweites Latch (54) zum Latch-Speichern des mit Anhang versehenen Bündels, wobei das zweite Latch (54) auf das Anhaltesignal anspricht.
ein mit der Befehlszeigererzeugungsstufe (52) ge koppeltes erstes Latch (53), wobei das erste Latch (53) dem Latch-Speichern des Bündels dient und wobei das erste Latch (53) nicht auf ein Anhaltesignal aus der Befehlsdekodierstu fe (55) anspricht; und
ein mit der Befehlsdekodierstufe (55) gekoppeltes zweites Latch (54) zum Latch-Speichern des mit Anhang versehenen Bündels, wobei das zweite Latch (54) auf das Anhaltesignal anspricht.
3. Prozessorkern (50) nach Anspruch 2, dadurch ge
kennzeichnet, daß die Befehlsdekodierstufe (55) ein Anhalte
signal in demselben Zeitrahmen an das zweite Latch (54)
übermittelt, wenn die Befehlsdekodierstufe (55) kein näch
stes mit Anhang versehenes Bündel in einem nächsten Zeitrah
men aufnehmen kann.
4. Prozessorkern (50) nach Anspruch 3, dadurch ge
kennzeichnet, daß das Anhaltesignal an die externe Befehlsheranholeinheit
(59) übermittelt wird und die externe Be
fehlsheranholeinheit (59) ein entsprechendes Anhaltesignal
an die Befehlszeigererzeugungsstufe (52) entweder in demsel
ben Zeitrahmen, einem nachfolgenden Zeitrahmen oder niemals
ausgibt.
5. Prozessorkern (50) nach Anspruch 4, dadurch ge
kennzeichnet, daß das Anhaltesignal an die externe Befehls
heranholeinheit (59) in dem Zyklus übermittelt wird, in wel
chem das zweite Latch (54) angehalten wird; und
wobei in Erwiderung des Anhaltesignals die externe Be fehlsheranholeinheit (59)
ein unabhängiges Anhaltesignal an das erste Latch (53) übermittelt, sofern die externe Befehlsheranholeinheit (59) in dem Zyklus kein weiteres Bündel aufnehmen kann;
das unabhängige Anhaltesignal in einem nachfolgen den Zyklus übermittelt, sofern die externe Befehlsheranhol einheit nicht mehr in der Lage ist, ein neues Bündel in dem nachfolgenden Zyklus aufzunehmen;
keine unabhängige Anhalteanforderung übermittelt, sofern kein Rückstau (back log) im Ergebnis des Anhaltens des zweiten Latch (54) in der externen Befehlsheranholein heit (59) vorhanden ist.
wobei in Erwiderung des Anhaltesignals die externe Be fehlsheranholeinheit (59)
ein unabhängiges Anhaltesignal an das erste Latch (53) übermittelt, sofern die externe Befehlsheranholeinheit (59) in dem Zyklus kein weiteres Bündel aufnehmen kann;
das unabhängige Anhaltesignal in einem nachfolgen den Zyklus übermittelt, sofern die externe Befehlsheranhol einheit nicht mehr in der Lage ist, ein neues Bündel in dem nachfolgenden Zyklus aufzunehmen;
keine unabhängige Anhalteanforderung übermittelt, sofern kein Rückstau (back log) im Ergebnis des Anhaltens des zweiten Latch (54) in der externen Befehlsheranholein heit (59) vorhanden ist.
6. Prozessorkern nach Anspruch 1, dadurch gekenn
zeichnet, daß die Steuersignale ein Neustart-Signal umfas
sen, wobei das Neustart-Signal bei einem Bündel eines neuen
Verzweigungspfades ausgegeben wird.
7. Verfahren zur Unterstützung einer Befehlsheranhol
einheit beliebiger Tiefe durch einen einzigen Prozessorkern,
umfassend die Schritte:
Bereitstellen eines Prozessorkerns mit mehreren Pipelinestufen, die eine erste Pipelinestufe zum Erzeugen eines Befehlszeigers und eine dritte Pipelinestufe zum Deko dieren von Befehlen umfassen, wobei die erste und die dritte Pipelinestufe nicht direkt im Prozessorkern miteinander ge koppelt sind;
Bündeln eines Befehlszeigers mit Pipelinesteuerin formationen in der ersten Pipelinestufe in einem Bündel;
Übermitteln des Bündels über eine Kernbegrenzung hinweg an die Befehlsheranholeinheit in einem ersten Zeit rahmen;
Anhängen eines dem Befehlszeiger entsprechenden Befehls an das Bündel in der Befehlsheranholeinheit; und
Weiterleiten des mit dem Befehl versehenen Bündels zurück über die Kernbegrenzung hinweg an die dritte Pipe linestufe in einem nachfolgenden Zeitrahmen.
Bereitstellen eines Prozessorkerns mit mehreren Pipelinestufen, die eine erste Pipelinestufe zum Erzeugen eines Befehlszeigers und eine dritte Pipelinestufe zum Deko dieren von Befehlen umfassen, wobei die erste und die dritte Pipelinestufe nicht direkt im Prozessorkern miteinander ge koppelt sind;
Bündeln eines Befehlszeigers mit Pipelinesteuerin formationen in der ersten Pipelinestufe in einem Bündel;
Übermitteln des Bündels über eine Kernbegrenzung hinweg an die Befehlsheranholeinheit in einem ersten Zeit rahmen;
Anhängen eines dem Befehlszeiger entsprechenden Befehls an das Bündel in der Befehlsheranholeinheit; und
Weiterleiten des mit dem Befehl versehenen Bündels zurück über die Kernbegrenzung hinweg an die dritte Pipe linestufe in einem nachfolgenden Zeitrahmen.
8. Verfahren nach Anspruch 7, dadurch gekennzeichnet,
daß ein Anhalten der dritten Pipelinestufe nicht direkt ein
Anhalten der ersten Pipelinestufe initiiert.
9. Verfahren nach Anspruch 8, dadurch gekennzeichnet,
daß die außerhalb des Kerns angeordnete Befehlsheranholein
heit bestimmt, ob die erste Pipelinestufe angehalten werden
soll.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/746,285 US5889975A (en) | 1996-11-07 | 1996-11-07 | Method and apparatus permitting the use of a pipe stage having an unknown depth with a single microprocessor core |
PCT/US1997/013504 WO1998020414A1 (en) | 1996-11-07 | 1997-07-30 | Method for supporting a variety of instruction fetch units in a pipeline with a single microprocessor core |
Publications (1)
Publication Number | Publication Date |
---|---|
DE19782105C2 true DE19782105C2 (de) | 2001-11-08 |
Family
ID=25000203
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19782105T Pending DE19782105T1 (de) | 1996-11-07 | 1997-07-30 | Verfahren zum Unterstützen einer Mehrzahl von Befehlsheranholeinheiten in einer Pipeline mit einem einzigen Mikroprozessorkern |
DE19782105A Expired - Fee Related DE19782105C2 (de) | 1996-11-07 | 1997-07-30 | Prozessorkern und Verfahren zum Unterstützen unterschiedlicher Befehlsheranholeinheiten in einer Pipeline |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19782105T Pending DE19782105T1 (de) | 1996-11-07 | 1997-07-30 | Verfahren zum Unterstützen einer Mehrzahl von Befehlsheranholeinheiten in einer Pipeline mit einem einzigen Mikroprozessorkern |
Country Status (6)
Country | Link |
---|---|
US (1) | US5889975A (de) |
AU (1) | AU3903097A (de) |
DE (2) | DE19782105T1 (de) |
GB (1) | GB2334122B (de) |
HK (1) | HK1022195A1 (de) |
WO (1) | WO1998020414A1 (de) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6237083B1 (en) | 1998-02-13 | 2001-05-22 | Advanced Micro Devices, Inc. | Microprocessor including multiple register files mapped to the same logical storage and inhibiting sychronization between the register files responsive to inclusion of an instruction in an instruction sequence |
US6591360B1 (en) | 2000-01-18 | 2003-07-08 | Hewlett-Packard Development Company | Local stall/hazard detect in superscalar, pipelined microprocessor |
US6587940B1 (en) | 2000-01-18 | 2003-07-01 | Hewlett-Packard Development Company | Local stall/hazard detect in superscalar, pipelined microprocessor to avoid re-read of register file |
US6553512B1 (en) * | 2000-02-16 | 2003-04-22 | Hewlett Packard Development Company, L.P. | Method and apparatus for resolving CPU deadlocks |
US20080222393A1 (en) * | 2007-03-09 | 2008-09-11 | On Demand Microelectronics | Method and arrangements for pipeline processing of instructions |
KR20190037534A (ko) * | 2017-09-29 | 2019-04-08 | 삼성전자주식회사 | 디스플레이장치 및 그 제어방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5487156A (en) * | 1989-12-15 | 1996-01-23 | Popescu; Valeri | Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched |
US5559975A (en) * | 1994-06-01 | 1996-09-24 | Advanced Micro Devices, Inc. | Program counter update mechanism |
US5564029A (en) * | 1992-06-08 | 1996-10-08 | Matsushita Electric Industrial Co., Ltd. | Pipeline processor which avoids resource conflicts |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5187800A (en) * | 1985-01-04 | 1993-02-16 | Sun Microsystems, Inc. | Asynchronous pipelined data processing system |
US5019967A (en) * | 1988-07-20 | 1991-05-28 | Digital Equipment Corporation | Pipeline bubble compression in a computer system |
US5490255A (en) * | 1991-12-26 | 1996-02-06 | Amdahl Corporation | Expedited execution of pipelined command having self-ordering operand processing requirements |
JPH06266556A (ja) * | 1993-03-15 | 1994-09-22 | Fujitsu Ltd | データ処理装置 |
US5666507A (en) * | 1993-12-29 | 1997-09-09 | Unisys Corporation | Pipelined microinstruction apparatus and methods with branch prediction and speculative state changing |
US5668984A (en) * | 1995-02-27 | 1997-09-16 | International Business Machines Corporation | Variable stage load path and method of operation |
-
1996
- 1996-11-07 US US08/746,285 patent/US5889975A/en not_active Expired - Fee Related
-
1997
- 1997-07-30 DE DE19782105T patent/DE19782105T1/de active Pending
- 1997-07-30 WO PCT/US1997/013504 patent/WO1998020414A1/en active Application Filing
- 1997-07-30 GB GB9910492A patent/GB2334122B/en not_active Expired - Fee Related
- 1997-07-30 DE DE19782105A patent/DE19782105C2/de not_active Expired - Fee Related
- 1997-07-30 AU AU39030/97A patent/AU3903097A/en not_active Abandoned
-
2000
- 2000-02-11 HK HK00100835A patent/HK1022195A1/xx not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5487156A (en) * | 1989-12-15 | 1996-01-23 | Popescu; Valeri | Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched |
US5564029A (en) * | 1992-06-08 | 1996-10-08 | Matsushita Electric Industrial Co., Ltd. | Pipeline processor which avoids resource conflicts |
US5559975A (en) * | 1994-06-01 | 1996-09-24 | Advanced Micro Devices, Inc. | Program counter update mechanism |
Also Published As
Publication number | Publication date |
---|---|
GB2334122A (en) | 1999-08-11 |
DE19782105T1 (de) | 1999-11-11 |
WO1998020414A1 (en) | 1998-05-14 |
AU3903097A (en) | 1998-05-29 |
HK1022195A1 (en) | 2000-07-28 |
US5889975A (en) | 1999-03-30 |
GB2334122B (en) | 2001-10-03 |
GB9910492D0 (en) | 1999-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3914265C2 (de) | ||
DE69929936T2 (de) | Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem | |
DE19983330B4 (de) | Computerprozessor mit einem Wiederholsystem mit einem Stufungsabschnitt zum getakteten Verzögern und Verfahren zum Verarbeiten eines Befehls in einem solchen Prozessor | |
DE2234867C2 (de) | Anordnung in einer Datenverarbeitungsanlage zum Steuern der Verarbeitung zweier voneinander unabhängiger Befehlsfolgen | |
DE19983687B4 (de) | Verarbeitung geordneter Datenanforderungen an einen Speicher | |
DE19983589B4 (de) | Hochfrequenz-Pipeline-Entkopplungswarteschlangengestaltung | |
DE69534113T2 (de) | Kompression der Befehlswörter eines Rechners | |
DE10085375B4 (de) | Verfahren und Einrichtung für einen pipeline-verschachtelten Multi-Thread-Befehlsdecodierer | |
DE60306937T2 (de) | Synchronisierung von pipelines in einem datenverarbeitungsgerät | |
DE19983517B4 (de) | Verfahren und Einrichtung zur Abzweigvorhersage unter Verwendung einer Abzweig-Vorhersagetabelle einer zweiten Stufe | |
DE2161886C2 (de) | Befehlsausführungseinheit in einer elektronischen Datenverarbeitungszentrale für die gleichzeitige Verarbeitung mehrerer Befehle | |
DE10084556B4 (de) | Optimierte Ausführung von statisch sehr wahrscheinlich vorhergesagten Verzweigungsbefehlen | |
DE1299146B (de) | Befehlssteuereinheit | |
DE3638572C2 (de) | ||
DE4207148A1 (de) | Superscalar-prozessor | |
DE4302495A1 (de) | ||
DE4301417A1 (de) | ||
DE2411963B2 (de) | Datenverarbeitungsanlage | |
DE19526008C2 (de) | Befehlsvorholeinheit für einen Computer | |
DE19983098B4 (de) | Mehrfach-Bitanzeige zur Behandlung von Schreib-nach-Schreib-Fehlern und zur Eliminierung von Bypass-Komparatoren | |
DE1499206C3 (de) | Rechenanlage | |
DE19782105C2 (de) | Prozessorkern und Verfahren zum Unterstützen unterschiedlicher Befehlsheranholeinheiten in einer Pipeline | |
DE3307194C2 (de) | ||
EP1117037B1 (de) | Datenverarbeitungsvorrichtung zum parallelen Verarbeiten von unabhängigen Prozessen (Threads) | |
DE10303053B4 (de) | Prozessorarchitektur mit einem Array von Pipelines und einer Registerdatei zum Vermeiden von Datenrisiken und Verfahren zur Datenweiterleitung in einer derartigen Prozessorarchitektur |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8607 | Notification of search results after publication | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |
Effective date: 20110201 |