DE19926580A1 - A predictive process for jump instructions is used in a computer system to improve the speed of access to main memory data and uses historical data in a cache memory - Google Patents

A predictive process for jump instructions is used in a computer system to improve the speed of access to main memory data and uses historical data in a cache memory

Info

Publication number
DE19926580A1
DE19926580A1 DE19926580A DE19926580A DE19926580A1 DE 19926580 A1 DE19926580 A1 DE 19926580A1 DE 19926580 A DE19926580 A DE 19926580A DE 19926580 A DE19926580 A DE 19926580A DE 19926580 A1 DE19926580 A1 DE 19926580A1
Authority
DE
Germany
Prior art keywords
memory
branch
address
tag field
jump destination
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
Application number
DE19926580A
Other languages
German (de)
Other versions
DE19926580C2 (en
Inventor
Rolf Hilgendorf
Ravi Nair
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE19926580A1 publication Critical patent/DE19926580A1/en
Application granted granted Critical
Publication of DE19926580C2 publication Critical patent/DE19926580C2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques

Abstract

The computer system has a cache memory (10) in which there is stored a second tag field (13) together with additional history data. Multiple jump addresses for each branch address are stored. This data is used in a forecast process to improve the speed of access to data within the main memory of the system. A first tag field (12) having address information of branch command is compared with content of second tag field to forecast jump target address.

Description

Die Erfindung betrifft Verfahren und Vorrichtung zur Vorhersage von Sprungzieladressen bei der Verarbeitung von Verzweigungsbefehlen.The invention relates to methods and apparatus for Predicting jump destination addresses when processing Branch instructions.

In modernen Rechnersystemen müssen Maßnahmen getroffen werden, um die relativ langsamen Hauptspeicherzugriffe an die im Verhältnis dazu schnelle Verarbeitung der durch diese Zugriffe verfügbaren Daten in dem bzw. den Prozessor(en) anzupassen.In modern computer systems, measures have to be taken to the relatively slow main memory accesses to the in Relative to this, fast processing of these accesses adapt available data in the processor (s).

In Rechnersystemen mit superskalarer Prozessorarchitektur und Pipelinetechniken werden gleich mehrere Anweisungen aus dem Programm für eine Verarbeitung durch den bzw. die Prozessoren vorgehalten und verarbeitet. Folgen die Anweisungen sequentiell und unabhängig voneinander im Programm jeweils aufeinander, ergeben sich dabei keine Probleme. Komplizierter ist die Lage, wenn Verzweigungsbefehle (for, if, switch, etc. . .) in einer Pipeline verarbeitet werden sollen. Dabei sollte neben dem Ergebnis einer Verzweigung auch deren Sprungzieladresse bekannt sein. Verzweigungen sind hierfür sinnvollerweise unterscheidbar nach bedingten und unbedingten, sowie nach direkten und indirekten Verzweigungen.In computer systems with superscalar processor architecture and Pipeline techniques are several instructions from the Program for processing by the processor or processors kept and processed. Follow the instructions sequentially and independently of each other in the program one another, there are no problems. More complicated is the situation when branch instructions (for, if, switch, Etc. . .) to be processed in a pipeline. Here in addition to the result of a branch, its Jump destination address to be known. Branches are for this usefully distinguishable between conditional and unconditional, as well as after direct and indirect branches.

Die Zieladressen sind für direkte Verzweigungen immer dieselben, meist durch ein Offset der Adresse des Verzweigungsbefehls selbst gegeben. Hierfür ist der Verzweigungszielspeicher (BTB, branch target buffer) ein Speicher, der für jeden Verzweigungsbefehl dessen Sprungzieladresse gespeichert hat, ein wirksames Mittel, um diese zum Zeitpunkt des Abrufs vorherzusagen. The destination addresses are always for direct branches the same, mostly by an offset of the address of the Branch instruction given itself. For this is the Branch target buffer (BTB) Memory for each branch instruction of that Jump destination address has been an effective way to to predict this at the time of retrieval.  

Die Existenz von indirekten Verzweigungsbefehlen, die abhängig von den aktuellen Parametern des Programms, also dynamisch zur Programmlaufzeit zu verschiedenen Sprungzieladressen verzweigen, erhöht den Aufwand dafür, die richtige Sprungzieladresse vorherzusagen, da die aktuelle Parameterbelegung zum Zeitpunkt des Ladens der Pipeline mit den Anweisungen noch gar nicht feststeht. Während der Laufzeit erzeugte Sprungzieltabellen (branch history tables) stellen hierfür ein mögliches Mittel dar.The existence of indirect branch instructions that are dependent from the current parameters of the program, i.e. dynamically to Program runtime to different jump destination addresses branching, increases the effort for the right one Predict jump destination address since the current one Parameter assignment at the time of loading the pipeline with the instructions are not yet clear. During the term create branch history tables a possible means of doing this.

Das bedeutet, daß die Sprungzieladresse einer indirekten Verzweigung jedesmal eine andere sein kann, wenn sie ausgeführt wird. Daher ist es schwierig, die richtige Sprungzieladresse vorherzusagen, selbst wenn die Richtung der Verzweigung, d. h., ob sie erfolgt, d. h. springt oder nicht, bekannt ist. Ein Verzweigungszielspeicher (BTB) wäre hierfür nicht das geeignete Mittel, da dieser meist nur die zuletzt angesprungene Sprungzieladresse gespeichert hält.This means that the jump destination address is an indirect one Branching can be different every time it is performed. Therefore, it is difficult to find the right one Predict jump destination address even if the direction of the Branching, d. that is, whether it occurs, i.e. H. jumps or not is known. A branch destination memory (BTB) would be for this not the appropriate remedy, since this is usually only the last jumped jump destination address keeps stored.

Bisher wurde zur besseren Vorhersage von Sprungzieladressen beispielsweise in Chang, P.Y., Hao, E., Patt, Y.N. in "Predicting Indirect Jumps Using a Target Cache", Proc. 24th Ann. International Symposium On Computer Architecture, 1997, S. 274-283 vorgeschlagen, einen Cache-Speicher für die Sprungzieladresse zu verwenden, bei dem mehrere Adressen für ein und denselben Verzweigungsbefehl speicherbar sind, wobei Anordnungen mit bzw. ohne ein Tag-Feld vorgestellt werden. Das Tag-Feld enthält Informationen, die den Zugriff auf die richtige Sprungzieladresse über eine geeignete Indexbildung aus Adreß- und History-Informationen sicherer machen sollen.So far, for better prediction of jump destination addresses, for example in Chang, PY, Hao, E., Patt, YN in "Predicting Indirect Jumps Using a Target Cache", Proc. 24 th ann. International Symposium On Computer Architecture, 1997, pp. 274-283 proposed to use a cache memory for the jump destination address, in which several addresses can be stored for one and the same branch instruction, arrangements with or without a tag field being presented. The tag field contains information that is intended to make access to the correct jump destination address more secure by means of a suitable index formation from address and history information.

Dabei wird die Adresse für den Zugriff auf den Cachespeicher unter Verwendung der Adresse des Verzweigungsbefehls, wie es aus der BTB-Technologie bekannt ist, sowie unter Verwendung von History-Informationen erzeugt, die Informationen hinsichtlich der für den aktuellen Verzweigungsbefehl charakteristischen, vorher ausgeführten Befehlsadressen speichern und dazu verwendet werden, um zwischen den einzelnen Sprungzieladressen selektieren zu können.This is the address for accessing the cache memory using the address of the branch instruction as it is known from BTB technology, as well as using generated from history information, the information as for the current branch instruction characteristic, previously executed command addresses  save and be used to switch between each To be able to select jump destination addresses.

Hierbei werden entweder sogenannte global pattern history oder alternativ dazu path history Informationen verarbeitet.Here either so-called global pattern history or alternatively, path history information is processed.

Die ersten verkörpern in Bitfolgen Informationen darüber, welche der letzten m Verzweigungen gesprungen sind und welche nicht, wobei nur die Abfolge gesprungen/nicht gesprungen gespeichert ist, nicht jedoch die zugehörigen Befehlsadressen. Dafür wird nur 1 Bit pro Verzweigungsbefehl benötigt.The first embody information in bit sequences about which of the last m branches jumped and which not, only the sequence jumped / not jumped is saved, but not the associated command addresses. Only 1 bit per branch instruction is required for this.

Die letzteren (path history) verkörpern in Bitfolgen Informationen über die letzten n Verzweigungsbefehlsadressen selbst. Hierbei werden nicht vollständige Adressen, sondern meist nur die signifikanten, niederwertigen Bits, beispielsweise zwei Bits gespeichert.The latter (path history) embody in bit sequences Information about the last n branch instruction addresses itself. This does not include full addresses, but usually only the significant, least significant bits, for example, two bits are stored.

Beide Typen von History-Informationen sind auf den gegenwärtigen Verzweigungsbefehl bezogen, für den eine Sprungzielvorhersage getroffen werden soll. Sie sind jedoch unterschiedlich dicht - ein bzw. zwei Bit pro Verzweigungsbefehl.Both types of history information are on the current branch instruction related to one Jump destination prediction should be made. However, you are different densities - one or two bits per Branch instruction.

In dem oben erwähnten Verfahren müssen jedoch zur Vermeidung eines unverhältnismäßig großen Cache-Speichers bei der Anordnung ohne Tag-Feld die Adressen mit den History- Informationen einer Hash-Funktion unterworfen werden. Dies bringt den Nachteil mit sich, daß für unterschiedliche Verzweigungsbefehlsadressen und unterschiedliche History- Informationen auf den gleichen Sprungzieladressen-Eintrag zugegriffen werden könnte. Das bedeutet, daß für unterschiedliche Verzweigungen dieselbe Sprungzieladresse vorhergesagt würde.In the procedure mentioned above, however, must be avoided a disproportionately large cache memory at the Arrangement without a tag field the addresses with the history Information is subjected to a hash function. This has the disadvantage that for different Branch instruction addresses and different history Information on the same jump destination entry could be accessed. That means that for different branches the same jump destination address would be predicted.

Bei der Anordnung mit Tag-Feld im Cache-Speicher werden in der oben genannten Veröffentlichung drei verschiedene Methoden vorgestellt, wie das Tag-Feld gebildet und auf den Cache- Speicher zugegriffen werden kann. Dabei gelingt es nicht, auszuschließen, daß bei unterschiedlichen Verzweigungsbefehlsadressen und unterschiedlichen History- Informationen auf den gleichen Sprungzieladressen-Eintrag zugegriffen werden kann. Darüberhinaus besteht die Möglichkeit, daß für eine bekannte Verzweigung gar keine Sprungzieladresse vorhergesagt werden kann, wenn die Verzweigung noch nicht zusammen mit den aktuellen History- Informationen angetroffen wurde.When arranged with a tag field in the cache memory, the above publication three different methods  introduced how the tag field is formed and on the cache Memory can be accessed. It does not succeed exclude that at different Branch instruction addresses and different history Information on the same jump destination entry can be accessed. In addition, there is Possibility that for a known branch none at all Jump destination address can be predicted if the Branch not yet together with the current history Information was encountered.

Aufgabe der vorliegenden Erfindung ist es daher, ein Verfahren und eine Vorrichtung zu schaffen, die die Auswahlmechanismen unter Vermeidung der zuletzt genannten Nachteile der fehlenden Eindeutigkeit der Sprungzieladresse zu verbessern und zu verallgemeinern.The object of the present invention is therefore a method and to create a device that uses the selection mechanisms while avoiding the latter disadvantages of missing Improve and uniqueness of the jump destination address generalize.

Die Aufgabe wird durch das in Anspruch 1 angegebene Verfahren sowie die in Anspruch 8 angegebene Vorrichtung gelöst.The object is achieved by the method specified in claim 1 and the device specified in claim 8 solved.

Die der vorliegenden Erfindung zugrundeliegende Idee besteht darin, daß eine Sprungzieladresse eines Verzweigungsbefehls dadurch vorhergesagt wird, daß auf denjenigen Sprungzieladressen-Eintrag im Cache-Speicher zugegriffen wird, der sich ergibt nach einem vorgeschalteten Abgleich von höherwertigen Bits der Verzweigungsbefehlsadresse, einem weiteren Abgleich von niederwertigen, verbleibenden Bits der Verzweigungsbefehlsadresse in einem ersten Tag-Feld des Cache- Speichers, wodurch zunächst die Identität des gespeicherten Verzweigungsbefehls mit dem aktuellen Verzweigungsbefehl sichergestellt wird, und einem nachfolgenden Vergleich auf möglichst weitgehende Übereinstimmung zwischen den in dem zweiten Tag-Feld gespeicherten History-Informationen mit denen der aktuellen History.The idea on which the present invention is based exists in that a branch target address of a branch instruction by predicting that on those Jump destination address entry is accessed in the cache memory, which results from an upstream comparison of high order bits of the branch instruction address, one further comparison of low-order remaining bits of the Branch instruction address in a first tag field of the cache Memory, which initially creates the identity of the stored Branch instruction with the current branch instruction is ensured, and a subsequent comparison the greatest possible agreement between those in the second tag field saved history information with those the current history.

Das erfindungsgemäße Verfahren mit den Merkmalen des Anspruchs 1 und die erfindungsgemäße Vorrichtung mit dem Merkmalen des Anspruchs 8 weisen gegenüber den vorstehend skizzierten Ansätzen den Vorteil auf, daß ein Cache-Speicher für Sprungzieladressen (target-Cache) in einen herkömmlichen Verzweigungszielspeicher (BTB) integriert werden kann, wobei nur geringfügig mehr Fehlvorhersagen in Kauf genommen werden müssen. Desweiteren kann auch dann eine Sprungzieladresse vorhergesagt werden, wenn für einen bereits bekannten Verzweigungsbefehl eine noch unbekannte History vorliegt.The inventive method with the features of the claim 1 and the device according to the invention with the features of  Claim 8 point over those outlined above Approaches the advantage of having a cache for Jump destination addresses (target cache) into a conventional one Branch destination memory (BTB) can be integrated, whereby only slightly more mispredictions are accepted have to. Furthermore, a jump destination address can also be used be predicted if for an already known one Branch instruction has an as yet unknown history.

In den Unteransprüchen finden sich vorteilhafte Weiterbildungen des in Anspruch 1 angegebenen Verfahrens sowie der in Anspruch 8 angegebenen Vorrichtung.There are advantageous ones in the subclaims Developments of the method specified in claim 1 and the device specified in claim 8.

Gemäß einer besonders bevorzugten Weiterbildung werden in dem zweiten Tag-Feld als History-Informationen bestimmte Bit- Folgen gespeichert, die aus einer XOR-Verknüpfung von global history und path history gewonnen werden, wodurch in den meisten Fällen die Vorhersagequalität noch weiter gesteigert werden kann.According to a particularly preferred development, the second tag field bit history determined as history information Episodes saved from an XOR of global history and path history are obtained, whereby in the in most cases the forecast quality is further increased can be.

Die nachfolgenden Ausführungsbeispiele der Erfindung dienen der Erläuterung des erfinderischen Prinzips. Sie sind in den Zeichnungen dargestellt und in der nachfolgenden Beschreibung näher erläutert.The following exemplary embodiments of the invention serve the explanation of the inventive principle. You are in the Drawings shown and in the description below explained in more detail.

Es zeigen:Show it:

Fig. 1 den schematischen Aufbau eines Eintrags einer integrierten Ausführungsform des erfindungsgemäßen Cachespeichers; FIG. 1 shows the schematic structure of an entry of an integrated embodiment of the cache memory according to the invention;

Fig. 2 in einer schematischen Gesamtübersicht eine Ausführungsform des Ablaufs des erfindungsgemäßen Verfahrens in einer weiteren Ausbildung des erfindungsgemäßen Cache-Speichers im Zusammenwirken mit einem separat angeordneten, herkömmlichen Verzweigungszielspeicher (BTB); Fig. 2 shows an embodiment of the procedure of the method of the cache memory according to the invention in cooperation disposed in a schematic overall view in a further embodiment with a separate, conventional branch target storage (BTB);

Fig. 3 in schematischer Darstellung einen Detailausschnitt der Ausführungsform aus Fig. 2. Fig. 3 shows a schematic representation of a detail of the embodiment of FIG. 2.

Mit Bezug auf Fig. 1 wird zunächst eine zweckmäßige Ausgestaltung eines Eintrags des erfindungsgemäßen Cache- Speichers 10 erläutert, wie er in integrierter Form die Datenstruktur eines herkömmlichen BTB mitumfaßt.With reference to FIG. 1, an expedient embodiment of an entry of the cache memory 10 according to the invention is first explained, as it also includes the data structure of a conventional BTB in an integrated form.

Der Eintrag des Cache-Speichers 10 enthält ein erstes Tag-Feld 12, das eine bestimmte Anzahl von jeweils niederwertigen Adreßbits von Verzweigungsbefehlsadressen enthält. Im vorliegenden Ausführungsbeispiel, das auf eine Adreßbreite von 32 Bit ausgerichtet ist, enthält es beispielhalber die niederwertigen 24 Bit derjenigen Verzweigungsbefehlsadresse 30, für deren Verzweigungsziel die Vorhersage getroffen werden soll. Weiter ist erfindungsgemäß ein zweites Tag-Feld 13 vorhanden, das der zusätzlichen Differenzierung bei der Auswahl der Sprungzieladresse dient, wobei jedem zweiten Tag- Feld in einer n-fach Set-assoziativen Datenstruktur genau eine Sprungzieladresse in einem Feld 14 zugeordnet ist. Im vorliegenden Fall soll n = 4 gelten.The entry in the cache memory 10 contains a first tag field 12 , which contains a certain number of low-order address bits of branch instruction addresses. In the present exemplary embodiment, which is aligned to an address width of 32 bits, it contains, for example, the low-order 24 bits of the branch instruction address 30 for which the branch target is to be predicted. Furthermore, according to the invention there is a second tag field 13 which serves for additional differentiation in the selection of the jump destination address, with exactly one jump destination address in a field 14 being assigned to every second tag field in an n-fold set-associative data structure. In the present case, n = 4 should apply.

Ein weiteres Feld 16, das mehrere Bits umfaßt, ist für mehrere Flags vorgesehen. Hier können verschiedene Informationen bzgl. der Verzweigungen verschlüsselt sein, wobei die Flags beispielsweise Aussagen zulassen sollen, wie etwa:
ob eine bedingte oder eine unbedingte Verzweigung vorliegt,
ob eine identifizierte Returnadresse vorliegt oder nicht,
ob eine identifizierte Calladresse vorliegt oder nicht,
ob ein Verzweigungsbefehl mit mehreren, d. h. variierenden Sprungzieladressen vorliegt oder nicht, etc.
Another field 16 , which comprises several bits, is provided for several flags. Various information regarding the branches can be encrypted here, the flags, for example, to allow statements, such as:
whether there is a conditional or unconditional branch,
whether there is an identified return address or not,
whether there is an identified call address or not,
whether or not there is a branch instruction with several, ie varying, jump destination addresses, etc.

Durch Hinzunahme des zweiten Tag-Feldes 13 können erfindungsgemäß mehrere Sprungzieladressen für ein und dieselbe Verzweigungsbefehlsadresse 30 in dem Cache-Speicher 10 gespeichert werden, da deren eindeutige Zuordnung über das zweite Tag-Feld gegeben ist. By adding the second tag field 13 , according to the invention, a plurality of jump destination addresses for one and the same branch instruction address 30 can be stored in the cache memory 10 , since their unique assignment is given via the second tag field.

Mit Bezug auf Fig. 2 wird nun das erfindungsgemäße Verfahren im Zusammenhang mit dem erfindungsgemäßen Cache-Speicher 10 in einer abgewandelten Form näher erläutert, wobei dieser in räumlich getrennter Form mit einem herkömmlichen Verzweigungsbefehlsspeicher 20 nach dem erfindungsgemäßen Verfahren zusammenwirkt.With reference to FIG. 2, the method according to the invention in connection with the cache memory 10 according to the invention will now be explained in a modified form, this interacting in a spatially separated form with a conventional branch instruction memory 20 according to the method according to the invention.

Dem Verzweigungsbefehlsspeicher 20, der hier beispielhalber als 4-fach Set-assoziativer Speicher ausgebildet ist, ist für die Speicherung der verschiedenen Sprungzieladressen zum Zwecke der Verarbeitung eines Verzweigungsbefehls mit variierenden Sprungzieladressen der Cache-Speicher 10 als separater, kleiner und schneller Speicherbaustein nur für diesen Zweck zugeordnet. Ein solcher Aufbau kann sich insbesondere dann empfehlen, wenn eine geringfügig erniedrigte Trefferhäufigkeit nicht toleriert werden darf, oder wenn das Hinzufügen des zweiten Tag-Feldes für jeden Eintrag eine nicht mehr tolerierbare Flächenzunahme des Verzweigungsbefehlsspeichers 20 verursachen würde. In einem solchen Fall sollte die Assoziativität des Cache-Speichers 10 vorzugsweise zwischen 8 und 16 liegen, damit die meisten der möglichen Sprungzieladressen der Verzweigungen mit mehreren Sprungzieladressen in einen Set passen.The branch instruction memory 20 , which is designed here for example as a 4-fold set-associative memory, is the cache memory 10 as a separate, small and fast memory module for storing the different branch target addresses for the purpose of processing a branch instruction with varying branch target addresses assigned. Such a structure can be recommended in particular if a slightly reduced frequency of hits must not be tolerated, or if the addition of the second tag field for each entry would cause an unacceptable increase in the area of the branch instruction memory 20 . In such a case, the associativity of the cache memory 10 should preferably be between 8 and 16, so that most of the possible branch target addresses of the branches with multiple branch target addresses fit into one set.

Wenn nun für einen aktuellen, in die Pipeline zu ladenden Verzweigungsbefehl eine Sprungzieladresse vorhergesagt werden soll, erfolgt in einem ersten Schritt in einem Komparator 32 ein Identitätsvergleich der höherwertigen Adreßbits der Verzweigungsbefehlsadresse 30 durch Zweig 34 und der niederwertigen, im ersten Tag-Feld 22 des Speichers 20 gespeicherten Adreßbits durch Zweig 36 jeweils mit den entsprechenden Adreßbitfolgen der aktuellen Verzweigungsbefehlsadresse 30, für die die Sprungzieladresse vorhergesagt werden soll. Das Ergebnis identisch/nicht identisch wird in eine Entscheidungslogik 39 weitergeleitet. If a jump target address is now to be predicted for a current branch instruction to be loaded into the pipeline, in a first step the comparator 32 compares the higher order address bits of the branch instruction address 30 by branch 34 and the lower order in the first tag field 22 of the memory 20 stored address bits by branch 36 each with the corresponding address bit sequences of the current branch instruction address 30 for which the branch destination address is to be predicted. The result identical / not identical is forwarded to a decision logic 39 .

Bei Identität wird durch Abfrage des Flags 26 im Feld 16 des Verzweigungsbefehlsspeichers 20 über Zweig 40 und eine Entscheidungslogik 41 festgestellt, ob es sich um eine Verzweigung mit variierender Sprungzieladresse handelt oder nicht. Falls nicht, handelt es sich in den meisten Fällen um den einfachen Fall einer direkten Verzweigung, die den erfindungsgemäßen Cache-Speicher 10 gar nicht zur Vorhersage benötigt. Dann wird direkt die nach einer Initialisierung im Feld 24 des Verzweigungszielspeichers 20 gespeicherte Sprungzieladresse durch Zweig 38 und die Entscheidungslogik 39 zur Vorhersage bereitgestellt.If there is an identity, it is determined by querying the flag 26 in the field 16 of the branch instruction memory 20 via branch 40 and a decision logic 41 whether or not it is a branch with a varying jump destination address. If not, it is in most cases the simple case of a direct branch, which does not require the cache memory 10 according to the invention for prediction. Then the branch destination address stored in field 24 of branch destination memory 20 after initialization is provided by branch 38 and decision logic 39 for prediction.

Falls eine variierende Sprungzieladresse vorliegt, wird zwecks Ermittlung der geeigneten Sprungzieladresse auf den Cache- Speicher 10 zugegriffen. Das Flag 26 kann nach zweimaligem Antreffen des Verzweigungsbefehls während der Initialisierungsphase geschrieben werden, da dann feststeht, ob sich die zugehörigen Sprungzieladressen unterschieden haben oder nicht. Haben sie sich unterschieden, so wird das Flag 26 so gesetzt, daß auf den Cache-Speicher 10 zugegriffen werden soll. Der Zugriff kann dann beim nächsten Vorkommen des Verzweigungsbefehls über das geschriebene Flag 26 und den Zweig 40 erfolgen. Die weiteren, oben erwähnten Flags können ebenfalls über die Entscheidungslogik 41 verarbeitet werden.If there is a varying jump destination address, the cache memory 10 is accessed to determine the suitable jump destination address. The flag 26 can be written after the branch instruction has been encountered twice during the initialization phase, since it is then certain whether the associated jump destination addresses have differed or not. If they differ, the flag 26 is set so that the cache memory 10 is to be accessed. The access can then take place the next time the branch instruction occurs via the written flag 26 and the branch 40 . The other flags mentioned above can also be processed via decision logic 41 .

Beim Zugriff auf den Cache-Speicher 10 wird analog zu dem oben geschilderten Abgleich der höher- bzw. niederwertigen Adreßteile des Verzweigungsbefehls sichergestellt, daß die im ersten Tag-Feld 12 gespeicherte Bitfolge den niederwertigen Bits der aktuellen Verzweigungsbefehlsadresse 30 entspricht.When accessing the cache memory 10 , it is ensured analogously to the above-described comparison of the higher or lower-order address parts of the branch instruction that the bit sequence stored in the first tag field 12 corresponds to the low-order bits of the current branch instruction address 30 .

Dieser Adressenvergleich findet im rechten Teil von Fig. 2 in den Zweigen 42, 44 und in dem Komparator 46 statt, mit der Maßgabe, daß die niederwertigen Bits aus dem ersten Tag-Feld 12 des Cache 10 stammen. Weiter findet über Zweig 48 der oben geschilderte Zugriff auf die zweiten Tag-Felder 13 des Cache 10 sowie im Verknüpfungspunkt 52 ein XOR-Vergleich der gespeicherten History-Informationen auf Übereinstimmung mit den aktuellen History-Informationen 53 aus Zweig 54 statt. Dieser Vergleich ist weiter unten genauer beschrieben. In einer Entscheidungslogik 56 wird das zweite Tag-Feld 13 mit der bestmöglichen Übereinstimmung mit den aktuellen History- Mustern ermittelt. Die ,zugehörige Sprungzieladresse aus Feld 14 wird über die Multiplexsteuerung der Entscheidungslogik 60 als Auswahl aus dem 4-fach Set-assoziativ organisierten Speicher 10 über die Zweige 57 und 58 und die Entscheidungslogik 60 selektiert. Die Entscheidungslogik 62 gleicht. u. a. mit den Steuerbits aus dem Feld 16 ab und stellt die Sprungzieladresse für die weitere Verarbeitung zur Verfügung.This address comparison takes place in the right part of FIG. 2 in branches 42 , 44 and in comparator 46 , with the proviso that the low-order bits come from the first tag field 12 of the cache 10 . Next place through branch 48 of the above-described access to the second tag fields 13 of the cache 10 and in node 52 an XOR comparison of history information stored in accordance with the current history information 53 of branch 54 instead. This comparison is described in more detail below. In a decision logic 56 , the second tag field 13 is determined with the best possible match with the current history patterns. The associated jump destination address from field 14 is selected via the multiplex control of the decision logic 60 as a selection from the 4-fold set-associative memory 10 via the branches 57 and 58 and the decision logic 60 . Decision logic 62 is the same. inter alia with the control bits from field 16 and makes the jump destination address available for further processing.

Mit ergänzendem Bezug auf Fig. 3, die einen Detailausschnitt aus Fig. 2 darstellt, der insoweit die Logikschaltungen 46, 52 und 56 umfaßt, wird der Zugriff auf den Cache-Speicher 10 und die Verarbeitung der History-Informationen darin näher beschrieben.With additional reference to FIG. 3, which represents a detail section from FIG. 2, which in this respect comprises the logic circuits 46 , 52 and 56 , the access to the cache memory 10 and the processing of the history information therein are described in more detail.

Nach dem Abgleich der Verzweigungsbefehlsadresse bei 46 wird in der Entscheidungslogik 52 der Inhalt der zweiten Tag-Felder 13 mit den entsprechenden Informationen der aktuellen History- Muster auf eine weitestgehende, beste Übereinstimmung verglichen. Dabei enthalten die zweiten Tag-Felder 13 vorzugsweise Bitfolgen als Informationsmuster bzgl. der Richtung der bisher vom Programm durchlaufenen Verzweigungsbefehle (global pattern history), oder bzgl. der Sprungzieladressen der zum aktuellen Verzweigungsbefehl führenden Verzweigungsbefehle (path history) des zugehörigen, durch die Informationen im ersten Tag-Feld beschriebenen Verzweigungsbefehls. Diesbezüglich wird für weitere Einzelheiten auf die in der Beschreibungseinleitung gemachten Erläuterungen Bezug genommen.After the alignment of the branch instruction address at 46 , the content of the second tag fields 13 is compared in decision logic 52 with the corresponding information of the current history pattern for the best possible match. The second tag fields 13 preferably contain bit sequences as information patterns with regard to the direction of the branch instructions (global pattern history) previously run by the program, or with regard to the jump destination addresses of the branch instructions leading to the current branch instruction (path history) of the associated one, by the information in branch instruction described in the first tag field. In this regard, reference is made to the explanations given in the introduction to the description for further details.

Es wird dann durch Vergleich diejenige Sprungzieladresse ausgewählt, deren zweites Tag-Feld am besten mit der aktuellen History-Bitfolge übereinstimmt. Diese Auswahl erfolgt auf besonders bevorzugten Weise durch einen Identitätsvergleich der Bitfolgen, von links mit den höherwertigen, der jüngeren Vergangenheit entsprechenden Bits beginnend und nach rechts zur älteren Vergangenheit hin fortschreitend. Die längste, übereinstimmende Bitfolge, die zweckmäßigerweise durch bitweise XOR-Verknüpfung mit den entsprechenden Bitfolgen der aktuellen History festgestellt werden kann, bestimmt über Zweig 58 durch die Multiplexsteuerung in der Entscheidungslogik 60 die vorherzusagende Sprungzieladresse. Diese Verfahrensschritte der bitweisen Vergleiche werden sämtlich in der Entscheidungslogik 56 durchgeführt, die beispielsweise als programmierbare Logikanordnung (PLA) implementiert sein kann.The jump destination address whose second tag field best matches the current history bit sequence is then selected by comparison. This selection is made in a particularly preferred manner by comparing the identity of the bit sequences, starting from the left with the most significant bits corresponding to the more recent past and progressing to the right toward the older past. The longest, matching bit sequence, which can expediently be determined by bitwise XORing with the corresponding bit sequences of the current history, determines the branch destination to be predicted via branch 58 by the multiplex control in the decision logic 60 . These method steps of the bit-wise comparisons are all carried out in the decision logic 56 , which can be implemented, for example, as a programmable logic arrangement (PLA).

In Fig. 3 sind die oben genannten, bitweisen XOR-Verknüpfungen durch Pfeile dargestellt. Nach rechts in der Figur fortgesetzt sind die Vergleiche mit den anderen, assoziativ zugeordneten Mitgliedern des Sets der zugehörigen History-Informationen der Verzweigungsbefehlsadresse dargestellt. Der Ausgangspfeil 70 signalisiert den Cache-Hit für den Fall, daß im Speicher 20 keine Sprungzieladresse für eine Vorhersage gefunden wurde. Der Pfeil 70 mündet in ein UND-Gatter 71 in Fig. 2, das mit den Steuerbits der Flags aus dem Feld 16 abgleicht. Der Pfeil 72 stellt die Verbindung zum Auswerteschritt, der Pfeil 58 stellt die Verbindung zur Multiplexsteuerung für die Auswahl der richtigen Sprungzieladresse dar.In Fig. 3, the above-mentioned, bitwise XOR operations are represented by arrows. Continued to the right in the figure, the comparisons with the other associatively assigned members of the set of associated history information of the branch instruction address are shown. The output arrow 70 signals the cache hit in the event that no jump destination address for a prediction was found in the memory 20 . The arrow 70 opens into an AND gate 71 in FIG. 2, which compares with the control bits of the flags from the field 16 . The arrow 72 represents the connection to the evaluation step, the arrow 58 represents the connection to the multiplex control for the selection of the correct jump destination address.

Für den Fall, daß eine Sprungzieladresse falsch vorhergesagt wurde, was sich erst durch Abgleich des Ergebnisses des Auswerteschritts ergibt, sollte das die Sprungzieladressen speichernde Feld 14 des Cache-Speichers 10 aktualisiert werden.In the event that a jump destination address was incorrectly predicted, which only results from a comparison of the result of the evaluation step, the field 14 of the cache memory 10 storing the jump destination addresses should be updated.

Da für wird ein die Qualität - totale Übereinstimmung oder teilweise Übereinstimmung der verglichenen Bitfolgen - des XOR-Vergleichs wiedergebendes Ergebnis durch den Zweig 72 an den Auswerteschritt weitergeleitet. Bei totaler Übereinstimmung wird die Sprungzieladresse im Feld 14, die zur falschen Vorhersage geführt hat, mit der neuen, vom Auswerteschritt gefundenen Adresse überschrieben. Bei teilweiser Übereinstimmung, was bedeutet, daß ein Eintrag mit den speziellen History-Informationen noch nicht existiert, wird im Cache-Speicher 10 das Feld 14, das am längsten nicht mehr verwendet wurde, mit der neuen Adresse überschrieben.For this reason, a result representing the quality - total agreement or partial agreement of the compared bit sequences - of the XOR comparison is forwarded by branch 72 to the evaluation step. If there is a total match, the jump destination address in field 14 , which has led to the incorrect prediction, is overwritten with the new address found by the evaluation step. If there is a partial match, which means that an entry with the special history information does not yet exist, the field 14 in the cache memory 10 which has not been used for a long time is overwritten with the new address.

Das erfindungsgemäße Verfahren ermöglicht es im Zusammenhang mit dem erfindungsgemäßen Cache-Speicher 10, daß ein Cachespeicher für mehrere Zieladressen in einen herkömmlichen Verzweigungszielspeicher (BTB) integriert werden kann. Dabei müssen lediglich nur geringfügig mehr Fehlvorhersagen in Kauf genommen werden.In connection with the cache memory 10 according to the invention, the method according to the invention enables a cache memory for a plurality of destination addresses to be integrated into a conventional branch destination memory (BTB). Only slightly more false predictions have to be accepted.

Gewöhnlich werden entweder History-Informationsmuster bezüglich der bisher vom Programm durchlaufenen Verzweigungsbefehle (Global Pattern) oder History- Informationsmuster bezüglich der Sprungzieladressen der zum aktuellen Verzweigungsbefehl führenden Verzweigungsbefehle (Path History Pattern) gespeichert.Usually either history information patterns with regard to those that have been run by the program so far Branch commands (global pattern) or history Information pattern regarding the jump destination addresses of the to current branch instructions leading branch instructions (Path History Pattern) saved.

Beide besitzen ihre spezifischen Vor- und Nachteile, die je nach Benchmarking zu unterschiedlich guten Ergebnissen führen.Both have their specific advantages and disadvantages, each lead to different good results after benchmarking.

Es hat sich jedoch herausgestellt, daß in den meisten Fällen eine XOR-Verknüpfung der beiden History-Informationsmuster trotz ihrer ungleichen Dichte und infolgedessen der bei gleicher Bitlänge unterschiedlichen Anzahlen m bzw. n der von ihnen beschriebenen Verzweigungsbefehle, vgl. Beschreibungseinleitung, zu den besten Vorhersage-Ergebnissen führt. Daher wird diese Kombination für eine Speicherung im zweiten Tag-Feld 13 des Cache-Speichers 10 als besonders bevorzugt vorgeschlagen. It has been found, however, that in most cases an XOR combination of the two history information patterns despite their unequal density and as a result of the different numbers m and n of the branch instructions described by them with the same bit length, cf. Introduction to the description leads to the best prediction results. This combination is therefore proposed as being particularly preferred for storage in the second tag field 13 of the cache memory 10 .

Obwohl die vorliegende Erfindung anhand von bevorzugten Ausführungsbeispielen vorstehend beschrieben wurde, ist sie darauf nicht beschränkt, sondern auf vielfältige Weise modifizierbar.Although the present invention is based on preferred Embodiments described above, it is not limited to this, but in a variety of ways modifiable.

Insbesondere können die Länge der erwähnten Tag-Felder je nach Zweckmäßigkeit variieren. Weiter sind Änderungen und Anpassungen des Verfahrens absehbar, wenn - durch die Eigenarten der jeweils dem Programm zugrundeliegenden Hochsprache oder durch Aufgabenstellung des Programms bedingt, oder aus anderem Grunde - die Häufigkeit von Verzweigungsbefehlen und die Anzahl der einem Verzweigungsbefehl zugeordneten Sprungzieladressen variiert. In particular, the length of the mentioned tag fields can vary Expediency vary. Next are changes and Adjustments to the process foreseeable if - by the Peculiarities of the underlying program High-level language or due to the task of the program, or for another reason - the frequency of Branch instructions and the number of one Jump destination addresses assigned to the branch instruction vary.  

BezugszeichenlisteReference list

1010th

Cache-Speicher
Cache memory

1212th

erstes Tag-Feld
first tag field

1313

zweites Tag-Feld
second tag field

1414

Feld für Sprungzieladresse
Field for jump destination address

1616

Kennungsfeld
Identifier field

1818th

Vorhersage-Feld
Prediction field

2020th

Verzweigungzielspeicher
Branch destination store

2222

Tag-Feld f. niederw. Bits
Tag field f. low Bits

2424th

Feld f. Sprungzieladresse
Field f. Jump destination address

2626

Flag
Flag

3030th

Verzweigungsbefehlsadresse
Branch instruction address

3232

Komparator
Comparator

3434

, ,

3636

, ,

3838

, ,

4040

, ,

4242

, ,

4444

, ,

4848

, ,

5454

, ,

5858

Zweige
Branches

3939

Entscheidungslogik
Decision logic

4141

Entscheidungslogik
Decision logic

4646

Komparator
Comparator

5252

Entscheidungslogik
Decision logic

5353

History-Informationen
History information

5656

Entscheidungslogik, PLA
Decision logic, PLA

6060

Entscheidungslogik
Decision logic

6262

Entscheidungslogik
Decision logic

7070

Zweig bei teilweiser Übereinstimmung
Branch with partial agreement

7171

UND-Gatter
AND gate

7272

Zweig bei vollständiger Übereinstimmung
Branch in complete agreement

Claims (10)

1. Verfahren zur Vorhersage von Sprungzieladressen bei der Verarbeitung von diesen Sprungzieladressen zugeordneten Verzweigungsbefehlen eines in einem ersten Speicher eines Rechners gespeicherten Programms, wobei Verzweigungsbefehlsadressen (30) zusammen mit diesen zugeordneten, aus dem Programmablauf gewonnenen History-Informationen zum Schreiben und Auswerten eines Tag-Felds in einem zweiten Speicher (10) geringerer Zugriffszeit als der des ersten Speichers verarbeitet werden, um einen selektiven Zugriff auf die vorherzusagende Sprungzieladresse zu ermöglichen, wobei bestimmte, den Verzweigungsbefehlsadressen (30) zuzuordnende Adreßinformationen in ein erstes Tag-Feld (12) des zweiten Speichers (10) geschrieben werden, gekennzeichnet dadurch, daß die History-Informationen in ein zweites Tag-Feld (13) des zweiten Speichers geschrieben werden und das Auswählen der vorherzusagenden Sprungzieladresse durch Abgleich des ersten Tag-Felds (12) mit den Adreßinformationen des Verzweigungsbefehls und durch Vergleich des Inhalts des zweiten Tag-Felds (13) mit den aktuellen History-Informationen (53) des zu verarbeitenden Verzweigungsbefehls erfolgt.1. A method for predicting jump destination addresses during the processing of branch instructions of a program stored in a first memory of a computer, said branch instruction addresses ( 30 ) together with history information for writing and evaluating a tag field obtained from the program sequence associated with them in a second memory ( 10 ) with a shorter access time than that of the first memory, in order to enable selective access to the jump destination address to be predicted, certain address information to be assigned to the branch instruction addresses ( 30 ) being stored in a first tag field ( 12 ) of the second memory ( 10 ), characterized in that the history information is written into a second tag field ( 13 ) of the second memory and the selection of the jump destination address to be predicted by comparing the first tag field ( 12 ) with the address information of the branch instruction and by comparing the content of the second tag field ( 13 ) with the current history information ( 53 ) of the branch instruction to be processed. 2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß der Vergleich bitweise erfolgt und die beste Übereinstimmung durch die Länge der übereinstimmenden Bitfolge festgelegt wird.2. The method according to claim 1, characterized in that the comparison is done bit by bit and the best Match by the length of the matching Bit sequence is set. 3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß auf die jeweils wahrscheinlichste Sprungzieladresse eines Verzweigungsbefehls ohne Auswertung der History- Informationen (53) an einem bestimmten Speicherplatz in einem integrierten Verzweigungszielspeicher (10, 20). 3. The method according to claim 1 or 2, characterized in that on the most likely jump destination address of a branch instruction without evaluating the history information ( 53 ) at a certain memory location in an integrated branch target memory ( 10 , 20 ). 4. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß bei falscher Sprungzielvorhersage und vollständiger Übereinstimmung des Inhalts des zweiten Tag-Felds (13) mit den History-Informationen (53) des aktuell verarbeiteten Befehls die Sprungzieladresse des zugehörigen Eintrags im Verzweigungszielspeicher (10, 29) mit der richtigen Sprungzieladresse überschrieben wird und bei teilweiser Übereinstimmung vorzugsweise der am längsten nicht verwendete Eintrag überschrieben wird.4. The method according to claim 1 or 2, characterized in that in the event of incorrect jump destination prediction and complete agreement of the content of the second tag field ( 13 ) with the history information ( 53 ) of the currently processed instruction, the jump destination address of the associated entry in the branch destination memory ( 10 , 29 ) is overwritten with the correct jump destination address and, if there is partial agreement, the entry that has not been used for the longest time is preferably overwritten. 5. Verfahren nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, daß in dem zweiten Tag-Feld (13) jeweils global pattern History-Informationen und/oder path History-Informationen gespeichert werden.5. The method according to any one of the preceding claims, characterized in that in each case global pattern history information and / or path history information are stored in the second tag field ( 13 ). 6. Verfahren nach dem vorstehenden Anspruch, dadurch gekennzeichnet, daß in dem zweiten Tag-Feld (13) eine Bitfolge gespeichert wird, die sich aus einer eine XOR- Verknüpfung enthaltenden Verknüpfung der global pattern und der path History-Informationen ergibt.6. The method according to the preceding claim, characterized in that a bit sequence is stored in the second tag field ( 13 ), which results from a combination of the global pattern and the path history information containing an XOR operation. 7. Vorrichtung zur Durchführung des Verfahrens nach einem der vorstehenden Ansprüche, enthaltend den zweiten Speicher (10) als einen mehrere Einträge aufweisenden Cache-Speicher, der pro Eintrag das erste Tag-Feld (12), das zweite Tag-Feld (13) und ein Feld (14) für eine Sprungzieladresse enthält.7. Device for performing the method according to one of the preceding claims, comprising the second memory ( 10 ) as a multiple-entry cache memory, the first tag field ( 12 ), the second tag field ( 13 ) and contains a field ( 14 ) for a jump destination address. 8. Vorrichtung nach dem vorstehenden Anspruch, dadurch gekennzeichnet, daß der zweite Speicher (10) zusätzlich ein oder mehrere Kennungsfelder (16) zum Speichern von Steuerinformationen enthält.8. The device according to the preceding claim, characterized in that the second memory ( 10 ) additionally contains one or more identifier fields ( 16 ) for storing control information. 9. Vorrichtung zur Durchführung des Verfahrens nach einem der vorstehenden Ansprüche 1 bis 6, dadurch gekennzeichnet, daß sie einen Verzweigungszielspeicher (20) enthält, der pro Verzweigungsbefehlsadresse (30) zur Speicherung von wenigstens einer, vorzugsweise genau, einer Sprungzieladresse eingerichtet und in integrierter, Form mit dem zweiten Speicher (10) nach Anspruch 8 vorgesehen ist, wobei wenigstens ein zusätzliches Kennungsfeld (26) zur Steuerung der Auswertung der in den Tag-Feldern (12, 13) vorhandenen Informationen vorgesehen ist.9. Apparatus for carrying out the method according to one of the preceding claims 1 to 6, characterized in that it contains a branch destination memory ( 20 ) which is set up for each branch instruction address ( 30 ) for storing at least one, preferably exactly, a branch destination address and in an integrated, Form with the second memory ( 10 ) is provided according to claim 8, wherein at least one additional identifier field ( 26 ) is provided for controlling the evaluation of the information present in the tag fields ( 12 , 13 ). 10. Vorrichtung nach einem der vorstehenden Ansprüche 7 bis 9, dadurch gekennzeichnet, daß der zweite Speicher (10) als Cache-Speicher zur Speicherung von mehreren Sprungzieladressen mit einer Assoziativität von vorzugsweise 8 bis 16 ausgebildet und in separater Anordnung zum Zusammenwirken mit dem Verzweigungszielspeicher (20) eingerichtet ist, der seinerseits für jede Verzweigungsbefehlsadresse eine Sprungzieladresse sowie Steuerinformationen (26) enthält.10. Device according to one of the preceding claims 7 to 9, characterized in that the second memory ( 10 ) is designed as a cache memory for storing a plurality of jump destination addresses with an associativity of preferably 8 to 16 and in a separate arrangement for cooperation with the branch destination memory ( 20 ) is set up, which in turn contains a branch destination address and control information ( 26 ) for each branch instruction address.
DE19926580A 1998-07-14 1999-06-11 Method and device for predicting jump destination addresses Expired - Fee Related DE19926580C2 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11529198A 1998-07-14 1998-07-14

Publications (2)

Publication Number Publication Date
DE19926580A1 true DE19926580A1 (en) 2000-01-20
DE19926580C2 DE19926580C2 (en) 2001-01-11

Family

ID=22360415

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19926580A Expired - Fee Related DE19926580C2 (en) 1998-07-14 1999-06-11 Method and device for predicting jump destination addresses

Country Status (1)

Country Link
DE (1) DE19926580C2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1271308A3 (en) * 2001-06-20 2006-01-04 Fujitsu Limited Apparatus and method for branch prediction based on history table
CN113918225A (en) * 2021-11-04 2022-01-11 成都海光微电子技术有限公司 Instruction prediction method, instruction data processing apparatus, processor, and storage medium

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1271308A3 (en) * 2001-06-20 2006-01-04 Fujitsu Limited Apparatus and method for branch prediction based on history table
US7055023B2 (en) 2001-06-20 2006-05-30 Fujitsu Limited Apparatus and method for branch prediction where data for predictions is selected from a count in a branch history table or a bias in a branch target buffer
CN113918225A (en) * 2021-11-04 2022-01-11 成都海光微电子技术有限公司 Instruction prediction method, instruction data processing apparatus, processor, and storage medium

Also Published As

Publication number Publication date
DE19926580C2 (en) 2001-01-11

Similar Documents

Publication Publication Date Title
DE10084556B4 (en) Optimized execution of statically most likely predicted branch instructions
DE19526007C2 (en) Horizontally partitioned instruction cache
DE2515696C2 (en) Data processing system
DE10015675B4 (en) Speculative selection of hot tracks in a dynamic CACHE translator with little effort
DE3131341C2 (en)
DE19527031C2 (en) Branch processor for a data processing system and method for operating a data processing system
DE19943938B4 (en) Dynamic data prefetch based on a program counter and addressing mode
DE2630323A1 (en) DATA STORAGE DEVICE
DE19855806A1 (en) Device for execution of sub routines and jump operations in computer
DE2054835C2 (en) Control device in a processor of a multiprocessor data processing system
DE2154106A1 (en) RAM drive
DE102014000372A1 (en) IMPROVED CONTROL OF PREFETCH TRAFFICS
DE19526008C2 (en) Command prefetch unit for a computer
DE3046912C2 (en) Circuit arrangement for the selective deletion of cache memories in a multiprocessor data processing system
EP0285211B1 (en) Method for detecting continually pronounced words
EP1079307B1 (en) Method for operating a memory system as well as memory system
DE102005001679B4 (en) Microprocessor device, and method for branch prediction for conditional branch instructions in a microprocessor device
DE19926580C2 (en) Method and device for predicting jump destination addresses
DE69634464T2 (en) cache
EP0575413B1 (en) Process for the machine production of a program to be made up of several modules
DE2750126A1 (en) DATA PROCESSING SYSTEM WITH AN INTERMEDIATE BUFFER
DE10026017A1 (en) Generating addressed commands from command sequence in memory unit for implementation in pipeline microprocessor with pre-polling buffer involves
EP1818817A2 (en) Creation of patches via a cache
EP0139817B1 (en) Method and device for searching file data corresponding to a given search key in a hybrid associative memory
DE2840384C2 (en)

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee