JP2009536770A - ブロックに基づく分岐先アドレスキャッシュ - Google Patents
ブロックに基づく分岐先アドレスキャッシュ Download PDFInfo
- Publication number
- JP2009536770A JP2009536770A JP2009509942A JP2009509942A JP2009536770A JP 2009536770 A JP2009536770 A JP 2009536770A JP 2009509942 A JP2009509942 A JP 2009509942A JP 2009509942 A JP2009509942 A JP 2009509942A JP 2009536770 A JP2009536770 A JP 2009536770A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- btac
- branch
- block
- instructions
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 5
- 238000011156 evaluation Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002411 adverse Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
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
分岐先アドレスキャッシュ(BTAC)は、複数のエントリを格納する。BTACの各エントリは、選択されたと評価されている少なくとも1つの分岐命令を含む2またはそれ以上の命令のブロックに関連付けられている。BTACのエントリは、関連付けられたブロック内のどの命令が、選択された分岐命令であるかのインディケータを含む。BTACのエントリはまた、選択された分岐の分岐先アドレス(BTA)を含む。ブロックのサイズは、必ずしも必要ではないが、命令キャッシュラインあたりの命令の数に対応する。
Description
当開示は一般にプロセッサの分野に関連し、詳細にはブロックに基づく分岐先アドレスキャッシュに関する。
マイクロプロセッサは多種多様なアプリケーションにおいて計算タスクを行う。高度なソフトウェアによって、増加された機能および/または高速な演算を実現することによって製品改善をもたらすために、プロセッサの性能を改善することは設計目標である。例えば可搬性の電子デバイスのような一般的な組込式アプリケーションにおいては、電力を節約することと、チップのサイズを低減することもまた、プロセッサの設計と実装における重要な目標である。
一般的な現代のプロセッサは、パイプライン化されたアーキテクチャを使用している。ここでは、それぞれ複数の実行ステップを有するシーケンシャルな命令が、実行時にオーバーラップする。シーケンシャルな命令ストリームにおける命令の間で、並列処理が活用する能力は、改善されたプロセッサの性能に寄与する。理想的な条件の下は、そして、各パイプステージを1つのサイクルで完了するプロセッサでは、該パイプラインを満たす短い初期処理の後、命令はサイクルごとに実行を完了することができる。
そのような理想的な条件は、仮に現実化されるにしても、命令間のデータ依存(データハザード)、分岐のような制御依存(制御ハザード)、プロセッサリソース分配コンフリクト(構造ハザード)、割込み、キャッシュミス等を含む多様な要因によって実際にはめったに現実化されない。プロセッサ設計の主要な目標は、これらのハザードを避け、パイプラインを「フルな」状態に保つことである。
現実世界のプログラムは、分岐命令を含む場合があり、それは、無条件分岐命令または条件分岐命令を含み得る。分岐命令の実際の分岐挙動は、該命令がパイプラインの深くで評価されるまで、知られない場合がある。このことは、パイプラインをストールさせる制御ハザードを生成する。なぜなら、プロセッサは分岐命令後に、どの命令を取得するか分からず、分岐命令が評価するまで分からないであろうからである。一般的な現代のプロセッサは、様々な形式の分岐予測を使用し、それにより、条件分岐命令の分岐挙動と分岐先アドレスとは、パイプラインにおいて早期に予測される。プロセッサは、分岐予測に基づき、命令の取得と実行とを推測的に実行し、もって、パイプラインをフルに保つ。予測が正しい場合、性能は最大となり電力消費は最小となる。分岐命令が実際に評価され、該分岐が誤予測された場合には、推測的に取得された命令はパイプラインからフラッシュされ、新たな命令が正しい分岐先アドレスから取得されなければならない。誤予測された分岐は、プロセッサの性能と電力消費に悪影響を与える。
分岐予測に対する2つの構成要素、すなわち、条件評価と分岐先アドレスとが存在する。条件評価(当然、条件付分岐命令にのみ関係する)は二者択一である。該分岐が選択されて異なるコードシーケンスへのジャンプを実行させるか、あるいは選択されずに、この条件付分岐命令の後に、次のシーケンシャルな命令をプロセッサが実行するかのどちらかである。分岐先アドレス(BTA)は、選択されたと評価する条件付分岐命令あるいは無条件分岐命令かの何れかの制御分岐へのアドレスである。いくつかの分岐命令は、オペレーションコード命令におけるBTAを含むか、あるいはBTAが容易に計算されることができるオフセットを含む。その他の分岐命令に関しては、BTAはパイプラインの深くまで計算されないので、予測されなければならない。
BTA予測の1つの既知の技術が分岐先アドレスキャッシュ(BTAC)である。従来技術において周知の通りBTACは、完全連想式キャッシュであり、各データの位置(すなわちキャッシュ「ライン」)に1つだけのBTAを含んだ状態で、分岐命令アドレス(BIA)によってインデックスされている。パイプラインにおいて選択されたと分岐命令が評価しその実際のBTAが計算された場合、該BIAとBTAはBTAC(例えばライトバックパイプラインステージ中)に書き込まれる。新しい命令を取得するとき、該BTACは命令キャッシュ(すなわちI−キャッシュ)と同時にアクセスされる。該命令アドレスが該BTACにおいてヒットした場合、プロセッサは、該命令が分岐命令だと知り(このことは復号されているI−キャッシュから取り出される命令に先んじる)、予測されたBTAが提供されるが、それは分岐命令の前の実行の実際のBTAである。該分岐が選択されるべきだと分岐予測回路が予測した場合、命令の取得は、予測されたBTAで始まる。該分岐が選択されるべきでないと予測された場合、命令の取得はシーケンシャルに継続する。
BTACという用語はまた、飽和カウンタをBIAに関連付けるキャッシュを示す技術においても使われ、もって、条件付評価予測(すなわち、選択されるかされないか)だけを提供することに留意されたい。それは本明細書で使用するこの用語の意味ではない。
高性能プロセッサは、I−キャッシュから一度に1より多い命令を取得することができる。例えば、4つの命令を備えうるキャッシュラインの全体が、命令取得バッファに取得される。命令取得バッファは、それらをシーケンシャルにパイプラインへ供給する。本出願の譲受人に譲渡され、参照によって本明細書に組み込まれている特許出願11/089,072号は、2またはそれ以上のBTAを各キャッシュラインの中に格納し、BTACヒット上の予測されたBTAとして該BTAのうちどれが選択されているか判定するために分岐予測オフセットテーブル(BPOT)をインデックス付けるBTACを開示する。BPOTは、複数のBTAに同時にアクセスするために一般的なものであろう複数の読取ポートを有するBTACの高価なハードウェア構造を避ける。
命令の一般的なグループまたはブロックは、全体的にも一般的にも、分岐命令から構成されていないので、ブロック内の各命令に関して、BTAC内に個別のBTAストレージを提供することは、BTAC内のメモリセルを浪費する。しかしながら、ブロック内の命令が、無条件分岐命令であるか、選択されたものであると評価されそのBTAを取得する条件付分岐命令であるかを判定するために、ブロック取得命令時にBTACにアクセスすることは、分岐予測およびプロセッサ性能にとっても有益である。
1または複数の実施形態に従って、分岐先アドレスキャッシュ(BTAC)は複数のエントリを格納し、各エントリは、選択されたと評価されている少なくとも1つの分岐命令(すなわち、パイプラインにおいて選択されたと以前に評価された条件付分岐命令あるいは無条件分岐命令のどちらか)を含む2またはそれ以上の命令のブロックに関連付けられる。BTACエントリは、選択された分岐の分岐先アドレス(BTA)と、関連付けられたブロック内のどちらの命令が該分岐かのインディケータを含む。命令ブロックのサイズは、命令キャッシュライン毎の命令の数に対応しうるが、必ずしもそうであるとは限らない。各BTACエントリは、ブロックの中の命令の共通ビット(すなわち、最下位ビットが切り捨てられた命令アドレス)によりインデックス付けられる。
1つの実施形態は、プロセッサにおける条件付分岐命令を予測する方法に関する。選択されたと評価されている少なくとも1つの分岐命令を含む2またはそれ以上の命令のブロックに関連付けられるエントリが、BTACに格納される。命令を取得すると、BTACは、対応するブロック内の命令が、選択された分岐命令かどうか判定するためにアクセスされる。
他の実施形態はプロセッサに関する。プロセッサは、複数のエントリを格納するBTACを含み、BTACの各エントリは、選択されたと評価されている少なくとも1つの分岐命令を含む2またはそれ以上の命令のブロックに関連付けられる。プロセッサはまた、1または複数の命令を取得すると、切り捨てられた命令アドレスを有するBTACをインデックス付けるように作動する命令実行パイプラインを含む。
図1は、プロセッサ10の機能ブロック図を示す。プロセッサ10は、制御論理11に従って命令実行パイプラインにおける命令を実行する。いくつかの実施形態において、パイプライン12は、複数の並行パイプラインを有するスーパースカラ設計でありうる。パイプライン12は、パイプステージにおいて組織化された様々なレジスタすなわちラッチ16と、1または複数の計算論理装置(ALU)18を含む。汎用レジスタ(GPR)ファイル20は、メモリ階層の先頭を含むレジスタを提供する。
パイプライン12は、命令側トランスレーション・ルックアサイド・バッファ(ITLB)24によって管理される許可とメモリアドレス変換を用いて、命令キャッシュ(I−キャッシュ)22から命令を取得する。同時に、パイプライン12は、切り捨てられた命令アドレスを、ブロックに基づく分岐先アドレスキャッシュ(BTAC)25に提供する。切り捨てられた該アドレスがBTAC25においてヒットした場合、予測されたBTAから即座に命令取得を開始すめるために、BTAC25は、分岐先アドレスをI−キャッシュ22に提供することができる。ブロックに基づくBTAC25の演算と構造は以下でより詳細に述べられる。
データは、メインのトランスレーション・ルックアサイド・バッファ(TLB)28によって管理される許可とメモリアドレス変換を用いてデータキャッシュ(D−キャッシュ)26からアクセスされる。様々な実施形態において、ITLBはTLBの一部のコピーを備えることができる。あるいはITLBとTLBとは統合され得る。同様に、プロセッサ10の様々な実施形態において、I−キャッシュ22とD−キャッシュ26は統合される、すなわち一体化されうる。I−キャッシュ22とD−キャッシュ26の両方あるいはいずれかを失うと、メモリインターフェース30の制御下で、メイン(外部)メモリ32へのアクセスをもたらす。
プロセッサ10は、様々な周辺デバイス36,38へのアクセスを制御する入出力(I/O)インターフェース34を含みうる。当業者は、プロセッサ10の多数の変種が可能であることを理解するだろう。例えば、プロセッサ10は、I−キャッシュ22およびD−キャッシュ26のいずれかあるいは両方のための2次レベル(L2)キャッシュを含みうる。加えて、プロセッサ10において示された機能ブロックのうちの1または複数は、特定の実施形態から省略されうる。
分岐命令はいくつかのコードにおいて一般的である。いくつかの推定によると、5つの命令のうち1つが分岐である可能性がある。従って、早期の分岐検出、(条件付分岐命令に対する)分岐評価予測、および予測されたBTAからの命令取得は、プロセッサ性能に対して決定的となりうる。一般的な現代のプロセッサは、各キャッシュライン内に多数の命令を格納するI−キャッシュ22を含む。1つ(または複数)のライン全体が一度にI−キャッシュから取得されうる。この開示のために、I−キャッシュ22は、キャッシュラインごとに4つの命令を格納すると仮定する。ただしこの例は単に例であり限定的なものではない。同時に4つの命令アドレス全てに対して探索するために従来技術BTACにアクセスすることは、4つのアドレス比較入力ポート、4つのBTA出力ポート、および4つ全てのアドレスがBTACにおいてヒットした場合にはブロックに関連付けられた最大4つのBTAの中から1つのBTAを選択するための制御論理とマルチプレクサを必要とする。4つの分岐命令のブロックは稀であるが、本明細書で述べられているBTACはその可能性の余地を確保する。
1または複数の実施形態に従って、ブロックに基づくBTAC25は、各BTAC25キャッシュラインにおける(例えば4つの)命令のブロックに関連付けられた、選択された分岐情報を格納する。この情報は、ブロック内の少なくとも1つの命令が選択されたと評価されている(ブロックに基づくBTAC25におけるヒットにより示された)分岐命令であるという事実と、ブロックの中のどの命令が選択された分岐であるかのインディケータ、およびそのBTAを含む。
図2は、ブロックに基づくBTAC25、I−キャッシュ22、パイプライン12、および(例えば制御論理11の一部を備える)分岐予測論理回路15の機能ブロック図を示す。この例において、命令A〜Lは、I−キャッシュ22における3つのラインに存在する。命令は、ブロック図の左に示されている。この例のブロックに基づくBTAC25において、BTAC25のブロックのサイズは、そのような対応は一般的ではないが、I−キャッシュ22のラインの長さ、すなわち4つの命令に一致する。図2のブロックに基づくBTAC25における各エントリは、3つの構成要素を含む。すなわち、各ブロック内に4つの命令の共通命令アドレスビット(すなわち、最下位2ビットが切り捨てられた命令アドレス)を備えるタグフィールド、ブロック内の命令のどの命令が選択された分岐かを示す分岐インディケータ、および、選択された分岐命令に対応する分岐先アドレス(BTA)である。
BTAC25内の第1のエントリは、命令A、B、C、Dを備えるI−キャッシュ22の第1のラインに対応する。これらのうち、命令Cは選択されたと評価されている分岐命令である。命令Cは、10という分岐インディケータアドレスによって選択された分岐と特定される(他の実施形態においては、分岐インディケータは例えば0010のような復号フォーマットでありうる)。ブロックに基づくBTAC25はさらに、命令Cの分岐先アドレス(BTAC)を格納する。
I−キャッシュ22の第2のライン内の命令、すなわちE、F、G、Hは、いずれも分岐命令ではない。従って、このキャッシュラインに対応するエントリは、ブロックに基づくBTAC25においては存在しない。
ブロックに基づくBTAC25内の第2のエントリは、命令I、J、K、Lを備えるI−キャッシュ22の第3のラインに対応する。このブロック内では、命令IとLとの両方が分岐命令である。この例では、命令Lが選択されたと最後に評価され、ブロックに基づくBTAC25はBTALを格納し、11という分岐インディケータ値によってブロック内の第4の命令を、選択された分岐として特定する。
動作中、パイプライン12における復号/取得論理13は、I−キャッシュ22からの命令の次のグループを取得するための命令アドレスを生成する。同時に取得される全ての命令の共有アドレスビットを備える切り捨てられた命令アドレスは、ブロックに基づくBTAC25のタグタグフィールドと比較される。切り捨てられたアドレスが、ブロックに基づくBTAC25におけるタグに一致する場合、ブロックの中のどの命令が選択された分岐命令であるかを示すために、対応する分岐インディケータが復号/取得論理13に提供される。該インディケータはまた、分岐予測論理15にも提供される。同時に、BTAからの迅速なる推測的取得を開始するために、かつ、予測されたとおり該分岐が選択された場合に、パイプラインをフルに維持するために、BTACエントリのBTAがI−キャッシュ22に提供される。
分岐命令は、パイプライン12における実行ステージの論理14において評価される。この分岐評価は、実際の分岐挙動に関する予測論理を更新するために、分岐予測論理15に提供される。実行論理14は、選択されたと評価した場合、さらに、分岐命令のBTAを計算し提供する。分岐予測論理15は、その予測テーブル(例えば、分岐履歴レジスタ、分岐予測テーブル、飽和カウンタ等)を更新し、さらに、ブロックに基づくBTAC25を更新する。特に、分岐予測論理15は、選択されたと評価する新たな各分岐命令のために、4つの命令のブロックに対応する新たなエントリを、ブロックに基づくBTAC25内に生成し、既存のエントリのためのブロックに基づくBTAC25のBTAフィールドと分岐インディケータの両方またはいずれかを更新する。
ブロックに基づくBTAC25内の各エントリはこうして、選択されたと評価されている少なくとも1つの分岐命令を含む命令のブロックに関連付けられる。各エントリは、ブロック内に、命令の共通ビットを備えるタグを含む。ブロックに基づくBTAC25タグと比較するために切り捨てられた命令アドレスを用いて、I−キャッシュ22から1または複数の命令を取得するのと同時にブロックに基づくBTAC25にアクセスすることにより、プロセッサ10は、ブロック内の任意の命令が選択された分岐命令であるのかどうか、またそれはブロック内のどの命令なのかを確認することができる。さらに、プロセッサ10は、選択された分岐のBTAから推測的に命令を取得することと、パイプラインをフルに維持することと、選択された分岐が再び評価する性能を最適化することとを直ちに開始することができる。BTACエントリに関連付けられた命令のブロック構造は、それぞれが、単一の選択された分岐命令に専用である従来方式のBTACエントリを用いた同じ機能を達成するために必要とされる出力マルチプレクサと、3つの出力ポートと、3つの入力ポートとを不要にする。
本明細書で使用するように、一般に、分岐命令は、条件付分岐命令か無条件分岐命令かのいずれかを称することができる。本明細書で使用するように、「選択された分岐」、「選択された分岐命令」、あるいは「選択されたと評価されている分岐命令」は、シーケンシャルな命令実行フローを、非シーケンシャルなアドレスに変換するものとして評価される条件付分岐命令であるか、無条件分岐命令かの何れかを称する(すなわち、選択されていないもの対するものとして解釈される)。
本発明は、その特定の機能、局面、実施形態に関して本明細書で説明されたが、多数の変形、修正、およびその他の実施形態が本発明の広範な範囲において可能であり、もって、全ての変形、修正、および実施形態が、本開示の範囲内にあると見なされるべきであることが明白になるであろう。従って、本実施形態は、全ての局面において例示的であり、限定的ではないと解釈されるべきであって、請求項の意味および均等範囲内で起こる全ての変更は、その中に包含されるものと意図される。
Claims (19)
- プロセッサにおける分岐命令を予測する方法であって、
分岐先アドレスキャッシュ(BTAC)内にエントリを格納することであって、前記BTACのエントリは、選択されたと評価されている少なくとも1つの分岐命令を含む2またはそれ以上の命令のブロックに関連付けられていることと、
命令のグループを取得すると、対応する前記ブロック内の命令が、選択された分岐命令かどうかを判定するために前記BTACにアクセスすることと
を備える方法。 - BTACの各エントリは、前記ブロックにおける全ての命令のアドレスの共通ビットを備えるタグを含む請求項1に記載の方法。
- 前記BTACにアクセスすることは、前記取得された命令のアドレスの対応するビットを、BTACの全エントリのタグと比較することを備える請求項2に記載の方法。
- 前記関連付けられたブロック内のどの命令が、選択された分岐命令であるかのインディケータを、BTACの各エントリ内に格納することを更に備える請求項1に記載の方法。
- 前記関連付けられたブロック内の選択された分岐命令の分岐先アドレス(BTA)を、BTACの各エントリ内に格納することを更に備える請求項1に記載の方法。
- 前記BTACにアクセスした後、前記BTAから取得することを更に備える請求項5に記載の方法。
- 各命令ブロックが、命令キャッシュラインに対応する請求項1に記載の方法。
- 選択されたと評価されている少なくとも1つの分岐命令を含む2またはそれ以上の命令のブロックに関連付けられている複数のエントリを格納する分岐先アドレスキャッシュ(BTAC)と、
1または複数の命令を取得すると、切り捨てられた命令アドレスを用いて前記BTACをインデクス付けるように作動する命令実行パイプラインと
を備えるプロセッサ。 - BTACの各エントリは、前記ブロックにおける全ての命令のアドレスの共通ビットを備えるタグを含む請求項8に記載のプロセッサ。
- 前記関連付けられたブロック内のどの命令が、選択された分岐命令であるかのインディケータを、BTACの各エントリが含む請求項8に記載のプロセッサ。
- 前記関連付けられたブロック内の選択された分岐命令の分岐先アドレス(BTA)を、BTACの各エントリが含む請求項8に記載のプロセッサ。
- 各命令ブロックが、命令キャッシュラインに対応する請求項8に記載のプロセッサ。
- プロセッサにおける分岐命令を予測するプロセッサであって、
分岐先アドレスキャッシュ(BTAC)内にエントリを格納する手段であって、前記BTACのエントリは、選択されたと評価されている少なくとも1つの分岐命令を含む2またはそれ以上の命令のブロックに関連付けられている手段と、
命令のグループを取得すると、対応するブロックにおける命令が、選択された分岐命令かどうかを判定するために前記BTACにアクセスする手段と
を備えるプロセッサ。 - BTACの各エントリは、前記ブロックにおける全ての命令の前記アドレスの共通ビットを備えるタグを含む請求項13に記載のプロセッサ。
- 前記BTACにアクセスする手段は、前記取得された命令のアドレスの対応するビットを、BTACの全エントリのタグと比較する手段を備える請求項14に記載のプロセッサ。
- 前記関連付けられたブロック内のどの命令が、選択された分岐命令であるかのインディケータを、BTACの各エントリ中に格納する手段を更に備える請求項13に記載のプロセッサ。
- 前記関連付けられたブロック内の選択された分岐命令の分岐先アドレス(BTA)を、BTACの各エントリ内に格納する手段を更に備える請求項13に記載の前記プロセッサ。
- 前記BTACにアクセスした後に、前記BTAから命令を取得する手段を更に備える請求項17に記載のプロセッサ。
- 各命令ブロックが、命令キャッシュラインに対応する請求項13に記載のプロセッサ。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/382,527 US20070266228A1 (en) | 2006-05-10 | 2006-05-10 | Block-based branch target address cache |
PCT/US2007/067176 WO2007133895A1 (en) | 2006-05-10 | 2007-04-23 | Block-based branch target address cache |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009536770A true JP2009536770A (ja) | 2009-10-15 |
Family
ID=38514211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009509942A Pending JP2009536770A (ja) | 2006-05-10 | 2007-04-23 | ブロックに基づく分岐先アドレスキャッシュ |
Country Status (7)
Country | Link |
---|---|
US (1) | US20070266228A1 (ja) |
EP (1) | EP2027535A1 (ja) |
JP (1) | JP2009536770A (ja) |
KR (1) | KR20090009955A (ja) |
CN (1) | CN101438237A (ja) |
TW (1) | TW200813823A (ja) |
WO (1) | WO2007133895A1 (ja) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080222392A1 (en) * | 2007-03-09 | 2008-09-11 | On Demand Microelectronics | Method and arrangements for pipeline processing of instructions |
US20080222393A1 (en) * | 2007-03-09 | 2008-09-11 | On Demand Microelectronics | Method and arrangements for pipeline processing of instructions |
US20090217017A1 (en) * | 2008-02-26 | 2009-08-27 | International Business Machines Corporation | Method, system and computer program product for minimizing branch prediction latency |
US8181005B2 (en) | 2008-09-05 | 2012-05-15 | Advanced Micro Devices, Inc. | Hybrid branch prediction device with sparse and dense prediction caches |
EP2431041A4 (en) * | 2009-05-15 | 2012-12-26 | Chengdu kanghong pharmaceutical co ltd | PHARMACEUTICAL COMPOSITION FOR TREATING CARDIOVASCULAR DISORDER AND USE THEREOF |
US20110093658A1 (en) * | 2009-10-19 | 2011-04-21 | Zuraski Jr Gerald D | Classifying and segregating branch targets |
US9395984B2 (en) * | 2012-09-12 | 2016-07-19 | Qualcomm Incorporated | Swapping branch direction history(ies) in response to a branch prediction table swap instruction(s), and related systems and methods |
US9563562B2 (en) | 2012-11-27 | 2017-02-07 | Nvidia Corporation | Page crossing prefetches |
US9639471B2 (en) | 2012-11-27 | 2017-05-02 | Nvidia Corporation | Prefetching according to attributes of access requests |
US9262328B2 (en) * | 2012-11-27 | 2016-02-16 | Nvidia Corporation | Using cache hit information to manage prefetches |
CN104636268B (zh) * | 2013-11-08 | 2019-07-26 | 上海芯豪微电子有限公司 | 一种可重构缓存产品与方法 |
CN104657285B (zh) * | 2013-11-16 | 2020-05-05 | 上海芯豪微电子有限公司 | 一种数据缓存系统和方法 |
US20170083333A1 (en) * | 2015-09-21 | 2017-03-23 | Qualcomm Incorporated | Branch target instruction cache (btic) to store a conditional branch instruction |
CN106406823B (zh) * | 2016-10-10 | 2019-07-05 | 上海兆芯集成电路有限公司 | 分支预测器和用于操作分支预测器的方法 |
US10853076B2 (en) * | 2018-02-21 | 2020-12-01 | Arm Limited | Performing at least two branch predictions for non-contiguous instruction blocks at the same time using a prediction mapping |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5530825A (en) * | 1994-04-15 | 1996-06-25 | Motorola, Inc. | Data processor with branch target address cache and method of operation |
JPH10133874A (ja) * | 1996-11-01 | 1998-05-22 | Mitsubishi Electric Corp | スーパスカラプロセッサ用分岐予測機構 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5538025A (en) * | 1991-11-05 | 1996-07-23 | Serec Partners | Solvent cleaning system |
JP3494736B2 (ja) * | 1995-02-27 | 2004-02-09 | 株式会社ルネサステクノロジ | 分岐先バッファを用いた分岐予測システム |
JP2004505345A (ja) * | 2000-07-21 | 2004-02-19 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 分岐ターゲットバッファを有するデータプロセッサ |
US7707397B2 (en) * | 2001-05-04 | 2010-04-27 | Via Technologies, Inc. | Variable group associativity branch target address cache delivering multiple target addresses per cache line |
US20020194462A1 (en) * | 2001-05-04 | 2002-12-19 | Ip First Llc | Apparatus and method for selecting one of multiple target addresses stored in a speculative branch target address cache per instruction cache line |
US7124287B2 (en) * | 2003-05-12 | 2006-10-17 | International Business Machines Corporation | Dynamically adaptive associativity of a branch target buffer (BTB) |
US20040250054A1 (en) * | 2003-06-09 | 2004-12-09 | Stark Jared W. | Line prediction using return prediction information |
JP2006048132A (ja) * | 2004-07-30 | 2006-02-16 | Fujitsu Ltd | 分岐予測装置、分岐予測装置の制御方法、情報処理装置 |
US20060218385A1 (en) * | 2005-03-23 | 2006-09-28 | Smith Rodney W | Branch target address cache storing two or more branch target addresses per index |
-
2006
- 2006-05-10 US US11/382,527 patent/US20070266228A1/en not_active Abandoned
-
2007
- 2007-04-23 CN CNA200780016471XA patent/CN101438237A/zh active Pending
- 2007-04-23 JP JP2009509942A patent/JP2009536770A/ja active Pending
- 2007-04-23 WO PCT/US2007/067176 patent/WO2007133895A1/en active Application Filing
- 2007-04-23 KR KR1020087029812A patent/KR20090009955A/ko not_active Application Discontinuation
- 2007-04-23 EP EP07761088A patent/EP2027535A1/en not_active Withdrawn
- 2007-05-03 TW TW096115676A patent/TW200813823A/zh unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5530825A (en) * | 1994-04-15 | 1996-06-25 | Motorola, Inc. | Data processor with branch target address cache and method of operation |
JPH10133874A (ja) * | 1996-11-01 | 1998-05-22 | Mitsubishi Electric Corp | スーパスカラプロセッサ用分岐予測機構 |
Also Published As
Publication number | Publication date |
---|---|
TW200813823A (en) | 2008-03-16 |
CN101438237A (zh) | 2009-05-20 |
EP2027535A1 (en) | 2009-02-25 |
US20070266228A1 (en) | 2007-11-15 |
WO2007133895A1 (en) | 2007-11-22 |
KR20090009955A (ko) | 2009-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2009536770A (ja) | ブロックに基づく分岐先アドレスキャッシュ | |
JP5313279B2 (ja) | 非アラインドメモリアクセス予測 | |
JP5231403B2 (ja) | スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ | |
KR101376900B1 (ko) | 이력에 의한 다음 인출 예측기 트레이닝 | |
KR101059335B1 (ko) | 가변 길이 명령 세트 실행 모드들을 가지는 프로세서 내의 bht의 효율적 사용방법 | |
EP1851620B1 (en) | Suppressing update of a branch history register by loop-ending branches | |
US7917731B2 (en) | Method and apparatus for prefetching non-sequential instruction addresses | |
US7478228B2 (en) | Apparatus for generating return address predictions for implicit and explicit subroutine calls | |
US20060218385A1 (en) | Branch target address cache storing two or more branch target addresses per index | |
KR101048258B1 (ko) | 가변 길이 명령 세트의 브랜치 명령의 최종 입도와 캐싱된 브랜치 정보의 관련 | |
US7640422B2 (en) | System for reducing number of lookups in a branch target address cache by storing retrieved BTAC addresses into instruction cache | |
US6871275B1 (en) | Microprocessor having a branch predictor using speculative branch registers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120116 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120124 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120619 |