JPH08234980A - 分岐先バッファを用いた分岐予測システム - Google Patents

分岐先バッファを用いた分岐予測システム

Info

Publication number
JPH08234980A
JPH08234980A JP7038473A JP3847395A JPH08234980A JP H08234980 A JPH08234980 A JP H08234980A JP 7038473 A JP7038473 A JP 7038473A JP 3847395 A JP3847395 A JP 3847395A JP H08234980 A JPH08234980 A JP H08234980A
Authority
JP
Japan
Prior art keywords
branch
signal
instruction
prediction
address
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
JP7038473A
Other languages
English (en)
Other versions
JP3494736B2 (ja
Inventor
Tetsuya Hara
哲也 原
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP03847395A priority Critical patent/JP3494736B2/ja
Priority to US08/578,992 priority patent/US5737590A/en
Publication of JPH08234980A publication Critical patent/JPH08234980A/ja
Application granted granted Critical
Publication of JP3494736B2 publication Critical patent/JP3494736B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/324Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address using program counter relative addressing

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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【目的】 BTBを用いた分岐予測システムにおいて、
BTBエントリの大きさを半減させる。 【構成】 分岐命令を分岐先生成器5が実行して得られ
る分岐先アドレスの下位パート(10数ビット)を、予
測インデクスとしてBTB3に登録・更新する。命令フ
ェッチ・ステージでは、連接器7はBTB3より読み出
した予測インデクス信号S1と分岐命令アドレスの上位
パート(数ビット)を与えるPC出力信号SA とを連接
して予測分岐先アドレス信号S2を生成・出力する。比
較器8は、分岐先アドレス信号SC と予測分岐先アドレ
ス信号S2とを比較して、一致/不一致を与える信号S
4を出力する。分岐予測ヒット判定器10は、実行結果
信号S5と予測方向信号S3との比較及び信号S4の結
果より分岐予測のミス・ヒットを判定する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、パイプライン構成の
プロセッサ等の情報処理装置における分岐予測を分岐先
バッファを用いて動的に行うシステムに関するものであ
る。
【0002】
【従来の技術】パイプライン方式のプロセッサにおいて
は、分岐によるパイプラインの乱れは、その性能向上を
阻む大きな原因となっている。そこで、通常のパイプラ
イン方式のプロセッサでは、分岐ペナルティを低減させ
るために分岐予測という技術が導入されている。この分
岐予測の方式としては、一般に、静的に行うものと、動
的に行うものとの2種類がある。
【0003】その内、静的に分岐予測を行う方式では、
コンパイラへの負担が大きく、しかも静的な予測結果を
命令を介してプロセッサに伝えるためにオブジェクト・
コードを変更しなければならないという短所がある。こ
れに対して、分岐先バッファを用いた分岐予測方式は、
分岐命令の実行時に動的に予測を行うので、オブジェク
ト・コードの互換性を保つことができるという利点があ
る。しかし、その反面、この方式は、分岐予測を行うた
めに必要な情報を予め保持しておく必要があり、そのた
めのハードウエアとして分岐先バッファ(以下、BTB
と称す。:Branch Target Buffe
r)が必要になる。
【0004】BTBを用いた従来の分岐予測システムの
構成を図27に示す。図27において、1は命令キャッ
シュメモリ中のタグを格納している部分であり、タグを
与える信号SB(タグ信号)を出力する。2は、同じく
命令キャッシュメモリ中の命令を格納している部分であ
り、ここでは命令キャッシュと呼んでいる。上記命令キ
ャッシュメモリは、PC11が出力するアドレス信号S
Aによってアクセスされる。その意味で、上記信号SA
命令キャッシュメモリのインデクスを与える信号であ
る。命令キャッシュ2より読み出される命令が分岐命令
である場合には、その分岐命令を与える信号を受けて分
岐先生成器5は、分岐命令を実行して得られる分岐先ア
ドレスを与える信号SC(分岐先アドレス信号)を生成
・出力する。又、デコーダ4によってデコードされた分
岐命令信号S14はALU(Arithmetic Logic Unit)
等及び分岐処理器9へ出力される。この信号S14を受
けて分岐処理器9は、分岐命令を実行し、Taken実
行かNot−taken実行かを示す実行結果(分岐方
向)を与える信号S5(実行結果信号)を生成・出力す
る。
【0005】一方、BTB3へのデータの登録・更新及
びBTB3からのデータの読み出しは、全てBTB制御
器13によって行われる。このBTB制御器13に入力
する信号は、上記分岐先アドレス信号SC、実行結果信
号S5、分岐予測ヒット判定器10が出力する予測ミス
・ヒット信号S6、PC出力信号SA、分岐方向予測器
6が出力する予測方向(それは、taken予測がno
t−taken予測かを表わす)を与える信号S3(予
測方向信号)及びBTBタグと履歴情報とからなるBT
Bエントリ情報を与える信号S11(BTBエントリ情
報信号)である。これらの信号に基づき、BTB制御器
13は、BTB3に対して書込み指令を与えるBTB書
込み信号S9、入力するPC出力信号SAに基づき生成
したアドレスを指定するBTBインデクス信号S7、及
びBTB3に登録ないし更新すべきデータを与えるBT
B登録・更新データ信号S8を出力して、データの登録
・更新を制御する。又、BTB制御器13は、BTB3
からデータを読み出すときには、入力するPC出力信号
AをBTBインデクス信号S7としてBTB3へ出力
し、これにより、BTB3は予測分岐先アドレスを与え
る信号S2P(予測分岐先アドレス信号)及び履歴情報
等を与える信号をそれぞれ比較器8とPC11及び分岐
方向予測器6へ出力する。
【0006】比較器8は、両信号SC,S2Pが与える
アドレスの全ビットが一致しているか否かの比較を行
い、その結果に応じて一致/不一致を与える信号S4を
出力する。分岐予測ヒット判定器10は、比較器8の出
力信号S4が与える比較結果(一致/不一致)から分岐
先の予測がヒットしたかミスであったかを判定すると共
に、両信号S3,S5が一致するか否かの比較を行って
分岐方向の予測のミス/ヒット判定を行う。そして、こ
れらの結果に応じて、分岐予測ヒット判定器10は予測
ミス・ヒット信号S6を出力する。
【0007】他方、タグチェック比較器14は、タグ信
号SBとPC出力信号SAの上位パートが一致しているか
否かの比較を行い、不一致の場合には、命令キャッシュ
・ミスヒット処理の実行を指令する信号S10を出力す
る。
【0008】従来のBTB3Pの1エントリは、命令キ
ャッシュとタグとを共有する場合には、エントリの有効
ビット(1bit)、タグ(数bit)、履歴情報(1
−2bit)、分岐先情報(分岐先アドレスに該当:3
0bit)で構成される。ここで、履歴情報とは、過去
に実行された分岐命令の結果(実行結果)を意味する。
このBTB3Pを用いて、以下の手順で分岐予測を行
う。分岐予測の並列処理を示す図を、図28に示す
(「コンピュータ・アーキテクチャ」:Henness
y & Patterson著、日経BP社、pp.3
04−307参照)。
【0009】(1) 登録、更新:分岐命令が実行され
ると、分岐先アドレスや分岐方向などの実行結果が、B
TB制御器13によって、その分岐命令の命令アドレス
で指定されるBTBエントリに登録・更新される。
【0010】(2) 予測:命令フェッチ・ステージに
おいて、命令キャッシュ2がアクセスされると同時に、
同じアドレスでBTB3Pのアクセスが行われる(図2
8のサイクルi)。分岐命令が登録されていれば、その
履歴情報に基づいて分岐方向予測器6が分岐方向の予測
を行い、予測方向(S3)がtaken予測を与える場
合には、PC11は、分岐先生成器5が求めた分岐先ア
ドレス(SC)を入力して設定する(図28のサイクル
(i+1))。
【0011】(3) 予測のチェック:分岐命令が実行
されると、分岐予測ヒット判定器10は、分岐処理器9
が出力する分岐命令の実行結果(S5)と分岐の予測方
向(S3)とを照らし合わせて、予測方向がヒットした
か否かのチェックを行う(図28のサイクル(i+
2))。予測が間違っていた場合には、分岐予測ヒット
判定器10が出力する予測ミス・ヒット信号S6に応じ
て、誤って投入された命令が無効化されると共に、正し
い命令流が再フェッチされる。
【0012】
【発明が解決しようとする課題】BTBを用いた分岐予
測方式では、BTBに登録されている分岐命令を対象に
予測を行うので、高い予測ヒット率を得るためには、B
TBのエントリがヒットすることが条件であり、従って
BTBには多くのエントリ数が必要となる。一般に、8
0%程度の予測ヒット率を得るためには、256〜1K
程度のBTBエントリが要求される(「スーパースカラ
・プロセッサ」:M.Johnson著、日経BP社、
pp.70−71参照)。
【0013】しかしながら、BTBの1エントリは30
数bitと大きいので、例えばBTBエントリ数が51
2エントリの場合では約2.2KB(1エントリ35b
it)の容量が必要となり、通常のマイクロプロセッサ
では命令キャッシュの容量が4KBあるいは8KBであ
ることを考えると、BTBに必要な容量の大きさはかな
りのものとなる。
【0014】このように、従来のBTBを用いた分岐予
測システムでは、予測ヒット率を上げるためにBTBエ
ントリ数を増やすと、ハードウエア量が大きくなるとい
う欠点がある。
【0015】この発明はかかる問題点に鑑みて成された
ものであり、予測ヒット率を低下させることなくBTB
エントリの大きさを低減させることを第一の目的として
いる。又、この発明の第2の目的は、予測できない分岐
先情報はBTBに登録しないこととしてBTBの有効利
用を計ることにある。更に第3の目的は、誤った予測に
よる命令キャッシュ・ミスヒット処理を実行しないよう
にすることにある。更に第4の目的は、予測された分岐
先アドレスと分岐命令の実行によって得られる分岐先ア
ドレスの各上位パートが相違する場合でも予測を可能と
して、分岐予測のヒット率の向上を図る点にある。更に
第5の目的は、従来、命令キャッシュ・ミスヒット判定
を行うために必要であったタグチェック比較器を省くこ
とにある。更に、第6の目的は、TLBを用いる場合で
も、予測分岐先アドレスと実際の分岐先アドレスの各上
位パートが異なっていても予測可能とすることにある。
更に第7の目的は、TLBを用いる場合に、命令キャッ
シュ・ミスヒット判定用の比較器とTLBの読出しポー
トとを省くことにある。更に第8の目的は、TLBを用
いる場合において、分岐予測ミスのペナルティ・サイク
ルを減らすことにある。更に第9の目的は、命令キャッ
シュ・ミスヒット時のペナルティ・サイクルを減らすこ
とにある。
【0016】
【課題を解決するための手段】請求項1に係る発明は、
各命令の実行をパイプライン構成で処理する装置におい
て、命令キャッシュメモリよりフェッチされた命令が分
岐命令であるときにはその分岐予測を分岐先バッファを
用いて行うシステムであって、前記分岐先バッファに
は、予め分岐命令を実行して得られた分岐先アドレスの
下位パートを与える信号が予測インデクス信号として保
持されており、実際にフェッチされた前記分岐命令の分
岐命令アドレスを与える信号を生成・出力する分岐命令
アドレス生成手段と、前記分岐先バッファよりフェッチ
された前記予測インデクス信号を前記分岐命令アドレス
生成手段の出力信号が与える前記分岐命令アドレスの上
位パートに連接して、予測分岐先アドレスを与える信号
を生成・出力する連接手段とを備えている。
【0017】請求項2に係る発明は、請求項1記載の分
岐先バッファを用いた分岐予測システムにおいて、前記
分岐命令を実際に実行して得られる分岐先アドレスを与
える信号を生成・出力する分岐先生成手段と、前記分岐
先生成手段の出力信号と前記連接手段の出力信号とを比
較して、その一致/不一致を与える信号を出力する比較
手段とを更に備えている。
【0018】請求項3に係る発明は、請求項2記載の分
岐先バッファを用いた分岐予測システムにおいて、前記
分岐先生成手段の出力信号が与える前記分岐先アドレス
の上位パートと前記分岐命令アドレス生成手段の出力信
号が与える前記分岐命令アドレスの上位パートとを比較
して、両者が一致する場合にのみ前記分岐先アドレスの
下位パートを前記分岐先バッファに格納する分岐先バッ
ファ制御手段を更に備えている。
【0019】請求項4に係る発明は、請求項2又は3記
載の分岐先バッファを用いた分岐予測システムにおい
て、前記分岐先バッファには、予め分岐命令を実行して
得られた履歴情報を与える信号が更に格納されており、
前記分岐命令を実際に実行して得られる分岐方向を与え
る信号を生成・出力する分岐処理手段と、前記分岐先バ
ッファよりフェッチされた前記履歴情報を与える信号に
基づき予測分岐方向を与える信号を生成・出力する分岐
方向予測手段と、前記分岐処理手段の出力信号と前記分
岐方向予測手段の出力信号とが一致するか否かを比較
し、その比較結果と前記比較手段の出力信号が与える結
果とに基づき分岐予測がヒットしたかミスしたかを判定
して予測判定結果を与える信号を生成・出力する予測ヒ
ット判定手段と、前記予測ヒット判定手段の出力信号が
前記分岐予測のヒットを与える場合にのみ、命令キャッ
シュのミスヒット処理の開始を指令する信号を生成・出
力する命令キャッシュ・ミスヒット判定手段とを更に備
えている。
【0020】請求項5に係る発明は、請求項1記載の分
岐先バッファを用いた分岐予測システムにおいて、前記
分岐命令を実際に実行して得られる分岐先アドレスを与
える信号を生成・出力する分岐先生成手段と、前記分岐
先生成手段の出力信号が与える前記分岐先アドレスの下
位パートと前記分岐先バッファよりフェッチされた前記
予測インデクス信号とを比較して、その一致/不一致を
与える信号を出力する予測インデクス比較手段と、前記
分岐命令アドレス生成手段の出力信号に応じて前記命令
キャッシュメモリよりフェッチされたタグを与える信号
と前記分岐先生成手段の出力信号が与える前記分岐先ア
ドレスの上位パートとを比較して、その一致/不一致を
与える信号を出力する上位パート比較手段と、前記予測
インデクス比較手段と前記上位パート比較手段の両出力
信号を受けて前記予測分岐先アドレスがヒットしたか否
かを判定する分岐予測ヒット判定手段とを更に備えてい
る。
【0021】請求項6に係る発明は、請求項5記載の分
岐先バッファを用いた分岐予測システムにおいて、その
入力が前記分岐先生成手段と前記分岐命令アドレス生成
手段とに、その出力が前記予測インデクス比較手段と前
記上位パート比較手段とにそれぞれ接続され、前記分岐
命令アドレス生成手段の出力信号と前記分岐先生成手段
の出力信号と選択的に出力し、前記分岐命令アドレス生
成手段の出力信号を出力する場合には当該出力信号を前
記上位パート比較手段にのみ入力するチェックアドレス
選択手段を更に備えている。
【0022】請求項7に係る発明は、請求項5記載の分
岐先バッファを用いた分岐予測システムにおいて、前記
命令キャッシュメモリは物理タグを与える信号を格納し
ており、前記分岐先生成手段の出力と前記上位パート比
較手段の入力との間に、前記分岐先生成手段の出力信号
を物理ページ番号としての信号に変換するアドレス変換
用のバッファを設けている。
【0023】請求項8に係る発明は、請求項6記載の分
岐先バッファを用いた分岐予測システムにおいて、前記
命令キャッシュメモリは物理タグを与える信号を格納し
ており、前記チェックアドレス選択手段の出力と前記上
位パート比較手段の入力との間に、前記チェックアドレ
ス選択手段の出力信号を物理ページ番号としての信号に
変換するアドレス変換用のバッファを設けている。
【0024】請求項9に係る発明は、請求項8記載の分
岐先バッファを用いた分岐予測システムにおいて、前記
分岐命令を実際に実行して得られる分岐方向を与える信
号を生成・出力する分岐処理手段と、前記分岐先バッフ
ァよりフェッチされた前記履歴情報を与える信号に基づ
き予測分岐方向を与える信号を生成・出力する分岐方向
予測手段とを更に備え、前記分岐予測ヒット判定手段に
代えて、前記分岐処理手段の出力信号と前記分岐方向予
測手段の出力信号とを受けて両信号が一致するか否かを
判定し且つその判定結果と前記予測インデクス比較手段
の出力信号が与える結果とに基づき予測判定結果を与え
る信号を出力する、新たな分岐予測ヒット判定手段を設
けると共に、前記上位パート比較手段と前記新たな分岐
予測ヒット判定手段の両出力に接続され、前記分岐予測
ヒット判定手段の出力信号が予測ヒットを示す場合にの
み命令キャッシュ・ミスヒット処理の開始を指令する信
号を出力する命令キャッシュ・ミスヒット判定手段を更
に備えており、前記分岐予測ヒット判定手段は予測ミス
と判定した時点で再フェッチ処理の開始指令を前記予測
判定結果を与える信号として出力する。
【0025】請求項10に係る発明は、請求項6記載の
分岐先バッファを用いた分岐予測システムにおいて、前
記命令キャッシュメモリは物理タグを与える信号を格納
しており、前記命令キャッシュメモリの出力と前記上位
パート比較手段の入力との間に、前記物理タグを与える
信号を仮想ページ番号としての信号に逆変換するアドレ
ス逆変換用のバッファを設けている。
【0026】
【作用】請求項1に係る発明では、連接手段は、(分岐
命令アドレスの上位パート+予測インデクス)の処理を
行って予測分岐先アドレスを生成する。
【0027】請求項2に係る発明では、比較手段は、連
接手段が生成した予測分岐先アドレスが実際に分岐命令
を実行して得られる分岐先アドレスに一致するか否かを
判定する。
【0028】請求項3に係る発明では、分岐先バッファ
制御手段は、分岐命令アドレスと分岐先アドレスの両上
位パートが一致する場合には予測インデクスを分岐先バ
ッファへ格納し、他方、不一致のときには上記格納を行
わない。
【0029】請求項4に係る発明では、命令キャッシュ
・ミスヒット判定手段は、予測ヒット判定手段が分岐予
測のヒットを示す信号を出力するまでは、命令キャッシ
ュ・ミスヒット処理の開始を指令しない。
【0030】請求項5に係る発明では、予測インデクス
比較手段が予測分岐先アドレスの下位パートと命令キャ
ッシュメモリをアクセスする際のインデクスとが一致し
ているか否かを比較し、上位パート比較手段が分岐先ア
ドレスの上位パートとタグとが一致しているか否かを比
較する。
【0031】請求項6に係る発明では、チェックアドレ
ス選択手段が分岐先アドレスを与える信号を選択的に出
力すると、予測インデクス比較手段及び上位パート比較
手段が、それぞれ予測インデクスと分岐先アドレスの下
位パートとの比較処理及びタグと分岐先アドレスの上位
パートとの比較処理を実行する。
【0032】請求項7に係る発明では、アドレス変換用
のバッファは分岐先アドレスを物理ページ番号としての
アドレスの形式に変換した上で、その物理アドレスとし
ての分岐先アドレスを上位パート比較手段に入力する。
【0033】請求項8に係る発明では、アドレス変換用
のバッファはチェックアドレス選択手段が選択的に出力
する信号を物理ページ番号としての形式に変換した上
で、その物理ページ番号としてのチェックアドレス選択
手段の出力信号を上位パート比較手段に入力する。
【0034】請求項9に係る発明では、命令キャッシュ
・ミスヒット判定手段は、分岐予測ヒット判定手段の出
力信号が予測ヒットを示す場合にのみ命令キャッシュ・
ミスヒット処理の開始を指令する。
【0035】請求項10に係る発明では、逆変換用のバ
ッファは、命令キャッシュメモリより出力された物理タ
グを与える信号を仮想ページ番号としての信号に逆変換
する。
【0036】
【実施例】
(実施例1)実施例1のポイントは、BTB(Branch T
arget Buffer:分岐先バッファ)に登録する分岐先情報
として、分岐先アドレスの下位パート(これを予測イン
デクスと呼ぶ)のみとした点にある。そして、命令フェ
ッチ時にBTBから読み出した予測インデクスをその時
のPC(プログラム・カウンタ)の上位パートに連接し
て、これにより予測分岐先アドレスを生成することとし
ている。
【0037】以下、実施例1の発明について詳述する。
【0038】ハードウエア量を小さくするためには、B
TBエントリの数を減らすか、又はエントリの大きさを
小さくするかのどちらかであるが、BTBの予測ヒット
率を落とさないようにするためにはエントリ数を減らす
ことを避ける必要があり、従ってエントリの大きさを小
さくするしかないことになる。従来のBTBエントリ
は、そのほとんどが分岐先情報で占められている。そこ
で、BTBエントリの大きさを抑えるためには、この分
岐先情報自体を削減することができないかについて検討
する必要がある。以下、この点について検討する。
【0039】一般に命令参照には局所性があるので、何
命令先まで移るのかを表わす分岐命令の飛び幅(分岐距
離)が小さい場合が多いものと考えられる。そこで、本
出願人は、分岐距離の分布を、コンピュータの性能を調
べるためのプログラムである、3つのSPECintを
含む8つの整数系プログラムについて調べた。
【0040】図1はその算術平均を与える図であり、P
Cのアドレス値に対して相対的に分岐するBranc
h、絶対アドレスで分岐するJump、Branchと
Jumpとを合計した分岐全体(Total)の各々に
ついて、分布と累積の割合を示している。同図から理解
されるように、分岐距離の短いものが多いので、分岐命
令のアドレスと分岐命令を実行して得られる分岐先アド
レスとを比べると、その上位アドレスが異なることは稀
であるものと考えられる。つまり、アドレスの全ビット
を予測で生成するのではなく、下位アドレスだけをBT
Bを用いて生成し、上位アドレスについては分岐命令の
アドレスの上位アドレス自体を用いることによって予測
分岐先アドレスを生成したとしても、予測の正確さはほ
とんど低下しないものと考えられる。そこで、この実施
例1では、分岐先アドレスの下位パートのみを予測イン
デクスとしてBTBに登録することとして、BTBエン
トリの分岐先情報として必要なビット数を削減すること
としている。
【0041】この分岐予測システムにおけるBTBエン
トリの構成を図2に、そのハードウエア構成を図3のブ
ロック図に、それぞれ示す。
【0042】図3において、1は命令キャッシュメモリ
中のタグを格納している部分であり、タグを与える信号
B(タグ信号)を出力する。2は、同じく命令キャッ
シュメモリ中の命令を格納している部分であり、ここで
は命令キャッシュと呼んでいる。上記命令キャッシュメ
モリは、PC11が出力するアドレス信号SAによって
アクセスされる。その意味で、上記信号SAは命令キャ
ッシュメモリのインデクスを与える信号である。命令キ
ャッシュ2より読み出される命令が分岐命令である場合
には、その分岐命令を与える信号を受けて分岐先生成器
5は、分岐命令を実行して得られる分岐先アドレスを与
える信号SC(分岐先アドレス信号)を生成・出力す
る。このとき、PC11は、分岐命令アドレスを与える
信号を生成・出力する分岐命令アドレス生成器にあた
る。又、デコーダ4によってデコードされた分岐命令信
号S14は、ALU(Arithmetic Logic Unit)等及び
分岐処理器9へ出力される。この信号S14を受けて分
岐処理器9は、分岐命令を実行し、Taken実行かN
ot−taken実行かを示す実行結果(分岐方向)を
与える信号S5(実行結果信号)を生成・出力する。
【0043】一方、BTB3へのデータの登録・更新
(登録ないし更新を総称して、格納と呼ぶ)及びBTB
3からのデータの読み出しは、全てBTB制御器13に
よって行われる。このBTB制御器13に入力する信号
は、上記分岐先アドレス信号SC、実行結果信号S5、
分岐予測ヒット判定器10が出力する予測ミス・ヒット
信号S6、PC出力信号SA、分岐方向予測器6が出力
する予測方向(それは、taken予測かnot−ta
ken予測かを表わす)を与える信号S3(予測方向信
号)及びBTBタグと履歴情報とからなるBTBエント
リ情報を与える信号S11(BTBエントリ情報信号)
である。これらの信号に基づき、BTB制御器13はB
TB3に対して書込み指令を与えるBTB書込み信号S
9、入力するPC出力信号SAに基づき生成したアドレ
スを指定するBTBインデクス信号S7、及びBTB3
に登録ないし更新すべきデータを与えるBTB登録・更
新データ信号S8を出力して、データの登録・更新を制
御する。又、BTB制御器13は、BTBからデータを
読み出すときには、入力するPC出力信号SAをBTB
インデクス信号S7としてBTB3へ出力し、これによ
りBTB3は予測インデクスを与える信号S1(予測イ
ンデクス信号)及び履歴情報等を与える信号をそれぞれ
連接器7及び分岐方向予測器6へ出力する。連接器7
は、上記信号S1とPC出力信号SAが与えるアドレス
の上位パートとの連接を行い、得られた信号を予測分岐
先アドレスを与える信号S2(予測分岐先アドレス信
号)として分岐先アドレス比較器8(以後、単に比較器
8と称す)及びPC11へ出力する。
【0044】比較器8は、両信号SC,S2が与えるア
ドレスの全ビットが一致しているか否かの比較を行い、
その結果に応じて一致/不一致を与える信号S4を出力
する。分岐予測ヒット判定器10は、比較器8の出力信
号S4が与える比較結果(一致/不一致)から分岐先の
予測がヒットしたかミスであったかを判定すると共に、
両信号S3,S5が一致するか否かの比較を行って分岐
方向の予測のミス/ヒット判定を行う。そして、これら
の結果に応じて、分岐予測ヒット判定器10は予測ミス
・ヒット信号(予測判定結果信号)S6を出力する。
【0045】他方、タグチェック比較器14は、タグ信
号SBとPC出力信号SAの上位パートとが一致している
か否かの比較を行い、不一致の場合には命令キャッシュ
・ミスヒット処理の実行開始を指令する信号S10を出
力する。
【0046】本システムでは、以下の処理手順によって
分岐予測を行う。
【0047】(1) 登録・更新:分岐命令が命令キャ
ッシュ2よりフェッチされてその分岐命令が実行される
と、分岐先生成器5が分岐先アドレス(これは、再フェ
ッチ時のアドレスとしてPC11に設定されるので、再
フェッチ・アドレスと呼ばれる。)を与える信号SC
生成し、その分岐先アドレス信号SCを受けてBTB制
御部13は、分岐先アドレス(SC)の下位パートのみ
(これを予測インデクスと呼ぶ。)を分岐先情報とし
て、又、分岐方向などの実行結果(S5)やBTBエン
トリ情報(S11)と共に、その分岐命令の命令アドレ
スで指定されるBTBエントリに登録・更新する。
【0048】(2) 予測:命令フェッチ・ステージに
おいて、命令キャッシュ2がアクセスされると同時に、
BTB制御器13によって同じアドレスでBTB3のア
クセスが行われる。分岐命令が登録されていれば、その
履歴情報に基づいて分岐方向予測器6が分岐方向の予測
を行い予測方向信号S3を出力すると同時に、BTB制
御器13は、BTBエントリにおける分岐先情報のフィ
ールドから予測インデクスを読み出し、連接器7は、そ
のサイクルにおけるPC11の出力信号SAが与える分
岐命令アドレスの上位パートに上記予測インデクスを連
接して、予測分岐先アドレス(PTA:Predict
ed Target Address)を与える信号S
2を生成する。分岐方向の予測(S3)が分岐するこ
と、即ちtakenであれば、PC11は予測分岐先ア
ドレス(S2)を入力して設定する。
【0049】(3) 予測のチェック:分岐命令が分岐
処理器9によって実行されると、分岐予測ヒット判定器
10は、その実行結果S5(TakenかNot−ta
kenかを示す結果)と分岐予測の分岐方向(予測方向
S3:takenかnot−takenかを示す)との
一致比較、及び分岐先の一致比較を行い、分岐予測のチ
ェックを行う。分岐方向が一致しない、あるいは、一致
してもTaken実行の場合は分岐先が一致しないなら
ば、予測が間違っていることであり、誤って投入された
命令が無効化されると共に、正しい命令流が再フェッチ
される。
【0050】以上のように、BTB3に保持する分岐先
情報である予測インデクスのビット数を少なくすると、
BTBエントリの大きさを小さくすることはできるが、
変位で表現可能な分岐距離も限定され予測ヒット率が低
下する可能性がある。しかし、図1によれば、変位、即
ち分岐距離の対数値が10bitで95%の分岐命令
を、17bitで100%をカバーできることがわか
る。
【0051】したがって、分岐先情報としてBTB3に
保持する予測インデクスは10数ビットで済むので、B
TBエントリの大きさを従来の30数ビットから10数
ビットに半減することができ、BTB3の面積を抑える
ことができる。
【0052】このように本実施例1によれば、予測ヒッ
ト率を低下させることなく、BTBエントリの大きさを
従来の30数ビットから10数ビットに半減することが
でき、BTBの面積を抑えることができるという利点が
ある。
【0053】(実施例2)実施例1における予測インデ
クス保持方式は、BTBをアクセスしたときの分岐命令
アドレスの上位パートに分岐先アドレスの下位パート
(予測インデクス)を連接しているので、確かにBTB
の面積を抑えることができる利点を有してはいるが、分
岐先アドレスと分岐命令アドレスの双方の上位パートが
異なる場合には、正しい予測を行うことができないとい
う問題点も有している。
【0054】この問題点を簡単に説明するために、今、
分岐命令のアドレスが8ビットであるものとする。図4
に示すように、分岐命令アドレスが00010110で
与えられる分岐命令が実行され、その結果、分岐先アド
レス00101011に分岐したものとする。ここでB
TBが保持する予測インデクスを仮に4ビットであるも
のとすると、分岐先アドレスの下位パート1011がB
TBに予測インデクスとして登録される。その後、PC
のカウント値が00010110になると上記分岐命令
が再度フェッチされるので、BTBから予測インデクス
である1011が読み出されてPCの上位パート000
1との連接が行われる結果、予測分岐先アドレス000
11011が生成される。しかしながら、この予測分岐
先アドレス00011011は正しい分岐先アドレス0
0101011とは違うので(図4参照)、分岐先予測
は必ずミスヒットになる。つまり、BTBに予測インデ
クスを登録しても正しい予測を行うことはできず、毎回
予測ミスヒット・ペナルティが生じる。
【0055】そこで、この実施例2では、分岐命令アド
レスと分岐先アドレスのそれぞれの上位パート同士が異
なる場合には、その分岐命令の分岐先情報をBTBに登
録しないこととする。そのために、図5に示すように、
分岐命令アドレスと分岐先アドレスの両上位パートの一
致比較を行う上位パート比較器19をBTB制御器13
A内に新たに設け、分岐命令の実行時にそれらの比較を
行うこととしている。その他の点では、実施例1と同一
である。
【0056】図5に示したBTB制御器13Aの各部の
内で、BTB書き込み/読み出し制御部15,登録・更
新データ生成部16,BTBインデクス生成部17及び
シフトレジスタ18は実施例1のBTB制御器13と共
通する部分である。BTB書き込み/読み出し制御部1
5は、上位パート比較器19の出力結果に応じてその書
き込み制御動作を開始する。BTB書き込み/読み出し
制御部15が書き込みを指令する信号S12を出力する
場合には、BTBインデクス生成部17はシフトレジス
タ18の出力信号SEをBTBインデクス信号S7とし
て出力する。他方、BTB書き込み/読み出し制御部1
5が読み出しを指令する信号S12を出力するときは、
BTBインデクス生成部17はPC出力信号SAをBT
Bインデクス信号S7として出力する。
【0057】以下、登録段階でのBTB制御器13Aの
動作を説明する。
【0058】(1) 分岐命令アドレス、従ってPC出
力信号SAの上位パートと分岐先アドレス信号SCの上位
パートとが一致する場合は、通常のルールでBTBへの
登録が行われる。
【0059】(2) それに対して一致しない場合に
は、BTB登録を行っても正しい予測ができないので、
予測方向信号S3がtaken予測となっても、BTB
制御器13AはBTBへの登録を行わない。即ち、BT
B書き込み/読出し制御部15は、BTB書き込み信号
S9及び指令信号S12を出力しない。
【0060】これにより、2つの効果が得られる。その
1つの効果とは、予測が外れる分岐命令に関してはBT
Bへの登録が行われないので、BTBエントリを有効に
使うことができるということである。もう1つの効果と
は、taken予測の条件分岐では、実施例1のシステ
ムでは、BTBに分岐先情報を登録することにより、T
aken実行されようがNot−taken実行されよ
うが必ず予測が外れていたのが、本実施例2では上位パ
ート比較器19が不一致と判定したときにはBTBへの
登録は行われないので、Not−taken実行される
場合には予測が当たることとなり、分岐予測のヒット率
が向上するということである。
【0061】以上のように、予測が外れる分岐情報を登
録しないことによりBTBエントリの有効利用ができ、
しかも、taken予測であるがNot−taken実
行された条件分岐については、その予測が当たる。
【0062】(実施例3)命令キャッシュはアドレスの
一部(通常は下位アドレス)でアクセスされるため、キ
ャッシュ・アクセスに使用するアドレス(これをインデ
クスと呼ぶ)が同じ命令同士は、命令キャッシュメモリ
の同じエントリに格納される。そこで、読み出した命令
が正しい命令なのかそうでないのかを見分けるために、
命令キャッシュメモリでは上記インデクス部を除いた残
りのアドレスを保持しており、これをタグと呼ぶ。
【0063】通常は、プログラム・カウンタ(PC)か
ら与えられるアドレス(PC出力信号SA)を用いて命
令キャッシュメモリをアクセスすると、命令と同時にタ
グも読み出され、タグとPC出力の対応する部分との一
致比較(タグチェック)を行い、正しい命令が読み出せ
たかどうか、即ち命令キャッシュがヒットしたかどうか
の判定を行う。そして、タグがPC出力の対応部分と一
致しない場合は命令キャッシュ・ミスヒットであり、要
求の命令を一階層下のレベルの記憶装置(主記憶あるい
は2次キャッシュメモリ:図示せず)から持ってくると
いう「命令キャッシュ・ミスヒット処理」を行うことに
なる。この命令キャッシュ・ミスヒット処理を実行する
には、通常10数サイクルから30数サイクルが必要で
あり、その間、命令のフェッチを行うことができないと
いう問題点がある。
【0064】しかも、分岐予測を行う場合には、誤った
予測によっても命令キャッシュ・ミスヒット処理が開始
されることとなり、本来行う必要がない命令キャッシュ
・ミスヒット処理の実行によってパイプライン実行が妨
げられ、性能が低下するという問題点も生じる。
【0065】そこで、この実施例3では、分岐予測が正
しかったかどうかが判明するまで、命令キャッシュのミ
スヒット判定を行わないこととし、分岐予測が正しく、
しかも、命令キャッシュがミスヒットしていると判定さ
れた場合に限って、命令キャッシュのミスヒット処理を
開始することとしている。
【0066】そこで、実施例3では、図6に示すよう
に、分岐予測判定結果(ヒット/ミス)を与える信号S
6とタグチェックの結果を与える信号S10とをその入
力信号とする、命令キャッシュ・ミスヒット判定器22
(例えば、ANDゲート回路によって構成される。)を
設け、以下の処理を行う。尚、図6のタグチェック比較
器14は図3や図27のタグチェック比較器と同一であ
り、又、図6の(分岐予測及び分岐処理部)20は、図
3や図27における各部の内でタグ部1,命令キャッシ
ュ2,BTB3(3P)及びタグチェック比較器14を
除いた部分を包含する部分である。又、図6に示した
(分岐以外の命令の処理部)21は、図3や図27では
便宜上図示されていない。
【0067】(1) 予測分岐先によって読み出された
タグ(SB)と予測分岐先(SA)との一致比較(タグチ
ェック)を、タグチェック比較器14が行う(図28の
サイクル(i+1)参照)。
【0068】(2) 次のサイクルで、(分岐予測及び
分岐処理部)20が分岐予測のヒット判定を行う。
【0069】(3) 更に上記(1)と(2)の結果を
与える信号S10,S6により、命令キャッシュ・ミス
ヒット判定器22は、命令キャッシュのミスヒット処理
を行うか否かを決定する。
【0070】(3−1) 信号S10がタグの一致を示
す場合:この場合には、命令キャッシュはヒットしてお
り、信号S6に関係なく、命令キャッシュ・ミスヒット
判定器22は命令キャッシュ・ミスヒット処理を実行指
令する信号S10Aを出力しない。
【0071】(3−2) 信号S10がタグの不一致を
示す場合:信号S6が分岐予測のミスを示す場合:同じ
く、上記判定器22は信号S10Aを出力せず、命令キ
ャッシュ・ミスヒット処理は行われない。
【0072】信号S6が分岐予測のヒットを示す場合:
この場合に限り、上記判定器22は信号S10Aを出力
し、その結果、命令キャッシュ・ミスヒット処理が開始
される。
【0073】以上のように、この実施例3によれば、命
令キャッシュ・ミスヒット処理が本来行うべきものだけ
に限定されるので、誤った分岐予測に対して発生する不
必要な命令キャッシュ・ミスヒット処理に起因した性能
低下を回避できる。
【0074】(実施例4)実施例1の分岐予測システム
では、予測のヒット判定に際して比較器8(図3)が分
岐先アドレス(SC)と予測分岐先アドレス(S2)と
の全ビットを比較するため、分岐命令アドレスと分岐命
令より得られる分岐先アドレスのそれぞれの上位パート
が相違する場合には、予測分岐先アドレス(S2)と分
岐先アドレス(SC)とが一致しないので(図3の比較
器8の出力は「不一致」を示す。)、図3の分岐予測ヒ
ット判定器10は分岐予測が外れたものと判定する。
【0075】確かに、予測インデクス(図3のS1)の
ビット数が命令キャッシュのインデクスのビット数以上
の場合には、命令キャッシュのアクセスは予測インデク
スを用いて行われるので、予測分岐先アドレスの上位パ
ートは命令キャッシュの読み出しには関係せず、予測イ
ンデクスが正しく予測されていれば、仮に予測の上位パ
ートが間違っていても、命令キャッシュの正しいエント
リから命令を読み出すことになる。そこで、分岐先命令
が命令キャッシュメモリのライン置換により他の命令に
置き換えられていなければ、読み出した命令は正しい命
令となる。一般に、命令参照には局所性があるので、正
しい命令が読み出されている可能性はかなり高いと考え
られる。具体例で、その点を例示してみよう。
【0076】例えば、ループを構成する分岐命令があ
り、図7に示すように、その命令アドレスが00100
011であり、分岐先アドレスが00011101であ
るものとする。このとき、予測インデクスを4ビットで
あるとすると、分岐命令アドレスと分岐先アドレスの各
上位パートは相違することになる。命令キャッシュが4
ビットでインデクスされるものとすると、図7に示すよ
うに各命令が命令キャッシュに格納される。そして、P
C=00100011となったときに当該分岐命令がフ
ェッチされてBTBから予測インデクス1101が読み
出されると、PC出力と予測インデクス1101との連
接が行われる結果、予測分岐先アドレス0010110
1が生成される。この予測分岐先アドレス(00101
101)で以て次サイクルの命令キャッシュ・アクセス
が行われるが、命令キャッシュのインデクスは4bit
なので、命令キャッシュはインデクス1101でアクセ
スされることとなり、この場合には正しい命令が読み出
されている。
【0077】しかし、実施例1によれば、図7の例にお
いては、予測分岐先アドレス00101101と分岐命
令の実行により生成された分岐先アドレス000111
01との一致比較が全ビットについて行われるので、分
岐予測のミス・ヒット判定は不一致となり、分岐予測は
ミスヒットであると判断されてしまい、実際には正しい
命令が命令キャッシュよりフェッチされているにもかか
わらず、それらの命令が無効化されてしまうという不都
合が発生する。
【0078】そこで、この実施例4では、分岐予測のミ
ス・ヒット判定に際しては、BTBよりフェッチした予
測インデクス(S1)と分岐先アドレス(SC)の下位
パートとの比較を行うと共に、命令キャッシュメモリの
タグ部(1)から読み出したタグ(SB)と分岐命令実
行により生成された分岐先アドレス(再フェッチ・アド
レス)(SC)との一致比較(上位パートについての一
致比較に該当)を行うことにより、分岐予測が正しかっ
たかどうかの判定を行うこととしている。この点を、よ
り詳細に述べれば、次の通りである。
【0079】実施例1のBTB分岐予測システムでは、
既述した通り、先ず予測分岐先アドレスを用いて命令キ
ャッシュメモリのアクセスが行われ且つタグチェック比
較器がタグ部より読み出されたタグとPC出力の上位パ
ートの比較(タグチェック)を行うことにより、予測分
岐先に対応する命令がフェッチされているか否かのチェ
ックが行われている。次に、予測分岐先アドレスと分岐
命令の実行結果である分岐先アドレスとの比較及び分岐
方向の一致比較(実行結果と予測方向との比較)を各々
比較器及び分岐予測ヒット判定器が行うことによって、
予測が正しかったか否かの判定が行われている。
【0080】ここで、予測分岐先(の上位パート)を
A、命令キャッシュメモリから読み出されたタグをB、
分岐先アドレス(の上位パート)をCとしてそれぞれ表
わすものとすると、実際に分岐先アドレスCに対応する
命令がフェッチされているならば、つまり、B=Cであ
るならば、分岐予測は正しかったことになる。
【0081】ところが、実施例1では、A=B、A=C
が成立するか否かを調べ、共に成立していればB=Cと
なるので、正しい命令がフェッチされているものとして
分岐予測が正しいと判断していた。したがって、A≠C
であれば、B=Cであっても分岐予測はミスと判定され
ていた。
【0082】そこで、この実施例4では、命令キャッシ
ュメモリから読み出されたタグ(B)と分岐命令実行に
より生成された分岐先アドレス(C)との比較(B=
C)を直接行うことにより、タグチェックと予測判定と
を同時に行うこととして、前記の問題点を解決してい
る。
【0083】実施例4における分岐予測システムのハー
ドウエア構成を、ブロック図として図8に示す。このシ
ステムが実施例1と相違する点は、図8に示すように、
タグを表わす信号SBと分岐先アドレスを表わす信号SC
の上位パートを与える部分との一致比較を行う上位パー
ト比較器23を設け、更に、実施例1における予測分岐
先アドレスと分岐先アドレスの一致比較を行う比較器8
(図3)に代えて、命令キャッシュメモリのインデクス
部だけを比較する予測インデクス比較器8Aを設けた点
にある。そのため、予測インデクス比較器8Aは、予測
インデクスを与える信号S1と分岐先生成部5が出力す
る分岐先アドレス信号SCの下位パートを与える部分と
を、その入力信号としている。そして、分岐予測ヒット
判定器10Aは、上記予測インデクス比較器8Aの出力
する一致/不一致を与える信号S4と上位パート比較器
23の出力する一致/不一致を与える信号S12を受け
て、分岐先アドレスの予測がヒットしたか否かを判定す
る。以下、図9に処理の流れを、図10に処理ルールを
示す。
【0084】以上のように、この実施例4によれば、予
測分岐先と分岐先アドレスの双方の上位パートが異なる
場合でも、予測を行うことが可能になり、分岐予測ヒッ
ト率の向上が期待できる。
【0085】(実施例5)実施例5のポイントは、タグ
チェックと上位パートの比較のそれぞれに使用するアド
レスとして分岐先アドレス(SC)とPC出力(SA)と
を選択的に適用できるようにして、命令キャッシュ・ミ
スヒット処理のためのタグチェックと分岐予測の判定と
を同時に行うこととした点にある。以下、この実施例5
の着眼点とその構成の詳細について説明する。
【0086】実施例4のシステムでは、図8に示すよう
に、not−taken予測でNot−taken実行
の場合、あるいは、再フェッチ時の場合には命令キャッ
シュ・ミスヒット処理を行うか否かを判定するために
は、PC出力(SA)とタグ(SB)との比較を行うタグ
チェック比較器(14)が必要であった。
【0087】そこで、本実施例5のシステムにおいて
は、インデクスと上位パートの一致比較に使用するアド
レス(チェック・アドレス)を、選択器を用いてPC出
力(SA)あるいは分岐先アドレス(SC)の上位パート
から選択して与えることにより、分岐予測と命令キャッ
シュ・ミスヒット処理用の各判定を同じ比較器を利用し
て行い、これにより実施例4では必要とした上記タグチ
ェック比較器を省くことを可能とした。
【0088】そのハードウエア構成を図11に、処理の
流れを図12に、処理ルールを図13にそれぞれ示す。
図11に示すように、分岐先生成器5と予測インデクス
比較器8Bとの間にチェックアドレス選択器24を設け
ており、当該選択器24は、入力する予測方向信号S3
(taken /not−taken)とデコード後の
分岐命令を与える信号S14とに応じて、分岐先アドレ
ス信号SC及びPC出力信号SAの各上位パートを信号S
15として選択的に出力する。図13中、「チェックア
ドレス」の欄内の「PC」及び「target」は、分
岐先アドレス(SC)及びPC出力の各上位パートを示
す。
【0089】この実施例5によれば、命令キャッシュ・
ミスヒット判定用のタグチェック比較器を省くことがで
きるという利点がある。
【0090】(実施例6)プロセッサの記憶システムが
仮想記憶をサポートしている場合は、プログラム・カウ
ンタPCは仮想アドレスを保持している。そして、仮想
記憶システムの場合には、命令キャッシュメモリが保持
するタグとしては、物理タグあるいは仮想タグを採るこ
とができる。
【0091】仮想タグの場合には、命令キャッシュのミ
スヒット判定は、読み出したタグとPC出力(仮想アド
レス)との比較を行えばよい。しかし、物理タグを保持
する場合には、読み出したタグは物理ページ番号である
ので、PC出力の上位パート(仮想ページ番号と呼ぶ)
を物理ページ番号に変換してタグチェックを行う必要が
ある。この変換を行うためには、通常は、Translation
Lookaside Buffer(以下、TLBと称す)というアドレ
ス変換用のバッファが用いられる。即ち、このTLBを
仮想ページ番号で引くことにより対応する物理ページ番
号を読み出し、これによってPC出力の仮想アドレスか
ら物理アドレスへの変換が達成される。
【0092】図14は、実施例1のシステムが仮想記憶
システムとして用いられる場合に、当該システムにTL
Bを適用して得られるシステムの構成を示すものであ
り、図15はその場合の処理の流れを示す。処理手順
は、サイクル(i+1)においてTLB25による変換
(仮想ページ番号としての信号SAVから物理ページ番号
としての信号SAPへの変換)が加わる以外は、実施例1
の場合と同じである。
【0093】図14のシステムも新規なる構成を有する
ものではあるが、この場合にも実施例4で述べた問題点
と同じ問題がある。即ち、分岐命令のアドレスと分岐先
アドレスの各上位パートが相異する場合には、正しい命
令をフェッチしている可能性があるのに予測は全てミス
ヒットと判定されてしまうという問題点がある。
【0094】そこで、この実施例6では、分岐予測のヒ
ット判定を、命令キャッシュメモリから読み出したタグ
(SBP:物理タグ)と、分岐命令実行により生成された
分岐先アドレス(仮想アドレス)とを用いてTLBから
読み出した物理ページ番号との一致比較を行うことによ
り、タグチェックと同時に分岐予測が正しかったかどう
かの判定を行うこととしている。
【0095】実施例6における具体的なハードウエア構
成は、図16に示す通りである。即ち、TLBを第1及
び第2TLB26,27より構成することによりTLB
のポート数を増やし、これにより分岐先アドレス
(SC)を用いた読み出しをPC出力(SAV)を用いた
読み出しと並行して行えるようにしている。そして、第
2TLB27より読み出された物理ページ番号を与える
信号SCPと物理タグを与える信号SBPとの一致比較を行
う上位パート比較器23Cを新たに設けている。予測分
岐先と分岐先アドレス(SC)との一致比較を行う予測
インデクス比較器8Aは、予測インデクス信号S1と分
岐先アドレス信号SCとの比較、つまり命令キャッシュ
のインデクス部だけの比較を行う。
【0096】処理過程は、図17のようになる。又、処
理のルールは、図10に示すものと同様である。
【0097】以上より、実施例6によれば、予測分岐先
と分岐先アドレスの各上位パートが異なる場合でも、予
測を行うことが可能になり、分岐予測ヒット率の向上が
期待できるという利点がある。
【0098】(実施例7)実施例6のシステムでは、T
LBから読み出す情報としては、命令キャッシュ・ミス
ヒット判定用としてPC出力で読み出される物理ページ
番号(図16の信号SAP)と、分岐予測ヒット判定用と
して分岐先アドレスで読み出される物理ページ番号(図
16のSCP)の2つが必要であるので、それに対応して
TLBを2ポート構成にする必要がある。それに応じて
比較器もまた、タグチェック用と上位パート比較用の2
つを用意する必要がある。
【0099】そこで実施例7では、インデクスと上位パ
ートの一致比較に使用するアドレスとして分岐先アドレ
スとPC出力とが選択的に適用できるようにし、TLB
への入力を1つとして、上記TLBの出力を用いて命令
キャッシュのミスヒットチェックと分岐予測の判定とを
同時に行うようにしている。具体的には、次の通りであ
る。
【0100】本システムでは、図18のブロック図に示
すように、インデクスと上位パートの一致比較に使用す
るアドレスを、分岐先生成器5と予測インデクス比較器
8Dとの間に挿入配設されたチェックアドレス選択器2
4Dを用いて、PC出力(SA)あるいは分岐先アドレ
ス(SC)から選択して信号S15VをTLB28に与え
ることにより、上位パート比較器23D及び分岐予測ヒ
ット判定器10Dは分岐予測判定と命令キャッシュ・ミ
スヒット判定とを同じアドレス(即ち、信号S15P
与えるアドレス)で実行している。これにより、タグチ
ェック比較器が不要となり、しかもTLBを1ポート構
成で済ませることができる。
【0101】この場合の処理の流れを図19に示す。処
理ルールは、図13と同様である。
【0102】以上より、実施例7のシステムを用いれ
ば、命令キャッシュ・ミスヒット判定用のタグチェック
比較器とTLBの読み出しポートとを省くことができる
利点がある。
【0103】(実施例8)実施例7のシステムは、図2
0に示すように、分岐先生成やTLBアクセスに時間が
かかる構成を具備しているので、分岐予測がミスヒット
すると、not−taken予測でTaken実行ミス
やtaken予測でNot−taken実行のようにサ
イクル(i+2)の段階でそのミスヒットが判明してい
る場合でもサイクル(i+3)のヒット判定まで待つの
で、パイプラインに3サイクルの空きが生じてしまうと
いう問題点がある。
【0104】そこで、実施例8では、分岐方向不一致あ
るいは予測インデクス不一致時の予測ミスの場合には、
それが判明した時点で再フェッチ処理を開始することと
している。
【0105】この点を実現すべく、実施例8では、図2
1のブロック図に示すように、分岐予測ヒット判定器1
0Eと命令キャッシュ・ミスヒット判定器31とを別々
に設けている。分岐方向に関する予測方向信号S3及び
実行結果信号S5と予測インデクスの一致比較結果を与
える信号S4とを分岐予測ヒット判定器10Eに入力
し、当該判定器10Eが分岐方向不一致あるいは予測イ
ンデクス不一致による予測ミスを検出すると、タグチェ
ックの結果を待たずに再フェッチ処理を開始する。それ
に対して、予測ミスが検出されない場合には、次のステ
ージまで進み、命令キャッシュ・ミスヒット判定器31
はタグチェックの結果(S12)から命令キャッシュ・
ミスヒット判定を行う。命令キャッシュ・ミスヒット判
定器31は、例えばANDゲート回路によって構成され
る。
【0106】その処理の流れを図22に、処理ルールを
図23にそれぞれ示す。
【0107】以上より、実施例8によれば、分岐方向不
一致あるいは予測インデクス不一致により予測ミスとな
る場合のペナルティ・サイクルを減らすことができると
いう利点がある。
【0108】(実施例9)図24に示すように、分岐先
アドレスをEXCステージ(実行ステージ)でALU
(Arithmetic Logic Unit)を用いて生成する場合に実
施例6や実施例7の各システムを適用すると、TLBの
読み出しが遅れて、予測ミス時のペナルティが4サイク
ルになるという問題点がある。
【0109】そこで、実施例9では、命令キャッシュメ
モリから読み出されたタグ(物理タグ)を用いて直接T
LBを検索し、物理ページ番号が一致したエントリの仮
想ページ番号を読み出すことにする。そして、上記仮想
ページ番号を与える信号と分岐命令が生成した分岐先ア
ドレスの上位を与える信号との一致比較を行い、分岐予
測のヒット判定を行うものとする。以下、実施例9の本
システムの構成を、詳細に説明する。
【0110】従来のTLBは仮想ページ番号としてのア
ドレス信号でアクセスされた上で、物理ページ番号とし
てのアドレス信号を読み出し、タグチェック比較器によ
って物理ページ番号としてのアドレスと物理タグとの比
較が行われることにより、命令キャッシュのミスヒット
判定が行われていた。
【0111】ところで、図24に該当する構成では、物
理タグが読み出されるタイミングは、TLBに与える仮
想ページ番号(分岐先アドレスの上位パート)としての
信号がチェックアドレス選択器によって生成されるより
も1サイクル分だけ早い。そこで、この点を利用して、
この実施例9では、早く読み出される物理タグ信号(S
BP)を用いて直接TLBをアクセスして、仮想ページ番
号を与える信号(SBV)をTLBより読み出す。TLB
では、仮想ページ番号と物理ページ番号とが1対1に対
応しているので、TLBから読み出された命令の仮想ペ
ージ番号を与える信号と、分岐命令が生成した仮想ペー
ジ番号を与える信号との比較を行い、一致していれば実
行すべき命令がフェッチされていることになる。
【0112】従って、このシステムでは、TLBが物理
ページ番号を与える信号から仮想ページ番号を与える信
号への変換を行うことになり、従来のTLBが行う仮想
ページ番号を与える信号から物理ページ番号を与える信
号への変換の逆となる。
【0113】この逆変換TLB(アドレス逆変換用のバ
ッファ)29を用いた本システムのハードウエア構成を
図25に、その処理の流れを図26に各々示す。なお、
処理ルールは、図13で示されたものと同じである。
【0114】以上より、本実施例9によれば、命令キャ
ッシュ・ミスヒット時のペナルティを1サイクル分減ら
すことができるという利点がある。
【0115】
【発明の効果】請求項1に係る発明によれば、分岐先バ
ッファに格納すべき分岐先情報が削減されるので、分岐
先バッファがシステムのハードウエア構成で占める面積
を抑えることができる効果がある。
【0116】請求項2に係る発明によれば、分岐先バッ
ファのエントリの大きさを減少させた上で、分岐先の予
測を実行することができる効果がある。
【0117】請求項3に係る発明によれば、予測が外れ
る分岐先情報が分岐先バッファに格納されないので、分
岐先バッファのエントリを有効利用することが可能とな
り、しかも、分岐予測のヒット率を向上させることがで
きる効果がある。
【0118】請求項4に係る発明によれば、従来、誤っ
た分岐予測に対しても不必要に行われていた命令キャッ
シュ・ミスヒット処理を本来行うべきもののみに限定す
ることが可能となり、システムの性能向上を図ることが
できる効果がある。
【0119】請求項5に係る発明によれば、予測分岐先
アドレスと分岐先アドレスの双方の上位パートが相違し
ているが実際には正しい命令が命令キャッシュメモリか
ら読み出されている場合においても、分岐予測を確実に
実行すること可能となり、分岐予測のヒット率の向上を
図ることができる効果がある。
【0120】請求項6に係る発明によれば、従来技術で
は必要とされた命令キャッシュ・ミスヒット処理判定用
の比較器を不要とすることができる効果がある。
【0121】請求項7に係る発明によれば、予測分岐先
アドレスと分岐先アドレスの双方の上位パートが相違し
ているが実際には正しい命令が命令キャッシュメモリか
ら読み出されている場合においても、分岐予測を確実に
実行すること可能となり、分岐予測のヒット率の向上を
図ることができる効果がある。
【0122】請求項8に係る発明によれば、従来技術で
は必要とされた命令キャッシュ・ミスヒット処理判定用
の比較器及び複数個のアドレス変換用のバッファを用い
ることなく、分岐予測判定と命令キャッシュ・ミスヒッ
ト処理判定とを共通の上位パート比較手段を用いて行う
ことができるという効果がある。
【0123】請求項9に係る発明によれば、分岐方向不
一致ないし予測インデクス不一致として判定される分岐
予測ミスにより生じるシステムのペナルティ・サイクル
を減少させることができる効果がある。
【0124】請求項10に係る発明によれば、命令キャ
ッシュ・ミスヒット処理時のペナルティ・サイクルを1
サイクル分だけ減少させることができる効果がある。
【図面の簡単な説明】
【図1】 分岐距離の分布を示す説明図である。
【図2】 BTBエントリの構成を示す説明図である。
【図3】 この発明の実施例1である分岐予測システム
の構成を示すブロック図である。
【図4】 実施例1の問題点を指摘する説明図である。
【図5】 この発明の実施例2に於けるBTB制御器の
構成を示すブロック図である。
【図6】 この発明の実施例3である分岐予測システム
の構成を示すブロック図である。
【図7】 命令流と命令キャッシュ内の配置との関係を
示す説明図である。
【図8】 この発明の実施例4である分岐予測システム
の構成を示すブロック図である。
【図9】 実施例4に於ける処理の流れを示す説明図で
ある。
【図10】 実施例4に於ける処理ルールを示す説明図
である。
【図11】 この発明の実施例5である分岐予測システ
ムの構成を示すブロック図である。
【図12】 実施例5に於ける処理の流れを示す説明図
である。
【図13】 実施例5に於ける処理ルールを示す説明図
である。
【図14】 この発明の実施例6の基礎となる分岐予測
システムの構成を示すブロック図である。
【図15】 図14の分岐予測システムに於ける処理の
流れを示す説明図である。
【図16】 この発明の実施例6である分岐予測システ
ムの構成を示すブロック図である。
【図17】 実施例6に於ける処理の流れを示す説明図
である。
【図18】 この発明の実施例7である分岐予測システ
ムの構成を示すブロック図である。
【図19】 実施例7に於ける処理の流れを示す説明図
である。
【図20】 問題点を指摘する説明図である。
【図21】 この発明の実施例7である分岐予測システ
ムの構成を示すブロック図である。
【図22】 実施例8に於ける処理の流れを示す説明図
である。
【図23】 実施例8に於ける処理ルールを示す説明図
である。
【図24】 問題点を指摘する説明図である。
【図25】 この発明の実施例7である分岐予測システ
ムの構成を示すブロック図である。
【図26】 実施例8に於ける処理の流れを示す説明図
である。
【図27】 従来の分岐予測システムの構成を示すブロ
ック図である。
【図28】 従来の分岐予測システムに於ける処理の流
れを示す説明図である。
【符号の説明】
1 タグ、2 命令キャッシュ、3 BTB、4 デコ
ーダ、5 分岐先生成器、6 分岐方向予測器、7 連
接器、8 比較器、9 分岐処理器、10 分岐予測ヒ
ット判定器、11 PC、13 BTB制御器、14
タグチェック比較器、S1 予測インデクス信号、S2
予測分岐先アドレス信号、S3 予測方向信号、S4
一致/不一致信号、S5 実行結果信号、S6 予測
判定結果信号、SA PC出力信号、SB タグ信号、
C 分岐先アドレス信号、19上位パート比較器、2
2 命令キャッシュ・ミスヒット判定器、23 上位パ
ート比較器、24 チェックアドレス選択器、25,2
8 TLB、26 第1TLB、27 第2TLB、2
9 逆変換TLB、31 命令キャッシュ・ミスヒット
判定器。

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 各命令の実行をパイプライン構成で処理
    する装置において、命令キャッシュメモリよりフェッチ
    された命令が分岐命令であるときにはその分岐予測を分
    岐先バッファを用いて行うシステムであって、 前記分岐先バッファには、予め分岐命令を実行して得ら
    れた分岐先アドレスの下位パートを与える信号が予測イ
    ンデクス信号として保持されており、 実際にフェッチされた前記分岐命令の分岐命令アドレス
    を与える信号を生成・出力する分岐命令アドレス生成手
    段と、 前記分岐先バッファよりフェッチされた前記予測インデ
    クス信号を前記分岐命令アドレス生成手段の出力信号が
    与える前記分岐命令アドレスの上位パートに連接して、
    予測分岐先アドレスを与える信号を生成・出力する連接
    手段とを、備えた分岐先バッファを用いた分岐予測シス
    テム。
  2. 【請求項2】 請求項1記載の分岐先バッファを用いた
    分岐予測システムにおいて、 前記分岐命令を実際に実行して得られる分岐先アドレス
    を与える信号を生成・出力する分岐先生成手段と、 前記分岐先生成手段の出力信号と前記連接手段の出力信
    号とを比較して、その一致/不一致を与える信号を出力
    する比較手段とを、更に備えた分岐先バッファを用いた
    分岐予測システム。
  3. 【請求項3】 請求項2記載の分岐先バッファを用いた
    分岐予測システムにおいて、 前記分岐先生成手段の出力信号が与える前記分岐先アド
    レスの上位パートと前記分岐命令アドレス生成手段の出
    力信号が与える前記分岐命令アドレスの上位パートとを
    比較して、両者が一致する場合にのみ前記分岐先アドレ
    スの下位パートを前記分岐先バッファに格納する分岐先
    バッファ制御手段を、更に備えた分岐先バッファを用い
    た分岐予測システム。
  4. 【請求項4】 請求項2又は3記載の分岐先バッファを
    用いた分岐予測システムにおいて、 前記分岐先バッファには、予め分岐命令を実行して得ら
    れた履歴情報を与える信号が更に格納されており、 前記分岐命令を実際に実行して得られる分岐方向を与え
    る信号を生成・出力する分岐処理手段と、 前記分岐先バッファよりフェッチされた前記履歴情報を
    与える信号に基づき予測分岐方向を与える信号を生成・
    出力する分岐方向予測手段と、 前記分岐処理手段の出力信号と前記分岐方向予測手段の
    出力信号とが一致するか否かを比較し、その比較結果と
    前記比較手段の出力信号が与える結果とに基づき分岐予
    測がヒットしたかミスしたかを判定して予測判定結果を
    与える信号を生成・出力する予測ヒット判定手段と、 前記予測ヒット判定手段の出力信号が前記分岐予測のヒ
    ットを与える場合にのみ、命令キャッシュのミスヒット
    処理の開始を指令する信号を生成・出力する命令キャッ
    シュ・ミスヒット判定手段とを、更に備えた分岐先バッ
    ファを用いた分岐予測システム。
  5. 【請求項5】 請求項1記載の分岐先バッファを用いた
    分岐予測システムにおいて、 前記分岐命令を実際に実行して得られる分岐先アドレス
    を与える信号を生成・出力する分岐先生成手段と、 前記分岐先生成手段の出力信号が与える前記分岐先アド
    レスの下位パートと前記分岐先バッファよりフェッチさ
    れた前記予測インデクス信号とを比較して、その一致/
    不一致を与える信号を出力する予測インデクス比較手段
    と、 前記分岐命令アドレス生成手段の出力信号に応じて前記
    命令キャッシュメモリよりフェッチされたタグを与える
    信号と前記分岐先生成手段の出力信号が与える前記分岐
    先アドレスの上位パートとを比較して、その一致/不一
    致を与える信号を出力する上位パート比較手段と、 前記予測インデクス比較手段と前記上位パート比較手段
    の両出力信号を受けて前記予測分岐先アドレスがヒット
    したか否かを判定する分岐予測ヒット判定手段とを、更
    に備えた分岐先バッファを用いた分岐予測システム。
  6. 【請求項6】 請求項5記載の分岐先バッファを用いた
    分岐予測システムにおいて、 その入力が前記分岐先生成手段と前記分岐命令アドレス
    生成手段とに、その出力が前記予測インデクス比較手段
    と前記上位パート比較手段とにそれぞれ接続され、前記
    分岐命令アドレス生成手段の出力信号と前記分岐先生成
    手段の出力信号と選択的に出力し、前記分岐命令アドレ
    ス生成手段の出力信号を出力する場合には当該出力信号
    を前記上位パート比較手段にのみ入力する、チェックア
    ドレス選択手段を、更に備えた分岐先バッファを用いた
    分岐予測システム。
  7. 【請求項7】 請求項5記載の分岐先バッファを用いた
    分岐予測システムにおいて、 前記命令キャッシュメモリは物理タグを与える信号を格
    納しており、 前記分岐先生成手段の出力と前記上位パート比較手段の
    入力との間に、前記分岐先生成手段の出力信号を物理ペ
    ージ番号としての信号に変換するアドレス変換用のバッ
    ファを設けた、分岐先バッファを用いた分岐予測システ
    ム。
  8. 【請求項8】 請求項6記載の分岐先バッファを用いた
    分岐予測システムにおいて、 前記命令キャッシュメモリは物理タグを与える信号を格
    納しており、 前記チェックアドレス選択手段の出力と前記上位パート
    比較手段の入力との間に、前記チェックアドレス選択手
    段の出力信号を物理ページ番号としての信号に変換する
    アドレス変換用のバッファを設けた、分岐先バッファを
    用いた分岐予測システム。
  9. 【請求項9】 請求項8記載の分岐先バッファを用いた
    分岐予測システムにおいて、 前記分岐命令を実際に実行して得られる分岐方向を与え
    る信号を生成・出力する分岐処理手段と、 前記分岐先バッファよりフェッチされた前記履歴情報を
    与える信号に基づき予測分岐方向を与える信号を生成・
    出力する分岐方向予測手段とを更に備え、 前記分岐予測ヒット判定手段に代えて、 前記分岐処理手段の出力信号と前記分岐方向予測手段の
    出力信号とを受けて両信号が一致するか否かを判定し且
    つその判定結果と前記予測インデクス比較手段の出力信
    号が与える結果とに基づき予測判定結果を与える信号を
    出力する、新たな分岐予測ヒット判定手段を設けると共
    に、 前記上位パート比較手段と前記新たな分岐予測ヒット判
    定手段の両出力に接続され、前記分岐予測ヒット判定手
    段の出力信号が予測ヒットを示す場合にのみ命令キャッ
    シュ・ミスヒット処理の開始を指令する信号を出力する
    命令キャッシュ・ミスヒット判定手段を更に備えてお
    り、 前記分岐予測ヒット判定手段は予測ミスと判定した時点
    で再フェッチ処理の開始指令を前記予測判定結果を与え
    る信号として出力する、分岐先バッファを用いた分岐予
    測システム。
  10. 【請求項10】 請求項6記載の分岐先バッファを用い
    た分岐予測システムにおいて、 前記命令キャッシュメモリは物理タグを与える信号を格
    納しており、 前記命令キャッシュメモリの出力と前記上位パート比較
    手段の入力との間に、前記物理タグを与える信号を仮想
    ページ番号としての信号に逆変換するアドレス逆変換用
    のバッファを設けた、分岐先バッファを用いた分岐予測
    システム。
JP03847395A 1995-02-27 1995-02-27 分岐先バッファを用いた分岐予測システム Expired - Fee Related JP3494736B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP03847395A JP3494736B2 (ja) 1995-02-27 1995-02-27 分岐先バッファを用いた分岐予測システム
US08/578,992 US5737590A (en) 1995-02-27 1995-12-27 Branch prediction system using limited branch target buffer updates

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP03847395A JP3494736B2 (ja) 1995-02-27 1995-02-27 分岐先バッファを用いた分岐予測システム

Publications (2)

Publication Number Publication Date
JPH08234980A true JPH08234980A (ja) 1996-09-13
JP3494736B2 JP3494736B2 (ja) 2004-02-09

Family

ID=12526227

Family Applications (1)

Application Number Title Priority Date Filing Date
JP03847395A Expired - Fee Related JP3494736B2 (ja) 1995-02-27 1995-02-27 分岐先バッファを用いた分岐予測システム

Country Status (2)

Country Link
US (1) US5737590A (ja)
JP (1) JP3494736B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007514237A (ja) * 2003-12-15 2007-05-31 フリースケール セミコンダクター インコーポレイテッド 分岐先バッファにおいてエントリを割り当てる方法及び装置
WO2007099605A1 (ja) * 2006-02-28 2007-09-07 Fujitsu Limited 圧縮したアドレス情報により分岐予測する処理装置
US8006078B2 (en) 2007-04-13 2011-08-23 Samsung Electronics Co., Ltd. Central processing unit having branch instruction verification unit for secure program execution

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5574871A (en) * 1994-01-04 1996-11-12 Intel Corporation Method and apparatus for implementing a set-associative branch target buffer
US5875324A (en) * 1995-06-07 1999-02-23 Advanced Micro Devices, Inc. Superscalar microprocessor which delays update of branch prediction information in response to branch misprediction until a subsequent idle clock
KR19980032776A (ko) * 1996-10-16 1998-07-25 가나이 츠토무 데이타 프로세서 및 데이타 처리시스템
US5995749A (en) * 1996-11-19 1999-11-30 Advanced Micro Devices, Inc. Branch prediction mechanism employing branch selectors to select a branch prediction
US5978906A (en) 1996-11-19 1999-11-02 Advanced Micro Devices, Inc. Branch selectors associated with byte ranges within an instruction cache for rapidly identifying branch predictions
US6253316B1 (en) 1996-11-19 2001-06-26 Advanced Micro Devices, Inc. Three state branch history using one bit in a branch prediction mechanism
US5954816A (en) * 1996-11-19 1999-09-21 Advanced Micro Devices, Inc. Branch selector prediction
US6079005A (en) * 1997-11-20 2000-06-20 Advanced Micro Devices, Inc. Microprocessor including virtual address branch prediction and current page register to provide page portion of virtual and physical fetch address
US6079003A (en) * 1997-11-20 2000-06-20 Advanced Micro Devices, Inc. Reverse TLB for providing branch target address in a microprocessor having a physically-tagged cache
US6108774A (en) * 1997-12-19 2000-08-22 Advanced Micro Devices, Inc. Branch prediction with added selector bits to increase branch prediction capacity and flexibility with minimal added bits
US6810474B1 (en) * 1998-03-04 2004-10-26 Hitachi, Ltd. Information processor
US6279106B1 (en) 1998-09-21 2001-08-21 Advanced Micro Devices, Inc. Method for reducing branch target storage by calculating direct branch targets on the fly
US7020879B1 (en) * 1998-12-16 2006-03-28 Mips Technologies, Inc. Interrupt and exception handling for multi-streaming digital processors
US7257814B1 (en) 1998-12-16 2007-08-14 Mips Technologies, Inc. Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors
US6389449B1 (en) * 1998-12-16 2002-05-14 Clearwater Networks, Inc. Interstream control and communications for multi-streaming digital processors
US6490653B1 (en) * 1999-06-03 2002-12-03 International Business Machines Corporation Method and system for optimally issuing dependent instructions based on speculative L2 cache hit in a data processing system
US7134004B1 (en) * 1999-09-29 2006-11-07 Fujitsu Limited Processing device for buffering sequential and target sequences and target address information for multiple branch instructions
JP4049490B2 (ja) * 1999-09-29 2008-02-20 富士通株式会社 情報処理装置
US6502188B1 (en) 1999-11-16 2002-12-31 Advanced Micro Devices, Inc. Dynamic classification of conditional branches in global history branch prediction
JP2001273138A (ja) * 2000-03-24 2001-10-05 Fujitsu Ltd プログラム変換装置および方法
US6615300B1 (en) * 2000-06-19 2003-09-02 Transmeta Corporation Fast look-up of indirect branch destination in a dynamic translation system
JP2004518183A (ja) * 2000-07-14 2004-06-17 クリアウオーター・ネツトワークス・インコーポレイテツド マルチスレッド・システムにおける命令のフェッチとディスパッチ
JP2004505345A (ja) * 2000-07-21 2004-02-19 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 分岐ターゲットバッファを有するデータプロセッサ
US20020166042A1 (en) * 2001-05-01 2002-11-07 Yoav Almog Speculative branch target allocation
US7415602B2 (en) * 2002-06-24 2008-08-19 Infineon Technologies Ag Apparatus and method for processing a sequence of jump instructions
US7426631B2 (en) 2005-02-02 2008-09-16 International Business Machines Corporation Methods and systems for storing branch information in an address table of a processor
US20060218385A1 (en) * 2005-03-23 2006-09-28 Smith Rodney W Branch target address cache storing two or more branch target addresses per index
US20070088937A1 (en) * 2005-10-13 2007-04-19 International Business Machines Corporation Computer-implemented method and processing unit for predicting branch target addresses
US20070266228A1 (en) * 2006-05-10 2007-11-15 Smith Rodney W Block-based branch target address cache
US7827392B2 (en) * 2006-06-05 2010-11-02 Qualcomm Incorporated Sliding-window, block-based branch target address cache
JP2008165589A (ja) * 2006-12-28 2008-07-17 Fujitsu Ltd 情報処理装置
US20110093658A1 (en) * 2009-10-19 2011-04-21 Zuraski Jr Gerald D Classifying and segregating branch targets
US11150904B2 (en) 2017-08-18 2021-10-19 International Business Machines Corporation Concurrent prediction of branch addresses and update of register contents
US11150908B2 (en) 2017-08-18 2021-10-19 International Business Machines Corporation Dynamic fusion of derived value creation and prediction of derived values in a subroutine branch sequence
US10884746B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Determining and predicting affiliated registers based on dynamic runtime control flow analysis
US10908911B2 (en) 2017-08-18 2021-02-02 International Business Machines Corporation Predicting and storing a predicted target address in a plurality of selected locations
US10534609B2 (en) 2017-08-18 2020-01-14 International Business Machines Corporation Code-specific affiliated register prediction
US10719328B2 (en) 2017-08-18 2020-07-21 International Business Machines Corporation Determining and predicting derived values used in register-indirect branching
US10884745B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Providing a predicted target address to multiple locations based on detecting an affiliated relationship
US10884747B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Prediction of an affiliated register
US11061575B2 (en) 2017-09-19 2021-07-13 International Business Machines Corporation Read-only table of contents register
US10713050B2 (en) 2017-09-19 2020-07-14 International Business Machines Corporation Replacing Table of Contents (TOC)-setting instructions in code with TOC predicting instructions
US10725918B2 (en) 2017-09-19 2020-07-28 International Business Machines Corporation Table of contents cache entry having a pointer for a range of addresses
US10620955B2 (en) 2017-09-19 2020-04-14 International Business Machines Corporation Predicting a table of contents pointer value responsive to branching to a subroutine
US10705973B2 (en) 2017-09-19 2020-07-07 International Business Machines Corporation Initializing a data structure for use in predicting table of contents pointer values
US10884929B2 (en) 2017-09-19 2021-01-05 International Business Machines Corporation Set table of contents (TOC) register instruction
US10896030B2 (en) 2017-09-19 2021-01-19 International Business Machines Corporation Code generation relating to providing table of contents pointer values

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4679141A (en) * 1985-04-29 1987-07-07 International Business Machines Corporation Pageable branch history table
US5522053A (en) * 1988-02-23 1996-05-28 Mitsubishi Denki Kabushiki Kaisha Branch target and next instruction address calculation in a pipeline processor
US5265213A (en) * 1990-12-10 1993-11-23 Intel Corporation Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction
DE4211222B4 (de) * 1991-04-05 2009-05-28 Kabushiki Kaisha Toshiba, Kawasaki Abzweigungs-Vorhersage-Vorrichtung und Abzweigungs-Vorhersage-Verfahren für einen Super-Skalar-Prozessor
JP2761688B2 (ja) * 1992-02-07 1998-06-04 三菱電機株式会社 データ処理装置
US5423011A (en) * 1992-06-11 1995-06-06 International Business Machines Corporation Apparatus for initializing branch prediction information
US5442756A (en) * 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
US5577217A (en) * 1993-05-14 1996-11-19 Intel Corporation Method and apparatus for a branch target buffer with shared branch pattern tables for associated branch predictions
US5581717A (en) * 1994-03-01 1996-12-03 Intel Corporation Decoding circuit and method providing immediate data for a micro-operation issued from a decoder
US5608886A (en) * 1994-08-31 1997-03-04 Exponential Technology, Inc. Block-based branch prediction using a target finder array storing target sub-addresses

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007514237A (ja) * 2003-12-15 2007-05-31 フリースケール セミコンダクター インコーポレイテッド 分岐先バッファにおいてエントリを割り当てる方法及び装置
WO2007099605A1 (ja) * 2006-02-28 2007-09-07 Fujitsu Limited 圧縮したアドレス情報により分岐予測する処理装置
US7949862B2 (en) 2006-02-28 2011-05-24 Fujitsu Limited Branch prediction table storing addresses with compressed high order bits
JP5136405B2 (ja) * 2006-02-28 2013-02-06 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US8006078B2 (en) 2007-04-13 2011-08-23 Samsung Electronics Co., Ltd. Central processing unit having branch instruction verification unit for secure program execution

Also Published As

Publication number Publication date
JP3494736B2 (ja) 2004-02-09
US5737590A (en) 1998-04-07

Similar Documents

Publication Publication Date Title
JP3494736B2 (ja) 分岐先バッファを用いた分岐予測システム
US7437543B2 (en) Reducing the fetch time of target instructions of a predicted taken branch instruction
US9361110B2 (en) Cache-based pipline control method and system with non-prediction branch processing using a track table containing program information from both paths of a branch instruction
US6003128A (en) Number of pipeline stages and loop length related counter differential based end-loop prediction
JP3502592B2 (ja) 分岐予測装置
US7917731B2 (en) Method and apparatus for prefetching non-sequential instruction addresses
US6550004B1 (en) Hybrid branch predictor with improved selector table update mechanism
US7478228B2 (en) Apparatus for generating return address predictions for implicit and explicit subroutine calls
JP5231403B2 (ja) スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ
JPH0334024A (ja) 分岐予測の方法とそのための装置
JP2009536770A (ja) ブロックに基づく分岐先アドレスキャッシュ
US6647490B2 (en) Training line predictor for branch targets
US7017030B2 (en) Prediction of instructions in a data processing apparatus
JP3486690B2 (ja) パイプライン方式プロセッサ
US6993638B2 (en) Memory access device and method using address translation history table
US20040168043A1 (en) Line predictor which caches alignment information
US6546478B1 (en) Line predictor entry with location pointers and control information for corresponding instructions in a cache line
US6289428B1 (en) Superscaler processor and method for efficiently recovering from misaligned data addresses
US20050027921A1 (en) Information processing apparatus capable of prefetching instructions
US6636959B1 (en) Predictor miss decoder updating line predictor storing instruction fetch address and alignment information upon instruction decode termination condition
EP0912927B1 (en) A load/store unit with multiple pointers for completing store and load-miss instructions
US20040193855A1 (en) System and method for branch prediction access
EP0912930B1 (en) A functional unit with a pointer for mispredicted branch resolution, and a superscalar microprocessor employing the same
KR100251992B1 (ko) 분기 예측 장치

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071121

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081121

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081121

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091121

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees