JPS61175733A - 分岐予測制御方式 - Google Patents
分岐予測制御方式Info
- Publication number
- JPS61175733A JPS61175733A JP1588585A JP1588585A JPS61175733A JP S61175733 A JPS61175733 A JP S61175733A JP 1588585 A JP1588585 A JP 1588585A JP 1588585 A JP1588585 A JP 1588585A JP S61175733 A JPS61175733 A JP S61175733A
- Authority
- JP
- Japan
- Prior art keywords
- branch
- instruction
- address
- register
- buffer
- 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
Links
- 239000000872 buffer Substances 0.000 claims abstract description 28
- 238000000034 method Methods 0.000 claims description 5
- 230000010365 information processing Effects 0.000 claims 1
- 230000006866 deterioration Effects 0.000 abstract 1
- 230000000694 effects Effects 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000003292 glue Substances 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明は分岐命令の高速化を図る分岐予測制御方式に関
する。
する。
分岐命令の高速化技術として、分岐命令の履歴を記憶し
、過去の結果を基に分岐成功/不成功及び分岐先を予測
する方法がある。(例えばI BEECOMPUTE&
1984 1月号 P6〜P22)〔発明が解決しよ
うとする問題点〕 上述した分岐予測は分岐命令を含む命令語アドレスと、
該分岐命令の分岐先アドレスとを保持する分岐ヒストリ
バッファを設け、命令取出時に取出し命令中に分岐命令
を含む場合、分岐先アドレスを得るものである。この分
岐予測バッファでは分岐命令実行時、予測が失敗する度
にその結果に基づき内容が修正されている。
、過去の結果を基に分岐成功/不成功及び分岐先を予測
する方法がある。(例えばI BEECOMPUTE&
1984 1月号 P6〜P22)〔発明が解決しよ
うとする問題点〕 上述した分岐予測は分岐命令を含む命令語アドレスと、
該分岐命令の分岐先アドレスとを保持する分岐ヒストリ
バッファを設け、命令取出時に取出し命令中に分岐命令
を含む場合、分岐先アドレスを得るものである。この分
岐予測バッファでは分岐命令実行時、予測が失敗する度
にその結果に基づき内容が修正されている。
ところが7オートランプログラムのDOループなどで使
用されるループ制御用分岐命令では、そのループが再度
使用される場合、やはシ分岐成功の確率が高い。従って
、ループを抜は出るとき、分岐予測が失敗(成功を予測
したが実際は分岐失敗)シ、分岐予測バッファを更新し
てしまうと、再度このループを実行する場合、予測は再
度失敗するという欠点がある。
用されるループ制御用分岐命令では、そのループが再度
使用される場合、やはシ分岐成功の確率が高い。従って
、ループを抜は出るとき、分岐予測が失敗(成功を予測
したが実際は分岐失敗)シ、分岐予測バッファを更新し
てしまうと、再度このループを実行する場合、予測は再
度失敗するという欠点がある。
すなわち本発明の分岐予測制御方式では、ループ制御用
の分岐命令においては、分岐不成功時。
の分岐命令においては、分岐不成功時。
分岐予測バッファの対応するエントリの内容を無効化し
ないことに特徴がある。
ないことに特徴がある。
次に本発明について図面を参照して詳細に説明する。
第1図を参照すると、本発明の一実施例は外部から与え
られる仮想アドレスを格納する仮想アドレスレジスタ1
、このレジスタ1からのアドレスおよび取出命令アドレ
スKrtJを加算したアドレスとのどちらか一方を選択
して出力する切替回路2、この切換回路2からの出力の
うち下位ビットによシ指定された位置に分岐命令のアド
レスを格納する分岐ヒストリバッファ(K) 3 、前
記下位ビットによシ指定された位置に分岐先アドレスを
保持する分岐ヒストリバッフ、(”14.分岐ヒストリ
バッファ(K)3の内容と前記レジスタ1からのアドレ
スとを比較する比較回路5および6、この比較回路5お
よび6のどちらか一方の一致検出に応答して分岐ヒスト
リバッファ(D)4の出力を選択出力する切替回路7、
アトア命令によるメモリへの書込アドレスを保持するス
トアアドレスレジスタ8、取出した命令のアドレス範囲
のうち上限のアドレスを保時する取出命令アドレスレジ
スタ9、このアドレス範囲のうち少なくとも1組の下限
のアドレスを保持する取出命令アドレスレジスタ10、
このレジスタ10の内容にrllを加算するカウンタ1
1、前記レジスタ8からのアドレスおよび前記レジスタ
9からのアドレスを比較する比較回路l 2.前記レジ
スタ8からのアドレスおよび前記レジスタlOからのア
ドレスを比較する比較回路13、およびこれら比較回路
12および13の出力の論理積をとるアンドゲート14
から構成されている。前記レジスタlO紘レジスタフィ
ルタで構成されてもよい。
られる仮想アドレスを格納する仮想アドレスレジスタ1
、このレジスタ1からのアドレスおよび取出命令アドレ
スKrtJを加算したアドレスとのどちらか一方を選択
して出力する切替回路2、この切換回路2からの出力の
うち下位ビットによシ指定された位置に分岐命令のアド
レスを格納する分岐ヒストリバッファ(K) 3 、前
記下位ビットによシ指定された位置に分岐先アドレスを
保持する分岐ヒストリバッフ、(”14.分岐ヒストリ
バッファ(K)3の内容と前記レジスタ1からのアドレ
スとを比較する比較回路5および6、この比較回路5お
よび6のどちらか一方の一致検出に応答して分岐ヒスト
リバッファ(D)4の出力を選択出力する切替回路7、
アトア命令によるメモリへの書込アドレスを保持するス
トアアドレスレジスタ8、取出した命令のアドレス範囲
のうち上限のアドレスを保時する取出命令アドレスレジ
スタ9、このアドレス範囲のうち少なくとも1組の下限
のアドレスを保持する取出命令アドレスレジスタ10、
このレジスタ10の内容にrllを加算するカウンタ1
1、前記レジスタ8からのアドレスおよび前記レジスタ
9からのアドレスを比較する比較回路l 2.前記レジ
スタ8からのアドレスおよび前記レジスタlOからのア
ドレスを比較する比較回路13、およびこれら比較回路
12および13の出力の論理積をとるアンドゲート14
から構成されている。前記レジスタlO紘レジスタフィ
ルタで構成されてもよい。
次に本発明の一実施例の動作を詳細に説明する。
命令取出のために生成された仮想アドレスはキャッシュ
メモリ(ここでは図示されていない)K送出されると同
時に仮想アドレスレジスタIKセットされる。仮想アド
レスレジスタ1の出力は切替回路2を通し、分岐命令の
アドレスを保持する分岐ヒストリバッファ([Q3およ
び分岐先アドレスを保持する分岐ヒストリバッファβ4
に供給される。
メモリ(ここでは図示されていない)K送出されると同
時に仮想アドレスレジスタIKセットされる。仮想アド
レスレジスタ1の出力は切替回路2を通し、分岐命令の
アドレスを保持する分岐ヒストリバッファ([Q3およ
び分岐先アドレスを保持する分岐ヒストリバッファβ4
に供給される。
アドレスレジスタlの内容によシ取出そうとする命令が
以前の取出して分岐命令を含みかつその分岐命令が条件
分岐成功または無条件分岐の場合、分岐先アドレスが分
岐予測バッファ4よシ得られる。分岐予測バッファ3お
よび4は2レベルで構成される。比較回路5もしくは6
のどちらで取出アドレスの一致が検出されたかによシ、
分岐ヒストリバ、77◎の出力が切替回路7によシ選択
され、分岐予測ビット信号とともに送出される。この分
岐予測アドレス出力を用い命令取出することによ)分岐
先命令語の取出しが高速化され、分岐命令の実行が高速
処理されることになる。
以前の取出して分岐命令を含みかつその分岐命令が条件
分岐成功または無条件分岐の場合、分岐先アドレスが分
岐予測バッファ4よシ得られる。分岐予測バッファ3お
よび4は2レベルで構成される。比較回路5もしくは6
のどちらで取出アドレスの一致が検出されたかによシ、
分岐ヒストリバ、77◎の出力が切替回路7によシ選択
され、分岐予測ビット信号とともに送出される。この分
岐予測アドレス出力を用い命令取出することによ)分岐
先命令語の取出しが高速化され、分岐命令の実行が高速
処理されることになる。
仮想アドレスレジスタIKセットされた命令取出アドレ
スはさらに取出した命令のアドレス範囲を保持する取出
命令アドレスレジスタ9および10に送出される。分岐
先の先頭命令の取出し時には両方のレジスタに取出アド
レスがセットされるが、2回目以降の取出しでは、取出
命令アドレスレジスタ([J)9にのみセットされる。
スはさらに取出した命令のアドレス範囲を保持する取出
命令アドレスレジスタ9および10に送出される。分岐
先の先頭命令の取出し時には両方のレジスタに取出アド
レスがセットされるが、2回目以降の取出しでは、取出
命令アドレスレジスタ([J)9にのみセットされる。
一方、取出した命令が一命令実行される度に取出命令ア
ドレスレジスタ(L)10の内容はカウンタ11を通し
て1が加算される。これによ〕取出した命令のアドレス
の上限と下限が保持される。ストアアドレスレジスタ8
はストア命令によるメモリへの書込アドレスを保持する
。このストアアドレスと取出した命令の範囲とは比較回
路12および13によシチェ。
ドレスレジスタ(L)10の内容はカウンタ11を通し
て1が加算される。これによ〕取出した命令のアドレス
の上限と下限が保持される。ストアアドレスレジスタ8
はストア命令によるメモリへの書込アドレスを保持する
。このストアアドレスと取出した命令の範囲とは比較回
路12および13によシチェ。
りされ、先取シした命令語の先行するストア命令による
書替があったかどうかが検出される。もし書替が検出さ
れた場合、命令の取出し直しから処理を再開する。取出
した命令を保持する命令バ。
書替があったかどうかが検出される。もし書替が検出さ
れた場合、命令の取出し直しから処理を再開する。取出
した命令を保持する命令バ。
7アおよび取出命令アドレスレジスタ9および10は、
分岐命令高速化のために3組用意されておシ、分岐命令
によシ命令ストリームが変更される度に他の組を使用す
るよう制御される。
分岐命令高速化のために3組用意されておシ、分岐命令
によシ命令ストリームが変更される度に他の組を使用す
るよう制御される。
分mヒストリバッファにセットキれていない分岐命令の
セットは次のように行なわれる。条件分岐成功または無
条件分岐命令の対応エントリが分岐予測バッファ9およ
びIOKない場合、分岐命令実行時に1分岐命令自身の
アドレスが取出命令アドレスレジスタ(L)10から仮
想アドレスレジスタ1にセットされる。次に該分岐命令
のアドレス計算によシ取出命令アドレスレジスター10
のレジスタファイル中の別のレジスタにセットされた分
岐先アドレスが取出され、仮想アドレスレジスタlで指
定された分岐予測バッファ(D)4にセットされるとと
もに1分岐予測バッファ(K)3に仮想アドレスレジス
タ1の内容がセットされる。2レベルの予測バッファの
どちらのレベルにセットするかは公知のリプレースメン
トアルゴリズムが使用される。
セットは次のように行なわれる。条件分岐成功または無
条件分岐命令の対応エントリが分岐予測バッファ9およ
びIOKない場合、分岐命令実行時に1分岐命令自身の
アドレスが取出命令アドレスレジスタ(L)10から仮
想アドレスレジスタ1にセットされる。次に該分岐命令
のアドレス計算によシ取出命令アドレスレジスター10
のレジスタファイル中の別のレジスタにセットされた分
岐先アドレスが取出され、仮想アドレスレジスタlで指
定された分岐予測バッファ(D)4にセットされるとと
もに1分岐予測バッファ(K)3に仮想アドレスレジス
タ1の内容がセットされる。2レベルの予測バッファの
どちらのレベルにセットするかは公知のリプレースメン
トアルゴリズムが使用される。
一方分岐予側バッ7ア9.IOK既にセットされた内容
が:命令の書替によ多分岐命令で無くなった、分岐先ア
ドレスが変更された、分岐成功が失敗に変ったなどの理
由で不正とな、った場合、分岐予測バッファ(K)3中
の有効性表示ピッ)(Vビット)のリセットが行なわれ
対応エントリの無効化が図られる。しかしFOR,T
R,ANプログラムなどで用いられるDOループの制御
用分岐命令は、同一ループの多数回使用があるので、た
とえ分岐不成功であっても、対応エントリをリセットし
ない。
が:命令の書替によ多分岐命令で無くなった、分岐先ア
ドレスが変更された、分岐成功が失敗に変ったなどの理
由で不正とな、った場合、分岐予測バッファ(K)3中
の有効性表示ピッ)(Vビット)のリセットが行なわれ
対応エントリの無効化が図られる。しかしFOR,T
R,ANプログラムなどで用いられるDOループの制御
用分岐命令は、同一ループの多数回使用があるので、た
とえ分岐不成功であっても、対応エントリをリセットし
ない。
すなわち、DOループを抜は出すときに必ず分岐予測は
失敗するが、この時毎回分岐ヒストリバッファの対応エ
ントリを無効化すると、再度このループを使用する時に
も分岐予測失敗となってしまい、性能が低下するからで
ある。
失敗するが、この時毎回分岐ヒストリバッファの対応エ
ントリを無効化すると、再度このループを使用する時に
も分岐予測失敗となってしまい、性能が低下するからで
ある。
第2図を参照すると、分岐予測時の性能が従来方式と比
較される。分岐予測成功時には、分岐命令実行時間が大
幅に改善されている。従来方式では条件分岐命令の演算
サイクルで、分岐成功/不成功が判断される。分岐成功
の場合状のサイクルから分岐先命令のアドレス計算サイ
クルが開始されるため、分岐命令の実行完了(Eサイク
ル終了)から分岐先命令のEサイクル終了まで4マシン
サイクル必要である。一方分岐予測を行った場合、分岐
命令の取出PIプサイルで分岐予測バッファを索引する
ことによシ、取出した命令に分岐成功予予測の分岐命令
を含む場合には分岐先アドレスを得ることができる。こ
のアドレスを用いて分岐先命令の取出およびデコードが
行われ、分岐命令のEサイクルの次のサイクルで、分岐
先命令が実行されることによ〕、本例のパイプライン構
造の場合、従来方式に比し分岐命令の実行時間が4倍高
速化される。
較される。分岐予測成功時には、分岐命令実行時間が大
幅に改善されている。従来方式では条件分岐命令の演算
サイクルで、分岐成功/不成功が判断される。分岐成功
の場合状のサイクルから分岐先命令のアドレス計算サイ
クルが開始されるため、分岐命令の実行完了(Eサイク
ル終了)から分岐先命令のEサイクル終了まで4マシン
サイクル必要である。一方分岐予測を行った場合、分岐
命令の取出PIプサイルで分岐予測バッファを索引する
ことによシ、取出した命令に分岐成功予予測の分岐命令
を含む場合には分岐先アドレスを得ることができる。こ
のアドレスを用いて分岐先命令の取出およびデコードが
行われ、分岐命令のEサイクルの次のサイクルで、分岐
先命令が実行されることによ〕、本例のパイプライン構
造の場合、従来方式に比し分岐命令の実行時間が4倍高
速化される。
本発明には、ループ制御用の分岐命令では分岐不成功時
分舷予測バッファの対応するエン) I)を無効化しな
いことkよ多分岐命令の性能を改善できるという効果が
ある。
分舷予測バッファの対応するエン) I)を無効化しな
いことkよ多分岐命令の性能を改善できるという効果が
ある。
第1図は本発明の一実施例を示す図、および第2図は分
岐予測の効果を示す図である。 第1図および第2図において、1・・・・・・仮想アド
レスレジスタ、2,7・・・・・・切替回路、3・・・
・・・分岐予測バッファ(転)、4・・・・・・分岐予
測バッファ(至)、5゜6.12.13・・・・・・比
較回路、8・・・・・・ストアアドレスレジスタ、9・
・・・・・取出命令アドレスレジスタ(ロ)、lO・・
・・・・散出命令アドレスレジスター、11・・・・・
・カウンタ。 A : アトし又it璋“ソ”イフル I ニ アトしス+□i+1イクル C: キ4ツシェア7七又ブイ1ノし E : 殉」賽′す′イクル 4イ9 2 膠d
岐予測の効果を示す図である。 第1図および第2図において、1・・・・・・仮想アド
レスレジスタ、2,7・・・・・・切替回路、3・・・
・・・分岐予測バッファ(転)、4・・・・・・分岐予
測バッファ(至)、5゜6.12.13・・・・・・比
較回路、8・・・・・・ストアアドレスレジスタ、9・
・・・・・取出命令アドレスレジスタ(ロ)、lO・・
・・・・散出命令アドレスレジスター、11・・・・・
・カウンタ。 A : アトし又it璋“ソ”イフル I ニ アトしス+□i+1イクル C: キ4ツシェア7七又ブイ1ノし E : 殉」賽′す′イクル 4イ9 2 膠d
Claims (1)
- 【特許請求の範囲】 分岐命令のアドレスと、該分岐命令の分岐先アドレスを
保持する分岐ヒストリバッファを備えた情報処理装置で
あって、 ループ制御用の分岐命令においては、分岐不成功時前記
分岐ヒストリバッファの対応するエントリの内容を無効
化しないことを特徴とする分岐予測制御方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1588585A JPS61175733A (ja) | 1985-01-30 | 1985-01-30 | 分岐予測制御方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1588585A JPS61175733A (ja) | 1985-01-30 | 1985-01-30 | 分岐予測制御方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPS61175733A true JPS61175733A (ja) | 1986-08-07 |
Family
ID=11901245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP1588585A Pending JPS61175733A (ja) | 1985-01-30 | 1985-01-30 | 分岐予測制御方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPS61175733A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63303432A (ja) * | 1987-01-22 | 1988-12-12 | Nec Corp | 分岐ヒストリテーブル書込制御方式 |
JPH01296341A (ja) * | 1988-05-25 | 1989-11-29 | Nec Corp | データ処理装置 |
US6754813B1 (en) | 1999-08-24 | 2004-06-22 | Fujitsu Limited | Apparatus and method of processing information for suppression of branch prediction |
-
1985
- 1985-01-30 JP JP1588585A patent/JPS61175733A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63303432A (ja) * | 1987-01-22 | 1988-12-12 | Nec Corp | 分岐ヒストリテーブル書込制御方式 |
JPH01296341A (ja) * | 1988-05-25 | 1989-11-29 | Nec Corp | データ処理装置 |
US6754813B1 (en) | 1999-08-24 | 2004-06-22 | Fujitsu Limited | Apparatus and method of processing information for suppression of branch prediction |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4477872A (en) | Decode history table for conditional branch instructions | |
US4725947A (en) | Data processor with a branch target instruction storage | |
US4827402A (en) | Branch advanced control apparatus for advanced control of a branch instruction in a data processing system | |
JPH0283735A (ja) | 命令先取り装置 | |
JPS6234242A (ja) | デ−タ処理システム | |
JPS6125169B2 (ja) | ||
JPH08320788A (ja) | パイプライン方式プロセッサ | |
US3553655A (en) | Short forward conditional skip hardware | |
JPS61175733A (ja) | 分岐予測制御方式 | |
JP3723019B2 (ja) | サブルーチンリターン相当の命令の分岐予測を行う装置および方法 | |
JPS5991551A (ja) | 分岐先アドレス予測を行なう命令先取り装置 | |
JP2534662B2 (ja) | 命令キヤツシユ制御方法 | |
JP2581565B2 (ja) | ガード付命令を実行するデータ処理装置 | |
JPH046983B2 (ja) | ||
JP2542565B2 (ja) | 分岐予測制御方式 | |
JPH04245334A (ja) | 情報処理装置の命令先読み制御方式 | |
JPS59183434A (ja) | 命令先取り制御方式 | |
JPS62159230A (ja) | 命令先取り装置 | |
JPH06301537A (ja) | 命令フェッチ回路 | |
JPS623341A (ja) | 条件付制御方法 | |
JPH0612256A (ja) | 命令キャッシュ制御方式 | |
JPS62159231A (ja) | 命令先取り装置 | |
JPH01296343A (ja) | データ処理装置 | |
JPH03177926A (ja) | 情報処理装置 | |
JPS62159232A (ja) | 命令先取り装置 |