(57)【要約】      （修正有）【課題】ノードの再同期のための処理時間を軽減する新たなデータ処理装置を提供する。【解決手段】データ処理装置１３０は、要求されたデータに関してソースノード１６０から送られたスヌープ要求を受信する受信回路２２０と、送信回路２３０とを備えている。キャッシュ回路２４０は、少なくとも一つのデータ値をキャッシュする。上記スヌープ要求は、その要求されたデータをソースノードに返送するかどうかの指示を含み、上記少なくとも一つのデータ値がその要求されたデータを含む場合、上記送信回路は、上記指示に応じて、その要求されたデータを有するソースノードに応答を送信する。【選択図】図３
2018152054.tif 000002
【特許請求の範囲】
【請求項１】
要求されたデータに関してソースノードにより送られたスヌープ要求を受信する受信回路と、
送信回路と、
少なくとも一つのデータ値をキャッシュするキャッシュ回路と、を具備し、
前記スヌープ要求は、前記要求されたデータをソースノードに返送するかどうかの指示を含み、
前記少なくとも一つのデータ値が前記要求されたデータを含む場合、前記送信回路は、前記指示に応じて、当該要求されたデータを有する前記ソースノードに応答を送信する、データ処理装置。
【請求項２】
前記要求されたデータは、当該要求されたデータが共有されていることを示すキャッシュ状態で前記キャッシュ回路に保存される、請求項１に記載のデータ処理装置。
【請求項３】
前記少なくとも一つのデータ値は、前記要求されたデータを含み、前記送信回路は、前記ホームノードで前記要求されたデータに対する要求を行った要求ノードに対して、前記要求されたデータを含んださらなる応答を送信する、請求項１又は２に記載のデータ処理装置。
【請求項４】
前記要求されたデータを前記ソースノードに返送するかどうかの指示は、前記スヌープ要求の一つのタイプとして暗号化されている、請求項１〜３のいずれか一項に記載のデータ処理装置。
【請求項５】
前記要求されたデータを前記ソースノードに返送するかどうかの指示は、前記スヌープ要求の一つのビットとして暗号化されている、請求項１〜３のいずれか一項に記載のデータ処理装置。
【請求項６】
前記送信回路は、追加条件に応じて、前記応答を送信する、請求項１〜５のいずれか一項に記載のデータ処理装置。
【請求項７】
返送許可モードから返送禁止モードに前記データ処理装置を切り替えるモード切替回路を具備し、
前記追加条件は、前記データ処理装置が返送許可モードにあることである、請求項６に記載のデータ処理装置。
【請求項８】
前記データ処理装置が返送禁止モードにあり、前記少なくとも一つのデータ値が前記要求されたデータを含み、当該要求されたデータを前記ソースノードに返送すべきであることを前記指示が示している場合、前記送信回路は、前記要求されたデータがない場合は、前記ソースノードに別の応答を送信する、請求項７に記載のデータ処理装置。
【請求項９】
前記返送許可モードと前記返送禁止モードとに切り替わる場合、前記データ処理装置の現在のモードを含む通知を前記送信回路から前記ソースノードに送信させるよう構成されている、請求項７に記載のデータ処理装置。
【請求項１０】
前記スヌープ要求は、無効化スヌープ要求である、請求項１〜９のいずれか一項に記載のデータ処理装置。
【請求項１１】
要求されたデータに関するデータ要求を受信する受信回路と、
少なくとも一つの他のノードに少なくとも一つのスヌープ要求を送信する送信回路と、を具備し、
各スヌープ要求は、その他のノードが前記要求されたデータを有することに応じて、前記要求されたデータを前記データ処理装置に転送し戻すべきかどうかを示す指示を含む、データ処理装置。
【請求項１２】
前記少なくとも一つの他のノードのどのノードが、前記スヌープ要求及び前記要求されたデータを有していることに応じて、前記要求されたデータを転送可能であるかのリストを保存する参加回路を具備し、
前記少なくとも一つの他のノードのうちの一つが前記要求されたデータを転送可能であるかどうかに関する通知を前記受信回路が受信した場合、前記リストが更新され、
前記送信回路は、前記参加回路からの結果に基づき、前記指示が要求されたデータを前記データ処理装置に転送し戻すべきであることを示す場合、前記スヌープ要求の送信を禁止するよう構成されている、請求項１１に記載のデータ処理装置。
【請求項１３】
前記受信回路が、前記要求されたデータを含まない前記スヌープ要求への応答を受信した場合、前記送信回路は、前記要求されたデータにアクセスするためのメモリアクセス要求をメインメモリに送信する、請求項１１又は１２に記載のデータ処理装置。
【請求項１４】
前記少なくとも一つの他のノードの各ノードについて、少なくとも一つのヒューリスティックを保存し、当該少なくとも一つのヒューリスティックに基づき、前記少なくとも一つの他のノードから選択されたノードを提供するヒューリスティック回路を具備し、
前記送信回路は、前記選択されたノードに前記スヌープ要求を送信するよう構成されている、請求項１１〜１３のいずれか一項に記載のデータ処理装置。
【請求項１５】
前記ヒューリスティックは、レイテンシを示すものである、請求項１４に記載のデータ処理装置。
【請求項１６】
前記少なくとも一つのデータ値をキャッシュするキャッシュ回路をさらに具備し、
前記受信回路が、前記要求されたデータを含む前記スヌープ要求への応答を受信した場合、前記要求されたデータは前記キャッシュに保存される、
ことを特徴とする請求項１１〜１５のいずれか一項に記載のデータ処理装置。
【請求項１７】
前記キャッシュはシステムキャッシュである、請求項１６に記載のデータ処理装置。
【請求項１８】
少なくとも一つのデータ値をキャッシュする工程と、
要求ノードからの要求されたデータに関してソースノードにより送られたスヌープ要求を受信する工程と、
前記スヌープ要求に対する応答を送信する工程と、を具備し、
前記スヌープ要求は、前記要求されたデータを前記ソースノードに返送するかどうかの指示を含み、
前記少なくとも一つのデータ値が前記要求されたデータを含む場合、前記送信回路は、前記指示に応じて、前記要求されたデータを、前記ソースノードに送信する、データ処理方法。
【請求項１９】
要求されたデータに関するデータ要求を受信する工程と、
少なくとも一つの他のノードに少なくとも一つのスヌープ要求を送信する工程と、を具備し、
各スヌープ要求は、前記他のノードが前記要求されたデータを有することに応じて、前記要求されたデータを転送し戻すべきかどうかを示す指示を含む、データ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ処理に関し、特に、キャッシュに関するものである。
【背景技術】
【０００２】
マルチプロセッサシステムでは、それぞれがそれ自身のキャッシュを有するノード又はプロセッサが多数存在する場合がある。これらのノードは、一つ又は複数の共有キャッシュや共有メモリに接続されていてもよい。従って、このような共有キャッシュや共有メモリの一つ、もしくは、上記プロセッサのうちの一つのローカルキャッシュには、特定のデータ値を格納することができる。そのため、あるノードがデータ値にアクセスしたい場合、そのデータを別のノードから取得しなければならないこともある。これは、リクエスタがいわゆるホームノードに要求を送信することにより行われ、これによりシステム全体のデータのコヒーレンシが保たれる。その後、ホームノードは、例えば、メインシステムメモリからデータにアクセスする前に、そのデータがシステム内でコヒーレントに保持されるよう、ノードを「再同期」させる。この処理は、異なるノードが同じデータ値を要求した場合に、いずれ繰り返し行わなければならないこともある。しかしながら、メインシステムメモリへのアクセスは時間のかかる作業となり得る。
【発明の概要】
【課題を解決するための手段】
【０００３】
第１構成例から見ると、要求されたデータに関してソースノードから送られたスヌープ要求を受信する受信回路と、送信回路と、少なくとも一つのデータ値をキャッシュするキャッシュ回路とを具備するデータ処理装置が提供される。上記スヌープ要求は、その要求されたデータをソースノードに返送するかどうかの指示を含み、上記少なくとも一つのデータ値がその要求されたデータを含む場合、上記送信回路は、上記指示に応じて、その要求されたデータを有するソースノードに応答を送信する。
【０００４】
第２構成例から見ると、要求されたデータに関するデータ要求を受信する受信回路と、少なくとも一つの他のノードに少なくとも一つのスヌープ要求を送信する送信回路とを具備するデータ処理装置が提供される。各スヌープ要求は、その他のノードが上記要求されたデータを有することに応じて、その要求されたデータをデータ処理装置に転送し戻すべきかどうかを示す指示を含む。
【０００５】
第３構成例から見ると、少なくとも一つのデータ値をキャッシュする工程と、要求されたデータに関してソースノードから送られたスヌープ要求を受信する工程と、スヌープ要求に対する応答を送信する工程とを具備するデータ処理方法が提供される。上記スヌープ要求は、要求されたデータを上記ソースノードに返送するかどうかの指示を含み、少なくとも一つのデータ値が上記要求されたデータを含む場合、上記送信回路は、上記指示に応じて、その要求されたデータを有するソースノードに応答を送信する。
【０００６】
第４構成例から見ると、要求されたデータに関するデータ要求を受信する工程と、少なくとも一つの他のノードに少なくとも一つのスヌープ要求を送信する工程とを具備するデータ処理方法が提供される。各スヌープ要求は、その他のノードが上記要求されたデータを有することに応じて、その要求されたデータを転送し戻すべきかどうかを示す指示を含む。
【０００７】
本発明について、添付の図面に示すその実施例を参照しながら、ほんの一例としてさらに説明する。
【図面の簡単な説明】
【０００８】
【図１】一実施例に係るデータ処理装置を備えたシステムを示す図である。
【図２】一実施例に係るソースノード、システムキャッシュを有するホームノード、４つのリクエスタノードを示す図である。
【図３】一実施例に係るリクエスタノードとソースノードとの間におけるメッセージのやり取りを概略的に示す図である。
【図４】一実施例に係る図２に示すようなシステム内で時間をかけてやり取りされる一連のメッセージを示す図である。
【図５】一実施例に係る図２に示すようなシステム内で時間をかけてやり取りされる一連のメッセージを示す図である。
【図６】一実施例に係るデータ処理方法を示す図である。
【発明を実施するための形態】
【０００９】
添付の図面を参照した実施例の考察に先立って、実施例を以下に説明する。
【００１０】
一構成例によれば、要求されたデータに関してソースノードから送られたスヌープ要求を受信する受信回路と、送信回路と、少なくとも一つのデータ値をキャッシュするキャッシュ回路とを具備するデータ処理装置が提供される。上記スヌープ要求は、その要求されたデータを上記ソースノードに返送するかどうかの指示を含み、上記少なくとも一つのデータ値がその要求されたデータを含む場合、上記送信回路は、上記指示に応じて、その要求されたデータを有する上記ソースノードに応答を送信する。
【００１１】
ソースノードは、システム全体のコヒーレンシを保つシステム内のホームノードであってもよく、ホームノードのプロキシであってもよい。例えば、多数のチップを有する相互接続システムでは、各チップにソースノードが存在し、ホームノードはその中の一つのチップに存在してもよい。そのため、コヒーレンシ機能の一部は、ノードがホームノードと通信を行う必要なく実施されることがあり、ノードが異なるチップにあると、時間がかかる場合がある。その代わりに、ローカルソースノードを用いて、コヒーレンシをある程度保つことができる。そのような実施例では、ソースノードによって、スヌープ要求が生成される。このスヌープ要求で参照されているデータを有する可能性のある応答ノードがそのスヌープ要求を受信する。このスヌープ要求は、その要求されたデータをソースノードに返送するか否かの指示を含む。これは、コヒーレンシを維持するために行う他のコヒーレンシ維持処理に加えて行われてもよい。この指示は、具体的には、データをソースノードに返送しない（例えば、デフォルトではデータをソースノードに返送する設定の場合）ことを指示するものであってもよく、もしくは、データをソースノードに返送する（例えば、デフォルトではデータをソースノードに返送しない設定の場合）ことを指示するものであってもよい。いずれの場合も、上記指示（及び任意のデフォルト動作）に基づいて、要求されたデータを含むスヌープ要求への応答がソースノードに送信される。このように、ソースノードは、メインメモリにデータを書き戻し、その後メモリから読み出す必要なく、データのコピーを取得することができる。
【００１２】
いくつかの実施例では、上記要求されたデータは、そのデータが共有されていることを示すキャッシュ状態で上記キャッシュ回路に保存される。共有キャッシュ状態は、そのデータが複数のノードでアクセス可能である（かつローカルに保存されている）が、このノードは、そのローカルに保存されたデータを修正する許可を有していないことを示す。
【００１３】
いくつかの実施例では、上記少なくとも一つのデータ値は、要求されたデータを含み、上記送信回路は、上記ホームノードでその要求されたデータに対する要求を行った要求ノードに対して、この要求されたデータを含んださらなる応答を送信する。従って、そのソースノードに送られた応答は、データ処理装置によって発行された唯一の応答ではなくてもよい。具体的には、データは、転送ノードに直接転送し、そして再び（スヌープ要求に与えられた指示に応じて）ソースノードに転送し戻してもよい。このように、そのデータへのアクセスを今後より迅速に行えるよう、かつ、その要求ノードへの送信を迅速に行ってアクセスを行えるよう、ソースノードへのデータ送信を迅速に行うことができる。
【００１４】
いくつかの実施例では、上記要求されたデータをソースノードに返送するかどうかの指示は、上記スヌープ要求の一つのタイプとして暗号化されている。このタイプのスヌープ要求は、それ自体がデータをソースノードに返送するべきか否かを示すものであってもよい。また、他のいくつかの実施例では、上記要求されたデータをソースノードに返送するかどうかの指示は、上記スヌープ要求の一つのビットとして暗号化されている。従って、このスヌープ要求自体は、ソースへのデータの返送が行われる可能性があるか否かを示すフィールド（シングルビットフィールドなど）を有していてもよい。
【００１５】
いくつかの実施例では、上記送信回路は、上記条件に基づいて、上記応答を送信する。つまり、ノードがスヌープ要求メッセージに要求されたデータを有している際、そのスヌープ要求のデフォルト動作及び指示が、要求されたデータ値をソースノードに返送するべきであることを示す場合、追加条件は、その要求されたデータ値をソースノードに返送するか否かを決定する。
【００１６】
そのような追加条件としては、数多くの例が挙げられる。一方、いくつかの実施例では、データ処理装置は、返送許可モードから返送禁止モードにそのデータ処理装置を切り替えるモード切替回路を備えている。上記追加条件は、このデータ処理装置が返送許可モードにあることである。このモード切替回路は、ソースへの返送指示に対して応答するのに積極的であり、よって、適切な場合に、要求されたデータをソースノードに返送する状態と、ソースへの返送指示に対して応答するのに消極的であり、よって、適切な場合であっても、要求されたデータをソースノードに返送しない状態とにノードを切替え可能とする。
【００１７】
いくつかの実施例では、上記データ処理装置が返送禁止モードにあり、上記少なくとも一つのデータ値が上記要求されたデータを含み、その要求されたデータを上記ソースノードに返送すべきであることを上記指示が示している場合、上記送信回路は、要求されたデータがない場合は、ソースノードに別の応答を送信する。これにより、データ処理装置は、返送禁止モードにあるために、要求データを含む応答が送信できなかったとしても、別の応答（例えば、要求されたデータを含まない応答）を送信することができる。いくつかの実施例では、この別の応答は、データ処理装置の現在の状態（データ処理装置が返送禁止モードにあること）を含む。
【００１８】
いくつかの実施例では、上記データ処理装置は、返送許可モードと返送禁止モードとに切り替わる場合、データ処理装置の現在のモードを含む通知を上記送信回路から上記ソースノードに送信させるよう構成されている。ノードが要求されたデータをソースノードに返送すべきであることを示すソースへの返送指示をどのスヌープ要求に（すなわち、どのノードに）含むべきかを判断するために、ソースノードは上記通知を利用することができる。
【００１９】
いくつかの実施例では、上記スヌープ要求は、無効化スヌープ要求である。スヌープ要求は、要求ノードが行った元のアクセス要求が、要求されたデータ値を他のキャッシュにおいて無効にする必要があるというような無効化（非無効化とは対照的に）を要求するものである。これは、例えば、要求ノードが固有にデータを必要とする場合が考えられる。また、要求ノードがデータの修正を望む場合にも起こり得る。これらの場合のいずれにおいても、コヒーレンシは、他のノードがそれらのバージョンのデータを無効化することが必要となりうる。無効化スヌープ要求は、発行されると、要求されたデータのすべてのコピーを無効にするよう、そのデータがローカルにキャッシュされている可能性のあるすべてのノードに送られる。しかしながら、ソースノードがその要求されたデータのコピーを望む場合、そのデータを各ノードからソースノードに返送させることで、かなりの処理能力を使い果たしてしまう可能性がある。そのため、一つのノードにソースノードへのデータ返送を指示することができれば、処理能力をあまり使い果たさずに、無効化とデータ返送を行うことができる。いくつかの実施例では、スヌープ要求は、非無効化要求である。これらの場合、データをソースノードに返送すべきであることを示す指示を含む、要求されたデータを有する可能性のあるノードのうちの一つのノードに、一つのスヌープ要求を送ればよい。当然のことながら、データ処理装置は、無効化スヌープ要求と非無効化スヌープ要求との両方に対応するよう構成することができる。
【００２０】
他の構成例によれば、要求されたデータに関するデータ要求を受信する受信回路と、少なくとも一つの他のノードに少なくとも一つのスヌープ要求を送信する送信回路とを具備するデータ処理装置が提供される。各スヌープ要求は、その他のノードが上記要求されたデータを有することに応じて、その要求されたデータをデータ処理装置に転送し戻すべきかどうかを示す指示を含む。
【００２１】
上記によれば、スヌープ要求メッセージに指示を含むことにより、要求されたデータが受信ノードに保持されている場合に、そのデータを再びソースノードに与えるべきかどうかを受信ノードに示すことが可能となる。上述したように、この指示は、デフォルト動作と組み合わせることができる。つまり、デフォルト動作は、データをソースノードに返送する動作である場合もあり、指示はその反対を示すものであってもよい。また、デフォルト動作は、データをソースノードに返送しない動作である場合もあり、指示はデータをソースノードに返送すべきであることを示すものであってもよい。
【００２２】
いくつかの実施例では、データ処理装置は、上記少なくとも一つの他のノードのどのノードが、上記スヌープ要求及び上記要求されたデータを有していることに応じて、その要求されたデータを転送可能であるかのリストを保存する参加回路を備えている。上記少なくとも一つの他のノードのうちの一つが上記要求されたデータを転送可能であるかどうかに関する通知を上記受信回路が受信した場合、上記リストは更新される。また、上記送信回路は、上記参加回路からの結果に基づき、上記指示が要求されたデータをデータ処理装置に転送し戻すべきであることを示す場合、スヌープ要求の送信を禁止するよう構成されている。このように、ソースノードは、要求されたデータをソースノードに転送し戻すのに積極的であるノードと、そうでないノードとを把握することができる。そして、データ処理装置は、上記指示が要求されたデータをデータ処理装置に転送し戻すべきであることを示す場合、上記参加回路からの結果に基づき、スヌープ要求の送信を禁止することができる。例えば、ノードがソースノードにデータを返送できない（又は返送しない）ことを示した場合、送信回路は、そのデータはソースノードに返送すべきであることを示すノードへのスヌープ要求の送信を禁止してもよい。これにより、データ処理装置が必然的に拒絶されることになる不要な要求をしないようにすることができる。
【００２３】
いくつかの実施例では、上記受信回路が、上記要求されたデータを含まないスヌープ要求への応答を受信した場合、上記送信回路は、その要求されたデータにアクセスするためのメモリアクセス要求をメインメモリに送信する。それにより、ソースノードにデータを返送する準備ができていないノードを把握するのではなく、そのデータを、メインメモリや、場合によっては他のノードなど、他の場所から取得することにより拒絶に対処することができる。
【００２４】
いくつかの実施例では、上記データ処理装置は、上記少なくとも一つの他のノードの各ノードについて、少なくとも一つのヒューリスティックを保存し、その少なくとも一つのヒューリスティックに基づき、上記少なくとも一つの他のノードから選択されたノードを提供するヒューリスティック回路を備えている。上記送信回路は、この選択されたノードに上記スヌープ要求を送信するよう構成されている。使用可能なヒューリスティックとしては、数多くの例が挙げられるが、いくつかの実施例では、ヒューリスティックは、レイテンシを示すものである。従って、複数の他のノードのうちの一つからデータの読み出しを行う場合、最短のレイテンシが示されているノードに（データをソースノードに返送すべきであることを示す）スヌープ要求を送信することができる。その結果、より長いレイテンシを有するノードに対して、データをソースノードに返送すべきであることを示す要求が行われた場合と比較して、データ取得がより迅速に行われる。
【００２５】
いくつかの実施例では、上記データ処理装置は、少なくとも一つのデータ値をキャッシュするキャッシュ回路を備えている。上記受信回路が、上記要求されたデータを含むスヌープ要求への応答を受信した場合、その要求されたデータは上記キャッシュに保存される。このように返送されたデータ値をキャッシュに保存することにより、システム内の他のノードからデータを取得するのにスヌープ要求の発行が必要な場合（もしくは、メインシステムメモリからデータを取得する必要がある場合）と比較して、今後行われるそのデータへの要求をソースノードによってより迅速に返送することができる。その結果、そのデータへのその後の要求に関するレイテンシを改善することができる。このようなキャッシュとしては、数多くの例が挙げられるが、いくつかの実施例では、このキャッシュはシステムキャッシュである。システムキャッシュは、メモリ階層において、メインシステムメモリの前の最後のキャッシュレベルであってもよい。従って、システムは、システム内のすべてのノードによって共有可能であり、メインシステムメモリからそのデータにアクセスする場合と比べて、データへの迅速なアクセスが可能となる。
【００２６】
次に、図面を参照しながら、具体的な実施例について説明する。
【００２７】
図１は、データ処理システム１００を示す。このデータ処理システム１００には、ホームノード１１０、第１要求ノード１２０、第２要求ノード１３０が含まれる。第１要求ノード１２０と第２要求ノード１３０は、相互接続内のマスターノードであってもよい。図１に示す実施例では、第１要求ノード１２０を要求ノード、第２要求ノード１３０を応答ノードと呼ぶ。このデータ処理システム１００の各ノード１１０、１２０、１３０は、キャッシュを備えている。各キャッシュは、３つのカラムを有して示されている。第１カラムはデータ値のアドレスを示し、第２カラムはそのデータ値自体を示し、第３カラムはそのデータ値に関連付けられたキャッシュ状態を示す。このキャッシュ状態は、本実施例では、特定のエントリが無効であり、上書き可能であることを示す「Ｉ」、特定のエントリが共有されダーティである（すなわち、特定のエントリが他のノードに共有されているが、ローカルに修正されるようそのノードに「所有」される）ことを示す「ＳＤ」、エントリがシステムの他のノードに共有され、修正不可能となるよう「共有」されることを示す「ＳＣ」、エントリがノードに固有に所有され、修正が行われないよう「排他的」であることを示す「ＵＣ」のいずれかであればよい。図１の実施例に示すように、ノード１２０、１３０の一方又は両方は、他方がアクセスできないデータ地にアクセス可能であってもよい。例えば、要求ノード１２０は、応答ノード１３０が保持するデータ値０ｘ００９４にアクセスできない。同様に、応答ノード１３０は、要求ノード１２０が保持するデータ値０ｘ００９０にアクセスできない。このため、要求ノード１２０は、データ値０ｘ００９４へのアクセスを求める場合、そのデータ値へのアクセスを得るため、データ処理システム１００全体のコヒーレンシを維持するホームノード１１０に要求を送信する必要がある。これは、一つ又は複数のスヌープ要求を分配することにより行われる。
【００２８】
図１には図示していないが、データ処理システム１００は、ホームノード１１０を介して接続されたメインシステムメモリをさらに備えていてもよい。ホームノード１１０からの要求に応じて、このメインシステムメモリからのデータの読み出しを行うことができる。しかしながら、メインシステムメモリへのアクセスは、通常、キャッシュの一つへのアクセスよりも遅いため、この処理には時間がかかる場合がある。
【００２９】
図２は、一実施例に係るデータ処理システム１００を概略的に示す。４つの要求ノード１２０、１３０、１４０、１５０がソースノード１６０に接続され、このソースノード１６０がホームノード１１０に接続されている。ソースノードは、スヌープ要求が生じるノードである。従って、ソースノードは、ホームノード１１０のプロキシとして機能することができる、もしくは、そのホームノード１１０自体であってもよい。一般的に、ソースノード１６０をチップに設けて、ホームノード１１０を異なるチップに設けてもよい。これにより、速度が遅く、処理能力を制限し得るチップ間通信の量を低減することができる。
【００３０】
ホームノード１１０は、システムキャッシュ１７０にも接続されている。このシステムキャッシュは、システム１００内の共有キャッシュとしての機能を果たし、例えば、メインシステムメモリから読み出されたデータに対して、今後より迅速なデータアクセスが行えるようキャッシュ処理を行うことができる。
【００３１】
図３は、応答ノード１３０として機能する要求ノードとソースノード１６０とがメッセージをやり取りする構造の例を概略的に示す。この例では、他の要求ノード１２０が、アドレス０ｘ００９０のデータへのアクセスをソースノード１６０に要求した場合を想定する。これにより、ソースノード１６０は、スヌープ要求を生成し、このスヌープ要求が要求ノード１３０に送られる。この例では、ソースノード１６０は、送信を行う回路である送信回路１８０と、他のノードからの送信を受信する回路である受信回路１９０と、他のノードのモードを追跡する回路（以下に説明する）である参加回路１９５と、データをローカルにキャッシュする回路であるキャッシュ回路２００と、例えば、統計データ及び／又は履歴データに基づき、ヒューリスティック分析を行う回路であるヒューリスティック回路２１０とを備えている。要求／応答ノード１３０は、他のノードからの送信を受信する受信回路２２０と、送信を行う回路である送信回路２３０と、データをローカルにキャッシュする回路であるキャッシュ回路２４０と、この要求／応答ノード１３０の動作モードを切り替える回路であるモード切替回路２５０とを備えている。
【００３２】
前述したように、この例では、他の要求ノード１２０（この図では図示せず）が、現時点で応答ノード１３０に保持されているアドレス０ｘ００９０のデータへのアクセスを要求した場合を想定している。このデータ要求をソースノード１６０に送信すると、ソースノードはスヌープ要求メッセージを生成する。このスヌープ要求メッセージは、システム内のコヒーレンシの援助を目的とするものである。例えば、要求ノード１２０が、アドレス０ｘ００９０のデータに対する書き込みアクセスを要求している場合、スヌープ要求は、他のノード（応答ノード１３０など）が以前にそのデータに対する書き込みアクセスを要求した状況に対処することになる。２つのノードが両方そのデータへの書き込みアクセスを持つことは、そのデータの異なる値が異なるノードに保存されることになるため、不可能である。同様に、他のノード（応答ノード１３０など）がそのデータに対する読み出しアクセスを要求した場合、このデータは、要求ノード１６０で受信と更新が行われると、他のノード（応答ノード１３０など）で保持されたそのコピーが古くなるため、そのデータの無効化を行わなければならない。
【００３３】
本例では、スヌープ要求は、ソースノード１６０の送信回路１８０によって送信され、応答ノード１３０の受信回路２２０によって受信される。スヌープ要求メッセージには、応答ノード１３０で保持されたデータ値がその応答ノードに転送し戻されるべきか否かを示す特別な識別子（ＲｔｎＴｏＳｒｃ）が含まれる。この識別子は、この例では、単一ビットの形態を取るが、他の実施例では、スヌープ要求メッセージのタイプの一部を形成してもよい。この場合、応答ノードのデフォルト動作と連動した指示（すなわち、提供されたデータで対応しない指示）により、スヌープ要求に応じてデータ提供が行われる。この応答メッセージには、要求されたデータ値が応答ノード１３０のキャッシュ２４０に保持された状態（すなわち、値５）で含まれている。この応答メッセージは、応答ノード１３０の送信回路２３０によって送信され、ソースノード１６０の受信回路１９０によって受信される。
【００３４】
図３に示す実施例では、応答ノード１３０は、モード切替回路２５０をさらに備えている。このモード切替回路は、ノードが、（要求されたとしても）ＲｔｎＴｏＳｒｃ指示を履行しない第１の非返送モードと、ＲｔｎＴｏＳｒｃ指示を履行する第２の返送モードとに切り替わることを可能にする。つまり、いずれの場合も、ノードは、スヌープ要求に応答することができる。しかしながら、応答ノード１３０のモードは、その要求にかかわらず、要求されたデータのソースノード１６０への返送を許可又は禁止することができる。動作モードの変更は、ソースノード１６０に通知することができ、ソースノード１６０は、ＲｔｎＴｏＳｒｃ指示に応答する／しないノードを把握できるよう、その参加回路１９５内の情報を追跡する。このように、ソースノード１６０は、要求されたデータをソースノードに返送しないノードへデータを返送する要求の送信を回避することができる。
【００３５】
また、図３に示す実施例では、ソースノード１６０は、ヒューリスティック回路２１０を備えている。ソースノード１６０は、このヒューリスティック回路２１０により、ヒューリスティックデータを保持する。このデータは、例えば、他のノードに関する統計データや履歴データであってもよい。このデータは、例えば、ＲｔｎＴｏＳｒｃ指示を発行するのに適切なノードを選択するために、ソースノードが行う学習処理の一部として用いてもよい。場合によっては、例えば、たった一つのノードが、スヌープ要求に応じて、要求されたデータの返送を行えばよい。従って、ソースノード１６０は、どのノードが最も迅速に応答する可能性が高いか、例えば、どれが一番レイテンシが短いかを、ヒューリスティックデータを用いて判断してもよい。
【００３６】
図４は、一実施例において行われる一連のメッセージのやり取りを示す。最初に、要求ノード１２０は、特定のデータ項目に対する固有のアクセスを要求するＲｅａｄＵｎｉｑｕｅメッセージをソースノード１６０に発行する。その結果、ソースノード１６０は、ネットワーク内の他のノードに保持されたデータのコピーを無効にする。これは、要求されたデータのローカルにキャッシュされたコピーを有する可能性のあるノードにＳｎｐＵｎｉｑｕｅメッセージ（無効化スヌープ要求の一例）を送信することで行われる。上記ノードのうちの一つのノード１５０だけ、ＲｔｎＴｏＳｒｃ指示が１に設定され、ノードが要求されたデータを返送することを示している。他のノードは、要求されたデータを返送しないことを示す、ＲｔｎＴｏＳｒｃ指示が０に設定されたメッセージを受信する。このように、ソースノード１６０は、メインシステムメモリを参照することなく、かつ、返送するデータの複数のコピーを必要とせずに、データのコピーを取得することができる。ソースノード１６０は、ヒューリスティックデータを有する場合、要求されたデータのコピーを返送する、レイテンシが最短のノードを求めるのにこのデータを用いてもよい。これにより、データをより迅速に要求ノード１２０に返送することができる。この場合、要求ノード１５０は、ＳｎｐＲｅｓｐＤａｔａメッセージにより要求されたデータを返送し、これが再びソースノード１６０に送り返される。各要求ノードでは、キャッシュ状態がＳＣ（共有かつクリーン）からＩ（無効）に変更され、キャッシュラインにこれ以上依存すべきではないこと、並びに、キャッシュラインが上書き可能であることが示される。
【００３７】
ソースノード１６０は、応答ノード１５０からデータを受信すると、そのデータを要求ノード１２０に返送してもよく、及び／又は、システムキャッシュ１７０などのキャッシュ及び／又はメインシステムメモリに再びそのデータを保存してもよい。これにより、データを要求ノード１２０に迅速に（すなわち、メインメモリからのデータアクセスに遅延を生じさせずに）提供することができ、他のノードによって追加要求がなされた場合に、より迅速にアクセスできるようにキャッシュ１７０に保存することができる。
【００３８】
本説明では、応答ノードが、要求ノードに要求されたデータを有することを想定した。そうでない場合は、応答ノードが要求されたデータを提供できないことは明らかである。状況に応じて、このことに関する通知をソースノード１６０に送り返してもよいし、何ら応答を行わなくてもよい。例えば、ノードが、データの返送が許されていない非返送モードである場合、要求されたデータを有していないことを示さなくてもよい。
【００３９】
要求された場合（データの返送が行われないという結論をソースノード１６０が出すように、応答を受信するのに時間がかかり過ぎる場合）に、ノードがデータをソースノード１６０に返送しない場合、ソースノード１６０は、別の要求ノードから、又は、メインシステムメモリや、システムキャッシュ１７０などの共有キャッシュからデータを求めてもよい。これを行うかどうかの判断は、成功の予想とさまざまなオプションのそれぞれにかかる時間との比較に左右される。この場合も同様に、入手可能な場合は、ヒューリスティックデータにより判定を行うことができる。
【００４０】
図５は、一実施例において行われる一連のメッセージのやり取りを示す。この例では、要求ノード１２０は、データへの共有アクセスしか要求しない。従って、対応するＲｅａｄＳｈａｒｅｄメッセージがソースノード１６０に送信されると、ソースノード１６０は、非無効化スヌープであるＳｎｐＳｈａｒｅｄＦｗｄを送信することができる。これは、要求ノード１２０がデータへの読み出しアクセスを有する唯一のノードであることを要求していない場合、他のノードでデータの無効化を行う必要がない。その代わりに、データを返送すべきであることを示すよう設定されたＲｔｎＴｏＳｒｃ指示を有するスヌープ要求を発行することにより、データのコピーを取得するだけで十分である。この場合も同様に、例えば、レイテンシを最小限に抑えるために、ヒューリスティックデータを用いて上記ノードからクエリーを行うノードを選択してもよい。応答ノード１３０は、このスヌープ要求を受信すると、ＳｎｐＲｅｓｐＤａｔａメッセージにより、要求されたデータをソースノード１６０に返送する。
【００４１】
なお、本実施例では、応答ノード１３０は、ＣｏｍｐＤａｔａメッセージにおいて生じる要求されたデータをさらに要求ノード１２０に返送するよう指示される。そして、要求ノード１２０は、要求されたデータが受信されたことを示し、よってソースノード１６０が要求ノード１２０への要求されたデータの２度目の転送を行わなくてもよいことを示す指示（ＣｏｍｐＡｃｋ）によりソースノード１６０に応答することができる。
【００４２】
図６は、一実施例に係るデータ処理方法を示すフローチャート２６０である。この方法は、例えば、ソースノード１６０によって具現化されてもよい。この処理は、ステップ２７０で、要求ノード１２０が特定のデータに対する要求を受信することで開始する。ステップ２８０では、ソースノード１６０によりスヌープ要求が生成される。ステップ２９０では、データ値をソースノードに返送すべきであることを示すよう設定された指示（ＲｔｎＴｏＳｒｃ）を有する一つのノードにスヌープ要求が送信される。このスヌープ要求の性質（無効化又は非無効化）は、ステップ２７０で受信したデータ要求に基づいて適宜設定される。ステップ３００では、無効化スヌープ要求を発行すべきか否かを判断する。そうである場合は、ステップ３１０で、他のノードのキャッシュからのデータ値を無効にするため、要求されたデータのコピーを保存している可能性がある他のノードに同様のスヌープ要求を送信する。これらのメッセージでは、ＲｔｎＴｏＳｒｃ指示は、ノードが要求されたデータのコピーを返送しないよう設定されている。これは、要求されたデータのコピーが一つしか必要ではない場合に、ソースノードがそのコピーを大量に受信するのを防止するのに寄与する。これが行われると、もしくは、ステップ３００で、スヌープ要求が非無効化である場合、ステップ３２０で、返送されたデータが処理される。例えば、要求されたデータは、メモリや、システムキャッシュなどのキャッシュに保存することができる。また、要求されたデータは、適宜、要求ノードへ転送することもできる。
【００４３】
このように、要求されたデータを、メインシステムメモリに頼らずに取得することが可能であることが分かる。さらに、読み出されたデータは、その後の要求に対してより迅速に応答できるようキャッシュに保存することができる。
【００４４】
本出願において、「するよう構成された」という表現は、装置の要素が規定の動作を実行可能な構成を有することを意味するのに用いられる。これに関連して、「構成」とは、ハードウェアやソフトウェアを相互に接続する配置や方法を指す。例えば、装置は、規定の動作を行うための専用のハードウェアを有していてもよいし、プロセッサや他の処理装置は、その機能を実行するようプログラムされていてもよい。「するよう構成された」は、規定の動作を行うために、装置の要素に対して何らかの変更を加える必要があることを意味するものではない。
【００４５】
以上、本発明の例示的な実施例について、添付の図面を参照しながら詳細に説明したが、本発明はこれらの具体的な実施例に限定されるものではなく、当業者なら、添付の特許請求の範囲に記載の本発明の精神と範囲から逸脱することなく、さまざまな変更、追加、修正を加えることができることを理解されたい。例えば、本発明の範囲から逸脱することなく、従属請求項の特徴と独立請求項の特徴とをさまざまに組み合わせることができる。
【符号の説明】
【００４６】
１００・・・データ処理システム
１１０・・・ホームノード
１２０、１３０、１４０、１５０・・・ノード
１６０・・・ソースノード
１７０・・・システムキャッシュ
１８０、２３０・・・送信回路
１９０、２２０・・・受信回路
１９５・・・参加回路
２００、２４０・・・キャッシュ回路
２５０・・・モード切替回路
【図１】
2018152054.tif 000003
【図２】
2018152054.tif 000004
【図３】
2018152054.tif 000005
【図４】
2018152054.tif 000006
【図５】
2018152054.tif 000007
【図６】
2018152054.tif 000008
【外国語明細書】
2018152054000001.pdf