JP2011530104A - 分岐先バッファの割り当て - Google Patents

分岐先バッファの割り当て Download PDF

Info

Publication number
JP2011530104A
JP2011530104A JP2011521137A JP2011521137A JP2011530104A JP 2011530104 A JP2011530104 A JP 2011530104A JP 2011521137 A JP2011521137 A JP 2011521137A JP 2011521137 A JP2011521137 A JP 2011521137A JP 2011530104 A JP2011530104 A JP 2011530104A
Authority
JP
Japan
Prior art keywords
branch
predicted value
branching
possibility
prediction
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
JP2011521137A
Other languages
English (en)
Other versions
JP5504523B2 (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.)
NXP USA Inc
Original Assignee
NXP USA 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 NXP USA Inc filed Critical NXP USA Inc
Publication of JP2011530104A publication Critical patent/JP2011530104A/ja
Application granted granted Critical
Publication of JP5504523B2 publication Critical patent/JP5504523B2/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, 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/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, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, 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

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

データ処理システム(10)および方法は、分岐先バッファ(BTB)(14)にエントリを割り当てるために提供される。方法は、データ処理装置(40)において実行すべき分岐命令を受信する段階と、分岐先バッファが分岐命令に対応するエントリを含まないことを判定する段階と、割り当てのための分岐先バッファ内のエントリを特定する段階であって、分岐先バッファ内の特定されたエントリは、以前に受信された分岐命令に対するターゲット識別子(30)および第1予測値(32)を備える、前記エントリを特定する段階と、第1予測値と第2予測値との比較に基づいて分岐先バッファ内の特定されたエントリに前記分岐命令を割り当てるかどうかを判定する段階であって、第2予測値は、分岐履歴テーブル(BHT)(20)から生成される、前記分岐命令を割り当てるかどうかを判定する段階と、第2予測値が第1予測値と比べてより分岐する可能性大の予測を示す場合に特定されたエントリに分岐命令を割り当てる段階とを備える。

Description

本出願は、一般的に半導体処理装置に関し、特に、分岐先バッファを有する半導体処理装置に関する。
分岐予測は、処理装置が待機状態である場合に時間の無駄を省き、又は時間を短縮するように用いられる一般的な共通技術である。多くの場合、分岐命令の実行を早めるために、再利用することが予測された分岐情報を記憶するために用いられる分岐先バッファ(branch target buffer:BTB)の使用が分岐予測に含まれる。BTBエントリは、BTBエントリ内に分岐命令と関連する情報をキャッシングすることにより、分岐先に配置された分岐先命令をフェッチする処理を高速化するように用いられる。分岐命令を実行する場合、分岐命令の宛先(分岐先命令)は、処理装置内の命令待ち行列(instruction queue)にロードされる。好ましくは、分岐先が速く得られて命令待ち行列に配置されるように、予測された分岐のエントリはBTB内に存在する。中央処理装置(central processing unit:CPU)が待機状態にあるクロック周期では、BTB内にない分岐先を得て読み出すのに時間がより長くかかる。従って、BTB内で毎回ヒットする分岐があるようにBTBがロードされることが好ましい。このことは、達成する可能性は低いが、BTB外から分岐先を得なければならないことが数回であるが好ましい。分岐予測問題の概要、およびBTB設計の代替手段が、ジェイ・ケイ・エル・リー(J.K.L.Lee)およびエー・ジェイ・スミス(A.J.Smith)の「分岐予測方法および分岐先バッファ設計」(1984年1月、コンピュータ、17(1))により説明されている。
さらに、追加の分岐予測構成は、分岐性能を向上するためにBTBと組み合わされてもよい。BTBエントリが任意の予測器に伴う分岐先情報を含むが、その情報は大きいため、制限された数のエントリのみが供給される。追加の分岐性能のため、1以上の追加の分岐予測器構成を、BTBと連動して用いて未処理の条件付き分岐命令の方向を予測するようにして、予測された分岐経路の推測したフェッチおよび任意の実行できるようにしてもよい。このような一般的に用いられる構成は、小型予測器の集合を含む分岐履歴テーブル(branch history table : BHT)である。分岐先情報が記憶されないので、BHTの容量は、一定の領域だけBTBより増大させてもよい。BHTでは、以前の分岐結果の履歴は、各分岐又は分岐結果のグローバル履歴に対して記憶され、テーブルは、分岐予測を得るために検索される。BHT予測器は、安価で精度良く作成される。BHTを用いた場合、BTB内で分岐がヒットする場合の実行時間より実行時間が長くなるが、実行時間は、分岐予測を用いない場合の実効時間と比較して短縮される。BHT方式の優れた検索、およびさらに複雑な構成は、エス・マックフィリング(S.McFrling)の「分岐予測器の組み合わせ」(DEC WRL−TN−36)において理解され得る。
説明されたBTBおよびBHT構成に加えて、他の分岐向上技術は、信頼性予測器の利用である。信頼性予測器は、分岐予測が正しい可能性を判定するための信頼値を割り当てる。分岐予測の有効性をさらに増大するため、分岐予測器の信頼性メカニズムは、供給された信頼値に基づいて、分岐予測器から得られた予測を修正するように用いられてもよい。また、信頼性予測器は、動的な選択器として複合分岐予測手法で用いられてもよい。複合分岐予測手法では、複数の予測器が具体化され、複数の予測器のうちの一つの複数の予測器により各分岐の選択がなされる。この選択は、各分岐結果に対する最適な予測器を確定することを試みる信頼性予測器又は信頼性論理に基づいてもよい。信頼性予測器又は信頼性論理に関する追加情報は、イー・ジャコブス(E.Jacobse)、イー・ロテンバーグ(E.Rotenberg)、およびジェイ・イー・スミス(J.E.Smith)の「条件分岐予測に対する信頼性の割り当て」(MICRO−29)において理解され得る。
BTB内に分岐がある可能性を増加させる技術は、BTBが大きな記憶容量を有することである。BTBのサイズを増大させることは、処理装置を有する集積回路の面積を拡大させ、BTBの価格を上昇させる。面積の拡大を縮小することは好ましいが、それは特に低価格の処理装置に対して重要である。従って、処理装置が待機状態であるクロック周期において、分岐先結果をバッファにロードする状況を避けるか又は減少するため、BTB内に追加の記憶装置を必要としない技術が必要である。
実施形態による分岐先バッファ(branch target buffer:BTB)を有する処理装置のブロック図である。 図1の処理装置の動作を理解するのに有用なテーブルである。
本発明の態様及び実施形態のさらなる詳細は、単に一例として図面を参照しながら説明される。図面の要素は、簡潔かつ明確に説明され、必ずしも一定の縮尺で描かれていない。
一形態では、処理装置は、分岐先バッファ(branch target buffer:BTB)を有し、BTBは、処理装置による使用が予測されると見込まれる分岐命令のアドレスを記憶するために用いられる。BTBエントリは、対応する分岐に対する予測因子に応じた分岐先情報を含む。BTB内でミスした分岐に対するBTB内のエントリ割り当てでは、BTB内の現状分岐は、置換される可能性が最も高いものとして特定され、置換候補と呼称される。置換候補は、将来において利用される可能性と関連がある。処理装置により直近に実行されたがBTB内に無い分岐は、現状分岐と呼称され、置換候補と自動的に置換せずに、置換候補と置換するものとして考慮される。記憶された置換候補の予測情報は、現状分岐の予測と比較され、割り当てする判定は、この比較に基づくものである。現状分岐が置換候補より用いる可能性が高いと判定される場合、割り当ては実行され、現状分岐は、置換候補と置き換えられる。置換候補が現状分岐より用いる可能性が高いと判定される場合、処理装置は割り当てを実行せず、置換候補がBTB内に保持される。また、予測の信頼性は、どちらが用いられる可能性が高いかを判定するのに用いられてもよい。このことは、図面および以下の記載を参照することでより良く理解される。
本明細書において、バスという用語は、複数の信号又は導電体を言及するために用いられ、複数の信号又は導電体は、データ、アドレス、コントロール、又はステータス等の様々な種類の情報のうちの1以上の情報を伝達するように用いられてもよい。本明細書において説明される導電体は、単一の導電体、複数の導電体、一方向の導電体、又は双方向の導電体に関して図示され又は記載される。しかしながら、異なる実施形態では、導電体の具体化が変更され得る。例えば、双方向の導電体ではなくて別個の一方向の導電体が用いられてもよく、その逆も同様である。また、複数の導電体は、シリアルで又は時分割多重方式で複数の信号を伝達する単一の導電体と置き換えてもよい。同様に、複数の信号を伝達する単一の導電体は、これら信号のサブセットを伝達する種々の異なる導電体に分割され得る。従って、信号を送信することに関して、多くの選択肢が存在する。
図1は、処理装置40およびバス22を備えるデータ処理システム10を示す。さらに、データ処理システム10は、図示しないメモリ、I/Oユニット、および種々の他の回路を備えてもよい。処理装置40は、バス22、BTB14、BTB制御回路16、論理18、および分岐履歴テーブル(branch history table:BHT)20に接続された処理論理12を備える。処理装置40は、例えば超小型処理装置(microprocessor)、超小型制御回路(microcontroller)、デジタル信号処理装置等の処理装置のあらゆる種類のものでもよい。一実施形態では、処理装置40は、処理装置コア(processor core)として言及されても良い。他の実施形態では、処理装置40は、複数の処理装置のデータ処理システムにおける多くの処理装置のうちの1つでもよい。さらに、そのように例示されていないが、処理装置40は、パイプライン型の処理装置でもよい。本発明の動作理解を明確にするため、処理装置40は、図示しない追加の回路を備えてもよい。処理論理12は、実行ユニットを有する。BHT20は、分岐履歴レジスタ26および信頼性予測器28を有する。処理論理12は、BTB制御回路16に接続された、実行ユニット24からの出力を有する。BTB14は、論理18に接続された出力を有する。BHT20は、論理18に接続された第1出力と、論理18に接続された、信頼性予測器28からの第2出力とを有する。論理18は、BTB制御回路16に接続された出力を有する。この例では、32個等の比較的少ない数の好適なエントリを有してもよい。例えば、これらエントリの1つは、ターゲットアドレス30および予測32の2つの部分を有するようなものとして図1に示される。各エントリは、ヒットと判定するためのタグ情報として用いられる図示されない分岐命令アドレスを有する。分岐命令アドレスは、BTB内の記憶された各エントリのタグ情報との比較に基づいて、BTB14内にヒットが存在するかどうかを判定するために用いられる。また、エントリには、有効ビット等の図示されない追加ビットが存在してもよい。この例では、予測32は、2ビットを有して4状態(分岐しない可能性大(strongly not-taken)、分岐しない可能性小(weakly not-taken)、分岐する可能性小(weakly taken)、分岐する可能性大(strongly taken))のうちの1状態を示す。これら4つの可能性は、ターゲットアドレスに対して共通に特定される。この2ビットの予測情報は、従来技術において、分岐する可能性があるか又は分岐する可能性がないかを予測し、且つ状況に応じてフェッチする命令を示すのを補助するように用いられている。BTB14において実行する分岐命令がヒットする場合、一致するエントリにより、分岐のターゲットアドレス(ターゲットアドレス30)と、予測32の状態に基づいて分岐する可能性があるかあるいは分岐する可能性がないのかに関する予測とが論理18に供給される。論理18は、この情報を処理論理12に供給して、命令フェッチと分岐の予想されたパスの実行とを処理論理12が指示できるようにする。
動作では、処理装置40は、処理論理12内の命令バッファに応じて命令を実行する。分岐命令(又は単に分岐)が復号化されて処理を開始する場合、分岐命令は、現状命令となる。各分岐の処理において、BHT20は、分岐の結果に基づいて、分岐履歴レジスタ26とともに分岐により選択された予測因子を含む分岐履歴を更新する。分岐履歴レジスタ26は、最後のN分岐の結果を記憶する。一実施形態では、分岐履歴レジスタ26は、シフトレジスタとして具体化される。分岐命令が実行される毎に、分岐する可能性がない場合に「0」の値がレジスタにシフトされ、分岐する可能性がある場合に「1」の値がレジスタにシフトされる。最も古い値は、レジスタから削除される。従って、分岐履歴レジスタ26は、分岐状態のグローバル履歴を供給する、つまり最後のNの実行された分岐する可能性有り又は可能性無しの履歴を供給する。分岐履歴レジスタ26のサイズは、異なる実施形態において変更してもよい。標準的な実施形態では、Nは、「0」(分岐予測レジスタが実施されない場合)から「16」のような小さな最大数までの範囲にしてもよい。現状分岐がBTB14に存在しない場合、BHT20は、分岐しない可能性大、分岐しない可能性小、分岐する可能性小、および分岐する可能性大を示す4つの状態のうちの1つの状態を示す、現状分岐に対する2ビットの予測因子を供給する。BHT20は、現状分岐に対する2ビットの予測因子を論理18に供給する。動作では、BHT20は、複数の予測因子を記憶し、一つの予測因子が、BHTから現状分岐のために選択される。このような選択は、分岐履歴26に含まれる現状分岐の履歴の何れかに基づいて、現状分岐のプログラムカウンタ値に基づいて、プログラムカウンタ値と分岐履歴レジスタ26との組み合わせに基づいて、又は当技術分野で周知のような種々の方法でなされてもよい。BTB制御回路16は、BTB14内のエントリから置換候補を特定する。BTB14は、置換候補に対する2ビットの予測因子を論理18に供給する。論理18は、現状分岐が置換候補よりも使用される可能性が高いかどうかを判定する。現状分岐が使用される可能性が高い場合、BTB制御回路は、割り当てを実行し、置換候補を現状分岐と置き換える。BTB制御回路は、処理論理12に応答して動作して、処理論理12からの現状分岐に関する必要な情報を受信する。置換候補が使用される可能性が高い場合、置換候補は割り当て状態ではなく、BTB14内に保持され、現状分岐に対するBTB14内の割り当ては実行されない。
図2は、割り当て状態ではないか、又は割り当てを実行すべきかを判定する論理18の原理の例を示す。図2には、置換候補に対する、分岐しない可能性大、分岐しない可能性小、分岐する可能性小、および分岐する可能性大の4つの可能な予測因子を示すテーブルが示される。置換候補のこれら4つの可能性の各々に対して、現状分岐の同じ4つの可能性が存在してテーブル中に示される。従って、示される16組の可能な組み合わせがあり、この組み合わせの各々に対応する判定は、テーブル中に示される。置換候補が分岐しない可能性大として予測される場合、判定は、現状分岐の予測に関係なく「割り当て」である。この場合、現状分岐は、可能性のある3つの分岐可能性よりも高い予測を有し、4つ目の可能性に絞られる。その理由は、現状分岐は置換候補よりも直近で可能性を示すものとして示されているためであり、判定は「割り当て」となる。置換候補が分岐する可能性小の予測を有する場合、判定は、4つの可能性に全てに対して常に「割り当て」である。この場合の異なる判定は、十分に可能性がある。置換候補に対する予測が分岐しない可能性が小であり、且つ現状分岐に対する予測が分岐する可能性が大である場合、予測は、置換候補に対して一つのカテゴリーの差でわずかに良好であるが、判定はまだ「割り当て」である。直近の現状分岐の実行は、わずかな差の予測よりも重要であると考えられる。置換候補の分岐に対して分岐する可能性が小である場合では、判定は、現状分岐が2つのカテゴリー差の分岐しない可能性が大である場合を除いて「割り当て」である。分岐しない可能性が小である現状分岐の一つのカテゴリー差に対して、判定は「割り当て」である。また、異なる判定は、この場合に適切と考えられる。分岐する可能性大の予測を有する置換候補の分岐の場合、「割り当て」の判定は、分岐しない可能性小および分岐しない可能性大の予測を有する現状分岐に対してのみである。置換候補に対して一つのカテゴリー差のみである上記の2つの場合では、判定は「割り当て」であるが、逆に判定してもよい。図2のエントリに対する「割り当て」又は「割り当てしない」の判定結果の代替例が、発明に、特に置換候補の分岐が一つのカテゴリー差の可能性を有するというより好適な結果を有する場合について予想される。判定は、論理18により具体化されてもよく、また、幾つかの実施形態では、図2に図示されたテーブルのような複数のテーブルが、テーブル内の信頼できるエントリに対する異なる割り当て判定を用いて具体化されてもよく、また、動的選択処理が、論理18により用いられて、BTBにおいて現状分岐がミスした場合に現状分岐に対して割り当て判定するときに複数のテーブルのいずれかを信頼するのかを判定してもよい。
さらに、割り当て判定に関する処理は、BHT20の信頼性予測器28により供給される信頼性予測因子を考慮する。信頼性予測因子は、予測をさらに修正するように用いられる。図2のテーブルの例では、予測は、現状分岐に対する信頼性が高いと考慮される。例えば、信頼度が低い場合、分岐する可能性小の現状分岐および分岐する可能性大の置換候補の予測に対して、より好適な判定は「割り当てしない」でもある。信頼性が極めて低い場合では、置換候補および現状分岐が分岐する可能性小として予想される場合に「割り当てる」から「割り当てしない」に判定を切り替えてもよい。論理18は、信頼性予測器28により供給される信頼度に基づいて、図2に示されるテーブル中の1以上のエントリを変更するように用いられても良く、また幾つかの実施形態では1以上の複数の割り当て判定のテーブルを選択するように用いられても良い。信頼性予測器28がBHT20の一部分として示されているが、代替的な実施形態では、信頼性予測器28は、独立的な構成として設けられてもよい。他の代替的な実施形態では、複数の予測器が単一のBHT20の代わりに用いられても良く、信頼性予測器28は、図2のテーブルエントリに基づいて論理18により実行される選択処理に用いられる予測として、現状分岐に対する複数の予測器において複数の予測のうちの一つの予測を選択してもよい。さらに、他の実施形態では、複数の予測器の各々は、異なる置換判定のテーブルを有しても良く、また、信頼性予測器28による現状分岐に用いられるべき特定の予測因子の選択では、割り当て判定をする場合に、論理18による使用のための選択された特定の予測因子と関連する特定のテーブルを選択しても良い。
予測を供給する履歴手法では、一般的に、最も正確であると考えられ、追加の信頼性要素が判定する際のガイドを提供する。また、周知であり、且つ簡潔さ、および速さ等の利点を提供し得る予測を供給する他の技術がある。「割り当て」および「割り当てしない」の判定を行う場合に、記載された現状分岐の予測と置換候補の予測とを比較する処理は、信頼性手法により向上される履歴手法を用いることで利点を得てもよい。また、他の予測方式が効果的であってもよい。BTB割り当ての改良は、置換候補とともに現状分岐の予測を得る他の処理を用いて達成されてもよい。どの様な選択方式が選択されても、BTB内の現状のエントリをBTB内のミスした現状分岐の新たなエントリと置換するかどうかに関する判定のための置換候補および現状分岐の予測を比較することは、追加的な改良である。
上述により、分岐先バッファ(branch target buffer : BTB)内の複数のエントリのうちの1つのエントリを割り当てる方法が提供されることが理解されるべきである。この方法は、データ処理装置において実行すべき分岐命令を受信することを含む。さらに、この方法は、BTBが分岐命令に対応するエントリを含まないことを判定することを含む。さらに、この方法は、割り当てのためにBTB内のエントリを特定することを含み、BTBにおいて特定されたエントリは、以前に受信された分岐命令に対するターゲット識別子および分岐命令の第1予測値を備える。さらに、この方法は、第1予測値と第2予測値との比較に基づいて、分岐命令をBTB内の特定されたエントリに割り当てるかどうかを判定することを含む。この方法は、分岐履歴テーブル(branch history table : BHT)から生成される第2予測値によりさらに特徴付けられた判定するステップによりさらに特徴付けられる。方法は、第2予測値が第1予測値と比べてより分岐する可能性大を示す場合、特定されたエントリに予測分岐命令を割り当てることをさらに備えてもよい。方法は、複数のビットを分岐履歴レジスタにシフトすることを備え、複数のビットの各ビットは、分岐命令の結果を示し、複数のビットのうちの1以上のビットは、BHTをアドレス指定するためのインデックスを生成するのに用いられる。さらに、方法は、分岐命令の結果として命令順序の変更が生じた場合、BHTを更新することを備えてもよい。方法は、複数の以前の命令分岐の結果に基づく第2予測値により特徴付けられる。さらに、方法は、複数の以前の命令分岐の結果に基づく第2予測値により特徴付けられてもよい。さらに、方法は、多数の正しい予測に基づいて予測信頼値を生成すること、予測信頼値と第2予測値とを組み合わせて第3予測値を生成すること、および第3予測値を用いて、特定されたエントリに分岐命令を割り当てるかどうかを判定することを備えてもよい。さらに、方法は、分岐しない可能性大、分岐しない可能性小、分岐する可能性小、および分岐する可能性大のうちの1つを示す2ビットの予測値を備える第1予測値により特徴付けられてもよい。さらに、方法は、分岐しない可能性大、分岐しない可能性小、分岐する可能性小、および分岐する可能性大のうちの1つを示す2ビットの予測値を備える第2予測値により特徴付けられてもよい。
次に、データ処理システム内の分岐先バッファ(branch target buffer : BTB)に複数のエントリのうちの1つのエントリを割り当てる方法について説明する。方法は、データ処理システムにおいて実行されるべき複数の命令を受信することを含み、複数の命令は、1以上の分岐命令を備える。さらに、方法は、分岐履歴テーブル(branch history table : BHT)を生成することを含み、BHTは、複数の命令の命令実行中に蓄積される命令順序の変更結果に基づくものであり、蓄積された命令順序の変更結果は、第1予測値を生成するために用いられる。さらに、方法は、データ処理システムにおいて実行されるべき第1分岐命令を受信することを含む。さらに、方法は、BTBが第1分岐命令に対応するエントリを含まないかどうかを判定することを含む。方法は、割り当てのために、BTB内のエントリを特定することを含み、BTB内の特定されたエントリは、第2分岐命令に対する第2予測値を備える。さらに、方法は、第1予測値と第2予測値との比較に基づいて、BTB内の特定されたエントリに第1分岐命令を割り当てるかどうかを判定することを含む。さらに、方法は、第1予測値が第2予測値と比べてより分岐する可能性大の予測を示す場合に、特定されたエントリに第1分岐命令を割り当て、第1予測値が第2予測値と比べてより分岐しない可能性大の予測を示す場合に、特定されたエントリに第2分岐命令を割り当てることを含む。さらに、方法は、データ処理システム内の多数の正しい予測に基づいて予測信頼値を生成し、予測信頼値と第1予測値とを組み合わせて第3予測値を生成し、第3予測値を用いて特定されたエントリに分岐命令を割り当てるかどうかを判定することを含む。さらに、方法は、分岐しない可能性大、分岐しない可能性小、分岐する可能性小、および分岐する可能性大のうちの1つを示す2ビットの予測値を備える第1予測値により特徴付けられてもよい。さらに、方法は、分岐しない可能性大、分岐しない可能性小、分岐する可能性小、および分岐する可能性大のうちの1つを示す2ビットの予測値を備える第2予測値により特徴付けられてもよい。さらに、方法は、複数のビットを分岐履歴レジスタにシフトすることを含み、複数のビットの各ビットは、分岐命令の結果を示し、複数のビットの少なくとも1つは、BHTをアドレス指定するためのインデックスを生成するのに用いられる。
次に、データ処理システムを説明する。データ処理システムは、命令を実行する処理論理を含む。さらに、データ処理システムは、処理論理に接続された分岐先バッファ(branch target buffer : BTB)を含み、BTBは、複数のエントリを有し、複数のエントリのうちの1つのエントリは、第1分岐命令に対応する第1予測値を備える。さらに、データ処理システムは、BTBに接続されたBTB制御回路を含み、BTB制御回路は、置換すべき複数のエントリのうちの1つのエントリを選択する。さらに、データ処理システムは、処理論理に接続された分岐履歴テーブル(branch history table : BHT)を含み、BHTは、複数の命令の実行中に蓄積された命令順序の変更結果に基づいて第2予測値を供給し、第2予測値は、第2分岐命令に対応する。さらに、データ処理システムは、BTBに接続され、第1予測値を受信し、BHTに接続され、第2予測値を受信するBTB置換割り当て論理を含み、BTB置換割り当て論理は、第1予測値と第2予測値との比較を行い、その比較に基づいて複数のエントリのうちの1つのエントリに第2分岐命令を割り当てる。さらに、データ処理システムは、BTB置換割り当て論理に接続された信頼性予測器を備え、信頼性予測器は、多数の正しい分岐予測に基づいて信頼性予測値を生成し、信頼性予測値が第2予測値と組み合わされることで第3予測値が生成され、第3予測値は、複数のエントリのうちの1つのエントリに第2分岐命令を割り当てるかどうかを判定するのに用いられる。さらに、データ処理システムは、分岐しない可能性大、分岐しない可能性小、分岐する可能性小、および分岐する可能性大のうちの1つを示す2ビットの予測値を備える第1予測値により特徴付けられてもよい。さらに、データ処理システムは、分岐しない可能性大、分岐しない可能性小、分岐する可能性小、および分岐する可能性大のうちの1つを示す2ビットの予測値を備える第2予測値により特徴付けられてもよい。さらに、データ処理システムは、第2予測値が第1予測値と比べてより分岐する可能性大を示すかどうかの比較判定により特徴付けられ、複数のエントリのうちの1つのエントリが第2分岐命令に割り当てられる。
本発明を具体化する装置の大部分は当業者に知られた電子部品および回路にて構成されるため、回路の詳細は、本発明の根本的なコンセプトの理解および認識に対する、および本発明の教示から不明瞭または混乱しないために必要であると思われる図示した内容よりも広い範囲について説明しない。
このように、本明細書において説明されるアーキテクチャは単なる例示に過ぎず、実際には同じ機能を実現する多くの他のアーキテクチャを用いることができることが理解し得る。要するに、同じ機能を実現するあらゆる構造の構成要素を効果的に「関連付ける」ことにより、所望の機能を実現することができる。従って、本明細書において特定の機能を実現するために組み合わされるいずれの2つの構成要素も、互いに「関連付ける」ことにより、所望の機能を、アーキテクチャまたは中間構成要素にかかわらず実現することができる。同様に、このようにして関連付けたいずれの2つの構成要素も、所望の機能を実現するために、互いに「動作可能に接続される」または「動作可能に連結される」ものとして見なすこともできる。
さらに、当業者は、上記動作の機能境界を単に例示的なものであるとして認識するだろう。複数の動作機能は、追加動作として分配された1つの動作、および1つの動作機能の少なくとも1つが組み合わされる。さらにまた、代替的な実施形態は、特有動作の複数の例を含み、動作順序は、様々な他の実施形態において変更されてもよい。
本発明において、本発明は、特定の実施形態を参照して説明されている。しかし、添付の特許請求の範囲に説明されるように、本発明の範囲から逸脱することなく様々な変形および変更がなされていてもよい。例えば、BTB14を32個のエントリを有すると説明したが、異なる数が用いられてもよい。従って、本明細書および本図面は、限定的意味ではなく例示的意味として考えられるべきであり、このような全ての変形は、本発明の範囲内に含まれることを意図する。
特定の実施形態を参照しながら本発明を説明してきたが、添付の特許請求の範囲に記載する本発明の範囲から逸脱することなしに、本発明を種々に修正および変更することができる。例えば、BTB14は、32のエントリを有するとして説明されたが、異なる数が用いられてもよい。従って、本明細書および図面は制限的な意味ではなく例示として捉えられるべきであり、全てのこのような変形は本発明の範囲に包含されるべきものである。特定の実施形態に関して本明細書において説明されるいずれの効果、利点、または問題解決法も、いずれかの請求項または全ての請求項の必須の、必要な、または基本的な特徴または要素であると解釈されるべきではない。
本明細書において用いられた「接続される」という用語は、直接的な接続または機械的な接続に制限されるべきではない。
特に記載がある場合以外は、「第1」、「第2」という用語は、こうした用語によって説明される要素を任意に区別するために使用されている。したがって、これらの用語がこうした要素の一時的あるいはその他の優先順位を必ずしも意味するとは限らない。

Claims (20)

  1. 分岐先バッファ(BTB)内の複数のエントリのうちの1つのエントリを割り当てる方法であって、
    データ処理装置において実行すべき分岐命令を受信する段階と、
    前記分岐先バッファが前記分岐命令に対応するエントリを含まないことを判定する段階と、
    割り当てのための分岐先バッファ内のエントリを特定する段階であって、分岐先バッファ内の特定されたエントリは、以前に受信された分岐命令に対するターゲット識別子および第1予測値を備える、前記エントリを特定する段階と、
    前記第1予測値と第2予測値との比較に基づいて前記分岐先バッファ内の前記特定されたエントリに前記分岐命令を割り当てるかどうかを判定する段階と
    を備える方法。
  2. 前記判定する段階は、分岐履歴テーブル(BHT)から生成される前記第2予測値によりさらに特徴付けられる、請求項1に記載の方法。
  3. 前記第2予測値が前記第1予測値と比べてより分岐する可能性大の予測を示す場合に前記分岐命令を前記特定されたエントリに割り当てる段階をさらに備える、請求項2に記載の方法。
  4. 複数のビットを分岐履歴レジスタにシフトする段階であって、前記複数のビットの各ビットは、分岐命令の結果を示し、複数のビットのうちの1ビット以上は、前記分岐履歴テーブルをアドレス指定するためのインデックスを生成する際に用いられる、前記複数のビットをシフトする段階をさらに備える、請求項2に記載の方法。
  5. 前記分岐命令の結果として命令順序の変更が生じる場合に前記分岐履歴テーブルを更新する段階をさらに備える、請求項2に記載の方法。
  6. 前記第2予測値は、複数の以前の分岐命令の結果に基づくものである、請求項1に記載の方法。
  7. 前記分岐命令を前記特定されたエントリに割り当てる段階は、前記第2予測値が前記分岐する可能性が低いことを示す場合に前記特定されたエントリに前記分岐命令を割り当てないことをさらに備える、請求項1に記載の方法。
  8. 多数の正しい予測に基づいて予測信頼値を生成する段階と、
    前記予測信頼値と前記第2予測値とを組み合わせて、第3予測値を生成する段階と、
    前記第3予測値を用いて、前記特定されたエントリに前記分岐命令を割り当てるかどうかを判定する段階と
    をさらに備える、請求項1に記載の方法。
  9. 前記第1予測値は、分岐しない可能性大、分岐しない可能性小、分岐する可能性小、および分岐する可能性大の1つを示す2ビットの予測値を備える、請求項1に記載の方法。
  10. 前記第2予測値は、分岐しない可能性大、分岐しない可能性小、分岐する可能性小、および分岐する可能性大の1つを示す2ビットの予測値を備える、請求項1に記載の方法。
  11. データ処理システムにおいて分岐先バッファ(BTB)内の複数のエントリのうちの1つのエントリを割り当てる方法であって、
    前記データ処理システムにおいて処理すべき複数の命令を受信する段階であって、前記複数の命令は、1以上の分岐命令を備える、前記複数の命令を受信する段階と、
    分岐履歴テーブル(BHT)を生成する段階であって、前記分岐履歴テーブルは、前記複数の命令の実行中に蓄積された命令順序の変更結果に基づくものであり、前記蓄積された命令順序の変更結果は、第1予測値を生成するのに用いられる、前記分岐履歴テーブルを生成する段階と、
    前記データ処理システムにおいて処理すべき第1分岐命令を受信する段階と、
    前記分岐履歴テーブルが前記第1分岐命令に対応するエントリを含まないことを判定する段階と、
    割り当てのために前記分岐履歴テーブル内のエントリを特定する段階であって、前記分岐履歴テーブル内の前記特定されたエントリは、第2分岐命令に対する第2予測値を備える、前記エントリを特定する段階と、
    前記第1予測値と前記第2予測値との比較に基づいて前記分岐履歴テーブル内の前記特定されたエントリに前記第1分岐命令を割り当てるかどうかを判定する段階と、
    前記第1予測値が前記第2予測値と比べてより分岐する可能性大の予測を示す場合に前記第1分岐命令を前記特定されたエントリに割り当て、前記第1予測値が前記第2予測値と比べてより分岐しない可能性大の予測を示す場合に前記エントリを前記第2分岐命令に割り当てない段階と
    を備える方法。
  12. 前記データ処理システムにおいて多数の正しい予測に基づいて予測信頼値を生成する段階と、
    前記予測信頼値と前記第1予測値とを組み合わせて、第3予測値を生成する段階と、
    前記第3予測値を用いて、前記分岐命令を前記識別されたエントリに割り当てるかどうかを判定する段階と
    をさらに備える、請求項11に記載の方法。
  13. 前記第1予測値は、分岐しない可能性が大である状態、分岐しない可能性が小である状態、分岐する可能性が小である状態、および分岐する可能性が大である状態の1つを示す2ビットの予測値を備える、請求項11に記載の方法。
  14. 前記第2予測値は、分岐しない可能性が大である状態、分岐しない可能性が小である状態、分岐する可能性が小である状態、および分岐する可能性が大である状態の1つを示す2ビットの予測値を備える、請求項11に記載の方法。
  15. 複数のビットを分岐履歴レジスタにシフトする段階であって、前記複数のビットの各ビットは、分岐命令の結果を示し、複数のビットのうち1ビット以上は、前記分岐履歴テーブルをアドレス指定するためのインデックスを生成する際に用いられる、前記複数のビットをシフトする段階をさらに備える、請求項11に記載の方法。
  16. データ処理システムであって、
    命令を実行する処理論理と、
    前記処理論理に接続された分岐先バッファ(BTB)であって、複数のエントリを有し、前記複数のエントリのうちの1つのエントリは、第1分岐命令に対応する第1予測値を備える、前記分岐先バッファと、
    前記分岐先バッファに接続された分岐先バッファ制御回路であって、置換すべき複数のエントリのうちの1つのエントリを選択する、前記分岐先バッファ制御回路と、
    前記処理論理に接続され、前記複数の命令の実行中に蓄積された命令順序の変更結果に基づいて第2分岐命令に対応する第2予測値を供給する分岐履歴テーブル(BHT)と、
    前記分岐先バッファに接続され、前記第1予測値を受信し、且つ前記分岐履歴テーブルに接続され、第2予測値を受信する分岐先バッファ置換割り当て論理であって、前記第1予測値と前記第2予測値との比較を実行し、該比較に基づいて前記複数のエントリのうちの1つのエントリを前記第2分岐命令に割り当てる、前記分岐先バッファ置換割り当て論理と
    を備えるデータ処理システム。
  17. 前記分岐先バッファ置換割り当て論理に接続された信頼性予測器であって、多数の正しい予測に基づいて予測信頼値を生成し、前記予測信頼値と前記第2予測値とを組み合わせて第3予測値を生成し、前記第3予測値を用いて前記複数のエントリのうちの1つのエントリを前記第2分岐命令に割り当てるかどうかを判定する、前記信頼性予測器をさらに備える、請求項16に記載のデータ処理システム。
  18. 前記第1予測値は、分岐しない可能性が大である状態、分岐しない可能性が小である状態、分岐する可能性が小である状態、および分岐する可能性が大である状態の1つを示す2ビットの予測値を備える、請求項16に記載のデータ処理システム。
  19. 前記第2予測値は、分岐しない可能性が大である状態、分岐しない可能性が小である状態、分岐する可能性が小である状態、および分岐する可能性が大である状態の1つを示す2ビットの予測値を備える、請求項16に記載のデータ処理システム。
  20. 前記第2予測値が前記第1予測値と比べてより分岐する可能性大の予測を示すと比較判定する場合、前記複数のエントリのうちの1つのエントリが前記第2分岐命令に割り当てられる、請求項16に記載のデータ処理システム。
JP2011521137A 2008-07-29 2009-05-11 分岐先バッファの割り当て Expired - Fee Related JP5504523B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/181,363 2008-07-29
US12/181,363 US8205068B2 (en) 2008-07-29 2008-07-29 Branch target buffer allocation
PCT/US2009/043452 WO2010014286A1 (en) 2008-07-29 2009-05-11 Branch target buffer allocation

Publications (2)

Publication Number Publication Date
JP2011530104A true JP2011530104A (ja) 2011-12-15
JP5504523B2 JP5504523B2 (ja) 2014-05-28

Family

ID=41609521

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011521137A Expired - Fee Related JP5504523B2 (ja) 2008-07-29 2009-05-11 分岐先バッファの割り当て

Country Status (7)

Country Link
US (1) US8205068B2 (ja)
EP (1) EP2324421B1 (ja)
JP (1) JP5504523B2 (ja)
KR (1) KR101246641B1 (ja)
CN (1) CN102112964B (ja)
TW (1) TW201005634A (ja)
WO (1) WO2010014286A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8874884B2 (en) * 2011-11-04 2014-10-28 Qualcomm Incorporated Selective writing of branch target buffer when number of instructions in cache line containing branch instruction is less than threshold
US20140250289A1 (en) * 2013-03-01 2014-09-04 Mips Technologies, Inc. Branch Target Buffer With Efficient Return Prediction Capability
GB2528676B (en) * 2014-07-25 2016-10-26 Imagination Tech Ltd Conditional Branch Prediction Using A Long History
US11755484B2 (en) * 2015-06-26 2023-09-12 Microsoft Technology Licensing, Llc Instruction block allocation
US10423419B2 (en) * 2016-06-27 2019-09-24 International Business Machines Corporation Stream based branch prediction index accelerator for multiple stream exits
GB201701841D0 (en) * 2017-02-03 2017-03-22 Univ Edinburgh Branch target buffer for a data processing apparatus
KR101894894B1 (ko) 2017-06-16 2018-09-05 서울대학교산학협력단 바이트코드 처리 장치 및 동작 방법
US20230244494A1 (en) * 2022-02-01 2023-08-03 Apple Inc. Conditional Instructions Prediction
US11809874B2 (en) 2022-02-01 2023-11-07 Apple Inc. Conditional instructions distribution and execution on pipelines having different latencies for mispredictions

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08110857A (ja) * 1994-10-12 1996-04-30 Mitsubishi Electric Corp 命令処理装置
JPH08320788A (ja) * 1995-05-24 1996-12-03 Mitsubishi Electric Corp パイプライン方式プロセッサ
US20070239974A1 (en) * 2006-04-07 2007-10-11 International Business Machines Corporation System and method for target branch prediction using correlation of local target histories
WO2008021607A2 (en) * 2006-08-11 2008-02-21 Freescale Semiconductor Inc. Selective branch target buffer (btb) allocation
US20090222648A1 (en) * 2008-02-29 2009-09-03 Moyer William C Selective postponement of branch target buffer (btb) allocation

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5692167A (en) * 1992-07-31 1997-11-25 Intel Corporation Method for verifying the correct processing of pipelined instructions including branch instructions and self-modifying code in a microprocessor
US6088793A (en) * 1996-12-30 2000-07-11 Intel Corporation Method and apparatus for branch execution on a multiple-instruction-set-architecture microprocessor
US5978909A (en) * 1997-11-26 1999-11-02 Intel Corporation System for speculative branch target prediction having a dynamic prediction history buffer and a static prediction history buffer
US6151672A (en) * 1998-02-23 2000-11-21 Hewlett-Packard Company Methods and apparatus for reducing interference in a branch history table of a microprocessor
US6247122B1 (en) * 1998-12-02 2001-06-12 Ip-First, L.L.C. Method and apparatus for performing branch prediction combining static and dynamic branch predictors
US7107437B1 (en) * 2000-06-30 2006-09-12 Intel Corporation Branch target buffer (BTB) including a speculative BTB (SBTB) and an architectural BTB (ABTB)
US20020166042A1 (en) * 2001-05-01 2002-11-07 Yoav Almog Speculative branch target allocation
US6895498B2 (en) * 2001-05-04 2005-05-17 Ip-First, Llc Apparatus and method for target address replacement in speculative branch target address cache
JP4027620B2 (ja) * 2001-06-20 2007-12-26 富士通株式会社 分岐予測装置、プロセッサ、及び分岐予測方法
TW564369B (en) * 2001-07-16 2003-12-01 Ip First Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US6938151B2 (en) * 2002-06-04 2005-08-30 International Business Machines Corporation Hybrid branch prediction using a global selection counter and a prediction method comparison table
KR100980076B1 (ko) * 2003-10-24 2010-09-06 삼성전자주식회사 저전력 분기 예측 시스템 및 분기 예측 방법
US7096348B2 (en) * 2003-12-15 2006-08-22 Freescale Semiconductor, Inc. Method and apparatus for allocating entries in a branch target buffer
KR100591769B1 (ko) * 2004-07-16 2006-06-26 삼성전자주식회사 분기 예측 정보를 가지는 분기 타겟 버퍼
US7447885B2 (en) * 2005-04-20 2008-11-04 Arm Limited Reading prediction outcomes within a branch prediction mechanism
US20080040591A1 (en) * 2006-08-11 2008-02-14 Moyer William C Method for determining branch target buffer (btb) allocation for branch instructions
US7783870B2 (en) * 2007-08-13 2010-08-24 International Business Machines Corporation 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
JPH08110857A (ja) * 1994-10-12 1996-04-30 Mitsubishi Electric Corp 命令処理装置
JPH08320788A (ja) * 1995-05-24 1996-12-03 Mitsubishi Electric Corp パイプライン方式プロセッサ
US20070239974A1 (en) * 2006-04-07 2007-10-11 International Business Machines Corporation System and method for target branch prediction using correlation of local target histories
WO2008021607A2 (en) * 2006-08-11 2008-02-21 Freescale Semiconductor Inc. Selective branch target buffer (btb) allocation
US20090222648A1 (en) * 2008-02-29 2009-09-03 Moyer William C Selective postponement of branch target buffer (btb) allocation

Also Published As

Publication number Publication date
KR101246641B1 (ko) 2013-04-01
KR20110055567A (ko) 2011-05-25
EP2324421B1 (en) 2013-10-02
CN102112964B (zh) 2014-10-29
US8205068B2 (en) 2012-06-19
US20100031010A1 (en) 2010-02-04
WO2010014286A1 (en) 2010-02-04
CN102112964A (zh) 2011-06-29
TW201005634A (en) 2010-02-01
JP5504523B2 (ja) 2014-05-28
EP2324421A1 (en) 2011-05-25
EP2324421A4 (en) 2011-08-10

Similar Documents

Publication Publication Date Title
JP5504523B2 (ja) 分岐先バッファの割り当て
KR101059335B1 (ko) 가변 길이 명령 세트 실행 모드들을 가지는 프로세서 내의 bht의 효율적 사용방법
US9965274B2 (en) Computer processor employing bypass network using result tags for routing result operands
TWI386850B (zh) 用於主動式分支目標位址快取記憶體管理之方法以及裝置
US9367471B2 (en) Fetch width predictor
JP5177141B2 (ja) 演算処理装置、演算処理方法
US7243219B2 (en) Predicting instruction branches with a plurality of global predictors using varying amounts of history instruction
JP5231403B2 (ja) スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ
KR20070118135A (ko) 인덱스당 2개 이상의 분기 타겟 어드레스를 저장하는 분기타겟 어드레스 캐시
CN106681695B (zh) 提前取出分支目标缓冲器
US20220214884A1 (en) Issuing instructions based on resource conflict constraints in microprocessor
CN110741344A (zh) 用于分支预测机制的统计校正
US11138014B2 (en) Branch predictor
US20200257531A1 (en) Apparatus having processing pipeline with first and second execution circuitry, and method
JP5494832B2 (ja) 演算処理装置および分岐予測方法
US20060095746A1 (en) Branch predictor, processor and branch prediction method
US10838731B2 (en) Branch prediction based on load-path history
KR100980076B1 (ko) 저전력 분기 예측 시스템 및 분기 예측 방법
JP2020077334A (ja) 演算処理装置および演算処理装置の制御方法
CN111124494B (zh) 一种cpu中加速无条件跳转的方法及电路

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20120227

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120511

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130806

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131106

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131113

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131206

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131213

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140106

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140114

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140131

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140227

R150 Certificate of patent or registration of utility model

Ref document number: 5504523

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