JP5415268B2 - 分岐先アドレスキャッシュにおけるルックアップの低減方法および装置 - Google Patents

分岐先アドレスキャッシュにおけるルックアップの低減方法および装置 Download PDF

Info

Publication number
JP5415268B2
JP5415268B2 JP2009524785A JP2009524785A JP5415268B2 JP 5415268 B2 JP5415268 B2 JP 5415268B2 JP 2009524785 A JP2009524785 A JP 2009524785A JP 2009524785 A JP2009524785 A JP 2009524785A JP 5415268 B2 JP5415268 B2 JP 5415268B2
Authority
JP
Japan
Prior art keywords
cache
branch
instruction
address
btac
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.)
Active
Application number
JP2009524785A
Other languages
English (en)
Other versions
JP2010501101A (ja
Inventor
モロー、マイク
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 JP2010501101A publication Critical patent/JP2010501101A/ja
Application granted granted Critical
Publication of JP5415268B2 publication Critical patent/JP5415268B2/ja
Active 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, 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, 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30061Multi-way branch instructions, e.g. CASE
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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, 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, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding

Description

本発明は一般にプロセッサの分野に関し、特に、分岐先アドレスキャッシュ(branch target address cache)におけるルックアップ(lookups)を低減することによって分岐予測(branch prediction)を改善する方法に関する。
マイクロプロセッサは、種々様々のアプリケーションにおいて計算上のタスクを実行する。改良されたプロセッサ性能は、ほとんど常に、ソフトウェア変更を通じてより速いオペレーションおよび/またはより多くの機能性が望まれる。携帯用電子機器のような多くの組み込みアプリケーションでは、電力の節約およびより速い処理能力は、プロセッサ設計およびインプリメンテーションにおける目標でもある。
多くの最新のプロセッサはパイプライン方式を使用し、そこでは各々が複数の実行ステップを有する連続する命令がオーバーラップして実行される。改善された性能にとっては、命令はパイプラインを連続的に流れるべきである。命令をパイプライン中で立ち往生させるいかなる状況も、性能に有害な影響を及ぼし得る。命令がパイプラインからフラッシュ(flush)され、続いて再フェッチされると、性能と電力消費の両方が影響を受ける。
ほとんどのプログラムは、パイプライン中の深いところで評価されるまで実際の分岐の振る舞いが分からない間接分岐命令(indirect branch instruction)を含んでいる。間接分岐命令の実際の評価を待つことに起因する遅れを回避するために、最新のプロセッサは分岐予測のいくつかの形式を利用しており、それによって間接分岐命令の分岐振る舞いがパイプライン中で初期に予測される。予測された分岐評価に基づいて、プロセッサは、思惑的に、分岐先アドレス(分岐がされると予測される場合)あるいは当該分岐命令の後の次の連続するアドレス(分岐がされないと予測される場合)のいずれかの予測されたアドレスから命令をフェッチ(プリフェッチ)して処理する。間接分岐命令が採用されるか否かは、分岐の方向の決定として引用される。
従来の分岐予測技術は、プロセッサパイプラインのフェッチ段階に位置する分岐先アドレスキャッシュ(BTAC)および分岐予測ロジックを含んでいる。BTACは、前もってフェッチされた命令の標的アドレス(target address)を格納し、命令アドレスによってインデックスが付けられる。I-キャッシュは、慣例的には、より高いオーダーのキャッシュあるいはメモリから検索された様々な命令形式の命令で占められる(populated)。BTACは、慣例的には、間接分岐命令がプロセッサパイプライン中のさらに下で実際に解決(resolve)された後で占められる。
オペレーションでは、従来の分岐予測技術は、BTACおよびI−キャッシュの両方で、プリフェッチされた命令でアドレスルックアップを並行して実行する。それゆえ、BTACでミス(miss)がある場合、これらの従来の分岐技術はBTACルックアップ中でマッチを見つけずに電力を消費していた。BTACでヒット(hit)があれば、ルックアップされたアドレスは間接分岐命令であると考えることができる。BTACルックアップの後、従来の技術は、BTACから検索された分岐先アドレスが予測採用されるべきか否かを決定するために分岐予測ロジックを起動する。分岐予測ロジックが予測を採用する場合、分岐予測ロジックは分岐先アドレスから始まる命令の検索によって命令フローをリダイレクト(redirect)する。
分岐命令以降にプロセッサパイプラインに入った全ての連続する命令は、パイプラインから典型的にはフラッシュされる。BTACルックアップおよびその後の分岐予測によって定義されたパスは、典型的にはクリティカルスピードパスである。なぜなら、このパスのタイミングが短いほど、命令フローをリダイレクトする前にプロセッサパイプラインからフラッシュが必要な命令の量が小さいためである。従って、フラッシュ命令(flushing instructions)において消費される電力を最小化するために、このパスはできるだけ短いことが望ましい。
クリティカルパスの時間を減らすための従来の技術は、BTACのサイズを縮小すること、および/またはマルチウェイ方式(multi-way fashion)でBTACを組織化することを含んでいる。しかしながら、BTACのサイズの縮小によって潜在的なヒットの数、つまりBTACにおいて分岐先アドレスを見つける確率が低下し、全体としてBTACの有効性を低下させる。
更に、BTACをマルチウェイ方式へ組織化することによりBTACにインデックスを付けることはより速くなるが、比較に費やされる時間が増加する。これらの状況にあって、BTACはI−キャッシュよりも遅く、それゆえ、クリティカルパスの並列ルックアップにおける制限因子となる。したがって、間接分岐命令がプロセッサパイプラインで見つかる場合に、分岐予測の有効性を減少させることなく、命令フローを転送するための時間を低減する装置と方法が必要であることが認識される。
本開示は、従来の分岐予測技術はルックアップがI−キャッシュおよびBTACへ並行して行われ、BTACでルックアップがミスした場合には、しばしば電力を無益に消費することを認識する。この認識は、恐らくI−キャッシュは典型的にはすべてのタイプの命令を格納し、BTACは典型的には分岐命令アドレスを格納するということに起因して、I−キャッシュ中ではヒットがあり、BTAC中ではミスがある場合に、より明白である。
1つの実施例によれば、分岐先アドレスキャッシュ(BTAC)へのルックアップを低減する方法が開示される。この方法では、分岐先アドレスは、命令キャッシュ(I−キャッシュ)中の命令アドレスをルックアップする際のミスに応じて、BTACから検索される。分岐先アドレスは命令アドレスに関連している。BTACから検索された分岐先アドレスは、I−キャッシュに格納される。この示された技術により、その後の命令アドレスはBTACとは並行せずにI−キャッシュ中で有利にルックアップされ、その結果、不必要なBTACルックアップを低減することにより電力を節約する。
別の実施例によれば、分岐命令を命令キャッシュに格納する方法が示される。この方法は、命令キャッシュ(I−キャッシュ)中の分岐命令アドレスをルックアップすること、I-キャッシュミスに応じて分岐先アドレスキャッシュ(BTAC)から分岐先アドレスを検索すること、および、I-キャッシュ中のエントリーに分岐先アドレスを格納することを含む。
別の実施例は、分岐先アドレスキャッシュ(BTAC)へのルックアップを低減するためのシステムに関する。システムは、第1の分岐命令アドレスのルックアップ時のキャッシュミスに応じてBTACから分岐先アドレスを検索するように構成された、BTACと命令キャッシュ(I−キャッシュ)を含む。I−キャッシュはさらに、分岐先アドレスを格納するように構成される。
発明の様々な実施例が例示によって示され記載された以下の詳細な記述から、本発明の他の実施例が当業者に容易に明白になるであろうことが理解される。認識されるように、本発明は他の実施例および異なる実施例が可能で、またそのいくつかの詳細は、本発明から逸脱することない様々な他の観点において変更が可能である。従って、図面および詳細な記述は、限定的なものとしてではなく、本質的に例示として見なされるべきものである。
図1は典型的なプロセッサの機能ブロック図である。 図2Aは典型的なコードセグメントのリストを例示する図である。 図2BはI−キャッシュがコードセグメントからの分岐命令を含んでいない場合の、I−キャッシュの典型的な内容を例示する図である。 図2Cは、I−キャッシュがコードセグメントからの分岐命令を含んでいない場合の、BTACの典型的な内容を例示する図である。 図3はI−キャッシュがBTACからの命令データで占められた後の図1のI−キャッシュの典型的な内容を例示する図である。 図4はI−キャッシュに間接分岐命令を格納し、図1のI−キャッシュから命令を検索する方法を例示するフローチャートである。 図5は、実際の分岐解決(branch resolution)でのI−キャッシュの管理方法を例示するフローチャートである。 図6は、共通のBTACを共有する2台のプロセッサの機能ブロック図である。
発明の詳細な説明
図1は、典型的なプロセッサ100の機能ブロック図である。プロセッサ100は、制御ロジック114に従って命令実行パイプライン112中で命令を実行する。いくつかの実施例では、パイプライン112は、図6に関連してさらに詳細に記述されるような複数の並列パイプラインによるスーパースカラー設計(superscalar design)である。パイプライン112は、パイプ段階(pipe stages)に組織された様々のレジスタあるいはラッチ116A-D、および、算術論理演算ユニット(ALU)118のような1つ以上の実行ユニットを含む。汎用レジスタ(general purpose register)(GPR)ファイル120は、記憶階層のトップを備えたレジスタである。
データは、主のトランスレーション・ルックアサイド・バッファ(Translation Lookaside Buffer)(TLB)142によって管理されたメモリアドレストランスレーション(memory address translation)およびパーミッション(permissions)でデータキャッシュ(D−キャッシュ)140からアクセスされる。様々な実施例では、ITLB 124はTLB 142の一部のコピーを含む。あるいは、ITLB 124とTLB 142は統合される。同様に、プロセッサ100の様々な実施例では、I−キャッシュ122およびD−キャッシュ140は統合、あるいは一体化される。I−キャッシュ122および/またはD−キャッシュ140でのミスは、メモリインタフェース146の管理の下でメイン(オフチップ)メモリ144へのアクセスをもたらす。I−キャッシュ122でのミスは、図4の議論に関連して後ほどより詳細に記述される。
プロセッサ100は、様々な周辺機器150へのアクセスをコントロールする入出力(I/O)インターフェース148を含む。この技術における熟練者は、プロセッサ100の多くの変形が可能であることを認識するであろう。例えば、プロセッサ100は、I−キャッシュ122、D−キャッシュ140のいずれか、あるいはその両方のための第2レベル(L2)キャッシュを含んでもよい。さらに、プロセッサ100に描かれた機能ブロックの1つ以上は、特定の実施例から省略されてもよい。
プロセッサ100は分岐予測システム143を含む。分岐予測システム143は、BTAC 141、分岐予測(branch predictor)(BP)回路126、更新ロジック回路160およびオプションのプリデコード回路156を含む。BTAC 141は、それぞれのエントリーがフェッチアドレスに対応する分岐命令アドレスおよび分岐先アドレスを含む1つ以上のエントリーを格納するように構成される。BTAC 141は、直接および間接の分岐命令アドレスの組み合わせを格納する。
命令アドレスがI−キャッシュ122でミスし、メモリインタフェース146を介してより高いレベルのメモリから対応する命令を受ける要求がなされる場合、当該命令はフィルパス(fill path)152を介してI−キャッシュ122およびBTAC 141に送られる。一旦命令がメモリインタフェース146から受け取られると、第1の実施例では、オプションのプリデコード・ロジック回路156は、受信した命令が間接分岐命令かどうかを判断する。それが間接分岐命令である場合、受信された命令のアドレスは、パス152を介してBTAC 141でルックアップされ、受信された命令アドレスに関連する標的アドレスがあるかどうか確かめられる。BTAC 141でヒットがある場合、受信された命令および対応する標的アドレスはI−キャッシュ122に書き込まれる。I−キャッシュ122でのミスおよびBTAC 141でのヒットは間接分岐命令が誤って予測された状況において発生し、それにより、I−キャッシュ122中であるタイプの無効化(invalidation)を引き起こす。I−キャッシュ無効化のタイプは、図5の議論に関連してより詳細に議論される。受信された命令のアドレスがBTAC 141にない場合(例えばミス)、受信された命令はI−キャッシュ122に書き込まれる。
第2の実施例はプリデコード・ロジック回路156を取り除いたものである。第2の実施例では、メモリインタフェース146を介して受け取られた命令は、受信命令が間接分岐命令かどうかにかかわらず、BTAC 141でルックアップされる。この第2の実施例では、命令は第1の実施例と同様に格納のためにI−キャッシュ122へ送られる。しかしながら、第1の実施例ではBTACルックアップは間接分岐命令に限定されている。いずれの実施例においても、もし分岐先アドレスがBTAC 141に格納されているならば、それはI−キャッシュ122にも格納される。
更新制御ロジック160は、実際の分岐解決がパイプライン112の後の段階(later stages)中で起こった後、標的アドレスをパス162を介してBTAC 141中のエントリーに加える。BTAC 141は、間接分岐命令およびその対応する標的アドレスの両方を含めるために、パス154上でI−キャッシュ122を更新する。用語「予測不採用(predict not taken)」は、予測しているBP回路126が分岐先アドレスに従ってパイプライン112をリダイレクト(redirect)しないことを指す。
命令サイド・トランスレーション・ルックアサイド・バッファ(ITLB)124によって管理されたメモリアドレストランスレーションおよびパーミッションによって、命令プリフェッチユニット128は、パス125で命令キャッシュ(I−キャッシュあるいはI$)122から命令をフェッチする。フェッチされた命令がI−キャッシュ122で見つかり(例えばヒット)、フェッチされた命令が対応する分岐先アドレスに関係している場合、BP回路126は標的アドレスで始まるコードパス(code path)を取る(take)か取らない(not take)かを予測する。BP回路126が、標的アドレスが取られるべきであると予測する場合、命令プリフェッチユニット128は、フェッチ命令が標的アドレスから開始するようにそのプログラムカウンタを調節し、それにより分岐先アドレスに従ってパイプライン112をリダイレクトする。BP回路126が、標的アドレスが取られるべきでないと予測する場合、プログラムカウンタは、次の連続するアドレスから命令のフェッチを開始するためにインクリメントされる。
分岐予測システム143のオペレーションは、図4、5の議論に関連してより詳細に記述する。
本開示は、BTAC 141およびI−キャッシュ122を1つの集積コンポーネントに組み合わせる実施例を意図している。しかしながら、BTACおよびI−キャッシュを別個のコンポーネントに分けるいくつかの理由がある。開示されるような外部BTACは、I−キャッシュへのフィル(fills)期間に照会され(queried)、あるいは読まれるだけである。I−キャッシュと並列に位置される従来のBTACは、I−キャッシュがアクセスされるごとにアクセスされる。ここに開示されるようにBTACのコンサルティングを制限することによって、本開示はBTACにおける活動を低減し、電力を節約する。更に、BTACのこの頻繁でないアクセスは、BTAC 141が単一ポートの装置であることを可能にし、それにより設計の複雑さを低減する。
図2Aは、アドレス0x000Bにおいて間接分岐命令212を含んでいる典型的なコードセグメントのリスト210を例示する。かれるように、間接分岐命令212の標的(target)は、レジスタ1(R1)の内容によって定義される。R1のコンテンツは間接分岐命令212が実行される時毎に変化するので、分岐予測システム143は、R1の内容によって指定されるようなアドレスで始まるプロセスパイプライン112をリダイレクトするかどうかを判断するために利用される。
図2Bは、I−キャッシュ230の典型的な内容を例示する。I−キャッシュ230は、適切にはI−キャッシュ122に類似する。I−キャッシュ230は、命令カラム232、有効ビットカラム234および分岐先アドレスカラム236を含む。カラム232のエントリーは命令を表わす。慣例によって、カラム234中の「0」値は、カラム236中の分岐先(もしあれば)が無効であることを示し、カラム234の「1」値は、カラム236中の分岐先が同じ列の中で有効であることを示す。描かれるように、プログラムカウンタがアドレス0x000Bを指す時点でのI-キャッシュ230は、アドレス0x000Bに間接分岐命令212のエントリーを含んでいない。
図2Cは、BTAC 250の典型的な内容を例示する。BTAC 250は、適切にはBTAC 141に類似する。BTAC 250は、分岐命令アドレスカラム252および標的アドレスカラム254を含む。
カラム252は直接分岐命令アドレス、間接分岐命令アドレス、あるいはそれの任意の組み合わせを含む。プログラムカウンタがアドレス0x000Bを指す時点で、BTAC 250は、間接分岐命令アドレス256およびその対応する標的アドレスを含む。従って、制御ロジック114は、I−キャッシュミスの際に、BTAC 250中の分岐命令256およびその対応する目標アドレスをI−キャッシュ230に格納させる。他の情報がI−キャッシュ230およびBTAC 250の両方に格納され得ること、また、I−キャッシュ230およびBTAC 250の様々な構成が本開示によって意図されることが認識される。
図3は、間接分岐命令アドレス256に関連した間接分岐命令、およびその対応する標的アドレス(0x2000)がアドレス0x000BでI−キャッシュ230に格納された後のI−キャッシュ230を例示する。従って、プロセッサのプログラムカウンタがアドレス0x000Bを指す次の時は、I−キャッシュルックアップはヒットし、そして標的アドレス0x2000がプロセッサのプログラムカウンタに割り当てられ、アドレス0x2000の命令でパイプライン112のリダイレクトが開始されるであろう。従来のBTACと比較して、本開示でのI−キャッシュルックアップは、BTAC中でのルックアップを実行することなくプリフェッチされた命令で実行される。そしてその結果、BTACルックアップ数を減らすことにより、電力消費を低減する。説明されたように、BTAC 250中のルックアップは、特定の間接分岐命令がI−キャッシュ230中で見つからない場合に制限される。
図4は、間接分岐命令を図1のI−キャッシュに格納し、I−キャッシュから分岐先アドレスを検索する方法400を例示するフローチャートである。ブロック410、420、450、455、460、465、470および480は、図1のI−キャッシュ122のようなI−キャッシュに間接分岐命令および分岐先アドレスを格納するためのプロセスを定義する。ブロック410、420、425、435、438、445は、I−キャッシュから分岐先アドレスを検索するプロセスを定義する。ブロック410では、命令のアドレスに基づいて命令のためのI−キャッシュが照会(query)される。例えば、プロセッサのプログラムカウンタに格納された命令アドレスがI−キャッシュを照会するために利用される。ブロック420では、方法400は、I−キャッシュ中でヒットがあるかどうかを判断する。ヒットがない場合(キャッシュミスの場合)、方法400はブロック450に進み、より高いレベルのメモリから対応する命令データを検索する。ブロック450では、命令データは、レイヤ2(L2)キャッシュやオフチップメモリのような高レベルメモリから要求される。ブロック455では、高レベルメモリから検索された命令データが受け取られる。ブロック460では、命令アドレスがBTAC中でルックアップされる。ブロック465では、方法400は、BTAC中で命令アドレスがヒットするか、つまり言いかえれば、命令アドレスがBTACに格納された命令アドレスとマッチするかを判断する。命令アドレスがBTAC中でヒットする場合、方法400はブロック470に進み、BTACに格納された予測分岐先(もしあれば)が命令データに加えられる。BTAC中でヒットすると、間接分岐命令の以前の状態の分岐先アドレスが予め解決されて(resolved)いる限り、予測された分岐先は恐らくBTACに格納される。方法400はブロック480に進み、命令データがI−キャッシュに格納される。
ブロック465に返って、命令アドレスがBTAC中でミスする場合、方法400はブロック480に進む。ブロック465から480のこの推移は、照会された命令アドレスがI−キャッシュあるいはBTACのいずれにもない状況を示す。この状況では、分岐先アドレスは、図6に関連してより詳細に議論されるように、後にプロセッサパイプラインで生じる検索された命令データの実際の分岐先の解決後にBTACに格納される。例えば、実際の分岐先が解決される時、更新ロジック回路160はBTACおよびI−キャッシュの両方に、解決されたブランチ標的を格納させる。
ブロック465および475は共にブロック480に進み、命令データがI−キャッシュに格納される。そうでなければ、プログラムカウンタが連続的にインクリメントされる。その後、方法400は、プログラムカウンタによって指定される次のアドレスを照会するためにブロック410に進む。
ブロック420に返って、対応するエントリーがI−キャッシュにあることを意味するI−キャッシュでのヒットがある場合、方法400はブロック425に進む。ブロック425では、方法400は、I−キャッシュ中の対応するエントリーが分岐先アドレスを持っているかどうか判断する。1つの実施例では、ブロック425は、図2の有効ビットカラム234に格納されたような対応する有効ビットを質問すること(interrogating)によって遂行される。
I-キャッシュヒットに関連する有効分岐先アドレスがない場合、命令アドレスは間接分岐命令ではない。従って、方法400はブロック445に進み、非分岐命令がI−キャッシュから検索され、従来の方法で処理される。方法400は、プログラムカウンタによって指定される次のアドレスをI−キャッシュから照会するためにブロック410に進む。
エントリーに対応する有効分岐先アドレスがある場合、方法400はブロック435に進む。ブロック435では、方法400は、対応するエントリーに格納された分岐先アドレスが採用されるべきかどうかを予測する。1つの実施例では、分岐予測回路126がこの予測を行う。当業者は、分岐予測技術が統計、ヒューリスティックス、前もって定義されたパラメーターなどを利用してもよいことを認識するであろう。ブロック438では、方法400は予測が採用されるべきかどうかテストする。もし採用されるならば、方法400はブロック440に進み、命令が分岐先アドレスからフェッチされ始めるために、分岐先アドレスが命令プリフェッチユニット128のようなプログラムカウンタに送られる。方法400はブロック410に進み、フローチャートを通してこのパス中では分岐先アドレスである、プログラムカウンタによって指定される次のアドレスを照会する。
ブロック438に返って、パスが不採用と予測されると、方法400はブロック445に進み、キャッシュに格納された命令を従来の方法で処理する。ブロック445の後、方法400は、フローチャートを通してこのパス中では例えば図2中のアドレス0x000Cのような間接分岐命令に続く連続するアドレスである、プログラムカウンタ中の次のアドレスを照会するために、ブロック410に進む。
図5は、実際の分岐解決でのI−キャッシュ管理方法500を例示するフローチャートである。方法500は、間接分岐命令の実際の分岐先が初めて計算され、分岐予測回路126のような予測メカニズムが間接分岐命令の標的を誤まって予測する状況に対して実行される。ブロック510では、間接分岐命令の実際の標的が解決される(resolved)。そのような分岐解決は、間接分岐命令がプロセッサパイプライン中で後で処理されるときに実行される。
ブロック520では、方法500は、実際の標的が予測された標的と一致するかどうかを判断する。あるいは、実際の標的が初めて計算される場合には、予測された標的はない。実際の分岐先が予測分岐先と一致する場合、BTACとI−キャッシュのいずれも更新される必要なない。方法500はブロック525に進み、それがブロック510に進む前に、次の分岐命令を待つ。
実際の分岐先が予測分岐先と一致しない場合、方法500は誤予測(mispredict)を検知し、ブロック530に進む。少なくとも2つの状況がミスマッチに帰着する。第1の状況は、間接分岐命令が分岐先のないBTACおよびI−キャッシュに以前に格納された後に初めて実行される時に発生する。1の状況において、間接分岐命令の後の次の連続する命令は既にプロセッサパイプラインにロードされている。第2の状況は、予測標的アドレスが実際の解決された標的アドレスとは異なる場合に発生する。第2の状況において、予測標的アドレスで指示されたような次の命令は既にプロセッサパイプラインにロードされている。
ブロック530では、プロセッサパイプラインは、いずれの状況においても、その命令をパイプラインからフラッシュし、パイプラインを分岐点、この場合は間接分岐命令のアドレス、に復帰する。従って、間接分岐命令の後に続くプロセッサパイプライン中にロードされた命令は、それらの命令が予測標的アドレスから始まってロードされたか間接分岐命令後の次の連続するアドレスかに関係なく、プロセッサパイプラインからフラッシュされる。ブロック540では、BTACは、カラム254のようなその分岐先アドレスフィールドに実際の分岐先アドレスを格納するために更新される。
ブロック550では、I−キャッシュが管理される。例えば、制御ロジック回路114は、ブロック550A-550Cをインプリメントするためのロジックを含む。ブロック550A-550Cはブロック550の他の実施例である。ブロック550Aでは、予測標的アドレスに対応するキャッシュラインが無効化される。ブロック550Bでは、予測標的アドレスに対応するキャッシュラインの分岐先が無効化される。ブロック550Cでは、予測標的アドレスに対応するキャッシュラインの分岐先アドレスが実際の標的アドレスを反映するために更新される。ブロック550Cは、間接分岐命令が、分岐先のないBTACおよびI−キャッシュに以前に格納された後に初めて実行される場合に好ましい。
図6は、共通のBTAC 611を共有する2台のプロセッサ601および602の機能ブロック図である。共有されるBTAC 611、およびプロセッサ601、602は、好ましくは単一の集積回路チップで具体化される。プロセッサ601はそれ自身の多段プロセッサパイプライン620、I−キャッシュ610および分岐予測回路615を含む。段階625では、実際の分岐解決は、先にそれぞれ図4および図5で説明したように、間接分岐命令および分岐先アドレスを用いてBTAC 611およびI−キャッシュ610を更新するために起こる。プロセッサ602はそれ自身の多段プロセッサパイプライン640、I−キャッシュ630および分岐予測回路635を含む。段階645では、実際の分岐解決は、先にそれぞれ図4および図5で説明したように、間接分岐命令および分岐先アドレスを用いてBTAC 611およびI−キャッシュ630を更新するために起こる。図示のように、実際の分岐解決はプロセッサのパイプライン中の異なる段階で行なわれ得る。図6は2台のプロセッサ間で共有される共通のBTACを例示するが、本開示が3台以上のプロセッサ間の共通のBTACの共有を意図することに注目されたい。オペレーション中に、アドレスが有効な分岐先アドレスを含んでいるI−キャッシュ610あるいはI−キャッシュ630のいずれかからフェッチされると、それぞれのパイプライン620および640は分岐先アドレスから始まる命令のプリフェッチを開始する。
ここに開示された実施例に関連して記述された様々な例示的な論理ブロック、モジュール、回路、要素および/またはコンポーネントは、汎用プロセッサ、デジタル信号プロセサ(DSP)、特定用途向けIC(ASIC)、フィールド・プログラマブル・ゲートアレイ(FPGA)あるいは他のプログラマブル・ロジック・コンポーネント、個別ゲートやトランジスタ・ロジック、個別ハードウェア・コンポーネントあるいはここで記述された機能を実行するよう設計されたそれらの任意の組み合わせでインプリメントまたは実行することができる。汎用プロセッサはマイクロプロセッサであり得るが、代替としてプロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラあるいは状態マシンであってもよい。また、プロセッサは、例えばDSPとマイクロプロセッサの組み合わせ、複数のマイクロプロセッサ、DSPコアと協働する1つ以上のマイクロプロセッサあるいは他のそのような構成などの計算要素としてインプリメントされ得る。
ここで開示された実施例に関連して記述された方法は、直接、ハードウェア中に具体化されてもよく、プロセッサによって実行されるソフトウェアモジュールで、あるいはそれらの2つの組み合わせで具体化されてもよい。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROMあるいはこの技術分野で知られた他の形態の任意の記憶メディアに存在することができる。記憶メディアは、プロセッサが記憶メディアから情報を読むことができ、また記憶メディアに情報を書くことができるように、プロセッサに結合されてもよい。代替として、記憶メディアはプロセッサと一体化されてもよい。
本発明は実施例の文脈において開示されているが、当業者によって上記の議論および以下に続く特許請求の範囲と矛盾しない種々様々のインプリメンテーションが使用され得ることが認識されるであろう。
以下に、本願の出願当初の特許請求の範囲に記載された発明を付記する。
[1]分岐先アドレスキャッシュ(BTAC)へのルックアップを低減する方法であって、命令キャッシュ(I−キャッシュ)中の第1の命令アドレスのルックアップにおけるミスに応じて、前記BTACから分岐先アドレスを検索することと; 前記BTACからの前記分岐先アドレスを前記I−キャッシュに格納することと、 なお、前記分岐先アドレスは前記I−キャッシュ中の前記第1の命令アドレスに関連する; を備えた方法。
[2]前記I−キャッシュ中の前記第1の命令アドレスをルックアップすることと; 前記I−キャッシュ中の前記第1の命令アドレスに関連する前記分岐先アドレスを検索することと; をさらに備えた、[1]に記載の方法。
[3]前記第1の命令アドレスに関連する前記第1の命令をフェッチすることと; フェッチされるべき第2の命令が前記分岐先アドレスに関連することを予測することと; をさらに備えた、[1]に記載の方法。
[4]前記分岐先アドレスに基づいて前記第2の命令をフェッチすることをさらに備えた、[3]に記載の方法。
[5]前記第1の命令についての誤予測を検知することをさらに備えた、[4]に記載の方法。
[6]I−キャッシュラインの少なくとも1つの無効化によって前記I−キャッシュを管理することと、前記I−キャッシュラインにおける前記分岐先アドレスを無効化することと、前記I−キャッシュ中の前記分岐先アドレスを更新することとをさらに備えた、[5]に記載の方法。
[7]前記第1の命令についての誤予測を検知することは、 前記第1の命令のための実際の分岐先アドレスを計算することと; 前記実際の分岐先アドレスを前記I−キャッシュ中の前記分岐先アドレスと比較することと、なお、前記実際の分岐先アドレスは前記I−キャッシュ中の前記分岐先アドレスと一致しない; をさらに備えた、[5]に記載の方法。
[8]分岐命令を命令キャッシュ(I−キャッシュ)に格納する方法であって、 命令キャッシュ(I−キャッシュ)中の分岐命令アドレスをルックアップすることと; I−キャッシュミスに応じて分岐先アドレスキャッシュ(BTAC)から分岐先アドレスを検索することと; 前記分岐先アドレスを前記I−キャッシュのエントリーに格納することと; を備えた方法。
[9]I−キャッシュヒットに応じて前記分岐先アドレスを前記I−キャッシュから検索することをさらに備えた、[8]に記載の方法。
[10]フェッチされるべき次の命令が前記分岐先アドレスに関連することを予測することをさらに備えた、[9]に記載の方法。
[11]誤予測に基づいて前記I−キャッシュ中の前記分岐先アドレスを更新することをさらに備えた、[8]に記載の方法。
[12]前記誤予測によって前記エントリー中の前記分岐先アドレスを更新することは、前記分岐命令の実際の分岐アドレスを決定することと; 前記実際の分岐アドレスを前記分岐先アドレスと比較することと、なお、前記実際の分岐解決は前記予測された標的アドレスと一致しない; をさらに備えた、[11]に記載の方法。
[13]フェッチされるべき前記分岐先アドレスを送るかどうかを予測することをさらに備えた、[9]に記載の方法。
[14]フェッチされるべき前記分岐先アドレスを送ることをさらに備えた、[13]に記載の方法。
[15]分岐先アドレスキャッシュ(BTAC)へのルックアップを低減するためのシステムであって、 分岐先アクセスキャッシュ(BTAC)と; 第1の分岐命令アドレスのルックアップにおけるキャッシュミスに応じて、前記BTACから分岐先アドレスを検索するように構成された命令キャッシュ(I−キャッシュ)と、なお、前記I−キャッシュは前記分岐先アドレスを格納するように構成される; を備えたシステム。
[16]前記I−キャッシュは、ルックアップされた前記I−キャッシュ中に第1の分岐命令アドレスを持ち、かつ、前記I−キャッシュから検索された前記第1の分岐命令アドレスに関連する前記分岐先アドレスを持つように構成された、[15]に記載のシステム。
[17]前記I−キャッシュは、フェッチされた前記第1の命令アドレスに関係する前記第1の命令を持ち、前記システムは、さらに、フェッチされるべき第2の命令が前記分岐先アドレスに関連することを予測するように構成された分岐予測回路を備えた、[15]に記載のシステム。
[18]前記I−キャッシュは、前記I−キャッシュからフェッチされた前記分岐先アドレスに基づく前記第2の命令を持つように構成された、[17]に記載のシステム。
[19]フェッチされるべき前記第2の命令を誤予測するように構成された更新ロジックをさらに備えた、[18]に記載のシステム。
[20]I−キャッシュラインの少なくとも1つの無効化によって前記I−キャッシュを管理し、前記I−キャッシュラインにおける前記分岐先アドレスを無効化し、前記I−キャッシュ中の前記分岐先アドレスを更新するように構成された制御ロジック回路をさらに備えた、[19]に記載のシステム。

Claims (21)

  1. 命令キャッシュ(I−キャッシュ)を用いて、分岐先アドレスキャッシュ(BTAC)へのルックアップを低減する方法であって、前記方法は、
    前記I−キャッシュ中に格納されるべき第1の分岐命令の第1の命令アドレスを利用した、前記第1の分岐命令のルックアップにおけるミスに応じて、前記BTACから第1の分岐先アドレスを検索すること、前記第1の分岐先アドレスは、前記第1の分岐命令の分岐先アドレスである、と;
    前記BTACから検索される前記第1の分岐先アドレスを、前記第1の命令アドレスに関連する第1の位置で、前記I−キャッシュに格納すること、なお、前記I−キャッシュは、前記第1の分岐命令を含む複数の命令を格納するよう構成され、前記BTACから検索される前記第1の分岐先アドレスは、パイプラインの処理段階における前記第1の分岐命令の先の分岐解決の検知に応じて前記BTACに与えられている、と;
    前記I−キャッシュでの第1の命令アドレスのルックアップに応じて、前記第1の命令アドレスが前記I−キャッシュに格納されている場合に、前記第1の分岐先アドレスを前記I−キャッシュから検索することと;
    を備えた方法。
  2. 前記第1の分岐命令に関連する誤予測を検知することをさらに備えた、請求項1に記載の方法。
  3. 前記誤予測に関連するI−キャッシュラインの少なくとも1つの無効化を行うことと、
    前記I−キャッシュラインにおける前記分岐先アドレスを無効化することと、
    前記I−キャッシュ中の前記分岐先アドレスを更新することと、
    をさらに備えた、請求項2に記載の方法。
  4. 前記誤予測を検知することは、
    前記第1の分岐命令に関連する実際の分岐先アドレスを計算することと;
    前記実際の分岐先アドレスが前記I−キャッシュに格納された前記第1の分岐先アドレスと一致しないことを判断することと;
    をさらに備えた、請求項2に記載の方法。
  5. 第2のI−キャッシュでの第2の命令アドレスのルックアップにおける第2のミスに応じて、前記BTACから第2の分岐先アドレスを受けることと、
    前記第2の分岐先アドレスを、前記第2の命令アドレスに関連する第2の位置で前記第2のI−キャッシュに格納することと、
    をさらに備えた、請求項1に記載の方法。
  6. 前記BTACからの前記第1の分岐先アドレスを検索することは、前記BTACにおける前記第1の分岐命令の前記第1の命令アドレスをルックアップすることを備え、前記BTACにおける前記第1の分岐命令の前記第1の命令アドレスをルックアップすることは、特定の間接分岐命令が前記I−キャッシュの中で見つからない場合に制限される、請求項1記載の方法。
  7. 前記BTACを更新することと、前記パイプラインから受けとられる解決された分岐先アドレスで前記I−キャッシュを更新することと、をさらに備える、請求項1記載の方法。
  8. 前記パイプラインでの分岐解決の検知に応じて、解決された分岐先アドレスのデータを前記I−キャッシュに与えることにより、前記I−キャッシュを更新すること、をさらに備える、請求項1記載の方法。
  9. 命令キャッシュ(I−キャッシュ)中の分岐命令に関連する分岐命令アドレスをルックアップすることと;
    前記分岐命令に関連するI−キャッシュミスに応じて分岐先アドレスキャッシュ(BTAC)から分岐先アドレスを検索すること、前記分岐先アドレスは、前記分岐命令の特定の分岐先アドレスである、と;
    前記BTACから検索される前記分岐先アドレスを前記I−キャッシュのエントリーに格納すること、なお、前記エントリーは前記I−キャッシュの中の前記分岐命令アドレスと関連付けられ、前記BTACから検索される分岐先アドレスは、パイプラインの処理段階における前記分岐命令の先の分岐解決の検知に応じて前記BTACに与えられている、と;
    前記I−キャッシュでの前記分岐命令アドレスのルックアップに応じて、前記分岐命令アドレスが前記I−キャッシュに格納されている場合に、前記分岐先アドレスを前記I−キャッシュから検索することと;
    を備えた方法。
  10. フェッチされるべき次の命令が前記分岐先アドレスに関連することを予測することをさらに備えた、請求項9に記載の方法。
  11. 前記予測が正しくない場合、前記I−キャッシュ中の前記分岐先アドレスを更新することをさらに備えた、請求項10に記載の方法。
  12. 前記分岐先アドレスを更新することは、
    前記分岐命令の実際の分岐先アドレスを前記パイプラインから受け取ることと;
    前記I−キャッシュに格納され、前記BTACに格納された前記分岐先アドレスを、前記実際の分岐先アドレスと置き換えることと;
    をさらに備えた、請求項11に記載の方法。
  13. 第2のI−キャッシュでの第2の分岐命令アドレスをルックアップすることと、
    第2のI−キャッシュミスに応じて、前記BTACから第2の分岐先アドレスを検索することと、
    前記第2のI−キャッシュにおける第1のエントリーに、前記BTACから検索される前記第2の分岐先アドレスを格納することと、
    をさらに備えた、請求項9に記載の方法。
  14. 前記BTACから前記特定の分岐先アドレスを検索することは、前記BTACにおける前記分岐命令アドレスをルックアップすることを備え、前記BTACにおける前記分岐命令アドレスをルックアップすることは、特定の間接分岐命令が前記I−キャッシュの中で見つからない場合に制限される、請求項9記載の方法。
  15. 命令キャッシュ(I−キャッシュ)を用いて分岐先アドレスキャッシュ(BTAC)へのルックアップを低減するための装置であって、前記装置は、
    前記BTACと;
    前記I−キャッシュと、
    ここで、前記I−キャッシュは、
    第1の分岐命令を含む命令を格納し、
    前記I−キャッシュにおける第1の分岐命令アドレスのルックアップのときのI−キャッシュミスに応じて、前記BTACから第1の分岐先アドレスを検索し、ここで、前記第1の分岐命令アドレスは、前記I−キャッシュに格納された前記第1の分岐命令に関連付けられ、前記第1の分岐先アドレスは、前記第1の分岐命令の分岐先アドレスに関連付けられる、
    前記BTACから検索される前記第1の分岐先アドレスを格納する、
    ように構成され;
    前記I−キャッシュでの第1の分岐命令アドレスのルックアップに応じて、前記第1の分岐命令アドレスが前記I−キャッシュに格納されている場合に、前記分岐先アドレスを前記I−キャッシュから検索することと;
    を備え、
    前記BTACから検索される前記第1の分岐先アドレスは、パイプラインの処理段階において前記第1の分岐命令の先の分岐解決の検知に応じて、前記BTACに与えられている、
    装置。
  16. フェッチされるべき第2の命令が前記I−キャッシュに格納された前記第1の分岐先アドレスに関連することを予測するように構成された分岐予測回路をさらに備えた、請求項15に記載の装置。
  17. 前記I−キャッシュは、さらに、前記第2の命令をフェッチする要求に応じて前記第1の分岐先アドレスをプログラムカウンタに与えるように構成された、請求項16に記載の装置。
  18. フェッチされるべき前記第2の命令の誤予測を解決するように構成された更新ロジック回路をさらに備えた、請求項17記載の装置。
  19. 前記第1の分岐先アドレスを含むI−キャッシュラインの少なくとも1つの無効化によって前記I−キャッシュを管理し、前記I−キャッシュラインにおける前記第1の分岐先アドレスを無効化し、前記I−キャッシュ中の前記第1の分岐先アドレスを更新するように構成された制御ロジック回路をさらに備えた、請求項18に記載の装置。
  20. 前記BTACは、2つまたはそれより多くのプロセッサの間で共用される、請求項15記載の装置。
  21. 前記I-キャッシュは、さらに、前記I−キャッシュミスに応じて、前記第1の分岐先アドレスが検索される場合に、前記BTACにおける前記第1の分岐先アドレスのルックアップを実行するように構成され、前記BTACにおける前記第1の分岐命令アドレスの前記ルックアップは、特定の間接分岐命令が前記I−キャッシュの中で見つからない場合に制限される、請求項15記載の装置。
JP2009524785A 2006-08-16 2007-08-15 分岐先アドレスキャッシュにおけるルックアップの低減方法および装置 Active JP5415268B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/464,996 2006-08-16
US11/464,996 US7640422B2 (en) 2006-08-16 2006-08-16 System for reducing number of lookups in a branch target address cache by storing retrieved BTAC addresses into instruction cache
PCT/US2007/075996 WO2008022190A1 (en) 2006-08-16 2007-08-15 Methods and apparatus for reducing lookups in a branch target address cache

Publications (2)

Publication Number Publication Date
JP2010501101A JP2010501101A (ja) 2010-01-14
JP5415268B2 true JP5415268B2 (ja) 2014-02-12

Family

ID=38799335

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009524785A Active JP5415268B2 (ja) 2006-08-16 2007-08-15 分岐先アドレスキャッシュにおけるルックアップの低減方法および装置

Country Status (13)

Country Link
US (1) US7640422B2 (ja)
EP (1) EP2057536B1 (ja)
JP (1) JP5415268B2 (ja)
KR (1) KR101049319B1 (ja)
CN (1) CN101501635B (ja)
BR (1) BRPI0715899A2 (ja)
CA (1) CA2659310C (ja)
ES (1) ES2676303T3 (ja)
HU (1) HUE039149T2 (ja)
MX (1) MX2009001747A (ja)
RU (1) RU2419835C2 (ja)
TW (1) TWI397816B (ja)
WO (1) WO2008022190A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7865705B2 (en) * 2008-02-01 2011-01-04 International Business Machines Corporation Branch target address cache including address type tag bit
US7844807B2 (en) * 2008-02-01 2010-11-30 International Business Machines Corporation Branch target address cache storing direct predictions
CN105468334A (zh) * 2008-12-25 2016-04-06 世意法(北京)半导体研发有限责任公司 对非控制流指令减少分支检验
EP2798470A4 (en) * 2011-12-29 2015-07-15 Intel Corp PRE-ACQUISITION OF ANTEMOTE BY MANAGED INSTRUCTION
CN104252334B (zh) * 2013-06-29 2017-07-07 华为技术有限公司 分支目标地址获取方法和装置
CN106776367B (zh) * 2016-12-13 2020-05-12 上海高性能集成电路设计中心 基于位置对应关系的指令Cache一致性的实现方法
CN110825442B (zh) * 2019-04-30 2021-08-06 成都海光微电子技术有限公司 一种指令预取方法及处理器

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2534662B2 (ja) * 1986-03-25 1996-09-18 日本電気株式会社 命令キヤツシユ制御方法
US4722050A (en) * 1986-03-27 1988-01-26 Hewlett-Packard Company Method and apparatus for facilitating instruction processing of a digital computer
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5093778A (en) * 1990-02-26 1992-03-03 Nexgen Microsystems Integrated single structure branch prediction cache
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
US6427192B1 (en) * 1998-09-21 2002-07-30 Advanced Micro Devices, Inc. Method and apparatus for caching victimized branch predictions
US6324643B1 (en) 1999-10-01 2001-11-27 Hitachi, Ltd. Branch prediction and target instruction control for processor
US6651162B1 (en) 1999-11-04 2003-11-18 International Business Machines Corporation Recursively accessing a branch target address cache using a target address previously accessed from the branch target address cache
TW564369B (en) * 2001-07-16 2003-12-01 Ip First Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US7096348B2 (en) * 2003-12-15 2006-08-22 Freescale Semiconductor, Inc. Method and apparatus for allocating entries in a branch target buffer
KR100630702B1 (ko) * 2004-10-05 2006-10-02 삼성전자주식회사 명령어 캐쉬와 명령어 변환 참조 버퍼의 제어기, 및 그제어방법
US7418676B2 (en) * 2005-01-19 2008-08-26 Seiko Epson Corporation Asynchronous circuit design tool and computer program product

Also Published As

Publication number Publication date
CA2659310C (en) 2011-11-15
RU2009109226A (ru) 2010-09-27
JP2010501101A (ja) 2010-01-14
US7640422B2 (en) 2009-12-29
MX2009001747A (es) 2009-02-25
CN101501635B (zh) 2013-10-16
KR20090042318A (ko) 2009-04-29
EP2057536B1 (en) 2018-04-11
KR101049319B1 (ko) 2011-07-13
TW200815981A (en) 2008-04-01
CN101501635A (zh) 2009-08-05
US20080046702A1 (en) 2008-02-21
RU2419835C2 (ru) 2011-05-27
EP2057536A1 (en) 2009-05-13
WO2008022190A1 (en) 2008-02-21
HUE039149T2 (hu) 2018-12-28
ES2676303T3 (es) 2018-07-18
BRPI0715899A2 (pt) 2013-07-30
CA2659310A1 (en) 2008-02-21
TWI397816B (zh) 2013-06-01

Similar Documents

Publication Publication Date Title
JP5410281B2 (ja) 非シーケンシャル命令アドレスをプリフェッチするための方法および装置
JP5558814B2 (ja) プロアクティブ分岐ターゲットアドレスキャッシュ管理のための方法及び装置
EP1889152B1 (en) A method and apparatus for predicting branch instructions
JP5734945B2 (ja) スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ
US7797520B2 (en) Early branch instruction prediction
JP5415268B2 (ja) 分岐先アドレスキャッシュにおけるルックアップの低減方法および装置
KR20090094335A (ko) 서브루틴 호를 인지하기 위한 방법들 및 장치
US20140143522A1 (en) Prefetching based upon return addresses
US8943301B2 (en) Storing branch information in an address table of a processor
US20040225866A1 (en) Branch prediction in a data processing system
US11526356B2 (en) Prefetch mechanism for a cache structure
TWI768547B (zh) 管線式電腦系統與指令處理方法
US7343481B2 (en) Branch prediction in a data processing system utilizing a cache of previous static predictions

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120424

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120724

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130205

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130507

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130514

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130523

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130618

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130918

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131113

R150 Certificate of patent or registration of utility model

Ref document number: 5415268

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250