JP2001014162A - 分岐予測方法およびデータ処理装置 - Google Patents

分岐予測方法およびデータ処理装置

Info

Publication number
JP2001014162A
JP2001014162A JP18875199A JP18875199A JP2001014162A JP 2001014162 A JP2001014162 A JP 2001014162A JP 18875199 A JP18875199 A JP 18875199A JP 18875199 A JP18875199 A JP 18875199A JP 2001014162 A JP2001014162 A JP 2001014162A
Authority
JP
Japan
Prior art keywords
branch
branch prediction
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.)
Pending
Application number
JP18875199A
Other languages
English (en)
Inventor
Kazuji Kurata
和司 蔵田
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial 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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP18875199A priority Critical patent/JP2001014162A/ja
Publication of JP2001014162A publication Critical patent/JP2001014162A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Abstract

(57)【要約】 【課題】 従来の分岐予測方法によるデータ処理装置
は、ある分岐命令のプログラムアドレスにつき過去数回
の履歴パターンそれぞれに対応して分岐が生じる確率を
表した2ビットの情報を記憶したエントリが必要であ
り、並列に探索可能な連想メモリの容量が増え高コスト
になる。 【解決手段】 過去最も新しい条件分岐の実績及び過去
数回の分岐予測が的中したか否かの合否に基づく分岐予
測方法であり、ある分岐命令のプログラムアドレスにつ
き直前の分岐実績と分岐予測の合否記録と予測結果のみ
を分岐予測バッファのエントリとすることで、分岐予測
精度の高いデータ処理装置を低コストで構成する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は分岐予測の方法と、
その方法に基づき分岐が成立するか否かを予測するデー
タ処理装置に関する。
【0002】
【従来の技術】近年、プロセッサの見かけ上の動作を高
速化するため、パイプライン処理が採用されている。と
ころが、プログラム中の分岐は、パイプライン処理のデ
ータ処理装置では、分岐が発生したときにパイプライン
中の先取りされた命令をフラッシュして新しい命令スト
リームを開始させなければならないため、命令当たりの
サイクル数という見地から性能を低下させる。この分岐
時に発生するバブルをなくすために、ある条件分岐命令
の分岐が成立か不成立かを予測して、パイプラインに命
令を先取りする分岐予測技術がある。
【0003】従来の分岐予測方法には大きく分けて数ビ
ットの確率テーブルを分岐実績を基に更新する方法と過
去数回の分岐履歴を基に分岐を予測する方法がある。後
者の分岐予測方法で使われる分岐履歴と分岐予測の関係
を図30、図31に示す。図30は、分岐予測バッファ
7の一エントリを示す図である。図31は、分岐予測情
報の更新方法を示す図である。図30のエントリが示す
ように、分岐命令のアドレスについて、該当する分岐命
令の過去4回の分岐結果の履歴と、前記過去数回の分岐
結果の履歴パターンごとに分岐が生じる確率を表した2
ビットの情報から成る分岐予測情報を格納する。分岐予
測は、次のように行なう。分岐予測バッファ7が、該当
する分岐命令の情報を格納している場合には、その分岐
命令の実行結果の履歴を調べる。この履歴情報を使っ
て、分岐の確率を示した情報を参照する。これは図31
に示すように、「高い確率で分岐成立」、「低い確率で
分岐成立」、「低い確率で分岐不成立」、「高い確率で
分岐不成立」のいずれかであり、2ビットの情報で順に
11、10、01、00で表すとする。得られた情報が
前の二つであれば分岐すると予測し、分岐先の命令のフ
ェッチを行なう。後の二つであれば、分岐しないと判断
する。実際に分岐結果が判明した時点で、分岐の確率を
示す2ビットの情報は、分岐した場合にビットをインク
リメントし、分岐しなかった場合はデクリメントするこ
とで更新される。インクリメントは11で、デクリメン
トは00でそれぞれ飽和する。
【0004】
【発明が解決しようとする課題】しかしながら、前記従
来例の数ビットの確率テーブルを分岐実績を基に更新す
る方法では、分岐、非分岐を交互に繰り返すような場合
に、正確さを欠くという欠点があった。また、過去数回
の分岐履歴を基に分岐を予測する方法は、分岐命令の過
去数回の履歴のパターンそれぞれに対応して分岐が生じ
る確率を表した2ビットの情報から成る分岐予測情報を
記憶したエントリが必要であり、そのエントリを並列に
探索する連想記憶メモリなどで構成する場合には、容量
が増えコストが高くなる。例えば、過去4回の履歴を調
べる場合には、あるプログラムアドレスにつき16の履
歴パターン数を掛け合わせた数だけ分岐が生じる確率を
格納するための連想メモリが必要になる。以上の連想記
憶するデータ量と対応するパターンの検索と、分岐が生
じる確率を更新するためにかかるハードウェアにより、
データ処理装置が大規模化するという問題があった。
【0005】本発明は上記問題を解決するもので、その
目的は、第1に少ないハードウェア規模で分岐が成立す
るか否かを予測する分岐予測方法を提供し、第2にその
分岐予測方法を用いたデータ処理装置を提供するもので
ある。
【0006】
【課題を解決するための手段】上記目的を達成するた
め、請求項1に記載の分岐予測方法は、条件分岐命令が
実行された時、分岐が過去最も新しい条件分岐の実績及
び過去数回の分岐予測が的中したか否かの合否に基づい
て発生するか否かを予測することを特徴とするものであ
る。
【0007】請求項2に記載の分岐予測方法は、条件分
岐命令が実行された時、分岐が過去最も新しい条件分岐
の実績及び過去数回の分岐予測が的中したか否かの合否
履歴に基づいて、前記過去最も新しい条件分岐の実績の
保持か反転で分岐が発生するか否かを予測するものであ
り、その分岐予測方法を用いて分岐が成立するか否かを
予測するデータ処理装置を少ないハードウェア規模で実
現することを特徴とするものである。
【0008】請求項3に記載の分岐予測方法は、条件分
岐命令が実行された時、分岐が過去最も新しい条件分岐
の実績及び過去数回の予測が的中したか否かの合否率に
基づいて、前記過去最も新しい条件分岐の実績の保持か
反転で分岐が発生するか否かを予測するものであり、そ
の分岐予測方法を用いて分岐が成立するか否かを予測す
るデータ処理装置を少ないハードウェア規模で実現する
ことを特徴とするものである。
【0009】請求項4に記載のデータ処理装置は、分岐
の成立、不成立を分岐予測の確からしさと共に予測する
データ処理装置であり、その確からしさの度合いに基づ
いて先読みする命令量を変えるものであり、その確から
しさの度合いとして請求項5に記載のデータ処理装置
は、「高い確率で分岐成立」、「低い確率で分岐成
立」、「低い確率で分岐不成立」、「高い確率で分岐不
成立」の4段階で先読みする命令量を変えることを特徴
とするものである。また、請求項6、7に記載のデータ
処理装置は、それぞれ請求項2、3に記載の分岐予測方
法に基づき、分岐予測の確からしさが「分岐実績の反転
で予測する場合」よりも「分岐実績の保持で予測する場
合」の方がより優っているとして、先読みする命令量を
変えることを特徴とするものである。
【0010】請求項8に記載のデータ処理装置は、分岐
の成立、不成立を分岐予測の確からしさと共に予測する
データ処理装置であり、その確からしさの度合いに基づ
いて、プログラムで出現する分岐命令の中から分岐予測
する分岐命令群を構成することを特徴とするものであ
る。
【0011】
【発明の実施の形態】(実施の形態1)以下本発明の第
1実施形態について、図1、図2、図3、図4、図5、
図6、図7、図8、図9、図10、図11、図12を参
照して説明する。ここで、図1は、本実施形態のデータ
処理装置を示すブロック図である。図2は、本実施形態
の分岐予測手段を示すブロック図である。図3は、本実
施形態の分岐予測情報の読み出し動作を示すブロック図
である。図4は、本実施形態の分岐予測情報の更新動作
(エントリあり)を示すブロック図である。図5は、本
実施形態の分岐予測情報の更新動作(エントリあり)を
示すブロック図である。図6は、本実施形態の分岐予測
情報の更新動作(エントリなし)を示すブロック図であ
る。図7は、本実施形態の分岐予測情報の更新動作(エ
ントリなし)を示すブロック図である。図8は、本実施
形態のプログラムアドレス1の分岐予測過程を示す図で
ある。図9は、本実施形態のプログラムアドレス2の分
岐予測過程を示す図である。図10は、本実施形態の分
岐予測アルゴリズムを示す図である。図11は、本実施
形態の分岐予測合否情報生成手段の入出力データを示す
図である。図12は、本実施形態の分岐予測情報生成手
段の入出力データを示す図である。
【0012】(1)図10に示す実施形態1の分岐予測
アルゴリズムを説明する。そのアルゴリズムとは、分岐
が前記記録及び過去数回の分岐予測が的中したか否かの
合否履歴パターンに基づいて、前記過去最も新しい条件
分岐の実績の保持か反転で分岐が発生するか否かを予測
するものである。ここで、分岐予測合否情報は過去4回
の分岐予測の合否のパターンを記録したものとする。分
岐予測合否情報は、4ビットで表されるがMSBを3回前
の合否とし、順に2回前の合否、1回前の合否、そして
LSBが直前の合否結果である。まず予測方法であるが、
分岐予測合否情報のパターンが1110、1101、1
011、0111のときは直前である現時刻tの分岐実
績の反転で予測する。たとえば、直前の分岐実績が1
(分岐)であれば非分岐と予測して分岐予測情報を0
に、直前の分岐実績が0(非分岐)であれば分岐と予測
して分岐予測情報を1とする。このとき、合否は時刻t
-1の分岐予測情報と時刻tの分岐実績のEXCLUSIVE-NOR
であり、時刻tに判明する。ここで、ある時刻tとは分
岐命令のプログラムアドレスが出現して、実際に分岐命
令が実行され、次回時刻t+1の分岐予測を行なった時間
である。分岐予測合否情報のパターンが1111のとき
は、直前の分岐実績の保持で予測する。たとえば、直前
の分岐実績が分岐であれば、次も分岐と予測する。分岐
予測合否情報のパターンがそれ以外のときは、過去4回
の合否情報を1111にセットして分岐実績の保持で予
測する。
【0013】なお、本実施形態では、過去4回の分岐予
測の合否のパターンが1110、1101、1011、
0111、1111以外の場合に、本実施形態では11
11にセットして初期化するとしたが、初期化しない場
合には、1110、1101、1011、1111以外
の合否のパターンに対してそれぞれ、「分岐実績の保
持」で予測するか「分岐実績の反転」で予測するかを定
めれば良いのであって、容易に実施可能である。
【0014】また、本実施形態では、分岐予測合否情報
のあるパターンが「分岐実績の保持」で予測するパター
ンであるか「分岐実績の反転」で予測するパターンであ
るかを図10のように定めているが、図10に記載した
予測方法以外に定めても良い。
【0015】以上のアルゴリズムに従い、プログラムア
ドレス1とプログラムアドレス2の分岐命令について分
岐予測した例が図8、図9に示されている。ここで、図
8、図9の分岐予測情報は、ある時刻tに分岐命令のプ
ログラムアドレスが出現して分岐実績が判明してから、
その分岐予測情報の更新が完了したときの値が示してあ
る。また、分岐実績は、ある時刻tに分岐命令のプログ
ラムアドレスが出現して、実際に分岐したかどうかの記
録である。分岐予測合否情報は、ある時刻tに分岐命令
のプログラムアドレスが出現して、時刻t-1に予測して
おいた分岐予測情報と分岐実績からその合否が判明して
更新された分岐予測合否情報の値が示してある。ここ
で、合否は時刻t-1の分岐予測情報と時刻tの分岐実績
から、時刻tに判明するものである。
【0016】プログラムアドレス1の分岐命令の予測過
程を説明する。プログラムアドレス1がはじめて検出さ
れたとき(t=1)には、分岐予測合否情報は1111
で、分岐実績は1で分岐予測情報は分岐実績の保持であ
る分岐になり、プログラムアドレス1が2回目に検出さ
れたとき(t=2)は分岐すると予測される。t=2の
分岐実績が実際は非分岐であったので、t=2の分岐実
績に0が格納される。また、t=2の分岐予測合否情報
は分岐予測情報と分岐実績に基づき1111から111
0に更新される。この分岐予測合否情報により3回目の
分岐予測情報は、2回目の分岐実績の反転である分岐に
なる。従って、プログラムアドレス1が3回目に検出さ
れたとき(t=3)は分岐すると予測される。その分岐
実績が分岐であったので、t=3の分岐実績に1が格納
される。また、t=3の分岐予測合否情報は分岐予測情
報と分岐実績に基づき1101に更新される。この分岐
予測合否情報により4回目の分岐予測情報は、3回目の
分岐実績の反転である非分岐になる。従って、プログラ
ムアドレス1が4回目に検出されたとき(t=4)は非
分岐と予測される。その分岐実績が非分岐であったの
で、t=4の分岐実績に0が格納される。また、t=4
の分岐予測合否情報は分岐予測情報と分岐実績に基づき
1011に更新される。この分岐予測合否情報により5
回目の分岐予測情報は、4回目の分岐実績の反転である
分岐になる。従って、プログラムアドレス1が5回目に
検出されたとき(t=5)は分岐と予測される。以降、
同様に分岐実績と分岐予測合否情報と分岐予測情報が更
新される。
【0017】プログラムアドレス2の分岐命令の予測過
程を説明する。このプログラムアドレス2はループ処理
の例である。プログラムアドレス2がはじめて検出され
たとき(t=1)には、分岐予測合否情報は1111
で、分岐実績は1で分岐予測情報は分岐実績の保持であ
る分岐になり、プログラムアドレス2が2回目に検出さ
れたとき(t=2)は分岐すると予測される。t=2の
分岐実績が実際は分岐であったので、t=2の分岐実績
に1が格納される。また、t=2の分岐予測合否情報は
分岐予測情報と分岐実績に基づき1111になる。この
分岐予測合否情報により3回目の分岐予測情報は、2回
目の分岐実績の保持である分岐になる。従って、プログ
ラムアドレス2が3回目に検出されたとき(t=3)は
分岐すると予測される。その分岐実績が分岐であったの
で、t=3の分岐実績に1が格納される。また、t=3
の分岐予測合否情報は分岐予測情報と分岐実績に基づき
1111になる。この分岐予測合否情報により4回目の
分岐予測情報は、3回目の分岐実績の保持である分岐に
なる。従って、プログラムアドレス2が4回目に検出さ
れたとき(t=4)は分岐と予測される。以降、分岐予
測を繰り返して、プログラムアドレス2が7回目に検出
されたとき(t=7)は分岐すると予測する。その分岐
実績が非分岐であったので、t=7の分岐実績に0が格
納される。また、t=7の分岐予測合否情報は分岐予測
情報と分岐実績に基づき1110になる。この分岐予測
合否情報により8回目の分岐予測情報は、7回目の分岐
実績の反転である分岐になる。従って、プログラムアド
レス2が8回目に検出されたとき(t=8)は分岐と予
測される。その分岐実績が分岐であったので、t=8の
分岐実績に1が格納される。また、t=8の分岐予測合
否情報は分岐予測情報と分岐実績に基づき1101にな
る。この分岐予測合否情報により9回目の分岐予測情報
は、8回目の分岐実績の反転である非分岐になる。従っ
て、プログラムアドレス2が9回目に検出されたとき
(t=9)は非分岐と予測される。その分岐実績が分岐
であったので、t=9の分岐実績に1が格納される。ま
た、t=9の分岐予測合否情報は分岐予測情報と分岐実
績に基づき1010となり、1111にセットされる。
この分岐予測合否情報により10回目の分岐予測情報
は、9回目の分岐実績の保持である分岐になる。以降、
同様に分岐実績と分岐予測合否情報と分岐予測情報が更
新される。
【0018】以上のように、本実施形態1は、分岐が前
記記録及び過去数回の分岐予測が的中したか否かの合否
履歴であるパターンに基づいて、前記過去最も新しい条
件分岐の実績の保持か反転で分岐が発生するか否かを予
測する分岐予測方法である。
【0019】(2)図1は第1実施形態におけるデータ
処理装置のブロック図である。命令先行解読手段6が出
力する分岐命令検出信号は、分岐予測手段3に接続され
ている。分岐予測手段3が出力するカウンタ制御信号は
カウンタ制御手段14に、バッファ制御信号はバッファ
制御手段8へと接続されている。分岐予測手段3が出力
する分岐先アドレスは、プログラムカウンタ13に接続
されている。命令バッファ手段2から出力される命令
は、命令解読手段1によって解読され命令実行手段12
により実行される。バッファ制御手段8が出力する命令
バッファ制御信号は、命令バッファ手段2に接続されて
いる。汎用レジスタ手段11のレジスタを命令実行手段
12はリードライトアクセスする。プログラムカウンタ
13は実行命令カウンタとフェッチ命令カウンタと分岐
先命令アドレスカウンタを備え、カウンタ制御手段14
の出力するカウンタ制御手段出力信号により制御され
る。プログラムカウンタ13の出力する命令プリフェッ
チアドレスは、命令記憶手段9とプログラムアドレス生
成手段10に接続されている。プログラムアドレス生成
手段10が出力するプログラムアドレスは、分岐予測手
段3に接続されている。同じくプログラムカウンタ13
の出力する実行命令アドレスは、分岐予測手段3に接続
されている。命令記憶手段9から読み出される命令は、
プリフェッチ命令バスにより命令バッファ手段2および
命令先行解読手段6に転送される。命令解読手段1の出
力する分岐予測更新信号は、分岐予測手段3に接続され
る。命令解読手段1の出力する命令実行制御信号は、命
令実行手段12に接続される。命令解読手段1が出力す
るセレクト信号はセレクタA17に接続される。命令記
憶手段9の出力である命令プリフェッチバスと命令バッ
ファ手段2の出力である命令バッファ出力バスとは、セ
レクタA17で選択された後、命令フェッチバスにより
命令解読手段1に接続される。命令実行手段12が出力
する過去最も新しい分岐実績信号は、分岐予測手段3に
接続されている。命令実行手段12が出力する分岐先ア
ドレスは、分岐予測手段3に接続されている。
【0020】図2に示すように、分岐予測バッファ7は
4つのエントリをもち、各エントリに分岐命令のプログ
ラムアドレス、分岐先アドレス、分岐実績、分岐予測合
否情報、分岐予測情報を格納する。分岐予測情報生成手
段5が出力する分岐予測情報は分岐予測バッファ7に接
続される。分岐予測合否情報生成手段4が出力する分岐
予測合否情報信号は、分岐予測バッファ7に接続されて
いる。分岐実績と分岐予測情報のEXCLUSIVE-NOR出力で
ある合否と分岐予測合否情報は、分岐予測合否情報生成
手段4に接続される。分岐実績と分岐予測合否情報生成
手段4の出力である分岐予測合否情報は、分岐予測情報
生成手段5に接続される。分岐予測制御回路18には、
分岐命令検出信号と分岐予測更新信号と分岐予測情報と
一致信号が入力され、バッファ制御信号とカウンタ制御
信号が出力される。同じく分岐予測制御回路18は、イ
ンクリメント信号をインクリメンタ21に、分岐予測開
始信号を分岐予測合否情報生成手段4と分岐予測情報生
成手段5に出力する。エントリレジスタ20が出力する
2ビットの情報を転送するエントリバスは、分岐予測バ
ッファ7に接続されている。インクリメンタ21が出力
する2ビットの情報であるデータは、エントリレジスタ
20に接続されている。分岐予測バッファ7が出力する
一致信号は、エントリレジスタ20と分岐予測制御回路
18と分岐予測合否情報生成手段4と分岐予測情報生成
手段5に接続されている。分岐命令検出信号は、セレク
タB19と分岐予測制御回路18と分岐予測バッファ7
に接続されている。分岐予測更新信号は、分岐予測制御
回路18とエントリレジスタ20と分岐予測バッファ7
に接続されている。セレクタB19は、プログラムアド
レスと実行命令アドレスを分岐命令検出信号によりセレ
クトして、分岐予測バッファ7に出力する。なお、本実
施形態では、分岐予測バッファ7にエントリできる数を
4としたが、その数はデータ処理装置のハードウェアに
かかるコストと性能のトレードオフに応じて自由に設定
できる。
【0021】本実施形態のデータ処理装置は、命令フェ
ッチ(IF)ステージ、命令解読(DEC)ステージ、命令
実行(EX)ステージからなる3段のパイプラインでデー
タ処理をするものである。まず、そのパイプライン処理
について図1を参照して説明する。プリフェッチされた
命令は命令バッファに格納される。そのプリフェッチさ
れた命令は、プリフェッチ命令バスで先行解読手段にも
転送された後、それが分岐命令ならば分岐命令検出信号
が出力される。命令フェッチ(IF)ステージでは、あら
かじめ命令バッファにプリフェッチされている命令を命
令バスを介して命令解読手段1に転送する。命令解読
(DEC)ステージでは、命令を解読して生成された命令
実行制御信号を命令実行手段12に出力する。また、条
件分岐命令が分岐するかの判定がなされる。命令実行
(EX)ステージでは、命令実行制御信号により命令実行
手段12が命令を実行する。
【0022】本実施形態1のデータ処理装置において、
分岐予測が正しかった場合には、命令バッファにあらか
じめプリフェッチされていた命令が命令解読手段1に転
送されるので、パイプラインハザードは発生しないが、
分岐予測を誤ったときにハザードの要因となってしまう
命令の解読結果である命令実行制御信号は無効にされ
る。それと同時に、本来実行されるべき命令を命令記憶
手段9からプリフェッチ命令バスによりセレクタA17
を介して命令解読手段1に転送しなければならないの
で、分岐インタロックによるペナルティが発生する。
【0023】分岐命令によるハザードを分類すると次の
ようになる。分岐命令が分岐するときに、その予測を誤
ると分岐先の命令を命令記憶手段9からフェッチするた
めにパイプラインハザードが生じる。一方、予測が正し
いと命令バッファにあらかじめプリフェッチされていた
分岐先アドレスの命令が連続して命令解読手段1に転送
されるので、ハザードは生じない。分岐命令が分岐しな
いときに、その予測を誤ると後続する命令のフェッチを
再開するためにパイプラインハザードが生じる。一方、
予測が正しいと、命令バッファにあらかじめプリフェッ
チされていた後続のアドレスの命令が連続して命令解読
手段1に転送され、ハザードは生じない。分岐予測バッ
ファ7に命令先行解読手段6により検出された分岐命令
のプログラムアドレスがエントリされていない場合に
は、予測は行われず非分岐先の命令をプリフェッチする
ので、分岐命令が分岐するときに必ずパイプラインハザ
ードが生じることになる。
【0024】次に本実施形態の作用を説明する。まず、
命令先行解読手段6が分岐命令を検出したときの動作を
説明する。分岐命令検出信号がイネーブルになり分岐予
測手段3に出力される。この分岐命令のプログラムアド
レス2がプログラムアドレス生成手段10を通じて分岐
予測バッファ7に転送される。そして、セレクタB19
が分岐命令検出信号がイネーブルのとき、このプログラ
ムアドレスを分岐予測バッファ7に転送する。図3に示
す連想メモリである分岐予測バッファ7からの読み出し
動作では、タグであるプログラムアドレスが入力され、
並列処理で同一プログラムアドレスが格納されているエ
ントリが探索される。エントリされている場合には、プ
ログラムアドレス2のエントリがヒットして一致信号が
イネーブルになると同時に、分岐先アドレス、分岐予測
情報が読み出される。分岐予測情報に格納された情報が
1であれば分岐、0であれば非分岐と予測する。分岐予
測情報は分岐予測制御回路18に出力されて、分岐する
と予測している場合には、分岐先命令アドレスカウンタ
に分岐予測手段3が出力した分岐先アドレスがセットさ
れた後に、分岐予測制御回路18からのカウンタ制御信
号がカウンタ制御手段14に出力される。そして、分岐
先アドレスが命令プリフェッチアドレスとして命令記憶
手段9に出力され、分岐先アドレスから始まる命令スト
リームが命令記憶手段9から命令バッファ手段2に転送
される。一方、分岐しないと予測している場合には、分
岐予測手段3からのカウンタ制御信号がカウンタ制御手
段14に出力され、非分岐側の命令アドレスが命令プリ
フェッチアドレスとして命令記憶手段9に出力され、非
分岐先アドレスの連続する命令ストリームが命令記憶手
段9から命令バッファ手段2に転送される。もし、分岐
予測バッファ7に分岐命令のプログラムアドレスがエン
トリされていない場合には、一致信号がディスエーブル
になり、分岐予測は行われない。
【0025】次に、分岐予測情報の更新動作を順を追っ
て図4、図5で説明する。
【0026】図4に示すように、分岐命令が命令実行手
段12により実行されると命令解読手段1より分岐予測
更新信号がイネーブルになり命令予測手段3に出力され
る。すると分岐命令検出信号がディスエーブルのとき、
セレクタB19は実行した分岐命令の実行命令アドレス
を選択して、分岐予測バッファ7に出力する。この実行
命令アドレスをタグとして探索しヒットすると分岐予測
バッファ7は一致信号を出力する。このとき、分岐予測
バッファ7には、すでに3つのプログラムアドレスがエ
ントリされており、その中でエントリ1がヒットしたと
すると、命令実行手段12より出力される分岐先アドレ
スと命令実行手段12より出力される分岐実績が分岐予
測バッファ7の対応するエントリ1に格納される。
【0027】図4に示す処理が完了した後、図5に示す
ように分岐予測制御回路18より分岐予測開始信号が分
岐予測合否情報生成手段4と分岐予測情報生成手段5に
出力される。分岐予測合否情報生成手段4は分岐予測バ
ッファ7のエントリに格納された分岐予測合否情報と今
回の合否を入力データとし、新たな分岐予測合否情報を
出力する。ここで合否とは、分岐実績と分岐予測情報の
EXCLUSIVE-NORで表される情報であり、予測が正しかっ
たときに1を予測が誤りのときに0になる。この分岐予
測合否情報生成手段4の入出力データを図11に示す。
本実施形態では、分岐予測合否情報は4ビットからなる
情報であり、初期値は1111である。その更新の方法
は更新前の情報を1ビット左にシフトした後、最下位ビ
ットに合否情報を代入するものである。たとえば、更新
前の情報が1111であり、今回の分岐予測がはずれた
場合には1110に更新される。ただし、更新された情
報が1110、1101、1011、0111、111
1以外の場合には、1111にセットされる。その後、
分岐予測情報生成手段5は今回の合否により更新された
分岐予測合否情報と分岐実績を入力データとし、新たな
分岐予測情報を出力する。この分岐予測情報生成手段5
の入出力データを図12に示す。分岐予測合否情報生成
手段4と分岐予測情報生成手段5により更新された分岐
予測合否情報と分岐予測情報は対応するエントリ1に格
納されて、分岐予測情報の更新動作が完了する。一致信
号がイネーブルの場合、更新動作完了の後に、インクリ
メント信号は出力されない。
【0028】次に、分岐予測バッファ7に対応するプロ
グラムアドレスがエントリされていない場合を図6、図
7により示す。まず図6であるが、このとき、分岐予測
更新信号はイネーブルになり、分岐予測バッファ7の一
致信号はディスエーブルになる。すると、エントリレジ
スタ20がエントリバスを介してエントリ番号を分岐予
測バッファ7に出力する。ここでは、すでにエントリさ
れている分岐命令が3つあり、エントリ3に新しい分岐
命令を格納する場合を図示してあり、したがってエント
リレジスタ20は11を出力する。なお、このエントリ
レジスタ20は、データ処理装置のリセット時に00に
されるものとし、新しく分岐命令が出現した時にエント
リする番号を2ビットで保持するレジスタであり、一致
信号がイネーブルのときは使用されない。分岐予測バッ
ファ7への書き込み動作は、分岐予測更新信号がイネー
ブルかつ一致信号がディスエーブルのときエントリ番号
が示すエントリとなる。実行命令アドレスがセレクタB
19で選択されて分岐予測バッファ7に出力されると、
対応するエントリ3のプログラムアドレスに格納され
る。また、命令実行手段12は分岐実績を、命令実行手
段12は分岐先アドレスをそれぞれ対応するエントリ3
に格納する。もし、エントリレジスタ20が00ならエ
ントリ0、01ならエントリ1、10ならエントリ2、
11ならエントリ3に対応する。
【0029】図6に示す処理が完了した後、図7に示す
ように分岐予測制御回路18より分岐予測開始信号が分
岐予測合否情報生成手段4と分岐予測情報生成手段5に
出力される。分岐予測合否情報生成手段4は、入力され
た一致信号がディスエーブルならば初期設定値である1
111を生成する。その後、分岐予測情報生成手段5は
今回の合否により更新された分岐予測合否情報と分岐実
績を入力データとし、分岐予測情報を出力する。分岐予
測合否情報生成手段4と分岐予測情報生成手段5により
更新された分岐予測合否情報と分岐予測情報は対応する
エントリに格納されて、分岐予測情報の更新動作が完了
すると、分岐予測制御回路18からインクリメント信号
が出力される。インクリメントされた2ビットのデータ
がインクリメンタ21から出力されエントリレジスタ2
0に格納される。このインクリメンタ21の値は、デー
タ処理装置のリセット時に00にされる。また、11か
らのインクリメントは00になるものとし、したがっ
て、エントリレジスタ20のとる値は4通りである。本
実施形態の場合は、11からインクリメントされて00
がエントリレジスタ20に格納され、次回の一致信号が
ディスエーブルのときはエントリ0に更新動作がなされ
る。上記のように、分岐予測バッファ7に対応するプロ
グラムアドレスがエントリされていない場合にも更新動
作が行われる。
【0030】(3)以上のように、本実施形態1は、分
岐が前記記録及び過去数回の分岐予測が的中したか否か
の合否履歴パターンに基づいて、前記過去最も新しい条
件分岐の実績の保持か反転で分岐が発生するか否かを予
測する分岐予測方法とその分岐予測方法に基づくデータ
処理装置であり、その分岐予測結果が示すとおり、成立
と不成立を交互に繰り返すパターンやループ処理におい
て精度良く分岐予測が可能である。また、過去数回の分
岐履歴を基に分岐を予測する従来の方法が、分岐命令の
過去数回の履歴のパターンそれぞれに対応して分岐が生
じる確率を表した2ビットの情報から成る分岐予測情報
を記憶したエントリが必要であり、連想記憶するデータ
量と対応するパターンの検索と、分岐が生じる確率を更
新するためにかかるハードウェアにより、データ処理装
置が大規模化するという問題があったのに対して、ある
分岐命令のプログラムアドレスにつき直前の分岐実績と
分岐予測の合否記録と分岐予測結果のみを分岐予測バッ
ファのエントリとすることでデータ処理装置を低コスト
で構成することができる。
【0031】(実施の形態2)本発明の第2実施形態に
ついて、図1、図2、図3、図4、図5、図6、図7、
図13、図14、図15、図16、図17を参照して説
明する。ここで、図1は、本実施形態のデータ処理装置
を示すブロック図である。図2は、本実施形態の分岐予
測手段を示すブロック図である。図3は、本実施形態の
分岐予測情報の読み出し動作を示すブロック図である。
図4は、本実施形態の分岐予測情報の更新動作(エント
リあり)を示すブロック図である。図5は、本実施形態
の分岐予測情報の更新動作(エントリあり)を示すブロ
ック図である。図6は、本実施形態の分岐予測情報の更
新動作(エントリなし)を示すブロック図である。図7
は、本実施形態の分岐予測情報の更新動作(エントリな
し)を示すブロック図である。図13は、本実施形態の
プログラムアドレス1の分岐予測過程を示す図である。
図14は、本実施形態のプログラムアドレス2の分岐予
測過程を示す図である。図15は、本実施形態の分岐予
測アルゴリズムを示す図である。図16は、本実施形態
の分岐予測合否情報生成手段の入出力データを示す図で
ある。図17は、本実施形態の分岐予測情報生成手段の
入出力データを示す図である。
【0032】(1)図15に示す実施形態2の分岐予測
アルゴリズムを説明する。分岐予測合否情報は、分岐予
測の合否率を示す2ビットの情報とする。時刻t-1から
時刻tへの分岐予測合否情報は次のように更新される。
分岐予測が正しいときに1インクリメント、誤りのとき
に1デクリメントされる。インクリメントは11で飽和
し、デクリメントは00で飽和する。つまり、連続して
正解すると11で飽和し、不正解が続くと00で飽和す
ることになる。ここで、ある時刻tとは分岐命令のプロ
グラムアドレスが出現して、実際に分岐命令が実行さ
れ、次回時刻t+1の分岐予測を行なった時間である。分
岐予測の方法は、分岐予測合否情報のパターンが10の
ときは、直前である現時刻tの分岐実績の反転で予測す
る。たとえば、直前の分岐実績が1(分岐)であれば非
分岐と予測して分岐予測情報を0に、直前の分岐実績が
0(非分岐)であれば分岐と予測して分岐予測情報を1
とする。このとき、合否は時刻t-1の分岐予測情報と時
刻tの分岐実績のEXCLUSIVE-NORであり、時刻tに判明
する。分岐予測合否情報のパターンが10以外のとき
は、直前の分岐実績の保持で予測する。たとえば、直前
の分岐実績が分岐であれば、次も分岐と予測する。
【0033】なお、本実施形態では、分岐予測合否情報
が示す合否率に対応して「分岐実績の保持」で予測する
か「分岐実績の反転」で予測するかを図15のように定
めているが、本実施形態に記載した分岐予測の組合わせ
以外も容易に実施できる。
【0034】以上のアルゴリズムに従い、プログラムア
ドレス1とプログラムアドレス2の分岐予測過程がそれ
ぞれ図13、図14に示されている。ここで、図13、
図14の分岐予測情報は、ある時刻tに分岐命令のプロ
グラムアドレスが出現し、分岐実績が判明してから分岐
予測情報の更新が完了したときの値が示してある。ま
た、分岐実績は、ある時刻tに分岐命令のプログラムア
ドレスが出現して、実際に分岐したかどうかの記録であ
る。分岐予測合否情報は、ある時刻tに分岐命令のプロ
グラムアドレスが出現して、時刻t-1に予測した分岐予
測情報と分岐実績からその合否が判明して更新された分
岐予測合否情報の値である。ここで、合否は時刻t-1の
分岐予測情報と時刻tの分岐実績から、時刻tに判明す
るものである。
【0035】プログラムアドレス1の分岐命令の予測過
程を説明する。プログラムアドレス1がはじめて検出さ
れたとき(t=1)には、分岐予測合否情報は11にセ
ットされ、分岐予測合否情報は分岐実績が非分岐であっ
たので分岐実績の保持である非分岐となる。次に、プロ
グラムアドレス1が2回目に検出されたとき(t=2)
は非分岐と予測される。その分岐実績が実際は非分岐で
あったので、t=2の分岐実績に0が格納される。ま
た、t=2の分岐予測合否情報は分岐予測情報と分岐実
績に基づき11に更新される。この分岐予測合否情報に
より3回目の分岐予測情報は、2回目の分岐実績の保持
である非分岐になる。従って、プログラムアドレス1が
3回目に検出されたとき(t=3)は非分岐と予測され
る。その分岐実績が分岐であったので、t=3の分岐実
績に0が格納される。また、t=3の分岐予測合否情報
は分岐予測情報と分岐実績に基づき11に更新される。
この分岐予測合否情報により4回目の分岐予測情報は、
3回目の分岐実績の保持である非分岐になる。従って、
プログラムアドレス1が4回目に検出されたとき(t=
4)は非分岐と予測される。以下同様にして、プログラ
ムアドレス1が6回目に検出されたとき(t=6)は非
分岐と予測される。その分岐実績が分岐であったので、
t=6の分岐実績に1が格納される。また、t=6の分
岐予測合否情報は分岐予測情報と分岐実績に基づき10
に更新される。この分岐予測合否情報により7回目の分
岐予測情報は、6回目の分岐実績の反転である非分岐に
なる。従って、プログラムアドレス1が7回目に検出さ
れたとき(t=7)は非分岐と予測される。その分岐実
績が分岐であったので、t=7の分岐実績に1が格納さ
れる。また、t=7の分岐予測合否情報は分岐予測情報
と分岐実績に基づき01に更新される。この分岐予測合
否情報により8回目の分岐予測情報は、7回目の分岐実
績の保持である分岐になる。従って、プログラムアドレ
ス1が8回目に検出されたとき(t=8)は分岐と予測
される。以降、同様に分岐実績と分岐予測合否情報と分
岐予測情報が更新される。
【0036】プログラムアドレス2の分岐命令の予測過
程を説明する。プログラムアドレス2がはじめて検出さ
れたとき(t=1)には、分岐予測合否情報は11にセ
ットされ、分岐予測合否情報は分岐実績が分岐であった
ので分岐実績の保持である分岐となる。次に、プログラ
ムアドレス2が2回目に検出されたとき(t=2)は分
岐と予測される。その分岐実績が実際は分岐であったの
で、t=2の分岐実績に1が格納される。また、t=2
の分岐予測合否情報は分岐予測情報と分岐実績に基づき
11のままである。この分岐予測合否情報により3回目
の分岐予測情報は、2回目の分岐実績の保持である分岐
になる。従って、プログラムアドレス2が3回目に検出
されたとき(t=3)は分岐と予測される。その分岐実
績が分岐であったので、t=3の分岐実績に1が格納さ
れる。また、t=3の分岐予測合否情報は分岐予測情報
と分岐実績に基づき11のままである。この分岐予測合
否情報により4回目の分岐予測情報は、3回目の分岐実
績の保持である分岐になる。従って、プログラムアドレ
ス2が4回目に検出されたとき(t=4)は分岐と予測
される。以下同様にして、プログラムアドレス2が7回
目に検出されたとき(t=7)は分岐と予測される。そ
の分岐実績が非分岐であったので、t=7の分岐実績に
0が格納される。また、t=7の分岐予測合否情報は分
岐予測情報と分岐実績に基づき10に更新される。この
分岐予測合否情報により8回目の分岐予測情報は、7回
目の分岐実績の反転である分岐になる。従って、プログ
ラムアドレス2が8回目に検出されたとき(t=8)は
分岐と予測される。以降、同様に分岐実績と分岐予測合
否情報と分岐予測情報が更新される。
【0037】以上のように、本実施形態2は、分岐が前
記記録及び過去数回の分岐予測が的中したか否かの合否
率に基づいて、前記過去最も新しい条件分岐の実績の保
持か反転で分岐が発生するか否かを予測するものであ
る。
【0038】(2)図1は本実施形態におけるデータ処
理装置のブロック図である。図2は、分岐予測手段を示
すブロック図である。ここで、分岐予測情報生成手段5
は図17に示す分岐予測情報を生成する。分岐予測合否
情報生成手段4は図16に示す分岐予測合否情報を生成
する。図2に示すように、分岐予測バッファ7は4つの
エントリをもち、一つのエントリに分岐命令のプログラ
ムアドレス、分岐先アドレス、分岐実績、2ビットで表
される分岐予測合否情報、分岐予測情報を格納する。
【0039】本実施形態の作用を説明する。
【0040】まず、命令先行解読手段6が分岐命令を検
出したときの動作を説明する。分岐命令検出信号がイネ
ーブルになり分岐予測手段3に出力される。この分岐命
令のプログラムアドレスがプログラムアドレス生成手段
10を通じて分岐予測手段3に転送される。図3に示す
連想メモリである分岐予測バッファ7からの読み出し動
作では、タグであるプログラムアドレスが入力され、並
列処理で同一プログラムアドレスが格納されているエン
トリが探索される。エントリされている場合には、プロ
グラムアドレス2のエントリがヒットして一致信号がイ
ネーブルになると同時に、分岐先アドレス、分岐予測情
報が読み出される。分岐予測情報に格納された情報が1
であれば分岐、0であれば非分岐と予測する。分岐予測
情報は分岐予測制御回路18に出力されて、分岐すると
予測している場合には、分岐先命令アドレスカウンタに
分岐予測手段3が出力した分岐先アドレスがセットされ
た後に、分岐予測制御回路18からのカウンタ制御信号
がカウンタ制御手段14に出力される。そして、分岐先
アドレスが命令プリフェッチアドレスとして命令記憶手
段9に出力され、分岐先アドレスから始まる命令ストリ
ームが命令記憶手段9から命令バッファ手段2に転送さ
れる。一方、分岐しないと予測している場合には、分岐
予測手段3からのカウンタ制御信号がカウンタ制御手段
14に出力され、非分岐側の命令アドレスが命令プリフ
ェッチアドレスとして命令記憶手段9に出力され、非分
岐先アドレスの連続する命令ストリームが命令記憶手段
9から命令バッファ手段2に転送される。もし、分岐予
測バッファ7に分岐命令のプログラムアドレスがエント
リされていない場合には、一致信号がディスエーブルに
なり、分岐予測は行われない。
【0041】次に、分岐予測情報の更新動作を順を追っ
て図4、図5で説明する。また、本実施形態の分岐予測
合否情報生成手段4を図16に、分岐予測情報生成手段
5を図17にそれぞれ示す。
【0042】図4に示すように、分岐命令が命令実行手
段12により実行されると命令解読手段1より分岐予測
更新信号がイネーブルになり命令予測手段3に出力され
る。すると分岐命令検出信号がディスエーブルのとき、
セレクタB19は実行した分岐命令の実行命令アドレス
を選択して、分岐予測バッファ7に出力する。この実行
命令アドレスをタグとして探索しヒットすると分岐予測
バッファ7は一致信号を出力する。このとき、エントリ
1がヒットしたとする。命令実行手段12より出力され
る分岐先アドレスと命令実行手段12より出力される分
岐実績が分岐予測バッファ7の対応するエントリ1に格
納される。
【0043】図4に示す処理が完了した後、図5に示す
ように分岐予測制御回路18より分岐予測開始信号が分
岐予測合否情報生成手段4と分岐予測情報生成手段5に
出力される。分岐予測合否情報生成手段4は分岐予測バ
ッファのエントリに格納された分岐予測合否情報と今回
の合否から図16に示すように分岐予測合否情報を更新
する。ここで合否とは、分岐実績と分岐予測情報のEXCL
USIVE-NORで表される情報であり、予測が正しかったと
きに1を予測が誤りのときに0になる。本実施形態で
は、分岐予測合否情報は2ビットからなる情報であり、
初期値は11である。分岐予測合否情報生成手段4は、
読み出した分岐予測合否情報に合否を加える。ここで、
合否が1ならば分岐予測合否情報はインクリメントされ
11で飽和し、合否が0ならばデクリメントされ00で
飽和する。その後、分岐予測情報生成手段5は今回の合
否により更新された分岐予測合否情報と分岐実績から、
図17に示すように新たな分岐予測情報を生成し、対応
するエントリに格納して分岐予測情報の更新動作が完了
する。
【0044】次に、分岐予測バッファ7に対応するプロ
グラムアドレスがエントリされていない場合を図6、図
7により示す。まず図6であるが、このとき、分岐予測
更新信号はイネーブルになり、分岐予測バッファ7の一
致信号はディスエーブルになる。すると、エントリレジ
スタ20がエントリ番号を分岐予測バッファ7に出力す
る。なお、このエントリレジスタ20は、データ処理装
置のリセット時に00にされるものとする。分岐予測バ
ッファ7への書き込み動作は、分岐予測更新信号がイネ
ーブルかつ一致信号がディスエーブルのときエントリ番
号が示すエントリとなる。実行命令アドレスがセレクタ
B19で選択されて分岐予測バッファ7に出力される
と、対応するエントリのプログラムアドレスに格納され
る。また、命令実行手段12は分岐実績を、命令実行手
段12は分岐先アドレスをそれぞれ対応するエントリに
格納する。ここで、エントリレジスタ20が00ならエ
ントリ0、01ならエントリ1、10ならエントリ2、
11ならエントリ3に対応する。
【0045】図6に示す処理が完了した後、図7に示す
ように分岐予測制御回路18より分岐予測開始信号が分
岐予測合否情報生成手段4と分岐予測情報生成手段5に
出力される。分岐予測合否情報生成手段4は、入力され
た一致信号がディスエーブルならば初期設定値である1
1を生成する。その後、分岐予測情報生成手段5は今回
の合否により更新された分岐予測合否情報と分岐実績を
入力データとし、分岐予測情報を出力する。分岐予測合
否情報生成手段4と分岐予測情報生成手段5により更新
された分岐予測合否情報と分岐予測情報は対応するエン
トリに格納されて、分岐予測情報の更新動作が完了する
と、分岐予測制御回路18からインクリメント信号が出
力される。インクリメントされた2ビットのデータがイ
ンクリメンタ21から出力されエントリレジスタ20に
格納される。このインクリメンタ21の値は、データ処
理装置のリセット時に00にされる。また、11からの
インクリメントは00になるものとし、したがって、エ
ントリレジスタ20のとる値は4通りである。上記のよ
うに、分岐予測バッファ7に対応するプログラムアドレ
スがエントリされていない場合にも更新動作が行われ
る。
【0046】(3)以上のように、本実施形態2は、分
岐が前記記録及び過去数回の分岐予測が的中したか否か
の合否率に基づいて、前記過去最も新しい条件分岐の実
績の保持か反転で分岐が発生するか否かを予測する分岐
予測方法とその分岐予測方法に基づくデータ処理装置で
あり、その分岐予測結果が示すとおり、精度良く分岐予
測が可能である。また、過去数回の分岐履歴を基に分岐
を予測する従来の方法が、分岐命令の過去数回の履歴の
パターンそれぞれに対応して分岐が生じる確率を表した
2ビットの情報から成る分岐予測情報を記憶したエント
リが必要であり、連想記憶するデータ量と対応するパタ
ーンの検索と、分岐が生じる確率を更新するためにかか
るハードウェアにより、データ処理装置が大規模化する
という問題があったのに対して、ある分岐命令のプログ
ラムアドレスにつき直前の分岐実績と分岐予測の合否記
録と分岐予測結果のみを分岐予測バッファのエントリと
することでデータ処理装置を低コストで構成することが
できる。
【0047】(実施の形態3)以下本発明の第3実施形
態について、図4、図5、図6、図7、図18、図1
9、図20、図21、図22、図23、図24、図2
5、図26を参照して説明する。ここで、図4は、本実
施形態の分岐予測情報の更新動作(エントリあり)を示
すブロック図である。図5は、本実施形態の分岐予測情
報の更新動作(エントリあり)を示すブロック図であ
る。図6は、本実施形態の分岐予測情報の更新動作(エ
ントリなし)を示すブロック図である。図7は、本実施
形態の分岐予測情報の更新動作(エントリなし)を示す
ブロック図である。図18は、本実施形態のプログラム
アドレス1の分岐予測過程を示す図である。図19は、
本実施形態のプログラムアドレス2の分岐予測過程を示
す図である。図20は、本実施形態の分岐予測アルゴリ
ズムを示す図である。図21は、本実施形態の分岐予測
合否情報生成手段の入出力データを示す図である。図2
2は、本実施形態の分岐予測情報生成手段の入出力デー
タを示す図である。図23は、本実施形態のデータ処理
装置を示すブロック図である。図24は、本実施形態の
分岐予測手段を示すブロック図である。図25は、本実
施形態の命令フェッチ量制御方法を示す図である。図2
6は、本実施形態の分岐予測情報の読み出し動作を示す
ブロック図である。
【0048】本実施形態3は、命令を解読する命令解読
手段1と、先読みした命令が分岐命令であるか否かのみ
を先行的に解読する命令先行解読手段6と、命令を先読
みし格納できる命令バッファ手段2と、分岐先アドレス
の命令を先読みし格納する分岐先バッファ手段15と、
分岐命令のプログラムアドレスに対応づけて分岐先アド
レスと直前の分岐実績と過去の分岐予測合否情報と分岐
予測情報を記憶する分岐予測バッファ7と、前記予測結
果の合否である分岐予測合否情報を生成する分岐予測合
否情報生成手段4と、分岐予測した結果である分岐予測
情報を生成する分岐予測情報生成手段5と、前記分岐予
測情報に基づき前記命令バッファと前記分岐先バッファ
に先読みする命令量を制御するバッファ制御手段8と、
分岐が成立した場合には、分岐先バッファから分岐先命
令を前記命令解読手段1に転送し、不成立の場合には、
命令バッファから次命令を転送する命令選択手段16を
備えたことを特徴とするデータ処理装置の形態である。
【0049】(1)図20に示す実施形態3のアルゴリ
ズムを説明する。分岐予測合否情報は、分岐予測の合否
率を誤りの割合で表現した2ビットの情報とし、初期値
11であり分岐予測が誤りのときに1デクリメントされ
る。時刻t-1の分岐予測合否情報が00の場合は、時刻
tの分岐予測合否情報は11にセットされる。以上は、
時刻t-1から時刻tへの分岐予測合否情報の更新方法に
示されている。ここで、ある時刻tとは分岐命令のプロ
グラムアドレスが出現して実際に分岐命令が実行され次
回時刻t+1の分岐予測を行なった時間である。合否は時
刻t-1の分岐予測情報と時刻tの分岐実績のEXCLUSIVE-
NORであり時刻tに判明する。分岐予測合否情報と分岐
実績からの予測は次のようにする。分岐予測合否情報の
パターンが10のときは、直前である現時刻tの分岐実
績の反転で予測する。たとえば、直前の分岐実績が1
(分岐)であれば非分岐と予測して分岐予測情報を0
に、直前の分岐実績が0(非分岐)であれば分岐と予測
して分岐予測情報を1とする。分岐合否情報のパターン
が10以外のときは、直前の分岐実績の保持で予測す
る。たとえば、直前の分岐実績が分岐であれば、次も分
岐と予測する。時刻t-1の分岐予測合否情報が00の場
合は、時刻tの分岐予測合否情報は11にセットされ
る。
【0050】なお、本実施形態では、分岐予測の合否率
を誤りの割合で表現した分岐予測合否情報に対応して
「分岐実績の保持」で予測するか「分岐実績の反転」で
予測するかを図20のように定めているが、本実施形態
に記載した分岐予測の組合わせ以外も容易に実施でき
る。
【0051】以上のアルゴリズムに従い、プログラムア
ドレス1とプログラムアドレス2の分岐予測過程がそれ
ぞれ図18、図19に示されている。ここで、図18、
図19の分岐予測情報は、ある時刻tに分岐命令のプロ
グラムアドレスが出現し、分岐実績が判明してから分岐
予測情報の更新が完了したときの値が示してある。ま
た、分岐実績は、ある時刻tに分岐命令のプログラムア
ドレスが出現して、実際に分岐したかどうかの記録であ
る。分岐予測合否情報は、ある時刻tに分岐命令のプロ
グラムアドレスが出現して、時刻t-1に予測した分岐予
測情報と分岐実績からその合否が判明して更新された分
岐予測合否情報の値である。ここで、合否は時刻t-1の
分岐予測情報と時刻tの分岐実績から、時刻tに判明す
るものである。
【0052】プログラムアドレス1の分岐命令の予測過
程を説明する。プログラムアドレス1がはじめて検出さ
れたとき(t=1)には、分岐予測合否情報は11にセ
ットされ、分岐予測合否情報は分岐実績が分岐であった
ので分岐実績の保持である分岐となる。次に、プログラ
ムアドレス1が2回目に検出されたとき(t=2)は分
岐と予測される。その分岐実績が実際は非分岐であった
ので、t=2の分岐実績に0が格納される。また、t=
2の分岐予測合否情報は分岐予測情報と分岐実績に基づ
き11から10に更新される。この分岐予測合否情報に
より3回目の分岐予測情報は、2回目の分岐実績の反転
である分岐になる。従って、プログラムアドレス1が3
回目に検出されたとき(t=3)は分岐と予測される。
その分岐実績が分岐であったので、t=3の分岐実績に
0が格納される。また、t=3の分岐予測合否情報は分
岐予測情報と分岐実績に基づき10のままである。この
分岐予測合否情報により4回目の分岐予測情報は、3回
目の分岐実績の反転である非分岐になる。従って、プロ
グラムアドレス1が4回目に検出されたとき(t=4)
は非分岐と予測される。以降、同様に分岐実績と分岐予
測合否情報と分岐予測情報が更新される。
【0053】プログラムアドレス2の分岐命令の予測過
程を説明する。プログラムアドレス1がはじめて検出さ
れたとき(t=1)には、分岐予測合否情報は11にセ
ットされ、分岐予測合否情報は分岐実績が分岐であった
ので分岐実績の保持である分岐となる。次に、プログラ
ムアドレス2が2回目に検出されたとき(t=2)は分
岐と予測される。その分岐実績が実際は分岐であったの
で、t=2の分岐実績に1が格納される。また、t=2
の分岐予測合否情報は分岐予測情報と分岐実績に基づき
11のままである。この分岐予測合否情報により3回目
の分岐予測情報は、2回目の分岐実績の保持である分岐
になる。従って、プログラムアドレス2が3回目に検出
されたとき(t=3)は分岐と予測される。その分岐実
績が分岐であったので、t=3の分岐実績に1が格納さ
れる。また、t=3の分岐予測合否情報は分岐予測情報
と分岐実績に基づき11のままである。この分岐予測合
否情報により4回目の分岐予測情報は、3回目の分岐実
績の保持である分岐になる。従って、プログラムアドレ
ス2が4回目に検出されたとき(t=4)は分岐と予測
される。以下同様にして、プログラムアドレス2が7回
目に検出されたとき(t=7)は分岐と予測される。そ
の分岐実績が非分岐であったので、t=7の分岐実績に
0が格納される。また、t=7の分岐予測合否情報は分
岐予測情報と分岐実績に基づき10に更新される。この
分岐予測合否情報により8回目の分岐予測情報は、7回
目の分岐実績の反転である分岐になる。従って、プログ
ラムアドレス2が8回目に検出されたとき(t=8)は
分岐と予測される。その分岐実績が分岐であったので、
t=8の分岐実績に1が格納される。また、t=8の分
岐予測合否情報は分岐予測情報と分岐実績に基づき10
が保持される。この分岐予測合否情報により9回目の分
岐予測情報は、8回目の分岐実績の反転である非分岐に
なる。従って、プログラムアドレス2が9回目に検出さ
れたとき(t=9)は非分岐と予測される。その分岐実
績が分岐であったので、t=9の分岐実績に1が格納さ
れる。また、t=9の分岐予測合否情報は分岐予測情報
と分岐実績に基づき01に更新される。この分岐予測合
否情報により10回目の分岐予測情報は、9回目の分岐
実績の保持である分岐になる。従って、プログラムアド
レス2が10回目に検出されたとき(t=10)は分岐
と予測される。
【0054】その分岐実績が分岐であったので、t=1
0の分岐実績に1が格納される。また、t=10の分岐
予測合否情報は分岐予測情報と分岐実績に基づき01が
保持される。この分岐予測合否情報により11回目の分
岐予測情報は、10回目の分岐実績の保持である分岐に
なる。従って、プログラムアドレス2が11回目に検出
されたとき(t=11)は分岐と予測される。以降、同
様に分岐実績と分岐予測合否情報と分岐予測情報が更新
される。
【0055】以上のように、本実施形態3は、分岐が前
記記録及び過去数回の分岐予測が的中したか否かを誤り
の割合で表現した合否率に基づいて、前記過去最も新し
い条件分岐の実績の保持か反転で分岐が発生するか否か
を予測するものである。
【0056】(2)図23は第3実施形態におけるデー
タ処理装置のブロック図である。図1と同一部分には同
一符号を付して説明を省略し、以下異なる部分のみ説明
する。バッファ制御手段8から出力される分岐先バッフ
ァ制御信号が分岐先バッファ手段15に接続されてい
る。命令選択手段16に命令バッファ手段2と分岐先バ
ッファ手段15からそれぞれ命令バッファ出力バスと分
岐先バッファ出力バスが接続されている。セレクタA1
7が出力する命令フェッチバスが命令解読手段1に接続
されている。命令解読手段1が出力するカウンタ制御信
号は、カウンタ制御手段14に接続されている。分岐予
測手段3が出力する命令フェッチ量制御信号は、カウン
タ制御手段14に接続されている。命令記憶手段9の出
力である命令プリフェッチバスは、命令バッファ手段2
と分岐先バッファ手段15と命令解読手段1にそれぞれ
接続されている。命令プリフェッチバスと命令選択手段
16が出力する選択命令バスは、セレクタA17に接続
され、命令解読手段1が出力するセレクト信号により、
いずれかがセレクトされる。命令解読手段1が出力する
命令選択信号は命令選択手段16に接続されている。分
岐予測手段3が出力する命令フェッチ量制御信号は、カ
ウンタ制御手段14に接続されている。
【0057】図24は本実施形態の分岐予測手段を示す
図である。図2と同一部分には同一符号を付して説明を
省略する。図24に示すように、分岐予測バッファ7は
4つのエントリをもち、各エントリに分岐命令のプログ
ラムアドレス、分岐先アドレス、分岐実績、分岐予測合
否情報、分岐予測情報を格納する。分岐予測情報生成手
段5は図22に示す分岐予測情報を生成する。分岐予測
合否情報生成手段4は図21に示す2ビットの分岐予測
合否情報を生成する。分岐予測情報生成手段5が出力す
る新たな分岐予測情報は分岐予測バッファ7に接続され
る。分岐予測合否情報生成手段4が出力する新たな分岐
予測合否情報信号は、分岐予測バッファ7に接続されて
いる。分岐実績と分岐予測情報のEXCLUSIVE-NOR出力で
ある合否と分岐予測合否情報は、分岐予測合否情報生成
手段4に接続される。分岐実績と分岐予測合否情報生成
手段4の出力である分岐予測合否情報は、分岐予測情報
生成手段5に接続される。分岐予測バッファ7からの出
力である分岐予測合否情報は、分岐予測制御回路18に
も接続されている。つまり、分岐予測制御回路18に
は、分岐命令検出信号と分岐予測更新信号と分岐予測合
否情報と分岐予測情報と一致信号が入力され、バッファ
制御信号と命令フェッチ量制御信号と分岐予測開始信号
とインクリメント信号が出力される。なお、本実施形態
では、分岐予測バッファ7にエントリできる数を4とし
たが、その数はデータ処理装置のハードウェアにかかる
コストと性能のトレードオフに応じて自由に設定でき
る。
【0058】本実施形態のデータ処理装置は、命令フェ
ッチ(IF)ステージ、命令解読(DEC)ステージ、命令
実行(EX)ステージからなる3段のパイプラインでデー
タ処理をするものである。まず、そのパイプライン処理
について図23を参照して説明する。命令バッファに
は、いくつかの命令を先読みしておき、そのプリフェッ
チされた命令は、プリフェッチ命令バスで命令先行解読
手段6にも転送された後、分岐命令か否かが検出され
る。命令フェッチステージ(IF)では、あらかじめ命令
バッファ手段2か分岐先バッファ手段15にプリフェッ
チされている命令を、命令解読手段1が出力する命令選
択信号により命令選択手段16が選択して命令フェッチ
バスを介して命令解読手段1に転送する。命令解読ステ
ージ(DEC)では、命令を解読し生成された命令実行制
御信号を命令実行手段12に出力する。また、条件分岐
命令が分岐するかの判定がなされる。条件分岐命令が分
岐した場合には、命令解読手段1から出力される命令選
択信号がイネーブルになり、命令選択手段16に出力さ
れる。このとき、命令選択手段16により分岐先バッフ
ァから次に解読される命令が選択されてる。反対に分岐
しなかった場合には、命令解読手段1から出力される命
令選択信号がディスエーブルになり、命令バッファから
次に解読される命令が選択される。命令実行ステージ
(EX)では、命令実行制御信号により命令実行手段12
が命令を実行する。
【0059】本実施形態3のデータ処理装置の分岐ハザ
ード要因として、分岐予測バッファ7に命令先行解読手
段6により検出された分岐命令のプログラムアドレスが
エントリされていない場合は、分岐命令が分岐するとき
に分岐先の命令をフェッチするために解読ステージ相当
のハザードが生じるものとする。このハザードの要因と
なってしまう命令の解読結果は無効にされると同時に、
セレクタ信号によりセレクタA17は、その次に解読さ
れる命令を命令記憶手段9から命令プリフェッチバスを
介して、命令解読手段1に転送する。
【0060】次に、本実施形態の作用を図23、図2
4、図25、図26を参照して説明する。まず、命令先
行解読手段6が分岐命令を検出したときの動作を説明す
る。分岐命令検出信号がイネーブルになり分岐予測手段
3に出力される。この分岐命令のプログラムアドレスが
プログラムアドレス生成手段10を通じて分岐予測手段
3に転送される。セレクタB19は、このプログラムア
ドレスを分岐予測バッファ7に転送する。図26に示す
連想メモリである分岐予測バッファ7からの読み出し動
作では、タグであるプログラムアドレスが入力され、並
列処理で同一プログラムアドレスが格納されているエン
トリが探索される。もし、ヒットしたら図26に示すよ
うに、分岐先アドレス、分岐予測情報、分岐予測の確か
らしさの度合いを示す分岐予測合否情報が読み出され
る。もし、分岐予測バッファ7に分岐命令のプログラム
アドレスがエントリされていない場合には、分岐予測は
行われない。
【0061】ヒットした場合、一致信号と分岐予測情報
と分岐予測合否情報が分岐予測制御回路18に出力され
る。分岐命令検出信号がイネーブルのとき、分岐予測制
御回路18は、入力された分岐予測情報と分岐予測合否
情報からバッファ制御信号と命令フェッチ量制御信号を
出力する。カウンタ制御手段14は、分岐予測制御回路
18から出力された命令フェッチ量制御信号により、カ
ウンタ制御手段出力信号を生成する。プログラムカウン
タ13は、カウンタ制御手段出力信号により、命令プリ
フェッチアドレスを生成し、命令記憶手段9から読み出
す命令アドレスが決まる。バッファ制御手段8は、分岐
予測制御回路18から出力されたバッファ制御信号によ
り、命令記憶手段9からプリフェッチ命令バスに読み出
された命令を命令バッファ手段2か分岐先バッファ手段
15に格納する。
【0062】ここで、第3の実施形態の命令フェッチ量
制御方法を図25に示す。分岐予測制御回路18により
生成される命令フェッチ量制御信号とバッファ制御信号
により、カウンタ制御手段14とバッファ制御手段8は
分岐予測合否情報と直前の分岐実績から分岐先バッファ
手段15と命令バッファ手段2に先読みする命令フェッ
チ量を制御する。この命令量を制御する段階とは、「直
前の分岐実績が分岐かつ分岐実績の保持で予測」、「直
前の分岐実績が非分岐かつ分岐実績の反転で予測」、
「直前の分岐実績が分岐かつ分岐実績の反転で予測」、
「直前の分岐実績が非分岐かつ分岐実績の保持で予測」
の4段階であり、分岐予測の確からしさは順に、「高い
確率で分岐成立」、「低い確率で分岐成立」、「低い確
率で分岐不成立」、「高い確率で分岐不成立」とする。
例えば、直前の分岐実績が非分岐であり、分岐実績の保
持で予測している場合には、非分岐先の命令フェッチ量
を極めて多く、分岐先の命令フェッチ量を極めて少なく
する。また、直前の分岐実績が分岐であり、分岐実績の
反転で予測している場合には、非分岐先の命令フェッチ
量を多く、分岐先の命令フェッチ量を少なくする。この
ように、分岐実績の反転で予測する方が分岐予測を誤る
可能性が高いものとして段階的に設定される。
【0063】まず、分岐すると予測している場合の作用
について説明する。本実施形態で分岐すると予測するの
は、分岐予測合否情報が10以外で、かつ分岐予測情報
が1(分岐)のとき、つまり「直前の分岐実績が分岐か
つ分岐実績の保持で予測」する場合か、分岐予測合否情
報が10であり、かつ分岐予測情報が1のとき、つまり
「直前の分岐実績が非分岐かつ分岐実績の反転で予測」
する場合の2通りである。前者の方が分岐予測の確から
しさが高いとする。ここで、命令フェッチ量制御信号
は、3ビットからなる信号であって、MSBの1ビットが
分岐(1)か非分岐(0)かを表し、残り2ビットが4
段階の命令フェッチ量を表すものとする。たとえば、1
11ならば分岐先の命令を極めて多くフェッチすること
を表し、010ならば非分岐先の命令を少ない量フェッ
チすることを表す。
【0064】まず、分岐命令検出信号がイネーブルにな
り分岐予測情報と分岐予測合否情報と分岐先アドレスが
読み出される。分岐予測制御回路18は、分岐予測情報
と分岐予測合否情報から、あらかじめ非分岐先の命令を
段階的に設定された量だけ命令記憶手段9から命令バッ
ファ手段2にプリフェッチするために、命令フェッチ量
制御信号およびバッファ制御信号を出力する。命令フェ
ッチ量制御信号は、「直前の分岐実績が分岐かつ分岐実
績の保持で予測」のとき000に、「直前の分岐実績が
非分岐かつ分岐実績の反転で予測」のとき001にな
る。この命令フェッチ量制御信号がカウンタ制御手段1
4に出力されると、カウンタ制御手段14は、カウンタ
制御手段出力信号を出力して、プログラムカウンタ13
のフェッチ命令カウンタを操作し、非分岐先の連続する
命令が命令プリフェッチアドレスとして出力される。ま
た、分岐予測手段3の出力するバッファ制御信号は、バ
ッファ制御手段8に対して、命令バッファ手段2へのプ
リフェッチを指示する。バッファ制御信号がディスエー
ブルの場合は、バッファ制御手段8は命令バッファ制御
信号と分岐先バッファ制御信号により命令バッファ手段
2に命令をプリフェッチする。
【0065】非分岐先のプリフェッチが完了すると、分
岐予測制御回路18は、分岐先の命令を命令記憶手段9
から分岐先バッファ手段15にプリフェッチするため
に、命令フェッチ量制御信号およびバッファ制御信号を
出力する。命令フェッチ量制御信号は、「直前の分岐実
績が分岐かつ分岐実績の保持で予測」のとき111に、
「直前の分岐実績が非分岐かつ分岐実績の反転で予測」
のとき110になる。この命令フェッチ量制御信号がカ
ウンタ制御手段14に出力されると、カウンタ制御手段
14は、カウンタ制御手段出力信号を出力して、プログ
ラムカウンタ13のフェッチ命令カウンタのカウントを
停止すると同時に、分岐先アドレスのセットされた分岐
先命令アドレスカウンタがカウントを開始する。これに
より、分岐先の連続する命令が命令プリフェッチアドレ
スとして出力されると同時に、分岐予測手段3から出力
されるバッファ制御信号は、バッファ制御手段8に対し
て、分岐先バッファ手段15へのプリフェッチを指示す
る。バッファ制御信号がイネーブルの場合は、バッファ
制御手段8は命令バッファ制御信号と分岐先バッファ制
御信号により分岐先バッファ手段15に命令をプリフェ
ッチする。
【0066】このように分岐すると予測しても、あらか
じめ定められた量だけ命令バッファと分岐先バッファに
命令ストリームをプリフェッチしておくが、その量は
「分岐実績の保持」で予測する方が「分岐実績の反転」
で予測するよりも分岐予測を正解する可能性が高いもの
として段階的に設定される。
【0067】プリフェッチが完了した後、分岐命令が命
令解読手段1により解読された結果、分岐したとする。
このとき、命令解読手段1より命令選択信号が出力さ
れ、命令選択手段16は分岐命令に続いて命令解読手段
1に投入すべき命令を分岐先バッファから選択する。反
対に、分岐命令が命令解読手段1により解読された結
果、分岐しなかったとする。このとき、命令選択手段1
6は分岐命令に続いて命令解読手段1に投入すべき命令
を、プリフェッチしておいた命令バッファから選択す
る。また、命令解読手段1が出力するカウンタ制御信号
により、カウンタ制御手段14は、分岐先アドレスカウ
ンタのカウンタを停止して、命令アドレスカウンタのカ
ウンタを再開させる。このように、命令選択手段16
は、あらかじめ命令バッファ手段2と分岐先バッファ手
段15にプリフェッチしておいた命令を、分岐か非分岐
かが判明した時点で選択し、次に解読する命令とする。
【0068】次に、分岐しないと予測している場合の作
用について説明する。本実施形態で分岐しないと予測す
るのは、分岐予測合否情報が10以外で、かつ分岐予測
情報が0(非分岐)のとき、つまり「直前の分岐実績が
非分岐かつ分岐実績の保持で予測」する場合か、分岐予
測合否情報が10であり、かつ分岐予測情報が0のと
き、つまり「直前の分岐実績が分岐かつ分岐実績の反転
で予測」する場合の2通りである。前者の方が分岐予測
の確からしさが高いとする。
【0069】まず、分岐命令検出信号がイネーブルにな
り分岐予測情報と分岐予測合否情報と分岐先アドレスが
読み出される。分岐予測制御回路18は、分岐予測情報
と分岐予測合否情報から、あらかじめ分岐先の命令を段
階的に設定された量だけ命令記憶手段9から分岐先バッ
ファ手段15にプリフェッチするために、命令フェッチ
量制御信号およびバッファ制御信号を出力する。命令フ
ェッチ量制御信号は、「直前の分岐実績が非分岐かつ分
岐実績の保持で予測」のとき100に、「直前の分岐実
績が分岐かつ分岐実績の反転で予測」のとき101にな
る。この命令フェッチ量制御信号がカウンタ制御手段1
4に出力されると、カウンタ制御手段14は、カウンタ
制御手段出力信号を出力して、プログラムカウンタ13
のフェッチ命令カウンタのカウントを停止すると同時
に、分岐先アドレスのセットされた分岐先命令アドレス
カウンタがカウントを開始する。これにより、分岐先の
連続する命令が命令プリフェッチアドレスとして出力さ
れると同時に、分岐予測手段3から出力されるバッファ
制御信号は、バッファ制御手段8に対して、分岐先バッ
ファ手段15へのプリフェッチを指示する。バッファ制
御信号がイネーブルの場合は、バッファ制御手段8は命
令バッファ制御信号と分岐先バッファ制御信号により分
岐先バッファ手段15に命令をプリフェッチする。
【0070】分岐先のプリフェッチが完了すると、分岐
予測制御回路18は、非分岐先の命令を命令記憶手段9
から命令バッファ手段2にプリフェッチするために、命
令フェッチ量制御信号およびバッファ制御信号を出力す
る。命令フェッチ量制御信号は、「直前の分岐実績が非
分岐かつ分岐実績の保持で予測」のとき011に、「直
前の分岐実績が分岐かつ分岐実績の反転で予測」のとき
010になる。この命令フェッチ量制御信号がカウンタ
制御手段14に出力されると、カウンタ制御手段14
は、カウンタ制御手段出力信号を出力して、プログラム
カウンタ13の分岐先命令アドレスカウンタがカウント
を停止し、フェッチ命令カウンタのカウントを再開し
て、非分岐先の連続する命令が命令プリフェッチアドレ
スとして出力される。また、分岐予測手段3の出力する
バッファ制御信号は、バッファ制御手段8に対して、命
令バッファ手段2へのプリフェッチを指示する。バッフ
ァ制御信号がディスエーブルの場合は、バッファ制御手
段8は命令バッファ制御信号と分岐先バッファ制御信号
により命令バッファ手段2に命令をプリフェッチする。
【0071】このように分岐しないと予測しても、あら
かじめ定められた量だけ命令バッファと分岐先バッファ
に命令ストリームをプリフェッチしておくが、その量は
「分岐実績の保持」で予測する方が「分岐実績の反転」
で予測するよりも分岐予測を正解する可能性が高いもの
として段階的に設定される。
【0072】プリフェッチが完了した後、分岐命令が命
令解読手段1により解読された結果、分岐したとする。
このとき、命令解読手段1より命令選択信号が出力さ
れ、命令選択手段16は分岐命令に続いて命令解読手段
1に投入すべき命令を分岐先バッファから選択すると共
に、命令解読手段1が出力するカウンタ制御信号によ
り、カウンタ制御手段14は、フェッチ命令カウンタの
カウンタを停止して、分岐先命令アドレスカウンタのカ
ウンタを再開させる。反対に、分岐命令が命令解読手段
1により解読された結果、分岐しなかったとする。この
とき、命令選択手段16は分岐命令に続いて命令解読手
段1に投入すべき命令を、プリフェッチしておいた命令
バッファから選択する。このように、命令選択手段16
は、あらかじめ命令バッファ手段2と分岐先バッファ手
段15にプリフェッチしておいた命令を、分岐か非分岐
かが判明した時点で選択し、次に解読する命令とする。
【0073】次に、分岐予測情報の更新動作を順を追っ
て図4、図5で説明する。また、本実施形態の分岐予測
合否情報生成手段4を図21に、分岐予測情報生成手段
5を図22にそれぞれ示す。
【0074】図4に示すように、分岐命令が命令実行手
段12により実行されると命令解読手段1より分岐予測
更新信号がイネーブルになり分岐予測手段3に出力され
る。すると分岐命令検出信号がディスエーブルのとき、
セレクタB19は実行した分岐命令の実行命令アドレス
を選択して、分岐予測バッファ7に出力する。この実行
命令アドレスをタグとして探索しヒットすると分岐予測
バッファ7は一致信号を出力する。このとき、エントリ
1がヒットしたとする。命令実行手段12より出力され
る分岐先アドレスと命令実行手段12より出力される分
岐実績が分岐予測バッファ7の対応するエントリ1に格
納される。
【0075】図4に示す処理が完了した後、図5に示す
ように分岐予測制御回路18より分岐予測開始信号が分
岐予測合否情報生成手段4と分岐予測情報生成手段5に
出力される。分岐予測合否情報生成手段4は分岐予測バ
ッファのエントリに格納された分岐予測合否情報と今回
の合否から図21に示すように分岐予測合否情報を更新
する。ここで合否とは、分岐実績と分岐予測情報のEXCL
USIVE-NORで表される情報であり、予測が正しかったと
きに1を予測が誤りのときに0になる。本実施形態で
は、分岐予測合否情報は2ビットからなる情報であり、
初期値は11である。分岐予測合否情報生成手段4は、
読み出した分岐予測合否情報に合否を加える。合否が1
ならば読み出した分岐予測合否情報は更新されず、合否
が0ならばデクリメントされるが、読み出した分岐予測
合否情報が00で合否が0ならば11にする。その後、
分岐予測情報生成手段5は今回の合否により更新された
分岐予測合否情報と分岐実績から、図22に示すように
新たな分岐予測情報を生成し、対応するエントリに格納
して分岐予測情報の更新動作が完了する。
【0076】次に、分岐予測バッファ7に対応するプロ
グラムアドレスがエントリされていない場合を図6、図
7により示す。まず図6であるが、このとき、分岐予測
更新信号はイネーブルになり、分岐予測バッファ7の一
致信号はディスエーブルになる。すると、エントリレジ
スタ20がエントリ番号をエントリバスを介して分岐予
測バッファ7に出力する。なお、このエントリレジスタ
20は、データ処理装置のリセット時に00にされるも
のとし、新しく分岐命令が出現した時にエントリする番
号を2ビットで保持するレジスタであり、一致信号がイ
ネーブルのときは使用されない。分岐予測バッファ7へ
の書き込み動作は、分岐予測更新信号がイネーブルかつ
一致信号がディスエーブルのときエントリ番号が示すエ
ントリとなる。実行命令アドレスがセレクタB19で選
択されて分岐予測バッファ7に出力されると、対応する
エントリのプログラムアドレスに格納される。また、命
令実行手段12は分岐実績を、命令実行手段12は分岐
先アドレスをそれぞれ対応するエントリに格納する。こ
こで、エントリレジスタ20が00ならエントリ0、0
1ならエントリ1、10ならエントリ2、11ならエン
トリ3に対応する。
【0077】図6に示す処理が完了した後、図7に示す
ように分岐予測制御回路18より分岐予測開始信号が分
岐予測合否情報生成手段4と分岐予測情報生成手段5に
出力される。分岐予測合否情報生成手段4は、入力され
た一致信号がディスエーブルならば初期設定値である1
1を生成する。その後、分岐予測情報生成手段5は今回
の合否により更新された分岐予測合否情報と分岐実績を
入力データとし、分岐予測情報を出力する。分岐予測合
否情報生成手段4と分岐予測情報生成手段5により更新
された分岐予測合否情報と分岐予測情報は対応するエン
トリに格納されて、分岐予測情報の更新動作が完了する
と、分岐予測制御回路18からインクリメント信号が出
力される。インクリメントされた2ビットのデータがイ
ンクリメンタ21から出力されエントリレジスタ20に
格納される。このインクリメンタ21の値は、データ処
理装置のリセット時に00にされる。また、11からの
インクリメントは00になるものとし、したがって、エ
ントリレジスタ20のとる値は4通りである。上記のよ
うに、分岐予測バッファ7に対応するプログラムアドレ
スがエントリされていない場合にも更新動作が行われ
る。
【0078】(3)以上のように、本実施形態3は、過
去の分岐予測の合否率を誤りの割合で表した情報に基づ
いて過去最も新しい条件分岐の実績の保持か反転で分岐
が発生するか否かを予測した結果が示すとおり、成立と
不成立を交互に繰り返すパターンやループ処理において
高い的中率が得られる。さらに、分岐の成立、不成立を
分岐予測の確からしさの度合いである「高い確率で分岐
成立」、「低い確率で分岐成立」、「低い確率で分岐不
成立」、「高い確率で分岐不成立」の4段階で先読みす
る命令量を変えるようにしたので、分岐か非分岐かの分
岐予測の確からしさに応じて分岐先バッファと命令バッ
ファにプリフェッチされる命令量が段階的に制御され、
実際に分岐か非分岐かが判明した時点で、それらバッフ
ァから選択されるので、分岐によるバブルの発生頻度が
軽減される。
【0079】(実施の形態4)以下本発明の第4実施形
態について、図1、図15、図27、図28、図29を
参照して説明する。ここで、図1は、本実施形態のデー
タ処理装置を示すブロック図である。図15は、本実施
形態の分岐予測アルゴリズムを示す図である。図27
は、本実施形態の分岐予測手段を示すブロック図であ
る。図28、図29は、本実施形態の分岐予測情報の更
新動作(エントリなし)を示すブロック図である。
【0080】図27は、本実施形態の分岐予測手段を示
すブロック図であり、図2と同一部分には同一符号を付
して説明を省略する。2ビットの情報を転送できるエン
トリバスが分岐予測バッファ7とエントリレジスタ20
と分岐予測制御回路18に接続されている。分岐予測制
御回路18から出力されるエントリ選択要求信号が分岐
予測バッファ7に接続されている。分岐予測バッファ7
の出力であるセット信号がエントリレジスタ20と分岐
予測制御回路18に接続されている。インクリメンタ2
1からの2ビットのデータがエントリレジスタ20に接
続されている。インクリメンタ21からのキャリー信号
がエントリレジスタ20に接続されている。なお、本実
施形態では、分岐予測バッファ7にエントリできる数を
4としたが、その数はデータ処理装置のハードウェアに
かかるコストと性能のトレードオフに応じて自由に設定
できる。
【0081】図28、図29は、本実施形態における分
岐予測情報の更新動作(エントリなし)を示すブロック
図であり、図6、図7と同一部分の説明は省略する。ま
た、本実施形態の分岐予測方法は前記実施の形態2で説
明した方法とし、ここでは説明を省略する。本実施形態
におけるデータ処理装置は、すべてのエントリが各々の
分岐命令で埋っており、かつ命令予測バッファ7に対応
するプログラムアドレスがエントリされていない場合
に、分岐予測合否情報を分岐予測バッファ7にエントリ
する分岐命令の選択要因とする。
【0082】本実施形態の分岐予測情報の更新動作につ
いて説明する。まず、命令解読手段1より出力される分
岐予測更新信号がイネーブルになる。命令予測バッファ
7に対応するプログラムアドレスがエントリされている
場合については、図6、図7と同一動作をするものとし
説明を省略し、ここでは、命令予測バッファ7に対応す
るプログラムアドレスがエントリされていない場合を説
明する。このとき、分岐予測バッファ7の一致信号はデ
ィスエーブルになる。ここで、図27に示すエントリレ
ジスタ20は、データ処理装置のリセット時に000に
初期化される3ビットのレジスタであり、一致信号がイ
ネーブルになりヒットしたときには使用されない。下位
2ビットが分岐予測バッファ7にエントリするときのエ
ントリ番号を示す。00ならエントリ0、01ならエン
トリ1、10ならエントリ2、11ならエントリ3に対
応する。MSBの1ビットは、1ならば分岐予測バッフ
ァ7の4つのエントリすべてが、すでに出現した分岐命
令で埋ったことを表しており、0ならばまだ未使用のエ
ントリが存在することを表している。
【0083】MSBの1ビットが0のときは、次のよう
にエントリレジスタが示すエントリ番号に新たな分岐命
令をエントリする。エントリレジスタ20の下位2ビッ
トで表されるエントリ番号が分岐予測バッファ7にエン
トリバスを介して出力される。分岐予測制御回路18か
ら出力されるエントリ選択要求信号はディスエーブルに
なる。分岐予測更新信号がイネーブルかつ一致信号がデ
ィスエーブルかつエントリ選択要求信号がディスエーブ
ルになり、分岐予測バッファ7への書き込み動作は、エ
ントリレジスタ20の下位2ビットのエントリに対して
行われる。
【0084】一方、MSBの1ビットが1のときは、図
27に示す分岐予測手段3は、分岐予測バッファ7に格
納されている分岐予測合否情報を分岐予測バッファ7に
エントリする分岐命令の選択要因とするように動作す
る。まず、分岐予測制御回路18は、図28に示すよう
にエントリ選択要求信号をイネーブルとし、分岐予測バ
ッファ7に出力する。このとき、分岐予測バッファ7
は、分岐予測合否情報00をタグとして番号の少ないエ
ントリから順番に並列探索する。探索が完了するまで
は、分岐予測バッファ手段7が出力するセット信号はデ
ィスエーブルである。探索が完了すると、図29に示す
ように、分岐予測合否情報が00であるひとつのエント
リ番号に対応した01をエントリバスを介してエントリ
レジスタ20に出力するとともに、セット信号をイネー
ブルにする。セット信号がイネーブルになると、エント
リレジスタ20は、その下位2ビットにエントリ番号に
対応した値01を格納した後、分岐予測制御回路18
は、エントリ選択要求信号をディスエーブルにする。図
29に示すように、ここでは01がエントリバスに出力
され、エントリレジスタ20の下位2ビットにはが00
から01に書き換えられエントリレジスタ20には、最
終的に101が格納される。上記のように、一致信号が
ディスエーブルでエントリレジスタのMSBが1の場合
に、分岐予測バッファ7からエントリバスを介してエン
トリ番号が決定された後、エントリ選択要求信号がディ
スエーブルになる。なお、探索実行時に、分岐予測合否
情報の値が00のエントリがなければ、00のエントリ
番号がエントリバスに出力される。
【0085】エントリ番号が決定されると、分岐予測更
新信号がイネーブルかつ一致信号がディスエーブルかつ
エントリ選択要求信号がディスエーブルになり、分岐予
測バッファ7への書き込み動作は、エントリレジスタ2
0の下位2ビットのエントリに対して行われる。実行命
令アドレスがセレクタB19で選択されて分岐予測バッ
ファ7に出力されると、対応するエントリ1のプログラ
ムアドレスに格納される。また、命令実行手段12は分
岐実績を、命令実行手段12は分岐先アドレスをそれぞ
れ対応するエントリ1に格納する。
【0086】図28に示す処理が完了した後、図27に
示す分岐予測制御回路18より分岐予測開始信号が分岐
予測合否情報生成手段4と分岐予測情報生成手段5に出
力される。分岐予測合否情報生成手段4は、入力された
一致信号がディスエーブルならば初期設定値である11
を生成する。その後、分岐予測情報生成手段5は今回の
合否により更新された分岐予測合否情報と分岐実績を入
力データとし、分岐予測情報を出力する。分岐予測合否
情報生成手段4と分岐予測情報生成手段5により更新さ
れた分岐予測合否情報と分岐予測情報は対応するエント
リに格納されて、分岐予測情報の更新動作が完了する
と、分岐予測制御回路18からインクリメント信号が出
力されてエントリレジスタ20の値がインクリメントさ
れる。図27に示したインクリメンタ21は、データ処
理装置のリセット時に00に初期化される。インクリメ
ントした2ビットのデータがエントリレジスタ20に格
納される。11からのインクリメントが実行されると、
インクリメンタ21のレジスタは00になると共に、キ
ャリー信号がイネーブルになる。インクリメンタ21か
らのキャリー信号がエントリレジスタ20に一度でも出
力されると、エントリレジスタ20のMSBは0から1
にセットされ、以降1から変化しない。したがって、エ
ントリレジスタ20にキャリー信号が出力されると、次
回以降の分岐予測情報の更新動作時にヒットするエント
リがなければ分岐予測制御回路18のエントリ選択要求
信号がイネーブルとなり、分岐予測合否情報が00であ
るエントリを更新の対象とするよう分岐予測手段3は動
作することになる。
【0087】なお、本実施形態では、エントリ選択要求
信号がイネーブルになり、分岐予測合否情報による探索
がなされ分岐予測合否情報が00であるプログラムアド
レスがなければエントリ0と交換するとしたが、この場
合、交換しないとしても良いし、分岐予測合否情報が0
1であるエントリと交換するようにしても良い。
【0088】以上のように、本実施形態4は、用意され
たエントリすべてが使われているときに、分岐予測バッ
ファ7に新たにエントリする分岐命令を、分岐予測の確
からしさの低いプログラムアドレスと入れ替えるように
したので、より分岐予測の確からしさの優るエントリを
分岐予測バッファ7に保存することができるようにな
り、分岐予測バッファの限られたエントリを有効に使用
して精度の高い分岐予測が可能なデータ処理装置が構成
できる。
【0089】
【発明の効果】以上の説明から明らかなように、本発明
の分岐予測方法によれば、データ処理装置によって実行
される各条件分岐命令に対して過去最も新しい条件分岐
の実績と分岐が前記記録及び過去数回の分岐予測が的中
したか否かの合否履歴に基づいて、分岐が発生するか否
かを予測するようにしたので、精度良く分岐予測が行え
るという効果がある。
【0090】また、本発明の分岐予測方法によれば、デ
ータ処理装置によって実行される各条件分岐命令に対し
て過去最も新しい条件分岐の実績と分岐が前記記録及び
過去数回の分岐予測が的中したか否かの合否率に基づい
て、分岐が発生するか否かを予測するようにしたので、
精度良く分岐予測が行えるという効果がある。
【0091】さらに、従来例に示した過去数回の分岐履
歴を基に分岐を予測する方法が、分岐命令の過去数回の
履歴のパターンそれぞれに対応して分岐が生じる確率を
表した2ビットの情報から成る分岐予測情報を記憶した
エントリが必要であり、連想記憶するデータ量と対応す
るパターンの検索と、分岐が生じる確率を更新するため
にかかるハードウェアにより、データ処理装置が大規模
化するという問題があったのに対して、ある分岐命令の
プログラムアドレスにつき直前の分岐実績と分岐予測の
合否記録と分岐予測情報のみを分岐予測バッファのエン
トリとすることでデータ処理装置を低コストで構成する
ことができる。
【0092】さらに、本発明の分岐予測方法およびデー
タ処理装置によれば、分岐の成立、不成立を分岐予測の
確からしさと共に予測して、その確からしさの度合いに
基づいて先読みする命令量を変えるようにしたので、分
岐か非分岐かの可能性に応じて分岐先バッファと命令バ
ッファに命令がプリフェッチされて分岐によるペナルテ
ィを回避できる。その結果、分岐予測そのものがもたら
す効果に加えて、プログラム中の分岐命令によってパイ
プライン処理によるデータ処理装置の性能が低下するこ
とを抑制できる。
【0093】さらに、本発明の分岐予測方法およびデー
タ処理装置によれば、分岐予測の確からしさの度合いに
基づいて、プログラムで出現する分岐命令の中から分岐
予測する分岐命令群を構成するようにしたので、より分
岐予測の確からしさの優るエントリが分岐予測バッファ
に保存され、その結果、実行する分岐予測の精度が向上
するのでパイプライン処理によるデータ処理装置の性能
が低下することを抑制できる。
【図面の簡単な説明】
【図1】本発明の第1、2、4の実施形態のデータ処理
装置を示すブロック図
【図2】本発明の第1、2の実施形態の分岐予測手段を
示すブロック図
【図3】本発明の第1、2の実施形態の分岐予測情報の
読み出し動作を示すブロック図
【図4】本発明の第1、2、3の実施形態の分岐予測情
報の更新動作(エントリあり)を示すブロック図
【図5】本発明の第1、2、3の実施形態の分岐予測情
報の更新動作(エントリあり)を示すブロック図
【図6】本発明の第1、2、3の実施形態の分岐予測情
報の更新動作(エントリなし)を示すブロック図
【図7】本発明の第1、2、3の実施形態の分岐予測情
報の更新動作(エントリなし)を示すブロック図
【図8】本発明の第1の実施形態のプログラムアドレス
1の分岐予測過程を示す図
【図9】本発明の第1の実施形態のプログラムアドレス
2の分岐予測過程を示す図
【図10】本発明の第1の実施形態の分岐予測アルゴリ
ズムを示す図
【図11】本発明の第1の実施形態の分岐予測合否情報
生成手段の入出力データを示す図
【図12】本発明の第1の実施形態の分岐予測情報生成
手段の入出力データを示す図
【図13】本発明の第2の実施形態のプログラムアドレ
ス1の分岐予測過程を示す図
【図14】本発明の第2の実施形態のプログラムアドレ
ス2の分岐予測過程を示す図
【図15】本発明の第2、4の実施形態の分岐予測アル
ゴリズムを示す図
【図16】本発明の第2の実施形態の分岐予測合否情報
生成手段の入出力データを示す図
【図17】本発明の第2の実施形態の分岐予測情報生成
手段の入出力データを示す図
【図18】本発明の第3の実施形態のプログラムアドレ
ス1の分岐予測過程を示す図
【図19】本発明の第3の実施形態のプログラムアドレ
ス2の分岐予測過程を示す図
【図20】本発明の第3の実施形態の分岐予測アルゴリ
ズムを示す図
【図21】本発明の第3の実施形態の分岐予測合否情報
生成手段の入出力データを示す図
【図22】本発明の第3の実施形態の分岐予測情報生成
手段の入出力データを示す図
【図23】本発明の第3の実施形態のデータ処理装置を
示すブロック図
【図24】本発明の第3の実施形態の分岐予測手段を示
すブロック図
【図25】本発明の第3の実施形態の命令フェッチ量制
御方法を示す図
【図26】本発明の第3の実施形態の分岐予測情報の読
み出し動作を示すブロック図
【図27】本発明の第4の実施形態の分岐予測手段を示
すブロック図
【図28】本発明の第4の実施形態の分岐予測情報の更
新動作(エントリなし)を示すブロック図
【図29】本発明の第4の実施形態の分岐予測情報の更
新動作(エントリなし)を示すブロック図
【図30】従来例の分岐予測バッファの一エントリを示
す図
【図31】従来例の分岐予測情報の更新方法を示す図
【符号の説明】
1 命令解読手段 2 命令バッファ手段 3 分岐予測手段 4 分岐予測合否情報生成手段 5 分岐予測情報生成手段 6 命令先行解読手段 7 分岐予測バッファ 8 バッファ制御手段 9 命令記憶手段 10 プログラムアドレス生成手段 11 汎用レジスタ手段 12 命令実行手段 13 プログラムカウンタ 14 カウンタ制御手段 15 分岐先バッファ手段 16 命令選択手段 17 セレクタA 18 分岐予測制御回路 19 セレクタB 20 エントリレジスタ 21 インクリメンタ

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】条件分岐命令が実行された時、分岐が過去
    最も新しい条件分岐の実績及び過去数回の分岐予測が的
    中したか否かの合否に基づいて発生するか否かを予測す
    る分岐予測方法。
  2. 【請求項2】条件分岐命令が実行された時、分岐が過去
    最も新しい条件分岐の実績及び過去数回の予測が的中し
    たか否かの合否履歴に基づいて、前記過去最も新しい条
    件分岐の実績の保持か反転で分岐が発生するか否かを予
    測する請求項1に記載の分岐予測方法。
  3. 【請求項3】条件分岐命令が実行された時、分岐が過去
    最も新しい条件分岐の実績及び過去数回の予測が的中し
    たか否かの合否率に基づいて、前記過去最も新しい条件
    分岐の実績の保持か反転で分岐が発生するか否かを予測
    する請求項1に記載の分岐予測方法。
  4. 【請求項4】分岐の成立、不成立を分岐予測の確からし
    さと共に予測するデータ処理装置であり、その確からし
    さの度合いに基づいて先読みする命令量を変えることを
    特徴とするデータ処理装置。
  5. 【請求項5】「高い確率で分岐成立」、「低い確率で分
    岐成立」、「低い確率で分岐不成立」、「高い確率で分
    岐不成立」の4段階で先読みする命令量を変えることを
    特徴とする請求項4に記載のデータ処理装置。
  6. 【請求項6】請求項2に記載の分岐予測方法で分岐予測
    するデータ処理装置であり、分岐予測の確からしさが
    「分岐実績の反転で予測する場合」よりも「分岐実績の
    保持で予測する場合」の方がより優っているとして、先
    読みする命令量を変えることを特徴とする請求項4に記
    載のデータ処理装置。
  7. 【請求項7】請求項3に記載の分岐予測方法で分岐予測
    するデータ処理装置であり、分岐予測の確からしさが
    「分岐実績の反転で予測する場合」よりも「分岐実績の
    保持で予測する場合」の方がより優っているとして、先
    読みする命令量を変えることを特徴とする請求項4に記
    載のデータ処理装置。
  8. 【請求項8】分岐の成立、不成立を分岐予測の確からし
    さと共に予測するデータ処理装置であり、その確からし
    さの度合いに基づいて、プログラムで出現する分岐命令
    の中から分岐予測する分岐命令群を構成することを特徴
    とするデータ処理装置。
JP18875199A 1999-07-02 1999-07-02 分岐予測方法およびデータ処理装置 Pending JP2001014162A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP18875199A JP2001014162A (ja) 1999-07-02 1999-07-02 分岐予測方法およびデータ処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP18875199A JP2001014162A (ja) 1999-07-02 1999-07-02 分岐予測方法およびデータ処理装置

Publications (1)

Publication Number Publication Date
JP2001014162A true JP2001014162A (ja) 2001-01-19

Family

ID=16229144

Family Applications (1)

Application Number Title Priority Date Filing Date
JP18875199A Pending JP2001014162A (ja) 1999-07-02 1999-07-02 分岐予測方法およびデータ処理装置

Country Status (1)

Country Link
JP (1) JP2001014162A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009104614A (ja) * 2008-11-25 2009-05-14 Renesas Technology Corp 情報処理装置
JP2010152843A (ja) * 2008-12-26 2010-07-08 Nec Corp 分岐予測の信頼度見積もり回路及びその方法
US9594564B2 (en) 2013-08-13 2017-03-14 Fujitsu Limited Arithmetic processing device and control method of arithmetic processing device

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009104614A (ja) * 2008-11-25 2009-05-14 Renesas Technology Corp 情報処理装置
JP2010152843A (ja) * 2008-12-26 2010-07-08 Nec Corp 分岐予測の信頼度見積もり回路及びその方法
US9594564B2 (en) 2013-08-13 2017-03-14 Fujitsu Limited Arithmetic processing device and control method of arithmetic processing device

Similar Documents

Publication Publication Date Title
KR100411529B1 (ko) 제2 레벨 분기 예측 테이블을 이용한 분기 예측 방법 및장치
US5530825A (en) Data processor with branch target address cache and method of operation
JP4027620B2 (ja) 分岐予測装置、プロセッサ、及び分岐予測方法
US7831817B2 (en) Two-level branch prediction apparatus
JP5209633B2 (ja) ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法
US8943298B2 (en) Meta predictor restoration upon detecting misprediction
JP2001243069A (ja) 分岐予測装置及び分岐予測方法
JPH10228377A (ja) 分岐予測する情報処理装置
JP2001236266A (ja) 高レベルキャッシュの効率改善方法
US7647488B2 (en) Information processing device with branch history restoration
JP3798998B2 (ja) 分岐予測装置および分岐予測方法
US20180121200A1 (en) Hybrid lookahead branch target cache
JP3725547B2 (ja) 限定ラン分岐予測
US7454602B2 (en) Pipeline having bifurcated global branch history buffer for indexing branch history table per instruction fetch group
US20210382718A1 (en) Controlling Prediction Functional Blocks Used by a Branch Predictor in a Processor
US20050283593A1 (en) Loop end prediction
JPH0820951B2 (ja) プロセッサの動作速度を速める方法
US9778934B2 (en) Power efficient pattern history table fetch in branch predictor
JP2002278752A (ja) 命令の実行結果予測装置
JP2001014162A (ja) 分岐予測方法およびデータ処理装置
US6978361B2 (en) Effectively infinite branch prediction table mechanism
WO2015113070A1 (en) Processor loop buffer
JP2018200545A (ja) プロセッサ装置
JPH07262006A (ja) 分岐ターゲットアドレスキャッシュを備えたデータプロセッサ
JP2001022577A (ja) 情報処理装置