JP5313228B2 - 適切なプレデコーディングにより可変長命令セットから命令をプレロードするシステム、方法およびソフトウェア - Google Patents

適切なプレデコーディングにより可変長命令セットから命令をプレロードするシステム、方法およびソフトウェア Download PDF

Info

Publication number
JP5313228B2
JP5313228B2 JP2010502281A JP2010502281A JP5313228B2 JP 5313228 B2 JP5313228 B2 JP 5313228B2 JP 2010502281 A JP2010502281 A JP 2010502281A JP 2010502281 A JP2010502281 A JP 2010502281A JP 5313228 B2 JP5313228 B2 JP 5313228B2
Authority
JP
Japan
Prior art keywords
instruction
preload
cache line
instructions
instruction cache
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.)
Expired - Fee Related
Application number
JP2010502281A
Other languages
English (en)
Other versions
JP2010524088A (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 JP2010524088A publication Critical patent/JP2010524088A/ja
Application granted granted Critical
Publication of JP5313228B2 publication Critical patent/JP5313228B2/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
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • G06F9/30152Determining start or end of instruction; determining instruction length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • 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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、一般にプロセッサの分野に関し、特に可変長命令セットから命令キャッシュの中へ命令をプレロードし、正確に命令をプレデコードするシステム、方法およびソフトウェアに関する。
マイクロプロセッサは、幅広い種類のアプリケーションの計算のタスクを行う。改善されたプロセッサ性能は、ソフトウェア拡張を通じて機能性を増加させ、および/またはより高速動作を可能にさせることが、ほとんどの場合好まれる。RISC構造のような構造上の進歩および半導体技術での進歩の両方を利用することによって、多くの最新のプロセッサは、DRAMとSDRAMのようにメモリチップよりはるかに高いクロック速度で実行する。比較的低速なメモリアクセスの不利益を最小化するために、これらのプロセッサは、最近アクセスされたことのあるおよび/またはプロセッサが近い将来に(ソフトウェア経由で)アクセスすることを見込む命令およびデータのローカルコピーを記憶する高速のオンチップキャッシュメモリを備えた、階層的メモリ構造を利用する。
命令キャッシュへの見込んでいるロードの一例は、プレロード命令(例えば、ARM命令PLI)である。プレロード命令は、それらの実行の前に命令キャッシュの中へ命令をロードする。プログラマは、対象への既知または(サブルーチン呼出しのような)見込まれたブランチより少し先に、コードの中へプレロード命令を挿入してもよい。
プレロード命令は、ブランチが実行する場合、対象に対する命令が即時実行用のキャッシュにおいて利用可能であるように、対象に対する命令を命令キャッシュの中へロードする。
ごく最近のプロセッサは、連続する命令が全体のプロセッサスループットを増加させるための実行においてオーバラップされる、パイプライン方式を採用する。パイプラインを通して円滑な実行を維持することは、高性能を実現するために重要である。ある既知のパイプライン最適化手法は、プレデコーディング命令である。命令がメモリから読み出され、部分的に復号されるように、命令が分析され、(プレデコード情報として知られる)命令に関するいくつかの情報は、関連する命令と共に命令キャッシュへ記憶される。命令がキャッシュからパイプラインの中へのちに取り出されるとき、プレデコード情報も取り出され、命令を完全に復号することに役立つ。
プレデコード情報は例えば、ブランチおよび浮動小数点命令、またはパイプラインにおいて命令を実行するのに役立つ他の情報を識別してもよい。
いくつかの命令セットは、異なる長さを有する命令を含む。例えば、プロセッサは32ビットの命令セットを有してもよく、加えてJava(登録商標)バイトコードを実行する能力を含んでもよい。別の例として、ARMプロセッサ構造のいくつかのバージョンは、Thumb−2として知られる命令セットから命令を実行する。Thumb−2命令は長さ16ビットまたは32ビットかもしれない。
一般に、コンパイラは、最もコンパクトな符号を実現するためにThumb−2命令を選択し、16ビットおよび32ビット命令は、Thumb−2コードのセグメント内で任意の順に混ぜ合わされてもよい。その上、一般にメモリにおける命令の配列上に制約はない。
可変長命令セットプロセッサにおけるプレデコーダの1つの有用な機能は、命令キャッシュラインにおける各命令の長さを指示しおよび確認することである。すなわち、プレデコード情報は、例えば命令操作コードの検査によって決定されるかもしれない命令境界を識別してもよい。実行のためにパイプラインの中から命令を取り出す際に、この情報はパイプライン取り出しおよび復号段階を支援する。
可変長命令セットからの命令をプレロードし、命令境界を指示するために命令をプレデコードする際に直面する1つの問題は、命令がメモリにおいて必ずしも配列されないので、命令が命令キャッシュライン境界に沿って配列しないかもしれないということである。その結果として、メモリから読み出されたキャッシュラインサイズデータブロックにおける第1データ(例えば、ハーフワード)は、完全な命令(例えば、16ビットの命令)または同じキャッシュライン(例えば32ビット命令の最初の16ビット)において連続する命令の一部かもしれず、そのどちらかはプレデコーダによって検出される。
しかし、第1データは、データブロック(例えば、32ビット命令の最後の16ビット)より前に始まった命令の一部でもよいし、変数、即値データなどのような非命令データを具備してもよい。後の2つのケース(部分的な命令またはデータ)のどちらかでは、第1データは、完全な命令または命令の最初の部分として不正確にプレデコードされるかもしれない。
データブロックにおける長さおよびそれに従う他の命令の境界が連続して決定されるので、第1データを不正確にプレデコードすることは、データブロックにおける全ての命令を不正確にプレデコードし、命令キャッシュへその命令で書き込まれる不正確なプレデコード情報を引き起こす可能性がある。命令がパイプラインの中へキャッシュから続けて取り出され、プレデコード情報が誤っていると決定されるとき、キャッシュラインは破棄されなければならず、命令はメモリから再び取り出し、正しい命令境界を決定するためにプレデコードされる。それはプロセッサの性能および電力消費の両方に悪影響を与える。
ここに開示され要求される1以上の実施形態に従って、可変長命令セットから命令を実行するプロセッサにおいて、プリロード命令は命令キャッシュラインに対応するデータブロックをメモリから読み出し、データブロックにおいて命令をプリデコードし、命令キャッシュの中へプリデコード情報および命令をロードする。命令実行部は、プレデコーダに第1有効命令のデータブロック内の位置を指示する。プレデコーダは、連続的に各命令の長さおよびそれに従う命令境界を決定する。第1有効命令の位置を識別する命令キャッシュラインオフセット指標は生成され、様々な方法においてプレデコーダに提供されてもよい。
一実施形態は、命令キャッシュの中への可変長命令セットからの命令をプレロードする方法に関する。命令キャッシュラインに対応するデータブロックの中へ第1有効命令のオフセットを識別する命令キャッシュラインオフセット指標が設定される。可変長命令セットから少なくとも1つの命令を含むデータブロックをメモリから読み出し、命令キャッシュの中へ命令をロードするプレロード命令が実行される。命令キャッシュラインオフセット指標に応じて、データブロックにおける命令は第1命令での先頭から連続的にプリデコードされる。
別の実施形態はプロセッサに関する。プロセッサは、メモリインターフェース、および可変長命令セットおよびそれらに対応するプレデコード情報からの命令を記憶する命令キャッシュを含む。プロセッサはまた、命令キャッシュの中へロードされるデータブロックにおいて第1有効命令を識別する命令キャッシュラインオフセット指標を生成する命令実行部を含む。プロセッサは、命令キャッシュとメモリインターフェースとの間に置かれ、プレロード命令の実行時に命令キャッシュラインオフセット指標に応じて、第1有効命令で始まるデータブロックにおいて命令を連続的にプレデコードするプレデコーダを含む。
さらに別の実施形態は、可変長命令セットに少なくとも1つのプレロード命令を記憶するコンピュータ読み取り可能な媒体に関し、命令は、プロセッサに命令キャッシュの中へ命令をプレロードさせ、プレロードされた命令は第1有効命令における先頭をプレデコードさせる。
可変長命令セットからプレロードされた命令を正確にプレデコードするプロセッサの機能ブロック図。 3つの代表的なデータブロックにおける可変長命令セットからの命令の配列を示すブロック図。 可変長命令セットからの命令をプレロードすることの方法のフローチャート。
図1は、少なくとも1つの可変長命令セットからの命令を実行するプロセッサ110の機能ブロック図を示す。特に、プロセッサ110は、可変長命令セットからプレロードされた命令を正確にプレデコードする。プロセッサ110は、算術論理演算ユニット(ALU)(図示せず)のような論理的なおよび計算の回路と同様に、パイプ段階において組織された複数のレジスタまたはラッチ116を具備しているパイプライン114を含む命令実行部112において命令を実行する。パイプラインは制御ロジック118に従って命令を実行する。示されるように、パイプライン114はスーパースカラ(a superscalar)設計でもよい。
汎用レジスタ(GPR)ファイル120は、記憶階層のトップを具備するレジスタを提供する。一実施形態において、命令実行部は、ここでさらに説明されるように、第1命令が配置される命令キャッシュラインの中へオフセットを指示してもよい。命令実行部112はまた、L2キャッシュメモリ136または主メモリ138から取り出されたデータおよび命令の特性を追跡するL2処理ロジック124を含む。
パイプライン114は、命令側トランスレーションルックアサイドバッファ(ITLB)128により管理されたパーミッションおよびメモリアドレッシングで、命令キャッシュ126からの命令を取り出す。プレデコーダ130は、L2キャッシュ136(あるいは主メモリ138)から取り出された命令をプレデコードし、命令キャッシュ126の中へ命令およびプレデコード情報を置く。1以上の実施形態では、プレデコード情報は、命令キャッシュラインに命令の長さを含む。ここにより詳細に説明されるように、プレデコーダ130は、第1命令のキャッシュライン内の位置を識別する命令実行部112からの命令キャッシュラインオフセット指標(ICOI)に応じて命令の長さを正確に決定する。
データは、メイントランスレーションルックアサイドバッファ(TLB)134によって管理されたパーミッションおよびメモリアドレッシングによって、データキャッシュ132からアクセスされる。様々な実施形態では、ITLB 128は、TLB 134の一部のコピーを具備してもよい。その代わりに、ITLB 128およびTLB 134は統合されてもよい。同様に、プロセッサ110の様々な実施形態では、命令キャッシュ126およびデータキャッシュ132は一体化されてもよい。
命令キャッシュ126およびデータキャッシュ132におけるミスは、図1に示された実施形態において統合されたレベル2(L2)キャッシュメモリ136へアクセスを引き起こす。L2キャッシュ136におけるミスは、メモリインターフェース142の管理下で、システムバス140上のメイン(オフチップ)メモリ138にアクセスを引き起こす。
プロセッサ110は、周辺バス150を介して様々な周辺機器146、148へのアクセスを制御する、入出力(I/O)インタフェース144を含んでもよい。
技術的に知られるように、プロセッサ110は、周辺の146および148によって読まれる磁気または光学の媒体、またはメモリ136のようなコンピュータ読み取り可能な媒体から読み出された命令を実行する。
当業者は、プロセッサ110は多数のバリエーションが可能であることを認識するだろう。例えば、プロセッサ110は、レベル3(L3)または追加キャッシュを含んでもよく、および/または分離L2キャッシュ136は、命令キャッシュ126およびデータキャッシュ132のそれぞれのために設けられてもよい。加えて、プロセッサ110に示された機能ブロックの1以上は、特定の実施形態から省略されてもよい。
プロセッサ110は、少なくとも1つの可変長命令セットからの命令を実行する。様々な実施形態では、プロセッサ110は、固定長命令セット(例えば、32ビットのARM命令セット)および1以上の可変長命令セット(例えば、32ビットおよび16ビットThumb−2の命令セット)の両方から、または2つ以上の可変長命令セットからの命令を実行してもよい。これらの実施形態では、現在のプロセッサ命令セットモードは、状態レジスタ122のようなレジスタにおける1以上のビットによって指示されてもよい。
別の実施形態では、プロセッサ110は、単一の可変長命令セットのみから命令を実行する。
プロセッサ110によって実行された可変長命令セットは、命令の実行に先立つ命令キャッシュ126の中へ命令をロードするための、少なくとも1つのプレロード命令を含む。
プレロード命令は、1以上の命令を含む命令キャッシュラインサイズのデータのブロックをL2キャッシュ136およびメモリ138から読み出す。データブロックは、命令長および他のプレデコード情報を決定するために、プレデコーダ130によってプレデコードされる。命令およびプレデコード情報はその後、命令キャッシュ126に書き込まれる。
図2は、可変長命令セットにおけるプレロード命令によってキャッシュラインの中へプレロードされたデータブロックにおけるいくつかの可能なデータおよび命令の分布を示す。図2に示された実施形態では、キャッシュラインは16のハーフワードである。明確さのために、データブロックの半分より下位だけが詳細に示される。図2に示される実施形態におけるプロセッサ110は、16ビットおよび32ビット命令(例えば、Thumbー2)の両方を有する命令セットからの命令を実行する。キャッシュラインの中へプレロードされるべき第1仮想データブロック202は、32ビット命令である命令Aにより始まり、16ビット命令BおよびC、32ビット命令D、および16ビット命令EおよびFが続く。
プレデコーダ130は、命令Aに関連した命令長さ指標を検査し、それが32ビットの命令であることを決定する。一実施形態では、命令長さ指標は命令操作コードのビットフィールドである。例えば、Thumbー2命令セットにおいて、ビット[15:11]が‘b11101、‘b11110、または‘b11111を持っている場合、その命令は長さ32ビットである。任意の他の符号化は、16ビット命令を指示する。
ハーフワード0を占有する命令が(ハーフワード0および1を占有する)32ビットの命令であることは決定しているので、プレデコーダ130は、ハーフワード2でビットパターンを検査し、命令Bが長さ16ビットであることを決定する。このように、プレデコーダ130は、各命令の長さおよびその結果次の命令の先頭位置を決定して、プレロードされたデータブロックを連続的に下がって作動する。他のプレデコード情報とともに命令の長さは、命令キャッシュ126の中に書き込まれる。命令Aがデータブロック202の先頭に配列されたので、データブロック202は適切にプレデコードされる。
プレロード命令は、L2キャッシュ136またはメモリ138から、命令キャッシュラインのサイズと等しいデータ202、204、206の固定サイズブロックを読み出す。ほとんどの実装では、キャッシュラインサイズが2nバイトである場合、データブロック202、204、206は最下位のnアドレスビットをマスクオフすること(masking off)によりメモリにおいて配列される。(ターゲット命令が、図2における命令Aのように、データブロック202、204、206においてたまたま第1命令である場合を除いて)特定、個別の命令のターゲットアドレスを有するプレロード命令は、ターゲット命令で始まるメモリのブロックではなく、ターゲット命令を含む配列されたデータブロック202、204、206をメモリから読み出す。従って、プレロード命令によってメモリから読み出されたデータブロック202、204、206の第1データ(例えば、ハーフワード)は、必ずしも命令または命令の先頭ではない。
例えば、データブロック204はハーフワード0−3に対応する位置において非命令データを含む。このデータはどんなビットパターンを含んでもよいので、それは命令として誤ってプレデコードされるかもしれない。例えば、従来のプレデコーダは、ハーフワード0で16ビット命令として、ハーフワード1−2で32ビット命令として、およびハーフワード3−4で別の32ビット命令としてデータを解釈するかもしれない。この場合、命令Gが入っているハーフワード位置に関するプレデコード情報は誤っている。
別の例として、データブロック206は、最初の16ビットが別のデータブロックにある命令Jの後半から始まる。しかし、従来のプレデコーダは、ハーフワード0−1を占有する32ビット命令として命令Jを解釈するかもしれず、その結果として命令Kをスキップするかもしれない。関連のある命令がパイプラインの中の命令キャッシュから後に取り出されるときに、データブロック204、206およびそれに対応する誤ったプレデコード情報が命令キャッシュに書き込まれる場合、命令は破棄されなければならず、正しいプレデコード情報を得るために再び取りだされなければならない。
これは、パイプラインがL2キャッシュ136またはメモリ138アクセスを待ち受けるために失速しなければならないので、プロセッサの性能に悪影響を及ぼす。同じデータブロック204、206を2回、読み出してプレデコードしなければならないので、電力消費も増加する。
正しいプレデコードで可変長命令セットから命令のプレローディングを許可するために、命令実行部112は、第1有効命令の先頭または第1有効命令のデータブロック202、204、206内での位置を識別する命令キャッシュラインオフセット指標(ICOI)を生成する。命令実行部112は、プレロード命令を実行している間にプレデコーダ130へICOIを提供する。ICOIのビットサイズは、命令キャッシュラインのサイズおよび命令セットにおける最短命令に依存する。
図2に示された実施形態では、例えば、最短命令は16ビット、またはハーフワードであり、命令キャッシュラインは16個のハーフワードを含む。従って、この実施形態におけるICOIは4ビットを必要とする。一般に、ICOIはmビットを具備し、命令キャッシュ126のラインサイズは最短命令の2m倍である。ICOIは、様々な方法で生成され、プレデコーダ130に通信されてもよい。
一実施形態において、プレロード命令ターゲットアドレスの1以上の未使用アドレスビットは、ICOIとして符号化される。プレロード命令(例えば、PLI)は、オペランドとしてターゲット命令のアドレスを取る。ターゲット命令アドレスは、例えばタグ、セット番号およびキャッシュラインインデックスに分解されてもよい。
例えば、32ビット命令仮想アドレスVA[31:0]については、命令キャッシュ126のCAM構造において記憶されたタグと比較されるタグは、VA[31:11]を具備してもよい。p−ウェイセット連想キャッシュでは、タグが一致すれば、セット番号は戻ってきたp個の結果の中から選択する。セット番号はVA[10:5]を具備してもよい。インデックスVA[4:0]は、キャッシュラインの個別のバイトをアドレスによって指し示し、すなわち命令キャッシュ126のRAM構造において記憶されるデータである。データは、命令およびプレデコード情報を具備する。
一実施形態によれば、例えばVA[4:0]であるキャッシュラインインデックスの全部またはいくつかは、命令キャッシュラインオフセット指標(ICOI)を符号化するために用いられる。図2に示された実施形態では、5つのインデックスビットVA[4:0]のうちの4つだけがICOI用に必要である。一実施形態において、プレロードターゲット命令アドレスビットVA[4:1]は、(例えば、プレデコードする動作を行うために、2つの異なる命令セット符号化の間で選択するためのように)別のフラグ用として空いているVA[0]を残している、ICOIを保持してもよい。もし命令セットが8ビット命令を含んでいれば、全キャッシュラインインデックスVA[4:0]は、ICOIを記憶することを要求されるだろう。
アドレスが決定され、関連するプレロード命令の実行に備えてコンパイラ指定のGPRに書き込まれるとき、ICOIは、プレロードターゲットアドレスのキャッシュラインインデックスの一部の中へ符号化される。プレロード命令が実行するとき、指定されたGPRレジスタからターゲット命令アドレスを読む。
ターゲットアドレスが命令キャッシュ126にヒットする場合、プレロード命令実行は完了する。ターゲットアドレスが命令キャッシュ126で外した場合、L2処理ロジック124のような命令実行部112内のロジックは、1以上のターゲット命令を含むデータブロック202、204、206のようなデータブロックを読み出すために、ミス処理を行い、L2キャッシュ136にアクセスし、必要ならば主メモリ138にアクセスする。データブロック202、204、206は、他の情報の中からブロック202、204、206における各有効命令の長さを決定するためにプレデコードされる。
命令を含んでいるデータ202、204、206のブロックがプレデコーダ130へロードされる場合、L2処理ロジック124はプレデコーダ130にICOIを提示する。ICOIに応じて、プレデコーダ130は、第1有効命令の先頭または第1有効命令の位置に対応するICOIによって指定されたオフセットで始まる命令をプレデコードする。図2の実施形態では、ICOIは、データブロック202に対して‘b0000、データブロック204に対して‘b0100、およびデータブロック206に対して‘b0001であろう。
プレデコーダ130は、命令操作コードの検査によるような第1命令の長さ(および他のプレデコード情報)を決定し、第1命令の長さから第2命令の先頭を決定する。データブロック202、204、206における命令ごとの長さ(および他のプレデコード情報)が決定されるまで、プレデコーダ130はその後、第2命令の長さなどを決定する。プレデコーダ130はその後、正しいプレデコード情報に加えて、命令キャッシュ126へ命令を書き込む。一実施形態において、データが1以上の命令を含んでもよいかもしれないので、プレデコーダ130は、ICOIによって指示されるように第1有効命令に先行するデータをさらに推論的にプレデコードする。
一実施形態において、命令キャッシュラインオフセット指標(ICOI)は、状態レジスタ122のようなレジスタにおいてビットフィールドを具備する。この実施形態では、ICOIビットは、プレロード命令の実行より前に明示的に設定される。プレロード命令の実行に際して、プレデコーダ130は、状態レジスタ122または他のレジスタにおけるICOIビットを検査し、指示された第1有効命令で始まるデータブロック202、204、206を正確にプレデコードする。命令およびプレデコード情報はその後、命令キャッシュ126に書き込まれる。
一実施形態において、命令キャッシュラインオフセット指標(ICOI)は、プレロード命令の操作コードにおいて1以上のビットを具備する。プレロード命令操作コードのビットフィールドは、ICOI用に定義されてもよく、コンパイラは、コードでのプログラマの命令または指令に従ってICOIビットフィールドを設定してもよい。プレロード命令の実行に際して、ICOIビットフィールドは、L2処理ロジック124によるようにプレデコーダ130に提示され、プレデコーダ130は、指示された第1有効命令で始まるデータブロック202、204、206をプレデコードする。命令およびプレデコード情報はその後、命令キャッシュ126に書き込まれる。
一実施形態において、可変長命令セットは、異なる命令キャッシュラインオフセット指標(ICOI)をそれぞれ指定する複数のプレロード命令を含む。例えば、図2に示される実施形態では、16個の異なるプレロード命令が、データブロック202、204、206における命令をプレデコードするために、異なるICOIをそれぞれ指定する。
プログラマまたはコンパイラは、プレデコードされるべき第1命令のアドレスおよび既知のメモリ配列に基づいて、プレロードされたデータブロック202、204、206の中へ既知のオフセットのための適切なプレロード命令を指定してもよい。
当業者は、上述された実施形態が相互排他的ではないことを認識するだろう。例えば、特定の実装において、操作コードにおいてICOIビットフィールドを有するプレロード命令は、状態レジスタ122のようなレジスタの中へICOIをラッチすることにより、またはプレロードターゲットアドレスにおける1以上の未使用のアドレスビットの中へICOIを代入することにより、プレデコーダ130へICOIを提示してもよい。一般に、本開示の教示を仮定すると、当業者は、プレデコーダ130に第1有効命令が配置されるデータブロック202、204、206の中へオフセットを通信するための最良の解決法を究明してもよい。
図3は、命令をプレロードする方法300を示す。方法は、命令キャッシュラインオフセット指標(ICOI)を設定することにより始まる(ブロック302)。
ICOIは、キャッシュラインまたはデータブロック202、204、206内の第1有効命令の位置を識別する。様々な実施形態では、ICOIは、プレロード命令ターゲットアドレスを変更すること、状態レジスタ122のようなレジスタにおいてICOIビットを設定すること、プレロード命令操作コードにおいてICOIビットフィールドを設定することにより設定されてもよい。プレロード命令は実行される(ブロック304)。プレロード命令は、L2キャッシュ136またはメモリ138から少なくとも1つのターゲット命令を含むデータブロック202、204、206を読み出し、プレデコーダ130にデータブロック202、204、206を提供するために作用する。
ICOIに応じて、プレデコーダ130は、データブロック202、204、206に第1有効命令を探し(ブロック306)、第1命令の長さを決定する(ブロック308)。
データブロック202、204、206の終わりに達していない場合(ブロック310)、プレデコーダ130は別の命令の先頭を決定するためにブロック308において決定された命令長さを用い(ブロック312)、その長さを決定する別の命令を検査する(ブロック308)。データブロック202、204、206の終わりに達するまで、このプロセスは継続する(ブロック310)。
一実施形態において、プレデコーダ130は、第1命令に先行するデータをプレデコードしてもよい(ブロック314)。データがランダムデータ(データブロック204に示されたように)または命令の継続(データブロック206に示されたように)である場合、生成されたプレデコード情報はおそらく誤っているだろう。
しかし、第1命令に先行するデータがデータブロック202、204、206の先頭と合わされた有効命令を具備する場合、プレデコード情報は正しだろうし、パイプライン114を支援するかもしれない。他の実施形態では、第1命令に先行するデータはプレデコードされない。
プレデコーダ130は、命令キャッシュ126に命令およびプレデコード情報を書き込む(ブロック316)。当業者は、ある方法ステップが図3に示された順序とは異なる順序で行われてもよいことを即座に認識するだろう。例えば、第1命令より前にあるデータは、有効命令をプレデコードすることより前にプレデコードされてもよい(ブロック314)。
加えて、プレデコーダ130は、データブロック202、204、206における各命令がプレデコードされるように、命令キャッシュ126へ命令およびプレデコード情報を徐々に書き込んでもよい。
ここで説明され主張された1以上の実施形態に従って、命令または命令の先頭が命令キャッシュラインの先頭とそろわないとき、プロセッサ110は、可変長命令セットから命令キャッシュ126の中へ命令をプレロードし、命令を正確にプレデコードしてもよい。これは、不正確にプレデコードされた命令が命令キャッシュ126から取り出され、かつ、破棄され、再び取り出され、再びプレデコードされなければならないときに被る性能および電力消費の劣化を回避するかもしれない。第1有効命令を識別する命令キャッシュラインオフセット指標(ICOI)のプレデコーダ130への通信は、様々な方法で実装されてもよい。
本発明は特定の特徴、態様およびそれらの実施形態に関してここに記述されているが、多数のバリエーション、修正および他の実施形態が本発明の広い範囲内で可能であることは明白であり、従って、全てのバリエーション、修正および実施形態はこの発明の範囲内として見なされる。
従って、本実施形態は、実例となりおよび非制限的な全ての態様において理解されることになり、添付された特許請求の範囲の等しい範囲および意味内に生じる全ての変更は、そこに包含されるように意図される。
以下に補正前の出願当初の特許請求の範囲の請求項を付記する。
(1)
命令キャッシュラインに対応するデータブロックへ、第1有効命令のオフセットを識別する命令キャッシュラインオフセット指標を設定し、
可変長命令セットからの少なくとも1つの命令を含むデータブロックをメモリから読み出し、前記命令キャッシュの中に前記命令をロードするプレロード命令を実行し、
前記命令キャッシュラインオフセット指標に応じて第1命令で始まる前記データブロックにおける前記命令を連続的にプレデコードすることを具備する命令キャッシュの中に可変長命令セットからの命令をプレロードする方法。
(2)
命令長さ指標に基づいて前記データブロックにおいて連続する命令の命令境界を決定することをさらに具備する(1)の方法。
(3)
命令長さ指標は、命令操作コードのビットフィールドを具備する(2)の方法。
(4)
前記命令キャッシュラインオフセット指標は、前記プレロード命令のターゲットアドレスの複数のビットを具備する(1)の方法。
(5)
前記命令キャッシュラインオフセット指標は、ターゲットアドレスビット[4:1]を具備する(4)の方法。
(6)
前記命令キャッシュラインオフセット指標は、前記プレロード命令の前記操作コードにおいて1以上のビットを具備する(1)の方法。
(7)
命令キャッシュラインオフセット指標を設定することおよびプレロード命令を実行することは、異なる命令キャッシュラインオフセット指標を含むプレロード命令ごとに、複数のプレロード命令のうちの1つを実行することを具備とする(1)の方法。
(8)
前記複数のプレロード命令は、前記データブロックへの可能な命令オフセットごとに対応するプレロード命令を含む(7)の方法。
(9)
命令キャッシュラインオフセット指標を設定することは、前記プレロード命令を実行することより前にレジスタにおいて1以上のビットを設定することを具備する(1)の方法。
(10)
前記命令キャッシュラインオフセット指標により指示されるような第1有効命令より前に前記データブロックにおいて任意のデータをプレデコードすることをさらに具備する(1)の方法。
(11)
前記命令キャッシュへ少なくとも命令長さを指示するプレデコード情報および前記命令を書き込むことをさらに具備する(1)の方法。
(12)
メモリインターフェースと、
可変長命令セットおよびプレデコード情報から命令を記憶する命令キャッシュと、
前記命令キャッシュの中にロードされるデータブロックにおいて第1有効命令の位置を識別する命令キャッシュラインオフセット指標を生成する命令実行部と、
前記命令キャッシュと前記メモリインターフェースとの間に置かれ、プレロード命令の実行時に前記命令キャッシュラインオフセット指標に応じて、第1有効命令で始まるデータブロックにおいて命令を連続的にプレデコードするプレデコーダと、を具備するプロセッサ。
(13)
前記命令実行部は、前記プレロード命令のターゲットアドレスの1以上のビットを設定することにより、前記命令キャッシュラインオフセット指標を生成する(12)のプロセッサ。
(14)
前記ターゲットアドレスは前記プレロード命令によって読み取られる汎用レジスタに書き込まれる(13)のプロセッサ。
(15)
前記命令実行部は、前記プレロード命令の前記操作コードにおける1以上のビットに応じて前記命令キャッシュラインオフセット指標を生成する(12)のプロセッサ。
(16)
前記命令実行部は、異なる命令キャッシュラインオフセット指標を特定するプレロード命令ごとに、複数のプレロード命令のうちの1つを実行する(12)のプロセッサ。
(17)
前記複数のプレロード命令は、前記データブロックへの可能な命令オフセットごとに対応するプレロード命令を含む(16)に記載のプロセッサ。
(18)
レジスタをさらに具備し、
前記命令実行部は、前記レジスタにおいて1以上の予め決定されたビットを設定することにより前記命令キャッシュラインオフセット指標を生成する(12)のプロセッサ。
(19)
前記命令キャッシュと前記メモリインターフェースとの間に置かれる第2キャッシュメモリをさらに具備し、
前記プレデコーダは前記命令キャッシュと前記第2キャッシュメモリとの間に置かれる(12)のプロセッサ。
(20)
前記プレデコーダは、命令キャッシュラインオフセット指標により指示される第1有効命令より前に前記データブロックにおいて任意のデータをプレデコードすることをさらに具備する(12)のプロセッサ。
(21)
可変長命令セットにおけるプレロード命令を少なくとも格納し、
前記命令はプロセッサに命令キャッシュへ複数の命令をプレロードさせ、
前記複数の命令は命令キャッシュラインオフセット指標により第1有効命令における先頭をプレデコードさせるコンピュータ読み取り可能な媒体。
(22)
前記命令キャッシュラインオフセット指標は、前記プレロード命令のターゲットアドレスの1以上のビットを具備する(21)のコンピュータ読み取り可能な媒体。
(23)
前記プレロード命令操作コードは、命令キャッシュラインオフセット指標ビットフィールドを含む(21)のコンピュータ読み取り可能な媒体。
(24)
前記命令キャッシュラインオフセット指標は、前記プレロード命令の実行より前にレジスタへ記憶される(21)のコンピュータ読み取り可能な媒体。

Claims (24)

  1. 第1有効命令のオフセットを識別する命令キャッシュラインオフセット指標を、命令キャッシュラインに対応するデータブロック内を指すように設定し、
    可変長命令セットからの少なくとも1つの命令を含むデータブロックをメモリから読み出し、前記命令キャッシュの中に前記命令をロードするプレロード命令を実行し、
    前記命令キャッシュラインオフセット指標に応じて第1命令で始まる前記データブロックにおける前記命令を連続的にプレデコードし、
    前記命令およびプレデコード情報を前記命令キャッシュに書き込むことを具備する命令キャッシュの中に可変長命令セットからの命令をプレロードする方法。
  2. 命令長さ指標に基づいて前記データブロックにおいて連続する命令の命令境界を決定することをさらに具備する請求項1の方法。
  3. 命令長さ指標は、命令操作コードのビットフィールドを具備する請求項2の方法。
  4. 前記命令キャッシュラインオフセット指標は、前記プレロード命令のターゲットアドレスの複数のビットを具備する請求項1の方法。
  5. 前記命令キャッシュラインオフセット指標は、ターゲットアドレスビット[4:1]を具備する請求項4の方法。
  6. 前記命令キャッシュラインオフセット指標は、前記プレロード命令の前記操作コードにおいて1以上のビットを具備する請求項1の方法。
  7. 命令キャッシュラインオフセット指標を設定することおよびプレロード命令を実行することは、異なる命令キャッシュラインオフセット指標を含むプレロード命令ごとに、複数のプレロード命令のうちの1つを実行することを具備とする請求項1の方法。
  8. 前記複数のプレロード命令は、前記データブロックへの可能な命令オフセットごとに対応するプレロード命令を含む請求項7の方法。
  9. 命令キャッシュラインオフセット指標を設定することは、前記プレロード命令を実行することより前にレジスタにおいて1以上のビットを設定することを具備する請求項1の方法。
  10. 第1命令に先行するデータがデータブロックの先頭と合わされた有効命令を具備する場合、前記命令キャッシュラインオフセット指標により指示されるような第1有効命令より前に前記データブロックにおいて任意のデータをプレデコードすることをさらに具備する請求項1の方法。
  11. プレデコード情報を書き込むことは、前記命令キャッシュへ少なくとも命令長さを示すプレデコード情報を書き込む請求項1の方法。
  12. メモリインターフェースと、
    可変長命令セットおよびプレデコード情報から命令を記憶する命令キャッシュと、
    前記命令キャッシュの中にロードされるデータブロックにおいて第1有効命令の位置を識別する命令キャッシュラインオフセット指標を生成する命令実行部と、
    前記命令キャッシュと前記メモリインターフェースとの間に置かれ、プレロード命令の実行時に前記命令キャッシュラインオフセット指標に応じて、第1有効命令で始まるデータブロックにおいて命令を連続的にプレデコードし、前記命令およびプレデコード情報を前記命令キャッシュに書き込むプレデコーダと、を具備するプロセッサ。
  13. 前記命令実行部は、前記プレロード命令のターゲットアドレスの1以上のビットを設定することにより、前記命令キャッシュラインオフセット指標を生成する請求項12のプロセッサ。
  14. 前記ターゲットアドレスは前記プレロード命令によって読み取られる汎用レジスタに書き込まれる請求項13のプロセッサ。
  15. 前記命令実行部は、前記プレロード命令の前記操作コードにおける1以上のビットに応じて前記命令キャッシュラインオフセット指標を生成する請求項12のプロセッサ。
  16. 前記命令実行部は、異なる命令キャッシュラインオフセット指標を特定するプレロード命令ごとに、複数のプレロード命令のうちの1つを実行する請求項12のプロセッサ。
  17. 前記複数のプレロード命令は、前記データブロックへの可能な命令オフセットごとに対応するプレロード命令を含む請求項16に記載のプロセッサ。
  18. レジスタをさらに具備し、
    前記命令実行部は、前記レジスタにおいて1以上の予め決定されたビットを設定することにより前記命令キャッシュラインオフセット指標を生成する請求項12のプロセッサ。
  19. 前記命令キャッシュと前記メモリインターフェースとの間に置かれる第2キャッシュメモリをさらに具備し、
    前記プレデコーダは前記命令キャッシュと前記第2キャッシュメモリとの間に置かれる請求項12のプロセッサ。
  20. 前記プレデコーダは、第1命令に先行するデータがデータブロックの先頭と合わされた有効命令を具備する場合、命令キャッシュラインオフセット指標により指示される第1有効命令より前に前記データブロックにおいて任意のデータをプレデコードすることをさらに具備する請求項12のプロセッサ。
  21. コンピュータに、
    可変長命令セットにおけるプレロード命令を少なくとも格納し、
    前記命令はプロセッサに命令キャッシュへ複数の命令をプレロードさせ、
    前記複数の命令は命令キャッシュラインオフセット指標により第1有効命令における先頭をプレデコードさせ
    前記命令およびプレデコード情報を前記命令キャッシュに書き込ませることを実行させるためのプログラムを記録したコンピュータ読み取り可能な媒体。
  22. 前記命令キャッシュラインオフセット指標は、前記プレロード命令のターゲットアドレスの1以上のビットを具備する請求項21のコンピュータ読み取り可能な媒体。
  23. 前記プレロード命令操作コードは、命令キャッシュラインオフセット指標ビットフィールドを含む請求項21のコンピュータ読み取り可能な媒体。
  24. 前記命令キャッシュラインオフセット指標は、前記プレロード命令の実行より前にレジスタへ記憶される請求項21のコンピュータ読み取り可能な媒体。
JP2010502281A 2007-04-04 2008-04-03 適切なプレデコーディングにより可変長命令セットから命令をプレロードするシステム、方法およびソフトウェア Expired - Fee Related JP5313228B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/696,508 US7676659B2 (en) 2007-04-04 2007-04-04 System, method and software to preload instructions from a variable-length instruction set with proper pre-decoding
US11/696,508 2007-04-04
PCT/US2008/059222 WO2008124473A1 (en) 2007-04-04 2008-04-03 System, method and software to preload instructions from a variable-length instruction set with proper pre-decoding

Publications (2)

Publication Number Publication Date
JP2010524088A JP2010524088A (ja) 2010-07-15
JP5313228B2 true JP5313228B2 (ja) 2013-10-09

Family

ID=39530631

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010502281A Expired - Fee Related JP5313228B2 (ja) 2007-04-04 2008-04-03 適切なプレデコーディングにより可変長命令セットから命令をプレロードするシステム、方法およびソフトウェア

Country Status (6)

Country Link
US (1) US7676659B2 (ja)
EP (1) EP2142986A1 (ja)
JP (1) JP5313228B2 (ja)
KR (1) KR101081623B1 (ja)
CN (1) CN101646999B (ja)
WO (1) WO2008124473A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7747839B2 (en) 2008-01-23 2010-06-29 Arm Limited Data processing apparatus and method for handling instructions to be executed by processing circuitry
US8347067B2 (en) * 2008-01-23 2013-01-01 Arm Limited Instruction pre-decoding of multiple instruction sets
US7917735B2 (en) * 2008-01-23 2011-03-29 Arm Limited Data processing apparatus and method for pre-decoding instructions
US7925867B2 (en) * 2008-01-23 2011-04-12 Arm Limited Pre-decode checking for pre-decoded instructions that cross cache line boundaries
US8037286B2 (en) * 2008-01-23 2011-10-11 Arm Limited Data processing apparatus and method for instruction pre-decoding
US7925866B2 (en) * 2008-01-23 2011-04-12 Arm Limited Data processing apparatus and method for handling instructions to be executed by processing circuitry
US9075622B2 (en) * 2008-01-23 2015-07-07 Arm Limited Reducing errors in pre-decode caches
US9176739B2 (en) * 2011-08-05 2015-11-03 Cisco Technology, Inc. System and method for checking run-time consistency for sequentially and non-sequentially fetched instructions
US9459868B2 (en) * 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary
US9354888B2 (en) * 2012-03-28 2016-05-31 International Business Machines Corporation Performing predecode-time optimized instructions in conjunction with predecode time optimized instruction sequence caching
CN102932202B (zh) * 2012-10-25 2015-08-19 北京星网锐捷网络技术有限公司 审计外发信息的方法及装置
US9348598B2 (en) 2013-04-23 2016-05-24 Arm Limited Data processing apparatus and method for pre-decoding instructions to be executed by processing circuitry
US9959119B2 (en) * 2014-05-29 2018-05-01 Mill Computing, Inc. Computer processor employing double-ended instruction decoding
FR3097345B1 (fr) * 2019-06-13 2021-06-25 Stmicroelectronics Grand Ouest Sas Procede de gestion du fonctionnement d’une unite de calcul capable de fonctionner avec des instructions de tailles differentes et circuit integre correspondant
CN110750303B (zh) * 2019-09-25 2020-10-20 支付宝(杭州)信息技术有限公司 基于fpga的流水线式指令读取方法及装置
US11204768B2 (en) 2019-11-06 2021-12-21 Onnivation Llc Instruction length based parallel instruction demarcator
CN114625419B (zh) * 2022-05-16 2022-08-26 西安芯瞳半导体技术有限公司 一种可变长指令的缓存结构、方法及介质

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SG45269A1 (en) * 1992-02-06 1998-01-16 Intel Corp End bit markers for instruction decode
US6049863A (en) * 1996-07-24 2000-04-11 Advanced Micro Devices, Inc. Predecoding technique for indicating locations of opcode bytes in variable byte-length instructions within a superscalar 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
US5881260A (en) * 1998-02-09 1999-03-09 Hewlett-Packard Company Method and apparatus for sequencing and decoding variable length instructions with an instruction boundary marker within each instruction
US6175908B1 (en) * 1998-04-30 2001-01-16 Advanced Micro Devices, Inc. Variable byte-length instructions using state of function bit of second byte of plurality of instructions bytes as indicative of whether first byte is a prefix byte
US6260134B1 (en) * 1998-11-02 2001-07-10 Advanced Micro Devices, Inc. Fixed shift amount variable length instruction stream pre-decoding for start byte determination based on prefix indicating length vector presuming potential start byte
US6308257B1 (en) * 1999-04-20 2001-10-23 Intel Corporation Method and apparatus for generating boundary markers for an instruction stream including variable-length instructions
US6496921B1 (en) * 1999-06-30 2002-12-17 International Business Machines Corporation Layered speculative request unit with instruction optimized and storage hierarchy optimized partitions
US6460132B1 (en) * 1999-08-31 2002-10-01 Advanced Micro Devices, Inc. Massively parallel instruction predecoding
JP2001142692A (ja) * 1999-10-01 2001-05-25 Hitachi Ltd 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法
US6675374B2 (en) * 1999-10-12 2004-01-06 Hewlett-Packard Development Company, L.P. Insertion of prefetch instructions into computer program code
JP3644892B2 (ja) * 2001-01-22 2005-05-11 智原科技股▲ふん▼有限公司 複数組の命令組を実行するためのデータ処理装置
US6968430B1 (en) * 2002-10-22 2005-11-22 Lsi Logic Corporation Circuit and method for improving instruction fetch time from a cache memory device

Also Published As

Publication number Publication date
EP2142986A1 (en) 2010-01-13
WO2008124473A1 (en) 2008-10-16
US20080250229A1 (en) 2008-10-09
KR20090132638A (ko) 2009-12-30
CN101646999B (zh) 2016-10-12
US7676659B2 (en) 2010-03-09
CN101646999A (zh) 2010-02-10
JP2010524088A (ja) 2010-07-15
KR101081623B1 (ko) 2011-11-09

Similar Documents

Publication Publication Date Title
JP5313228B2 (ja) 適切なプレデコーディングにより可変長命令セットから命令をプレロードするシステム、方法およびソフトウェア
JP5528819B2 (ja) 現在実行している命令セット以外の命令セットから命令をプリロードするシステム、方法およびソフトウェア
EP2018609B1 (en) Pre-decoding variable length instructions
US5941980A (en) Apparatus and method for parallel decoding of variable-length instructions in a superscalar pipelined data processing system
EP1886217B1 (en) Caching instructions for a multiple-state processor
JP4585005B2 (ja) 分岐訂正によるプリデコードのエラー処理
EP1910919A2 (en) Instruction cache having fixed number of variable length instructions
US20030163670A1 (en) Re-encoding illegal OP codes into a single illegal OP code to accommodate the extra bits associated with pre-decoded instructions

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120903

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120911

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20121211

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20121218

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121219

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130703

R150 Certificate of patent or registration of utility model

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

LAPS Cancellation because of no payment of annual fees