JP2008530713A - 分岐予測ミスを訂正するシステムおよび方法 - Google Patents

分岐予測ミスを訂正するシステムおよび方法 Download PDF

Info

Publication number
JP2008530713A
JP2008530713A JP2007556350A JP2007556350A JP2008530713A JP 2008530713 A JP2008530713 A JP 2008530713A JP 2007556350 A JP2007556350 A JP 2007556350A JP 2007556350 A JP2007556350 A JP 2007556350A JP 2008530713 A JP2008530713 A JP 2008530713A
Authority
JP
Japan
Prior art keywords
instruction
pipeline
branch
instructions
branch instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007556350A
Other languages
English (en)
Other versions
JP2008530713A5 (ja
JP4763727B2 (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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2008530713A publication Critical patent/JP2008530713A/ja
Publication of JP2008530713A5 publication Critical patent/JP2008530713A5/ja
Application granted granted Critical
Publication of JP4763727B2 publication Critical patent/JP4763727B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • 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
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling

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

[00030] パイプラインプロセッサーにおいて分岐予測ミスが発見されたとき、予測ミスされた分岐命令がパイプライン内の最後のコミットされていない命令でないなら、長い待ち時間動作への依存状態のためにより古いコミットされていない命令がチェックされる。1つが発見されるなら、解決されるべき依存状態を待つことなくすべてのコミットされていない命令がパイプラインから消去される。分岐予測は訂正され、分岐命令および分岐命令より古いすべての消去された命令が再フェッチされ実行される。

Description

この発明は一般にプロセッサーの分野に関し、特にブランチ予測ミスに応答してプロセッサー実行パイプラインからコミットされていない(uncomitted)(間違いなく実行されない)命令を消去する方法に関する。
マイクロプロセッサーは多種多様のアプリケーションにおいて計算タスクを実行する。改良されたプロセッサー性能は、ソフトウエアの変更を介してより高速な動作および/または増大された機能性を可能にするためにほとんどの場合望ましい。ポータブル電子装置のような多くの埋め込まれたアプリケーションにおいて、電力を節約することはまたプロセッサーの設計および実施において、重要な考慮すべき事柄である。
ごく最近のプロセッサーはパイプラインアーキテクチャを採用する。この場合、各々が複数の実行ステップを有するシーケンシャルな命令が実行において重なっている。性能を最大にするために、命令はパイプラインを介して連続的に流れなければならない。しかしながら、命令間のデータの依存度、メモリアクセスに関連する遅延、十分なパイプラインリソースを命令に割り当てることが不能であるといようないろいろな理由により命令はしばしばパイプラインにおいて行き詰る。パイプラインの行き詰まりを最小にすることおよびそれらを効率的に解消することは改良されたプロセッサー性能を得る上で重要なファクターである。
現実世界のプログラムは条件分岐命令を含む。その分岐動作は一般には、命令がパイプラインにおいて深く評価されるまで知られていない。一般に現代のプロセッサーは、分岐予測の種々の形態を採用する。それにより条件分岐命令の分岐動作がパイプラインにおいて早期に予測される。また、プロセッサーは、推論的にパイプラインリソースを割り当ておよび/またはフェッチし、分岐予測に基いて推論的に命令を実行する。実際の分岐動作が決定されると、分岐が予測ミスされたなら、推論的にフェッチされた命令はパイプラインから消去しなければならず、新しい命令が正しい分岐目標アドレスからフェッチされる。予測ミスされた分岐は逆にプロセッサー性能および電力消費に影響を与える。
一般に、予測ミスされた分岐命令を処理する際に、分岐命令より古いすべての命令、すなわち、分岐命令よりも先にパイプラインに入力された命令は、推論的にフェッチされた命令が消去される前に実行を完了することが可能である。1つ以上のより古い命令が長い待ち時間動作によりパイプラインにおいて行き詰ると、パイプラインを消去する前に解決される依存状態を待つことは、予測ミスされた分岐のパフォーマンスに不利な条件を悪化させる。
この発明はパイプライン化されたプロセッサーにおいて分岐予測ミスを処理する方法に関する。分岐予測ミスが検出され、分岐命令より古い少なくとも1つの命令が、予測ミスを検出することに応答してパイプラインから消去される。
また、この発明はプロセッサーに関する。プロセッサーは命令実行パイプラインおよび条件分岐命令のパイプラインにおける評価を予測する分岐予測器を含む。また、プロセッサーはパイプライン内の命令の順番を追跡するとともにパイプライン内の命令間の依存状態を追跡する命令順番マネージャーを含む。プロセッサーはさらに、分岐命令が予測ミスしたことを検出することに応答して、パイプラインからの分岐命令より古い少なくとも1つの命令を消去するパイプラインコントローラーを含む。
さらに、この発明は、パイプライン化されたプロセッサーにおいて分岐予測ミスを訂正する方法に関する。分岐命令予測ミスが検出される。分岐命令がパイプライン内の最後のコミットされない命令かどうかが決定される。分岐命令がパイプライン内の最後のコミットされない命令であるなら、分岐命令はコミットされすべてのコミットされない命令はパイプラインから消去される。分岐命令がパイプライン内の最後のコミットされない命令でないなら、分岐命令より古い命令が長い待ち時間動作によりパイプライン内で行き詰るかどうかが決定される。分岐命令より古い命令が長い待ち時間動作によりパイプライン内で行き詰るなら、分岐命令およびすべての他のコミットされない命令はパイプラインから消去される。
図1はプロセッサー10の機能ブロック図を描画する。プロセッサー10は制御ロジック13に従って命令実行パイプライン12内の命令を実行する。パイプライン12は12aおよび12bのような複数の並列パイプラインを有したスーパースケーラーであってもよい。パイプライン制御ロジック14は、分岐予測器13および命令順番マネージャー15を含んでいてもよい。パイプライン12a、12bはパイプステージに組織された種々のレジスターまたはラッチ16と、1つ以上の算術論理演算ユニット(ALU)18を含む。汎用レジスター(GPR)ファイル20は、メモリヒエラルキーの最上層を備えたレジスターを提供する。パイプライン12a、12bは、命令側変換索引バッファ(ITLB)24により管理されるメモリアドレッシングおよび許可を用いて命令キャッシュ22から命令をフェッチする。データは、メイン変換索引バッファ(TLB)28により管理されるメモリアドレッシングおよび許可を用いてデータキャッシュ26からアクセスされる。種々の実施形態において、ITLBは、TLBの部分のコピーを備えていてもよい。
あるいは、ITLBとTLBは統合されてもよい。同様に、プロセッサー10の種々の実施形態において、Iキャッシュ22およびDキャッシュ26は、集積されてもよいしまたは統合されてもよい。Iキャッシュ22および/またはDキャッシュ26におけるミスは、メモリインターフェース30の制御の下にメイン(オフチップ)メモリ32へのアクセスを生じる。プロセッサー10は種々の周辺装置36へのアクセスを制御する入力/出力(I/O)インターフェース34を含んでいてもよい。当業者は、プロセッサー10の多数の変形物が可能であることが認識されるであろう。例えば、プロセッサー10は、IキャッシュおよびDキャッシュのどちからまたは両方のための第2レベル(L2)キャッシュを含んでいてもよい。さらに、プロセッサー10内に描画された1つ以上の機能ブロックは、特定の実施形態から省略されてもよい。
パイプライニングはよく知られたプロセッサー実施技術である。これにより複数の命令は実行において同時にオーバーラップされる。典型的なアーキテクチャの各命令は、フェッチ、デコード、実行、メモリアクセス、およびライトバックのような複数の実行ステップにおいて実行される。プロセッサーパイプライン12は複数の「パイプステージ」から構成される。パイプステージの各々はロジックと記憶エレメント16を備える。これは命令の実行ステップまたは実行ステップの一部を完了する。パイプステージは一緒に接続されてパイプライン12を形成する。命令はパイプライン12に入り、ステージを介して連続的に処理される。前の命令が実行を完了する前に新しい命令がパイプライン12に入り、それゆえ、いつでも複数の命令がパイプライン12内で処理されてもよい。シーケンシャル命令ストリームにおける命令間の並列処理を利用するこの能力は改良されたプロセッサー性能に著しく貢献する。理想的な条件の下で、および1サイクルで各パイプステージを完了するプロセッサー10において、パイプライン12を満たす簡単なイニシャルプロセスに続いて、命令はサイクル毎に実行を完了してもよい。
そのような理想的な条件は、命令間のデータ依存状態(データハザード)、分岐のような制御依存状態(制御ハザード)、プロセッサーリソース割り当て衝突(構造ハザード)、割り込み、キャッシュミス、ページフォールト等を含むさまざまなファクターにより実際には実現されない。命令が2つのオペランド上で算術または論理演算を実行するとき典型的なデータハザードに遭遇する。この場合、1つ以上のオペランドが実行を完了しておらず、従って必要とされるオペランドを発生していなかった先行する命令の結果である。より古い命令は他の算術または論理演算かもしれず、またはキャッシュ22、26においてミスをし、メモリインターフェース30にオフチップメモリアクセス動作を強制する命令のようなメモリアクセスかもしれない。データハザードはパイプライン12に行き詰らせることを強制する。
パイプライン化されたプロセッサー10で遭遇した典型的な制御ハザードは予測ミスした分岐命令である。条件分岐命令は「起きる」かまたは「起きない」かである。起きる場合、命令は異なるプログラムポイントに制御フローを指示する。起きない場合、命令実行はシーケンシャルに進む。分岐条件の評価は、実行パイプステージの期間、パイプライン12に深く生じる。分岐命令が評価されるまで、プロセッサー10はどの命令をフェッチしどの命令(すなわち、次のシーケンシャル命令または分岐目標アドレスにおける命令)を次に実行するかを知らない。分岐条件が評価されるまで待つ際の遅延はパイプライン12に行き詰まりを生じる。従って、多くのプロセッサーは、例えば従前の条件分岐命令の実行に基いてどのように分岐条件が評価するかを予測するであろう。プロセッサー10は予測されたアドレスにおいて始まるパイプライン12に命令をフェッチし、推論的に命令を実行する。予測が正しいとき、パイプラインの行き詰まりは回避される。
いくつかの分岐命令は予測された分岐条件と反対の分岐条件を評価するであろう。これは、ここでは、「分岐予測ミス」または「予測ミスされた分岐」と呼ばれる。分岐予測ミスが検出されると、分岐命令よりもより新しいすべての命令(すなわち、分岐予測に基いてフェッチされたすべての命令)はパイプライン12から消去されなければならない。単一のパイプラインにおいて、どの命令が予測ミスした分岐よりもより新しいかを決定することは正攻法である−分岐の「後ろの」すべてのパイプステージは消去されなければならない。
図2は2つの並列実行パイプライン12aおよび12bを有したスーパースケーラーパイプラインアーキテクチャを描画する。図2に描画された状況において、パイプライン12a内の命令Aは、オペランド発生、メモリアクセス、またはその他の長い待ち時間動作のような命令Xの依存状態により行き詰る。また、命令Aのデータハザードは命令Bを行き詰らせた。従って、命令C、DおよびEが命令キャッシュ22からフェッチされパイプライン12bにロードされる。スーパースケーラープロセッサー10において、命令実行の順番を実行するために並びに命令間の依存状態を追跡するのにある機構が必要である。
ほとんどのスーパースケーラープロセッサー10は、パイプライン制御ロジック14の一部として順番マネージャー15を含む。順番マネージャー15はパイプラインを介した命令実行の順番を追跡する。すなわちどの命令が所定の命令よりもより古いかまたはより新しいかを追跡する。順番マネージャー15はさらに命令の依存状態を追跡し、例外処理において役に立つ。
パイプステージがインストラクションステップの実行を完了できないときは、例外または割り込みが起きる。例えば、TLB28ルックアップが、メモリページがリードオンリであることを示すなら、データをメモリに書く記憶命令は例外を生じるかもしれない。他のタイプの例外は技術的によく知られている。例外に遭遇すると、プロセッサー10は、パイプライン12(またはスーパースケーラーアーキテクチャ内のパイプライン12aおよび12b)内のすべての以前のまたはより古い命令を実行しなければならない。また、プロセッサー10は、例外を生じる命令とパイプライン12aおよび12bからのすべてのより新しい命令を消去する。次にプロセッサー10は割り込み処理コードをフェッチし実行する。順番マネージャー15はどの命令が「確認され]、どの命令が「コミットされたか]を追跡することによりこのプロセスを支援する。
パイプラインハザードがその実行を妨害しないであろう、すなわち、命令が行き詰らないであろうと決定されたとき、命令が確認される。例えば、両方のオペランドが以前の命令から発生されたことをまたはメモリからフェッチされたことをまた、さもなければ利用可能であることを知られているとき、算術または論理演算を実行する命令が確認されてもよい。
その命令およびすべてのより古い命令が確認されると、命令はコミットされる(間違いなく実行される)。パイプラインハザードはコミットされた命令(命令自体が確認される)またはコミットされた命令に先行する任意の命令(全てのより古い命令が確認される)を妨害しないので、コミットされた命令は実行を完了することができることが知られている。図2を参照すると、命令Aは命令Xの結果の依存状態により確認されない。命令Bはパイプライン12aにおけるそのような早期のステージにおいて確認される可能性が無い。パイプライン12b内の命令Cは確認されてもよい。これは、ハザードが実行を完了することから命令Cを排除しないことを意味する。しかしながら、命令Cは、命令Cより古いすべての命令すなわち、命令AおよびBが確認されるまでコミットすることはできない。
例外処理期間中における従来のルールは、例外を生じる命令が「最後のコミットされない命令」であるとき、パイプライン12aおよび12bは消去されるというものである。例えば、命令Dが例外を発生するとしたら、命令Xに依存する命令Aの依存状態は、Aが確認することを可能にするために、解消されなければならない。Aが確認すると、(命令Xが完了すると仮定して)Aの前にコミットされていない命令がないなら、Aもまたコミットされるであろう。命令Bがパイプライン12Aを介して進むので、命令Bもまた確認しコミットするなら、命令A、BおよびCは確認されるので命令Cがコミットされるであろう。従って、Dは最後のコミットされない命令であり、パイプライン12aおよび12bからのすべてのより新しい命令(例えば、E)と共に消去されるであろう。コミットされた命令A、BおよびCがパイプラインを介して進み実行を完了するので、次に例外処理命令がフェッチされ、パイプライン12aおよび12bに供給される。例外を生じる命令がパイプライン12aおよび12b内の最後のコミットされない命令であるように強制することによりプログラム実行における突然の中断は保証される。すなわち、割り込み処理命令がエラーを解消し、プロセッサー10の状態を回復すると、命令Dで始まるプログラム実行を再開してもよく、正しい結果を発生するであろう。
類似の手続は、スーパースケーラープロセッサー10内の予測ミスされた分岐を処理するために適用可能であるように見えるであろう。例えば、図2の命令Cはその分岐条件を評価したそして予測ミスされたことが発見された条件分岐命令であると仮定する。命令DおよびEは誤りのある分岐予測に基いてフェッチされた、そしてパイプライン12bから消去されなければならず、正しい分岐目標アドレスからフェッチされた命令と交換される。例外処理ルールの下で、予測ミスされた分岐Cは、Cが最後のコミットされた命令となるまで、すなわち、Xに依存するAの依存状態が解消され、DおよびEを消去する前にAおよびBが確認されコミットされるまで待つであろう。しかしながら、XへのAの依存状態は解消するのに多少の時間を必要とし、予測ミスされた分岐に続く適切な次の命令がフェッチされ実行されるまで時間を遅らせるかもしれない。さらに、パイプライン12aを介してAが再び進むときまでに、AとBがDおよびEと共に消去され再フェッチされたなら、依存状態は解決され、Aが迅速に確認することを可能にする。
この発明の一実施形態によって、また図3を参照した記載によって、予測ミスされた分岐が検出されると、(ブロック40)、予測ミスされた分岐が最も古いコミットされていない命令ではないなら(ブロック42)、より古いコミットされていない命令が行き詰まりのためにチェックされる(ブロック44)。パイプラインハザード、メモリアクセス、または長い待ち時間動作によるような行き詰った命令が検出されるなら、パイプラインコントローラー14は、パイプライン12a、12bからすべてのコミットされていない命令を迅速に消去する(ブロック46)。これは、予測ミスした分岐、予測ミスした分岐よりも古いすべてのコミットされていない命令、および分岐よりもより新しい全ての命令(すなわち、分岐予測ミスに基いて推論的にフェッチされた命令)を含む。分岐予測は無効にされ(ブロック48)、消去された、コミットされていない命令が順番に再フェッチされ実行される(ブロック50)。行き詰まりを生じる長い待ち時間動作は、以前に行き詰った命令が再フェッチされ再実行されるときまでに解決されるかもしれない。しかしながら、たとえそうでなくとも、プロセッサーは、正しい分岐目標から命令をフェッチしており、そうする前に行き詰まりが解決されるのを待つ必要がない。従ってプロセッサー性能を改良する。
予測ミスされた命令が最も古いコミットされていない命令なら(ブロック42)、プロセッサーは、予測ミスされた分岐命令を(消去するように)コミットし、パイプライン12a、12bからすべてのコミットされていない命令を消去する(ブロック52)。これは、予測ミスされた分岐命令より新しいすべての命令、すなわち、誤って予測された分岐経路上の命令を消去する。次に、分岐予測機構が正確に分岐評価を反映し、命令のフェッチと実行が適切な分岐目標アドレスにおいて継続する(ブロック50)ように分岐予測が訂正される(ブロック48)。
図3が示すように、予測ミスされた分岐(ブロック40)が最も古いコミットされていない命令(ブロック42)でないならかつより古いコミットされていない命令が長い待ち時間動作により行き詰っていないなら、プロセッサーは、予測ミスされた分岐をコミットし、すべてのより新しい命令を消去する(ブロック52)前に、すべてのより古い命令がコミットするのを単に待てばよい(ブロック42)。このプロセスは(分岐を消去することよりもむしろ分岐をコミットすることを除いて)上述したように、例外を処理するためにすでに存在する制御ロジックをうまく利用してもよい。
あるいは、プロセッサーは、予測ミスされた分岐を含むすべてのコミットされていない命令を単に消去し(ブロック46)、コミットされていない命令が行き詰った場合のように進んでもよい(ブロック48、50)。後者のオプション(図3には示されていないが、YES経路が唯一の制御フロー出口ブロック44であろう)は制御の複雑さを犠牲にして性能を最適化してもよい。行き詰った命令の場合に(ブロック44)、新しい命令をコミットすることが中止され、新しい命令をコミットするタスクを同期化することと、コミットされていない命令を消去することが簡単化される。当業者は、どちらのオプションも可能であり正しい結果を生じるであろうことを容易に認識するであろう。
従来のプロセッサーデザインプラクティスは、例外を生じる命令または予測ミスされた分岐またはパイプライン消去を引き起こす他の命令より古いすべての命令を実行することである。この発明の例示実施形態によって、予測ミスされた分岐命令より古い1つ以上の命令がパイプラインから消去され、再フェッチされ、実行される。これは、正しくない(予測ミスされた)アドレスからの命令をフェッチすることを即座に終了し、予測ミスを訂正するためにパイプラインハザードの待ち時間を推定的に利用することによりプロセッサー性能と電力消費を改善してもよい。パイプラインハザードを解決するための時間が、行き詰った命令を消去し再フェッチするのに必要な時間以上の場合、予測ミスからの回復は、パフォーマンスに不利な条件を招かない。
この発明は特定の特徴、観点および実施形態に対して記載されたけれども、多数の変形物、変更および他の実施形態がこの発明の広い範囲内で可能であり、従って、すべての変形物、変更および実施形態は、この発明の範囲内に入ると見なされるべきである。それゆえ、この実施形態は、あらゆる面で例証として解釈され、制限するものではないと解釈されるべきであり、添付されたクレームの意味と等価な範囲内に入るすべての変更はクレーム内に包含されることを意図している。
図1はプロセッサーの機能ブロック図である。 図2は命令キャッシュおよび2つのパイプラインの部分の機能ブロック図である。 図3は分岐予測ミスを処理する方法のフロー図である。

Claims (17)

  1. パイプラインプロセッサーにおいて分岐予測ミスを処理する方法において、
    分岐命令が予測ミスされたことを検出することと、
    前記予測ミスを検出することに応答して、前記パイプラインからの分岐命令より古い少なくとも1つの命令を消去することと、
    を備えた方法。
  2. 前記分岐命令より古い少なくとも1つの命令はコミットされていない、請求項1の方法。
  3. 前記少なくとも1つのコミットされていない命令はパイプラインにおいて行き詰る、請求項2の方法。
  4. 前記分岐予測を訂正することと、
    前記分岐命令を前記パイプラインから消去することと、
    をさらに備えた、請求項1の方法。
  5. プログラムの順番に前記分岐命令および前記分岐命令より古いすべての消去された命令をフェッチすることをさらに備えた、請求項4の方法。
  6. 前記分岐命令より古い少なくとも1つの命令を前記パイプラインから消去することは、すべてのコミットされていない命令を前記パイプラインから消去することを備えた、請求項1の方法。
  7. 少なくとも1つの命令実行パイプラインと、
    条件付分岐命令のパイプライン内の評価を予測する分岐予測器と、
    前記パイプライン内の命令の順番を追跡する命令順番マネージャーと、
    分岐命令が予測ミスしたことを検出することに応答して、前記分岐命令より古い少なくとも1つの命令を前記パイプラインから消去するパイプラインコントローラーと、
    を備えたプロセッサー。
  8. 前記分岐予測器は、前記分岐命令が予測ミスされたことを検出することに応答して分岐予測を無効にする、請求項7のプロセッサー。
  9. 分岐命令より古い少なくとも1つの命令を前記パイプラインから消去することは、すべてのコミットされていない命令をパイプラインから消去することを備えた、請求項7のプロセッサー。
  10. 前記分岐命令が予測ミスされたことを検出することに応答して、前記分岐命令を前記パイプラインから消去することをさらに備えた、請求項7のプロセッサー。
  11. プログラムの順番に前記分岐命令および前記分岐命令より古いすべての消去された命令をフェッチすることをさらに備えた、請求項7のプロセッサー。
  12. パイプラインプロセッサーにおいて、分岐予測ミスを訂正する方法において、
    分岐命令が予測ミスされたことを検出することと、
    長い待ち時間動作への前記分岐命令より古い第1の命令の依存状態を検出することと、
    すべてのコミットされていない命令を前記パイプラインから消去することと、
    を備えた方法。
  13. 前記分岐予測ミスを訂正することをさらに備えた、請求項12の方法。
  14. プログラムの順番で、前記分岐命令と前記分岐命令より古いすべての消去された命令をフェッチすることをさらに備えた、請求項13の方法。
  15. パイプラインプロセッサーにおいて分岐予測ミスを訂正する方法において、
    分岐命令が予測ミスされたことを検出することと、
    前記分岐命令が前記パイプライン内の最後のコミットされていない命令かどうか決定することと、
    前記分岐命令が前記パイプライン内の最後のコミットされていない命令なら、前記分岐命令をコミットし、すべてのコミットされていない命令を前記パイプラインから消去することと、
    前記分岐命令が前記パイプライン内の最後のコミットされていない命令でないなら、前記分岐命令より古い命令が長い待ち時間動作により前記パイプラインにおいて行き詰っているかどうか決定することと、
    前記分岐命令より古い命令が長い待ち時間動作によりパイプラインにおいて行き詰っているなら、前記分岐命令および全ての他のコミットされていない命令を前記パイプラインから消去することと、
    を備えた方法。
  16. 前記分岐予測ミスを訂正することをさらに備えた、請求項15の方法。
  17. プログラムの順番に、前記分岐命令と前記分岐命令より古いすべての消去された命令をフェッチすることをさらに備えた、請求項15の方法。
JP2007556350A 2005-02-18 2006-02-17 分岐予測ミスを訂正するシステムおよび方法 Expired - Fee Related JP4763727B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/061,981 US7152155B2 (en) 2005-02-18 2005-02-18 System and method of correcting a branch misprediction
US11/061,981 2005-02-18
PCT/US2006/005776 WO2006089189A2 (en) 2005-02-18 2006-02-17 System and method of correcting a branch misprediction

Publications (3)

Publication Number Publication Date
JP2008530713A true JP2008530713A (ja) 2008-08-07
JP2008530713A5 JP2008530713A5 (ja) 2011-02-17
JP4763727B2 JP4763727B2 (ja) 2011-08-31

Family

ID=36685580

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007556350A Expired - Fee Related JP4763727B2 (ja) 2005-02-18 2006-02-17 分岐予測ミスを訂正するシステムおよび方法

Country Status (8)

Country Link
US (1) US7152155B2 (ja)
EP (1) EP1849063B1 (ja)
JP (1) JP4763727B2 (ja)
KR (1) KR100938367B1 (ja)
CN (1) CN100538629C (ja)
IL (1) IL185301A0 (ja)
MX (1) MX2007010048A (ja)
WO (1) WO2006089189A2 (ja)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7254700B2 (en) * 2005-02-11 2007-08-07 International Business Machines Corporation Fencing off instruction buffer until re-circulation of rejected preceding and branch instructions to avoid mispredict flush
US7949861B2 (en) 2005-06-10 2011-05-24 Qualcomm Incorporated Method and apparatus for managing instruction flushing in a microprocessor's instruction pipeline
CN101449256B (zh) 2006-04-12 2013-12-25 索夫特机械公司 对载明并行和依赖运算的指令矩阵进行处理的装置和方法
EP2527972A3 (en) 2006-11-14 2014-08-06 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
US7624254B2 (en) * 2007-01-24 2009-11-24 Qualcomm Incorporated Segmented pipeline flushing for mispredicted branches
US8601234B2 (en) * 2007-11-07 2013-12-03 Qualcomm Incorporated Configurable translation lookaside buffer
US8261025B2 (en) 2007-11-12 2012-09-04 International Business Machines Corporation Software pipelining on a network on chip
US8874885B2 (en) * 2008-02-12 2014-10-28 International Business Machines Corporation Mitigating lookahead branch prediction latency by purposely stalling a branch instruction until a delayed branch prediction is received or a timeout occurs
US8443227B2 (en) * 2008-02-15 2013-05-14 International Business Machines Corporation Processor and method for workaround trigger activated exceptions
US7890739B2 (en) * 2008-02-19 2011-02-15 Oracle America, Inc. Method and apparatus for recovering from branch misprediction
US20090260013A1 (en) * 2008-04-14 2009-10-15 International Business Machines Corporation Computer Processors With Plural, Pipelined Hardware Threads Of Execution
US8423715B2 (en) 2008-05-01 2013-04-16 International Business Machines Corporation Memory management among levels of cache in a memory hierarchy
US8271765B2 (en) * 2009-04-08 2012-09-18 International Business Machines Corporation Managing instructions for more efficient load/store unit usage
EP2616928B1 (en) 2010-09-17 2016-11-02 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
WO2012051281A2 (en) 2010-10-12 2012-04-19 Soft Machines, Inc. An instruction sequence buffer to store branches having reliably predictable instruction sequences
TWI541721B (zh) 2010-10-12 2016-07-11 軟體機器公司 使用指令序列緩衝器來增強分支預測效能的方法、系統及微處理器
EP2689327B1 (en) 2011-03-25 2021-07-28 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
KR101966712B1 (ko) 2011-03-25 2019-04-09 인텔 코포레이션 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
TWI518504B (zh) 2011-03-25 2016-01-21 軟體機器公司 使用可分割引擎實體化的虛擬核心以支援程式碼區塊執行的暫存器檔案節段
US8886920B2 (en) 2011-05-13 2014-11-11 Oracle International Corporation Associating tag to branch instruction to access array storing predicted target addresses for page crossing targets for comparison with resolved address at execution stage
US8862861B2 (en) 2011-05-13 2014-10-14 Oracle International Corporation Suppressing branch prediction information update by branch instructions in incorrect speculative execution path
WO2012162188A2 (en) 2011-05-20 2012-11-29 Soft Machines, Inc. Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
KR101639854B1 (ko) 2011-05-20 2016-07-14 소프트 머신즈, 인크. 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 상호접속 구조
CN108427574B (zh) 2011-11-22 2022-06-07 英特尔公司 微处理器加速的代码优化器
US10191746B2 (en) 2011-11-22 2019-01-29 Intel Corporation Accelerated code optimizer for a multiengine microprocessor
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
US9710399B2 (en) 2012-07-30 2017-07-18 Intel Corporation Systems and methods for flushing a cache with modified data
US9740612B2 (en) 2012-07-30 2017-08-22 Intel Corporation Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
US9916253B2 (en) 2012-07-30 2018-03-13 Intel Corporation Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
US9229873B2 (en) 2012-07-30 2016-01-05 Soft Machines, Inc. Systems and methods for supporting a plurality of load and store accesses of a cache
US9678882B2 (en) 2012-10-11 2017-06-13 Intel Corporation Systems and methods for non-blocking implementation of cache flush instructions
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
KR102083390B1 (ko) 2013-03-15 2020-03-02 인텔 코포레이션 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
EP2972845B1 (en) 2013-03-15 2021-07-07 Intel Corporation A method for executing multithreaded instructions grouped onto blocks
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9792252B2 (en) 2013-05-31 2017-10-17 Microsoft Technology Licensing, Llc Incorporating a spatial array into one or more programmable processor cores
US9672298B2 (en) * 2014-05-01 2017-06-06 Oracle International Corporation Precise excecution of versioned store instructions
US10175988B2 (en) 2015-06-26 2019-01-08 Microsoft Technology Licensing, Llc Explicit instruction scheduler state information for a processor
US9952867B2 (en) 2015-06-26 2018-04-24 Microsoft Technology Licensing, Llc Mapping instruction blocks based on block size
US10191747B2 (en) 2015-06-26 2019-01-29 Microsoft Technology Licensing, Llc Locking operand values for groups of instructions executed atomically
US9946548B2 (en) 2015-06-26 2018-04-17 Microsoft Technology Licensing, Llc Age-based management of instruction blocks in a processor instruction window
US10409606B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US9720693B2 (en) 2015-06-26 2017-08-01 Microsoft Technology Licensing, Llc Bulk allocation of instruction blocks to a processor instruction window
US10409599B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Decoding information about a group of instructions including a size of the group of instructions
US10169044B2 (en) 2015-06-26 2019-01-01 Microsoft Technology Licensing, Llc Processing an encoding format field to interpret header information regarding a group of instructions
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
CN112559048B (zh) * 2019-09-25 2023-12-12 阿里巴巴集团控股有限公司 一种指令处理装置、处理器及其处理方法
US11360773B2 (en) 2020-06-22 2022-06-14 Microsoft Technology Licensing, Llc Reusing fetched, flushed instructions after an instruction pipeline flush in response to a hazard in a processor to reduce instruction re-fetching
US11074077B1 (en) 2020-06-25 2021-07-27 Microsoft Technology Licensing, Llc Reusing executed, flushed instructions after an instruction pipeline flush in response to a hazard in a processor to reduce instruction re-execution

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07152566A (ja) * 1993-10-18 1995-06-16 Cyrix Corp スーパーパイプライン式スーパースカラーマイクロプロセッサ用の書き込みバッファ
US6205542B1 (en) * 1997-12-24 2001-03-20 Intel Corporation Processor pipeline including replay
US20040187119A1 (en) * 1998-09-30 2004-09-23 Intel Corporation Non-stalling circular counterflow pipeline processor with reorder buffer

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5487156A (en) * 1989-12-15 1996-01-23 Popescu; Valeri Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
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
US5584009A (en) 1993-10-18 1996-12-10 Cyrix Corporation System and method of retiring store data from a write buffer
SG52391A1 (en) * 1994-01-03 1998-09-28 Intel Corp Method and apparatus for implementing a four stage branch resolution system in a computer processor
US5978909A (en) * 1997-11-26 1999-11-02 Intel Corporation System for speculative branch target prediction having a dynamic prediction history buffer and a static prediction history buffer
US6799263B1 (en) * 1999-10-28 2004-09-28 Hewlett-Packard Development Company, L.P. Prefetch instruction for an unpredicted path including a flush field for indicating whether earlier prefetches are to be discarded and whether in-progress prefetches are to be aborted

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07152566A (ja) * 1993-10-18 1995-06-16 Cyrix Corp スーパーパイプライン式スーパースカラーマイクロプロセッサ用の書き込みバッファ
US6205542B1 (en) * 1997-12-24 2001-03-20 Intel Corporation Processor pipeline including replay
US20040187119A1 (en) * 1998-09-30 2004-09-23 Intel Corporation Non-stalling circular counterflow pipeline processor with reorder buffer

Also Published As

Publication number Publication date
KR100938367B1 (ko) 2010-01-22
US20060190707A1 (en) 2006-08-24
WO2006089189A3 (en) 2006-10-12
EP1849063A2 (en) 2007-10-31
EP1849063B1 (en) 2018-08-01
MX2007010048A (es) 2007-11-06
WO2006089189A2 (en) 2006-08-24
CN101156136A (zh) 2008-04-02
KR20070105366A (ko) 2007-10-30
IL185301A0 (en) 2008-02-09
US7152155B2 (en) 2006-12-19
CN100538629C (zh) 2009-09-09
JP4763727B2 (ja) 2011-08-31

Similar Documents

Publication Publication Date Title
JP4763727B2 (ja) 分岐予測ミスを訂正するシステムおよび方法
JP2008530713A5 (ja)
JP6370829B2 (ja) 誤予測された分岐のためにフラッシュするセグメント化パイプライン
JP5313279B2 (ja) 非アラインドメモリアクセス予測
TWI470546B (zh) 微處理器、管線式微處理器、快速執行條件分支指令之方法、以及解析第一或第二類別條件分支指令之方法
KR101099203B1 (ko) 명시적 서브루틴 호출의 브랜치 예측 동작을 에뮬레이트하기 위한 방법 및 장치
US7444501B2 (en) Methods and apparatus for recognizing a subroutine call
US20110320787A1 (en) Indirect Branch Hint
US9021240B2 (en) System and method for Controlling restarting of instruction fetching using speculative address computations
JP2008530714A5 (ja)
JP2009540412A (ja) ローカル及びグローバル分岐予測情報の格納
JPH0334024A (ja) 分岐予測の方法とそのための装置
KR20090009955A (ko) 블록-기반 브랜치 타겟 어드레스 캐시
Morancho et al. Recovery mechanism for latency misprediction
CN110402434B (zh) 缓存未命中线程平衡
US6871275B1 (en) Microprocessor having a branch predictor using speculative branch registers
US6948055B1 (en) Accuracy of multiple branch prediction schemes
Shah et al. SPSIM: SuperScalar Processor SIMulater CS305 Project Report
Prémillieu Microarchitecture exploration of control flow reconvergence

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100824

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101124

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101201

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20101222

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110609

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

Free format text: PAYMENT UNTIL: 20140617

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4763727

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees