JP2943772B2 - Branch prediction method - Google Patents

Branch prediction method

Info

Publication number
JP2943772B2
JP2943772B2 JP18046597A JP18046597A JP2943772B2 JP 2943772 B2 JP2943772 B2 JP 2943772B2 JP 18046597 A JP18046597 A JP 18046597A JP 18046597 A JP18046597 A JP 18046597A JP 2943772 B2 JP2943772 B2 JP 2943772B2
Authority
JP
Japan
Prior art keywords
prediction
branch
information
instruction
prediction information
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
Application number
JP18046597A
Other languages
Japanese (ja)
Other versions
JPH1115659A (en
Inventor
明 望月
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.)
NEC Corp
Original Assignee
Nippon Electric Co Ltd
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 Nippon Electric Co Ltd filed Critical Nippon Electric Co Ltd
Priority to JP18046597A priority Critical patent/JP2943772B2/en
Publication of JPH1115659A publication Critical patent/JPH1115659A/en
Application granted granted Critical
Publication of JP2943772B2 publication Critical patent/JP2943772B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Description

【発明の詳細な説明】DETAILED DESCRIPTION OF THE INVENTION

【0001】[0001]

【発明の属する技術分野】本発明は、情報処理装置の令
処理方式に関し、特に、パイプライン方式のプロセッサ
において、分岐によるパイプラインの乱れを小さくする
ための分岐命令処理方式に関する。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to an instruction processing method for an information processing apparatus, and more particularly to a branch instruction processing method for reducing pipeline disturbance due to branching in a pipeline processor.

【0002】[0002]

【従来の技術】分岐予測を行うパイプライン方式のプロ
セッサにおいては、その予測方式として、静的分岐予測
方式と動的分岐予測方式に分けることができる。
2. Description of the Related Art A pipeline-type processor for performing branch prediction can be divided into a static branch prediction method and a dynamic branch prediction method.

【0003】このうち、静的分岐予測方式は、プログラ
ムのコンパイル時に、分岐の方向が決定されるもので、
分岐命令の実行時において、その予測の方向は変わらな
い。分岐予測の正当性はあまり高くないが、ソフトウェ
アによる手法のため、ハードウェアコストがかからな
い。
In the static branch prediction method, a branch direction is determined at the time of compiling a program.
At the time of execution of the branch instruction, the direction of the prediction does not change. Although the validity of branch prediction is not very high, hardware cost is not required because of the software method.

【0004】一方、動的分岐予測方式は、現在までの実
行履歴を基に分岐予測が行われるものである。すなわ
ち、プログラム中の分岐命令の現在までの振る舞いに基
づき、予測の方向を随時変化させる。従来の動的分岐予
測の実現方法は、分岐先バッファを用いる。この分岐先
バッファの動作について図12を参照して以下に説明す
る。
On the other hand, in the dynamic branch prediction system, branch prediction is performed based on the execution history up to the present. That is, the direction of prediction is changed as needed based on the behavior of the branch instruction in the program up to the present. A conventional method for implementing dynamic branch prediction uses a branch destination buffer. The operation of the branch destination buffer will be described below with reference to FIG.

【0005】分岐先バッファとしては、図12に示すよ
うに、分岐命令アドレスを格納するレジスタと、予測次
アドレスを格納するレジスタと、予測データを格納する
1ないし複数ビットからなるレジスタ群をエントリ数N
だけ持つ構成を考える。
As shown in FIG. 12, the branch destination buffer includes a register for storing a branch instruction address, a register for storing a predicted next address, and a register group consisting of one or more bits for storing predicted data. N
Consider a configuration with only

【0006】現在命令フェッチ中のプログラムカウンタ
(「PC」という)と現在分岐先バッファにエントリさ
れている分岐命令アドレスを検索する。一致するものが
あれば、現在フェッチ中の命令は分岐命令であり、対応
する予測次アドレスを直ちに次PCとして命令フェッチ
用PCを更新し、命令フェッチを開始する。
A program counter (hereinafter referred to as "PC") which is currently fetching an instruction and a branch instruction address currently entered in a branch destination buffer are searched. If there is a match, the instruction currently being fetched is a branch instruction, and the PC for instruction fetch is updated immediately with the corresponding predicted next address as the next PC, and instruction fetch is started.

【0007】その後、分岐結果が予測と一致しなけれ
ば、予測次アドレスを更新し、再びフェッチを行う。予
測と一致すれば予測ヒットとしてそのまま実行を続行す
る。
Thereafter, if the branch result does not match the prediction, the predicted next address is updated and the fetch is performed again. If it matches the prediction, execution is continued as a prediction hit.

【0008】一方、分岐先バッファに一致するものが存
在しなければ、現在フェッチ中の命令は分岐命令でない
として、通常通りPCを更新し、このPCに対して次の
命令フェッチを行う。
On the other hand, if there is no match in the branch destination buffer, it is determined that the instruction currently being fetched is not a branch instruction, the PC is updated as usual, and the next instruction fetch is performed on this PC.

【0009】その後、パイプラインの命令解読ステージ
で分岐命令と認識されたなら、当該命令を次のPCとと
もに分岐先バッファにエントリする。
Thereafter, if the instruction is recognized as a branch instruction in the instruction decoding stage of the pipeline, the instruction is entered into the branch destination buffer together with the next PC.

【0010】分岐先バッファにエントリされた分岐命令
は、それぞれ、予測データを持つことになり、当該分岐
が成立または不成立のいずれかに予測されているかを記
録している。
Each of the branch instructions entered in the branch destination buffer has prediction data, and records whether the branch is predicted to be taken or not taken.

【0011】予測データと現在の分岐状況から、所定の
分岐予測アルゴリズムに基づいて、予測データを更新
し、予測ミス時に、予測次アドレスを直ちに更新すべき
かどうかの判断に使用できる。なお、分岐予測アルゴリ
ズムとしては、1ビット予測法、2ビット予測法などが
知られており、過去数回の分岐履歴を基に、予測を行
う。
Based on the prediction data and the current branch status, the prediction data can be updated based on a predetermined branch prediction algorithm, and can be used to determine whether or not the predicted next address should be updated immediately when a prediction error occurs. As a branch prediction algorithm, a one-bit prediction method, a two-bit prediction method, and the like are known, and a prediction is performed based on a history of several previous branches.

【0012】高いヒット率を望む分岐予測を実現するに
は、分岐先バッファなどを用いた動的分岐予測が有効で
ある。しかし、ハードウェアコスト的には大きなバッフ
ァを持たなければならない等の不利となる。また、分岐
先バッファを用いたときには、エントリ数に上限があ
り、バッファのエントリ数を越える分岐命令数を持つプ
ログラムに対応するには処理が複雑化する。また、プロ
グラム開始時には分岐先バッファは空の状態であるた
め、必然的に分岐予測ミスが増加する。
In order to realize a branch prediction that requires a high hit ratio, dynamic branch prediction using a branch destination buffer or the like is effective. However, there is a disadvantage in terms of hardware cost that a large buffer must be provided. When a branch destination buffer is used, there is an upper limit to the number of entries, and the processing becomes complicated to support a program having the number of branch instructions exceeding the number of entries in the buffer. Further, since the branch destination buffer is empty at the start of the program, branch prediction mistakes inevitably increase.

【0013】上記のような問題を解決するために、分岐
命令の命令フィールドに予測情報フィールドを設ける方
法が提案されている。この予測情報フィールドをみるこ
とにより、分岐先バッファに登録すべきか否かを決定
し、最小限のバッファを用意し、ハードウェアコストを
抑える方法も知られている。また、予測情報フィールド
を診ることにより予測オペレーションの内容、使用する
レジスタなどを決定し、分岐予測を行う方法も知られて
いる。
In order to solve the above problem, there has been proposed a method of providing a prediction information field in an instruction field of a branch instruction. There is also known a method of determining whether or not to register in the branch destination buffer by looking at the prediction information field, preparing a minimum buffer, and reducing hardware cost. There is also known a method of determining a content of a prediction operation, a register to be used, and the like by examining a prediction information field, and performing branch prediction.

【0014】[0014]

【発明が解決しようとする課題】分岐命令の命令フィー
ルドに予測情報フィールドを設けるという従来の分岐予
測方式においては、分岐先バッファを用いることを前提
とし、分岐先バッファを有効に利用する方法がとられて
きた。さらに、動的分岐予測の正当性を向上させるため
には、大きな分岐先バッファを用いることになる。
In a conventional branch prediction system in which a prediction information field is provided in an instruction field of a branch instruction, it is assumed that a branch destination buffer is used, and a method of effectively using the branch destination buffer is as follows. I have been. Further, in order to improve the validity of the dynamic branch prediction, a large branch destination buffer is used.

【0015】従来、ハードウェアコストを抑えるため
に、エントリをする分岐命令を選択するなどの方式によ
り、分岐先バッファのエントリ数の増大を抑止を図るよ
うにした方法が提案されてきた。
Conventionally, there has been proposed a method for suppressing an increase in the number of entries in a branch destination buffer by a method such as selecting a branch instruction to make an entry in order to reduce hardware costs.

【0016】しかしながら、分岐先バッファは動的分岐
予測には必須であり、この部分ハードウェアは最低限必
要となる。また、分岐先バッファの検索処理も回路の複
雑化、プロセッサの処理能力低下を招く。
However, the branch destination buffer is indispensable for dynamic branch prediction, and this partial hardware is required at a minimum. The search processing of the branch destination buffer also complicates the circuit and lowers the processing capability of the processor.

【0017】したがって、本発明は、上記問題点に鑑み
てなされたものであって、その目的は、分岐先バッファ
を用いることなく、ハードウェアコストの過大な増大を
抑止した分岐命令処理方式を提供することにある。
SUMMARY OF THE INVENTION Accordingly, the present invention has been made in view of the above problems, and has as its object to provide a branch instruction processing method which does not use a branch destination buffer and suppresses an excessive increase in hardware cost. Is to do.

【0018】[0018]

【課題を解決するための手段】前記目的を達成するた
め、発明の分岐命令処理方式は、分岐命令の命令フィ
ールド内に随時書換え可能な予測データフィールドを持
つ分岐命令を有し、予測データフィールドは、分岐の予
測情報を格納するフィールドと、前記予測情報の更新の
禁止・許可を制御する予測情報更新許可情報を格納する
フィールドと、を有する
Means for Solving the Problems] To achieve the above object, a branch instruction processing system of the present invention, have a branch instruction with at any time rewritable prediction data fields in the instruction field of the branch instruction, the prediction data field Is a branch
A field for storing measurement information, and a field for updating the prediction information.
Stores prediction information update permission information that controls prohibition / permission
And a field .

【0019】発明、予測データフィールドに、過去
の分岐履歴等の動的予測情報を持たせ、各分岐命令実行
時に随時変化させる手段を具備する。本発明において
は、好ましくは、前記予測データフィールドが、過去複
数回の分岐履歴を用いて分岐予測を行うための動的予測
情報を格納するフィールドと、前記動的予測情報の更新
の禁止・許可を制御する動的予測情報更新許可情報を格
納するフィールドと、を有する。
The present invention includes means for providing dynamic prediction information such as a past branch history in a prediction data field and changing it at any time when each branch instruction is executed. In the present invention
Preferably, the prediction data field is
Dynamic prediction for branch prediction using history of several branches
Field for storing information and updating of the dynamic prediction information
The dynamic prediction information update permission information that controls the prohibition / permission of
And a field to store.

【0020】発明は、上記予測データフィールドに過
去の分岐履歴等の動的予測情報を用いる場合、初期値を
静的分岐予測で決定するものである
The present invention, when using a dynamic prediction information such as past branch history in the prediction data field, is what determines the initial value in a static branch prediction.

【0021】発明は、上記予測データフィールドに静
的分岐予測情報を用い、プログラム処理の初期段階ない
しプログラム処理全体において、その予測情報の更新を
行わない。
The present invention uses static branch prediction information in the prediction data field, and does not update the prediction information in the initial stage of program processing or in the entire program processing.

【0022】発明は、上記予測データフィールドに過
去の分岐履歴等の動的予測情報を持っているとき、プロ
グラム処理中に随時、その予測情報の更新を行うことを
禁止できる。
According to the present invention, when dynamic prediction information such as a past branch history is stored in the prediction data field, updating of the prediction information at any time during program processing can be prohibited.

【0023】本発明は、上記予測データフィールドに動
的予測情報、静的分岐予測等の情報を持たさせる方式
を、プログラム処理中に随時選択できるように、前記予
測データフィールドに選択情報を持たせる。
According to the present invention, the prediction data field is provided with selection information so that a method for providing the prediction data field with information such as dynamic prediction information and static branch prediction can be selected at any time during program processing. .

【0024】発明は、プログラム中に分岐予測処理を
有する場合、ないしはある時点で直接分岐命令の予測デ
ータフィールドの情報を書き換えたい場合、その結果を
分岐命令の予測データフィールドに反映させる機能を具
備する。
The present invention has a function of reflecting the result in the prediction data field of the branch instruction when the program has a branch prediction process or when it is desired to directly rewrite the information in the prediction data field of the branch instruction at a certain point in time. I do.

【0025】[0025]

【発明の実施の形態】本発明の好ましい実施の形態につ
いて以下に説明する。発明は、その好ましい実施の形
態において、分岐命令の命令フィールドに随時書換え可
能な予測データフィールドを持ち、そこに過去の分岐履
歴等の動的予測情報、静的分岐予測情報、予測方式選
択、予測情報の更新を禁止できる情報(予測情報更新許
可ビット)等を備える(図2乃至図5参照)。
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Preferred embodiments of the present invention will be described below. In a preferred embodiment of the present invention, the instruction field of the branch instruction has a rewritable prediction data field at any time, in which dynamic prediction information such as past branch history, static branch prediction information, prediction method selection, It includes information (prediction information update permission bit) that can prohibit updating of prediction information (see FIGS. 2 to 5).

【0026】分岐命令の命令フィールドに随時書換え可
能な予測データフィールドを持っているため、従来方式
では、コンパイル時に決定されていた分岐命令が、プロ
グラム実行中に、命令のその内容を変えることができ、
柔軟な分岐予測処理が可能となり、このため分岐予測の
正当率を向上させることができる。
Since the instruction field of the branch instruction has a predictable data field which can be rewritten at any time, in the conventional method, the branch instruction determined at the time of compilation can change the content of the instruction during program execution. ,
Flexible branch prediction processing can be performed, so that the validity rate of branch prediction can be improved.

