JP2013080497A - スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ - Google Patents

スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ Download PDF

Info

Publication number
JP2013080497A
JP2013080497A JP2012268455A JP2012268455A JP2013080497A JP 2013080497 A JP2013080497 A JP 2013080497A JP 2012268455 A JP2012268455 A JP 2012268455A JP 2012268455 A JP2012268455 A JP 2012268455A JP 2013080497 A JP2013080497 A JP 2013080497A
Authority
JP
Japan
Prior art keywords
instruction
branch
btac
block
entry
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2012268455A
Other languages
English (en)
Other versions
JP5734945B2 (ja
Inventor
Wayne Smith Rodney
ロドニー・ウェイン・スミス
Norris Diefenderfer James
ジェームズ・ノリス・ディーフェンダーファー
Michael Stempel Brian
ブライアン・マイケル・ステムペル
Andrew Sartorius Thomas
トマス・アンドリュー・サートリウス
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 JP2013080497A publication Critical patent/JP2013080497A/ja
Application granted granted Critical
Publication of JP5734945B2 publication Critical patent/JP5734945B2/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
    • 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
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

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)の各エントリ内に複数の分岐ターゲットアドレス(BTA)の格納スペースを提供することなく、同じ命令ブロック内に属する2つ又はそれ以上の選択された分岐命令のBTAの格納を可能とするスライドウィンドウブロックベースのBTACを提供する。
【解決手段】BTAC25は、各エントリが、評価され選択されブロック内の第1の命令のアドレスに関連するタグを有する少なくとも1つの分岐命令を含む命令ブロックに関連する、複数のエントリを備える。ブロックは各々が、Iキャッシュ22からフェッチされた命令グループに対応する。分岐命令は、2つ又はそれより多くのフェッチグループに含まれ、BTACエントリに関連する2つ又はそれより多くの命令ブロックにも含まれる。BTACは、各々が少なくとも1つの選択された分岐命令を含む、異なる命令ブロックに関連するエントリを格納する。
【選択図】図2

Description

本発明は、一般にプロセッサ分野に関し、特に、スライドウィンドウ構成を有するブロックベースの分岐ターゲットアドレスキャッシュに関する。
マイクロプロセッサは、幅広い様々なアプリケーションにおいて計算タスクを実行する。プロセッサ性能の向上は、高度なソフトウェアによるより高速な動作及び/又は増加した機能を実現することによって製品改良を進めるための永遠の設計目標である。例えばポータブル電子デバイスのような多くの埋込み型アプリケーションにおいて、電力を節約すること及びチップサイズを低減することも、プロセッサの設計及び実装における重要な目標である。
近年のプロセッサは、各々が複数の実行ステップを有する連続した命令群が実行においてオーバーラップしている、パイプラインされたアーキテクチャを用いる。連続する命令ストリームにおいて命令群の並行処理を用いる能力は、プロセッサ性能を向上するために著しく貢献する。理想的な状態の下、かつ、パイプラインを満たす最初の簡潔な処理に従って1つのサイクル内で各パイプステージを完了するプロセッサ内で、命令はサイクル毎に実行を完了することができる。
このような理想的な状態は、命令間のデータ依存性(データハザード)、例えば分岐のような制御依存性(制御ハザード)、プロセッサリソース割当競合(構成ハザード)、中断、キャッシュミス等を含む様々な要因によって実際には実現しえない。プロセッサ設計の主要目標は、これらのハザードを回避し、パイプラインを「フル」に保つことである。
実世界の全てのプログラムは、条件付きでない分岐命令又は条件付き分岐命令を備えることのできる分岐命令を含む。分岐命令の実際の分岐挙動は、命令がパイプライン内の深くで評価されるまでしばしば知られない。これは、プロセッサが、分岐命令の後に何れの命令をフェッチするかを知らず、分岐命令が評価するまで知らないであろうために、パイプラインの機能を停止する制御ハザードを生成する。近年のプロセッサは、条件付き分岐命令の分岐挙動及び分岐ターゲットアドレスが、パイプライン内の早期において予測され、プロセッサが、分岐予測に基づいて、命令を推測的にフェッチし実行することによってパイプラインをフルに保つ、様々な形式の分岐予測を用いる。もし予測が正しければ、性能は最大化され、電力消費は最小化される。分岐命令が実際に評価される場合、もし分岐が誤予測されれば、推測的にフェッチされた命令はパイプラインからフラッシュされなくてはならず、新たな命令が正しい分岐ターゲットアドレスからフェッチされなくてはならない。誤予測された分岐は、プロセッサ性能及び電力消費に不利な影響を及ぼす。
分岐予測には、条件評価と分岐ターゲットアドレスとの2つの構成要素がある。(条件付き分岐命令のみに関係する)条件評価は二者択一である。すなわち、分岐が選択され、異なるコードシーケンスへ実行をジャンプさせるか、あるいは、選択されず、プロセッサが、条件付き分岐命令に後続する次の連続する命令を実行するかの何れかである。分岐ターゲットアドレス(BTA)は、制御が、選択されたものとして評価された条件付き分岐命令又は条件付きでない分岐命令の何れかに分岐するアドレスである。いくつかの一般的な分岐命令は、命令opコード内にBTAを含むか、あるいはBTAが容易に計算されるオフセットを含む。他の分岐命令の場合、BTAはパイプラインの深くまで計算されないので、予測しなければならない。
BTA予測の1つの周知技術は、分岐ターゲットアドレスキャッシュ(BTAC)を用いる。従来技術で知られるようなBTACは、分岐命令アドレス(BIA)によってインデックスされる完全な連想型キャッシュであり、各データ場所(又はキャッシュ「ライン」)が単一のBTAを含む。分岐命令がパイプライン内で選択されたものとして評価し、自身の実際のBTAが計算されると、BIA及びBTAは(例えばパイプラインステージへの書き戻し中に)BTACへ書き込まれる。新たな命令をフェッチすると、BTACは命令キャッシュ(又はIキャッシュ)と同時にアクセスされる。もし命令アドレスがBTAC内でヒットすれば、プロセッサは、(Iキャッシュからフェッチされた命令の復号前に)命令が分岐命令であることを知り、分岐命令の前の実行の実際のBTAである予測されたBTAが提供される。もし分岐予測回路が、分岐が選択されると予測すれば、予測されたBTAにおいて命令のフェッチが開始する。もし分岐が選択されていないと予測されれば、命令フェッチは連続して継続する。
BTACという用語は、当該技術において、飽和カウンタをBIAに関連付け、条件付き評価予測(すなわち選択されるか選択されないか)のみを提供するキャッシュを示すためにも用いられることを留意されたい。
高性能プロセッサは、1つより多くの命令を同時にIキャッシュからフェッチすることができる。例えば、4つの命令を備えることができるキャッシュライン全体が、それらを連続してパイプラインへ送る命令フェッチバッファへフェッチされうる。本願の譲受人に譲渡され、参照によって本願に組み込まれた特許出願11/089,072号は、各キャッシュライン内に2つ又はそれ以上のBTAを格納し、BTAのうちの何れがBTACヒットにおいて予測されたBTAとして選択されるかを決定するために分岐予測オフセットテーブル(BPOT)をインデックスするBTACを開示する。BPOTは、多くのBTAに同時にアクセスする必要があるであろう、多くの読取ポートを備えたBTACの高価なハードウェア構成を回避する。
本願の譲受人に譲渡され、参照によって本願に組み込まれた特許出願“Block-Based Branch Target Address Cache”は、複数のエントリを格納するBTACであって、各エントリが、ブロック内の1つ又は複数の命令が評価され選択された分岐命令である場合、命令ブロックに関連するブロックベースのBTACを開示する。BTACエントリは、関連するブロック内の何れの命令が選択された分岐命令であるかを示すインディケータと、選択された分岐のBTAとを含む。BTACエントリは、ブロック内の全ての命令に共通のアドレスビットによって(すなわち、ブロック内で命令を選択する下位のアドレスビットを切り捨てることによって)インデックスされる。従って、ブロックサイズ及び相対的なブロック境界線が固定される。
ブロックベースのBTACエントリは、各ブロックがただ1つの選択された分岐命令を含む場合に良好に機能する。ブロック評価で決定として選択された2つ又はそれ以上の分岐命令が、1つの分岐命令のBTAに格納されなければならず、別の分岐命令のBTAに格納されてはならない場合、他の分岐評価が選択されると、性能及び電力の効率低下をもたらす。各BTACエントリに多くのBTAを格納することができる。しかしこれは、命令ブロックがBTACエントリ内のBTA格納場所と同じ数の選択された分岐命令を含まない通常の場合、貴重なシリコンエリアを無駄にする。
本明細書に開示された1つ又は複数の実施形態によると、スライドウィンドウブロックベースのBTACは、各エントリが、評価され選択された少なくとも1つの分岐命令を含む命令のブロックに関連する複数のエントリを備え、ブロック内の第1の命令のアドレスによってインデックスされる。ブロックサイズは固定され(かつ命令フェッチグループのサイズに対応し)ているが、ブロック境界は固定されておらず、命令ブロックはオーバーラップすることができる。従って分岐命令は、BTACエントリによって表示される2つ又はそれ以上の命令ブロックに含まれることができる。いくつかの場合において、これは、スライドウィンドウブロックベースのBTACが、新たなブロックを定め、関連するBTACエントリを生成することによって、全てのBTACエントリのBTA格納容量を増加することによってメモリを浪費することなく、単一の命令ブロック内に属する2つ又はそれ以上の選択された分岐命令のBTAを格納することを可能とする。
1つの実施形態は、プロセッサにおいて分岐命令を予測する方法に関する。評価され選択された少なくとも1つの分岐命令を含む2つ又はそれ以上の命令のブロックに関連するエントリが、分岐ターゲットアドレスキャッシュ(BTAC)内に格納され、BTACエントリは、ブロック内の第1の命令のアドレスに関連するタグを有する。命令をフェッチすると、1つ又は複数のブロック内の命令が条件付き分岐命令であるかを判定するために、BTACがアクセスされる。
別の実施形態はプロセッサに関する。プロセッサは、各エントリが、評価され選択された少なくとも1つの分岐命令を含む2つ又はそれ以上の命令のブロックに関連する複数のエントリを格納する分岐ターゲットアドレスキャッシュ(BTAC)と、ブロック内の第1の命令のアドレスに関連するタグを有するBTACエントリとを含む。プロセッサはまた、命令のグループをフェッチすると、命令アドレスを用いてBTACをインデックスするように動作可能な命令実行パイプラインも含む。
図1は、プロセッサの1つの実施形態の機能ブロック図である。 図2は、分岐ターゲットアドレスキャッシュ及び付随する回路の1つの実施形態の機能ブロック図である。
図1は、プロセッサ10の機能ブロック図を示す。プロセッサ10は、制御論理11に従って、命令実行パイプライン12内で命令を実行する。いくつかの実施形態において、パイプライン12は、複数の並行するパイプラインを備えるスーパースカラ設計であることができる。パイプライン12は、パイプステージ内に構成された様々なレジスタ又はラッチ16と、1つ又は複数の算術論理演算ユニット(ALU)18とを含む。汎用レジスタ(GPR)ファイル20は、メモリ階層の最上層を備えるレジスタを提供する。
パイプライン12は、命令側変換索引バッファ(ITLB)24によって管理されるメモリアドレス変換及び許可を用いて、命令キャッシュ(Iキャッシュ)22から命令をフェッチする。同時に、パイプライン12は、スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ(BTAC)25へ命令アドレスを提供する。もし命令アドレスがBTAC25内でヒットすれば、スライドウィンドウブロックベースのBTAC25は、Iキャッシュ22へ分岐ターゲットアドレス(BTA)を提供し、予測されたBTAからの命令のフェッチを瞬時に開始する。スライドウィンドウブロックベースのBTAC25の構成及び動作は、以下でより完全に説明される。
主要変換索引バッファ(TLB)28によって管理されるメモリアドレス変換及び許可を用いて、データキャッシュ(Dキャッシュ)26からデータがアクセスされる。様々な実施形態において、ITLBはTLBの一部のコピーを備えることができる。あるいは、ITLBとTLBとは統合することができる。同様に、プロセッサ10の様々な実施形態において、Iキャッシュ22とDキャッシュ26とは統合又は統一することができる。メモリインタフェース30の制御下で、Iキャッシュ22及び/又はDキャッシュ26におけるミスは、主要(オフチップ)メモリ32へのアクセスをもたらす。
プロセッサ10は、様々な周辺デバイス36、38へのアクセスを制御する入力/出力(I/O)インタフェース34を含むことができる。当業者は、プロセッサ10の多くの変形例が可能であることを理解するであろう。例えばプロセッサ10は、Iキャッシュ22及びDキャッシュ26の何れか又は両方の第2レベル(L2)キャッシュを含むことができる。加えて、プロセッサ10内に示す機能ブロックのうちの1つ又は複数を、特定の実施形態から除外することができる。
分岐命令はほとんどのコードにおいて共通である。いくつかの推定によれば、5つの命令のうちの1つほどが分岐でありうる。従って、早期の分岐検索、(条件付き分岐命令の)分岐評価予測、及び予測されたBTAからのフェッチ命令が、プロセッサ性能に決定的となりうる。近年のプロセッサは、各キャッシュライン内に複数の命令を格納するIキャッシュ22を含む。命令は、「フェッチグループ」でIキャッシュからフェッチされる。フェッチグループは、キャッシュラインの一部、キャッシュライン全体、又はキャッシュラインより多くを備えることができる。
一例として、この例は単に例示的であり限定はしないが、プロセッサのフェッチグループが、4つの命令のIキャッシュ22ラインサイズと一致すると仮定する。一般に周知のBTACにアクセスし、4つ全ての命令アドレスに対して同時に探索すると、もし1つより多くの命令アドレスがBTAC内でヒットすれば、BTAを選択するために、4つのアドレス比較入力ポートと、4つのBTA出力ポートと、マルチプレクサ及び制御論理とが必要となるであろう。
1つ又は複数の実施形態によると、スライドウィンドウブロックベースのBTAC25は複数のエントリを備える。各エントリは、命令ブロック内で選択された分岐命令に関連する分岐情報を格納する。命令ブロックはフェッチグループに対応し、BTACエントリは、ブロック内の第1の命令のアドレスに関連するタグを含む。タグは、Iキャッシュからフェッチグループをフェッチするためにも用いられる。ある実施形態において、タグは、フェッチグループ内の第1の命令であることができる。本明細書で用いられるように、「命令ブロック」及び「フェッチグループ」という用語は同義である。各BTACエントリは、ブロック内の少なくとも1つの命令が(BTAC25内でのヒットによって示される)評価され選択された分岐命令であることを示し、ブロック内の何れの命令が選択された分岐であるかを示すインディケータと自身のBTAとを含む。
図2は、スライドウィンドウブロックベースのBTAC25、Iキャッシュ22、パイプライン12、及び(例えば制御論理11の一部を備えることができる)分岐予測論理回路15の機能ブロック図を示す。この例において、命令A乃至LはIキャッシュ22内の3つのラインに存在する。説明の明確化のために、この例におけるプロセッサフェッチグループはキャッシュラインであるが、これは本発明の限定ではない。命令及び対応するコードセグメントのブロック200A乃至200Cが、回路図の左側に列挙される。ブロックは順番に符号が付けられているが、ブロックが符号の順番どおりにフェッチされると解釈されるべきではないことが留意される。おそらく、例示的なコードセグメントの分岐性質によって、ブロックがフェッチされる順番は、ブロック200A、ブロック200C、そしてブロック200Bとなるであろう。
図2のスライドウィンドウブロックベースのBTAC25内の各エントリは、3つの要素を備える。すなわち、(Iキャッシュにアクセスするために用いられる命令でもある)関連する命令ブロック内の第1の命令のアドレスを備えるタグフィールドと、ブロック内の何れの命令が選択された分岐であるかを示す分岐インディケータと、最後に評価され選択された時の分岐命令の実際のBTAとである。
図2の例において、命令A、B、C、及びDを備えるIキャッシュ22の第1のライン(又はフェッチグループ)がフェッチされ実行される。これらのうち、命令B及びCは両方とも分岐命令である。命令Bが実行され、評価され選択され、分岐ターゲットアドレスBTAが計算される。BTACエントリは、命令ブロックABCDのために生成される。BTACエントリ(図2に示す第1のエントリ)は、命令Aのアドレスに関連するタグ、ブロック内の第2の命令が選択された分岐(アドレス01)であることを示すインディケータ、及びBTAを有する。別の実施形態において、分岐インディケータは、何れの命令が選択された分岐であるかを示す、例えば0100のような復号されたインディケーションを備えることができる。
この例において、命令Bは、別のセクションのコード(本開示に関係のない詳細)における手順への分岐をもたらす。実行を完了すると、実行されるとターゲットBTAを用いて選択されたものを評価する他のコードが命令Cへ再び分岐する。固定された命令ブロック境界を有する一般に周知のブロックベースのBTACにおいて、命令Cがブロック200Aに固定して関連するであろうために、何れのBTAもBTACエントリ内のBTAと置換するか、あるいは、BTAが保存され、BTAが破棄されなければならない。
しかし、スライドウィンドウブロックベースのBTAC25の流動的な命令ブロック境界を用いると、新たな命令ブロックは、手順から命令Cへ戻るとIキャッシュからフェッチされるフェッチグループに対応して定められる。新たなブロックは、命令C、D、E、及びFを備え、ゆえに命令ブロックABCDと部分的にオーバーラップする。対応するBTACエントリが、スライドウィンドウブロックベースのBTAC25内で生成される。新たなBTACエントリ(図2に示す第2のエントリ)のタグは、(Iキャッシュにアクセスするために用いられる命令でもある)ブロック内の第1の命令、つまり命令Cのアドレスに関連する。分岐インディケータは、ブロック内の第1の命令のアドレスである値00を有し、命令CがブロックCDEF内の選択された分岐命令であることを示す。最終的に、ブロックCDEFに関連するBTACエントリは、分岐命令CのターゲットアドレスであるBTAを含む。このようにして、スライドウィンドウブロックベースのBTAC25は、全てのBTACエントリが2つ又はそれより多くのBTAのための格納スペースを含むことを必要とせず、ブロックABCD内の選択された分岐命令の両方のBTAを格納することができる。
更に、スライドウィンドウブロックベースのBTAC25内の第2のエントリは、分岐命令Cの挙動を、Iキャッシュからのフェッチ前に選択されたコード経路に結合する。つまり、手順から戻る間、コードが命令Cに分岐した場合、分岐命令Cが選択されたものとして評価されたために、その手順から命令Cへの次の戻りは、ほとんど選択したものとして同様に評価するであろう。逆に、命令Cが連続して実行された場合(すなわち、選択されないと評価された分岐命令と介入手順とが実行されなかった場合)、選択されないと評価しうる。
第3のBTACエントリは、命令Iで始まるフェッチグループに対応するI、J、K、及びLを備える命令ブロックに対応する。第3のBTACエントリのタグは、ブロック内の第1の命令のアドレスに関連する。このアドレスは、フェッチグループIJKLのフェッチにおいてIキャッシュがアクセスされるのに用いられるアドレスである。このグループにおいて、命令J及びLが分岐命令である。この例において、命令Jが評価され選択され、分岐インディケータはブロック内の第2の命令をアドレス指定し、命令JのBTAがBTACエントリ内に格納される。
もちろん、図2に示すブロック構成及びBTACエントリは単なる例であり、本発明はこの実施形態に限定されない。特に、フェッチグループはIキャッシュラインの大きさに調整される必要はない。一般に、例えば分岐情報がターゲットへ分岐し、Iキャッシュライン内の何処にでもあることができる場合のように、フェッチグループはIキャッシュライン内の何処からでも始まることができる。対応するスライドウィンドウブロックベースのBTAC25エントリのタグは、フェッチグループ内の第1の命令のアドレスに関連するであろう。従って、同じフェッチグループが再びIキャッシュからフェッチされると、スライドウィンドウブロックベースのBTAC25の同時アクセスは、命令ブロック内の以前評価され選択された分岐命令を示すエントリを取得するであろう。
パイプライン12の復号/フェッチ論理13は、Iキャッシュ22から次の命令フェッチグループをフェッチする命令アドレスを生成するように構成される。動作中、命令アドレスは、スライドウィンドウブロックベースのBTAC25のタグフィールドと同時に比較する。もし命令アドレスがBTAC25内のタグと一致すれば、ブロック内の何れの命令が選択された分岐命令であるかを示すためにヒットインディケーション及び対応する分岐インディケータが復号/フェッチ論理13へ提供される。インディケータは、分岐予測論理15へも提供される。同時に、対応するエントリのBTAがIキャッシュ22へ提供され、BTAからの命令の瞬時の推測的なフェッチを可能とし、分岐が予測され選択される事象においてパイプラインをフルに保つ。
命令は復号論理13において復号される。分岐命令が検出されると(フェッチグループアドレスがスライドウィンドウブロックベースのBTAC25内でヒットするか否かに関わらず)、フェッチグループ情報がパイプライン12内に保存される。この情報は例えば、分岐情報アドレス(BIA)からフェッチグループ内の第1の命令のアドレスへのネガティブオフセットを備えることができる。この情報は、分岐情報が評価され選択される可能性に備えて保存され、自身のBTAが、フェッチグループ内の第1の命令のアドレス、つまりIキャッシュがアクセスされるのに用いられるアドレスをタグとして有する新たなBTACエントリ内に格納されることを可能とする。
パイプライン12の実行ステージの論理14において、条件付き分岐命令が評価される。EXE論理14は更に、選択されるものとして評価される条件付き分岐命令及び条件付きでない分岐命令の両方のBTAを計算し提供する。もし予測された分岐評価が間違っていたり、キャッシュされたBTAが計算されたBTAと一致していなければ、パイプライン12は、推測的命令のパイプラインからのフラッシュ、格納リソース及び計算リソースの再割当等を含みうる、誤予測された分岐の回復を実行しなければならない。
現在の分岐挙動に従って予測論理を更新するために、EXE論理14によって現在の分岐評価が分岐予測論理15へ提供される。分岐予測論理15は、(例えば分岐履歴レジスタ、分岐予測テーブル、飽和カウンタ等のような)自身の予測テーブルを更新し、更にスライドウィンドウブロックベースのBTAC25を更新する。存在するBTACエントリに関して、これは、もし異なる現在のBTAが計算されればキャッシュされたBTAを更新することを備えることができる。あるいは、もし対応するブロック内の異なる分岐命令が選択されたものを評価し、存在するキャッシュされたBTAを更新する決定がなされれば、分岐インディケータとBTAとの両方を更新することを備えることができる。
もし分岐命令が選択されたものを評価し、フェッチグループ情報がスライドウィンドウブロックベースのBTAC25内の何れのタグからもユニークなグループフェッチアドレスを示せば、分岐予測論理15は新たなBTACエントリを生成する。新たなBTACエントリは、分岐命令がフェッチされるフェッチグループの第1の命令から始まる命令ブロックに対応し、従って新たなBTACエントリのタグは第1の命令のアドレスに関連する。このようにして、分岐命令はスライドウィンドウブロックベースのBTAC25内の対応するエントリを有する2つ又はそれより多くの命令ブロックに含まれることができる。この特徴の1つの重要な利点は、第1のブロック内の第1の分岐命令のBTAが第1のBTACエントリ内に格納され、第1のブロック内であるがIキャッシュへの別のアクセスによる第2のフェッチグループの一部でもある第2の分岐命令のBTAが(第2の命令ブロックを定める)第2のBTACエントリ内に格納されることができる点である。従って、スライドウィンドウブロックベースのBTAC25は、全てのBTACエントリ内の多くのBTAにメモリを提供することによって貴重なシリコン領域を浪費することなく、両方のBTAを格納することができる。
本明細書で用いられるように、一般に分岐情報は、条件付き又は条件付きでない分岐命令の何れを称することもできる。本明細書で用いられるように、「選択された分岐」、「選択された分岐命令」、又は「評価され選択された分岐命令」は、連続する命令実行フローを連続しないアドレスに転ずることとして評価された条件付でない分岐命令、又は条件付き分岐命令の何れかを称する(つまり、選択されないものと反対に選択される)。
本発明は、本明細書で特定の機能、局面、及びそれらの実施形態に関して説明されたが、多くの変形例、改良例、及びその他の実施形態が本発明の範囲内で可能であり、従って、全ての変形例、改良例、及び実施形態は本発明の範囲内であると見なされることが明らかになるであろう。従って本実施形態は、全ての局面において例示的であって限定的でないと解釈され、特許請求の範囲の意味及び同等の範囲内でもたらされる全ての変更は、本明細書に包括されることが意図されている。
本発明は、本明細書で特定の機能、局面、及びそれらの実施形態に関して説明されたが、多くの変形例、改良例、及びその他の実施形態が本発明の範囲内で可能であり、従って、全ての変形例、改良例、及び実施形態は本発明の範囲内であると見なされることが明らかになるであろう。従って本実施形態は、全ての局面において例示的であって限定的でないと解釈され、特許請求の範囲の意味及び同等の範囲内でもたらされる全ての変更は、本明細書に包括されることが意図されている。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1]
プロセッサ内で分岐命令を予測する方法であって、
分岐ターゲットアドレスキャッシュ(BTAC)内にエントリを格納することであって、前記BTACのエントリは、評価され選択された少なくとも1つの分岐命令を含む2つ又はそれ以上の命令のブロックに関連し、前記BTACのエントリは、前記ブロック内の第1の命令のアドレスに関連するタグを有することと、
命令のグループをフェッチすると、対応するブロック内の命令が選択された分岐命令であるかを判定するために前記BTACにアクセスすることと
を備える方法。
[C2]
C1に記載の方法において、
BTACの各エントリは、前記関連するブロック内の何れの命令が選択された分岐命令かを示すインディケータを含む方法。
[C3]
C1に記載の方法において、
前記関連するブロック内の選択された分岐命令の分岐ターゲットアドレス(BTA)をBTACの各エントリ内に格納することを更に備える方法。
[C4]
C3に記載の方法において、
前記BTACへのアクセス後、前記BTAから命令をフェッチすることを更に備える方法。
[C5]
C1に記載の方法において、
BTACの少なくとも1つのエントリに関して、前記ブロック内の第1の命令は、命令キャッシュライン内の第1の命令である方法。
[C6]
C1に記載の方法において、
BTACの少なくとも1つのエントリに関して、前記ブロック内の第1の命令のアドレスは、分岐命令の前記分岐ターゲットアドレスである方法。
[C7]
C3に記載の方法において、BTACの第1のエントリは、選択された第1及び第2の分岐命令を含む第1の命令ブロックに関連し、前記第1の分岐命令のBTAを格納する方法。
[C8]
C7に記載の方法において、
前記選択された第2の分岐命令を含む第2の命令ブロックに関連するBTACの第2のエントリは、前記第2の分岐命令のBTAを格納する方法。
[C9]
複数のエントリを格納する分岐ターゲットアドレスキャッシュ(BTAC)であって、各エントリは、評価され選択された少なくとも1つの分岐命令を含む2つ又はそれ以上の命令のブロックに関連し、前記BTACのエントリは、前記ブロック内の第1の命令のアドレスに関連するタグを有するBTACと、
命令のグループをフェッチすると、命令アドレスを用いて前記BTACをインデックスするように動作可能な命令実行パイプラインと
を備えるプロセッサ。
[C10]
C9に記載のプロセッサにおいて、
BTACの各エントリは、前記関連するブロック内の何れの命令が選択された分岐命令かを示すインディケータを含むプロセッサ。
[C11]
C9に記載のプロセッサにおいて、
BTACの各エントリは、前記関連するブロック内の選択された分岐命令の分岐ターゲットアドレス(BTA)を含むプロセッサ。

