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