JP2009536770A - ブロックに基づく分岐先アドレスキャッシュ - Google Patents

ブロックに基づく分岐先アドレスキャッシュ Download PDF

Info

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
Application number
JP2009509942A
Other languages
English (en)
Inventor
スミス、ロドニー・ウェイン
ディーフェンダーファー、ジェームズ・ノリス
サートリウス、トマス・アンドリュー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 JP2009536770A publication Critical patent/JP2009536770A/ja
Pending legal-status Critical Current

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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; 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
    • 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/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/46Multiprogramming 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の分岐先アドレス(BTA)を格納する。
I−キャッシュ22の第2のライン内の命令、すなわちE、F、G、Hは、いずれも分岐命令ではない。従って、このキャッシュラインに対応するエントリは、ブロックに基づくBTAC25においては存在しない。
ブロックに基づくBTAC25内の第2のエントリは、命令I、J、K、Lを備えるI−キャッシュ22の第3のラインに対応する。このブロック内では、命令IとLとの両方が分岐命令である。この例では、命令Lが選択されたと最後に評価され、ブロックに基づくBTAC25はBTAを格納し、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つの入力ポートとを不要にする。
本明細書で使用するように、一般に、分岐命令は、条件付分岐命令か無条件分岐命令かのいずれかを称することができる。本明細書で使用するように、「選択された分岐」、「選択された分岐命令」、あるいは「選択されたと評価されている分岐命令」は、シーケンシャルな命令実行フローを、非シーケンシャルなアドレスに変換するものとして評価される条件付分岐命令であるか、無条件分岐命令かの何れかを称する(すなわち、選択されていないもの対するものとして解釈される)。
本発明は、その特定の機能、局面、実施形態に関して本明細書で説明されたが、多数の変形、修正、およびその他の実施形態が本発明の広範な範囲において可能であり、もって、全ての変形、修正、および実施形態が、本開示の範囲内にあると見なされるべきであることが明白になるであろう。従って、本実施形態は、全ての局面において例示的であり、限定的ではないと解釈されるべきであって、請求項の意味および均等範囲内で起こる全ての変更は、その中に包含されるものと意図される。
図1は、プロセッサの1つの実施形態の機能ブロック図である。 図2は、分岐先アドレスキャッシュの1つの実施形態の機能ブロック図である。

Claims (19)

  1. プロセッサにおける分岐命令を予測する方法であって、
    分岐先アドレスキャッシュ(BTAC)内にエントリを格納することであって、前記BTACのエントリは、選択されたと評価されている少なくとも1つの分岐命令を含む2またはそれ以上の命令のブロックに関連付けられていることと、
    命令のグループを取得すると、対応する前記ブロック内の命令が、選択された分岐命令かどうかを判定するために前記BTACにアクセスすることと
    を備える方法。
  2. BTACの各エントリは、前記ブロックにおける全ての命令のアドレスの共通ビットを備えるタグを含む請求項1に記載の方法。
  3. 前記BTACにアクセスすることは、前記取得された命令のアドレスの対応するビットを、BTACの全エントリのタグと比較することを備える請求項2に記載の方法。
  4. 前記関連付けられたブロック内のどの命令が、選択された分岐命令であるかのインディケータを、BTACの各エントリ内に格納することを更に備える請求項1に記載の方法。
  5. 前記関連付けられたブロック内の選択された分岐命令の分岐先アドレス(BTA)を、BTACの各エントリ内に格納することを更に備える請求項1に記載の方法。
  6. 前記BTACにアクセスした後、前記BTAから取得することを更に備える請求項5に記載の方法。
  7. 各命令ブロックが、命令キャッシュラインに対応する請求項1に記載の方法。
  8. 選択されたと評価されている少なくとも1つの分岐命令を含む2またはそれ以上の命令のブロックに関連付けられている複数のエントリを格納する分岐先アドレスキャッシュ(BTAC)と、
    1または複数の命令を取得すると、切り捨てられた命令アドレスを用いて前記BTACをインデクス付けるように作動する命令実行パイプラインと
    を備えるプロセッサ。
  9. BTACの各エントリは、前記ブロックにおける全ての命令のアドレスの共通ビットを備えるタグを含む請求項8に記載のプロセッサ。
  10. 前記関連付けられたブロック内のどの命令が、選択された分岐命令であるかのインディケータを、BTACの各エントリが含む請求項8に記載のプロセッサ。
  11. 前記関連付けられたブロック内の選択された分岐命令の分岐先アドレス(BTA)を、BTACの各エントリが含む請求項8に記載のプロセッサ。
  12. 各命令ブロックが、命令キャッシュラインに対応する請求項8に記載のプロセッサ。
  13. プロセッサにおける分岐命令を予測するプロセッサであって、
    分岐先アドレスキャッシュ(BTAC)内にエントリを格納する手段であって、前記BTACのエントリは、選択されたと評価されている少なくとも1つの分岐命令を含む2またはそれ以上の命令のブロックに関連付けられている手段と、
    命令のグループを取得すると、対応するブロックにおける命令が、選択された分岐命令かどうかを判定するために前記BTACにアクセスする手段と
    を備えるプロセッサ。
  14. BTACの各エントリは、前記ブロックにおける全ての命令の前記アドレスの共通ビットを備えるタグを含む請求項13に記載のプロセッサ。
  15. 前記BTACにアクセスする手段は、前記取得された命令のアドレスの対応するビットを、BTACの全エントリのタグと比較する手段を備える請求項14に記載のプロセッサ。
  16. 前記関連付けられたブロック内のどの命令が、選択された分岐命令であるかのインディケータを、BTACの各エントリ中に格納する手段を更に備える請求項13に記載のプロセッサ。
  17. 前記関連付けられたブロック内の選択された分岐命令の分岐先アドレス(BTA)を、BTACの各エントリ内に格納する手段を更に備える請求項13に記載の前記プロセッサ。
  18. 前記BTACにアクセスした後に、前記BTAから命令を取得する手段を更に備える請求項17に記載のプロセッサ。
  19. 各命令ブロックが、命令キャッシュラインに対応する請求項13に記載のプロセッサ。
JP2009509942A 2006-05-10 2007-04-23 ブロックに基づく分岐先アドレスキャッシュ Pending JP2009536770A (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
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