JP2013229038A - プロアクティブ分岐ターゲットアドレスキャッシュ管理のための方法及び装置 - Google Patents

プロアクティブ分岐ターゲットアドレスキャッシュ管理のための方法及び装置 Download PDF

Info

Publication number
JP2013229038A
JP2013229038A JP2013119018A JP2013119018A JP2013229038A JP 2013229038 A JP2013229038 A JP 2013229038A JP 2013119018 A JP2013119018 A JP 2013119018A JP 2013119018 A JP2013119018 A JP 2013119018A JP 2013229038 A JP2013229038 A JP 2013229038A
Authority
JP
Japan
Prior art keywords
btac
branch
entry
replacement
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.)
Withdrawn
Application number
JP2013119018A
Other languages
English (en)
Other versions
JP2013229038A5 (ja
Inventor
Bohuslav Rychlik
ボヒュースラブ・リシリク
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 JP2013229038A publication Critical patent/JP2013229038A/ja
Publication of JP2013229038A5 publication Critical patent/JP2013229038A5/ja
Withdrawn 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
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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
    • 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/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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】分岐ターゲットアドレスキャッシュ(BTAC)をプロアクティブに管理し、同じ分岐命令がパイプラインによって処理された場合に、分岐履歴レジスタ(BHT)によるBTAC予測のオーバライドによるパイプラインフラッシュが反復して起こりうる問題(マルチプルフラッシュサイクル問題)が起こる可能性を低減する。
【解決手段】BTACと分岐予測子回路とを含むマルチプルステージ分岐予測システムにおいて、BTACは、BTACエントリを格納するように構成される。分岐予測子回路は、状態情報を格納するように構成される。分岐予測子回路は、状態情報を用いて分岐命令の方向を予測し、分岐命令の実際の分岐結果に応答して、格納された状態情報に基づいてBTACエントリを管理する。
【選択図】図2

Description

本発明は、一般にプロセッサの分野に関し、特に、分岐ターゲットアドレスキャッシュのコンテンツをプロアクティブに管理することによって分岐予測を向上させる方法に関する。
マイクロプロセッサは、広く様々なアプリケーションにおいて計算タスクを実行する。より高速な動作及び/又は増加した機能を可能とするようにソフトウェア変更によって改善されたプロセッサが常に望まれる。例えばポータブル電子デバイスのような多くの組込型アプリケーションにおいて、電力の節約もまた、プロセッサ設計及び実現における目標である。
近年の多くのプロセッサは、各々が複数の実行ステップを備えた連続する命令が、実行中にオーバラップされるパイプラインされたアーキテクチャを用いる。改善された性能のために、命令は連続してパイプラインを流れるべきである。命令がパイプライン内でストールする原因となる任意の状況は、性能に有害な影響を及ぼしうる。もし命令がパイプラインからフラッシュされ、その後再フェッチされれば、性能及び電力消費の両方が悪影響を受ける。
ほとんどの命令は条件付分岐命令、つまり、命令がパイプラインの深くで評価されるまで知られない実際の分岐挙動を含む。分岐命令の実際の評価を待つことに起因するストールを回避するために、近年のプロセッサは、条件付分岐命令の分岐挙動がパイプラインの早期に予測されるいくつかの形式の分岐予測を用いる。予測された分岐評価に基づいて、プロセッサは、予測されたアドレス、つまり(もし分岐が選択されると予測されれば)分岐ターゲットアドレス又は(もし分岐が選択されないと予測されれば)分岐命令後の次の連続するアドレスの何れかから命令を推測的にフェッチ(プリフェッチ)し、実行する。条件付分岐命令が選択されるかされないかは、分岐方向の決定と称される。分岐方向の決定は、予測された時間及び実際の分岐決定時間になされる。実際の分岐挙動が決定されると、もし分岐が誤予測されていれば、推測的にフェッチされた命令はパイプラインからフラッシュされなければならず、新たな命令が次の正確なアドレスからフェッチされなければならない。誤った分岐予測に応答する命令のプリフェッチは、プロセッサ性能及び電力消費に不利な影響を及ぼしうる。従って、分岐予測の正確性を向上させることは重要なプロセッサ設計目標である。
分岐予測の1つの周知の形式は、分岐予測を2つの予測子、すなわち初期分岐ターゲットアドレスキャッシュ(BTAC)と分岐履歴テーブル(BHT)とに分割することを含む。分岐ターゲットバッファ(BTB)としても知られるBTACは、命令フェッチアドレスによってインデックスされ、命令フェッチアドレスに対応し次にフェッチされる、分岐ターゲットとも称されるアドレスを含む。分岐命令がプロセッサパイプラインを通過し、その分岐が選択された後、エントリが従来のBTACに追加される。もし従来のBTACがフルであれば、エントリは従来、次のエントリが追加されると(例えばラウンドロビンの、又は最後に用いられた)標準キャッシュ置換アルゴリズムを用いてBTACから除去される。
一般にBTACはしばしば、高連想型キャッシュ設計として実現され、フェッチパイプラインの早期にアクセスされる。もしフェッチアドレスがBTACエントリ(BTACヒット)と一致すれば、対応する次のフェッチアドレス又はターゲットアドレスが次のサイクル内でフェッチされる。この一致及びその結果のターゲットアドレスのフェッチは、暗黙の選択された分岐予測と称される。もし一致しなければ(BTACミス)、次の連続してインクリメントされるアドレスは次のサイクル内でフェッチされる。この一致しない状況は、暗黙の選択されない予測とも称される。
一般にBTACは、例えばパターン履歴テーブル(PHT)としても知られる分岐履歴テーブル(BHT)のような、より正確な個別の分岐方向予測子と関連して用いられる。従来のBHTは、パイプライン内で従来のBTACより後にアクセスされる。このように、より良い予測をするために追加の情報が潜在的に存在しうる。従来のBHTは、個々の分岐命令に関してより正確な選択された/されない判定を生成するために、飽和予測方向カウンタのセットを含むことができる。例えば、各飽和予測方向カウンタは、各々が以下のような重み付け予測値を割り当てられた4つの状態のうちの1つを仮定する2ビットのカウンタを備えることができる。
11−選択されると強く予測された
10−選択されると弱く予測された
01−選択されないと弱く予測された
00−選択されないと強く予測された
一般にBHTは、従来、分岐履歴レジスタ(BHR)内に格納されたビットによってインデックスされる。従来のBHTの出力は、選択されたか選択されないかの判定であり、その結果、分岐命令のターゲットアドレスか次のサイクル内の次の連続アドレスかの何れかをフェッチする。BHTは一般に、自身が知られるようになると、分岐出力情報とともに更新される。
従来のBHTを用いると、プロセッサは、BTACによってなされた早期暗黙予測をオーバライドすることができる。例えば、BTACはヒットしうるが、BHTは、選択されない予測とともにBTAC暗黙予測をオーバライドすることができる。逆に、BTACミスの後、BHTは、ターゲットアドレスが現在プロセッサパイプラインのこの時点で知られている場合、選択される予測を用いてBTACをオーバライドすることができる。
BHTによるBTAC予測のオーバライドは、プロセッサパイプラインをフラッシュした結果浪費されるサイクルをもたらす。BHTによるBTAC予測のオーバライドは、同様の分岐命令が後にパイプラインによって処理された場合に反復して起こりうる。例えば、もしBTACが、BTAC内で見つかった一致によって、選択されると暗黙に予測すれば、ターゲットアドレス(選択された分岐)からの命令はプロセッサパイプライン内へフェッチされる。もしその後BHTが、その分岐が選択されないべきだと決定することによってBTAC予測をオーバライドすれば、ターゲットアドレスをフェッチした後の全ての命令はパイプラインからフラッシュされる。この従来の分岐予測技術では、このサイクルが、連続してフェッチされた同じ分岐命令について潜在的に反復する。同じ条件付分岐命令の連続したフェッチにおいて分岐予測矛盾を反復するこの問題は、本明細書ではマルチプルフラッシュサイクル問題と称される。従来のアプローチにおいて、マルチプルフラッシュサイクル問題は、BTACが更新されるまで条件付分岐命令について存在し続けうる。従って、BTACをプロアクティブに管理し、マルチプルフラッシュサイクル問題が起こる可能性を低減する装置及び方法が必要であることが理解される。
1つ又は複数の実施形態に従って、分岐ターゲットアドレスキャッシュ(BTAC)及び分岐予測子回路が開示される。BTACは、BTACエントリを格納するように構成される。分岐予測子回路は、状態情報を格納するように構成される。分岐予測子回路は、状態情報を用いて分岐命令の方向を予測し、分岐命令の実際の分岐結果に応答して格納された状態情報に基づいてBTACエントリを管理する。分岐命令の方向を予測するために用いられた状態情報に基づいてBTACエントリを管理することによって、誤予測の可能性、及びBTACルックアップと分岐予測子回路との間の矛盾の可能性は低減される。
1つの実施形態は、マルチプルステージ分岐予測システムに関する。マルチプルステージ分岐予測システムは、BTACと分岐予測子回路とを含む。BTACは、BTACエントリを格納するように構成される。分岐予測子回路は、状態情報を格納するように構成される。分岐予測子回路は、状態情報を用いて分岐命令の方向を予測し、分岐命令の実際の分岐結果に応答して格納された状態情報に基づいてBTACエントリを管理する。
別の実施形態は、分岐ターゲットアドレスキャッシュ(BTAC)を管理する方法に関する。実際に決定された条件付分岐命令の分岐方向が受け取られる。分岐予測子回路の状態情報が、受信した分岐方向に応答して評価される。条件付分岐命令に関連するBTAC内のエントリは、分岐予測子回路の状態情報に従って管理される。
別の実施形態は、パイプラインのマルチプルフラッシュサイクルの可能性を低減する方法に関する。この方法において、条件付分岐命令の第1の方向が暗黙に予測される。また、条件付分岐命令の第2の方向が状態情報に基づいて予測される。条件付分岐命令に関連するBTACエントリは、状態情報を用いて管理される。
本発明の他の実施形態は、本発明の様々な実施形態が例示によって示され説明される以下の詳細な説明から、当業者には容易に明らかになるであろうことが理解される。理解されるように、本発明は、本発明の範囲を逸脱することなく、他の異なる実施形態も可能であり、いくつかの詳細は他の様々な実施形態において変更可能である。従って、図面及び詳細な説明は、その本質として例示的であり限定的ではないと見なされる。
図1は、プロセッサの機能ブロック図である。 図2は、図1の分岐予測システムの機能ブロック図である。 図3は、BTAC管理信号回路の第1の典型的な実施形態の機能ブロック図である。 図4は、BTAC管理信号回路の第2の典型的な実施形態の機能ブロック図である。 図5は、BTACを管理する方法を示すフローチャートである。 図6は、パイプラインのマルチプルフラッシュサイクルの確率を低減する方法を示すフローチャートである。
詳細な説明
図1は、プロセッサ100の機能ブロック図を示す。プロセッサ100は、制御論理114に従って、命令実行パイプライン内で命令を実行する。いくつかの実施形態において、パイプライン112は、複数の並行するパイプラインを備えるスーパースカラ設計であることができる。パイプライン112は、パイプステージ内に構成された様々なレジスタ又はラッチ116A乃至D、及び例えば算術論理演算装置(ALU)118のような1つ又は複数の実行ユニットを含む。汎用レジスタ(GPR)ファイル120は、メモリ階層の最上層を備えるレジスタを提供する。
主要変換索引バッファ(TLB)142によって管理されるメモリアドレス変換及び許可を用いて、データキャッシュ(D−キャッシュ)140からデータがアクセスされる。様々な実施形態において、ITLB124はTLB142の一部のコピーを備えることができる。あるいはITLB124とTLB42とは統合することができる。同様に、プロセッサ100の様々な実施形態において、Iキャッシュ122とDキャッシュ140とは統合するか一体化することができる。Iキャッシュ122及び又はDキャッシュ140におけるミスは、メモリインタフェース146の制御下で主要(オフチップ)メモリ144へのアクセスを招く。
プロセッサ100は、様々な周辺デバイス150へのアクセスを制御する入力/出力(I/O)インタフェース148を含むことができる。当業者は、プロセッサ100の多くの変形例が可能であることを理解するであろう。例えばプロセッサ100は、Iキャッシュ122及びDキャッシュ140の両方又は何れかに第2レベル(L2)キャッシュを含むことができる。更に、プロセッサ100内に示される機能ブロックのうちの1つ又は複数を特定の実施形態から省略することができる。
プロセッサ100は、マルチプルステージ分岐予測システム143を含む。マルチプルステージ分岐予測システム143は、BTAC141(第1ステージ)と、分岐予測子回路126(第2ステージ)とを含む。BTAC141は、各エントリがフェッチアドレスに対応する分岐ターゲットアドレスを含む1つ又は複数のエントリを格納するように構成される。命令プリフェッチユニット128は、命令側変換索引バッファ(ITLB)124によって管理されるメモリアドレス変換及び許可を用いて、命令キャッシュ(Iキャッシュ又はI$)122から命令をフェッチする。マルチプルステージ分岐予測システム143は、フェッチアドレスがBTAC141内でヒットするかを判定し、分岐予測子回路126内に格納された予測パターンを用いることによって分岐命令の方向を予測し、分岐予測子回路126内に格納された予測パターンの状態に基づいてBTAC141を更新する。マルチプルステージ分岐予測システム143と、命令プリフェッチユニット128及びパイプライン112の動作とは、図2の説明に関連してより詳しく説明される。
図2は、図1の分岐予測子システム143の機能ブロック図である。パイプライン112及び命令プリフェッチユニット128の各々は、1つ又は複数の処理ステージを含む。分岐予測子回路126は、分岐履歴レジスタ203と、分岐履歴テーブル(BHT)207と、分岐テーブル更新及び予測論理回路205とを含むことができる。分岐テーブル更新及び予測論理回路205のBTAC管理部分の典型的な実施形態は、図3及び図4に関連して説明される。
動作中、フェッチアドレスは、パイプライン112によって以前処理された選択された分岐命令に対応するかを判定するために経路219を介してBTAC141内でルックアップされる。命令プリフェッチユニット128は経路221を介して命令キャッシュ122から推測的に命令をプリフェッチし、「選択される」と暗黙に予測された分岐のBTAC141から戻った分岐ターゲットアドレスで開始するか、又は「選択されない」と暗黙に予測された分岐の次の連続アドレスで開始する。何れの場合も、プリフェッチされた命令は、経路223に沿って命令プリフェッチユニット128へロードされる。
条件付分岐命令は、命令プリフェッチユニット128又はパイプライン112のステージによって処理されるので、例えば経路223を介してIキャッシュ122から取り出されたプレ復号ビット内で搬送される情報のような、条件付分岐命令に関する追加情報が決定される。BTACが条件付分岐命令の方向をルックアップするより高いレベルの信頼性を持って予測するために、格納された予測パターンとこの追加情報とを用いる分岐予測子回路126が経路121を介して呼び出される。
分岐テーブル更新及び予測論理回路205は、条件付分岐命令の方向を予測するために、分岐命令アドレス、分岐履歴レジスタ(BHR)203、及び分岐履歴テーブル(BHT)207を用いる。BHR203は、条件付分岐命令のシフトレジスタとして動作する。例えば、もし条件付分岐命令が実際に選択されれば、「1」がBHR203内へシフトされる。もし条件付分岐命令が実際に選択されなければ、「0」がBHR203内にシフトされ、結果として特定の分岐命令の分岐方向履歴をBHR203に格納させる。1つの実施形態において、BHR203は、期間にわたってパイプライン112により処理された各分岐命令のための特定のレジスタを含む。別の実施形態において、BHR203は、最近処理された条件付分岐命令の分岐方向履歴を含むグローバルスコープを有することができる。BHT207は、上記の背景技術で説明したように特定の分岐命令に関する2ビットカウンタを含むことができる。分岐方向を予測する様々な周知技術がBHR203及びBHT207を用いることが理解される。また、これら周知の予測技術がBHR203及びBHT207の様々な実施形態を用いることも理解される。また、本開示がBHRやBHTの代替例を実現する他の予測技術の利用を意図することも理解される。
BHR203及びBHT207に基づいて、図2に示す例の分岐方向予測回路126は、BTAC141暗黙予測と矛盾する分岐方向を予測する。結果として、条件付分岐命令の格納場所である「選択された経路1」より上の全ての命令が命令プリフェッチユニット128からフラッシュされるであろう。命令プリフェッチユニット128は、分岐ターゲットアドレスから始まる命令を矛盾なく継続してプリフェッチするであろう。
条件付分岐命令がパイプライン112のステージを進むと、条件付分岐命令は条件が実際に決定されるステージへ到着する。もし分岐の実際の分岐結果が分岐予測子回路126と異なれば、条件付分岐命令より上の全ての命令は、パイプライン112と命令プリフェッチユニット128との両方からフラッシュされる。パイプラインの実際の分岐決定ステージにおいて、条件付分岐の実際の方向が、経路213を介して分岐予測子回路126へ送られる。
分岐テーブル更新及び予測論理回路205は、分岐命令アドレス、BHT207内のエントリの状態、及びオプションとしてBHR203のコンテンツに加えて、BHT207のコンテンツを更新するために実際の分岐方向を用いるように構成される。更に、分岐テーブル更新及び予測論理回路205は、実際の分岐方向及びBHT207の状態、又は分岐方向予測子内のその他任意の状態に依存して、BTAC141内のエントリを管理し、もって、有利なことに、BTAC141内のエントリが、分岐予測子回路126、及び分岐予測のために用いられる状態情報を格納する他の分岐予測子回路によって実現される任意の分岐予測技術に応答することを可能とする。
図3は、BTAC管理回路300の第1の典型的な実施形態の機能ブロック図である。BTAC管理回路300は、BHT207の更新後、BTAC141を管理するための、分岐テーブル更新及び予測論理回路205内に含まれる適切な回路であることができる。BTAC管理回路300への入力は、実際の分岐結果の結果として更新された後、条件付分岐命令に対応する2つのビットカウンタ値のうちの最上位ビットである。BTAC管理回路300の出力信号305は、入力の反転信号である。BTAC141は以下のように、条件付分岐命令に対応するエントリを管理するかを判定するために出力信号305を解釈する。
例えば、もし条件付分岐命令に対応する更新された2つのビットカウンタが00値(選択されないと強く予測された)を有すれば、BTAC141内のこの条件付分岐命令のエントリは、以下で説明する様々な代替例に従って管理されるであろう。同様に、もし更新された2つのビットカウンタが01値(選択されないと弱く予測された)を有すれば、BTAC141内のこの条件付分岐命令のエントリが管理されるであろう。もし更新された2つのビットカウンタが10値(選択されると弱く予測された)又は11値(選択されると強く予測された)の何れかを有すれば、BTAC141内のエントリは修正されないであろう。
図4は、BTAC管理信号回路400の第2の典型的な実施形態の機能ブロック図である。BTAC管理回路400は、BHT207の更新前、BTAC141を管理するための、分岐テーブル更新及び予測論理回路205のBTAC管理部分の一部の適切な回路であることができる。BTAC管理回路400は、ANDゲート405A乃至405B及びORゲート415を含む論理回路であり、実際に決定された条件付分岐命令に対応するエントリを管理するための管理信号425を生成するために用いられる。BTAC管理回路400は、実際の方向の結果である更新の前に、実際の分岐方向及びBHT207のカレント状態に応答して動作する。BTAC管理回路400は、入力A’(反転された実際の分岐方向)、入力B’(反転された2ビットカウンタのうちの最上位ビット)、及び入力C’(反転された2ビットカウンタのうちの最下位ビット)を有する。この実施形態において、BTAC141は、以下で説明するように条件付分岐命令に対応するエントリを管理するために、出力信号425を解釈するであろう。BTAC管理回路300及び400がBHT207の実施形態に基づいて説明されたが、これらはBHRの選択された実施形態に基づくこともできる。更に、本開示は、BHTの様々な実施形態によって実現される、又は様々な分岐予測実施形態を用いて実現されるその他のBTAC管理回路を意図していることが理解される。更に、図3及び図4に示すBTAC管理回路は、分岐テーブル更新及び予測論理回路205と統合されるか、あるいは別々であることができる。
エントリ管理のタイプは、様々な代替例を含むことができる。管理のタイプは、BTACを即座に除去すること、次に付加される分岐命令において除去するためにBTACをマークすること、延長した期間、BTACエントリを固定又は保持すること、等を含む。条件付分岐命令に関連するBTACエントリの管理の代わりに、条件付分岐命令に関連しないBTACエントリの管理も本開示によって意図されていることが理解される。
BTAC141は、BTAC141内のエントリの置換え順序を示す順序でエントリが構成される、最後に用いられた置換えポリシーを用いる。最後に用いられた周知の疑似回路が、エントリの置換え順序を維持するために適切でありうる。このように、BTAC管理回路300の出力信号は結局、BTAC141内の条件付分岐命令に対応するエントリの位置を修正することができる。例えば、エントリはこの置換え順序内で上がったり下がったりすることができる。あるいはエントリは、BTAC141内での自身の寿命を長くするために、最後に用いられたことを示すようにBTAC141内での位置を調節することによって保持されることができる。
あるいは別の実施形態において、BTAC141は、修正されたラウンドロビンポリシーを用いることができる。従来のラウンドロビンポリシーでは、レジスタは、条件付分岐が付加された後置き換えられるエントリを示し、続いてエントリの置換え後、連続する次のエントリへ進み、適切な方式でエントリを通してサイクルする。しかし、修正されたラウンドロビンポリシーでは、ポインタは、実際に決定されている条件付分岐命令に対応しているエントリを示すために用いられる。例えば、条件付分岐命令に対応しているエントリは、ポインタがこのエントリを示すように調節することによって、除去するためにマークされることができる。それによってエントリは、条件付分岐命令及び対応するターゲットアドレスがBTAC141に付加された後置き換えられる。従って、次に除去されるエントリは、除去されることが最後に決定されたエントリとなるであろう。本明細書で提供されるBTAC141によって用いられる置換えポリシーは典型的であるが、この発明技術は、BTACにおいて一般に用いられる他の置換えポリシーにも適用可能である。
図5は、BTACを管理する方法を示すフローチャート500である。ブロック510で、実際に決定された条件付分岐命令の分岐方向が受け取られる。例えば、図2の経路213は、パイプライン112からの分岐方向を受け取ると分岐予測子回路126を示す。ブロック520で、分岐予測子回路の状態は、実際の分岐方向を受け取ったことに応答して評価される。ブロック530で、BTAC内の条件付分岐命令に関連するエントリは、分岐予測子回路の状態に従って管理される。
ブロック530A乃至530Dは、ブロック530に示す様々なタイプのBTAC内のエントリ制御の典型的な代替実施形態である。これらの典型的な実施形態は、単一で、あるいは組み合わせて用いられうる。ブロック530Aでは、管理されるBTAC内エントリは除去され、「選択されない」と予測される最後の条件付分岐命令がBTACから都合よく除去される。ブロック530Bでは、管理されるBTAC内エントリは、延長された期間BTAC内で保持され、BTAC内で「選択される」と予測される最後の条件付分岐命令の寿命を都合よく延長する。
ブロック530Cは、最後に用いられた置換えポリシーを用いるBTACのために調整された置換え順序内の自身の位置を有する、管理されるBTACエントリを示す。1つの実施形態において、BTAC内のエントリは、エントリが、付加される次のBTACエントリと置き換えられる可能性を低くし、「選択される」と予測される最後の条件付分岐命令のBTAC内での寿命を都合よく延長する方式で修正された置換え順序で自身の位置を有する。別の実施形態において、BTAC内のエントリは、エントリが、付加される次のBTACエントリと置き換えられる可能性を高くする方式で修正された置換え順序で自身の位置を有する。
ブロック530Dは、修正されたラウンドロビン置換えポリシーを用いるBTACのために調整された次の置換えレジスタを示す。1つの実施形態において、次の置換えレジスタのコンテンツが、BTAC内で管理されるエントリを示すように修正される。従って、次の条件付分岐命令がBTACに付加され、ポイントされるエントリが付加されたエントリと置き換わり、「選択されない」と予測される最後の条件付分岐命令がBTACから都合よく除去される。別の実施形態において、次の置換えレジスタのコンテンツは、管理されるエントリの後の、BTAC内の次のエントリを示すように修正される。この方法では、次の条件付分岐命令がBTACに付加される場合、管理されるエントリの後のBTAC内の次のエントリが付加されたエントリと置き換わり、BTAC内で管理されるエントリの寿命を都合よく延長する。BTACを管理する他の管理技術も本開示によって利用可能であることが認識される。
図6は、パイプラインのマルチプルフラッシュサイクルの可能性を低減する方法600を示す。ブロック610で、条件付分岐命令の第1の方向が暗黙に予測される。例えば、もしBTAC内での条件付分岐命令へのヒットがあれば、BTAC内の対応する分岐ターゲットアドレスがプリフェッチされる。従って、分岐方向は暗黙に「選択される」と予測される。ブロック620で、条件付分岐命令の第2の方向が、例えば分岐予測子回路126内に格納された状態情報のような状態情報に基づいて連続して予測される。上記の例に続いて、分岐予測子回路は、条件付分岐命令が「選択されない」であろうと予測するので、BTACの暗黙の予測と整合が取れない。ブロック630で、条件付分岐命令に関連するBTACエントリは、例えば分岐予測子回路126に格納された状態情報を用いて管理される。異なるタイプのBTAC管理が図5の説明に関連して上述された。あるいはブロック630で、条件付分岐命令に関連するBTACエントリは、分岐予測子回路と、分岐予測子回路に格納された任意の状態から独立したBTACルックアップとの間が矛盾すると管理される。
本明細書に開示された実施形態に関連して説明された様々な例示的論理ブロック、モジュール、回路、要素、及び/又は構成要素は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)又はその他のプログラマブル・ロジック・コンポーネント、ディスクリートハードウェア部品、又は本明細書で説明される機能を実行するように設計されたこれらの任意の組み合わせを用いて実現又は実行することができる。汎用プロセッサとしてマイクロプロセッサを用いることが可能であるが、代わりに、従来技術によるプロセッサ、コントローラ、マイクロコントローラ、又は状態機器を用いることも可能である。プロセッサは、例えばDSPとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、DSPコアに接続された1つ又は複数のマイクロプロセッサ、又はこのような任意の構成である計算デバイスの組み合わせとして実現することも可能である。
本明細書に開示された実施形態に関連して説明された方法又はアルゴリズムは、ハードウェアで直接、あるいはプロセッサによって実行されるソフトウェアモジュールで、又はその2つの組み合わせで実現することができる。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD−ROM、又は当該技術において周知であるその他任意の形式の記憶媒体に収納されうる。記憶媒体は、プロセッサがそこから情報を読み取り、またそこに情報を書き込むことができるようにプロセッサに結合されうる。あるいは記憶媒体は、プロセッサに統合されることができる。
本発明は実施形態に関連して開示されたが、当業者には、実施形態の広範囲な変形例が、上記説明及び特許請求の範囲と整合が取れるように利用することができることがよく理解されるであろう。
本発明は実施形態に関連して開示されたが、当業者には、実施形態の広範囲な変形例が、上記説明及び特許請求の範囲と整合が取れるように利用することができることがよく理解されるであろう。
以下に本願発明の当初の特許請求の範囲に記載された発明を付記する。
[C1]
マルチプルステージ分岐予測システムであって、
分岐ターゲットアドレスキャッシュ(BTAC)エントリを格納するように構成されたBTACと、
状態情報を格納し、前記状態情報を用いて分岐命令の方向を予測し、前記分岐命令の実際の分岐結果に応答して前記状態情報に基づいて前記BTACエントリを管理するように構成された分岐予測子回路と
を備えるシステム。
[C2]
C1に記載のシステムにおいて、
前記分岐予測子回路は、前記BTACから前記BTACエントリを除去するように構成されたシステム。
[C3]
C1に記載のシステムにおいて、
前記分岐予測子回路は、延長された期間、前記BTAC内に前記BTACエントリを保持するように構成されたシステム。
[C4]
C1に記載のシステムにおいて、
前記BTACは、格納された1つ又は複数のエントリを置換え順序で保持するように構成され、前記分岐予測子回路は、前記置換え順序にある前記BTACエントリの位置を修正するように構成されたシステム。
[C5]
C4に記載のシステムにおいて、
前記分岐予測子回路は、前記BTACエントリの置換えの可能性を高めるために、前記置換え順序において、前記BTACエントリの位置を現在の位置より高く修正するように構成されたシステム。
[C6]
C1に記載のシステムにおいて、
置換えポインタを更に備え、前記BTACエントリは、修正されたラウンドロビン置換えポリシーを用い、前記分岐予測子回路は、前記BTACエントリを示すように前記置換えポインタを修正するように構成されたシステム。
[C7]
プロセッサ内に配置されたC1に記載のシステム。
[C8]
分岐ターゲットアドレスキャッシュ(BTAC)を管理する方法であって、
条件付分岐命令の実際に決定された分岐方向を受け取ることと、
受け取った前記分岐方向に応答して分岐予測子回路の状態情報を評価することと、
前記分岐予測子回路の状態情報に従って前記条件付分岐命令に関連する前記BTAC内のエントリを管理することと
を備える方法。
[C9]
C8に記載の方法において、
前記BTAC内のエントリを管理することは、前記BTACから前記エントリを除去することを備える方法。
[C10]
C8に記載の方法において、
前記BTAC内のエントリを管理することは、延長された期間、前記BTAC内で前記エントリを保持することを備える方法。
[C11]
C8に記載の方法において、
前記BTAC内に格納されたエントリを置換え順序で保持することを更に備え、前記BTAC内で前記エントリを保持することは更に、前記置換え順序における前記エントリの位置を修正することを備える方法。
[C12]
C11に記載の方法において、
前記エントリの位置を修正することは、前記エントリを示すように置換えポインタを修正することを備える方法。
[C13]
パイプラインのマルチプルフラッシュサイクルの可能性を低減する方法であって、
条件付分岐命令の第1の方向を暗黙に予測することと、
前記条件付分岐命令の第2の方向を状態情報に基づいて予測することと、
前記第1の方向と前記第2の方向との間の矛盾に応答して、前記条件付分岐命令に関連する分岐ターゲットアドレスキャッシュ(BTAC)エントリを管理することと
を備える方法。
[C14]
C13に記載の方法において、
状態情報を用いて前記BTACを管理することは、前記BTACから前記BTACエントリを除去することを備える方法。
[C15]
C13に記載の方法において、
状態情報を用いて前記BTACを管理することは、延長された期間、前記BTAC内で前記BTACエントリを保持することを備える方法。
[C16]
C13に記載の方法において、
前記BTAC内に格納された1つ又は複数のエントリを置換え順序で保持することを更に備え、状態情報を用いて前記BTACを管理することは、前記置換え順序において前記BTACエントリの位置を修正することを備える方法。
[C17]
C16に記載の方法において、
前記BTACエントリの位置を修正することは、前記BTACエントリを示すように置換えポインタを修正することを備える方法。

Claims (17)

  1. マルチプルステージ分岐予測システムであって、
    分岐ターゲットアドレスキャッシュ(BTAC)エントリを格納するように構成されたBTACと、
    状態情報を格納し、前記状態情報を用いて分岐命令の方向を予測し、前記分岐命令の実際の分岐結果に応答して前記状態情報に基づいて前記BTACエントリを管理するように構成された分岐予測子回路と
    を備えるシステム。
  2. 請求項1に記載のシステムにおいて、
    前記分岐予測子回路は、前記BTACから前記BTACエントリを除去するように構成されたシステム。
  3. 請求項1に記載のシステムにおいて、
    前記分岐予測子回路は、延長された期間、前記BTAC内に前記BTACエントリを保持するように構成されたシステム。
  4. 請求項1に記載のシステムにおいて、
    前記BTACは、格納された1つ又は複数のエントリを置換え順序で保持するように構成され、前記分岐予測子回路は、前記置換え順序にある前記BTACエントリの位置を修正するように構成されたシステム。
  5. 請求項4に記載のシステムにおいて、
    前記分岐予測子回路は、前記BTACエントリの置換えの可能性を高めるために、前記置換え順序において、前記BTACエントリの位置を現在の位置より高く修正するように構成されたシステム。
  6. 請求項1に記載のシステムにおいて、
    置換えポインタを更に備え、前記BTACエントリは、修正されたラウンドロビン置換えポリシーを用い、前記分岐予測子回路は、前記BTACエントリを示すように前記置換えポインタを修正するように構成されたシステム。
  7. プロセッサ内に配置された請求項1に記載のシステム。
  8. 分岐ターゲットアドレスキャッシュ(BTAC)を管理する方法であって、
    条件付分岐命令の実際に決定された分岐方向を受け取ることと、
    受け取った前記分岐方向に応答して分岐予測子回路の状態情報を評価することと、
    前記分岐予測子回路の状態情報に従って前記条件付分岐命令に関連する前記BTAC内のエントリを管理することと
    を備える方法。
  9. 請求項8に記載の方法において、
    前記BTAC内のエントリを管理することは、前記BTACから前記エントリを除去することを備える方法。
  10. 請求項8に記載の方法において、
    前記BTAC内のエントリを管理することは、延長された期間、前記BTAC内で前記エントリを保持することを備える方法。
  11. 請求項8に記載の方法において、
    前記BTAC内に格納されたエントリを置換え順序で保持することを更に備え、前記BTAC内で前記エントリを保持することは更に、前記置換え順序における前記エントリの位置を修正することを備える方法。
  12. 請求項11に記載の方法において、
    前記エントリの位置を修正することは、前記エントリを示すように置換えポインタを修正することを備える方法。
  13. パイプラインのマルチプルフラッシュサイクルの可能性を低減する方法であって、
    条件付分岐命令の第1の方向を暗黙に予測することと、
    前記条件付分岐命令の第2の方向を状態情報に基づいて予測することと、
    前記第1の方向と前記第2の方向との間の矛盾に応答して、前記条件付分岐命令に関連する分岐ターゲットアドレスキャッシュ(BTAC)エントリを管理することと
    を備える方法。
  14. 請求項13に記載の方法において、
    状態情報を用いて前記BTACを管理することは、前記BTACから前記BTACエントリを除去することを備える方法。
  15. 請求項13に記載の方法において、
    状態情報を用いて前記BTACを管理することは、延長された期間、前記BTAC内で前記BTACエントリを保持することを備える方法。
  16. 請求項13に記載の方法において、
    前記BTAC内に格納された1つ又は複数のエントリを置換え順序で保持することを更に備え、状態情報を用いて前記BTACを管理することは、前記置換え順序において前記BTACエントリの位置を修正することを備える方法。
  17. 請求項16に記載の方法において、
    前記BTACエントリの位置を修正することは、前記BTACエントリを示すように置換えポインタを修正することを備える方法。
JP2013119018A 2006-06-29 2013-06-05 プロアクティブ分岐ターゲットアドレスキャッシュ管理のための方法及び装置 Withdrawn JP2013229038A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/427,349 2006-06-29
US11/427,349 US8935517B2 (en) 2006-06-29 2006-06-29 System and method for selectively managing a branch target address cache of a multiple-stage predictor

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2009518553A Division JP5558814B2 (ja) 2006-06-29 2007-06-28 プロアクティブ分岐ターゲットアドレスキャッシュ管理のための方法及び装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2015041619A Division JP2015144001A (ja) 2006-06-29 2015-03-03 プロアクティブ分岐ターゲットアドレスキャッシュ管理のための方法及び装置

Publications (2)

Publication Number Publication Date
JP2013229038A true JP2013229038A (ja) 2013-11-07
JP2013229038A5 JP2013229038A5 (ja) 2014-10-30

Family

ID=38846531

Family Applications (4)

Application Number Title Priority Date Filing Date
JP2009518553A Expired - Fee Related JP5558814B2 (ja) 2006-06-29 2007-06-28 プロアクティブ分岐ターゲットアドレスキャッシュ管理のための方法及び装置
JP2013119018A Withdrawn JP2013229038A (ja) 2006-06-29 2013-06-05 プロアクティブ分岐ターゲットアドレスキャッシュ管理のための方法及び装置
JP2015041619A Pending JP2015144001A (ja) 2006-06-29 2015-03-03 プロアクティブ分岐ターゲットアドレスキャッシュ管理のための方法及び装置
JP2017007265A Pending JP2017107578A (ja) 2006-06-29 2017-01-19 プロアクティブ分岐ターゲットアドレスキャッシュ管理のための方法及び装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2009518553A Expired - Fee Related JP5558814B2 (ja) 2006-06-29 2007-06-28 プロアクティブ分岐ターゲットアドレスキャッシュ管理のための方法及び装置

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2015041619A Pending JP2015144001A (ja) 2006-06-29 2015-03-03 プロアクティブ分岐ターゲットアドレスキャッシュ管理のための方法及び装置
JP2017007265A Pending JP2017107578A (ja) 2006-06-29 2017-01-19 プロアクティブ分岐ターゲットアドレスキャッシュ管理のための方法及び装置

Country Status (12)

Country Link
US (2) US8935517B2 (ja)
EP (2) EP2035921B1 (ja)
JP (4) JP5558814B2 (ja)
KR (1) KR101074621B1 (ja)
CN (1) CN101479700B (ja)
BR (1) BRPI0713434A2 (ja)
CA (1) CA2654231A1 (ja)
ES (1) ES2386478T3 (ja)
MX (1) MX2008016116A (ja)
RU (1) RU2421783C2 (ja)
TW (1) TWI386850B (ja)
WO (1) WO2008003019A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015144001A (ja) * 2006-06-29 2015-08-06 クゥアルコム・インコーポレイテッドQualcomm Incorporated プロアクティブ分岐ターゲットアドレスキャッシュ管理のための方法及び装置

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3798998B2 (ja) * 2002-06-28 2006-07-19 富士通株式会社 分岐予測装置および分岐予測方法
JP5145809B2 (ja) * 2007-07-31 2013-02-20 日本電気株式会社 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム
WO2010081942A1 (fr) 2008-12-05 2010-07-22 Alex Hr Roustaei Piles ou micro piles a hydrogene avec un generateur d ' hydrogene
FR2956869B1 (fr) 2010-03-01 2014-05-16 Alex Hr Roustaei Systeme de production de film flexible a haute capacite destine a des cellules photovoltaiques et oled par deposition cyclique des couches
JP2011209774A (ja) * 2010-03-26 2011-10-20 Fujitsu Ltd 分岐予測方法及びその方法を実行する分岐予測回路
US8375565B2 (en) 2010-05-28 2013-02-19 Western Digital (Fremont), Llc Method for providing an electronic lapping guide corresponding to a near-field transducer of an energy assisted magnetic recording transducer
US8351307B1 (en) 2010-06-04 2013-01-08 Western Digital (Fremont), Llc Trailing edge optimized near field transducer having non-rectangular pin cross section
US8320219B1 (en) 2010-06-15 2012-11-27 Western Digital (Fremont), Llc Trailing edge optimized near field transducer
JP5656074B2 (ja) * 2011-02-21 2015-01-21 日本電気株式会社 分岐予測装置、プロセッサ及び分岐予測方法
US9201654B2 (en) * 2011-06-28 2015-12-01 International Business Machines Corporation Processor and data processing method incorporating an instruction pipeline with conditional branch direction prediction for fast access to branch target instructions
US8749790B1 (en) 2011-12-08 2014-06-10 Western Digital (Fremont), Llc Structure and method to measure waveguide power absorption by surface plasmon element
CN104220980B (zh) * 2011-12-29 2018-01-19 英特尔公司 经管理的指令缓存预取
US9298465B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Asynchronous lookahead hierarchical branch prediction
US9430241B2 (en) 2012-06-15 2016-08-30 International Business Machines Corporation Semi-exclusive second-level branch target buffer
US9280351B2 (en) 2012-06-15 2016-03-08 International Business Machines Corporation Second-level branch target buffer bulk transfer filtering
US20140006752A1 (en) * 2012-06-27 2014-01-02 Qualcomm Incorporated Qualifying Software Branch-Target Hints with Hardware-Based Predictions
US10042776B2 (en) * 2012-11-20 2018-08-07 Arm Limited Prefetching based upon return addresses
US9441938B1 (en) 2013-10-08 2016-09-13 Western Digital (Fremont), Llc Test structures for measuring near field transducer disc length
JP6393590B2 (ja) * 2013-11-22 2018-09-19 株式会社半導体エネルギー研究所 半導体装置
US9563430B2 (en) 2014-03-19 2017-02-07 International Business Machines Corporation Dynamic thread sharing in branch prediction structures
US20170371669A1 (en) * 2016-06-24 2017-12-28 Qualcomm Incorporated Branch target predictor
US10353819B2 (en) * 2016-06-24 2019-07-16 Qualcomm Incorporated Next line prefetchers employing initial high prefetch prediction confidence states for throttling next line prefetches in a processor-based system
GB2553582B (en) * 2016-09-13 2020-07-08 Advanced Risc Mach Ltd An apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry
US10613869B2 (en) * 2018-03-29 2020-04-07 Arm Limited Branch target address provision
US20210149676A1 (en) * 2019-11-14 2021-05-20 Higon Austin R&D Center Corporation Branch Prediction Method, Branch Prediction Unit and Processor Core

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2018A (en) * 1841-03-26 Joseph francis
US4018A (en) * 1845-05-01 Closing and opening the- entrances to beehives
EP0666538A2 (en) * 1994-02-04 1995-08-09 Motorola, Inc. Data processor with branch target address cache and method of operation
JPH0962508A (ja) * 1995-08-29 1997-03-07 Hitachi Ltd 分岐登録命令を有するプロセッサ

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2560889B2 (ja) * 1990-05-22 1996-12-04 日本電気株式会社 マイクロプロセッサ
JP3494484B2 (ja) * 1994-10-12 2004-02-09 株式会社ルネサステクノロジ 命令処理装置
JPH10105401A (ja) * 1996-09-30 1998-04-24 Fujitsu Ltd プロセッサの分岐命令予測装置
US7103794B2 (en) * 1998-06-08 2006-09-05 Cacheflow, Inc. Network object cache engine
US5890008A (en) * 1997-06-25 1999-03-30 Sun Microsystems, Inc. Method for dynamically reconfiguring a processor
US5964870A (en) * 1997-09-22 1999-10-12 Intel Corporation Method and apparatus for using function context to improve branch
US6263427B1 (en) * 1998-09-04 2001-07-17 Rise Technology Company Branch prediction mechanism
US6553488B2 (en) * 1998-09-08 2003-04-22 Intel Corporation Method and apparatus for branch prediction using first and second level branch prediction tables
US6601161B2 (en) * 1998-12-30 2003-07-29 Intel Corporation Method and system for branch target prediction using path information
US6357016B1 (en) 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US6732260B1 (en) * 2000-03-06 2004-05-04 Intel Corporation Presbyopic branch target prefetch method and apparatus
US7000096B1 (en) * 2000-08-03 2006-02-14 International Business Machines Corporation Branch prediction circuits and methods and systems using the same
US7200740B2 (en) 2001-05-04 2007-04-03 Ip-First, Llc Apparatus and method for speculatively performing a return instruction in a microprocessor
US20040172524A1 (en) * 2001-06-29 2004-09-02 Jan Hoogerbrugge Method, apparatus and compiler for predicting indirect branch target addresses
US7082520B2 (en) * 2002-05-09 2006-07-25 International Business Machines Corporation Branch prediction utilizing both a branch target buffer and a multiple target table
US6965983B2 (en) 2003-02-16 2005-11-15 Faraday Technology Corp. Simultaneously setting prefetch address and fetch address pipelined stages upon branch
US7266676B2 (en) * 2003-03-21 2007-09-04 Analog Devices, Inc. Method and apparatus for branch prediction based on branch targets utilizing tag and data arrays
US7831817B2 (en) * 2003-04-15 2010-11-09 Arm Limited Two-level branch prediction apparatus
KR100528479B1 (ko) * 2003-09-24 2005-11-15 삼성전자주식회사 전력 소모를 감소시키기 위한 분기 예측기 및 구현방법
JP4213181B2 (ja) * 2004-04-21 2009-01-21 富士通株式会社 分岐予測装置、その方法、及びプロセサ
US7437543B2 (en) * 2005-04-19 2008-10-14 International Business Machines Corporation Reducing the fetch time of target instructions of a predicted taken branch instruction
US8935517B2 (en) * 2006-06-29 2015-01-13 Qualcomm Incorporated System and method for selectively managing a branch target address cache of a multiple-stage predictor

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2018A (en) * 1841-03-26 Joseph francis
US4018A (en) * 1845-05-01 Closing and opening the- entrances to beehives
EP0666538A2 (en) * 1994-02-04 1995-08-09 Motorola, Inc. Data processor with branch target address cache and method of operation
JPH07262006A (ja) * 1994-02-04 1995-10-13 Motorola Inc 分岐ターゲットアドレスキャッシュを備えたデータプロセッサ
JPH0962508A (ja) * 1995-08-29 1997-03-07 Hitachi Ltd 分岐登録命令を有するプロセッサ

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
JPN6012015635; '技術速報「分岐予測機構を強化」' 日経エレクトロニクス no.607, 19940509, 10頁, 日経BP社 *
JPN6012015638; David Levitan et al.: '"The PowerPC 620(TM) microprocessor: a high performance superscalar RISC microprocessor"' Compcon '95.'Technologies for the Information Superhighway', Digest of Papers. , 19950509, pages:285-291, IEEE *
JPN6014005298; C.H.Perleberg et al.: '"Branch target buffer design and optimization"' IEEE Transactions on Computers Volume:42,Issue: 4, 199304, pages:396-412, IEEE *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015144001A (ja) * 2006-06-29 2015-08-06 クゥアルコム・インコーポレイテッドQualcomm Incorporated プロアクティブ分岐ターゲットアドレスキャッシュ管理のための方法及び装置

Also Published As

Publication number Publication date
EP2434393B1 (en) 2017-12-20
RU2421783C2 (ru) 2011-06-20
WO2008003019A3 (en) 2008-05-02
US8782383B2 (en) 2014-07-15
KR20090031751A (ko) 2009-03-27
EP2434393A1 (en) 2012-03-28
JP2017107578A (ja) 2017-06-15
JP2015144001A (ja) 2015-08-06
CN101479700B (zh) 2015-06-03
EP2035921A2 (en) 2009-03-18
BRPI0713434A2 (pt) 2012-03-13
US20080005543A1 (en) 2008-01-03
EP2035921B1 (en) 2012-06-06
WO2008003019A2 (en) 2008-01-03
TWI386850B (zh) 2013-02-21
MX2008016116A (es) 2009-01-20
CA2654231A1 (en) 2008-01-03
KR101074621B1 (ko) 2011-10-17
CN101479700A (zh) 2009-07-08
US20120042155A1 (en) 2012-02-16
US8935517B2 (en) 2015-01-13
RU2009102809A (ru) 2010-08-10
JP5558814B2 (ja) 2014-07-23
TW200816046A (en) 2008-04-01
ES2386478T3 (es) 2012-08-21
JP2009543223A (ja) 2009-12-03

Similar Documents

Publication Publication Date Title
JP5558814B2 (ja) プロアクティブ分岐ターゲットアドレスキャッシュ管理のための方法及び装置
JP5734945B2 (ja) スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ
US7856548B1 (en) Prediction of data values read from memory by a microprocessor using a dynamic confidence threshold
JP2015007995A (ja) ループ終結分岐により分岐履歴レジスタの更新を抑制すること
JP2008532142A5 (ja)
JP2009536770A (ja) ブロックに基づく分岐先アドレスキャッシュ
EP2057536B1 (en) Methods and apparatus for reducing lookups in a branch target address cache
US6738897B1 (en) Incorporating local branch history when predicting multiple conditional branch outcomes

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140617

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20140916

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20141104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150303

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20150327

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20150327