JP3725547B2 - 限定ラン分岐予測 - Google Patents
限定ラン分岐予測 Download PDFInfo
- Publication number
- JP3725547B2 JP3725547B2 JP51887696A JP51887696A JP3725547B2 JP 3725547 B2 JP3725547 B2 JP 3725547B2 JP 51887696 A JP51887696 A JP 51887696A JP 51887696 A JP51887696 A JP 51887696A JP 3725547 B2 JP3725547 B2 JP 3725547B2
- Authority
- JP
- Japan
- Prior art keywords
- branch instruction
- run length
- instruction
- branch
- conditional branch
- 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.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 claims description 27
- 230000006399 behavior Effects 0.000 claims description 5
- 238000012986 modification Methods 0.000 claims description 5
- 230000004048 modification Effects 0.000 claims description 5
- 230000000295 complement effect Effects 0.000 claims description 4
- 230000008859 change Effects 0.000 claims description 3
- 230000004044 response Effects 0.000 claims description 3
- 238000011017 operating method Methods 0.000 claims 11
- 230000003247 decreasing effect Effects 0.000 claims 1
- 230000008439 repair process Effects 0.000 description 6
- 238000012360 testing method Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 230000007423 decrease Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000015556 catabolic process Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000008263 repair mechanism Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001066 destructive effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Description
パイプラインプロセッサの性能は、条件的分岐の実行に要する時間により厳格に制限される。通常、プロセッサは、命令を連続態様でフェッチしかつ実行する。すなわち、アドレスからフェッチされた命令Eiの直後に実行される命令Ei+1(Eiの直後の要素)は、nにEiの長さを加えることにより求められる。無条件的分岐は、非連続アドレスでの命令への制御の転送を引き起こす。或るコンピュータでは、分岐命令Bの目的アドレスは命令内に含まれ、一方、目的は、命令B内に含まれるオフセットを、命令B自体がフェッチされたアドレスに加えることにより形成される。
条件的分岐命令は、幾つかのデータの試験に基づいて、制御の転送を条件的に引き起こす。このような命令は、目的アドレスの仕様と一緒に、試験すべき条件を含んでいる。この条件は、一般に、数字の代数的属性の小さなセットの1つであり、数字は零または非零、正または非正、負または非負等である。条件が適合する場合には、分岐がなされる(すなわち、直後の要素の命令が分岐の目的アドレスからフェッチされる)。条件が適合しない場合には、直後の要素の命令は、非分岐命令としての次の連続命令である。
パイプラインコンピュータは、各命令を、幾つか(通常、少なくとも5つ)の処理段からなるパイプラインに通す。新しい命令は、各クロックサイクル中にパイプラインに入れられる。この結果、パイプラインコンピュータは、異なる実行段での幾つかの命令をもつことができ、従って各段でのハードウェア資源の利用を最小にする。
パイプラインコンピュータの条件的分岐により引き起こされる性能低下は、試験すべきデータの代数的条件が決定される前に分岐がフェッチされるときに生じる。この現象は、分岐命令自体が試験すべきデータの位置を特定する構成のこれらのコンピュータにおいては最悪である。代数的条件は、パイプラインの幾つかの段が走査(traversed)された後にのみ評価される。これは分岐命令がフェッチされるまで開始されないので、試験すべき条件は、分岐がフェッチされた後の幾つかのクロックサイクルまで知られない。フェッチされるべき次の命令の位置は、データが試験されるまで確実に決定されないので、幾つかのクロックサイクルについていかなる命令もフェッチされない。
分岐予測は、条件的分岐をフェッチすると瞬時に、試験の成果の決定を待機することなく、分岐がなされるか否かを予測する試みである。このようにして、命令は全速力で取出し続けられる。分岐が予測されると、この予測の妥当性を実証しかつ正しくない予測から回復することが必要になる。予測が正しくない場合には、誤って予測された(「悪い」)分岐後にフェッチされた全ての命令がエラーとしてフェッチされ、このため、これらの実行の効果を逆にしなければならない。予測した分岐を記録し、妥当性を実証しかつ修復する技術は本発明の要旨ではない。
悪い分岐の後にフェッチされた全ての命令は廃棄しなければならないので、これらは廃棄努力を表す。従って、マシンの性能は、分岐予測の精度に直接関係する。
分岐予測スキームは、静的または動的に構成できる。静的スキームでは、分岐命令自体が予測を含んでいる。すなわち、これは、一般に、一般的なデータセットでプログラムを実行するコンパイラーに基づいて、プログラムを作ったコンパイラーにより供給される。静的予測は、コンピュータの命令セットがこれを考慮に入れて設計されている場合にのみ可能である。商業的に成功している殆どの命令セットは、静的分岐予測を可能にする設備を提供しない。
動的分岐予測は、プログラム実行中にハードウェアにより集められる分岐に関する情報を使用している。ハードウェアは所与の分岐命令の過去の実行パターンについて「知っている」に過ぎず、このため、その動的分岐予測はこのような情報に基づかなくてはならない。条件的分岐は非常に頻繁(5つの命令毎に1つの密度)であるので、各々について記憶されるヒストリーの量は、非常に大きな記憶容量を必要としないで非常に大きくすることはできない。一般に、分岐予測情報は極く僅かに維持されるが、プログラムの分岐の部分集合(subset)を変化させる。
プログラムの実行中の任意の時点での所与の分岐命令の正しい実行ヒストリーは、二進記号1および0のシーケンスとして表される。このシーケンスは、分岐命令が(1)を取るか、(0)を取らないかを見分ける。分岐命令が実行される度毎に、当該分岐のヒストリーは、分岐の正しい(必ずしも予測したものではない)実行がなされたか否かに基づいて、その終時に1または0を加えることにより延長される。
分岐命令の実行ヒストリーは、ランに分割できる。分岐ランは、1だけ直前および直後(またはこの逆)の連続0のシーケンスである。すなわち、ヒストリーにおける各記号は正確に1つのランであり、各ランは全ての0または全ての1からなる。ランの長さは、ランにおける記号の個数である。
従来技術の動的分岐予測機構は、プログラムの多くの分岐において、0のランの全てまたは殆ど全てが長いものであるという見解を用いている。これらは、通常、ループを終了させる分岐である。ループは、一般に、該ループの本体を構成する連続命令の終時に条件的分岐を設けることにより実施される。条件的分岐はループ終了条件を試験し、この条件が正当でない場合にはループ本体であるシーケンスの第1命令に分岐する。分岐がなされない場合には、ループは終了される。この分岐が実行される次の時点はループの次の付勢での第1実行であり、これは、この付勢が一走査(one traversal)後に終了しない限り行なわれる。従って、ループの終了を表す単一0(single 0)からなるランがある。(幾つかのコンパイラーは、本体の終時ではなく開始時における条件的分岐でループを構成する。このようなループは、分岐が行なわれると終了する。このループ構造は、単一1(single 1)からなるランでヒストリーを実行させる)。
従来技術の分岐予測子は、各予測を、各分岐について記憶されたヒストリーの2ビットに基づかせている。これらのビットは、4状態のステートマシン(第1図)の状態である。このステートマシンの効果は、分岐が、1より大きい長さの最終ランと同じ成果を得ることを予測することである。従って、その実行ヒストリーが2つ以上の0のランをもたないように、常に1回以上走査されるループの場合には、予測は一定になるであろう。
この従来技術のステートマシンの予測精度は、1のランの長さに直接関係している。平均ラン長さがnである場合には、n個の全ての正しい予測について1つの正しくない予測がある。かくして、短いランほど効率が悪くなる。本発明の目的は、短いラン長さの分岐についての予測精度を改善することにある。
発明の要約
多くの分岐は、一定であるか緩やかに変化するラン長さを有する(すなわち、1の幾つかの実行ランが同じ長さを有する)。本発明は、2つの小さなカウンタ(アップカウンタおよびダウンカウンタ)を加えることにより、各分岐について記憶されるヒストリーを向上させる。カウンタは、従来技術のステートマシン分岐予測子に関連して作動する。
アップカウンタは、現在ランの長さをカウントする。カウンタがオーバーフローする前にランが終了する場合には、アップカウンタの値がダウンカウンタにコピーされ、アップカウンタはゼロに再初期化される。次に、ダウンカウンタは、次のランの間にカウントダウンする。使用される予測は、ダウンカウンタがゼロに達するまでステートマシンにより作られた予測である。ダウンカウンタがゼロであるときの第1実行で、ステートマシン予測が補完される。これは、現在ランの長さが先行ランの長さに等しいときには、正しい。ラン長さが一定に維持される限り、本発明の予測精度は100%である。ランがカウントされるよりも長い場合には、カウンタが作動不能になり、予測はステートマシンにのみ基づいて行なわれる。
任意の条件的分岐Bが発行される各時点でその予測ヒストリーが試験され、分岐を予測すべきか否か、およびヒストリーが予測に部分的に基づいて瞬時に更新されているかを決定する。更新は、これがBの再発行であるか否かに基づいても行なわれる。Bの再発行は、Bの任意の実行BEが正しくなく予測されたそのときに生じ、今や正しい方向が知られ、かつBEに先行するいかなる分岐の実行も、正しくなく予測されていないことが判明する。この場合、BEについての分岐修復が行なわれ、連続するあらゆる命令のBEおよび全ての実行が廃棄されかつBが再発行される。
カウンタを更新するためのアルゴリズムは、ステートマシン予測子が常に同じ方向を予測するとの仮定に基づいている。従って、ランの終時はカウンタのみにより予測される。再発行とは、ラン長さが正しく予測されなかったこと、すなわち、ラン長さについていかなる予測もされなかったか、ラン長さの予測が短過ぎまたは長過ぎたことを意味する。先行ランが長過ぎてカウントできないためにラン長さが全く予測されなかった場合で、新たに開始するランが短くて充分にカウントできる場合には、アップカウンタが0にセットされかつダウンカウンタが−1にセットされ、これにより予測子が不能にされる。ランが期待されたよりも早期に終了したため再発行分岐が誤って予測された場合には、より短い新しい長さがアップカウンタからダウンカウンタにコピーされかつアップカウンタが0にリセットされる。予測されたラン長さが短過ぎる場合には、アップカウンタが、より長い正しい長さをカウントするように増大を続け、かつこのより長いランの終時が正しく予測されないことを知るので、ダウンカウンタが−1にセットされる。
再発行ではない分岐の任意の発行時に、アップカウンタがその最大カウントに到達すると、カウンタが当該カウントに留まり、ダウンカウンタは−1にセットされて、あらゆるラン長さ予測を防止する。一方、アップカウンタは、ダウンカウンタが0でなければ増大され、ランの予測終時を表示する。この場合、アップカウンタがダウンカウンタにコピーされ、次に0にリセットされる。アップカウンタがその最大値になくかつダウンカウンタが不能状態にない場合には、ダウンカウンタは、これが0に到達していなければ減少する。
本発明により各分岐について記憶しなければならない付加情報は実質的なものである。好ましいことは、少数のビットにより高性能ゲインが得られることである。3ビットカウンタは、7より小さい全ての一定ラン長さを正しく予測する。正しく予測されない最短のラン長さ(7)は、ステートマシン予測子のみから87%の精度を有している。4ビットカウンタは少なくとも93%の精度が得られる。
好ましい実施例の説明
本発明の好ましい実施例は、スーパースカラープロセッサ(superscalar processor)にある。スーパースカラープロセッサは、単一クロックサイクル当たりの多数(この場合、4つ)の命令を取出してパイプラインに発行する。プロセッサの全ての要素が本発明にとって関係するものではないので、これらの要素のうちの幾つかの要素は本発明の説明には含めない。「プロセッサアーキテクチャー(Processor Architecture)」という名称に係るPopescu等による1990年12月5日付米国特許出願第07/622,893号を参照されたい。
本発明の分岐命令の予測に関し、全ての分岐の実行ヒストリーが2つの構造(すなわち、プロセッサの分岐予測RAM10および分岐シェルフ20)に記憶される。分岐予測RAM10は、最古の未解決予測分岐までの(但し、該未解決予測分岐は含まない)分岐実行の全てのヒストリーを記憶する。分岐シェルフ20は未解決予測分岐である(または未解決予測分岐に続く)全ての分岐実行のヒストリーを保持する。
好ましい実施例では、分岐予測RAM10は1K(1024)ワードからなる。分岐予測RAM10を読取るため、プロセッサのプログラムカウンタレジスタ11は、値PC(value PC)を用いてアドレスバス13を介してRAM10にアドレスする。PCは、次にプロセッサで取出される命令のメモリアドレスである。分岐予測RAM10は、4つのデータ出力ポートDOUT 0〜DOUT 3を有し、これらはそれぞれ出力ライン14A〜14Dに接続されている。これらの4つのポートには、それぞれ4つのアドレスPC、PC+1、PC+2およびPC+3での命令についての分岐予測状態が通され、プロセッサのスーパースカラー特性に適合される。もちろん、本発明は、簡単なスカラーにも等しく適用できることを理解すべきである。
分岐予測RAM10は倍長語アドレスされている。すなわち、アドレスバス13を通るPCの最下位ビットは無視される。従って、2つの連続命令(一方の連続命令は偶数PC値、他方の連続命令は次に高い奇数PC値)が、必然的に、分岐予測RAM10からの同じ予測ヒストリーに割当てられる。2つの連続分岐命令が現れることは希であり、このため、1KディープRAM(1K-deep RAM)10は、2K命令までのユニークな予測ヒストリーを記憶する。
分岐予測RAM10はキャッシュではない。そのコンテンツ(内容)は、所与の分岐命令の予測状態を正確に反映するものでもよいし、反映しなくてもよい。例えば、PC値が正確に2Kの倍数だけ異なる2つの命令は別名である。両命令のヒストリーは同じRAM語で記憶され、このため、破壊的に干渉するであろう。これは、分岐予測RAM10が予測機構に過ぎず、あらゆる分岐予測が後で実証されかつ正しくない場合には修復されるため許容される。従って、破壊的別名付け(destructive aliasing)は、予測精度(従って性能)の潜在的低下の場合にのみ生じる。すなわち、分岐予測RAM10のサイズは、性能低下に対して釣合いがとれたものである。
分岐シェルフ20は、全ての推論的分岐命令の予測ヒストリーを記憶する12ディープコンテントアドレッサブル先入れ先出し構造(12-deep content-addressable First-In First-Out(FIFO)structure)である。正しい方向が未だ知られていない予測分岐実行であるか、該予測分岐実行に続く全ての命令実行は、推論的実行(speculative executions)である。分岐シェルフ20は、アドレスバス13に接続されるサーチポートと、後述の3つのライン37B、39、40に接続される入力ポートと、分岐予測RAM10に接続される更新ポートとを有する。
分岐シェルフ20は、推論的分岐実行の分岐予測ヒストリーを、これらが発行される順序に記憶する。分岐シェルフ20に記憶された各エントリーは本発明に関連する2つの部分(すなわち、条件的分岐命令の予測ヒストリーおよび命令のアドレス)を有している。付加エントリー信号40が真(すなわち、論理「1」)であるとき、各クロックサイクルで、1つの新しいエントリーが、入力ポートを介して分岐シェルフ20に付加される。
分岐シェルフ20は棚のスタックのように作動する。各エントリーは、「最下方」の空位置に書込まれ、最下方位置は、更新ポートを介して分岐予測RAM10に取り出すことができる。更新ポートは3つのライン、すなわち、分岐シェルフ20の最下方位置の条件的分岐命令の予測ヒストリーデータを転送するデータバス19Aと、最下方位置の条件的分岐命令のアドレスを転送するアドレスバス19Bと、書込み作動を遂行すべきであることを分岐予測RAM10に信号伝達する書込み許可制御ライン19Cとを有する。この取出しが生じると、分岐シェルフ20の全てのエントリーが1つにシフトダウンされる。分岐修復には、誤予測されたことが発見された分岐実行へのエントリーを、この上の全てのエントリーと一緒に削除することが含まれる。このようにして、分岐シェルフ20の全ての有効エントリーは、これらが入れられる順序で、最下方エントリーから連続的に記憶される。
PC値が、アドレスバス13を介して分岐シェルフ20のサーチポートに入力されると、PC、PC+1、PC+2およびPC+3アドレスが、記憶された各分岐命令アドレスと比較され、かつ付加エントリー信号が真である場合には入力ポートでのアドレスと同時に比較される。これらの比較の結果は、4つのデータ出力ポートBOUT 0〜BOUT 3で、分岐シェルフ20から送られる。分岐シェルフ20の各データ出力ポートは2つの部分を有しかつ2セットのラインに接続される。1つのセットは、各ポートBOUT 0〜BOUT 3の1ビットマッチライン22A〜22Dである。他のセットは、記憶された各分岐命令アドレスに対する予測ヒストリーデータについて、それぞれ各ポートBOUT 0〜BOUT 3のデータバス21A〜21Dである。これらの出力ポートのマッチライン22A〜22Dは、それぞれPC、PC+1、PC+2またはPC+3とマッチする少なくとも1つの記憶されたアドレスである場合にのみ論理「1」を搬送する。マッチライン22A〜22Dが論理「I」であるあらゆるポートについては、該ポートでの対応する予測ヒストリーデータは、そのアドレスがマッチする最上方(すなわち、最も後に入れられた)エントリー(ここで、入力ポートの値は最上方であると考えられる)に記憶されたデータである。
マッチライン22A〜22Dは、それぞれ、2対1マルチプレクサ15A〜15Dに接続されかつ該マルチプレクサを制御する。論理1でのマッチライン22A〜22Dを備えた各データ出力ポートBOUT 0〜BOUT 3について、対応するマルチプレクサ15A〜15Dは分岐シェルフ20からデータバス21A〜21Dを選択する。前記ポートからの予測ヒストリーデータは、当該マルチプレクサ15A〜15Dへの出力として選択される。データ出力ポートのマッチライン22A〜22Dが論理0である場合には、対応するマルチプレクサ15A〜15Dの出力は、分岐予測RAM10の対応するデータ出力ポートDOUT 0〜DOUT 3から、バス14A〜14Dを介して予測ヒストリーデータを選択する。
この構成では、4つのマルチプレクサ15A〜15Dの出力は、PC、PC+1、PC+2、PC+3での任意の分岐についての最も新しい予測ヒストリーである。任意の時点で、PC+i(ここで、iは0、1、2、3)に分岐命令Bが存在する場合には、2つの可能性(すなわち、Bの推論的実施が存在しないか、1つ以上の推論的実施が存在するか)が存在する。前者の場合には、分岐シェルフ20からのPC+1に対応するマッチライン22A〜22Dは論理0であり、このため、マルチプレクサ15A〜15Dの出力は、分岐予測RAM10から対応する出力バス14A〜14Dを介して出力される。マルチプレクサ15A〜15Dからの出力信号は、その最も新しい実行による分岐命令B(この場合には、非推論的である)を表す。
Bの推論的実行が存在する場合には、分岐シェルフ20の出力ポートBOUT 0〜BOUT 3のうちの1つのポートからのマッチライン22A〜22Dが論理1信号を搬送し、当該ポートの予測ヒストリー出力は、Bの最も新しい推論的実行の後の出力である。全ての推論的実行は、全ての非推論的実行より新しいので、これは最も新しい実行でありかつ対応するマルチプレクサ15A〜15Dにより出力として選択される。
各マルチプレクサ15A〜15Dの出力バスは、4つの同一予測モジュール16A〜16Dのうちの1つの入力バスである。第3図に示す各予測モジュール16A〜16Dは、それぞれのマルチプレクサ15A〜15Dからの予測ヒストリーデータを試験して、分岐命令の現在の実行の予測を決定する。予測ヒストリーデータは、2ビット予測状態、3ビットアップカウンタ値および3ビットダウンカウンタ値からなる8ビットを有する。予測ヒストリーデータは、各マルチプレクサ15A〜15Dの出力バスを形成する8つのバスラインで搬送される。
各予測モジュール16A〜16Dは、NORゲート23および排他的ORゲート24を有している。NORゲート23は、入力としてダウンカウンタの3ビットを受入れ、NORゲート23の出力は1つの入力として排他的ORゲート24に接続される。排他的ORゲート24への第2入力は予測状態の上位のビットおよび予測状態ビットの状態〔1〕である。第3図に示すように、下位ビット、状態〔0〕およびアップカウンタの3ビットが、NORゲート23および排他的ORゲート24に接続することなく、予測モジュール16A〜16Dに通される。
ステートマシンにより与えられる予測は、状態、状態〔1〕の最上位ビットに等しいことは理解されよう。ゼロのダウンカウンタ値(論理0に等しい3つの全てのビット)は、NORゲート23に出力論理1を発生させ、これにより、排他的ORゲート24に状態〔1〕の値を補完させる。ダウンカウンタがゼロでない場合には、NORゲート23は論理0の出力を有し、これにより、排他的ORゲート24に状態〔1〕の値を出力させる。排他的ORゲート24の出力は予測値である。
予測モジュール16A〜16Dの出力、および予測ヒストリーデータの8ビットプラスPC+i(i=1〜3)での4つの各命令についての現在の予測は、それぞれ、命令デコードFIFO25の入力ポート26A〜26Dに接続される。FIFO25は5つの命令深層(instructions deep)であり、かつ命令が、命令キャッシュ(図示せず)から取出されるときからプロセッサのパイプラインの実行段に発行されるまで命令を記憶する。4つまでの命令の予測ヒストリーデータは、入力ポート26A〜26Dで各クロックサイクルに付加できる。予測ヒストリーデータは、最下方の空位置からのアドレスを増大させるため付加される。すなわち、入力ポート26A(該ポートは、PCでの命令についての予測ヒストリーを受入れる)を通るデータは、FIFO25の最下方空エントリーに入る。入力ポート26Bを通るデータはこの直ぐ上に入り、以下同様に行なう。
命令の予測ヒストリーは入力ポート26Aに入力されるけれども、命令アドレスおよびPCは、FIFO25のアドレス入力ポート30を通ってバス13により供給される。命令デコードFIFO25は、この中に記憶された各命令に関連する論理を含んでおり、これからのアドレスが取出される。
命令発行論理50は、命令デコードFIFO25の4つの最下方命令デコードFIFO25を試験する。命令発行論理50の1次応答性は、命令デコードFIFO25の各命令について、命令を「発行」できる時点すなわちプロセッサパイプラインにおける次の状態まで前進される時点を決定する。命令発行論理50が遂行すべき2つの仕事は、(1)発行された各命令の結果のアベイラビリティ(可用性)および位置をトラッキングすること、および(2)命令デコードFIFO25における各命令の、前に発行された命令への依存性を決定することである。これらの仕事を如何に遂行するかの詳細は、本発明とは無関係である。
命令発行論理50が次のパイプライン段への命令を発行するとき、命令発行論理50は、命令デコードFIFO25の下方(bottom)から命令を取出す。好ましい実施例では、命令デコードFIFO25内の前記下方の命令より「下」の全ての命令が発行されなければ、いかなる命令も発行されない。従って、命令デコードFIFO25は真のFIFO(先入れ先出し)である。
命令デコードFIFO25が分岐命令を含んでいる場合には、命令発行論理50が最下方のこのような命令を試験する。それが非条件的分岐である場合には、命令発行論理50は2つの特定ステップ、すなわち、(1)命令がフェッチされるシーケンスを変えるため分岐命令により指向されるように、プログラムカウンタレジスタ11を変化させる段、および(2)命令デコードFIFO25の「最上方(top)」から実行すべきではない、分岐に続くこれらの命令を取り出す段を遂行する。
命令デコードFIFO25の最下方命令が条件的分岐である場合には、命令発行論理50は、上記のようにして、(1)前に発行したどの命令(単一または複数)にこの分岐が基づいているか、(2)これらの先行命令が可用性を有するか、可用性を有するとすれば、これらの結果の値はいくつか、を決定する。分岐が基づいている全ての結果が知られている場合には、命令発行論理50は、これらの結果を評価して、分岐命令を行なうべきか、行なわないべきかを決定する。分岐命令を行なう場合には、命令発行論理50は、上記2つのステップ、すなわちプログラムカウンタレジスタ11を変更すること、および命令デコードFIFO25から、後続の全ての廃棄命令を除去することを遂行する。
命令デコードFIFO25の最下方分岐命令が条件的分岐でありかつ該分岐命令が基づいている結果に可用性がない場合には、命令発行論理50は予測を用いて分岐の廃棄を決定する。この予測は予測モジュール16A〜16Dにより発生されかつ分岐命令により、入力ポート26A〜26Dを介して命令デコードFIFOに書き込まれる。再び、分岐が予測される場合には、プログラムカウンタレジスタ11のコンテンツが変更されかつ分岐に続く命令がFIFO25から廃棄される。
分岐シェルフ20の書込みを制御する命令発行論理50により発生される3つの制御信号出力が存在する。アッドエントリー信号40は、条件的分岐命令が発行される(すなわちFIFO25の下方から取り出される)全てのクロックサイクルでの論理1である。アッドエントリー信号40が論理1であるときにはいつでも、2ビットの選択分岐信号35は、発行される分岐命令のFIFOにおけるインデックスであり、取出し信号(Taken signal)41は、分岐がなされた場合には論理1であり、分岐がなされない場合には論理0である。
命令デコードFIFO25は4つの出力ポートFOUT 0〜FOUT 3を有し、該ポートFOUT 0〜FOUT 3には、それぞれ、データバス31A〜31Dおよびアドレスバス32A〜32Dに接続される。これらの各出力ポートFOUT 0〜FOUT 3は2ピースの情報、すなわち、データバス31A〜31Dの1つのFIFO25に記憶された予測ヒストリーおよび対応するアドレスバス32A〜32Dの関連命令アドレスを発生する。これらの4つの出力ポートFOUT 0〜FOUT 3は、命令FIFO25の最下方の4つのエントリーを出力する。
データバス31A〜31Dおよびアドレスバス32A〜32Dは、2つの選択制御ライン35を有するマルチプレクサ36の入力ターミナルに接続される。制御ライン35の命令発行論理50により発生される選択分岐制御信号は、命令デコードFIFO25の4つの出力のうちの最古の条件的分岐のインデックスである。この制御信号は、マルチプレクサ36に、それぞれアドレスバス37Bおよびデータバス37Aの出力として、出力ポートFOUT 0〜FOUT 3のうちの1つから、当該最古の分岐のアドレスおよび予測状態情報を選択させる。アドレスバス37Bは、分岐シェルフ20の入力ポート18に直接接続される。
データバス37Aの予測状態情報は更新モジュール38に向かう。モジュール38は、後述のようにして、予測状態を「更新」しかつ当該データを、分岐シェルフ20の入力ポート18Aに接続されたライン39に導く。命令発行論理50からの制御ライン40のアッドエントリー信号は、命令デコードFIFO25の条件的分岐命令が発行されると、入力ポート18A、18Bでのアドレスおよび更新状態情報が分岐シェルフ20に書き込まれるようにする。
ランダム論理メモリまたはROMベースメモリに実施される更新モジュール38は、4状態分岐予測子およびアップカウンタおよびダウンカウンタのための新しい値をつくり出す。分岐予測子のこの新しい値は、第1図の状態図に示すようにして計算される。当該ステートマシンへの入力は、命令発行論理50により発生された取出し信号41である。その値は、分岐がなされる場合には論理1であり、分岐がなされない場合には論理0である。
第4図は、更新モジュール38がアップカウンタおよびダウンカウンタのための新しい値を計算するアルゴリズムを示す。モジュール38は、最初に、ステップ101で、分岐の予測方向が正しくないことが知られているか否かを決定する。これは、分岐が基づいているデータが知られていること、および予測モジュール16A〜16Dにより発生されかつ命令デコードFIFO25に記憶された予測方向が正しい方向ではないことを必要とする。
予測が誤りであることが知られていない場合には、パス202に進み、アップカウンタが試験されて、ステップ102で、アップカウンタがその最大値に到達しているか否かを決定する。最大値に到達している場合には、分岐ラン長さは、これらのカウンタによりトラッキングするには長過ぎる。パス203に進み、ステップ103で、ダウンカウンタが最大値(本発明の実施例では7)にセットされる。これは、分岐ラン予測を不能にする効果を有する。なぜならば、ダウンカウンタが減少することはなく、従って決してゼロに到達しないからである。アップカウンタは既に最大値に到達しているので、変更されることはない。
アップカウンタがその最大値に到達していない場合には、パス204に進む。ステップ104、105により、ダウンカウンタは、これが最大値、ゼロまたはこれらの中間値にあるか否かが試験される。ダウンカウンタが中間値にある場合には(ステップ104、105の後で、それぞれパス205、206に進み)、これは、この分岐については分岐ラン予測が不能になっておらず、分岐ランが予測ランの終時に到達していないことを意味する。従って、ダウンカウンタは、ステップ107により1だけ減少される。なぜならば、今や、予測ランの終時に近い1分岐実行になっているからである。
ステップ104で、ダウンカウンタがその最大値にあると決定された場合には、アップカウンタはステップ108により1だけ増大される。かくして、現在ランの長さは、分岐ラン予測子が不能になった場合でも(カウンタが最大値に到達するまで)常にアップカウンタ内に維持される(ステップ104の後、パス207に進む)。
ステップ105で、ダウンカウンタがゼロであると決定された場合には、パス208に進む。ダウンカウンタには、ステップ109で、アップカウンタの現在値が再ロードされ、次に、ステップ110でアップカウンタが再初期化される。ゼロにあるダウンカウンタは予測ランの終時を意味する(すなわち、第1分岐は逆方向に進む)。ダウンカウンタへのアップカウンタのコピーイングは、次のランが、丁度終了したばかりのランと同じ長さになるであろう。アップカウンタの0へのセッティングは、この1つの逆分岐の後の次の分岐が、新しいランでの最初の分岐になることを予測する。従って、単一分岐により逆方向に分離された(最大のカウンタ値より小さい)一定長さのランをもつ分岐は、常に正しく予測されるであろう。
ステップ101に戻り、分岐予測が誤っていることが判明した場合には、パス210に進む。ステップ111で、アップカウンタが最大値にあるか否かを決定すべくチェックされる。カウンタが最大値に到達した場合には、完了したばかりの現在ランが、(正しくない予測により表示されたように)カウンタにとって長くなり過ぎるけれども、次のランは充分に短くなる。パス211に進み、ステップ112において、ダウンカウンタは最大値にセットされ、分岐ラン予測子を不能にするけれども、アップカウンタは、ステップ110で再初期化される。
ステップ111で、アップカウンタがその最大値に到達していないことが決定されると、パス212に進む。ステップ113で、ダウンカウンタがゼロであるか否かがチェックされる。ダウンカウンタがゼロであれば、現在ランは終了した(すなわち、予測長さが短過ぎた)と、正しくない予測されたことになる。この場合にはアップカウンタがこのランの実際の長さをカウントしており、このカウントが続けられる。パス213に進み、ステップ114でダウンカウンタが最大値にセットされ、現在ラン中にこれ以上予測することが防止される。アップカウンタはステップ108で増大される。
ステップ113で、ダウンカウンタがゼロでないことが決定された場合には、現在ランは、未だ終了していないと正しくなく予測された(すなわち、予測された長さは長過ぎた)ことになる。現在ランの実際の長さを保持するアップカウンタは、ダウンカウンタにコピーされ、ステップ109により、次のランが同じ長さのランであることを予測する。次に、ステップ110で、アップカウンタがゼロに再初期化される。
第5A図は、3つの一定ラン長さをもつ分岐についての分岐予測子の定常状態挙動を示す。左端欄は分岐予測子の状態を示し、また、「アップ」欄はアップカウンタの値を、「ダウン」欄はダウンカウンタの値を、「予測」欄は分岐予測子からの予測ビットを示す。右端欄は分岐の実際の方向を示し、この欄で、1は選択された分岐を意味し、0は選択されない分岐を意味する(これらの値を逆にすれば、同じ挙動が得られるであろう)。この欄は、1つの0の後に、3つの1が続く反復パターンを示している。この場合、優勢方向(predominant direction)が1であるので、4つの状態予測子は常に1を予測する。その予測は最上位の状態ビットである。なぜならば、0の逆ランは1より長くはなく、このステートマシンの状態の最下位ビットのみが常に変化するからである。
第5A図の第1列に示すように、ダウンカウンタはゼロであり、アップカウンタはランの長さ(3)に等しい。ダウンカウンタのゼロの値は、分岐予測子のステートマシンにより与えられる予測(この予測は1である)が、予測モジュール16A〜16Dにより補完されるようにする。この0分岐が発行されかつ分岐シェルフ20に書き込まれると、更新モジュール38は、アップカウンタが最大値より小さくかつダウンカウンタがゼロであるという事実に応答して、ステップ109で、アップカウンタをダウンカウンタにコピーしかつステップ110でアップカウンタをゼロにリセットする。
次の時点でこの分岐がフェッチされ、第5A図の第2列に与えられた値が、分岐シェルフ20または分岐予測RAM10のいずれかにより読み取られる。このとき、予測モジュール16A〜16Dは非ゼロのダウンカウンタ値を確認し、従って1の非修正ステートマシン予測を可能にする。この分岐が発行されると、更新モジュール38はアップカウンタが最大値より小さくかつダウンカウンタがゼロと最大値との間の中間値にあることを確認する。従って、更新モジュール38は、ステップ107でダウンカウンタを簡単に減少させかつステップ108でアップカウンタを増大させる。これと同じ挙動が次の2回反復され、分岐がフェッチされかつ発行される。第5A図の列5に示すこの1のランの終時に、ダウンカウンタは再びゼロに到達し、これにより、予測が再び補完されかつカウンタが再初期化されて次のランをカウントする。
第5B図は、長さ3のランの後に短いランが続くときの挙動を示し、長さ2のこの場合には、長さ4の長いランが続く。第5B図の第1列に示す状態では、長さ3の先行ランの終時が、第5A図に示すように正しく予測されている。カウンタは、次のランも長さ3になると仮定して再初期化される(第2列)。アップカウンタは増大されかつダウンカウンタは列3および列4を通って減少される。列4では、予測は依然として1である。なぜならば、予測ランが完了していなけれども、実際の方向は0だからである。
次の時点で、列4で発行される分岐の正しい方向が知られる。分岐修復機構は当該分岐の効果およびこれに続く全ての命令を廃棄する。次に、この分岐が再フェッチおよび再発行される。再フェッチ(列4′で示す)時のステートマシンおよびカウンタの値は、元のフェッチ(列4で示す)にあったときと同じ値である。分岐修復機構が、分岐シェルフ20に対するあらゆる修正を含む元の発行の全ての効果を取り出しているので、これらの修正は分岐予測RAM10には決して書き込まれない。なぜならば、分岐が未だ解決されていないからである。
修復の後で分岐が再発行されると、更新モジュール38が、0の既知の正しい方向に対し、予測(これは、再び1である)を比較し、予測が誤っていることを決定する。ステップ110の後は、パス210に進む。第5B図の列5に示すように、アップカウンタが最大値より小さくかつダウンカウンタがゼロでないので、更新モジュール38はアップカウンタをダウンカウンタにコピーしかつアップカウンタを0にリセットする。かくして、分岐ラン予測子は、次のランが長さ2になることを予測するようにセットされる。
アップカウンタおよびダウンカウンタは、列6および列7における2の予測ラン長さをカウントアウトする。ダウンカウンタがゼロであるので、列7で発行される分岐はランの終時であると予測される。従って、予測は0に変更される。これは、正しくない予測であると後で発見されるため、列7′に示すように、分岐は予測子のための同じ値が再発行される。この時点で、更新モジュール38は、ステップ101で、予測が誤っていることを決定し、かつパス210に再び進む。ステップ111で、アップカウンタが最大値でないことを決定した後、次のステップ113で、ダウンカウンタがゼロであることを決定する。この場合、ランの実際の長さは未だ知られていないので、その終時を予測することはできない。従って、ステップ114でダウンカウンタが最大値にセットされ、ランの終時を予測するあらゆる試みを防止する。アップカウンタは増大を続け(ステップ108)、現在のランの長さをカウントする。
ダウンカウンタが不能になっているので、列8、9での予測が、ステートマシン予測子から直接なされる。列9で発行された分岐は1であると予測されかつ0(0は、長さ4のランの終時を示す)であることが発見される(列5、6、7、8)。分岐が再発行されると(列9′)、更新モジュール38は、ステップ101で、この予測が誤っていたことを再び決定する。ステップ111の後、パス212に進み、ステップ113で、ダウンカウンタがゼロでないと決定され、これにより、ステップ109でアップカウンタがダウンカウンタにコピーされ、ステップ110でアップカウンタがゼロに再初期化される。従って、列10では、分岐ラン予測子は、次のランが長さ4になることを予測するようにセットされる。
分岐ラン予測子を用いないで、第5B図に示す例の全ての分岐は、1であると予測されるであろう。従って、列4、9の分岐は正しく予測されないことがあろうが、列7の分岐は正しく予測されているであろう。すなわち、7より短いランに長いランが続くときには、特別な分岐修復が行なわれる。列4におけるように、7以下の長さのランに短いランが続く場合には、分岐ラン予測子を用いて(または用いることなく)、修復が行なわれる。短いランに同じ長さのランが続く場合には、いつでも、分岐ラン予測子は分岐修復を回避する。
一定のまたはゆっくりと変化するラン長さの分岐についての分岐予測速度は、本発明の使用により極めて改善される。急速に変化するラン長さの分岐は、ラン長さの正確な分布により、悪い性能を有するであろう。
以上、本発明の好ましい実施例について完全に説明したが、種々の変更および均等物を使用できるであろう。上記実施例に適当な変更を加えることにより、本発明を等しく適用できることは明らかである。従って、上記説明が本発明の範囲を制限するものではなく、本発明の範囲は請求の範囲の記載により定められるものである。
Claims (28)
- コンピュータシステムの実行用命令メモリから、非条件的分岐命令および条件的分岐命令の両方を有する命令のシーケンスをフェッチングするコンピュータシステムの作動方法において、
各クロックサイクルにおいて、プログラムカウンタのアドレスで、前記命令メモリから少なくとも1つの命令を読取るステップと、
前記命令メモリからの各分岐命令を、非条件的命令、条件的かつ取り出すべきものと知られた命令、取り出すべきではないと知られた命令、または推論的命令に級別するステップと、
シーケンスにおける各推論的分岐命令についてのラン長さを予測して、前記推論的分岐命令のラン長さより大きい最新のラン長さに等しいラン長さを得るステップと、
非条件的命令、取り出すべきものと知られた命令、または取り出すべきものと予測された命令である第1分岐命令により指向された次のクロックサイクルの読取りステップのためのプログラムカウンタを変えるステップと、
分岐方向が第1の方向の条件的分岐命令のラン長さをカウントし、第1ラン長さを決定するステップと、分岐方向が第2の方向の条件的分岐命令を実行した後、再び分岐方向が第1の方向となって始まるラン長さをカウントし、第2ラン長さを決定するステップと、第2ラン長さが第1ラン長さよりも短い場合には、分岐方向を第1の方向と予測するステップとを有し、
前記フェッチング方法は、前記条件が不変のルーピング挙動を呈する場合には、前記命令メモリに記憶された条件的分岐を制御する条件を正確に予測することを特徴とするコンピュータシステムの作動方法。 - 前記予測ステップは前記分岐命令の回数をカウントすることを含み、条件的分岐命令の制御条件が不成立である第2状態に変化する前の1つの状態に留まって、前記条件的分岐命令のラン長さを決定することを特徴とする請求の範囲第1項に記載の作動方法。
- 前記カウンティングサブステップが、所定の定数までカウントアップすることを含むことを特徴とする請求の範囲第2項に記載の作動方法。
- 前記予測ステップは、前記条件的分岐命令の現在ランの長さが前記所定の定数に等しいかこれより大きい場合に、条件的分岐命令が、該条件的分岐命令の少なくとも2命令以上のフェッチと同じになるように条件的分岐命令を制御する条件を予測することを特徴とする請求の範囲第3項に記載の作動方法。
- 前記カウンティングサブステップは、条件的分岐命令の最終の2命令以上の連続フェッチについての不変の条件を補完するための知られたまたは予測された条件をもつ最終フェッチ以降の前記条件命令のフェッチ数をカウントすることを含むことを特徴とする請求の範囲第2項に記載の作動方法。
- 前記予測ステップは、条件的分岐命令の最終の2命令以上のフェッチについての不変の条件を補完するための知られたまたは予測された条件をもつ最終フェッチ以降の前記条件命令のフェッチ数を記憶することを含むことを特徴とする請求の範囲第5項に記載の作動方法。
- 前記予測ステップは、先行ラン長さと前記条件的分岐命令のフェッチの現在数とを比較すること、および前記先行ラン長さがフェッチの前記現在数に等しくなければ、前記制御条件が前記条件的分岐命令の最終の2命令以上のフェッチと同じであると仮定することを含むことを特徴とする請求の範囲第6項に記載の作動方法。
- 前記予測ステップは、前記先行ラン長さが所定の定数に等しいかこれより大きいかを決定することを含むことを特徴とする請求の範囲第7項に記載の作動方法。
- 前記仮定サブステップは、前記先行ラン長さが前記所定の定数より小さくかつフェッチの前記現在数に等しくなければ、前記制御条件が前記条件的分岐命令の最終の2命令以上のフェッチと同じであると仮定することを特徴とする請求の範囲第8項に記載の作動方法。
- 前記予測ステップは、第1二進カウンタと各条件的分岐命令とを関連付けること、
関連付けられたカウンタを、前記分岐命令が該分岐命令のリフェッチではなくかつ前記分岐命令の直前フェッチの制御条件を補完する制御条件をもつことが知られているか予測されている場合、または前記分岐命令が該分岐命令のリフェッチでありかつ前記分岐命令の直前フェッチの制御条件と同じである制御条件をもつことが予測されている場合に、条件的分岐命令のフェッチ時に初期化すること、および、
前記カウンタが所定の最大カウントに到達していなければ、前記カウンタを、前記分岐命令の各連続フェッチで1つだけ増大させることを含むことを特徴とする請求の範囲第1項に記載の作動方法。 - 前記予測ステップが更に、
第2二進カウンタと各条件的分岐命令とを関連付けることを含み、前記第2カウンタは前記第1二進カウンタと同じ最大カウントを行い、
前記第2カウンタがゼロカウントを保持する場合およびこの場合にのみ、関連付けられた分岐命令の前記制御条件が補完するように予測すること、および、
前記フェッチが、前記分岐命令の早期フェッチでの正しくない予測により必要とされるリフェッチであるか否かに応答して、前記分岐命令の各フェッチで前記第2二進カウンタを修正することを含むことを特徴とする請求の範囲第9項に記載の作動方法。 - 前記フェッチが前記分岐命令のリフェッチではなく、前記第2二進カウンタの修正サブステップが更に、第1二進カウンタが前記最大カウントを保持する場合には、前記第2二進カウンタを前記最大カウントにセットすること、
第2二進カウンタがゼロカウントを保持しなければ、第2二進カウンタを1だけ減少させること、
前記第2二進カウンタがゼロカウントを保持する場合には、第1二進カウンタのカウントを前記第2二進カウンタにコピーすることを含むことを特徴とする請求の範囲第10項に記載の作動方法。 - 前記フェッチが前記分岐命令のリフェッチである場合には、前記第2二進カウンタの修正サブステップが更に、
前記早期フェッチの前記制御条件が、前記条件的分岐命令の最終の2命令以上のフェッチについて不変となるように補完されることを予測していなければ、早期フェッチの時点で、前記第1二進カウンタを第2二進カウンタにコピーすること、および、
前記早期フェッチの前記制御条件が、前記条件的分岐命令の最終の2命令以上のフェッチについて不変となるように補完されることを予測している場合には、前記第2二進カウンタを前記最大カウントにセットすることを含むことを特徴とする請求の範囲第10項に記載の作動方法。 - 前記予測ステップは、
リフェッチされている前記分岐命令のフェッチの直前の前記分岐命令についての前記第1および第2二進カウンタの最終の2命令以上のフェッチおよびカウントについて不変の前記分岐命令の前記制御条件を回復させることを含むことを特徴とする請求の範囲第12項に記載の作動方法。 - 前記予測ステップは、
条件的分岐命令の最終の2命令以上のフェッチ、前記分岐命令についての前記第1および第2二進カウンタ、および前記分岐命令の各フェッチにおける前記分岐命令の命令メモリのアドレスについて不変の前記分岐命令の前記制御条件を記憶することを含むことを特徴とする請求の範囲第13項に記載の作動方法。 - コンピュータの条件的分岐命令の方向を予測する方法において、
所定限度までの前記分岐命令の第1ラン長さを決定するステップと、
前記条件的分岐命令の次のラン長さをカウントするステップと、
前記次のラン長さが前記第1ラン長さに等しくなるかこれを超える前に終了しなければ、前記次のラン長さが前記第1ラン長さに等しいと仮定するステップと、分岐方向が第1の方向の条件的分岐命令のラン長さをカウントし、第1ラン長さを決定するステップと、分岐方向が第2の方向の条件的分岐命令を実行した後、再び分岐方向が第1の方向となって始まるラン長さをカウントし、第2ラン長さを決定するステップと、第2ラン長さが第1ラン長さよりも短い場合には、分岐方向を第1の方向と予測するステップとを有することを特徴とする、
条件的分岐命令の予測の適正化方法。 - 前記次のラン長さが前記第1ラン長さを超える場合に、前記次のラン長さが無制限に連続することを特徴とする請求の範囲第16記載の方法。
- 前記第1ラン長さに等しくなる前に前記分岐命令の次のラン長さが終了する場合に、前記次のラン長さを決定するステップと、
前記次のランに続く前記条件的分岐命令のラン長さをカウントするステップと、
前記次のランに続く前記ランが、前記次のラン長さに等しくなるかこれを超える前に終了しなければ、前記次のランに続く前記ランが、前記次のラン長さに等しいと仮定するステップとを更に有することを特徴とする請求の範囲第17記載の方法。 - コンピュータシステムの分岐命令を制御する条件の結果を予測する方法において、
前記条件の結果が第2の状態に変化する前の第1の状態である回数を予測できる限界値を決定するステップと、
予測する回数が前記限界値よりも小さい場合には、前記条件の結果を前記第1の状態である回数が前記第2の状態に変化する前の回数と同数であると仮定して予測するステップとを有することを特徴とする方法。 - 前記決定ステップおよび予測ステップが、各条件的分岐命令に対して遂行されることを特徴とする請求の範囲第17項に記載の方法。
- 前記予測ステップに従って前記分岐命令をするステップを更に有することを特徴とする請求の範囲第17項に記載の方法。
- 前記分岐命令をするステップが、
前記制御条件の前記第1状態に伴って前記分岐命令を前記回数行なうこと、および、
次に、前記制御条件の前記第2状態に伴って前記分岐命令を行なわないことを有することを特徴とする請求の範囲第21項に記載の方法。 - 前記決定ステップでは、前記第1ラン長さが制限されることを特徴とする請求の範囲第20項に記載の方法。
- 前記決定ステップが、
前記条件的分岐命令の現在ランの長さの第1カウントを維持すること、および、
前記第1カウントおよび前記条件的分岐命令の最も新しく完了したラン長さに応答する第2カウントを維持することを含むことを特徴とする請求の範囲第21項に記載の方法。 - 前記第1カウントは、前記条件的分岐命令が正しく行なわれる度毎に前記第1カウントを増大させることにより維持されることを特徴とする請求の範囲第24項に記載の方法。
- 前記第2カウントは、前記条件的分岐命令が正しく行なわれる度毎に前記最も新しく完了したラン長さのカウントを減少させることにより維持されることを特徴とする請求の範囲第24項に記載の方法。
- 前記決定ステップが、
前記条件的分岐命令が正しく行なわれる度毎に前記第1カウントを増大させることにより、前記条件的分岐命令の現在ランの長さの第1カウントを維持すること、
前記条件的分岐命令が正しく行なわれる度毎に前記最も新しく完了したラン長さのカウントを減少させることにより、前記第1カウントおよび前記条件的分岐命令の最も新しく完了したラン長さに応答する第2カウントを維持することを有することを特徴とする請求の範囲第24項に記載の方法。 - 前記現在ランの長さが前記最も新しく完了したラン長さより短い場合に、前記条件的分岐命令の前記最も新しく完了したラン長さについて、前記第1カウントから前記第2カウントをコピーすること、および、
前記第1カウントを再開することを更に有することを特徴とする請求の範囲第27項に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US34851994A | 1994-12-02 | 1994-12-02 | |
US08/348,519 | 1994-12-02 | ||
PCT/US1995/015043 WO1996017295A1 (en) | 1994-12-02 | 1995-11-20 | Limited run branch prediction |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10510076A JPH10510076A (ja) | 1998-09-29 |
JP3725547B2 true JP3725547B2 (ja) | 2005-12-14 |
Family
ID=23368385
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP51887696A Expired - Lifetime JP3725547B2 (ja) | 1994-12-02 | 1995-11-20 | 限定ラン分岐予測 |
Country Status (7)
Country | Link |
---|---|
US (1) | US5926634A (ja) |
JP (1) | JP3725547B2 (ja) |
KR (1) | KR100371686B1 (ja) |
CN (3) | CN1159648C (ja) |
GB (1) | GB2309806B (ja) |
TW (1) | TW419630B (ja) |
WO (1) | WO1996017295A1 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6438682B1 (en) * | 1998-10-12 | 2002-08-20 | Intel Corporation | Method and apparatus for predicting loop exit branches |
JP3683439B2 (ja) | 1999-08-24 | 2005-08-17 | 富士通株式会社 | 分岐予測を抑止する情報処理装置および方法 |
EP1236097A4 (en) * | 1999-09-01 | 2006-08-02 | Intel Corp | BRANCH COMMAND TO THE PROCESSOR |
US6823446B1 (en) * | 2000-04-13 | 2004-11-23 | International Business Machines Corporation | Apparatus and method for performing branch predictions using dual branch history tables and for updating such branch history tables |
US7107438B2 (en) * | 2003-02-04 | 2006-09-12 | Via Technologies, Inc. | Pipelined microprocessor, apparatus, and method for performing early correction of conditional branch instruction mispredictions |
CN100407133C (zh) * | 2003-07-09 | 2008-07-30 | Nxp股份有限公司 | 用于分支预测的方法和设备 |
US8144156B1 (en) | 2003-12-31 | 2012-03-27 | Zii Labs Inc. Ltd. | Sequencer with async SIMD array |
JP2007109116A (ja) * | 2005-10-17 | 2007-04-26 | Fukuoka Pref Gov Sangyo Kagaku Gijutsu Shinko Zaidan | 推定装置、テーブル管理装置、選択装置、テーブル管理方法、そのテーブル管理方法をコンピュータに実現させるプログラム、及び、そのプログラムを記録する記憶媒体 |
US8640005B2 (en) | 2010-05-21 | 2014-01-28 | Intel Corporation | Method and apparatus for using cache memory in a system that supports a low power state |
US10007524B2 (en) * | 2014-11-14 | 2018-06-26 | Cavium, Inc. | Managing history information for branch prediction |
EP3933597A1 (en) * | 2020-06-30 | 2022-01-05 | Microsoft Technology Licensing, LLC | Code flow trace compression employing branch prediction for implicit code flow data encoding in a processor |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4764861A (en) * | 1984-02-08 | 1988-08-16 | Nec Corporation | Instruction fpefetching device with prediction of a branch destination for each branch count instruction |
US5440704A (en) * | 1986-08-26 | 1995-08-08 | Mitsubishi Denki Kabushiki Kaisha | Data processor having branch predicting function |
GB8728493D0 (en) * | 1987-12-05 | 1988-01-13 | Int Computers Ltd | Jump prediction |
DE69130138T2 (de) * | 1990-06-29 | 1999-05-06 | Digital Equipment Corp., Maynard, Mass. | Sprungvorhersageeinheit für hochleistungsfähigen Prozessor |
US5367703A (en) * | 1993-01-08 | 1994-11-22 | International Business Machines Corporation | Method and system for enhanced branch history prediction accuracy in a superscalar processor system |
TW261676B (ja) * | 1993-11-02 | 1995-11-01 | Motorola Inc |
-
1995
- 1995-11-20 GB GB9710868A patent/GB2309806B/en not_active Expired - Fee Related
- 1995-11-20 JP JP51887696A patent/JP3725547B2/ja not_active Expired - Lifetime
- 1995-11-20 WO PCT/US1995/015043 patent/WO1996017295A1/en active Search and Examination
- 1995-11-20 CN CNB951965549A patent/CN1159648C/zh not_active Expired - Fee Related
- 1995-11-20 CN CNB2006100755280A patent/CN100507834C/zh not_active Expired - Fee Related
- 1995-11-20 CN CNB2003101242940A patent/CN1306394C/zh not_active Expired - Fee Related
- 1995-12-02 KR KR1019950046241A patent/KR100371686B1/ko not_active IP Right Cessation
-
1996
- 1996-02-06 TW TW085101434A patent/TW419630B/zh not_active IP Right Cessation
- 1996-10-11 US US08/731,367 patent/US5926634A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
GB2309806A (en) | 1997-08-06 |
CN100507834C (zh) | 2009-07-01 |
GB2309806B (en) | 2000-02-23 |
CN1306394C (zh) | 2007-03-21 |
CN1881177A (zh) | 2006-12-20 |
TW419630B (en) | 2001-01-21 |
KR960025144A (ko) | 1996-07-20 |
GB9710868D0 (en) | 1997-07-23 |
JPH10510076A (ja) | 1998-09-29 |
CN1159648C (zh) | 2004-07-28 |
KR100371686B1 (ko) | 2003-03-31 |
US5926634A (en) | 1999-07-20 |
CN1619488A (zh) | 2005-05-25 |
WO1996017295A1 (en) | 1996-06-06 |
CN1168727A (zh) | 1997-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3565504B2 (ja) | プロセッサにおける分岐予測方法及びプロセッサ | |
US5442756A (en) | Branch prediction and resolution apparatus for a superscalar computer processor | |
CN105320519B (zh) | 使用长历史记录的条件分支预测 | |
KR100395763B1 (ko) | 멀티프로세싱 마이크로프로세서에 적합한 분기 예측기 | |
JP3594506B2 (ja) | マイクロプロセッサの分岐命令予測方法 | |
US7831817B2 (en) | Two-level branch prediction apparatus | |
US10664280B2 (en) | Fetch ahead branch target buffer | |
EP0394624B1 (en) | Multiple sequence processor system | |
JP5209633B2 (ja) | ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法 | |
JP2001243069A (ja) | 分岐予測装置及び分岐予測方法 | |
US5935238A (en) | Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles | |
US5964869A (en) | Instruction fetch mechanism with simultaneous prediction of control-flow instructions | |
US11442727B2 (en) | Controlling prediction functional blocks used by a branch predictor in a processor | |
JP3725547B2 (ja) | 限定ラン分岐予測 | |
EP0094535B1 (en) | Pipe-line data processing system | |
US4739470A (en) | Data processing system | |
WO1999032966A1 (en) | Branch prediction with return selection bits to categorize type of branch prediction | |
EP1193594B1 (en) | Register renaming apparatus and processor | |
US7765387B2 (en) | Program counter control method and processor thereof for controlling simultaneous execution of a plurality of instructions including branch instructions using a branch prediction mechanism and a delay instruction for branching | |
JP3802038B2 (ja) | 情報処理装置 | |
US20070061554A1 (en) | Branch predictor for a processor and method of predicting a conditional branch | |
US5745780A (en) | Method and apparatus for source lookup within a central processing unit | |
JP3146077B2 (ja) | プロセッサ | |
KR100305487B1 (ko) | 특정유형의인스트럭션을동시에처리할수있는방법및데이터프로세싱시스템 | |
US5838944A (en) | System for storing processor register data after a mispredicted branch |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040518 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20040818 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20041004 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041118 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050118 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20050418 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20050606 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050719 |
|
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: 20050906 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050922 |
|
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: 20080930 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090930 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100930 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100930 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110930 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120930 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130930 Year of fee payment: 8 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |