JP2010529534A - マイクロコードエミュレーションメモリのキャッシング - Google Patents

マイクロコードエミュレーションメモリのキャッシング Download PDF

Info

Publication number
JP2010529534A
JP2010529534A JP2010510322A JP2010510322A JP2010529534A JP 2010529534 A JP2010529534 A JP 2010529534A JP 2010510322 A JP2010510322 A JP 2010510322A JP 2010510322 A JP2010510322 A JP 2010510322A JP 2010529534 A JP2010529534 A JP 2010529534A
Authority
JP
Japan
Prior art keywords
cache
microcode
processor
level cache
access
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
JP2010510322A
Other languages
English (en)
Other versions
JP2010529534A5 (ja
JP5496085B2 (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices 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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2010529534A publication Critical patent/JP2010529534A/ja
Publication of JP2010529534A5 publication Critical patent/JP2010529534A5/ja
Application granted granted Critical
Publication of JP5496085B2 publication Critical patent/JP5496085B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • 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
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/3824Operand accessing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

プロセッサは、1次キャッシュおよび高次キャッシュを含むキャッシュ階層を有する。前記プロセッサは、物理メモリ空間の一部を前記高次キャッシュの一部にマップし、少なくとも一部がマイクロコードを含む命令を実行し、マイクロコードが、前記高次キャッシュの前記一部にアクセスするのを許可し、マイクロコードを含まない命令が、前記高次キャッシュの前記一部にアクセスするのを阻止する。前記物理メモリ空間の前記第1の部分は、マイクロコードが使用するために恒久的に割り当てられうる。前記プロセッサは、前記高次キャッシュの前記第1の部分の1つ以上のキャッシュラインを、前記高次キャッシュから前記1次キャッシュの第1の部分に移動させ、マイクロコードが、前記第1の1次キャッシュの前記第1の部分にアクセスするのを許可し、マイクロコードを含まない命令が、前記第1の1次キャッシュの前記第1の部分にアクセスするのを阻止しうる。

Description

本発明は、マイクロプロセッサに関し、より詳細には、マイクロコードによる複合命令(complex instruction)のエミュレーションに関し、更に詳細には、このようなエミュレーション中に使用されるメモリのキャッシング(caching)に関する。
マイクロプロセッサが複合命令セットコンピュータ(complex instruction set computer:CISC)アーキテクチャとの互換性を保つことが望まれる一方で、実行速度および性能の改良がなされているアーキテクチャが他に存在する。マイクロプロセッサの設計者は、CISC命令をエミュレートすることにより、CISCとの互換性と、高性能との両方を実現しようとしている。例えば、スーパースカラアーキテクチャ、縮小命令セットコンピュータ(RISC)アーキテクチャは、CISC命令のエミュレーションを実行するマイクロコードを備えうる。マイクロコードは、エミュレーション処理中に、中間値を保存するためのスクラッチパッドメモリを使用する。高性能を維持するためには、マイクロプロセッサのマイクロコードが、エミュレーションメモリにできるだけ高速にアクセスできることが望ましい。
また、マイクロプロセッサは、一般に、階層状に配置され、複数のコアまたは実行ユニットによって共有されている複数のメモリキャッシュを有する。さまざまなキャッシングアーキテクチャが使用されており、このようなアーキテクチャでは、オンチップキャッシュとオフチップキャッシュがさまざまに組み合わされている。キャッシュまたはメモリからデータを読み出すメモリオペレーションを、ここでは省略して「ロード」と呼ぶ。キャッシュまたはメモリにデータを書き込むメモリオペレーションを、ここでは省略して「ストア」と呼ぶ。ロードまたはストアは、特定のキャッシュライン(またはキャッシュラインの一部)をターゲットとしており、ターゲットのラインを識別するアドレスを含むほか、キャッシュラインとの間でロードまたはストアするデータを含む。キャッシュアクセスはメモリアクセスより高速であるため、コアまたは実行ユニットがデータにアクセスする必要があるときに、データがキャッシュに存在している確率を上げて、これにより実行速度を改善するために、各種のキャッシング手法が使用されている。したがって、マイクロコードエミュレーションメモリをキャッシュすることにより、キャッシュメモリがシステムメモリよりもアクセス時間が比較的短いという性能上の利点が得られる。アクセス時間が最も短いのは、一般に、キャッシュ階層の最下層レベル(一般にL1キャッシュまたは省略してL1と呼ばれる)である。このため、マイクロコードエミュレーションメモリをL1にキャッシュすることが望ましい。このような性能上の利点は、L1の一部を、マイクロコードエミュレーションメモリ用に恒久的に割り当てることで、更に強化されている。
当然、L1キャッシュの使用による性能上の利点は、他のプロセスにも資する。したがって、任意のプロセスのために、L1キャッシュ空間の利用可能性を向上させるには、L1キャッシュをできるだけ大型化することが望ましい。しかし、L1の大型化は、マイクロプロセッサのコストの上昇と共に複雑化を招く。また、マイクロコードエミュレーションメモリがL1内に恒久的に割り当てられると、L1のこの部分はほかのプロセスに利用できなくなる。上記の懸念に対処するために、マイクロコードエミュレーションメモリをキャッシュする利点を保つ一方で、すべてのプロセスのためにL1キャッシュ内に所定のサイズの空間の利用可能性を改善する方法が求められている。
プロセッサ、コンピュータシステムおよび方法の各種実施形態が開示される。前記プロセッサは、少なくとも第1の1次キャッシュおよび高次キャッシュを含むキャッシュ階層を有する。前記プロセッサは、物理メモリ空間の第1の部分を前記高次キャッシュの第1の部分にマップし、少なくとも一部がマイクロコードを含む命令を実行し、マイクロコードが、前記高次キャッシュの前記第1の部分にアクセスするのを許可し、マイクロコードを含まない命令が、前記高次キャッシュの前記第1の部分にアクセスするのを阻止するように構成されている。一実施形態では、前記高次キャッシュは2次キャッシュである。別の実施形態では、前記物理メモリ空間の前記第1の部分は、マイクロコードが使用するために恒久的に割り当てられる。
更に別の実施形態では、前記プロセッサは、前記高次キャッシュの前記第1の部分の1つ以上のキャッシュラインを、前記高次キャッシュから前記第1の1次キャッシュの第1の部分に移動させるように構成されている。前記プロセッサは、マイクロコードが、前記第1の1次キャッシュの前記第1の部分にアクセスするのを許可し、マイクロコードを含まない命令が、前記第1の1次キャッシュの前記第1の部分にアクセスするのを阻止するように更に構成されている。
更に別の実施形態では、前記プロセッサは、マイクロコードアクセス信号を検出するように構成されている。前記プロセッサは、前記マイクロコードアクセス信号がアサートされていない場合、命令が前記物理メモリ空間の前記第1の部分にアクセスするのを阻止し、前記マイクロコードアクセス信号がアサートされている場合、命令が前記物理メモリ空間の前記第1の部分にアクセスするのを許可するように更に構成されている。
更に別の実施形態では、前記プロセッサは、変換ルックアサイドバッファ(TLB)を更に有し、前記プロセッサは、マイクロコードを含まない命令が、前記物理メモリ空間の前記第1の部分にアクセスするのを阻止するために、前記物理メモリ空間の前記第1の部分へのTLBリフィルを禁止するように更に構成されている。
コンピュータシステムの一実施形態を示す一般化ブロック図。 仮想メモリおよびキャッシュアーキテクチャの一実施形態を示す図。 マイクロコードエミュレーションメモリを含むメモリ階層にアクセスするための処理の一実施形態を示す図。 1次キャッシュ内のマイクロコードエミュレーションメモリにアクセスするための処理の一実施形態を示す図。 システムの各種構成要素に接続されたL2データキャッシュおよびマイクロコードエミュレーションメモリを備えたコンピュータシステムの一実施形態のブロック図。
本発明は、種々の変形および代替形態を取り得るが、その特定の実施形態が、図面に例として図示され、ここに詳細に記載されているに過ぎない。しかしながら、図面およびその詳細な説明は、この発明を開示された特定の形状に限定するようには意図されてはおらず、むしろ逆に、この発明は、特許請求の範囲によって規定されるようなこの発明の精神および範囲内に入るあらゆる変更、均等物、および代替物を網羅するものであることが理解されるべきである。
図1は、コンピュータシステム100の一実施形態を示す一般化ブロック図である。図中の実施形態では、プロセッサ110は、メモリ150に接続されて示されている。メモリ150には、SDRAM、SRAM、ROM、DRAMおよび/またはその他の従来のメモリデバイスが含まれてもよい。プロセッサ110は、コア120、L2データキャッシュ130、およびL2変換ルックアサイドバッファ(TLB)140を有する。コア120は、実行ユニット122、ロード/ストアユニット124、L1データキャッシュ126、およびL1 TLB128を有する。L2データキャッシュ130は、マイクロコードエミュレーションメモリ135を有する。別の実施形態では、プロセッサ110が、それぞれが1次データキャッシュを有する複数のコアを有し、これらのコアが1つの2次データキャッシュを共有していてもよい。1つの別の実施形態では、L1データキャッシュ126が、コア120から独立していてもよい。別の実施形態では、3次キャッシュなどの追加のキャッシュレベルがコンピュータシステム100に設けられており、これが、プロセッサ110内に存在しても、またはプロセッサ110から独立していてもよい。上記の実施形態およびほかの別の実施形態では、マイクロコードエミュレーションメモリ135が、2次以上のどのようなキャッシュレベルに含まれていてもよい。また、ほかのさまざまな実施形態も考察される。しかし、理解しやすいように、以下の例では、マイクロコードエミュレーションメモリ135用に、2次データキャッシュ内に空間が恒久的に割り当てられるとする。
動作時に、実行ユニット122はリンク161を介してロード/ストアユニット124から、実行しようとしているロードのデータ部分を受け取り、リンク162を介してロード/ストアユニット124にストアのデータ部分を伝達しうる。ロード/ストアユニット124は、リンク163を介してL1データキャッシュ126から、実行しようとしているロードのデータ部分を受け取り、リンク164を介してL1データキャッシュ126にストアのデータ部分を伝達しうる。L1データキャッシュ126は、リンク165を介してL2データキャッシュ130からロードのデータ部分を受け取り、リンク166を介してL2データキャッシュ130にストアのデータ部分を伝達しうる。L2データキャッシュ130は、リンク167を介して、メモリ150からロードのデータ部分を受け取り、ストアのデータ部分をメモリ150に伝達しうる。L1 TLB128は、リンク171を介してL1データキャッシュ126に、リンク172を介してL2データキャッシュ130に、リンク173を介してL2 TLB140に、それぞれ接続されて示されている。また、L2 TLB140も、リンク174を介してL2データキャッシュ130に接続されて示されている。
L1データキャッシュ126、L1 TLB128、L2データキャッシュ130およびL2 TLB140は、従来のアドレス変換機能およびキャッシュ機能を実行しうる。例えば、L1 TLB128は、仮想アドレスの物理アドレスへのマッピングをキャッシュしうる。メモリアクセス要求が発生すると、L1 TLB128がチェックされ、所望の仮想アドレスの物理アドレスへのマッピングがキャッシュされているかどうかが確認されうる。L1 TLB128にキャッシュされているマッピングが使用され、L1データキャッシュ126内に所望のキャッシュラインが存在するかどうかが判定されうる。所望のキャッシュラインがL1データキャッシュ126に存在しない、すなわち、L1キャッシュミスの場合、L2 TLB140がチェックされ、所望の仮想アドレスの物理アドレスへのマッピングがキャッシュされているかどうかが確認されうる。L2 TLB140にキャッシュされているマッピングが使用され、L2データキャッシュ130内に所望のキャッシュラインが存在するかどうかが判定されうる。L1データキャッシュ126でキャッシュミスが発生した場合、新しいエントリを収容するための空間を確保するために、L1データキャッシュ126からL2データキャッシュ130にキャッシュラインがエビクト(evict)されうる。L1 TLB128の対応するエントリも、L2 TLB140に移動されうる。L2データキャッシュ130に、新しいエントリを収容するための空間を確保するために、キャッシュラインをL2データキャッシュ130からメモリ150にエビクトすることが必要となることがある。所望のキャッシュラインおよびL1 TLB128内にキャッシュされた結果に対して、アドレス変換が新たに実行されうる(このプロセスは「TLBリフィル」とも呼ばれうる)。マイクロコードエミュレーションメモリ135の破損の原因となり、これを防止するデータキャッシュ126,130およびTLB128,140の動作の更に詳しい詳細について、以下で説明する。
図2は、プロセッサ110と使用されうる仮想メモリおよびキャッシュのアーキテクチャの一実施形態を示す。本図に、仮想メモリ空間210が示されており、その一部が物理メモリアドレス空間220にマップされている。物理メモリアドレス空間220の一部がL2キャッシュ空間230にマップされ、L2キャッシュ空間の一部がL1キャッシュ空間240にマップされて図示されている。プロセッサ110で実行される各アプリケーションは、別個の仮想メモリアドレス空間を使用しうる。図2に示すように、仮想メモリアドレス空間210は、仮想メモリの一部を表すブロック211〜215を有し、これらのブロックは、物理メモリアドレス空間220にマップされており、所定の時点でアプリケーションからアクセス可能である。同様に、物理メモリアドレス空間220は、L2キャッシュ空間230にキャッシュされている物理メモリの一部を表すブロック221〜224を有する。同様に、L2キャッシュ空間230は、L1キャッシュ空間240にキャッシュされているL2キャッシュの一部を表すブロック231〜233を有する。より詳細には、L2キャッシュ空間230のブロック231,232,233は、L1キャッシュ空間240のブロック242,243,241にそれぞれマップされている。さまざまな実施形態では、上記のブロックのそれぞれは、キャッシュラインの組、サイズの等しいブロック、キャッシュラインまたはブロックの群、あるいは可変サイズのブロックのいずれかを表してもよい。別の実施形態では、仮想メモリアドレス空間210、物理メモリアドレス空間220、L2キャッシュ空間230およびL1キャッシュ空間240のいずれに含まれるブロックの数が、図2に示すブロックより多くても少なくてもよい。
一実施形態では、物理メモリ空間220内で、ブロック221が、マイクロコードエミュレーションメモリとして確保されうる。更に、L2キャッシュ空間230のブロック231が、マイクロコードエミュレーションメモリの内容をキャッシュするために恒久的に確保されうる。動作時に、プロセッサ110がマイクロコードエミュレーションメモリにアクセスしようとすると、図2に示すブロック242など、1次キャッシュ内にブロック231がキャッシュされうる。しかし、ブロック231とは異なり、ブロック242はマイクロコードエミュレーションメモリに使用するために恒久的に確保されないことがある。L1にキャッシュされているブロックは、プログラムの実行に応じて、刻々と変化しうる。このため、マイクロコードエミュレーションメモリが、L1から、ブロック231が、マイクロコードエミュレーションメモリの使用のために確保されているL2にエビクトされうる。一実施形態では、物理メモリ空間のブロック221を含むL1 TLBのリフィルを禁止することにより、マイクロコード以外のアプリケーションまたはプロセスによる、マイクロコードエミュレーションメモリへのアクセスが阻止されうる。
図3は、マイクロコードエミュレーションメモリを含むメモリ階層にアクセスするための処理300の一実施形態を示す。メモリアクセスが開始されると、実行ユニットによってデコードされた各命令に関連するマイクロコードアクセス信号(図示なし)の有無が確認されうる(判定ブロック310)。例えば、一実施形態では、デコードされた各命令のビットが、マイクロコードアクセス信号として使用されうる。別の実施形態では、マイクロコード命令は、マイクロコードアクセス信号として機能する特別なオペコードを含んでおり、これによってマイクロコードであることが識別されうる。命令がマイクロコード命令であるかどうかを示すために、さまざまなマイクロコードアクセス信号のいずれかが、実行ユニットからキャッシュコントローラに伝達されうる。マイクロコードアクセス信号が検出されると、マイクロコードエミュレーションメモリへのアクセスが許可され、アクセスが完了しうる(ブロック320)。
マイクロコードアクセス信号が検出されない場合、処理300は以下のようになる。1つ以上のTLBで、アクセス対象のキャッシュラインと一致するエントリが検索されうる(ブロック330)。L1 TLBに一致するエントリがみつかった場合(判定ブロック340)、対象のキャッシュラインがアクセスされ(ブロック390)、アクセスが完了する。一致するエントリが、L1 TLBにはみつからないが、L2 TLBにみつかった場合(判定ブロック350)、対象のキャッシュラインがL2キャッシュからL1キャッシュに移動され(ブロック360)、対象のキャッシュラインがアクセスされて(ブロック390)、アクセスが完了する。一致するエントリがL1キャッシュにもL2キャッシュにもみつからない場合、アドレス変換が実行されうる(ブロック370)。アドレス変換で得られたターゲットアドレスが、マイクロコードエミュレーションメモリに存在するアドレスである場合(判定ブロック380)、アクセスが阻止され(ブロック384)、アクセスの試みが終了する。アドレス変換ので得られたターゲットアドレスが、マイクロコードエミュレーションメモリに存在しないアドレスである場合(判定ブロック380)、TLBリフィルが実行され(ブロック382)、対象のキャッシュラインがアクセスされて(ブロック390)、アクセスが完了する。
図4は、1次キャッシュ内のマイクロコードエミュレーションメモリにアクセスするための処理400の一実施形態を示す。マイクロコードエミュレーションメモリへのアクセス要求が開始されると、対象のキャッシュラインがL1キャッシュにキャッシュされているかどうかの確認が行われうる(判定ブロック410)。対象のキャッシュラインがL1キャッシュにキャッシュされている場合、対象のキャッシュラインへのアクセスが許可され(ブロック420)、アクセスが完了する。対象のキャッシュラインがL1キャッシュにキャッシュされていない場合、L2キャッシュ内の、対象のキャッシュラインの確保されている位置が取得されうる(ブロック430)。次に、対象のキャッシュラインがL2キャッシュからL1キャッシュに移動されうる(ブロック440)。対象のキャッシュラインがL1キャッシュに移動されると、アクセスが許可され(ブロック420)、アクセスが完了する。
次に図5を参照すると、システムの各種構成要素に接続されたL2データキャッシュ560およびマイクロコードエミュレーションメモリ135を備えたコンピュータシステム500の一実施形態のブロック図である。図中のシステムでは、プロセッサ510が、周辺デバイス520と、メモリ530とに接続されて示されている。周辺デバイス520には、ネットワークインタフェース、タイミング回路、記憶媒体、入出力デバイスなどの、従来のコンピュータシステムに存在しうる各種デバイスのいずれが含まれてもよい。メモリ530には、SDRAM、SRAM、ROM、DRAMおよび/またはその他の従来のメモリデバイスが含まれてもよい。プロセッサ510は、コア540A,540B、ライト結合(write coalescing)キャッシュ550、2次データキャッシュ560、および入出力インターフェース570を有する。入出力インターフェース570は、コア540のそれぞれを、周辺デバイス520に接続しうる。本明細書において、後に文字を付した参照番号によって参照される複数の要素を、参照番号だけで集合的に参照することがある。例えば、コア540A,540Bをコア540と呼んだり、コア540のうち、特に特定しないものをコア540と呼ぶことがある。
コア540のそれぞれは、1次データキャッシュ542、ストアロジックユニット544およびロード/ストアパイプライン546を有する。ストアロジックユニット544(あるいは「ストアユニット」とも呼ぶ)は、ロード/ストアユニットの一部でも、独立したロジックユニットでも、これらの組合せであってもよい。ストアロジック544は、1次データキャッシュ542と、ライト結合キャッシュ550との両方に接続されており、コア540がこの両方のキャッシュレベルに書き込めるようにしている。より詳細には、ストアロジック544は、1次データキャッシュ542にストア584を、ライト結合キャッシュ550にストア582を伝達しうる。ライト結合キャッシュ550は、フィル564およびエビクト566を介して2次データキャッシュ560に更に接続されうる。ライト結合キャッシュ550は、ストア582とフィル564を結合させ、生成されるエビクト566の数を低減させうる。2次データキャッシュ560は、1次データキャッシュ542のそれぞれに更に接続されうる。より詳細には、2次データキャッシュ560は、1次データキャッシュ542にフィル562を伝達しうる。また、2次データキャッシュ560は、メモリ530とも双方向的に接続されうる。
動作時に、コア540は、命令のストリームを実行し、このストリームが、デコードされると、L1データキャッシュ542からロード/ストアパイプライン546へのロード586、ロード/ストアパイプライン546からストアロジック544へのストア580、またはこの両方が生成される。コア540によって実行される命令には、マイクロコードの実行が含まれうる。マイクロコードを実行するために、マイクロコードエミュレーションメモリ135にあるキャッシュラインにアクセスする必要がある場合、対象のキャッシュラインが、アクセスされ、必要に応じて、図4において上で説明した処理を使用して、L2データキャッシュ560からL1データキャッシュ542に移動される。対象のキャッシュラインは、L1データキャッシュ542に移動されると、ロード586および/またはストア580,584によってアクセスされうる。
システム500は、図に示すように2つのコアを有するが、別の実施形態では、3以上のコアが存在していても、各コアが実行ユニットのクラスタであっても、この両方であってもよい。また、更に別の実施形態では、追加の2次キャッシュが設けられ、3以上のコアが存在してもよい。更に、2次データキャッシュ560がメモリ530に直接接続され、メモリ530が、プロセッサの外部のメモリとして図示されているが、プロセッサ510が、メモリコントローラおよび/またはプロセッサの内部メモリを有してもよい。別の実施形態では、プロセッサの外部のメモリコントローラが、2次データキャッシュ560とメモリ530とを接続してもよい。プロセッサコアおよびメモリのさまざまな構成が、当業者にとって明らかであろう。
上記の実施形態には、ソフトウェアが含まれてもよい点に留意されたい。このような実施形態では、方法および/または機構を実施するプログラム命令が、伝送されても、計算機によるアクセス可能な媒体に記憶されてもよい。プログラム命令を記憶するように構成された多くのタイプの媒体を利用可能であり、これには、ハードディスク、フロッピーディスク、CD−ROM、DVD、フラッシュメモリ、プログラマブルROM(PROM)、ランダムアクセスメモリ(RAM)、およびその他の形態の揮発性または不揮発性記憶装置などがある。コンピューティングデバイスによってアクセスされるプログラム命令を伝達するように構成された更に別の形態の媒体には、電気信号、電磁信号、光学信号またはデジタル信号を伝達可能なネットワーク、無線リンクおよび衛星リンクなどの、地上あるいは地上外の通信リンクが含まれる。このため、各種の実施形態では、計算機によるアクセス可能な媒体に対し、上記の説明に従って実装される命令および/またはデータの受信、送信または記憶が更に行われてもよい。
上の実施形態についてかなり詳細に記載したが、上記の開示を完全に理解できれば、数多くの変形例および変更例が当業者にとって自明であろう。下記の特許請求の範囲は、このような変形例および変更例をすべて包含するものと解釈されることが意図される。
本発明は、一般にマイクロプロセッサに利用可能である。

Claims (20)

  1. 少なくとも第1の1次キャッシュおよび高次キャッシュを含むキャッシュ階層を有するプロセッサであって、前記プロセッサは、
    物理メモリ空間の第1の部分を前記高次キャッシュの第1の部分にマップし、
    少なくとも一部がマイクロコードを含む命令を実行し、
    マイクロコードが、前記高次キャッシュの前記第1の部分にアクセスするのを許可し、
    マイクロコードを含まない命令が、前記高次キャッシュの前記第1の部分にアクセスするのを阻止するように構成されているプロセッサ。
  2. 前記高次キャッシュは2次キャッシュである請求項1に記載のプロセッサ。
  3. 前記物理メモリ空間の前記第1の部分は、マイクロコードが使用するために恒久的に割り当てられる請求項1に記載のプロセッサ。
  4. 前記プロセッサは、
    前記高次キャッシュの前記第1の部分の1つ以上のキャッシュラインを、前記高次キャッシュから前記第1の1次キャッシュの第1の部分に移動させ、
    マイクロコードが、前記第1の1次キャッシュの前記第1の部分にアクセスするのを許可し、
    マイクロコードを含まない命令が、前記第1の1次キャッシュの前記第1の部分にアクセスするのを阻止するように更に構成されている請求項1に記載のプロセッサ。
  5. 前記プロセッサは、
    マイクロコードアクセス信号を検出し、
    前記マイクロコードアクセス信号がアサートされていない場合、命令が前記物理メモリ空間の前記第1の部分にアクセスするのを阻止し、
    前記マイクロコードアクセス信号がアサートされている場合、命令が前記物理メモリ空間の前記第1の部分にアクセスするのを許可するように更に構成されている請求項1に記載のプロセッサ。
  6. 変換ルックアサイドバッファ(TLB)を更に有し、前記プロセッサは、マイクロコードを含まない命令が、前記物理メモリ空間の前記第1の部分にアクセスするのを阻止するために、前記物理メモリ空間の前記第1の部分へのTLBリフィルを禁止するように更に構成されている請求項5に記載のプロセッサ。
  7. 少なくとも第1のコアおよび第2のコアを更に有し、前記第2のコアは、
    前記物理メモリ空間の第2の部分を前記高次キャッシュの第2の部分にマップし、
    少なくとも一部がマイクロコードを含む命令を実行し、
    マイクロコードが、前記高次キャッシュの前記第2の部分にアクセスするのを許可し、
    マイクロコードを含まない命令が、前記高次キャッシュの前記第2の部分にアクセスするのを阻止するように構成されている請求項1に記載のプロセッサ。
  8. 前記第1のコアは前記第1の1次キャッシュを有し、前記第2のコアは第2の1次キャッシュを有し、
    前記第1のコアは、
    前記高次キャッシュの前記第1の部分にマップされている1つ以上のキャッシュラインを、前記高次キャッシュから前記第1の1次キャッシュの一部に移動させ、
    マイクロコードが、前記第1の1次キャッシュの前記一部にアクセスするのを許可し、
    マイクロコードを含まない命令が、前記第1の1次キャッシュの前記一部にアクセスするのを阻止するように更に構成され、
    前記第2のコアは、
    前記高次キャッシュの前記第2の部分にマップされている1つ以上のキャッシュラインを、前記高次キャッシュから前記第2の1次キャッシュの一部に移動させ、
    マイクロコードが、前記第2の1次キャッシュの前記一部にアクセスするのを許可し、
    マイクロコードを含まない命令が、前記第2の1次キャッシュの前記一部にアクセスするのを阻止するように構成されている請求項7に記載のプロセッサ。
  9. プロセッサのキャッシュ階層において、物理メモリ空間の第1の部分を高次キャッシュの第1の部分にマップするステップと、
    第1のプロセッサコアにより、少なくとも一部がマイクロコードを含む命令を実行するステップと、
    前記第1のプロセッサコアにより、マイクロコードが、前記高次キャッシュの前記第1の部分にアクセスするのを許可するステップと、
    前記第1のプロセッサコアにより、マイクロコードを含まない命令が、前記高次キャッシュの前記第1の部分にアクセスするのを阻止するステップと、を含む方法。
  10. 前記高次キャッシュは2次キャッシュである、請求項9に記載の方法。
  11. 前記物理メモリ空間の前記第1の部分をマイクロコードが使用するために恒久的に割り当てるステップを更に含む、請求項9に記載の方法。
  12. 前記高次キャッシュの前記第1の部分の1つ以上のキャッシュラインを、前記高次キャッシュから、前記プロセッサの第1の1次キャッシュの第1の部分に移動させるステップと、
    マイクロコードが、前記第1の1次キャッシュの前記第1の部分にアクセスするのを許可するステップと、
    マイクロコードを含まない命令が、前記第1の1次キャッシュの前記第1の部分にアクセスするのを阻止するステップとを更に含む、請求項9に記載の方法。
  13. マイクロコードアクセス信号を検出するステップと、
    前記マイクロコードアクセス信号がアサートされていない場合、命令が前記物理メモリ空間の前記第1の部分にアクセスするのを阻止するステップと、
    前記マイクロコードアクセス信号がアサートされている場合、命令が前記物理メモリ空間の前記第1の部分にアクセスするのを許可するステップとを更に含む、請求項9に記載の方法。
  14. 前記マイクロコードアクセス信号がアサートされていない場合、命令が前記物理メモリ空間の前記第1の部分にアクセスするのを阻止する前記ステップは、変換ルックアサイドバッファ(TLB)からの前記物理メモリ空間の前記第1の部分へのリフィルを禁止するステップを更に含む、請求項13に記載の方法。
  15. 前記物理メモリ空間の第2の部分を前記高次キャッシュの第2の部分にマップするステップと、
    第2のプロセッサコアにより、少なくとも一部がマイクロコードを含む命令を実行するステップと、
    前記第2のプロセッサコアにより、マイクロコードが、前記高次キャッシュの前記第2の部分にアクセスするのを許可するステップと、
    前記第2のプロセッサコアにより、マイクロコードを含まない命令が、前記高次キャッシュの前記第2の部分にアクセスするのを阻止するステップとを更に含む、請求項9に記載の方法。
  16. 前記高次キャッシュの前記第1の部分にマップされている1つ以上のキャッシュラインを、前記高次キャッシュから第1の1次キャッシュの一部に移動させるステップと、
    前記高次キャッシュの前記第2の部分にマップされている1つ以上のキャッシュラインを、前記高次キャッシュから第2の1次キャッシュの一部に移動させるステップと、
    マイクロコードが、前記第1の1次キャッシュの前記一部および/または前記第2の1次キャッシュの前記一部にアクセスするのを許可するステップと、
    マイクロコードを含まない命令が、前記第1の1次キャッシュの前記一部にアクセスするのを阻止するステップと、
    マイクロコードを含まない命令が、前記第2の1次キャッシュの前記一部にアクセスするのを阻止するステップと、を更に有する請求項15に記載の方法。
  17. コンピュータシステムであって、メモリおよび1つ以上の周辺デバイスに接続された少なくとも1つのプロセッサを有し、
    前記少なくとも1つのプロセッサは、少なくとも第1の1次キャッシュおよび高次キャッシュを含むキャッシュ階層を有し、前記少なくとも1つのプロセッサは、
    物理メモリ空間の第1の部分を前記高次キャッシュの第1の部分にマップし、
    少なくとも一部がマイクロコードを含む命令を実行し、
    マイクロコードが、前記高次キャッシュの前記第1の部分にアクセスするのを許可し、
    マイクロコードを含まない命令が、前記高次キャッシュの前記第1の部分にアクセスするのを阻止するように構成されているコンピュータシステム。
  18. 前記少なくとも1つのプロセッサは、
    前記高次キャッシュの前記第1の部分の1つ以上のキャッシュラインを、前記高次キャッシュから前記第1の1次キャッシュの第1の部分に移動させ、
    マイクロコードが、前記第1の1次キャッシュの前記第1の部分にアクセスするのを許可し、
    マイクロコードを含まない命令が、前記第1の1次キャッシュの前記第1の部分にアクセスするのを阻止するように更に構成されている請求項17に記載のコンピュータシステム。
  19. 前記少なくとも1つのプロセッサは、
    マイクロコードアクセス信号を検出し、
    前記マイクロコードアクセス信号がアサートされていない場合、命令が前記物理メモリ空間の前記第1の部分にアクセスするのを阻止し、
    前記マイクロコードアクセス信号がアサートされている場合、命令が前記物理メモリ空間の前記第1の部分にアクセスするのを許可するように更に構成されている請求項17に記載のコンピュータシステム。
  20. 前記少なくとも1つのプロセッサは、変換ルックアサイドバッファ(TLB)を更に有し、前記少なくとも1つのプロセッサは、マイクロコードを含まない命令が、前記物理メモリ空間の前記第1の部分にアクセスするのを阻止するために、前記物理メモリ空間の前記第1の部分へのTLBリフィルを禁止するように更に構成されている請求項17に記載のコンピュータシステム。
JP2010510322A 2007-05-29 2008-05-28 マイクロコードエミュレーションメモリのキャッシング Active JP5496085B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/754,589 US7734873B2 (en) 2007-05-29 2007-05-29 Caching of microcode emulation memory
US11/754,589 2007-05-29
PCT/US2008/006746 WO2008153799A1 (en) 2007-05-29 2008-05-28 Caching of microcode emulation memory

Publications (3)

Publication Number Publication Date
JP2010529534A true JP2010529534A (ja) 2010-08-26
JP2010529534A5 JP2010529534A5 (ja) 2011-07-28
JP5496085B2 JP5496085B2 (ja) 2014-05-21

Family

ID=39708011

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010510322A Active JP5496085B2 (ja) 2007-05-29 2008-05-28 マイクロコードエミュレーションメモリのキャッシング

Country Status (8)

Country Link
US (1) US7734873B2 (ja)
JP (1) JP5496085B2 (ja)
KR (1) KR101503865B1 (ja)
CN (1) CN101707881B (ja)
DE (1) DE112008001473B4 (ja)
GB (1) GB2462556B (ja)
TW (1) TWI457826B (ja)
WO (1) WO2008153799A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8296528B2 (en) * 2008-11-03 2012-10-23 Intel Corporation Methods and systems for microcode patching
US20120017039A1 (en) * 2010-07-16 2012-01-19 Plx Technology, Inc. Caching using virtual memory
US9529729B2 (en) * 2010-11-16 2016-12-27 International Business Machines Corporation Location of memory management translations in an emulated processor
WO2012156850A1 (en) * 2011-05-19 2012-11-22 International Business Machines Corporation Managing the translation look-aside buffer (tlb) of an emulated machine
CN106469020B (zh) * 2015-08-19 2019-08-09 旺宏电子股份有限公司 高速缓存元件与控制方法及其应用系统
US10884751B2 (en) 2018-07-13 2021-01-05 Advanced Micro Devices, Inc. Method and apparatus for virtualizing the micro-op cache
US11016763B2 (en) 2019-03-08 2021-05-25 Advanced Micro Devices, Inc. Implementing a micro-operation cache with compaction

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01106244A (ja) * 1987-10-20 1989-04-24 Fujitsu Ltd 仮想記憶装置のデータ保護検査方法
US5826052A (en) * 1994-04-29 1998-10-20 Advanced Micro Devices, Inc. Method and apparatus for concurrent access to multiple physical caches
JP2000194602A (ja) * 1998-12-28 2000-07-14 Nec Corp 情報処理装置、マイクロプロセッサ及び外部キャッシュメモリの制御方法
JP2001147903A (ja) * 1999-09-15 2001-05-29 Internatl Business Mach Corp <Ibm> 効率的なバス機構及びコヒーレンス制御を有する繰り返しチップ構造を有するスケーラブル共用メモリ・マルチプロセッサ・コンピュータ・システム

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4901235A (en) * 1983-10-28 1990-02-13 Data General Corporation Data processing system having unique multilevel microcode architecture
US5278973A (en) * 1989-03-27 1994-01-11 Unisys Corporation Dual operating system computer
US5132927A (en) * 1990-10-09 1992-07-21 Tandem Computers Incorporated System for cache space allocation using selective addressing
WO1993006549A1 (en) * 1991-09-19 1993-04-01 Chips And Technologies, Inc. A system for performing input and output operations to and from a processor
US5905997A (en) 1994-04-29 1999-05-18 Amd Inc. Set-associative cache memory utilizing a single bank of physical memory
JPH07311752A (ja) * 1994-05-11 1995-11-28 Internatl Business Mach Corp <Ibm> 分散データ処理システム及び初期プログラムロード方法
JP3177117B2 (ja) * 1994-05-11 2001-06-18 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 複数のノード内の制御コードを更新する方法および装置
US5926642A (en) 1995-10-06 1999-07-20 Advanced Micro Devices, Inc. RISC86 instruction set
US5864689A (en) * 1995-12-05 1999-01-26 Advanced Micro Devices, Inc. Microprocessor configured to selectively invoke a microcode DSP function or a program subroutine in response to a target address value of branch instruction
US5950012A (en) * 1996-03-08 1999-09-07 Texas Instruments Incorporated Single chip microprocessor circuits, systems, and methods for self-loading patch micro-operation codes and patch microinstruction codes
US5796972A (en) * 1997-01-14 1998-08-18 Unisys Corporation Method and apparatus for performing microcode paging during instruction execution in an instruction processor
US6141740A (en) * 1997-03-03 2000-10-31 Advanced Micro Devices, Inc. Apparatus and method for microcode patching for generating a next address
US5889978A (en) * 1997-04-18 1999-03-30 Intel Corporation Emulation of interrupt control mechanism in a multiprocessor system
WO1999060480A1 (en) 1998-05-15 1999-11-25 Richard Rubinstein Shared, reconfigurable cache memory execution subsystem
US6745306B1 (en) * 1999-07-29 2004-06-01 Microsoft Corporation Method and system for restricting the load of physical address translations of virtual addresses
US6397301B1 (en) * 1999-12-29 2002-05-28 Intel Corporation Preventing access to secure area of a cache
US6643800B1 (en) * 2000-02-02 2003-11-04 Hewlett-Packard Development Company, L.P. Method and apparatus for testing microarchitectural features by using tests written in microcode
US6804772B2 (en) * 2000-06-12 2004-10-12 Broadcom Corporation Dynamic field patchable microarchitecture
EP1182570A3 (en) * 2000-08-21 2004-08-04 Texas Instruments Incorporated TLB with resource ID field
US6754765B1 (en) * 2001-05-14 2004-06-22 Integrated Memory Logic, Inc. Flash memory controller with updateable microcode
US7346757B2 (en) * 2002-10-08 2008-03-18 Rmi Corporation Advanced processor translation lookaside buffer management in a multithreaded system
US7797492B2 (en) * 2004-02-20 2010-09-14 Anoop Mukker Method and apparatus for dedicating cache entries to certain streams for performance optimization
US7370243B1 (en) * 2004-06-30 2008-05-06 Sun Microsystems, Inc. Precise error handling in a fine grain multithreaded multicore processor
US7437581B2 (en) * 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
JP2006209527A (ja) * 2005-01-28 2006-08-10 Nokia Corp コンピュータシステム
US7095342B1 (en) * 2005-03-31 2006-08-22 Intel Corporation Compressing microcode
US7827390B2 (en) * 2007-04-10 2010-11-02 Via Technologies, Inc. Microprocessor with private microcode RAM
US7681020B2 (en) * 2007-04-18 2010-03-16 International Business Machines Corporation Context switching and synchronization

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01106244A (ja) * 1987-10-20 1989-04-24 Fujitsu Ltd 仮想記憶装置のデータ保護検査方法
US5826052A (en) * 1994-04-29 1998-10-20 Advanced Micro Devices, Inc. Method and apparatus for concurrent access to multiple physical caches
JP2000194602A (ja) * 1998-12-28 2000-07-14 Nec Corp 情報処理装置、マイクロプロセッサ及び外部キャッシュメモリの制御方法
JP2001147903A (ja) * 1999-09-15 2001-05-29 Internatl Business Mach Corp <Ibm> 効率的なバス機構及びコヒーレンス制御を有する繰り返しチップ構造を有するスケーラブル共用メモリ・マルチプロセッサ・コンピュータ・システム

Also Published As

Publication number Publication date
GB0920954D0 (en) 2010-01-13
KR101503865B1 (ko) 2015-03-24
TWI457826B (zh) 2014-10-21
JP5496085B2 (ja) 2014-05-21
CN101707881A (zh) 2010-05-12
CN101707881B (zh) 2016-06-15
TW200905555A (en) 2009-02-01
DE112008001473T5 (de) 2010-07-01
GB2462556B (en) 2012-05-30
US7734873B2 (en) 2010-06-08
WO2008153799A1 (en) 2008-12-18
DE112008001473B4 (de) 2021-08-26
KR20100022483A (ko) 2010-03-02
US20080301364A1 (en) 2008-12-04
GB2462556A (en) 2010-02-17

Similar Documents

Publication Publication Date Title
JP5496085B2 (ja) マイクロコードエミュレーションメモリのキャッシング
JP5090047B2 (ja) ロックされたキャッシュ内のセットの置換を管理するための方法、コンピュータ・プログラム、キャッシング・システムおよびプロセッサ
US20080086599A1 (en) Method to retain critical data in a cache in order to increase application performance
CN109582214B (zh) 数据访问方法以及计算机系统
EP2472412B1 (en) Explicitly regioned memory organization in a network element
WO2010035425A1 (ja) キャッシュメモリ、メモリシステム及びその制御方法
GB2509755A (en) Partitioning a shared cache using masks associated with threads to avoiding thrashing
JP7359837B2 (ja) メモリ・システム内に記憶されているメモリ保護テーブルを使用するメモリ保護ユニット
US9740636B2 (en) Information processing apparatus
US7861041B2 (en) Second chance replacement mechanism for a highly associative cache memory of a processor
JP6088951B2 (ja) キャッシュメモリシステムおよびプロセッサシステム
US9003130B2 (en) Multi-core processing device with invalidation cache tags and methods
GB2493192A (en) An exclusive cache arrangement
JP7449694B2 (ja) 変換索引バッファにおける構成可能なスキューアソシエイティビティ
JP7160792B2 (ja) キャッシュエントリ転送のためにキャッシュ位置情報を記憶するシステム及び方法
JP7397057B2 (ja) メモリ・システム内に記憶されている制御テーブルのための二分探索手順
CN110196819B (zh) 内存访问方法与硬件
US11755497B2 (en) Memory management
EP4020238B1 (en) Method and apparatus for run-time memory isolation across different execution realms
US11003591B2 (en) Arithmetic processor, information processing device and control method of arithmetic processor
US8495303B2 (en) Processor and computer system with buffer memory
US20240111425A1 (en) Tag and data configuration for fine-grained cache memory
JP7311959B2 (ja) 複数のデータ・タイプのためのデータ・ストレージ
JP7142289B2 (ja) プロセッサ、多階層キャッシュメモリの制御方法、及び多階層キャッシュメモリの制御プログラム
JP2019521410A (ja) 別のキャッシュレベルからのヒントに基づくキャッシュエントリエイジの設定

Legal Events

Date Code Title Description
RD05 Notification of revocation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7425

Effective date: 20100902

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110527

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110527

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121019

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121024

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130123

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130130

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130225

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130304

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130424

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130723

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130730

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130823

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140304

R150 Certificate of patent or registration of utility model

Ref document number: 5496085

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