JP6304694B2 - 分岐予測のための信頼性閾値ベースの対抗分岐パス実行 - Google Patents

分岐予測のための信頼性閾値ベースの対抗分岐パス実行 Download PDF

Info

Publication number
JP6304694B2
JP6304694B2 JP2015552148A JP2015552148A JP6304694B2 JP 6304694 B2 JP6304694 B2 JP 6304694B2 JP 2015552148 A JP2015552148 A JP 2015552148A JP 2015552148 A JP2015552148 A JP 2015552148A JP 6304694 B2 JP6304694 B2 JP 6304694B2
Authority
JP
Japan
Prior art keywords
branch
path
thread
branch instruction
counter
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.)
Active
Application number
JP2015552148A
Other languages
English (en)
Other versions
JP2016507092A (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2016507092A publication Critical patent/JP2016507092A/ja
Application granted granted Critical
Publication of JP6304694B2 publication Critical patent/JP6304694B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline 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
    • 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
    • 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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/3854Instruction completion, e.g. retiring, committing or graduating

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)

Description

本発明は、概してコンピュータ・プロセッサにおける分岐予測に関し、より詳細には、分岐予測のための信頼性閾値ベースの対抗パス実行に関する。
コンピュータ・システム内のプロセッサは、一連の小ステップの連鎖又は操作で命令を実行することによって命令を処理することができる。場合によっては、プロセッサによって処理される命令の数を増やすために、従って、プロセッサの速度を上げるために、プロセッサをパイプライン化することができる。パイプライン化とは、プロセッサ内に、別個のステージ(段、stage)を設け、各々のステージが、命令を実行するのに必要な小ステップのうちの1つ又は複数を行なうことを言う。パイプラインにおいて命令を実行することの一例として、第1の命令を受信したとき、第1のパイプライン・ステージは、命令の小部分(small part)を処理することができる。第1のパイプライン・ステージが命令の小部分の処理を完了すると、第2のパイプライン・ステージは、第1の命令の別の小部分の処理を開始することができ、その間に、第1のパイプライン・ステージは、第2の命令の小部分を受信し、その処理を開始することができる。従って、プロセッサは、2つ又はそれより多い命令を同時に並列に処理することができる。
コンピュータ・プログラムは、分岐命令を含むことができ、この分岐命令により、分岐命令によって定められた条件が満たされた場合に、コンピュータ・プログラムが1つの命令からターゲット命令に分岐する(これにより、もしあれば順次命令がスキップされる)。条件が満たされない場合には、ターゲット命令に分岐することなく、分岐命令の後の次の順次命令を実行することができる。典型的には、分岐命令が実行され、その条件がテストされるまで、条件のテストの結果は未知である。従って、条件がテストされるまで、分岐命令後に実行される正しい次の命令を知ることはできない。
命令を実行するためにパイプラインが用いられる場合、分岐命令がパイプラインの幾つかのステージを通過した後、分岐決定(branch resolution)まで、分岐命令の結果を知ることができない。従って、分岐命令が分岐条件の結果を判定するのに必要なステージを通過するまで、分岐命令後に実行される正しい次の命令を知ることができない。場合によっては、分岐決定まで、パイプラインにおける命令の実行をストールすることができる(例えば、命令を実行するために、分岐命令に先行するパイプライン・ステージを用いることはできない)。パイプラインをストールする場合、同数の命令を並列に実行するために、パイプラインは用いられておらず、プロセッサ全体の効率が低下する。
他の場合においては、プロセッサの効率を改善するために、分岐予測を用いて分岐命令の結果を予測することができる。例えば、分岐命令に遭遇すると、プロセッサは、条件の結果が分かった後に、どの命令又はパスが実行されるかを予測することができる。次に、分岐命令の発行時にパイプラインをストールする代わりに、プロセッサは、予測される次の命令から始まる命令の発行を続けることができる。分岐命令の予測パス(predicted path)は、プライマリ・パス(primary path)と呼ぶことができ、非予測パス(non-predicted path)は、対抗パス(opposing path)と呼ぶことができる。
しかしながら、場合によっては、分岐予測が正しくないことがある(例えば、プロセッサは、分岐命令の1つの結果を予測するが、分岐決定時に、反対の結果がもたらされることがある)。分岐命令の結果が誤って予測された場合、分岐予測に基づいてパイプラインに発行された予測命令をパイプラインから除去して、チェックポイントでチェックされる予定だった、これらの命令の効果を取り消すことができる。これは、パイプラインのフラッシュと呼ばれる。次いで、パイプラインをフラッシュした後、分岐命令についての、対抗パスに対応する正しい次の命令をパイプラインに発行し、命令の実行を続行することができる。分岐命令の結果が誤って予測され、プライマリ・パスに対応する誤って予測された命令のグループがパイプラインからフラッシュされ、これによりパイプラインによって行われた前の作業が取り消された場合、プロセッサの効率が悪化することがある。
分岐予測のための信頼性閾値ベースの対抗パス実行のためのコンピュータ・システム、コンピュータ実装方法及びコンピュータ・プログラム製品を提供する。
実施形態は、分岐予測のための信頼性閾値ベースの対抗パス実行のためのシステム、方法、及びコンピュータ・プログラム製品を含む。1つの態様は、第1のスレッドの実行中に遭遇した第1の分岐命令についての分岐予測を判定することを含み、ここで、分岐予測は第1の分岐命令についてのプライマリ・パス及び対抗パスを示す。別の態様は、第1のスレッドにより、プライマリ・パスを実行することを含む。別の態様は、分岐予測の信頼性を判定することと、分岐予測の信頼性を信頼性閾値と比較することを含む。さらに別の態様は、分岐予測の信頼性が信頼性閾値を下回ることに基づいて、第1の分岐命令の対抗パスを実行する第2のスレッドを開始することを含み、ここで、第2のスレッドは第1のスレッドと並列して実行される。
実施形態と見なされる主題は、本明細書の最後にある特許請求の範囲において具体的に示され、明確に特許請求される。実施形態の上記及び他の特徴、並びに利点は、添付図面と併せて用いられる以下の詳細な説明から明らかである。
1つの実施形態による、分岐予測のための信頼性閾値ベースの対抗パス実行のためのコンピュータ・システムを示す。 1つの実施形態によるパイプラインを示す。 1つの実施形態による分岐ターゲット・バッファ/分岐履歴テーブルを示す。 1つの実施形態による、分岐ターゲット・バッファ/分岐履歴テーブルについてのエントリを示す。 1つの実施形態による、分岐予測のための信頼性閾値ベースの対抗パス実行のためのプロセス・フローを示す。 1つの実施形態による、分岐予測のための信頼性閾値ベースの対抗パス実行のためのプロセス・フローを示す。 1つの実施形態による、分岐予測のための信頼性閾値ベースの対抗パス実行の実行を示す。 1つの実施形態によるコンピュータ・プログラム製品を示す。
分岐予測のための信頼性閾値ベースの対抗パス実行のためのシステム及び方法の実施形態が提供され、例示的な実施形態が以下に詳細に論じられる。分岐命令は、高信頼性又は低信頼性で予測することができる。信頼性のレベルは、プロセッサにおいて定められた信頼性閾値に基づいて判定することができる。低信頼性で予測された分岐命令については、予測パス(即ち、プライマリ・パス)及び非予測パス(即ち、対抗パス)の両方を、その分岐命令を含むプログラムに対応する2つの別個のスレッドとして並列して実行することができる。分岐命令の条件の決定時に正解パス(correct path)が判定されると、正解パスに対応するスレッドを、プログラムのための主スレッドとして実行し続けることができ、一方、不正解パス(incorrect path)に対応するスレッドをアボートすることができる。対抗パス・スレッドが正解パスであると判定された場合、アボートされたプライマリ・パス・スレッドに代わって、対抗パス・スレッドがプログラムのための主スレッドとなる。各分岐命令に対して、正しい及び誤った分岐予測を追跡するカウンタを分岐ターゲット・バッファ/分岐履歴テーブル(BTB/BHT)内に保持して、予測信頼性の相対的に正確な判定を可能にすることができる。
プロセッサは、複数のスレッドを並列実行することができる同時マルチスレッド(SMT)プロセッサを含むことができる。SMTプロセッサは、SMTプロセッサにより一度に処理することができる設定された最大スレッド数を有することができる。プロセッサは、トランザクション・メモリ・リソースを付加的に含むことができる。トランザクション・メモリは、1組の命令をトランザクションとして定めることを可能にし、トランザクションの実行の結果を、プロセッサのキャッシュ・ストレージの代わりに、トランザクション・メモリ内に格納することができる。トランザクションがアボートされた場合、プロセッサは、トランザクションの結果を無効にし、トランザクション・メモリ内に残すことによって、トランザクションを含む命令の組をトランザクションの開始まで戻すことができる。トランザクションが成功裡に完了した場合、トランザクションの結果をコミットすることができる、即ち、トランザクション・メモリからキャッシュ・ストレージ内に転送することができる。分岐命令の対抗パスに対応するスレッドは、トランザクション・メモリ・リソースを用いて、トランザクションとして実行することができる。従って、分岐決定時に対抗パスに対応するスレッドが不正解パスであると判定された場合、対抗パス・スレッドがアボートされるときに、対抗パス・スレッドの結果を戻すことができる。一方、分岐決定時に対抗パス・スレッドが正解パスであると判定された場合、トランザクションは終了し、対抗パス・スレッドによって実施された操作は、トランザクション・メモリからキャッシュ・ストレージ内にコミットすることができる。
図1は、分岐予測のための信頼性閾値ベースの対抗パス実行のためのコンピューティング・システム100の例証的な実施形態を示す。コンピューティング・システム100は、パイプライン102を有するプロセッサ101を含む。プロセッサ101は、コンピューティング・システム100の主メモリ108と通信を行い、アプリケーション109などのコンピュータ・プログラムの実行中に発行された命令は、パイプライン102によって処理される。プロセッサ101は、SMTリソース103を用いて同時に複数のスレッドを並列実行することができるSMTプロセッサである。プロセッサ101は、トランザクション・メモリ104を付加的に含む。トランザクションとして定められた命令の組について、トランザクションがコミットされるまで、トランザクションによって実施される全ての操作の結果をトランザクション・メモリ104内に格納し、コミット時に、トランザクションの結果をトランザクション・メモリ104からキャッシュ・ストレージ107内に転送することができる。キャッシュ・ストレージ107は、これらに限定されるものではないが、命令キャッシュ及びデータ・キャッシュを含む任意の適切な数及びタイプのキャッシュを含むことができる。分岐予測は分岐予測論理105によって処理される。BTB/BHT 106は、分岐予測に用いられる分岐命令アドレスに対応するエントリを保持し、図3及び図4に関して以下により詳細に論じられる。分岐予測論理105はまた、BTB/BHT 106内の情報に基づいてなされた分岐予測の信頼性に基づいて、分岐命令の対抗パスについてのスレッドを開始するかどうかを判断する。この判断は、分岐予測論理105において予め定められた信頼性閾値と、現在SMTリソース103によって処理されているスレッド数とに基づいて行うことができる。幾つかの実施形態においては、対抗パス・スレッドを開始するかどうかを判断するために分岐予測論理105により用いられる信頼性閾値が、可変の信頼性閾値を含むことができ、こうした実施形態において、信頼性閾値は、現在SMTリソース103によって処理されている並列スレッドの数に基づいて変化し得る。例えば、現在プライマリ・スレッドだけが実行されている場合、信頼性閾値は比較的低くすることができ、付加的な対抗スレッドが実行を開始すると、信頼性閾値を増大させることができる。付加的に、幾つかの実施形態において、実行中、スレッドは、スレッドと関連付けられた予測信頼性、及びスレッドがプライマリ・スレッドであるか又は対抗スレッドであるかに基づいて、プロセッサ101のリソースにより高い優先順位でアクセスすることができる。分岐予測論理105は付加的に、分岐決定時に不正であると判定されたスレッドのアボートを開始することができる。
図2は、図1のパイプライン102を含むことができる、複数のステージ201−208を有するパイプライン200の例証的な実施形態を示す。命令は、パイプライン200を通って、フェッチ・ステージ201からライトバック(write-back)ステージ208へと進む。フェッチ、デコード、及びディスパッチ・ステージ201−203の間、命令は、イン・オーダー式(in-order)に処理される。発行/実行ステージ204の間、命令の実行に必要なデータが利用可能になると、命令は、アウト・オブ・オーダー式(out-of-order)に実行することができる。次に、命令は、リオーダ(reorder)ステージ205において順序変更され、完了、チェックポイント及びライトバック・ステージ206−208の間、イン・オーダー式に実行される。種々の実施形態において、分岐命令の分岐予測は、パイプラインのフロントエンドで、例えばフェッチ・ステージ201、デコード・ステージ202の間又はより早くに行うことができ、分岐命令の分岐決定は、発行/実行ステージ204の間に行うことができる。チェックポイント・ステージ207において、命令の実行中に、エラー(例えば、トランジスタが予期しないビット反転(bit flip)に直面したなど)が発生したかどうかを判断する。エラーが発生しなかった場合、ライトバック・ステージ208において、命令の結果をプロセッサのキャッシュ・ストレージ107内に書き込むことができる。図2は、例示のみを目的として示され、種々の実施形態において、パイプラインは、任意の適切な数のステージを有することができる。
図3は、図1のBTB/BHT 106および関連した論理を含むことができる、BTB/BHT 302を含むシステム300の1つの実施形態を示す。図3に示されるBTB/BHT 302は、フルアソシアティブ(fully associative)式BTB/BHTを含む。分岐命令アドレスを含む検索アドレスが、BTB/BHT 302により、検索アドレス入力301上で分岐予測論理105から受信され、エントリ303A−303Nのいずれかが、検索アドレス入力301上で受信した検索アドレスに対応するかどうかが判断される。検索アドレスに一致する、例えばエントリ303Aなどのエントリが、BTB/BHT 302内に存在すると判断された場合、ヒット論理304は、エントリ303Aからのターゲット・アドレス及び予測データを判断し、これらをターゲット・アドレス及び予測出力305上で分岐予測論理105に出力する。予測データは、分岐方向予測、ターゲット・アドレス予測、及び信頼性データを含むことができ、図4に関して以下により詳細に論じられる。図3は例示のみを目的として示され、BTB/BHTは、任意の適切な数のエントリを含むことができ、種々の実施形態において、エントリを編成して2つ又はそれより多い合同クラスにすることができる。
図4は、図3に示されたBTB/BHTエントリ303A−303Nの各々を含むことができる、BTB/BHTエントリ400の一実施形態を示す。BTB/BHTエントリ400は、分岐命令の命令アドレスに対応するタグ401を含み、タグ401が検索アドレスに一致した場合、エントリ303A−303Nのエントリは、検索アドレス入力301上で受信した特定の検索アドレスに一致すると判定される。BTB/BHTエントリ400は、ターゲットのアドレス、即ち、エントリ400に対応する成立した分岐命令の後に実行される次の命令のアドレスを含むターゲット・アドレス402をさらに含む。飽和予測カウンタ403は、ターゲット・アドレス402に対応する命令が、予測パス、即ちプライマリ・パスであるか、又は非予測パス、即ち対抗パスであるかを示す。幾つかの実施形態において、飽和予測カウンタ403は、2ビットの飽和カウンタを含むことができ、飽和予測カウンタ403は、分岐予測に用いることができる任意の適切なカウンタを含むことができ、かつ、任意の適切な方法でインクリメント及びデクリメントすることができる。
プロセッサ101における付加的なスレッドの実行のためのSMTリソース103は限られているため、信頼性閾値を下回る信頼性を有する分岐命令のみが、新しい対抗パス・スレッドを開始することができる。正解(correct)カウンタ404及び不正解(incorrect)カウンタ405は、エントリ400に対応する分岐命令についての正しい予測及び正しくない予測の数を追跡し、飽和予測カウンタ403によって与えられる分岐予測の信頼性を判定するのに用いられる。飽和予測カウンタ403によって与えられる予測の信頼性は、正解カウンタ404の値を、正解カウンタ404の値と不正解カウンタ405の値の和で除算した値により与えることができる。エントリ400に対応する分岐命令の分岐決定時に、分岐方向が、飽和予測カウンタ403により正しく予測されたと判断された場合、正解カウンタ404がインクリメントされ、分岐方向が正しくなく予測されたと判断された場合、不正解カウンタ405がインクリメントされる。正解カウンタ404又は不正解カウンタ405のインクリメント、及び、飽和予測カウンタ403のインクリメント/デクリメントは、エントリ400に対応する分岐命令の分岐決定後に任意の適切な時点で行うことができる。幾つかの実施形態において、正解カウンタ404及び不正解カウンタ405は各々、4ビットのカウンタを含むことができ、正解/不正解カウンタ404/405の一方が飽和した(即ち、最大カウンタ値に達した)場合、両方のカウンタ404/405を2で除算して、カウンタ値を右に1ビットだけシフトさせ、最上位ビットであったビットを保持することができる。
図5−図6は、分岐予測のための信頼性閾値ベースの対抗パス実行のための方法500の実施形態のフローチャートを示す。方法500は、図1−図4を参照して論じられる。最初に、図5のブロック501において、コンピュータ・プログラムに対応する主スレッドの実行中、分岐命令に遭遇し、分岐命令の命令アドレスに対応するタグ401を有するエントリを求めて、BTB/BHT 106/302を検索する。BTB/BHT 106/302において対応するエントリ(例えば、エントリ303A/400)が決定されると、次に、ブロック502において、決定されたエントリ303A/400内の飽和予測カウンタ403に基づいて、分岐命令についての分岐予測が行われる。飽和予測カウンタ403は、ターゲット・アドレス402に対応する命令が、予測される次の命令であるか(即ち、分岐成立したか)どうかを示す。次に、ブロック503において、分岐予測論理105により、正解カウンタ404及び不正解カウンタ405に基づいて、ブロック502で行われた分岐予測についての信頼性を判定する。信頼性は、正解カウンタ404の値を、正解カウンタ404の値と不正解カウンタ405の値の和で除算した値と等しくすることができる。次に、フローはブロック504に進み、そこで、分岐予測論理105により、ブロック503で判定した信頼性を信頼性閾値と比較する。種々の実施形態においては、信頼性閾値は、任意の適切な値を有することができ、幾つかの実施形態においては、可変の信頼性閾値を含むことができる。こうした実施形態において、信頼性閾値は、現在SMTリソース103によって処理されている並列スレッドの数に基づいて変化し得る。
ブロック504において、判定された信頼性が信頼性閾値を上回ると判断された場合、フローはブロック505に進み、そこで、主スレッドは、ブロック502において行われた予測によって示されるように、プライマリ・パスを辿ってコンピュータ・プログラムの実行を続行する。プライマリ・パス・スレッドは、ブロック502において飽和予測カウンタ403により与えられた分岐予測に応じて、コンピュータ・プログラム内のエントリ303A/400に対応する不成立の(not taken)分岐命令に続く次の命令に相当するか、又は、エントリ303A/400内で定められたターゲット・アドレス402に対応する命令への成立した(taken)分岐を経由することができる。次いで、ブロック505において開始されたプライマリ・パス・スレッドが、ブロック506における分岐決定に到達すると、ブロック502において行われた予測が正しかったかどうかを判定し、分岐決定に基づいて、分岐命令に対応するBTB/BHTエントリ303A/400内のカウンタを更新する。予測が正しい場合、分岐命令に対応するBTB/BHTエントリ303A/400内の正解カウンタ404がインクリメントされる。予測が正しくない場合、パイプライン102がフラッシュされ、分岐命令に対応するBTB/BHTエントリ303A/400内の不正解カウンタ405がインクリメントされる。飽和予測カウンタ403もまた、正しい又は正しくない分岐予測を反映するように更新される。
しかしながら、ブロック504において、分岐予測の信頼性が信頼性閾値を下回ると判定された場合、フローはブロック504からブロック507に進み、そこで主スレッドは、プライマリ・パスに対応する実行を続行し、分岐予測論理105により、非予測(即ち、対抗)パスのための新しい並列スレッドが開始される。対抗パス・スレッドは、ブロック502において飽和予測カウンタ403により与えられる分岐予測に応じて、コンピュータ・プログラム内のエントリ303A/400に対応する分岐命令に続く次の順次命令に対応することができ、又は、エントリ303A/400内で定められたターゲット・アドレス402に対応する命令に対応することができる。対抗パス・スレッドは、SMTリソース103により処理される。対抗パス・スレッドに対応する命令の組は、トランザクション・メモリ104を用いてトランザクションとして定めることができるので、対抗パス・スレッドにより完了された操作の結果は、分岐の完了までトランザクション・メモリ104内に格納される。
SMTリソース103には一度に処理することができる最大スレッド数がある場合があるので、ブロック507における対抗パス・スレッドの開始は、プロセッサ101内のSMTリソース103によって現在処理されているスレッドの数に従うものとすることができる。プロセッサ101内で実行されているスレッドの数がこの最大数である場合、幾つかの実施形態においては、ブロック507において、対抗パス・スレッドが開始されないことがある。他の実施形態においては、対抗パス・スレッドについて、ブロック503で判断された信頼性を、現在SMTリソース103によって実行されている別の既存の対抗パス・スレッドの信頼性と比較することができ、現在の対抗パス・スレッドが既存の対抗パス・スレッドより低い信頼性を有する場合、既存の対抗パス・スレッドをアボートし、代わりに現在の対抗パス・スレッドを開始することができる。幾つかの実施形態では、プライマリ・パス・スレッドは、対抗パス・スレッドより高い優先順位を有することができる。幾つかの実施形態においては、ブロック503で判断された信頼性に基づいて、優先順位レベルを割り当てることもできる。
方法500のブロック507から、フローは、図6のブロック508に進み、そこで、パイプライン102/200においてBTB/BHTエントリ400/303Aに対応する分岐命令の分岐決定が行われ、分岐命令についての正解パスが判明する。次に、ブロック509において、ブロック508の分岐決定に基づいて、分岐命令についてブロック502で行われた分岐予測が正しいかどうかを判定する。ブロック509において、分岐予測が正しいと判定された場合、フローはブロック510に進み、そこで、分岐予測論理105により、対抗パス・スレッドがアボートされる。対抗パス・スレッドをアボートすることは、トランザクション・メモリ104により、対抗パス・スレッドに対応するトランザクションをロール・バックすること(rolling back)を含むことができる。プライマリ・パス・スレッドはコンピュータ・プログラムの実行を続行する。最後に、ブロック511において、分岐命令に対応するBTB/BHTエントリ303A/400内の正解カウンタ404がインクリメントされ、飽和予測カウンタ403もまた、正しい分岐予測を反映するように更新される。
しかしながら、ブロック508において、ブロック507の分岐決定に基づき、分岐命令についてブロック502で行われた分岐予測が正しくないと判定された場合、フローはブロック509からブロック512に進み、そこで、分岐予測論理105により、プライマリ・パス・スレッドをアボートする。幾つかの実施形態においては、プライマリ・パス・スレッドをアボートすることは、パイプライン101/200内のプライマリ・パス・スレッドに対応するいずれかの命令をフラッシュすることを含むことができる。次に、ブロック513において、分岐命令に対応するBTB/BHTエントリ303A/400内の不正解カウンタ405がインクリメントされ、飽和予測カウンタ403もまた、正しい分岐予測を反映するように更新される。最後に、ブロック514において、対抗パス・スレッドに対応するトランザクションを終了し、トランザクション・メモリ104からキャッシュ・ストレージ107にコミットし、対抗パス・スレッドは、コンピュータ・プログラムのための主スレッドとして実行を続行する。分岐決定はアウト・オブ・オーダー式に行われ、完了はイン・オーダー式に行われるので、分岐がパイプライン102/200内の完了ステージ206に到達した後、トランザクションをコミットすることができる。場合によっては、より古い分岐に対応する別のスレッドが、分岐予測を誤り、より新しい分岐が分岐決定に到達した後、より新しい分岐が完了に到達する前に、この新しい分岐をフラッシュ・アウトすることも可能である。
図5−図6の方法500のブロック510及び512において実施されるように、スレッドをアボートすることにより、アボートされたスレッド専用であったSMTリソース103の一部分をフリー・プールに戻して、将来の低信頼性分岐予測のために対抗パス・スレッドの開始に用いられるようにすることが可能になる。プロセッサ101内のSMTリソース103がサポートするスレッドの数に応じて、付加的な対抗パス・スレッドを、プライマリ・パス・スレッド又は対抗パス・スレッドの下のトランザクションとして開始することができる。プライマリ・パス・スレッド又は対抗パス・スレッド内で、信頼性閾度を下回る予測信頼性を有する分岐命令に遭遇した場合、図7に示されるように、SMTリソース103がサポートする最大スレッド数まで、付加的な対抗パス・スレッドを開始することができる。
図7は、分岐予測のための信頼性閾値ベースの対抗パス実行の一例を示す。図7の例は、4つの最大スレッド限度を有するSMTリソースを有するプロセッサ上で実行される。図7に示されるように、プロセッサによるプログラムの実行中、所定の信頼性閾値を下回る信頼性を有する低信頼性の分岐601に遭遇する。分岐601が低信頼性のものであるとの判断により、対抗パス・スレッド603が、プライマリ・パス・レッド602と並列して開始される。プライマリ・パス・スレッド602は、低信頼性の分岐命令610についての予測パスを含み、対抗パス・スレッド603は、非予測パスを含む。対抗パス・スレッド603は、トランザクションとして開始することができる。プライマリ・パス・スレッド602は、低信頼性の分岐命令601を含むプログラムの主スレッドである。プライマリ・パス・スレッド602の実行中、信頼性閾値を上回る信頼性を有する高信頼性の分岐命令604に遭遇する。分岐604は高信頼性の分岐命令であるので、プライマリ・パス・スレッド602は、高信頼性の分岐604に遭遇した後、プライマリ・パス・スレッド605として実行を続行し、高信頼性の分岐604に関して、対抗パス・スレッドは開始されない。次に、プライマリ・パス・スレッド602の更なる実行中、別の低信頼性の分岐命令606に遭遇し、別のプライマリ−対抗パス・スレッド607を、プライマリ−プライマリ・パス・スレッド607と並列して開始させる。プライマリ−対抗パス・スレッド608もまた、トランザクションとして開始することができる。
プライマリ・パス・スレッド602と並列して行われる対抗パス・スレッド603の実行において、最初に、高信頼性の分岐命令609に遭遇すると、対抗パス・スレッド603は、高信頼性の分岐命令609の後、対抗パス・スレッド610として実行を続行し、付加的な対抗パス・スレッドは開始されない。次いで、対抗パス・スレッド610の実行中、低信頼性の分岐命令611に遭遇し、対抗−対抗パス・スレッド613を、対抗−プライマリ・パス・スレッド612と並列して開始させる。対抗−プライマリ・パス・スレッド612は、対抗−対抗パス・スレッド613に対してプライマリ・パスである。対抗−対抗パス・スレッド613も、トランザクションとして開始することができる。プライマリ−プライマリ・パス・スレッド607、プライマリ−対抗パス・スレッド608、対抗−プライマリ・パス・スレッド612、及び対抗−対抗パス・スレッド613は全て、プロセッサ内のSMTリソースを用いて、並列して実行することができる。幾つかの実施形態においては、フェッチ・ステージ201、デコード・ステージ202、及び発行ステージ204を含むパイプライン102/200のフロントエンドは、スレッド607−608及び612−613の全てに対して等しくすることができ、他の実施形態においては、特定のスレッドがプライマリ・スレッドであるかどうか及び/又はスレッドと関連付けられた信頼値に基づいて、スレッド607−608及び612−613の幾つかのスレッドに、パイプライン102/200のリソースに対するより高い優先順位のアクセスを与えることができる。例えば、相対的に高い信頼性を有するプライマリ・スレッドは、対応するより高い優先順位を有することができる。
図7の例ではプロセッサ内のSMTリソースは、4つの最大スレッド限度を有するので、これら4つのスレッドのうちの1つがアボートされるまで、付加的なスレッドを開始することはできない。プライマリ−プライマリ・パス・スレッド607及びプライマリ−対抗パス・スレッド608のうちの一方は、低信頼性の分岐命令606の分岐決定時にアボートされ、対抗−プライマリ・パス・スレッド612及び対抗−対抗パス・スレッド613のうちの一方は、低信頼性の分岐命令611の分岐決定時にアボートされる。プライマリ−プライマリ・パス・スレッド607及びプライマリ−対抗パス・スレッド608、又は、対抗−プライマリ・パス・スレッド612及び対抗−対抗パス・スレッド613は、低信頼性の分岐命令601の分岐決定時にアボートされる。
幾つかの実施形態において、プライマリ−プライマリ・パス・スレッド607、プライマリ−対抗パス・スレッド608、対抗−プライマリ・パス・スレッド612、及び対抗−対抗パス・スレッド613のいずれかの実行において、付加的な低信頼性の分岐命令に遭遇した場合、その付加的な低信頼性の分岐命令についての予測の信頼性を、低信頼性の分岐命令606及び611の信頼性と比較することができ、付加的な低信頼性の分岐命令が、低信頼性の分岐命令606及び611より低い信頼性を有する場合、プライマリ−対抗パス・スレッド608又は対抗−対抗パス・スレッド613をそれぞれアボートすることができ、アボートされたスレッドの代わりに、付加的な低信頼性の分岐命令についての対抗パスを開始することができる。
当業者であれば理解するように、本発明の1つ又は複数の態様は、システム、方法又はコンピュータ・プログラム製品として具体化することができる。従って、本発明の1つ又は複数の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形態をとることができ、本明細書においては、これらは全て、一般的に「回路」、「モジュール」又は「システム」と呼ぶことができる。さらに、本発明の1つ又は複数の態様は、媒体内に具体化されたコンピュータ可読プログラム・コードを有する、1つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータ・プログラム製品の形態をとることができる。
1つ又は複数のコンピュータ可読媒体のいずれかの組み合わせを用いることもできる。コンピュータ可読媒体は、コンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子、磁気、光学、電磁気、赤外線若しくは半導体のシステム、装置若しくはデバイス、又はこれらのいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例(非網羅的なリスト)として、以下のもの、即ち、1つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能なプログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク型読み出し専用メモリ(CD−ROM)、光記憶装置、磁気記憶装置、又は上記のいずれかの適切な組み合わせが挙げられる。本明細書の文脈においては、コンピュータ可読ストレージ媒体は、命令実行システム、装置若しくはデバイスによって又はそれらと関連して用いるためのプログラムを収容又は格納することが可能な、任意の有形媒体とすることができる。
ここで図8を参照すると、一例において、コンピュータ・プログラム700は、例えば、1つ又は複数の実施形態を提供し、容易にするように、その上にコンピュータ可読プログラム・コード手段又は論理704を格納するための、有形及び/又は非一時的とすることができる1つ又は複数のコンピュータ可読ストレージ媒体702を含む。
プログラム・コードは、有形の媒体(これらに限定されるものではないが、電子メモリ・モジュール(RAM)、フラッシュ・メモリ、コンパクト・ディスク(CD)、DVD、磁気テープ等)上に作成され格納されたとき、「コンピュータ・プログラム製品」と呼ばれることが多い。コンピュータ・プログラム製品媒体は、典型的には、処理回路による実行のために、好ましくはコンピュータ・システム内の処理回路によって読み取り可能である。こうしたプログラム・コードは、コンパイラ、又は、例えば実行時に本発明の態様を実施する命令をアセンブルするためのアセンブラを用いて作成することができる。
技術的効果及び利点として、コンピューティング・システムにおけるプロセッサ効率の増大が挙げられる。
本明細書で用いられる用語は、特定の実施形態を説明する目的のためのものにすぎず、本発明を限定することを意図したものではない。本明細書で用いられる場合、単数形「1つの(a)」、「1つの(an)」及び「その(the)」は、文脈が特に明示しない限り、複数形も同様に含むことを意図したものである。「含む(comprise)」及び/又は「含んでいる(comprising)」という用語は、本明細書で用いられる場合、記述された特徴、整数、ステップ、動作、要素、及び/又はコンポーネントの存在を指示するが、1つ又は複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、及び/又はそれらの群の存在又は追加を排除するものではないこともさらに理解されるであろう。
以下の特許請求の範囲における全ての手段又はステップと機能との組み合わせ(ミーンズ又はステップ・プラス・ファンクション)要素の対応する構造、材料、動作、及び均等物は、その機能を、明確に特許請求される他の特許請求された要素との組み合わせで実行するためのあらゆる構造、材料、又は動作を含むことが意図されている。実施形態の説明は、例証及び説明を目的として提示されたものであり、網羅的であること又は実施形態を開示された形態に限定することを意図したものではない。当業者には、本発明の範囲から逸脱しない多くの修正及び変形が明らかとなるであろう。実施形態は、原理及び実際的用途を最も良く説明するために、そして、当業者が、企図した特定の用途に適した種々の修正を伴う実施形態を理解できるように、選択され、説明された。
実施形態の態様に関する操作を実行するためのコンピュータ・プログラム・コードは、Java、SmallTalk、C++等のようなオブジェクト指向型プログラミング言語、及び、「C」プログラミング言語、又は同様のプログラミング言語のような従来の手続き型プログラミング言語を含む、1つ又は複数のプログラミング言語のいずれかの組み合わせで書くことができる。プログラム・コードは、完全にユーザのコンピュータ上で実行される場合もあり、スタンドアロンのソフトウェア・パッケージとして、一部がユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある(例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて)。
実施形態の態様は、実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図及び/又は概略図を参照して、上述される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図内のブロックの組み合わせは、コンピュータ・プログラム命令によって実装できることが理解されるであろう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装するための手段を作り出すようにすることができる。
これらのコンピュータ・プログラム命令はまた、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装する命令を含む製品を製造するようにすることもできる。
コンピュータ・プログラム命令はまた、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実行するためのプロセスを提供するようにもすることもできる。
図面内のフローチャート及びブロック図は、種々の実施形態によるシステム、方法及びコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含むモジュール、セグメント、又はコードの部分を表すことができる。幾つかの代替的な実装において、ブロック内に記載された機能は、図面内に記載された順序とは異なる順序で行われ得ることにも留意すべきである。例えば、連続して示された2つのブロックが、関与する機能に応じて、実際には、実質的に同時に実行されることもあり、ときにはブロックが逆順に実行されることもある。また、ブロック図及び/又はフローチャート図の各ブロック、並びにブロック図及び/又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を行う専用ハードウェア・ベースのシステムによって、又は専用ハードウェアとコンピュータ命令との組み合わせによって実装できることにも留意されたい。
100:コンピューティング・システム
101:プロセッサ
102、200:パイプライン
103:SMTリソース
104:トランザクション・メモリ
105:分岐予測論理
106、302:BTB/BHT
107:キャッシュ・ストレージ
108:主メモリ
109:アプリケーション
201:フェッチ・ステージ
202:デコード・ステージ
203:ディスパッチ・ステージ
204:発行/実行ステージ
205:順序変更ステージ
206:完了ステージ
207:チェックポイント・ステージ
208:ライトバック・ステージ
300:システム
301:検索アドレス入力
303A−303N、400:BTB/BHTエントリ
304:ヒット論理
305:ターゲット・アドレス及び予測出力
401:タグ
402:ターゲット・アドレス
403:飽和予測カウンタ
404:正解カウンタ
405:不正解カウンタ

Claims (15)

  1. 分岐予測のための信頼性閾値ベースの対抗パス実行のためのコンピュータ・システムであって、前記システムは、
    第1のスレッドの実行中に遭遇した第1の分岐命令について、分岐予測が、プライマリ・パス及び対抗パスを示すかを判定することと、
    前記第1のスレッドにより前記プライマリ・パスを実行することと、
    前記分岐予測の信頼性を判定することと、
    前記分岐予測の前記信頼性を信頼性閾値と比較することと、
    前記分岐予測の前記信頼性が前記信頼性閾値を下回ることに基づいて、前記第1の分岐命令の前記対抗パスを実行するため前記第1のスレッドと並列に実行される第2のスレッドを開始することと、
    を実行するプロセッサを含むシステム。
  2. 前記プライマリ・パス及び前記対抗パスのうちの一方が前記第1の分岐命令の正解パスを含むか否かに関し、前記第1の分岐命令の分岐決定を判定することと、
    前記第1の分岐命令の前記分岐決定が、前記対抗パスが前記第1の分岐命令の正解パスであると示すことに基づいて、前記第1のスレッドをアボートすることと、
    前記第1の分岐命令の前記分岐決定が、前記プライマリ・パスが前記第1の分岐命令の正解パスであると示すことに基づいて、前記第2のスレッドをアボートすることと、
    をさらに含む、請求項1に記載のコンピュータ・システム。
  3. 前記第2のスレッドは、前記プロセッサのトランザクション・メモリ内で実行されるトランザクションとして開始され、
    前記第1の分岐命令の前記分岐決定が、前記対抗パスが前記第1の分岐命令の前記正解パスであると示すことに基づいて、前記第2のスレッドに対応する前記トランザクションを終了し、コミットすることと、
    前記第1の分岐命令の前記分岐決定が、前記プライマリ・パスが前記第1の分岐命令の前記正解パスであると示すことに基づいて、前記第2のスレッドに対応する前記トランザクションをロール・バックすることと、
    をさらに含む、請求項2に記載のコンピュータ・システム。
  4. 前記プロセッサは、同時マルチスレッド動作するSMTプロセッサを含み、付加的に、前記プロセッサによって現在処理されているスレッド総数が前記SMTプロセッサの最大スレッド数を下回ることに基づき、前記第2のスレッドを開始する、請求項1に記載のコンピュータ・システム。
  5. 前記信頼性閾値は、前記プロセッサによって現在処理されている前記スレッド総数に基づいて変化する、請求項4に記載のコンピュータ・システム。
  6. 前記プロセッサによって現在処理されている前記スレッド総数が、前記プロセッサの前記最大スレッド数に等しいことに基づいて、
    第2の分岐命令の対抗パスに対応する、前記プロセッサ内で現在実行されている第3のスレッドと関連付けられた分岐予測の信頼性を判定することと、
    前記第2の分岐命令と関連付けられた前記信頼性を、前記第1の分岐命令と関連付けられた前記信頼性と比較することと、
    前記第2の分岐命令と関連付けられた前記信頼性が前記第1の分岐命令と関連付けられた前記信頼性を下回ることに基づいて、前記第3のスレッドをアボートし、前記第1の分岐命令の前記対抗パスを実行する前記第2のスレッドを開始することと、
    をさらに含む、請求項4に記載のコンピュータ・システム。
  7. 前記第1の分岐命令についての前記分岐予測は、前記プロセッサの分岐成立バッファ/分岐履歴テーブル(BTB/BHT)における前記第1の分岐命令に対応するエントリ内の飽和予測カウンタに基づいて判定され、前記分岐予測の前記信頼性は、前記第1の分岐命令に対応する前記エントリ内の正解カウンタ及び不正解カウンタに基づいて判定される、請求項1に記載のコンピュータ・システム。
  8. 前記分岐予測の前記信頼性は、前記正解カウンタの値を、前記正解カウンタの値と前記不正解カウンタの値の和で除算したものに等しい、請求項7に記載のコンピュータ・システム。
  9. 前記第1の分岐命令の分岐決定を判定することと、
    前記第1の分岐命令の前記分岐決定が、前記対抗パスが前記第1の分岐命令の正解パスであると示すことに基づいて、前記第1の分岐命令に対応する前記エントリ内の前記不正解カウンタをインクリメントすることと、
    前記第1の分岐命令の前記分岐決定が、前記プライマリ・パスが前記第1の分岐命令の正解パスであると示すことに基づいて、前記第1の分岐命令に対応する前記エントリ内の前記正解カウンタをインクリメントすることと、
    をさらに含む、請求項7に記載のコンピュータ・システム。
  10. 前記第1のスレッドの実行の優先順位が前記第2のスレッドの実行の優先順位より高く、前記第1のスレッドの実行の前記優先順位及び前記第2のスレッドの実行の前記優先順位は、前記判定された信頼性に基づいてさらに判定される、請求項1に記載のコンピュータ・システム。
  11. 分岐予測のための信頼性閾値ベースの対抗パス実行のためのコンピュータ実装方法であって、前記方法は、
    コンピュータのプロセッサにより、第1のスレッドの実行中に遭遇した第1の分岐命令について、分岐予測が、プライマリ・パス及び対抗パスを示すかを、判定することと、
    前記第1のスレッドにより前記プライマリ・パスを実行することと、
    前記分岐予測の信頼性を判定することと、
    前記分岐予測の前記信頼性を信頼性閾値と比較することと、
    前記分岐予測の前記信頼性が前記信頼性閾値を下回ることに基づいて、前記第1の分岐命令の前記対抗パスを実行し、前記第1のスレッドと並列に実行される第2のスレッドを開始することと、
    を含む、方法。
  12. 前記方法は、
    前記プライマリ・パス及び前記対抗パスのうちの一方が前記第1の分岐命令の正解パスを含むかどうかに関して前記第1の分岐命令の分岐決定を判定することと、
    前記第1の分岐命令の前記分岐決定が、前記対抗パスが前記第1の分岐命令の正解パスであると示すことに基づいて、前記第1のスレッドをアボートすることと、
    前記第1の分岐命令の前記分岐決定が、前記プライマリ・パスが前記第1の分岐命令の正解パスであると示すことに基づいて、前記第2のスレッドをアボートすることと、
    をさらに含む、請求項11に記載の方法。
  13. 分岐予測のための信頼性閾値ベースの対抗パス実行を実施するためのコンピュータ・プログラムであって、前記コンピュータ・プログラムは、
    プロセッサに対し、
    第1のスレッドの実行中に遭遇した第1の分岐命令について、分岐予測が、プライマリ・パス及び対抗パスを示すかを判定することと、
    前記第1のスレッドにより前記プライマリ・パスを実行することと、
    前記分岐予測の信頼性を判定することと、
    前記分岐予測の前記信頼性を信頼性閾値と比較することと、
    前記分岐予測の前記信頼性が前記信頼性閾値を下回ることに基づいて、前記第1の分岐命令の前記対抗パスを実行し、前記第1のスレッドと並列して実行される第2のスレッドを開始することと、
    を含む、コンピュータ・プログラム。
  14. 前記第1の分岐命令の分岐決定が、前記プライマリ・パス及び前記対抗パスのうちの一方が前記第1の分岐命令の正解パスを含むか否かを判定することと、
    前記第1の分岐命令の前記分岐決定が、前記対抗パスが前記第1の分岐命令の正解パスであると示すことに基づいて、前記第1のスレッドをアボートすることと、
    前記第1の分岐命令の前記分岐決定が、前記プライマリ・パスが前記第1の分岐命令の正解パスであると示すことに基づいて、前記第2のスレッドをアボートすることと、
    をさらに含む、請求項13に記載のコンピュータ・プログラム。
  15. 前記第2のスレッドは、前記プロセッサのトランザクション・メモリ内で実行されるトランザクションとして開始され、
    前記第1の分岐命令の前記分岐決定が、前記対抗パスが前記第1の分岐命令の前記正解パスであると示すことに基づいて、前記第2のスレッドに対応する前記トランザクションを終了し、コミットすることと、
    前記第1の分岐命令の前記分岐決定が、前記プライマリ・パスが前記第1の分岐命令の前記正解パスであると示すことに基づいて、前記第2のスレッドに対応する前記トランザクションをロール・バックすることと、
    をさらに含む、請求項14に記載のコンピュータ・プログラム。
JP2015552148A 2013-01-15 2013-10-21 分岐予測のための信頼性閾値ベースの対抗分岐パス実行 Active JP6304694B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/741,597 2013-01-15
US13/741,597 US9348599B2 (en) 2013-01-15 2013-01-15 Confidence threshold-based opposing branch path execution for branch prediction
PCT/IB2013/059500 WO2014111758A1 (en) 2013-01-15 2013-10-21 Confidence threshold-based opposing branch path execution for branch prediction

Publications (2)

Publication Number Publication Date
JP2016507092A JP2016507092A (ja) 2016-03-07
JP6304694B2 true JP6304694B2 (ja) 2018-04-04

Family

ID=51166182

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015552148A Active JP6304694B2 (ja) 2013-01-15 2013-10-21 分岐予測のための信頼性閾値ベースの対抗分岐パス実行

Country Status (5)

Country Link
US (2) US9348599B2 (ja)
JP (1) JP6304694B2 (ja)
CN (1) CN104919418B (ja)
DE (1) DE112013005882B4 (ja)
WO (1) WO2014111758A1 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9348599B2 (en) 2013-01-15 2016-05-24 International Business Machines Corporation Confidence threshold-based opposing branch path execution for branch prediction
GB2522910B (en) * 2014-02-10 2021-04-07 Advanced Risc Mach Ltd Thread issue control
US10503538B2 (en) 2014-06-02 2019-12-10 International Business Machines Corporation Delaying branch prediction updates specified by a suspend branch prediction instruction until after a transaction is completed
US10289414B2 (en) * 2014-06-02 2019-05-14 International Business Machines Corporation Suppressing branch prediction on a repeated execution of an aborted transaction
US10261826B2 (en) 2014-06-02 2019-04-16 International Business Machines Corporation Suppressing branch prediction updates upon repeated execution of an aborted transaction until forward progress is made
US10235172B2 (en) 2014-06-02 2019-03-19 International Business Machines Corporation Branch predictor performing distinct non-transaction branch prediction functions and transaction branch prediction functions
US9477469B2 (en) * 2014-06-02 2016-10-25 International Business Machines Corporation Branch predictor suppressing branch prediction of previously executed branch instructions in a transactional execution environment
US10685318B2 (en) * 2015-01-30 2020-06-16 United Parcel Service Of America, Inc. Concepts for address prediction or correction
US11755484B2 (en) * 2015-06-26 2023-09-12 Microsoft Technology Licensing, Llc Instruction block allocation
US20170046159A1 (en) * 2015-08-14 2017-02-16 Qualcomm Incorporated Power efficient fetch adaptation
GB2544489B (en) * 2015-11-17 2017-12-06 Advanced Risc Mach Ltd Branch prediction in a data processing apparatus
US10474462B2 (en) * 2016-02-29 2019-11-12 Qualcomm Incorporated Dynamic pipeline throttling using confidence-based weighting of in-flight branch instructions
WO2018049024A1 (en) * 2016-09-09 2018-03-15 Vermeer Corporation Cross-bore detection during horizontal directional drilling
US10394559B2 (en) * 2016-12-13 2019-08-27 International Business Machines Corporation Branch predictor search qualification using stream length prediction
US10387152B2 (en) * 2017-07-06 2019-08-20 Arm Limited Selecting branch instruction execution paths based on previous branch path performance
CN111936968A (zh) * 2018-04-21 2020-11-13 华为技术有限公司 一种指令执行方法及装置
CN110503740B (zh) * 2018-05-18 2021-11-26 杭州海康威视数字技术股份有限公司 一种车辆状态判定方法、装置、计算机设备及系统
US10776122B2 (en) 2018-06-14 2020-09-15 International Business Machines Corporation Prioritization protocols of conditional branch instructions
US10901743B2 (en) * 2018-07-19 2021-01-26 International Business Machines Corporation Speculative execution of both paths of a weakly predicted branch instruction
US11086629B2 (en) * 2018-11-09 2021-08-10 Arm Limited Misprediction of predicted taken branches in a data processing apparatus
US10846097B2 (en) * 2018-12-20 2020-11-24 Samsung Electronics Co., Ltd. Mispredict recovery apparatus and method for branch and fetch pipelines
US11188340B2 (en) * 2018-12-20 2021-11-30 International Business Machines Corporation Multiple streams execution for hard-to-predict branches in a microprocessor
US11416257B2 (en) * 2019-04-10 2022-08-16 International Business Machines Corporation Hybrid and aggregrate branch prediction system with a tagged branch orientation predictor for prediction override or pass-through
CN110825442B (zh) * 2019-04-30 2021-08-06 成都海光微电子技术有限公司 一种指令预取方法及处理器
US11113063B2 (en) * 2019-06-24 2021-09-07 Samsung Electronics Co., Ltd. Method and apparatus to control the use of hierarchical branch predictors based on the effectiveness of their results
US11249762B2 (en) * 2019-10-24 2022-02-15 Arm Limited Apparatus and method for handling incorrect branch direction predictions
US20210149676A1 (en) * 2019-11-14 2021-05-20 Higon Austin R&D Center Corporation Branch Prediction Method, Branch Prediction Unit and Processor Core
US11473418B1 (en) 2020-01-22 2022-10-18 Vermeer Manufacturing Company Horizontal directional drilling system and method
US20220075624A1 (en) * 2020-09-04 2022-03-10 Advanced Micro Devices, Inc. Alternate path for branch prediction redirect
US11847458B2 (en) * 2021-07-02 2023-12-19 International Business Machines Corporation Thread priorities using misprediction rate and speculative depth
CN113918225A (zh) * 2021-11-04 2022-01-11 成都海光微电子技术有限公司 指令预测方法、指令数据处理装置、处理器以及存储介质
CN114911528B (zh) * 2022-05-31 2024-09-13 上海阵量智能科技有限公司 分支指令处理方法、处理器、芯片、板卡、设备及介质

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6029228A (en) * 1996-12-31 2000-02-22 Texas Instruments Incorporated Data prefetching of a load target buffer for post-branch instructions based on past prediction accuracy's of branch predictions
JPH1196005A (ja) * 1997-09-19 1999-04-09 Nec Corp 並列処理装置
US6625744B1 (en) * 1999-11-19 2003-09-23 Intel Corporation Controlling population size of confidence assignments
US6560693B1 (en) 1999-12-10 2003-05-06 International Business Machines Corporation Branch history guided instruction/data prefetching
US7051192B2 (en) 2000-05-31 2006-05-23 Sun Microsystems, Inc. Facilitating value prediction to support speculative program execution
US6886093B2 (en) 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
JP4009248B2 (ja) 2003-12-05 2007-11-14 富士通株式会社 分岐予測装置および分岐予測方法
US20050223203A1 (en) * 2004-03-30 2005-10-06 Gabriel Loh Segmented branch predictor
US7334143B2 (en) 2004-04-19 2008-02-19 Hewlett-Packard Development Company, L.P. Computer power conservation apparatus and method that enables less speculative execution during light processor load based on a branch confidence threshold value
US20060168432A1 (en) 2005-01-24 2006-07-27 Paul Caprioli Branch prediction accuracy in a processor that supports speculative execution
US7673122B1 (en) 2005-09-29 2010-03-02 Sun Microsystems, Inc. Software hint to specify the preferred branch prediction to use for a branch instruction
US7930695B2 (en) 2006-04-06 2011-04-19 Oracle America, Inc. Method and apparatus for synchronizing threads on a processor that supports transactional memory
US7487340B2 (en) * 2006-06-08 2009-02-03 International Business Machines Corporation Local and global branch prediction information storage
US20070288731A1 (en) 2006-06-08 2007-12-13 Bradford Jeffrey P Dual Path Issue for Conditional Branch Instructions
US8195898B2 (en) 2007-12-27 2012-06-05 Intel Corporation Hybrid transactions for low-overhead speculative parallelization
CN101587434A (zh) 2008-05-22 2009-11-25 国际商业机器公司 在推测多线程计算系统中处理访存请求的方法及其设备
US20100162247A1 (en) 2008-12-19 2010-06-24 Adam Welc Methods and systems for transactional nested parallelism
CN101515231A (zh) 2009-03-23 2009-08-26 浙江大学 基于数据流分析的单线程程序并行化的实现方法
US8909908B2 (en) 2009-05-29 2014-12-09 Via Technologies, Inc. Microprocessor that refrains from executing a mispredicted branch in the presence of an older unretired cache-missing load instruction
US20110047357A1 (en) * 2009-08-19 2011-02-24 Qualcomm Incorporated Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions
US8464261B2 (en) 2010-03-31 2013-06-11 Oracle International Corporation System and method for executing a transaction using parallel co-transactions
US9389868B2 (en) * 2012-11-01 2016-07-12 International Business Machines Corporation Confidence-driven selective predication of processor instructions
US9348599B2 (en) 2013-01-15 2016-05-24 International Business Machines Corporation Confidence threshold-based opposing branch path execution for branch prediction

