JPH09500989A - 分岐ターゲット・バッファにおける推論履歴 - Google Patents

分岐ターゲット・バッファにおける推論履歴

Info

Publication number
JPH09500989A
JPH09500989A JP6525425A JP52542594A JPH09500989A JP H09500989 A JPH09500989 A JP H09500989A JP 6525425 A JP6525425 A JP 6525425A JP 52542594 A JP52542594 A JP 52542594A JP H09500989 A JPH09500989 A JP H09500989A
Authority
JP
Japan
Prior art keywords
branch
prediction
inference
instruction
history
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.)
Pending
Application number
JP6525425A
Other languages
English (en)
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Priority claimed from PCT/US1994/003897 external-priority patent/WO1994027210A1/en
Publication of JPH09500989A publication Critical patent/JPH09500989A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3844Speculative 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)

Abstract

(57)【要約】 各分岐命令に対する推論履歴(25)と実履歴(22)を分岐ターゲット・バッファに維持する分岐予測機構。実分岐履歴(22)は分岐命令の完全に解決されたオカレンスの分岐履歴を含んでいる。推論分岐履歴(25)は実履歴(22)ならびに分岐に対する最近の分岐予測の「履歴」を含んでいる。推論分岐履歴(25)が何らかの最近の予測を含んでいる場合には、推論ビット(24)がセットされる。推論ビット(24)がセットされた場合、これは分岐に対する推論履歴(25)が存在していることを示す。したがって、推論ビット(24)がセットされた場合、推論履歴(25)を使用して、分岐予測を行う。この分岐に対して誤予測が行われた場合、推論履歴(25)が不正確な分岐履歴を含んでいるので、推論ビット(24)がクリアされる。

Description

【発明の詳細な説明】 分岐ターゲット・バッファにおける推論履歴 発明の背景 1.発明の分野 本発明はマイクロプロセッサ用の分岐予測機構に関する。詳細にいえば、分岐 予測を行った場合に「推論履歴」を格納して、分岐履歴を小さいループ内の分岐 命令に直ちに利用できるようにする分岐予測機構に関する。 2.背景の技術 初期のマイクロプロセッサは命令を一度に1つずつ処理していた。各命令は4 つの順次ステージ、すなわち命令取出し、命令復号、実行、および結果書戻しを 使用して処理されていた。このようなマイクロプロセッサ内では、異なる専用論 理ブロックがそれぞれ異なる処理ステージを行う。各論理ブロックは以前の論理 ブロックがすべて動作を完了するまで待機してから、その動作を開始する。 効率を改善するために、マイクロプロセッサの設計者は取出し、復号、実行、 および書戻しの各ステージの動作を重ね合わせ、マイクロプロセッサが数種類の 命令で同時に動作するようにした。動作時に、取出し、復号、実行、および書戻 しの各ステージは異なる命令を並行に処理する。各クロック時に、各処理ステー ジの結果が後続の処理ステージに渡される。取出し、復号、実行、および書戻し の各ステージを重ね合わせる技法を使用するマイクロプロセッサは、「パイプラ イン式」マイクロプロセッサと呼ばれている。 パイプライン・マイクロプロセッサが効率よく作動するために、パイプライン の先頭の命令取出しユニットがパイプラインに命令のストリームを与える。ただ し、命令ストリーム内の条件付き分岐命令は、条件が解決されるまで、パイプラ インの先頭にある命令取り出しユニットが適正な命令を取出すのを阻止する。パ イプラインを先に進むまで、条件が解決されないため、命令取り出しユニットは 適正な命令を取り出すことができないためである。 この問題を多少とも解消するため、多くのパイプライン・マイクロプロセッサ は分岐命令の結果を予測してから、分岐予測にしたがって以降の命令を取り出す 分岐予測機構を使用している。たとえば、YehおよびPattはきわめて正確 な2レベル分岐予測機構を導入している。(Tse Yu YehおよびYal e N. PattのTwo−Level Adaptive Branch Prediction , The 24th ACM/IEEE Intern ational Symposium and Workshop on Mi croarchitecture, November 1991, pp. 51 ― 61参照。)分岐予測機構が分岐を誤って予測した場合、取り出され るべきではなかった命令は命令パイプラインから排除される。 YehおよびPattが開示した2レベル分岐予測機構などのほとんどの分岐 予測機構は分岐の結果履歴を動的に維持することによって動作する。分岐予測は この場合、記憶された分岐履歴に基づいている。 小さいループが深くパイプライン化されたプロセッサで実行された場合、同一 の分岐命令が命令パイプラインにいくつか同時に発生することがある。そのよう な場合には、以前の分岐は解決されない。したがって、以前の分岐に対する履歴 は分岐予測機構には利用されない。パイプラインの深いところにある分岐命令に 対する分岐履歴を、分岐命令の以降のオカレンス(実現地)に利用できないため 、後の分岐命令に対する分岐予測は古くなった履歴を使用して行われることとな る。したがって、パイプラインの深いプロセッサにおいて、分岐履歴に基づいて 予測を行う分岐予測機構は小さいループ内の分岐の予測を誤ることがしばしばあ る。 発明の概要 したがって、本発明の目的は、これも命令パイプラインにある分岐の「推論履 歴」に基づいて予測を行う分岐予測機構を提供することである。推論分岐履歴は 以前の分岐履歴、ならびに分岐に対する最近の分岐予測からなっている。 この目的およびその他の目的は、分岐ターゲット・バッファにおける各分岐命 令に対する推論履歴および実履歴を維持する本発明の分岐予測機構によって達成 される。実分岐履歴は発生した分岐命令の完全に解決されたオカレンスに対する 分岐履歴を含んでいる。推論分岐履歴は実履歴、ならびに分岐に対する最近の分 岐予測の「履歴」を含んでいる。推論分岐履歴が何らかの最近の分岐を含んでい る場合、推論ビットがセットされる。推論ビットがセットされると、これは分岐 に対する推論履歴があることを示す。したがって、推論ビットがセットされた場 合、推論履歴が分岐予測を行うために使用される。分岐に対して誤予測が行われ た場合、推論履歴が不正確な分岐履歴を含んでいるので、推論ビットはクリアさ れる。 図面の簡単な説明 本発明の目的、特徴および利点は、以下の詳細な説明に鑑み、当分野の技術者 には明らかとなろう。 第1図は、命令を処理するための深いパイプラインのブロック図である。 第2a図は、緊密なループを有する簡単な疑似アセンブリ言語プログラムの図 である。 第2b図は、一度に1つの命令を取り出すが、推論履歴を使用しないシステム に対する第1図に示した深い命令パイプラインを通過する第2a図のプログラム における命令のトレースの図である。 第3図は、推論履歴を使用する分岐予測機構に対する分岐ターゲット・バッフ ァ項目のブロック図である。 第4図は、分岐予測を行ったときに分岐ターゲット・バッファの推論履歴フィ ールドを更新するのに必要なステップをリストした流れ図である。 第5図は、分岐がプロセッサによって完全に解決されたときに分岐ターゲット ・バッファの該当するフィールドを更新するのに必要なステップをリストした流 れ図である。 第6図は、分岐ターゲット・バッファの推論履歴フィールドに基づいて分岐予 測を行うのに必要なステップをリストした流れ図である。 第7図は、推論履歴に基づいて予測を行うシステムに対する第1図に示した深 い命令パイプラインを通過する第2a図のプログラムにおける命令のトレースの 図である。 第8図は本発明の技法を使用するコンピュータ・システムのブロック図である 。 表記法および術語 以下の詳細な説明は主として、コンピュータ・メモリ内のデータ・ビットの操 作の表示画像、アルゴリズム、および記号表示によって行われる。これらのアル ゴリズムによる記述および表示は当分野の技術者が自分たちの作業の内容を他の 技術者にもっとも効果的に伝えるために使用される手段である。 本明細書におけるアルゴリズムは一般に、希望する結果につながる自己矛盾の ない一連のステップであると理解される。これらのステップは物理量の物理的な 操作に必要なものである。通常、必ずしもそうとは限らないが、これらの量は記 憶、転送、組合せ、比較、選択、選別、修正、あるいは操作することのできる電 気的または磁気的な信号の形態をとる。場合により、主として一般的な用法の理 由から、これらの信号をビット、値、要素、記号、文字、画像、項、数値その他 と呼ぶのが便利なことが証明されている。しかしながら、これらおよび類似の用 語が該当する物理量に関連づけられるものであって、これらの量に適用される便 宜的なラベルにすぎないことを念頭に置いておくべきである。 本件において、動作とは操作員に関連して行われる機械の動作である。本発明 の動作を行うために有用な機械としては、汎用ディジタル・コンピュータその他 類似の装置がある。すべての場合に、コンピュータを作動させる方法の操作と、 コンピュテーションの方法そのものとの違いに留意すべきである。本発明はコン ピュータを操作する方法のステップと、電気的信号またはその他の物理的信号を 処理して、他の希望する物理信号を生成する方法のステップに関する。 本発明はこれらの操作を行う装置にも関する。この装置は必要な目的のために 特別に構成されたものであっても、コンピュータに格納されているコンピュータ ・プログラムによって選択的に活動化、または再構成される汎用コンピュータで あってもよい。本明細書で提示するアルゴリズムは本来、特定のコンピュータま たはその他の装置に関するものではない。詳細にいえば、各種の汎用コンピュー タを本発明で教示する技法にしたがったプログラムとともに使用することができ るが、必要な方法のステップを行うために専用の装置を構成することが便利なこ ともある。各種のこれらの装置に必要な構造は、以下の説明から明らかとなろう 。本発明の機能を遂行できる機械には、譲受人であるインテル・コーポレーショ ンならびにコンピュータ・システムのその他の製造業者が製造したものがある。 発明の詳細な説明 推論履歴に基づいて分岐予測を行う分岐予測機構を開示する。以下の説明にお いて、説明のために、本発明を完全に理解してもらうために特定の術語を使用す る。しかしながら、これらの個々の細部が本発明を実施するのに必要ないことが 、当分野の技術者には明らかであろう。その他の場合に、本発明を不必要に不明 確としないために、周知の回路および装置をブロック図の形で示す。 パイプラインの深いプロセッサにおける分岐予測 パイプラインの深いプロセッサにおいては、パイプライン・プロセッサの取出 し、復号および実行などの主要なステージをいくつかのサブステージに分割し、 各主要ステージがパイプライン化されるようにしている。たとえば、第1図はパ イプラインの深いプロセッサの一連のパイプライン・ステージを示す。第1図の 命令パイプラインには、11のパイプライン・ステージがある。 第1図に示した命令パイプラインの先頭には、2つの命令取出しサブステージ が配置されている。(取出し1および取出し2。)これらの2つの命令取出しサ ブステージは命令パイプラインに対する新しい命令の連続的な取出しを担う。命 令ストリーム内の無条件分岐命令は、取出しサブステージによる順次命令の単純 な取出しを阻止する。さらに、命令ストリームの条件付き分岐命令は、取出しサ ブステージによる予測したパスに沿った命令の単純な取出しを阻止する。命令取 出しサブステージは、したがって、プログラムの進路を正確に知らずに、将来の 命令を取り出せるものでなければならない。 将来の命令を取り出すために、命令パイプラインの先頭の取出しサブステージ を、分岐予測機構によって実現する。分岐予測機構は命令ストリームのどこに分 岐命令があるかを予測し、かつこれらの分岐命令の結果を予測する。命令取出し ユニットは次いで、分岐予測機構によって予測されたとおりに命令のストリーム を取り出す。 ほとんどの分岐予測機構は分岐命令の以前のオカレンスの結果に基づいて、分 岐命令の結果を予測する。分岐命令が解決されるたびに、分岐予測機構は分岐の 結果を分岐履歴バッファに記憶する。分岐命令の次のオカレンスで、分岐予測機 構は収集した分岐履歴に基づいて分岐予測を行う。このような分岐予測機構によ って、極めて高い分岐予測速度が達成される。たとえば、YehおよびPatt の2レベル適応分岐予測機構は97%超の精度の予測速度を達成する。(Tse Yu YehおよびYale N. PattのTwo−Level Ada ptive Branch Prediction , The 24th AC M/IEEE International Symposium and W orkshop on Microarchitecture, Novemb er 1991, p. 60参照。) パイプラインの深いプロセッサは分岐予測プロセスを複雑とすることがある。 具体的にいえば、パイプラインの深いプロセッサにおいて、短いプログラム・ル ープの分岐命令の予測を、予測を行うのに分岐履歴を使用する分岐予測機構が誤 ることがしばしばある。この問題を第1図、第2a図および第2b図を参照して 説明する。 第2a図を参照すると、疑似アセンブリ言語で書かれた短いプログラムのリス トが示されている。第2a図のプログラムはきわめて短いループからなっている 。プログラムの1行目は絶対値3を有する第1レジスタ(R1)をロードするロ ード命令からなっている。プログラムの2行目は第1レジスタ(R1)の値を第 2レジスタ(R2)に加算するAdd命令を含んでいる。第1レジスタ(R1) は次いで、プログラムの3行目で減分される。プログラムの4行目で、ゼロ・フ ラ グがセットされていなければ、プログラムは2行目に戻って分岐する。それ故、 第1レジスタ(R1)が値0をまだ含んでいない場合には、プログラムは2行目 にループ・バックする。最後に、プログラムの5行目で、第2レジスタ(R2) の値がメモリに記憶される。 3という絶対値が第1レジスタ(R1)にロードされるので、減分R1命令後 にロードされる「branch if not zero」命令が2行目へ2回 ループ・バックする。ただし、3回目のループで、第1レジスタ(R1)はゼロ に減らされることになる。したがって、プログラムが3度目に「branch if not zero」命令に到達すると、プログラムはプログラムの5行目 に進み、第2レジスタをメモリに格納する。それ故、4行目の分岐命令は分岐実 行(taken)、分岐実行、分岐非実行(not−taken)(TTN)と いう分岐履歴を作成する。このプログラムを再実行すると、第1レジスタ(R1 )に常に絶対値3がロードされているので、この分岐はこのパターンを常に反復 し、これによってプログラムの4行目におかれた分岐命令に対して「TTNTT NTTNTTN ...」という分岐履歴を生成する。 正確な分岐予測機構はこの反復分岐パターンを識別し、反復分岐パターンを使 用して、将来の分岐予測を行うことができる。たとえば、YehおよびPatt が開示した2レベル適応分岐予測機構の理想的な実施形態は、このパターンを識 別し、分岐命令の将来のオカレンスの結果を常に正しく予測することになる。し かしながら、分岐予測機構が深いパイプラインを有する実際のプロセッサで実施 した場合、問題が発生することがある。 第2b図は第2a図のプログラムの命令がプロセッサを通過する場合の、第1 図の命令パイプラインに対する命令パイプライン・ステージの内容を示す。第2 b図の命令の流れは命令が1つずつ取り出され、パイプラインの停止がないもの と想定している。さらに、命令の流れは分岐予測機構がプログラムの4行目の分 岐命令に対して「TTNTTNTTN ...」(ただし、Tは分岐実行(ta ken)を表し、Nは分岐非実行(not−taken)を表し、右端の文字は 分岐命令のもっとも最近のオカレンスの結果を表す)という分岐履歴を構築した ものと想定している。 第2b図に示す最初のクロック・サイクル、クロック・サイクルNにおいて、 ロード命令がまず取り出される。クロック・サイクルN+1において、ロード命 令は取出しサブステージ2へ移動し、第1取出しサブステージはプログラムの2 行目からAdd命令を取り出す。プロセッサはクロック・サイクルN+3の終わ りまで、命令をメモリから命令パイプラインへ順次ロードする。 クロック・サイクルN+3の終了時に、第1取出しサブステージは分岐予測を 行って、次の命令をロードしなければならない。この分岐に対する分岐履歴パタ ーンが「TTNTTNTTN ...」を含んでいるので、取出しサブステージ は分岐が取り出されたことを予測する(正しく)。したがって、クロック・サイ クルN+4において、命令取出しユニットはプログラムの2行目に戻り、Add 命令を取り出す。プロセッサは再度、クロック・サイクルN+6が終わるまで、 命令をメモリから命令パイプラインへ順次取り出す。 クロック・サイクルN+6の終了時に、第1取出しサブステージは分岐命令の 結果を順に予測して、以降の命令を取り出さなければならない。クロック・サイ クルN+6の終了時に、分岐命令の最初のオカレンスが第4パイプステージ、復 号1に到達している。それ故、分岐命令の最初のオカレンスはまだ完全には解決 されていない。これは分岐命令が完全に解決されるまで、分岐履歴が更新されな いので、分岐履歴が依然「TTNTTNTTN ...」を含んでいることを意 味する。古くなった履歴「TTNTTNTTN ...」を使用すると、取出し サブステージは再度、分岐が行われると予測する(正しく)。分岐予測機構が実 際には、反復パターンの行われなかった分岐後に最初に行われた分岐を予測して いるので、これはまぐれ当たりといえる。したがって、クロック・サイクルN+ 7において、命令取出しユニットは再度2行目に戻って、Add命令を取り出す 。今度も、クロック・サイクルN+9が終わるまで、プロセッサは命令をメモリ から命令パイプラインへ取り出す。 クロック・サイクルN+9の終了時に、第1取出しサブステージは再度、分岐 命令の結果を予測して、以降の命令を取り出さなければならない。クロック・サ イクルN+9の終了時に、分岐命令の最初のオカレンスは第7のパイプステージ (スケジューリング)に到達しており、分岐命令の2番目のオカレンスは第4の パイプステージ(復号1)に到達している。それ故、クロック・サイクルN+9 の終了時に、分岐命令の最初のオカレンスも、2番目のオカレンスも完全には解 決されていない。このことは分岐履歴が依然「TTNTTNTTN ...」を 含んでいることを意味する。したがって、分岐予測機構は再度、分岐が実行され ると予測する。しかしながら、この予測が結局正しくないことになるので、ここ では運がなくなっていることとなる。クロック・サイクルN+10において、命 令取出しユニットは再度2行目に戻って、Add命令を取り出す。プロセッサが 誤予測を結局検出すると、Add命令および以降のすべての命令をパイプライン から除去することが必要となる。 上記の例で生じる問題は分岐履歴が十分な早さで更新されないほど、プログラ ムのループが小さいことである。したがって、分岐予測機構は反復分岐パターン と「同期する」ことができなくなる。具体的にいえば、分岐命令が完全に解決さ れていない段階で、以前の分岐が命令パイプラインにまだ存在しているので、以 前の分岐の結果を使用することができない。それ故、分岐命令の結果をより正確 に予測するためには、まだパイプラインにある分岐命令の以前のオカレンスの履 歴が直ちに利用できなければならない。しかしながら、分岐命令の結果が完全に は解決されていないのであるから、まだパイプラインの深いプロセッサの途中に ある分岐命令に対して、「実」分岐履歴をもたらすことは不可能である。 この問題を解決するために、本発明は行われる各分岐予測が正しいことを想定 することによって各分岐に対する「推論履歴」を格納する。分岐予測の精度が十 分高い場合には、この技法はパイプラインの深いプロセッサ内の小さいループに おける分岐に対する分岐予測精度を改選する。 推論履歴フィールドを備えた分岐ターゲット・バッファ 第3図は推論履歴を格納する分岐予測機構の分岐ターゲット・バッファの項目 を示す。第3図の分岐ターゲット・バッファ項目の最初の3つのフィールドは、 分岐予測機構によって使用される分岐命令についての情報を格納する。分岐ター ゲット・バッファ項目の最初のフィールドはタグ・アドレス・フィールド21で ある。タグ・アドレス・フィールド21は分岐命令のメモリ内の場所を識別する アドレスを格納する。実履歴フィールド22はこの特定の分岐のすべての完全に 解決された オカレンスに対する分岐履歴を格納する。事前計算予測フィールド2 3は実履歴フィールド22に格納されている分岐履歴情報に基づいて、分岐の次 のオカレンスに対する分岐予測を格納する。第3図の事前計算予測フィールド2 3は実分岐履歴フィールド22に基づく実際の実行または非実行分岐予測である 。事前計算予測フィールド23は実履歴フィールドが更新されるたびに計算され 、分岐予測を行うのに必要な時間を2サイクルから1サイクルに減らす。 第3図の分岐ターゲット・バッファ項目の次の3つのフィールドは、分岐ター ゲット・バッファの各分岐に対して予測履歴を維持し、使用するために必要な情 報を含んでいる。本発明の分岐予測機構がこの特定の分岐ターゲット・バッファ 項目を使用して分岐予測を行ったときに、推論ビット24がセットされる。分岐 予測が行われると、分岐予測機構は推論履歴フィールド25および事前計算予測 フィールド23も更新する。推論履歴フィールド25を更新して、分岐予測の結 果を含むようにする。事前計算推論予測26は推論履歴フィールド25に格納さ れている推論分岐履歴に基づいて分岐の次のオカレンスに対する分岐予測を格納 する。 第3図の分岐ターゲット・バッファ項目の他のフィールドは分岐ターゲット・ バッファで共通して使用される情報を格納する。分岐命令が「return f rom subroutine」命令である場合に、戻りビット・フィールド2 7がセットされる。戻りビット・フィールド27がセットされると、分岐予測機 構は戻りアドレスの予測に特化した戻りスタック・バッファ(RSB)から値を 削除しなければならない。ターゲット・アドレス・フィールド28は、分岐が行 われると分岐予測機構が予測した場合に、命令取出しユニットが命令を取り出す べきアドレスを格納する。 分岐ターゲット・バッファの推論履歴フィールドの更新 第4図は本発明の分岐ターゲット・バッファにおける推論履歴フィールドを更 新する方法を示す。推論履歴フィールドを更新するプロセスは、第4図のステッ プ101によって示されるような分岐の履歴に基づく分岐予測を分岐予測機構が 行ったときに開始される。分岐履歴に基づく任意のタイプの分岐予測機構を、本 発明で使用することができる。したがって、分岐予測機構の正確な細部を本明細 書では示さない。好ましい実施例において、Yehおよびpattの2レベル適 応分岐予測法の変形を使用する。ステップ102において、推論ビット24の状 態を調べて、分岐命令に対する推論履歴があるかどうかを判定する。 推論ビット24がセットされていない場合、これは推論履歴フィールド25の 情報が古くなっているか、あるいはこれまでセットされたことがなかったことを 示す。推論ビット24がセットされていない場合、方法はステップ103に移動 し、推論ビット24をセットして、分岐ターゲット・バッファ項目が推論履歴を 含むようになることを示すようにする。次に、ステップ104において、実履歴 フィールド22を推論履歴フィールド25にコピーして、推論履歴に開始点を与 えるようにする。最後に、ステップ104において、事前計算予測23を推論履 歴フィールド25にシフトし、これによって「推論履歴」の最初のビットを与え るが、これは事前計算予測が結局間違っていたと判明する可能性のある予測にす ぎないからである。 ステップ102をもう一度参照すると、推論ビット24がセットされている場 合、これは以前の分岐予測がこの分岐ターゲット・バッファ項目に対して行われ ており、推論履歴フィールド25がこれらの以前の予測の履歴を含んでいること を示している。したがって、推論ビット24がセットされている場合、更新プロ セスはステップ105へ移動し、事前計算推論予測ビット26を推論履歴フィー ルド25へシフトし、これによって「推論履歴」の他のビットを推論履歴フィー ルド25に追加する。 推論履歴フィールド25の更新後、推論履歴フィールド25の新しい推論履歴 を使用して、事前計算推論予測ビット26を再計算しなければならない。ステッ プ106において、システムは分岐が条件付き分岐であるか、無条件分岐である かを調べる。分岐が無条件である場合、ステップ108において事前計算推論予 測ビット26がセットされる。これは、分岐が常に行われるからである。分岐が 無条件である場合、分岐予測機構は新たに更新された推論履歴フィールド25に 基づいて、この分岐に対する予測を計算する。新しい分岐予測はステップ107 に示されているように、推論事前計算予測ビット・フィールド26におかれる。 分岐ターゲット・バッファにおける実履歴フィールドの更新 分岐予測を行った後、分岐命令は命令パイプラインに沿って継続する。命令パ イプラインの端部の近くで、予測が行われた分岐命令が結局完全に解決される。 分岐命令が完全に解決されたら、分岐命令を実際の解決された分岐命令の結果に 照らして検証する。 分岐予測が正しかった場合、プロセッサは正常に継続する。しかしながら、分 岐予測が間違っていた場合、プロセッサは誤予測された分岐後にロードされた命 令パイプライン内のあらゆる命令をクリアしなければならない。これは命令取出 しユニットがこれらの命令をロードすべきではないからである。 さらに、分岐が誤予測された場合、推論履歴は分岐ターゲット・バッファが間 違っているものとする。したがって、この分岐に対する推論履歴を何らかの他の 分岐予測を行うのに使用してはならない。誤予測の検出後のそれ以上の予測を阻 止するために、分岐ターゲット・バッファ内の推論ビット24を、第3図に示す ようにクリアする。 第5図は分岐命令が結局完全に解決されたときに実行されるステップを示す。 第5図のステップ301で、分岐命令が完全に解決され、これによって最終的な 分岐実行または非実行分岐の結果がもたらされる。次いで、ステップ302にお いて、解決された分岐の結果が実履歴フィールド22にシフトされる。ステップ 303において、分岐のタイプを調べる。分岐が無条件分岐である場合、事前取 出し予測ビット23がステップ305に示すようにセットされる。分岐が無条件 分岐である場合、分岐予測機構は実履歴フィールド22にない実履歴を使用して 分岐予測を計算し、予測をステップ304に記載するように事前取出し予測ビッ ト23におく。最後に、ステップ306で、この分岐に対して行われた分岐予測 が解決された分岐の実際の結果と比較される。分岐予測が正しい場合には、更新 は完了し、プロセッサは正常に継続する。しかしながら、予測が正しくない場合 には、推論ビット24がクリアされ、推論履歴フィールド25の不正推論履歴を 使用して、それ以上の予測を阻止する。 推論履歴フィールドに基づく予測の実行 第6図は推論履歴フィールドを備えた分岐ターゲット・バッファに基づく分岐 予測機構が、推論履歴情報を使用して予測を行う方法を示す。最初のステップ、 ステップ201は分岐ターゲット・バッファを探索して、分岐ターゲット・バッ ファ項目が存在しているかどうかを調べるものである。分岐ターゲット・バッフ ァ項目が存在しない場合には、分岐予測を行うために分岐ターゲット・バッファ を使用することができない。したがって、分岐予測機構はステップ203に述べ るように、静的な分岐予測を行わなければならない。 分岐ターゲット・バッファがヒットした場合には、分岐予測機構はステップ2 04で、該当する分岐ターゲット・バッファ項目内の戻りビット27の状態を調 べる。戻りビット27がセットされており、分岐が「return from subroutine instruction」であることを示している場合 には、分岐予測機構はステップ205に述べるように戻りアドレスの予測に特化 している戻りスタック・バッファから予測を取得する。 戻りビット27がセットされていない場合には、分岐予測機構はステップ20 6で分岐ターゲット・バッファ項目内の推論ビット24の状態を調べる。この調 査は分岐予測機構が事前計算推論予測26を使用すべきか、正規の事前計算予測 23を使用すべきかを判定する。 推論ビット24がセットされている場合には、事前計算推論予測ビット26を 使用して、ステップ210に示すように分岐予測を選択する。事前計算推論予測 ビット26がセットされている場合には、分岐予測機構はステップ212に示す ようにターゲット・アドレスへのジャンプを予測し、セットされていない場合に は、分岐予測機構はステップ211で失敗を予測する。 推論ビット24がセットされていない場合には、正規の推論予測ビット23を 使用して、ステップ207に示すように分岐予測を選択する。推論予測ビット2 3がセットされている場合には、分岐予測機構はステップ208に示すようにタ ーゲット・アドレスへのジャンプを予測し、セットされていない場合には、分岐 予測機構はステップ209で失敗を予測する。 分岐予測を行った後、命令取出しユニットは予測命令ストリームに沿って命令 を取り出す。分岐予測機構は新しい分岐予測を使用して、ステップ213で述べ るように推論履歴フィールドの更新も行う。 第7図は第2a図のプログラムを推論履歴を使用するプロセッサで作動させた ときの第1図の命令パイプラインに対する命令パイプライン・ステージの内容を 示す。第7図に示す命令の流れは命令が1つずつ取り出され、パイプラインの停 止がなく、分岐予測機構がプログラムの5行目の分岐命令に対して「TTNTT NTTN ...」という分岐履歴を構築していると想定している。 最初の4つのクロック・サイクル(NないしN+3)に対して、プロセッサは 第7図に示すように命令をパイプラインへ順次ロードする。ただし、クロック・ サイクルN+3の終了時に、第1取出しサブステージは分岐予測を行って、次の 命令をロードしなければならない。分岐に対する分岐履歴パターンが「TTNT TNTTN ...」を含んでいるので、取出しサブステージは分岐が実行され ると予測する(正しく)。このとき、分岐項目に対する推論ビットがセットされ 、「分岐実行」予測が推論履歴にシフトされる。それ故、推論履歴は「TTNT TNTTN ...」を含むことになる。分岐予測機構が分岐が実行されると予 測したので、命令取出しユニットはクロック・サイクルN+4でプログラムの2 行目に戻り、Add命令を取り出す。プロセスは次いで、クロック・サイクルN +6の終わりまで、命令をメモリから命令パイプラインへ取り出す。 クロック・サイクルN+6の終了時に、第1取出しサブステージは分岐命令の 結果を再度予測して、以降の命令を取り出さなければならない。クロック・サイ クルN+6の終了時に、分岐命令の最初のオカレンスは第4のパイプステージ、 復号1、に到達している。それ故、分岐命令の最初のオカレンスはまだ完全に解 決されておらず、したがって、分岐履歴は更新されていない。しかしながら、推 論履歴が予測された分岐を使用して更新され、推論分岐履歴が「TTNTTNT TNT ...」を含むようになる。推論ビットがセットされているので、取出 しサブステージの分岐予測機構は「TTNTTNTTNT ...」という推論 履歴を使用して、分岐が実行されると予測する(正しく)。したがって、クロッ ク・サイクルN+9において、命令取出しユニットは2行目に再度戻って、Ad d命令を取り出す。この場合、プロセッサはクロック・サイクルN+9の終わり まで、命令をメモリから命令パイプラインへ順次取り出す。 クロック・サイクルN+9の終了時に、第1取出しサブステージは分岐命令の 結果を再度予測して、以降の命令を取り出さなければならない。クロック・サイ クルN+9の終了時に、分岐命令の最初のオカレンスは第7のパイプステージ( スケジューリング)に到達しており、分岐命令の第2のオカレンスは第4のパイ プステージ(復号1)に到達している。それ故、クロック・サイクルN+9の終 了時に、分岐命令の最初のオカレンスも、第2のオカレンスも完全には解決され ていない。このことは分岐履歴が依然「TTNTTNTTN ...」を含んで いることを意味する。しかしながら、推論分岐履歴は「TTNTTNTTNTT ...」を含んでいる。推論ビットがセットされているので、分岐予測機構は 分岐を実行するべきではないと予測する(正しく)。したがって、クロック・サ イクルN+10において、命令取出しユニットは分岐命令後に、Store命令 を取り出す。第7図の命令トレースでわかるように、推論履歴を使用する本発明 の分岐予測機構は緊密なループの分岐の結果を正しく予測する。 第8図は典型的なコンピュータ・システムで使用した場合の本発明を示す。本 発明はプロセッサ内に配置された分岐予測装置を含んでいる。分岐予測装置を使 用して、キャッシュ・メモリまたはメイン・メモリからプロセッサに対して適正 な命令を取り出す。 推論履歴を格納している分岐ターゲット・バッファを備えた分岐予測機構を、 以上で説明した。推論履歴はパイプラインが深いプロセッサで実行される小さい ループに対する分岐予測の精度を改善する。本発明の範囲から逸脱することなく 本発明の材料および構成に対して、当分野の通常の技量を有する技術者が変更お よび改変を行えることを意図している。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,DE, DK,ES,FR,GB,GR,IE,IT,LU,M C,NL,PT,SE),OA(BF,BJ,CF,CG ,CI,CM,GA,GN,ML,MR,NE,SN, TD,TG),AT,AU,BB,BG,BR,BY, CA,CH,CN,CZ,DE,DK,ES,FI,G B,GE,HU,JP,KG,KP,KR,KZ,LK ,LU,LV,MD,MG,MN,MW,NL,NO, NZ,PL,PT,RO,RU,SD,SE,SI,S K,TJ,TT,UA,UZ,VN (72)発明者 グルー,アンドリュー・エフ アメリカ合衆国 97124 オレゴン州・ヒ ルズボロ・ノースイースト キャサリン・ 825 (72)発明者 ナタラジャン,スブラマニアン アメリカ合衆国 97229 オレゴン州・ポ ートランド・ノースウエスト 143アール ディ アヴェニュ・ナンバー ジイー36・ 1865

Claims (1)

  1. 【特許請求の範囲】 1.メモリに結合されたコンピュータ・プロセッサにおける、プロセッサ命令の ストリームを予測して取り出すための分岐予測装置において、 各々がプロセッサ命令の前記ストリーム内の分岐命令と関連づけられているN 個の分岐予測項目からなる分岐ターゲット・バッファを備えており、前記N個の 分岐予測項目の各々が 前記の関連分岐命令の最後のK個のオカレンスの解決された分岐の最後の結果 を格納する実分岐履歴フィールドと、 前記の関連分岐命令に対して予測が行われたときにセットされる推論ビットと 、 前記の関連分岐命令の解決された分岐の最後の結果と、前記の関連分岐命令の 最近のオカレンスの分岐予測を含んでいる推論分岐履歴のK個のビットを格納す る推論分岐履歴フィールドと、 前記の関連分岐命令が実行されたときに前記の関連分岐命令がどこへジャンプ するのかを識別するターゲット・アドレス・タグを含んでいるターゲット・アド レス・フィールドと、 前記推論ビットがクリアされた場合に前記実分岐履歴を使用して、分岐予測を 行い、それ以外の場合には、前記推論ビットがセットされた場合に前記推論分岐 履歴を使用して分岐予測を行う分岐予測機構と を有する分岐予測装置。 2.前記の関連分岐命令に対して誤予測がなされたときに、分岐予測項目の前記 推論ビットがクリアされることを特徴とする、請求の範囲第1項に記載の分岐予 測装置。 3.前記の関連分岐命令に対して予測がなされたときに、分岐予測項目の前記推 論分岐履歴フィールドが更新されることを特徴とする、請求の範囲第2項に記載 の分岐予測装置。 4.前記分岐ターゲット・バッファの各分岐予測項目が 実分岐履歴フィールドに基づく分岐予測からなる事前計算分岐予測と、 前記推論分岐履歴フィールドに基づく分岐予測からなる事前計算推論分岐予測 と をさらに含んでいることを特徴とする。請求の範囲第3項に記載の分岐予測装 置。 5.前記推論ビットがクリアされた場合に、前記事前計算分岐予測を使用して、 前記推論分岐履歴フィールドが更新され、それ以外の場合には、前記推論ビット がセットされた場合に、前記事前計算推論分岐予測を使用して、前記推論分岐履 歴フィールドが更新されることを特徴とする、請求の範囲第4項に記載の分岐予 測装置。 6.前記の関連分岐命令が完全に解決されたときに、前記分岐予測項目の前記実 分岐履歴フィールドが実際の分岐結果によって更新されることを特徴とする、請 求の範囲第5項に記載の分岐予測装置。 7.前記分岐予測機構が2レベル適応分岐予測機構の変形からなることを特徴と する、請求の範囲第6項に記載の分岐予測装置。 8.前記分岐ターゲット・バッファの各分岐予測項目がさらに戻りビットを含ん でおり、該戻りビットがセットされた場合に、前記分岐予測装置が戻りスタック ・バッファからの予測を使用することを特徴とする、請求の範囲第7項に記載の 分岐予測装置。 9.前記分岐予測装置が静的分岐予測機構をさらに含んでおり、前記分岐予測装 置に適当なターゲット・バッファ項目が見つからない場合に、前記静的分岐予測 機構を使用して、分岐予測を行うようになっていることを特徴とする、請求の範 囲第8項に記載の分岐予測装置。 10.前記分岐予測装置が深い命令パイプラインを備えたプロセッサで実現され ることを特徴とする、請求の範囲第9項に記載の分岐予測装置。 11.メモリに結合されたコンピュータ・プロセッサにおける、プロセッサ命令 のストリームを予測して取り出すための分岐予測装置において、 各々がプロセッサ命令の前記ストリーム内の分岐命令と関連づけられているN 個の分岐予測項目からなる分岐ターゲット・バッファ手段であって、前記N個の 分岐予測項目の各々が 前記の関連分岐命令の最後のK個のオカレンスの解決された分岐の最後 の結果を格納する実分岐履歴手段と、 前記の関連分岐命令に対して予測が行われたときにセットされる推論ビ ット手段と、 前記の関連分岐命令の解決された分岐の最後の結果と、前記の関連分岐 命令の最近のオカレンスの分岐予測を含んでいる推論分岐履歴のK個のビットを 格納する推論分岐履歴手段と、 前記の関連分岐命令が実行されたときに前記の関連分岐命令がどこへジ ャンプするのかを識別するターゲット・アドレス手段と、 を有する分岐ターゲット・バッファ手段、及び 前記推論ビットがクリアされた場合に前記実分岐履歴手段を使用して、分岐予 測を行い、それ以外の場合には、前記推論ビットがセットされた場合に前記推論 分岐履歴手段を使用して分岐予測を行う分岐予測手段 を有する分岐予測装置。 12.前記の関連分岐命令に対して誤予測がなされたときに、分岐予測項目の前 記推論ビット手段がクリアされることを特徴とする、請求の範囲第11項に記載 の分岐予測装置。 13.前記の関連分岐命令に対して予測がなされたときに、分岐予測項目の前記 推論分岐履歴手段が更新されることを特徴とする、請求の範囲第12項に記載の 分岐予測装置。 14.前記分岐ターゲット・バッファ手段の各分岐予測項目が 実分岐履歴手段に基づく分岐予測からなる事前計算分岐予測手段と、 前記推論分岐履歴手段に基づく分岐予測からなる事前計算推論分岐予測手段と をさらに含んでいることを特徴とする。請求の範囲第13項に記載の分岐予測 装置。 15.前記推論ビット手段がクリアされた場合に、前記事前計算分岐予測手段を 使用して、前記推論分岐履歴手段が更新され、それ以外の場合には、前記推論ビ ット手段がセットされた場合に、前記事前計算推論分岐予測手段を使用して、前 記推論分岐履歴手段が更新されることを特徴とする、請求の範囲第14項に記載 の分岐予測装置。 16.前記の関連分岐命令が完全に解決されたときに、前記分岐予測項目の前記 実分岐履歴手段が実際の分岐結果によって更新されることを特徴とする、請求の 範囲第15項に記載の分岐予測装置。 17.前記分岐予測手段が2レベル適応分岐予測機構の変形からなることを特徴 とする、請求の範囲第16項に記載の分岐予測装置。 18.前記分岐ターゲット・バッファの各分岐予測項目がさらに戻りビット手段 を含んでおり、該戻りビット手段がセットされた場合に、前記分岐予測装置が戻 りスタック・バッファからの予測を使用することを特徴とする、請求の範囲第1 7項に記載の分岐予測装置。 19.前記分岐予測装置が静的分岐予測手段をさらに含んでおり、前記分岐予測 装置に適当なターゲット・バッファ項目が見つからない場合に、前記静的分岐予 測手段を使用して、分岐予測を行うようになっていることを特徴とする、請求の 範囲第18項に記載の分岐予測装置。 20.前記分岐予測装置が深い命令パイプラインを備えたプロセッサで実現され ることを特徴とする、請求の範囲第19項に記載の分岐予測装置。 21.システム・バス、 該システム・バスに結合されたメイン・メモリ、 プロセッサ命令のストリームを予測して取り出すための分岐ターゲット・バッ ファを有するコンピュータ・プロセッサであって、該分岐ターゲット・バッファ が各々がプロセッサ命令の前記ストリーム内の分岐命令と関連づけられているN 個の分岐予測項目からなっており、前記N個の分岐予測項目の各々が 前記の関連分岐命令の最後のK個のオカレンスの解決された分岐の最 後の結果を格納する実分岐履歴フィールドと、 前記の関連分岐命令に対して予測が行われたときにセットされる推論 ビットと、 前記の関連分岐命令の解決された分岐の最後の結果と、前記の関連分 岐命令の最近のオカレンスの分岐予測を含んでいる推論分岐履歴のK個のビット を格納する推論分岐履歴フィールドと、 前記の関連分岐命令が実行されたときに前記の関連分岐命令がどこへ ジャンプするのかを識別するターゲット・アドレス・タグを含んでいるターゲッ ト・アドレスと、 を有するコンピュータ・プロセッサ、及び 前記推論ビットがクリアされた場合に前記実分岐履歴フィールドを使用して、 分岐予測を行い、それ以外の場合には、前記推論ビットがセットされた場合に前 記推論分岐履歴フィールドを使用して分岐予測を行う分岐予測機構 を有するコンピュータ・システム。 22.前記の関連分岐命令に対して誤予測がなされたときに、分岐予測項目の前 記推論ビットが更新されることを特徴とする、請求の範囲第21項に記載のコン ピュータ・システム。 23.前記の関連分岐命令に対して予測がなされたときに、分岐予測項目の前記 推論分岐履歴フィールドがクリアされることを特徴とする、請求の範囲第22項 に記載のコンピュータ・システム。 24.前記分岐ターゲット・バッファの各分岐予測項目が 実分岐履歴フィールドに基づく分岐予測からなる事前計算分岐予測と、 前記推論分岐履歴フィールドに基づく分岐予測からなる事前計算推論分岐予測 と をさらに含んでいることを特徴とする。請求の範囲第23項に記載のコンピュ ータ・システム。 25.前記推論ビットがクリアされた場合に、前記事前計算分岐予測を使用して 、前記推論分岐履歴フィールドが更新され、それ以外の場合には、前記推論ビッ トがセットされた場合に、前記事前計算推論分岐予測を使用して、前記推論分岐 履歴フィールドが更新されることを特徴とする、請求の範囲第24項に記載のコ ンピュータ・システム。 26.前記の関連分岐命令が完全に解決されたときに、前記分岐予測項目の前記 実分岐履歴フィールドが実際の分岐結果によって更新されることを特徴とする、 請求の範囲第25項に記載のコンピュータ・システム。 27.前記分岐予測機構が2レベル適応分岐予測機構の変形からなることを特徴 とする、請求の範囲第26項に記載のコンピュータ・システム。 28.前記分岐ターゲット・バッファの各分岐予測項目がさらに戻りビットを含 んでおり、該戻りビットがセットされた場合に、前記プロセッサが戻りスタック ・バッファからの予測を使用することを特徴とする、請求の範囲第27項に記載 のコンピュータ・システム。 29.前記分岐予測装置が静的分岐予測機構をさらに含んでおり、前記プロセッ サに適当なターゲット・バッファ項目が見つからない場合に、前記静的分岐予測 機構を使用して、分岐予測を行うようになっていることを特徴とする、請求の範 囲第28項に記載のコンピュータ・システム。 30.前記プロセッサが深い命令パイプラインを備えたプロセッサで実現される ことを特徴とする、請求の範囲第29項に記載のコンピュータ・システム。 31.システム・バス、 該システム・バスに結合されたメイン・メモリ、 プロセッサ命令のストリームを予測して取り出すための分岐ターゲット・バッ ファ手段を有するコンピュータ・プロセッサであって、該分岐ターゲット・バッ ファ手段が各々がプロセッサ命令の前記ストリーム内の分岐命令と関連づけられ ているN個の分岐予測項目からなっており、前記N個の分岐予測項目の各々が 前記の関連分岐命令の最後のK個のオカレンスの解決された分岐の最後 の結果を格納する実分岐履歴手段と、 前記の関連分岐命令に対して予測が行われたときにセットされる推論ビ ット手段と、 前記の関連分岐命令の解決された分岐の最後の結果と、前記の関連分岐 命令の最近のオカレンスの分岐予測を含んでいる推論分岐履歴のK個のビットを 格納する推論分岐履歴手段と、 前記の関連分岐命令が実行されたときに前記の関連分岐命令がどこへジ ャンプするのかを識別するターゲット・アドレス手段と、 を有するコンピュータ・プロセッサ、及び 前記推論ビットがクリアされた場合に前記実分岐履歴手段を使用して、分岐予 測を行い、それ以外の場合には、前記推論ビットがセットされた場合に前記推論 分岐履歴手段を使用して分岐予測を行う前記プロセッサ内の分岐予測手段 を有するコンピュータ・システム。 32.前記の関連分岐命令に対して誤予測がなされたときに、分岐予測項目の前 記推論ビット手段がクリアされることを特徴とする、請求の範囲第31項に記載 のコンピュータ・システム。 33.前記の関連分岐命令に対して予測がなされたときに、分岐予測項目の前記 推論分岐履歴手段が更新されることを特徴とする、請求の範囲第32項に記載の コンピュータ・システム。 34.前記分岐ターゲット・バッファ手段の各分岐予測項目が 実分岐履歴手段に基づく分岐予測からなる事前計算分岐予測手段と、 前記推論分岐履歴手段に基づく分岐予測からなる事前計算推論分岐予測手段と をさらに含んでいることを特徴とする、請求の範囲第33項に記載のコンピュ ータ・システム。 35.前記推論ビット手段がクリアされた場合に、前記事前計算分岐予測手段を 使用して、前記推論分岐履歴手段が更新され、それ以外の場合には、前記推論ビ ット手段がセットされた場合に、前記事前計算推論分岐予測手段を使用して、前 記推論分岐履歴手段が更新されることを特徴とする、請求の範囲第34項に記載 のコンピュータ・システム。 36.前記の関連分岐命令が完全に解決されたときに、前記分岐予測項目の前記 実分岐履歴手段が実際の分岐結果によって更新されることを特徴とする、請求の 範囲第35項に記載のコンピュータ・システム。 37.前記分岐予測手段が2レベル適応分岐予測機構の変形からなることを特徴 とする、請求の範囲第36項に記載のコンピュータ・システム。 38.前記分岐ターゲット・バッファの各分岐予測項目がさらに戻りビット手段 を含んでおり、該戻りビット手段がセットされた場合に、前記分岐予測装置が戻 りスタック・バッファからの予測を使用することを特徴とする、請求の範囲第3 7項に記載のコンピュータ・システム。 39.前記分岐予測装置が静的分岐予測手段をさらに含んでおり、前記分岐予測 装置に適当なターゲット・バッファ項目が見つからない場合に、前記静的分岐予 測手段を使用して、分岐予測を行うようになっていることを特徴とする、請求の 範囲第38項に記載のコンピュータ・システム。 40.前記分岐予測装置が深い命令パイプラインを備えたプロセッサで実現され ることを特徴とする、請求の範囲第39項に記載のコンピュータ・システム。 41.メモリに結合されたコンピュータ・プロセッサでのプロセッサ命令のスト リームを予測して取り出すための方法において、 各々がプロセッサ命令の前記ストリーム内の分岐命令と関連づけられているN 個の分岐予測項目からなる分岐ターゲット・バッファを設けるステップと、 前記の関連分岐命令のK個の最近のオカレンスの完全に解決された分岐の結果 を含んでいる、各分岐予測項目内の実分岐履歴を分岐ターゲット・バッファに格 納するステップと、 前記の関連分岐命令のKビットの解決された分岐の結果と前記の関連分岐命令 の最近のオカレンスの分岐予測を含んでいる、各分岐予測項目内の推論分岐履歴 を分岐ターゲット・バッファに格納するステップと、 各分岐予測項目内の推論ビットを分岐ターゲット・バッファに格納するステッ プと、 前記の関連分岐命令に対して分岐予測が行われているときに、前記推論ビット を格納するステップと、 前記の関連分岐命令に対して分岐予測が行われたときに、前記推論ビットを設 定するステップと、 前記推論ビットがクリアされたときに前記実分岐履歴を使用して分岐命令の結 果を予測し、それ以外の場合には、前記推論ビットがセットされたときに前記推 論分岐履歴を使用して分岐命令の結果を予測するステップと を有するプロセッサ命令のストリームを予測する方法。 42.前記方法が前記の関連分岐命令に対する分岐予測が不正であるときに前記 推論ビットをクリアするステップをさらに含んでいることを特徴とする、請求の 範囲第41項に記載のプロセッサ命令のストリームを予測する方法。
JP6525425A 1993-05-14 1994-04-08 分岐ターゲット・バッファにおける推論履歴 Pending JPH09500989A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US6201293A 1993-05-14 1993-05-14
US08/062,012 1993-05-14
PCT/US1994/003897 WO1994027210A1 (en) 1993-05-14 1994-04-08 Speculative history mechanism in a branch target buffer

Publications (1)

Publication Number Publication Date
JPH09500989A true JPH09500989A (ja) 1997-01-28

Family

ID=22039646

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6525425A Pending JPH09500989A (ja) 1993-05-14 1994-04-08 分岐ターゲット・バッファにおける推論履歴

Country Status (4)

Country Link
US (1) US5584001A (ja)
JP (1) JPH09500989A (ja)
KR (1) KR100310581B1 (ja)
SE (1) SE515698C2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5494832B2 (ja) * 2011-01-07 2014-05-21 富士通株式会社 演算処理装置および分岐予測方法

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
WO1993020505A2 (en) 1992-03-31 1993-10-14 Seiko Epson Corporation Superscalar risc instruction scheduling
DE69308548T2 (de) 1992-05-01 1997-06-12 Seiko Epson Corp Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
EP0849665B1 (en) 1992-12-31 2001-10-04 Seiko Epson Corporation System and method for register renaming
US5628021A (en) * 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
US5454117A (en) * 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution
US5918046A (en) * 1994-01-03 1999-06-29 Intel Corporation Method and apparatus for a branch instruction pointer table
US5574871A (en) * 1994-01-04 1996-11-12 Intel Corporation Method and apparatus for implementing a set-associative branch target buffer
JP3494484B2 (ja) * 1994-10-12 2004-02-09 株式会社ルネサステクノロジ 命令処理装置
JP3569014B2 (ja) * 1994-11-25 2004-09-22 富士通株式会社 マルチコンテキストをサポートするプロセッサおよび処理方法
US5799179A (en) * 1995-01-24 1998-08-25 International Business Machines Corporation Handling of exceptions in speculative instructions
US5968169A (en) * 1995-06-07 1999-10-19 Advanced Micro Devices, Inc. Superscalar microprocessor stack structure for judging validity of predicted subroutine return addresses
US5881278A (en) * 1995-10-30 1999-03-09 Advanced Micro Devices, Inc. Return address prediction system which adjusts the contents of return stack storage to enable continued prediction after a mispredicted branch
US5740417A (en) * 1995-12-05 1998-04-14 Motorola, Inc. Pipelined processor operating in different power mode based on branch prediction state of branch history bit encoded as taken weakly not taken and strongly not taken states
US5864707A (en) 1995-12-11 1999-01-26 Advanced Micro Devices, Inc. Superscalar microprocessor configured to predict return addresses from a return stack storage
US5909573A (en) * 1996-03-28 1999-06-01 Intel Corporation Method of branch prediction using loop counters
US5752014A (en) * 1996-04-29 1998-05-12 International Business Machines Corporation Automatic selection of branch prediction methodology for subsequent branch instruction based on outcome of previous branch prediction
US5901307A (en) * 1996-07-22 1999-05-04 International Business Machines Corporation Processor having a selectively configurable branch prediction unit that can access a branch prediction utilizing bits derived from a plurality of sources
US5949995A (en) * 1996-08-02 1999-09-07 Freeman; Jackie Andrew Programmable branch prediction system and method for inserting prediction operation which is independent of execution of program code
JPH1091441A (ja) * 1996-09-13 1998-04-10 Sanyo Electric Co Ltd プログラム実行方法およびその方法を利用した装置
US6088793A (en) * 1996-12-30 2000-07-11 Intel Corporation Method and apparatus for branch execution on a multiple-instruction-set-architecture microprocessor
US5941985A (en) * 1997-06-24 1999-08-24 Sun Microsystems, Inc. Branch instruction prediction method
US5857098A (en) * 1997-06-24 1999-01-05 Samsung Electronics Co., Ltd. Branch instruction prediction apparatus
US5987595A (en) * 1997-11-25 1999-11-16 Intel Corporation Method and apparatus for predicting when load instructions can be executed out-of order
US6151671A (en) * 1998-02-20 2000-11-21 Intel Corporation System and method of maintaining and utilizing multiple return stack buffers
US6055630A (en) * 1998-04-20 2000-04-25 Intel Corporation System and method for processing a plurality of branch instructions by a plurality of storage devices and pipeline units
US6493821B1 (en) 1998-06-09 2002-12-10 Intel Corporation Recovery from writeback stage event signal or micro-branch misprediction using instruction sequence number indexed state information table
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
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
JP3513038B2 (ja) * 1998-12-10 2004-03-31 富士通株式会社 命令フェッチ制御装置
US6601161B2 (en) * 1998-12-30 2003-07-29 Intel Corporation Method and system for branch target prediction using path information
US6499101B1 (en) 1999-03-18 2002-12-24 I.P. First L.L.C. Static branch prediction mechanism for conditional branch instructions
US6484256B1 (en) * 1999-08-09 2002-11-19 International Business Machines Corporation Apparatus and method of branch prediction utilizing a comparison of a branch history table to an aliasing table
US6647490B2 (en) * 1999-10-14 2003-11-11 Advanced Micro Devices, Inc. Training line predictor for branch targets
US6636959B1 (en) 1999-10-14 2003-10-21 Advanced Micro Devices, Inc. Predictor miss decoder updating line predictor storing instruction fetch address and alignment information upon instruction decode termination condition
US6546478B1 (en) 1999-10-14 2003-04-08 Advanced Micro Devices, Inc. Line predictor entry with location pointers and control information for corresponding instructions in a cache line
US6546481B1 (en) 1999-11-05 2003-04-08 Ip - First Llc Split history tables for branch prediction
ATE464600T1 (de) * 2000-02-28 2010-04-15 Nxp Bv Datenprozessor mit meherern befehlen umfassende befehlswörtern
US7107437B1 (en) * 2000-06-30 2006-09-12 Intel Corporation Branch target buffer (BTB) including a speculative BTB (SBTB) and an architectural BTB (ABTB)
US6857060B2 (en) 2001-03-30 2005-02-15 Intel Corporation System, apparatus and method for prioritizing instructions and eliminating useless instructions
US6954849B2 (en) * 2002-02-21 2005-10-11 Intel Corporation Method and system to use and maintain a return buffer
US6950925B1 (en) * 2002-08-28 2005-09-27 Advanced Micro Devices, Inc. Scheduler for use in a microprocessor that supports data-speculative execution
US7337271B2 (en) * 2003-12-01 2008-02-26 International Business Machines Corporation Context look ahead storage structures
US7426631B2 (en) * 2005-02-02 2008-09-16 International Business Machines Corporation Methods and systems for storing branch information in an address table of a processor
US7827392B2 (en) * 2006-06-05 2010-11-02 Qualcomm Incorporated Sliding-window, block-based branch target address cache
US8612731B2 (en) 2009-11-06 2013-12-17 International Business Machines Corporation Branch target buffer for emulation environments
US8533422B2 (en) 2010-09-30 2013-09-10 Intel Corporation Instruction prefetching using cache line history
US9122486B2 (en) 2010-11-08 2015-09-01 Qualcomm Incorporated Bimodal branch predictor encoded in a branch instruction
US20130283023A1 (en) * 2012-04-18 2013-10-24 Qualcomm Incorporated Bimodal Compare Predictor Encoded In Each Compare Instruction
WO2015061648A1 (en) * 2013-10-25 2015-04-30 Advanced Micro Devices, Inc. Bandwidth increase in branch prediction unit and level 1 instruction cache
US10754781B2 (en) 2017-02-27 2020-08-25 International Business Machines Corporation Heuristic method to control fetching of metadata from a cache hierarchy
US10613867B1 (en) * 2017-07-19 2020-04-07 Apple Inc. Suppressing pipeline redirection indications
US11698789B2 (en) * 2020-10-12 2023-07-11 Microsoft Technology Licensing, Llc Restoring speculative history used for making speculative predictions for instructions processed in a processor employing control independence techniques

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4477872A (en) * 1982-01-15 1984-10-16 International Business Machines Corporation Decode history table for conditional branch instructions
US4679141A (en) * 1985-04-29 1987-07-07 International Business Machines Corporation Pageable branch history table
US4991080A (en) * 1986-03-13 1991-02-05 International Business Machines Corporation Pipeline processing apparatus for executing instructions in three streams, including branch stream pre-execution processor for pre-executing conditional branch instructions
JP2722523B2 (ja) * 1988-09-21 1998-03-04 日本電気株式会社 命令先取り装置
US5142634A (en) * 1989-02-03 1992-08-25 Digital Equipment Corporation Branch prediction
JPH0650465B2 (ja) * 1989-10-16 1994-06-29 株式会社東芝 分岐制御回路
US5210831A (en) * 1989-10-30 1993-05-11 International Business Machines Corporation Methods and apparatus for insulating a branch prediction mechanism from data dependent branch table updates that result from variable test operand locations
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
DE69130138T2 (de) * 1990-06-29 1999-05-06 Digital Equipment Corp., Maynard, Mass. Sprungvorhersageeinheit für hochleistungsfähigen Prozessor
US5265213A (en) * 1990-12-10 1993-11-23 Intel Corporation Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction
US5442756A (en) * 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5494832B2 (ja) * 2011-01-07 2014-05-21 富士通株式会社 演算処理装置および分岐予測方法
US8751776B2 (en) 2011-01-07 2014-06-10 Fujitsu Limited Method for predicting branch target address based on previous prediction

Also Published As

Publication number Publication date
US5584001A (en) 1996-12-10
SE9503951D0 (sv) 1995-11-08
KR100310581B1 (ko) 2001-12-17
SE515698C2 (sv) 2001-09-24
SE9503951L (sv) 1995-12-29

Similar Documents

Publication Publication Date Title
JPH09500989A (ja) 分岐ターゲット・バッファにおける推論履歴
KR100234648B1 (ko) 프로세서내 인스트럭션 실행 방법 및 시스템과 데이타 처리 시스템
US6898699B2 (en) Return address stack including speculative return address buffer with back pointers
US5442756A (en) Branch prediction and resolution apparatus for a superscalar computer processor
US5530825A (en) Data processor with branch target address cache and method of operation
US5606682A (en) Data processor with branch target address cache and subroutine return address cache and method of operation
US5265213A (en) Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction
KR100270003B1 (ko) 향상된 분기 예측 기법을 사용하는 프로세서 및그 실행 방법
US6263427B1 (en) Branch prediction mechanism
JP5209633B2 (ja) ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法
JP2744890B2 (ja) ブランチ予測式データ処理装置および動作方法
JPH05143336A (ja) デジタル・コンピユータ及び分岐命令実行方法
EP0939364A2 (en) Paired instruction processor branch recovery mechanism
KR100404257B1 (ko) 파이프라인 프로세서 아키텍처, 모든 인라인 및 분기인스트럭션을 정확한 구조적인 시퀀스로 프로세서파이프라인에 제공하는 시스템, 및 분기 처리 유닛
JP2001166935A (ja) プロセッサにおける分岐予測方法及びプロセッサ
US6981131B2 (en) Early condition code evaluation at pipeline stages generating pass signals for controlling coprocessor pipeline executing same conditional instruction
US5761490A (en) Changing the meaning of a pre-decode bit in a cache memory depending on branch prediction mode
JPH0863356A (ja) 分岐予測装置
JP2000029701A (ja) 単一クロック・サイクルに非連続命令を取り出すための方法およびシステム。
US6622240B1 (en) Method and apparatus for pre-branch instruction
JP3725547B2 (ja) 限定ラン分岐予測
JP3683439B2 (ja) 分岐予測を抑止する情報処理装置および方法
GB2291513A (en) Speculative history field in a branch target buffer.
EP0666538A2 (en) Data processor with branch target address cache and method of operation
JP2877531B2 (ja) 並列演算処理装置