JP5221565B2 - スヌープ要求キャッシュを用いたスヌープ・フィルタリング - Google Patents

スヌープ要求キャッシュを用いたスヌープ・フィルタリング Download PDF

Info

Publication number
JP5221565B2
JP5221565B2 JP2009547456A JP2009547456A JP5221565B2 JP 5221565 B2 JP5221565 B2 JP 5221565B2 JP 2009547456 A JP2009547456 A JP 2009547456A JP 2009547456 A JP2009547456 A JP 2009547456A JP 5221565 B2 JP5221565 B2 JP 5221565B2
Authority
JP
Japan
Prior art keywords
cache
snoop
snoop request
data
processor
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
JP2009547456A
Other languages
English (en)
Other versions
JP2010517184A (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 JP2010517184A publication Critical patent/JP2010517184A/ja
Application granted granted Critical
Publication of JP5221565B2 publication Critical patent/JP5221565B2/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
    • 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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means

Landscapes

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

Description

本発明は、一般に、マルチ・プロセッサ・コンピューティング・システムにおけるキャッシュ・コヒーレンスに関し、特に、スヌープ要求をフィルタするためのスヌープ要求キャッシュに関する。
現代の多くのソフトウェア・プログラムは、それらを実行するコンピュータが非常に大量の(理想的には、無限の)高速メモリを有するかのように書かれる。最近のプロセッサは、各々が異なる速度及びコスト特性を有するメモリ・タイプの階層を用いることによって理想的な状態をシミュレートする。階層内のメモリ・タイプは、最上位の非常に高速で非常に高価なものから、下位レベルでは次第に、緩慢であるがより経済的な格納タイプへ変わる。ほとんどのプログラムの空間的及び時間的な局所性特性により、任意の時間に実行している命令及びデータと、それらに近いアドレス空間内の命令及びデータとは、統計的に、とても近い将来必要になりそうであり、それらが容易に利用可能である、上位の高速階層において有利に保持されうる。
代表的なメモリ階層は、プロセッサ・コア内の最上位レベルに、非常に高速な汎用レジスタ(GPR)のアレイを備えることができる。プロセッサ・レジスタは、当該技術においてレベル1キャッシュ、すなわちL1キャッシュとして知られている1つ又は複数のキャッシュ・メモリによって支援されうる。L1キャッシュは、プロセッサ・コアと同じ集積回路上のメモリ・アレイとして形成されることができ、非常に高速なアクセスを可能とするが、L1キャッシュの大きさを制限する。実現形態に依存して、プロセッサは、1つ又は複数のオンチップ又はオフチップのレベル2キャッシュ、すなわちL2キャッシュを含むことができる。L2キャッシュはしばしば、高速アクセス時間のために、またDRAMの性能低下リフレッシュ要件を回避するために、SRAM内に実装される。L2キャッシュの大きさにはあまり制限が無いので、L2キャッシュはL1キャッシュの何倍かの大きさであることができ、マルチプロセッサ・システムにおいて、1つのL2キャッシュが2つ以上のL1キャッシュの下に存在することができる。高性能コンピュータ処理は、更なるレベル(例えば、L3)のキャッシュを有することができる。全てのキャッシュより下位にメイン・メモリがあり、これはしばしば、最大密度によるビット毎の最低コストのために、DRAM又はSDRAM内に実装される。
メモリ階層内のキャッシュ・メモリは、少量のデータへの非常に高速なアクセスを提供することによって、かつ1つ又は複数のプロセッサとメイン・メモリとの間のデータ転送を低減することによって、性能を改善する。キャッシュは、メイン・メモリ内に格納されたデータのコピーを含み、キャッシュされたデータに対する変更は、メイン・メモリ内に反映されなければならない。一般に、メイン・メモリへキャッシュの書込みを伝搬するために、ライトスルーとコピー・バックとの2つのアプローチが当該技術において開発されてきた。ライトスルー・キャッシュにおいて、プロセッサが修正されたデータを自身のL1キャッシュへ書き込んだ場合、プロセッサは更に(そして直ちに)、修正されたデータを下位レベルのキャッシュ及び/又はメイン・メモリへ書き込む。コピー・バック・スキームの下では、プロセッサは、修正されたデータをL1キャッシュへ書き込み、後の時間まで、下位レベルのメモリに対する変更の更新を延期することができる。例えば書込みは、キャッシュ・エントリがキャッシュ・ミスを処理する際に置換されるまで、キャッシュ・コヒーレンス・プロトコルが書込みを要求するまで、又はソフトウェアの制御下で、延期されうる。
大量の高速メモリの想定に加えて、現代のソフトウェア・プログラムは、概念的に連続しており、大抵は排他的な仮想アドレス空間において実行する。すなわち、各プログラムは、明確に共有されたメモリ空間を例外として、メモリ・リソース全てを排他的に用いることを想定する。高度なオペレーティング・システム・ソフトウェアと共に用いられる現代のプロセッサは、この条件を、(プログラムによって用いられる)仮想アドレスを(例えばキャッシュ及びメイン・メモリといった実際のハードウェアをアドレス指定する)物理アドレスへマッピングすることによって模擬する。この仮想アドレスから物理アドレスへの変換及びマッピングは、メモリ管理として知られている。メモリ管理は、ページと称されるメイン・メモリのセグメントへ属性を割り当てることによって、リソースをプロセッサ及びプログラムへ割り当て、キャッシュ管理ポリシーを定め、セキュリティを実施し、データ保護を提供し、信頼性を高め、その他の機能を提供する。例えばスーパーバイザ/ユーザ、読み書き/読取専用、排他/共有、命令/データ、キャッシュ・ライトスルー/コピー・バック、及びその他多くのような多くの異なる属性が、ページ毎ベースで割り当てられ、定められうる。仮想アドレスを物理アドレスへ変換すると、データは、物理ページのために定められた属性を積み込む。
マルチプロセッサ・システムを管理するための1つのアプローチは、タスク又はプログラム実行の個別の「スレッド」を各プロセッサに割り当てることである。この場合、各スレッドは、その他任意のスレッドに割り当てられたメモリの状態に関わらず読み書きすることができる排他的メモリに割り当てられる。しかし、関連スレッドはしばしば、いくつかのデータを共有し、そのため各々が、共有属性を有する1つ又は複数の共通ページに割り当てられる。共有メモリへの更新は、それを共有しているプロセッサ全てに認識できなければならず、キャッシュ・コヒーレンスの問題を生ずる。従って、共有データは、L1キャッシュを(L2キャッシュが、ページを共有しているプロセッサ全てのL1キャッシュを戻す場合)L2キャッシュへ、あるいはメイン・メモリへ「ライトスルー」しなければならない属性を有することもできる。更に、共有データが変更された(そのため、自身のL1キャッシュされたコピーがある場合、それはもはや有効ではない)ことを他のプロセッサに知らせるために、書込み中のプロセッサは、共有しているプロセッサ全てへ、それらのL1キャッシュ内の対応するラインを無効にする要求を発行する。プロセッサ間のキャッシュ・コヒーレンス動作は、本明細書において一般に、スヌープ要求と称され、L1キャッシュ・ラインを無効にする要求は、本明細書において、スヌープ・キル要求又は単にスヌープ・キルと称される。スヌープ・キル要求は、上記以外のシナリオにおいても起こる。
スヌープ・キル要求を受け取ると、プロセッサは、自身のL1キャッシュ内の対応するラインを無効にしなければならない。その後のデータを読み取る試みは、L1キャッシュ内でミスし、プロセッサに、共有L2キャッシュ又はメイン・メモリから更新されたバージョンを読み取らせるであろう。しかしスヌープ・キルの処理は、それがなければ、受信しているプロセッサにおける格納及びロードを提供するために用いられたであろう処理サイクルを消費するので、性能ペナルティを招く。更にスヌープ・キルは、スヌープによって複雑化されたデータ・ハザードが解決されたと知られる状態に達するために、パイプラインのロード/格納を必要としうるので、パイプラインをストールさせ、更に性能を低下させる。
当該技術において、スヌープされているプロセッサによって招かれるプロセッサ・ストール・サイクルの数を低減する様々な技術が知られている。1つのこのような技術において、L1タグ・アレイの複写コピーが、スヌープ・アクセスのために保持される。スヌープ・キルが受け取られると、ルックアップが、二重タグ・アレイにおいて実行される。このルックアップがミスした場合、L1キャッシュ内の対応するエントリを無効にする必要はなく、スヌープ・キルの処理に関するペナルティが回避される。しかし、この解決策は、各L1キャッシュのためのタグ全体が複写され、最小ダイ・サイズ及び電力消費を増加させるので、シリコン領域において多大なペナルティをもたらす。更にプロセッサは、L1キャッシュが更新される度にタグの2つのコピーを更新しなければならない。
プロセッサが処理しなければならないスヌープ・キル要求の数を低減する別の周知の技術は、潜在的にメモリを共有することができるプロセッサの「スヌーパ・グループ」を形成することである。(下位レベルのメモリへのライトスルーによって)共有データを用いてL1キャッシュを更新すると、プロセッサは、自身のスヌーパ・グループ内の他のプロセッサへのみ、スヌープ・キル要求を送る。ソフトウェアは、例えばページ・レベルで、又はグローバルに、スヌーパ・グループを定め、保持することができる。この技術は、システム内のスヌープ・キル要求のグローバルな数を低減するが、各スヌーパ・グループ内の各プロセッサは、そのグループ内の他の任意のプロセッサによる共有データの書込み毎にスヌープ・キル要求を処理することが必要である。
スヌープ・キル要求の数を低減するまた別の周知の技術は、格納集合である。少量のデータをL1キャッシュへ書き込むことによって各格納命令を直ちに実行するのではなく、プロセッサは、格納データを収集するための集合バッファ又はレジスタ・バンクを含むことができる。キャッシュ・ライン、ハーフライン、又はその他の都合の良い量のデータが集められた場合、又は、集められたものとは異なるキャッシュ・ラインあるいはハーフラインに対し格納が起こった場合、集められた格納データは、全て一度にL1キャッシュへ書き込まれる。これは、L1キャッシュへの書込み動作の数を低減し、そのため、別のプロセッサへ送られなければならないスヌープ・キル要求の数を低減する。この技術は、集合バッファあるいは複数の集合バッファのための追加のオンチップ格納を必要とし、格納動作が、集合バッファによってカバーされる範囲に局所化されていない場合、良好に機能しない。
また別の周知の技術は、L1キャッシュを完全に含むL2キャッシュを生成することによって、L2キャッシュにおいてスヌープ・キル要求をフィルタすることである。この場合、共有データを書き込むプロセッサは、他方のプロセッサをスヌープする前に、他方のプロセッサのL2キャッシュ内のルックアップを実行する。L2ルックアップがミスした場合、他方のプロセッサのL1キャッシュをスヌープする必要はなく、他方のプロセッサは、スヌープ・キル要求を処理することの性能低下を起こさない。この技術は、1つ又は複数のL1キャッシュを複写するために、L2キャッシュ・メモリを消費することによって実質的なキャッシュ・サイズの合計を低減する。更にこの技術は、同一のL2キャッシュによって支援される2つ以上のプロセッサがデータを共有し、そのため互いにスヌープしなければならない場合、非効率的である。
本明細書において説明され、特許請求される1つ又は複数の実施形態によると、1つ又は複数のスヌープ要求キャッシュが、スヌープ要求の記録を保持する。共有属性を有するデータを書き込むと、プロセッサは、スヌープ要求キャッシュ内のルックアップを実行する。ルックアップがミスした場合、プロセッサは、スヌープ要求キャッシュ内のエントリを割り当て、(例えばスヌープ・キルのような)スヌープ要求を1つ又は複数のプロセッサへ向ける。スヌープ要求キャッシュのルックアップがヒットした場合、プロセッサは、スヌープ要求を抑制する。プロセッサは、共有データを読み取った場合もスヌープ要求キャッシュのルックアップを実行し、ヒットの事象においてヒットしているエントリを無効にする。
1つの実施形態は、スヌープ・エンティティによって、データ・キャッシュを有するターゲット・プロセッサへデータ・キャッシュ・スヌープ要求を発行する方法に関する。スヌープ要求キャッシュのルックアップが、データ格納動作に応答して実行され、データ・キャッシュ・スヌープ要求は、ヒットに応答して抑制される。
別の実施形態は、コンピュータ・システムに関する。このシステムは、メモリと、データ・キャッシュを有する第1のプロセッサとを含む。システムはまた、予め定められた属性を有するデータをメモリへ書き込むと、データ・キャッシュ・スヌープ要求を第1のプロセッサへ向けるように動作可能なスヌープ・エンティティも含む。システムは更に、各有効なエントリが前のデータ・キャッシュ・スヌープ要求を示す少なくとも1つのエントリを備えた少なくとも1つのスヌープ要求キャッシュを含む。スヌープ・エンティティは更に、データ・キャッシュ・スヌープ要求を第1のプロセッサへ向ける前にスヌープ要求キャッシュのルックアップを実行し、ヒットに応答してデータ・キャッシュ・スヌープ要求を抑制するように動作可能である。
図1は、マルチプロセッサ・コンピュータ・システムにおける共有スヌープ要求キャッシュの機能ブロック図である。 図2は、マルチプロセッサ・コンピュータ・システムにおけるプロセッサ毎の複数の専用スヌープ要求キャッシュの機能ブロック図である。 図3は、プロセッサでないスヌープ・エンティティを含むマルチプロセッサ・コンピュータ・システムの機能ブロック図である。 図4は、マルチプロセッサ・コンピュータ・システムにおける各プロセッサに関連付けられた単一のスヌープ要求キャッシュの機能ブロック図である。 図5は、スヌープ要求を発行する方法のフロー図である。
発明を実施する形態
図1は、一般に番号100によって示されたマルチプロセッサ・コンピュータ・システムを図示する。コンピュータ100は、第1のプロセッサ102(P1と記載)と、その関連L1キャッシュ104とを含む。コンピュータ100は更に、第2のプロセッサ106(P2と記載)と、その関連L1キャッシュ108とを含む。L1キャッシュはどちらも、システム・バス112を介してメイン・メモリ114とデータを転送しあう共有L2キャッシュ110によって支援される。プロセッサ102、106は、専用命令キャッシュ(図示せず)を含むことができる、あるいは、L1キャッシュ及びL2キャッシュ内にデータ及び命令の両方をキャッシュすることができる。キャッシュ104、108、110が、専用データ・キャッシュであるか、統一命令/データ・キャッシュであるかは、本明細書で説明される、キャッシュされたデータに関して動作する実施形態に影響を及ぼさない。本明細書で用いられるように、例えばデータ・キャッシュ・スヌープ要求のような「データ・キャッシュ」の動作は、専用データ・キャッシュに向けられた動作と、統一キャッシュに格納されたデータに向けられた動作とを等しく示す。
プロセッサP1及びP2で実行しているソフトウェア・プログラムは主に独立しており、それらの仮想アドレスは、物理メモリのそれぞれの専有ページへマップされる。しかしプログラムは幾らかのデータを共有し、少なくともいくつかのアドレスが共有メモリ・ページへマップされる。各プロセッサのL1キャッシュ104、108が最新の共有データを含むことを確実にするために、共有ページは、L1ライトスルーの追加属性を有する。従って、P1又はP2が共有メモリ・アドレスを更新した任意の時間に、プロセッサのL1キャッシュ104、108及びL2キャッシュ110が更新される。更に、更新しているプロセッサ102、106は、他方のプロセッサのL1キャッシュ104、108内の可能な対応するラインを無効にするために、他方のプロセッサ102、106へスヌープ・キル要求を送る。これにより、上述したように、受け取っているプロセッサ102、106における性能低下が起こる。
スヌープ要求キャッシュ116は、前のスヌープ・キル要求をキャッシュし、余分なスヌープ・キルを除去し、全体的な性能を改善することができる。図1は、この処理を図示する。ステップ1において、プロセッサP1は、共有属性を有するメモリ場所へデータを書き込む。本明細書で用いられるように、「グラニュール」という用語は、コンピュータ・システム100においてキャッシュ可能な最も小さい量のデータを称する。多くの場合、グラニュールは、最小L1キャッシュ・ラインの大きさである(いくつかのL2キャッシュはセグメント化されたラインを有し、ライン毎に複数のグラニュールを格納することができる)。キャッシュ・コヒーレンスは、グラニュール・ベースで維持される。グラニュールを含むメモリ・ページの共有属性(あるいは、個別のライトスルー属性)は、P1に、P1のデータを、L2キャッシュ110及びP1自身のL1キャッシュ104へ書き込ませる。
ステップ2において、プロセッサP1は、スヌープ要求キャッシュ116内でルックアップを実行する。スヌープ要求キャッシュ116のルックアップがミスした場合、プロセッサP1は、スヌープ要求キャッシュ116内のエントリを、P1の格納データに関連付けられたグラニュールに割り当て、P2のL1キャッシュ108内の対応する任意のライン(すなわち、グラニュール)を無効にするために、プロセッサP2へスヌープ・キル要求を送る(ステップ3)。その後プロセッサP2がグラニュールを読み取った場合、P2は、自身のL1キャッシュ108内でミスし、L2キャッシュ110をアクセスさせ、データの最新バージョンがP2へ戻されるであろう。
その後プロセッサP1が共有データの同じグラニュールを更新した場合、P1は再びL2キャッシュ110へのライトスルー(ステップ1)を実行するであろう。P1は更に、スヌープ要求キャッシュ116のルックアップ(ステップ2)を実行するであろう。このとき、スヌープ要求キャッシュ116のルックアップはヒットするであろう。それに応じて、プロセッサP1は、プロセッサP2へのスヌープ・キル要求を抑制する(ステップ3が実行されない)。スヌープ要求キャッシュ116内の、それが書き込んでいるグラニュールに対応するエントリが存在することは、前のスヌープ・キル要求が、P2のL1キャッシュ108内の対応するラインを既に無効にしており、P2によるグラニュールの任意の読取りは、L2キャッシュ110へアクセスさせられるであろうことを、プロセッサP1に保証する。従って、スヌープ・キル要求は、キャッシュ・コヒーレンスのために必ずしも必要ではなく、安全に抑制されうる。
しかし、プロセッサP1がスヌープ要求キャッシュ116内のエントリを割り当てた後、プロセッサP2は、L2キャッシュ110内の同じグラニュールからデータを読み取り、自身の対応するL1キャッシュ・ラインの状態を有効に変更することができる。この場合、プロセッサP1が新たな値をグラニュールへ書き込むと、プロセッサP2のL1キャッシュとL2キャッシュとに異なる値を残すことになるので、プロセッサP1は、プロセッサP2へのスヌープ・キル要求を抑制してはならない。プロセッサP1によって発行されたスヌープ・キルがプロセッサP2へ到達する(すなわち、抑制されない)ことを「可能とする」ために、ステップ4においてグラニュールを読み取ると、プロセッサP2は、ステップ5において、スヌープ要求キャッシュ116内のグラニュールにルックアップを実行する。このルックアップがヒットした場合、プロセッサP2は、ヒットしているスヌープ要求キャッシュ・エントリを無効にする。その後プロセッサP1がグラニュールへ書き込んだ場合、P1は、(スヌープ要求キャッシュ116内でミスすることによって)新たなスヌープ・キル要求をプロセッサP2へ発行するであろう。このように、プロセッサP1が、必要最低限の数のスヌープ・キル要求を発行することによって、2つのL1キャッシュ104、108は、プロセッサP1の書込み及びプロセッサP2の読取りのためのコヒーレンスを維持する。
一方、プロセッサP2が共有グラニュールを書き込んだ場合、P2は、L2キャッシュ110へのライトスルーを必ずしなければならない。しかし、スヌープ要求キャッシュ116のルックアップの実行中、P2は、プロセッサP1が前にグラニュールを書き込んだ時に割り当てられたエントリにヒットしうる。この場合、プロセッサP1へのスヌープ・キル要求の抑制は、P1のL1キャッシュ104内の古い値を残すことになり、結果として非コヒーレントなL1キャッシュ104、108をもたらす。従って、1つの実施形態において、スヌープ要求キャッシュ116のエントリを割り当てると、L2キャッシュ110へのライトスルーを実行しているプロセッサ102、106は、エントリ内に識別子を含む。その後書き込むと、プロセッサ102、106は、スヌープ要求キャッシュ116内のヒットしているエントリがプロセッサの識別子を含む場合、スヌープ・キル要求を抑制するだけでよい。同様に、グラニュールを読み取るとスヌープ要求キャッシュ116のルックアップを実行する場合、プロセッサ102、106は、ヒットしているエントリが異なるプロセッサの識別子を含む場合、そのエントリを無効にするだけでよい。1つの実施形態において、各キャッシュ116のエントリは、データを共有することができる、システム内の各プロセッサのための識別フラグを含み、プロセッサは、キャッシュがヒットすると必要に応じて識別フラグを検査し、設定あるいはクリアする。
スヌープ要求キャッシュ116は、当該技術において知られている任意のキャッシュ構成あるいは結合の程度を想定することができる。スヌープ要求キャッシュ116はまた、当該技術において知られている任意のキャッシュ要素置換ストラテジーを用いることができる。スヌープ要求キャッシュ116は、共有データを書き込んでいるプロセッサ102、106がスヌープ要求キャッシュ116内でヒットし、1つ又は複数の他のプロセッサ102、106へのスヌープ・キル要求を抑制した場合、性能利益を提供する。しかし、利用可能なキャッシュ116の空間を超える数の有効なエントリによって、有効なスヌープ要求キャッシュ116の要素が置き換えられた場合、誤った動作あるいはキャッシュの非コヒーレンスは生じない。最悪でも、対応するL1キャッシュ・ラインが既に無効であるプロセッサ102、106へ、後続のスヌープ・キル要求が発行されうる。
1つ又は複数の実施形態において、スヌープ要求キャッシュ116のエントリへのタグが、L1キャッシュ104、108内のタグと同様に、有効ビット及びグラニュール・アドレスの最上位ビットから形成される。1つの実施形態において、スヌープ要求キャッシュ116のエントリ内に格納されたデータ又は「ライン」は単に、そのエントリに割り当てられたプロセッサ102、106(すなわち、スヌープ・キル要求を発行しているプロセッサ102、106)のユニークな識別子であり、例えば、データを共有することができる、システム100内の各プロセッサのための識別フラグを備えることができる。別の実施形態において、ソース・プロセッサ識別子は、それ自体がタグ内に組み込まれることができ、そのためプロセッサ102、106は、共有データの格納に従って、キャッシュ・ルックアップにおいて自身のエントリに対してヒットするのみであろう。この場合、スヌープ要求キャッシュ116は単に、ヒットあるいはミスを示すコンテンツ・アドレス指定可能メモリ(CAM)構成であり、データを格納している対応するRAM要素を伴わない。共有データのロードに従って、スヌープ要求キャッシュ116のルックアップを実行した場合、他方のプロセッサの識別子が用いられなければならないことを留意されたい。
別の実施形態において、ソース・プロセッサ識別子は省略されることができ、各ターゲット・プロセッサ、すなわち、スヌープ・キル要求が送られた各プロセッサ102、106の識別子が、各スヌープ要求キャッシュ116のエントリ内に格納される。これら識別情報は、データを共有することができる、システム100内の各プロセッサのための識別フラグを備えることができる。この実施形態において、共有データ・グラニュールへ書き込むと、スヌープ要求キャッシュ116内でヒットしているプロセッサ102、106は、識別フラグを検査し、識別フラグが設定されている各プロセッサへのスヌープ・キル要求を抑制する。プロセッサ102、106は、ヒットしているエントリ内での識別フラグがクリアされた他方のプロセッサの各々へスヌープ・キル要求を送り、その後、ターゲット・プロセッサのフラグを設定する。共有データ・グラニュールを読み取ると、スヌープ要求キャッシュ116内でヒットしているプロセッサ102、106は、エントリ全体を無効にする代わりに、自身の識別フラグをクリアし、自身に向けられるはずのスヌープ・キル要求の可能性をクリアするが、対応するキャッシュ・ラインが無効なままである他方のプロセッサへ送ることを未だ妨げられる。
L1キャッシュ204を有するプロセッサP1 202、L1キャッシュ208を有するプロセッサP2 206、及びL1キャッシュ212を有するプロセッサP3 210を含むコンピュータ・システム200を示す図2に関連して、別の実施形態が説明される。各L1キャッシュ204、208、212は、システム・バス213を介してメイン・メモリ214に接続する。図2において明らかであるように、本明細書における実施形態は何れも、L2キャッシュの存在の有無や、メモリ階層のその他任意の局面に依存せず、またそれらを必要としないことを留意されたい。各プロセッサ202、206、210に関連付けられているのは、共有データにアクセスすることができる、システム200内の(データ・キャッシュを有する)他のプロセッサ202、206、210各々に専用のスヌープ要求キャッシュ216、218、220、222、224、226である。例えば、プロセッサP1に関連付けられているのは、プロセッサP2専用のスヌープ要求キャッシュ216と、プロセッサP3専用のスヌープ要求キャッシュ218である。同様に、プロセッサP2に関連付けられているのは、それぞれプロセッサP1及びP3専用であるスヌープ要求キャッシュ220、222である。そして、それぞれプロセッサP1及びP2専用であるスヌープ要求キャッシュ224、226が、プロセッサP3に関連付けられている。1つの実施形態において、スヌープ要求キャッシュ216、218、220、222、224、226は、CAM構成のみであり、データ・ラインを含まない。
スヌープ要求キャッシュの動作が、図2内の典型的な一連のステップを用いて図示される。ステップ1において、プロセッサP1は、共有データ・グラニュールへ書き込む。データ属性が、P1のL1キャッシュ204にメモリ214へのライトスルーを促す。プロセッサP1は、ステップ2において、関連付けられたスヌープ要求キャッシュ両方、すなわち、プロセッサP2専用のスヌープ要求キャッシュ216と、プロセッサP3専用のスヌープ要求キャッシュ218との両方においてルックアップを実行する。この例において、P2のスヌープ要求キャッシュ216がヒットし、スヌープ要求キャッシュのエントリが新たな割当てによって上書きされていない又は無効にされていないP2へのスヌープ・キル要求をP1が以前に送ったことを示す。これは、P2のL2キャッシュ208内の対応するラインが(未だ)無効とされており、プロセッサP1が、ステップ3aの破線に示されるようなプロセッサP2へのスヌープ・キル要求を抑制することを意味する。
この例において、P1に関連付けられ、P3専用であるスヌープ要求キャッシュ218のルックアップがミスする。それに応じて、プロセッサP1は、P3のスヌープ要求キャッシュ218内のグラニュールにエントリを割り当て、ステップ3bにおいて、スヌープ・キル要求をプロセッサP3へ発行する。このスヌープ・キルは、P3のL1キャッシュ内の対応するラインを無効にし、P3に、グラニュールからの次の読取りにおいてメイン・メモリへ行かせ、(P1の書込みによって更新されたような)最新データを取得させる。
その後、ステップ4に示されるように、プロセッサP3は、データ・グラニュールから読み取る。この読取りは、P3自身のL1キャッシュ212内で(そのラインがP1のスヌープ・キルによって無効にされたので)ミスし、メイン・メモリ214からグラニュールを取得する。ステップ5において、プロセッサP3は、P3専用のスヌープ要求キャッシュ全てにおいて、すなわち、P1のP3専用スヌープ要求キャッシュ218と、P2のP3専用スヌープ要求キャッシュ222との両方において、ルックアップを実行する。キャッシュ218、222の何れか(あるいは両方)がヒットすると、プロセッサP3は、プロセッサP1又はP2の何れかが共有データ・グラニュールへ新たな値を書き込んだ場合、対応するプロセッサP1又はP2がP3へのスヌープ・キル要求を抑制することを防ぐために、ヒットしているエントリを無効にする。
この具体的な例から一般化すると、各プロセッサに関連付けられているのが、データを共有する他のプロセッサ各々専用の別々のスヌープ要求キャッシュである、図2に示されたような実施形態において、共有データ・グラニュールへ書き込んでいるプロセッサは、書き込んでいるプロセッサに関連付けられた各スヌープ要求キャッシュ内のルックアップを実行する。ミスした各々について、プロセッサは、スヌープ要求キャッシュ内のエントリを割り当て、スヌープ・キル要求を、ミスしているスヌープ要求キャッシュの専用であるプロセッサへ送る。プロセッサは、専用キャッシュがヒットしている任意のプロセッサへのスヌープ・キル要求を抑制する。共有データ・グラニュールを読み取ると、プロセッサは、自身専用の(かつ、他のプロセッサに関連付けられた)スヌープ要求キャッシュ全てにおいてルックアップを実行し、ヒットしている任意のエントリを無効にする。このように、L1キャッシュ204、208、212は、共有属性を有するデータのためのコヒーレンスを維持する。
本発明の実施形態は、本明細書において、各々がL1キャッシュを有するプロセッサに関連して説明されたが、コンピュータ・システム10内の他の回路あるいは論理エンティティ/機能エンティティが、キャッシュ・コヒーレンス・プロトコルに参加しうる。図3は、図2の実施形態と同様の、キャッシュ・コヒーレンス・プロトコルに参加する、プロセッサでないスヌープ・エンティティを有する実施形態を示す。システム300は、L1キャッシュ304を有するプロセッサP1 302と、L1キャッシュ308を有するプロセッサP2 306とを含む。
システムは更に、直接メモリ・アクセス(DMA)コントローラ310を含む。当該技術において知られているように、DMAコントローラ310は、ソース(メモリ又は周辺デバイス)から宛先(メモリ又は周辺デバイス)へデータのブロックを自律的に移動させるように動作する、プロセッサの回路である。システム300において、プロセッサ302、306、及びDMAコントローラ310は、システム・バス312を介してメイン・メモリ314へアクセスする。更にDMAコントローラ310は、周辺デバイス316のデータ・ポートから直接データを読み書きすることができる。DMAコントローラ310が、共有メモリへ書き込むようにプロセッサによってプログラムされている場合、DMAコントローラ310は、L1データ・キャッシュ304、308のコヒーレンスを確実にするために、キャッシュ・コヒーレンス・プロトコルに参加しなければならない。
DMAコントローラ310は、キャッシュ・コヒーレンス・プロトコルに参加するので、スヌープ・エンティティである。本明細書で用いられるように、「スヌープ・エンティティ」という用語は、キャッシュ・コヒーレンス・プロトコルに従ってスヌープ要求を発行することができる任意のシステム・エンティティを称する。特に、データ・キャッシュを有するプロセッサがスヌープ・エンティティの1つのタイプであるが、「スヌープ・エンティティ」という用語は、データ・キャッシュを有するプロセッサ以外のシステム・エンティティも包含する。プロセッサ302、306及びDMA310以外のスヌープ・エンティティの限定されない例は、数値演算コプロセッサあるいはグラフィックス・コプロセッサ、例えばMPEG符号器/復号器のような圧縮/解凍エンジン、又はメモリ314内の共有データにアクセスすることができるその他任意のシステム・バス・マスタを含む。
各スヌープ・エンティティ302、306、310に関連付けられているのは、そのスヌープ・エンティティがデータを共有することができる、(データ・キャッシュを有する)各プロセッサ専用のスヌープ要求キャッシュである。特に、スヌープ要求キャッシュ318は、プロセッサP1に関連付けられ、プロセッサP2専用である。同様に、スヌープ要求キャッシュ320は、プロセッサP2に関連付けられ、プロセッサP1専用である。DMAコントローラ310に関連付けられているのは、プロセッサP1専用のスヌープ要求キャッシュ322と、プロセッサP2専用のスヌープ要求キャッシュ324との2つのスヌープ要求キャッシュである。
キャッシュ・コヒーレンス処理が、図3に示される。DMAコントローラ310が、メイン・メモリ314内の共有データ・グラニュールへ書き込む(ステップ1)。プロセッサP1及びP2の何れか又は両方が、自身のL1キャッシュ304、308内にデータ・グラニュールを含むことができるので、DMAコントローラ310は従来どおり、各プロセッサP1、P2へスヌープ・キル要求を送るであろう。しかし、まずDMAコントローラ310は、自身の関連付けられたスヌープ要求キャッシュ両方、すなわち、プロセッサP1専用のキャッシュ322及びプロセッサP2専用のキャッシュ324内のルックアップを実行する(ステップ2)。この例において、プロセッサP1専用のキャッシュ322内のルックアップがミスし、プロセッサP2専用のキャッシュ324内のルックアップがヒットする。ミスに応答して、DMAコントローラ310は、プロセッサP1へスヌープ・キル要求を送り(ステップ3a)、プロセッサP1専用のスヌープ要求キャッシュ322内のデータ・グラニュールにエントリを割り当てる。ヒットに応答して、DMAコントローラ310は、もしヒットしなければプロセッサP2へ送られたであろうスヌープ・キル要求を抑制する(ステップ3b)。
その後、プロセッサP2は、メモリ314内の共有データ・グラニュールから読み取る(ステップ4)。全てのスヌープ・エンティティからのスヌープ・キル要求が自身へ向けられることを可能とするために、プロセッサP2は、別のスヌープ・エンティティに関連付けられ、プロセッサP2(すなわち、自身)専用の各キャッシュ318、324内のルックアップを実行する。特にプロセッサP2は、プロセッサP1に関連付けられプロセッサP2専用のスヌープ要求キャッシュ318内のキャッシュ・ルックアップを実行し、キャッシュがヒットした場合、ヒットしている任意のエントリを無効にする。同様にプロセッサP2は、DMAコントローラ310に関連付けられプロセッサP2専用のスヌープ要求キャッシュ324内のキャッシュ・ルックアップを実行し、キャッシュがヒットした場合、ヒットしている任意のエントリを無効にする。この実施形態において、スヌープ要求キャッシュ318、320、322、324は、純粋なCAM構成であり、キャッシュ・エントリ内のプロセッサ識別フラグは必要ない。
スヌープ・エンティティ302、306、310の何れも、DMAコントローラ310専用の任意のスヌープ要求キャッシュに関連付けられていないことを留意されたい。DMAコントローラ310はデータ・キャッシュを有さないので、キャッシュ・ラインを無効にするために、DMAコントローラ310へスヌープ・キル要求を向ける別のスヌープ・エンティティは必要ない。更に、DMAコントローラ310は、共有データをメモリ314へ書き込み、共有データ・グラニュールから読み取るとスヌープ・キル要求を発行することによって、キャッシュ・コヒーレンス・プロトコルに参加するが、DMAコントローラ310は、ヒットしているエントリを無効にする目的のために任意のスヌープ要求キャッシュのルックアップを実行することはないことを留意されたい。これは、共有データへ書き込むと、別のスヌープ・エンティティにキャッシュ・ラインを無効にさせなければならない任意のキャッシュが、DMAコントローラ310に存在しないためである。
また別の実施形態が、L1キャッシュ404を有するP1 402とL1キャッシュ408を有するP2 406との2つのプロセッサを含むコンピュータ・システム400を示す図4を用いて説明される。プロセッサP1及びP2は、システム・バス410を介してメイン・メモリ412に接続する。単一のスヌープ要求キャッシュ414がプロセッサP1に関連付けられ、別のスヌープ要求キャッシュ416がプロセッサP2に関連付けられる。各スヌープ要求キャッシュ414、416内の各エントリは、関連付けられたプロセッサがスヌープ要求を向けることができる異なるプロセッサを識別するフィールド又はフラグを含む。例えば、スヌープ要求キャッシュ414内のエントリは、プロセッサP2の識別フラグ、及びP1がデータを共有することができる、システム400内のその他任意のプロセッサ(図示せず)の識別フラグを含む。
この実施形態の動作が図4に示される。共有属性を有するデータ・グラニュールへ書き込むと、プロセッサP1は、自身のL1キャッシュ404内でミスし、メイン・メモリ412へライトスルーする(ステップ1)。プロセッサP1は、自身に関連付けられたスヌープ要求キャッシュ414内のキャッシュ・ルックアップを実行する(ステップ2)。ヒットに応答して、プロセッサP1は、ヒットしているエントリ内のプロセッサ識別フラグを検査する。プロセッサP1は、自身がデータを共有し、ヒットしているエントリ内に識別フラグが設定されている任意のプロセッサ(例えば、ステップ3の破線によって示されるP2)へスヌープ要求を送ることを抑制する。プロセッサ識別フラグがクリアされ、プロセッサP1が、示されたプロセッサとデータ・グラニュールを共有する場合、プロセッサP1は、そのプロセッサへスヌープ要求を送り、ヒットしているスヌープ要求キャッシュ414のエントリ内にターゲット・プロセッサの識別フラグを設定する。スヌープ要求キャッシュ414のルックアップがミスした場合、プロセッサP1はエントリを割り当て、自身がスヌープ・キル要求を送る各プロセッサの識別フラグを設定する。
その他任意のプロセッサが、共有データ・グラニュールからのロードを実行し、自身のL1キャッシュ内でミスし、メイン・メモリからデータを取得した場合、そのプロセッサは、自身がデータ・グラニュールを共有する各プロセッサに関連付けられたスヌープ要求キャッシュ414、416内のキャッシュ・ルックアップを実行する。例えばプロセッサP2は、P1と共有するグラニュールから、メモリ・データを読み取る(ステップ4)。P2は、P1スヌープ要求キャッシュ414内のルックアップを実行し(ステップ5)、ヒットしている任意のエントリを検査する。P2の識別フラグがヒットしているエントリ内に設定されている場合、プロセッサP2は、(その他任意のプロセッサの識別フラグではなく)自身の識別フラグをクリアし、その後プロセッサP1が共有データ・グラニュールへ書き込んだ場合、P1がP2へスヌープ・キル要求を送ることを可能にする。P2の識別フラグがクリアされた、ヒットしているエントリは、キャッシュ414のミスとして扱われる(P2は動作しない)。
一般に、図4に示された、各プロセッサが、自身に関連付けられた単一のスヌープ要求キャッシュを有する実施形態において、各プロセッサは、共有データを書き込むと、自身に関連付けられたスヌープ要求キャッシュ内でのみルックアップを実行し、必要であればキャッシュ・エントリを割り当て、自身がスヌープ要求を送るプロセッサ全ての識別フラグを設定する。共有データを読み取ると、各プロセッサは、自身がデータを共有するその他全てのプロセッサに関連付けられたスヌープ要求キャッシュ内のルックアップを実行し、ヒットしている任意のエントリから自身の識別フラグをクリアする。
図5は、1つ又は複数の実施形態に従う、データ・キャッシュ・スヌープ要求を発行する方法を示す。方法の1つの局面は、ブロック500において、共有属性を有するデータ・グラニュールへスヌープ・エンティティが書き込むと「開始」する。スヌープ・エンティティがプロセッサである場合、属性(例えば、共有及び/又はライトスルー)は、メモリ階層の下位レベルへのL1キャッシュのライトスルーを促す。ブロック502において、スヌープ・エンティティは、自身に関連付けられた1つ又は複数のスヌープ要求キャッシュ内の共有データ・グラニュールにルックアップを実行する。ブロック504において、スヌープ要求キャッシュ内で共有データ・グラニュールがヒットした場合(かつ、いくつかの実施形態において、スヌープ・エンティティがデータを共有するプロセッサの識別フラグが、ヒットしているキャッシュ・エントリ内に設定されている場合)、スヌープ・エンティティは、1つ又は複数のプロセッサのためのデータ・キャッシュ・スヌープ要求を抑制し、継続する。図5の目的のために、その後ブロック500において別の共有データ・グラニュールを書き込むことによって、ブロック510において共有データ・グラニュールを読み取ることによって、又はこの方法に直接関係のないその他何らかのタスクを実行することによって、スヌープ・エンティティは「継続」することができる。共有データ・グラニュールがスヌープ要求キャッシュ内でミスした場合(又は、いくつかの実施形態において、ヒットしたが、ターゲット・プロセッサ識別フラグがクリアされている場合)、スヌープ・エンティティは、ブロック506において、スヌープ要求キャッシュ内のグラニュールにエントリを割り当て(又は、ターゲット・プロセッサ識別フラグを設定し)、ブロック508において、データを共有しているプロセッサへデータ・キャッシュ・スヌープ要求を送り、継続する。
方法の別の局面は、スヌープ・エンティティが、共有属性を有するデータ・グラニュールから読み取ると「開始」する。スヌープ・エンティティがプロセッサである場合、ブロック510において、プロセッサは自身のL1キャッシュ内でミスし、メモリ階層の下位レベルから共有データ・グラニュールを取得する。ブロック512において、プロセッサは、自身専用の(又は、エントリが自身の識別フラグを含む)1つ又は複数のスヌープ要求キャッシュ内のグラニュールにルックアップを実行する。ブロック514において、ルックアップがスヌープ要求キャッシュ内でミスした場合(又は、いくつかの実施形態において、ルックアップはヒットしたが、ヒットしているエントリ内のプロセッサの識別フラグがクリアされている場合)、プロセッサは継続する。ブロック514において、ルックアップがスヌープ要求キャッシュ内でヒットした場合(かつ、いくつかの実施形態において、ヒットしているエントリ内にプロセッサの識別フラグが設定されている場合)、ブロック516において、プロセッサは、ヒットしているエントリを無効にし(又は、いくつかの実施形態において、自身の識別フラグをクリアし)、その後継続する。
スヌープ・エンティティがL1キャッシュを有するプロセッサでない場合、例えばDMAコントローラである場合、データ・グラニュールから読み取ると、エントリを検査し無効にする(又は自身の識別フラグをクリアする)ためにスヌープ要求キャッシュにアクセスする必要はない。グラニュールはキャッシュされていないので、他のエンティティがそのグラニュールへ書き込んだ場合、別のスヌープ・エンティティがキャッシュ・ラインのキャッシュ状態を無効にする、又は変更する可能性を排除する必要はない。この場合、方法は、図5内の破線矢印によって示されるように、ブロック510においてグラニュールから読み取った後継続する。すなわち、方法は、読取りを実行するスヌープ・エンティティがデータ・キャッシュを有するプロセッサであるか否かによって、共有データの読取りに関して異なる。
本明細書で説明された1つ又は複数の実施形態に従って、マルチプロセッサ・コンピュータ・システムにおける性能は、共有属性を有するデータのためのL1キャッシュ・コヒーレンスを保ちながら、余分なスヌープ要求の実行に関連する性能低下を回避することによって改善される。様々な実施形態が、この改善された性能を、当該技術において知られている二重タグのアプローチと比較して劇的に低減されたコストのシリコン領域で達成する。スヌープ要求キャッシュは、例えばL1キャッシュを完全に含む同じL2キャッシュによって支援されるプロセッサのためのソフトウェア定義のスヌーパ・グループ内のプロセッサのような、他の周知のスヌープ要求抑制技術を用いた実施形態に対する、改善された性能の利益を提供し、またそれらと両立できる。スヌープ要求キャッシュは、格納集合と両立でき、そのような実施形態では、プロセッサによって実行される格納動作の数が低減されることにより、低減されたサイズであることができる。
上記説明はライトスルーL1キャッシュと、スヌープ・キル要求の抑制との観点から示されたが、当業者は、その他のキャッシュ書込みアルゴリズム及び付随のスヌープ・プロトコルが、本明細書で説明され特許請求された発明技術、回路、及び方法を有利に用いることができることを理解するであろう。例えば、MESI(修正、排他、共有、無効)キャッシュ・プロトコルにおいて、スヌープ要求は、ラインのキャッシュ状態を排他から共有へ変更するようにプロセッサに指示することができる。
本発明は、本発明の主要な特徴から逸脱することなく、本明細書に具体的に記載された方法以外の方法によって実行されうる。記載された実施形態は、全ての局面において、限定的ではなく例示的であるとして解釈されなければならず、特許請求の範囲と均等な範囲及び意味において生じる変更は全て、特許請求の範囲に包含されるように意図されている。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1]
スヌープ・エンティティによって、データ・キャッシュを有するターゲット・プロセッサへのデータ・キャッシュ・スヌープ要求をフィルタする方法であって、
データ格納動作に応答してスヌープ要求キャッシュのルックアップを実行することと、
ヒットに応答して前記データ・キャッシュ・スヌープ要求を抑制することと
を備えた方法。
[C2]
前記ヒットに応答してデータ・キャッシュ・スヌープ要求を抑制することは更に、ヒットしているキャッシュ・エントリ内の、前記スヌープ・エンティティの識別に応答して、前記データ・キャッシュ・スヌープ要求を抑制することを更に備えたC1に記載の方法。
[C3]
前記ヒットに応答してデータ・キャッシュ・スヌープ要求を抑制することは更に、ヒットしているキャッシュ・エントリ内の、前記ターゲット・プロセッサの識別に応答して、前記データ・キャッシュ・スヌープ要求を抑制することを更に備えたC1に記載の方法。
[C4]
ミスに応答して前記スヌープ要求キャッシュ内のエントリを割り当てることを更に備えたC1に記載の方法。
[C5]
ミスに応答して、前記データ・キャッシュ・スヌープ要求を前記ターゲット・プロセッサへ転送することを更に備えたC4に記載の方法。
[C6]
前記スヌープ要求キャッシュ内のエントリを割り当てることは更に、前記スヌープ要求キャッシュ内に、前記スヌープ・エンティティの識別情報を含めることを備えたC4に記載の方法。
[C7]
前記スヌープ要求キャッシュ内のエントリを割り当てることは更に、前記スヌープ要求キャッシュ内に、前記ターゲット・プロセッサの識別情報を含めることを備えたC4に記載の方法。
[C8]
ヒットに応答して、前記データ・キャッシュ・スヌープ要求を前記ターゲット・プロセッサへ転送することであって、前記ターゲット・プロセッサの識別情報が前記ヒットしているキャッシュ・エントリ内に設定されていないことと、
前記ターゲット・プロセッサの識別情報を前記ヒットしているキャッシュ・エントリ内に設定することと
を更に備えたC1に記載の方法。
[C9]
前記スヌープ・エンティティは、データ・キャッシュを有するプロセッサであり、データ・ロード動作に応答して、スヌープ要求キャッシュのルックアップを実行することを更に備えたC1に記載の方法。
[C10]
ヒットに応答して、前記ヒットしているスヌープ要求キャッシュ・エントリを無効にすることを更に備えたC9に記載の方法。
[C11]
ヒットに応答して、前記プロセッサの識別情報を前記ヒットしているキャッシュ・エントリから除去することを更に備えたC9に記載の方法。
[C12]
前記スヌープ要求キャッシュのルックアップは、予め定められた属性を有するデータのデータ格納動作のためにのみ実行されるC1に記載の方法。
[C13]
前記予め定められた属性は、前記データが共有されることであるC12に記載の方法。
[C14]
前記データ・キャッシュ・スヌープ要求は、前記ターゲット・プロセッサのデータ・キャッシュ内のラインのキャッシュ状態を変更するように動作可能であるC1に記載の方法。
[C15]
前記データ・キャッシュ・スヌープ要求は、前記ターゲット・プロセッサのデータ・キャッシュからのラインを無効にするように動作可能なスヌープ・キル要求であるC14に記載の方法。
[C16]
メモリと、
データ・キャッシュを有する第1のプロセッサと、
予め定められた属性を有するデータをメモリへ書き込むと、データ・キャッシュ・スヌープ要求を前記第1のプロセッサへ向けるように動作可能なスヌープ・エンティティと、
各有効なエントリが、前のデータ・キャッシュ・スヌープ要求を示す少なくとも1つのエントリを備えた少なくとも1つのスヌープ要求キャッシュとを備え、
前記スヌープ・エンティティは更に、データ・キャッシュ・スヌープ要求を前記第1のプロセッサへ向ける前に、スヌープ要求キャッシュのルックアップを実行し、ヒットに応答して、前記データ・キャッシュ・スヌープ要求を抑制するように動作可能であるコンピュータ・システム。
[C17]
前記スヌープ・エンティティは更に、ミスに応答して、前記スヌープ要求キャッシュ内の新たなエントリを割り当てるように動作可能であるC16に記載のシステム。
[C18]
前記スヌープ・エンティティは更に、ヒットしているキャッシュ・エントリ内の、前記スヌープ・エンティティの識別に応答して、前記データ・キャッシュ・スヌープ要求を抑制するように動作可能であるC16に記載のシステム。
[C19]
前記スヌープ・エンティティは更に、ヒットしているキャッシュ・エントリ内の、前記第1のプロセッサの識別に応答して、前記データ・キャッシュ・スヌープ要求を抑制するように動作可能であるC16に記載のシステム。
[C20]
前記スヌープ・エンティティは更に、前記第1のプロセッサの識別情報が設定されていないヒットしているエントリ内に、前記第1のプロセッサの識別情報を設定するように動作可能であるC19に記載のシステム。
[C21]
前記予め定められた属性は、共有データを示すC16に記載のシステム。
[C22]
前記第1のプロセッサは更に、予め定められた属性を有するデータをメモリから読み取ると、スヌープ要求キャッシュのルックアップを実行し、ヒットに応答して、ヒットしているスヌープ要求キャッシュ・エントリを変更するように動作可能であるC16に記載のシステム。
[C23]
前記第1のプロセッサは、前記ヒットしているスヌープ要求キャッシュ・エントリを無効にするように動作可能であるC22に記載のシステム。
[C24]
前記第1のプロセッサは、前記ヒットしているスヌープ要求キャッシュ・エントリから、自身の識別情報をクリアするように動作可能であるC22に記載のシステム。
[C25]
前記少なくとも1つのスヌープ要求キャッシュは、予め定められた属性を有するデータをメモリへ書き込むと、前記第1のプロセッサと前記スヌープ・エンティティとの両方がルックアップを実行する、単一のスヌープ要求キャッシュを備えたC16に記載のシステム。
[C26]
前記少なくとも1つのスヌープ要求キャッシュは、
予め定められた属性を有するデータをメモリへ書き込むと、前記第1のプロセッサがルックアップを実行するように動作可能な第1のスヌープ要求キャッシュと、
予め定められた属性を有するデータをメモリへ書き込むと、前記スヌープ・エンティティがルックアップを実行するように動作可能な第2のスヌープ要求キャッシュと
を備えたC16に記載のシステム。
[C27]
前記第1のプロセッサは更に、予め定められた属性を有するデータをメモリから読み取ると、前記第2のスヌープ要求キャッシュ内のルックアップを実行するように動作可能であるC26に記載のシステム。
[C28]
データ・キャッシュを有する第2のプロセッサと、
予め定められた属性を有するデータをメモリへ書き込むと、前記スヌープ・エンティティがルックアップを実行するように動作可能な第3のスヌープ要求キャッシュと
を更に備えたC26に記載のシステム。

Claims (43)

  1. スヌープ・エンティティによって、データ・キャッシュを有するターゲット・プロセッサへのデータ・キャッシュ・スヌープ要求をフィルタする方法であって、
    前記データ・キャッシュ・スヌープ要求が前記ターゲット・プロセッサへ送信される前に、データ格納動作に応答してスヌープ要求キャッシュのルックアップを実行することと、
    ヒットに応答して前記データ・キャッシュ・スヌープ要求を抑制することと
    を備え、
    前記データ・キャッシュ・スヌープ要求を抑制することは、前記データ・キャッシュ・スヌープ要求を前記ターゲット・プロセッサへ送信することを実行しないことを備える、方法。
  2. 前記ヒットに応答してデータ・キャッシュ・スヌープ要求を抑制することは更に、ヒットしているキャッシュ・エントリ内の、前記スヌープ・エンティティの識別に応答して、前記データ・キャッシュ・スヌープ要求を抑制することを更に備えた請求項1に記載の方法。
  3. 前記ヒットに応答してデータ・キャッシュ・スヌープ要求を抑制することは更に、ヒットしているキャッシュ・エントリ内の、前記ターゲット・プロセッサの識別に応答して、前記データ・キャッシュ・スヌープ要求を抑制することを更に備えた請求項1に記載の方法。
  4. ミスに応答して前記スヌープ要求キャッシュ内のエントリを割り当てることを更に備えた請求項1に記載の方法。
  5. ミスに応答して、前記データ・キャッシュ・スヌープ要求を前記ターゲット・プロセッサへ転送することを更に備えた請求項4に記載の方法。
  6. 前記スヌープ要求キャッシュ内のエントリを割り当てることは更に、前記スヌープ要求キャッシュ内に、前記スヌープ・エンティティの識別情報を含めることを備えた請求項4に記載の方法。
  7. 前記スヌープ要求キャッシュ内のエントリを割り当てることは更に、前記スヌープ要求キャッシュ内に、前記ターゲット・プロセッサの識別情報を含めることを備えた請求項4に記載の方法。
  8. ヒットに応答して、前記データ・キャッシュ・スヌープ要求を前記ターゲット・プロセッサへ転送することであって、前記ターゲット・プロセッサの識別情報が前記ヒットしているキャッシュ・エントリ内に設定されていないことと、
    前記ターゲット・プロセッサの識別情報を前記ヒットしているキャッシュ・エントリ内に設定することと
    を更に備えた請求項1に記載の方法。
  9. 前記スヌープ・エンティティは、データ・キャッシュを有するプロセッサであり、データ・ロード動作に応答して、スヌープ要求キャッシュのルックアップを実行することを更に備えた請求項1に記載の方法。
  10. ヒットに応答して、前記ヒットしているスヌープ要求キャッシュ・エントリを無効にすることを更に備えた請求項9に記載の方法。
  11. ヒットに応答して、前記プロセッサの識別情報を前記ヒットしているキャッシュ・エントリから除去することを更に備えた請求項9に記載の方法。
  12. 前記スヌープ要求キャッシュのルックアップは、予め定められた属性を有するデータのデータ格納動作のためにのみ実行される請求項1に記載の方法。
  13. 前記予め定められた属性は、前記データが共有されることである請求項12に記載の方法。
  14. 前記データ・キャッシュ・スヌープ要求は、前記ターゲット・プロセッサのデータ・キャッシュ内のラインのキャッシュ状態を変更するように動作可能である請求項1に記載の方法。
  15. 前記データ・キャッシュ・スヌープ要求は、前記ターゲット・プロセッサのデータ・キャッシュからのラインを無効にするように動作可能なスヌープ・キル要求である請求項14に記載の方法。
  16. メモリと、
    データ・キャッシュを有する第1のプロセッサと、
    予め定められた属性を有するデータをメモリへ書き込むと、データ・キャッシュ・スヌープ要求を前記第1のプロセッサへ向けるように動作可能なスヌープ・エンティティと、
    各有効なエントリが、前のデータ・キャッシュ・スヌープ要求を示す少なくとも1つのエントリを備えた少なくとも1つのスヌープ要求キャッシュとを備え、
    前記スヌープ・エンティティは更に、データ・キャッシュ・スヌープ要求を前記第1のプロセッサへ送信する前に、スヌープ要求キャッシュのルックアップを実行し、前記データ・キャッシュ・スヌープ要求を前記第1のプロセッサへ送信することを実行しないように構成されることによって、ヒットに応答して、前記データ・キャッシュ・スヌープ要求を抑制するように動作可能であるコンピュータ・システム。
  17. 前記スヌープ・エンティティは更に、ミスに応答して、前記スヌープ要求キャッシュ内の新たなエントリを割り当てるように動作可能である請求項16に記載のシステム。
  18. 前記スヌープ・エンティティは更に、ヒットしているキャッシュ・エントリ内の、前記スヌープ・エンティティの識別に応答して、前記データ・キャッシュ・スヌープ要求を抑制するように動作可能である請求項16に記載のシステム。
  19. 前記スヌープ・エンティティは更に、ヒットしているキャッシュ・エントリ内の、前記第1のプロセッサの識別に応答して、前記データ・キャッシュ・スヌープ要求を抑制するように動作可能である請求項16に記載のシステム。
  20. 前記スヌープ・エンティティは更に、前記第1のプロセッサの識別情報が設定されていないヒットしているエントリ内に、前記第1のプロセッサの識別情報を設定するように動作可能である請求項19に記載のシステム。
  21. 前記予め定められた属性は、共有データを示す請求項16に記載のシステム。
  22. 前記第1のプロセッサは更に、予め定められた属性を有するデータをメモリから読み取ると、スヌープ要求キャッシュのルックアップを実行し、ヒットに応答して、ヒットしているスヌープ要求キャッシュ・エントリを変更するように動作可能である請求項16に記載のシステム。
  23. 前記第1のプロセッサは、前記ヒットしているスヌープ要求キャッシュ・エントリを無効にするように動作可能である請求項22に記載のシステム。
  24. 前記第1のプロセッサは、前記ヒットしているスヌープ要求キャッシュ・エントリから、自身の識別情報をクリアするように動作可能である請求項22に記載のシステム。
  25. 前記少なくとも1つのスヌープ要求キャッシュは、予め定められた属性を有するデータをメモリへ書き込むと、前記第1のプロセッサと前記スヌープ・エンティティとの両方がルックアップを実行する、単一のスヌープ要求キャッシュを備えた請求項16に記載のシステム。
  26. 前記少なくとも1つのスヌープ要求キャッシュは、
    予め定められた属性を有するデータをメモリへ書き込むと、前記第1のプロセッサがルックアップを実行するように動作可能な第1のスヌープ要求キャッシュと、
    予め定められた属性を有するデータをメモリへ書き込むと、前記スヌープ・エンティティがルックアップを実行するように動作可能な第2のスヌープ要求キャッシュと
    を備えた請求項16に記載のシステム。
  27. 前記第1のプロセッサは更に、予め定められた属性を有するデータをメモリから読み取ると、前記第2のスヌープ要求キャッシュ内のルックアップを実行するように動作可能である請求項26に記載のシステム。
  28. データ・キャッシュを有する第2のプロセッサと、
    予め定められた属性を有するデータをメモリへ書き込むと、前記スヌープ・エンティティがルックアップを実行するように動作可能な第3のスヌープ要求キャッシュと
    を更に備えた請求項26に記載のシステム。
  29. スヌープ・エンティティによって、データ・キャッシュを有するターゲット・プロセッサへのデータ・キャッシュ・スヌープ要求をフィルタするためのコンピューティング・システムであって、
    前記データ・キャッシュ・スヌープ要求が前記ターゲット・プロセッサへ送信される前に、データ格納動作に応答してスヌープ要求キャッシュのルックアップを実行する手段と、
    ヒットに応答して前記データ・キャッシュ・スヌープ要求を抑制する手段と
    を備え、
    前記データ・キャッシュ・スヌープ要求を抑制する手段は、前記データ・キャッシュ・スヌープ要求を前記ターゲット・プロセッサへ送信することを実行しない手段を備える、システム。
  30. 前記ヒットに応答してデータ・キャッシュ・スヌープ要求を抑制する手段は更に、ヒットしているキャッシュ・エントリ内の、前記スヌープ・エンティティの識別に応答して、前記データ・キャッシュ・スヌープ要求を抑制する手段を更に備えた請求項29に記載のシステム。
  31. 前記ヒットに応答してデータ・キャッシュ・スヌープ要求を抑制する手段は更に、ヒットしているキャッシュ・エントリ内の、前記ターゲット・プロセッサの識別に応答して、前記データ・キャッシュ・スヌープ要求を抑制する手段を更に備えた請求項29に記載のシステム。
  32. ミスに応答して前記スヌープ要求キャッシュ内のエントリを割り当てる手段を更に備えた請求項29に記載のシステム。
  33. ミスに応答して、前記データ・キャッシュ・スヌープ要求を前記ターゲット・プロセッサへ転送する手段を更に備えた請求項32に記載のシステム。
  34. 前記スヌープ要求キャッシュ内のエントリを割り当てる手段は更に、前記スヌープ要求キャッシュ内に、前記スヌープ・エンティティの識別情報を含める手段を備えた請求項32に記載のシステム。
  35. 前記スヌープ要求キャッシュ内のエントリを割り当てる手段は更に、前記スヌープ要求キャッシュ内に、前記ターゲット・プロセッサの識別情報を含める手段を備えた請求項32に記載のシステム。
  36. ヒットに応答して、前記データ・キャッシュ・スヌープ要求を前記ターゲット・プロセッサへ転送する手段であって、前記ターゲット・プロセッサの識別情報が前記ヒットしているキャッシュ・エントリ内に設定されていない手段と、
    前記ターゲット・プロセッサの識別情報を前記ヒットしているキャッシュ・エントリ内に設定する手段と
    を更に備えた請求項29に記載のシステム。
  37. 前記スヌープ・エンティティは、データ・キャッシュを有するプロセッサであり、データ・ロード動作に応答して、スヌープ要求キャッシュのルックアップを実行する手段を更に備えた請求項29に記載のシステム。
  38. ヒットに応答して、前記ヒットしているスヌープ要求キャッシュ・エントリを無効にする手段を更に備えた請求項37に記載のシステム。
  39. ヒットに応答して、前記プロセッサの識別情報を前記ヒットしているキャッシュ・エントリから除去する手段を更に備えた請求項37に記載のシステム。
  40. 前記スヌープ要求キャッシュのルックアップを実行する手段は、予め定められた属性を有するデータのデータ格納動作のみのためのものである請求項29に記載のシステム。
  41. 前記予め定められた属性は、前記データが共有されることである請求項40に記載のシステム。
  42. 前記データ・キャッシュ・スヌープ要求は、前記ターゲット・プロセッサのデータ・キャッシュ内のラインのキャッシュ状態を変更するように動作可能である請求項29に記載のシステム。
  43. 前記データ・キャッシュ・スヌープ要求は、前記ターゲット・プロセッサのデータ・キャッシュからのラインを無効にするように動作可能なスヌープ・キル要求である請求項42に記載のシステム。
JP2009547456A 2007-01-26 2008-01-28 スヌープ要求キャッシュを用いたスヌープ・フィルタリング Expired - Fee Related JP5221565B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/627,705 2007-01-26
US11/627,705 US20080183972A1 (en) 2007-01-26 2007-01-26 Snoop Filtering Using a Snoop Request Cache
PCT/US2008/052216 WO2008092159A1 (en) 2007-01-26 2008-01-28 Snoop filtering using a snoop request cache

Publications (2)

Publication Number Publication Date
JP2010517184A JP2010517184A (ja) 2010-05-20
JP5221565B2 true JP5221565B2 (ja) 2013-06-26

Family

ID=39512520

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009547456A Expired - Fee Related JP5221565B2 (ja) 2007-01-26 2008-01-28 スヌープ要求キャッシュを用いたスヌープ・フィルタリング

Country Status (10)

Country Link
US (1) US20080183972A1 (ja)
EP (1) EP2115597A1 (ja)
JP (1) JP5221565B2 (ja)
KR (2) KR101313710B1 (ja)
CN (1) CN101601019B (ja)
BR (1) BRPI0807437A2 (ja)
CA (1) CA2674723A1 (ja)
MX (1) MX2009007940A (ja)
RU (1) RU2443011C2 (ja)
WO (1) WO2008092159A1 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8266381B2 (en) 2008-02-01 2012-09-11 International Business Machines Corporation Varying an amount of data retrieved from memory based upon an instruction hint
US8140771B2 (en) * 2008-02-01 2012-03-20 International Business Machines Corporation Partial cache line storage-modifying operation based upon a hint
US8255635B2 (en) 2008-02-01 2012-08-28 International Business Machines Corporation Claiming coherency ownership of a partial cache line of data
US8024527B2 (en) * 2008-02-01 2011-09-20 International Business Machines Corporation Partial cache line accesses based on memory access patterns
US8250307B2 (en) * 2008-02-01 2012-08-21 International Business Machines Corporation Sourcing differing amounts of prefetch data in response to data prefetch requests
US8108619B2 (en) * 2008-02-01 2012-01-31 International Business Machines Corporation Cache management for partial cache line operations
US8117401B2 (en) * 2008-02-01 2012-02-14 International Business Machines Corporation Interconnect operation indicating acceptability of partial data delivery
US8762652B2 (en) * 2008-04-30 2014-06-24 Freescale Semiconductor, Inc. Cache coherency protocol in a data processing system
US8423721B2 (en) * 2008-04-30 2013-04-16 Freescale Semiconductor, Inc. Cache coherency protocol in a data processing system
US8706974B2 (en) * 2008-04-30 2014-04-22 Freescale Semiconductor, Inc. Snoop request management in a data processing system
US9158692B2 (en) * 2008-08-12 2015-10-13 International Business Machines Corporation Cache injection directing technique
US8868847B2 (en) * 2009-03-11 2014-10-21 Apple Inc. Multi-core processor snoop filtering
US8117390B2 (en) 2009-04-15 2012-02-14 International Business Machines Corporation Updating partial cache lines in a data processing system
US8140759B2 (en) 2009-04-16 2012-03-20 International Business Machines Corporation Specifying an access hint for prefetching partial cache block data in a cache hierarchy
US8856456B2 (en) 2011-06-09 2014-10-07 Apple Inc. Systems, methods, and devices for cache block coherence
US9477600B2 (en) 2011-08-08 2016-10-25 Arm Limited Apparatus and method for shared cache control including cache lines selectively operable in inclusive or non-inclusive mode
CN104583957B (zh) 2012-06-15 2018-08-10 英特尔公司 具有无消歧乱序加载存储队列的重新排序的推测性指令序列
KR101818967B1 (ko) 2012-06-15 2018-01-16 인텔 코포레이션 명확화 없는 비순차 load store 큐
KR101826399B1 (ko) 2012-06-15 2018-02-06 인텔 코포레이션 Load store 재정렬 및 최적화를 구현하는 명령어 정의
EP2862061A4 (en) 2012-06-15 2016-12-21 Soft Machines Inc MEMORY PRECISION FOR VIRTUAL LOAD WITH DYNAMIC SHIPPING WINDOW WITH UNIFORM STRUCTURE
KR101667167B1 (ko) 2012-06-15 2016-10-17 소프트 머신즈, 인크. Load store 재정렬 및 최적화로부터 생기는 투기적 포워딩 예측 착오/오류로부터의 복원을 구현하는 방법 및 시스템
EP2862062B1 (en) 2012-06-15 2024-03-06 Intel Corporation A virtual load store queue having a dynamic dispatch window with a distributed structure
US9268697B2 (en) * 2012-12-29 2016-02-23 Intel Corporation Snoop filter having centralized translation circuitry and shadow tag array
US20160110113A1 (en) * 2014-10-17 2016-04-21 Texas Instruments Incorporated Memory Compression Operable for Non-contiguous write/read Addresses
US9575893B2 (en) * 2014-10-22 2017-02-21 Mediatek Inc. Snoop filter for multi-processor system and related snoop filtering method
WO2017010004A1 (ja) * 2015-07-16 2017-01-19 株式会社東芝 メモリコントローラ、情報処理装置および処理装置
US10157133B2 (en) * 2015-12-10 2018-12-18 Arm Limited Snoop filter for cache coherency in a data processing system
US9898408B2 (en) * 2016-04-01 2018-02-20 Intel Corporation Sharing aware snoop filter apparatus and method
US10360158B2 (en) 2017-03-27 2019-07-23 Samsung Electronics Co., Ltd. Snoop filter with stored replacement information, method for same, and system including victim exclusive cache and snoop filter shared replacement policies
KR20220083522A (ko) 2020-12-11 2022-06-20 윤태진 세척이 용이한 개폐형 싱크대 음식물 거름망
US11983538B2 (en) * 2022-04-18 2024-05-14 Cadence Design Systems, Inc. Load-store unit dual tags and replays
GB2620198B (en) * 2022-07-01 2024-07-24 Advanced Risc Mach Ltd Coherency control

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5210845A (en) * 1990-11-28 1993-05-11 Intel Corporation Controller for two-way set associative cache
US5745732A (en) * 1994-11-15 1998-04-28 Cherukuri; Ravikrishna V. Computer system including system controller with a write buffer and plural read buffers for decoupled busses
US6516368B1 (en) * 1999-11-09 2003-02-04 International Business Machines Corporation Bus master and bus snooper for execution of global operations utilizing a single token for multiple operations with explicit release
RU2189630C1 (ru) * 2001-11-21 2002-09-20 Бабаян Борис Арташесович Способ фильтрации межпроцессорных запросов в многопроцессорных вычислительных системах и устройство для его осуществления
US6985972B2 (en) * 2002-10-03 2006-01-10 International Business Machines Corporation Dynamic cache coherency snooper presence with variable snoop latency
US7062612B2 (en) * 2002-12-12 2006-06-13 International Business Machines Corporation Updating remote locked cache
US7089376B2 (en) * 2003-03-20 2006-08-08 International Business Machines Corporation Reducing snoop response time for snoopers without copies of requested data via snoop filtering
US7392351B2 (en) * 2005-03-29 2008-06-24 International Business Machines Corporation Method and apparatus for filtering snoop requests using stream registers

Also Published As

Publication number Publication date
JP2010517184A (ja) 2010-05-20
CN101601019A (zh) 2009-12-09
WO2008092159A1 (en) 2008-07-31
MX2009007940A (es) 2009-08-18
KR20120055739A (ko) 2012-05-31
RU2009132090A (ru) 2011-03-10
CN101601019B (zh) 2013-07-24
US20080183972A1 (en) 2008-07-31
RU2443011C2 (ru) 2012-02-20
CA2674723A1 (en) 2008-07-31
EP2115597A1 (en) 2009-11-11
KR20090110920A (ko) 2009-10-23
KR101313710B1 (ko) 2013-10-01
BRPI0807437A2 (pt) 2014-07-01

Similar Documents

Publication Publication Date Title
JP5221565B2 (ja) スヌープ要求キャッシュを用いたスヌープ・フィルタリング
US9513904B2 (en) Computer processor employing cache memory with per-byte valid bits
EP2430551B1 (en) Cache coherent support for flash in a memory hierarchy
US6631447B1 (en) Multiprocessor system having controller for controlling the number of processors for which cache coherency must be guaranteed
US5359723A (en) Cache memory hierarchy having a large write through first level that allocates for CPU read misses only and a small write back second level that allocates for CPU write misses only
US5893144A (en) Hybrid NUMA COMA caching system and methods for selecting between the caching modes
US7657710B2 (en) Cache coherence protocol with write-only permission
JP2541771B2 (ja) 原子的メモリ参照方法及びシステム
JP6831788B2 (ja) キャッシュ保守命令
EP0780769A1 (en) Hybrid numa coma caching system and methods for selecting between the caching modes
US20110055515A1 (en) Reducing broadcasts in multiprocessors
US7003630B1 (en) Mechanism for proxy management of multiprocessor storage hierarchies
JP2006277762A (ja) 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ
JPWO2012070291A1 (ja) キャッシュコヒーレンシ制御の方法、システムおよびプログラム
JP2004326758A (ja) 局所的なキャッシュ・ブロック・フラッシュ命令
CN113892090A (zh) 多级高速缓存安全性
CN113853589A (zh) 高速缓冲存储器大小改变
US20030115402A1 (en) Multiprocessor system
WO2013186694A2 (en) System and method for data classification and efficient virtual cache coherence without reverse translation
US8332592B2 (en) Graphics processor with snoop filter
US20210097000A1 (en) Selective override of cache coherence in multi-processor computer systems
JP3068469B2 (ja) 2次レベルキャッシュメモリシステム
US6643741B1 (en) Method and apparatus for efficient cache management and avoiding unnecessary cache traffic
US9442856B2 (en) Data processing apparatus and method for handling performance of a cache maintenance operation
Mallya et al. Simulation based performance study of cache coherence protocols

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120110

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120410

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120417

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120417

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120717

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20121016

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20121023

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121211

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130111

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130307

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

Free format text: PAYMENT UNTIL: 20160315

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5221565

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

LAPS Cancellation because of no payment of annual fees