【0027】また発明は、その好ましい実施の形態に
おいて、予測データフィールドに過去の分岐履歴等の動
的予測情報を持たせ(図6(b)、図6(c)参照)、
その予測情報に基づき、分岐先を決定するとともに、分
岐履歴等の動的予測情報を、分岐命令処理中に更新し、
その分岐命令が格納されているメモリに書き戻す機能を
有する。
In a preferred embodiment of the present invention, the prediction data field is provided with dynamic prediction information such as a past branch history (see FIGS. 6 (b) and 6 (c)).
Based on the prediction information, a branch destination is determined, and dynamic prediction information such as a branch history is updated during branch instruction processing,
It has a function of writing back to the memory where the branch instruction is stored.

【0028】本発明においては、過去の分岐履歴等の動
的予測情報を分岐命令内に持つことになる。このため、
分岐先バッファ等の大きなハードウェアが必要なくな
り、コスト的に有利になる。
In the present invention, dynamic prediction information such as a past branch history is stored in a branch instruction. For this reason,
Large hardware such as a branch destination buffer is not required, which is advantageous in cost.

【0029】また各分岐命令に対応する予測情報をそれ
ぞれの命令内に持つため、従来方式では、分岐先バッフ
ァを検索して得ていた予測情報を、本発明では、命令フ
ェッチ時に、即座に獲得できるため、処理が簡略化で
き、且つ分岐予測処理の高速化さらにはプロセッサの性
能を向上できる。
Further, since the prediction information corresponding to each branch instruction is included in each instruction, the prediction information obtained by searching the branch destination buffer in the conventional method is immediately obtained at the time of instruction fetch in the present invention. Therefore, the processing can be simplified, the speed of the branch prediction processing can be increased, and the performance of the processor can be improved.

【0030】また、発明は、その好ましい実施の形態
において、予測データフィールドに、過去の分岐履歴等
の動的予測情報を持たせる場合、その予測情報の初期値
を、コンパイル時に行われる、静的分岐予測情報で決定
することができるようにしたものである。
Further, according to the preferred embodiment of the present invention, when dynamic prediction information such as a past branch history is provided in the prediction data field, the initial value of the prediction information is statically calculated at the time of compilation. It can be determined by dynamic branch prediction information.

【0031】の分岐命令処理方式においては、過去の
分岐履歴等の動的予測情報を使用する場合、その予測情
報の初期値をコンパイル時に行われる静的分岐予測情報
で決定し、プログラム処理開始時の動的分岐予測の正当
性を向上することができる。
[0031] In the branch instruction processing method of this, when using the dynamic prediction information such as past branch history, determined by the static branch prediction information performed the initial value of the prediction information at compile time, the program processing start The validity of dynamic branch prediction at the time can be improved.

【0032】また、発明は、その好ましい実施の形態
において、予測データフィールドに、コンパイル時に行
われる静的分岐予測情報を持たせ、その予測情報の更新
を行わせたくない場合は、予測情報更新を禁止し、プロ
グラム処理中で、予測情報更新を許可したときには、該
予測情報の更新を行える機能を有する。
In a preferred embodiment of the present invention, the prediction data field is provided with static branch prediction information performed at the time of compilation, and when it is not desired to update the prediction information, the prediction information update is performed. Has a function of updating the prediction information when the prediction information update is permitted during the program processing.

【0033】の分岐命令処理方式では、コンパイル時
に行われる静的分岐予測情報を使用するときに有効であ
る。また、プログラム処理中で予測情報更新を許可した
ときはその予測情報の更新を行えるため、静的分岐情報
をある時点で使用しなくなる場合等、柔軟な分岐予測処
理が可能となる。
[0033] In the branch instruction processing method of this, it is effective when using a static branch prediction information performed at compile time. In addition, when the update of the prediction information is permitted during the program processing, the prediction information can be updated, so that the flexible branch prediction processing can be performed when the static branch information is not used at a certain time.

【0034】また、発明は、その好ましい実施の形態
において、予測データフィールドに過去の分岐履歴等の
動的予測情報を持っているとき、プログラム処理中、あ
る時点において、以後、予測情報の更新を行わせたくな
い場合には、予測情報更新を禁止し、さらに、予測情報
の更新を許可したときには、該予測情報の更新を行える
機能を有する。
In a preferred embodiment of the present invention, when the prediction data field has dynamic prediction information such as a past branch history, the prediction information is updated at a certain point during program processing. When the user does not want to perform the update, the prediction information update is prohibited, and when the update of the prediction information is permitted, the prediction information is updated.

【0035】の分岐命令処理方式では、過去の分岐履
歴等の動的予測情報を持っているとき、プログラム処理
中ある時点において、以後予測情報更新を禁止および許
可ができるため、柔軟な分岐予測処理が可能となる。
[0035] In the branch instruction processing method of this, when you have a dynamic prediction information such as past branch history, at some point during program processing, since it is prohibited and allow prediction information updating Thereafter, the flexible branch prediction Processing becomes possible.

【0036】また、発明は、その好ましい実施の形態
において、予測データフィールドに動的予測情報、静的
分岐予測等の情報等の予測情報の種類、予測方式を、プ
ログラム処理中のある時点において、随時選択できるよ
うに予測データフィールドに選択情報を持たせるように
したものである。
In a preferred embodiment of the present invention, the type of prediction information, such as dynamic prediction information and information such as static branch prediction, and the prediction method are stored in the prediction data field at a certain point during program processing. The prediction data field is provided with selection information so that it can be selected at any time.

【0037】の分岐命令処理方式では、動的予測情
報、静的分岐予測等の予測情報の種類、予測方式を、プ
ログラム処理中のある時点において、随時選択できるた
め、柔軟な分岐予測処理が可能となる。
[0037] In the branch instruction processing system of this, dynamic prediction information, the type of prediction information such as static branch prediction, the prediction method, at some point during program processing, it is possible to select any time, flexible branch prediction process It becomes possible.

【0038】また、発明は、その好ましい実施の形態
において、プログラム中に分岐予測処理を有し、その結
果を分岐命令の予測データフィールドに反映させたいと
き、プログラム処理中ある時点において直接分岐命令の
予測データフィールドの情報を書き換えたいときに、分
岐命令の予測データフィールドの更新できる機能を有す
る。
According to a preferred embodiment of the present invention, when a program has a branch prediction process and the result is desired to be reflected in a prediction data field of the branch instruction, the branch instruction is directly processed at some point during the program processing. Has the function of updating the prediction data field of the branch instruction when it is desired to rewrite the information of the prediction data field.

【0039】の分岐命令処理方式では、複雑な分岐予
測アルゴリズムをプログラム中に有し、その結果を分岐
命令の予測データフィールドに反映できるため複雑な分
岐予測アルゴリズム処理のプログラムが簡略化でき、分
岐予測処理の高速化が可能となる。また、プログラム処
理中ある時点において分岐命令の内容を随時書き換える
ことができ分岐予測処理の高速化が可能となる。
[0039] In the branch instruction processing method of this has a complex branch prediction algorithm in the program can be simplified complex branch prediction algorithm processing program for reflect the result to the prediction data field of the branch instruction, the branch The prediction process can be sped up. Further, the content of the branch instruction can be rewritten at any time during the program processing, and the speed of the branch prediction processing can be increased.

【0040】[0040]

【実施例】本発明の実施例について図面を参照して以下
に説明する。以下では説明に使用するパイプライン方式
のプロセッサは、5段パイプラインで、図1にその実行
順序を示したように、命令フェッチ(IF)、命令デコ
ード(ID)、演算実行(EX)、メモリアクセス(M
EM)、レジスタ書込み(WB)の各処理ステージから
なるものとする。
DESCRIPTION OF THE PREFERRED EMBODIMENTS Embodiments of the present invention will be described below with reference to the drawings. The pipeline type processor used in the following description is a five-stage pipeline, and as shown in FIG. 1, the instruction fetch (IF), instruction decode (ID), operation execution (EX), memory Access (M
EM) and register write (WB) processing stages.

【0041】分岐命令フィールドは、図2に示すよう
に、命令コードと、相対的分岐先を示す即値と、書換え
可能な予測データフィールドと、からなる。また、図3
に示すようにレジスタコードを与え、対応するレジスタ
の内容を相対的分岐先とすることもできる。
As shown in FIG. 2, the branch instruction field includes an instruction code, an immediate value indicating a relative branch destination, and a rewritable prediction data field. FIG.
, A register code may be provided, and the contents of the corresponding register may be set as a relative branch destination.

【0042】予測データフィールドは、図4に示すよう
に、動的予測情報、静的予測情報、動的予測情報更新許
可ビット、静的予測情報更新許可ビット、及び、予測情
報選択ビットからなる。各許可ビットは、予測情報の更
新および禁止を示す。この場合、次のような機能が許さ
れる。
As shown in FIG. 4, the prediction data field includes dynamic prediction information, static prediction information, a dynamic prediction information update permission bit, a static prediction information update permission bit, and a prediction information selection bit. Each permission bit indicates update and prohibition of prediction information. In this case, the following functions are allowed.

【0043】動的予測情報更新許可ビットの初期値を更
新許可状態に、静的予測情報更新許可ビットの初期値を
更新禁止状態に設定されているものとする。まず、動的
予測情報と静的予測情報を選択できる。動的予測情報を
プログラム処理中ある時点において、更新禁止に設定
し、その時点における予測情報をあたかも静的予測情報
として扱うことができる。この場合、再度、動的予測を
行う際には、更新許可に設定する。
It is assumed that the initial value of the dynamic prediction information update permission bit is set to the update permission state, and the initial value of the static prediction information update permission bit is set to the update inhibition state. First, dynamic prediction information and static prediction information can be selected. At a certain point in time during the program processing of the dynamic prediction information, update inhibition is set, and the prediction information at that point can be treated as if it were static prediction information. In this case, when dynamic prediction is performed again, update permission is set.

【0044】コンパイル時に決定された静的予測情報
を、プログラム処理中、ある時点において更新したい場
合、静的予測情報更新許可ビットを更新許可に設定す
る。
When it is desired to update the static prediction information determined at the time of compilation at a certain point during the program processing, the static prediction information update permission bit is set to "update permitted".

【0045】予測データフィールドにおける予測情報の
欄を、両方とも静的予測情報に使用することも、動的予
測情報に使用することもできる。また、プログラム処理
中、ある時点において、動的、静的の方式の変更も可能
である。
Both columns of the prediction information in the prediction data field can be used for static prediction information or dynamic prediction information. At some point during the program processing, it is possible to change the dynamic or static method.

【0046】予測データフィールドに十分なフィールド
幅を持てない場合は、図5に示すような構成でも処理は
可能である。図5を参照すると、予測データフィールド
は予測情報更新許可ビットと予測情報からなる。但し、
コンパイル時に決定された静的予測情報を使用してお
り、動的予測情報を使用する処理に切り換え、再度コン
パイル時に決定された静的予測情報を使用したような場
合は、静的予測情報を別に格納しておく必要がある。
If the prediction data field cannot have a sufficient field width, the processing can be performed even with the configuration shown in FIG. Referring to FIG. 5, the prediction data field includes a prediction information update permission bit and prediction information. However,
If the process uses the static prediction information determined at compile time and switches to the process using dynamic prediction information, and if the static prediction information determined at compile time is used again, separate the static prediction information Must be stored.

【0047】図5に示すような予測データフィールドを
持つ場合の分岐命令処理方式の動作について、図6、及
び図7を参照して説明する。図6に示すような命令フィ
ールドを持つ場合を考える。各命令には命令コード内に
分岐命令識別ビットを持っており、分岐命令識別ビット
の値が0のとき、その命令は分岐命令ではなく(図6
(a)参照)、1のときその命令は分岐命令であるとす
る(図6(b)、図6(c)参照)。なお、この情報
は、命令コード圧縮のため、エンコードされた命令コー
ドに対して随時デコードして獲得してもよい。
The operation of the branch instruction processing system having a prediction data field as shown in FIG. 5 will be described with reference to FIGS. 6 and 7. Consider a case having an instruction field as shown in FIG. Each instruction has a branch instruction identification bit in the instruction code, and when the value of the branch instruction identification bit is 0, the instruction is not a branch instruction (FIG. 6).
(See FIG. 6A.) When 1, the instruction is assumed to be a branch instruction (see FIGS. 6B and 6C). Note that this information may be obtained by decoding the encoded instruction code at any time to compress the instruction code.

【0048】分岐命令の命令コードには、相対分岐先ア
ドレスとして、命令フィールド内の即値(図6(c)参
照)、およびレジスタの内容を使用できるように、選択
ビットを持つこととする(図6(b)参照)。なお、十
分な命令フィールドが取れない場合は、相対分岐先アド
レスとしてどちらかに固定して、選択ビットを削除する
こともできる。
The instruction code of the branch instruction has a selection bit so that the immediate value in the instruction field (see FIG. 6C) and the contents of the register can be used as the relative branch destination address (see FIG. 6C). 6 (b)). If a sufficient instruction field cannot be obtained, the selected bit can be deleted by fixing the address to one of the relative branch destination addresses.

【0049】分岐命令は、予測データフィールドを持
ち、図6に示す例では、動的予測情報として2ビット持
ち、過去の2回の履歴を用いて予測するものとする。予
測アルゴリズムは従来から提案されている公知技術が使
用される。
The branch instruction has a prediction data field. In the example shown in FIG. 6, it is assumed that the branch instruction has two bits as dynamic prediction information and performs prediction using two past histories. As the prediction algorithm, a known technique that has been conventionally proposed is used.

【0050】ここで分岐成立と予測される場合には、2
ビットの予測情報の上位ビットが1、分岐不成立と予測
される場合には、予測情報の上位ビットが0、となるよ
うに過去の履歴状態を割り当てるものとする。
If it is predicted that the branch is taken, 2
When it is predicted that the upper bit of the prediction information of a bit is 1 and the branch is not taken, the past history state is assigned so that the upper bit of the prediction information becomes 0.

【0051】さらに、予測データフィールドには、予測
情報の更新を許可および禁止するビットを持つ。このビ
ットが1のときは予測情報の更新を許可し、動的分岐予
測が可能となる。一方、0のときは予測情報の更新を禁
止し、禁止した時点での予測情報をあたかも、静的予測
情報として扱うことができる。
Further, the prediction data field has bits for permitting and prohibiting updating of prediction information. When this bit is 1, update of prediction information is permitted, and dynamic branch prediction becomes possible. On the other hand, when the value is 0, the update of the prediction information is prohibited, and the prediction information at the time of prohibition can be treated as static prediction information.

【0052】図6に示すような命令セットを持つ、分岐
命令処理方式は、図7に示すような構成で実現できる。
もちろん、図7に示した例は説明のための構成であり、
簡略化、機能の追加等は可能である。
A branch instruction processing method having an instruction set as shown in FIG. 6 can be realized by a configuration as shown in FIG.
Of course, the example shown in FIG. 7 is a configuration for explanation,
Simplification, addition of functions, and the like are possible.

【0053】図7を参照すると、インクリメント4は、
現在の命令フェッチアドレスをインクリメントし、分岐
不成立時の次命令フェッチアドレスを生成する。
Referring to FIG. 7, increment 4 is
The current instruction fetch address is incremented to generate the next instruction fetch address when the branch is not taken.

【0054】加算器3は、現在の命令フェッチアドレス
と相対分岐先アドレスとを加算し、分岐成立時の次命令
フェッチアドレスを生成する。加算器3に入力される相
対分岐先アドレスは、現在のフェッチ中命令の即値、ま
たはレジスタの内容をマルチプレクサ2により選択す
る。このマルチプレクサ2の選択信号として、相対分岐
先アドレス選択ビットを診る。相対分岐先アドレスとな
るレジスタの内容は、レジスタコードで指定されたレジ
スタをレジスタファイル1より選択し、読出しを行う。
The adder 3 adds the current instruction fetch address and the relative branch destination address to generate the next instruction fetch address when the branch is taken. The relative branch destination address input to the adder 3 selects the immediate value of the currently fetched instruction or the contents of the register by the multiplexer 2. As a selection signal for the multiplexer 2, a relative branch destination address selection bit is examined. The contents of the register serving as the relative branch destination address are selected from the register specified by the register code from the register file 1 and read out.

【0055】現在フェッチ中の命令が分岐命令であると
して、分岐の成立と不成立を予測する情報を示している
予測情報上位ビットにより、マルチプレクサ5、6を通
じて、分岐不成立時の次命令フェッチアドレスおよび分
岐成立時の次命令フェッチアドレスを、予測PC7およ
び非予測PC8に送付する。
Assuming that the instruction currently being fetched is a branch instruction, the next instruction fetch address and the branch when the branch is not taken are passed through the multiplexers 5 and 6 by the prediction information upper bits indicating information for predicting whether the branch is taken or not taken. The next instruction fetch address at the time of establishment is sent to the predicted PC 7 and the non-predicted PC 8.

【0056】すなわち、分岐成立と予測される場合、分
岐成立時の次命令フェッチアドレスを予測PC7に、分
岐不成立時の次命令フェッチアドレスを非予測PC8に
送付し、分岐不成立と予測される場合、分岐不成立時の
次命令フェッチアドレスを予測PC7に、分岐成立時の
次命令フェッチアドレスを非予測PC8に送付する。
That is, when it is predicted that the branch is taken, the next instruction fetch address when the branch is taken is sent to the prediction PC 7, and when the branch is not taken, the next instruction fetch address is sent to the non-prediction PC 8. The next instruction fetch address when the branch is not taken is sent to the prediction PC 7 and the next instruction fetch address when the branch is taken is sent to the non-prediction PC 8.

【0057】予測情報上位ビットは、現在フェッチ中の
命令が分岐命令であって、はじめて意味を持つため、分
岐命令識別ビットと予測情報上位ビットの論理積をとる
AND条件素子18により、マルチプレクサ5、6の選
択信号を生成している。
Since the instruction currently being fetched is a branch instruction and is significant only when the instruction being fetched is the branch instruction, the AND condition element 18 which takes the logical product of the branch instruction identification bit and the prediction information upper bit causes the multiplexer 5, 6 are generated.

【0058】予測PC7は、常にマルチプレクサ5、6
を通して送付されてくる次命令フェッチアドレスをラッ
チする。
The prediction PC 7 always has the multiplexers 5 and 6
Latches the next instruction fetch address sent through the interface.

【0059】非予測PC8は、現在フェッチ中の命令が
分岐命令であるときのみラッチする。このため、非予測
PC8は、予測ミスした場合の再フェッチ用次命令フェ
ッチアドレスを格納していることになる。通常、次命令
フェッチアドレスとして、予測PC7に格納されるアド
レスをマルチプレクサ9により選択される。予測ミスし
た場合において、再フェッチ要求がある場合は、非予測
PC8に格納中の再フェッチ用アドレスを読み出す。
The non-prediction PC 8 latches only when the currently fetched instruction is a branch instruction. Therefore, the non-prediction PC 8 stores the next instruction fetch address for refetching when the prediction is missed. Usually, an address stored in the prediction PC 7 is selected by the multiplexer 9 as a next instruction fetch address. If there is a refetch request in the case of a prediction error, the refetch address stored in the non-prediction PC 8 is read.

【0060】前PC10、前々PC11および更新分岐
命令アドレスラッチ12は分岐命令のMEMステージ
で、分岐命令更新を行うためのアドレスを保持しておく
遅延素子の役目をしている。これらは、通常プロセッサ
内に、他の目的で備えられているため、ここで特に用意
する必要はない。同様に、前予測データラッチ14、前
々予測データラッチ15および更新予測データラッチ1
7は分岐命令更新を行うための予測データを保持してお
く遅延素子の役目をしている。これらも、通常プロセッ
サ内に命令のデコード値を格納するレジスタ等を備えて
いるため、必要があれば追加すればよい。
The pre-PC 10, pre-PC 11 and update branch instruction address latch 12 serve as a delay element for holding an address for updating a branch instruction at the MEM stage of a branch instruction. These are usually provided in the processor for other purposes and need not be prepared here. Similarly, the pre-predicted data latch 14, the pre-predicted data latch 15, and the updated predicted data latch 1
Reference numeral 7 serves as a delay element for holding prediction data for updating a branch instruction. These are also usually provided with a register for storing the decoded value of the instruction in the processor, and may be added if necessary.

【0061】予測判定および予測データ更新回路16
は、予測が正当であったか否かの判定を、演算結果の状
態情報等から行う。もし、予測ミスと判定された場合に
は、再フェッチ要求を出力する。また、予測情報の更
新、この場合、分岐履歴の更新を行う。予測情報更新許
可ビットが0の時は更新を行わない。
Prediction judgment and prediction data update circuit 16
Determines whether the prediction is valid based on the state information of the calculation result or the like. If it is determined that a prediction error has occurred, a refetch request is output. Further, the prediction information is updated, in this case, the branch history is updated. When the prediction information update permission bit is 0, no update is performed.

【0062】メモリ13は、命令を記憶しているもので
あり、命令フェッチアドレスを入力すると命令コードを
出力する。ここでは分岐命令の書き戻し処理が必要なた
め、RAM(ランダムアクセスメモリ)等の書込み可能
な媒体である必要がある。書込みが可能であればデータ
領域が共存していても、命令キャッシュのような構成で
あってもよい。さらに、回路の簡単化のため予測データ
フィールド部分のみ書込みを許す構成でも構わない。
The memory 13 stores instructions, and outputs an instruction code when an instruction fetch address is input. Here, since a write-back process of the branch instruction is required, the medium must be a writable medium such as a RAM (random access memory). If writable, a data area may coexist or a configuration like an instruction cache may be used. Further, for simplification of the circuit, a configuration in which only the prediction data field portion can be written may be used.

【0063】図7に示される分岐命令処理方式の構成の
サイクルごとの動作を、図8〜図11を参照して説明す
る。図8乃至図11において、n+1番目の命令が分岐
命令と仮定し、簡単のためにn番目の命令はメモリの0
番地、n+1番目の命令が1番地に格納され、分岐命令
の相対分岐アドレスはbとする。すなわち、この分岐命
令の分岐成立時の次命令フェッチアドレスは1+b番地
であり、分岐不成立時の次命令フェッチアドレスは2番
地となる。xは前の処理で設定された値である不定値と
して扱う。
The operation for each cycle of the configuration of the branch instruction processing system shown in FIG. 7 will be described with reference to FIGS. 8 to 11, it is assumed that the (n + 1) th instruction is a branch instruction.
The instruction at address n + 1 is stored at address 1, and the relative branch address of the branch instruction is b. That is, when the branch instruction is taken, the next instruction fetch address is 1 + b, and when the branch is not taken, the next instruction fetch address is 2. x is handled as an indefinite value which is a value set in the previous processing.

【0064】なお、図8乃至図11において、予測P
C、非予測PCの下線部は、命令フェッチアドレスとし
て選択しているマルチプレクサ9の動作を示している。
分岐の成立および不成立が決定できるのはn番目の命令
がEXステージを終了した時である。なぜなら、演算の
結果が分岐に反映される構成をプロセッサがとっている
ためである。すなわち、分岐予測の正当性は、早くても
分岐命令のEXステージで処理される。
In FIGS. 8 to 11, the prediction P
C, the underlined part of the unpredicted PC indicates the operation of the multiplexer 9 selected as the instruction fetch address.
Whether the branch is taken or not can be determined when the n-th instruction has completed the EX stage. This is because the processor has a configuration in which the result of the operation is reflected in the branch. That is, the validity of the branch prediction is processed at the EX stage of the branch instruction at the earliest.

【0065】図8に、分岐不成立と予測し、かつ予測が
ヒットした場合を示す。n+1番目の命令が分岐命令で
あるため、分岐命令識別ビットが1となり、非予測PC
7がマルチプレクサ5を通してきた次命令フェッチアド
レスをラッチする。この場合、分岐不成立と予測されて
いるため、非予測PC7は、分岐成立時の次命令フェッ
チアドレス1+b番地をラッチする一方、予測PC8
は、分岐不成立時の次命令フェッチアドレス2番地をラ
ッチする。次のサイクルでn番目の命令EXステージが
終了したため、予測の正当性がわかる。ここでは、予測
ヒットなので、非予測PC7の値は使用されず、このま
ま処理を続行する。
FIG. 8 shows a case where the branch is not taken and the prediction hits. Since the (n + 1) th instruction is a branch instruction, the branch instruction identification bit becomes 1, and the non-predicted PC
7 latches the next instruction fetch address that has passed through the multiplexer 5. In this case, since it is predicted that the branch is not taken, the non-prediction PC 7 latches the next instruction fetch address 1 + b when the branch is taken, while the prediction PC 8
Latches the next instruction fetch address 2 when the branch is not taken. Since the n-th instruction EX stage has been completed in the next cycle, the validity of the prediction is known. Here, since it is a prediction hit, the value of the non-prediction PC 7 is not used, and the processing is continued as it is.

【0066】図9に、分岐不成立と予測し、かつ予測が
ミスした場合を示す。n+1番目の命令が分岐命令であ
るため、分岐命令識別ビットが1となり、非予測PC7
がマルチプレクサ5を通してきた次命令フェッチアドレ
スをラッチする。この場合、分岐不成立と予測されてい
るため、非予測PC7は、分岐成立時の命令フェッチア
ドレス1+b番地をラッチする。一方、予測PC8は分
岐不成立時の次命令フェッチアドレス2番地をラッチす
る。ここまでは、図8に示した動作と同じである。次の
サイクルで予測ミスと判定され再フェッチ要求が出され
る。ここで、次命令フェッチアドレスは、マルチプレク
サ9により非予測PC7に格納されている分岐成立時の
次命令フェッチアドレス1+b番地が選択され、再フェ
ッチが完了する。同時に予測ミスした命令の無効化を行
う。
FIG. 9 shows a case where the branch is not taken and the prediction is missed. Since the (n + 1) th instruction is a branch instruction, the branch instruction identification bit becomes 1, and the non-predicted PC 7
Latches the next instruction fetch address that has passed through the multiplexer 5. In this case, since it is predicted that the branch is not taken, the non-prediction PC 7 latches the instruction fetch address 1 + b when the branch is taken. On the other hand, the prediction PC 8 latches the next instruction fetch address 2 when the branch is not taken. The operation so far is the same as the operation shown in FIG. In the next cycle, it is determined that a prediction error has occurred, and a refetch request is issued. Here, as the next instruction fetch address, the next instruction fetch address 1 + b at the time of branch taken stored in the non-prediction PC 7 is selected by the multiplexer 9, and the refetch is completed. At the same time, invalidate the mispredicted instruction.

【0067】図10に、分岐成立と予測し、かつ予測が
ヒットした場合を示す。n+1番目の命令が分岐命令で
あるため分岐命令識別ビットが1となり、非予測PC7
がマルチプレクサ5を通してきた次命令フェッチアドレ
スをラッチする。この場合、分岐成立と予測されている
ため、分岐不成立時の次命令フェッチアドレス2番地を
ラッチする。一方、予測PC8は、分岐不成立時の次命
令フェッチアドレス1+b番地をラッチする。次のサイ
クルでn番目の命令のEXステージが終了したため予測
の正当性がわかる。ここでは、予測ヒットなので、非予
測PC7の値は使用されず、このまま処理を続行する。
FIG. 10 shows a case where the branch is predicted to be taken and the prediction is hit. Since the (n + 1) th instruction is a branch instruction, the branch instruction identification bit becomes 1, and the non-predicted PC 7
Latches the next instruction fetch address that has passed through the multiplexer 5. In this case, since the branch is predicted to be taken, the next instruction fetch address 2 when the branch is not taken is latched. On the other hand, the prediction PC 8 latches the next instruction fetch address 1 + b when the branch is not taken. Since the EX stage of the n-th instruction is completed in the next cycle, the validity of the prediction is known. Here, since it is a prediction hit, the value of the non-prediction PC 7 is not used, and the processing is continued as it is.

【0068】図11に、分岐成立と予測し、かつ予測が
ミスした場合を示す。n+1番目の命令が分岐命令であ
るため分岐命令識別ビットが1となり、非予測PC7が
マルチプレクサ5を通してきた次命令フェッチアドレス
をラッチする。この場合、分岐成立と予測されているた
め、分岐成立時の次命令フェッチアドレス2番地をラッ
チする。一方、予測PC8は、分岐不成立時の次命令フ
ェッチアドレス1+b番地をラッチする。ここまでは、
図10に示した動作と同じである。次のサイクルで予測
ミスと判定され再フェッチ要求が出される。ここで次命
令フェッチアドレスはマルチプレクサ9により非予測P
C7に格納されている分岐不成立時の次命令フェッチア
ドレス2番地が選択され、再フェッチが完了する。同時
に予測ミスした命令の無効化を行う。
FIG. 11 shows a case where the branch is predicted to be taken and the prediction is missed. Since the (n + 1) th instruction is a branch instruction, the branch instruction identification bit becomes 1, and the non-prediction PC 7 latches the next instruction fetch address passed through the multiplexer 5. In this case, since the branch is predicted to be taken, the next instruction fetch address 2 when the branch is taken is latched. On the other hand, the prediction PC 8 latches the next instruction fetch address 1 + b when the branch is not taken. So far,
This is the same as the operation shown in FIG. In the next cycle, it is determined that a prediction error has occurred, and a refetch request is issued. Here, the next instruction fetch address is determined by the
The next instruction fetch address 2 when the branch is not taken stored in C7 is selected, and the refetch is completed. At the same time, invalidate the mispredicted instruction.

【0069】図8〜図11に共通であるが、分岐命令の
MEMステージで、更新分岐命令アドレスが元々フェッ
チしてきたアドレス1番地が現れるため、分岐命令の更
新が可能となる。
Although common to FIG. 8 to FIG. 11, at the MEM stage of the branch instruction, the address 1 from which the updated branch instruction address was originally fetched appears, so that the branch instruction can be updated.

【0070】この実施例では、連続した分岐命令があっ
た場合、非予測PC7に格納されていた値が更新されて
しまう。このため、連続した分岐命令を許す場合は非予
測PC7を2段直列に接続することで解決できる。この
実施例では示さなかったが、分岐命令内に、静的予測情
報と動的予測情報を持ち、選択ビットで切り換えて使う
場合の回路構成も、予測情報上位ビットに相当する部分
に、マルチプレクサを挿入する、予測データのラッチの
ビット幅を適切な値にする、予測判定および予測データ
更新回路を変更等、過大なハードウェアを追加すること
なく実現できる。
In this embodiment, when there is a continuous branch instruction, the value stored in the non-prediction PC 7 is updated. For this reason, when a continuous branch instruction is permitted, it can be solved by connecting the non-prediction PCs 7 in two stages in series. Although not shown in this embodiment, the circuit configuration when the branch instruction has static prediction information and dynamic prediction information and is used by switching with the selection bit is also provided with a multiplexer in a portion corresponding to the prediction information upper bits. This can be realized without adding excessive hardware such as inserting, setting the bit width of the latch of the prediction data to an appropriate value, and changing the prediction determination and prediction data update circuit.

【0071】さらに、分岐命令内の予測フィールドは通
常のメモリ書込み命令で書換え可能であるため、特に予
測情報更新許可ビット、予測情報許可ビット等の変更が
容易である。もちろん、予測情報の変更も通常のメモリ
書込み命令で実行できる。
Furthermore, since the prediction field in the branch instruction can be rewritten by a normal memory write instruction, it is particularly easy to change the prediction information update permission bit, prediction information permission bit, and the like. Of course, the change of the prediction information can also be executed by a normal memory write instruction.

【0072】[0072]

【発明の効果】以上説明したように、本発明によれば、
分岐先バッファ等の特別なハードウェアを必要とせず、
動的分岐予測が可能となり、処理も簡略化できる。これ
によりハードウェアコストを抑え、正当性の高い柔軟な
分岐予測が可能で、プロセッサの処理能力の向上が期待
できる。
As described above, according to the present invention,
No special hardware such as a branch destination buffer is required,
Dynamic branch prediction becomes possible, and processing can be simplified. As a result, the hardware cost can be reduced, highly accurate and flexible branch prediction can be performed, and an improvement in the processing capability of the processor can be expected.

【図面の簡単な説明】[Brief description of the drawings]

【図1】本発明の一実施例を説明するための図であり、
パイプラインの各ステージと処理順を示す説明図であ
る。
FIG. 1 is a diagram for explaining one embodiment of the present invention;
FIG. 3 is an explanatory diagram showing each stage of the pipeline and a processing order.

【図2】本発明の一実施例を説明するための図であり、
相対分岐先アドレスを即値として持つ分岐命令の命令フ
ィールドを示した図である。
FIG. 2 is a diagram for explaining one embodiment of the present invention;
FIG. 11 is a diagram illustrating an instruction field of a branch instruction having a relative branch destination address as an immediate value.

【図3】本発明の一実施例を説明するための図であり、
相対分岐先アドレスを持つレジスタのレジスタコードを
持つ分岐命令の命令フィールドを示した図である。
FIG. 3 is a diagram for explaining one embodiment of the present invention;
FIG. 11 is a diagram illustrating an instruction field of a branch instruction having a register code of a register having a relative branch destination address.

【図4】本発明の一実施例における、静的予測情報と動
的予測情報を持つ予測データフィールドを説明する図で
ある。
FIG. 4 is a diagram illustrating a prediction data field having static prediction information and dynamic prediction information in one embodiment of the present invention.

【図5】本発明の一実施例における、静的予測情報と動
的予測情報とを共存させる予測データフィールドを説明
する図である。
FIG. 5 is a diagram illustrating a prediction data field in which static prediction information and dynamic prediction information coexist in one embodiment of the present invention.

【図6】本発明の一実施例で使用される命令の命令フィ
ールドのフォーマットを示す図であり、(a)は非分岐
命令、(b)は分岐命令(レジスタ使用)、(c)は分
岐命令(即値使用)のフォーマットを示す。
6A and 6B are diagrams showing the format of an instruction field of an instruction used in an embodiment of the present invention, wherein FIG. 6A is a non-branch instruction, FIG. 6B is a branch instruction (using a register), and FIG. Indicates the format of the instruction (using immediate values).

【図7】本発明の一実施例が適用される、分岐命令処理
方式の動作を説明するブロック図である。
FIG. 7 is a block diagram illustrating an operation of a branch instruction processing system to which an embodiment of the present invention is applied;

【図8】本発明の一実施例を説明するための図であり、
分岐不成立と予測し、予測ヒットする場合の動作を説明
する図である。
FIG. 8 is a diagram for explaining one embodiment of the present invention;
It is a figure explaining operation | movement at the time of predicting that a branch is not taken and making a prediction hit.

【図9】本発明の一実施例を説明するための図であり、
分岐不成立と予測し、予測ミスする場合の動作を説明す
る図である。
FIG. 9 is a diagram for explaining one embodiment of the present invention;
It is a figure explaining operation | movement at the time of predicting that a branch is not taken and making a prediction mistake.

【図10】本発明の一実施例を説明するための図であ
り、分岐成立と予測し、予測ヒットする場合の動作を説
明する図である。
FIG. 10 is a diagram for explaining an embodiment of the present invention, and is a diagram for explaining an operation when a branch is predicted and a prediction hit occurs.

【図11】本発明の一実施例を説明するための図であ
り、分岐成立と予測し、予測ミスする場合の動作を説明
する図である。
FIG. 11 is a diagram for explaining one embodiment of the present invention, and is a diagram for explaining an operation when a branch is predicted to be taken and a prediction error occurs.

【図12】分岐先バッファの構成と動作を説明する図で
ある。
FIG. 12 is a diagram illustrating the configuration and operation of a branch destination buffer.

【符号の説明】[Explanation of symbols]

1 レジスタファイル 2 マルチプレクサ 3 加算器 4 インクリメンタ 5、6 マルチプレクサ 7 非予測PC 8 予測PC 9 マルチプレクサ 10 前PC 11 前々PC 12 更新分岐命令アドレスラッチ 13 メモリ 14 前記予測データ 15 前々予測データ 16 予測判定および予測データ更新回路 17 更新予測データラッチ REFERENCE SIGNS LIST 1 register file 2 multiplexer 3 adder 4 incrementer 5, 6 multiplexer 7 unpredicted PC 8 predicted PC 9 multiplexer 10 pre-PC 11 pre-PC 12 updated branch instruction address latch 13 memory 14 predicted data 15 pre-predicted data 16 prediction Judgment and prediction data update circuit 17 Update prediction data latch

Claims (5)

(57)【特許請求の範囲】(57) [Claims] 【請求項1】パイプライン方式のプロセッサにおける分
岐命令処理方式であって、 分岐命令が、その命令フィールド内に、随時書換え可能
な予測データフィールド有し、前記予測データフィールドが、分岐の予測情報を格納す
るフィールドと、前記予測情報の更新の禁止・許可を制
御する予測情報更新許可情報を格納するフィールドと、
有することを特徴とする分岐命令処理方式。
1. A branch instruction processing system in a pipeline processor, the branch instruction is in the instruction field, has a predicted data fields rewritable any time, the prediction data field, the prediction information of the branch Store
Fields and the prohibition / permission of updating the forecast information.
A field for storing prediction information update permission information to be controlled,
Branch instruction processing method characterized by having a.
【請求項2】パイプライン方式のプロセッサにおける分
岐命令処理方式であって、 分岐命令が、その命令フィールド内に、随時書換え可能
な予測データフィールド有し、前記予測データフィールドが、過去複数回の分岐履歴を
用いて分岐予測を行うための動的予測情報を格納するフ
ィールドと、前記動的予測情報の更新の禁止・許可を制
御する動的予測情報更新許可情報を格納するフィールド
と、を 有することを特徴とする分岐命令処理方式。
2. A branch instruction processing method in a pipeline type processor, wherein a branch instruction has, in its instruction field, a prediction data field which can be rewritten at any time , and the prediction data field is stored in a plurality of times in the past. Branch history
To store dynamic prediction information for branch prediction using
Field and the prohibition / permission of updating the dynamic prediction information.
Field for storing dynamic prediction information update permission information
And a branch instruction processing method.
【請求項3】パイプライン方式のプロセッサにおける分
岐命令処理方式であって、 分岐命令が、その命令フィールド内に、随時書換え可能
な予測データフィールド有し、前記予測データフィールドが、過去複数回の分岐履歴を
用いて分岐予測を行うための動的予測情報を格納するフ
ィールドと、静的分岐予測情報を格納するフィールド
と、予測方式の選択を行う予測選択情報を格納するフィ
ールドと、前記動的予測情報の更新の禁止・許可を制御
する動的予測情報更新許可情報を格納するフィールド
と、前記静的予測情報の更新の禁止・許可を制御する静
的予測情報更新許可情報を格納するフィールドと、を有
し、前記静的予測情報と前記動的予測情報とが動的に選
択可能とされる、 ことを特徴とする分岐命令処理方式。
3. A branch instruction processing method in a pipeline type processor, wherein a branch instruction has, in its instruction field, a prediction data field which can be rewritten at any time , and the prediction data field has a plurality of past prediction data fields. Branch history
To store dynamic prediction information for branch prediction using
Field and field for storing static branch prediction information
And a file storing prediction selection information for selecting a prediction method.
And the prohibition / permission of updating the dynamic prediction information
For storing dynamic prediction information update permission information
And static control for controlling prohibition / permission of updating the static prediction information.
And a field for storing dynamic prediction information update permission information.
The static prediction information and the dynamic prediction information are dynamically selected.
A branch instruction processing method characterized by being selectable .
【請求項4】プログラム処理中に、前記予測選択情報、
前記動的予測情報更新許可情報、前 記静的予測情報更新
許可情報、前記動的予測情報、前記静的予測情報が随時
可変に設定される、ことを特徴とする請求項記載の分
岐命令処理方式。
4. The method according to claim 1, wherein said prediction selection information is
The dynamic prediction information updating permission information, before Symbol static prediction information update
Permission information, the dynamic prediction information, and the static prediction information
4. The branch instruction processing method according to claim 3 , wherein the branch instruction processing method is set variably .
【請求項5】パイプライン方式のプロセッサにおける分
岐命令処理方式であって分岐命令が、その命令フィールド内に、随時書換え可能
な予測データフィールドであって、分岐の予測情報を格
納するフィールドと、前記予測情報の更新の禁止・許可
を制御する予測情報更新許可情報を格納するフィールド
と、を有する予測データフィールドを備え 、 プログラム中に分岐予測処理を有し、前記分岐予測処理
結果を、前記分岐命令の前記予測データフィールドに反
映させる機能を具備する、ことを特徴とする分岐命令処
理方式。
5. A processor in a pipeline type processor.
Branch instruction processing method , branch instruction can be rewritten at any time in its instruction field
Prediction data field that stores branch prediction information.
Fields to be stored and prohibition / permission of updating the forecast information
For storing prediction information update permission information that controls
Includes a prediction data fields with and has a branch prediction process in the program, the branch prediction process <br/> result, provided with a function to reflect the predicted data field of said branch instruction, characterized Branch instruction processing method.
JP18046597A 1997-06-20 1997-06-20 Branch prediction method Expired - Fee Related JP2943772B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP18046597A JP2943772B2 (en) 1997-06-20 1997-06-20 Branch prediction method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP18046597A JP2943772B2 (en) 1997-06-20 1997-06-20 Branch prediction method

Publications (2)

Publication Number Publication Date
JPH1115659A JPH1115659A (en) 1999-01-22
JP2943772B2 true JP2943772B2 (en) 1999-08-30

Family

ID=16083706

Family Applications (1)

Application Number Title Priority Date Filing Date
JP18046597A Expired - Fee Related JP2943772B2 (en) 1997-06-20 1997-06-20 Branch prediction method

Country Status (1)

Country Link
JP (1) JP2943772B2 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3683439B2 (en) 1999-08-24 2005-08-17 富士通株式会社 Information processing apparatus and method for suppressing branch prediction
US9122486B2 (en) 2010-11-08 2015-09-01 Qualcomm Incorporated Bimodal branch predictor encoded in a branch instruction
JP2013250593A (en) * 2012-05-30 2013-12-12 Renesas Electronics Corp Semiconductor device

Also Published As

Publication number Publication date
JPH1115659A (en) 1999-01-22

Similar Documents

Publication Publication Date Title
US4894772A (en) Method and apparatus for qualifying branch cache entries
US5355459A (en) Pipeline processor, with return address stack storing only pre-return processed addresses for judging validity and correction of unprocessed address
US6526502B1 (en) Apparatus and method for speculatively updating global branch history with branch prediction prior to resolution of branch outcome
JP3182740B2 (en) A method and system for fetching non-consecutive instructions in a single clock cycle.
US6263427B1 (en) Branch prediction mechanism
US5949995A (en) Programmable branch prediction system and method for inserting prediction operation which is independent of execution of program code
JP3919802B2 (en) Processor and method for scheduling instruction operations in a processor
KR100440805B1 (en) An information processing apparatus that performs branch prediction with a high hit rate with a small amount of hardware
JPH0644071A (en) One-cycle register mapping
US6009509A (en) Method and system for the temporary designation and utilization of a plurality of physical registers as a stack
JP5231403B2 (en) Sliding window block based branch target address cache
JP2000222205A (en) Method and device for reducing delay of set associative cache by set prediction
US7203825B2 (en) Sharing information to reduce redundancy in hybrid branch prediction
US5634119A (en) Computer processing unit employing a separate millicode branch history table
EP0094535B1 (en) Pipe-line data processing system
JP3486690B2 (en) Pipeline processor
US5822577A (en) Context oriented branch history table
US8285976B2 (en) Method and apparatus for predicting branches using a meta predictor
JP2943772B2 (en) Branch prediction method
KR100305487B1 (en) Method and system in a data processing system of permitting concurrent processing of instructions of a particular type
JP3532835B2 (en) Data processing device and program conversion device
IE940854A1 (en) Data processor with branch prediction and method of¹operation
JP2004505345A (en) Data processor with branch target buffer
US6604193B1 (en) Processor in which register number translation is carried out
JP2001022577A (en) Information processor

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19990525

LAPS Cancellation because of no payment of annual fees