JP3602542B2 - スーパースカラマイクロプロセッサにおける分岐予測正確度向上のための装置および方法 - Google Patents

スーパースカラマイクロプロセッサにおける分岐予測正確度向上のための装置および方法 Download PDF

Info

Publication number
JP3602542B2
JP3602542B2 JP52944797A JP52944797A JP3602542B2 JP 3602542 B2 JP3602542 B2 JP 3602542B2 JP 52944797 A JP52944797 A JP 52944797A JP 52944797 A JP52944797 A JP 52944797A JP 3602542 B2 JP3602542 B2 JP 3602542B2
Authority
JP
Japan
Prior art keywords
state
instruction
bunch
branch
output
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 - Fee Related
Application number
JP52944797A
Other languages
English (en)
Other versions
JPH11504458A (ja
Inventor
エム クルカーニ,パトリシュ
リーブ,リチャード
アール. サクセナ,ニーマル
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
Publication of JPH11504458A publication Critical patent/JPH11504458A/ja
Application granted granted Critical
Publication of JP3602542B2 publication Critical patent/JP3602542B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • DTEXTILES; PAPER
    • D06TREATMENT OF TEXTILES OR THE LIKE; LAUNDERING; FLEXIBLE MATERIALS NOT OTHERWISE PROVIDED FOR
    • D06FLAUNDERING, DRYING, IRONING, PRESSING OR FOLDING TEXTILE ARTICLES
    • D06F43/00Dry-cleaning apparatus or methods using volatile solvents
    • D06F43/02Dry-cleaning apparatus or methods using volatile solvents having one rotary cleaning receptacle only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Textile Engineering (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Description

技術分野
本発明は、マイクロプロセッサに関し、さらに特定するとスーパースカラマイクロプロセッサにおける分岐予測に関する。
背景技術
スーパースカラまたは、多重パイプラインアーキテクチャを使用しない従来のマイクロプロセッサは、直列の命令ストリームから命令を受け取り、これらの命令を、ジャンプまたは分岐を許可する論理的順序で順次処理する。条件付き分岐命令に遭遇した場合、マイクロプロセッサは、このマイクロプロセッサによって既に実行された命令によってセットされた特定のフラグをテストし、直列命令ストリーム中のこの条件付き分岐命令に続く命令の実行を続けるか、または条件付き分岐命令によって記載される位置に記憶された命令の実行を続けるかの何れかを実行する。
スーパースカラマイクロプロセッサは直列命令ストリームを受け入れる事が可能であり、非スーパースカラマイクロプロセッサと同じ結果を形成する。しかしながら、スーパースカラマイクロプロセッサは多数の命令を同時に内部処理し、そのため、命令の最初の作り手によって意図された順序、即ちそられの論理的順序とは異なった順序で命令が処理される事態を生じる場合もある。
図1を参照すると、通常のスーパースカラマイクロプロセッサ102とメモリ104が示されている。フェッチ回路106はメモリ104に命令して、フェッチプログラムカウンタ108中に含まれるメモリアドレスから始まる命令のブロック110、112を、一度に一ブロック、メモリ領域114に転送させ、実行ユニット116、118、120によって同時に処理させる。図1に示すブロック110、112およびメモリ領域114のサイズは4ワードであり、図1に示す実行ユニット116、118、120の数は3であるが、通常のスーパースカラマイクロプロセッサは、どのようなサイズのブロック110、112と記憶領域114をも持つことが可能で、かつ実行ユニット116、118、120の数もどの様なものであっても良い。
通常の非スーパースカラマイクロプロセッサによって形成される結果と同一の結果を、スーパースカラマイクロプロセッサによって形成するために、スーパースカラマイクロプロセッサはある問題を生じる。スーパースカラマイクロプロセッサの設計によって生じる一つの問題は、条件付き分岐命令の処理において発生する。スーパースカラマイクロプロセッサにおいてフラグをセットする命令は、分岐命令がスーパースカラマイクロプロセッサによって実行される用意が出来た時点では処理されていない場合があるため、条件付き命令に論理的に先行する全ての命令の実行を待つことなく、非スーパースカラマイクロプロセッサが条件付き分岐命令の実行の後でどの命令を実行するべきかを、確実に決めることは不可能である。このような先行する全ての命令の実行を待つことは、望ましくない遅延を生じる。
このような遅延を防ぐための一つの方法として、論理的に先行する命令の実行を待つことなく条件付き分岐命令の結果を予測し、その予測が正確であるかのようにして命令の処理を続行する試みがなされている。条件付き分岐に論理的に先行する命令の実行が全て完了した時、その予測が正確であったかどうかがテストされる。もし分岐予測が正確であった場合は、処理は続行され、望ましくない遅延は防止される。分岐予測が正確でない場合、処理は停止し、そして条件付き分岐の後に実行されるべきであった命令から処理を再開する。この場合の遅延は、処理が条件付き分岐命令に論理的に先行する命令の実行を待つために延期された場合よりも短い。
どの分岐方向を行使すべきかを予測するために、既に種々の方法が存在する。一つの方法は、常に、分岐命令中に示された分岐を行使すると予測することである。このような予測は多くの場合その回数の50%以上が正しい。これは、多くのプログラムが、行使された分岐命令中に記載された分岐を結果として生じるループ命令を、そうでない場合よりもより頻繁に含んでいるためである。例えば、PASCAL命令:
Figure 0003602542
は、分岐命令中に記載された分岐をその回数の99%において行使する。勿論、if..then、while..do、repeat..until、のような他の命令は、予測において同じような正確性を与えないが、しかしその構成は実行するには比較的単純で、スーパースカラマイクロプロセッサ102の価値ある領域を節約する。
条件付き分岐命令中に記載された命令が条件付き分岐命令に続いて実行される場合、この動作は、「分岐を行使する(taking the branch)」として記載され、この結果その分岐または分岐の「方向」が「行使される」。条件付き分岐命令の条件が満たされない(not true)ために分岐命令に物理的に続く命令が実行された場合、この動作は「分岐を行使しない(not taking the branch)」と記載され、分岐または分岐の「方向」は「行使されない」として記載される。
分岐予測の正確度を向上するための一つの考えは、「バイモデル」分岐予測として知られており、2ビット飽和カウンタを分岐を行使すべきかどうかを示す予測カウンタとして使用すことを含んでいる。2ビット飽和カウンタは、分岐を群を成して行使すべきである言う仮定を利用しており、そのため分岐または分岐グループのどちらを行使すべきかは、すぐ前の一個の分岐または複数の分岐のどちらが行使されたかを参照して予測される。さて、図2Aおよび2Bを参照すると、2ビット飽和カウンタの状態テーブルが示されている。状態210は分岐を行使すべきではないとの強い指示を示している。状態212は分岐を行使すべきではないとの弱い指示を示している。状態214は分岐を行使すべきであるとの弱い指示を示している。状態216は分岐を行使すべきであるとの強い指示を示している。予測の状態は、全ての状態210、212、214、216によって開始される。現在の予測状態の最上位ビットが状態214および216のように「1」の値を有する場合、分岐を行使すると予測し、現在の予測状態の最上位ビットが状態210、212のように「0」の値を有する場合、分岐は行使されない。分岐に論理的に先行する命令が実行された後で予測がテストされる場合、予測の状態はテーブル218に従って変更される。コラム220は、現在の状態を示し、コラム222は新しい状態を示し、さらにコラム224は実際の分岐動作、即ち分岐が実際に行使されたことを意味する行使、または分岐が実際には行使されなかったことを示す不行使、を示す。強い指示から、分岐予測を変化させるためには、その指示とは反対の2個の実際の分岐が必要である。2ビット以上のカウンタを含む他の構造のカウンタを使用して、予測の変更を要する強い指示に反対する実際の分岐の数を変更することも可能である。
図2Aの状態は、示されたものとは反対の値、即ちそれぞれの状態210、212、214、216に対して、強い行使、弱い行使、弱い非行使および強い非行使を持つことができる。この場合、値「1」を有する最上位ビットは、その分岐が非行使として予測されるべきであることを示し、「0」はその分岐が行使されるものと予想されるべきであること示している。図2Bのテーブル218は、コラム224の実際の動作とは反対の動作を伴なって、上述したように使用される。
バイモデル分岐予測の正確度は、行使された実際の分岐動作の履歴を記録する履歴レジスタを用いることによってより向上する。履歴レジスタの使用は、条件付き分岐が繰り返しパターンに基づいて行使されることを仮定している。例えば、次のPASCALプログラムにおいて、
Figure 0003602542
内部分岐は2回行使されるが、その分岐を行使する外部分岐に続く第3の、外部分岐に基づいて98回繰り返されるであろう行動は、行使されない。内部および外部分岐の両者の、直前の4個の分岐動作に関する知識によって、次の分岐動作をバイモデル分岐予測よりもより高度な正確度で予測することが可能である。シフトレジスタを履歴レジスタとして用いて、遭遇した各分岐に対してビットを単一の方向(右または左)に一ポジションシフトすることによって分岐動作の追跡を維持する。即ち、実際に行使された各分岐に対して、「1」をシフトインし、実際に行使されなかった各分岐に対して「0」をシフトインする。例えば、左シフトレジスタは、外部分岐が行使された後1101を読みだし、下位2番目の位置における0によって内部ループの最終に達したことを示す。次の分岐は其れが内部ループの次の繰返の最初の分岐であるため、行使と予想されるべきである。
履歴レジスタを、履歴テーブルとバイモデル分岐予測の2ビット飽和カウンタと共に使用して、予測を完成する。さて図3を参照すると、上述したように履歴レジスタ308の内容が、履歴テーブル312へのインデックスとして使用される。履歴レジスタ308と同じインデックスを有するポインタ316は、2ビット飽和カウンタ318、320、322、324、326をポイントする。これらのカウンタは、図2Aを参照して既に述べたように状態テーブルを有し、これは上述したように分岐予測を決定するために使用される。履歴レジスタ308全体が、テーブル312へのインデックスとして使用され、あるいは履歴レジスタ308において最も最近シフトインされたビットとこれに隣接するある個数のビットが、テーブル312へのインデックスとして使用される。
他の方法は、条件付き分岐命令のアドレスの全てのアドレスまたは幾つかの低位ビットが、履歴レジスタ308の代わりにテーブル312へのインデックスとして使用される点を除けば、上述した履歴テーブル方法と類似している。
さらに他の方法は、通常の条件付き分岐命令のアドレスの低位ビットと幾つかまたは全ての分岐履歴を例えば連結または排他的論理和結合し、履歴レジスタ308のみの代わりにテーブル312へのインデックスを形成する。
再び図1を参照すると、もし条件付き分岐命令のアドレスがインデックスを形成するために使用されると、そのアドレスはフェッチプログラムカウンタレジスタ108とメモリ114中の条件付き分岐命令の位置から計算される必要があり、マイクロプロセッサ102により一層の複雑性と計算遅延をもたらす。もしその履歴がインデックスを形成するために使用されると、このインデックスは、実行された各条件付き分岐命令に対して更新される必要があり、その結果マイクロプロセッサ102の設計にさらなる複雑性をもたらす。
発明の要約
本方法および装置は、メモリブロックから検索された命令バンチ(bunch、グループ)中の各条件付き分岐命令を行使するか否かを、2ビット飽和カウンタアレイへのポインタテーブルを使用して予測する。命令バンチ中の各条件付き分岐命令に対して、テーブルへのインデックスは、履歴レジスタに添付されあるいは結合されたブロック中の同じ一個のバイトのアドレスの最下位ビットから得られる。この履歴レジスタは、そのバンチ中の何れかの分岐が実際に行使された場合「1」にそれ以外は「0」にシフトインすることによって、その命令バンチを一回更新する。インデックスは各条件付き分岐命令の正確なメモリ位置の計算を必要としないので、インデックスを決定するために必要な時間と複雑性は減少する。履歴テーブルは、バンチ中の各条件付き分岐命令に対して一回ではなく、バンチに対して一回のみ更新されるので、複雑性はさらに減少する。
【図面の簡単な説明】
図1は、従来の、スーパースカラマイクロプロセッサとメモリの概略ブロック図である。
図2Aは、従来の2ビット飽和カウンタの状態図である。
図2Bは、図2Aに示す従来の2ビット飽和カウンタの動作を説明する状態テーブルである。
図3は、テーブルを用いた従来の分岐予測の概略ブロック図である。
図4Aは、本発明の一実施例にかかる条件付き分岐の予測方法を説明するフローチャートである。
図4Bは、本発明の一実施例にかかる予測インジケータの更新方法を説明するためのフローチャートである。
図4Cは、本発明の一実施例にかかる履歴レジスタの更新方法を説明するためのフローチャートである。
図5は、本発明の一実施例にかかるスーパースカラマイクロプロセッサにおける条件付き分岐予測回路の概略ブロック図である。
実施例
図4Aに、本発明に基づいた、数個のメモリのバンチにおける条件付き分岐命令の予測方法を説明するフローチャートを示す。バンチ中の一個の命令に対する記憶アドレスの一部または全てが同一であると確認される(410)。一実施例において、このアドレスは、命令バンチの内の第1命令の第1バイトのメモリアドレスである。その他の実施例では、バンチ中の第1または他の命令の他のバイトのアドレス、またはそのバンチに特有の識別子を使用する。
幾つかあるいは全ての履歴レジスタが以下に示すように使用されるために、検索される(412)。履歴レジスタは、記憶アドレスの検索(410)後、それ以前または実質的に同時に、検索される(412)。この履歴レジスタは、例えば全て0のように、如何なる値にも初期化することが可能で、図4Bに示すように更新される。
予測テーブルアドレスは、履歴レジスタとバンチ中の一個の命令の記憶アドレスを使用して計算される(414)。一実施例では、テーブルアドレスは、履歴レジスタ全体を最上位または最下位のテーブルアドレスビット位置に配置しかつバンチ中の一個の命令の記憶アドレスのある数の下位ビットを残りのテーブルアドレスビット位置に配置する事によって形成された、連結体である。その他の実施例では、テーブルアドレスは、最上位または最下位のテーブルアドレスビット位置におけるある数の履歴レジスタビットと、残りのテーブルアドレスビット位置におけるバンチ中の一個の命令の記憶アドレスのある数の下位ビットとの連結体である。一実施例では、履歴レジスタは、この履歴レジスタの最下位ビット位置へ一ビットシフトインすることによって更新され、この履歴レジスタの下位4ビットはテーブルアドレスビット位置の上位4ビットに配置され、さらに命令バンチ中の第1の命令のアドレスの下位8ビットはテーブルアドレスの残りの下位8ビット中に配置されて、12ビットテーブルアドレスを形成する。
上述の一実施例では、連結されるべきバンチ中の命令の一バイトのアドレスのビットは、アドレスの最下位ビットであり、連結すべき履歴レジスタのビットは最も最近にシフトインされた履歴レジスタビットとこれに隣接する履歴レジスタビットである。
他の実施例では、履歴レジスタは、テーブルアドレスを計算するために、バンチ中の命令の1バイトのアドレス無しに、使用される。その他の実施例では、バンチ中のメモリの1バイトのアドレスが、履歴レジスタを用いずにテーブルアドレスを計算するために、使用される。
テーブルアドレスは、同様に、履歴レジスタとバンチ中の命令の一個のバイトのアドレスとを用いて、連結以外の方法によって計算される。その他の実施例では、履歴レジスタの数個あるいは全てのビットとバンチ中の命令の一個のバイトの数個または全てのアドレスビットとの、排他的論理和を取ることによって、履歴テーブルを形成する。一実施例では、排他的論理和を取るべきバンチ中の命令の一個のバイトのアドレスビットは、アドレスの最下位ビットであり、排他的論理和を取るべき履歴レジスタのビットは、最も最近にシフトインされた履歴レジスタビットとこれに隣接する履歴レジスタビットである。
テーブルアドレスはその後、予測インジケータの一部あるいは全てを検索する(416)ために使用される。一実施例では、この予測インジケータは、予測インジケータのテーブル中におけるテーブルアドレスに配置される。その他の実施例では、ポインタを介してテーブルアドレスに配置される。予測は、検索された予測インジケータに基づいて成される。一実施例では、各予測インジケータは、図2Aに示す状態テーブルを有する上述した2ビット飽和カウンタのような2ビットカウンタとして動作し、テーブルアドレスに対応する2ビット飽和カウンタの最上位ビットが例えば「1」(214、216)である一個の値を有する場合、条件付き分岐を行使すると予測し、テーブルアドレスに対応する2ビット飽和カウンタの最上位ビットが反対の値、例えば「0」(210、212)を有する場合、行使しないと予測する。この方法を用いて引き出された単一の予測は、一回実施され、バンチ中の全ての条件付き分岐に対して使用される。
任意に、例えば上記図2Bを用いて示した方法を用いて、バンチ中の何れかの分岐が実際に行使されたかどうかに基づき、予測インジケータを更新することができる。図4Bおよび2Bを参照すると、バンチ中の何れかの分岐が実際に行使された場合、予測インジケータの状態は、テーブル213の下部228を用いて更新される。バンチ中の何れの分岐も実際に行使されない場合、予測インジケータはテーブル218の上部上部226を用いて更新される。
一実施例では、バンチ中の分岐命令に対する全ての予測が実施された後、履歴レジスタは命令の各バンチに対して一回更新される。一実施例では、履歴レジスタは図4Cに示すように更新される。もし、バンチ中の何れかの分岐が実際に行使される(430)と、例えば「1」が、履歴レジスタ中にシフトインされ(432)、バンチ中の分岐が実際に行使されない場合、反対の値、例えば「0」が履歴レジスタ中にシフトインされる(434)。シフトの方向が多くのバンチ中で一致している限り、ビットは履歴レジスタ中にいずれの方向からシフトインされても良い。
一実施例では、履歴レジスタは、バンチ中に条件付き分岐命令が存在する場合(436)にのみ、更新される。この実施例は、ある一定の大きさの履歴レジスタが、上述したように条件付き分岐命令を含まないバンチに対しても更新される履歴レジスタよりも、より長い履歴を追跡することを可能とする。
図5を参照すると、本発明に基づいて条件付き分岐命令を予測するために使用される装置の一実施例が示されている。フェッチプログラムカウンタ508は、メモリのような記憶装置に記憶された命令バンチの第1命令の記憶アドレスを保持する。このメモリは、図5には示されていないが、しかし図1のメモリ104と類似の物である。検索器504は、アドレスバス506を介してこのような記憶装置をアドレスし、メモリ510へのデータバス509を介してこのような記憶装置からある数の命令バイトを検索する。実行ユニットローダ502は、メモリ510中に記憶された命令を実行ユニット512中にロードする。ネクスト命令デコーダ516は、メモリ510中に記憶されかつ実行ユニット512中にロードされた命令に続く命令が条件付き分岐命令である場合、タグ記憶装置518中にタグを添付する。タグ記憶装置518中に記憶されたタグは多くのビットから構成され、各ビットは、各実行ユニット512中の命令に続くメモリ510中に記憶された条件付き分岐命令が、この分岐を行使するために合致すべき条件あるいは複数の条件に対応している。一個またはそれ以上の実行ユニット512はそれぞれ、実行ユニット512によって形成された結果に基づいてフラグレジスタ514中に条件フラグビットをセットする、フラグレジスタ514を含んでいる。フラグレジスタ514中の各ビットは、「結果=0」、「結果>0」または「結果<0」のような条件に対応する。結果比較器520はフラグレジスタ514中のフラグビットをタグ記憶器518中に記憶されたタグビットと比較する。もし、タグ記憶器518中のタグビットの全てがフラグレジスタ514中の対応するセットフラグビットと一致する場合、結果比較器520は履歴ラッチ521にトルー(真実)を出力し、分岐を行使するためのバンチ中の一個の条件付き分岐に対する条件が実際に発生したことを示す。履歴ラッチ521は、バンチ中の条件付き分岐命令に先行する全ての命令が、実行ユニット512によって行使されてしまった後、履歴レジスタ522中にシフトインされる。
FPCラッチ511は、フェッチプログラムカウンタ508内に含まれる全てまたは一部のビットの値を保存するために、フェッチプログラムカウンタ508に接続される。履歴レジスタ522は、上述した組み合わせまたは方法で上述したように2ビット飽和カウンタを含むアドレステーブルRAM526に達する連結器524を介してFPCラッチ511に連結される。一実施例では、連結器524は履歴レジスタ522のビットとFPCラッチ511中に含まれるバンチアドレスを連結する。その他の実施例では、連結器524は上述したようにビットに対して排他的論理和を実行する。テーブルRAM526の2ビット飽和カウンタの最上位ビットは出力ライン528上に分岐実行ユニット532に向かって出力され、分岐実行ユニット532に対して上述したようにメモリ510中にロードされるバンチ中の何れかの分岐を行使するか否かを指示する。
更新ユニット530は履歴ラッチ521とテーブルRAM出力529に結合され、連結器524によってアドレスされる2ビット飽和カウンタ中に記憶された両ビットを受け取る。更新ユニット530は、図2Bに示された値を用いて、テーブルRAM526中の2ビット飽和カウンタを更新する。更新ユニット530は、FPCラッチ511中に記憶されたビットに対応するフェッチプログラムカウンタ508によってロードされた命令に対応するメモリ510中に記憶された全ての非分岐命令の後で、テーブルRAMを更新する。この事は、更新ユニット530が、命令がメモリ510中にロードされる毎に一回連結器524によって、テーブルRAMアドレス出力に対応するテーブルRAM526の単一のアドレスを更新することを意味している。メモリ510をロードするための他の構造が可能である。例えば2重バッファ構造では、ポインタはメモリ510に対応するように使用され、一個のポインタは、メモリ510中の命令をロードすべき次の位置を指摘し、他のポインタは、命令をそこから実行ユニット512に転送すべき、メモリ510中の次の位置を指摘する。このような構造において、更新ユニット530は、テーブルRAM526中の2ビットカウンタを、ある時点でメモリ510中に在った全ての命令が実行される度に一回、連結器524の出力のアドレスに対応して、更新する。

Claims (18)

  1. 複数の命令を含み少なくとも一個の命令バンチは少なくとも一個の条件付き分岐命令を含み、各条件付き分岐命令は第1および第2の状態から選択しうる実際に行使された状態を有する、複数の命令バンチの内の一個の命令バンチの条件付き分岐履歴を維持するために、それぞれが第1の値と第2の値を有する複数のビットを備える履歴レジスタを更新するための方法であって:
    前記第1の状態の実際に行使された状態を有する前記 バンチ中に条件付き分岐命令の少なくとも一個の存在を決定し;
    前記第1の状態の実際に行使された状態を有する前記 バンチ中に条件付き分岐命令の少なくとも一個が存在することに応答して、前記第1の値を前記履歴レジスタ中にシフトインし
    前記第1の状態の実際に行使された状態を有する前記 バンチ中に条件付き分岐命令の少なくとも一個が存在しないことに応答して、前記第2の値を前記履歴レジスタ中にシフトインし、さらに
    前記履歴レジスタの内容に基づいて前記命令バンチ中の 全ての条件付き分岐命令に対して分岐予測を行う、各ステップを含む、履歴レジスタを更新するための方法。
  2. 前記バンチ中の少なくとも一個の命令に対して、
    条件付き分岐命令が実際に行使されたか否かを決定し;
    実際に行使された条件付き分岐命令に応答して、第1の状態の実際に行使された状態を選択し;さらに
    実際に行使されなかった条件付き分岐命令に応答して、第2の状態の前記分岐の実際に行使された状態を選択する;
    各ステップを含む、第項に記載の方法。
  3. 複数の命令を含む複数の命令バンチの内の一個の条件付き分岐の履歴を維持するために第1の値と第2の値を有する複数のビットを備える履歴レジスタを更新する方法であって、前記複数の命令バンチの少なくとも一個の命令バンチは、それぞれが第1の状態と第2の状態から選択しうる実際に行使された状態を有する複数の条件付き分岐命令を含むものにおいて、前記方法は:
    前記命令バンチ中の条件付き分岐命令の存在を決定し;さらに
    前記命令バンチ中の条件付き分岐命令の存在に応答して:
    第1の状態の実際に行使された状態を有する前記命令バンチ中に一個の条件付き分岐命令の存在を決定し;
    第1の状態の実際に行使された状態を有する前記命令バンチ中に少なくとも一個の条件付き分岐命令が存在することに応答して、前記第1の値を前記履歴レジスタ中にシフトインし
    第1の状態の実際に行使された状態を有する前記命令バンチ中に少なくとも一個の条件付き分岐命令が存在しないことに応答して、前記第2の値を前記履歴レジスタ中にシフトインし;さらに
    前記履歴レジスタの内容に基づいて前記命令バンチ中の 全ての条件付き分岐命令に対して分岐予測を行う、各ステップを含む履歴レジスタを更新するための方法。
  4. 前記バンチ中の少なくとも一個の命令に対して、条件付き分岐命令が実際に行使されたか否かを決定し;
    実際に行使された前記条件付き分岐命令に応答して、第1の状態の前記実際に行使された状態を選択し;さらに
    実際に行使されなかった前記条件付き分岐命令に応答して、第2の状態の前記分岐の実際に行使された状態を選択する、各ステップをさらに含む、第項に記載の方法。
  5. 少なくとも一個の条件基準を有する複数の条件付き分岐命令のバンチ中の少なくとも一個の条件付き分岐命令と、複数の命令バンチ中の非条件付き分岐命令との方向を予測するための、命令バンチに対して一個 の履歴レジスタを使用する装置であって、各命令バンチは固有の識別子を有し、前記装置は予測された方向を指示するための出力を有するものにおいて、
    出力を有し、前記命令バンチに対する固有識別子の少なくとも一部分を記憶するための、フェッチプログラムカウンタラッチと;
    前記フェッチプログラムカウンタラッチに接続された第1の入力と一個の出力とを有する連結器であって、前記 履歴レジスタはシフトレジスタを含みかつ前記シフトレ ジスタの最も最近にシフトインされたビットと前記シフ トレジスタの少なくとも一個の追加ビットとを含む1個 の出力を有し、前記連結器はさらに前記履歴レジスタの 出力に結合された第2の入力を含む連結器と;
    データ入力と、前記連結器出力に接続されたアドレス入力と、当該装置の出力に接続されたデータ出力を備え、少なくとも一個のアドレス可能な記憶位置に少なくとも一個の予測インジケータを含む、アドレス可能な記憶
    少なくとも一個のレジスタユニットであって、該レジス タユニットは、一個の出力と前記命令バンチ中の少なく とも一個の命令を受け取るように接続された一個の入力 を有し、さらに実行ユニットと少なくとも一個の結果比 較器を有し、前記結果比較器は前記実行ユニットに結合 され、かつ前記レジスタユニット出力に接続された出力 を有し、さらに条件付き分岐命令に先行する前記命令に 応答しかつ前記条件付き分岐命令の少なくとも一個の分 岐基準を有する第1の状態と、条件付き分岐命令に先行 しない前記命令に応答しまたは前記命令に続く条件付き 分岐命令の少なくとも一個の分岐基準を有さない第2の 状態とから状態選択が可能である、少なくとも一個のレ ジスタユニットと;
    前記一個の履歴レジスタに結合され前記一個の履歴レジ スタに状態値を提供するための結果比較器ラッチであっ て、さらに少なくとも一個のレジスタユニット出力に接 続された少なくとも一個の入力と、第1の状態にある少 なくとも一個の前記結果比較器ラッチ入力に応答する第 1の状態と、第1の状態にある前記結果比較器ラッチ入 力の何れにも応答しない第2の状態とから状態選択が可 能である出力とを有する、結果比較ラッチと;および
    一個の更新ユニットであって、前記結果比較器ラッチ出 力に接続された第1の入力と、少なくとも一個のアドレ ス可能な記憶器のデータ出力に接続された第2の入力 と、前記アドレス可能な記憶器のデータ入力に接続され 前記第1の入力と前記第2の入力に応答する複数の選択 可能な状態を有する一個の出力とを有する、一個の更新 ユニット;
    を備える、命令バンチに対して一個の履歴レジスタを使 用する装置。
  6. 前記連結器出力は、複数のフェッチプログラムカウンタラッチビットと、最も最近にシフトインされた履歴レジスタ出力ビットと、前記履歴レジスタ出力の少なくとも一個追加ビットとを備える、第項に記載の装置。
  7. 前記フェッチプログラムカウンタラッチのビット数は8個であり、前記連結器出力は、前記履歴レジスタ出力の3個の追加ビットを含む、第項に記載の装置。
  8. 前記連結器出力は、前記第2の連結器入力と排他的論理和処理された第1の連結器入力を備える、第項に記載の装置。
  9. 前記バンチ中の各命令は記憶アドレスを有し、各命令バンチの前記固有識別子は前記バンチ中の少なくとも一個の命令の記憶アドレスを備える、第項に記載の装置。
  10. 前記命令バンチのための前記固有識別子に対応する前記命令は非条件付き分岐命令である、第項に記載の装置。
  11. 前記更新ユニットの出力は第1の状態、第2の状態、第3の状態および第4の状態から状態選択が可能であり;さらに
    前記更新ユニットの第2の入力に接続された前記アドレス可能な記憶出力は、第1の状態、第2の状態、第3の状態および第4の状態を有するものである、第項に記載の装置。
  12. 第1の状態の前記結果比較器ラッチに応答して前記更新ユニットは、該更新ユニットの出力を:
    第1の状態または第2の状態の前記更新ユニットに応答する第1の状態と;
    前記更新ユニットの第3の状態に応答する第2の状態と;および
    前記更新ユニットの第4の状態に応答する第3の状態;に選択し、
    第2の状態の前記結果比較器ラッチに応答して前記更新ユニットは、該更新ユニットの出力を:
    前記更新ユニットの第1の状態に応答する第2の状態と;
    前記更新ユニットの第2の状態に応答する第3の状態と;
    前記更新ユニットの第3の状態または第4の状態に応答する第4の状態;
    に選択する、第11項に記載の装置。
  13. 前記結果比較器ラッチの第2の状態に対応して、前記更新ユニットは、該更新ユニットの出力を:
    前記更新ユニットの第1の状態または第2の状態に応答する第1の状態と;
    前記更新ユニットの第3の状態に応答する第2の状態と;
    前記更新ユニットの第4の状態に応答する第3の状態;に選択し、さらに
    前記結果比較ラッチの第1の状態に応答して、前記更新ユニットは、該更新ユニットの出力を:
    前記更新ユニットの第1の状態に応答する第2の状態と;
    前記更新ユニットの第2の状態に応答する第3の状態と;および
    前記更新ユニットの第3の状態または第4の状態に応答する第4の状態;
    に選択する、第11項に記載の装置。
  14. 命令バンチ中の複数の分岐命令の方向を示す分岐予測ビットセットを分岐履歴テーブル中に配置するための方法であって、前記各命令は少なくとも一個の固有識別子を有するものにおいて、前記方法は、
    前記分岐履歴テーブルをアクセスする為にフェッチアドレスと履歴レジスタ中のビットからなるアドレスを組み立てるステップであって、前記アドレスは前記フェッチアドレスの対応する下位ビットの複製である下位ビットと前記履歴レジスタ中のビットによってハッシュされた上位ビットを有し;
    前記フェッチアドレスを用いて前記命令バンチをアクセスし、
    構成されたアドレスを使用して前記分岐履歴テーブルから分岐予測ビットセットにアクセスするステップであって、前記分岐予測ビットセットは前記命令バンチ中の前記複数の分岐命令に対応し;
    前記アクセスした命令バンチを処理し、さらに
    前記アクセスした命令バンチ中の第1の分岐命令グループを次の命令バンチ中の第2の分岐命令グループと相互に関係させるために、前記アクセスした分岐予測ビットセットと前記処理した命令バンチとに基づいて前記履歴レジスタおよび前記分岐履歴テーブルを更新する、各ステップを含む方法。
  15. 前記アクセスされた命令バンチ中の各命令は少なくとも1バイトを有し、かつ前記アクセスされた命令バンチの各命令に対応する前記記憶アドレスは前記各命令の1バイトの記憶アドレスである、第14項に記載の方法。
  16. 前記アクセスした命令バンチ中の各分岐命令と前記分岐予測ビットセット間の相関関係は、1対1の関係を有するものである、第14項に記載の方法。
  17. さらに、前記分岐予測ビットセットの少なくとも一個の予測ビットを使用してアクセスした命令バンチの一個の分岐命令に対する予測を行うステップを含む、第14項に記載の方法。
  18. 行使されおよび行使されないグループの少なくとも一個である前記アクセスした命令バンチ中の複数の分岐命令を予測するために、前記アクセスした命令バンチ中の前記分岐命令に対応する少なくとも一個の予測ビットを使用する、第17項に記載の方法。
JP52944797A 1996-02-15 1997-02-10 スーパースカラマイクロプロセッサにおける分岐予測正確度向上のための装置および方法 Expired - Fee Related JP3602542B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/601,744 US5742805A (en) 1996-02-15 1996-02-15 Method and apparatus for a single history register based branch predictor in a superscalar microprocessor
US08/601,744 1996-02-15
PCT/US1997/002184 WO1997030389A2 (en) 1996-02-15 1997-02-10 Method and apparatus for improved branch prediction accuracy in a superscaler microprocessor

Publications (2)

Publication Number Publication Date
JPH11504458A JPH11504458A (ja) 1999-04-20
JP3602542B2 true JP3602542B2 (ja) 2004-12-15

Family

ID=24408602

Family Applications (1)

Application Number Title Priority Date Filing Date
JP52944797A Expired - Fee Related JP3602542B2 (ja) 1996-02-15 1997-02-10 スーパースカラマイクロプロセッサにおける分岐予測正確度向上のための装置および方法

Country Status (5)

Country Link
US (3) US5742805A (ja)
EP (1) EP0823085B1 (ja)
JP (1) JP3602542B2 (ja)
DE (1) DE69738188T2 (ja)
WO (1) WO1997030389A2 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5864697A (en) * 1996-06-28 1999-01-26 Texas Instruments Incorporated Microprocessor using combined actual and speculative branch history prediction
US5857098A (en) * 1997-06-24 1999-01-05 Samsung Electronics Co., Ltd. Branch instruction prediction apparatus
US5941985A (en) * 1997-06-24 1999-08-24 Sun Microsystems, Inc. Branch instruction prediction method
US6021489A (en) * 1997-06-30 2000-02-01 Intel Corporation Apparatus and method for sharing a branch prediction unit in a microprocessor implementing a two instruction set architecture
US6052629A (en) * 1997-07-18 2000-04-18 Gilbarco Inc. Internet capable browser dispenser architecture
US6470386B1 (en) * 1997-09-26 2002-10-22 Worldcom, Inc. Integrated proxy interface for web based telecommunications management tools
US6237077B1 (en) * 1997-10-13 2001-05-22 Idea Corporation Instruction template for efficient processing clustered branch instructions
US6347369B1 (en) 1997-11-17 2002-02-12 Advanced Micro Devices, Inc. Method and circuit for single cycle multiple branch history table access
US6233678B1 (en) * 1998-11-05 2001-05-15 Hewlett-Packard Company Method and apparatus for profiling of non-instrumented programs and dynamic processing of profile data
US6332191B1 (en) * 1999-01-19 2001-12-18 Advanced Micro Devices, Inc. System for canceling speculatively fetched instructions following a branch mis-prediction in a microprocessor
US6272623B1 (en) * 1999-01-25 2001-08-07 Sun Microsystems, Inc. Methods and apparatus for branch prediction using hybrid history with index sharing
JP2000293373A (ja) * 1999-04-12 2000-10-20 Hitachi Ltd 分岐予測装置
US6427206B1 (en) 1999-05-03 2002-07-30 Intel Corporation Optimized branch predictions for strongly predicted compiler branches
CA2279119C (en) 1999-07-29 2004-10-19 Ibm Canada Limited-Ibm Canada Limitee Heuristic-based conditional data indexing
KR100317240B1 (ko) * 1999-10-21 2001-12-22 윤종용 분기 예측 정확도 히스토리를 이용한 분기 예측기
KR100395763B1 (ko) * 2000-02-01 2003-08-25 삼성전자주식회사 멀티프로세싱 마이크로프로세서에 적합한 분기 예측기
US6836841B1 (en) * 2000-06-29 2004-12-28 Intel Corporation Predicting output of a reuse region using prior execution results associated with the reuse region
US7383543B2 (en) * 2000-06-29 2008-06-03 Intel Corporation Management of reuse invalidation buffer for computation reuse
US6738897B1 (en) * 2000-10-06 2004-05-18 Sun Microsystems, Inc. Incorporating local branch history when predicting multiple conditional branch outcomes
JP3729087B2 (ja) * 2001-05-23 2005-12-21 日本電気株式会社 マルチプロセッサシステム、データ依存投機実行制御装置およびその方法
US7739483B2 (en) * 2001-09-28 2010-06-15 Intel Corporation Method and apparatus for increasing load bandwidth
JP3798998B2 (ja) * 2002-06-28 2006-07-19 富士通株式会社 分岐予測装置および分岐予測方法
US8006070B2 (en) * 2007-12-05 2011-08-23 International Business Machines Corporation Method and apparatus for inhibiting fetch throttling when a processor encounters a low confidence branch instruction in an information handling system
US9104399B2 (en) * 2009-12-23 2015-08-11 International Business Machines Corporation Dual issuing of complex instruction set instructions
US8082467B2 (en) * 2009-12-23 2011-12-20 International Business Machines Corporation Triggering workaround capabilities based on events active in a processor pipeline
US9135005B2 (en) 2010-01-28 2015-09-15 International Business Machines Corporation History and alignment based cracking for store multiple instructions for optimizing operand store compare penalties
US8495341B2 (en) * 2010-02-17 2013-07-23 International Business Machines Corporation Instruction length based cracking for instruction of variable length storage operands
US8938605B2 (en) * 2010-03-05 2015-01-20 International Business Machines Corporation Instruction cracking based on machine state
US8464030B2 (en) 2010-04-09 2013-06-11 International Business Machines Corporation Instruction cracking and issue shortening based on instruction base fields, index fields, operand fields, and various other instruction text bits
US8645669B2 (en) 2010-05-05 2014-02-04 International Business Machines Corporation Cracking destructively overlapping operands in variable length instructions
US11928474B2 (en) * 2022-06-03 2024-03-12 Microsoft Technology Licensing, Llc Selectively updating branch predictors for loops executed from loop buffers in a processor

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4679141A (en) * 1985-04-29 1987-07-07 International Business Machines Corporation Pageable branch history table
JP2603626B2 (ja) * 1987-01-16 1997-04-23 三菱電機株式会社 データ処理装置
US4943908A (en) * 1987-12-02 1990-07-24 International Business Machines Corporation Multiple branch analyzer for prefetching cache lines
JPH0769811B2 (ja) * 1988-12-21 1995-07-31 松下電器産業株式会社 データ処理装置
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5414822A (en) * 1991-04-05 1995-05-09 Kabushiki Kaisha Toshiba Method and apparatus for branch prediction using branch prediction table with improved branch prediction effectiveness
JPH0628184A (ja) * 1991-08-26 1994-02-04 Internatl Business Mach Corp <Ibm> ブランチ予測方法及びブランチプロセッサ
US5507028A (en) * 1992-03-30 1996-04-09 International Business Machines Corporation History based branch prediction accessed via a history based earlier instruction address
US5434985A (en) * 1992-08-11 1995-07-18 International Business Machines Corporation Simultaneous prediction of multiple branches for superscalar processing
DE69327927T2 (de) * 1992-08-31 2000-10-12 Sun Microsystems, Inc. Schnelles Vorausholen und Zuteilung von Befehlen mittels vorausschauender Anmerkungen von früher vorausgeholten
US5564118A (en) * 1992-11-12 1996-10-08 Digital Equipment Corporation Past-history filtered branch prediction
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
US5454117A (en) * 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution
US5687360A (en) * 1995-04-28 1997-11-11 Intel Corporation Branch predictor using multiple prediction heuristics and a heuristic identifier in the branch instruction
US5794063A (en) * 1996-01-26 1998-08-11 Advanced Micro Devices, Inc. Instruction decoder including emulation using indirect specifiers
US5875325A (en) * 1996-09-19 1999-02-23 International Business Machines Corporation Processor having reduced branch history table size through global branch history compression and method of branch prediction utilizing compressed global branch history
US5758143A (en) * 1996-10-07 1998-05-26 International Business Machines Corporation Method for updating a branch history table in a processor which resolves multiple branches in a single cycle
US5805878A (en) * 1997-01-31 1998-09-08 Intel Corporation Method and apparatus for generating branch predictions for multiple branch instructions indexed by a single instruction pointer

Also Published As

Publication number Publication date
US5896529A (en) 1999-04-20
WO1997030389A3 (en) 1997-10-23
WO1997030389A2 (en) 1997-08-21
EP0823085A2 (en) 1998-02-11
US6055629A (en) 2000-04-25
US5742805A (en) 1998-04-21
DE69738188D1 (de) 2007-11-22
EP0823085B1 (en) 2007-10-10
DE69738188T2 (de) 2008-01-17
JPH11504458A (ja) 1999-04-20

Similar Documents

Publication Publication Date Title
JP3602542B2 (ja) スーパースカラマイクロプロセッサにおける分岐予測正確度向上のための装置および方法
KR101059335B1 (ko) 가변 길이 명령 세트 실행 모드들을 가지는 프로세서 내의 bht의 효율적 사용방법
JP2668438B2 (ja) データ検索装置
US5954815A (en) Invalidating instructions in fetched instruction blocks upon predicted two-step branch operations with second operation relative target address
KR100347865B1 (ko) 어드레스 트레이스를 이용한 분기 예측 방법
US6449714B1 (en) Total flexibility of predicted fetching of multiple sectors from an aligned instruction cache for instruction execution
US5276882A (en) Subroutine return through branch history table
US6438673B1 (en) Correlated address prediction
US7376813B2 (en) Register move instruction for section select of source operand
EP0227892A2 (en) Updates to branch history table in a pipeline processing system
US5355478A (en) Method for avoiding cache misses during external tournament tree replacement sorting procedures
US20040103262A1 (en) Vector register file with arbitrary vector addressing
US20050198054A1 (en) Speculative load of look up table entries based upon coarse index calculation in parallel with fine index calculation
WO2012076391A1 (en) Vector gather buffer for multiple address vector loads
JP3637922B2 (ja) プロセッサにおけるさまざまな長さの文字列中のターミネーション文字を発見する方法および装置
KR101081674B1 (ko) 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법
JPH04247571A (ja) データベースレコード処理装置
US8473727B2 (en) History based pipelined branch prediction
US6823446B1 (en) Apparatus and method for performing branch predictions using dual branch history tables and for updating such branch history tables
JP3631896B2 (ja) オブジェクト変換装置及びオブジェクト変換方法及びプログラム記録媒体
US20040064663A1 (en) Memory access prediction in a data processing apparatus
US5765007A (en) Microinstruction sequencer having multiple control stores for loading different rank registers in parallel
JPS623342A (ja) パイプラインプロセツサ
JPH0689173A (ja) ブランチ・ヒストリーを持つ命令実行処理装置
JP2954178B1 (ja) 可変式キャッシュ方式

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040511

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040712

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: 20040824

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040924

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: 20071001

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20081001

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20081001

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20091001

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20091001

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20101001

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20101001

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20111001

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20111001

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20121001

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20121001

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20131001

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees