DE69327927T2 - Schnelles Vorausholen und Zuteilung von Befehlen mittels vorausschauender Anmerkungen von früher vorausgeholten - Google Patents
Schnelles Vorausholen und Zuteilung von Befehlen mittels vorausschauender Anmerkungen von früher vorausgeholtenInfo
- Publication number
- DE69327927T2 DE69327927T2 DE69327927T DE69327927T DE69327927T2 DE 69327927 T2 DE69327927 T2 DE 69327927T2 DE 69327927 T DE69327927 T DE 69327927T DE 69327927 T DE69327927 T DE 69327927T DE 69327927 T2 DE69327927 T2 DE 69327927T2
- Authority
- DE
- Germany
- Prior art keywords
- instruction
- address
- cache
- computer system
- branch
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims 5
- 238000013459 approach Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 238000003491 array Methods 0.000 description 5
- 230000007423 decrease Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
- Die vorliegende Erfindung bezieht sich auf das Gebiet der Computersysteme. Insbesondere bezieht sich die vorliegende Erfindung auf das Vorabrufen und die Abfertigung von Befehlen auf Computersystemen.
- Früher wurde bei der Abfertigung eines Verzweigungsbefehls das Abrufen und die Abfertigung von Befehlen auf einem Computersystem solange angehalten, bis die Verzweigungsrichtung und die Zieladresse aufgelöst waren. Da die Folge dieses "Leerlauf-Ansatzes" eine niedrigere Systemleistung war, wird er in den heutigen Hochleistungscomputern selten verwendet. Um eine höhere Systemleistung zu erreichen, wurden verschiedene Techniken entwickelt, um mit dem Abrufen und der Abfertigung von Befehlen effektiv fortzufahren, ohne auf die Auflösung der Verzweigungsrichtung warten zu müssen. Ein wesentlicher Punkt für die effektive Weiterbearbeitung des Vorabrufens und Abfertigens von Befehlen ist die Fähigkeit, die Verzweigungsrichtung vorherzusagen. Es gibt verschiedene allgemein bekannte Ansätze für die Vorhersage der Verzweigungsrichtung:
- 1. Statische Vorhersage: Bei diesem Ansatz sagt der Verzweigungsvorhersagealgorithmus immer dieselbe Richtung vorher, nämlich die Richtung, die als die Richtung mit der höheren Wahrscheinlichkeit festgelegt ist. Ein Beispiel dafür die Richtung "Verzweigung genommen".
- 2. Dynamische Software-Vorhersage: Bei diesem Ansatz sagt der Verzweigungsvorhersagealgorithmus die Verzweigungsrichtung unter Nutzung von Hinweisen des Software-Verzweigungsvorhersagebits vorher.
- 3. Dynamische Hardware-Vorhersage: Bei diesem Ansatz sagt der Verzweigungsvorhersagealgorithmus die Verzweigungsrichtung aufgrund der Informationen zur Verzweigungsvorgeschichte vorher, die in einer Verzweigungsvorhersagetabelle enthalten sind.
- Der Ansatz der statischen Vorhersage ist einfach zu implementieren, aber die Trefferquote der Vorhersagen beträgt im allgemeinen weniger als 75%. Eine solche Trefferquote ist im allgemeinen zu niedrig für eine hohe Skalarität und/oder Hochleistungscomputer, da die Kosten, um eine Fehlvorhersage auszugleichen, hoch sind. Der Ansatz der dynamischen Software-Vorhersage funktioniert in der Regel sehr gut, wenn sie in Verbindung mit der als "Trace-Scheduling" bekannten Kompilierungstechnik angewandt wird. Ohne Trace- Scheduling ist die Trefferquote bei Vorhersagen allgemein sehr schlecht. Leider ist Trace-Scheduling auf einige Programme und Implementierungen ziemlich schwierig anzuwenden. Die dynamische Hardware-Vorhersage hat im allgemeinen eine ziemlich hohe Trefferquote bei den Vorhersagen. Aber sie erhöht die Komplexität des Aufbaus und macht die Verwendung von zusätzlicher Hardware zur Aufnahme der selbständigen 2 Verzweigungsvorhersagetabelle notwendig. Außerdem ist es ziemlich schwierig, die Größe der Verzweigungsvorhersagetabelle entsprechend der ständig zunehmenden Cache-Größe oder der ständig zunehmenden Ausführungsrate zu erhöhen. Außerdem wird die Komplexität zur Wahrung der Cache-Kohärenz erhöht.
- Daher ist es erstrebenswert, einen Ansatz zu haben, der eine in hohem Maße zuverlässige Trefferquote bei der Verzweigungsvorhersage liefert, ohne daß die Komplexität und/oder die Hardware wesentlich umfangreicher wird. Weiterhin ist es erstrebenswert, daß dieser Ansatz einfach zu erweitern wäre, um mit der ständig zunehmenden Cache-Größe und der ständig anwachsenden Geschwindigkeit der Zentraleinheit Schritt zu halten.
- Weiterhin ist es bei so einem Ansatz für eine in hohen Maße zuverlässige Verzweigungsvorhersage sinnlos, einen Großteil der Leistungsfähigkeit, die man gewonnen hat, darauf zu verwenden, die nächste Heranholadresse festzulegen, unabhängig davon, ob es die Zieladresse oder die nächste sequentielle Heranholadresse ist. Daher ist es weiterhin erstrebenswert, daß der Ansatz auch eine in hohem Maße zuverlässige dynamische Vorhersage über die nächste Heranholadresse liefert. Ebenso macht es keinen Sinn, einen Großteil der gewonnenen Leistung auf das Vorabrufen von Befehlen zur Steuerübertragung zu verwenden. Daher ist es weiterhin erstrebenswert, daß der Ansatz das Vorabrufen der Steuerübertragung mit einer Verzögerungszeit von Null gewährleistet.
- EP-A-0 401 992 (Advanced Micro Devices, Inc.) offenbart ein Verfahren und eine Vorrichtung zur Beschleunigung von Verzweigungsbefehlen, die die dynamische Verzweigungsvorhersage anwenden.
- Wie hier im folgenden offenbart ist, liefert die vorliegende Erfindung, wie sie in den nachstehenden Ansprüchen definiert ist, ein Verfahren und eine Vorrichtung zum schnellen Vorabrufen und zur schnellen Abfertigung von Befehlen unter der Verwendung von früheren Abfertigungsvorhersageanmerkungen, auch bekannt als In-Cache-Vorhersage, die die oben beschriebenen Ziele erreicht und die angestrebten Ergebnisse liefert.
- Offenbart werden ein Verfahren und eine Vorrichtung zum schnellen Vorabrufen und zur schnellen Abfertigung von Befehlen unter Verwendung einer früheren Abfertigungsvorhersageanmerkung, auch bekannt als In-Cache-Vorhersage. Es werden m Verzweigungsvorhersagefelder (BRPD-Felder) zu jedem Befehlssatz von n Befehlen jeder Cache-Zeile eines Befehls- Caches hinzugefügt, wobei m kleiner oder gleich n ist. Die m BRPD-Felder werden benötigt, um m Verzweigungsvorhersagen für m "dominante" Befehle' der n entsprechenden Befehle zu speichern. Die BRPD-Felder einer Cache-Zeile werden entsprechend einer festgelegten Initialisierungsvorgehensweise eines Verzweigungsvorhersagealgorithmus initialisiert, während die Cache-Zeile erstmals in den Befehls-Cache eingebracht wird. Gleichzeitig mit den entsprechenden Befehlssätzen der Cache-Zeile wird auf die BRPD-Sätze der Cache- Zeile zugegriffen. Eine BRPD wird aus dem dem ausgewählten Befehlssatz entsprechenden BRPD-Satz ausgewählt. Die ausgewählte BRPD wird entsprechend einer festgelegten Aktualisierungsvorgehensweise des Verzweigungsvorhersagealgorithmus aktualisiert, wenn die tatsächliche Verzweigungsrichtung aufgelöst wird.
- Weiterhin werden jedem Befehlssatz von n Befehlen jeder Cache-Zeile des Befehls-Caches k Nächste-Heranholadresse- Vorhersage-Felder (NFAPD-Felder) gegeben, wobei k kleiner oder gleich m ist. Die k NFAPD-Felder werden dazu verwendet, die k Vorhersagen über die nächste Heranholadresse für k "dominante" Befehle der n entsprechenden Befehle zu spei- g chern. Die NFAPDs sagen die nächsten Zieladressen der entsprechenden "dominanten" Befehle vorher, wenn die entsprechenden BRPD-Felder vorhersa en, daß "die Verzweigung genommen wird"; sonst sagen sie die nächsten sequentiellen Adressen der entsprechenden "dominanten" Befehle vorher. Ähnlich den BRPD-Feldern werden die NFAPD-Felder einer Cache-Zeile entsprechend einer festgelegten Initialisierungsvorgehensweise eines Vorhersagealgorithmus für die nächste Heranholadresse initialisiert, während die Cache-Zeile erstmals in den Befehls-Cache eingebracht wird. Auf die NFAPD-Sätze einer Cache-Zeile wird außerdem gleichzeitig mit den entsprechenden Befehlssätzen der Cache-Zeile zugegriffen. Eine NFAPD wird aus dem dem ausgewählten Befehlssatz entsprechenden NFAPD-Satz ausgewählt. Die ausgewählte NFAPD wird entsprechend einer festgelegten Aktualisierungsvorgehensweise des Vorhersagealgorithmus für die nächste Heranholadresse aktualisiert, wenn die tatsächliche nächste Heranholadresse bestimmt wird.
- Die ausgewählte NFAPD wird sofort im Register für die nächste Heranholadresse (NFA-Register) der Befehlsvorabruf- und -abfertigungseinheit gespeichert; die ausgewählte NFAPD kann so als die NFA für den nächsten Befehls-Cache-Zugriff verwendet werden. Die NFA (d. h. die ausgewählte NFAPD des vorhergehenden Befehls-Cache-Zugriffs) wird außerdem dazu verwendet, die BRPD und die NFAPD während des nächsten Befehls-Cache-Zugriffs auszuwählen. Im Ergebnis können Befehle sowohl entlang des sequentiellen Pfads als auch entlang des Zieladressenpfads ständig mit einer Vorabrufverzögerungszeit von Null vorabgerufen werden.
- Weiterhin werden zu jedem Satz von n Befehlen jeder Cache-Zeile des Befehls-Caches n Befehlsklassen-Felder (IKlassen-Felder) hinzugefügt. Die n IKlassen-Felder werden verwendet, um n Befehlsklassen für die n entsprechenden Befehle zu speichern. Die Befehlsklassen einer Cache-Zeile werden entweder vorbestimmt und vorgespeichert, bevor die Cache-Zeile erstmals in den Befehls-Cache eingebracht wird oder sie werden bestimmt und gespeichert, während die Cache- Zeile erstmals in den Befehls-Cache eingebracht wird. Ähnlich den BRPDs und die NFAPDs wird auf die IKlassen-Sätze einer Cache-Zeile gleichzeitig mit den entsprechenden Befehlssätzen der Cache-Zeile zugegriffen. Eine IKlasse wird aus dem dem ausgewählten Befehlssatz entsprechenden IKlassen-Satz ausgewählt. Die NFA wird auch dazu verwendet, die IKlasse auszuwählen. Die ausgewählte IKlasse wird in Verbindung mit der tatsächlich genommenen Verzweigungsrichtung und der tatsächlichen nächsten Heranholadresse, die durch die festgelegten BRPD- und NFAPD-Aktualisierungsvorgehensweisen bestimmt wurde, verwendet, um die angemessenen Aktualisierungsoperationen vorzuschreiben.
- Bei einem Ausführungsbeispiel ist n gleich 4, und m und k sind beide gleich 1. Jedes BRPD-Feld einer eingehenden Cache-Zeile wird so initialisiert, daß für alle Klassen von Steuerübertragungsbefehlen "Verzweigung wird nicht genommen" vorhergesagt wird. Wenn andererseits ein ausgewähltes BRPD- Feld der Cache-Zeile, auf die zugegriffen wird, die Verzweigungsrichtung richtig vorhersagt, wird es nicht aktualisiert. Wenn das ausgewählte BRPD-Feld der Cache-Zeile, auf die zugegriffen wird, die Verzweigungsrichtung falsch vorhersagt, wird es mit der tatsächlich genommenen Verzweigungsrichtung aktualisiert. Für alle Klassen von Steuerübertragungsbefehlen werden die NFAPD-Felder einer eingehenden Cache-Zeile so initialisiert, daß sie die entsprechenden nächsten Heranholadressen so vorhersagen, daß sie gleich der Summe des aktuellen Befehlszählers plus der Cache-Heranholgröße sind. Wenn das ausgewählte NFAPD-Feld einer Cache- Zeile, auf die zugegriffen wird, die nächste Heranholadresse richtig vorhersagt, wird es nicht aktualisiert. Wenn andererseits das ausgewählte NFAPD-Feld einer Cache-Zeile, auf die zugegriffen wird, die nächste Heranholadresse falsch vorhersagt, wird es mit der tatsächlichen nächsten Heranhol- adresse aktualisiert, wenn die Verzweigungsrichtung richtig vorhergesagt wurde; anderenfalls wird es mit einer Adresse aktualisiert, die gleich der Summe des aktuellen Befehlszählers plus der Cache-Heranholgröße ist.
- Bei einem weiteren Ausführungsbeispiel wird ein ausgewähltes BRPD-Feld der Cache-Zeile, auf die zugegriffen wird, mit der richtigen Verzweigungsrichtungsvorhersage aktualisiert, auch wenn es die Verzweigungsrichtung richtig vorhersagt.
- Aus der nun folgenden detaillierten Beschreibung der bevorzugten Ausführungsform der Erfindung werden die Ziele, Merkmale und Vorteile der vorliegenden Erfindung deutlich werden. Dabei wird Bezug auf die Zeichnungen genommen, wobei
- Fig. 1 ein Funktionsdiagramm eines Computersystems ist, das die Lehren der vorliegenden Erfindung aufweist.
- Fig. 2 stellt den Befehls-Cache der vorliegenden Erfindung dar.
- Fig. 3 stellt die Befehlsklassen-Felder, die Verzweigungsvorhersage-Felder und die Nächste-Heranholadresse- Vorhersage-Felder der vorliegenden Erfindung dar.
- Fig. 4 zeigt beispielhaft den Inhalt der Verzweigungs- vorhersage-Felder und der Nächste-Heranholadresse-Vorher- sage-Felder für eine beispielhafte Satzvorhersageanmerkung in verschiedenen Szenarien für eine Ausführungsform des Befehls-Caches.
- Fig. 5a bis 5b stellen zwei Ausführungsformen der Auswahllogik des Befehls-Caches dar.
- Fig. 6a bis 6b veranschaulichen Verzweigungsvorhersage-Treffer-, Nächste-Heranholadresse-Vorhersage-Trefferund Nächste-Heranholadresse-Bestimmungen durch die Befehls- vorabruf- und -abfertigungseinheit der vorliegenden Erfindung.
- Fig. 7 stellt den Arbeitsfluß des Befehls-Caches der vorliegenden Erfindung dar.
- Fig. 8a bis 8b veranschaulichen den Arbeitsfluß der Vorabruf- und Abfertigungseinheit der vorliegenden Erfindung.
- Fig. 9a bis 9c veranschaulichen die Initialisierungs- und Aktualisierungsvorgehensweise eines bestimmten Vorhersagealgorithmus für eine Verzweigung und die nächste Heranholadresse.
- Offenbart werden ein Verfahren und eine Vorrichtung zur , schnellen Befehlsabfertigung unter Verwendung von früheren Abfertigungsvorhersageanmerkungen, auch bekannt als In- Cache-Vorhersage. Besonders kann die vorliegende Erfindung in Computersystemen angewendet werden, in denen ein in hohem Maße effizientes Befehlsvorabrufen und -abfertigen angestrebt wird. In der folgenden Beschreibung werden zur anschaulicheren Darstellung spezielle Zahlen, Materialien und Konfigurationen genannt, um ein tiefgehendes Verständnis der vorliegenden Erfindung zu gewährleisten. Für den Fachmann ist jedoch klar, daß die vorliegende Erfindung ohne diese speziellen Einzelheiten ausgeführt werden kann. an anderen Stellen werden allgemein bekannte Systeme in graphischer Form oder als Blockdiagramme gezeigt, um die vorliegende Erfindung nicht unnötig zu verschleiern.
- Nun wird, bezugnehmend auf Fig. 1, ein funktionales Blockdiagramm gezeigt, das ein Computersystem darstellt, das den Lehren der vorliegenden Erfindung folgt. Es wird ein Computersystem 10 gezeigt, das eine mit einer Anzahl von Ausführungseinheiten 14 verbundene Befehlsvorabruf- und - abfertigungseinheit 12 aufweist. Das Computersystem 10 weist weiterhin einen Befehls-Lache 16 und einen mit einer Speichereinheit 20 verbundenen Daten-Lache 18 auf. Der Befehls- und der Daten-Lache, 16 und 18, sind ferner jeweils mit der Befehlsvorabruf- und -abfertigungseinheit 12 und den Ausführungseinheiten 14 gekoppelt. Zusätzlich weist das Computersystem 10 eine mit der Befehlsvorabruf- und -abfertigungseinheit 12, dem Befehls- und Daten-Lache, 16 und 18, und der Speichereinheit 20 verbundene Speichermanagementeinheit 22 auf. Sie rufen gemeinsam Befehle aus der Speichereinheit 20 ab, senden diese zur Ausführung an die Ausführungseinheiten 14 und speichern die Ausführungsergebnisse wieder in der Speichereinheit 20. Abgesehen von der Befehlsvorabruf- und -abfertigungseinheit 12 und dem Befehls-Cache 16 sollen die anderen Elemente 14 und 18 bis 22, ein breites Spektrum dieser Elemente, die in, den meisten, Computersystemen vorhanden sind, repräsentieren. Der Aufbau und die grundsätzlichen Funktionen dieser anderen Elemente 14 und 18 bis 22 sind allgemein bekannt und werden nicht weiter beschrieben. Die Befehlsvorabruf- und -abfertigungs- einheit 12 und das Befehls-Cache 16 werden im folgenden in weiteren Einzelheiten beschrieben. Dabei wird Bezug auf die restlichen Figuren genommen.
- Obwohl die vorliegende Erfindung anhand des in Fig. 1 dargestellten Computersystems aufgrund der folgenden Beschreibung beschrieben wird, ist es verständlich, daß die vorliegende Erfindung in anderen Computersystemen mit abweichenden Architekturen angewendet werden kann. Insbesondere kann die vorliegende Erfindung in einem Computersystem ohne Speichermanagementeinheit eingesetzt werden. Weiterhin kann die Erfindung bei einem kombinierten Befehls-/Daten-Cache oder nur einem Befehls-Cache eingesetzt werden.
- Nun wird, bezugnehmend auf Fig. 2, ein Blockdiagramm gezeigt, das den Befehls-Cache der vorliegenden Erfindung darstellt. Es wird der Befehls-Cache 16 mit einem Befehls- Array 24, einem entsprechenden Tag-Array 26, einem entsprechenden Befehlsklassen-Array 27 und einem entsprechenden Vorhersageanmerkungs-Array 28 und einer Auswahllogik 30 gezeigt. Die Arrays 24 bis 28 sind mit der Auswahllogik 30 verbunden. Gemeinsam speichern und senden sie Befehle und entsprechende Befehlsklassen, Verzweigungsvorhersagen, und Vorhersagen über die nächste Heranholadresse an die Befehlsvorabruf- und -abfertigungseinheit.
- Obwohl Fig. 2, um das Verständnis zu erleichtern, die Arrays 24 bis 28 als eigenständige Einheiten zeigt, ist es klar, daß die vorliegende Erfindung auch ausgeführt werden kann, wenn die Arrays 24 bis 28 miteinander kombiniert sind oder eine beliebige Kombination dieser Arrays vorliegt.
- Das Befehls-Array 24 umfaßt eine Anzahl von Cache- Zeilen, z. B. 34, von denen jede r Sätze von Befehlsblöcken, z. B. 44a bis 44*, umfaßt. Jeder Befehlssatz, z. B. 44a umfaßt n Befehle. Das Tag-Array 26 umfaßt entsprechende Tag-Einträge, z. B. 36, von denen jeder r Adreß-Tag-Sätze und zugeordnete Steuerinformationen, z. B. 46a bis 46*, umfaßt. Jeder Adreß-Tag-Satz und zugeordnete Steuerinformationen, z. B. 46a, umfaßt einen Adreß-Tag und zugeordnete Steuerinformationen, wie Gültig- und Verwendungsbits, für die entsprechenden n Befehle. Der Inhalt der Adreß-Tags und zugeordneten Steuerinformationen, z. B. 46a bis 46*, sowie deren Relation zu den Befehlsblöcken, z. B. 44a bis 44*, sind allgemein bekannt und werden nicht näher beschrieben werden.
- Das Befehlsklassen-Array 27 umfaßt entsprechende Befehlsklasseneinträge z. B. 37, von denen, jeder r Befehlsklassensätze, z. B. 47a bis 47*, umfaßt. Das Vorhersageanmerkungs - Array 28 umfaßt entsprechende Vorhersageanmerkungseinträge, z. B. 38, von denen jeder r Vorhersageanmerkungssätze, z. B. 48a bis 48*, umfaßt. Der Inhalt eines Befehlsklassensatzes, z. B. 47a, der Inhalt eines Vorhersageanmerkungssatzes, z. B. 48a und deren Relation zu dem entsprechenden Befehlsblocksatz, z. B. 44a, sind in den Fig. 3 bis 4 veranschaulicht.
- Wie in Fig. 3 gezeigt, umfaßt jeder Befehlsklassensatz 47 n Befehlsklassen (IKlassen) 32 für die entsprechenden n Befehle. Die n Befehlsklassen 47 speichern die Kodierung für die Befehlsklassen der entsprechenden n Befehle. Spezielle Beispiele für Befehlsklassen sind Befehlszähler-Relativverzweigung (PC-Relativverzweigung), Register-Indirektverzweigung, Speicherzugriff, arithmetische und Fließkommaoperationen. Bei einer Ausführungsform werden die Befehle dekodiert und die Befehlsklassenkodierungen vom Befehlsfache in der IKlasse gespeichert, während die fache-Zeile in den Befehls-Lache gebracht wird. Bei einer alternativen Ausführungsform werden die Befehle dekodiert und die Befehlsklassenkodierungen in den IKlassen gespeichert, bevor die Lache-Zeile in den Befehls-Lache gebracht wird.
- Es wird immer noch Bezug auf Fig. 3 genommen. Jeder Vorhersageanmerkungssatz 48 umfaßt m BRPDs und k NFAPDs für die entsprechenden n Befehle, wobei m und k kleiner oder gleich n sind. Die m BRPDs und k NFAPDs speichern jeweils die Verzweigungsvorhersagen und die Vorhersagen über die nächste Heranholadresse für die m und k "dominanten" Befehle der jeweils entsprechenden n Befehle. Befehlsdominanz kann auf verschiedene allgemein bekannte Arten implementiert werden, z. B. einschließlich letzter Zugriff oder in Programmreihenfolge. Die BRPDs und die NFAPDs werden entsprechend der Initialisierungsvorgehensweise eines Vorhersagealgorithmus für eine Verzweigung und die nächste Heranholadresse vom Befehls-Lache initialisiert, wenn die Lache-Zeile erstmals in den Befehls-Lache gebracht wird. Danach wird auf die BRPDs und die NFAPDs zugegriffen, sie werden ausgewählt und durch die Befehlsvorabruf- und -abfertigungseinheit in Übereinstimmung mit der Aktualisierungsvorgehensweise des Vorhersagealgorithmus für eine Verzweigung und die nächste Heranholadresse aktualisiert, wenn die Treffer oder Fehlversuche bezüglich der Vorhersagen über die Verzweigung und der nächsten Heranholadresse von der Befehlsvorabruf- und - abfertigungseinheit bestimmt werden. Die Initialisierung, die Auswahl und die Aktualisierung der BRPDs 40 und der NFAPDs 42 wird detaillierter nachfolgend unter Bezugnahme auf die Fig. 7 und 8a bis 8b erörtert. Die Vorhersagealgorithmen für eine Verzweigung und die nächste Heranholadresse hängen von der Anwendung ab und werden detaillierter weiter unten mit Bezug auf die Fig. 9a bis 9c besprochen.
- Fig. 4 veranschaulicht den Inhalt der BRPDs und NFAPDs in einem Vorhersageanmerkungssatz mit beispielhaftem BRPD- und NFAPD-Inhalt beispielhafter Vorhersageanmerkungssätze von beispielhaften Vorhersageanmerkungseinträgen für Cache- Zeilen verschiedener Ausführungsbeispiele des Befehls-Caches näher. Für jedes dieser Ausführungsbeispiele gilt n = 4, m = 1 und k = 1. Weiterhin wird eine 1-Bit-BRPD verwendet, wobei "0" bedeutet, daß "Verzweigung nicht genommen" vorausgesagt wird, und "1" bedeutet, daß "Verzweigung genommen" vorausgesagt wird. Man beachte, daß bei anderen Ausführungsformen alternativ mehrere Bits verwendet werden können, um jede BRPD zu speichern, wodurch eine feinere Granularität und mehr Informationen zu jeder Verzweigungsvorhersage gegeben werden.
- Das erste beispielhafte BRPD- und NFAPD-Paar, "0, next seq addr", 52 veranschaulicht ein Beispiel, in dem der entsprechende aus 4 Befehlen bestehende Satz keine Verzweigungsbefehle enthält. Weiterhin sagt der Algorithmus für eine Verzweigung und die nächste Heranholadresse jeweils vorher, daß die "Null"-Verzweigung "nicht genommen wird" und daß die nächste Heranholadresse die nächste sequentielle Adresse sein wird. Daher wird die BRPD auf "0" und die NFAPD auf "next seq äddr" gesetzt. Es ist zu beachten, daß bei anderen Ausführungsformen alternativ das einem Satz von Befehlen ohne Verzweigungsbefehle entsprechende BRPD-Feld stattdessen ignoriert werden kann.
- Das zweite und das dritte beispielhafte BRPD- und NFAPD- Paar, "0, next seq addr" und "1, target addr 1", 54 und 56 veranschaulicht zwei Beispiele, bei denen der entsprechende aus 4 Befehlen bestehende Satz einen Verzweigungsbefehl enthält, den ersten Befehl. In einem Fall, 54, sagt der Verzweigungsvorhersagealgorithmus vorher, daß die Verzweigung "nicht genommen wird", und der Algorithmus für die nächste Heranholadresse sagt vorher, daß die nächste Adresse die nächste sequentielle Adresse sein wird. Daher wird die BRPD auf "0" und die NFAPD auf "next seq addr" gesetzt. Im anderen Fall, 56, sagt der Verzweigungsvorhersagealgorithmus vorher, daß die Verzweigung "genommen wird", und der Algorithmus für die nächste Heranholadresse sagt vorher, daß die nächste Adresse die nächste Zieladresse des ersten Befehls sein wird. Daher wird die BRPD auf "1" und die NFAPD auf "target addr 1" gesetzt.
- Das vierte und das fünfte beispielhafte BRPD- und NFAPD- Paar, "0, next seq addr" und "1, target addr 1", 58 und 60, veranschaulicht zwei Beispiele, bei denen der aus 4 Befehlen bestehende Satz zwei Verzweigungsbefehle, den ersten und den dritten Befehl, enthält. In dem einen Fall, 58, sagt der Verzweigungsvorhersagealgorithmus vorher, daß beide Verzweigungen "nicht genommen werden", und der Algorithmus für die nächste Heranholadresse sagt vorher, daß die nächste Adresse die nächste sequentielle Adresse sein wird. Daher wird die BRPD auf "0" und die NFAPD auf "next seq addr" gesetzt. In dem anderen Fall, 60, sagt der Verzweigungsvorhersagealgorithmus vorher, daß der erste Verzweigungsbefehl, d. h. der erste Befehl, "genommen wird"; aber daß der zweite Verzweigungsbefehl, d. h. der dritte Befehl, "nicht genommen wird". Unter der weiteren Annahme, daß bei diesem Beispiel die Ausführung -des Programms mit dem ersten Befehl des 4 Befehle umfassenden Satzes beginnt, sagt der Algorithmus für die nächste Heranholadresse vorher, daß die nächste Adresse die nächste Zieladresse des ersten Verzweigungsbefehls, d. h. der erste Befehl sein wird. Daher wird die BRPD auf "1" und die NFAPD" auf "target addr 1" gesetzt.
- Däs sechste und das siebte beispielhafte BRPD - und NFAPD-Paar, "1, target addr 3" und "1, target addr 1", 62 und 64, veranschaulicht zwei Beispiele, bei denen der aus 4 Befehlen bestehende Satz zwei Verzweigungsbefehle, den ersten und den dritten Befehl, enthält. In dem einen Fall, 62, sagt der Verzweigungsvorhersagealgorithmus vorher, daß der erste Verzweigungsbefehl, d. h. der erste Befehl, "nicht genommen wird", aber daß der zweite Verzweigungsbefehl, d. h. der dritte Befehl "genommen wird", und der Algorithmus für die nächste Heranholadresse sagt vorher, daß die nächste Adresse die Zieladresse des zweiten Verzweigungsbefehls, d. h. der dritte Befehl, sein wird. Daher wird die BRPD auf "1" und die NFAPD auf "target address 3" gesetzt. Im anderen Fall, 64, sagt der Verzweigungsvorhersagealgorithmus vorher, daß beide Verzweigungsbefehle "genommen werden". Unter der weiteren Annahme, daß bei diesem Beispiel die Befehlsdominanz aufgrund des letzten Zugriffs implementiert ist und daß der erste Befehl der Befehl zwischen dem ersten und dem dritten Befehl ist, auf den als letztes zugegriffen wurde, sagt der Algorithmus für die nächste Heranholadresse vorher daß die nächste Adresse die nächste Zieladresse des ersten Verzweigungsbefehls, d. h. der Befehl, auf den als letztes zugegriffen wurde, sein wird. Daher wird die BRPD auf "1" und die NFAPD auf "target addr 1" gesetzt.
- Obwohl die vorliegende Erfindung so beschrieben wurde, daß jeder Vorhersageanmerkungssatz m BRPDs und k NFAPDs aufweist, ist es klar, daß die vorliegende Erfindung so ausgeführt werden kann, daß jeder Vorhersageanmerkungssatz nur m BRPDs und keine NFAPDs aufweist. Bei solchen Ausführungsformen -kann die nächste Heranholadresse von der Befehlsvorabruf- und -abfertigungseinheit aufgrund der ausgewählten BRPD errechnet werden.
- Es wird wiederum Bezug auf Fig. 2 genommen. Der Befehls-Cache 16 em fän t eine nächste Heranholadresse von der Befehlsvorabruf- und -abfertigungseinheit. Daraufhin wird auf die in einer der Cache-Zeilen gespeicherten Befehle sowie deren entsprechende Tag- und Vorhersageanmerkungseinträge zugegriffen und diese an die Auswahllogik 30 weitergegeben. Die Auswahllogik 30 wählt einen Befehlssatz, eine Verzweigungsvorhersage und eine Vorhersage über die nächste Heranholadresse aus und gibt diese an die Befehlsvorabruf- und -abfertigungseinheit weiter. Die Vorhersagen über die Verzweigung und die nächste Heranholadresse werden aus dem entsprechenden Vorhersageanmerkungssatz ausgewählt. Zwei Ausführungsformen der Auswahllogik 30 sind in den Fig. 5a bis 5b dargestellt.
- Fig. 5a stellt eine Ausführungsform der Auswahllogik dar, bei der m und k beide größer als 1 sind. Die Befehlssätze (Instr Blks) und die entsprechenden Sätze von Tags (TAGS), Befehlsklassen (IKlassen) und Vorhersageanmerkungen (PAs), die aus den entsprechenden Arrays abgerufen wurden, werden zuerst an eine Satzauswahllogik 66 weitergegeben. Die Satzauswahllogik 66 wählt unter Verwendung der aktuellen nächsten Heranholadresse (NFA) einen Befehlssatz und seine entsprechenden Sätze von Tags (TAG i), Befehlsklassen (IKlassen-i) und Vorhersageanmerkungen (PA i) aus. Die ausgewählten Sätze von Befehlsklassen (IKlassen i) und Vorhersageanmerkungen (PA i) werden dann an die BRPD- und NFAPD- Auswahllogik 68 weitergeleitet. Die BRPD- und NFAPD-Auswahllogik 68 wählt unter Verwendung der aktuellen Heranholadresse (NFA) eine BRPD (BRPD j) und eine NFAPD (NFAPD j) aus den m BRPDs und k NFAPDs des ausgewählten Vorhersageanmerkungssatzes (PA i) aus.
- Die Satzauswahllogik 66 soll ein breites Spektrum von Auswahllogiken repräsentieren, die in den meisten Computer-Systemen vorhanden sind, einschließlich der Auswahllogik, die im U. S. Patent US-A-5.392.414 vom 30. Juni 1992 mit dem Titel Rapid Data Retrieval From A Data Storage Using Prior Access Predictive Annotation (Schneller Datenabruf aus einem Datenspeicher unter Verwendung von Vorhersageanmerkungen früherer Zugriffe dargestellt ist, und die auf denselben Anmelder übertragen wurde wie die vorliegende Erfindung. Die BRPD- und NFAPD-Auswahllogik, 68, kann zusammen mit anderen allgemein bekannten kombinatorischen Logiken implementiert werden.
- Fig. 5b zeigt eine Ausführungsform der Auswahllogik, bei der m und k beide gleich 1 sind. Diese Ausführungsform ist grundsätzlich dieselbe, wie die in Fig. 5a gezeigte Ausführungsform, mit der Ausnahme, daß die BRPD- und NFAPD- Auswahllogik nicht notwendig ist, da m und k beide gleich 1 sind. Durch Verzicht auf die BRPD- und NFAPD-Auswahllogik werden die BRPD und die NFAPD ausgewählt, sobald der Befehlsblock ausgewählt wird.
- Es ist ersichtlich, daß die Werte von m und k vom Aufbau abhängen. Wenn m oder k gegen n anwachsen, wird die Wahrscheinlichkeit von Treffern bei der Vorhersage von Verzweigungen und nächsten Heranholadressen ansteigen; allerdings wird sich als Folge der größeren Zeitspanne, die notwendig ist, um eine Vorhersage über eine Verzweigung und die nachste Heranholadresse auszuwählen, ebenfalls die Verzögerungs-Zeit zwischen den Heranholvorgängen verlängern. Andererseits wird die Wahrscheinlichkeit von Treffern bei der Vorhersage von Verzweigungen und nächsten Heranholadressen bei kleiner werdendem und gegen 1 gehendem m oder k abnehmen, aber als Folge der geringeren Zeitspanne, die notwendig ist, um die Vorhersage über eine Verzweigung und die nächste Heranholädresse auszuwählen, wird die Verzögerungszeit zwischen den Heranholvorgängen ebenfalls abnehmen. Tatsächlich kann dann, wenn, wie bei den Ausführungsformen in Fig. 6b gezeigt, m und k beide gleich 1 sind, auf die BRPD- und NFAPD-Auswahllogik verzichtet und so die Möglichkeit geschaffen werden, die BRPD und die NFAPD gleichzeitig mit dem Befehlsblock auszuwählen. Auf der Grundlage der folgenden Beschreibung wird verständlich, daß der Verzicht auf die BRPD- und NFAPD- Auswahllogik eine Reduzierung der Befehls-Heranhol-Verzögerungszeit auf Null erleichtert. Mit anderen Worten, das nächste Heranholen kann durchgeführt werden, ohne die Befehle des aktuellen Heranholvorgangs zu berücksichtigen.
- Nun werden, bezugnehmend auf die Fig. 6a bis 6b; zwei Blockdiagramme gezeigt, die Verzweigungsvorhersage-Treffer-, Nächste-Heranholadresse-Vorhersage-Treffer- und Nächste-Heranholadresse-Bestimmungen durch die Befehlsvorabruf- und - abfertigungseinheit der vorliegenden Erfindung darstellen. Wie in Fig. 6a gezeigt, weist die Befehlsvorabruf- und
- - abfertigungseinheit einen Komparator 68 auf. Der Komparator, 68 empfängt als Eingangssignale die BRPD und die NFAPD vom Befehls-Cache und die Auflösung der tatsächlichen Verzweigung und der nächsten Heranholadresse aus der Vorabruf- und Abfertigungseinheit oder den Ausführungseinheiten. Daraufhin gibt der Komparator ein Verzweigungsvorhersage-Treffer/Fehl versuch-Signal und ein Nächste-Heranholadresse-Vorhersage- Treffer/Fehlversuch-Signal aus. Es ist klar, daß die Entscheidung über die tatsächliche Verzweigung und die nächste Heranholadresse getrennt empfangen werden können, daher können die Verzweigungs- und die Nächste-Heranholadresse- Treffer/Fehlversuch-Signale zu verschiedenen Zeitpunkten generiert werden. Der Komparator 68 soll ein breites Spektrum von Komparatoren, die in den meisten Computersystemen vorhanden sind, repräsentieren. Ihr Aufbau und ihre Grundfunktionen sind allgemein bekannt und werden nicht näher beschrieben.
- Außerdem weist die Befehlsvorabruf- und -abfertigungs- einheit ein Nächste-Heranholadressen-Register 70 auf, wie in Fig. 6b gezeigt ist. Die NFAPD, die vom Befehls-Cache empfangen wurde, wird sofort im Nächste-Heranholadressen-Register gespeichert und als Heranholadresse (NFA) für den nachsten Befehlsheranholvorgang verwendet. Es ist klar, daß dann, wenn, wie es der Fall bei der in Fig. 5b gezeigten Ausführungsform ist, die NFAPD gleichzeitig mit dem Befehls Block ausgewählt wird, das direkte Speichern der NFAPD in das NFA-Register und ihre Verwendung als NFA des nächsten Befehlsheranholvorgangs eine Heranholverzögerungszeit von Null zwischen aufeinanderfolgenden Befehlsheranholvorgängen zur Folge hat.
- Nun wird, bezugnehmend auf Fig. 7, ein Ablaufdiagramm gezeigt, das den Operationsfluß des Befehls-Caches darstellt. Der Befehls-Cache empfängt die Heranholadresse aus der Befehlsvorabruf- und -abfertigungseinheit, Block 74. Daraufhin bestimmt der Befehls-Cache, ob ein Cache-Treffer vorliegt, Block 76. Wenn ein Cache-Treffer, wie weiter oben beschrieben, vorliegt, wählt der Befehls-Cache einen Befehlssatz, eine Verzweigungsvorhersage und eine Vorhersage über die nächste Heranholadresse aus und gibt diese an die Befehlsvorabruf- und -abfertigungseinheit weiter, Block 78.
- Wenn ein Cache-Fehlversuch vorliegt, initiiert der Befehls-Cache ein Cache-Füllen, Block 80. Während die Cache- Zeile mit aus dem Speicher zurückgegebenen Befehlen gefüllt wird, werden die Befehle an die Befehlsvorabruf- und -abfertigungseinheit weitergegeben, Block 82. Alternativ können die Befehle an die Befehlsvorabruf- und -abfertigungseinheit weitergeleitet werden, nachdem die Cache-Zeile gefüllt worden ist. Wie weiter oben beschrieben, dekodiert der Befehls- Cache bei der Ausführungsform, in der die Befehle nicht vorher dekodiert werden und die Befehlsklassen nicht vorgespeichert werden, außerdem die Befehle und speichert die Befehlsklassen in die IKlassen, während die Cache-Zeile gefüllt wird, Block 84. Außerdem werden die m BRPDs und k NFAPDs entsprechend der Sätze von n Befehlen der Cache- Zeile, die gefüllt wird, in Entsprechung mit der Initialisierungsvorgehensweise des Vorhersagealgorithmus für eine Verzweigung und die nächste Heranholadresse initialisiert, Block 86.
- Nun werden, bezugnehmend auf die Fig. 8a bis 8b, zwei Ablaufdiagramme gezeigt, die den Operationsfluß der Befehlsvorabruf- und -abfertigungseinheit zeigen. Wie in Fig. 8a gezeigt, stellt die Befehlsvorabruf- und -abfertigungsein- heit fest, ob ein Heranhol-/Vorabheranholvorgang durchgeführt werden soll, Block 94. Wenn ein Heranhol-/Vorabheranholvorgang durchgeführt werden soll, holt die Befehlsvorabruf- und -abfertigungseinheit die nächste Heranholadresse (NFA) vom NFA-Register zum Befehls-Cache, Block 96. Daraufhin liefert der Befehls-Cache der Befehlsvorabruf- und - abfertigungseinheit den verlangten Befehlsblock, und die Befehlsvorabruf- und -abfertigungseinheit reiht den zurück gegebenen Befehlsblock in eine Warteschlange ein. Wie weiter oben beschrieben, ist die NFA im NFA-Register die ausgewählte NFAPD, die vom Befehls-Cache in Verbindung mit dem Befehlsblock empfangen wurde, der für den letzten Heranholvorgang empfangen wurde. In der Zwischenzeit, wenn die Befehlswarteschlange nicht leer ist, fertigt die Befehlsvorabruf- und -abfertigungseinheit in Abhängigkeit von der Systemarchitektur einen oder mehrere Befehle ab, Block 98. Die Befehlsvorabruf- und -abfertigungseinheit wiederholt die oben genannten Schritte, Blöcke 94 bis 98, bis das Computersystem abgeschaltet wird.
- Wie in Fig. 8b gezeigt wird, bestimmt die Befehlsvorabruf- und -abfertigungseinheit gleichzeitig die Verzweigungsauflösung oder empfängt die Verzweigungsauflösung aus den Ausführungseinheiten, Block 108. Dann bestimmt die Befehlsvorabruf- und -abfertigungseinheit, ob ein Verzweigungsvorhersage-Treffer vorliegt, Block 110. Wenn die ausgewählte BRPD die Verzweigungsrichtung falsch vorhergesagt hat, greift die Befehlsvorabruf- und -abfertigungseinheit auf den Befehls-Cache zu und aktualisiert die vorher ausgewählte BRPD und die NFAPD in der Cache-Zeile, auf die vorher zugegriffen wurde, entsprechend, Block 114. Wenn die ausgewählte BRPD die Verzweigungsrichtung richtig vorhergesagt hat, dann bestimmt die Befehlsvorabruf- und -abfertigungseinheit, nachdem die Auflösung der nächsten Heranholadresse bestimmt oder die Auflösung der nächsten Heranholadresse von den Ausführungseinheiten empfangen wurde, Block 111, ob ein Nächste-Heranholadresse-Treffer vorliegt, Block 112. Wenn die ausgewählte NFAPD die nächste Heranholadresse falsch vorhergesagt hat, greift die Befehlsvorabruf- und -abfertigungseinheit auf das Befehls-Cache zu und aktualisiert die vorher ausgewählte NFAPD in der Cache-Zeile, auf die vorher zugegriffen wurde, Block 116. Weiterhin kann zur Vereinfachung der Implementierung die Befehlsvorabruf- und -abfertigungseinheit, unabhängig davon, ob die ausgewählte NFAPD die nächste Heranholadresse richtig vorhergesagt hat, wahlweise trotzdem auch die vorher ausgewählte BRPD in der Cache-Zeile, auf die vorher zugegriffen wurde, aktualisieren, Block 118.
- Nun werden, bezugnehmend auf die Fig. 9a bis 9c, drei Blockdiagramme gezeigt, die die Initialisierungs- und Aktualisierungsvorgehensweisen eines beispielhaften Vorhersagealgorithmus für eine Verzweigung und die nächste Heranholadresse darstellen. Der beispielhafte Vorhersagealgorithmus für eine Verzweigung und die nächste Heranholadresse stellt sicher, daß die Verzweigungsvorhersagen nur ein Bit umfassen. In Fig. 9a wird die Initialisierungsvorgehensweise- Tabelle 120 des bestimmten Vorhersagealgorithmus für eine Verzweigung und die nächste Heranholadresse gezeigt. Unabhängig von der Befehlsklasse, werden die BRPDs so initialisiert, daß sie "Verzweigung wird nicht genommen" vorhersagen, und die NFAPDs werden so initialisiert, daß sie die nächste Heranholadresse so vorhersagen, daß es eine Adresse ist, die gleich der Summe des aktuellen Befehlszählers und der Größe des nächsten sequentiellen Heranholblocks ist. Jenach Implementierung kann es notwendig sein, die Größe des nächsten sequentiellen Heranholblocks zur Cache-Blockgren- zenausrichtung anzupassen oder auch nicht. Es ist klar, daß durch eine einheitliche Initialisierung der BRPDs und NFAPDs für alle Befehle unabhängig von der Befehlsklasse die Implementierung vereinfacht wird. Während eine Vereinfachung der Implementierung für die bedingungslosen befehlszählerbezogenen und registerindexierten Befehle eine falsche Erstvorhersage nach sich zieht, wird es aufgrund der noch zu beschreibenden Aktualisierungsvorgehensweise nur einen Fehlversuch geben, solange nicht eine externe Störung vorliegt, wie z. B., daß sich mehrere Verzweigungen dieselben Vorhersagefelder teilen.
- Fig. 9b zeigt die Aktualisierungsvorgehensweise für die Befehlszähler-Relativverzweigungsbefehle für einen speziel len Vorhersagealgorithmus für eine Verzweigung und die nächste Heranholadresse. Im ersten Fall, in dem die ausgewählte BRPD vorhersagt, daß die Verzweigung "genommen wird", und die Verzweigung nicht genommen wird, 122, wird die ausgewählte BRPD mit der richtigen Vorhersage, d. h. "wird nicht genommen", aktualisiert und die ausgewählte NFAPD wird mit der Summe der aktuellen Heranholadresse und der Größe des nächsten sequentiellen Heranholblocks aktualisiert. Im zweiten Fall, in dem die ausgewählte BRPD vorhersagt, daß die Verzweigung "genommen wird", und die Verzweigung genommen wird, aber die NFAPD unzutreffend ist, 124, wird die ausgewählte NFAPD mit der richtigen Heranholadresse, d. h. der Zieladresse, aktualisiert.
- Im dritten Fall, in dem die ausgewählte BRPD vorhersagt, daß die Verzweigung "nicht genommen wird", und die Verzweigung genommen wird, 126, wird die ausgewählte BRPD mit der richtigen Vorhersage, d. h. "wird genommen", aktualisiert, und die ausgewählte NFAPD wird mit der richtigen Heranholadresse, d. h. der Zieladresse, aktualisiert. Im vierten Fall, in dem die ausgewählte BRPD vorhersagt, daß die Verzweigung "nicht genommen wird", und die Verzweigung nicht genommen wird, aber die NFAPD unzutreffend ist, 128, wird die ausgewählte NFAPD mit der Summe der aktuellen Heranhol- adresse und der Größe des nächsten sequentiellen Heranhol- Blocks aktualisiert.
- Im fünften Fall, in dem die ausgewählte BRPD vorhersagt, daß die Verzweigung "genommen wird", und die Verzweigung genommen wird und die NFAPD die nächste Heranholzieladresse richtig vorhersagt, 130, werden die ausgewählte BRPD und die ausgewählte NFAPD nicht aktualisiert. Ähnlich ist es im sechsten Fall, in dem die ausgewählte BRPD vorhersagt, daß die Verzweigung "nicht genommen wird", und die Verzweigung nicht genommen wird und die NFAPD die nächste sequentielle Heranholadresse richtig vorhersagt, 132, und die ausgewählte BRPD und die ausgewählte NFAPD nicht aktualisiert werden.
- Wie weiter oben beschrieben, kann es im ersten und dritten Fall notwendig sein, die nächste sequentielle Heranholblockgröße je nach Implementierung zur Cache-Blockgrenzenausrichtung anzupassen oder auch nicht. Zusätzlich können die BRPD im zweiten, fünften und sechsten Fall trotzdem mit der tatsächlichen Verzweigungsrichtung aktualisiert werden, anstatt keine Operation durchzuführen.
- Fig. 9c stellt die Aktualisierungsvorgehensweise für eine indirekte Registersteuerübertragung und für eine bedingungslose Befehlszähler-Relativsteuerübertragung für einen bestimmten Vorhersagealgorithmus für eine Verzweigung und die nächste Heranholadresse dar. Im ersten und vierten Fall, in dem die ausgewählte BRPD vorhersagt, daß die Verzweigung "nicht genommen wird", und die Verzweigung genommen wird, 134 und 140, wird die ausgewählte BRPD mit der richtigen Vorhersage, d. h. "wird genommen", aktualisiert und die ausgewählte NFAPD wird mit der richtigen Heranholadresse, d. h. der Zieladresse, aktualisiert.
- Im zweiten und fünften Fall, in dem die ausgewählte BRPD vorhersagt, daß die Verzweigung "genommen wird", und die Verzweigung genommen wird und die NFAPD unzutreffend ist, 136 und 142, wird die ausgewählte NFAPD mit der richtigen Heranholadresse, d. h. der Zieladresse, aktualisiert. Im dritten und sechsten Fall, in dem die ausgewählte BRPD vorhersagt, daß die Verzweigung "genommen wird", und die Verzweigung genommen wird und die NFAPD die nächste Heranholzieladresse richtig vorhersagt, 140 und 144, werden die ausgewählte BRPD und die ausgewählte NFAPD nicht aktualisiert. Ähnlich ist es im dritten und sechsten Fall, in denen die BRPD trotzdem mit der tatsächlichen Verzweigungsrichtung aktualisiert werden kann, anstatt keine Operation durchzuführen.
Claims (34)
1. Ein Computersystem mit einer Ausführungseinheit zum
Ausführen von Befehlen eines Computerprogramms,
gekennzeichnet durch
eine Schaltung (16) zum Abrufen von Befehlen aus einem
Speicher (20);
eine Schaltung (16) zum unabhängigen Decodieren jedes
Befehls ohne Rücksicht auf irgendwelche Abhängigkeiten des
Befehls von irgendwelchen anderen Befehlen, um die Klasse
des jeweiligen Befehls zu bestimmen; und
einen Befehls-Cache (16) zum Speichern des jeweiligen
Befehls und der unabhängigen zugehörigen
Klasseninformationen für diesen Befehl.
2. Das Computersystem nach Anspruch 1, wobei die Klasse
des Befehls aus einer Gruppe ausgewählt ist, die
Gleitkommaoperationen, Ganzzahloperationen,
Speicherzugriffsoperationen und Verzweigungsoperationen umfaßt.
3. Das Computersystem nach Anspruch 1, wobei die Klasse
des abgerufenen Befehls anzeigende Daten und der Befehl in
einer Cache-Zeile (34) in dem Befehls-Cache (16) gespeichert
werden.
4. Das Computersystem nach Anspruch 1, aufweisend:
einen Befehls-Cache (16) zum Speichern einer Mehrzahl
der Befehle des Computerprogramms, wobei der Befehls-Cache
gekennzeichnet ist durch:
ein Befehlsfeld zum Speichern eines ersten Befehls der
Mehrzahl von Befehlen;
ein Befehlsadreßfeld zum Speichern einer Adresse, die
dem ersten Befehl entspricht;
ein dem ersten Befehl zugeordnetes Nächster-Adreßabruf-
Feld zum Speichern einer nächsten Abrufadresse, die einem
zweiten Befehl entspricht, wobei die nächste Abrufadresse
dem unbedingten Abrufen des zweiten Befehls, wenn der erste
Befehl abgerufen worden ist, dient.
5. Das Computersystem nach Anspruch 4, ferner
aufweisend ein mit dem Befehls-Cache (16) gekoppeltes
Nächste-Abrufadresse-Register (70) zum Empfangen der dem zweiten
Befehl entsprechenden nächsten Abrufadresse, wenn der erste
Befehl aus dem Befehls-Cache (16) abgerufen worden ist.
6. Das Computersystem nach Anspruch 5, ferner
aufweisend eine mit dem Nächste-Abrufadresse-Register (70)
gekoppelte Vorabruf- und Abfertigungseinheit (12) zum Abrufen des
zweiten Befehls, wenn die nächste Abrufadresse von dem
Nächste-Abrufadresse-Register (70) empfangen worden ist.
7. Das Computersystem nach Anspruch 6, wobei die
Ausführungseinheit (14) mit der Vorabruf- und
Abfertigungseinheit (12) gekoppelt ist, um den ersten Befehl auszuführen,
nachdem die Vorabruf- und Abfertigungseinheit (12) den
ersten Befehl an die Ausführungseinheit (14) abgefertigt hat.
8. Das Computersystem nach Anspruch 4, wobei die
nächste Abrufadresse eine dem ersten Befehl nachfolgende
sequentielle Adresse ist.
9. Das Computersystem nach Anspruch 4, wobei der erste
Befehl ein Verzweigungsbefehl ist und der Befehls-Cache
ferner ein Verzweigungsvorhersagefeld zum Speichern von
Verzweigungsvorhersageinformationen aufweist.
10. Das Computersystem nach Anspruch 9, wobei die
Verzweigungsvorhersageinformationen in dem
Verzweigungsvorher
sagefeld (40) dem Vorhersagen, daß die Verzweigung nicht
genommen wird, dienen, und wobei das Nächste-Adreßabruf-Feld
dem Speichern der sequentiellen Adresse nach dem ersten
Befehl dient.
11. Das Computersystem nach Anspruch 9, wobei die
Verzweigungsvorhersageinformationen in dem
Verzweigungsvorhersagefeld (40) der Vorhersage dienen, daß die Verzweigung
genommen wird, und wobei das Nächste-Adreßabruf-Feld (42) dem
Speichern einer Zieladresse des ersten Befehls dient.
12. Das Computersystem nach Anspruch 9, wobei die
Verzweigungsvorhersageinformationen dynamisch in
Übereinstimmung mit einem Verzweigungsvorhersagealgorithmus
aktualisiert werden.
13. Das Computersystem nach Anspruch 4, wobei die
Ausführungseinheit (14) zum Ausführen des ersten Befehls mit
dem Befehls-Cache (16) gekoppelt ist, wobei die Ausführung
einheit (14) ferner eine Entscheidungseinheit zum
Entscheiden einer tatsächlichen nächsten Abrufadresse des ersten
Befehls und eine Vergleichsschaltung (68) zum Vergleichen der
tatsächlichen nächsten Abrufadresse mit der in dem dem
ersten Befehl zugeordneten Nächste-Adreßabruf-Feld (42)
enthaltenen nächsten Abrufadresse aufweist.
14. Das Computersystem nach Anspruch 13, ferner
aufweisend eine mit der Ausführungseinheit (14) und dem
Befehlsfache (16) gekoppelte Vorabrufeinheit (12), zum Abrufen
eines dritten Befehls, der der tatsächlichen nächsten
Abrufadresse entspricht, und zum Liefern des dritten Befehls an
die Ausführungseinheit (14) zum Ausführen, sofern die
Vergleichsschaltung (68) feststellt, daß die tatsächliche
nächste Abrufadresse des ersten Befehls und die nächste
Abruf
adresse, die in dem dem ersten Befehl zugeordneten Nächste-
Adreßabruf-Feld (42) enthalten ist, verschieden sind.
15. Das Computersystem nach Anspruch 14, wobei die
Ausführung des Computerprogramms an dem dritten Befehl wieder
aufgenommen wird, sofern die Vergleichsschaltung feststellt,
daß die tatsächliche nächste Abrufadresse des ersten Befehls
und die nächste Abrufadresse, die in dem dem ersten Befehl
zugeordneten Nächste-Adreßabruf-Feld enthalten ist,
verschieden sind.
16. Das Computersystem nach Anspruch 14, wobei das dem
ersten Befehl zugeordnete Nächste-Adreßabruf-Feld (42)
aktualisiert wird, wenn die tatsächliche nächste Abrufadresse
des ersten Befehls und die nächste Abrufadresse, die in dem
dem ersten Befehl zugeordneten Nächste-Adreßabruf-Feld (42)
enthalten ist, verschieden sind.
17. Das Computersystem nach Anspruch 4, wobei der zweit
Befehl aus dem Befehls-Cache (16) abgerufen wird.
18. Das Computersystem nach Anspruch 4, wobei der zwei
Befehl aus dem Speicher (20) abgerufen wird, sofern der
zweite Befehl sich nicht in dem Befehls-Cache (16) befindet.
19. Das Computersystem nach Anspruch 4, wobei der zweite
Befehl abgerufen und spekulativ an die Ausführungseinheit
(14) zur Ausführung abgefertigt wird.
20. Das Computersystem nach Anspruch 4, wobei die
Mehrzahl von in dem Befehls-Cache (16) gespeicherten Befehlen in
einer Anzahl von Cache-Zeilen angeordnet sind, wobei jede
der Anzahl von Cache-Zeilen (34)(n) der Mehrzahl von in dem
Cache (16) gespeicherten Befehlen enthält.
21. Das Computersystem nach Anspruch 20, wobei jede der
Anzahl von Cache-Zeilen (34)(k) der Nächste-Adreßabruf-Feld-
Adressen (42) enthält, wobei (k) kleiner als oder gleich (n)
ist.
22. Das Computersystem nach Anspruch 20, wobei jede der
Anzahl von Cache-Zeilen (34)(m)
Verzweigungsvorhersageelemente (40) enthält, wobei (m) gleich oder kleiner als (n)
ist.
23. Das Computersystem nach Anspruch 20, wobei jede der
Anzahl von Cache-Zeilen (34) ein Verzweigungsvorhersagefeld
(40) zum Speichern von Verzweigungsvorhersageinformationen
für einen dominierenden Befehl unter den (n) Befehlen in
jeder der Anzahl von Cache-Zeilen (34) in dem Befehls-Cache
(16) enthält.
24. Das Computersystem nach Anspruch 4, wobei die in dem
dem ersten Befehl zugeordneten Nächste-Adreßabruf-Feld (40)
gespeicherte nächste Abrufadresse in Übereinstimmung mit
einer vorgegebenen Verfahrensweise initialisiert wird, wenn
der erste Befehl in den Befehls-Cache (16) aus dem Speicher
(20) gebracht wird.
25. Das Computersystem nach Anspruch 4, wobei der
Befehls-Cache (16) ferner ein Befehlsdecodierfeld zum
Speichern von Befehlsdecodierinformationen für den ersten Befehl
enthält.
26. Das Computersystem nach Anspruch 25, wobei die
Befehlsdecodierinformationen einen Klassenidentifizierer zum
Identifizieren der Klasse des ersten Befehls enthalten.
27. Das Computersystem nach Anspruch 4, wobei die
nächste Abrufadresse eine vorhergesagte nächste Abrufadresse
ist.
28. Ein Verfahren zum Bereitstellen eines
Computersystems zum Ausführen von Befehlen eines Computerprogramms,
wobei das Computersystem eine Ausführungseinheit aufweist,
wobei das Verfahren gekennzeichnet ist durch die Schritte:
Bereitstellen einer Schaltung (16) zum Abrufen von
Befehlen aus einem Speicher;
Bereitstellen einer Schaltung (16) zum unabhängigen
Decodieren jedes Befehls ohne Rücksicht auf irgendwelche
Abhängigkeiten des Befehls von irgendwelchen anderen Befehlen,
um die Klasse des jeweiligen Befehls zu bestimmen; und
Bereitstellen eines Befehls-Cache (16) zum Speichern
jedes Befehls und der unabhängigen zugehörigen
Klasseninformationen für diesen Befehl.
29. Das Verfahren nach Anspruch 28, wobei die Klasse des
Befehls aus einer Gruppe ausgewählt wird, die
Gleitkommaoperationen, Ganzzahloperationen, Speicherzugriffsoperationen
und Verzweigungsoperationen umfaßt.
30. Das Verfahren nach Anspruch 29, wobei die die Klasse
des abgerufenen Befehls anzeigenden Daten und der Befehl in
einer Cache-Zeile (24) des Befehls-Cache (16) gespeichert
werden.
31. Das Verfahren nach Anspruch 28, ferner
gekennzeichnet durch die Schritte:
Bereitstellen eines Befehls-Cache (16) zum Speichern
einer Mehrzahl von Befehlen des Computerprogramms, wobei der
Befehls-Cache (16) umfaßt:
Bereitstellen eines Befehlsfeldes zum Speichern eines in
der Mehrzahl von Befehlen enthaltenden ersten Befehls;
Bereitstellen eines Befehlsadreßfeldes zum Speichern
einer dem ersten Befehl entsprechenden Adresse;
Bereitstellen eines dem ersten Befehl zugeordneten
Nächste-Adreßabruf-Feldes (42) zum Speichern einer nächsten
Abrufadresse, die einem zweiten Befehl entspricht, wobei die
nächste Abrufadresse dem unbedingten Abrufen des zweiten
Befehls dient, wenn der erste Befehl abgerufen worden ist.
32. Das Verfahren nach Anspruch 31, ferner umfassend die
Schritte des Bereitstellens eines mit dem Befehls-Cache (16)
gekoppelten Nächste-Abrufadresse-Registers (70) zum
Empfangen einer nächsten Abrufadresse, die dem zweiten Befehl
entspricht, wenn der erste Befehl aus dem Befehls-Cache (16)
abgerufen worden ist.
33. Das Verfahren nach Anspruch 32, ferner umfassend den
Schritt des Bereitstellens einer mit dem Nächste-Abrufadres-
se-Register (70) gekoppelten Vorabruf- und
Abfertigungseinheit (12) zum Abrufen des zweiten Befehls, wenn die nächste
Abrufadresse durch das Nächste-Abrufadresse-Register (70)
empfangen worden ist.
34. Das Verfahren nach Anspruch 33, wobei die
Ausführungseinheit (14) mit der Vorabruf- und Abfertigungseinheit
(12) gekoppelt ist, wobei der Schritt aus dem Ausführen des
ersten Befehls, nachdem die Vorabruf- und
Abfertigungseinheit (12) den ersten Befehl an die Ausführungseinheit (14)
abgefertigt hat, besteht.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US93837192A | 1992-08-31 | 1992-08-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69327927D1 DE69327927D1 (de) | 2000-04-06 |
DE69327927T2 true DE69327927T2 (de) | 2000-10-12 |
Family
ID=25471319
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69327927T Expired - Fee Related DE69327927T2 (de) | 1992-08-31 | 1993-07-06 | Schnelles Vorausholen und Zuteilung von Befehlen mittels vorausschauender Anmerkungen von früher vorausgeholten |
Country Status (5)
Country | Link |
---|---|
US (2) | US6304961B1 (de) |
EP (1) | EP0586057B1 (de) |
JP (1) | JP3518770B2 (de) |
KR (1) | KR100287628B1 (de) |
DE (1) | DE69327927T2 (de) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US5742805A (en) * | 1996-02-15 | 1998-04-21 | Fujitsu Ltd. | Method and apparatus for a single history register based branch predictor in a superscalar microprocessor |
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 |
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 |
US5954816A (en) * | 1996-11-19 | 1999-09-21 | Advanced Micro Devices, Inc. | Branch selector prediction |
US5974538A (en) * | 1997-02-21 | 1999-10-26 | Wilmot, Ii; Richard Byron | Method and apparatus for annotating operands in a computer system with source instruction identifiers |
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 |
US6112299A (en) * | 1997-12-31 | 2000-08-29 | International Business Machines Corporation | Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching |
US6647490B2 (en) * | 1999-10-14 | 2003-11-11 | Advanced Micro Devices, Inc. | Training line predictor for branch targets |
US6636959B1 (en) | 1999-10-14 | 2003-10-21 | Advanced Micro Devices, Inc. | Predictor miss decoder updating line predictor storing instruction fetch address and alignment information upon instruction decode termination condition |
US6546478B1 (en) | 1999-10-14 | 2003-04-08 | Advanced Micro Devices, Inc. | Line predictor entry with location pointers and control information for corresponding instructions in a cache line |
US6502188B1 (en) | 1999-11-16 | 2002-12-31 | Advanced Micro Devices, Inc. | Dynamic classification of conditional branches in global history branch prediction |
US7769983B2 (en) * | 2005-05-18 | 2010-08-03 | Qualcomm Incorporated | Caching instructions for a multiple-state processor |
US7590825B2 (en) | 2006-03-07 | 2009-09-15 | Intel Corporation | Counter-based memory disambiguation techniques for selectively predicting load/store conflicts |
US7711927B2 (en) | 2007-03-14 | 2010-05-04 | Qualcomm Incorporated | System, method and software to preload instructions from an instruction set other than one currently executing |
US20100064118A1 (en) * | 2008-09-10 | 2010-03-11 | Vns Portfolio Llc | Method and Apparatus for Reducing Latency Associated with Executing Multiple Instruction Groups |
US9268881B2 (en) * | 2012-10-19 | 2016-02-23 | Intel Corporation | Child state pre-fetch in NFAs |
US9117170B2 (en) | 2012-11-19 | 2015-08-25 | Intel Corporation | Complex NFA state matching method that matches input symbols against character classes (CCLs), and compares sequence CCLs in parallel |
US9665664B2 (en) | 2012-11-26 | 2017-05-30 | Intel Corporation | DFA-NFA hybrid |
US9304768B2 (en) | 2012-12-18 | 2016-04-05 | Intel Corporation | Cache prefetch for deterministic finite automaton instructions |
US9268570B2 (en) | 2013-01-23 | 2016-02-23 | Intel Corporation | DFA compression and execution |
US9455743B2 (en) * | 2014-05-27 | 2016-09-27 | Qualcomm Incorporated | Dedicated arithmetic encoding instruction |
US10185568B2 (en) | 2016-04-22 | 2019-01-22 | Microsoft Technology Licensing, Llc | Annotation logic for dynamic instruction lookahead distance determination |
CN112540795A (zh) * | 2019-09-23 | 2021-03-23 | 阿里巴巴集团控股有限公司 | 指令处理装置和指令处理方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4228498A (en) | 1977-10-12 | 1980-10-14 | Dialog Systems, Inc. | Multibus processor for increasing execution speed using a pipeline effect |
US4437149A (en) * | 1980-11-17 | 1984-03-13 | International Business Machines Corporation | Cache memory architecture with decoding |
US4435756A (en) | 1981-12-03 | 1984-03-06 | Burroughs Corporation | Branch predicting computer |
US4894772A (en) | 1987-07-31 | 1990-01-16 | Prime Computer, Inc. | Method and apparatus for qualifying branch cache entries |
US5142634A (en) * | 1989-02-03 | 1992-08-25 | Digital Equipment Corporation | Branch prediction |
US5136697A (en) * | 1989-06-06 | 1992-08-04 | Advanced Micro Devices, Inc. | System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache |
US5129067A (en) * | 1989-06-06 | 1992-07-07 | Advanced Micro Devices, Inc. | Multiple instruction decoder for minimizing register port requirements |
US5226130A (en) | 1990-02-26 | 1993-07-06 | Nexgen Microsystems | Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency |
US5230068A (en) | 1990-02-26 | 1993-07-20 | Nexgen Microsystems | Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence |
DE69130588T2 (de) * | 1990-05-29 | 1999-05-27 | National Semiconductor Corp., Santa Clara, Calif. | Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür |
JPH04111127A (ja) * | 1990-08-31 | 1992-04-13 | Toshiba Corp | 演算処理装置 |
WO1992006426A1 (en) * | 1990-10-09 | 1992-04-16 | Nexgen Microsystems | Method and apparatus for parallel decoding of instructions with branch prediction look-up |
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 |
AU3776793A (en) * | 1992-02-27 | 1993-09-13 | Intel Corporation | Dynamic flow instruction cache memory |
-
1993
- 1993-07-06 EP EP93305303A patent/EP0586057B1/de not_active Expired - Lifetime
- 1993-07-06 DE DE69327927T patent/DE69327927T2/de not_active Expired - Fee Related
- 1993-07-23 KR KR1019930014006A patent/KR100287628B1/ko not_active IP Right Cessation
- 1993-08-12 JP JP21921993A patent/JP3518770B2/ja not_active Expired - Lifetime
-
1997
- 1997-02-14 US US08/800,367 patent/US6304961B1/en not_active Expired - Fee Related
-
2001
- 2001-08-13 US US09/927,346 patent/US20020124162A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
EP0586057B1 (de) | 2000-03-01 |
EP0586057A3 (en) | 1994-06-22 |
KR100287628B1 (ko) | 2001-06-01 |
US6304961B1 (en) | 2001-10-16 |
KR940004436A (ko) | 1994-03-15 |
DE69327927D1 (de) | 2000-04-06 |
EP0586057A2 (de) | 1994-03-09 |
US20020124162A1 (en) | 2002-09-05 |
JPH06208463A (ja) | 1994-07-26 |
JP3518770B2 (ja) | 2004-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69327927T2 (de) | Schnelles Vorausholen und Zuteilung von Befehlen mittels vorausschauender Anmerkungen von früher vorausgeholten | |
DE69534148T2 (de) | Rechnersystem zur Ausführung von Verzweigungsbefehlen | |
DE10084556B4 (de) | Optimierte Ausführung von statisch sehr wahrscheinlich vorhergesagten Verzweigungsbefehlen | |
DE69702350T2 (de) | Verzweigungsvorhersageschema für cachespeicherzeile, das von sätzen eines set-assoziativen cachespeichers gemeinsam verwendet wird | |
DE69031991T2 (de) | Verfahren und Gerät zur Beschleunigung von Verzweigungsbefehlen | |
DE69929936T2 (de) | Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem | |
DE3751474T2 (de) | Verzweigungsstrom-Koprozessor. | |
DE69229198T2 (de) | Verzweigungsbefehlprozessor und Verfahren | |
DE19527031C2 (de) | Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems | |
DE69023568T2 (de) | Cache-Speicheranordnung. | |
DE4447238B4 (de) | Schaltungsanordnung und Verfahren zum Gewinnen von Informationen zur Verzweigungsvorhersage | |
DE69932066T2 (de) | Mechanismus zur "store-to-load forwarding" | |
DE68928812T2 (de) | Vorrichtung zur Auflösung von einer variablen Anzahl von möglichen Speicherzugriffskonflikten in einem Pipeline-Rechnersystem und Verfahren dazu | |
DE69433339T2 (de) | Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren | |
DE69904189T2 (de) | Konfigurierter prozessor zur abbildung von logischen registernummern auf physikalische registernummern unter verwendung von virtuellen registernummern | |
DE69321698T2 (de) | Verfahren und System zur verbesserten Genauigkeit der Sprungvorhersage in einem Superskalarprozessor | |
DE69434669T2 (de) | Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge | |
DE3851746T2 (de) | Sprungvorhersage. | |
DE69504135T2 (de) | Einrichtung zur Aktualisierung von Programmzählern | |
DE60308201T2 (de) | Datenverarbeitungssystem mit externen und internen anweisungssätzen | |
DE3785897T2 (de) | Steuervorrichtung zum vorabruf von befehlen. | |
DE69835100T2 (de) | Prozessor konfiguriert um vorausschauende resultate von zusammengefassten übertragungs-, vergleichs- und einfachen arithmetischen befehlen zu produzieren | |
DE69427672T2 (de) | Befehlscachespeicher für Befehle mit variabler Byteslänge | |
DE69904479T2 (de) | Registerumbenennung wobei übertragungsinstruktionen mittels umbenennungsschildernzeichen realisiert werden | |
DE69622663T2 (de) | Zweistufige vorausholungspufferstruktur und verfahren mit bypass |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |