JP5030796B2 - データ転送中にキャッシュへのアクセスを制限するシステムおよびその方法 - Google Patents

データ転送中にキャッシュへのアクセスを制限するシステムおよびその方法 Download PDF

Info

Publication number
JP5030796B2
JP5030796B2 JP2007554109A JP2007554109A JP5030796B2 JP 5030796 B2 JP5030796 B2 JP 5030796B2 JP 2007554109 A JP2007554109 A JP 2007554109A JP 2007554109 A JP2007554109 A JP 2007554109A JP 5030796 B2 JP5030796 B2 JP 5030796B2
Authority
JP
Japan
Prior art keywords
cache
data
access
data transfer
ways
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2007554109A
Other languages
English (en)
Other versions
JP2008530656A (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 JP2008530656A publication Critical patent/JP2008530656A/ja
Application granted granted Critical
Publication of JP5030796B2 publication Critical patent/JP5030796B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30043LOAD or STORE instructions; Clear instruction
    • 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/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass

Landscapes

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

Description

概して、本発明は、処理システムにおけるキャッシングに関し、より詳細には、データ転送中にキャッシュへのアクセスを制限する技術分野に関する。
キャッシュメモリは、プロセッサにより使用されるか、システムメモリやハードディスクなどの、後に固定記憶装置に格納されるデータや命令などの情報を格納するために、処理システムで用いられることが多い。例えば、パソコンシステムでは、グラフィックスドライバにおいて、システムメモリと1以上の画像フレームバッファ間に大きな画像ブロックを移動させるためにキャッシュを用いることが多い。
このような転送を行うために、グラフィックスドライバはタイトループあるいはx86 REP命令を用いてムーブファンクションを繰り返し行い、キャッシュを介してメモリからフレームバッファに、あるいはフレームバッファからメモリにデータブロックを連続的に転送する。
しかし、通常、このような技術では、転送される画像データによって、キャッシュ内のデータが上書きされてしまう。
キャッシュ内にすでにあるデータを上書きすることで、キャッシュの効率性が低下するおそれがあることは明らかであろう。その理由は、キャッシュから画像データを転送した後、上書きされたデータをキャッシュに再書き込みする必要があり、多くの場合、この再書込みがプロセッサの大幅な遅延や失速を招くからである。
上記課題を解決するために、本発明は、転送されるデータのデータ形式を決定するステップ(402)、前記データを転送するためのデータ転送コマンドを決定するステップ(404)、前記データが第1の形式の場合に、前記データ転送コマンドとともに使用する第1のプレフィックスを選択するステップ(406)、および、前記データが第2の形式の場合に、前記データ転送コマンドとともに使用する第2のプレフィックスを選択するステップ、を含む方法を提供する。
本開示の目的および利点は、添付の図面と併せて以下の詳細な説明から当業者には明らかであろう。図面において、同様の参照文字は同じ要素を示すために使用される。図1から図8は、キャッシュを介してデータ転送する間にキャッシュアクセスが制御され得る例示的システムおよび技術を示す。少なくとも1つの実施形態では、非データ転送オペレーションに関する命令やキャッシュを介して相対的に小さなデータ転送を行うオペレーションに関する命令には第1のアクセスコントロールポリシーが適用され、プロセッサによってキャッシュが使用される間、キャッシュにおける一つ以上のパーティションへのアクセスが制御される。
これに対して、相対的に重要なデータ転送を含む命令や特定の形式のデータ転送を含む命令に関しては第2のアクセスコントロールポリシーが適用され、キャッシュやプロセッサによって次に使用が予測されるデータの上書きを低減するか妨げるように、キャッシュの1以上のパーティションへのアクセスが制御される。以下により詳細に記載しているように、特定のオペレーションに関連づけられるデータ転送の形式や大きさは、命令のプレフィックスフィールド(prefix field)および/あるいはオペコードの検査や比較に基づいて決定されてもよい。この比較や検査に応答して、プロセッサやその他のシステムの構成要素は、1以上のアクセスポリシー間で選択のために利用される信号を発し、次に、選択されたアクセスポリシーは、命令に関連づけられたデータ転送オペレーション中に、キャッシュの1以上のウェイへのアクセスを制御するために用いることができる。
このアクセスポリシーは通常、特定のキャッシュパーティションへのアクセス制限を示す。制限には例えば、1以上の特定のキャッシュウェイへのアクセス制限や1以上の特定のキャッシュラインへのアクセス制限が挙げられる。特定のキャッシュウェイへのアクセス制限に関するアクセスポリシーは、例えばキャッシュマスクによって示され得る。特定のキャッシュパーティションへの制限を、例えば、キャッシュに保持されている最長時間未使用(LRU:least recently used)情報を使用して選択してもよい。
図1に、本開示の少なくとも1つの実施形態に係る例示的キャッシュ制御メカニズムを利用した例示的システム100を示す。該システム100は、CPUなどのプロセッサ110、キャッシュ120を含む。例示しているように、キャッシュ120は複数のキャッシュ列の各々に対して複数のウェイ(ウェイ1−Nとして表示する)を備えたキャッシュメモリ122と、キャッシュコントロールモジュール124(例えば、ソフトウェア、ハードウェア、あるいはファームウェアモジュール)とを含む。
本明細書では、「キャッシュ列」という用語は、共通のインデックスに関連付けられる一連のキャッシュラインのことを指す。キャッシュメモリ120は、例えば、16のウェイ、128の列のキャッシュを備え、各キャッシュラインが32バイトのデータを格納できるものであってもよい。システム100はさらに、システムメモリ130などの、キャッシュ120を利用した1以上のモジュール、システムバス150などを介してキャッシュ120および/あるいはプロセッサ110に接続されたディスプレイフレームバッファ140を含み得る。
少なくとも1つの実施形態では、キャッシュ120は、プロセッサ110によって使用されるデータを格納するために、あるいは、システムメモリ130とディスプレイフレームバッファ140間のデータ転送を容易にするために利用される。このような転送は通常、プロセッサによって1以上の命令が実行される前に、あるいは実行中にプロセッサ110によって開始されることは明らかであろう。上述したように、プロセッサ110によって使用されるデータを格納することにより、あるいはそのようなデータを転送することにより、キャッシュメモリ122にすでに存在するデータが上書きされてしまう。
上書きされてしまう結果、このデータは次のオペレーションの間、プロセッサ110による使用が不可となる。よって、このデータを上書きすることで、キャッシュ120だけでなくプロセッサ110も効率的に利用することができなくなるおそれがある。従って、少なくとも1つの実施形態では、キャッシュコントロールモジュール124は、キャッシュメモリ122にある一定の形式のデータ転送とデータストレージとを行う間に、キャッシュメモリ122の1つ以上の部分(例えば、1以上のウェイや1以上のキャッシュブロック)へのアクセスを制御するキャッシュアクセスコントロールポリシーを実行し得る。このアクセスコントロールポリシーは、データ転送やデータストレージオペレーション後にプロセッサ110による使用が予測されるデータを含む、複数のウェイやキャッシュブロックのサブセットを識別し得る。
さらに、このアクセスコントロールポリシーは、データ転送後にプロセッサ110によって使用されるデータを保持あるいは格納していないと予測されるデータを含み得るキャッシュメモリ122のウェイ/キャッシュブロックを識別し得る。よって、このアクセスコントロールポリシーは、キャッシュ120の使用において、データ転送オペレーション中に利用され得るこれらのウェイ/キャッシュブロックを、データプロセッサ110の効率を実質的に妨げることなく識別し得る。本文に詳細を記載しているように、このアクセスコントロールポリシーは、データ転送オペレーション中は使用を禁止されるウェイだけでなく、データ転送オペレーション中にデータを格納するために使用され得るキャッシュメモリ122のウェイをも示す1以上のキャッシュマスクセットによって実行されてもよい。
一実施形態では、データ転送オペレーション中に使用される特定のアクセスポリシーは、リストリクティッドアイデンティファイア信号(restricted identifier signal)116に基づいて選択される。このリストリクティッドアイデンティファイア信号は、特定のデータ転送オペレーションの実行に応答して、あるいは、そのようなオペレーションの実行に備えてプロセッサ110により供給あるいはアサートされる。キャッシュコントロールモジュール124は、プロセッサ110によりアサートあるいは供給された信号116に基づいて、キャッシュメモリ122の1以上のウェイへのアクセスを制限するあるいはアクセスさせないようにする、キャッシュメモリ122に適用するアクセスポリシーを選択する。
プロセッサ110は、信号116をアサートするかどうかを判断するために、命令解析モジュール160(例えば、ソフトウェア、ハードウェア、あるいはファームウェアモジュール)を使用し、プロセッサにより実行される命令あるいは現在実行されている命令を解析してもよい。一実施形態では、モジュール160は、実行される命令が一時データや画像データなどの大きなデータブロックの転送に関連付けられる特定の形式の命令として識別されるということに基づき、リストリクティッドアイデンティファイア信号116をアサートするかどうかを決定する。モジュール160は、この識別に基づき、リストリクティッド信号116をアサートできるよう、あるいは信号116を直接的にアサートできるように、プロセッサ110のオペレーションをおこなってもよい。
一実施形態では、大きなデータの転送や相対的な一時データのデータ転送に関連づけられる特定の命令は、現在実行されている命令や実行される命令の少なくとも1つのプレフィックスフィールドやオペコードフィールドに基づいて識別される。例えば、特定の命令、例えば、ムーブストリング(MOVS)命令(オペランドサイズに応じて、x86アーキテクチャではオペコード0×A4や0×A5)を繰り返し行うために、x86プロセッシングアーキテクチャではREP命令(x86アーキテクチャではプレフィックス0×F3)が一般に用いられる。従って、モジュール160はプロセッサ110により実行される命令を解析し、実行される命令のプレフィックスフィールドがREP命令に関連づけられるプレフィックスフィールドに実質的に一致するかどうかを判断し得る。
さらに、モジュール160はまた、実行されるオペフィールドを細かく調べ、オペフィールドがムーブストリング命令に関連づけられるオペコード値に実質的に一致するかどうかを判断し得る。実行される命令の1つあるいは両方のフィールドがREP MOVS命令に一致するようなことがあれば、モジュール160は制限信号116をアサートし得る。しかし、ある場合では、このREP MOVS命令を、相対的に大きなデータブロックを使用しないオペレーションや一時データを転送しないオペレーションで使用してもよい。従って、少なくとも1つの実施形態では、キャッシュアクセスが制限されたデータ転送オペレーションを識別するためにREPNE命令(x86アーキテクチャではプレフィックス0×F2)を使用してもよい。
例えば、特に、大きなデータブロックや相対的な一時データを含むデータ転送オペレーションをキャッシュ120を介して識別するために、REPNE MOVS命令などの通常は使用されない特定の命令を使用してもよい。この実施形態では、モジュール160は、特定のオペレーション(例えば、REPNE MOVESオペレーション)を使用するオペレーションを識別するために、プロセッサ110によって実行されるオペレーションを細かく調べてもよい。この一意的オペレーションの識別に基づいて、モジュール160はリストリクティッドアイデンティファイア信号116をアサートし得る。
図2に、本開示の少なくとも1つの実施形態に係るキャッシュコントロールモジュール124の例示的実装を示す。図示しているように、キャッシュコントロールモジュール124は、1以上のキャッシュマスク212を備えたノーマルウェイマスクモジュール、1以上のキャッシュマスク222を備えたリストリクティッドウェイマスクモジュール220(例えば、ソフトウェア、ハードウェア、あるいはファームウェアモジュール)、ノーマルウェイマスクモジュール210からの出力とリストリクティッドウェイマスクモジュール220の出力とを入力し、プロセッサ110から供給され得るリストリクティッド信号116を選択入力するマルチプレクサ230、を含み得る。
マルチプレクサ230は、信号116の値に基づいてノーマルウェイマスクからキャッシュマスク212のうちの1つを、あるいはリストリクティッドウェイマスクモジュール220からキャッシュマスク222のうちの1つをその出力として選択する。プロセッサ110によって実行される命令が、大きなデータブロックの転送や一時データの転送を含む命令として識別されない場合、信号116はデアサートされ、これにより、マルチプレクサ230の出力時にノーマルウェイマスクモジュール210(例えば、ソフトウェア、ハードウェア、あるいはファームウェアモジュール)からキャッシュマスク212が供給される。これに対し、プロセッサ110によって実行される命令が、大きなデータブロックの転送や一時データの転送を含む命令として識別される場合、プロセッサ110は信号116をアサートする。この結果、マルチプレクサ230の出力時に1以上のキャッシュマスク222が出力される。
ウェイ選択モジュール240は、マルチプレクサ230から出力された1以上のキャッシュマスクを受け取り、プロセッサ110で命令を実行する間にキャッシュメモリ122の1つ以上のウェイへのアクセスが制限されるよう、これらのキャッシュマスクをキャッシュメモリ122のアクセスポリシーとして適用する。図示しているように、キャッシュモジュール212と222とは、複数のフィールドを含み得る。各フィールドはキャッシュメモリ122の複数のウェイのうちの1つに一致する。また、キャッシュメモリ222の特定のウェイへのアクセスは、特定のウェイに関連づけられたキャッシュマスクのフィールドに格納される値(つまり、0や1)に基づいて制御される。他の形態では、キャッシュマスク212や222は複数のフィールドを含み得る。各フィールドは特定のキャッシュラインに関連づけられており、前のフィールドの各フィールドに格納された値は対応するキャッシュラインへのアクセスを制御する。
少なくとも1つの実施形態では、データ転送オペレーション後にプロセッサ110によって使用されることが予測される有効データが上書きされないようにする、あるいは、上書きを制限することができるよう、大きなデータブロックの転送や一時データの転送を伴わないオペレーション中に実行あるいはインプリメントされるキャッシュマスク212は、一時データや大きなデータブロックの転送を伴うオペレーション中に実行されるキャッシュマスク222ほどは制限的ではない。キャッシュマスク212やキャッシュマスク222を使用して実行される特定のアクセスコントロールポリシーは予め定められていてもよいし、あるいは、プロセッサ110やその他の装置によって実行される処理システム250によってオンザフライで、即ちその場で構築あるいは修正されてもよい。
例えば、処理システム250あるいはキャッシュ120のその他の構成要素は、最も最近に使用されたキャッシュ部分、最も長時間未使用のキャッシュ部分、あるいは、その他の適切なパフォーマンスパラメータを有するキャッシュ部分を判断あるいは識別するために、キャッシュメモリ122を監視してもよい。このような情報を使用して、処理システムは、頻繁に使用されると識別されたウェイや最も最近に使用されたものと識別されるこれらのウェイを保護し、その一方で、最も長時間未使用であると識別されたウェイや最後に使用されたものと識別されたウェイへのアクセスを可能とするように、キャッシュマスク212あるいは212のうちの一方あるいはその両方をセットしてもよい。さらに、特定のウェイに格納される有効データの量など、その他の事項を用いて、特定のウェイへのアクセスが特定のアクセスコントロールポリシーで認められるべきかどうかを判断してもよい。キャッシュマスクを使用したコントロールアクセスポリシーの例示的実行を示しているが、本文に示したガイドラインを使用する当業者たちは、本開示の精神や範囲から逸れることなくその他の技術を使用してキャッシュアクセスポリシーを実行してもよい。
一実施形態では、ウェイ選択モジュール240は、マルチプレクサ230から出力されるキャッシュマスクを受け取り、出力されたキャッシュマスクによって示されるアクセスコントロールポリシーを実行する。一実施形態では、キャッシュウェイマスクはキャッシュの各ウェイに対して1ビットを含む。1ビットがマスクにアサートされると、対応するウェイは、アクセスされているデータにより置き換えられないようになる。代わりに、キャッシュコントローラは、従来のキャッシュリプレースメントポリシーを使用して、デアサートされたマスクビットを有するウェイから、新たなデータで上書きされるウェイを選択することになる(例えば、最も長時間未使用のウェイや未使用ウェイが選択される)。
図3に、本開示の少なくとも1つの実施形態に係る、キャッシュへのアクセスを制御するための例示的方法300を示す。方法300はステップ302から開始する。ステップ302において、プレフィックスフィールドとオペコードフィールドを含む命令が受信される。ステップ304において、プレフィックスフィールドの値に基づいてキャッシュマスクが選択される。キャッシュマスクの選択において、プレフィックスフィールドが第1の所定の値に一致する場合に第1のキャッシュマスクが選択され、プレフィックスフィールドが第2の所定の値に一致する場合に第2のキャッシュマスクが選択される。ステップ306において、選択したキャッシュマスクに基づいてキャッシュへのアクセスが制御される。オペコードフィールドは、MOVS命令などのデータ転送命令を示し、プレフィックスフィールドはREP、REPE、あるいはREPNEなどの、リピート型の命令を示し得る。キャッシュへのアクセスは、タグ、ウェイあるいはこの組合せにより制限され得る。
図4に、本開示の少なくとも1つの実施形態に係る、キャッシュへのアクセスを制御するための例示的方法400を示す。方法400はステップ402から開始する。ステップ402において、転送されるデータのデータ形式が決定される。ステップ404において、データを転送するデータ転送オペレーションが決定される。ステップ406において、データが第1の形式の場合にデータ転送オペレーションとともに使用する第1のプレフィックスが選択される。ステップ408において、データが第2の形式の場合にデータ転送オペレーションとともに使用する第2のプレフィックスが選択される。一実施形態では、第1の形式のデータは画像データであり、第2の形式のデータは第1の形式のデータとは異なるデータである。他の実施形態では、第1の形式のデータは画像フレームバッファに転送されるデータであるか、又は、第1の形式のデータは再利用されない一時データである。第1プレフィックスは第1キャッシュマスクを選択しやすくするために選択され、第2プレフィックスは第2キャッシュマスクを選択しやすくするために選択される。
図5および6に、本開示の少なくとも1つの実施形態に係るキャッシュコントロールモジュール124の別の例示的実施形態を示す。図5に示した例では、キャッシュコントロールモジュール124は、ウェイ選択モジュール504に接続された、最も最近使用された(MRU:Most Recently Used)/最も長時間未使用(LRU:Least Recently Used)アレイ502を含む。MRU/LRUアレイ502は、キャッシュウェイ、キャッシュ列、および/あるいはキャッシュライン(あるいは任意のその他の種類のキャッシュパーティション)のLRUおよび/あるいはMRU情報を維持するために使用される。ウェイ選択モジュール504は、リストリクティッドアイデンティファイア信号116の受信に応答して、最も長時間未使用のデータ(したがって、プロセッサが最もアクセスしていないとされるデータ)を有するキャッシュメモリ122(図1)の1以上のウェイを識別するためにMRU/LRUアレイ502を使用することができる。次に、ウェイ選択モジュール504は、キャッシュメモリ122に対するアクセスポリシーを実行し得る。これにより、信号116をアサートする契機となるデータ転送オペレーションは、最も長時間未使用のデータを有するという理由で、キャッシュメモリの1以上のウェイだけに制限される。
図6の方法600に、図5に示したコントロールモジュール124を使用した例示的オペレーションを示す。方法600はステップ602において開始する。ステップ602において、キャッシュへのデータ転送命令を示す信号(例えば、信号116)が受信される。ステップ604において、複数のウェイのうち最も長時間未使用の(LRU)情報に基づき、キャッシュの複数のウェイのうちの第1サブセットが決定される。ステップ606において、データ転送中、アクセスはキャッシュのウェイのうちの第1サブセットだけに制限される。
図7および8に、本明細書の少なくとも1つの実施形態に係るキャッシュコントロールモジュール124の他の例示的実装を示す。図7に示した例では、キャッシュコントロールモジュール124は、最も最近使用された(MRU)/最も長時間未使用(LRU)アレイ502、ブロック選択モジュール704、および、一時的ブロックタグレジスタ706を含む。図5に関連して上述しているように、MRU/LRUアレイ502は、キャッシュメモリ122についてのLRUおよび/あるいはMRU情報を維持するために使用される。この情報を用いて、ブロック選択モジュール704は、データ転送オペレーション中に使用されるキャッシュ列に対して、最も長時間未使用の(複数の)キャッシュラインを識別し得る。次に、ライン選択モジュール704は、データ転送オペレーション中にキャッシュメモリ122の識別されたLRUキャッシュラインだけにアクセスを制限するキャッシュメモリ122に対するアクセスポリシーを実行し得る。
従来のシステムでは、一時データを各種キャッシュの特定のパーティションへ転送すると、一時データの書込みをこの特定のパーティションへ反映するためにキャッシュパーティションに関連づけられたMRU/LRU情報が更新される。この一時データを保持するキャッシュパーティションがMRUデータとして示されると、キャッシュコントロールロジック回路は通常、これらのキャッシュパーティションがその他のキャッシュパーティションよりも相対的に古くなるまで上書きされないようにする。しかし、転送されたデータはキャッシュに一時的に存在するだけなので、これらのキャッシュパーティションは、データ転送オペレーションの完了後にアクセス可能となるのが好ましい。
したがって、一実施形態では、ライン選択モジュール704は、データ転送に使用されるキャッシュラインのLRU/MRUステータスがそのキャッシュラインを使用した結果アップデートされないよう、一時データを含むデータ転送オペレーション中にMRU/LRUアレイ502がアップデートされないようにする。あるいは、ライン選択モジュール704は、データ転送において使用されるキャッシュラインが最も長時間未使用のキャッシュラインであったことを示すよう、データ転送において使用されるキャッシュラインに対応するアレイ706のエントリが変更されるように、MRU/LRUアレイ502を修正してもよい。この結果、一時データを格納するために使用したキャッシュラインは、データ転送オペレーション後のその他のオペレーションに利用可能である。
従来のシステムは複数のキャッシュレベルを利用し、これによりデータがデータ転送オペレーション中に複数のキャッシュに分配されることは明らかであろう。例えば、処理システムは、プロセッサによって使用されるデータを一時的に格納し易くするためにレベル1(L1)キャッシュ、レベル2(L2)キャッシュを使用してもよい。しかし、データ転送オペレーション中に一時データが高レベルキャッシュに格納された後、従来のシステムにおける対応のMRU/LRU情報は通常、この一時データは最も最近使用されたデータであり、よって、低レベルの犠牲キャッシュ(victim cache)へデータのオーバーフローを引き起こすおそれがあることを示す。
この状況に対抗するために、ライン選択モジュール704は、キャッシュメモリ122に対応するキャッシュラインが一時データを含んでいるかどうかを反映するよう、一時ラインタグレジスタ706をさらに維持し得る。例えば、レジスタ706はキャッシュメモリ122の各キャッシュラインに対して1ビットフィールドを含み得る。一時データを格納するために特定のキャッシュラインが使用される場合、ライン選択モジュール704は、この特定のキャッシュラインが一時データを保持していることを示すように、この特定のキャッシュラインに対応するレジスタ706のエントリに例えば“1”を書込む。
その後、犠牲キャッシュにデータを送るかどうかを判断する際に、一時ラインタグレジスタ706を使用することもできる。L2キャッシュ710などの低レベルキャッシュに関連づけられた犠牲モジュール708は、データをL2キャッシュ710へ転送可能とする前にレジスタ706を解析し得る。特定のキャッシュラインに関連づけられたレジスタ706のフィールドが、このキャッシュラインが一時データを保持していることを示す“1”を有する場合、犠牲モジュール708は、データをL2キャッシュ710にまでスピルするのではなく、キャッシュ120にキャッシュラインのデータを格納するように指示する。次に、犠牲モジュール708は、対応のキャッシュラインがデータ転送オペレーションからの一時データをもはや含んでいないことを示すために、“0”を書込むことによりレジスタ706のフィールドをクリアにし得る。従って、犠牲モジュール708が、特定のキャッシュラインに対応するレジスタ706のフィールドに“0”を検出すると(したがって、特定のキャッシュラインのデータが一時データではないことを示す)、犠牲モジュール708は、データがL2キャッシュ710にまでスピルすることを可能とする。
図8の方法800は、図7に示したコントロールモジュール124を使用した例示的オペレーションを示す。方法800はステップ802において開始する。ステップ802では、キャッシュへデータ転送する命令を示す信号(信号116)が受信される。ステップ804では、キャッシュの1以上のキャッシュ列に対する第1のキャッシュラインが、このキャッシュラインのLRU情報に基づいて決定される。ステップ806では、データ転送中、アクセスは1以上のキャッシュ列の各々の第1キャッシュラインだけに制限される。
上述した内容は例示的なものであって制限的なものではない。また、添付の請求項は、そのような全ての修正、改良、および本発明の範疇に属するその他の実施形態をカバーするものである。従って、法律で規定される限り、本発明の範囲は以下の請求の範囲および等価物を可能な限り最も広い範囲で解釈することによって判断されるものであって、これまでに述べた詳細な説明によって制限や限定されないものである。
本開示の少なくとも1つの実施形態に係る例示的処理システムを示したブロック図。 本開示の少なくとも1つの実施形態に係る例示的キャッシュコントロールモジュールを示したブロック図。 本開示の少なくとも1つの実施形態に係る例示的キャッシュアクセスコントロール法を示したフロー図。 本開示の少なくとも1つの実施形態に係る例示的キャッシュアクセスコントロール法を示したフロー図。 本開示の少なくとも1つの実施形態に係る例示的キャッシュコントロールモジュールを示したブロック図。 本開示の少なくとも1つの実施形態に係る例示的キャッシュアクセスコントロール法を示したフロー図。 本開示の少なくとも1つの実施形態に係る例示的キャッシュコントロールモジュールを示したブロック図。 本開示の少なくとも1つの実施形態に係る例示的キャッシュアクセスコントロール法を示したフロー図。

Claims (8)

  1. 転送されるデータのデータ形式を決定するステップ(402)、
    前記データを転送するためのデータ転送コマンドを決定するステップ(404)、
    前記データが第1の形式の場合に、前記データ転送コマンドとともに使用する第1のプレフィックスを選択するステップ(406)、および、
    前記データが第2の形式の場合に、前記データ転送コマンドとともに使用する第2のプレフィックスを選択するステップ、を含み、
    前記第1のプレフィックスが、前記データ転送コマンドによってキャッシュメモリの複数のウェイのうちの第1サブセットだけにアクセスを限定することにより前記キャッシュメモリへのアクセスを制御するものであり、
    前記第2のプレフィックスが、前記データ転送コマンドによって前記キャッシュメモリの複数のウェイのうちの第2サブセットだけにアクセスを限定することにより前記キャッシュメモリへのアクセスを制御するものである、方法。
  2. 第1の形式の前記データは画像データであり、前記第2の形式のデータは前記第1の前記形式のデータとは異なる、請求項1に記載の方法。
  3. 第1の形式の前記データは画像フレームバッファ(140)に転送される、請求項1に記載の方法。
  4. 第1の形式の前記データは再利用されることのない一時データである、請求項1に記載の方法。
  5. 前記第1のプレフィックスは前記複数のウェイのうちの前記第1のサブセットだけにアクセスを限定する第1のキャッシュマスク(212、222)の選択を容易にし、前記第2のプレフィックスは前記複数のウェイのうちの前記第2のサブセットだけにアクセスを限定する第2のキャッシュマスク(212、222)の選択を容易にするために選択される、請求項1に記載の方法。
  6. ロセッサ(110)、
    フレームバッファ(140)、
    キャッシュメモリ(122)、および、
    前記プロセッサ(110)によって実行される転送を実行するための命令の形式に基づいて、前記キャッシュメモリ(122)の複数のウェイのうちの1つのサブセットだけにアクセスを限定することにより、前記フレームバッファ(140)へデータを転送する間に前記キャッシュメモリ(122)へのアクセスを制御するキャッシュコントローラ(124)、を含むシステム。
  7. 前記キャッシュコントローラ(124)はさらに、前記プロセッサ(110)によって実行される前記命令の形式に基づいて複数のキャッシュマスク(212、222)から第1のキャッシュマスク(212)を選択し、前記選択された第1のキャッシュマスク(212)は、前記データ転送中に前記キャッシュメモリ(122)の複数のウェイのうちの前記1つのサブセットだけにアクセスを制御する、請求項6に記載のシステム。
  8. 前記キャッシュコントローラ(124)は、前記複数のウェイの、最も長時間未使用の情報に基づいて、前記ウェイの前記1つのサブセットからなる前記1以上のウェイを決定する、請求項に記載のシステム。
JP2007554109A 2005-02-07 2006-01-17 データ転送中にキャッシュへのアクセスを制限するシステムおよびその方法 Active JP5030796B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/052,432 US7930484B2 (en) 2005-02-07 2005-02-07 System for restricted cache access during data transfers and method thereof
US11/052,432 2005-02-07
PCT/US2006/001597 WO2006086121A2 (en) 2005-02-07 2006-01-17 System for restricted cache access during data transfers and method thereof

Publications (2)

Publication Number Publication Date
JP2008530656A JP2008530656A (ja) 2008-08-07
JP5030796B2 true JP5030796B2 (ja) 2012-09-19

Family

ID=36463349

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007554109A Active JP5030796B2 (ja) 2005-02-07 2006-01-17 データ転送中にキャッシュへのアクセスを制限するシステムおよびその方法

Country Status (8)

Country Link
US (1) US7930484B2 (ja)
JP (1) JP5030796B2 (ja)
KR (1) KR101245823B1 (ja)
CN (1) CN100578472C (ja)
DE (1) DE112006000339B4 (ja)
GB (1) GB2437888B (ja)
TW (1) TWI403900B (ja)
WO (1) WO2006086121A2 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7676632B2 (en) * 2006-07-18 2010-03-09 Via Technologies, Inc. Partial cache way locking
JP5254710B2 (ja) * 2008-09-01 2013-08-07 株式会社ソニー・コンピュータエンタテインメント データ転送装置、データ転送方法およびプロセッサ
US9164924B2 (en) 2011-09-13 2015-10-20 Facebook, Inc. Software cryptoprocessor
GB2500707B (en) * 2012-03-30 2014-09-17 Cognovo Ltd Multiprocessor system, apparatus and methods
CN103458467A (zh) * 2012-06-05 2013-12-18 华为技术有限公司 一种应用于网络中缓存***、装置以及方法
US10133678B2 (en) * 2013-08-28 2018-11-20 Advanced Micro Devices, Inc. Method and apparatus for memory management
US9477603B2 (en) 2013-09-05 2016-10-25 Facebook, Inc. System and method for partitioning of memory units into non-conflicting sets
US9983894B2 (en) 2013-09-25 2018-05-29 Facebook, Inc. Method and system for providing secure system execution on hardware supporting secure application execution
US10705961B2 (en) 2013-09-27 2020-07-07 Intel Corporation Scalably mechanism to implement an instruction that monitors for writes to an address
US10049048B1 (en) * 2013-10-01 2018-08-14 Facebook, Inc. Method and system for using processor enclaves and cache partitioning to assist a software cryptoprocessor
US9747450B2 (en) 2014-02-10 2017-08-29 Facebook, Inc. Attestation using a combined measurement and its constituent measurements
US9734092B2 (en) 2014-03-19 2017-08-15 Facebook, Inc. Secure support for I/O in software cryptoprocessor
EP3055775B1 (en) * 2014-12-14 2019-08-21 VIA Alliance Semiconductor Co., Ltd. Cache replacement policy that considers memory access type
US9898411B2 (en) * 2014-12-14 2018-02-20 Via Alliance Semiconductor Co., Ltd. Cache memory budgeted by chunks based on memory access type
EP3230874B1 (en) * 2014-12-14 2021-04-28 VIA Alliance Semiconductor Co., Ltd. Fully associative cache memory budgeted by memory access type
WO2016097805A1 (en) 2014-12-14 2016-06-23 Via Alliance Semicoductor Co., Ltd. Cache memory budgeted by ways on memory access type
US9811468B2 (en) * 2014-12-14 2017-11-07 Via Alliance Semiconductor Co., Ltd. Set associative cache memory with heterogeneous replacement policy
US10649678B2 (en) * 2017-01-13 2020-05-12 Arm Limited Partitioning of memory system resources or performance monitoring

Family Cites Families (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4181937A (en) * 1976-11-10 1980-01-01 Fujitsu Limited Data processing system having an intermediate buffer memory
US4513367A (en) * 1981-03-23 1985-04-23 International Business Machines Corporation Cache locking controls in a multiprocessor
US4464712A (en) * 1981-07-06 1984-08-07 International Business Machines Corporation Second level cache replacement method and apparatus
US4458310A (en) * 1981-10-02 1984-07-03 At&T Bell Laboratories Cache memory using a lowest priority replacement circuit
DE3142304A1 (de) * 1981-10-24 1983-05-11 AEG-Telefunken Nachrichtentechnik GmbH, 7150 Backnang Gleichspannungswandler
JPS6299845A (ja) 1985-10-28 1987-05-09 Hitachi Ltd デイスク・キヤツシユ制御方式
DE3621405C1 (de) * 1986-06-26 1988-01-28 Rehau Ag & Co Fluessigkeitsfilter
US4928239A (en) * 1986-06-27 1990-05-22 Hewlett-Packard Company Cache memory with variable fetch and replacement schemes
CA1279731C (en) * 1986-06-27 1991-01-29 Ruby Bei-Loh Lee Cache memory with variable fetch and replacement schemes
EP0405318A3 (en) 1989-06-20 1991-11-27 Nec Corporation Microprocessor having cash bypass signal terminal
US5261066A (en) * 1990-03-27 1993-11-09 Digital Equipment Corporation Data processing system and method with small fully-associative cache and prefetch buffers
JP2822588B2 (ja) * 1990-04-30 1998-11-11 日本電気株式会社 キャッシュメモリ装置
JPH04167155A (ja) * 1990-10-31 1992-06-15 Toshiba Corp データ処理システム
JPH06110781A (ja) * 1992-09-30 1994-04-22 Nec Corp キャッシュメモリ装置
US5539893A (en) * 1993-11-16 1996-07-23 Unisys Corporation Multi-level memory and methods for allocating data most likely to be used to the fastest memory level
US5623627A (en) * 1993-12-09 1997-04-22 Advanced Micro Devices, Inc. Computer memory architecture including a replacement cache
US5870599A (en) * 1994-03-01 1999-02-09 Intel Corporation Computer system employing streaming buffer for instruction preetching
US5809271A (en) * 1994-03-01 1998-09-15 Intel Corporation Method and apparatus for changing flow of control in a processor
US5687338A (en) * 1994-03-01 1997-11-11 Intel Corporation Method and apparatus for maintaining a macro instruction for refetching in a pipelined processor
US6151661A (en) * 1994-03-03 2000-11-21 International Business Machines Corporation Cache memory storage space management system and method
US5752274A (en) * 1994-11-08 1998-05-12 Cyrix Corporation Address translation unit employing a victim TLB
US5729713A (en) * 1995-03-27 1998-03-17 Texas Instruments Incorporated Data processing with first level cache bypassing after a data transfer becomes excessively long
JPH09101916A (ja) * 1995-10-06 1997-04-15 Fujitsu Ltd マルチプロセス処理装置
US5696947A (en) * 1995-11-20 1997-12-09 International Business Machines Corporation Two dimensional frame buffer memory interface system and method of operation thereof
US5745728A (en) * 1995-12-13 1998-04-28 International Business Machines Corporation Process or renders repeat operation instructions non-cacheable
US5778430A (en) * 1996-04-19 1998-07-07 Eccs, Inc. Method and apparatus for computer disk cache management
US5958045A (en) * 1997-04-02 1999-09-28 Advanced Micro Devices, Inc. Start of access instruction configured to indicate an access mode for fetching memory operands in a microprocessor
EP0886216A1 (en) * 1997-06-06 1998-12-23 Texas Instruments Incorporated Microprocessor comprising means for storing non-cacheable data
US6223256B1 (en) * 1997-07-22 2001-04-24 Hewlett-Packard Company Computer cache memory with classes and dynamic selection of replacement algorithms
US6151662A (en) * 1997-12-02 2000-11-21 Advanced Micro Devices, Inc. Data transaction typing for improved caching and prefetching characteristics
US6078992A (en) * 1997-12-05 2000-06-20 Intel Corporation Dirty line cache
US6216206B1 (en) * 1997-12-16 2001-04-10 Intel Corporation Trace victim cache
US6105111A (en) * 1998-03-31 2000-08-15 Intel Corporation Method and apparatus for providing a cache management technique
US6591347B2 (en) * 1998-10-09 2003-07-08 National Semiconductor Corporation Dynamic replacement technique in a shared cache
US6370622B1 (en) * 1998-11-20 2002-04-09 Massachusetts Institute Of Technology Method and apparatus for curious and column caching
US6397296B1 (en) * 1999-02-19 2002-05-28 Hitachi Ltd. Two-level instruction cache for embedded processors
US6434669B1 (en) * 1999-09-07 2002-08-13 International Business Machines Corporation Method of cache management to dynamically update information-type dependent cache policies
US6349365B1 (en) * 1999-10-08 2002-02-19 Advanced Micro Devices, Inc. User-prioritized cache replacement
US6370618B1 (en) * 1999-11-09 2002-04-09 International Business Machines Corporation Method and system for allocating lower level cache entries for data castout from an upper level cache
US6385695B1 (en) * 1999-11-09 2002-05-07 International Business Machines Corporation Method and system for maintaining allocation information on data castout from an upper level cache
US7099998B1 (en) * 2000-03-31 2006-08-29 Intel Corporation Method for reducing an importance level of a cache line
CA2312444A1 (en) * 2000-06-20 2001-12-20 Ibm Canada Limited-Ibm Canada Limitee Memory management of data buffers incorporating hierarchical victim selection
US6889291B1 (en) * 2000-06-30 2005-05-03 Intel Corporation Method and apparatus for cache replacement for a multiple variable-way associative cache
JP3973129B2 (ja) * 2000-07-19 2007-09-12 株式会社日立製作所 キャッシュメモリ装置及びそれを用いた中央演算処理装置
US6678795B1 (en) * 2000-08-15 2004-01-13 International Business Machines Corporation Method and apparatus for memory prefetching based on intra-page usage history
US6728835B1 (en) * 2000-08-30 2004-04-27 Unisys Corporation Leaky cache mechanism
US6845432B2 (en) * 2000-12-28 2005-01-18 Intel Corporation Low power cache architecture
US6725337B1 (en) * 2001-05-16 2004-04-20 Advanced Micro Devices, Inc. Method and system for speculatively invalidating lines in a cache
US6801982B2 (en) * 2002-01-24 2004-10-05 International Business Machines Corporation Read prediction algorithm to provide low latency reads with SDRAM cache
US7000081B2 (en) * 2002-02-12 2006-02-14 Ip-First, Llc Write back and invalidate mechanism for multiple cache lines
US7089371B2 (en) * 2002-02-12 2006-08-08 Ip-First, Llc Microprocessor apparatus and method for prefetch, allocation, and initialization of a block of cache lines from memory
US7089368B2 (en) * 2002-02-12 2006-08-08 Ip-First, Llc Microprocessor apparatus and method for exclusively prefetching a block of cache lines from memory
US6901477B2 (en) * 2002-04-01 2005-05-31 Emc Corporation Provision of a victim cache within a storage cache hierarchy
US7103722B2 (en) * 2002-07-22 2006-09-05 International Business Machines Corporation Cache configuration for compressed memory systems
TWI220042B (en) * 2002-08-22 2004-08-01 Ip First Llc Non-temporal memory reference control mechanism
US6961821B2 (en) * 2002-10-16 2005-11-01 International Business Machines Corporation Reconfigurable cache controller for nonuniform memory access computer systems
US6996676B2 (en) * 2002-11-14 2006-02-07 International Business Machines Corporation System and method for implementing an adaptive replacement cache policy
US7103721B2 (en) * 2003-04-28 2006-09-05 International Business Machines Corporation Cache allocation mechanism for biasing subsequent allocations based upon cache directory state
US20040268099A1 (en) * 2003-06-30 2004-12-30 Smith Peter J Look ahead LRU array update scheme to minimize clobber in sequentially accessed memory
US7028144B2 (en) * 2003-10-28 2006-04-11 Intel Corporation Method and apparatus for an in-situ victim cache
US20050188158A1 (en) * 2004-02-25 2005-08-25 Schubert Richard P. Cache memory with improved replacement policy
US7392340B1 (en) * 2005-03-21 2008-06-24 Western Digital Technologies, Inc. Disk drive employing stream detection engine to enhance cache management policy

Also Published As

Publication number Publication date
US20060179228A1 (en) 2006-08-10
WO2006086121A2 (en) 2006-08-17
DE112006000339B4 (de) 2020-10-29
GB2437888B (en) 2010-11-17
US7930484B2 (en) 2011-04-19
KR101245823B1 (ko) 2013-03-21
GB0716023D0 (en) 2007-09-26
KR20070110021A (ko) 2007-11-15
JP2008530656A (ja) 2008-08-07
TWI403900B (zh) 2013-08-01
DE112006000339T5 (de) 2007-12-20
GB2437888A (en) 2007-11-07
CN100578472C (zh) 2010-01-06
CN101116061A (zh) 2008-01-30
TW200636467A (en) 2006-10-16
WO2006086121A3 (en) 2007-03-29

Similar Documents

Publication Publication Date Title
JP5030796B2 (ja) データ転送中にキャッシュへのアクセスを制限するシステムおよびその方法
US10558580B2 (en) Methods and apparatus for loading firmware on demand
US7290081B2 (en) Apparatus and method for implementing a ROM patch using a lockable cache
US5524233A (en) Method and apparatus for controlling an external cache memory wherein the cache controller is responsive to an interagent communication for performing cache control operations
US7472218B2 (en) Assisted trace facility to improve CPU cache performance
US9286221B1 (en) Heterogeneous memory system
EP2979189B1 (en) Storing data from cache lines to main memory based on memory addresses
CN109952567B (zh) 用于旁通高级dram存储器控制器的内部高速缓存的方法和装置
US20070288694A1 (en) Data processing system, processor and method of data processing having controllable store gather windows
JP7096840B2 (ja) 能力メタデータを管理するための装置及び方法
US6438672B1 (en) Memory aliasing method and apparatus
US20080052467A1 (en) System for restricted cache access during information transfers and method thereof
US5729713A (en) Data processing with first level cache bypassing after a data transfer becomes excessively long
JP4008947B2 (ja) キャッシュメモリ及びその制御方法
JP2007272280A (ja) データ処理装置
KR20200107997A (ko) 다중 가드 태그 설정 명령어
JP7245842B2 (ja) デバイスをデバッグするときにメタデータにアクセスするための装置及び方法
CN111742304B (zh) 当调试要在处理电路上执行的程序时访问元数据的方法
JP4008946B2 (ja) キャッシュメモリ及びその制御方法
TWI801622B (zh) 用於處理保護標籤損失的裝置、方法、電腦程式、與儲存媒體
US8504776B2 (en) Device and method for controlling caches
KR20200116471A (ko) 데이터 처리장치의 어드레스 변환

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090114

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20100421

RD05 Notification of revocation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7425

Effective date: 20100902

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120111

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120405

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120626

R150 Certificate of patent or registration of utility model

Ref document number: 5030796

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150706

Year of fee payment: 3

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250