DE4447238A1 - Einrichung und Verfahren zum Vorhersagen von Verzweigungsinstruktionen - Google Patents
Einrichung und Verfahren zum Vorhersagen von VerzweigungsinstruktionenInfo
- Publication number
- DE4447238A1 DE4447238A1 DE4447238A DE4447238A DE4447238A1 DE 4447238 A1 DE4447238 A1 DE 4447238A1 DE 4447238 A DE4447238 A DE 4447238A DE 4447238 A DE4447238 A DE 4447238A DE 4447238 A1 DE4447238 A1 DE 4447238A1
- Authority
- DE
- Germany
- Prior art keywords
- branch
- instruction
- target buffer
- entry
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
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
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
Description
Die Erfindung bezieht sich auf das Gebiet der Mikropro
zessorarchitektur. Insbesondere betrifft die Erfindung eine
Verzweigungsziel-Pufferschaltung, die Verzweigungsinstruktio
nen innerhalb eines Instruktionsstroms vorhersagt.
Früher verarbeiteten Mikroprozessoren grundsätzlich nur
eine Instruktion nach der anderen. Jede Instruktion wurde mit
Hilfe von vier aufeinanderfolgenden Stufen, dem Heranholen der
Instruktion, der Instruktionsdekodierung, der Ausführung und
dem Zurückschreiben des Ergebnisses, verarbeitet. Innerhalb
eines solchen Mikroprozessors führten verschiedene spezielle
Logikblöcke die jeweiligen unterschiedlichen Verarbeitungs
stufen aus. Bevor jeder Logikblock mit seiner Operation be
gann, wartete er, bis alle vorhergehenden Logikblöcke die
Operationen abgeschlossen hatten.
Um die Effizienz zu verbessern, sahen die Mikroprozessor-
Entwickler eine Überlappung der Operationen der logischen
Stufen zum Heranholen, Dekodieren, Ausführen und Zurück
schreiben vor, so daß der Mikroprozessor gleichzeitig an ver
schiedenen Instruktionen arbeiten konnte. Im Betrieb verar
beiten die logischen Stufen zum Heranholen, Dekodieren, Aus
führen und Zurückschreiben gleichzeitig verschiedene Instruk
tionen. Mit jedem Takt wird das Ergebnis jeder Verarbeitungs
stufe zu der folgenden Verarbeitungsstufe weitergeleitet. Mi
kroprozessoren, die die Technik des Überlappens der Heranhol-,
Dekodier-, Ausführ- und Zurückschreib-Stufen verwenden,
sind als "Pipeline"-Mikroprozessoren bekannt. Einige Mikro
prozessoren teilen darüber hinaus jede Verarbeitungsstufe in
Unterstufen ein, um einen zusätzlichen Leistungsgewinn zu
erzielen. Solche Prozessoren werden als "deeply-pipelined"
bezeichnet.
Damit ein Pipeline-Mikroprozessor effizient arbeiten
kann, muß eine Instruktionsheranholeinheit am Kopf der Pipe
line die Pipeline kontinuierlich mit einem Strom von Mikro
prozessorinstruktionen versorgen. Bedingte Verzweigungsin
struktionen innerhalb eines Instruktionsstroms hindern jedoch
die Instruktionsheranholeinheit am Heranholen nachfolgender
Instruktionen, bis die Verzweigungsbedingung vollständig ent
schieden ist. In Pipeline-Mikroprozessoren ist die Verzwei
gungsbedingung solange nicht vollständig entschieden, bis die
Verzweigungsinstruktion eine Instruktionsausführungsstufe na
he dem Ende der Mikroprozessor-Pipeline erreicht. Dementspre
chend wird die Instruktionsheranholeinheit zum Stehen ge
bracht, weil die Instruktionsheranholeinheit aufgrund der
unentschiedenen Verzweigungsbedingung nicht weiß, welche In
struktion als nächstes herangeholt werden soll.
Um dieses Problem zu mildern, verwenden viele Pipeline-
Mikroprozessoren Verzweigungsvorhersagemechanismen, die die
Existenz und das Ergebnis einer Verzweigungsinstruktion in
nerhalb eines Instruktionsstroms vorhersagen. Die Instrukti
onsheranholeinheit verwendet die Verzweigungsvorhersagen, um
nachfolgende Instruktionen heranzuholen. Beispielsweise führ
ten Yeh und Patt einen sehr genauen adaptiven Zwei-Ebenen-
Verzweigungsvorhersagemechanismus ein. (Siehe Tse Yu Yeh und
Yale N. Patt, Two-Level Adaptive Branch Prediction, The 24th
ACM/IEEE International Symposium and Workshop on Microarchi
tecture, November 1991, Seiten 51-61). Der Verzweigungsvor
hersagemechanismus von Yeh & Patt macht Verzweigungsvorhersa
gen auf der Grundlage von zwei Ebenen einer gesammelten Ver
zweigungsgeschichte.
Wenn ein Verzweigungsvorhersagemechanismus das Ergebnis
einer Verzweigungsinstruktion vorhersagt und der Mikroprozes
sor nachfolgende Instruktionen entlang des vorhergesagten
Pfades ausführt, wird dies als "spekulatives Ausführen" durch
den Mikroprozessor entlang des vorhergesagten Instruktions
pfades bezeichnet. Während des spekulativen Ausführens führt
der Mikroprozessor nützliche Verarbeitungen aus, sofern die
Verzweigungsinstruktion korrekt vorhergesagt wurde. Wenn je
doch der Verzweigungsvorhersagemechanismus die Verzweigungs
instruktion falsch vorausgesagt hat, dann führt der Mikropro
zessor spekulativ Instruktionen entlang des falschen Pfades
aus und vollbringt folglich nichts. Wenn der Mikroprozessor
die falsch vorhergesagte Verzweigung gegebenenfalls erfaßt,
so muß der Mikroprozessor sämtliche spekulativ ausgeführten
Instruktionen löschen (flushen) und die Ausführung an der
richtigen Adresse erneut starten.
Da der Mikroprozessor nichts vollbringt, wenn eine Ver
zweigungsinstruktion falsch vorhergesagt worden ist, ist es
wünschenswert, Verzweigungsinstruktionen genau vorherzusagen.
Dies trifft insbesondere für deeply-pipelined-Mikroprozesso
ren zu, bei denen eine lange Instruktionspipeline jedesmal
dann gelöscht (flushed) werden muß, wenn eine falsche Ver
zweigungsvorhersage gemacht wurde.
Es ist somit eine Aufgabe der vorliegenden Erfindung, ei
nen Verzweigungsvorhersagemechanismus zur Verfügung zu stel
len, der die Existenz von Verzweigungsinstruktionen innerhalb
eines Instruktionsstroms genau vorhersagt.
Es ist eine weitere Aufgabe der Erfindung, das Verzwei
gungsergebnis sämtlicher vorhergesagter Verzweigungsinstruk
tionen innerhalb des Instruktionsstroms genau vorherzusagen.
Diese Aufgabe wird durch eine Verzweigungsziel-Puffer
schaltung nach der Erfindung gelöst. Die erfindungsgemäße
Verzweigungsziel-Pufferschaltung weist einen Verzweigungs
ziel-Puffer-Cache-Speicher auf. Der Verzweigungsziel-Puffer-
Cache-Speicher speichert Informationen über zuvor ausgeführte
Verzweigungsbefehle. Die in dem Verzweigungsziel-Puffer-
Cache-Speicher gespeicherten Verzweigungsinformationen werden
von dem letzten Byte jeder Verzweigungsinstruktion adres
siert. Wenn die Instruktionsheranholeinheit einen Block von
Instruktionen heranholt, sendet sie den Instruktionszeiger zu
der Verzweigungsziel-Pufferschaltung. Auf der Grundlage die
ses Instruktionszeigers sieht die Verzweigungsziel-Puffer
schaltung in dem Verzweigungsziel-Puffer-Cache-Speicher nach,
ob irgendeine Instruktion in dem herangeholten Block eine
Verzweigungsinstruktion ist. Wenn die Verzweigungsziel-Puf
ferschaltung eine kommende Verzweigungsinstruktion in dem
Verzweigungsziel-Puffer-Cache-Speicher findet, informiert die
Verzweigungsziel-Pufferschaltung eine Instruktionsheranho
leinheit, die für das Heranholen zukünftiger Instruktionen
verantwortlich ist.
Die Erfindung gestattet die genaue Vorhersage einer Ver
zweigungsziel-Adresse für all die vorhergesagten Verzwei
gungsinstruktionen, die vorhergesagt genommen werden.
Im folgenden wird die Erfindung anhand von in der Zeich
nung dargestellten Ausführungsbeispielen näher beschrieben.
Die Aufgaben, Merkmale und Vorteile der Erfindung werden an
hand der folgenden detaillierten Beschreibung und der Zeich
nungen für den Fachmann deutlich.
In der Zeichnung zeigen:
Fig. 1 eine Blockdarstellung einer stark zeitverschach
telten Mikroprozessor-Pipeline zur Verarbeitung von
Mikroprozessor-Instruktionen;
Fig. 2 ein Blockschaltbild der verschiedenen Schaltungs
blöcke in einem Mikroprozessor, der eine stark
zeitverschachtelte Pipeline gem. Fig. 1 implemen
tiert;
Fig. 3 eine Darstellung eines Umordnungspuffers, der die
Ergebnisse der ausgeführten Mikrobefehle speichert;
Fig. 4 eine Darstellung eines Speicherabbilds, bei dem
der Adreßraum in 16-Byte-Speicherblöcke unterteilt
worden ist;
Fig. 5 eine Blockdarstellung, die veranschaulicht, wie
die Verzweigungsziel-Pufferschaltung mit anderen
logischen Schaltungen in dem in Fig. 2 dargestell
ten Mikroprozessor zusammenwirkt;
Fig. 6 eine Darstellung, die den Inhalt des Verzweigungs
ziel-Puffer-Cache-Speichers in der Verzweigungs
ziel-Pufferschaltung veranschaulicht;
Fig. 7 eine Darstellung, die den Inhalt jedes Verzwei
gungseintrags in dem Verzweigungsziel-Puffer-Cache-
Speicher veranschaulicht;
Fig. 8 ein Ablaufdiagramm, das die von der Verzweigungs
ziel-Pufferschaltung ausgeführten Schritte darlegt,
wenn diese in dem Verzweigungsziel-Puffer-Cache-
Speicher nachsieht, um eine Verzweigungsvorhersage
auszuführen;
Fig. 9a, wie die Verzweigungsziel-Pufferschaltung Adres
sen verwendet, wenn sie auf den Verzweigungsziel-
Puffer-Cache-Speicher zugreift;
Fig. 9b einen ersten Zerhackungs(hashing)-Mechanismus,
der 21-Bit-Tags zu zerhackten 9-Bit-Tags reduziert;
Fig. 9c einen zweiten Zerhackungs(hashing)-Mechanismus,
der 21-Bit-Tags zu zerhackten 9-Bit-Tags reduziert;
Fig. 10a eine 4-Bit-Verzweigungsgeschichte, die eine 16-
Bit-Eintragsmuster-Tabelle indiziert, wobei jeder
Eintrag ein 2-Bit-Zustandswert ist;
Fig. 10b ein Zustandsdiagramm, das die Zustandsänderungen
für jeden 2-Bit-Zustandswert in einer Verzweigungs
mustertabelle veranschaulicht;
Fig. 11 eine Darstellung, die den Inhalt der Verzwei
gungs-IP-Tabelle (BIT) in der Verzweigungsziel-Puf
ferschaltung veranschaulicht;
Fig. 12 ein Ablaufdiagramm, das die von der Verzweigungs
ziel-Pufferschaltung ausgeführten Schritte be
schreibt, wenn der Verzweigungsziel-Puffer-Cache-
Speicher aktualisiert wird;
Fig. 13 eine Darstellung, die veranschaulicht, wie die 3-
Zyklus-Aktualisierung des Verzweigungsziel-Puffer-
Cache-Speichers abgebrochen werden kann; und
Fig. 14 ein Ablaufdiagramm, das darlegt, wie die Verzwei
gungsziel-Pufferschaltung einen der Verzweigungs
einträge in einem Satz auswählt, wenn ein Verzwei
gungseintrag für eine neue Verzweigungsinstruktion
zugewiesen wird.
Es werden Verfahren und Einrichtungen zum Implementieren
einer Verzweigungsziel-Pufferschaltung in einem Computerpro
zessor beschrieben. In der folgenden Beschreibung werden zur
Veranschaulichung spezielle Bezeichnungen verwendet, um ein
besseres Verständnis der Erfindung zu erreichen. Für den
Fachmann ist es jedoch klar, daß diese speziellen Details
nicht erforderlich sind, um die Erfindung auszuführen. Dar
über hinaus werden bekannte Schaltungen und Einrichtungen im
Blockschaltbild gezeigt, um das Verständnis der Erfindung
nicht unnötig zu erschweren.
Bei einem stark zeitverschachtelten (deeply pipelined)
Prozessor sind die Hauptstufen eines Pipeline-Prozessors, wie
beispielsweise das Instruktionsheranholen, die Instruktions
dekodierung und die Instruktionsausführung, in verschiedene
unterschiedliche Unterstufen eingeteilt, so daß jede Verar
beitungsstufe als Pipeline ausgeführt ist. Dies führt zu ei
ner langen Instruktionspipeline. Fig. 1 veranschaulicht bei
spielsweise einen Satz von Pipeline-Stufen, die einen spezi
ellen stark zeitverschachtelten Prozessor definieren. In der
Instruktionspipeline gemäß Fig. 1 ist die Instruktionsverar
beitung in 11 Pipeline-Stufen eingeteilt.
Die ersten beiden in Fig. 1 gezeigten Pipeline-Stufen
werden zum Heranholen von Instruktionen verwendet. Die Pipe
line-Stufe 3 führt eine Instruktions-Längen-Dekodierung (ILD)
aus. Die einzelnen Mikroprozessorinstruktionen werden dann an
den Pipeline-Stufen 4 und 5 dekodiert. Die nächsten drei
Pipeline-Stufen (Registerumbenennung (Register Rename), Ein
planung (Scheduling) und Abfertigung (Dispatch)) bereiten die
Instruktionen für die Ausführung vor. Schließlich führt der
Mikroprozessor die Instruktionen an der Pipeline-Stufe 9 aus.
Die letzten beiden Pipeline-Stufen bringen die ausgeführten
Instruktionen zur Ruhe bzw. scheiden sie aus (retirement).
Um den Mikroprozessor effizient zu betreiben, müssen die
beiden Instruktionsheranhol-Pipeline-Stufen gemäß Fig. 1 kon
tinuierlich einen Strom von Mikroprozessor-Instruktionen her
anholen. Jede herangeholte Instruktion wird nicht vollständig
ausgeführt, bis sie die Pipeline-Stufe 9, die Ausführungsstu
fe, erreicht. Verzweigungsinstruktionen innerhalb des In
struktionsstromes weisen den Mikroprozessor oftmals an, die
Ausführung von Instruktionen an einer nicht-folgenden Adresse
zu beginnen, die Verzweigungszieladresse genannt wird. Wenn
ein Pipeline-Mikroprozessor auf eine Verzweigungsinstruktion
trifft, können die Instruktionsheranholstufen nicht sofort
auf die Verzweigung reagieren, da die Verzweigungsinstruktion
noch nicht dekodiert oder ausgeführt ist. Somit können Ver
zweigungsinstruktionen einen stark zeitverschachtelten Mikro
prozessor veranlassen, spekulativ entlang eines falschen Pfa
des auszuführen, so daß der Mikroprozessor später die speku
lativ ausgeführten Instruktionen löschen (flushen) und an der
richtigen Adresse erneut starten muß.
Um solche Situationen zu vermeiden, verwenden viele Pipe
line-Mikroprozessoren einen Verzweigungsvorhersagemechanis
mus, der Verzweigungsinstruktionen innerhalb des Instrukti
onsstroms vorhersagt. Darüber hinaus sagen solche Verzwei
gungsvorhersagemechanismen das Ergebnis und die Verzweigungs
zieladresse solcher Verzweigungsinstruktionen voraus.
Um Verzweigungsinstruktionen in einem Mikroprozessor mit
einer tiefen Pipeline, wie beispielsweise die in Fig. 1 ver
anschaulichte Pipeline, vorherzusagen, weist die Erfindung
eine Verzweigungsziel-Pufferschaltung auf, die die Existenz
von Verzweigungsinstruktionen innerhalb des Instruktions
stroms vorhersagt. Die erfindungsgemäße Verzweigungsziel-Puf
ferschaltung wird im Zusammenhang mit einem stark zeitver
schachtelten (deeply pipelined) superskalaren Mikroprozessor
beschrieben. Für den Fachmann ist es jedoch klar, daß einzel
ne Merkmale der beschriebenen Verzweigungsziel-Pufferschal
tung in anderen Mikroprozessoren mit unterschiedlichen Archi
tekturen implementiert werden können.
Fig. 2 veranschaulicht im Blockschaltbild die logischen
Hauptschaltungen eines stark zeitverschachtelten (deeply pi
pelined) superskalaren Mikroprozessors, der die tiefe Pipe
line gem. Fig. 1 implementiert. Es wird ein Überblick über
den in Fig. 2 dargestellten Mikroprozessor geben, an den sich
eine detaillierte Beschreibung der Verzweigungsziel-Puffer
schaltung 40 anschließt, die die Existenz von Verzweigungsin
struktionen innerhalb des Instruktionsstroms vorhersagt.
In dem Blockschaltbild gemäß Fig. 2 ist oben die Spei
cher- und Bus-Logik 35 gezeigt. Die Speicher- und Bus-Logik
35 ist für das Laden von Informationen in den Mikroprozessor
und die Ausgabe von Informationen aus dem Mikroprozessor ver
antwortlich. Die Speicher-und-Bus-Logik 35 versucht zunächst
üblicherweise von einem Hochgeschwindigkeits-Cache-Speicher
zu laden bzw. in diesen zu speichern. Wenn der Cache-Speicher
nicht verwendet werden kann (möglicherweise infolge eines
Cache-"Fehlversuchs"), greift die Speicher-und-Bus-Logik 35
statt dessen auf einen Hauptspeicher über einen externen Bus
zu.
Mit der Speicher-und-Bus-Logik 35 ist eine Instruktions
heranholeinheit 30 gekoppelt. Die Instruktionsheranholeinheit
30 ist für ein kontinuierliches Heranholen neuer Mikroprozes
sorinstruktionen (auch bekannt als Makroinstruktionen) sowie
von Operanden für die Ausführung durch den Mikroprozessor
verantwortlich. Die Instruktionsheranholeinheit 30 verwendet
einen Instruktionszeiger (IP - Instruction pointer), um die
aktuelle Heranholadresse zu halten. Die herangeholten Mikro
prozessorinstruktionen werden in den Kopf der Instruktions
pipeline eingegeben.
Einfache, unbedingte Verzweigungsinstruktionen innerhalb
des Instruktionsstroms hindern die Instruktionsheranholein
heit 30 am einfachen Heranholen von Instruktionen entlang ei
nes sequentiellen Pfades. Darüber hinaus hindern bedingte
Verzweigungsinstruktionen innerhalb des Instruktionsstroms
die Instruktionsheranholeinheit 30 am einfachen Heranholen
von Instruktionen entlang eines vorgegebenen Pfades, da die
Verzweigungsbedingung entschieden werden muß, um den Heran
holpfad zu bestimmen. Um Hilfe beim Heranholen der richtigen
Instruktionen zu erhalten, konsultiert die Instruktionsheran
holeinheit 30 eine Verzweigungsziel-Pufferschaltung 40. Die
Verzweigungsziel-Pufferschaltung 40 sagt die Existenz von
Verzweigungsinstruktionen innerhalb des Instruktionsstroms
und das Ergebnis jeder vorhergesagten Verzweigungsinstruktion
voraus. Die Verzweigungsziel-Pufferschaltung 40 leitet ihre
Verzweigungsvorhersageinformationen zu der Instruktionsheran
holeinheit 30 zurück, so daß die Instruktionsheranholeiheit
30 die richtigen Instruktionen heranholen kann.
Nachdem die Instruktionsheranholeinheit 30 eine Mikropro
zessorinstruktion herangeholt hat, leitet sie jede Mikropro
zessorinstruktion an einen Instruktionsdekodierer 60 weiter.
Wenn die Verzweigungsziel-Pufferschaltung 40 eine Verzwei
gungsvorhersage für eine Instruktion gemacht hat, leitet die
Instruktionsheranholeinheit 30 außerdem die Verzweigungsvor
hersage der Verzweigungsziel-Pufferschaltung über die In
struktion weiter.
Der Instruktionsdekodierer 60 ist verantwortlich für die
Bestimmung der Art der empfangenen Mikroprozessorinstruktion
und für ein Untersetzen der Mikroprozessorinstruktionen in
einen oder mehrere Mikrobefehle mit zugehörigen Mikrooperan
den. Der eine oder die mehreren Mikrobefehle, die einer Mi
kroprozessorinstruktion entsprechen, führen die Funktion der
entsprechenden Mikroprozessorinstruktion aus.
Wenn der Instruktionsdekodierer 60 feststellt, daß eine
empfangene Mikroprozessorinstruktion eine Verzweigungsin
struktion ist, leitet der Instruktionsdekodierer 60 die Ver
zweigungsinstruktion beschreibende Informationen an einen
Verzweigungsadreßberechner 50 für eine spezielle Behandlung
weiter. Wenn die Verzweigungsziel-Pufferschaltung 40 eine
Verzweigungsvorhersage für die Verzweigungsinstruktion ge
macht hat, überprüft der Verzweigungsadreßberechner 50 die
Verzweigungsvorhersage, sofern dies möglich ist, mit Hilfe
der von dem Instruktionsdekodierer 60 empfangenen Verzwei
gungsinformationen. Wenn die Verzweigungsziel-Pufferschaltung
40 die Verzweigungsinstruktion nicht vorhergesagt hat, macht
der Verzweigungsadreßberechner 50 eine Verzweigungsvorhersage
für die Verzweigungsinstruktion mit Hilfe der vom Instrukti
onsdekodierer 60 empfangenen Verzweigungsinformationen. Nach
dem der Verzweigungsadreßberechner 50 seine Bearbeitung der
Verzweigungsinstruktion beendet hat, gibt der Verzwei
gungsadreßberechner 50 die verarbeiteten Verzweigungsinforma
tionen an den Instruktionsdekodierer 60 zurück.
Nachdem der Instruktionsdekodierer 60 eine Mikroprozesso
rinstruktion in einen Satz von Mikrobefehlen untersetzt hat,
leitet der Instruktionsdekodierer 60 die Mikrobefehle und die
zugehörigen Operanden an einen Zuweiser 70 weiter. Der Zuwei
ser 70 weist die zur Ausführung jedes Mikrobefehls notwendi
gen Ressourcen des Prozessors zu.
Im vorliegenden Ausführungsbeispiel ist der Mikroprozes
sor ein superskalarer Prozessor, der die Mikrobefehle außer
halb der ursprünglichen Programmreihenfolge ausführen kann.
Jedoch müssen die ausgeführten Mikrobefehle gegebenenfalls in
der ursprünglichen Programmreihenfolge zur Ruhe gebracht oder
ausgeschieden (retired) werden, um das Computerprogramm rich
tig auszuführen. Um die ursprüngliche Programmreihenfolge zu
erhalten, verwendet der Mikroprozessor einen Umordnungspuffer
83, der die Mikrobefehlsergebnisdaten in der ursprünglichen
Programmreihenfolge speichert.
Fig. 3 veranschaulicht den Umordnungspuffer 83. Der
Umordnungspuffer 83 gemäß Fig. 3 weist einen umlaufenden Puf
fer bzw. Ringpuffer auf, der n Einträge enthält, wobei jeder
Eintrag verwendet wird, um die Ergebnisse der ausgeführten
Mikrobefehle zu speichern. Da jeder Eintrag in dem Umord
nungspuffer 83 ein Ziel zur Verfügung stellt, indem Mikrobe
fehlsergebnisdaten physisch eingegeben werden können, wird
jeder Umordnungspuffer 83 als physikalisches Ziel (pDsts -
physical Destination) bezeichnet. Die physikalischen Ziele
pDsts innerhalb des Umordnungspuffers 83 sind von 0 bis n-1
durchnumeriert. Wie in Fig. 3 gezeigt ist, weist jedes pDst
des Umordnungspuffers 83 Felder für ein Gültig-Bit, das die
Gültigkeit des Mikrobefehlsergebnisses anzeigt, ein Mikrobe
fehlsergebnis, einen Satz von durch den Mikrobefehl beein
flußten Flags, eine Maske für die Flags, einen die Bedeutung
der Ergebnisse anzeigenden Code und für Fehlerdaten auf.
Für jeden Mikrobefehl weist der Zuweiser 70 das nächste
verfügbare physikalische Ziel pDst in dem Umordnungspuffer 83
zum Speichern des Mikrobefehlsergebnisses zu. Indem die pDsts
in dem Umordnungspuffer 83 in der gleichen Reihenfolge zuge
wiesen werden, wie die Mikrobefehle empfangen werden, wird
die ursprüngliche Programmreihenfolge der Mikrobefehlsergeb
nisse aufrechterhalten.
Wenn der Zuweiser 70 ein pDst in dem Umordnungspuffer 83
für einen einer Verzweigungsinstruktion zugeordneten Verzwei
gungsmikrobefehl zuweist, wird außerdem ein übereinstimmender
Eintrag in einem Verzweigungs-IP-Tabelle 43 (BIT - Branch IP
Table) genannten Puffer, der in der Verzweigungsziel-Puffer
schaltung 40 lokalisiert ist, zugewiesen. Der Instruktionsde
kodierer 60 leitet der Verzweigungsziel-Pufferschaltung 40
dann die Adresse der Instruktion, die unmittelbar der Ver
zweigungsinstruktion folgt, und einen Prozessorzustandswert
zu. Die Verzweigungsziel-Pufferschaltung 40 schreibt die
Adresse der der Verzweigungsinstruktion unmittelbar folgenden
Instruktion und den Prozessorzustandswert in die Verzwei
gungs-IP-Tabelle (BIT) 43. Diese in der Verzweigungs-IP-Ta
belle (BIT) 43 gespeicherten Informationen werden später ver
wendet, nachdem die Verzweigungsausführungseinheit den Ver
zweigungsmikrobefehl ausgeführt hat.
Der Zuweiser 70 weist darüber hinaus einen Eintrag in der
Reservierungsstation 81 zu, die die Mikrobefehlsinstruktion
und die Operandendaten für jeden Mikrobefehl speichert. Jeder
Reservierungsstationseintrag speichert ein Gültig-Bit, das
die Gültigkeit des Eintrags der Reservierungsstation 81 an
zeigt, den Mikrobefehlsinstruktionscode, zwei Quelldatenfel
der, zwei Gültig-Bits für die Quelldatenfelder, zwei physika
lische Quellenfelder, die anzeigen, woher die Quelldaten kom
men sollen, wenn die Quelldaten nicht gültig sind, und ein
physikalisches Ziel des Ergebnisses des Mikrobefehls. Nachdem
der Zuweiser 70 einen Reservierungsstationseintrag und ein
pDst in dem Umordnungspuffer 83 zugewiesen hat, wartet jeder
Mikrobefehl an dem Eintrag der Reservierungsstation 81, bis
er ausgeführt wird.
Jeder Mikrobefehl in einem Eintrag der Reservierungssta
tion 81 bleibt in dem Reservierungsstationseintrag, bis sämt
liche zum Ausführen des Mikrobefehls erforderlichen Quellda
ten vorhanden sind und eine Ausführungseinheit zum Ausführen
des Mikrobefehls bereit ist. Wenn sämtliche zum Ausführen ei
nes Mikrobefehls erforderlichen Quelldaten bereit sind und
eine Ausführungseinheit verfügbar ist, fertigt die Reservie
rungsstation 81 den Mikrobefehl zur Ausführungseinheit in der
Ausführungsgruppe bzw. dem Ausführungscluster 90 ab. Im be
vorzugten Ausführungsbeispiel gibt es vier Ausführungseinhei
ten (EU1 91, EU2 92, EU3 93 und EU4 94) in der Ausführungslo
gikschaltung 90. Nachdem eine Ausführungseinheit einen Mikro
befehl ausgeführt hat, schreibt die Ausführungseinheit die
Ergebnisdaten, die Architektur-Flags und gegebenenfalls Feh
lerinformationen in den Umordnungspuffer 83 pDst, den der Zu
weiser 70 für den Mikrobefehl zugewiesen hat.
In dem bevorzugten Ausführungsbeispiel wird die Ausfüh
rungseinheit 92 als Verzweigungsausführungseinheit bezeich
net. Die Verzweigungsausführungseinheit 92 bestimmt das Ver
zweigungsentscheidungs-Endergebnis und die Verzweigungsziel-
Endadresse für jeden Verzweigungsmikrobefehl. Die Verzwei
gungsausführungseinheit 92 vergleicht das Verzweigungsender
gebnis und die Zielendadresse mit dem vorhergesagten Verzwei
gungsergebnis und der vorhergesagten Zieladresse. Wenn die
Verzweigungsausführungseinheit 92 eine falsch vorhergesagte
Verzweigung erfaßt, initiiert die Verzweigungsausführungsein
heit 92 einen Satz von Aktionen, die die falsche Verzwei
gungsvorhersage korrigieren. Somit weist die Verzweigungsaus
führungseinheit 92 die dritte Stufe des Verzweigungsentschei
dungsmechanismus auf.
Schließlich scheidet eine Ausscheidungsschaltung 85
(Retirement Circuit) die in den physikalischen Zielen pDst
des Umordnungspuffers 83 gespeicherten Ergebnisse von jedem
ausgeführten Mikrobefehl aus. Die Ausscheidungsschaltung 85
scheidet die pDst des Umordnungspuffers 83 aus, indem sie se
quentiell die pDst des Umordnungspuffers 83 in der gleichen
Reihenfolge durchgeht, in der der Zuweiser 70 die pDst zuge
wiesen hat. Die Ausscheidungsschaltung 85 scheidet die pDst
aus, indem sie die Mikrobefehlsergebnisse in eine Real-Regi
ster-Datei 84 (RRF - Real Register File) überträgt, die den
aktuellen verbindlichen Architekturzustand (current committed
architectural state) speichert. Da der Zuweiser 70 die pDst
des Umordnungspuffers 83 in der ursprünglichen Programmrei
henfolge zugewiesen hat und die Ausscheidungsschaltung 85 die
Mikrobefehlsergebnisse in dem pDst des Umordnungspuffers 83
in der gleichen Reihenfolge ausscheidet, wird die ursprüngli
che Programmreihenfolge aufrechterhalten, obwohl Mikrobefehle
außerhalb der ursprünglichen Programmreihenfolge ausgeführt
worden sein können.
Im folgenden wird wieder auf Fig. 3 Bezug genommen. Um
einen Mikrobefehl auszuscheiden, testet die Ausscheidungs
schaltung das Gültig-Bit 201 eines pDst-Eintrags des Umord
nungspuffers, um zu ermitteln, ob das pDst ein gültiges Er
gebnis eines ausgeführten Mikrobefehls enthält. Wenn das Gül
tig-Bit 201 für das pDst gesetzt ist, überprüft die Ausschei
dungsschaltung das Fehlerfeld 206 des pDst, um nachzusehen,
ob ein Fehler behandelt werden muß. Wenn der pDst-Eintrag des
Umordnungspuffers ein gültiges Ergebnis eines ausgeführten
Mikrobefehls enthält und kein Fehler-Problem auftritt, dann
wird das ausgeführte Mikrobefehlsergebnis verbindlich in den
permanenten Architekturzustand in der Real-Register-Datei
(RRF) 84 übertragen.
Wenn die Ausscheidungsschaltung 85 versucht, einen Ver
zweigungsmikrobefehl auszuscheiden, testet die Ausscheidungs
schaltung 85 das Fehlerfeld 206 des pDst-Eintrags, um nachzu
sehen, ob der Verzweigungsmikrobefehl falsch vorhergesagt
worden war. Wenn die Ausscheidungsschaltung 85 feststellt,
daß der Mikrobefehl falsch vorhergesagt wurde, löscht (flush)
die Ausscheidungsschaltung 85 den Rest der Instruktionen in
dem Umordnungspuffer 83, da diese Instruktionen nach einer
falschen Verzweigungsvorhersage herangeholt worden sind.
Wie in dem vorhergehenden Überblick über den Mikroprozes
sor beschrieben wurde, ist die Instruktionsheranholeinheit 30
für das Heranholen von Instruktionen in den Mikroprozessor
verantwortlich. Die Instruktionsheranholeinheit 30 des Mikro
prozessors gemäß Fig. 2 sieht den Speicheradreßraum als eine
Sammlung ausgerichteter 16-Byte-Blöcke, so daß die Instrukti
onsheranholeinheit Instruktionen und Operanden in 16-Byte-
Blöcken heranholt. Fig. 4 veranschaulicht ein Speicherabbild,
wobei der Adreßraum in ausgerichtete 16-Byte-Blöcken unter
teilt ist. Die Instruktionsheranholeinheit 30 verwendet einen
Instruktionszeiger, um die aktuelle Heranholadresse zu hal
ten. Wenn keine Verzweigungsinstruktionen innerhalb des Pro
gramms angetroffen werden, holt die Instruktionsheranholein
heit 30 Instruktionen und Operanden durch sequentielles Her
anholen benachbarter 16-Byte-Blöcke heran.
Um das Vorhandensein von Verzweigungsinstruktionen inner
halb des Instruktionsstroms vorherzusagen, verwendet der Mi
kroprozessor gemäß Fig. 2 die Verzweigungsziel-Pufferschal
tung 40. Die Verzweigungsziel-Pufferschaltung 40 hat einen
Verzweigungsziel-Puffer-Cache-Speicher 41, der Informationen
über Verzweigungsinformationen enthält, die der Mikroprozes
sor zuvor ausgeführt hat. Die Verzweigungsziel-Pufferschal
tung 40 verwendet die Informationen in dem Verzweigungsziel-
Puffer-Cache-Speicher 41, um Verzweigungsinstruktionen zu er
kennen und das Ergebnis der Verzweigungsinstruktion vorherzu
sagen.
Die Verzweigungsziel-Pufferschaltung 40 hält außerdem ei
ne Verzweigungs-IP-Tabelle (BIT) 43 aufrecht, die Informatio
nen über Verzweigungsinstruktionen enthält, die gegenwärtig
innerhalb des Mikroprozessors sind. Die Informationen in der
Verzweigungs-IP-Tabelle 43 werden verwendet, um falsch vor
hergesagte Verzweigungsinstruktionen zu korrigieren und den
Verzweigungsziel-Puffer-Cache-Speicher 41 zu halten, nachdem
die Verzweigungsinstruktionen ausgeführt worden sind.
Fig. 5 ist eine Blockdarstellung, die allgemein angibt,
wie die Verzweigungsziel-Pufferschaltung 40 mit anderen logi
schen Hauptschaltungen in dem Mikroprozessor gemäß Fig. 2 zu
sammenwirkt. Die Instruktionsheranholeinheit 30 fordert In
formationen über aufkommende Verzweigungsinstruktionen von
der Verzweigungsziel-Pufferschaltung 40 an, indem sie einen
Instruktionszeiger zu der Verzweigungsziel-Pufferschaltung 40
weiterleitet. Der zu der Verzweigungsziel-Pufferschaltung 40
weitergeleitete Instruktionszeiger zeigt auf die Speicher
blöcke, die aktuell von der Instruktionsheranholeinheit 30
herangeholt werden.
Die Verzweigungsziel-Pufferschaltung 40 durchsucht den
Verzweigungsziel-Puffer-Cache-Speicher 41 nach Informationen
über die Verzweigungsinstruktionen in dem Speicherblock, die
gegenwärtig von der Instruktionsheranholeinheit 30 herange
holt werden. Die Verzweigungsziel-Pufferschaltung 40 macht
eine Verzweigungsvorhersage für jede in dem Speicherblock an
geordnete, gegenwärtig von der Instruktionsheranholeinheit 30
herangeholte Verzweigungsinstruktion, die in dem Verzwei
gungsziel-Puffer-Cache-Speicher 41 gefunden wurde. Die Ver
zweigungsziel-Pufferschaltung 40 leitet die Verzweigungsvor
hersageinformationen zu der Instruktionsheranholeinheit 30
weiter, wodurch die Instruktionsheranholeinheit über gegen
wärtig von ihr herangeholte Verzweigungsinstruktionen in dem
Speicherblock informiert wird.
Um den Verzweigungsziel-Puffer-Cache-Speicher 41 und die
Verzweigungs-IP-Tabelle 43 aufrechtzuerhalten, empfängt die
Verzweigungsziel-Pufferschaltung 40 Informationen von ver
schiedenen anderen Logikschaltungen in dem Mikroprozessor.
Wie in Fig. 5 gezeigt ist, sendet der Instruktionsdeko
dierer 60 Verzweigungsinformationen zur Verzweigungsziel-Puf
ferschaltung 40. Die von dem Instruktionsdekodierer 60 gesen
deten Verzweigungsinformationen enthalten die Adresse der der
Verzweigungsinstruktion unmittelbar folgenden Instruktion.
Die Verzweigungsziel-Pufferschaltung 40 speichert die Adresse
der der Verzweigungsinstruktion unmittelbar folgenden In
struktion in die Verzweigungs-IP-Tabelle 43 für eine spätere
Verwendung.
Der Verzweigungsadreßberechner 50 macht von der Verzwei
gungsziel-Pufferschaltung 40 gemachte Verzweigungsvorhersagen
gültig. Wenn der Verzweigungsadreßberechner 50 feststellt,
daß die Verzweigungsziel-Pufferschaltung 40 eine Verzwei
gungsvorhersage für eine nicht existente Verzweigung gemacht
hat, instruiert der Verzweigungsadreßberechner 50 die Ver
zweigungsziel-Pufferschaltung 40, einen die nicht existente
Verzweigungsinstruktion enthaltenden Eintrag in dem Verzwei
gungsziel-Puffer-Cache-Speicher 41 zurückzunehmen
(deallocate).
Der Zuweiser 70 ist verantwortlich für die Zuweisung ei
nes Eintrags des Umordnungspuffers 83 für jeden Mikrobefehl.
Wenn der Zuweiser 70 einen pDst-Eintrag in dem Umordnungspuf
fer 83 für einen Verzweigungsmikrobefehl zuweist, liefert der
Zuweiser 70 die pDst-Eintragsnummer der Verzweigungsziel-Puf
ferschaltung 40. Die Verzweigungsziel-Pufferschaltung 40 ver
wendet die pDst-Eintragsnummer, um einen entsprechenden Ein
trag in der Verzweigungs-IP-Tabelle 43 zuzuweisen. Der ent
sprechende Eintrag in der Verzweigungs-IP-Tabelle 43 spei
chert Informationen über den Verzweigungsmikrobefehl, während
der Verzweigungsmikrobefehl innerhalb des Mikroprozessors
ist.
Die Reservierungsstation 81 speichert Mikrobefehle, die
auf eine Ausführung warten, und fertigt bereite Mikrobefehle
zu den Ausführungseinheiten in dem Mikroprozessor ab. Wenn
die Reservierungsstation 81 einen Verzweigungsmikrobefehl zu
der Verzweigungsausführungseinheit 92 abfertigt, informiert
die Reservierungsstation 81 die Verzweigungsziel-Pufferschal
tung 40 über den pDst-Eintrag für den Verzweigungsmikrobe
fehl. Die Verzweigungsziel-Pufferschaltung 40 antwortet, in
dem sie den entsprechenden Eintrag für die Verzweigungsin
struktion in der Verzweigungs-IP-Tabelle 43 ausliest. Die aus
dem Eintrag in der Verzweigungs-IP-Tabelle 43 ausgelesenen
Informationen werden verwendet, nachdem der Verzweigungsmi
krobefehl ausgeführt wird.
Die Verzweigungsausführungseinheit 92 führt Verzweigungs
mikrobefehle für den Mikroprozessor aus. Wenn die Verzwei
gungsausführungseinheit 92 einen Verzweigungsmikrobefehl aus
führt, liefert sie die Verzweigungsentscheidungsinformationen
zu der Verzweigungsziel-Pufferschaltung 40. Die Verzweigungs
ziel-Pufferschaltung 40 verwendet die Verzweigungsentschei
dungsinformationen, um einen vorhandenen Eintrag in dem Ver
zweigungsziel-Puffer-Cache-Speicher 41 zu aktualisieren oder
einen neuen Eintrag in dem Verzweigungsziel-Puffer-Cache-
Speicher 41 zuzuweisen.
Die Verzweigungsziel-Pufferschaltung 40 hält einen Ver
zweigungsziel-Puffer-Cache-Speicher 41, um das Vorhandensein
von Verzweigungsinstruktionen innerhalb eines Instruktions
stroms und das Ergebnis jener Verzweigungsinstruktionen vor
herzusagen. Der Verzweigungsziel-Puffer-Cache-Speicher 41
enthält Informationen über Verzweigungsinstruktionen, die der
Mikroprozessor zuvor ausgeführt hat. Fig. 6 veranschaulicht
die Organisation des Verzweigungsziel-Puffer-Cache-Speichers
41.
Der Verzweigungsziel-Puffer-Cache-Speicher 41 ist ein
Satz-assoziativer Cache-Speicher, der Informationen über in
dem Hauptspeicher angeordnete Verzweigungsinstruktionen spei
chert. In dem bevorzugten Ausführungsbeispiel speichert der
Verzweigungsziel-Puffer-Cache-Speicher 41 Informationen über
Verzweigungsinstruktionen in 128 einzelnen "Sätzen" von Ver
zweigungsinformationen. Jeder Satz von Verzweigungsinforma
tionen in dem Verzweigungsziel-Puffer-Cache-Speicher 41 ent
hält vier Verzweigungseinträge, wobei jeder Verzweigungsein
trag Informationen über eine einzelne von dem Mikroprozessor
zuvor ausgeführte Verzweigungsinstruktion enthält.
Jeder Satz von Verzweigungseinträgen innerhalb des Ver
zweigungsziel-Puffer-Cache-Speichers 41 enthält außerdem eine
Verzweigungsmustertabelle 421 und ein Paar von Pseudo-Am-
Längsten-Unersetzt-Bits 420 (PLRR-Bits - Pseudo-Least Recent
ly Replaced bits). Die Verzweigungsziel-Pufferschaltung 40
verwendet die Verzweigungsmustertabelle 421 zum Vorhersagen
des Ergebnisses bedingter Verzweigungsinstruktionen in dem
Satz von Verzweigungseinträgen. Die Verzweigungsziel-Puffer
schaltung 40 verwendet die Pseudo-Am-Längsten-Uner
setzt(PLRR)-Bits 420, um einen Verzweigungseintrag in dem
Satz auszuwählen, wenn Informationen über eine neue Verzwei
gung in den Satz von Verzweigungseinträgen geschrieben werden
sollen.
Fig. 7 veranschaulicht die in jedem Verzweigungseintrag
eines Verzweigungsziel-Puffer-Cache-Speicher- Satzes gespei
cherten Verzweigungsinformationen. Wie in Fig. 7 veranschau
licht ist, enthält jeder Verzweigungseintrag eine zerhackte-
Tag-Adresse 401 (hashed tag address), ein Block-Offset 402,
eine Verzweigungsart 403, eine wahre Verzweigungsgeschichte
404, eine spekulative Verzweigungsgeschichte 405, ein Speku
lationsbit 406, ein Gültig-Bit 407 und eine Verzweigungszie
ladresse 408.
Die zerhackte-Tag-Adresse 401 und das Block-Offset 402
werden verwendet, um eine Speicheradresse der dem Verzwei
gungseintrag zugeordneten Verzweigungsinstruktion zu identi
fizieren. Die zerhackte-Tag-Adresse 401 ist eine komprimierte
9-Bit-Repräsentation der 21 höchstwertigen Bits der Adresse
der Verzweigungsinstruktion.
Der Block-Offsetwert 402 zeigt das Byte-Offset innerhalb
der 16-Byte-Speicherblock-Adresse des letzten Bytes der Ver
zweigungsinstruktion an. Verzweigungsinstruktionen werden in
diziert durch das letzte Byte, so daß jedes Byte einer Ver
zweigungsinstruktion, das eine Blockgrenze überquert, heran
geholt wird, bevor eine Verzweigungsvorhersage gemacht wird.
Im folgenden wird wieder auf die Speicherabbildung gemäß Fig.
4 Bezug genommen. Eine vier Byte lange Verzweigungsinstrukti
on ist beispielsweise an der hexadezimalen Adresse 1E bis 21
dargestellt. Nachdem sie ausgeführt worden ist, wird die 4-
Byte-Verzweigungsinstruktion in einem Eintrag in dem Verzwei
gungsziel-Puffer-Cache-Speicher 41 angeordnet und ihr die he
xadezimale Adresse 21 zugeordnet. Folglich wird das Block-
Offset 402 in dem Verzweigungseintrag für die Verzweigungs
instruktion auf 1 gesetzt.
Wenn statt dessen die Verzweigungsinstruktion von dem er
sten Byte (hexadezimale Adresse 1E) indiziert würde, würde
die Verzweigungsziel-Pufferschaltung 40 die Instruktionsher
anholeinheit 30 anweisen, von der Verzweigungszieladresse
heranzuholen, bevor sämtliche die Verzweigungsinstruktion
enthaltenen Bytes herangeholt worden sind. Somit wären der
Instruktionsdekodierer 60 und die Verzweigungsausführungsein
heit 92 nicht in der Lage, die Verzweigungsinstruktion zu
überprüfen, da nicht die gesamte Verzweigungsinstruktion her
angeholt worden wäre.
Das Verzweigungstypfeld 403 in jedem Verzweigungseintrag
gibt an, welche Art von Verzweigungsinstruktion der Verzwei
gungseintrag identifiziert. Die folgende Tabelle 1 listet die
verschiedenen Arten von Verzweigungsinstruktionen auf.
Verzweigungsart-Code | |
Verzweigungsart | |
00 | |
Bedingte Verzweigung | |
01 | Rückkehr von einer Subroutine |
10 | Aufruf einer Subroutine |
11 | Unbedingte Verzweigung |
Die Verzweigungsziel-Pufferschaltung 40 verwendet das
Verzweigungsart-Feld 403, wenn sie eine Verzweigungsvorhersa
ge macht, da verschiedene Verzweigungsvorhersagemechanismen
für verschiedene Arten von Verzweigungsinstruktionen verwen
det werden. Beispielsweise sagt die Verzweigungsziel-Puffer
schaltung 40 das Ergebnis einer bedingten Verzweigungsin
struktion auf der Grundlage der Geschichte der Verzweigungs
instruktion voraus, aber die Verzweigungsziel-Pufferschaltung
40 sagt eine unbedingte Verzweigungsinstruktion stets so vor
aus, wie sie genommen wurde.
Das Feld 404 für die wahre Verzweigungsgeschichte in Fig.
7 hält die Geschichte der Vornahme oder Nicht-Vornahme der
Verzweigungsinstruktion, wie sie von der Verzweigungsausfüh
rungseinheit 92 festgestellt wurde. Das Feld 404 der wahren
Verzweigungsgeschichte speichert die Verzweigungsgeschichte
für die letzten vier Ausführungen der Verzweigungsinstruktion
mit Hilfe von vier Bits, wobei "0" eine Nicht-Vornahme der
Verzweigung und "1" eine Vornahme der Verzweigung kennzeich
net. Die vier Bits der Vornahme/Nicht-Vornahme-Geschichte
werden verwendet, um in eine Musterzustandstabelle zu in
dexieren, wenn eine Verzweigungsvorhersage berechnet wird.
Diese basiert auf dem Verzweigungsergebnis bei der Verzwei
gungsausführung.
Das Spekulationsbit 406 und das Feld 405 der spekulativen
Verzweigungsgeschichte werden verwendet, um Vorhersagen für
Verzweigungsinstruktionen zu machen, ohne auf eine Ausführung
der Verzweigungsinstruktionen zu warten. Das Feld 405 der
spekulativen Verzweigungsgeschichte in Fig. 7 hält die
"spekulative" Geschichte der Vornahme oder Nicht-Vornahme der
Verzweigungsinstruktion für die letzten vier von der Verzwei
gungsziel-Pufferschaltung 40 gemachten Vorhersagen. Das Spe
kulationsbit 406 ist gesetzt, wenn das Feld 405 der spekula
tiven Verzweigungsgeschichte eine gültige spekulative Ge
schichte enthält. Die vier Bits der spekulativen Verzwei
gungsgeschichte 405 werden verwendet, um in die Musterzu
standstabelle zu indexieren, wenn eine Verzweigungsvorhersage
berechnet wird und das Spekulationsbit 406 gesetzt ist. Für
weitere Informationen über die Vorhersage von Verzweigungsin
struktionen mit Hilfe der spekulativen Verzweigungsgeschichte
wird auf die ebenfalls anhängige US-Patentanmeldung
"Speculative History Mechanism in a Branch Target Buffer",
U.S.S.N. 08/062,012, angemeldet am 14. Mai 1993, verwiesen.
Das Gültig-Bit 407 zeigt an, ob der Verzweigungseintrag
gültige Verzweigungsinformationen enthält. Wenn die Verzwei
gungsziel-Pufferschaltung 40 einen Verzweigungseintrag zu
weist und füllt, setzt die Verzweigungsziel-Pufferschaltung
40 das Gültig-Bit 407 für den Eintrag, wodurch angezeigt
wird, daß der Eintrag gültige Verzweigungsinformationen ent
hält. Später, wenn der Verzweigungsadreßberechner 50 den Ver
zweigungseintrag zurücknimmt (deallocates), wird das Gültig-
Bit 407 für diesen Eintrag gelöscht.
Das Verzweigungsziel-Adreßfeld 408 gemäß Fig. 7 speichert
die Verzweigungszieladresse für die Verzweigungsinstruktion
mit Ausnahme der Verzweigungsinstruktionen, die Subroutinen-
Rückkehrinstruktionen sind. Wenn die Verzweigungsziel-Puf
ferschaltung 40 die dem vorgenommenen Verzweigungseintrag
zugeordnete Verzweigungsinstruktion vorhersagt, kann die
Adresse in dem Verzweigungsziel-Adreßfeld 408 zu der In
struktionsheranholeinheit 30 weitergeleitet werden, um die
Instruktionsheranholeinheit 30 darüber zu informieren, woher
die nächsten Instruktionen geholt werden sollen. (Jedoch wird
das Verzweigungsziel-Adreßfeld 408 nicht immer verwendet, um
die Zieladresse vorherzusagen.) Die oberen 28 Bits des Ver
zweigungsziel-Adreßfelds 408 wählen einen 16-Byte-Block aus,
den die Instruktionsheranholeinheit 30 heranholen sollte,
wenn die Verzweigung vorgenommen wird. Die untersten vier
Bits des Verzweigungsziel-Adreßfelds 408 wählen das Byte in
dem herangeholten Block aus, an dem der Mikroprozessor die
Ausführung wieder aufnehmen soll.
Die Instruktionsheranholeinheit 30 fordert Informationen
über aufkommende Verzweigungsinstruktionen an, indem sie ei
nen Instruktionszeiger zu der Verzweigungsziel-Pufferschal
tung 40 weiterleitet. Fig. 8 veranschaulicht die Schritte,
die von der Verzweigungsziel-Pufferschaltung 40 ausgeführt
werden, wenn sie in dem Verzweigungsziel-Puffer-Cache-Spei
cher 41 nach aufkommenden Verzweigungsinstruktionen sucht. Am
Schritt 101 empfängt die Verzweigungsziel-Pufferschaltung 40
den Instruktionszeiger von der Instruktionsheranholeinheit
30.
Am Schritt 102 liest die Verzweigungsziel-Pufferschaltung
40 mit Hilfe des Instruktionszeigers einen Satz von vier Ver
zweigungseinträgen aus dem Verzweigungsziel-Puffer-Cache-
Speicher 41 aus. Um klarzustellen, wie die Verzweigungsziel-
Pufferschaltung 40 den Instruktionszeiger verwendet, veran
schaulicht Fig. 9a die einzelnen Bits der 32-Bit-Instrukti
onszeigeradresse, wie sie von dem Verzweigungsziel-Puffer-
Cache-Speicher 41 verwendet wird, um die Adresse einer Ver
zweigungsinstruktion zu identifizieren. Die oberen 28 Bits
der Adresse identifizieren einen Speicherblock. Die vier am
geringsten bewerteten Bits einer Adresse kennzeichnen eine
Offset-Stelle innerhalb eines 16-Byte-Blocks. In dem Verzwei
gungsziel-Puffer-Cache-Speicher 41 enthält jeder Eintrag ein
Block-Offset 402, das das letzte Byte der zugehörigen Ver
zweigungsinstruktion innerhalb eines 16-Byte-Blocks lokali
siert.
Die oberen 28 Bits einer einen Speicherblock identifizie
renden Adresse können in zwei separate Abschnitte eingeteilt
werden. Die höchsten 21 Bits (Bits 11 bis 31) repräsentieren
ein Tag, das jedem Verzweigungseintrag in dem Verzweigungs
ziel-Puffer-Cache-Speicher 41 zugeordnet ist. Die verbleiben
den 7 Bits (Bits 4 bis 10) sind die "Satz-Bits", die einen
Satz von Verzweigungseinträgen innerhalb des Verzweigungs
ziel-Puffer-Cache-Speichers 41 identifizieren.
Die Verzweigungsziel-Pufferschaltung 40 indiziert in den
Verzweigungsziel-Puffer-Cache-Speicher 41 mit Hilfe der sie
ben Satz-Bits (Bits 4 bis 10) des Instruktionszeigers, um ei
nen Satz von Verzweigungseinträgen auszuwählen. Die Verzwei
gungsziel-Pufferschaltung 40 liest dann den ausgewählten Satz
von Verzweigungseinträgen aus.
Am Schritt 103 überprüft die Verzweigungsziel-Puffer
schaltung 40 die vier Verzweigungseinträge innerhalb des aus
gewählten Satzes, um festzustellen, ob irgendeiner der vier
Verzweigungseinträge Informationen über eine Verzweigungsin
struktion in dem 16-Byte-Block enthält, auf die der Instruk
tionszeiger zeigt. Insbesondere vergleicht die Verzweigungs
ziel-Pufferschaltung 40 eine komprimierte 9-Bit-Version der
oberen 21 Bits der Instruktionszeigeradresse mit dem zerhack
ten Tag-Feld 401 innerhalb jedes Verzweigungseintrags, um
Verzweigungseinträge zu eliminieren, die nicht übereinstim
men.
Um die zum Aufbau des Verzweigungsziel-Puffer-Cache-Spei
chers 41 erforderliche Fläche zu reduzieren, speichert jeder
Verzweigungseintrag in dem Verzweigungsziel-Puffer-Cache-
Speicher 41 eine komprimierte Tag-Adresse. In dem bevorzugten
Ausführungsbeispiel läuft der vollständige 21-Bit-Tag-Wert
durch einen Zerhackungs(Hash)mechanismus, der das Tag auf
neun Bits reduziert. Bei der Kompression der Tag-Adresse ge
hen einige Informationen verloren und können so eine Verfäl
schung (aliasing) bewirken. Das von dem komprimierten Tag er
zeugte Aliasing bewirkt möglicherweise falsche Verzweigungs
vorhersagen. Jedoch werden falsche Verzweigungsvorhersagen
gegebenenfalls von dem Verzweigungadreßberechner 50 oder Ver
zweigungsausführungseinheit 92 in dem Mikroprozessor geheilt.
Die Verzweigungsziel-Puffer-Logik 40 verwendet zwei ver
schiedene Zerhackungsmechanismen, um die Tag-Adresse zu kom
primieren. Beide Zerhackungsmechanismen reduzieren die voll
ständige 21-Bit-Tag-Adresse zu einem 9-Bit-Zerhackungs-Tag.
Ein maschinenspezifisches Register (MSR) des Mikroprozessors
wählt eine der beiden Arten des Zerhackungsmechanismus aus.
Fig. 9b veranschaulicht die Arbeitsweise des ersten Zer
hackungsmechanismus. Der erste Zerhackungsmechanismus verket
tet die zwei am höchsten bewerteten Bits (Bits 30 und 31) der
vollständigen Tag-Adresse mit den sieben am geringsten bewer
teten Bits (Bits 11 bis 17), um ein 9-Bit-Zerhackungs-Tag zu
erstellen. Dieser erste Zerhackungsmechanismus arbeitet gut
bei Programmen, die üblicherweise lokal springen, so daß die
unteren sieben Bits hilfreich sind, die aber gelegentlich zu
einer weit entfernten Betriebssystemroutine springen, so daß
die zwei am höchsten bewerteten Bits nützlich sind.
Fig. 9c veranschaulicht die Arbeitsweise des zweiten Zer
hackungsmechanismus. Der zweite Zerhackungsmechanismus ver
kettet die zwei am höchsten bewerteten Bits (Bits 30 und 31)
der vollständigen Tag-Adresse, eine 4-Bit-Exklusiv-ODER
(XOR)-Kombination der nächsten 16 Bits der vollständigen Tag-
Adresse (Bits 14 bis 29) und die drei am geringsten bewerte
ten Bits (Bits 11 bis 13) der vollständigen Tag-Adresse, um
ein verkürztes 9-Bit-Tag zu schaffen. Die 4-Bit-Exklusiv-
ODER-Kombination wird erzeugt, indem die mittleren 16 Bits
(Bits 14 bis 29) in Gruppen von vier Bits miteinander kombi
niert werden, wie es in Fig. 9c veranschaulicht ist. Der
zweite Zerhackungsmechanismusarbeit gut bei Programmen, die
irgendwohin in dem Adreßraum springen, da sämtliche Tag-Bits
in die Berechnung einbezogen werden. Zu beachten ist, daß die
zwei am höchsten bewerteten Bits (Bits 30 und 31) bewahrt
werden, um Aufrufe zu Betriebssystemroutinen zu erfassen, die
weit von der aktuellen Adresse entfernt sind.
Beim Überprüfen des Verzweigungsziel-Puffer-Cache-Spei
chers 41 läßt die Verzweigungsziel-Puffer-Logik 40 die oberen
21 Bits des aktuellen Instruktionszeigers durch den Zer
hackungsmechanismus laufen und vergleicht den zerhackten In
struktionszeigerwert mit den zerhackten-Tag-Feldern 401 in
den vier Verzweigungseinträgen des ausgewählten Satzes. Die
Verzweigungsziel-Puffer-Logik 40 scheidet jene Verzweigungs
einträge aus, die ein nicht mit dem Wert des aktuellen zer
hackten Instruktionszeigers übereinstimmendes zerhacktes-Tag-
Feld 401 haben.
Am Schritt 104 (Fig. 8) scheidet die Verzweigungsziel-
Puffer-Logik 40 die Verzweigungseinträge in dem ausgewählten
Satz aus, die Verzweigungsinstruktionen identifizieren, die
vor dem aktuellen Instruktionszeiger angeordnet sind. Bei
spielsweise ist, wie es in der Speicherabbildung gemäß Fig. 4
dargestellt ist, eine vier Byte lange Verzweigungsinstruktion
an den hexadezimalen Adressen 1E bis 21 angeordnet. Die Ver
zweigungsinstruktion an den hexadezimalen Adressen 1E bis 21
wird in einen Verzweigungseintrag in dem Verzweigungsziel-
Puffer-Cache-Speicher 41 angeordnet, und ihr wird die hexade
zimale Adresse 21 zugeordnet, da dies die Adresse des letzten
Bytes der Verzweigungsinstruktion ist. Somit wird das Block-
Offset-Feld 402 des Verzweigungseintrags auf 1 gesetzt. Wenn
der aktuelle Instruktionszeiger auf die hexadezimale Adresse
23 zeigt, so scheidet die Verzweigungsziel-Pufferlogik 40
sämtliche Verzweigungseinträge aus, die in dem Block-Offset-
Feld 402 Werte kleiner als 3 haben, so daß der Verzweigungs
eintrag für die Verzweigungsinstruktion an der hexadezimalen
Adresse 21 nicht länger berücksichtigt wird.
Die verbleibenden Verzweigungseinträge beschreiben Ver
zweigungsinstruktionen innerhalb des 16-Byte-Blocks, auf die
von dem aktuellen Instruktionszeiger gezeigt wird, und die
nach dem aktuellen Instruktionszeiger angeordnet sind. Am
Schritt 105 (Fig. 8) ordnet die Verzweigungsziel-Puffer-Logik
40 die verbleibenden Verzweigungseinträge unter Verwendung
des Block-Offset-Feldes 402 der verbleibenden Verzweigungs
einträge. Die Verzweigungsziel-Pufferlogik 40 wählt dann die
erste als "vorgenommen" gekennzeichnete Verzweigungsinstruk
tion aus den verbleibenden geordneten Verzweigungseinträgen
aus, sofern es eine "vorgenommene" Verzweigungsinstruktion
gibt. Um die erste vorgenommene Verzweigungsinstruktion aus
den verbleibenden geordneten Verzweigungseinträgen auszuwäh
len, muß die Verzweigungsziel-Puffer-Logik 40 Verzweigungs
ergebnisvorhersagen für sämtliche verbleibenden Verzwei
gungseinträge in dem ausgewählten Satz machen.
Um eine Verzweigungszielvorhersage für jeden Eintrag zu
machen, liest die Verzweigungsziel-Pufferschaltung 40 zu
nächst das Verzweigungsart-Feld 403. Die Verzweigungsziel-
Pufferschaltung 40 führt in Abhängigkeit der Art der vorher
gesagten Verzweigungsinstruktion unterschiedliche Verzwei
gungsvorhersagen aus.
Das Verzweigungsart-Feld zeigt an, ob die vorhergesagte
Verzweigungsinstruktion eine bedingte, eine unbedingte, eine
Subroutinen-Aufruf- oder eine Subroutinen-Rückkehr-Verzwei
gungsinstruktion ist. Zu beachten ist, daß obwohl Subrouti
nen-Aufruf und Subroutinen-Rückkehr-Instruktionen spezielle
Arten unbedingter Verzweigungsinstruktionen sind. Diese bei
den Instruktionen sind als verschiedene Arten markiert. Die
Verzweigungsziel-Pufferschaltung 40 markiert Subroutinen-
Aufruf und Subroutinen-Rückkehr-Instruktionen als verschie
dene Arten, da die Verzweigungsziel-Pufferschaltung 40 spe
zielle Operationen ausführt, wenn diese beiden Arten von Ver
zweigungsinstruktionen vorhergesagt werden.
Die folgende Tabelle faßt zusammen, wie die Verzweigungs
ziel-Pufferschaltung 40 Verzweigungsergebnisse und Zieladres
sen für die vier Arten von in dem Verzweigungsziel-Puffer-
Cache-Speicher 41 gespeicherten Verzweigungsinstruktionen
vorhersagt.
Wie in Tabelle 2 ausgeführt ist, werden sämtliche Ver
zweigungsinstruktionen mit Ausnahme der bedingten Verzwei
gungsinstruktionen als genommen vorhergesagt. Um das Ergebnis
einer bedingten Verzweigungsinstruktion vorherzusagen, ver
wendet die Verzweigungsziel-Pufferschaltung 40 den adaptiven
Zwei-Ebenen-Verzweigungsvorhersagemechanismus von Yeh & Patt.
(Siehe Tse Yu Yeh und Yale N. Patt, Two-Level Adaptive Branch
Prediction, The 24th ACM/IEEE International Symposium and
Workshop on Microarchitecture, November 1991, Seiten 51 -
61) . Der Zwei-Ebenen-Verzweigungsvorhersagemechanismus von
Yeh & Patt hält dynamisch zwei Ebenen der Verzweigungsge
schichte aufrecht.
Die erste Ebene der in dem adaptiven Zwei-Ebenen-Verzwei
gungsvorhersagemechanismus gehaltenen Verzweigungsgeschichte
ist die vorgenommen/nicht-vorgenommen-Verzweigungsgeschichte,
die in jedem Verzweigungseintrag gespeichert ist. Beispiels
weise wird eine "nicht-vorgenommen, vorgenommen, vorgenommen,
nicht-vorgenommen"-Verzweigungsgeschichte durch "0110" darge
stellt. Bei dem bevorzugten Ausführungsbeispiel werden zwei
Versionen der Verzweigungsgeschichte gespeichert: Eine wahre
Verzweigungsgeschichte und eine spekulative Verzweigungsge
schichte. Die wahre Verzweigungsgeschichte speichert die
letzten vier Ergebnisse der Verzweigungsinstruktion, wie sie
von der Verzweigungsausführungseinheit 92 festgestellt worden
sind. Die spekulative Verzweigungsgeschichte speichert die
letzten vier Ergebnisse der Verzweigungsinstruktion, wie sie
von der Verzweigungsziel-Pufferschaltung 40 vorhergesagt wor
den sind. Die spekulative Geschichte wird verwendet, um das
Problem der Vorhersage von Verzweigungsinstruktionen inner
halb kleiner (oder "enger") Schleifen zu umgehen, da die
wahre Geschichte möglicherweise nicht schnell genug aktuali
siert sein kann. Diese Beschreibung widmet sich in erster Li
nie der wahren Verzweigungsgeschichte, jedoch können zusätz
liche Informationen über die spekulative Verzweigungsge
schichte in der anhängigen Patentanmeldung "Speculative Histo
ry Mechanism in a Branch Target Buffer", U.S.S.N. 08/062,012,
angemeldet am 14. Mai 1993, gefunden werden.
Die zweite Ebene der in dem adaptiven Zwei-Ebenen-Ver
zweigungsvorhersagemechanismus gehaltenen Verzweigungsge
schichte ist die Verzweigungsmustergeschichte. Die Verzwei
gungsmustergeschichte zeigt das wahrscheinliche Ergebnis ei
ner Verzweigungsinstruktion auf der Grundlage der vorangegan
genen Verzweigungsergebnisse der Verzweigungsinstruktion mit
identischer Verzweigungsgeschichte an. Die Verzweigungsmu
stergeschichte wird als ein 2-Bit-Zustandswert für jedes mög
liche Muster der Verzweigungsgeschichte gespeichert. Da das
bevorzugte Ausführungsbeispiel 4 Bits der Verzweigungsge
schichte speichert, gibt es 16 Zustandswerte für die 16 mög
lichen Muster der Verzweigungsgeschichte, wie sie in Fig. 10a
veranschaulicht sind. Die 2-Bit-Zustandswerte klassifizieren
die Verzweigungsmuster in stark genommen, schwach genommen,
schwach nicht-genommen und stark-nicht genommen, wie es in
Fig. 10b veranschaulicht ist.
Die Verzweigungsmustergeschichte wird ausgehend von zuvor
aufgetretenen gleichen Verzweigungsmustern erschaffen. Jedes
mal dann, wenn eine bedingte Verzweigungsinstruktion ent
schieden wird, wird die Verzweigungsmustertabelle mit Hilfe
des Sättigungs-Auf/Nieder-Zählers von Lee & Smith aktuali
siert, wie es durch die Zustandsübergangszeile in Fig. 10b
dargestellt ist.
Es wird ein Verzweigungsvorhersagebeispiel unter Bezug
nahme auf die Fig. 10a angegeben. 4 Bits einer Verzweigungs
geschichte speichern ein "nicht-genommen, genommen, genommen,
nicht-genommen" ("0110")-Muster für eine bedingte Verzwei
gungsinstruktion. Das 4-Bit-Verzweigungsmuster wird verwen
det, um in eine Verzweigungsmustertabelle zu verweisen
(indizieren), die Zustandswerte der Verzweigungsmusterge
schichte für jedes Verzweigungsmuster speichert. In Fig. 10a
indiziert das Verzweigungsmuster "0110" zu einem Zustandswert
"10", der den Zustand "schwach genommen" repräsentiert. Der
Verzweigungsvorhersagemechanismus wird demzufolge vorhersagen,
daß die Verzweigung vorgenommen werden wird. Wenn die Ver
zweigungsinstruktion von der Verzweigungsausführungseinheit
92 entschieden worden ist, aktualisiert die Verzweigungsaus
führungseinheit 92 sowohl die Verzweigungsgeschichte für die
Verzweigung als auch den geeigneten Zustandswerteintrag in
einer Verzweigungsmustertabelle.
Nachdem die Verzweigungsziel-Pufferschaltung 40 das Ver
zweigungsergebnis für sämtliche bedingten Verzweigungsin
struktionen in dem geordneten Satz bestimmt hat, sucht die
Verzweigungsziel-Pufferschaltung 40 nach der ersten vorgenom
menen Verzweigungsinstruktion. Wenn keine Verzweigungsin
struktionen als vorgenommen vorhergesagt werden, dann holt
die Instruktionsheraneinheit 30 den nächsten sequentiellen
Speicherblock heran. Wenn jedoch in dem ausgewählten Satz ei
ne vorgenommene Verzweigungsinstruktion ist, dann sagt die
Verzweigungsziel-Pufferschaltung 40 eine Verzweigungszie
ladresse für die erste vorgenommene Verzweigungsinstruktion
vorher.
Tabelle 2 beschreibt, wie die Verzweigungsziel-Puffer
schaltung 40 eine Verzweigungszieladresse für die jeweilige,
von dem Verzweigungsart-Feld 403 angezeigte Art der Verzwei
gungsinstruktion vorhersagt, wenn die Verzweigungsinstruktion
als vorgenommen vorhergesagt wird. Wie in Tabelle 2 ausge
führt ist, behandelt die Verzweigungsziel-Pufferschaltung 40
die unbedingten, bedingten und zur Subroutine springenden
Verzweigungsinstruktionen, indem sie eine Verzweigung zu der
in dem Verzweigungsziel-Adreßfeld 408 des Verzweigungsziel-
Puffer-Cache-Speichereintrags zur Verfügung gestellten
Adresse vorhersagt. Jedoch werden die Subroutinen-Rückkehr-
Instruktionen anders behandelt.
Wenn die Verzweigungsziel-Pufferschaltung 40 eine Subrou
tinen-Rückkehr-Instruktion vorhersagt, sagt die Verzweigungs
ziel-Pufferschaltung 40 eine Rückkehradresse aus einem Rück
kehr-Register oder aus einem Rückkehr-Stapel-Puffer innerhalb
des Verzweigungsadreßberechners 50 vorher.
Die Verzweigungsziel-Pufferschaltung 40 leitet die vor
hergesagte Verzweigungszieladresse zu der Instruktionsheran
holeinheit 30 weiter. Die Instruktionsheranholeinheit 30 holt
dann den nächsten Speicherblock mit Hilfe der vorhergesagten
Verzweigungsadresse heran.
Zusätzlich zu dem Verzweigungsziel-Puffer-Cache-Speicher
41 hält die Verzweigungsziel-Pufferschaltung 40 einen weite
ren, Verzweigungsinstruktionszeiger (IP)-Tabelle 43 genannten
Cache-Speicher aufrecht. Die Verzweigungs-IP-Tabelle 43 spei
chert Informationen über sämtliche unentschiedenen Verzwei
gungsmikrobefehle, die gegenwärtig innerhalb des Mikroprozes
sors sind. Nachdem ein Verzweigungsmikrobefehl ausgeführt
worden ist, werden die in der Verzweigungs-IP-Tabelle 43 ge
speicherten Informationen ausgelesen (retrieved), um den Ver
zweigungsziel-Puffer-Cache-Speicher 41 zu aktualisieren oder
den Mikroprozessor im Falle einer falschen Verzweigungsvor
hersage erneut zu starten.
Fig. 11 veranschaulicht die Verzweigungs-IP-Tabelle 43
nach der Erfindung. Die Verzweigungs-IP-Tabelle 43 weist ei
nen n Verzweigungseinträge (0 bis n-1) enthaltenden Puffer
auf, wobei n gleich der Anzahl der Einträge in dem Umord
nungspuffer 83 ist. Jeder Verzweigungsinformationseintrag in
nerhalb der Verzweigungs-IP-Tabelle 43 weist ein Nächster-Li
nearer-Instruktionszeiger(NLIP - Next Linear Intruction Po
inter) -Adreßfeld und ein Prozessorzustandsinformationsfeld
auf.
Das Nächster-Linearer-Instruktionszeiger (NLIP)-Adreßfeld
speichert die Adresse der Instruktion, die der dem Verzwei
gungsmikrobefehl zugeordneten Verzweigungsinstruktion unmit
telbar folgt. Die Instruktionsheranholeinheit 30 verwendet
die Nächster-Linearer-Instruktionszeiger (NLIP)-Adresse, wenn
eine Verzweigung fälschlicherweise als vorgenommen vorherge
sagt wurde, aber die Verzweigung nicht vorgenommen werden
soll.
Die NLIP-Adresse wir außerdem verwendet, um in den Ver
zweigungsziel-Puffer-Cache-Speicher 41 zu indizieren, wenn
neue Verzweigungseinträge zugewiesen oder die Verzweigungsge
schichten-Informationen in vorhandenen Verzweigungseinträgen
aktualisiert werden sollen. Wenn ein neuer Verzweigungsein
trag zugewiesen oder ein vorhandener Verzweigungseintrag ak
tualisiert werden soll, wird die NLIP-Adresse um eins dekre
mentiert, um die Adresse des letzten Bytes der Verzweigungs
instruktion zu erzeugen. Die Adresse des letzten Bytes der
Verzweigungsinstruktion wird von der Verzweigungsziel-Puffer
schaltung 40 verwendet, um in den Verzweigungsziel-Puffer-
Cache-Speicher 41 zu indizieren.
Das Prozessorzustandsinformationsfeld wird verwendet, um
Zustandsinformationen zu speichern, die verfälscht werden
könnten, wenn der Mikroprozessor die spekulative Ausführung
nach einer Verzweigungsvorhersage beginnt. Wenn der Mikropro
zessor aufgrund einer falschen Verzweigungsvorhersage speku
lativ entlang des falschen Pfades ausführt, können die Zu
standsinformationen von der Verzweigungs-IP-Tabelle 43 zu
rückgespeichert werden, wenn die Vorhersage als falsch er
kannt wird. Im aktuellen Ausführungsbeispiel speichert das
Mikroprozessorzustandsinformationsfeld einen Stapel-Zeiger
für den Rückkehr-Stapel-Puffer in dem Verzweigungsadreßbe
rechner 50.
Wie anhand des Überblicks über den Mikroprozessor ausge
führt worden ist, wird, wenn der Zuweiser 70 einen pDst-Ein
trag in dem Umordnungspuffer 83 für einen Verzweigungsmikro
befehl zuweist, ein entsprechender Eintrag in der Verzwei
gungs-IP-Tabelle 43 zugewiesen. Der Instruktionsdekodierer 60
informiert die Verzweigungsziel-Pufferschaltung 40 über den
zugewiesenen pDst-Eintrag, die Prozessorzustandsinformationen
und die Nächster-Linearer-Instruktionszeiger (NLIP)-Adresse.
Die Verzweigungsziel-Pufferschaltung 40 schreibt die Prozes
sorzustandsinformationen und die Nächster-Linearer-Instrukti
onszeiger(NLIP)-Adresse in einen entsprechenden Eintrag in
der Verzweigungs-IP-Tabelle 43.
Im folgenden wird auf Fig. 2 Bezug genommen. Jeder Ver
zweigungsmikrobefehl verbleibt in dem Eintrag der Reservie
rungsstation 81, bis sämtliche zur Ausführung des Verzwei
gungsmikrobefehls erforderlichen Quelldaten vorhanden sind
und die Verzweigungsausführungseinheit 92 verfügbar ist. Wenn
die zur Ausführung des Verzweigungsmikrobefehls erforderli
chen Quelldaten bereit sind, sendet die Reservierungsstation
81 den Verzweigungsmikrobefehl zu der Verzweigungsausfüh
rungseinheit 92.
Die Verzweigungsziel-Pufferschaltung 40 überwacht den
Bus, der zum Senden von Mikrobefehlen von der Reservierungs
station 81 zu der Verzweigungsausführungseinheit 92 verwendet
wird. Sobald sie sieht, daß die Reservierungsstation 81 einen
Verzweigungsmikrobefehl zu der Verzweigungsausführungseinheit
92 ausgibt, vermerkt die Verzweigungsziel-Pufferschaltung 40,
welche pDst-Eintragsnummer in dem Umordnungspuffer 83 zum
Speichern des Verzweigungsmikrobefehlsergebnisses verwendet
wird. Wenn die Verzweigungsausführungseinheit 92 den Verzwei
gungsmikrobefehl ausführt, liest die Verzweigungsziel-Puffer
schaltung 40 einen Eintrag in der Verzweigungs-IP-Tabelle 43
aus, der die gleiche Eintragsnummer wie der pDst-Eintrag in
dem Umordnungspuffer 83 hat. Auf diese Weise sind die dem
ausgeführten Verzweigungsmikrobefehl zugeordneten gespeicher
ten Verzweigungsinformationen verfügbar, wenn der Verzwei
gungsmikrobefehl entschieden wird.
Die Verzweigungsausführungseinheit 92 führt den Verzwei
gungsmikrobefehl aus, indem eine endgültige Verzweigungszie
ladresse und ein endgültiges Verzweigungsergebnis
(vorgenommen oder nicht-vorgenommen) bestimmt werden. Die
Verzweigungsausführungseinheit 92 vergleicht das endgültige
Verzweigungsergebnis der Verzweigung mit einem vorhergesagten
Verzweigungsergebnis, um nachzusehen, ob die Verzweigungsvor
hersage richtig war. Wenn die Verzweigungsvorhersage richtig
war, dann setzt der Prozessor die Verarbeitung entlang des
vorhergesagten Pfades fort. Wenn jedoch die Verzweigungsvor
hersage falsch war, dann muß die Verzweigungsausführungsein
heit 92 den vorderen Teil der Mikroprozessor-Pipeline löschen
(flushing) und den Mikroprozessor an der richtigen Adresse
erneut starten. Wenn die Verzweigungsinstruktion als vorge
nommen vorhergesagt wurde, aber das endgültige Verzweigungs
ergebnis nicht-vorgenommen ist, muß der Mikroprozessor die
Ausführung an der Adresse der Instruktion erneut aufnehmen,
die der Verzweigungsinstruktion unmittelbar folgt. Die Ver
zweigungsausführungseinheit 92 behandelt diese Situation, in
dem sie den Beginn der Mikroprozessor-Pipeline löscht und die
Instruktionsheranholeinheit 30 anweist, die Ausführung an der
von der Verzweigungs-IP-Tabelle 43 zur Verfügung gestellten
NLIP-Adresse wieder aufzunehmen.
Nachdem die Verzweigungsausführungseinheit 92 einen Ver
zweigungsmikrobefehl ausgeführt hat, muß die Verzweigungs
ziel-Pufferschaltung 40 in dem Verzweigungsziel-Puffer 41 ei
nen neuen Eintrag zuweisen oder einen vorhandenen Eintrag ak
tualisieren. Um auf den richtigen Satz in dem Verzweigungs
ziel-Puffer-Cache-Speicher 41 zuzugreifen, muß die Verzwei
gungsziel-Pufferschaltung 40 die Adresse des letzten Bytes
der Verzweigungsinstruktion haben. Um das letzte Byte der
Verzweigungsinstruktion zu berechnen, dekrementiert die Ver
zweigungsziel-Pufferschaltung 40 die von der Verzweigungs-IP-
Tabelle 43 erhaltene Nächster-Linearer-Instruktionszei
ger (NLIP)-Adresse.
Um Informationen für die Aktualisierung des Verzweigungs
ziel-Puffer-Cache-Speichers 41 zur Verfügung zu stellen,
überträgt die Verzweigungsausführungseinheit 92 Informationen
über die entschiedene Verzweigungsinstruktion zu der Verzwei
gungsziel-Pufferschaltung 40. Insbesondere informiert die
Verzweigungsausführungseinheit 92 die Verzweigungsziel-Puf
ferschaltung 40, welcher Art der Verzweigungsinstruktion aus
geführt worden ist, ob die Verzweigung vorgenommen oder
nicht-vorgenommen wurde und über die Verzweigungszieladresse.
Die Verzweigungsziel-Pufferschaltung 40 verwendet die Infor
mationen der entschiedenen Verzweigung, um die Verzweigungs
ziel-Pufferschaltung 41 zu aktualisieren.
Fig. 12 veranschaulicht die Schritte, die die Verzwei
gungsziel-Pufferschaltung 40 ausführt, wenn der Verzweigungs
ziel-Puffer-Cache-Speicher 41 aktualisiert wird. Am Schritt
301 dekrementiert die Verzweigungsziel-Pufferschaltung 40 die
aus der Verzweigungs-IP-Tabelle 43 ausgelesene Nächster-Li
nearer-Instruktionszeiger(NLIP)-Adresse, um die Adresse des
letzten Bytes der Verzweigungsinstruktion zu berechnen. Die
Verzweigungsziel-Pufferschaltung 40 verwendet die Adresse des
letzten Bytes der Verzweigungsinstruktion, um in den Verzwei
gungsziel-Puffer-Cache-Speicher 41 zu indizieren.
Am Schritt 302 indiziert die Verzweigungsziel-Puffer
schaltung 40 in den Verzweigungsziel-Puffer-Cache-Speicher 41
um nachzusehen, ob ein Verzweigungseintrag in dem Verzwei
gungsziel-Puffer-Cache-Speicher 41 für die Verzweigungsin
struktion bereits existiert. Insbesondere indiziert die Ver
zweigungsziel-Pufferschaltung 40 in den Verzweigungsziel-Puf
fer-Cache-Speicher 41 mit den Satz-Bits der berechneten Ver
zweigungsinstruktionsadresse und sucht nach einem Verzwei
gungseintrag mit übereinstimmendem Zerhackungs-Tag-Feld 401
und Block-Offset-Feld 402.
Wenn die Verzweigungsziel-Pufferschaltung 40 keinen Ver
zweigungseintrag für die Verzweigungsinstruktion in dem Ver
zweigungsziel-Puffer-Cache-Speicher 41 finden kann, dann be
nutzt die Verzweigungsziel-Pufferschaltung 40 eine Zuwei
sungsvorgehensweise, um zu entscheiden, ob die Verzweigungs
instruktion zu dem Verzweigungsziel-Puffer-Cache-Speicher 41
hinzugefügt werden soll. Die Zuweisungsvorgehensweise wird an
späterer Stelle dieser Beschreibung dargelegt. Wenn die Ver
zweigungsziel-Pufferschaltung 40 im Gegensatz dazu einen Ver
zweigungseintrag in dem Verzweigungsziel-Puffer-Cache-Spei
cher 41 für die Verzweigungsinstruktion findet, dann fährt
die Verzweigungsziel-Pufferschaltung 40 mit dem Aktualisieren
des Verzweigungseintrags beginnend am Schritt 310 fort.
Der gesamte Prozeß des Aktualisierens eines vorhandenen
Verzweigungseintrags in dem Verzweigungsziel-Puffer-Cache-
Speicher 41 erfordert drei Maschinenzyklen. Eine Aktualisie
rung eines existierenden Verzweigungseintrags in dem Verzwei
gungsziel-Puffer-Cache-Speicher kann von der Verzweigungs
ziel-Pufferschaltung 40 abgebrochen werden, wenn festgestellt
wird, daß der Verzweigungseintrag nicht aktualisiert werden
soll.
Am Schritt 310 gemäß Fig. 12 vergleicht die Verzweigungs
ziel-Pufferschaltung 40 die Verzweigungszieladresse in dem
Verzweigungseintrag mit der von der Verzweigungsausführungs
einheit 92 berechneten Verzweigungszieladresse, sofern die
Verzweigung keine Subroutinen-Rückkehr-Instruktion ist. Wenn
die beiden Zieladressen nicht übereinstimmen, aktualisiert
die Verzweigungsausführungseinheit 92 die Verzweigungszie
ladresse am Schritt 311.
Am Schritt 312 gemäß Fig. 12 überprüft die Verzweigungs
ziel-Pufferschaltung 40 die von der Verzweigungsausführungs
einheit 92 gelieferte Verzweigungsart. Wenn die Verzweigungs
art eine unbedingte Verzweigungsinstruktion ist, dann ist die
Aktualisierung des Verzweigungseintrags durch die Verzwei
gungsziel-Pufferschaltung 40 erledigt. Wenn die Verzweigungs
instruktion eine bedingte Verzweigungsinstruktion ist, dann
fährt die Verzweigungsziel-Pufferschaltung 40 mit der Aktua
lisierung der Verzweigungsmustertabelle und der Verzweigungs
geschichte fort.
Am Schritt 316 aktualisiert die Verzweigungsziel-Puffer
schaltung 40 die Verzweigungsmustertabelle für den Satz, der
den Verzweigungseintrag enthält. Die Verzweigungsmusterta
belle 421 wird aktualisiert, indem in die Verzweigungsmuster
tabelle 421 mit der vorhandenen wahren Verzweigungsgeschichte
404 indiziert wird und der Zustandswert mit Hilfe des neue
sten Verzweigungsergebnisses entsprechend der Zustandsüber
gangstabelle gemäß Fig. 10b geändert wird. Die Verzweigungs
mustertabelle 421 muß aktualisiert werden, bevor das Feld 404
der wahren Verzweigungsgeschichte aktualisiert wird, da die
aktuelle Geschichte in dem Feld 404 der wahren Verzweigungs
geschichte benötigt wird, um die Verzweigungsmustertabelle
421 zu indizieren.
Nach dem Aktualisieren der Verzweigungsmustertabelle am
Schritt 316 aktualisiert die Verzweigungsziel-Pufferschaltung
40 das Feld 404 der wahren Verzweigungsgeschichte am Schritt
318. Die Verzweigungsziel-Pufferschaltung 40 aktualisiert das
Feld 404 der wahren Verzweigungsgeschichte, indem das letzte
Verzweigungsergebnis der bedingten Verzweigungsinstruktion,
wie es von der Verzweigungsausführungseinheit 92 berechnet
worden ist, in das Feld 404 der wahren Verzweigungsgeschichte
eingeschoben wird. Dies vervollständigt die Aktualisierung
des Verzweigungseintrags für eine bedingte Verzweigungsin
struktion.
Die Verzweigungsziel-Pufferschaltung 40 aktualisiert je
den Verzweigungseintrag in dem Verzweigungsziel-Puffer-Cache-
Speicher 41 zwei Maschinenzyklen, nachdem die Verzweigungs
ausführungseinheit 92 den der Verzweigungsinstruktion zuge
ordneten Verzweigungsmikrobefehl ausgeführt hat. Da jedoch
der die Verzweigungsziel-Pufferschaltung 40 enthaltende Mi
kroprozessor Mikrobefehle außerhalb der ursprünglichen Pro
grammreihenfolge ausführen kann, kann die Verzweigungsziel-
Pufferschaltung 40 den Verzweigungsziel-Puffer-Cache-Speicher
41 außerhalb der ursprünglichen Programmreihenfolge aktuali
sieren.
In den meisten Fällen verursacht die Aktualisierung des
Verzweigungsziel-Puffer-Cache-Speichers 41 außerhalb der ur
sprünglichen Programmreihenfolge keine Probleme. Wenn jedoch
die Verzweigungsausführungseinheit 92 eine falsche Verzwei
gungsvorhersage erkennt, während sie eine Verzweigung aus
führt, nachdem eine spätere Verzweigung bereits ausgeführt
worden ist, wäre die spätere Verzweigung mit einer ungültigen
Geschichte aktualisiert worden. Um dieser Situation abzuhel
fen, kann die Verzweigungsziel-Pufferschaltung 40 die Aktua
lisierung eines Verzweigungseintrags abbrechen, wenn die Ver
zweigungsziel-Pufferschaltung 40 innerhalb der nächsten zwei
Zyklen erfährt, daß die Verzweigung nicht ausgeführt werden
sollte. Ein Beispiel dieser Situation ist unter Bezugnahme
auf Fig. 13 dargelegt.
Betrachtet werden vier Br0, Br1, Br2 und Br3 genannte
Verzweigungsinstruktionen (Br = Branch), die in dieser Rei
henfolge innerhalb eines Computerprogramms auftreten. Bei dem
in Fig. 2 dargestellten Mikroprozessor können die zugehörigen
Verzweigungsmikrobefehle in irgendeiner beliebigen Reihen
folge ausgeführt werden. Bei dem Beispiel gemäß Fig. 13 wer
den die vier Verzweigungsinstruktionen in der folgenden Rei
henfolge ausgeführt: Br3, Br1, Br2 und schließlich Br0.
Zum Zeitpunkt x gemäß Fig. 13 entscheidet in der Pipeline
die Verzweigungsausführungseinheit (JE = Jump Execution) die
Verzweigungsinstruktion Br3. Zum nächsten Zeitpunkt x+1 ent
scheidet die Verzweigungsausführungseinheit Br1, und die Ver
zweigungsziel-Pufferschaltung 40 beginnt mit dem Aktualisie
ren des Verzweigungseintrags für Br3. Zum Zeitpunkt x+2 ent
scheidet die Verzweigungsausführungseinheit Br1, während zur
gleichen Zeit die Verzweigungsziel-Pufferschaltung 40 die Ak
tualisierung des Verzweigungseintrags für Br1 beginnt und die
Aktualisierung des Verzweigungseintrags für Br3 fortsetzt.
Zum Zeitpunkt x+3 entscheidet die Verzweigungsausführungsein
heit Br0, während zum gleichen Zeitpunkt die Verzweigungs
ziel-Pufferschaltung 40 mit dem Aktualisieren des Verzwei
gungseintrags für Br2 beginnt, die Aktualisierung des Ver
zweigungseintrags für Br1 fortsetzt und die Aktualisierung
des Verzweigungseintrags für Br3 abschließt.
Wenn die Verzweigungsausführungseinheit feststellt, daß
die Verzweigung Br0 falsch vorhergesagt wurde, dann hätten
die nachfolgenden Verzweigungsinstruktionen nicht ausgeführt
werden dürfen, da der Mikroprozessor spekulativ entlang des
falschen Pfades ausgeführt hat. Noch wichtiger ist, daß die
Verzweigungsgeschichten für die Verzweigungsinstruktionen
Br1, Br2 und Br3 nicht hätten aktualisiert werden dürfen, da
diese Verzweigungsinstruktionen nicht hätten ausgeführt wer
den dürfen, so daß jede neue Verzweigungsgeschichte falsch
wäre. Wenn die Verzweigungsausführungseinheit die falsche
Vorhersage erfaßt, instruiert sie die Verzweigungsziel-Puf
ferschaltung 40, sämtliche gerade in der Ausführung befindli
chen Aktualisierungen abzubrechen. Somit bricht die Verzwei
gungsziel-Pufferschaltung 40 die Aktualisierungen für die
Verzweigungsinstruktionen Br1 und Br2 ab, wie es in Fig. 13
dargestellt ist. Da die Aktualisierung für Br3 bereits abge
schlossen war, als die Fehlvorhersage erkannt wurde, kann sie
nicht verhindert werden. Jedoch reicht die Fähigkeit zum Ab
brechen der Aktualisierungen der Verzweigungseinträge während
der zwei Zyklen vor Abschluß der Aktualisierung zum Behandeln
der Mehrheit solcher Fälle aus.
Wenn die Verzweigungsziel-Pufferschaltung 40 am Schritt
302 gemäß Fig. 12 keinen vorhandenen Verzweigungseintrag in
dem Verzweigungsziel-Puffer-Cache-Speicher 41 für die Ver
zweigungsinstruktion findet, muß die Verzweigungsziel-Puffer
schaltung 40 feststellen, ob ein neuer Verzweigungseintrag in
dem Verzweigungsziel-Puffer-Cache-Speicher 41 zugewiesen wer
den soll. Um festzustellen, ob ein Verzweigungseintrag zuge
wiesen werden soll, implementiert der Mikroprozessor eine
Vorgehensweise bei der Zuweisung von Verzweigungseinträgen.
Die Schritte 303 und 305 implementieren diese Vorgehensweise
des Verzweigungsziel-Puffer-Cache-Speichers 41. Einfach ge
sagt, besteht die Vorgehensweise bei der Zuweisung von Ver
zweigungseinträgen nach der Erfindung darin, einen Verzwei
gungseintrag für sämtliche von dem Verzweigungsadreßberechner
50 falsch vorhergesagten Verzweigungsinstruktionen und sämt
liche Verzweigungsinstruktionen mit vorgenommener Verzweigung
zuzuweisen.
Der in Fig. 2 dargestellte Verzweigungsadreßberechner 50
führt eine statische Vorhersage für nicht von der Verzwei
gungsziel-Pufferschaltung 40 vorhergesagte Verzweigungsin
struktionen aus. Die statische Vorhersage basiert nur auf den
in der Verzweigungsinstruktion selbst kodierten Informatio
nen, so daß der Verzweigungsadreßberechner 50 stets die glei
che Vorhersage für eine gegebene Verzweigungsinstruktion
macht. Wenn der Verzweigungsadreßberechner 50 eine Verzwei
gungsinstruktion falsch vorhersagt, so wird folglich die
gleiche falsche Vorhersage stets erneut wiederholt (bis das
Verzweigungsergebnis sich ändert). Um diese Situation zu ver
meiden, werden sämtliche von dem Verzweigungsadreßberechner
50 falsch vorhergesagten Verzweigungsinstruktionen dem Ver
zweigungsziel-Puffer-Cache-Speicher 41 zugewiesen. Folglich
testet am Schritt 303 gemäß Fig. 12 die Verzweigungsziel-Puf
ferschaltung 40, ob die Verzweigungsinstruktion falsch vor
hergesagt wurde. Wenn die Verzweigung falsch vorhergesagt
wurde, weist die Verzweigungsziel-Pufferschaltung 40 der Ver
zweigungsinstruktion einen Verzweigungseintrag in dem Ver
zweigungsziel-Puffer-Cache-Speicher 41 zu.
Wenn der Verzweigungsadreßberechner 50 vorhersagt, daß
eine Verzweigungsinstruktion eine Verzweigung nicht vornimmt
und die Verzweigungsvorhersage korrekt ist, entsteht keine
Verzögerung. Wenn andererseits der Verzweigungsadreßberechner
50 vorhersagt, daß eine Verzweigungsinstruktion eine Verzwei
gung vornimmt, so muß der Verzweigungsadreßberechner 50 noch
den Beginn der Pipeline des Mikroprozessors löschen (flushen)
und die Instruktionsheranholeinheit 30 starten, damit diese
von der Verzweigungszieladresse heranholt. Wenn eine Verzwei
gungsinstruktion eine Verzweigung vornimmt, so entsteht folg
lich eine Verzögerung von fünf Zyklen in Abhängigkeit davon,
ob der Verzweigungsadreßberechner 50 das Ergebnis der Ver
zweigungsinstruktion korrekt vorhersagt oder nicht. Um ein
erneutes Auftreten dieser Situation zu vermeiden, weist die
Verzweigungsziel-Pufferschaltung 40 einen Verzweigungseintrag
innerhalb des Verzweigungsziel-Puffer-Cache-Speichers 41 für
sämtliche die Verzweigung vornehmenden Verzweigungsinstruk
tionen am Schritt 307 zu. Am Schritt 305 gemäß Fig. 12 testet
die Verzweigungsziel-Pufferschaltung 40, ob die Verzweigungs
instruktion die Verzweigung vornahm. Wenn die Verzweigung
vorgenommen wurde, weist die Verzweigungsziel-Pufferschaltung
40 einen Verzweigungseintrag für die Verzweigungsinstruktion
in dem Verzweigungsziel-Puffer-Cache-Speicher 41 zu.
Um einen Verzweigungseintrag aus dem ausgewählten Satz in
dem Verzweigungsziel-Puffer-Cache-Speicher 41 auszuwählen,
verwendet die Verzweigungsziel-Pufferschaltung 40 ein Paar
von Pseudo-Am-Längsten-Unersetzt-Bits 420 (PLRR-Bits -
Pseudo-Least Recently Replaced Bits) in dem Satz des Verzwei
gungsziel-Puffer-Cache-Speichers 41. Die Pseudo-Am-Längsten-
Unersetzt(PLRR)-Bits 420 zeigen an, welcher Verzweigungsein
trag in dem Satz am längsten unersetzt geblieben ist. Um den
Verzweigungseintrag in dem ausgewählten Satz auszuwählen,
liest die Verzweigungsziel-Pufferschaltung 40 die PLRR-Bits
420 des ausgewählten Satzes und folgt dann der Vorgehensweise
der Verzweigungseintragszuweisung, die in Fig. 14 dargestellt
ist. Die Vorgehensweise der Verzweigungseintragszuweisung
versucht, die Zerstörung vorhandener Verzweigungseinträge für
Verzweigungsinstruktionen in dem aktuellen Speicherblock zu
verhindern.
Am Schritt 501 setzt die Verzweigungsziel-Pufferschaltung
40 einen Zähler auf Null. Am Schritt 503 testet die Verzwei
gungsziel-Pufferschaltung 40 den Verzweigungseintrag, um
nachzusehen, ob sein Zerhackungs-Tag-Feld 401 gleich dem Zer
hackungs-Tag der zugewiesenen Verzweigungsinstruktion ist.
Wenn die zwei Zerhackungs-Tags nicht übereinstimmen, setzt
die Verzweigungsziel-Pufferschaltung 40 die Verarbeitung am
Schritt 505 fort, wo sie diesen Verzweigungseintrag ersetzt.
Nach dem Ersetzen des Verzweigungseintrags inkrementiert die
Verzweigungsziel-Pufferschaltung 40 die Pseudo-Am-Längsten-
Unersetzt(PLRR)-Bits 420 am Schritt 507 und schreibt die in
krementierten Pseudo-Am-Längsten-Unersetzt (PLRR)-Bits in den
Satz zurück.
Wenn die zwei Zerhackungs-Tags übereinstimmen, fährt die
Verzweigungsziel-Pufferschaltung 40 am Schritt 511 fort. Am
Schritt 511 testet die Verzweigungsziel-Pufferschaltung 40
den Zähler, um nachzusehen, ob sämtliche vier Verzweigungs
einträge getestet worden sind. Wenn sämtliche vier Verzwei
gungseinträge getestet worden sind, dann setzt die Verzwei
gungsziel-Pufferschaltung 40 die Verarbeitung am Schritt 505
fort. Am Schritt 505 ersetzt sie den Verzweigungseintrag, auf
den durch die ursprünglich aus dem Verzweigungssatz ausgele
senen Pseudo-Am-Längsten-Unersetzt (PLRR)-Bits 420 gezeigt
wird. Es wird wieder auf Schritt 511 Bezug genommen. Wenn
sämtliche vier Verzweigungseinträge noch nicht getestet wor
den sind, setzt die Verzweigungsziel-Pufferschaltung 40 die
Verarbeitung am Schritt 513 fort, wo der Zähler und die
Pseudo-Am-Längsten-Unersetzt (PLRR)-Bits inkrementiert werden.
Nach dem Schritt 513 kehrt die Verzweigungsziel-Pufferschal
tung 40 zu dem Schritt 503 zurück, um den nächsten Verzwei
gungseintrag zu testen.
Nachdem ein Verzweigungseintrag in dem Verzweigungsziel-
Puffer-Cache-Speicher 41 ausgewählt worden ist, setzt die
Verzweigungsziel-Pufferschaltung 40 die Verarbeitung mit dem
Füllen der Datenfelder des ausgewählten Verzweigungseintrags
fort.
Wenn die Verzweigungsinstruktion die Verzweigung vornahm,
setzt die Verzweigungsziel-Pufferschaltung 40 das Feld 404
der wahren Verzweigungsgeschichte auf "1011". Anderenfalls,
wenn die Verzweigung nicht vorgenommen wurde, setzt die Ver
zweigungsziel-Pufferschaltung 40 die wahre Geschichte auf
"0100".
Das Spekulationsbit 406 wird zurückgesetzt, was anzeigt,
daß keine spekulative Geschichte für den Verzweigungseintrag
mehr existiert. Das Feld 405 der spekulativen Geschichte wird
während der Verzweigungseintragszuweisung nicht modifiziert,
da es später gesetzt werden wird, wenn die spekulative Ge
schichte erzeugt wird.
Das Zerhackungs-Tag-Feld 401 und das Block-Offset-Feld
402 werden mit Hilfe der Adresse gesetzt, die auf das letzte
Byte der Verzweigungsinstruktion zeigt. Das Zerhackungs-Tag-
Feld 401 wird gesetzt, indem die höchsten 21 Bits der auf das
letzte Byte der Verzweigungsinstruktion zeigenden Adresse
durch den ausgewählten Zerhackungsmechanismus laufen. Das
Block-Offset-Feld 402 wird mit Hilfe der niedrigsten vier
Bits der Verzweigungsadresse gesetzt.
Die Verzweigungsziel-Pufferschaltung 40 setzt das Ver
zweigungsart-Feld 403 mit Hilfe der von der Verzweigungsaus
führungseinheit 92 empfangenen Verzweigungsartinformationen.
Die Verzweigungsziel-Pufferschaltung 40 setzt das Verzwei
gungsziel-Adreßfeld 408 mit Hilfe der Zieladresse der Ver
zweigungsinstruktion, wie sie von der Verzweigungsausfüh
rungseinheit 92 berechnet wurde.
Schließlich wird das Gült 03024 00070 552 001000280000000200012000285910291300040 0002004447238 00004 02905ig-Bit 407 für den Verzweigungs
eintrag gesetzt, um anzuzeigen, daß der Verzweigungseintrag
gültige Informationen über eine Verzweigungsinformation ent
hält. Zukünftige Auftreten der Verzweigungsinstruktion wird
von der Verzweigungsziel-Pufferschaltung 40 vorhergesagt.
Der Verzweigungsadreßberechner 50 gemäß Fig. 2 überprüft
die Existenz sämtlicher von der Verzweigungsziel-Pufferschal
tung 40 vorhergesagter Verzweigungsinstruktionen. Einträge in
dem Verzweigungsziel-Puffer-Cache-Speicher 41, die nicht mehr
auf gültige Verzweigungsinstruktionen zeigen, können die Ver
zweigungsziel-Pufferschaltung 40 veranlassen, nicht existente
Verzweigungsinstruktionen vorherzusagen.
Es gibt verschiedene Gründe, aus denen ein Verzweigungs
eintrag in dem Verzweigungsziel-Puffer-Cache-Speicher 41
vielleicht nicht länger auf eine gültige Verzweigungsinstruk
tion zeigt. Ein sich selbst modifizierender Code kann eine
Verzweigungsinstruktion derart verändern, daß der Eintrag in
dem Verzweigungsziel-Puffer-Cache-Speicher 41 nicht mehr
richtig ist. Darüber hinaus verursacht das zerhackte Adreß-
Tag-Feld 401 eine Verfremdung (aliasing), so daß mehr als ei
ne Adresse in jedem Verzweigungseintrag abgebildet wird.
Wenn der Verzweigungsadreßberechner 50 feststellt, daß
die Verzweigungsziel-Pufferschaltung 40 eine Verzweigungsvor
hersage für eine nicht existente Verzweigungsinstruktion
macht, sollte der unrichtige Verzweigungseintrag in dem Ver
zweigungsziel-Puffer-Cache-Speicher 41 zurückgenommen
(deallocated) werden. Wenn der Verzweigungsadreßberechner 50
eine Verzweigungsvorhersage für eine nicht existente Verzwei
gungsinstruktion erfaßt, sendet er der Verzweigungsziel-Puf
ferschaltung 40 einen Zeiger auf das erste Byte der nicht
verzweigenden Instruktion. Um den fehlerhaften Verzweigungs
eintrag zurückzunehmen, nimmt die Verzweigungsziel-Puffer
schaltung 40 sämtliche Verzweigungseinträge in dem von dem
weitergeleiteten Zeiger definierten Satz und dem folgenden
Satz von Verzweigungseinträgen zurück. Sowohl der von dem
weitergeleiteten Zeiger definierte Satz als auch der folgende
Satz von Verzweigungseinträgen muß zurückgenommen werden, da
die Verzweigungsinstruktionen, welche von der Adresse des
letzten Bytes in den Verzweigungsziel-Puffer-Cache-Speicher
41 abgelegt wurde, in jedem von den beiden Sätzen von Ver
zweigungseinträgen vorhanden sein kann. Um Verzweigungsein
träge in einen Satz zurückzunehmen, setzt die Verzweigungs
ziel-Pufferschaltung 40 sämtliche Gültig-Bits 407 der Ver
zweigungseinträge zurück.
Claims (26)
1. Einrichtung zur Vorhersage einer Mehrzahl von Verzwei
gungsinstruktionen innerhalb eines Stromes von Computerin
struktionen,
gekennzeichnet durch
einen Verzweigungsziel-Puffer-Cache-Speicher (41) mit ei ner Mehrzahl von Verzweigungseinträgen (420), die jeweils In formationen über eine zugehörige Verzweigungsinstruktion in nerhalb des Stroms von Computerinstruktionen speichern; und
eine Verzweigungsziel-Puffersschaltung (40), die einen Instruktionszeiger empfängt, mit dem Instruktionszeiger in dem Verzweigungsziel-Puffer-Cache-Speicher (41) indiziert und auf der Grundlage des Instruktionszeigers nach einer kom menden Verzweigungsinstruktion sucht.
einen Verzweigungsziel-Puffer-Cache-Speicher (41) mit ei ner Mehrzahl von Verzweigungseinträgen (420), die jeweils In formationen über eine zugehörige Verzweigungsinstruktion in nerhalb des Stroms von Computerinstruktionen speichern; und
eine Verzweigungsziel-Puffersschaltung (40), die einen Instruktionszeiger empfängt, mit dem Instruktionszeiger in dem Verzweigungsziel-Puffer-Cache-Speicher (41) indiziert und auf der Grundlage des Instruktionszeigers nach einer kom menden Verzweigungsinstruktion sucht.
2. Einrichtung nach Anspruch 1, dadurch gekennzeichnet,
daß der Instruktionszeiger auf einen Speicherblock zeigt und
daß die Verzweigungsziel-Pufferschaltung nach einer kommenden
Verzweigungsinstruktion in demjenigen Speicherblock sucht,
auf den der Instruktionszeiger zeigt.
3. Einrichtung nach Anspruch 1 oder 2, dadurch gekenn
zeichnet, daß die Mehrzahl von Verzweigungseinträgen in einer
Mehrzahl von Sätzen organisiert ist, wobei jeder Satz eine
Mehrzahl von Verzweigungseinträgen aufweist.
4. Einrichtung nach einem der Ansprüche 1 bis 3, dadurch
gekennzeichnet, daß der Verzweigungsziel-Puffer-Cache-Spei
cher (41) ein Satz-assoziativer-Cache-Speicher ist.
5. Einrichtung nach Anspruch 3 oder 4, dadurch gekenn
zeichnet, daß jeder Satz vier Satz-assoziative-Verzweigungs
einträge aufweist.
6. Einrichtung nach einem der Ansprüche 3 bis 5, dadurch
gekennzeichnet, daß jeder Satz eine Verzweigungsmustertabelle
aufweist.
7. Einrichtung nach einem der Ansprüche 3 bis 6, dadurch
gekennzeichnet, daß jeder Satz einen Satz von Am-Längsten-Un
ersetzt-Bits (421) aufweist.
8. Einrichtung nach einem der Ansprüche 1 bis 7, dadurch
gekennzeichnet, daß jede zugehörige Verzweigungsinstruktion
in dem Verzweigungsziel-Puffer-Cache-Speicher (41) mit Hilfe
einer Adresse eines letzten Bytes der zugehörigen Verzwei
gungsinstruktion gespeichert ist.
9. Einrichtung nach einem der Ansprüche 1 bis 8, dadurch
gekennzeichnet, daß jeder Verzweigungseintrag (420) in dem
Verzweigungsziel-Puffer-Cache-Speicher (41) ein Tag-Feld
(401), eine Verzweigungszieladresse (408) und ein Gültig-Bit
(407) aufweist.
10. Einrichtung nach Anspruch 9, dadurch gekennzeichnet,
daß das Tag-Feld ein komprimiertes Tag-Feld (401) aufweist,
das kleiner als eine vollständige Tag-Adresse ist.
11. Einrichtung nach Anspruch 10, dadurch gekennzeichnet,
daß das komprimierte Tag-Feld einen Teil der am höchsten be
werteten Bits der vollständigen Tag-Adresse verkettet mit ei
nem Teil der am geringsten bewerteten Bits der vollständigen
Tag-Adresse aufweist.
12. Einrichtung nach Anspruch 10 oder 11, dadurch gekenn
zeichnet, daß das komprimierte Tag-Feld einen ersten Teil der
am höchsten bewerteten Bits der vollständigen Tag-Adresse,
eine Exklusiv-ODER-Kombination eines zweiten Teils der Bits
der vollständigen Tag-Adresse und einen dritten Teil der am
geringsten bewerteten Bits der vollständigen Tag-Adresse auf
weist.
13. Einrichtung nach einem der Ansprüche 9 bis 12, da
durch gekennzeichnet, daß der Verzweigungseintrag (420) in
dem Verzweigungsziel-Puffer-Cache-Speicher (41) ein Verzwei
gungsart-Feld (403) aufweist.
14. Einrichtung nach einem der Ansprüche 1 bis 13, da
durch gekennzeichnet, daß der Verzweigungseintrag (420) in
dem Verzweigungsziel-Puffer-Cache-Speicher (41) ein Block-
Offset-Feld (402) aufweist, das ein Offset eines letzten
Bytes der zugehörigen Verzweigungsinstruktion identifiziert.
15. Einrichtung nach einem der Ansprüche 1 bis 14, da
durch gekennzeichnet, daß der Verzweigungseintrag (420) in
dem Verzweigungsziel-Puffer-Cache-Speicher (41) ein Verzwei
gungsgeschichte-Feld (404, 405) aufweist.
16. Einrichtung nach einem der Ansprüche 1 bis 15, da
durch gekennzeichnet, daß der Verzweigungseintrag (420) in
dem Verzweigungsziel-Puffer-Cache-Speicher (41) ein Spekula
tionsbit (406) und ein Feld einer spekulativen Verzweigungs
geschichte (405) aufweist.
17. Verzweigungsziel-Puffer-Cache-Speicher (40) mit einer
Mehrzahl von Verzweigungseinträgen (420), wobei jeder Ver
zweigungseintrag Informationen über eine zugeordnete Ver
zweigungsinstruktion innerhalb eines Stroms von Computerin
struktionen speichert und wobei die Mehrzahl von Verzwei
gungseinträgen durch eine Adresse eines letzten Bytes der zu
geordneten Verzweigungsinstruktion adressiert werden kann.
18. Verfahren zum Aktualisieren eines Verzweigungsziel-
Puffers,
dadurch gekennzeichnet,
daß eine Verzweigungsinstruktion entschieden wird, um ein endgültiges Verzweigungsergebnis und eine endgültige Verzwei gungszieladresse der Verzweigungsinstruktion zu bestimmen;
daß ein der Verzweigungsinstruktion zugeordneter Verzwei gungseintrag aus einem Satz von Verzweigungseinträgen in dem Verzweigungsziel-Puffer gefunden wird;
daß eine Verzweigungszieladresse in dem der Verzweigungs instruktion zugeordneten Verzweigungseintrag mit Hilfe der endgültigen Verzweigungszieladresse aktualisiert wird;
daß eine dem Satz von Verzweigungseinträgen in dem Ver zweigungsziel-Puffer zugeordnete Verzweigungsmustertabelle aktualisiert wird, wenn die Verzweigungsinstruktion eine be dingte Verzweigungsinstruktion ist; und
daß eine dem Verzweigungseintrag zugeordnete Verzwei gungsgeschichte aktualisiert wird, wenn die Verzweigungsin struktion eine bedingte Verzweigungsinstruktion ist.
daß eine Verzweigungsinstruktion entschieden wird, um ein endgültiges Verzweigungsergebnis und eine endgültige Verzwei gungszieladresse der Verzweigungsinstruktion zu bestimmen;
daß ein der Verzweigungsinstruktion zugeordneter Verzwei gungseintrag aus einem Satz von Verzweigungseinträgen in dem Verzweigungsziel-Puffer gefunden wird;
daß eine Verzweigungszieladresse in dem der Verzweigungs instruktion zugeordneten Verzweigungseintrag mit Hilfe der endgültigen Verzweigungszieladresse aktualisiert wird;
daß eine dem Satz von Verzweigungseinträgen in dem Ver zweigungsziel-Puffer zugeordnete Verzweigungsmustertabelle aktualisiert wird, wenn die Verzweigungsinstruktion eine be dingte Verzweigungsinstruktion ist; und
daß eine dem Verzweigungseintrag zugeordnete Verzwei gungsgeschichte aktualisiert wird, wenn die Verzweigungsin struktion eine bedingte Verzweigungsinstruktion ist.
19. Verfahren nach Anspruch 18, dadurch gekennzeichnet,
daß die Aktualisierungsschritte abgebrochen werden können.
20. Verfahren nach Anspruch 18 oder 19, dadurch gekenn
zeichnet, daß die Aktualisierungsschritte abgebrochen werden,
wenn eine frühere Verzweigungsinstruktion falsch vorhergesagt
wurde.
21. Verfahren nach einem der Ansprüche 18 bis 20, dadurch
gekennzeichnet, daß beim Finden eines der Verzweigungsin
struktion zugeordneten Verzweigungseintrags in dem Verzwei
gungsziel-Puffer mit Hilfe einer Adresse eines letzten Bytes
der Verzweigungsinstruktion indiziert wird.
22. Verfahren nach Anspruch 20 oder 21, dadurch gekenn
zeichnet, daß beim Finden eines der Verzweigungsinstruktion
zugeordneten Verzweigungseintrags eine Übereinstimmung eines
Teils der am höchsten bewerteten Bits von der Adresse des
letzten Bytes der Verzweigungsinstruktion mit einem Tag-Feld
in dem Verzweigungseintrag festgestellt wird.
23. Verfahren nach Anspruch 22, dadurch gekennzeichnet,
daß zum Feststellen der Übereinstimmung
eine zerhackte Version des Teils der am höchsten bewerte ten Bits von der Adresse des letzten Bytes der Verzweigungs instruktion erzeugt wird; und
daß die zerhackte Version mit einem zerhackten Tag-Feld in dem Verzeigungseintrag verglichen wird.
daß zum Feststellen der Übereinstimmung
eine zerhackte Version des Teils der am höchsten bewerte ten Bits von der Adresse des letzten Bytes der Verzweigungs instruktion erzeugt wird; und
daß die zerhackte Version mit einem zerhackten Tag-Feld in dem Verzeigungseintrag verglichen wird.
24. Verfahren zum Zuweisen in einem Verzweigungsziel-Puf
fer,
dadurch gekennzeichnet,
daß eine Verzweigungsinstruktion entschieden wird, um ein endgültiges Verzweigungsergebnis und eine endgültige Verzwei gungszieladresse für die Verzweigungsinstruktion zu bestim men;
daß festgestellt wird, ob die Verzweigungsinstruktion falsch vorhergesagt wurde; und
daß ein Verzweigungseintrag in dem Verzweigungsziel-Puf fer zugewiesen wird, wenn die Verzweigungsinstruktion falsch vorhergesagt wurde oder wenn als endgültiges Ergebnis der Verzweigungsinstruktion eine Vornahme der Verzweigung festge stellt wurde.
daß eine Verzweigungsinstruktion entschieden wird, um ein endgültiges Verzweigungsergebnis und eine endgültige Verzwei gungszieladresse für die Verzweigungsinstruktion zu bestim men;
daß festgestellt wird, ob die Verzweigungsinstruktion falsch vorhergesagt wurde; und
daß ein Verzweigungseintrag in dem Verzweigungsziel-Puf fer zugewiesen wird, wenn die Verzweigungsinstruktion falsch vorhergesagt wurde oder wenn als endgültiges Ergebnis der Verzweigungsinstruktion eine Vornahme der Verzweigung festge stellt wurde.
25. Verfahren nach Anspruch 24, dadurch gekennzeichnet,
daß beim Feststellen, ob die Verzweigungsinstruktion falsch
vorhergesagt wurde, das endgültige Verzweigungsergebnis und
die endgültige Verzweigungszieladresse mit einem vorhergesag
ten Verzweigungsergebnis und einer vorhergesagten Verzwei
gungszieladresse verglichen werden.
26. Verfahren nach Anspruch 24 oder 25, dadurch gekenn
zeichnet,
daß der Verzweigungsziel-Puffer in Sätzen von Ver zweigungseinträgen organisiert wird, und daß der Schritt des Zuweisens eines Verzweigungseintrags enthält,
daß ein Am-Längsten-Unersetzt-Wert aus einem einem Satz von Verzweigungseinträgen zugeordneten entsprechenden Feld ausgelesen wird;
daß ein Verzweigungseintrag ersetzt wird, auf den von dem Am-Längsten-Unersetzt-Wert gezeigt wird, sofern der Verzwei gungseintrag kein übereinstimmendes Tag-Feld aufweist;
daß der Am-Längsten-Unersetzt-Wert inkrementiert wird und der vorhergehende Schritt wiederholt wird, bis sämtliche Ver zweigungseinträge geprüft worden sind; und
daß ein Verzweigungseintrag ersetzt wird, auf den von dem Am-Längsten-Unersetzt-Wert gezeigt wird, der ursprünglich aus dem dem Satz von Verzweigungseinträgen zugeordneten entspre chenden Feld ausgelesen wurde.
daß der Verzweigungsziel-Puffer in Sätzen von Ver zweigungseinträgen organisiert wird, und daß der Schritt des Zuweisens eines Verzweigungseintrags enthält,
daß ein Am-Längsten-Unersetzt-Wert aus einem einem Satz von Verzweigungseinträgen zugeordneten entsprechenden Feld ausgelesen wird;
daß ein Verzweigungseintrag ersetzt wird, auf den von dem Am-Längsten-Unersetzt-Wert gezeigt wird, sofern der Verzwei gungseintrag kein übereinstimmendes Tag-Feld aufweist;
daß der Am-Längsten-Unersetzt-Wert inkrementiert wird und der vorhergehende Schritt wiederholt wird, bis sämtliche Ver zweigungseinträge geprüft worden sind; und
daß ein Verzweigungseintrag ersetzt wird, auf den von dem Am-Längsten-Unersetzt-Wert gezeigt wird, der ursprünglich aus dem dem Satz von Verzweigungseinträgen zugeordneten entspre chenden Feld ausgelesen wurde.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/177,155 US5574871A (en) | 1994-01-04 | 1994-01-04 | Method and apparatus for implementing a set-associative branch target buffer |
US08/177,155 | 1994-01-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE4447238A1 true DE4447238A1 (de) | 1995-07-13 |
DE4447238B4 DE4447238B4 (de) | 2005-08-18 |
Family
ID=22647420
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE4447238A Expired - Fee Related DE4447238B4 (de) | 1994-01-04 | 1994-12-30 | Schaltungsanordnung und Verfahren zum Gewinnen von Informationen zur Verzweigungsvorhersage |
Country Status (6)
Country | Link |
---|---|
US (4) | US5574871A (de) |
JP (1) | JP3548255B2 (de) |
DE (1) | DE4447238B4 (de) |
GB (1) | GB2285526B (de) |
HK (1) | HK1012743A1 (de) |
SG (1) | SG50456A1 (de) |
Families Citing this family (129)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1992006426A1 (en) * | 1990-10-09 | 1992-04-16 | Nexgen Microsystems | Method and apparatus for parallel decoding of instructions with branch prediction look-up |
US5574871A (en) * | 1994-01-04 | 1996-11-12 | Intel Corporation | Method and apparatus for implementing a set-associative branch target buffer |
JP3590427B2 (ja) * | 1994-08-30 | 2004-11-17 | 株式会社ルネサステクノロジ | 先行読出機能付命令キャッシュメモリ |
US5968169A (en) * | 1995-06-07 | 1999-10-19 | Advanced Micro Devices, Inc. | Superscalar microprocessor stack structure for judging validity of predicted subroutine return addresses |
GB9521955D0 (en) * | 1995-10-26 | 1996-01-03 | Sgs Thomson Microelectronics | Cache memory |
GB9521980D0 (en) * | 1995-10-26 | 1996-01-03 | Sgs Thomson Microelectronics | Branch target buffer |
GB9521978D0 (en) * | 1995-10-26 | 1996-01-03 | Sgs Thomson Microelectronics | Computer instruction supply |
GB9521977D0 (en) * | 1995-10-26 | 1996-01-03 | Sgs Thomson Microelectronics | Cache memory |
US5881278A (en) * | 1995-10-30 | 1999-03-09 | Advanced Micro Devices, Inc. | Return address prediction system which adjusts the contents of return stack storage to enable continued prediction after a mispredicted branch |
US5864707A (en) | 1995-12-11 | 1999-01-26 | Advanced Micro Devices, Inc. | Superscalar microprocessor configured to predict return addresses from a return stack storage |
US5790822A (en) * | 1996-03-21 | 1998-08-04 | Intel Corporation | Method and apparatus for providing a re-ordered instruction cache in a pipelined microprocessor |
US5842008A (en) * | 1996-06-18 | 1998-11-24 | Intel Corporation | Method and apparatus for implementing a branch target buffer cache with multiple BTB banks |
US6170053B1 (en) * | 1996-06-27 | 2001-01-02 | Texas Instruments Incorporated | Microprocessor with circuits, systems and methods for responding to branch instructions based on history of prediction accuracy |
US5864697A (en) * | 1996-06-28 | 1999-01-26 | Texas Instruments Incorporated | Microprocessor using combined actual and speculative branch history prediction |
US5901307A (en) * | 1996-07-22 | 1999-05-04 | International Business Machines Corporation | Processor having a selectively configurable branch prediction unit that can access a branch prediction utilizing bits derived from a plurality of sources |
US5822575A (en) * | 1996-09-12 | 1998-10-13 | Advanced Micro Devices, Inc. | Branch prediction storage for storing branch prediction information such that a corresponding tag may be routed with the branch instruction |
US5875325A (en) * | 1996-09-19 | 1999-02-23 | International Business Machines Corporation | Processor having reduced branch history table size through global branch history compression and method of branch prediction utilizing compressed global branch history |
US5918044A (en) * | 1996-10-31 | 1999-06-29 | International Business Machines Corporation | Apparatus and method for instruction fetching using a multi-port instruction cache directory |
US5954816A (en) * | 1996-11-19 | 1999-09-21 | Advanced Micro Devices, Inc. | Branch selector prediction |
US5995749A (en) | 1996-11-19 | 1999-11-30 | Advanced Micro Devices, Inc. | Branch prediction mechanism employing branch selectors to select a branch prediction |
US5978906A (en) * | 1996-11-19 | 1999-11-02 | Advanced Micro Devices, Inc. | Branch selectors associated with byte ranges within an instruction cache for rapidly identifying branch predictions |
US6253316B1 (en) | 1996-11-19 | 2001-06-26 | Advanced Micro Devices, Inc. | Three state branch history using one bit in a branch prediction mechanism |
DE69727773T2 (de) * | 1996-12-10 | 2004-12-30 | Texas Instruments Inc., Dallas | Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor |
US6871275B1 (en) * | 1996-12-12 | 2005-03-22 | Intel Corporation | Microprocessor having a branch predictor using speculative branch registers |
US6088793A (en) * | 1996-12-30 | 2000-07-11 | Intel Corporation | Method and apparatus for branch execution on a multiple-instruction-set-architecture microprocessor |
US6108775A (en) * | 1996-12-30 | 2000-08-22 | Texas Instruments Incorporated | Dynamically loadable pattern history tables in a multi-task microprocessor |
TW357318B (en) * | 1997-03-18 | 1999-05-01 | Ind Tech Res Inst | Branching forecast and reading device for unspecified command length extra-purity pipeline processor |
JPH10333908A (ja) * | 1997-05-30 | 1998-12-18 | Mitsubishi Electric Corp | 分岐予測方法 |
US6154833A (en) * | 1997-08-11 | 2000-11-28 | Intel Corporation | System for recovering from a concurrent branch target buffer read with a write allocation by invalidating and then reinstating the instruction pointer |
US6101598A (en) * | 1997-11-14 | 2000-08-08 | Cirrus Logic, Inc. | Methods for debugging a multiprocessor system |
US5938761A (en) * | 1997-11-24 | 1999-08-17 | Sun Microsystems | Method and apparatus for branch target prediction |
US5978909A (en) * | 1997-11-26 | 1999-11-02 | Intel Corporation | System for speculative branch target prediction having a dynamic prediction history buffer and a static prediction history buffer |
US6108774A (en) * | 1997-12-19 | 2000-08-22 | Advanced Micro Devices, Inc. | Branch prediction with added selector bits to increase branch prediction capacity and flexibility with minimal added bits |
US6256729B1 (en) * | 1998-01-09 | 2001-07-03 | Sun Microsystems, Inc. | Method and apparatus for resolving multiple branches |
US6289441B1 (en) * | 1998-01-09 | 2001-09-11 | Sun Microsystems, Inc. | Method and apparatus for performing multiple branch predictions per cycle |
US6151671A (en) * | 1998-02-20 | 2000-11-21 | Intel Corporation | System and method of maintaining and utilizing multiple return stack buffers |
US6055630A (en) * | 1998-04-20 | 2000-04-25 | Intel Corporation | System and method for processing a plurality of branch instructions by a plurality of storage devices and pipeline units |
US6081887A (en) * | 1998-05-13 | 2000-06-27 | Compaq Computer Corporation | System for passing an index value with each prediction in forward direction to enable truth predictor to associate truth value with particular branch instruction |
US6493821B1 (en) | 1998-06-09 | 2002-12-10 | Intel Corporation | Recovery from writeback stage event signal or micro-branch misprediction using instruction sequence number indexed state information table |
US6134654A (en) * | 1998-09-16 | 2000-10-17 | Sun Microsystems, Inc. | Bi-level branch target prediction scheme with fetch address prediction |
US6601161B2 (en) | 1998-12-30 | 2003-07-29 | Intel Corporation | Method and system for branch target prediction using path information |
US7275246B1 (en) | 1999-01-28 | 2007-09-25 | Ati International Srl | Executing programs for a first computer architecture on a computer of a second architecture |
US8074055B1 (en) | 1999-01-28 | 2011-12-06 | Ati Technologies Ulc | Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code |
US8065504B2 (en) * | 1999-01-28 | 2011-11-22 | Ati International Srl | Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor |
US7111290B1 (en) | 1999-01-28 | 2006-09-19 | Ati International Srl | Profiling program execution to identify frequently-executed portions and to assist binary translation |
US7065633B1 (en) | 1999-01-28 | 2006-06-20 | Ati International Srl | System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU |
US8127121B2 (en) | 1999-01-28 | 2012-02-28 | Ati Technologies Ulc | Apparatus for executing programs for a first computer architechture on a computer of a second architechture |
US6954923B1 (en) | 1999-01-28 | 2005-10-11 | Ati International Srl | Recording classification of instructions executed by a computer |
US7941647B2 (en) | 1999-01-28 | 2011-05-10 | Ati Technologies Ulc | Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination |
US6978462B1 (en) * | 1999-01-28 | 2005-12-20 | Ati International Srl | Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled |
JP3526773B2 (ja) * | 1999-02-26 | 2004-05-17 | 松下電器産業株式会社 | マルチプロセッサ装置およびその制御方法 |
US6233676B1 (en) * | 1999-03-18 | 2001-05-15 | Ip-First, L.L.C. | Apparatus and method for fast forward branch |
US6526503B1 (en) | 1999-11-04 | 2003-02-25 | International Business Machines Corporation | Apparatus and method for accessing a memory device during speculative instruction branching |
US6633974B1 (en) | 1999-11-04 | 2003-10-14 | International Business Machines Corporation | Apparatus and method for controlling link stack corruption during speculative instruction branching using multiple stacks |
US6502188B1 (en) | 1999-11-16 | 2002-12-31 | Advanced Micro Devices, Inc. | Dynamic classification of conditional branches in global history branch prediction |
US6934832B1 (en) | 2000-01-18 | 2005-08-23 | Ati International Srl | Exception mechanism for a computer |
US6470438B1 (en) * | 2000-02-22 | 2002-10-22 | Hewlett-Packard Company | Methods and apparatus for reducing false hits in a non-tagged, n-way cache |
US6918028B1 (en) * | 2000-03-28 | 2005-07-12 | Analog Devices, Inc. | Pipelined processor including a loosely coupled side pipe |
US7496734B1 (en) * | 2000-04-28 | 2009-02-24 | Stmicroelectronics, Inc. | System and method for handling register dependency in a stack-based pipelined processor |
US6910124B1 (en) | 2000-05-02 | 2005-06-21 | International Business Machines Corporation | Apparatus and method for recovering a link stack from mis-speculation |
JP3729064B2 (ja) * | 2000-11-29 | 2005-12-21 | 日本電気株式会社 | データ依存関係検出装置 |
US6859874B2 (en) * | 2001-09-24 | 2005-02-22 | Broadcom Corporation | Method for identifying basic blocks with conditional delay slot instructions |
US6785804B2 (en) * | 2001-05-17 | 2004-08-31 | Broadcom Corporation | Use of tags to cancel a conditional branch delay slot instruction |
US6883090B2 (en) * | 2001-05-17 | 2005-04-19 | Broadcom Corporation | Method for cancelling conditional delay slot instructions |
US6934796B1 (en) * | 2002-02-01 | 2005-08-23 | Netlogic Microsystems, Inc. | Content addressable memory with hashing function |
US6697276B1 (en) | 2002-02-01 | 2004-02-24 | Netlogic Microsystems, Inc. | Content addressable memory device |
US7382637B1 (en) | 2002-02-01 | 2008-06-03 | Netlogic Microsystems, Inc. | Block-writable content addressable memory device |
US6954849B2 (en) * | 2002-02-21 | 2005-10-11 | Intel Corporation | Method and system to use and maintain a return buffer |
KR100468618B1 (ko) * | 2002-03-28 | 2005-01-31 | 매그나칩 반도체 유한회사 | 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의분기 예측 장치 |
US7082520B2 (en) * | 2002-05-09 | 2006-07-25 | International Business Machines Corporation | Branch prediction utilizing both a branch target buffer and a multiple target table |
US20030225992A1 (en) * | 2002-05-29 | 2003-12-04 | Balakrishna Venkatrao | Method and system for compression of address tags in memory structures |
JP3851235B2 (ja) | 2002-06-28 | 2006-11-29 | 富士通株式会社 | 分岐予測装置および分岐予測方法 |
FR2849226B1 (fr) * | 2002-12-20 | 2005-12-02 | Oberthur Card Syst Sa | Procede et dispositif de securisation de l'execution d'un programme informatique. |
US6925928B2 (en) * | 2003-09-18 | 2005-08-09 | Anthony Fox | Trash compactor for fast food restaurant waste |
KR100591769B1 (ko) * | 2004-07-16 | 2006-06-26 | 삼성전자주식회사 | 분기 예측 정보를 가지는 분기 타겟 버퍼 |
US7752426B2 (en) * | 2004-08-30 | 2010-07-06 | Texas Instruments Incorporated | Processes, circuits, devices, and systems for branch prediction and other processor improvements |
US7426631B2 (en) * | 2005-02-02 | 2008-09-16 | International Business Machines Corporation | Methods and systems for storing branch information in an address table of a processor |
US7437543B2 (en) * | 2005-04-19 | 2008-10-14 | International Business Machines Corporation | Reducing the fetch time of target instructions of a predicted taken branch instruction |
US20070061555A1 (en) * | 2005-09-15 | 2007-03-15 | St Clair Michael | Call return tracking technique |
WO2007099604A1 (ja) * | 2006-02-28 | 2007-09-07 | Fujitsu Limited | コンピュータの分岐予測装置 |
JP5136405B2 (ja) * | 2006-02-28 | 2013-02-06 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US7574586B2 (en) * | 2006-05-16 | 2009-08-11 | Texas Instruments Incorporated | Efficient transfer of branch information |
US7827392B2 (en) * | 2006-06-05 | 2010-11-02 | Qualcomm Incorporated | Sliding-window, block-based branch target address cache |
US9146745B2 (en) * | 2006-06-29 | 2015-09-29 | Intel Corporation | Method and apparatus for partitioned pipelined execution of multiple execution threads |
US8261130B2 (en) * | 2007-03-02 | 2012-09-04 | Infineon Technologies Ag | Program code trace signature |
US7664941B2 (en) * | 2007-06-28 | 2010-02-16 | Faraday Technology Corp. | Branch prediction methods and devices capable of predicting first taken branch instruction within plurality of fetched instructions |
US8909907B2 (en) * | 2008-02-12 | 2014-12-09 | International Business Machines Corporation | Reducing branch prediction latency using a branch target buffer with a most recently used column prediction |
US7913068B2 (en) * | 2008-02-21 | 2011-03-22 | International Business Machines Corporation | System and method for providing asynchronous dynamic millicode entry prediction |
US7873818B2 (en) * | 2008-02-22 | 2011-01-18 | International Business Machines Corporation | System and method for search area confined branch prediction |
US8181005B2 (en) * | 2008-09-05 | 2012-05-15 | Advanced Micro Devices, Inc. | Hybrid branch prediction device with sparse and dense prediction caches |
US20100191943A1 (en) * | 2009-01-26 | 2010-07-29 | Agere Systems Inc. | Coordination between a branch-target-buffer circuit and an instruction cache |
CN101840330B (zh) * | 2009-07-15 | 2014-02-12 | 威盛电子股份有限公司 | 一种微处理器和其信息储存方法 |
US8281110B2 (en) * | 2009-07-15 | 2012-10-02 | Via Technologies, Inc. | Out-of-order microprocessor with separate branch information circular queue table tagged by branch instructions in reorder buffer to reduce unnecessary space in buffer |
CN102117198B (zh) * | 2009-12-31 | 2015-07-15 | 上海芯豪微电子有限公司 | 一种分支处理方法 |
US20140019722A1 (en) * | 2011-03-31 | 2014-01-16 | Renesas Electronics Corporation | Processor and instruction processing method of processor |
US8458447B2 (en) * | 2011-06-17 | 2013-06-04 | Freescale Semiconductor, Inc. | Branch target buffer addressing in a data processor |
US9354886B2 (en) * | 2011-11-28 | 2016-05-31 | Apple Inc. | Maintaining the integrity of an execution return address stack |
US9235419B2 (en) | 2012-06-11 | 2016-01-12 | International Business Machines Corporation | Branch target buffer preload table |
US9229723B2 (en) | 2012-06-11 | 2016-01-05 | International Business Machines Corporation | Global weak pattern history table filtering |
US9280351B2 (en) | 2012-06-15 | 2016-03-08 | International Business Machines Corporation | Second-level branch target buffer bulk transfer filtering |
US9430241B2 (en) | 2012-06-15 | 2016-08-30 | International Business Machines Corporation | Semi-exclusive second-level branch target buffer |
US9298465B2 (en) | 2012-06-15 | 2016-03-29 | International Business Machines Corporation | Asynchronous lookahead hierarchical branch prediction |
US20140025894A1 (en) * | 2012-07-18 | 2014-01-23 | Electronics And Telecommunications Research Institute | Processor using branch instruction execution cache and method of operating the same |
US9395984B2 (en) | 2012-09-12 | 2016-07-19 | Qualcomm Incorporated | Swapping branch direction history(ies) in response to a branch prediction table swap instruction(s), and related systems and methods |
US9645824B2 (en) * | 2012-10-31 | 2017-05-09 | Arm Limited | Branch target address cache using hashed fetch addresses |
JP6179093B2 (ja) * | 2012-12-03 | 2017-08-16 | 富士通株式会社 | 演算処理装置、演算処理方法 |
US9405544B2 (en) | 2013-05-14 | 2016-08-02 | Apple Inc. | Next fetch predictor return address stack |
US10127044B2 (en) * | 2013-10-25 | 2018-11-13 | Advanced Micro Devices, Inc. | Bandwidth increase in branch prediction unit and level 1 instruction cache |
US9563430B2 (en) | 2014-03-19 | 2017-02-07 | International Business Machines Corporation | Dynamic thread sharing in branch prediction structures |
US9690587B2 (en) | 2014-04-08 | 2017-06-27 | International Business Machines Corporation | Variable updates of branch prediction states |
GB2528676B (en) * | 2014-07-25 | 2016-10-26 | Imagination Tech Ltd | Conditional Branch Prediction Using A Long History |
US10534611B2 (en) | 2014-07-31 | 2020-01-14 | International Business Machines Corporation | Branch prediction using multi-way pattern history table (PHT) and global path vector (GPV) |
US9619385B2 (en) | 2015-02-25 | 2017-04-11 | International Business Machines Corporation | Single thread cache miss rate estimation |
US10642615B2 (en) * | 2018-04-27 | 2020-05-05 | International Business Machines Corporation | System and method for dynamic accuracy and threshold control for branch classification |
GB2539037B (en) * | 2015-06-05 | 2020-11-04 | Advanced Risc Mach Ltd | Apparatus having processing pipeline with first and second execution circuitry, and method |
US9442726B1 (en) | 2015-12-15 | 2016-09-13 | International Business Machines Corporation | Perceptron branch predictor with virtualized weights |
US10908902B2 (en) | 2016-05-26 | 2021-02-02 | International Business Machines Corporation | Distance based branch prediction and detection of potential call and potential return instructions |
US10430195B2 (en) | 2016-06-27 | 2019-10-01 | International Business Machines Corporation | Stream based branch prediction index accelerator with power prediction |
US10423419B2 (en) | 2016-06-27 | 2019-09-24 | International Business Machines Corporation | Stream based branch prediction index accelerator for multiple stream exits |
US10592248B2 (en) * | 2016-08-30 | 2020-03-17 | Advanced Micro Devices, Inc. | Branch target buffer compression |
US10747539B1 (en) | 2016-11-14 | 2020-08-18 | Apple Inc. | Scan-on-fill next fetch target prediction |
US10394559B2 (en) | 2016-12-13 | 2019-08-27 | International Business Machines Corporation | Branch predictor search qualification using stream length prediction |
US10732979B2 (en) | 2018-06-18 | 2020-08-04 | Advanced Micro Devices, Inc. | Selectively performing ahead branch prediction based on types of branch instructions |
GB2577051B (en) * | 2018-09-11 | 2021-03-03 | Advanced Risc Mach Ltd | Branch prediction using branch target buffer |
GB2578573B (en) * | 2018-10-30 | 2021-09-08 | Advanced Risc Mach Ltd | Technique for maintaining data values in a prediction register that are used to predict whether a branch represented by a branch instruction will be taken. |
US11321095B2 (en) * | 2018-12-14 | 2022-05-03 | Apple Inc. | Indirect branch predictor security protection |
US20220121446A1 (en) * | 2020-10-15 | 2022-04-21 | Centaur Technology, Inc. | Quick predictor override |
US20230214222A1 (en) * | 2021-12-30 | 2023-07-06 | Arm Limited | Methods and apparatus for storing instruction information |
CN116719561B (zh) * | 2023-08-09 | 2023-10-31 | 芯砺智能科技(上海)有限公司 | 一种条件分支指令的处理系统和方法 |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0109655B1 (de) * | 1982-11-17 | 1991-07-24 | Nec Corporation | Anordnung zum Vorabholen von Befehlen mit Vorhersage einer Verzweigungszieladresse |
US4679141A (en) * | 1985-04-29 | 1987-07-07 | International Business Machines Corporation | Pageable branch history table |
US4763245A (en) * | 1985-10-30 | 1988-08-09 | International Business Machines Corporation | Branch prediction mechanism in which a branch history table is updated using an operand sensitive branch table |
DE3785897T2 (de) * | 1986-02-28 | 1993-09-30 | Nec Corp | Steuervorrichtung zum vorabruf von befehlen. |
JPS6393038A (ja) * | 1986-10-07 | 1988-04-23 | Mitsubishi Electric Corp | 計算機 |
US4894772A (en) * | 1987-07-31 | 1990-01-16 | Prime Computer, Inc. | Method and apparatus for qualifying branch cache entries |
US4860197A (en) * | 1987-07-31 | 1989-08-22 | Prime Computer, Inc. | Branch cache system with instruction boundary determination independent of parcel boundary |
US5142634A (en) * | 1989-02-03 | 1992-08-25 | Digital Equipment Corporation | Branch prediction |
US5210831A (en) * | 1989-10-30 | 1993-05-11 | International Business Machines Corporation | Methods and apparatus for insulating a branch prediction mechanism from data dependent branch table updates that result from variable test operand locations |
US5093778A (en) * | 1990-02-26 | 1992-03-03 | Nexgen Microsystems | Integrated single structure branch prediction cache |
US5283873A (en) * | 1990-06-29 | 1994-02-01 | Digital Equipment Corporation | Next line prediction apparatus for a pipelined computed system |
US5265213A (en) * | 1990-12-10 | 1993-11-23 | Intel Corporation | Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction |
US5414822A (en) * | 1991-04-05 | 1995-05-09 | Kabushiki Kaisha Toshiba | Method and apparatus for branch prediction using branch prediction table with improved branch prediction effectiveness |
US5333283A (en) * | 1991-10-29 | 1994-07-26 | International Business Machines Corporation | Case block table for predicting the outcome of blocks of conditional branches having a common operand |
AU3776793A (en) * | 1992-02-27 | 1993-09-13 | Intel Corporation | Dynamic flow instruction cache memory |
US5423011A (en) * | 1992-06-11 | 1995-06-06 | International Business Machines Corporation | Apparatus for initializing branch prediction information |
JP2614686B2 (ja) * | 1992-06-30 | 1997-05-28 | 住友軽金属工業株式会社 | 形状凍結性及び塗装焼付硬化性に優れた成形加工用アルミニウム合金の製造方法 |
US5367703A (en) * | 1993-01-08 | 1994-11-22 | International Business Machines Corporation | Method and system for enhanced branch history prediction accuracy in a superscalar processor system |
KR100310581B1 (ko) * | 1993-05-14 | 2001-12-17 | 피터 엔. 데트킨 | 분기목표버퍼의추측기록메카니즘 |
US5577217A (en) * | 1993-05-14 | 1996-11-19 | Intel Corporation | Method and apparatus for a branch target buffer with shared branch pattern tables for associated branch predictions |
US5454117A (en) * | 1993-08-25 | 1995-09-26 | Nexgen, Inc. | Configurable branch prediction for a processor performing speculative execution |
US5604877A (en) * | 1994-01-04 | 1997-02-18 | Intel Corporation | Method and apparatus for resolving return from subroutine instructions in a computer processor |
US5574871A (en) * | 1994-01-04 | 1996-11-12 | Intel Corporation | Method and apparatus for implementing a set-associative branch target buffer |
JP3494484B2 (ja) * | 1994-10-12 | 2004-02-09 | 株式会社ルネサステクノロジ | 命令処理装置 |
JP3494736B2 (ja) * | 1995-02-27 | 2004-02-09 | 株式会社ルネサステクノロジ | 分岐先バッファを用いた分岐予測システム |
US5764946A (en) * | 1995-04-12 | 1998-06-09 | Advanced Micro Devices | Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address |
US5860104A (en) * | 1995-08-31 | 1999-01-12 | Advanced Micro Devices, Inc. | Data cache which speculatively updates a predicted data cache storage location with store data and subsequently corrects mispredicted updates |
US5842008A (en) * | 1996-06-18 | 1998-11-24 | Intel Corporation | Method and apparatus for implementing a branch target buffer cache with multiple BTB banks |
US5774710A (en) * | 1996-09-19 | 1998-06-30 | Advanced Micro Devices, Inc. | Cache line branch prediction scheme that shares among sets of a set associative cache |
-
1994
- 1994-01-04 US US08/177,155 patent/US5574871A/en not_active Expired - Lifetime
- 1994-12-20 GB GB9425726A patent/GB2285526B/en not_active Expired - Fee Related
- 1994-12-20 SG SG1996001862A patent/SG50456A1/en unknown
- 1994-12-29 JP JP34032194A patent/JP3548255B2/ja not_active Expired - Fee Related
- 1994-12-30 DE DE4447238A patent/DE4447238B4/de not_active Expired - Fee Related
-
1996
- 1996-07-29 US US08/687,975 patent/US5706492A/en not_active Expired - Lifetime
-
1997
- 1997-09-16 US US08/931,807 patent/US5903751A/en not_active Expired - Lifetime
-
1998
- 1998-10-07 US US09/168,305 patent/US5944817A/en not_active Expired - Lifetime
- 1998-12-17 HK HK98113950A patent/HK1012743A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
DE4447238B4 (de) | 2005-08-18 |
GB9425726D0 (en) | 1995-02-22 |
JP3548255B2 (ja) | 2004-07-28 |
US5944817A (en) | 1999-08-31 |
GB2285526A (en) | 1995-07-12 |
JPH07210383A (ja) | 1995-08-11 |
GB2285526B (en) | 1998-11-18 |
HK1012743A1 (en) | 1999-08-06 |
US5903751A (en) | 1999-05-11 |
US5706492A (en) | 1998-01-06 |
US5574871A (en) | 1996-11-12 |
SG50456A1 (en) | 1998-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE4447238B4 (de) | Schaltungsanordnung und Verfahren zum Gewinnen von Informationen zur Verzweigungsvorhersage | |
DE69433339T2 (de) | Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren | |
DE69932066T2 (de) | Mechanismus zur "store-to-load forwarding" | |
DE69534148T2 (de) | Rechnersystem zur Ausführung von Verzweigungsbefehlen | |
DE112004002848B4 (de) | Mikroprozessor und Verfahren zum Verifizieren einer Speicherdatei in einem derartigen Mikroprozessor | |
DE19983860B4 (de) | Ein Verfahren und eine Einrichtung zur verbesserten Prädikatvorhersage | |
DE69434728T2 (de) | Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel | |
DE69835100T2 (de) | Prozessor konfiguriert um vorausschauende resultate von zusammengefassten übertragungs-, vergleichs- und einfachen arithmetischen befehlen zu produzieren | |
DE69724771T2 (de) | Zentralprozessoreinheit mit x86 und dsp kern und einem dsp funktions-dekoder zum abbilden von x 86-befehlen auf dsp-befehle | |
DE19781850B4 (de) | Mikroprozessor zum spekulativen Ausführen von Befehlen aus mehreren von einem Verzweigungsbefehl angezeigten Befehlsströmen, Verfahren und Computersystem mit Mikroprozessor | |
DE69636416T2 (de) | Mikroprozessor ausgelegt zum erkennen eines unterprogramm-aufrufs einer dsp-routine und zum ansteuern eines dsp, diese routine auszuführen | |
DE69434669T2 (de) | Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge | |
DE69233313T2 (de) | Hochleistungsarchitektur für RISC-Mikroprozessor | |
DE69727773T2 (de) | Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor | |
DE69929936T2 (de) | Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem | |
DE69738188T2 (de) | Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor | |
DE60025028T2 (de) | Speicherpuffer, der daten, basierend auf index und freiwilliger weisebemusterung überträgt | |
DE60203612T2 (de) | Datenverarbeitung mit mehrfachbefehlssätzen | |
DE69836902T2 (de) | Auf variable instruktionen eingestellter computer | |
DE60005860T2 (de) | Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle | |
DE69633474T2 (de) | Adressierungsverfahren zur nicht-sequentiellen Ausführung von Ladebefehlen hinsichtlich Speicherungsbefehlen | |
DE102004013676A1 (de) | Schleifenbetrieb mit null Overhead in einem Mikroprozessor mit Anweisungspuffer | |
DE69734403T2 (de) | Verfahren im bezug auf die behandlung von konditionellen sprüngen in einer multietagen-pipeline-struktur | |
DE4335475A1 (de) | Datenverarbeitungseinrichtung mit Cache-Speicher | |
DE4301417A1 (de) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
8125 | Change of the main classification |
Ipc: G06F 9/38 |
|
8364 | No opposition during term of opposition | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |
Effective date: 20110701 |