JP2003005956A - 分岐予測装置、プロセッサ、及び分岐予測方法 - Google Patents

分岐予測装置、プロセッサ、及び分岐予測方法

Info

Publication number
JP2003005956A
JP2003005956A JP2001186473A JP2001186473A JP2003005956A JP 2003005956 A JP2003005956 A JP 2003005956A JP 2001186473 A JP2001186473 A JP 2001186473A JP 2001186473 A JP2001186473 A JP 2001186473A JP 2003005956 A JP2003005956 A JP 2003005956A
Authority
JP
Japan
Prior art keywords
branch
history
instruction address
value
index
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
JP2001186473A
Other languages
English (en)
Other versions
JP4027620B2 (ja
Inventor
Shinichiro Tako
真一郎 多湖
Tomohiro Yamana
智尋 山名
Yoshimasa Takebe
好正 竹部
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2001186473A priority Critical patent/JP4027620B2/ja
Priority to EP02251556A priority patent/EP1271308A3/en
Priority to US10/091,147 priority patent/US7055023B2/en
Publication of JP2003005956A publication Critical patent/JP2003005956A/ja
Application granted granted Critical
Publication of JP4027620B2 publication Critical patent/JP4027620B2/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, 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques

Abstract

(57)【要約】 【課題】本発明は、PHTを使用する分岐予測方式にお
いて、可能な限り小さなメモリ容量を使用しながらエン
トリ干渉を回避して分岐予測の精度を向上させた分岐予
測方式を提供することを目的とする。 【解決手段】分岐予測装置は、過去の分岐命令の履歴を
保持する履歴レジスタと、履歴レジスタが保持する履歴
と命令アドレスとから第1のインデックスを生成するイ
ンデックス生成回路と、各第1のインデックスに対して
命令アドレスの一部であるタグと分岐のし易さを示す第
1の値とを格納する履歴テーブルと、命令アドレスの少
なくとも一部を第2のインデックスとして命令アドレス
が示す命令の分岐先アドレスと分岐のし易さを示す第2
の値とを格納する分岐先バッファと、第1の値及び該第
2の値の何れかを選択することで分岐予測を行う選択ユ
ニットを含む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般に分岐命令の
分岐予測方式及びプロセッサに関し、詳しくは、PHT
(Pattern History Table)を用いた分岐予測方式及び
プロセッサに関する。
【0002】
【従来の技術】パイプライン動作を実行するプロセッサ
においては、分岐命令の分岐結果を待ってから分岐先ア
ドレスに分岐するのでは、命令フェッチのタイミングが
遅くなりパイプライン動作に乱れが生じる。従って、分
岐命令を実行する前に分岐予測をし、パイプライン動作
の流れに沿った一連の命令フェッチを可能にする必要が
ある。
【0003】分岐命令には、その分岐命令自体が分岐し
易い或いは分岐し難いといったように、ローカルな意味
で分岐方向に偏りが存在する場合が多い。また最近実行
された分岐命令の分岐結果に依存してある分岐命令が分
岐し易い或いは分岐し難いといったように、グローバル
な意味で分岐方向に偏りが存在する場合も多い。PHT
(Pattern History Table)は、このような分岐傾向の
ローカル性及びグローバル性を考慮して、高い精度で分
岐を予測する方式である。
【0004】図1は、従来のPHTを利用した分岐予測
方式の構成図である。
【0005】図1の分岐予測装置は、XOR回路11、
GHRユニット12、及びPHTユニット13を含む。
GHR(Global History Register)12は、最近実行
した分岐命令について分岐したか否かに関する履歴を記
録しておくレジスタである。分岐命令が分岐した場合に
はレジスタ内部を左に1ビットシフトしながら最下位ビ
ットに1を格納し、分岐命令が分岐しなかった場合には
レジスタ内部を左に1ビットシフトしながら最下位ビッ
トに0を格納する。例えば、GHR12が6ビット長で
あり、現在の内容が“011001”であるとする。この状態
で、ある分岐命令を実行した結果が「分岐」であったと
すると、GHR12の内容を左に1ビットシフトし更に
1を最下位ビットに挿入する。結果として、GHR12
の内容は“110011”となる。この“110011”は、6回前
の分岐命令が分岐、5回前の分岐命令が分岐、4回前の
分岐命令が非分岐、3回前の分岐命令が非分岐、2回前
の分岐命令が分岐、最も最近の分岐命令が分岐であった
ことを示す。
【0006】XOR回路11は、プログラムカウンタ1
0が示す実行する分岐命令アドレスとGHRユニット1
2の内容との排他的論理和を計算する。計算された排他
的論理和は、PHTユニット13にインデックスとして
供給される。
【0007】PHT13は、各インデックスに対して例
えば2ビットのカウントを格納するRAMである。ここ
でインデックスは、上述のようにプログラムカウンタ1
0の示す実行する分岐命令アドレスとGHRユニット1
2の内容との排他的論理和である。また、インデックス
の内容である2ビットのカウント値は、そのインデック
スをヒットした場合の予測結果である。カウント値が0
及び1の場合には分岐しないと予測し、カウント値が2
及び3の場合には分岐すると予測する。
【0008】例えば、GHR12の内容が“110011”で
あり、分岐命令アドレスが“001000”である場合、イン
デックスは“111011”となる。このインデックス“1110
11”の内容の2ビットカウント値を参照して、例えばカ
ウント値が2であるとする。上述のように2或いは3の
カウント値は分岐予測を意味するので、命令アドレスが
“001000”である現在実行しようとしている分岐命令
は、分岐すると予測する。実際に命令を実行した結果と
して分岐すれば、カウント値に1を加算する。また実際
に命令を実行した結果として分岐しない場合には、カウ
ント値から1を減算する。従って、例えば実際の実行結
果として分岐したとすると、カウント値は3に設定され
る。
【0009】その後、例えば、GHRユニット12が全
く同一の内容“110011”である状態で、同じ分岐命令ア
ドレス“001000”の分岐命令を再度実行する場合、イン
デックスは前回と同一の“111011”となる。この場合の
カウント値は3であり、分岐命令は分岐すると予測す
る。前述のように、GHRユニット12の内容は、最近
実行した分岐命令の分岐結果の履歴である。従って、最
近の分岐傾向が同一の条件で同一の分岐命令を実行した
場合には、その分岐結果は同一のインデックスに蓄積さ
れていく。次回同一のインデックスを参照したときに
は、そのカウント値が分岐予測に用いられる。
【0010】最近実行した分岐命令の分岐結果の履歴
が、上記の履歴と若干異なる場合として、例えばGHR
ユニット12の内容が“110010”であるとする。これは
上記の場合“110011”と比較して、最後の分岐命令の結
果が異なっていた場合である。この場合、上記と同一の
分岐命令アドレス“001000”の分岐命令を実行するとす
ると、インデックスは“111010”となる。従って、この
インデックスには、過去の分岐の履歴が“110010”であ
る条件で分岐命令アドレス“001000”の分岐命令を実行
した場合について、分岐結果が蓄積されていくことにな
る。
【0011】従って、仮に分岐命令がプログラム中に1
つしか存在しない場合には、各インデックスは、この分
岐命令の分岐の結果を種々の分岐履歴に対して蓄積する
ことになり、分岐履歴を反映した非常に高い精度での分
岐予測が可能となる。しかし分岐命令がプログラム中に
複数個存在する場合には、PHTユニット13内で互い
の分岐命令の結果が干渉し合うことになり、予測精度が
低下する。例えば、GHRユニット12の内容が“1110
10”の場合に分岐命令アドレス“000001”の分岐命令を
実行するとすると、インデックスは“111011”となり、
上記のようにGHR12の内容が“110011”であり分岐
命令アドレスが“001000”である場合と同一のインデッ
クスとなってしまう。このようにXOR回路11でイン
デックスを計算する方式では、異なった分岐命令間で同
一のインデックスを共有することになり、分岐結果の記
録が干渉してしまい予測精度が低下する。
【0012】予測精度を低下させないためには、GHR
ユニット12の内容とプログラムカウンタ10の内容と
を繋ぎ合わせてインデックスを作成すればよい。例え
ば、GHR12の内容が“110011”であり分岐命令アド
レスが“001000”である場合には、インデックスを“11
0011001000”とすればよい。しかしこの場合には、イン
デックスが長くなることで、PHTユニット13のRA
Mのエントリ数が大幅に増大してしまう。実際、この場
合のエントリ数は64倍(=26)に増大することにな
る。
【0013】
【発明が解決しようとする課題】上述のように、分岐予
測に使用するPHTにおいてエントリが干渉する構成に
おいては、分岐予測の精度が低下してしまうという問題
がある。しかし予測精度を向上させるために、PHTの
メモリ容量を必要以上に増大させることは望ましくな
い。可能な限り小さなメモリ容量で可能な限り予測精度
を向上させることが望ましい。
【0014】従って本発明は、PHTを使用する分岐予
測方式において、可能な限り小さなメモリ容量を使用し
ながらエントリ干渉を回避して分岐予測の精度を向上さ
せた分岐予測方式を提供することを目的とする。
【0015】
【課題を解決するための手段】本発明による分岐予測装
置は、過去の分岐命令の履歴を保持する履歴レジスタ
と、該履歴レジスタが保持する該履歴と命令アドレスと
から第1のインデックスを生成するインデックス生成回
路と、各第1のインデックスに対して該命令アドレスの
一部であるタグと分岐のし易さを示す第1の値とを格納
する履歴テーブルと、該命令アドレスの少なくとも一部
を第2のインデックスとして該命令アドレスが示す命令
の分岐先アドレスと分岐のし易さを示す第2の値とを格
納する分岐先バッファと、該第1の値及び該第2の値の
何れかを選択することで分岐予測を行う選択ユニットを
含むことを特徴とする。
【0016】上記分岐予測装置において、該選択ユニッ
トは、現在の命令アドレスに対して該分岐先バッファに
エントリが存在し且つ該現在の命令アドレスと現在の履
歴とに対して該履歴テーブルにエントリが存在する場合
には該第1の値を選択し、該現在の命令アドレスに対し
て該分岐先バッファにエントリが存在し且つ該現在の命
令アドレスと現在の履歴とに対して該履歴テーブルにエ
ントリが存在しない場合には該第2の値を選択すること
を特徴とする。
【0017】上記分岐予測装置においては、履歴テーブ
ル(PHT)のエントリに命令の一部をタグとして設け
ることで、異なった分岐命令間でのPHTエントリの干
渉を避けることが可能になる。しかしながらあるインデ
ックスを参照しても、タグが現在の命令に一致しない場
合には、当該履歴状況での当該命令に関する情報は登録
されていないことになる。このような場合には、分岐先
バッファ(BTB)を分岐予測に使用する。即ち、履歴
テーブルがヒットした場合(タグが一致)には、履歴テ
ーブルの第1の値を分岐予測に使用し、履歴テーブルが
ミスした場合(タグが不一致)には、分岐先バッファの
第2の値を分岐予測に使用する。
【0018】このように本発明による分岐予測方式で
は、エントリ干渉を回避して高精度な分岐予測が可能に
なるので、実際の分岐方向が確定する前に予測に基づい
て命令フェッチしても、予測がはずれる可能性は小さ
く、パイプライン動作の乱れを避けることが出来る。
【0019】また本発明による分岐予測方式では、分岐
先バッファの第2の値を予測に併用することにより、従
来のようにPHT単体で分岐予測を実行する場合と比較
して、分岐結果を学習させるまでの時間が短くてすむ。
従って、本発明による分岐予測方式は、コンテキストス
イッチによる状況変化に短時間で対応できる。
【0020】
【発明の実施の形態】以下に、本発明の実施例を添付の
図面を用いて詳細に説明する。
【0021】図2は、本発明によるPHTを利用した分
岐予測装置の構成図である。
【0022】本発明による分岐予測装置は、XOR回路
21、GHRユニット22、タグ付きPHTユニット2
3、比較ユニット24、BTB(Branch Target Buffe
r)25、比較ユニット26、及び選択ユニット27を
含む。
【0023】GHR(Global History Register)22
は、最近実行した分岐命令について分岐したか否かに関
する履歴を記録しておくレジスタである。分岐命令が分
岐した場合にはレジスタ内部を左に1ビットシフトしな
がら最下位ビットに1を格納し、分岐命令が分岐しなか
った場合にはレジスタ内部を左に1ビットシフトしなが
ら最下位ビットに0を格納する。XOR回路21は、プ
ログラムカウンタ20が示す実行する分岐命令アドレス
とGHRユニット22の内容との排他的論理和を計算す
る。計算された排他的論理和は、タグ付きPHTユニッ
ト23にインデックスとして供給される。
【0024】タグ付きPHTユニット23は、XOR回
路21の出力である各インデックスに対して、タグ23
aとカウント値23bとを格納するRAMである。また
BTBユニット25は、命令アドレスの一部をインデッ
クスとして、タグ(命令アドレスの一部)25aと、分
岐命令の分岐先アドレス25bと、バイアスビット25
cとを格納するRAMである。
【0025】BTBユニット25は、従来の分岐予測方
式においても使用されるユニットであり、分岐命令が分
岐すると予測されると、その分岐先アドレスを直ちに提
供するために設けられる。通常分岐先アドレスは、フェ
ッチした分岐命令をデコードして命令を実行する時に算
出する必要があるために、分岐先アドレスの特定には時
間を要する。BTBを設けておき各分岐命令に対して分
岐先アドレスを格納しておくことで、分岐命令が分岐す
ると予測される時に、分岐先アドレスを直ちにBTBか
ら読み出すことが出来る。ここでBTBのメモリ容量を
小さくするために、命令アドレスの一部をインデックス
とし、残りの部分をタグとして、当該インデックスのエ
ントリの一部としてタグを格納しておく。
【0026】プログラムカウンタ20から命令アドレス
が入力されると、この命令アドレスに対応するインデッ
クスからタグ25aを読み出し、読み出したタグ25a
と入力命令アドレスの対応部分とを比較する。この比較
は、比較ユニット26によって実行される。比較結果が
一致を示す場合(ヒットした場合)には、この命令アド
レスの分岐命令が登録されていることになり、当該イン
デックスに格納されている分岐先アドレス25bをプリ
フェッチアドレスとして使用する。
【0027】バイアスビット25cは、その分岐命令が
分岐し易いが分岐し難いかを示す。1ビットで構成され
る場合には、例えば“1”が分岐し易いことを示し、
“0”が分岐し難いことを示す。このバイアスビット2
5cは、その分岐命令自体が分岐し易いか分岐し難いか
を示す、ローカルな意味での分岐方向の偏りに関する情
報である。
【0028】タグ付きPHTユニット23は、XOR回
路21が求めた命令アドレスの一部とGHRユニット2
2との排他的論理和をインデックスとして、過去に実行
した分岐結果の情報をカウント値23bとして保持す
る。本発明においては、タグ付きPHTユニット23
は、カウント値23bだけでなく、命令アドレスの一部
をタグ23aとして保持している。
【0029】プログラムカウンタ20の命令アドレスと
GHRユニット22の内容とからXOR回路21により
インデックスが求められると、タグ付きPHTユニット
23からタグ23aを読み出し、読み出したタグ23a
と入力命令アドレスの対応部分とを比較する。この比較
は、比較ユニット24によって実行される。比較結果が
一致を示す場合(ヒットした場合)には、GHRユニッ
ト22の内容が示す履歴状態での当該命令アドレスの分
岐命令の情報が登録されていることになる。この場合に
は、このインデックスに格納されているカウント値23
bを、分岐予測に使用する。カウント値23bは、例え
ば2ビットカウンタのカウントであり、0及び1の場合
には分岐しないと予測し、2及び3の場合には分岐する
と予測する。
【0030】タグ23aを設けることで、異なった分岐
命令間でのPHTエントリの干渉を避けることが可能に
なる。しかしながら、あるインデックスを参照しても、
タグ23aが現在の命令に一致しない場合(ミスした場
合)には、当該履歴状況での当該命令に関する情報は登
録されていないことになる。本発明では、このような場
合には、BTBユニット25のバイアスビット25cを
分岐予測に使用する。
【0031】即ち、タグ付きPHTユニット23がヒッ
トした場合(タグが一致)には、タグ付きPHTユニッ
ト23のカウント値23bを分岐予測に使用し、タグ付
きPHTユニット23がミスした場合(タグが不一致)
には、BTBユニット25のバイアスビット25cを分
岐予測に使用する。この選択は、選択ユニット27によ
って実行される。選択ユニット27は、比較ユニット2
4からの比較結果によって、タグ付きPHTユニット2
3がヒットしたか否かを検出する。この検出に基づい
て、比較ユニット24は、タグ付きPHTユニット23
からのカウント値23b或いはBTBユニット25から
のバイアスビット25cの何れかを選択し、選択したデ
ータに基づいて分岐予測をして分岐予測結果を出力す
る。なおBTBユニット25がヒットしていない場合に
は、分岐先アドレス25bが利用できないので、一律に
「分岐しない」と予測して予測結果を出力する。
【0032】図3は、本発明による分岐予測のフローチ
ャートである。
【0033】ステップS1で、BTBユニット25がヒ
ットしたか否かを判断する。ヒットした場合にはステッ
プS3に進み、ミスした場合にはステップS2に進む。
【0034】ステップS2で、BTBユニット25がヒ
ットしておらず分岐先アドレス25bが利用できないの
で、一律に「分岐しない」と予測する。
【0035】ステップS3で、タグ付きPHTユニット
23がヒットしたか否かを判断する。ヒットした場合に
はステップS5に進み、ミスした場合にはステップS4
に進む。
【0036】ステップS4で、BTBユニット25のバ
イアスビット25cに基づいて分岐予測を行う。
【0037】ステップS5で、タグ付きPHTユニット
23のカウント値23bに基づいて分岐予測を行う。
【0038】図4は、本発明によるデータ更新処理のフ
ローチャートである。
【0039】ステップS1で、BTBユニット25がヒ
ットしたか否かを判断する。ヒットした場合にはステッ
プS3に進み、ミスした場合にはステップS2に進む。
【0040】ステップS2で、ヒットしなかった対象命
令アドレスを、その分岐先アドレスと共にBTBユニッ
ト25に登録する。この際、実際に命令を実行した分岐
結果を、BTBユニット25のバイアスビット25cと
して格納する。即ち、実際の命令実行の結果、分岐をし
たのであれば1をバイアスビット25cに格納し、分岐
しなかったのであれば0をバイアスビット25cに格納
する。
【0041】ステップS3では、BTBユニット25が
ヒットしているので、BTBユニット25の対象命令ア
ドレスを更新する。
【0042】ステップS4で、タグ付きPHTユニット
23がヒットしたか否かを判断する。ヒットした場合に
はステップS8に進み、ミスした場合にはステップS5
に進む。
【0043】ステップS 5で、対象命令を実際に実行し
た結果、実際の分岐方向が分岐予測と一致したか否かを
判断する。ここで判断対象の分岐予測は、タグ付きPH
Tユニット23がミスした場合であるので、BTBユニ
ット25のバイアスビット25cに基づいて行われたも
のである。判断の結果、一致する場合にはステップS6
に進み、一致しない場合にはステップS7に進む。
【0044】ステップS6で、何もせずに処理を終了す
る。これは、分岐予測の結果と実際の分岐の結果とが一
致する場合には、現状の分岐予測が適切であると判断で
きるからである。
【0045】ステップS7で、タグ付きPHTユニット
23に当該履歴状況での当該命令に関する情報を登録す
る。即ち、対象となるインデックスに、対象となる命令
アドレスのタグ23aを格納すると共に、カウント値2
3bに実際の分岐結果を格納する。例えば、分岐した場
合には2(“10”)を格納し、分岐しなかった場合には
1(“01”)を格納する。これは、分岐予測の結果と実
際の分岐の結果とが一致しない場合には、BTBユニッ
ト25のバイアスビット25cに基づく現状の分岐予測
が不適切であると判断できるからである。
【0046】ステップS8では、タグ付きPHTユニッ
ト23がヒットしているので、タグ付きPHTユニット
23のカウント値23bを更新する。具体的には、実際
の分岐結果が分岐の場合にカウント値23bを1増加さ
せ、分岐結果が分岐でない場合にカウント値23bを1
減少させる。なおカウント値23bが既に最大値(例え
ば2ビットカウンタなら3)の場合には、実際の分岐結
果が分岐であってもカウント値23bはそのままであ
る。またカウント値23bが既に最小値(例えば0)の
場合には、実際の分岐結果が非分岐であってもカウント
値23bはそのままである。
【0047】ステップS9で、BTBユニット25のバ
イアスビット25cとタグ付きPHTユニット23のカ
ウント値23bとについて、夫々の値をチェックする。
バイアスビット25cとカウント値23bとが、夫々0
と0(“00”)であるか或いは夫々1と3(“11”)で
ある場合に、ステップS11に進む。それ以外の場合に
は、ステップS10に進む。
【0048】ステップS10で、LRUビット等を更新
する。ここでLRU(Least Recently Used)ビットと
は、タグ付きPHTユニット23の各エントリに付加さ
れ、参照されてから最も使われなかったエントリを特定
するためのビットである。タグ付きPHTユニット23
を分岐予測に使用する毎に、このLRUビットを更新す
る。LRUビットの意味については後述する。
【0049】ステップS11で、タグ付きPHTユニッ
ト23の対象エントリを無効にする。即ち、タグ付きP
HTユニット23の当該対象エントリを実質的に削除す
る。これは、タグ付きPHTユニット23のカウント値
23bが特定の分岐方向を強く示唆しており且つBTB
ユニット25のバイアスビット25cがそれと同一の分
岐方向を示している場合には、BTBユニット25のバ
イアスビット25cで分岐を予測しても同一の予測結果
が得られるので、タグ付きPHTユニット23から登録
を抹消することで、タグ付きPHTユニット23のRA
Mのメモリ空間を有効に使用するためである。
【0050】以上が、本発明によるデータ更新処理であ
る。
【0051】以下に、本発明におけるセットアソシアテ
ィブ方式について説明する。
【0052】本発明においては、図2に示されるよう
に、タグ付きPHTユニット23が複数個設けられてい
てもよい。このように複数のタグ付きPHTユニット2
3を設けることで、同一インデックスに対して複数のエ
ントリを格納可能になる。例えば、4セットのPHTが
設けられる4−ウェイセットアソシアティブ方式におい
ては、同一インデックスに対して、4つまでのエントリ
を格納可能である。
【0053】このようにセットアソシアティブ方式を使
用した場合には、データ更新時にどのエントリを削除す
るかを決定する必要がある。例えば4−ウェイセットア
ソシアティブにおいて既に4つのエントリを使用してい
る状況で、5つめのエントリを格納する必要があるとす
ると、既存の4つのエントリの何れかを選択して削除す
る必要がある。例えば、図4のステップS7では、タグ
付きPHTユニット23に当該履歴状況での当該命令に
関する情報を登録するが、既に同一のインデックスに対
するエントリが満杯である場合には、既存の登録の何れ
かを削除して新規登録に置き換える必要がある。
【0054】図4のステップS10に関連して説明した
LRUビットは、既存エントリを新規エントリで置き換
える際に、置き換え対象のエントリを特定するために使
用される。LRUビットは、各エントリに対して保持さ
れ、各エントリの参照順序を示すビットである。このL
RUビットを調べることで、参照されてから最も長期間
使われなかったエントリを特定して、新規エントリと置
き換えることが出来る。
【0055】LRU方式は置き換え対象のエントリを特
定する方式の1つに過ぎず、他の方式として、最も使用
されなかった最低使用頻度のエントリを置換するLFU
(Least Frequently Used)方式、最も過去に登録され
たエントリを置換するFIFO(First-In First-Out)
方式、任意に選択したエントリを置換するランダム方式
などがある。
【0056】なおセットアソシアティブ方式を使用せず
タグ付きPHTユニット23が一つだけ設けられる場合
には、各インデックスに対して1つのエントリしか格納
することは出来ない。この場合、タグ付きPHTユニッ
ト23に新規の情報を登録する際に、既に同一のインデ
ックスに対して別の命令アドレスの登録がなされている
場合には、この既存の登録を削除して、新規登録に置き
換えることになる。
【0057】また図2に示されるように、BTBユニッ
ト25に対してもセットアソシアティブ方式を用いても
良い。
【0058】以下に、本発明による分岐予測を具体的な
プログラムの例を用いて説明する。
【0059】図5は、分岐命令を含むプログラムの一例
である。
【0060】GHRユニット22の長さは6であり、そ
の初期値を000000とする。
【0061】命令アドレス000001において、BTBユニ
ット25に0001をインデックスとしてアクセスすると、
タグミスが検出され「分岐しない」と予測する。これは
図3のステップS2に対応する。実際の命令実行の結
果、分岐命令が分岐するので予測がはずれる。BTBユ
ニット25のインデックス0001のエントリにタグ00、バ
イアス1、分岐先アドレス000011を登録する。これは図
4のステップS2に対応する。
【0062】GHRユニット22は、左に1ビットシフ
トしながら最下位ビットに分岐を表す1を格納し、結果
として000001となる。この状態で、予測結果と各レジス
タ/メモリの内容は、 PC=000001, 予測失敗, BTB[0001]=00-1-000011, GHR:00
0001 となる。ここでPCはプログラムカウンタを示し、BTB
の内容は、タグ00、バイアス1、及び分岐先アドレス000
011の順に示される。
【0063】次に命令アドレス000100において、BTB
ユニット25に0100をインデックスとしてアクセスする
と、タグミスが検出され「分岐しない」と予測する。実
際の命令実行の結果、分岐命令が分岐しないので予測が
あたる。BTBユニット25のインデックス0100のエン
トリにタグ00、バイアス0を登録する。
【0064】GHRユニット22は、左に1ビットシフ
トしながら最下位ビットに非分岐を表す0を格納し、結
果として000010となる。この状態で、予測結果と各レジ
スタ/メモリの内容は、 PC=000001, 予測成功, BTB[0100]=00-0- ******, GHR:0
00010 となる。
【0065】更に命令アドレス0005、0006、0007、及び
0008の分岐命令が分岐しない。結果として、上記と同様
に, PC=000101, 予測成功, BTB[0101]=00-0- ******, GHR=0
00100 PC=000110, 予測成功, BTB[0110]=00-0- ******, GHR:0
01000 PC=000111, 予測成功, BTB[0111]=00-0- ******, GHR=0
10000 PC=001000, 予測成功, BTB[1000]=00-0- ******, GHR=1
00000 となる。
【0066】更に命令アドレス001100において、BTB
ユニット25に1100をインデックスとしてアクセスする
と,タグミスが検出され「分岐しない」と予測する。実
際の命令実行の結果、分岐命令が分岐するので予測がは
ずれる。BTBユニット25のインデックス1100のエン
トリに、タグ00、バイアス1、分岐先アドレス001001を
登録する。
【0067】GHRユニット22は、左に1ビットシフ
トしながら最下位ビットに分岐を表す1を格納し、結果
として000001となる。この状態で、予測結果と各レジス
タ/メモリの内容は、 PC=001100, 予測失敗, BTB[1100]=00-1-001001, GHR=00
0001 となる。
【0068】ここで命令アドレス001001に分岐したの
で、再び命令アドレス001100において、BTBユニット
25に1100をインデックスとしてアクセスを行う。今回
はタグヒットが検出され、分岐先アドレス001001を得
る。BTBユニット25がタグヒットしたので、タグ付
きPHTユニット23がタグヒットするか否かをチェッ
クする。これは図3のステップS3に対応する。
【0069】具体的には、アドレス001100とGHRの内
容000001との排他的論理和001101をインデックスとし
て、タグ付きPHTユニット23にアクセスする。タグ
判定結果はミスなので、BTBユニット25のバイアス
ビットに基づいて、「アドレス001001に分岐する」と予
測する。これは図3のステップS4に対応する。実際の
命令実行の結果、分岐命令が001001に分岐し予測が的中
する。従って、図4のステップS6にあるように、BT
Bユニット25及びタグ付きPHTユニット23の更新
はしない。この状態で、予測結果と各レジスタ/メモリ
の内容は、 PC=001100, 予測成功, BTB[1100]=00-1-001001(更新無
し), GHR=000011 である。命令アドレス001100の分岐命令によって、ルー
プが更に3回実行されると、 PC=001100, 予測成功, BTB[1100]=00-1-001001(更新無
し), GHR=000111 PC=001100, 予測成功, BTB[1100]=00-1-001001(更新無
し), GHR=001111 PC=001100, 予測成功, BTB[1100]=00-1-001001(更新無
し), GHR=011111 となる。
【0070】ループが6回実行(5回分岐)された後
に、命令アドレス001100において、上記と同様に「アド
レス001001に分岐する」と予測する。この場合、ループ
は6回目で終了するので、分岐命令は分岐せず予測がは
ずれる。従って、図4のステップS7に示されるよう
に、命令アドレス001100とGHRの内容011111との排他
的論理和010011をタグ付きPHTユニット23のインデ
ックスとし、タグ1100とカウント値0を登録する。この
状態で、予測結果と各レジスタ/メモリの内容は、 PC=001100, 予測失敗, PHT[010011]=1100-0, GHR=11111
0 となる。
【0071】その後、命令アドレス001111において命令
アドレス000010に分岐すると、 PC=001111, 予測失敗, BTB[1111]=00-1-000010, GHR=11
1101 となる。
【0072】命令アドレス000010以降の命令を再度実行
すると、 PC=000100, 予測成功(非分岐), BTB及びPHT更新なし,
GHR=111010 PC=000101, 予測成功(非分岐), BTB及びPHT更新なし,
GHR=110100 PC=000110, 予測成功(非分岐), BTB及びPHT更新なし,
GHR=101000 PC=000111, 予測成功(非分岐), BTB及びPHT更新なし,
GHR=010000 PC=001000, 予測成功(非分岐), BTB及びPHT更新なし,
GHR=100000 PC=001100, 予測成功(分岐), BTB及びPHT更新なし, G
HR=000001 PC=001100, 予測成功(分岐), BTB及びPHT更新なし, G
HR=000011 PC=001100, 予測成功(分岐), BTB及びPHT更新なし, G
HR=000111 PC=001100, 予測成功(分岐), BTB及びPHT更新なし, G
HR=001111 PC=001100, 予測成功(分岐), BTB及びPHT更新なし, G
HR=011111 PC=001100, 予測成功(非分岐), PHT[010011]=1100-0,
GHR=111110 となる。ここで、ループの最後の繰り返しにおける命令
アドレス001100の実行においては、BTBユニット25
及びタグ付きPHTユニット23が双方共にヒットし、
タグ付きPHTユニット23のカウント値23bは0な
ので、非分岐を予測する。最後に、 PC=001111, 予測成功(分岐), BTB及びPHT更新なし, G
HR=111101 となる。従って、今回は分岐予測が全て的中することに
なる。
【0073】このプログラムの実行において、本発明に
よる分岐予測方式では、タグ付きPHTユニット23で
は1つのエントリしか使用していない。このように、本
発明の分岐予測方式は、RAMの使用容量が少なくて
も、高い予測精度を実現することが出来る方式である。
【0074】なお図1に示される従来技術の分岐予測方
式では、上記プログラムを実行した場合に、命令アドレ
ス000010以降の命令を2度目に実行した際であっても、
PHTエントリの干渉により全ての予測を的中させるこ
とは出来ない。
【0075】図6は、本発明による分岐予測装置を採用
したプロセッサの構成例を示す。
【0076】図6のプロセッサ100は、命令キャッシ
ュ101、データキャッシュ102、命令フェッチユニ
ット103、命令実行制御部104、レジスタ105、
レジスタ106、演算部107乃至110を含む。
【0077】命令キャッシュ101及びデータキャッシ
ュ102は、それぞれ命令及びデータを一時的に格納す
る。命令フェッチユニット103は、プログラムカウン
タの示すアドレスの命令を、命令キャッシュ101から
順次フェッチする。命令実行制御部104は、命令フェ
ッチユニット103がフェッチした命令を順次デコード
して、デコード結果に基づいて命令実行動作を制御す
る。レジスタ105、レジスタ106、及び演算部10
7乃至110は、演算実行ユニットを構成する。この演
算実行ユニットは、命令実行制御部104の制御の下で
動作して、命令に基づいた演算を実行する。ここで演算
部107乃至110は、夫々命令0乃至3を独立に実行
する形となっており、パイプライン動作を高速に実行可
能な構成となっている。
【0078】図2に示される本発明による分岐予測装置
は、命令フェッチユニット103に設けられ、分岐命令
があるときにその分岐方向を予測して、予測分岐方向に
対応したアドレスの命令をフェッチする。本発明による
分岐予測方式ではエントリ干渉を回避して高精度な分岐
予測が可能になるので、実際の分岐方向が確定する前に
予測に基づいて命令フェッチしても、予測がはずれる可
能性は小さく、パイプライン動作の乱れを避けることが
出来る。
【0079】また本発明による分岐予測方式では、BT
Bユニット25のバイアスビット25cを使用すること
により、従来のようにPHT単体で分岐予測を実行する
場合と比較して、分岐結果を学習させるまでの時間が短
くてすむ。従って、本発明による分岐予測方式は、コン
テキストスイッチによる状況変化に短時間で対応でき
る。8KBのRAMを使用したベンチマークjpeg, jbi
g, mpeg4, ghostscriptにおいて、本発明による分岐予
測方式は、平均で96%の予測精度を実現した。
【0080】以上、本発明を実施例に基づいて説明した
が、本発明は上記実施例に限定されるものではなく、特
許請求の範囲に記載の範囲内で様々な変形が可能であ
る。
【0081】
【発明の効果】本発明による分岐予測方式では、エント
リ干渉を回避して高精度な分岐予測が可能になるので、
実際の分岐方向が確定する前に予測に基づいて命令フェ
ッチしても、予測がはずれる可能性は小さく、パイプラ
イン動作の乱れを避けることが出来る。
【0082】また本発明による分岐予測方式では、BT
Bのバイアスビットを予測に併用することにより、従来
のようにPHT単体で分岐予測を実行する場合と比較し
て、分岐結果を学習させるまでの時間が短くてすむ。従
って、本発明による分岐予測方式は、コンテキストスイ
ッチによる状況変化に短時間で対応できる。
【図面の簡単な説明】
【図1】従来のPHTを利用した分岐予測方式の構成図
である。
【図2】本発明によるPHTを利用した分岐予測装置の
構成図である。
【図3】本発明による分岐予測のフローチャートであ
る。
【図4】本発明によるデータ更新処理のフローチャート
である。
【図5】分岐命令を含むプログラムの一例である。
【図6】本発明による分岐予測装置を採用したプロセッ
サの構成図である。
【符号の説明】
21 XOR回路 22 GHRユニット 23 タグ付きPHTユニット 24 比較ユニット 25 BTB(Branch Target Buffer) 26 比較ユニット 27 選択ユニット27
───────────────────────────────────────────────────── フロントページの続き (72)発明者 竹部 好正 神奈川県川崎市中原区上小田中4丁目1番 1号 富士通株式会社内 Fターム(参考) 5B013 BB01 BB02

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】過去の分岐命令の履歴を保持する履歴レジ
    スタと、 該履歴レジスタが保持する該履歴と命令アドレスとから
    第1のインデックスを生成するインデックス生成回路
    と、 各第1のインデックスに対して該命令アドレスの一部で
    あるタグと分岐のし易さを示す第1の値とを格納する履
    歴テーブルと、 該命令アドレスの少なくとも一部を第2のインデックス
    として該命令アドレスが示す命令の分岐先アドレス又は
    予測分岐先アドレスと分岐のし易さを示す第2の値とを
    格納する分岐先バッファと、 該第1の値及び該第2の値の何れかを選択することで分
    岐予測を行う選択ユニットを含むことを特徴とする分岐
    予測装置。
  2. 【請求項2】該選択ユニットは、現在の命令アドレスに
    対して該分岐先バッファにエントリが存在し且つ該現在
    の命令アドレスと現在の履歴とに対して該履歴テーブル
    にエントリが存在する場合には該第1の値を選択し、該
    現在の命令アドレスに対して該分岐先バッファにエント
    リが存在し且つ該現在の命令アドレスと現在の履歴とに
    対して該履歴テーブルにエントリが存在しない場合には
    該第2の値を選択することを特徴とする請求項1記載の
    分岐予測装置。
  3. 【請求項3】該選択ユニットは、該現在の命令アドレス
    に対して該分岐先バッファにエントリが存在しない場合
    には分岐しないと予測することを特徴とする請求項2記
    載の分岐予測装置。
  4. 【請求項4】該インデックス生成回路は、該履歴レジス
    タが保持する該履歴と該命令アドレスとの排他的論理和
    として該第1のインデックスを生成することを特徴とす
    る請求項1記載の分岐予測装置。
  5. 【請求項5】該履歴テーブルは該第1のインデックスの
    各々に対して複数のエントリが登録できるように複数個
    設けられることを特徴とする請求項1記載の分岐予測装
    置。
  6. 【請求項6】過去の分岐命令の履歴を保持する履歴レジ
    スタと、 該履歴レジスタが保持する該履歴と命令アドレスとから
    第1のインデックスを生成するインデックス生成回路
    と、 各第1のインデックスに対して該命令アドレスの一部で
    あるタグと分岐のし易さを示す第1の値とを格納する履
    歴テーブルと、 該命令アドレスの少なくとも一部を第2のインデックス
    として該命令アドレスが示す命令の分岐先アドレスと分
    岐のし易さを示す第2の値とを格納する分岐先バッファ
    と、 該第1の値及び該第2の値の何れかを選択することで分
    岐予測を行う選択ユニットと、 命令の実行を制御する実行制御ユニットと、 該命令を実行する演算実行ユニットを含むことを特徴と
    するプロセッサ。
  7. 【請求項7】過去の分岐命令の履歴と命令アドレスとか
    ら生成する第1のインデックスに対して該命令アドレス
    の一部であるタグと分岐のし易さを示す第1の値とを格
    納する履歴テーブルと、該命令アドレスの少なくとも一
    部を第2のインデックスとして該命令アドレスが示す命
    令の分岐先アドレスと分岐のし易さを示す第2の値とを
    格納する分岐先バッファとを設けた構成において、 該第1の値及び該第2の値の何れかを選択し、 選択した値に応じて分岐予測を行う各段階を含むことを
    特徴とする分岐予測方法。
  8. 【請求項8】該選択する段階は、現在の命令アドレスに
    対して該分岐先バッファにエントリが存在し且つ該現在
    の命令アドレスと現在の履歴とに対して該履歴テーブル
    にエントリが存在する場合には該第1の値を選択し、該
    現在の命令アドレスに対して該分岐先バッファにエント
    リが存在し且つ該現在の命令アドレスと現在の履歴とに
    対して該履歴テーブルにエントリが存在しない場合には
    該第2の値を選択することを特徴とする請求項7記載の
    分岐予測方法。
  9. 【請求項9】該現在の命令アドレスに対して該分岐先バ
    ッファにエントリが存在しない場合に該分岐先バッファ
    に該現在の命令アドレスを登録し、 該現在の命令アドレスに対して該分岐先バッファにエン
    トリが存在し且つ該現在の命令アドレスと現在の履歴と
    に対して該履歴テーブルにエントリが存在せず且つ該第
    2の値に基づく予測結果が誤りである場合に該履歴テー
    ブルに該現在の命令アドレスに関する登録を行う各段階
    を含むことを特徴とする請求項8記載の分岐予測方法。
  10. 【請求項10】該現在の命令アドレスに対して該分岐先
    バッファにエントリが存在し且つ該現在の命令アドレス
    と現在の履歴とに対して該履歴テーブルにエントリが存
    在せず且つ該第2の値に基づく予測結果が正しい場合に
    該履歴テーブルに該現在の命令アドレスに関する登録を
    行わないことを特徴とする請求項9記載の分岐予測方
    法。
JP2001186473A 2001-06-20 2001-06-20 分岐予測装置、プロセッサ、及び分岐予測方法 Expired - Fee Related JP4027620B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2001186473A JP4027620B2 (ja) 2001-06-20 2001-06-20 分岐予測装置、プロセッサ、及び分岐予測方法
EP02251556A EP1271308A3 (en) 2001-06-20 2002-03-06 Apparatus and method for branch prediction based on history table
US10/091,147 US7055023B2 (en) 2001-06-20 2002-03-06 Apparatus and method for branch prediction where data for predictions is selected from a count in a branch history table or a bias in a branch target buffer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001186473A JP4027620B2 (ja) 2001-06-20 2001-06-20 分岐予測装置、プロセッサ、及び分岐予測方法

Publications (2)

Publication Number Publication Date
JP2003005956A true JP2003005956A (ja) 2003-01-10
JP4027620B2 JP4027620B2 (ja) 2007-12-26

Family

ID=19025911

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001186473A Expired - Fee Related JP4027620B2 (ja) 2001-06-20 2001-06-20 分岐予測装置、プロセッサ、及び分岐予測方法

Country Status (3)

Country Link
US (1) US7055023B2 (ja)
EP (1) EP1271308A3 (ja)
JP (1) JP4027620B2 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005103886A1 (ja) 2004-04-21 2005-11-03 Fujitsu Limited 分岐予測装置、その方法、及びプロセサ
KR100634187B1 (ko) 2003-12-10 2006-10-16 인터내셔널 비지네스 머신즈 코포레이션 데이터 처리 시스템의 메모리 서브시스템에서 공급자 기반메모리 예측 방법 및 시스템
JP2008535063A (ja) * 2005-03-23 2008-08-28 クゥアルコム・インコーポレイテッド インデックス当り2つ以上の分岐ターゲットアドレスを記憶する分岐ターゲットアドレスキャッシュ
JP2009037302A (ja) * 2007-07-31 2009-02-19 Nec Corp 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム
US7613910B2 (en) 2004-09-30 2009-11-03 Fujitsu Limited Information processing apparatus, method, and computer-readable recording medium for replacing an entry in a memory device
US7647488B2 (en) 2003-01-30 2010-01-12 Fujitsu Limited Information processing device with branch history restoration
JP2011203955A (ja) * 2010-03-25 2011-10-13 Fujitsu Ltd 分岐予測方法及びその方法を実行する分岐予測回路
JP2011209774A (ja) * 2010-03-26 2011-10-20 Fujitsu Ltd 分岐予測方法及びその方法を実行する分岐予測回路

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7831817B2 (en) * 2003-04-15 2010-11-09 Arm Limited Two-level branch prediction apparatus
US20050149680A1 (en) * 2003-12-30 2005-07-07 Intel Corporation Fast associativity collision array and cascaded priority select
US20050188158A1 (en) * 2004-02-25 2005-08-25 Schubert Richard P. Cache memory with improved replacement policy
US20060036834A1 (en) * 2004-08-13 2006-02-16 Subramaniam Maiyuran Trace reuse
US7437543B2 (en) * 2005-04-19 2008-10-14 International Business Machines Corporation Reducing the fetch time of target instructions of a predicted taken branch instruction
US20070162895A1 (en) * 2006-01-10 2007-07-12 International Business Machines Corporation Mechanism and method for two level adaptive trace prediction
US7925865B2 (en) * 2008-06-02 2011-04-12 Oracle America, Inc. Accuracy of correlation prefetching via block correlation and adaptive prefetch degree selection
US8205068B2 (en) * 2008-07-29 2012-06-19 Freescale Semiconductor, Inc. Branch target buffer allocation
CN101763248A (zh) * 2008-12-25 2010-06-30 世意法(北京)半导体研发有限责任公司 用于多模式分支预测器的系统和方法
US8683129B2 (en) * 2010-10-21 2014-03-25 Oracle International Corporation Using speculative cache requests to reduce cache miss delays
US8924693B2 (en) * 2011-01-21 2014-12-30 Apple Inc. Predicting a result for a predicate-generating instruction when processing vector instructions
US20130290686A1 (en) * 2011-01-21 2013-10-31 Freescale Semiconductor, Inc. Integrated circuit device and method for calculating a predicate value
WO2012103367A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Guest to native block address mappings and management of native code storage
WO2012103359A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Hardware acceleration components for translating guest instructions to native instructions
WO2012103373A2 (en) * 2011-01-27 2012-08-02 Soft Machines, Inc. Variable caching structure for managing physical storage
US8694973B2 (en) * 2011-09-27 2014-04-08 Unisys Corporation Abstracting computational instructions to improve performance
US9262169B2 (en) * 2012-06-11 2016-02-16 International Business Machines Corporation Branch prediction table install source tracking
US9229723B2 (en) * 2012-06-11 2016-01-05 International Business Machines Corporation Global weak pattern history table filtering
WO2014151652A1 (en) 2013-03-15 2014-09-25 Soft Machines Inc Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor
CN105122206B (zh) 2013-03-15 2018-11-09 英特尔公司 用于支持推测的访客返回地址栈仿真的方法和装置
US10007522B2 (en) * 2014-05-20 2018-06-26 Nxp Usa, Inc. System and method for selectively allocating entries at a branch target buffer
US9952870B2 (en) * 2014-06-13 2018-04-24 Wisconsin Alumni Research Foundation Apparatus and method for bias-free branch prediction
US9823932B2 (en) * 2015-04-20 2017-11-21 Arm Limited Branch prediction
US20170153894A1 (en) * 2015-11-27 2017-06-01 Arm Limited Apparatus and method for branch prediction
US10747540B2 (en) * 2016-11-01 2020-08-18 Oracle International Corporation Hybrid lookahead branch target cache
US10261797B2 (en) 2017-04-27 2019-04-16 International Business Machines Corporation Indirect target tagged geometric branch prediction using a set of target address pattern data
US11526359B2 (en) * 2018-10-03 2022-12-13 Arm Limited Caching override indicators for statistically biased branches to selectively override a global branch predictor
CN113900966B (zh) * 2021-11-16 2022-03-25 北京微核芯科技有限公司 一种基于Cache的访存方法及装置
CN114020441B (zh) * 2021-11-29 2023-03-21 锐捷网络股份有限公司 一种多线程处理器的指令预测方法及相关装置
CN117389629A (zh) * 2023-11-02 2024-01-12 北京市合芯数字科技有限公司 分支预测方法、装置、电子设备及介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW253946B (en) * 1994-02-04 1995-08-11 Ibm Data processor with branch prediction and method of operation
US5822577A (en) 1996-05-01 1998-10-13 International Business Machines Corporation Context oriented branch history table
US5864697A (en) * 1996-06-28 1999-01-26 Texas Instruments Incorporated Microprocessor using combined actual and speculative branch history prediction
US5995749A (en) * 1996-11-19 1999-11-30 Advanced Micro Devices, Inc. Branch prediction mechanism employing branch selectors to select a branch prediction
EP0848323B1 (en) * 1996-12-10 2004-02-25 Texas Instruments Incorporated Improvements in the branch prediction within a pipelined microprocessor
US6108775A (en) * 1996-12-30 2000-08-22 Texas Instruments Incorporated Dynamically loadable pattern history tables in a multi-task microprocessor
US6073230A (en) * 1997-06-11 2000-06-06 Advanced Micro Devices, Inc. Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches
US6374349B2 (en) * 1998-03-19 2002-04-16 Mcfarling Scott Branch predictor with serially connected predictor stages for improving branch prediction accuracy
DE19926580C2 (de) * 1998-07-14 2001-01-11 Ibm Verfahren und Vorrichtung zur Vorhersage von Sprungzieladressen
US6553488B2 (en) * 1998-09-08 2003-04-22 Intel Corporation Method and apparatus for branch prediction using first and second level branch prediction tables
JP2000132390A (ja) * 1998-10-23 2000-05-12 Toshiba Corp プロセッサ及び分岐予測器
US6189091B1 (en) * 1998-12-02 2001-02-13 Ip First, L.L.C. Apparatus and method for speculatively updating global history and restoring same on branch misprediction detection
US6247122B1 (en) * 1998-12-02 2001-06-12 Ip-First, L.L.C. Method and apparatus for performing branch prediction combining static and dynamic branch predictors
US6272623B1 (en) * 1999-01-25 2001-08-07 Sun Microsystems, Inc. Methods and apparatus for branch prediction using hybrid history with index sharing
US6421774B1 (en) * 1999-11-05 2002-07-16 Ip First L.L.C. Static branch predictor using opcode of instruction preceding conditional branch
US6550004B1 (en) * 1999-11-05 2003-04-15 Ip-First, Llc Hybrid branch predictor with improved selector table update mechanism
US6687789B1 (en) * 2000-01-03 2004-02-03 Advanced Micro Devices, Inc. Cache which provides partial tags from non-predicted ways to direct search if way prediction misses

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7647488B2 (en) 2003-01-30 2010-01-12 Fujitsu Limited Information processing device with branch history restoration
KR100634187B1 (ko) 2003-12-10 2006-10-16 인터내셔널 비지네스 머신즈 코포레이션 데이터 처리 시스템의 메모리 서브시스템에서 공급자 기반메모리 예측 방법 및 시스템
WO2005103886A1 (ja) 2004-04-21 2005-11-03 Fujitsu Limited 分岐予測装置、その方法、及びプロセサ
KR100785723B1 (ko) 2004-04-21 2007-12-18 후지쯔 가부시끼가이샤 분기 예측 장치, 그 방법 및 프로세서
CN100520713C (zh) * 2004-04-21 2009-07-29 富士通株式会社 分支预测装置、分支预测方法以及处理器
US7827393B2 (en) 2004-04-21 2010-11-02 Fujitsu Limited Branch prediction apparatus, its method and processor
US7613910B2 (en) 2004-09-30 2009-11-03 Fujitsu Limited Information processing apparatus, method, and computer-readable recording medium for replacing an entry in a memory device
JP2008535063A (ja) * 2005-03-23 2008-08-28 クゥアルコム・インコーポレイテッド インデックス当り2つ以上の分岐ターゲットアドレスを記憶する分岐ターゲットアドレスキャッシュ
JP2009037302A (ja) * 2007-07-31 2009-02-19 Nec Corp 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム
US8892852B2 (en) 2007-07-31 2014-11-18 Nec Corporation Branch prediction device and method that breaks accessing a pattern history table into multiple pipeline stages
JP2011203955A (ja) * 2010-03-25 2011-10-13 Fujitsu Ltd 分岐予測方法及びその方法を実行する分岐予測回路
JP2011209774A (ja) * 2010-03-26 2011-10-20 Fujitsu Ltd 分岐予測方法及びその方法を実行する分岐予測回路

Also Published As

Publication number Publication date
EP1271308A3 (en) 2006-01-04
EP1271308A2 (en) 2003-01-02
JP4027620B2 (ja) 2007-12-26
US7055023B2 (en) 2006-05-30
US20020199091A1 (en) 2002-12-26

Similar Documents

Publication Publication Date Title
JP4027620B2 (ja) 分岐予測装置、プロセッサ、及び分岐予測方法
US5210831A (en) Methods and apparatus for insulating a branch prediction mechanism from data dependent branch table updates that result from variable test operand locations
US4763245A (en) Branch prediction mechanism in which a branch history table is updated using an operand sensitive branch table
US7657726B2 (en) Context look ahead storage structures
US5790823A (en) Operand prefetch table
US9250912B2 (en) Fast index tree for accelerated branch prediction
JP2006520964A (ja) 分岐ターゲットに基づいて分岐予測をするための方法および装置
JP2006520964A5 (ja)
US9465615B2 (en) Method and apparatus for branch prediction
JP2019526873A (ja) 分岐ターゲットバッファの圧縮
US7711904B2 (en) System, method and computer program product for executing a cache replacement algorithm
US20180060075A1 (en) Method for reducing fetch cycles for return-type instructions
US11249762B2 (en) Apparatus and method for handling incorrect branch direction predictions
JP3486690B2 (ja) パイプライン方式プロセッサ
CN106557304B (zh) 用于预测子程序返回指令的目标的取指单元
US20130275726A1 (en) Arithmetic processing apparatus and branch prediction method
KR20230084140A (ko) 제어 독립성 기술을 채용한 프로세서에서 처리되는 명령어에 대한 추론성 예측을 행하는 데 사용된 추론성 이력의 복원
US9250909B2 (en) Fast index tree for accelerated branch prediction
US11487545B2 (en) Processor branch prediction circuit employing back-invalidation of prediction cache entries based on decoded branch instructions and related methods
CN117472446B (zh) 基于处理器的多级取指目标缓冲器的分支预测方法
CN117130666A (zh) 配置方法、分支预测器、指令识别器和电子设备
JPH06301538A (ja) 条件分岐命令処理装置
JP2005122343A (ja) キャッシュメモリ制御方法及びキャッシュメモリ制御装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060424

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070118

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070402

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070605

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070705

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20070813

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20071002

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071010

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

Free format text: PAYMENT UNTIL: 20101019

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20101019

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20111019

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20111019

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20121019

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20121019

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20131019

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees