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
Links
- 238000000034 method Methods 0.000 title claims description 44
- 238000010586 diagram Methods 0.000 description 5
- 230000007423 decrease Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000002657 hormone replacement therapy Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 229920000278 polyheptadiyne Polymers 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, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3848—Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
Abstract
いて、可能な限り小さなメモリ容量を使用しながらエン
トリ干渉を回避して分岐予測の精度を向上させた分岐予
測方式を提供することを目的とする。 【解決手段】分岐予測装置は、過去の分岐命令の履歴を
保持する履歴レジスタと、履歴レジスタが保持する履歴
と命令アドレスとから第1のインデックスを生成するイ
ンデックス生成回路と、各第1のインデックスに対して
命令アドレスの一部であるタグと分岐のし易さを示す第
1の値とを格納する履歴テーブルと、命令アドレスの少
なくとも一部を第2のインデックスとして命令アドレス
が示す命令の分岐先アドレスと分岐のし易さを示す第2
の値とを格納する分岐先バッファと、第1の値及び該第
2の値の何れかを選択することで分岐予測を行う選択ユ
ニットを含む。
Description
分岐予測方式及びプロセッサに関し、詳しくは、PHT
(Pattern History Table)を用いた分岐予測方式及び
プロセッサに関する。
においては、分岐命令の分岐結果を待ってから分岐先ア
ドレスに分岐するのでは、命令フェッチのタイミングが
遅くなりパイプライン動作に乱れが生じる。従って、分
岐命令を実行する前に分岐予測をし、パイプライン動作
の流れに沿った一連の命令フェッチを可能にする必要が
ある。
易い或いは分岐し難いといったように、ローカルな意味
で分岐方向に偏りが存在する場合が多い。また最近実行
された分岐命令の分岐結果に依存してある分岐命令が分
岐し易い或いは分岐し難いといったように、グローバル
な意味で分岐方向に偏りが存在する場合も多い。PHT
(Pattern History Table)は、このような分岐傾向の
ローカル性及びグローバル性を考慮して、高い精度で分
岐を予測する方式である。
方式の構成図である。
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回前
の分岐命令が分岐、最も最近の分岐命令が分岐であった
ことを示す。
0が示す実行する分岐命令アドレスとGHRユニット1
2の内容との排他的論理和を計算する。計算された排他
的論理和は、PHTユニット13にインデックスとして
供給される。
えば2ビットのカウントを格納するRAMである。ここ
でインデックスは、上述のようにプログラムカウンタ1
0の示す実行する分岐命令アドレスとGHRユニット1
2の内容との排他的論理和である。また、インデックス
の内容である2ビットのカウント値は、そのインデック
スをヒットした場合の予測結果である。カウント値が0
及び1の場合には分岐しないと予測し、カウント値が2
及び3の場合には分岐すると予測する。
あり、分岐命令アドレスが“001000”である場合、イン
デックスは“111011”となる。このインデックス“1110
11”の内容の2ビットカウント値を参照して、例えばカ
ウント値が2であるとする。上述のように2或いは3の
カウント値は分岐予測を意味するので、命令アドレスが
“001000”である現在実行しようとしている分岐命令
は、分岐すると予測する。実際に命令を実行した結果と
して分岐すれば、カウント値に1を加算する。また実際
に命令を実行した結果として分岐しない場合には、カウ
ント値から1を減算する。従って、例えば実際の実行結
果として分岐したとすると、カウント値は3に設定され
る。
く同一の内容“110011”である状態で、同じ分岐命令ア
ドレス“001000”の分岐命令を再度実行する場合、イン
デックスは前回と同一の“111011”となる。この場合の
カウント値は3であり、分岐命令は分岐すると予測す
る。前述のように、GHRユニット12の内容は、最近
実行した分岐命令の分岐結果の履歴である。従って、最
近の分岐傾向が同一の条件で同一の分岐命令を実行した
場合には、その分岐結果は同一のインデックスに蓄積さ
れていく。次回同一のインデックスを参照したときに
は、そのカウント値が分岐予測に用いられる。
が、上記の履歴と若干異なる場合として、例えばGHR
ユニット12の内容が“110010”であるとする。これは
上記の場合“110011”と比較して、最後の分岐命令の結
果が異なっていた場合である。この場合、上記と同一の
分岐命令アドレス“001000”の分岐命令を実行するとす
ると、インデックスは“111010”となる。従って、この
インデックスには、過去の分岐の履歴が“110010”であ
る条件で分岐命令アドレス“001000”の分岐命令を実行
した場合について、分岐結果が蓄積されていくことにな
る。
つしか存在しない場合には、各インデックスは、この分
岐命令の分岐の結果を種々の分岐履歴に対して蓄積する
ことになり、分岐履歴を反映した非常に高い精度での分
岐予測が可能となる。しかし分岐命令がプログラム中に
複数個存在する場合には、PHTユニット13内で互い
の分岐命令の結果が干渉し合うことになり、予測精度が
低下する。例えば、GHRユニット12の内容が“1110
10”の場合に分岐命令アドレス“000001”の分岐命令を
実行するとすると、インデックスは“111011”となり、
上記のようにGHR12の内容が“110011”であり分岐
命令アドレスが“001000”である場合と同一のインデッ
クスとなってしまう。このようにXOR回路11でイン
デックスを計算する方式では、異なった分岐命令間で同
一のインデックスを共有することになり、分岐結果の記
録が干渉してしまい予測精度が低下する。
ユニット12の内容とプログラムカウンタ10の内容と
を繋ぎ合わせてインデックスを作成すればよい。例え
ば、GHR12の内容が“110011”であり分岐命令アド
レスが“001000”である場合には、インデックスを“11
0011001000”とすればよい。しかしこの場合には、イン
デックスが長くなることで、PHTユニット13のRA
Mのエントリ数が大幅に増大してしまう。実際、この場
合のエントリ数は64倍(=26)に増大することにな
る。
測に使用するPHTにおいてエントリが干渉する構成に
おいては、分岐予測の精度が低下してしまうという問題
がある。しかし予測精度を向上させるために、PHTの
メモリ容量を必要以上に増大させることは望ましくな
い。可能な限り小さなメモリ容量で可能な限り予測精度
を向上させることが望ましい。
測方式において、可能な限り小さなメモリ容量を使用し
ながらエントリ干渉を回避して分岐予測の精度を向上さ
せた分岐予測方式を提供することを目的とする。
置は、過去の分岐命令の履歴を保持する履歴レジスタ
と、該履歴レジスタが保持する該履歴と命令アドレスと
から第1のインデックスを生成するインデックス生成回
路と、各第1のインデックスに対して該命令アドレスの
一部であるタグと分岐のし易さを示す第1の値とを格納
する履歴テーブルと、該命令アドレスの少なくとも一部
を第2のインデックスとして該命令アドレスが示す命令
の分岐先アドレスと分岐のし易さを示す第2の値とを格
納する分岐先バッファと、該第1の値及び該第2の値の
何れかを選択することで分岐予測を行う選択ユニットを
含むことを特徴とする。
トは、現在の命令アドレスに対して該分岐先バッファに
エントリが存在し且つ該現在の命令アドレスと現在の履
歴とに対して該履歴テーブルにエントリが存在する場合
には該第1の値を選択し、該現在の命令アドレスに対し
て該分岐先バッファにエントリが存在し且つ該現在の命
令アドレスと現在の履歴とに対して該履歴テーブルにエ
ントリが存在しない場合には該第2の値を選択すること
を特徴とする。
ル(PHT)のエントリに命令の一部をタグとして設け
ることで、異なった分岐命令間でのPHTエントリの干
渉を避けることが可能になる。しかしながらあるインデ
ックスを参照しても、タグが現在の命令に一致しない場
合には、当該履歴状況での当該命令に関する情報は登録
されていないことになる。このような場合には、分岐先
バッファ(BTB)を分岐予測に使用する。即ち、履歴
テーブルがヒットした場合(タグが一致)には、履歴テ
ーブルの第1の値を分岐予測に使用し、履歴テーブルが
ミスした場合(タグが不一致)には、分岐先バッファの
第2の値を分岐予測に使用する。
は、エントリ干渉を回避して高精度な分岐予測が可能に
なるので、実際の分岐方向が確定する前に予測に基づい
て命令フェッチしても、予測がはずれる可能性は小さ
く、パイプライン動作の乱れを避けることが出来る。
先バッファの第2の値を予測に併用することにより、従
来のようにPHT単体で分岐予測を実行する場合と比較
して、分岐結果を学習させるまでの時間が短くてすむ。
従って、本発明による分岐予測方式は、コンテキストス
イッチによる状況変化に短時間で対応できる。
図面を用いて詳細に説明する。
岐予測装置の構成図である。
21、GHRユニット22、タグ付きPHTユニット2
3、比較ユニット24、BTB(Branch Target Buffe
r)25、比較ユニット26、及び選択ユニット27を
含む。
は、最近実行した分岐命令について分岐したか否かに関
する履歴を記録しておくレジスタである。分岐命令が分
岐した場合にはレジスタ内部を左に1ビットシフトしな
がら最下位ビットに1を格納し、分岐命令が分岐しなか
った場合にはレジスタ内部を左に1ビットシフトしなが
ら最下位ビットに0を格納する。XOR回路21は、プ
ログラムカウンタ20が示す実行する分岐命令アドレス
とGHRユニット22の内容との排他的論理和を計算す
る。計算された排他的論理和は、タグ付きPHTユニッ
ト23にインデックスとして供給される。
路21の出力である各インデックスに対して、タグ23
aとカウント値23bとを格納するRAMである。また
BTBユニット25は、命令アドレスの一部をインデッ
クスとして、タグ(命令アドレスの一部)25aと、分
岐命令の分岐先アドレス25bと、バイアスビット25
cとを格納するRAMである。
式においても使用されるユニットであり、分岐命令が分
岐すると予測されると、その分岐先アドレスを直ちに提
供するために設けられる。通常分岐先アドレスは、フェ
ッチした分岐命令をデコードして命令を実行する時に算
出する必要があるために、分岐先アドレスの特定には時
間を要する。BTBを設けておき各分岐命令に対して分
岐先アドレスを格納しておくことで、分岐命令が分岐す
ると予測される時に、分岐先アドレスを直ちにBTBか
ら読み出すことが出来る。ここでBTBのメモリ容量を
小さくするために、命令アドレスの一部をインデックス
とし、残りの部分をタグとして、当該インデックスのエ
ントリの一部としてタグを格納しておく。
が入力されると、この命令アドレスに対応するインデッ
クスからタグ25aを読み出し、読み出したタグ25a
と入力命令アドレスの対応部分とを比較する。この比較
は、比較ユニット26によって実行される。比較結果が
一致を示す場合(ヒットした場合)には、この命令アド
レスの分岐命令が登録されていることになり、当該イン
デックスに格納されている分岐先アドレス25bをプリ
フェッチアドレスとして使用する。
分岐し易いが分岐し難いかを示す。1ビットで構成され
る場合には、例えば“1”が分岐し易いことを示し、
“0”が分岐し難いことを示す。このバイアスビット2
5cは、その分岐命令自体が分岐し易いか分岐し難いか
を示す、ローカルな意味での分岐方向の偏りに関する情
報である。
路21が求めた命令アドレスの一部とGHRユニット2
2との排他的論理和をインデックスとして、過去に実行
した分岐結果の情報をカウント値23bとして保持す
る。本発明においては、タグ付きPHTユニット23
は、カウント値23bだけでなく、命令アドレスの一部
をタグ23aとして保持している。
GHRユニット22の内容とからXOR回路21により
インデックスが求められると、タグ付きPHTユニット
23からタグ23aを読み出し、読み出したタグ23a
と入力命令アドレスの対応部分とを比較する。この比較
は、比較ユニット24によって実行される。比較結果が
一致を示す場合(ヒットした場合)には、GHRユニッ
ト22の内容が示す履歴状態での当該命令アドレスの分
岐命令の情報が登録されていることになる。この場合に
は、このインデックスに格納されているカウント値23
bを、分岐予測に使用する。カウント値23bは、例え
ば2ビットカウンタのカウントであり、0及び1の場合
には分岐しないと予測し、2及び3の場合には分岐する
と予測する。
命令間でのPHTエントリの干渉を避けることが可能に
なる。しかしながら、あるインデックスを参照しても、
タグ23aが現在の命令に一致しない場合(ミスした場
合)には、当該履歴状況での当該命令に関する情報は登
録されていないことになる。本発明では、このような場
合には、BTBユニット25のバイアスビット25cを
分岐予測に使用する。
トした場合(タグが一致)には、タグ付き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が利用できないので、一律に
「分岐しない」と予測して予測結果を出力する。
ャートである。
ットしたか否かを判断する。ヒットした場合にはステッ
プS3に進み、ミスした場合にはステップS2に進む。
ットしておらず分岐先アドレス25bが利用できないの
で、一律に「分岐しない」と予測する。
23がヒットしたか否かを判断する。ヒットした場合に
はステップS5に進み、ミスした場合にはステップS4
に進む。
イアスビット25cに基づいて分岐予測を行う。
23のカウント値23bに基づいて分岐予測を行う。
ローチャートである。
ットしたか否かを判断する。ヒットした場合にはステッ
プS3に進み、ミスした場合にはステップS2に進む。
令アドレスを、その分岐先アドレスと共にBTBユニッ
ト25に登録する。この際、実際に命令を実行した分岐
結果を、BTBユニット25のバイアスビット25cと
して格納する。即ち、実際の命令実行の結果、分岐をし
たのであれば1をバイアスビット25cに格納し、分岐
しなかったのであれば0をバイアスビット25cに格納
する。
ヒットしているので、BTBユニット25の対象命令ア
ドレスを更新する。
23がヒットしたか否かを判断する。ヒットした場合に
はステップS8に進み、ミスした場合にはステップS5
に進む。
た結果、実際の分岐方向が分岐予測と一致したか否かを
判断する。ここで判断対象の分岐予測は、タグ付きPH
Tユニット23がミスした場合であるので、BTBユニ
ット25のバイアスビット25cに基づいて行われたも
のである。判断の結果、一致する場合にはステップS6
に進み、一致しない場合にはステップS7に進む。
る。これは、分岐予測の結果と実際の分岐の結果とが一
致する場合には、現状の分岐予測が適切であると判断で
きるからである。
23に当該履歴状況での当該命令に関する情報を登録す
る。即ち、対象となるインデックスに、対象となる命令
アドレスのタグ23aを格納すると共に、カウント値2
3bに実際の分岐結果を格納する。例えば、分岐した場
合には2(“10”)を格納し、分岐しなかった場合には
1(“01”)を格納する。これは、分岐予測の結果と実
際の分岐の結果とが一致しない場合には、BTBユニッ
ト25のバイアスビット25cに基づく現状の分岐予測
が不適切であると判断できるからである。
ト23がヒットしているので、タグ付きPHTユニット
23のカウント値23bを更新する。具体的には、実際
の分岐結果が分岐の場合にカウント値23bを1増加さ
せ、分岐結果が分岐でない場合にカウント値23bを1
減少させる。なおカウント値23bが既に最大値(例え
ば2ビットカウンタなら3)の場合には、実際の分岐結
果が分岐であってもカウント値23bはそのままであ
る。またカウント値23bが既に最小値(例えば0)の
場合には、実際の分岐結果が非分岐であってもカウント
値23bはそのままである。
イアスビット25cとタグ付きPHTユニット23のカ
ウント値23bとについて、夫々の値をチェックする。
バイアスビット25cとカウント値23bとが、夫々0
と0(“00”)であるか或いは夫々1と3(“11”)で
ある場合に、ステップS11に進む。それ以外の場合に
は、ステップS10に進む。
する。ここでLRU(Least Recently Used)ビットと
は、タグ付きPHTユニット23の各エントリに付加さ
れ、参照されてから最も使われなかったエントリを特定
するためのビットである。タグ付きPHTユニット23
を分岐予測に使用する毎に、このLRUビットを更新す
る。LRUビットの意味については後述する。
ト23の対象エントリを無効にする。即ち、タグ付きP
HTユニット23の当該対象エントリを実質的に削除す
る。これは、タグ付きPHTユニット23のカウント値
23bが特定の分岐方向を強く示唆しており且つBTB
ユニット25のバイアスビット25cがそれと同一の分
岐方向を示している場合には、BTBユニット25のバ
イアスビット25cで分岐を予測しても同一の予測結果
が得られるので、タグ付きPHTユニット23から登録
を抹消することで、タグ付きPHTユニット23のRA
Mのメモリ空間を有効に使用するためである。
る。
ィブ方式について説明する。
に、タグ付きPHTユニット23が複数個設けられてい
てもよい。このように複数のタグ付きPHTユニット2
3を設けることで、同一インデックスに対して複数のエ
ントリを格納可能になる。例えば、4セットのPHTが
設けられる4−ウェイセットアソシアティブ方式におい
ては、同一インデックスに対して、4つまでのエントリ
を格納可能である。
用した場合には、データ更新時にどのエントリを削除す
るかを決定する必要がある。例えば4−ウェイセットア
ソシアティブにおいて既に4つのエントリを使用してい
る状況で、5つめのエントリを格納する必要があるとす
ると、既存の4つのエントリの何れかを選択して削除す
る必要がある。例えば、図4のステップS7では、タグ
付きPHTユニット23に当該履歴状況での当該命令に
関する情報を登録するが、既に同一のインデックスに対
するエントリが満杯である場合には、既存の登録の何れ
かを削除して新規登録に置き換える必要がある。
LRUビットは、既存エントリを新規エントリで置き換
える際に、置き換え対象のエントリを特定するために使
用される。LRUビットは、各エントリに対して保持さ
れ、各エントリの参照順序を示すビットである。このL
RUビットを調べることで、参照されてから最も長期間
使われなかったエントリを特定して、新規エントリと置
き換えることが出来る。
定する方式の1つに過ぎず、他の方式として、最も使用
されなかった最低使用頻度のエントリを置換するLFU
(Least Frequently Used)方式、最も過去に登録され
たエントリを置換するFIFO(First-In First-Out)
方式、任意に選択したエントリを置換するランダム方式
などがある。
タグ付きPHTユニット23が一つだけ設けられる場合
には、各インデックスに対して1つのエントリしか格納
することは出来ない。この場合、タグ付きPHTユニッ
ト23に新規の情報を登録する際に、既に同一のインデ
ックスに対して別の命令アドレスの登録がなされている
場合には、この既存の登録を削除して、新規登録に置き
換えることになる。
ト25に対してもセットアソシアティブ方式を用いても
良い。
プログラムの例を用いて説明する。
である。
の初期値を000000とする。
ット25に0001をインデックスとしてアクセスすると、
タグミスが検出され「分岐しない」と予測する。これは
図3のステップS2に対応する。実際の命令実行の結
果、分岐命令が分岐するので予測がはずれる。BTBユ
ニット25のインデックス0001のエントリにタグ00、バ
イアス1、分岐先アドレス000011を登録する。これは図
4のステップS2に対応する。
トしながら最下位ビットに分岐を表す1を格納し、結果
として000001となる。この状態で、予測結果と各レジス
タ/メモリの内容は、 PC=000001, 予測失敗, BTB[0001]=00-1-000011, GHR:00
0001 となる。ここでPCはプログラムカウンタを示し、BTB
の内容は、タグ00、バイアス1、及び分岐先アドレス000
011の順に示される。
ユニット25に0100をインデックスとしてアクセスする
と、タグミスが検出され「分岐しない」と予測する。実
際の命令実行の結果、分岐命令が分岐しないので予測が
あたる。BTBユニット25のインデックス0100のエン
トリにタグ00、バイアス0を登録する。
トしながら最下位ビットに非分岐を表す0を格納し、結
果として000010となる。この状態で、予測結果と各レジ
スタ/メモリの内容は、 PC=000001, 予測成功, BTB[0100]=00-0- ******, GHR:0
00010 となる。
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 となる。
ユニット25に1100をインデックスとしてアクセスする
と,タグミスが検出され「分岐しない」と予測する。実
際の命令実行の結果、分岐命令が分岐するので予測がは
ずれる。BTBユニット25のインデックス1100のエン
トリに、タグ00、バイアス1、分岐先アドレス001001を
登録する。
トしながら最下位ビットに分岐を表す1を格納し、結果
として000001となる。この状態で、予測結果と各レジス
タ/メモリの内容は、 PC=001100, 予測失敗, BTB[1100]=00-1-001001, GHR=00
0001 となる。
で、再び命令アドレス001100において、BTBユニット
25に1100をインデックスとしてアクセスを行う。今回
はタグヒットが検出され、分岐先アドレス001001を得
る。BTBユニット25がタグヒットしたので、タグ付
きPHTユニット23がタグヒットするか否かをチェッ
クする。これは図3のステップS3に対応する。
容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 となる。
に、命令アドレス001100において、上記と同様に「アド
レス001001に分岐する」と予測する。この場合、ループ
は6回目で終了するので、分岐命令は分岐せず予測がは
ずれる。従って、図4のステップS7に示されるよう
に、命令アドレス001100とGHRの内容011111との排他
的論理和010011をタグ付きPHTユニット23のインデ
ックスとし、タグ1100とカウント値0を登録する。この
状態で、予測結果と各レジスタ/メモリの内容は、 PC=001100, 予測失敗, PHT[010011]=1100-0, GHR=11111
0 となる。
アドレス000010に分岐すると、 PC=001111, 予測失敗, BTB[1111]=00-1-000010, GHR=11
1101 となる。
すると、 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 となる。従って、今回は分岐予測が全て的中することに
なる。
よる分岐予測方式では、タグ付きPHTユニット23で
は1つのエントリしか使用していない。このように、本
発明の分岐予測方式は、RAMの使用容量が少なくて
も、高い予測精度を実現することが出来る方式である。
式では、上記プログラムを実行した場合に、命令アドレ
ス000010以降の命令を2度目に実行した際であっても、
PHTエントリの干渉により全ての予測を的中させるこ
とは出来ない。
したプロセッサの構成例を示す。
ュ101、データキャッシュ102、命令フェッチユニ
ット103、命令実行制御部104、レジスタ105、
レジスタ106、演算部107乃至110を含む。
ュ102は、それぞれ命令及びデータを一時的に格納す
る。命令フェッチユニット103は、プログラムカウン
タの示すアドレスの命令を、命令キャッシュ101から
順次フェッチする。命令実行制御部104は、命令フェ
ッチユニット103がフェッチした命令を順次デコード
して、デコード結果に基づいて命令実行動作を制御す
る。レジスタ105、レジスタ106、及び演算部10
7乃至110は、演算実行ユニットを構成する。この演
算実行ユニットは、命令実行制御部104の制御の下で
動作して、命令に基づいた演算を実行する。ここで演算
部107乃至110は、夫々命令0乃至3を独立に実行
する形となっており、パイプライン動作を高速に実行可
能な構成となっている。
は、命令フェッチユニット103に設けられ、分岐命令
があるときにその分岐方向を予測して、予測分岐方向に
対応したアドレスの命令をフェッチする。本発明による
分岐予測方式ではエントリ干渉を回避して高精度な分岐
予測が可能になるので、実際の分岐方向が確定する前に
予測に基づいて命令フェッチしても、予測がはずれる可
能性は小さく、パイプライン動作の乱れを避けることが
出来る。
Bユニット25のバイアスビット25cを使用すること
により、従来のようにPHT単体で分岐予測を実行する
場合と比較して、分岐結果を学習させるまでの時間が短
くてすむ。従って、本発明による分岐予測方式は、コン
テキストスイッチによる状況変化に短時間で対応でき
る。8KBのRAMを使用したベンチマークjpeg, jbi
g, mpeg4, ghostscriptにおいて、本発明による分岐予
測方式は、平均で96%の予測精度を実現した。
が、本発明は上記実施例に限定されるものではなく、特
許請求の範囲に記載の範囲内で様々な変形が可能であ
る。
リ干渉を回避して高精度な分岐予測が可能になるので、
実際の分岐方向が確定する前に予測に基づいて命令フェ
ッチしても、予測がはずれる可能性は小さく、パイプラ
イン動作の乱れを避けることが出来る。
Bのバイアスビットを予測に併用することにより、従来
のようにPHT単体で分岐予測を実行する場合と比較し
て、分岐結果を学習させるまでの時間が短くてすむ。従
って、本発明による分岐予測方式は、コンテキストスイ
ッチによる状況変化に短時間で対応できる。
である。
構成図である。
る。
である。
サの構成図である。
Claims (10)
- 【請求項1】過去の分岐命令の履歴を保持する履歴レジ
スタと、 該履歴レジスタが保持する該履歴と命令アドレスとから
第1のインデックスを生成するインデックス生成回路
と、 各第1のインデックスに対して該命令アドレスの一部で
あるタグと分岐のし易さを示す第1の値とを格納する履
歴テーブルと、 該命令アドレスの少なくとも一部を第2のインデックス
として該命令アドレスが示す命令の分岐先アドレス又は
予測分岐先アドレスと分岐のし易さを示す第2の値とを
格納する分岐先バッファと、 該第1の値及び該第2の値の何れかを選択することで分
岐予測を行う選択ユニットを含むことを特徴とする分岐
予測装置。 - 【請求項2】該選択ユニットは、現在の命令アドレスに
対して該分岐先バッファにエントリが存在し且つ該現在
の命令アドレスと現在の履歴とに対して該履歴テーブル
にエントリが存在する場合には該第1の値を選択し、該
現在の命令アドレスに対して該分岐先バッファにエント
リが存在し且つ該現在の命令アドレスと現在の履歴とに
対して該履歴テーブルにエントリが存在しない場合には
該第2の値を選択することを特徴とする請求項1記載の
分岐予測装置。 - 【請求項3】該選択ユニットは、該現在の命令アドレス
に対して該分岐先バッファにエントリが存在しない場合
には分岐しないと予測することを特徴とする請求項2記
載の分岐予測装置。 - 【請求項4】該インデックス生成回路は、該履歴レジス
タが保持する該履歴と該命令アドレスとの排他的論理和
として該第1のインデックスを生成することを特徴とす
る請求項1記載の分岐予測装置。 - 【請求項5】該履歴テーブルは該第1のインデックスの
各々に対して複数のエントリが登録できるように複数個
設けられることを特徴とする請求項1記載の分岐予測装
置。 - 【請求項6】過去の分岐命令の履歴を保持する履歴レジ
スタと、 該履歴レジスタが保持する該履歴と命令アドレスとから
第1のインデックスを生成するインデックス生成回路
と、 各第1のインデックスに対して該命令アドレスの一部で
あるタグと分岐のし易さを示す第1の値とを格納する履
歴テーブルと、 該命令アドレスの少なくとも一部を第2のインデックス
として該命令アドレスが示す命令の分岐先アドレスと分
岐のし易さを示す第2の値とを格納する分岐先バッファ
と、 該第1の値及び該第2の値の何れかを選択することで分
岐予測を行う選択ユニットと、 命令の実行を制御する実行制御ユニットと、 該命令を実行する演算実行ユニットを含むことを特徴と
するプロセッサ。 - 【請求項7】過去の分岐命令の履歴と命令アドレスとか
ら生成する第1のインデックスに対して該命令アドレス
の一部であるタグと分岐のし易さを示す第1の値とを格
納する履歴テーブルと、該命令アドレスの少なくとも一
部を第2のインデックスとして該命令アドレスが示す命
令の分岐先アドレスと分岐のし易さを示す第2の値とを
格納する分岐先バッファとを設けた構成において、 該第1の値及び該第2の値の何れかを選択し、 選択した値に応じて分岐予測を行う各段階を含むことを
特徴とする分岐予測方法。 - 【請求項8】該選択する段階は、現在の命令アドレスに
対して該分岐先バッファにエントリが存在し且つ該現在
の命令アドレスと現在の履歴とに対して該履歴テーブル
にエントリが存在する場合には該第1の値を選択し、該
現在の命令アドレスに対して該分岐先バッファにエント
リが存在し且つ該現在の命令アドレスと現在の履歴とに
対して該履歴テーブルにエントリが存在しない場合には
該第2の値を選択することを特徴とする請求項7記載の
分岐予測方法。 - 【請求項9】該現在の命令アドレスに対して該分岐先バ
ッファにエントリが存在しない場合に該分岐先バッファ
に該現在の命令アドレスを登録し、 該現在の命令アドレスに対して該分岐先バッファにエン
トリが存在し且つ該現在の命令アドレスと現在の履歴と
に対して該履歴テーブルにエントリが存在せず且つ該第
2の値に基づく予測結果が誤りである場合に該履歴テー
ブルに該現在の命令アドレスに関する登録を行う各段階
を含むことを特徴とする請求項8記載の分岐予測方法。 - 【請求項10】該現在の命令アドレスに対して該分岐先
バッファにエントリが存在し且つ該現在の命令アドレス
と現在の履歴とに対して該履歴テーブルにエントリが存
在せず且つ該第2の値に基づく予測結果が正しい場合に
該履歴テーブルに該現在の命令アドレスに関する登録を
行わないことを特徴とする請求項9記載の分岐予測方
法。
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)
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)
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)
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 |
-
2001
- 2001-06-20 JP JP2001186473A patent/JP4027620B2/ja not_active Expired - Fee Related
-
2002
- 2002-03-06 US US10/091,147 patent/US7055023B2/en not_active Expired - Lifetime
- 2002-03-06 EP EP02251556A patent/EP1271308A3/en not_active Withdrawn
Cited By (12)
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 |