Also Published As

Publication number Publication date
US9348599B2 (en) 2016-05-24
CN104919418A (zh) 2015-09-16
DE112013005882T5 (de) 2015-08-27
JP2016507092A (ja) 2016-03-07
US20150058607A1 (en) 2015-02-26
US9519485B2 (en) 2016-12-13
CN104919418B (zh) 2018-01-02
DE112013005882B4 (de) 2020-12-24
WO2014111758A1 (en) 2014-07-24
US20140201508A1 (en) 2014-07-17

Similar Documents

Publication Publication Date Title
JP6304694B2 (ja) 分岐予測のための信頼性閾値ベースの対抗分岐パス実行
US20170344374A1 (en) Processor with efficient reorder buffer (rob) management
US9378022B2 (en) Performing predecode-time optimized instructions in conjunction with predecode time optimized instruction sequence caching
US7454596B2 (en) Method and apparatus for partitioned pipelined fetching of multiple execution threads
JP2009070378A (ja) アウト・オブ・オーダ・プロセッサにおける述語型実行のための方法および装置
KR20210058812A (ko) 소스 오퍼랜드 값들의 예측, 및 명령들의 최적화 처리의 장치 및 방법
CN109634666B (zh) 一种预取机制下融合btb的方法
US11436013B2 (en) Method and system for detection of thread stall
CN113918225A (zh) 指令预测方法、指令数据处理装置、处理器以及存储介质
US20100049957A1 (en) Recovering a subordinate strand from a branch misprediction using state information from a primary strand
US9454377B2 (en) Speculative branch handling for transaction abort
US20140181485A1 (en) Sticky bit update within a speculative execution processing environment
US12118355B2 (en) Cache coherence validation using delayed fulfillment of L2 requests
US9990269B2 (en) Apparatus and method for controlling debugging of program instructions including a transaction
US20020166042A1 (en) Speculative branch target allocation
US9858075B2 (en) Run-time code parallelization with independent speculative committing of instructions per segment
US11847458B2 (en) Thread priorities using misprediction rate and speculative depth
JP7153731B2 (ja) コミット・ウィンドウ移動要素
US10606603B1 (en) Methods and apparatus for facilitating a memory mis-speculation recovery
KR102597201B1 (ko) 트랜잭션 네스팅 심도 시험 명령

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161004

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171226

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20180209

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180227

R150 Certificate of patent or registration of utility model

Ref document number: 6304694

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150