Claims (11)

  1. プロセッサ内で分岐命令を予測する方法であって、
    分岐ターゲットアドレスキャッシュ(BTAC)内にエントリを格納することであって、前記BTACのエントリは、評価され選択された少なくとも1つの分岐命令を含む2つ又はそれ以上の命令のブロックに関連し、前記BTACのエントリは、前記ブロック内の第1の命令のアドレスに関連するタグを有することと、
    命令のグループをフェッチすると、対応するブロック内の命令が選択された分岐命令であるかを判定するために前記BTACにアクセスすることと
    を備える方法。
  2. 請求項1に記載の方法において、
    BTACの各エントリは、前記関連するブロック内の何れの命令が選択された分岐命令かを示すインディケータを含む方法。
  3. 請求項1に記載の方法において、
    前記関連するブロック内の選択された分岐命令の分岐ターゲットアドレス(BTA)をBTACの各エントリ内に格納することを更に備える方法。
  4. 請求項3に記載の方法において、
    前記BTACへのアクセス後、前記BTAから命令をフェッチすることを更に備える方法。
  5. 請求項1に記載の方法において、
    BTACの少なくとも1つのエントリに関して、前記ブロック内の第1の命令は、命令キャッシュライン内の第1の命令である方法。
  6. 請求項1に記載の方法において、
    BTACの少なくとも1つのエントリに関して、前記ブロック内の第1の命令のアドレスは、分岐命令の前記分岐ターゲットアドレスである方法。
  7. 請求項3に記載の方法において、BTACの第1のエントリは、選択された第1及び第2の分岐命令を含む第1の命令ブロックに関連し、前記第1の分岐命令のBTAを格納する方法。
  8. 請求項7に記載の方法において、
    前記選択された第2の分岐命令を含む第2の命令ブロックに関連するBTACの第2のエントリは、前記第2の分岐命令のBTAを格納する方法。
  9. 複数のエントリを格納する分岐ターゲットアドレスキャッシュ(BTAC)であって、各エントリは、評価され選択された少なくとも1つの分岐命令を含む2つ又はそれ以上の命令のブロックに関連し、前記BTACのエントリは、前記ブロック内の第1の命令のアドレスに関連するタグを有するBTACと、
    命令のグループをフェッチすると、命令アドレスを用いて前記BTACをインデックスするように動作可能な命令実行パイプラインと
    を備えるプロセッサ。
  10. 請求項9に記載のプロセッサにおいて、
    BTACの各エントリは、前記関連するブロック内の何れの命令が選択された分岐命令かを示すインディケータを含むプロセッサ。
  11. 請求項9に記載のプロセッサにおいて、
    BTACの各エントリは、前記関連するブロック内の選択された分岐命令の分岐ターゲットアドレス(BTA)を含むプロセッサ。
JP2012268455A 2006-06-05 2012-12-07 スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ Expired - Fee Related JP5734945B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/422,186 US7827392B2 (en) 2006-06-05 2006-06-05 Sliding-window, block-based branch target address cache
US11/422,186 2006-06-05

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2009514477A Division JP5231403B2 (ja) 2006-06-05 2007-05-31 スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ

Publications (2)

Publication Number Publication Date
JP2013080497A true JP2013080497A (ja) 2013-05-02
JP5734945B2 JP5734945B2 (ja) 2015-06-17

Family

ID=38654617

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2009514477A Expired - Fee Related JP5231403B2 (ja) 2006-06-05 2007-05-31 スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ
JP2012268455A Expired - Fee Related JP5734945B2 (ja) 2006-06-05 2012-12-07 スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2009514477A Expired - Fee Related JP5231403B2 (ja) 2006-06-05 2007-05-31 スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ

Country Status (7)

Country Link
US (1) US7827392B2 (ja)
EP (1) EP2024820B1 (ja)
JP (2) JP5231403B2 (ja)
KR (1) KR101016541B1 (ja)
CN (2) CN101460922B (ja)
AT (1) ATE535862T1 (ja)
WO (1) WO2007143508A2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7827392B2 (en) * 2006-06-05 2010-11-02 Qualcomm Incorporated Sliding-window, block-based branch target address cache
US8407187B2 (en) 2010-06-16 2013-03-26 Microsoft Corporation Validating files using a sliding window to access and correlate records in an arbitrarily large dataset
US9201658B2 (en) * 2012-09-24 2015-12-01 Apple Inc. Branch predictor for wide issue, arbitrarily aligned fetch that can cross cache line boundaries
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
US9563562B2 (en) 2012-11-27 2017-02-07 Nvidia Corporation Page crossing prefetches
GB2509830B (en) * 2013-02-11 2014-12-24 Imagination Tech Ltd Speculative load issue
US9489204B2 (en) * 2013-03-15 2016-11-08 Qualcomm Incorporated Method and apparatus for precalculating a direct branch partial target address during a misprediction correction process
US10747540B2 (en) * 2016-11-01 2020-08-18 Oracle International Corporation Hybrid lookahead branch target cache
US20190004805A1 (en) * 2017-06-28 2019-01-03 Qualcomm Incorporated Multi-tagged branch prediction table
US11915004B2 (en) * 2021-12-20 2024-02-27 Arm Limited Control flow prediction

Citations (5)

* 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 スーパスカラプロセッサ用分岐予測機構
JPH10232776A (ja) * 1996-12-23 1998-09-02 Texas Instr Inc <Ti> 複合分岐予測およびキャッシュ先取りをするマイクロプロセッサ
JP2009540439A (ja) * 2006-06-05 2009-11-19 クゥアルコム・インコーポレイテッド スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ
EP1624369B1 (en) * 2004-08-04 2011-12-14 VIA Technologies, Inc. Apparatus for predicting multiple branch target addresses

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5265213A (en) * 1990-12-10 1993-11-23 Intel Corporation Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction
US5414822A (en) * 1991-04-05 1995-05-09 Kabushiki Kaisha Toshiba Method and apparatus for branch prediction using branch prediction table with improved branch prediction effectiveness
US5442756A (en) * 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
KR100310581B1 (ko) * 1993-05-14 2001-12-17 피터 엔. 데트킨 분기목표버퍼의추측기록메카니즘
US5577217A (en) * 1993-05-14 1996-11-19 Intel Corporation Method and apparatus for a branch target buffer with shared branch pattern tables for associated branch predictions
US5574871A (en) * 1994-01-04 1996-11-12 Intel Corporation Method and apparatus for implementing a set-associative branch target buffer
JP3494484B2 (ja) * 1994-10-12 2004-02-09 株式会社ルネサステクノロジ 命令処理装置
JP3494736B2 (ja) * 1995-02-27 2004-02-09 株式会社ルネサステクノロジ 分岐先バッファを用いた分岐予測システム
GB9521980D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Branch target buffer
US5864697A (en) * 1996-06-28 1999-01-26 Texas Instruments Incorporated Microprocessor using combined actual and speculative branch history prediction
US5774710A (en) * 1996-09-19 1998-06-30 Advanced Micro Devices, Inc. Cache line branch prediction scheme that shares among sets of a set associative cache
US5918044A (en) * 1996-10-31 1999-06-29 International Business Machines Corporation Apparatus and method for instruction fetching using a multi-port instruction cache directory
DE69727773T2 (de) * 1996-12-10 2004-12-30 Texas Instruments Inc., Dallas Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor
US6108775A (en) * 1996-12-30 2000-08-22 Texas Instruments Incorporated Dynamically loadable pattern history tables in a multi-task microprocessor
TW357318B (en) * 1997-03-18 1999-05-01 Ind Tech Res Inst Branching forecast and reading device for unspecified command length extra-purity pipeline processor
US6263427B1 (en) * 1998-09-04 2001-07-17 Rise Technology Company Branch prediction mechanism
US6601161B2 (en) * 1998-12-30 2003-07-29 Intel Corporation Method and system for branch target prediction using path information
EP1150213B1 (en) * 2000-04-28 2012-01-25 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Data processing system and method
KR100872293B1 (ko) * 2000-07-21 2008-12-05 엔엑스피 비 브이 데이터 프로세서 및 이에 의한 인스트럭션 실행 방법
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
US7162619B2 (en) * 2001-07-03 2007-01-09 Ip-First, Llc Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer
US6675279B2 (en) * 2001-10-16 2004-01-06 International Business Machines Corporation Behavioral memory enabled fetch prediction mechanism within a data processing system
US6792521B2 (en) * 2001-10-16 2004-09-14 International Business Machines Corporation Behavioral memory mechanism for a data processing system
US6877083B2 (en) * 2001-10-16 2005-04-05 International Business Machines Corporation Address mapping mechanism for behavioral memory enablement within a data processing system
JP3738842B2 (ja) * 2002-06-04 2006-01-25 富士通株式会社 遅延分岐機能を備えた情報処理装置
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
US7174444B2 (en) * 2003-03-31 2007-02-06 Intel Corporation Preventing a read of a next sequential chunk in branch prediction of a subject chunk
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
US7096348B2 (en) * 2003-12-15 2006-08-22 Freescale Semiconductor, Inc. Method and apparatus for allocating entries in a branch target buffer
JP2006048132A (ja) * 2004-07-30 2006-02-16 Fujitsu Ltd 分岐予測装置、分岐予測装置の制御方法、情報処理装置
US7328332B2 (en) * 2004-08-30 2008-02-05 Texas Instruments Incorporated Branch prediction and other processor improvements using FIFO for bypassing certain processor pipeline stages
KR100630702B1 (ko) * 2004-10-05 2006-10-02 삼성전자주식회사 명령어 캐쉬와 명령어 변환 참조 버퍼의 제어기, 및 그제어방법
US7447882B2 (en) * 2005-04-20 2008-11-04 Arm Limited Context switching within a data processing system having a branch prediction mechanism
US20080040576A1 (en) * 2006-08-09 2008-02-14 Brian Michael Stempel Associate Cached Branch Information with the Last Granularity of Branch instruction in Variable Length instruction Set
US7707396B2 (en) * 2006-11-17 2010-04-27 International Business Machines Corporation Data processing system, processor and method of data processing having improved branch target address cache
US7937573B2 (en) * 2008-02-29 2011-05-03 Freescale Semiconductor, Inc. Metric for selective branch target buffer (BTB) allocation

Patent Citations (5)

* 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 スーパスカラプロセッサ用分岐予測機構
JPH10232776A (ja) * 1996-12-23 1998-09-02 Texas Instr Inc <Ti> 複合分岐予測およびキャッシュ先取りをするマイクロプロセッサ
EP1624369B1 (en) * 2004-08-04 2011-12-14 VIA Technologies, Inc. Apparatus for predicting multiple branch target addresses
JP2009540439A (ja) * 2006-06-05 2009-11-19 クゥアルコム・インコーポレイテッド スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CSNG199900728016; 原 哲也 他: '「SIMP(単一命令流/多重命令パイプライン)方式に基づく改良版スーパースカラ・プロセッサの構成と処' 電子情報通信学会技術研究報告 第90巻 第144号, 19900720, 103頁〜108頁, 社団法人電子情報通信学会 *
JPN6013051207; Andre SEZNEC et al.: '"Multiple-Block Ahead Branch Predictors"' INRIA Rapport de recherche , 199603, pages:1-27, INSTITUT NATIONAL DE RECHERCHE EN INFORMATIQUE ET *
JPN6013051210; 原 哲也 他: '「SIMP(単一命令流/多重命令パイプライン)方式に基づく改良版スーパースカラ・プロセッサの構成と処' 電子情報通信学会技術研究報告 第90巻 第144号, 19900720, 103頁〜108頁, 社団法人電子情報通信学会 *
JPN6013051213; Eric ROTENBERG et al.: '"Trace Cache: a Low Latency Approach to High Bandwidth Instruction Fetching"' MICRO-29.Proceedings of the 29th Annual IEEE/ACM International Symposium on Microarchitecture, 1996. , 199612, pages:24-34, IEEE/ACM *

Also Published As

Publication number Publication date
US20070283134A1 (en) 2007-12-06
EP2024820A2 (en) 2009-02-18
JP5734945B2 (ja) 2015-06-17
US7827392B2 (en) 2010-11-02
WO2007143508A3 (en) 2008-01-31
CN103019652A (zh) 2013-04-03
KR20090017687A (ko) 2009-02-18
CN101460922B (zh) 2013-01-02
ATE535862T1 (de) 2011-12-15
CN101460922A (zh) 2009-06-17
WO2007143508A2 (en) 2007-12-13
JP5231403B2 (ja) 2013-07-10
CN103019652B (zh) 2015-04-29
KR101016541B1 (ko) 2011-02-24
EP2024820B1 (en) 2011-11-30
JP2009540439A (ja) 2009-11-19

Similar Documents

Publication Publication Date Title
JP5734945B2 (ja) スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ
JP5558814B2 (ja) プロアクティブ分岐ターゲットアドレスキャッシュ管理のための方法及び装置
KR101059335B1 (ko) 가변 길이 명령 세트 실행 모드들을 가지는 프로세서 내의 bht의 효율적 사용방법
US20060218385A1 (en) Branch target address cache storing two or more branch target addresses per index
JP2009536770A (ja) ブロックに基づく分岐先アドレスキャッシュ
KR20090042303A (ko) 가변 길이 명령 세트의 브랜치 명령의 최종 입도와 캐싱된 브랜치 정보의 관련
US7640422B2 (en) System for reducing number of lookups in a branch target address cache by storing retrieved BTAC addresses into instruction cache

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131015

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140115

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140120

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140210

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140422

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140722

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140725

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141020

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141111

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150223

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150415

R150 Certificate of patent or registration of utility model

Ref document number: 5734945

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees