(57)【要約】【課題】一つのノードにキャッシュメモリを備えるプロセッサを有し、複数ノードで構成されるマルチプロセッサシステムにおいて、余分なスヌープの発生を防ぎ、システム内のトラフィックの増加を防ぐ。【解決手段】メインメモリへのラインのリード要求と、キャッシュメモリから追い出され、メインメモリへラインがライトバックされたことをトリガとして、スヌープフィルタに当該キャッシュラインアドレスと各キャッシュメモリのキャッシュ状態を登録し、その後、リクエストをスヌープフィルタが受信した際、スヌープフィルタに登録した情報を比較して、キャッシュラインを所有していないキャッシュメモリに対してはスヌープをフィルタリングする機構を持つ。【選択図】図１
2008269513.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードから成り、各ノードはメインメモリとライトバック方式のキャッシュメモリを有する１つ以上のプロセッサと各ノード間を接続するノード制御装置を備えたマルチプロセッサコンピュータシステムにおいて、
前記ノード制御装置はスヌープ送信を制御するスヌープフィルタを有し、該スヌープフィルタは、キャッシュメモリのラインがメインメモリへライトバックされた際に、ライトバック信号をトリガとしてライトバックされたラインのキャッシュラインアドレスを格納するアドレス格納機構と、前記アドレス格納機構により格納されたアドレスに対して、各キャッシュメモリの状態を登録するキャッシュ状態登録機構と、前記アドレス格納機構により格納されたアドレスとリクエストアドレスがヒットした場合、キャッシュ状態がラインの無所有を示しているキャッシュメモリに対して、スヌープ送信をフィルタリングするスヌープ処理機構を備えたことを特徴とするマルチプロセッサコンピュータシステム。
【請求項２】
複数のノードから成り、各ノードはメインメモリとライトバック方式のキャッシュメモリを有する１つ以上のプロセッサと各ノード間を接続するノード制御装置を備えたマルチプロセッサコンピュータシステムにおいて、
前記ノード制御装置はスヌープ送信を制御するスヌープフィルタを有し、該スヌープフィルタは、メインメモリに対するリード要求の際のリード信号、または、キャッシュメモリのラインがメインメモリへライトバックされた際のライトバック信号をトリガとして、リード、またはライトバックされたラインのキャッシュラインアドレスを格納するアドレス格納機構と、前記アドレス格納機構により格納されたアドレスに対して、各キャッシュメモリの状態を登録するキャッシュ状態登録機構と、前記アドレス格納機構により格納されたアドレスとリクエストアドレスがヒットした場合、キャッシュ状態がラインの無所有を示しているキャッシュメモリに対して、スヌープ送信をフィルタリングするスヌープ処理機構を備えたことを特徴とするマルチプロセッサコンピュータシステム。
【請求項３】
複数のノードから成り、各ノードは、他ノードと共通に使用するメインメモリと、メインメモリのデータの写しを格納するライトバック方式のキャッシュメモリを有する１つ以上のプロセッサと、他ノードと相互に接続してデータ転送を行うノード制御装置を備え、該ノード制御装置は自ノードのスヌープ送信を制御するスヌープフィルタを有することを特徴とするマルチプロセッサコンピュータシステム。
【請求項４】
前記スヌープフィルタは、自ノードのキャッシュメモリのラインがメインメモリへライトバックされた際に、ライトバック信号をトリガとしてライトバックされたラインのキャッシュラインアドレスを登録するアドレス部と前記登録されたアドレスに対して自ノードの各キャッシュの当該キャッシュラインの所有の有無を示す情報を登録するキャッシュ状態部とを有する複数のライトバック用エントリと、リクエストのアドレスと前記ライトバック用エントリのアドレス部内のアドレスとを比較するライトバック用アドレス比較部と、リクエストのメッセージ種別を判定するメッセージ種別判定部と、リクエストの送信元ＩＤ情報と前記ライトバック用エントリのキャッシュ状態部のキャッシュ状態情報と前記ライトバック用アドレス比較部の比較結果と前記メッセージ種別判定部からの種別情報を入力してスヌープの発行先を選択するスヌープ宛先選択部とを備えることを特徴とする請求項３記載のマルチプロセッサコンピュータシステム。
【請求項５】
前記スヌープフィルタは、メインメモリに対するリード要求の際のリード信号をトリガとしてリードされたラインのキャッシュラインアドレスを登録するアドレス部と前記登録されたアドレスに対して自ノードの各キャッシュの当該キャッシュラインの所有の有無を示す情報を登録するキャッシュ状態部とを有する複数のリード用エントリと、リクエストのアドレスと前記リード用エントリのアドレス部内のアドレスとを比較するリード用アドレス比較部と、リクエストの送信元ＩＤ情報と前記リード用エントリのキャッシュ状態部のキャッシュ状態情報と前記リード用アドレス比較部の比較結果と前記メッセージ種別判定部からの種別情報を入力してスヌープの発行先を選択するスヌープ宛先選択部とを備えることを特徴とする請求項４記載のマルチプロセッサコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１つのノードに、メインメモリのデータの写しを格納できるライトバック方式のキャッシュメモリと、前記キャッシュメモリをそれぞれ持つ１つ以上のプロセッサと、ノード間を結ぶノード制御装置を有し、２つ以上のノードで構成されるマルチプロセッサコンピュータシステムにおけるスヌープフィルタに関する。
【背景技術】
【０００２】
プロセッサ自身がキャッシュメモリを内蔵するような場合のように、システム内に複数のプロセッサを有するマルチプロセッサシステムには、キャッシュメモリをプロセッサ毎に備えたものがある。システム内の全てのプロセッサとキャッシュメモリは、同一のメインメモリを共用でき、メモリ内の特定のラインは、メモリと複数のプロセッサのキャッシュメモリに同時に存在できる。したがって、キャッシュメモリにキャッシュされている特定のラインのコピーはすべて同一で最新でなければならない。この特性はデータの一貫性、またはコヒーレンシと呼ばれる。複数のキャッシュメモリ間のコヒーレンシを維持するプロトコルは、キャッシュ・コヒーレンシ・プロトコルと呼ばれる。
【０００３】
一般的に、キャッシュメモリのデータ格納構造にはセットアソシアティブ方式が採用されている。この場合、インデックスと呼ばれるラインアドレスのサブセットを用いてキャッシュメモリ内のライン位置を指定し、次にタグと呼ばれるラインアドレスの上位ビットからなる残りのセットをデータと共に格納する。インデックスを用いるキャッシュメモリでは、特定のアドレスを有するデータは、インデックスにより指定される１セットのキャッシュライン内にのみ配置することができる。アドレスに関するインデックスが２つ以上のラインにマップする場合に、そのキャッシュメモリはセットアソシアティブであると呼ばれ、マップできる数をウェイ数と呼ぶ。
【０００４】
セットアソシアティブキャッシュメモリにおいて、インデックスが等しいラインがウェイ数分格納されていて、プロセッサがキャッシュメモリに存在しない新規ラインを要求した場合、キャッシュメモリから既存ラインを追い出し、メインメモリにライトバックする必要がある。追い出すラインの選択には最も使われていないラインを選択するＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）などが用いられている。しかし、データの局所性から、追い出されたラインが再び要求される可能性は高い。
【０００５】
ラインには唯一の「オーナー」が存在し得る。キャッシュメモリがラインをオーナーとして所有している場合、プロセッサのラインの変更が許可される。いかなるキャッシュ・コヒーレンシ・プロトコルも、キャッシュラインの最新のコピーをその最新のオーナー（存在する場合）から取得し、このデータのコピーをリクエスタに提供する必要がある。ラインを変更する場合は、リクエスタが所有権を取得する必要があり、共用のコピーをすべて無効にする必要がある。
【０００６】
ラインのオーナーが存在する場所を確認するには、一般的にスヌープ方式と呼ばれる方法がある。この方法はオーナーが不明であり、すべてのキャッシュメモリに問い合わせ（スヌープブロードキャスト）を行って要求されたラインの最新コピーの位置を決定する必要がある。システム内のあらゆる装置によるキャッシュラインへのアクセス要求は、システム内のすべてのキャッシュメモリに転送される。最終的に、ラインの最新のコピーが存在する場所が特定され、リクエスタにコピーが提供される。このプロトコルでは、要求毎に全キャッシュメモリに問い合わせを行うため、マルチプロセッサシステムではトラフィックが増加しシステム性能を悪化させてしまうこととなる。
【０００７】
上記の問題を解決するためにスヌープフィルタを使用する方法がある。スヌープフィルタは、システム内でアクセスされたキャッシュラインに関するアドレス情報（タグ）と各キャッシュメモリのライン保持情報のセットを記憶し、スヌープ送信の制御を行うキャッシュ・コヒーレンシ・プロトコルである。キャッシュラインの要求では、始めにスヌープフィルタが、リードを行ってラインのコピーを所有しているキャッシュメモリ以外に対するスヌープをフィルタリングする。システム内のすべてのキャッシュメモリにスヌープブロードキャストする必要がなくなるため、スヌープ方式のみのキャッシュ・コヒーレンシ制御よりシステム性能が向上する。たとえば特許文献１では、キャッシュメモリに存在する全てのデータのキャッシュ状態を示すコピータグを持ち、データが最新の値のときのみキャッシュメモリへのスヌープを行うスヌープフィルタが開示されている。
【０００８】
【特許文献１】特開平１０−２２２４２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上述した従来例では、スヌープフィルタのエントリがキャッシュメモリのエントリを包含した構造となっている。よって、キャッシュメモリの容量を大きくすると、スヌープフィルタの容量も大きくなってしまうことが問題となる。そこで、一部のラインに関する情報のみを記憶するエントリ構造にした場合、スヌープフィルタの容量を変えることなく、キャッシュメモリ容量を増やすことが出来る。しかし、このような構造では、リクエストされたキャッシュラインアドレスを全て記憶できないため、キャッシュメモリから追い出されたラインへの再要求があった場合に、スヌープフィルタには要求ラインの情報が存在しない可能性がある。その場合、データのオーナーが不明になるために全キャッシュメモリにスヌープブロードキャストを行う必要が発生し、システムにおけるバストラフィックは増加してしまう問題がある。そのため、少ない容量で効率的にスヌープをフィルタリングする方式が必要となる。
【００１０】
そこで、本発明の課題は、複数ノードを持ち、各ノードに複数のプロセッサ及びキャッシュメモリを有するマルチプロセッサコンピュータシステムにおいて、システム内でのトラフィックを減少させるための、改善されたスヌープフィルタを提供することである。
【課題を解決するための手段】
【００１１】
本発明は、複数のノードから成り、各ノードはメインメモリとライトバック方式のキャッシュメモリを有する１つ以上のプロセッサと各ノード間を接続するノード制御装置を備えたマルチプロセッサコンピュータシステムにおいて、前記ノード制御装置はスヌープ送信を制御するスヌープフィルタを有し、該スヌープフィルタは、キャッシュメモリのラインがメインメモリへライトバックされた際に、ライトバック信号をトリガとしてライトバックされたラインのキャッシュラインアドレスを格納するアドレス格納機構と、前記アドレス格納機構により格納されたアドレスに対して、各キャッシュメモリの状態を登録するキャッシュ状態登録機構と、前記アドレス格納機構により格納されたアドレスとリクエストアドレスがヒットした場合、キャッシュ状態がラインの無所有を示しているキャッシュメモリに対して、スヌープ送信をフィルタリングするスヌープ処理機構を備えたことを特徴とする。
【００１２】
本発明は、複数のノードから成り、各ノードはメインメモリとライトバック方式のキャッシュメモリを有する１つ以上のプロセッサと各ノード間を接続するノード制御装置を備えたマルチプロセッサコンピュータシステムにおいて、前記ノード制御装置はスヌープ送信を制御するスヌープフィルタを有し、該スヌープフィルタは、メインメモリに対するリード要求の際のリード信号、または、キャッシュメモリのラインがメインメモリへライトバックされた際のライトバック信号をトリガとして、リード、またはライトバックされたラインのキャッシュラインアドレスを格納するアドレス格納機構と、前記アドレス格納機構により格納されたアドレスに対して、各キャッシュメモリの状態を登録するキャッシュ状態登録機構と、前記アドレス格納機構により格納されたアドレスとリクエストアドレスがヒットした場合、キャッシュ状態がラインの無所有を示しているキャッシュメモリに対して、スヌープ送信をフィルタリングするスヌープ処理機構を備えたことを特徴とする。
【発明の効果】
【００１３】
一般に、キャッシュメモリにおける容量の問題により、キャッシュされるライン数には制限があり、その制限を越えてラインがキャッシュされる場合は、ラインはやむを得ず追い出され、メインメモリへとライトバックされなければならない。しかし、データの局所性から、追い出されたラインは、ライトバックを行ったプロセッサから再度利用される可能性が高い。
【００１４】
本発明によれば、従来のスヌープフィルタの機構に加えて、キャッシュラインがキャッシュメモリから追い出され、メインメモリへライトバックされたことをトリガとして、スヌープフィルタにキャッシュラインアドレスを登録することにより、追い出されたキャッシュラインがライトバックを行ったプロセッサから再要求された場合でも、該キャッシュラインを所有していないキャッシュメモリに対してはスヌープをフィルタリングする機構を持つ。
【００１５】
その結果、従来のスヌープフィルタに比べて余分なスヌープを減らし、システム内のトラフィックの増加を防ぐことができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施例を図面を用いて説明する。
【００１７】
「システム構成」
図１は、本実施例に係るスヌープフィルタを持つマルチプロセッサシステムの構成を表すブロック図である。ノード１００においてメインメモリ１３０と、メインメモリのデータの写しを格納できるライトバック方式のキャッシュメモリ１２１と、キャッシュメモリを備えた３つのプロセッサ１２０と、スヌープ発行機能を備えるスヌープフィルタ１１１を内蔵したノード制御装置１１０を有しており、それぞれは相互に接続され、通信を行う。本実施例では、ノード１００と同じ機構を持つノード２００，３００，４００の計４つのノードが相互に接続され、通信を行うマルチプロセッサコンピュータシステムを構成するものとする。
【００１８】
なお、本発明のスヌープフィルタを用いる場合において、必ずしも本実施例のようなシステム構成にする必要はない。
【００１９】
「スヌープフィルタの構造」
図２は本実施例に係るスヌープフィルタの構造を説明するための説明図である。本実施例のスヌープフィルタでは、リード用エントリ１０及びライトバック用エントリ２０と、リード用エントリアドレス比較部１３及びライトバック用エントリアドレス比較部２３と、リード用エントリ登録／消去部１４及びライトバック用エントリ登録／消去部２４と、メッセージ判定部５と、スヌープ宛先選択部６と、スヌープ発行部７を備える。
【００２０】
リード用エントリ１０及びライトバック用エントリ２０は、当該キャッシュラインアドレスが登録されるアドレス部１１，２１と、登録アドレスに対して各キャッシュメモリが当該キャッシュラインを所有している場合に「０ｂ１」、所有していない場合に「０ｂ０」として登録されるキャッシュ状態部１２，２２を備える。本実施例でのエントリ数はシステム内の全ラインアドレス数よりも少ないため、ＬＲＵ方式を用いて登録エントリを追い出す構造とし、リード信号でのみ登録されるリード用エントリ１０とライトバック信号でのみ登録されるライトバック用エントリ２０は独立した構造となっている。これは、ライトバック専用のエントリ領域を持つことで、ライトバック信号で登録されたキャッシュラインアドレスを、受信したリード信号で追い出されることなく長時間記憶しておくことができるためである。その結果、データの局所性によってライトバックされたプロセッサからライトバックされたラインの再リード要求が発生しても、ライトバック用エントリ２０からキャッシュラインアドレスを特定できるため、スヌープフィルタが効果的に動作して、余分なスヌープの発生を防ぐことができる。
【００２１】
また、リード用エントリ１０とライトバック用エントリ２０は排他的構造となっており、リード用エントリ１０とライトバック用エントリ２０に同じキャッシュラインアドレスが登録されることはない。排他制御は、リード用エントリ登録／消去部１４及びライトバック用エントリ登録／消去部２４の書込みによって行われ、一方のエントリに当該アドレスが存在する場合は当該エントリを消去するとともに、もう一方のエントリに当該アドレス及びキャッシュ状態情報を再登録することにより、エントリ間での情報の入れ替えが行われる。
【００２２】
リード用エントリアドレス比較部１３では、リード用エントリ１０のアドレス部１１内のアドレスとリクエストのアドレス信号１を入力とし、その比較結果信号をリード用エントリ登録／消去部１４とスヌープ宛先選択部６に対して出力する。
【００２３】
ライトバック用エントリアドレス比較部２３では、ライトバック用エントリ２０のアドレス部２１内のアドレスとリクエストのアドレス信号１を入力とし、その比較結果信号をライトバック用エントリ登録／消去部２４とスヌープ宛先選択部６に対して出力する。
【００２４】
メッセージ種判定部５では、リクエストのメッセージ種コード信号３を入力とし、そのメッセージ種判定信号をリード用エントリ登録／消去部１３とライトバック用エントリ登録／消去部２３とスヌープ宛先選択部６に対して出力する。
【００２５】
スヌープ宛先選択部６では、リクエストの送信元ＩＤ信号２と、リード用エントリ１０及びライトバック用エントリ２０のキャッシュ状態部１２，２２内のキャッシュ状態情報と、リード用エントリアドレス比較部１３及びライトバック用エントリアドレス比較部２３にて出力した比較結果信号と、メッセージ種判定部５にて出力したメッセージ種判定信号を入力とする。
【００２６】
スヌープ宛先選択部６は、メッセージ種判定信号がリードもしくはスヌープを示している場合において、リード用エントリアドレス比較部１３およびライトバック用エントリアドレス比較部２３の２つの比較結果が全エントリとミスヒットしたことを示している場合は、システム内の全キャッシュメモリをスヌープ対象としたスヌープ宛先情報信号とスヌープ発行指示信号をスヌープ発行部７に出力する。また、リード用エントリアドレス比較部１３の比較結果がエントリ内でヒットし、ライトバック用エントリアドレス比較部２３の比較結果がエントリ内でミスヒットしたことを示している場合は、リード用エントリ１０のキャッシュ状態部１２のキャッシュ状態情報を選択し、リード用エントリアドレス比較部１３の比較結果がエントリ内でミスヒットし、ライトバック用エントリアドレス比較部２３の比較結果がエントリ内でヒットしたことを示している場合は、ライトバック用エントリ２０のキャッシュ状態部２２のキャッシュ状態情報を選択し、選択したキャッシュ状態情報より当該キャッシュラインアドレスのキャッシュ状態が「０ｂ１」のキャッシュメモリをスヌープ対象としたスヌープ宛先情報信号とスヌープ発行指示信号をスヌープ発行部７に出力する。
ただし、メッセージ種がリードの場合において、リクエスタはスヌープ対象とはならないため、リクエストの送信元ＩＤに該当するキャッシュメモリはスヌープ宛先情報から除外される。また、メッセージ判定部がリード、スヌープ以外を検出した場合、スヌープが発行されることはないため、スヌープ発行部７に対してスヌープ宛先情報信号及びスヌープ発行指示信号は出力されない。
【００２７】
スヌープ発行部７では、スヌープ宛先選択部６にて出力したスヌープ宛先情報信号及びスヌープ発行指示信号を入力とする。スヌープ宛先情報は、スヌープ対象となるキャッシュメモリのＩＤ情報であり、そのＩＤのキャッシュメモリに対してスヌープが発行され、スヌープ信号４が出力される。ただし、スヌープ発行指示信号が入力されないと、スヌープ発行は行われない。
【００２８】
リード用エントリ登録／消去部１４では、リクエストのアドレス信号１と、リクエストの送信元ＩＤ信号２と、メッセージ種判定部５にて出力したメッセージ種判定信号と、リード用エントリアドレス比較部１３にて出力した比較結果信号を入力とする。
【００２９】
メッセージ種判定信号がリードを示している場合において、リード用エントリアドレス比較部１３の比較結果が全エントリとミスヒットしたことを示している場合は、リード用エントリ１０のアドレス部１１に入力されたアドレスを書込み、キャッシュ状態部１２に送信元ＩＤに該当するキャッシュメモリのキャッシュ状態を書込みエントリ登録が行われる。リード用エントリアドレス比較部１３の比較結果がエントリ中でヒットしていることを示している場合は、キャッシュ状態部１２に送信元ＩＤに該当するキャッシュメモリのキャッシュ状態を書込む。
【００３０】
また、メッセージ種判定信号がライトバックを示している場合において、リード用エントリアドレス比較部１３の比較結果がエントリ中でヒットしたことを示している場合のみ、リード用エントリ１０の当該アドレスのエントリに対して初期値を書込み当該エントリの消去が行われる。
【００３１】
また、メッセージ種判定信号がスヌープレスポンスを示している場合において、リード用エントリアドレス比較部１３の比較結果がエントリ中でヒットしたことを示している場合のみ、キャッシュ状態部１２に送信元ＩＤに該当するキャッシュメモリのキャッシュ状態を書込む。その他のメッセージ種に対しては、何も出力されない。
【００３２】
ライトバック用エントリ登録／消去部２４では、リクエストのアドレス信号１と、リクエストの送信元ＩＤ信号２と、メッセージ種判定部５にて出力したメッセージ種判定信号と、ライトバック用エントリアドレス比較部２３にて出力した比較結果信号を入力とする。
【００３３】
メッセージ種判定信号がリードを示している場合において、ライトバック用エントリアドレス比較部２３の比較結果がエントリ中でヒットしたことを示している場合のみ、ライトバック用エントリ２０の当該アドレスのエントリに対して初期値を書込み当該エントリの消去が行われる。
【００３４】
また、メッセージ種判定信号がライトバックを示している場合において、ライトバック用エントリアドレス比較部２３の比較結果が全エントリとミスヒットしたことを示している場合のみ、ライトバック用エントリ２０のアドレス部２１に入力されたアドレスを書込み、キャッシュ状態部２２に全キャッシュメモリのキャッシュ状態を書込みエントリ登録が行われる。その他のメッセージ種に対しては、何も出力されない。
【００３５】
なお、本発明のスヌープフィルタを用いる場合において、必ずしも本実施例のようなスヌープフィルタの構造及び構成にする必要はない。
【００３６】
「スヌープフィルタの動作」
本実施例におけるスヌープフィルタは、リード信号、またはライトバック信号と、スヌープ信号、スヌープレスポンス信号を受信した際に動作する。受信した４つの信号は、最初にリクエストアドレスがアドレス部１１，２１に登録されているエントリに存在しているか否かをアドレス比較部１３，２３により探索する。以下で、リード用エントリアドレス比較部１３及びライトバック用エントリアドレス比較部２３にてミスヒットした場合とヒットした場合の２つのケースにおける、リード、ライトバック、スヌープ信号受信時の動作を説明する。
【００３７】
［ケース１：ミスヒット］
リード信号受信の場合
リード用エントリ登録／消去部１４にてリクエストアドレスをリード用エントリ１０のアドレス部１１に登録するとともに、スヌープ宛先選択部６にてリクエスタ以外が持つキャッシュメモリに対してスヌープブロードキャストを行うようスヌープ発行部７に指示する。そのスヌープレスポンスにより、リード用エントリ登録／消去部１４にてキャッシュメモリ内のキャッシュ状態情報として、ラインを所有している場合には「０ｂ１」、ラインを所有していない場合は「０ｂ０」をキャッシュ状態部１２に登録するとともに、リードリクエストを発行したプロセッサが持つキャッシュメモリに関するライン所有状態を「０ｂ１」としてキャッシュ状態部１２に登録する。
【００３８】
ライトバック信号受信の場合
ライトバック用エントリ登録／消去部２４にてリクエストアドレスをライトバック用エントリ２０のアドレス部２１に登録するとともに、全キャッシュメモリのキャッシュ状態情報を「０ｂ０」としてキャッシュ状態部２２に登録する。これは、ライトバックはラインがメインメモリに書き戻されるため全キャッシュメモリにはラインの所有者がいなくなることを意味しているためである。
【００３９】
スヌープ信号受信の場合
キャッシュラインアドレス及びキャッシュ状態情報を登録することなく、スヌープ宛先選択部６にて全キャッシュメモリに対してスヌープブロードキャストを行うようスヌープ発行部７に指示する。このときのスヌープレスポンスでは、キャッシュラインアドレス及びキャッシュ状態情報を登録することはない。
【００４０】
［ケース２：ヒット］
リード信号受信の場合
リード用エントリアドレス比較部１３においてリクエストアドレスがヒットした場合は、ヒットしたアドレスに対してキャッシュ状態部１２における各キャッシュメモリのラインの所有・無所有の状態情報により、スヌープ宛先選択部６にてそのキャッシュ状態情報が「０ｂ１」のキャッシュメモリに対してはスヌープ送信を行うようスヌープ発行部７に指示する。リード用エントリ登録／消去部１４にて、スヌープレスポンスにより当該キャッシュメモリに関するキャッシュ状態部１２のキャッシュ状態情報を更新する。また、リード用エントリ登録／消去部１４にて、リードリクエストを発行したプロセッサが持つキャッシュメモリに関するキャッシュ状態部１２のキャッシュ状態情報を「０ｂ１」として更新する。キャッシュ状態部１２にて「０ｂ０」が登録されている当該キャッシュメモリに対してはスヌープは発行されず、フィルタリングされる。
【００４１】
ライトバック用エントリアドレス比較部２３においてリクエストアドレスがヒットした場合は、ヒットしたアドレスに対してキャッシュ状態部２２における各キャッシュメモリのラインの所有・無所有の状態情報がスヌープ宛先選択部６に出力されるが、キャッシュ状態部２２において全キャッシュメモリのキャッシュ状態情報は「０ｂ０」のためスヌープ発行は指示されず、完全にフィルタリングされる。さらに、エントリの排他的構造によりエントリの入替えを行う。入替えにおいては、既存エントリの登録情報をライトバック用エントリ登録／消去部２４にて消去するとともに、リード用エントリ登録／消去部１４にてリード用エントリ１０のアドレス部１１にリクエストアドレスを再登録し、リクエスタのキャッシュ状態情報を「０ｂ１」、その他のキャッシュメモリのキャッシュ状態情報を「０ｂ０」としてキャッシュ状態部１２に登録する。この理由は、ライトバックされたラインは、どのキャッシュメモリからもキャッシュされていないことを意味しているためである。
【００４２】
ライトバック信号受信の場合
リクエストアドレスがリード用エントリアドレス比較部１３においてヒットした場合は、エントリの排他的構造によりエントリの入替えを行う。入替えにおいては、リード用エントリ登録／消去部１４にてそのエントリを消去するとともに、ライトバック用エントリ登録／消去部２４にてライトバック用エントリ２０のアドレス部２１にリクエストアドレスを再登録し、全キャッシュメモリのキャッシュ状態情報を「０ｂ０」としてキャッシュ状態部２２に登録する。この理由は、ライトバックされたラインは、どのキャッシュメモリからもキャッシュされていないことを意味しているためである。
【００４３】
リクエストアドレスがライトバック用エントリアドレス比較部２３にてヒットすることはない。なぜなら、ライトバックはリードの後にしか発生しないため、排他的構造を持つエントリにおいては、ライトバックされるキャッシュラインのアドレスは、リード用エントリ１０に登録されている場合を除きエントリには存在しないためである。
【００４４】
スヌープ信号受信の場合
リクエストアドレスがリード用エントリアドレス比較部１３にてヒットした場合は、ヒットしたアドレスに対するキャッシュ状態部１２における各キャッシュメモリのラインの所有・無所有の状態情報により、スヌープ宛先選択部６にてそのキャッシュ状態情報が「０ｂ１」のキャッシュメモリに対してはスヌープ送信を行うようスヌープ発行部７に指示する。リード用エントリ登録／消去部１４にて、そのスヌープレスポンスにより当該キャッシュメモリに関するキャッシュ状態部１２のキャッシュ状態情報を登録、更新する。キャッシュ状態情報が「０ｂ０」のキャッシュメモリに対してはスヌープは発行されず、フィルタリングされる。
【００４５】
リクエストアドレスがライトバック用エントリアドレス比較部２３にてヒットした場合は、ヒットしたアドレスに対するキャッシュ状態部２２における各キャッシュメモリのラインの所有・無所有の状態情報がスヌープ宛先選択部６に出力されるが、キャッシュ状態部２２において全キャッシュメモリのキャッシュ状態情報は「０ｂ０」のためスヌープ発行は指示されず、完全にフィルタリングされる。
【００４６】
「動作例  ローカル」
ノード１００内のローカルキャッシュメモリに対するスヌープフィルタリングの動作例を２ケース示す。
【００４７】
ケース１
動作１‐１  リード信号受信
図３は、システムの初期化後にプロセッサ１２０ａがリモートノード２００のメインメモリ２３０のラインアドレス０ｂ００１１＿１０１１＿１００１に対してリード要求を行った際の、ノード１００におけるスヌープフィルタ１１１の動作を示し、図４は図３の動作におけるスヌープフィルタ１１１のエントリ状態の遷移を示している。スヌープフィルタ１１１がリード信号５０を受信した場合、スヌープフィルタ１１１のリード用エントリ３０のアドレス部３１及びライトバック用エントリ４０のアドレス部４１にリクエストアドレス０ｂ００１１＿１０１１＿１００１が存在しないため、リード用エントリアドレス比較部１３およびライトバック用エントリアドレス比較部２３にてミスヒットする。その結果、スヌープ宛先選択部６にてローカルキャッシュメモリ１２１ｂ，１２１ｃに対してスヌープ信号５１，５２がブロードキャスト発行されるようスヌープ発行部７に指示する。そのスヌープレスポンスをスヌープフィルタ１１１が受信すると、リード用エントリ登録・消去部１４にて、リクエストアドレスがリード用エントリ３０のアドレス部３１に登録され、キャッシュメモリ１２１ａ，１２１ｂ，１２１ｃのキャッシュ状態情報がリード用エントリ３０のキャッシュ状態部３２ａ，３２ｂ，３２ｃにそれぞれ登録される。本動作では、リクエスタのキャッシュメモリ１２１ａはラインを取得するため、キャッシュ状態部３２ａには「０ｂ１」が登録され、その他のキャッシュメモリは初期化後の動作のためラインは所有していないことになり、キャッシュ状態部３２ｂ及び３２ｃには「０ｂ０」が登録される。
【００４８】
動作１‐２  ライトバック信号受信
図５は、動作１‐１後にキャッシュメモリ１２１ａにキャッシュされているアドレス０ｂ００１１＿１０１１＿１００１のラインがリモートノード２００のメインメモリ２３０にライトバックされる際の、ノード１００におけるスヌープフィルタ１１１の動作を示し、図６は図５の動作におけるスヌープフィルタ１１１のエントリ状態の遷移を示している。スヌープフィルタ１１１がライトバック信号５５を受信した場合、スヌープフィルタ１１１のリード用エントリ３０のアドレス部３１にリクエストアドレス０ｂ００１１＿１０１１＿１００１が存在するため、リード用エントリアドレス比較部１３にてヒットする。また、登録を行うライトバックリクエストのアドレスがリード用エントリ１０にてヒットしているため、ヒットしたアドレスのエントリをライトバック用エントリ４０へ入れ替えなければならない。よって、リード用エントリ登録／消去部１４にてヒットした既存エントリの消去を行うとともに、ライトバック用エントリ登録／消去部２４にてリクエストアドレスをライトバック用エントリ４０のアドレス部４１に登録し、全キャッシュメモリの状態情報が「０ｂ０」としてキャッシュ状態部４２に登録される。これは、ライトバックにより、全キャッシュメモリはラインを所有していない状態になるためである。
【００４９】
動作１‐３‐１  リード信号受信
図７は、動作１‐２後にプロセッサ１２０ａがリモートノード２００のメインメモリ２３０のラインアドレス０ｂ００１１＿１０１１＿１００１に対して再リード要求を行った際の、ノード１００におけるスヌープフィルタ１１１の動作を示し、図８は図７の動作におけるスヌープフィルタ１１１のエントリ状態の遷移を示している。スヌープフィルタ１１１がリード信号６０を受信した場合、スヌープフィルタ１１１のライトバック用エントリ４０内のアドレス部４１にリクエストアドレス０ｂ００１１＿１０１１＿１００１が存在するため、ライトバック用エントリアドレス比較部２３にてヒットする。キャッシュ状態部４２において、ヒットしたアドレスに対する全キャッシュメモリのキャッシュ状態情報は「０ｂ０」のため、スヌープ宛先発行部６はスヌープ発行をスヌープ発行部７に指示せず、ローカルキャッシュメモリに対してのスヌープが完全にフィルタリングされる。
【００５０】
また、登録を行うリードリクエストのアドレスがライトバック用エントリ２０にてヒットしているため、ヒットしたアドレスのエントリをリード用エントリ３０へ入れ替えなければならない。よって、ライトバック用エントリ登録／消去部２４にてヒットした既存エントリの消去を行うとともに、リード用エントリ登録／消去部１４にてリクエストアドレスをリード用エントリ３０のアドレス部３１に登録し、各キャッシュ状態情報がキャッシュ状態部３２に登録される。本動作では、リクエスタのキャッシュメモリ１２１ａはラインを取得するため、キャッシュ状態部３２ａには「０ｂ１」が登録され、その他のキャッシュメモリはラインを保持していない状態であったため、キャッシュ状態部３２ｂ及び３２ｃには「０ｂ０」が登録される。
【００５１】
動作１‐３‐２  スヌープ信号受信
図９は、動作１‐２後にノード１００がリモートノード２００からのラインアドレス０ｂ００１１＿１０１１＿１００１に対するスヌープ信号を受信した際の、ノード１００におけるスヌープフィルタ１１１の動作を示し、図１０は図９の動作におけるスヌープフィルタ１１１のエントリ状態の遷移を示している。スヌープフィルタ１１１がスヌープ信号６５を受信した場合、スヌープフィルタ１１１のライトバック用エントリ４０内のアドレス部４１にリクエストアドレス０ｂ００１１＿１０１１＿１０１１が存在するため、ライトバック用エントリアドレス比較部２３にてヒットする。キャッシュ状態部４２において、ヒットしたアドレスに対する全キャッシュメモリのキャッシュ状態情報は「０ｂ０」のため、スヌープ宛先発行部６はスヌープ発行をスヌープ発行部７に指示せず、ローカルキャッシュメモリに対してのスヌープが完全にフィルタリングされる。その結果、エントリ情報の登録は行われず、ノード１００がスヌープ発信元のリモートノード２００にスヌープレスポンスを送信する。
【００５２】
ケース２
動作２‐１  リード信号受信
ケース１の動作１‐１と同様の動作とする。
【００５３】
動作２‐２‐１  リード信号受信
図１１は、動作２‐１後にプロセッサ１２０ｂがリモートノード２００のメインメモリ２３０のラインアドレス０ｂ００１１＿１０１１＿１００１に対して、ラインの所有権取得を伴うリード要求を行った際の、ノード１００におけるスヌープフィルタ１１１の動作を示し、図１２は図１１の動作におけるスヌープフィルタ１１１のエントリ状態の遷移を示している。スヌープフィルタ１１１がリード信号７０を受信した場合、スヌープフィルタ１１１のリード用エントリ３０内のアドレス部３１にリクエストアドレス０ｂ００１１＿１０１１＿１００１が存在するため、リード用エントリアドレス比較部１３にてヒットする。キャッシュ状態部３２ｃにおいて、ヒットしたアドレスに対するキャッシュメモリ１２１ｃのキャッシュ状態情報は「０ｂ０」のため、スヌープ宛先発行部６はスヌープ発行をスヌープ発行部７に指示せず、スヌープがフィルタリングされる。
【００５４】
また、キャッシュ状態部３２ａにおいて、キャッシュメモリ１２１ａのキャッシュ状態情報は「０ｂ１」のため、スヌープ宛先発行部６の指示によりスヌープ発行部７がスヌープ信号７１を発行し、そのスヌープレスポンスをスヌープフィルタ１１１が受信する。その結果、リード用エントリ登録／消去部１４にて、リード用エントリ３０のキャッシュ状態部３２の各キャッシュ状態情報が登録され、更新される。本動作では、リクエスタのキャッシュメモリ１２１ｂがラインを所有するためキャッシュ状態部３２ｂは「０ｂ１」に更新され、キャッシュメモリ１２１ａではラインの所有権がなくなり、ラインが無所有となるためキャッシュ状態部３２ａは「０ｂ０」に更新される。
【００５５】
動作２‐２‐２  スヌープ信号受信
図１３は、動作２‐１後にノード１００がリモートノード２００からのラインアドレス０ｂ００１１＿１０１１＿１００１に対して、ラインの所有権取得に伴うリードリクエストに起因して発生したスヌープ信号を受信した際の、ノード１００におけるスヌープフィルタ１１１の動作を示し、図１４は図１３の動作におけるスヌープフィルタ１１１のエントリ状態の遷移を示している。スヌープフィルタ１１１がスヌープ信号７５を受信した場合、スヌープフィルタ１１１のリード用エントリ３０内のアドレス部３１にリクエストアドレス０ｂ００１１＿１０１１＿１００１が存在するため、リード用エントリアドレス比較部１３にてヒットする。キャッシュ状態部３２ｂ，３２ｃにおいて、ヒットしたアドレスに対するキャッシュメモリ１２１ｂ，１２１ｃのキャッシュ状態情報は「０ｂ０」のため、スヌープ宛先発行部６はスヌープ発行をスヌープ発行部７に指示せず、スヌープがフィルタリングされる。
【００５６】
また、キャッシュ状態部３２ａにおいて、キャッシュメモリ１２１ａのキャッシュ状態情報は「０ｂ１」のため、スヌープ宛先発行部６の指示によりスヌープ発行部７がスヌープ信号７６を発行し、そのスヌープレスポンスをスヌープフィルタ１１１が受信する。その結果、リード用エントリ登録／消去部１４にて、リード用エントリ３０のキャッシュ状態部３２の各キャッシュ状態情報が登録され、更新される。本動作では、キャッシュメモリ１２１ａでのラインの所有権がなくなり、ラインが無所有となるためキャッシュ状態部３２ａは「０ｂ０」に更新される。
【００５７】
[動作例  グローバル]
スヌープフィルタは各ノード間において、リモートノードへのスヌープ送信のフィルタリングにも適用することも可能である。その場合の動作例では、フィルタが動作する信号の方向がローカルの場合と逆になり、リモートノードからのリード、またはライトバック信号と、ローカルノード内からのスヌープ信号の受信によって動作することになる。また、その際、スヌープフィルタのエントリのキャッシュ状態部は、ローカルの動作例におけるローカルキャッシュメモリのキャッシュ状態情報ではなく、各リモートノード内において任意のキャッシュメモリがラインを所有している場合は「０ｂ１」、全キャッシュメモリがラインを所有していないなら「０ｂ０」をキャッシュ状態情報として登録する。
【００５８】
図１５はグローバルなスヌープフィルタリングに本発明のスヌープフィルタを適用した場合におけるスヌープフィルタのエントリの説明図である。図１５では、リード用エントリ８０のアドレス部８１に登録されたアドレス０ｂ００１１＿１０１１＿１００１のラインはノード２００内の任意のキャッシュメモリが所有していて、ノード３００，４００内のキャッシュメモリにはラインの所有者がいないということを表している。したがって、グローバルなスヌープフィルタリングの場合におけるスヌープフィルタの動作例はローカルの場合と同様となる。
【００５９】
上記の動作例により、多くのプロセッサからの集中的なトランザクションにより、キャッシュラインが追い出されてライトバックが多発し、ライトバックしたプロセッサのデータの局所性によってライトバックされたラインに対する再リード要求が発生した場合において、本発明の機構を用いず、従来のリード要求でキャッシュラインアドレスを登録するスヌープフィルタを搭載した場合、ライトバックされたラインがあっても、スヌープフィルタにはそのラインへの前回のリード情報がエントリから追い出されている可能性が高いためスヌープフィルタは動作せず、全キャッシュメモリに対してスヌープブロードキャストすることになり、システム内のトラフィックは増加してしまう。しかし、本発明の機構を用いた場合、スヌープフィルタは再リード要求したプロセッサが以前にライトバックしたラインを所有していたという情報を記憶していおく機構を持つために、スヌープフィルタが効果的に動作し、余分なスヌープを送信することなくラインを取得することができる。したがって、システム全体のトラフィックの増加を防ぐことができる。
【図面の簡単な説明】
【００６０】
【図１】本実施例に係るスヌープフィルタを持つマルチプロセッサシステムの構成を表すブロック図である。
【図２】本実施例に係るスヌープフィルタの構造を説明するための説明図である。
【図３】動作１‐１のリード信号受信時のスヌープフィルタ動作説明図である。
【図４】動作１‐１におけるスヌープフィルタのエントリ状態遷移の説明図である。
【図５】動作１‐２のライトバック信号受信時のスヌープフィルタ動作説明図である。
【図６】動作１‐２におけるスヌープフィルタのエントリ状態遷移の説明図である。
【図７】動作１‐３‐１のリード信号受信時のスヌープフィルタ動作説明図である。
【図８】動作１‐３‐１におけるスヌープフィルタのエントリ状態遷移の説明図である。
【図９】動作１‐３‐２のスヌープ信号受信時のスヌープフィルタ動作説明図である。
【図１０】動作１‐３‐２におけるスヌープフィルタのエントリ状態遷移の説明図である。
【図１１】動作２‐２‐１のリード信号受信時のスヌープフィルタ動作説明図である。
【図１２】動作２‐２‐１におけるスヌープフィルタのエントリ状態遷移の説明図である。
【図１３】動作２‐２‐２のスヌープ信号受信時のスヌープフィルタ動作説明図である。
【図１４】動作２‐２‐２におけるスヌープフィルタのエントリ状態遷移の説明図である。
【図１５】本実施例に係るグローバルなスヌープフィルタリングにスヌープフィルタを適用した場合のスヌープフィルタのエントリ説明図である。
【符号の説明】
【００６１】
１    アドレス信号
２    送信元ＩＤ信号
３    メッセージ種コード信号
４    スヌープ信号
５    メッセージ種判定部
６    スヌープ宛先選択部
７    スヌープ発行部
１０    リード用エントリ
１１    アドレス部
１２    キャッシュ状態部
１３    リード用エントリアドレス比較部
１４    リード用エントリ登録／消去部
２０    ライドバック用エントリ
２１    アドレス部
２２    キャッシュ状態部
２３    ライトバック用エントリアドレス比較部
２４    ライトバック用エントリ登録／消去部
３０    リード用エントリ
３１    アドレス部
３２ａ，３２ｂ，３２ｃ    キャッシュ状態部
４０    ライトバック用エントリ
４１    アドレス部
４２ａ，４２ｂ，４２ｃ    キャッシュ状態部
５０    リード信号
５１    スヌープ信号
５２    スヌープ信号
５３    リード信号
５５    ライトバック信号
５６    ライトバック信号
６０    リード信号
６１    リード信号
６５    スヌープ信号
７０    リード信号
７１    スヌープ信号
７２    リード信号
７５    スヌープ信号
７６    スヌープ信号
８０    リード用エントリ
８１    アドレス部
８２ａ，８２ｂ，８２ｃ    キャッシュ状態部
９０    ライト用エントリ
９１    アドレス部
９２ａ，９２ｂ，９２ｃ    キャッシュ状態部
１００    ノード
１１０    ノード制御装置
１１１    スヌープフィルタ
１２０ａ，１２０ｂ，１２０ｃ    プロセッサ
１２１ａ，１２１ｂ，１２１ｃ    キャッシュメモリ
１３０    メインメモリ
２００    ノード
２１０    ノード制御装置
２１１    スヌープフィルタ
２２０ａ，２２０ｂ，２２０ｃ    プロセッサ
２２１ａ，２２１ｂ，２２１ｃ    キャッシュメモリ
２３０    メインメモリ
３００    ノード
４００    ノード
【図１】
2008269513.tif 000003
【図２】
2008269513.tif 000004
【図３】
2008269513.tif 000005
【図４】
2008269513.tif 000006
【図５】
2008269513.tif 000007
【図６】
2008269513.tif 000008
【図７】
2008269513.tif 000009
【図８】
2008269513.tif 000010
【図９】
2008269513.tif 000011
【図１０】
2008269513.tif 000012
【図１１】
2008269513.tif 000013
【図１２】
2008269513.tif 000014
【図１３】
2008269513.tif 000015
【図１４】
2008269513.tif 000016
【図１５】
2008269513.tif 000017