JP5270257B2 - 予測されなかったブランチに対する命令バッファの深さを動的に管理するための方法および装置 - Google Patents

予測されなかったブランチに対する命令バッファの深さを動的に管理するための方法および装置 Download PDF

Info

Publication number
JP5270257B2
JP5270257B2 JP2008211300A JP2008211300A JP5270257B2 JP 5270257 B2 JP5270257 B2 JP 5270257B2 JP 2008211300 A JP2008211300 A JP 2008211300A JP 2008211300 A JP2008211300 A JP 2008211300A JP 5270257 B2 JP5270257 B2 JP 5270257B2
Authority
JP
Japan
Prior art keywords
instruction
branch
buffer
path
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008211300A
Other languages
English (en)
Other versions
JP2009054150A (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 JP2009054150A publication Critical patent/JP2009054150A/ja
Application granted granted Critical
Publication of JP5270257B2 publication Critical patent/JP5270257B2/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
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding

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)

Description

本発明は、一般的には、プロセッサおよびコンピューティング・システムに関し、予測されたブランチ(predictedbranch)および予測されなかったブランチ(non-predicted branch)のための命令バッファの深さ(深度)が動的に調節されるブランチ予測機構を有するプロセッサに関するものである。
現在の高機能マイクロプロセッサは、他のプロセッサ・コア機能ユニットによる実行のために命令をフェッチし、デコードし、そしてディスパッチする命令フェッチ・ユニット(IFU)を内蔵している。実行がリダイレクトされるまで、命令ストリームは順次、フェッチされる。そのようなリダイレクトの一般的な例はブランチ命令である。ブランチは、「実施される」、即ち、非順次的フェッチが生じ得るか、或いは、「実施されない」、即ち、命令フェッチがブランチ命令を通り越して継続し得るかである。ブランチ予測プロセッサでは、命令ストリームは、ブランチが「実施される」か、または「実施されない」か、に関する予測に従ってプリフェッチされる。正しいパスがフェッチされることを保証するために、ブランチが実施されるかどうかを決定するための種々の機構が使用されている。ブランチ命令が、「実施される」として予測されるとき、現命令フェッチ・パスは新しいターゲット・アドレスにリダイレクトされ、命令フェッチは新しいターゲット・アドレスから順次、続行する。ブランチ命令が「実施されない」として予測される場合、命令フェッチはリダイレクトされない。
命令がフェッチされるとき、一般に、それらは命令バッファ(IB)に格納される。その後、命令はIBから取り出され、デコードされ、更に、命令ディスパッチ・ユニット(IDU)に送られる。IDUは、プロセッサ内の様々な機能ユニットによる実行のためにその命令をディスパッチする。ブランチ命令が実行されるとき、ブランチ・パスが正しく予測されたかどうかを、ブランチ処理ユニット(BU)が判断し、その予測が正しかった場合、命令シーケンスの中断は生じない。しかし、ブランチが予測誤りされた場合、現在のフェッチ・パスは放棄されなければならず、実行のシーケンスは、予測されなかったブランチ・パスにリダイレクトされなければならない。命令シーケンスをリダイレクトするために必要な時間、予測誤りされたエントリをフラッシュするために必要な時間、並びに、予測誤りされたパスにおける命令を実行するためにフェッチおよび準備に費やされた電力およびスレッド資源を含む幾つかの損失が生じる。
予測誤りに費やされる資源および処理電力の量は、予測的実行を無効化することおよび各ブランチ命令に関するパイプラインの未解決の解析(pendingresolution)操作を停止することによって縮小することができる。しかし、そのような行為は、ブランチ予測により提供される利点、即ち、大抵の場合、パイプラインが適正に埋め尽くされることによって十分なプロセッサ・パフォーマンスのための十分な命令パイプラインを提供するという利点、を否定的なものにする。
従って、命令パイプラインを、十分な処理パフォーマンスにとって十分なものに保ちながら、ブランチの予測誤りにおいて費やされる資源およびエネルギの量を減らす方法およびマイクロプロセッサを提供することが望ましい。
本発明の目的は、ブランチの予測誤りの際に費やされる資源およびエネルギを少なくするプロセッサを提供することであり、その際、ブランチが命令プリフェッチを予測するという利点は保持されるプロセッサおよびそのプロセッサのオペレーション方法を提供することである。
プロセッサは、所与の命令スレッドに関してブランチ予測の質を測定し、予測されたブランチ命令ストリームおよび予測されなかったブランチ命令ストリームの両方を格納する命令バッファ部分のサイズを動的に調節する制御ユニットを含む。命令バッファ部分のサイズは測定されたブランチ予測確度に従って調節されるので、所与の命令スレッドに対するブランチ予測確度が高いとき、予測されなかった命令ストリームのためのバッファ部分は減じられ、高い確度の状態の下ではゼロにセットされることもある。低いブランチ予測確度の期間に遭遇するスレッドに関しては、予測されなかったブランチ・パスに対してより多くのバッファ・スペースが割振られるように、マルチスレッド環境ではバッファ部分の相対的なサイズが個々のスレッドに対して動的に変り得る。
本発明の前述のおよび他の目的、特徴および利点は、下記の説明、特に、添付図面に示されるような本発明の好適な実施例に関する説明から明らかであろう。
本発明は、ブランチ命令パスに関する予測された命令ストリームおよび予測されなかった命令ストリームの両方に対してバッファリングを行う方法およびプロセッサ回路に関するものである。本発明では、予測された命令パスおよび予測されなかった命令パスに対するバッファ・サイズは、ブランチ予測における確度の測定に従って動的に変化する。確度の測定は多くの方法で行われ得るが、一般には、ブランチ予測回路によって行われる「適正な予測」対「適正でない予測」の測定を提供し得る。
次に、図面、特に、図1を参照すると、本発明の実施例によるシステムのブロック図が示される。システムは、複数のマルチスレッド・プロセッサ10A〜10Dを含むプロセッサ・グループ5を含み、マルチスレッド・プロセッサ10A〜10Dは、大規模処理システムを形成するようにブリッジ7を介して他のプロセッサ・グループに接続されてもよい。本発明は、同時マルチスレッド化をサポートする単一のプロセッサ、シングル・スレッド・プロセッサ、または、図1に示されるような大規模システム内の複数のプロセッサにおいて実施することが可能である。本発明は、ブランチ命令に後続する予測されなかった命令ストリームにスペースを動的に割振ることによってパフォーマンスの改良を行う。予測されなかった命令ストリームに割振られるスペースの量は、ブランチ予測確度を表すブランチ予測の測定(メトリック)に従って変化する。
プロセッサ・グル−プ5は、サ−ビス・プロセッサ2のほかにL3キャッシュ・ユニット6、システム・ローカル・メモリ8、および種々の周辺装置4にも接続される。サ−ビス・プロセッサ2は、障害監視、スタ−トアップ援助、およびテスト機能をプロセッサ・グループ5に提供し得るし、プロセッサ10A〜10Dの各々に相互接続するほかに他のプロセッサ・グル−プへの専用の相互接続パスを持ち得る。プロセッサ10A〜10Dは、汎用の処理機能のために命令の実行およびデータ値に関する操作を行う。ブリッジ7およびシステム内の他のブリッジは、ワイド・バスを介して他のプロセッサ・グル−プとのコミュニケーションを行い、バス35は、プロセッサ10A〜10D、ブリッジ7、周辺装置4、L3キャッシュ6、およびシステム・ローカル・メモリ8の接続を提供する。すべてのプロセッサ・グル−プによるアクセスのために、ブリッジ7に他のグロ−バル・システム・メモリが外部結合されてもよい。
プロセッサ10A〜10Dは、複数のスレッドの同時的および推測的な実行が可能な同時マルチスレッド(SMT)プロセッサである。プロセッサ10A〜10Dの各々は、同時実行の複数ストリ−ム、即ち、複数命令スレッドをサポ−トするための実行資源を含み、更に、各命令スレッドに関するブランチ予測の質を決定し、その命令スレッドに対するブランチ予測が効果的に進んでいないということを決定するとき、予測されなかった命令ストリ−ムのために設けられた命令バッファのサイズを変更する、制御回路(ハ−ドウェア)を含む。
次に図2を参照すると、プロセッサ10A〜10Dと同じ特徴を有するプロセッサ10の詳細が示される。バス・インタフェース・ユニット23がプロセッサ10を他のSMTプロセッサおよび周辺装置に接続し、L2キャッシュ42、デ−タ値を格納するためのL1Dキャッシュ22、プログラム命令を格納するためのL1Iキャッシュ20、およびキャッシュ・インターフェース・ユニット21を外部のメモリ、プロセッサおよび他の装置に接続する。L1Iキャッシュ20は、命令フェッチ・ユニット(IFU)16に関連して命令ストリ−ムのローディングを行う。命令フェッチ・ユニット16は命令をフェッチし、命令バッファ(IB)28内に命令ストリ−ムのためのストレージ(記憶域)を含んでいる。ディスパッチ・ユニット12は、一般的な演算を実行するための固定小数点ユニット(FXU)14および浮動小数点演算を実行するための浮動小数点ユニット(FPU)15のような種々の内部ユニットに発行された命令のシーケンスを制御する。
固定小数点ユニット14および浮動小数点ユニット15は、汎用レジスタ(GPR)18A、浮動小数点レジスタ(FPR)18B、条件レジスタ(CR)18C、リネーム・バッファ18Dのような種々の資源に接続される。GPR18AおよびFPR18Bは、ロ−ド/ストア・ユニット(LSU)19によってL1Dキャッシュ22からロ−ドおよびストアされるデ−タ値のためのデ−タ値ストレージを提供する。リネーム・バッファ18D(種々の内部実行ユニットに関連したいくつかのリネーム・ユニットを含み得る)は、実行ユニットのためのオペランドおよび結果ストレージを提供する。IFU 16は、スレッド優先順位およびスレッドごとの制御情報のようなスレッド実行を管理するための設定を含む指示をプログラム制御ユニット/スレッド・テ−ブル・ユニット(TTBL/PCU)24から受け取る。その結果、IFU 16はプロセッサ10において実行される複数の命令スレッド間での実行資源の割振りを表わす命令シ−ケンスをロ−ドするように指示され得る。TTBL/PCU24は、スレッド間で命令を順序付けるためにどの特定の方法が使用されるかに従って、どの命令スレッドが最多の処理サイクル、命令フェッチ・サイクル、および/または、実行時間スライスを受け取るかを決定する責任を負う。
プロセッサ10のような現用のスーパースカラ・プロセッサの命令実行パイプラインは非常に深く(例えば、パイプラインをクリアするための命令に対しては、25またはそれ以上のクロック・サイクルが必要であることがあり)、便宜上、ブランチ命令が依存する条件レジスタの値が解析済み条件にあることを保証されているとき、そのブランチ状態の解析はパイプラインでは一般に非常に遅れて処理されていた。更に、一般に、ブランチ予測ユニットとブランチ条件を解析するユニットとの間には有限且つ多大の物理的および電気的距離が存在する。従って、条件付きブランチがデコードされるときにブランチ条件が実際にわかっていても、ブランチ処理ユニット26は、一般に、これまでどおりブランチ履歴テ−ブル25を使用してブランチの結果を予測し、そのブランチの予測されたパスに後続の命令を推測的にディスパッチする。ブランチ予測が適正でない場合、予測された命令ストリ−ムに割振られたパイプライン資源はフラッシュされなければならず、パイプラインにロ−ドされ、その間違って予測されたブランチ・パスに関連する電力および資源はすべて無駄にされる。本発明では、無駄にされる資源および電力は、予測が低い確度のブランチ(例えば、「ブランチが実施される」確率、および「ブランチが実施されない」確率の両方とも50%に近いブランチ)に対しては減少する。通常は予測された命令フェッチ・パスのリダイレクトのためにフラッシュされる1つの予測され実施されたブランチの前にフェッチされた命令がその代りに保持されているので、電力消費量の減少および資源保護が生じる。その保持された予測されなかった命令パスは、その予測され実施されたブランチに対して予測誤りが生じるとき、命令フェッチ機構の動作が妨げられないようにする。
上記の目的のために、IFU16はブランチ処理ユニット26内の制御ロジック(CTL)29から入力を受け取る。ブランチ処理ユニット26内のブランチ実行ユニット(BXU)27が、ブランチ命令に関連した命令グル−プの実行を管理する。ブランチ履歴テ−ブル(BHT)25が、遭遇した各ブランチ命令に関する情報を(ブランチ・アドレスからのビットのサブセットによって内容アドレスされるそのテ−ブルの記憶域の限度内に)格納し、更に、どのパスがブランチ命令にとって成功可能性の高いパスとして予測されるかを決定するためにBXU27によって使用される情報を格納する。BHT25における各エントリは、各ブランチに対して、各ブランチに対する相対的な確度および可能性の高い実行の方向を表すビットを含んでいる。BHT25は、ブランチ命令の実行の時に実際に実施されるブランチ・パスの方向および強さに関して更新される。本発明は、そのブランチ命令および命令スレッドに対するブランチ予測の質に従ってIB28における命令バッファ部分の相対的なサイズを制御するよう制御ロジック29に通知するためにBHT25の情報を使用する。
次に図3を参照すると、本発明の実施例の方法をサポートするプロセッサ内のプロセッサ命令パイプラインのフローが示され、それはその方法をに対応し、かつ実施例の装置の概略図も提供する。各命令スレッドに対する命令が命令キャッシュ(Iキャッシュ)34からフェッチされる。その命令キャッシュには、すべての実行するスレッドのための命令がロ−ドされ、それらは、例えば、図2におけるキャッシュ・インターフェース・ユニット21によってL1Iキャッシュ20にロードされた命令である。Iキャッシュ34か命令を選択するために使用されるアドレスが、命令フェッチ・アドレス・レジスタ(IFAR)によって提供される。パイプライン・サイクルのサイクル−1において、マルチプレクサMUX32がスレッド実行シーケンスに従って多くの実行スレッドの各々に対するアドレスのうちのいずれかを選択し、各スレッドに対する個々のアドレスがマルチプレクサMUX30A〜MUX30Nから提供される。それらのマルチプレクサは、インクリメンタ(INC)によって生成された次の(順次)アドレスsequential_addr、ブランチによりリダイレクトされたアドレスbranch_redirect_addr、または、代替IFARテーブル32から提供された代替パス・アドレスと規定されたアドレスalternate_path_addrのうちから選択する。代替パス・アドレスalternate_path_addrは、予測されなかったブランチ・パスを格納するためにその命令スレッドに割振られたIB38の部分に対応する予測されなかったブランチ・パス命令ストリ−ムの最後の命令に後続する次の命令のアドレスである。IB38の主要な部分は、順次パスまたは予測されたブランチ・パスに沿ってフェッチされた命令を格納するために使用され、代替パス命令の選択は、そのブランチ命令が実行された後に決定される。
パイプライン・サイクルのサイクル0において、命令フェッチ・アドレス・レジスタIFARからのアドレスがIキャッシュ34をアクセスするために、およびブランチ履歴テーブル36のようなブランチ予測構造体をアクセスするために使用される。Iキャッシュ34から検索されたブランチ予測情報および命令はラッチされ、次のパイプライン・サイクルのサイクル1において使用される。パイプライン・サイクルのサイクル1において、ブランチ走査ロジック39が、その命令がブランチであるかどうかを決定し、それが肯定される場合、そのブランチが実施されるかまたは実施されないかを決定する。次のサイクルであるサイクル2において、命令が命令バッファ(IB)38に格納される。予測されて実施されたブランチに対するブランチ予測が低い確度を有する場合、代替パス命令も命令バッファ38に格納される。それは、代替パス命令がブランチ命令に後続する順次命令であるためである。代替パス・アドレスが計算され、代替フェッチ・アドレス・レジスタ・テ−ブル32に送られる。代替パス・アドレスは、予測され実施されたアドレスであるかまたは次の順次アドレスであろう。それらのアドレスは既に格納されており、従って、それら2つのアドレスのどちらかの選択のみが必要とされる。そのブランチが低い確度の予測され実施されなかったブランチである場合、ブランチ宛先アドレスが代替IFARテ−ブル32にロ−ドされ、従って、アイドル・サイクルが利用可能である場合、代替パスがフェッチされ得る。
その後のサイクルであるサイクル2+において、代替(予測されなかった)パスは、他のブランチ命令が検出されるか、または代替パスに対して割振られたIB38の部分が満杯であるか、または代替パスのフェッチに対する命令ルックアヘッドに関する制限に遭遇するまで、メインの(予測された)ブランチ・パスと共に格納される。代替パス・フェッチ・グループの終了時に、次のアドレスが代替IFARテ−ブル32に書き込まれる。更に、その後の命令フェッチと同時に、命令がデコ−ドされ、発行ユニットにディスパッチされる。一旦ブランチ命令が解析されると、そのブランチが予測誤りされなかった場合、命令スレッドのための命令バッファ38の代替パス部分がフラッシュされる。ブランチ命令が予測誤りされた場合、メイン・パスの命令を含むIB38の部分がフラッシュされ、そしてバッファが空になるまで命令が代替パス・バッファから検索される。同時に、代替IFARテ−ブル32がIB38のメイン部分に代替パス命令をフェッチするために使用される。それは、予測誤りのペナルティを大幅に縮小することによってパフォ−マンスを改善する。一旦代替パス・バッファが空になると、命令が命令バッファ38のメイン・パス部分から検索される。
各ブランチ命令がブランチ実行ロジック37によって解析された後、ブランチ履歴および確度の値が更新され、バッファ部分のサイズがその更新された確度の値に従って調節される。命令バッファ部分のサイズが、特定のブランチ命令(細分度)に対するブランチ予測確度に従って命令スレッドに対する次の各ブランチ命令のために調節され得るか、或いは、命令スレッドに対する全体的なブランチ予測確度に従って調節され得る。本発明は、特に、予測され実施されたが予測誤りされたブランチに対する大規模の改良を提供する。予測され実施されたブランチの場合については、予測されなかったパスがブランチ命令に順次後続し、代替命令フェッチ・バッファは満杯にされ得るが、IFARは新しいブランチ・タ−ゲット・アドレスにリダイレクトされる。アドレス・テ−ブルと、実施されなかったブランチ・パスに対する事前にフェッチされた値とを含むことによって、ブランチ予測誤りによるパイプラインの停止は更に容易に回避され得るか或いは大幅に縮小され得る。予測されなかったパスに割振られたスペ−スの量は、一般に、予測されたパスのバッファ・サイズに関連したブランチ予測確度に依存して0%と50%との間の値にセットされる。それは、50%を越えるいずれの値も、更に使用されそうな命令に対して割振られるスペースを制限するためである。更に、ブランチ予測確度が所定の閾値、例えば、90%を越える命令スレッドに対して、その技術は完全に無効にされ得る。その場合、予測されなかったパス命令をフェッチするために使用される資源は、予測されなかったブランチ・パスをフェッチする際に消費される余分な電力と共に、キャッシュされたアービトレーションおよび他のオーバヘッドのために否定的な結果を生じる。
次に図4を参照すると、本発明の実施例に従って、シングル・スレッド・モードに関する命令バッファの割振りが示される。命令バッファ全体は2つのバッファIB40AおよびIB40Bを含む。それらは両方とも単一実行スレッドのための命令を格納するために使用される。図示のように、IB40Aはすべてメイン・フェッチ・パスのための命令を格納するために使用され、IB40Bは、メイン・フェッチ・パスおよび代替(予測されなかったブランチ)フェッチ・パスのいずれかに割振られる。図示のように、代替フェッチ・パスに対する割振りは、その代替フェッチ・パスに対する0と1の間のブランチ確度に従って0%と50%との間の線形の割振りが使用される場合、70%のブランチ確度レベルに相当し得る約15%である。図5は、次のブランチ命令に関して異なる確度を有する4つの実行スレッドに対する同じプロセッサ内の割振りを示す。その例では、スレッドT3が高いブランチ予測確度を有し、従って、IB40BのスレッドT3の部分はすべてメイン・フェッチ・パスに割振られる。スレッドT2は、低いブランチ予測確度を有し、従って、メイン・フェッチ・パスおよび代替フェッチ・パスは等しいバッファ部分サイズを受ける。スレッドT0およびT1は、スレッドT2より高いブランチ予測確度を有するが、代替パスに対するバッファ割振りを使用不可にする(ディセーブルする)閾値よりも上ではない。
次に図6を参照すると、本発明の実施例に従って、プロセッサ10内で作動するスレッド実行資源を管理するための方法がフローチャートで示される。ブランチの各解析時に(判断ステップ50)、そのブランチが予測誤りされたと決定される場合(判断ステップ51)、即ち、ブランチ履歴テ−ブルを使用する前の予測が実際の結果と一致しない場合、低ブランチ確度カウンタがインクリメントされ(ステップ52)、一方その予測が実際の結果と一致する場合、そのカウンタはデクリメントされる(ステップ53)。カウンタの値が閾値を越える場合(判断ステップ54)、代替パス・フェッチ・バッファのサイズがカウント/確度に従ってセットされ(ステップ55)、一方そのカウンタの値が閾値を越えない場合(判断ステップ54)、代替フェッチ・バッファは割振られない(ステップ56)。当初、メイン・フェッチ・パスはすべての命令バッファ・スペ−スを割振られ、従って、代替バッファ・スペースは事実上0である。一旦閾値を越えると、代替パス・バッファ・スペースが割振られ、代替パス・バッファ・サイズが動的に変化する。命令バッファ部分を頻繁に再サイジングしないようにデッドバンド(dead-band)を設けると、ブランチ予測の質は、命令バッファ部分の相対的なサイズを変更するために別の閾値以上に高くなるかまたはそれ以下に低くならなければならないであろう。この方法フロー(スキ−ム)が終了するまで、またはシステムがシャット・ダウンするまで、プロセスは継続する(判断ステップ57)。
本発明を好適な実施例に関して詳しく示し且つ記述したが、本発明の趣旨および範囲から逸脱することなく形式および細部における上記およびその他の変更が行われ得ることは当業者には明らかであろう。
本発明の実施例によるシステムのブロック図である。 本発明の実施例によるプロセッサ10のブロック図である。 本発明の実施例に従ってプロセッサ内のプロセッサ・パイプライン命令フローを示す概略図である。 図2のプロセッサ10内の例示的な命令バッファ割振りを示す概略図である。 図2のプロセッサ10内の例示的な命令バッファ割振りを示す概略図である。 本発明の実施例による方法を示すフローチャートである。

