JPH1115659A - 分岐予測方式 - Google Patents

分岐予測方式

Info

Publication number
JPH1115659A
JPH1115659A JP18046597A JP18046597A JPH1115659A JP H1115659 A JPH1115659 A JP H1115659A JP 18046597 A JP18046597 A JP 18046597A JP 18046597 A JP18046597 A JP 18046597A JP H1115659 A JPH1115659 A JP H1115659A
Authority
JP
Japan
Prior art keywords
branch
prediction
instruction
prediction information
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.)
Granted
Application number
JP18046597A
Other languages
English (en)
Other versions
JP2943772B2 (ja
Inventor
Akira Mochizuki
明 望月
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
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP18046597A priority Critical patent/JP2943772B2/ja
Publication of JPH1115659A publication Critical patent/JPH1115659A/ja
Application granted granted Critical
Publication of JP2943772B2 publication Critical patent/JP2943772B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Abstract

(57)【要約】 【課題】パイプライン方式のプロセッサにおいて、正当
率が高い動的部分分岐予測を行いつつ、ハードウェアコ
スト的に有利な分岐命令処理方式の提供。 【解決手段】命令フィールド内に書換え可能な予測デー
タフィールドを持つ分岐命令と、予測データフィールド
に過去の分岐履歴等の予測情報を持たせ、命令実行時に
随時変化させる機能とを具備する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、情報処理装置の令
処理方式に関し、特に、パイプライン方式のプロセッサ
において、分岐によるパイプラインの乱れを小さくする
ための分岐命令処理方式に関する。
【0002】
【従来の技術】分岐予測を行うパイプライン方式のプロ
セッサにおいては、その予測方式として、静的分岐予測
方式と動的分岐予測方式に分けることができる。
【0003】このうち、静的分岐予測方式は、プログラ
ムのコンパイル時に、分岐の方向が決定されるもので、
分岐命令の実行時において、その予測の方向は変わらな
い。分岐予測の正当性はあまり高くないが、ソフトウェ
アによる手法のため、ハードウェアコストがかからな
い。
【0004】一方、動的分岐予測方式は、現在までの実
行履歴を基に分岐予測が行われるものである。すなわ
ち、プログラム中の分岐命令の現在までの振る舞いに基
づき、予測の方向を随時変化させる。従来の動的分岐予
測の実現方法は、分岐先バッファを用いる。この分岐先
バッファの動作について図12を参照して以下に説明す
る。
【0005】分岐先バッファとしては、図12に示すよ
うに、分岐命令アドレスを格納するレジスタと、予測次
アドレスを格納するレジスタと、予測データを格納する
1ないし複数ビットからなるレジスタ群をエントリ数N
だけ持つ構成を考える。
【0006】現在命令フェッチ中のプログラムカウンタ
(「PC」という)と現在分岐先バッファにエントリさ
れている分岐命令アドレスを検索する。一致するものが
あれば、現在フェッチ中の命令は分岐命令であり、対応
する予測次アドレスを直ちに次PCとして命令フェッチ
用PCを更新し、命令フェッチを開始する。
【0007】その後、分岐結果が予測と一致しなけれ
ば、予測次アドレスを更新し、再びフェッチを行う。予
測と一致すれば予測ヒットとしてそのまま実行を続行す
る。
【0008】一方、分岐先バッファに一致するものが存
在しなければ、現在フェッチ中の命令は分岐命令でない
として、通常通りPCを更新し、このPCに対して次の
命令フェッチを行う。
【0009】その後、パイプラインの命令解読ステージ
で分岐命令と認識されたなら、当該命令を次のPCとと
もに分岐先バッファにエントリする。
【0010】分岐先バッファにエントリされた分岐命令
は、それぞれ、予測データを持つことになり、当該分岐
が成立または不成立のいずれかに予測されているかを記
録している。
【0011】予測データと現在の分岐状況から、所定の
分岐予測アルゴリズムに基づいて、予測データを更新
し、予測ミス時に、予測次アドレスを直ちに更新すべき
かどうかの判断に使用できる。なお、分岐予測アルゴリ
ズムとしては、1ビット予測法、2ビット予測法などが
知られており、過去数回の分岐履歴を基に、予測を行
う。
【0012】高いヒット率を望む分岐予測を実現するに
は、分岐先バッファなどを用いた動的分岐予測が有効で
ある。しかし、ハードウェアコスト的には大きなバッフ
ァを持たなければならない等の不利となる。また、分岐
先バッファを用いたときには、エントリ数に上限があ
り、バッファのエントリ数を越える分岐命令数を持つプ
ログラムに対応するには処理が複雑化する。また、プロ
グラム開始時には分岐先バッファは空の状態であるた
め、必然的に分岐予測ミスが増加する。
【0013】上記のような問題を解決するために、分岐
命令の命令フィールドに予測情報フィールドを設ける方
法が提案されている。この予測情報フィールドをみるこ
とにより、分岐先バッファに登録すべきか否かを決定
し、最小限のバッファを用意し、ハードウェアコストを
抑える方法も知られている。また、予測情報フィールド
を診ることにより予測オペレーションの内容、使用する
レジスタなどを決定し、分岐予測を行う方法も知られて
いる。
【0014】
【発明が解決しようとする課題】分岐命令の命令フィー
ルドに予測情報フィールドを設けるという従来の分岐予
測方式においては、分岐先バッファを用いることを前提
とし、分岐先バッファを有効に利用する方法がとられて
きた。さらに、動的分岐予測の正当性を向上させるため
には、大きな分岐先バッファを用いることになる。
【0015】従来、ハードウェアコストを抑えるため
に、エントリをする分岐命令を選択するなどの方式によ
り、分岐先バッファのエントリ数の増大を抑止を図るよ
うにした方法が提案されてきた。
【0016】しかしながら、分岐先バッファは動的分岐
予測には必須であり、この部分ハードウェアは最低限必
要となる。また、分岐先バッファの検索処理も回路の複
雑化、プロセッサの処理能力低下を招く。
【0017】したがって、本発明は、上記問題点に鑑み
てなされたものであって、その目的は、分岐先バッファ
を用いることなく、ハードウェアコストの過大な増大を
抑止した分岐命令処理方式を提供することにある。
【0018】
【課題を解決するための手段】前記目的を達成するた
め、請求項1記載の発明の分岐命令処理方式は、分岐命
令の命令フィールド内に随時書換え可能な予測データフ
ィールドを持つ分岐命令を有する、ことを特徴としたも
のである。
【0019】請求項2記載の発明は、上記請求項1記載
の発明の予測データフィールドに、過去の分岐履歴等の
動的予測情報を持たせ、各分岐命令実行時に随時変化さ
せる手段を具備する、ことを特徴とする。
【0020】請求項3記載の発明は、上記請求項1記載
の発明の予測データフィールドに過去の分岐履歴等の動
的予測情報を用いる場合、初期値を静的分岐予測で決定
することができる、ことを特徴とする。
【0021】請求項4記載の発明は、上記請求項1記載
の発明の予測データフィールドに静的分岐予測情報を用
い、プログラム処理の初期段階ないしプログラム処理全
体において、その予測情報の更新を行わない、ことを特
徴とする。
【0022】請求項5記載の発明は、上記請求項1記載
の発明の予測データフィールドに過去の分岐履歴等の動
的予測情報を持っているとき、プログラム処理中に随
時、その予測情報の更新を行うことを禁止できる、こと
を特徴とする。
【0023】請求項6記載の発明は、上記上記請求項2
乃至5記載の発明の予測データフィールドに動的予測情
報、静的分岐予測等の情報を持たさせる方式を、プログ
ラム処理中に随時選択できるように、前記予測データフ
ィールドに選択情報を持たせる、ことを特徴とする。
【0024】請求項7記載の発明は、プログラム中に分
岐予測処理を有する場合、ないしはある時点で直接分岐
命令の予測データフィールドの情報を書き換えたい場
合、その結果を分岐命令の予測データフィールドに反映
させる機能を具備する、ことを特徴とする。
【0025】
【発明の実施の形態】本発明の好ましい実施の形態につ
いて以下に説明する。請求項1に係る発明は、その好ま
しい実施の形態において、分岐命令の命令フィールドに
随時書換え可能な予測データフィールドを持ち、そこに
過去の分岐履歴等の動的予測情報、静的分岐予測情報、
予測方式選択、予測情報の更新を禁止できる情報(予測
情報更新許可ビット)等を備える(図2乃至図5参
照)。
【0026】請求項1記載の発明においては、分岐命令
の命令フィールドに随時書換え可能な予測データフィー
ルドを持っているため、従来方式では、コンパイル時に
決定されていた分岐命令が、プログラム実行中に、命令
のその内容を変えることができ、柔軟な分岐予測処理が
可能となり、このため分岐予測の正当率を向上させるこ
とができる。
【0027】また請求項2記載の発明は、その好ましい
実施の形態において、請求項1記載の予測データフィー
ルドに過去の分岐履歴等の動的予測情報を持たせ(図6
(b)、図6(c)参照)、その予測情報に基づき、分
岐先を決定するとともに、分岐履歴等の動的予測情報
を、分岐命令処理中に更新し、その分岐命令が格納され
ているメモリに書き戻す機能を有する。
【0028】請求項2記載の分岐命令処理方式では、過
去の分岐履歴等の動的予測情報を分岐命令内に持つこと
になる。このため、分岐先バッファ等の大きなハードウ
ェアが必要なくなり、コスト的に有利になる。
【0029】また各分岐命令に対応する予測情報をそれ
ぞれの命令内に持つため、従来方式では、分岐先バッフ
ァを検索して得ていた予測情報を、本発明では、命令フ
ェッチ時に、即座に獲得できるため、処理が簡略化で
き、且つ分岐予測処理の高速化さらにはプロセッサの性
能を向上できる。
【0030】また、請求項3記載の発明は、その好まし
い実施の形態において、請求項1記載の予測データフィ
ールドに、過去の分岐履歴等の動的予測情報を持たせる
場合、その予測情報の初期値を、コンパイル時に行われ
る、静的分岐予測情報で決定することができるようにし
たものである。
【0031】請求項3記載の分岐命令処理方式において
は、過去の分岐履歴等の動的予測情報を使用する場合、
その予測情報の初期値をコンパイル時に行われる静的分
岐予測情報で決定し、プログラム処理開始時の動的分岐
予測の正当性を向上することができる。
【0032】また、請求項4記載の発明は、その好まし
い実施の形態において、請求項1記載の予測データフィ
ールドに、コンパイル時に行われる静的分岐予測情報を
持たせ、その予測情報の更新を行わせたくない場合は、
予測情報更新を禁止し、プログラム処理中で、予測情報
更新を許可したときには、該予測情報の更新を行える機
能を有する。
【0033】請求項4記載の分岐命令処理方式では、コ
ンパイル時に行われる静的分岐予測情報を使用するとき
に有効である。また、プログラム処理中で予測情報更新
を許可したときはその予測情報の更新を行えるため、静
的分岐情報をある時点で使用しなくなる場合等、柔軟な
分岐予測処理が可能となる。
【0034】また、請求項5記載の発明は、その好まし
い実施の形態において、請求項1記載の予測データフィ
ールドに過去の分岐履歴等の動的予測情報を持っている
とき、プログラム処理中、ある時点において、以後、予
測情報の更新を行わせたくない場合には、予測情報更新
を禁止し、さらに、予測情報の更新を許可したときに
は、該予測情報の更新を行える機能を有する。
【0035】請求項5記載の分岐命令処理方式では、過
去の分岐履歴等の動的予測情報を持っているとき、プロ
グラム処理中ある時点において、以後予測情報更新を禁
止および許可ができるため、柔軟な分岐予測処理が可能
となる。
【0036】また、請求項6記載の発明は、その好まし
い実施の形態において、請求項2〜5記載の予測データ
フィールドに動的予測情報、静的分岐予測等の情報等の
予測情報の種類、予測方式を、プログラム処理中のある
時点において、随時選択できるように予測データフィー
ルドに選択情報を持たせるようにしたものである。
【0037】請求項6記載の分岐命令処理方式では、動
的予測情報、静的分岐予測等の予測情報の種類、予測方
式を、プログラム処理中のある時点において、随時選択
できるため、柔軟な分岐予測処理が可能となる。
【0038】また、請求項7の発明は、その好ましい実
施の形態において、プログラム中に分岐予測処理を有
し、その結果を分岐命令の予測データフィールドに反映
させたいとき、プログラム処理中ある時点において直接
分岐命令の予測データフィールドの情報を書き換えたい
ときに、分岐命令の予測データフィールドの更新できる
機能を有する。
【0039】請求項7記載の分岐命令処理方式では、複
雑な分岐予測アルゴリズムをプログラム中に有し、その
結果を分岐命令の予測データフィールドに反映できるた
め複雑な分岐予測アルゴリズム処理のプログラムが簡略
化でき、分岐予測処理の高速化が可能となる。また、プ
ログラム処理中ある時点において分岐命令の内容を随時
書き換えることができ分岐予測処理の高速化が可能とな
る。
【0040】
【実施例】本発明の実施例について図面を参照して以下
に説明する。以下では説明に使用するパイプライン方式
のプロセッサは、5段パイプラインで、図1にその実行
順序を示したように、命令フェッチ(IF)、命令デコ
ード(ID)、演算実行(EX)、メモリアクセス(M
EM)、レジスタ書込み(WB)の各処理ステージから
なるものとする。
【0041】分岐命令フィールドは、図2に示すよう
に、命令コードと、相対的分岐先を示す即値と、書換え
可能な予測データフィールドと、からなる。また、図3
に示すようにレジスタコードを与え、対応するレジスタ
の内容を相対的分岐先とすることもできる。
【0042】予測データフィールドは、図4に示すよう
に、動的予測情報、静的予測情報、動的予測情報更新許
可ビット、静的予測情報更新許可ビット、及び、予測情
報選択ビットからなる。各許可ビットは、予測情報の更
新および禁止を示す。この場合、次のような機能が許さ
れる。
【0043】動的予測情報更新許可ビットの初期値を更
新許可状態に、静的予測情報更新許可ビットの初期値を
更新禁止状態に設定されているものとする。まず、動的
予測情報と静的予測情報を選択できる。動的予測情報を
プログラム処理中ある時点において、更新禁止に設定
し、その時点における予測情報をあたかも静的予測情報
として扱うことができる。この場合、再度、動的予測を
行う際には、更新許可に設定する。
【0044】コンパイル時に決定された静的予測情報
を、プログラム処理中、ある時点において更新したい場
合、静的予測情報更新許可ビットを更新許可に設定す
る。
【0045】予測データフィールドにおける予測情報の
欄を、両方とも静的予測情報に使用することも、動的予
測情報に使用することもできる。また、プログラム処理
中、ある時点において、動的、静的の方式の変更も可能
である。
【0046】予測データフィールドに十分なフィールド
幅を持てない場合は、図5に示すような構成でも処理は
可能である。図5を参照すると、予測データフィールド
は予測情報更新許可ビットと予測情報からなる。但し、
コンパイル時に決定された静的予測情報を使用してお
り、動的予測情報を使用する処理に切り換え、再度コン
パイル時に決定された静的予測情報を使用したような場
合は、静的予測情報を別に格納しておく必要がある。
【0047】図5に示すような予測データフィールドを
持つ場合の分岐命令処理方式の動作について、図6、及
び図7を参照して説明する。図6に示すような命令フィ
ールドを持つ場合を考える。各命令には命令コード内に
分岐命令識別ビットを持っており、分岐命令識別ビット
の値が0のとき、その命令は分岐命令ではなく(図6
(a)参照)、1のときその命令は分岐命令であるとす
る(図6(b)、図6(c)参照)。なお、この情報
は、命令コード圧縮のため、エンコードされた命令コー
ドに対して随時デコードして獲得してもよい。
【0048】分岐命令の命令コードには、相対分岐先ア
ドレスとして、命令フィールド内の即値(図6(c)参
照)、およびレジスタの内容を使用できるように、選択
ビットを持つこととする(図6(b)参照)。なお、十
分な命令フィールドが取れない場合は、相対分岐先アド
レスとしてどちらかに固定して、選択ビットを削除する
こともできる。
【0049】分岐命令は、予測データフィールドを持
ち、図6に示す例では、動的予測情報として2ビット持
ち、過去の2回の履歴を用いて予測するものとする。予
測アルゴリズムは従来から提案されている公知技術が使
用される。
【0050】ここで分岐成立と予測される場合には、2
ビットの予測情報の上位ビットが1、分岐不成立と予測
される場合には、予測情報の上位ビットが0、となるよ
うに過去の履歴状態を割り当てるものとする。
【0051】さらに、予測データフィールドには、予測
情報の更新を許可および禁止するビットを持つ。このビ
ットが1のときは予測情報の更新を許可し、動的分岐予
測が可能となる。一方、0のときは予測情報の更新を禁
止し、禁止した時点での予測情報をあたかも、静的予測
情報として扱うことができる。
【0052】図6に示すような命令セットを持つ、分岐
命令処理方式は、図7に示すような構成で実現できる。
もちろん、図7に示した例は説明のための構成であり、
簡略化、機能の追加等は可能である。
【0053】図7を参照すると、インクリメント4は、
現在の命令フェッチアドレスをインクリメントし、分岐
不成立時の次命令フェッチアドレスを生成する。
【0054】加算器3は、現在の命令フェッチアドレス
と相対分岐先アドレスとを加算し、分岐成立時の次命令
フェッチアドレスを生成する。加算器3に入力される相
対分岐先アドレスは、現在のフェッチ中命令の即値、ま
たはレジスタの内容をマルチプレクサ2により選択す
る。このマルチプレクサ2の選択信号として、相対分岐
先アドレス選択ビットを診る。相対分岐先アドレスとな
るレジスタの内容は、レジスタコードで指定されたレジ
スタをレジスタファイル1より選択し、読出しを行う。
【0055】現在フェッチ中の命令が分岐命令であると
して、分岐の成立と不成立を予測する情報を示している
予測情報上位ビットにより、マルチプレクサ5、6を通
じて、分岐不成立時の次命令フェッチアドレスおよび分
岐成立時の次命令フェッチアドレスを、予測PC7およ
び非予測PC8に送付する。
【0056】すなわち、分岐成立と予測される場合、分
岐成立時の次命令フェッチアドレスを予測PC7に、分
岐不成立時の次命令フェッチアドレスを非予測PC8に
送付し、分岐不成立と予測される場合、分岐不成立時の
次命令フェッチアドレスを予測PC7に、分岐成立時の
次命令フェッチアドレスを非予測PC8に送付する。
【0057】予測情報上位ビットは、現在フェッチ中の
命令が分岐命令であって、はじめて意味を持つため、分
岐命令識別ビットと予測情報上位ビットの論理積をとる
AND条件素子18により、マルチプレクサ5、6の選
択信号を生成している。
【0058】予測PC7は、常にマルチプレクサ5、6
を通して送付されてくる次命令フェッチアドレスをラッ
チする。
【0059】非予測PC8は、現在フェッチ中の命令が
分岐命令であるときのみラッチする。このため、非予測
PC8は、予測ミスした場合の再フェッチ用次命令フェ
ッチアドレスを格納していることになる。通常、次命令
フェッチアドレスとして、予測PC7に格納されるアド
レスをマルチプレクサ9により選択される。予測ミスし
た場合において、再フェッチ要求がある場合は、非予測
PC8に格納中の再フェッチ用アドレスを読み出す。
【0060】前PC10、前々PC11および更新分岐
命令アドレスラッチ12は分岐命令のMEMステージ
で、分岐命令更新を行うためのアドレスを保持しておく
遅延素子の役目をしている。これらは、通常プロセッサ
内に、他の目的で備えられているため、ここで特に用意
する必要はない。同様に、前予測データラッチ14、前
々予測データラッチ15および更新予測データラッチ1
7は分岐命令更新を行うための予測データを保持してお
く遅延素子の役目をしている。これらも、通常プロセッ
サ内に命令のデコード値を格納するレジスタ等を備えて
いるため、必要があれば追加すればよい。
【0061】予測判定および予測データ更新回路16
は、予測が正当であったか否かの判定を、演算結果の状
態情報等から行う。もし、予測ミスと判定された場合に
は、再フェッチ要求を出力する。また、予測情報の更
新、この場合、分岐履歴の更新を行う。予測情報更新許
可ビットが0の時は更新を行わない。
【0062】メモリ13は、命令を記憶しているもので
あり、命令フェッチアドレスを入力すると命令コードを
出力する。ここでは分岐命令の書き戻し処理が必要なた
め、RAM(ランダムアクセスメモリ)等の書込み可能
な媒体である必要がある。書込みが可能であればデータ
領域が共存していても、命令キャッシュのような構成で
あってもよい。さらに、回路の簡単化のため予測データ
フィールド部分のみ書込みを許す構成でも構わない。
【0063】図7に示される分岐命令処理方式の構成の
サイクルごとの動作を、図8〜図11を参照して説明す
る。図8乃至図11において、n+1番目の命令が分岐
命令と仮定し、簡単のためにn番目の命令はメモリの0
番地、n+1番目の命令が1番地に格納され、分岐命令
の相対分岐アドレスはbとする。すなわち、この分岐命
令の分岐成立時の次命令フェッチアドレスは1+b番地
であり、分岐不成立時の次命令フェッチアドレスは2番
地となる。xは前の処理で設定された値である不定値と
して扱う。
【0064】なお、図8乃至図11において、予測P
C、非予測PCの下線部は、命令フェッチアドレスとし
て選択しているマルチプレクサ9の動作を示している。
分岐の成立および不成立が決定できるのはn番目の命令
がEXステージを終了した時である。なぜなら、演算の
結果が分岐に反映される構成をプロセッサがとっている
ためである。すなわち、分岐予測の正当性は、早くても
分岐命令のEXステージで処理される。
【0065】図8に、分岐不成立と予測し、かつ予測が
ヒットした場合を示す。n+1番目の命令が分岐命令で
あるため、分岐命令識別ビットが1となり、非予測PC
7がマルチプレクサ5を通してきた次命令フェッチアド
レスをラッチする。この場合、分岐不成立と予測されて
いるため、非予測PC7は、分岐成立時の次命令フェッ
チアドレス1+b番地をラッチする一方、予測PC8
は、分岐不成立時の次命令フェッチアドレス2番地をラ
ッチする。次のサイクルでn番目の命令EXステージが
終了したため、予測の正当性がわかる。ここでは、予測
ヒットなので、非予測PC7の値は使用されず、このま
ま処理を続行する。
【0066】図9に、分岐不成立と予測し、かつ予測が
ミスした場合を示す。n+1番目の命令が分岐命令であ
るため、分岐命令識別ビットが1となり、非予測PC7
がマルチプレクサ5を通してきた次命令フェッチアドレ
スをラッチする。この場合、分岐不成立と予測されてい
るため、非予測PC7は、分岐成立時の命令フェッチア
ドレス1+b番地をラッチする。一方、予測PC8は分
岐不成立時の次命令フェッチアドレス2番地をラッチす
る。ここまでは、図8に示した動作と同じである。次の
サイクルで予測ミスと判定され再フェッチ要求が出され
る。ここで、次命令フェッチアドレスは、マルチプレク
サ9により非予測PC7に格納されている分岐成立時の
次命令フェッチアドレス1+b番地が選択され、再フェ
ッチが完了する。同時に予測ミスした命令の無効化を行
う。
【0067】図10に、分岐成立と予測し、かつ予測が
ヒットした場合を示す。n+1番目の命令が分岐命令で
あるため分岐命令識別ビットが1となり、非予測PC7
がマルチプレクサ5を通してきた次命令フェッチアドレ
スをラッチする。この場合、分岐成立と予測されている
ため、分岐不成立時の次命令フェッチアドレス2番地を
ラッチする。一方、予測PC8は、分岐不成立時の次命
令フェッチアドレス1+b番地をラッチする。次のサイ
クルでn番目の命令のEXステージが終了したため予測
の正当性がわかる。ここでは、予測ヒットなので、非予
測PC7の値は使用されず、このまま処理を続行する。
【0068】図11に、分岐成立と予測し、かつ予測が
ミスした場合を示す。n+1番目の命令が分岐命令であ
るため分岐命令識別ビットが1となり、非予測PC7が
マルチプレクサ5を通してきた次命令フェッチアドレス
をラッチする。この場合、分岐成立と予測されているた
め、分岐成立時の次命令フェッチアドレス2番地をラッ
チする。一方、予測PC8は、分岐不成立時の次命令フ
ェッチアドレス1+b番地をラッチする。ここまでは、
図10に示した動作と同じである。次のサイクルで予測
ミスと判定され再フェッチ要求が出される。ここで次命
令フェッチアドレスはマルチプレクサ9により非予測P
C7に格納されている分岐不成立時の次命令フェッチア
ドレス2番地が選択され、再フェッチが完了する。同時
に予測ミスした命令の無効化を行う。
【0069】図8〜図11に共通であるが、分岐命令の
MEMステージで、更新分岐命令アドレスが元々フェッ
チしてきたアドレス1番地が現れるため、分岐命令の更
新が可能となる。
【0070】この実施例では、連続した分岐命令があっ
た場合、非予測PC7に格納されていた値が更新されて
しまう。このため、連続した分岐命令を許す場合は非予
測PC7を2段直列に接続することで解決できる。この
実施例では示さなかったが、分岐命令内に、静的予測情
報と動的予測情報を持ち、選択ビットで切り換えて使う
場合の回路構成も、予測情報上位ビットに相当する部分
に、マルチプレクサを挿入する、予測データのラッチの
ビット幅を適切な値にする、予測判定および予測データ
更新回路を変更等、過大なハードウェアを追加すること
なく実現できる。
【0071】さらに、分岐命令内の予測フィールドは通
常のメモリ書込み命令で書換え可能であるため、特に予
測情報更新許可ビット、予測情報許可ビット等の変更が
容易である。もちろん、予測情報の変更も通常のメモリ
書込み命令で実行できる。
【0072】
【発明の効果】以上説明したように、本発明によれば、
分岐先バッファ等の特別なハードウェアを必要とせず、
動的分岐予測が可能となり、処理も簡略化できる。これ
によりハードウェアコストを抑え、正当性の高い柔軟な
分岐予測が可能で、プロセッサの処理能力の向上が期待
できる。
【図面の簡単な説明】
【図1】本発明の一実施例を説明するための図であり、
パイプラインの各ステージと処理順を示す説明図であ
る。
【図2】本発明の一実施例を説明するための図であり、
相対分岐先アドレスを即値として持つ分岐命令の命令フ
ィールドを示した図である。
【図3】本発明の一実施例を説明するための図であり、
相対分岐先アドレスを持つレジスタのレジスタコードを
持つ分岐命令の命令フィールドを示した図である。
【図4】本発明の一実施例における、静的予測情報と動
的予測情報を持つ予測データフィールドを説明する図で
ある。
【図5】本発明の一実施例における、静的予測情報と動
的予測情報とを共存させる予測データフィールドを説明
する図である。
【図6】本発明の一実施例で使用される命令の命令フィ
ールドのフォーマットを示す図であり、(a)は非分岐
命令、(b)は分岐命令(レジスタ使用)、(c)は分
岐命令(即値使用)のフォーマットを示す。
【図7】本発明の一実施例が適用される、分岐命令処理
方式の動作を説明するブロック図である。
【図8】本発明の一実施例を説明するための図であり、
分岐不成立と予測し、予測ヒットする場合の動作を説明
する図である。
【図9】本発明の一実施例を説明するための図であり、
分岐不成立と予測し、予測ミスする場合の動作を説明す
る図である。
【図10】本発明の一実施例を説明するための図であ
り、分岐成立と予測し、予測ヒットする場合の動作を説
明する図である。
【図11】本発明の一実施例を説明するための図であ
り、分岐成立と予測し、予測ミスする場合の動作を説明
する図である。
【図12】分岐先バッファの構成と動作を説明する図で
ある。
【符号の説明】
1 レジスタファイル 2 マルチプレクサ 3 加算器 4 インクリメンタ 5、6 マルチプレクサ 7 非予測PC 8 予測PC 9 マルチプレクサ 10 前PC 11 前々PC 12 更新分岐命令アドレスラッチ 13 メモリ 14 前記予測データ 15 前々予測データ 16 予測判定および予測データ更新回路 17 更新予測データラッチ

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】パイプライン方式のプロセッサにおける分
    岐命令処理方式であって、 分岐命令が、その命令フィールド内に、随時書換え可能
    な予測データフィールドを有する、ことを特徴とする分
    岐命令処理方式。
  2. 【請求項2】前記予測データフィールドに、過去の分岐
    履歴等の動的予測情報を備え、前記予測情報を、前記分
    岐命令の実行時に、随時変化させる機能を具備する、こ
    とを特徴とする請求項1記載の分岐命令処理方式。
  3. 【請求項3】前記予測データフィールドに、過去の分岐
    履歴等の動的予測情報を用いる場合、初期値を静的分岐
    予測で決定できる、ようにしたことを特徴とする請求項
    1記載の分岐命令処理方式。
  4. 【請求項4】前記予測データフィールドに、静的分岐予
    測情報を用い、プログラム処理の初期段階ないしプログ
    ラム処理全体において、その予測情報の更新を行わな
    い、ようにしたことを特徴とする請求項1記載の分岐命
    令処理方式。
  5. 【請求項5】前記予測データフィールドに、過去の分岐
    履歴等の動的予測情報を備え、プログラム処理中に、随
    時、前記予測情報の更新を禁止するように設定可能とし
    た、ことを特徴とする請求項1記載の分岐命令処理方
    式。
  6. 【請求項6】前記予測データフィールドに、動的予測情
    報、静的分岐予測等の予測情報を備え、プログラム処理
    中に、これらを随時選択できるように、前記予測データ
    フィールドに、選択情報を備えた、ことを特徴とする請
    求項2乃至5のいずれか一に記載の分岐命令処理方式。
  7. 【請求項7】プログラム中に分岐予測処理を有する場
    合、ある時点で、直接、分岐命令の予測データフィール
    ドの情報を書き換えたい場合、その結果を、分岐命令の
    予測データフィールドに反映させる機能を具備する、こ
    とを特徴とする分岐命令処理方式。
JP18046597A 1997-06-20 1997-06-20 分岐予測方式 Expired - Fee Related JP2943772B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP18046597A JP2943772B2 (ja) 1997-06-20 1997-06-20 分岐予測方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP18046597A JP2943772B2 (ja) 1997-06-20 1997-06-20 分岐予測方式

Publications (2)

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

Family

ID=16083706

Family Applications (1)

Application Number Title Priority Date Filing Date
JP18046597A Expired - Fee Related JP2943772B2 (ja) 1997-06-20 1997-06-20 分岐予測方式

Country Status (1)

Country Link
JP (1) JP2943772B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6754813B1 (en) 1999-08-24 2004-06-22 Fujitsu Limited Apparatus and method of processing information for suppression of branch prediction
CN103238134A (zh) * 2010-11-08 2013-08-07 高通股份有限公司 编码于分支指令中的双模态分支预测器
JP2013250593A (ja) * 2012-05-30 2013-12-12 Renesas Electronics Corp 半導体装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6754813B1 (en) 1999-08-24 2004-06-22 Fujitsu Limited Apparatus and method of processing information for suppression of branch prediction
CN103238134A (zh) * 2010-11-08 2013-08-07 高通股份有限公司 编码于分支指令中的双模态分支预测器
JP2013545194A (ja) * 2010-11-08 2013-12-19 クアルコム,インコーポレイテッド 分岐命令の中に符号化されたバイモーダル分岐予測子
US9122486B2 (en) 2010-11-08 2015-09-01 Qualcomm Incorporated Bimodal branch predictor encoded in a branch instruction
JP2013250593A (ja) * 2012-05-30 2013-12-12 Renesas Electronics Corp 半導体装置

Also Published As

Publication number Publication date
JP2943772B2 (ja) 1999-08-30

Similar Documents

Publication Publication Date Title
US5355459A (en) Pipeline processor, with return address stack storing only pre-return processed addresses for judging validity and correction of unprocessed address
US5530825A (en) Data processor with branch target address cache and method of operation
JP3542021B2 (ja) セット予測によりセット連想キャッシュの遅延を少なくする方法及び装置
JP3182740B2 (ja) 単一クロック・サイクルに非連続命令を取り出すための方法およびシステム。
US6526502B1 (en) Apparatus and method for speculatively updating global branch history with branch prediction prior to resolution of branch outcome
US5949995A (en) Programmable branch prediction system and method for inserting prediction operation which is independent of execution of program code
US5805877A (en) Data processor with branch target address cache and method of operation
JP3919802B2 (ja) プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法
JPH0644071A (ja) 一サイクルレジスタマッピング
JP5231403B2 (ja) スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ
KR100440805B1 (ko) 소규모의 하드웨어로 높은 적중률의 분기 예측을 하는 정보 처리 장치
US6009509A (en) Method and system for the temporary designation and utilization of a plurality of physical registers as a stack
US5617553A (en) Computer system which switches bus protocols and controls the writing of a dirty page bit of an address translation buffer
JPH11259298A (ja) サブル―チン呼び出しおよび復帰動作を実行するための装置および方法
US5634119A (en) Computer processing unit employing a separate millicode branch history table
EP0094535B1 (en) Pipe-line data processing system
JP3486690B2 (ja) パイプライン方式プロセッサ
US5822577A (en) Context oriented branch history table
US5794027A (en) Method and apparatus for managing the execution of instructons with proximate successive branches in a cache-based data processing system
US8285976B2 (en) Method and apparatus for predicting branches using a meta predictor
US20030204705A1 (en) Prediction of branch instructions in a data processing apparatus
JP2943772B2 (ja) 分岐予測方式
US6604193B1 (en) Processor in which register number translation is carried out
JP2001022577A (ja) 情報処理装置
JP4533432B2 (ja) Tlb相関型分岐予測器及びその使用方法

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