Claims (18)

  1. プロセッサにおける命令バッファ資源を管理するための方法であって、
    ブランチ命令の可能性の高いパスに対応する第1命令ストリームを命令バッファの第1部分に格納するステップと
    ブランチ命令の可能性の低いパスに対応する第2命令ストリームを前記命令バッファの第2部分に格納するステップと
    命令スレッドに対するブランチ予測確度の値を計算するステップと、
    前記ブランチ予測確度の値に従って、前記命令バッファの前記第1部分および前記第2部分のサイズを設定するステップと、を含む方法。
  2. 前記ブランチ予測確度の値が所定の閾値を越えるかどうかを決定するステップを更に含み、
    前記設定するステップは、前記ブランチ予測確度の値が所定の閾値を越えるという決定に応答して、前記予測されなかったブランチに対して割振られた命令バッファのサイズをゼロに設定する、請求項1に記載の方法。
  3. 前記プロセッサによって実行される命令スレッドに対して前記計算するステップおよび前記設定するステップを反復するステップを更に含み、
    それにより、前記ブランチ予測確度の値が変化するに従って、前記命令バッファの前記第2部分のサイズが動的に調節される、請求項1に記載の方法。
  4. 前記プロセッサは複数の命令スレッドに対する命令を実行し、
    前記設定するステップは、各々が前記複数の命令スレッドの1つに対応する複数のパーティションに前記命令バッファにおける記憶域を、各対応するスレッドに対するブランチ予測確度の値に従って、前記複数のパーティションにおける第1部分および第2部分に割振る、請求項1に記載の方法。
  5. 前記計算するステップは、各ブランチ命令の前記命令スレッドに対するブランチ予測確度の値を計算し、
    前記設定するステップは、次のブランチ命令に対するブランチ予測確度の値に従って前記命令バッファの前記第1部分および前記第2部分のサイズを設定する、請求項1に記載の方法。
  6. 前記計算するステップは、複数のブランチ命令の前記命令スレッドに対するブランチ予測確度の平均値を計算し、
    前記設定するステップは、前記ブランチ予測確度の平均値に従って前記命令バッファの前記第1部分および前記第2部分のサイズを設定する、請求項1に記載の方法。
  7. 予測されなかったパスに対応する代替フェッチ・アドレスを格納するステップと、
    ブランチ命令に関して実施されたパスを解析するステップと、
    前記ブランチ命令が予測誤りされた場合、前記代替フェッチ・アドレスに従って前記第2部分から命令を検索するステップと、を更に含む、請求項1に記載の方法。
  8. 前記検索するステップは、前記予測されなかったブランチに対する格納された多数の命令が空になった後、前記第1部分から命令を検索する、請求項7に記載の方法。
  9. ブランチ命令を実行するためのブランチ実行ユニットを含み、プログラム命令を実行するための機能的実行ブロックと、
    命令バッファと、
    前記プログラム命令を前記命令バッファにロードするための命令フェッチ・ユニットと、
    ブランチ命令に遭遇したことを決定し、前記ブランチ命令の可能性の高いパスを決定し、前記可能性の高いパスに対応する第1命令ストリームを前記命令バッファの第1部分にロードし、可能性の低いパスに対応する第2命令ストリームを前記命令バッファの第2部分にロードするように前記命令フェッチ・ユニットに指示するためのブランチ処理ユニットと、
    前記ブランチ処理ユニットに接続され、前記ブランチ処理ユニットによる決定の確度を測定し、前記測定の結果に従って前記第1部分および前記第2部分のサイズを調節するための制御回路と、を含むプロセッサ。
  10. 前記制御回路は前記第2部分のサイズをゼロに設定し、
    前記ブランチ処理ユニットは、所定の閾値を越える確度を前記処理ユニットが測定したことに応答して、前記第2命令ストリームに関するいずれの命令もロードしない、請求項9に記載のプロセッサ。
  11. 前記制御回路は前記確度を反復的に測定し、前記プロセッサによって実行された命令スレッドに対して前記命令バッファの前記第2部分のサイズを調節し、
    それにより、前記ブランチ処理ユニットによる前記決定の確度が変化するに従って、前記命令バッファの前記第2部分のサイズが動的に調節される、請求項9に記載のプロセッサ。
  12. 前記プログラム命令は複数の命令スレッドに対するプログラム命令であり、
    前記制御回路は、各々が前記複数の命令スレッドの1つに対応する複数のパーティションに前記命令バッファにおける記憶域を、各対応するスレッドに対するブランチ予測確度の値に従って、前記複数のパーティションにおける第1部分および第2部分に割振る、
    請求項9に記載のプロセッサ。
  13. 前記制御回路は、各ブランチ命令の命令スレッドに対するブランチ予測確度の値を計算し、更に、次のブランチ命令に対するブランチ予測確度の値に従って前記命令バッファの前記第1部分および前記第2部分のサイズを設定する、請求項9に記載のプロセッサ。
  14. 前記制御回路は、複数のブランチ命令の命令スレッドに対するブランチ予測確度の平均値を計算し、更に、前記ブランチ予測確度の平均値に従って前記命令バッファの前記第1部分および前記第2部分のサイズを設定する、請求項9に記載のプロセッサ。
  15. 前記可能性の高いパスの命令をフェッチするために命令キャッシュに順次アドレスを供給するための命令フェッチ・アドレス・レジスタと、
    前記予測されなかったパスに対応する命令キャッシュに代替アドレスを格納するための代替命令フェッチ・アドレス・テーブルと、
    前記ブランチ命令が前記可能性の低いパスにブランチするものとして解析されたということを前記制御回路が決定したことに応答して前記代替アドレスを前記命令フェッチ・アドレス・レジスタにロードするための選択回路と、を更に含む、請求項9に記載のプロセッサ。
  16. 前記命令フェッチ・ユニットは、前記予測されなかったブランチに対する格納された命令が空になった後、前記第1部分から命令を検索する、請求項15に記載のプロセッサ。
  17. プロセッサ・パイプラインのための命令フェッチ回路であって、
    次の命令フェッチ・アドレスを命令キャッシュに供給するための命令フェッチ・アドレス・レジスタと、
    予測されなかったブランチ・パスのアドレスを格納するための代替命令フェッチ・アドレス・テーブルと、
    ブランチ評価回路と、
    前記命令フェッチ・アドレス・レジスタの出力および前記代替命令フェッチ・アドレス・テーブルの出力のどちらかを選択するためのセレクタと、
    前記ブランチ命令に関する可能性の高いパスを指示するためのブランチ予測ユニットと
    前記命令フェッチ・アドレス・レジスタによって索引付けされ、予測されたブランチ・パスに対応するバッファ部分および予測されなかったブランチ・パスに対応するバッファ部分の2つのバッファ部分を有する命令バッファと、を含み、
    前記セレクタは、前記ブランチ評価回路によるブランチ命令の解析に応答して作動し、それによって、前記次の命令フェッチ・アドレスが前記予測されなかったブランチが実施されるということを前記ブランチ命令の解析が示す場合、前記次の命令フェッチ・アドレスが前記予測されなかったブランチ・パスにリダイレクトされ、
    前記2つのバッファ部分の相対的サイズが、前記ブランチ予測ユニットによって供給された前記指示における確度の量に従って設定される、命令フェッチ回路。
  18. 前記セレクタは、複数の命令スレッドのセットの各々に対して1つの複数のセレクタを含み、更に、前記命令フェッチ・アドレス・レジスタに次の値を供給するために前記複数のセレクタの出力のどれかを選択するための第2セレクタを更に含む、請求項17に記載の命令フェッチ回路。
JP2008211300A 2007-08-28 2008-08-20 予測されなかったブランチに対する命令バッファの深さを動的に管理するための方法および装置 Expired - Fee Related JP5270257B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/845838 2007-08-28
US11/845,838 US7779232B2 (en) 2007-08-28 2007-08-28 Method and apparatus for dynamically managing instruction buffer depths for non-predicted branches

Publications (2)

Publication Number Publication Date
JP2009054150A JP2009054150A (ja) 2009-03-12
JP5270257B2 true JP5270257B2 (ja) 2013-08-21

Family

ID=40409332

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008211300A Expired - Fee Related JP5270257B2 (ja) 2007-08-28 2008-08-20 予測されなかったブランチに対する命令バッファの深さを動的に管理するための方法および装置

Country Status (2)

Country Link
US (1) US7779232B2 (ja)
JP (1) JP5270257B2 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8370622B1 (en) * 2007-12-31 2013-02-05 Rockstar Consortium Us Lp Method and apparatus for increasing the output of a cryptographic system
US9529594B2 (en) 2010-11-30 2016-12-27 Oracle International Corporation Miss buffer for a multi-threaded processor
US9182991B2 (en) * 2012-02-06 2015-11-10 International Business Machines Corporation Multi-threaded processor instruction balancing through instruction uncertainty
US20130318332A1 (en) * 2012-05-22 2013-11-28 Jeffry E. Gonion Branch misprediction behavior suppression using a branch optional instruction
US9442737B2 (en) 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US8966324B2 (en) 2012-06-15 2015-02-24 International Business Machines Corporation Transactional execution branch indications
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US8880959B2 (en) 2012-06-15 2014-11-04 International Business Machines Corporation Transaction diagnostic block
US9317460B2 (en) 2012-06-15 2016-04-19 International Business Machines Corporation Program event recording within a transactional environment
US8688661B2 (en) 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9367323B2 (en) 2012-06-15 2016-06-14 International Business Machines Corporation Processor assist facility
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US10628163B2 (en) 2014-04-17 2020-04-21 Texas Instruments Incorporated Processor with variable pre-fetch threshold
US9471314B1 (en) 2015-12-15 2016-10-18 International Business Machines Corporation Auxiliary perceptron branch predictor with magnitude usage limit
US11507380B2 (en) * 2018-08-29 2022-11-22 Advanced Micro Devices, Inc. Branch confidence throttle
US10853075B2 (en) * 2018-09-10 2020-12-01 Advanced Micro Devices, Inc. Controlling accesses to a branch prediction unit for sequences of fetch groups
US11099852B2 (en) * 2018-10-25 2021-08-24 Arm Limitied Apparatus and method for maintaining prediction performance metrics for prediction components for each of a plurality of execution regions and implementing a prediction adjustment action based thereon
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
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
US20220075624A1 (en) * 2020-09-04 2022-03-10 Advanced Micro Devices, Inc. Alternate path for branch prediction redirect
US12014182B2 (en) 2021-08-20 2024-06-18 International Business Machines Corporation Variable formatting of branch target buffer
GB2622362A (en) * 2022-09-09 2024-03-20 Advanced Risc Mach Ltd Methods and apparatus controlling prediction units

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5918046A (en) * 1994-01-03 1999-06-29 Intel Corporation Method and apparatus for a branch instruction pointer table
US5870599A (en) * 1994-03-01 1999-02-09 Intel Corporation Computer system employing streaming buffer for instruction preetching
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
EP0848323B1 (en) * 1996-12-10 2004-02-25 Texas Instruments Incorporated Improvements in the branch prediction within a pipelined microprocessor
US6766441B2 (en) * 2001-01-19 2004-07-20 International Business Machines Corporation Prefetching instructions in mis-predicted path for low confidence branches
US7124287B2 (en) * 2003-05-12 2006-10-17 International Business Machines Corporation Dynamically adaptive associativity of a branch target buffer (BTB)
JP2005107666A (ja) * 2003-09-29 2005-04-21 Matsushita Electric Ind Co Ltd データ処理装置
US20050216714A1 (en) * 2004-03-25 2005-09-29 Intel Corporation Method and apparatus for predicting confidence and value

Also Published As

Publication number Publication date
JP2009054150A (ja) 2009-03-12
US7779232B2 (en) 2010-08-17
US20090063819A1 (en) 2009-03-05

Similar Documents

Publication Publication Date Title
JP5270257B2 (ja) 予測されなかったブランチに対する命令バッファの深さを動的に管理するための方法および装置
KR101493019B1 (ko) 희소 및 조밀 예측 캐쉬들을 갖는 하이브리드 브랜치 예측 장치
EP2035920B1 (en) Local and global branch prediction information storage
US7890738B2 (en) Method and logical apparatus for managing processing system resource use for speculative execution
US9286075B2 (en) Optimal deallocation of instructions from a unified pick queue
US7734897B2 (en) Allocation of memory access operations to memory access capable pipelines in a superscalar data processing apparatus and method having a plurality of execution threads
KR100745904B1 (ko) 동시적 멀티스레드 프로세서에서 파이프라인 길이를변경하기 위한 방법 및 회로
US7032097B2 (en) Zero cycle penalty in selecting instructions in prefetch buffer in the event of a miss in the instruction cache
US20080126771A1 (en) Branch Target Extension for an Instruction Cache
US20070288733A1 (en) Early Conditional Branch Resolution
US20040215720A1 (en) Split branch history tables and count cache for simultaneous multithreading
JP2008529191A (ja) 電力的に効率的な命令プリフェッチ機構
US11599361B2 (en) Flushing a fetch queue using predecode circuitry and prediction information
US8301871B2 (en) Predicated issue for conditional branch instructions
JP2009536770A (ja) ブロックに基づく分岐先アドレスキャッシュ
US20070288732A1 (en) Hybrid Branch Prediction Scheme
US20070288731A1 (en) Dual Path Issue for Conditional Branch Instructions
US20070288734A1 (en) Double-Width Instruction Queue for Instruction Execution
JP7046087B2 (ja) キャッシュ・ミス・スレッド・バランシング
EP4020187A1 (en) Segmented branch target buffer based on branch instruction type
EP4020167A1 (en) Accessing a branch target buffer based on branch instruction information

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110802

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130226

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20130226

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20130226

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20130416

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130509

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees