(57)【要約】  本発明では、マルチプロセッサシステムは、複数のプロセッサとプロセッサにそれぞれ対応するキャッシュメモリとキャッシュアクセスコントローラを有している。キャッシュアクセスコントローラは、各プロセッサからの間接アクセス命令に応答して、間接アクセス命令を発行したプロセッサに対応するキャッシュメモリを除くキャッシュメモリにアクセスする。これにより、一方のプロセッサが、他方のプロセッサのキャッシュメモリに格納されているデータをアクセスする場合でも、キャッシュメモリ間でのデータの転送は、不要である。したがって、複数のプロセッサと共有しているデータに対するアクセスのレイテンシを小さくできる。また、キャッシュメモリ間の通信は、間接アクセス命令の実行時のみ行われるので、キャッシュメモリ間のバスのトラフィックを軽減できる。
2007110898.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサと、
前記プロセッサにそれぞれ対応するキャッシュメモリと、
前記各プロセッサからの間接アクセス命令に応答して、前記間接アクセス命令を発行したプロセッサに対応するキャッシュメモリを除くキャッシュメモリにアクセスするキャッシュアクセスコントローラとを備えていることを特徴とするマルチプロセッサシステム。
【請求項２】
請求項１記載のマルチプロセッサシステムにおいて、
前記間接アクセス命令によりアクセスされるキャッシュメモリを示す情報が、前記プロセッサごとに設定される書き換え可能なアクセス先設定レジスタを備え、
前記キャッシュアクセスコントローラは、前記間接アクセス命令に応答して、前記アクセス先設定レジスタに設定された情報に対応するキャッシュメモリにアクセスすることを特徴とするマルチプロセッサシステム。
【請求項３】
請求項１記載のマルチプロセッサシステムにおいて、
前記各プロセッサは、前記間接アクセス命令によりアクセスされるキャッシュメモリを示す情報を前記間接アクセス命令の命令フィールドに指定し、
前記キャッシュアクセスコントローラは、前記間接アクセス命令に応答して、前記命令フィールドに指定された情報に対応するキャッシュメモリにアクセスすることを特徴とするマルチプロセッサシステム。
【請求項４】
請求項１記載のマルチプロセッサシステムにおいて、
前記キャッシュアクセスコントローラは、前記間接アクセス命令によりアクセスされるキャッシュメモリで、アクセス対象のアドレスがキャッシュヒットする場合、そのキャッシュメモリのデータにアクセスすることを特徴とするマルチプロセッサシステム。
【請求項５】
請求項１記載のマルチプロセッサシステムにおいて、
前記プロセッサに共有され、前記キャッシュメモリより階層が低い共有メモリを備え、
前記間接アクセス命令によりアクセスされるキャッシュメモリは、アクセス対象のアドレスがキャッシュミスする場合、アクセス対象のアドレスが含まれるキャッシュラインのデータを前記共有メモリから読み出し、読み出したデータを格納し、
前記キャッシュアクセスコントローラは、前記間接アクセス命令に対応するキャッシュメモリに格納されたデータにアクセスすることを特徴とするマルチプロセッサシステム。
【請求項６】
複数のプロセッサと前記プロセッサにそれぞれ対応するキャッシュメモリとを備えたマルチプロセッサシステムの動作方法であって、
前記各プロセッサからの間接アクセス命令に応答して、前記間接アクセス命令を発行したプロセッサに対応するキャッシュメモリを除くキャッシュメモリにアクセスすることを特徴とするマルチプロセッサシステムの動作方法。
【請求項７】
請求項６記載のマルチプロセッサシステムの動作方法において、
前記プロセッサごとに、前記間接アクセス命令によりアクセスされるキャッシュメモリを示すアクセス先情報を書き換え可能に設定し、
前記間接アクセス命令に応答して、前記アクセス先情報に対応するキャッシュメモリにアクセスすることを特徴とするマルチプロセッサシステムの動作方法。
【請求項８】
請求項６記載のマルチプロセッサシステムの動作方法において、
前記間接アクセス命令によりアクセスされるキャッシュメモリを示す情報を前記間接アクセス命令の命令フィールドに指定し、
前記間接アクセス命令に応答して、前記命令フィールドに指定された情報に対応するキャッシュメモリにアクセスすることを特徴とするマルチプロセッサシステムの動作方法。
【請求項９】
請求項６記載のマルチプロセッサシステムの動作方法において、
前記間接アクセス命令によりアクセスされるキャッシュメモリで、アクセス対象のアドレスがキャッシュヒットする場合、そのキャッシュメモリのデータにアクセスすることを特徴とするマルチプロセッサシステムの動作方法。
【請求項１０】
請求項６記載のマルチプロセッサシステムの動作方法において、
前記プロセッサは、前記キャッシュメモリより階層が低い共有メモリを共有し、
前記間接アクセス命令によりアクセスされるキャッシュメモリで、アクセス対象のアドレスがキャッシュミスする場合、アクセス対象のアドレスが含まれるキャッシュラインのデータを前記共有メモリから読み出し、
前記間接アクセス命令に対応するキャッシュメモリに読み出したデータを格納し、
前記間接アクセス命令に対応するキャッシュメモリに格納されたデータにアクセスすることを特徴とするマルチプロセッサシステムの動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムおよびマルチプロセッサシステムの動作方法に関する。
【背景技術】
【０００２】
一般に、プロセッサシステムでは、プロセッサと主記憶装置であるメインメモリの間に高速なキャッシュメモリを搭載する方式がとられている。これにより、プロセッサとメインメモリの動作速度のバランスがとられる。また、高い処理性能が要求されるシステムでは、複数のプロセッサを使用するマルチプロセッサシステムが構築される。複数のプロセッサがメインメモリをアクセスするマルチプロセッサシステムでは、例えば、キャッシュメモリは、プロセッサごとに搭載され、各キャッシュメモリは、他のキャッシュメモリと同じデータを共有しているかどうかを互いに監視する（例えば、特許文献１参照）。
【特許文献１】特開平４−９２９３７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
この種のマルチプロセッサシステムでは、各キャッシュメモリは、他のプロセッサからのデータのアクセス要求に対して、アクセス対象のデータを共有しているかどうかを常に監視する。このため、監視のための通信が増加し、キャッシュメモリ間のバスの利用量（トラフィック）が増加する。さらには、プロセッサ数が増えると、監視するキャッシュメモリと監視されるキャッシュメモリがそれぞれ増えるので、ハードウェアが複雑になる。このため、マルチプロセッサシステムを構築するための設計が難しい。また、一方のプロセッサが他方のプロセッサのキャッシュメモリに格納されているデータを読み出すとき、例えば、データが格納されているキャッシュメモリは、データを読み出すプロセッサのキャッシュメモリにデータを転送する。その後に、読み出しを要求したプロセッサは、対応するキャッシュメモリからデータを受け取る。このため、プロセッサがキャッシュメモリにアクセスを要求してからデータを受け取るまでの遅延時間（レイテンシ）は、大きくなる。【０００４】
本発明の目的は、キャッシュメモリ間のバスのトラフィックを軽減し、複数のプロセッサで共有しているデータに対するアクセスのレイテンシを小さくすることである。
【課題を解決するための手段】
【０００５】
本発明では、マルチプロセッサシステムは、複数のプロセッサとプロセッサにそれぞれ対応するキャッシュメモリとキャッシュアクセスコントローラを有している。キャッシュアクセスコントローラは、各プロセッサからの間接アクセス命令に応答して、間接アクセス命令を発行したプロセッサに対応するキャッシュメモリを除くキャッシュメモリにアクセスする。これにより、一方のプロセッサが、他方のプロセッサのキャッシュメモリに格納されているデータをアクセスする場合でも、キャッシュメモリ間でのデータの転送は、不要である。したがって、複数のプロセッサと共有しているデータに対するアクセスのレイテンシを小さくできる。また、キャッシュメモリ間の通信は、間接アクセス命令の実行時のみ行われるので、キャッシュメモリ間のバスのトラフィックを軽減できる。
【発明の効果】
【０００６】
キャッシュメモリ間のバスのトラフィックを軽減し、複数のプロセッサで共有しているデータに対するアクセスのレイテンシを小さくできる。
【図面の簡単な説明】
【０００７】
【図１】本発明の第１の実施形態を示すブロック図である。
【図２】図１に示したマルチプロセッサシステムにおけるデータをストアするときの動作の一例を示すフローチャートである。
【図３】図１に示したマルチプロセッサシステムにおけるデータをロードするときの動作の一例を示すフローチャートである。
【図４】本発明の第２の実施形態を示すブロック図である。
【図５】図４に示したアクセス先設定レジスタの設定内容の一例を示す説明図である。
【図６】図４に示したマルチプロセッサシステムにおけるデータをストアするときの動作の一例を示す説明図である。
【図７】図４に示したマルチプロセッサシステムにおけるデータをロードするときの動作の一例を示す説明図である。
【図８】本発明におけるデータをロードするときの動作の比較例を示す説明図である。
【図９】本発明の別の例を示すブロック図である。
【図１０】本発明の別の例を示すブロック図である。
【発明を実施するための最良の形態】
【０００８】
以下、本発明の実施形態を図面を用いて説明する。
図１は、本発明の第１の実施形態を示している。マルチプロセッサシステムは、プロセッサＰ０、Ｐ１、Ｐ２、キャッシュメモリＣ０、Ｃ１、Ｃ２、キャッシュアクセスコントローラＡＣＮＴおよびメインメモリＭＭを有している。プロセッサＰ０、Ｐ１、Ｐ２は、それぞれキャッシュメモリＣ０、Ｃ１、Ｃ２に直接接続されている。キャッシュアクセスコントローラＡＣＮＴは、プロセッサＰ０、Ｐ１、Ｐ２およびキャッシュメモリＣ０、Ｃ１、Ｃ２に接続されている。メインメモリＭＭは、キャッシュメモリＣ０、Ｃ１、Ｃ２に接続されている。【０００９】
キャッシュメモリＣ０、Ｃ１、Ｃ２は、対応するプロセッサから直接アクセスされる。キャッシュアクセスコントローラＡＣＮＴは、プロセッサと直接接続されていないキャッシュメモリにアクセスする命令である間接アクセス命令をプロセッサＰ０、Ｐ１、Ｐ２から受け取る。受け取った間接アクセス命令に応答して、キャッシュアクセスコントローラＡＣＮＴは、間接アクセス命令に対応するキャッシュメモリにアクセスする。すなわち、キャッシュメモリＣ０、Ｃ１、Ｃ２は、キャッシュアクセスコントローラＡＣＮＴを経由して、直接接続されていないプロセッサからもアクセスされる。メインメモリＭＭは、プロセッサＰ０、Ｐ１、Ｐ２が共有して使用する主記憶装置であり、キャッシュメモリＣ０、Ｃ１、Ｃ２によりアクセスされる。本実施形態では、メインメモリＭＭは、階層が一番低い共有メモリである。【００１０】
図２は、図１に示したマルチプロセッサシステムにおけるデータをストアするときの動作の一例を示している。この例では、アドレスＸのデータは、プロセッサＰ０、Ｐ１に共有され、キャッシュメモリＣ０に格納されていない。ここで、アドレスＸは、メインメモリＭＭ内のアドレスを示している。
まず、プロセッサＰ０は、キャッシュアクセスコントローラＡＣＮＴに対して、アドレスＸにデータを書き込む命令である間接ストア命令を発行する（ステップＳ１００）。ここで、間接ストア命令は、命令を発行したプロセッサとは別のプロセッサのキャッシュメモリにデータを書き込む命令であり、上述の間接アクセス命令の１つである。また、上述の間接ストア命令によりアクセスされるキャッシュメモリの指定方法は、例えば、命令フィールドに指定する方法がある。すなわち、間接アクセス命令を発行するプロセッサは、間接ストア命令の命令フィールドに、アクセスされるキャッシュメモリを示す情報を指定する。本実施形態では、ステップＳ１００で、プロセッサＰ０は、命令フィールドにキャッシュメモリＣ１を示す情報が含まれた間接ストア命令をキャッシュアクセスコントローラＡＣＮＴに発行している。【００１１】
キャッシュアクセスコントローラＡＣＮＴは、間接ストア命令を受信する（ステップＳ１１０）。キャッシュアクセスコントローラＡＣＮＴは、キャッシュメモリＣ１にアドレスＸへのデータのストア（書き込み）を要求する（ステップＳ１２０）。キャッシュメモリＣ１は、アドレスＸがキャッシュヒットかキャッシュミスかを判定する（ステップＳ１３０）。【００１２】
ステップＳ１３０でキャッシュヒットの場合、キャッシュメモリＣ１は、プロセッサＰ０からキャッシュアクセスコントローラＡＣＮＴを経由して受信したデータをアドレスＸが含まれるキャッシュラインにストアする（ステップＳ１６０）。ステップＳ１６０により、キャッシュメモリＣ１のデータは、更新される。このように、プロセッサＰ０が、プロセッサＰ１のキャッシュメモリＣ１に格納されているデータを更新する場合でも、キャッシュメモリＣ１からキャッシュメモリＣ０にデータを転送する必要がない。したがって、プロセッサＰ０がプロセッサＰ１と共有しているデータを更新するときのレイテンシを小さくできる。【００１３】
ステップＳ１３０でキャッシュミスの場合、キャッシュメモリＣ１は、メインメモリＭＭにアドレスＸのロード（読み出し）を要求する（ステップＳ１４０）。キャッシュメモリＣ１は、アドレスＸが含まれるキャッシュラインのデータをメインメモリＭＭからロードする。キャッシュメモリＣ１は、メインメモリＭＭからロードしたキャッシュラインを格納する（ステップＳ１５０）。ステップＳ１４０、Ｓ１５０により、メインメモリＭＭのアドレスＸのデータは、キャッシュメモリＣ１に格納される。キャッシュメモリＣ１は、プロセッサＰ０からキャッシュアクセスコントローラＡＣＮＴを経由して受信したデータをアドレスＸが含まれるキャッシュラインにストアする（ステップＳ１６０）。ステップＳ１６０により、アドレスＸの最新のデータは、キャッシュメモリＣ１に格納される。これにより、例えば、ステップＳ１６０の後に、プロセッサＰ１がアドレスＸのデータをロードする場合、メインメモリＭＭあるいは他のキャッシュメモリからデータを転送する必要がない。したがって、プロセッサＰ１がアドレスＸのデータにアクセスするときのレイテンシを小さくできる。【００１４】
キャッシュメモリＣ１は、データの書き込み条件がライトスルーか否かを判定する（ステップＳ１７０）。ここで、ライトスルーとは、プロセッサが、階層が上位のキャッシュメモリにデータを書き込む場合、階層が上位のキャッシュメモリと同時に階層が下位のメモリにもデータを書き込む方式である。ステップＳ１７０でライトスルーの場合、キャッシュメモリＣ１は、ステップＳ１６０でストアするデータをメインメモリＭＭのアドレスＸにもストアする（ステップＳ１８０）。ステップＳ１７０でライトスルーでない場合、キャッシュメモリＣ１は、ステップＳ１６０によりデータがストアされたキャッシュラインを“ダーティ”に設定する（ステップＳ１９０）。ここで、“ダーティ”は、階層が上位のキャッシュメモリにあるデータのみ更新して、階層が下位のメモリにあるデータを更新していない状態である。【００１５】
また、キャッシュメモリ間の通信は、上述のステップＳ１００−Ｓ１９０で示した命令の実行時のみ行われるので、キャッシュメモリ間のバスのトラフィックを軽減できる。上述のステップＳ１００−Ｓ１９０では、プロセッサＰ０とプロセッサＰ１で共有しているアドレスＸのデータは、キャッシュメモリＣ０に格納されないので、共有しているデータの一致性に関する管理を簡単にできる。【００１６】
上述の動作フローでは説明していないが、キャッシュラインをリプレースする動作は、従来の方式と同様である。例えば、ステップＳ１５０で、キャッシュラインを格納したときに、リプレースされるキャッシュラインがある場合、リプレースされるキャッシュラインを破棄する。但し、リプレースされるキャッシュラインが“ダーティ”の場合、階層が下位のメインメモリＭＭにリプレースされるキャッシュラインを書き戻す。【００１７】
図３は、図１に示したマルチプロセッサシステムにおけるデータをロードするときの動作の一例を示している。この例では、アドレスＸのデータは、プロセッサＰ０、Ｐ１に共有され、キャッシュメモリＣ０に格納されていない。
まず、プロセッサＰ０は、キャッシュアクセスコントローラＡＣＮＴに対して、アドレスＸのデータをキャッシュメモリＣ１から読み出す命令である間接ロード命令を発行する（ステップＳ２００）。ここで、間接ロード命令は、命令を発行したプロセッサとは別のプロセッサのキャッシュメモリからデータを読み出す命令であり、上述の間接アクセス命令の１つである。すなわち、間接アクセス命令は、間接ストア命令あるいは間接ロード命令を意味する。また、アクセスされるキャッシュメモリＣ１を示す情報は、間接ロード命令の命令フィールドに指定されている。【００１８】
キャッシュアクセスコントローラＡＣＮＴは、間接ロード命令を受信する（ステップＳ２１０）。キャッシュアクセスコントローラＡＣＮＴは、キャッシュメモリＣ１にアドレスＸのデータのロードを要求する（ステップＳ２２０）。キャッシュメモリＣ１は、アドレスＸがキャッシュヒットかキャッシュミスかを判定する（ステップＳ２３０）。
ステップＳ２３０でキャッシュヒットの場合、キャッシュメモリＣ１は、アドレスＸのデータをキャッシュアクセスコントローラＡＣＮＴに送信する（ステップＳ２６０）。キャッシュアクセスコントローラＡＣＮＴは、受信したアドレスＸのデータをプロセッサＰ０に返送する（ステップＳ２７０）。このように、プロセッサＰ０が、プロセッサＰ１のキャッシュメモリＣ１に格納されているデータをロードする場合でも、キャッシュメモリＣ１からキャッシュメモリＣ０にデータを転送する必要がない。したがって、プロセッサＰ０がプロセッサＰ１と共有しているデータをロードするときのレイテンシを小さくできる。【００１９】
ステップＳ２３０でキャッシュミスの場合、キャッシュメモリＣ１は、メインメモリＭＭにアドレスＸのロードを要求する（ステップＳ２４０）。キャッシュメモリＣ１は、アドレスＸが含まれるキャッシュラインのデータをメインメモリＭＭからロードする。キャッシュメモリＣ１は、メインメモリＭＭからロードしたキャッシュラインを格納する（ステップＳ２５０）。ステップＳ２４０、Ｓ２５０は、ステップＳ１４０、Ｓ１５０と同じ処理である。キャッシュメモリＣ１は、アドレスＸのデータをキャッシュアクセスコントローラＡＣＮＴに送信する（ステップＳ２６０）。キャッシュアクセスコントローラＡＣＮＴは、受信したアドレスＸのデータをプロセッサＰ０に返送する（ステップＳ２７０）。ステップＳ２５０により、アドレスＸのデータは、キャッシュメモリＣ１に格納される。これにより、例えば、ステップＳ２５０の後に、プロセッサＰ１がアドレスＸのデータをロードする場合、メインメモリＭＭあるいは他のキャッシュメモリからデータを転送する必要がない。したがって、プロセッサＰ１がアドレスＸのデータにアクセスするときのレイテンシを小さくできる。【００２０】
また、キャッシュメモリ間の通信は、上述のステップＳ２００−Ｓ２７０で示した命令の実行時のみ行われるので、キャッシュメモリ間のバスのトラフィックを軽減できる。上述のステップＳ２００−Ｓ２７０では、プロセッサＰ０とプロセッサＰ１で共有しているアドレスＸのデータは、キャッシュメモリＣ０に格納されないので、共有しているデータの一致性に関する管理を簡単にできる。【００２１】
上述の動作フローでは説明していないが、キャッシュラインをリプレースする動作は、従来の方式と同様である。
以上、第１の実施形態では、各プロセッサＰ０、Ｐ１、Ｐ２は、キャッシュアクセスコントローラＡＣＮＴを経由して、各プロセッサＰ０、Ｐ１、Ｐ２と直接接続されていないキャッシュメモリＣ０、Ｃ１、Ｃ２にアクセスできる。これにより、例えば、プロセッサＰ０が、キャッシュメモリＣ１に格納されているデータにアクセスする場合でも、キャッシュメモリＣ１は、キャッシュメモリＣ０にデータを転送する必要がない。したがって、プロセッサＰ０、Ｐ１で共有しているデータに対するアクセスのレイテンシを小さくできる。また、キャッシュメモリ間の通信は、間接アクセス命令の実行時のみ行われるので、キャッシュメモリ間のバスのトラフィックを軽減できる。この結果、キャッシュメモリ間のバスのトラフィックを軽減し、複数のプロセッサで共有しているデータに対するアクセスのレイテンシを小さくできる。【００２２】
図４は、本発明の第２の実施形態を示している。第１の実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態のマルチプロセッサシステムは、第１の実施形態にアクセス先設定レジスタＡＲＥＧを追加して構成されている。アクセス先設定レジスタＡＲＥＧは、プロセッサＰ０、Ｐ１、Ｐ２およびキャッシュアクセスコントローラＡＣＮＴに接続されている。アクセス先設定レジスタＡＲＥＧは、間接アクセス命令によりアクセスされるキャッシュメモリを示す情報が、プロセッサＰ０、Ｐ１、Ｐ２ごとに設定される書き換え可能なレジスタである。この実施形態では、間接アクセス命令の命令フィールドにアクセス先キャッシュメモリを示す情報の指定は不要である。【００２３】
図５は、図４に示したアクセス先設定レジスタＡＲＥＧの設定内容の一例を示している。アクセス先設定レジスタＡＲＥＧは、各プロセッサＰ０、Ｐ１、Ｐ２からの間接アクセス命令によりアクセスされるキャッシュメモリを示す情報を保持するフィールドを有している。図中の設定では、プロセッサＰ０、Ｐ１、Ｐ２は、間接アクセス命令により、それぞれキャッシュメモリＣ１およびＣ２、Ｃ２、Ｃ０にキャッシュアクセスコントローラＡＣＮＴを経由してアクセスする。【００２４】
図６は、図４に示したマルチプロセッサシステムにおけるデータをストアするときの動作の一例を示している。図中の（Ｘ）は、アドレスＸのデータを示している。図中の破線は、データの転送を制御する通信の流れを示している。実線は、データの流れを示している。この例では、アドレスＸのデータは、プロセッサＰ０、Ｐ１、Ｐ２に共有されている。また、キャッシュメモリＣ１は、アドレスＸのデータを格納しており、キャッシュメモリＣ０、Ｃ２は、アドレスＸのデータを格納していない。【００２５】
プロセッサＰ０は、アクセス先設定レジスタＡＲＥＧに図５に示した間接アクセス命令によりアクセスされるキャッシュメモリを示す情報を設定する（図６（ａ））。プロセッサＰ０は、キャッシュアクセスコントローラＡＣＮＴに対して、アドレスＸにデータをストアする間接ストア命令を発行する（図６（ｂ））。キャッシュアクセスコントローラＡＣＮＴは、アクセス先設定レジスタＡＲＥＧに設定された情報に対応するキャッシュメモリＣ１、Ｃ２にアドレスＸへのデータのストアを要求する（図６（ｃ））。【００２６】
キャッシュメモリＣ１は、アドレスＸのデータを格納しているので、キャッシュヒットする。キャッシュメモリＣ１は、プロセッサＰ０からキャッシュアクセスコントローラＡＣＮＴを経由して受信したデータをキャッシュヒットしたキャッシュラインにストアする（図６（ｄ））。キャッシュメモリＣ１は、書き込みをしたキャッシュラインを“ダーティ”に設定する。【００２７】
キャッシュメモリＣ２は、アドレスＸのデータを格納していないので、キャッシュミスする。キャッシュメモリＣ２は、メインメモリＭＭにアドレスＸのロードを要求する。（図６（ｅ））。キャッシュメモリＣ２は、アドレスＸが含まれるキャッシュラインのデータをメインメモリＭＭからロードする。キャッシュメモリＣ２は、メインメモリＭＭからロードしたキャッシュラインを格納する（図６（ｆ））。キャッシュメモリＣ２は、プロセッサＰ０からキャッシュアクセスコントローラＡＣＮＴを経由して受信したデータを格納したキャッシュラインにストアする（図６（ｇ））。キャッシュメモリＣ２は、書き込みをしたキャッシュラインを“ダーティ”に設定する。【００２８】
上述の動作（ａ）−（ｇ）により、アドレスＸの最新のデータは、キャッシュメモリＣ１、Ｃ２に格納される。この後に、プロセッサＰ１、Ｐ２がアドレスＸのアクセスを要求した場合、メインメモリＭＭあるいは他のプロセッサのキャッシュメモリからデータを転送する必要がないので、レイテンシを小さくできる。
図７は、図４に示したマルチプロセッサシステムにおけるデータをロードするときの動作の一例を示している。図中の矢印の意味は、図６と同じである。この例では、アドレスＸのデータは、プロセッサＰ０、Ｐ１、Ｐ２に共有されている。また、キャッシュメモリＣ１は、アドレスＸのデータを格納しており、キャッシュメモリＣ０、Ｃ２は、アドレスＸのデータを格納していない。【００２９】
プロセッサＰ０は、アクセス先設定レジスタＡＲＥＧに図５に示した間接アクセス命令によりアクセスされるキャッシュメモリを示す情報を設定する（図７（ａ））。プロセッサＰ０は、キャッシュアクセスコントローラＡＣＮＴに対して、アドレスＸのデータをロードする間接ロード命令を発行する（図７（ｂ））。キャッシュアクセスコントローラＡＣＮＴは、アクセス先設定レジスタＡＲＥＧに設定された情報に対応するキャッシュメモリＣ１、Ｃ２にアドレスＸのデータのロードを要求する（図７（ｃ））。【００３０】
キャッシュメモリＣ１は、アドレスＸのデータを格納しているので、キャッシュヒットする。キャッシュメモリＣ１は、アドレスＸのデータをキャッシュアクセスコントローラＡＣＮＴに送信する（図７（ｄ））。キャッシュアクセスコントローラＡＣＮＴは、受信したアドレスＸのデータをプロセッサＰ０に返送する（図７（ｅ））。
キャッシュメモリＣ２は、アドレスＸのデータを格納していないので、キャッシュミスする。キャッシュメモリＣ２は、メインメモリＭＭにアドレスＸのロードを要求する（図７（ｆ））。キャッシュメモリＣ２は、アドレスＸが含まれるキャッシュラインのデータをメインメモリＭＭからロードする。キャッシュメモリＣ２は、メインメモリＭＭからロードしたキャッシュラインを格納する（図７（ｇ））。キャッシュメモリＣ２は、アドレスＸのデータをキャッシュアクセスコントローラＡＣＮＴに送信する（図７（ｈ））。キャッシュアクセスコントローラＡＣＮＴは、図中の動作（ｄ）により、アドレスＸのデータを既に受信しているので、キャッシュメモリＣ２から受信したデータを破棄する。【００３１】
図中の動作（ｃ）のように、キャッシュアクセスコントローラＡＣＮＴが複数のキャッシュメモリにデータのロードを要求した場合、プロセッサＰ０に返送するデータは、ある判定基準を元に選択される。本実施形態では、プロセッサＰ０に返送するデータは、キャッシュアクセスコントローラＡＣＮＴが最初に受信したデータが選択される。
上述の動作（ａ）−（ｈ）で示したように、プロセッサＰ０は、アドレスＸのデータがキャッシュメモリＣ０に格納されていない場合でも、他のキャッシュメモリＣ１、Ｃ２にアドレスＸのデータのロードを要求できる。これにより、プロセッサＰ０は、アドレスＸのデータがキャッシュメモリＣ１、Ｃ２のどちらかに格納されていれば、メインメモリＭＭからのデータの転送を待たずに、アドレスＸのデータを受信できる。したがって、プロセッサＰ０がアドレスＸのデータのロードを要求したときのレイテンシを小さくできる。【００３２】
以上、第２の実施形態においても、上述した第１の実施形態と同様の効果を得ることができる。この実施形態では、間接アクセス命令の命令フィールドにアクセス先キャッシュメモリを示す情報の指定は不要である。したがって、間接アクセス命令の命令フィールドは、プロセッサに対応するキャッシュメモリに使用する従来のストア命令およびロード命令の命令フィールドと同様の構成のまま使用できる。【００３３】
図８は、本発明の比較例を示している。比較例のマルチプロセッサシステムのキャッシュメモリＣ０、Ｃ１、Ｃ２は、キャッシュメモリ間のアクセスを監視する外部アクセス監視部Ｓ０、Ｓ１、Ｓ２をそれぞれ有している。外部アクセス監視部Ｓ０、Ｓ１、Ｓ２は、キャッシュメモリＣ０、Ｃ１、Ｃ２およびメインメモリＭＭに接続されている。図中の矢印の意味は、図６と同じである。この例では、キャッシュメモリＣ１は、アドレスＸのデータを格納しており、キャッシュメモリＣ０、Ｃ２は、アドレスＸのデータを格納していない。この状態で、プロセッサＰ０がアドレスＸのロードを要求した場合を示している。これは、図３のステップＳ２００、Ｓ２１０、Ｓ２２０、Ｓ２３０、Ｓ２６０、Ｓ２７０の動作になる条件および図７の初期状態と同じである。【００３４】
プロセッサＰ０は、アドレスＸのロードを要求する（図８（ａ））。キャッシュメモリＣ０は、アドレスＸのデータを格納していないので、キャッシュミスする。キャッシュメモリＣ０は、メインメモリＭＭにアドレスＸのロードを要求する（図８（ｂ））。外部アクセス監視部Ｓ１、Ｓ２は、メインメモリＭＭへのアドレスＸのロード要求を検出する（図８（ｃ））。外部アクセス監視部Ｓ１は、キャッシュメモリＣ１がアドレスＸのデータを格納しているので、キャッシュメモリＣ０からメインメモリＭＭへのアドレスＸのロード要求を無効にする。メインメモリＭＭへのアドレスＸのロード要求を無効にしたので、外部アクセス監視部Ｓ１は、アドレスＸが含まれるキャッシュラインをキャッシュメモリＣ０に転送する命令をキャッシュメモリＣ１に発行する（図８（ｄ））。キャッシュメモリＣ１は、アドレスＸが含まれるキャッシュラインをキャッシュメモリＣ０に転送する（図８（ｅ））。キャッシュメモリＣ０は、受信したキャッシュラインを格納する（図８（ｆ））。この後に、キャッシュメモリＣ０は、アドレスＸのデータをプロセッサＰ０に返送する（図８（ｇ））。【００３５】
このように、キャッシュメモリＣ１からキャッシュメモリＣ０にアドレスＸのデータを転送してから、アドレスＸのデータをプロセッサＰ０に返送する。したがって、プロセッサＰ０がアドレスＸのロードを要求したときのレイテンシは、大きくなる。また、外部アクセス監視部Ｓ１、Ｓ２は、メインメモリＭＭに対するアクセスを常に監視しているので、バスのトラフィックは、上述の実施形態に比べて増加する。【００３６】
なお、上述した第１の実施形態では、間接アクセス命令によりアクセスされるキャッシュメモリを示す情報を間接アクセス命令の命令フィールドに指定する例について述べた。本発明は、かかる実施形態に限定されるものではない。例えば、命令フィールドに指定せずに、キャッシュアクセスコントローラＡＣＮＴは、プロセッサＰ０、Ｐ１、Ｐ２からの間接アクセス命令に対して、それぞれキャッシュメモリＣ１、Ｃ２、Ｃ０に常にアクセスするようにしても良い。または、図９に示されるような形態にすれば、間接アクセス命令によりアクセスされるキャッシュメモリは、プロセッサＰ０はキャッシュメモリＣ１、プロセッサＰ１はキャッシュメモリＣ０と一意的に決まる。上述の例では、間接アクセス命令の命令フィールドは、プロセッサに対応するキャッシュメモリに使用する従来のストア命令およびロード命令の命令フィールドと同様の構成のまま使用できる。【００３７】
上述した第１の実施形態では、図２のステップＳ１４０および図３のステップＳ２４０でメインメモリＭＭにアドレスＸのロードを要求する例について述べた。本発明は、かかる実施形態に限定されるものではない。例えば、図１０に示されるように、階層が下位のメモリとして、各プロセッサＰ０、Ｐ１、Ｐ２に共有されるキャッシュメモリＣ３を設けてもよい。この場合、キャッシュメモリＣ１は、メインメモリＭＭより階層が上位のキャッシュメモリＣ３にアドレスＸのロードをまず要求する。したがって、アドレスＸのデータがキャッシュメモリＣ３に格納されている場合、メインメモリＭＭにアクセスするより高速な動作が可能になる。この場合にも、アドレスＸのデータは、キャッシュメモリＣ１に格納される。したがって、上述した第１の実施形態と同様の効果を得ることができる。【００３８】
上述した第２の実施形態では、プロセッサＰ０が、アクセス先設定レジスタＡＲＥＧに図５に示した情報を設定する例について述べた。本発明は、かかる実施形態に限定されるものではない。例えば、他のプロセッサＰ１、Ｐ２がアクセス先設定レジスタＡＲＥＧに図５に示した情報を設定してもよい。また、アクセス先設定レジスタＡＲＥＧへの設定は、プロセッサＰ０がキャッシュアクセスコントローラＡＣＮＴに命令を発行する前までに完了されていればよい。この場合にも、上述した第２の実施形態と同様の効果を得ることができる。【００３９】
上述した第２の実施形態では、図７の動作（ｃ）−（ｇ）で、キャッシュメモリＣ１がキャッシュヒットして、キャッシュメモリＣ２がキャッシュミスした場合、キャッシュメモリＣ２がキャッシュラインを格納する例について述べた。本発明は、かかる実施形態に限定されるものではない。例えば、キャッシュアクセスコントローラＡＣＮＴは、図７の動作（ｄ）により、キャッシュメモリＣ１からデータを受信したのに応答して、キャッシュメモリＣ２に対して、データのロード要求を取り消す命令を発行するようにしてもよい。または、各キャッシュメモリＣ０−Ｃ２は、キャッシュヒットしたかキャッシュミスしたかの通知をキャッシュアクセスコントローラＡＣＮＴに送信するようにする。そして、キャッシュアクセスコントローラＡＣＮＴは、キャッシュメモリＣ１からキャッシュヒットの通知を受信したのに応答して、キャッシュメモリＣ２に対して、データのロード要求を取り消す命令を発行するようにしてもよい。これにより、キャッシュメモリＣ２は、メインメモリＭＭからアドレスＸのデータをロードすることを中止する。これにより、キャッシュメモリとメインメモリＭＭ間のバスのトラフィックを軽減できる。この場合にも、上述した第２の実施形態と同様の効果を得ることができる。【００４０】
以上、本発明について詳細に説明してきが、上記の実施形態およびその変形例は発明の一例に過ぎず、本発明はこれに限定されるものではない。本発明を逸脱しない範囲で変形可能であることは明らかである。
【産業上の利用可能性】
【００４１】
本発明は、キャッシュメモリを持つマルチプロセッサシステムに適用できる。
【図１】
2007110898.tif 000003
【図２】
2007110898.tif 000004
【図３】
2007110898.tif 000005
【図４】
2007110898.tif 000006
【図５】
2007110898.tif 000007
【図６】
2007110898.tif 000008
【図７】
2007110898.tif 000009
【図８】
2007110898.tif 000010
【図９】
2007110898.tif 000011
【図１０】
2007110898.tif 000012
【手続補正書】
【提出日】平成20年7月17日(2008.7.17)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムおよびマルチプロセッサシステムの動作方法に関する。
【背景技術】
【０００２】
一般に、プロセッサシステムでは、プロセッサと主記憶装置であるメインメモリの間に高速なキャッシュメモリを搭載する方式がとられている。これにより、プロセッサとメインメモリの動作速度のバランスがとられる。また、高い処理性能が要求されるシステムでは、複数のプロセッサを使用するマルチプロセッサシステムが構築される。複数のプロセッサがメインメモリをアクセスするマルチプロセッサシステムでは、例えば、キャッシュメモリは、プロセッサごとに搭載され、各キャッシュメモリは、他のキャッシュメモリと同じデータを共有しているかどうかを互いに監視する（例えば、特許文献１参照）。
【特許文献１】特開平４−９２９３７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
この種のマルチプロセッサシステムでは、各キャッシュメモリは、他のプロセッサからのデータのアクセス要求に対して、アクセス対象のデータを共有しているかどうかを常に監視する。このため、監視のための通信が増加し、キャッシュメモリ間のバスの利用量（トラフィック）が増加する。さらには、プロセッサ数が増えると、監視するキャッシュメモリと監視されるキャッシュメモリがそれぞれ増えるので、ハードウェアが複雑になる。このため、マルチプロセッサシステムを構築するための設計が難しい。また、一方のプロセッサが他方のプロセッサのキャッシュメモリに格納されているデータを読み出すとき、例えば、データが格納されているキャッシュメモリは、データを読み出すプロセッサのキャッシュメモリにデータを転送する。その後に、読み出しを要求したプロセッサは、対応するキャッシュメモリからデータを受け取る。このため、プロセッサがキャッシュメモリにアクセスを要求してからデータを受け取るまでの遅延時間（レイテンシ）は、大きくなる。
【０００４】
本発明の目的は、キャッシュメモリ間のバスのトラフィックを軽減し、複数のプロセッサで共有しているデータに対するアクセスのレイテンシを小さくすることである。
【課題を解決するための手段】
【０００５】
本発明では、マルチプロセッサシステムは、複数のプロセッサとプロセッサにそれぞれ対応するキャッシュメモリとキャッシュアクセスコントローラを有している。キャッシュアクセスコントローラは、各プロセッサからの間接アクセス命令に応答して、間接アクセス命令を発行したプロセッサに対応するキャッシュメモリを除くキャッシュメモリにアクセスする。これにより、一方のプロセッサが、他方のプロセッサのキャッシュメモリに格納されているデータをアクセスする場合でも、キャッシュメモリ間でのデータの転送は、不要である。したがって、複数のプロセッサと共有しているデータに対するアクセスのレイテンシを小さくできる。また、キャッシュメモリ間の通信は、間接アクセス命令の実行時のみ行われるので、キャッシュメモリ間のバスのトラフィックを軽減できる。
【発明の効果】
【０００６】
キャッシュメモリ間のバスのトラフィックを軽減し、複数のプロセッサで共有しているデータに対するアクセスのレイテンシを小さくできる。
【発明を実施するための最良の形態】
【０００７】
以下、本発明の実施形態を図面を用いて説明する。
【０００８】
図１は、本発明の第１の実施形態を示している。マルチプロセッサシステムは、プロセッサＰ０、Ｐ１、Ｐ２、キャッシュメモリＣ０、Ｃ１、Ｃ２、キャッシュアクセスコントローラＡＣＮＴおよびメインメモリＭＭを有している。プロセッサＰ０、Ｐ１、Ｐ２は、それぞれキャッシュメモリＣ０、Ｃ１、Ｃ２に直接接続されている。キャッシュアクセスコントローラＡＣＮＴは、プロセッサＰ０、Ｐ１、Ｐ２およびキャッシュメモリＣ０、Ｃ１、Ｃ２に接続されている。メインメモリＭＭは、キャッシュメモリＣ０、Ｃ１、Ｃ２に接続されている。
【０００９】
キャッシュメモリＣ０、Ｃ１、Ｃ２は、対応するプロセッサから直接アクセスされる。キャッシュアクセスコントローラＡＣＮＴは、プロセッサと直接接続されていないキャッシュメモリにアクセスする命令である間接アクセス命令をプロセッサＰ０、Ｐ１、Ｐ２から受け取る。受け取った間接アクセス命令に応答して、キャッシュアクセスコントローラＡＣＮＴは、間接アクセス命令に対応するキャッシュメモリにアクセスする。すなわち、キャッシュメモリＣ０、Ｃ１、Ｃ２は、キャッシュアクセスコントローラＡＣＮＴを経由して、直接接続されていないプロセッサからもアクセスされる。メインメモリＭＭは、プロセッサＰ０、Ｐ１、Ｐ２が共有して使用する主記憶装置であり、キャッシュメモリＣ０、Ｃ１、Ｃ２によりアクセスされる。本実施形態では、メインメモリＭＭは、階層が一番低い共有メモリである。
【００１０】
図２は、図１に示したマルチプロセッサシステムにおけるデータをストアするときの動作の一例を示している。この例では、アドレスＸのデータは、プロセッサＰ０、Ｐ１に共有され、キャッシュメモリＣ０に格納されていない。ここで、アドレスＸは、メインメモリＭＭ内のアドレスを示している。
【００１１】
まず、プロセッサＰ０は、キャッシュアクセスコントローラＡＣＮＴに対して、アドレスＸにデータを書き込む命令である間接ストア命令を発行する（ステップＳ１００）。ここで、間接ストア命令は、命令を発行したプロセッサとは別のプロセッサのキャッシュメモリにデータを書き込む命令であり、上述の間接アクセス命令の１つである。また、上述の間接ストア命令によりアクセスされるキャッシュメモリの指定方法は、例えば、命令フィールドに指定する方法がある。すなわち、間接アクセス命令を発行するプロセッサは、間接ストア命令の命令フィールドに、アクセスされるキャッシュメモリを示す情報を指定する。本実施形態では、ステップＳ１００で、プロセッサＰ０は、命令フィールドにキャッシュメモリＣ１を示す情報が含まれた間接ストア命令をキャッシュアクセスコントローラＡＣＮＴに発行している。
【００１２】
キャッシュアクセスコントローラＡＣＮＴは、間接ストア命令を受信する（ステップＳ１１０）。キャッシュアクセスコントローラＡＣＮＴは、キャッシュメモリＣ１にアドレスＸへのデータのストア（書き込み）を要求する（ステップＳ１２０）。キャッシュメモリＣ１は、アドレスＸがキャッシュヒットかキャッシュミスかを判定する（ステップＳ１３０）。
【００１３】
ステップＳ１３０でキャッシュヒットの場合、キャッシュメモリＣ１は、プロセッサＰ０からキャッシュアクセスコントローラＡＣＮＴを経由して受信したデータをアドレスＸが含まれるキャッシュラインにストアする（ステップＳ１６０）。ステップＳ１６０により、キャッシュメモリＣ１のデータは、更新される。このように、プロセッサＰ０が、プロセッサＰ１のキャッシュメモリＣ１に格納されているデータを更新する場合でも、キャッシュメモリＣ１からキャッシュメモリＣ０にデータを転送する必要がない。したがって、プロセッサＰ０がプロセッサＰ１と共有しているデータを更新するときのレイテンシを小さくできる。
【００１４】
ステップＳ１３０でキャッシュミスの場合、キャッシュメモリＣ１は、メインメモリＭＭにアドレスＸのロード（読み出し）を要求する（ステップＳ１４０）。キャッシュメモリＣ１は、アドレスＸが含まれるキャッシュラインのデータをメインメモリＭＭからロードする。キャッシュメモリＣ１は、メインメモリＭＭからロードしたキャッシュラインを格納する（ステップＳ１５０）。ステップＳ１４０、Ｓ１５０により、メインメモリＭＭのアドレスＸのデータは、キャッシュメモリＣ１に格納される。キャッシュメモリＣ１は、プロセッサＰ０からキャッシュアクセスコントローラＡＣＮＴを経由して受信したデータをアドレスＸが含まれるキャッシュラインにストアする（ステップＳ１６０）。ステップＳ１６０により、アドレスＸの最新のデータは、キャッシュメモリＣ１に格納される。これにより、例えば、ステップＳ１６０の後に、プロセッサＰ１がアドレスＸのデータをロードする場合、メインメモリＭＭあるいは他のキャッシュメモリからデータを転送する必要がない。したがって、プロセッサＰ１がアドレスＸのデータにアクセスするときのレイテンシを小さくできる。
【００１５】
キャッシュメモリＣ１は、データの書き込み条件がライトスルーか否かを判定する（ステップＳ１７０）。ここで、ライトスルーとは、プロセッサが、階層が上位のキャッシュメモリにデータを書き込む場合、階層が上位のキャッシュメモリと同時に階層が下位のメモリにもデータを書き込む方式である。ステップＳ１７０でライトスルーの場合、キャッシュメモリＣ１は、ステップＳ１６０でストアするデータをメインメモリＭＭのアドレスＸにもストアする（ステップＳ１８０）。ステップＳ１７０でライトスルーでない場合、キャッシュメモリＣ１は、ステップＳ１６０によりデータがストアされたキャッシュラインを“ダーティ”に設定する（ステップＳ１９０）。ここで、“ダーティ”は、階層が上位のキャッシュメモリにあるデータのみ更新して、階層が下位のメモリにあるデータを更新していない状態である。
【００１６】
また、キャッシュメモリ間の通信は、上述のステップＳ１００−Ｓ１９０で示した命令の実行時のみ行われるので、キャッシュメモリ間のバスのトラフィックを軽減できる。上述のステップＳ１００−Ｓ１９０では、プロセッサＰ０とプロセッサＰ１で共有しているアドレスＸのデータは、キャッシュメモリＣ０に格納されないので、共有しているデータの一致性に関する管理を簡単にできる。
【００１７】
上述の動作フローでは説明していないが、キャッシュラインをリプレースする動作は、従来の方式と同様である。例えば、ステップＳ１５０で、キャッシュラインを格納したときに、リプレースされるキャッシュラインがある場合、リプレースされるキャッシュラインを破棄する。但し、リプレースされるキャッシュラインが“ダーティ”の場合、階層が下位のメインメモリＭＭにリプレースされるキャッシュラインを書き戻す。
【００１８】
図３は、図１に示したマルチプロセッサシステムにおけるデータをロードするときの動作の一例を示している。この例では、アドレスＸのデータは、プロセッサＰ０、Ｐ１に共有され、キャッシュメモリＣ０に格納されていない。
【００１９】
まず、プロセッサＰ０は、キャッシュアクセスコントローラＡＣＮＴに対して、アドレスＸのデータをキャッシュメモリＣ１から読み出す命令である間接ロード命令を発行する（ステップＳ２００）。ここで、間接ロード命令は、命令を発行したプロセッサとは別のプロセッサのキャッシュメモリからデータを読み出す命令であり、上述の間接アクセス命令の１つである。すなわち、間接アクセス命令は、間接ストア命令あるいは間接ロード命令を意味する。また、アクセスされるキャッシュメモリＣ１を示す情報は、間接ロード命令の命令フィールドに指定されている。
【００２０】
キャッシュアクセスコントローラＡＣＮＴは、間接ロード命令を受信する（ステップＳ２１０）。キャッシュアクセスコントローラＡＣＮＴは、キャッシュメモリＣ１にアドレスＸのデータのロードを要求する（ステップＳ２２０）。キャッシュメモリＣ１は、アドレスＸがキャッシュヒットかキャッシュミスかを判定する（ステップＳ２３０）。
【００２１】
ステップＳ２３０でキャッシュヒットの場合、キャッシュメモリＣ１は、アドレスＸのデータをキャッシュアクセスコントローラＡＣＮＴに送信する（ステップＳ２６０）。キャッシュアクセスコントローラＡＣＮＴは、受信したアドレスＸのデータをプロセッサＰ０に返送する（ステップＳ２７０）。このように、プロセッサＰ０が、プロセッサＰ１のキャッシュメモリＣ１に格納されているデータをロードする場合でも、キャッシュメモリＣ１からキャッシュメモリＣ０にデータを転送する必要がない。したがって、プロセッサＰ０がプロセッサＰ１と共有しているデータをロードするときのレイテンシを小さくできる。
【００２２】
ステップＳ２３０でキャッシュミスの場合、キャッシュメモリＣ１は、メインメモリＭＭにアドレスＸのロードを要求する（ステップＳ２４０）。キャッシュメモリＣ１は、アドレスＸが含まれるキャッシュラインのデータをメインメモリＭＭからロードする。キャッシュメモリＣ１は、メインメモリＭＭからロードしたキャッシュラインを格納する（ステップＳ２５０）。ステップＳ２４０、Ｓ２５０は、ステップＳ１４０、Ｓ１５０と同じ処理である。キャッシュメモリＣ１は、アドレスＸのデータをキャッシュアクセスコントローラＡＣＮＴに送信する（ステップＳ２６０）。キャッシュアクセスコントローラＡＣＮＴは、受信したアドレスＸのデータをプロセッサＰ０に返送する（ステップＳ２７０）。ステップＳ２５０により、アドレスＸのデータは、キャッシュメモリＣ１に格納される。これにより、例えば、ステップＳ２５０の後に、プロセッサＰ１がアドレスＸのデータをロードする場合、メインメモリＭＭあるいは他のキャッシュメモリからデータを転送する必要がない。したがって、プロセッサＰ１がアドレスＸのデータにアクセスするときのレイテンシを小さくできる。
【００２３】
また、キャッシュメモリ間の通信は、上述のステップＳ２００−Ｓ２７０で示した命令の実行時のみ行われるので、キャッシュメモリ間のバスのトラフィックを軽減できる。上述のステップＳ２００−Ｓ２７０では、プロセッサＰ０とプロセッサＰ１で共有しているアドレスＸのデータは、キャッシュメモリＣ０に格納されないので、共有しているデータの一致性に関する管理を簡単にできる。
【００２４】
上述の動作フローでは説明していないが、キャッシュラインをリプレースする動作は、従来の方式と同様である。
【００２５】
以上、第１の実施形態では、各プロセッサＰ０、Ｐ１、Ｐ２は、キャッシュアクセスコントローラＡＣＮＴを経由して、各プロセッサＰ０、Ｐ１、Ｐ２と直接接続されていないキャッシュメモリＣ０、Ｃ１、Ｃ２にアクセスできる。これにより、例えば、プロセッサＰ０が、キャッシュメモリＣ１に格納されているデータにアクセスする場合でも、キャッシュメモリＣ１は、キャッシュメモリＣ０にデータを転送する必要がない。したがって、プロセッサＰ０、Ｐ１で共有しているデータに対するアクセスのレイテンシを小さくできる。また、キャッシュメモリ間の通信は、間接アクセス命令の実行時のみ行われるので、キャッシュメモリ間のバスのトラフィックを軽減できる。この結果、キャッシュメモリ間のバスのトラフィックを軽減し、複数のプロセッサで共有しているデータに対するアクセスのレイテンシを小さくできる。
【００２６】
図４は、本発明の第２の実施形態を示している。第１の実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態のマルチプロセッサシステムは、第１の実施形態にアクセス先設定レジスタＡＲＥＧを追加して構成されている。アクセス先設定レジスタＡＲＥＧは、プロセッサＰ０、Ｐ１、Ｐ２およびキャッシュアクセスコントローラＡＣＮＴに接続されている。アクセス先設定レジスタＡＲＥＧは、間接アクセス命令によりアクセスされるキャッシュメモリを示す情報が、プロセッサＰ０、Ｐ１、Ｐ２ごとに設定される書き換え可能なレジスタである。この実施形態では、間接アクセス命令の命令フィールドにアクセス先キャッシュメモリを示す情報の指定は不要である。
【００２７】
図５は、図４に示したアクセス先設定レジスタＡＲＥＧの設定内容の一例を示している。アクセス先設定レジスタＡＲＥＧは、各プロセッサＰ０、Ｐ１、Ｐ２からの間接アクセス命令によりアクセスされるキャッシュメモリを示す情報を保持するフィールドを有している。図中の設定では、プロセッサＰ０、Ｐ１、Ｐ２は、間接アクセス命令により、それぞれキャッシュメモリＣ１およびＣ２、Ｃ２、Ｃ０にキャッシュアクセスコントローラＡＣＮＴを経由してアクセスする。
【００２８】
図６は、図４に示したマルチプロセッサシステムにおけるデータをストアするときの動作の一例を示している。図中の（Ｘ）は、アドレスＸのデータを示している。図中の破線は、データの転送を制御する通信の流れを示している。実線は、データの流れを示している。この例では、アドレスＸのデータは、プロセッサＰ０、Ｐ１、Ｐ２に共有されている。また、キャッシュメモリＣ１は、アドレスＸのデータを格納しており、キャッシュメモリＣ０、Ｃ２は、アドレスＸのデータを格納していない。
【００２９】
プロセッサＰ０は、アクセス先設定レジスタＡＲＥＧに図５に示した間接アクセス命令によりアクセスされるキャッシュメモリを示す情報を設定する（図６（ａ））。プロセッサＰ０は、キャッシュアクセスコントローラＡＣＮＴに対して、アドレスＸにデータをストアする間接ストア命令を発行する（図６（ｂ））。キャッシュアクセスコントローラＡＣＮＴは、アクセス先設定レジスタＡＲＥＧに設定された情報に対応するキャッシュメモリＣ１、Ｃ２にアドレスＸへのデータのストアを要求する（図６（ｃ））。
【００３０】
キャッシュメモリＣ１は、アドレスＸのデータを格納しているので、キャッシュヒットする。キャッシュメモリＣ１は、プロセッサＰ０からキャッシュアクセスコントローラＡＣＮＴを経由して受信したデータをキャッシュヒットしたキャッシュラインにストアする（図６（ｄ））。キャッシュメモリＣ１は、書き込みをしたキャッシュラインを“ダーティ”に設定する。
【００３１】
キャッシュメモリＣ２は、アドレスＸのデータを格納していないので、キャッシュミスする。キャッシュメモリＣ２は、メインメモリＭＭにアドレスＸのロードを要求する。（図６（ｅ））。キャッシュメモリＣ２は、アドレスＸが含まれるキャッシュラインのデータをメインメモリＭＭからロードする。キャッシュメモリＣ２は、メインメモリＭＭからロードしたキャッシュラインを格納する（図６（ｆ））。キャッシュメモリＣ２は、プロセッサＰ０からキャッシュアクセスコントローラＡＣＮＴを経由して受信したデータを格納したキャッシュラインにストアする（図６（ｇ））。キャッシュメモリＣ２は、書き込みをしたキャッシュラインを“ダーティ”に設定する。
【００３２】
上述の動作（ａ）−（ｇ）により、アドレスＸの最新のデータは、キャッシュメモリＣ１、Ｃ２に格納される。この後に、プロセッサＰ１、Ｐ２がアドレスＸのアクセスを要求した場合、メインメモリＭＭあるいは他のプロセッサのキャッシュメモリからデータを転送する必要がないので、レイテンシを小さくできる。
【００３３】
図７は、図４に示したマルチプロセッサシステムにおけるデータをロードするときの動作の一例を示している。図中の矢印の意味は、図６と同じである。この例では、アドレスＸのデータは、プロセッサＰ０、Ｐ１、Ｐ２に共有されている。また、キャッシュメモリＣ１は、アドレスＸのデータを格納しており、キャッシュメモリＣ０、Ｃ２は、アドレスＸのデータを格納していない。
【００３４】
プロセッサＰ０は、アクセス先設定レジスタＡＲＥＧに図５に示した間接アクセス命令によりアクセスされるキャッシュメモリを示す情報を設定する（図７（ａ））。プロセッサＰ０は、キャッシュアクセスコントローラＡＣＮＴに対して、アドレスＸのデータをロードする間接ロード命令を発行する（図７（ｂ））。キャッシュアクセスコントローラＡＣＮＴは、アクセス先設定レジスタＡＲＥＧに設定された情報に対応するキャッシュメモリＣ１、Ｃ２にアドレスＸのデータのロードを要求する（図７（ｃ））。
【００３５】
キャッシュメモリＣ１は、アドレスＸのデータを格納しているので、キャッシュヒットする。キャッシュメモリＣ１は、アドレスＸのデータをキャッシュアクセスコントローラＡＣＮＴに送信する（図７（ｄ））。キャッシュアクセスコントローラＡＣＮＴは、受信したアドレスＸのデータをプロセッサＰ０に返送する（図７（ｅ））。
【００３６】
キャッシュメモリＣ２は、アドレスＸのデータを格納していないので、キャッシュミスする。キャッシュメモリＣ２は、メインメモリＭＭにアドレスＸのロードを要求する（図７（ｆ））。キャッシュメモリＣ２は、アドレスＸが含まれるキャッシュラインのデータをメインメモリＭＭからロードする。キャッシュメモリＣ２は、メインメモリＭＭからロードしたキャッシュラインを格納する（図７（ｇ））。キャッシュメモリＣ２は、アドレスＸのデータをキャッシュアクセスコントローラＡＣＮＴに送信する（図７（ｈ））。キャッシュアクセスコントローラＡＣＮＴは、図中の動作（ｄ）により、アドレスＸのデータを既に受信しているので、キャッシュメモリＣ２から受信したデータを破棄する。
【００３７】
図中の動作（ｃ）のように、キャッシュアクセスコントローラＡＣＮＴが複数のキャッシュメモリにデータのロードを要求した場合、プロセッサＰ０に返送するデータは、ある判定基準を元に選択される。本実施形態では、プロセッサＰ０に返送するデータは、キャッシュアクセスコントローラＡＣＮＴが最初に受信したデータが選択される。
【００３８】
上述の動作（ａ）−（ｈ）で示したように、プロセッサＰ０は、アドレスＸのデータがキャッシュメモリＣ０に格納されていない場合でも、他のキャッシュメモリＣ１、Ｃ２にアドレスＸのデータのロードを要求できる。これにより、プロセッサＰ０は、アドレスＸのデータがキャッシュメモリＣ１、Ｃ２のどちらかに格納されていれば、メインメモリＭＭからのデータの転送を待たずに、アドレスＸのデータを受信できる。したがって、プロセッサＰ０がアドレスＸのデータのロードを要求したときのレイテンシを小さくできる。
【００３９】
以上、第２の実施形態においても、上述した第１の実施形態と同様の効果を得ることができる。この実施形態では、間接アクセス命令の命令フィールドにアクセス先キャッシュメモリを示す情報の指定は不要である。したがって、間接アクセス命令の命令フィールドは、プロセッサに対応するキャッシュメモリに使用する従来のストア命令およびロード命令の命令フィールドと同様の構成のまま使用できる。
【００４０】
図８は、本発明の比較例を示している。比較例のマルチプロセッサシステムのキャッシュメモリＣ０、Ｃ１、Ｃ２は、キャッシュメモリ間のアクセスを監視する外部アクセス監視部Ｓ０、Ｓ１、Ｓ２をそれぞれ有している。外部アクセス監視部Ｓ０、Ｓ１、Ｓ２は、キャッシュメモリＣ０、Ｃ１、Ｃ２およびメインメモリＭＭに接続されている。図中の矢印の意味は、図６と同じである。この例では、キャッシュメモリＣ１は、アドレスＸのデータを格納しており、キャッシュメモリＣ０、Ｃ２は、アドレスＸのデータを格納していない。この状態で、プロセッサＰ０がアドレスＸのロードを要求した場合を示している。これは、図３のステップＳ２００、Ｓ２１０、Ｓ２２０、Ｓ２３０、Ｓ２６０、Ｓ２７０の動作になる条件および図７の初期状態と同じである。
【００４１】
プロセッサＰ０は、アドレスＸのロードを要求する（図８（ａ））。キャッシュメモリＣ０は、アドレスＸのデータを格納していないので、キャッシュミスする。キャッシュメモリＣ０は、メインメモリＭＭにアドレスＸのロードを要求する（図８（ｂ））。外部アクセス監視部Ｓ１、Ｓ２は、メインメモリＭＭへのアドレスＸのロード要求を検出する（図８（ｃ））。外部アクセス監視部Ｓ１は、キャッシュメモリＣ１がアドレスＸのデータを格納しているので、キャッシュメモリＣ０からメインメモリＭＭへのアドレスＸのロード要求を無効にする。メインメモリＭＭへのアドレスＸのロード要求を無効にしたので、外部アクセス監視部Ｓ１は、アドレスＸが含まれるキャッシュラインをキャッシュメモリＣ０に転送する命令をキャッシュメモリＣ１に発行する（図８（ｄ））。キャッシュメモリＣ１は、アドレスＸが含まれるキャッシュラインをキャッシュメモリＣ０に転送する（図８（ｅ））。キャッシュメモリＣ０は、受信したキャッシュラインを格納する（図８（ｆ））。この後に、キャッシュメモリＣ０は、アドレスＸのデータをプロセッサＰ０に返送する（図８（ｇ））。
【００４２】
このように、キャッシュメモリＣ１からキャッシュメモリＣ０にアドレスＸのデータを転送してから、アドレスＸのデータをプロセッサＰ０に返送する。したがって、プロセッサＰ０がアドレスＸのロードを要求したときのレイテンシは、大きくなる。また、外部アクセス監視部Ｓ１、Ｓ２は、メインメモリＭＭに対するアクセスを常に監視しているので、バスのトラフィックは、上述の実施形態に比べて増加する。
【００４３】
なお、上述した第１の実施形態では、間接アクセス命令によりアクセスされるキャッシュメモリを示す情報を間接アクセス命令の命令フィールドに指定する例について述べた。本発明は、かかる実施形態に限定されるものではない。例えば、命令フィールドに指定せずに、キャッシュアクセスコントローラＡＣＮＴは、プロセッサＰ０、Ｐ１、Ｐ２からの間接アクセス命令に対して、それぞれキャッシュメモリＣ１、Ｃ２、Ｃ０に常にアクセスするようにしても良い。または、図９に示されるような形態にすれば、間接アクセス命令によりアクセスされるキャッシュメモリは、プロセッサＰ０はキャッシュメモリＣ１、プロセッサＰ１はキャッシュメモリＣ０と一意的に決まる。上述の例では、間接アクセス命令の命令フィールドは、プロセッサに対応するキャッシュメモリに使用する従来のストア命令およびロード命令の命令フィールドと同様の構成のまま使用できる。
【００４４】
上述した第１の実施形態では、図２のステップＳ１４０および図３のステップＳ２４０でメインメモリＭＭにアドレスＸのロードを要求する例について述べた。本発明は、かかる実施形態に限定されるものではない。例えば、図１０に示されるように、階層が下位のメモリとして、各プロセッサＰ０、Ｐ１、Ｐ２に共有されるキャッシュメモリＣ３を設けてもよい。この場合、キャッシュメモリＣ１は、メインメモリＭＭより階層が上位のキャッシュメモリＣ３にアドレスＸのロードをまず要求する。したがって、アドレスＸのデータがキャッシュメモリＣ３に格納されている場合、メインメモリＭＭにアクセスするより高速な動作が可能になる。この場合にも、アドレスＸのデータは、キャッシュメモリＣ１に格納される。したがって、上述した第１の実施形態と同様の効果を得ることができる。
【００４５】
上述した第２の実施形態では、プロセッサＰ０が、アクセス先設定レジスタＡＲＥＧに図５に示した情報を設定する例について述べた。本発明は、かかる実施形態に限定されるものではない。例えば、他のプロセッサＰ１、Ｐ２がアクセス先設定レジスタＡＲＥＧに図５に示した情報を設定してもよい。また、アクセス先設定レジスタＡＲＥＧへの設定は、プロセッサＰ０がキャッシュアクセスコントローラＡＣＮＴに命令を発行する前までに完了されていればよい。この場合にも、上述した第２の実施形態と同様の効果を得ることができる。
【００４６】
上述した第２の実施形態では、図７の動作（ｃ）−（ｇ）で、キャッシュメモリＣ１がキャッシュヒットして、キャッシュメモリＣ２がキャッシュミスした場合、キャッシュメモリＣ２がキャッシュラインを格納する例について述べた。本発明は、かかる実施形態に限定されるものではない。例えば、キャッシュアクセスコントローラＡＣＮＴは、図７の動作（ｄ）により、キャッシュメモリＣ１からデータを受信したのに応答して、キャッシュメモリＣ２に対して、データのロード要求を取り消す命令を発行するようにしてもよい。または、各キャッシュメモリＣ０−Ｃ２は、キャッシュヒットしたかキャッシュミスしたかの通知をキャッシュアクセスコントローラＡＣＮＴに送信するようにする。そして、キャッシュアクセスコントローラＡＣＮＴは、キャッシュメモリＣ１からキャッシュヒットの通知を受信したのに応答して、キャッシュメモリＣ２に対して、データのロード要求を取り消す命令を発行するようにしてもよい。これにより、キャッシュメモリＣ２は、メインメモリＭＭからアドレスＸのデータをロードすることを中止する。これにより、キャッシュメモリとメインメモリＭＭ間のバスのトラフィックを軽減できる。この場合にも、上述した第２の実施形態と同様の効果を得ることができる。
【００４７】
以上、本発明について詳細に説明してきたが、上記の実施形態およびその変形例は発明の一例に過ぎず、本発明はこれに限定されるものではない。本発明を逸脱しない範囲で変形可能であることは明らかである。
【産業上の利用可能性】
【００４８】
本発明は、キャッシュメモリを持つマルチプロセッサシステムに適用できる。
【図面の簡単な説明】
【００４９】
【図１】本発明の第１の実施形態を示すブロック図である。
【図２】図１に示したマルチプロセッサシステムにおけるデータをストアするときの動作の一例を示すフローチャートである。
【図３】図１に示したマルチプロセッサシステムにおけるデータをロードするときの動作の一例を示すフローチャートである。
【図４】本発明の第２の実施形態を示すブロック図である。
【図５】図４に示したアクセス先設定レジスタの設定内容の一例を示す説明図である。
【図６】図４に示したマルチプロセッサシステムにおけるデータをストアするときの動作の一例を示す説明図である。
【図７】図４に示したマルチプロセッサシステムにおけるデータをロードするときの動作の一例を示す説明図である。
【図８】本発明におけるデータをロードするときの動作の比較例を示す説明図である。
【図９】本発明の別の例を示すブロック図である。
【図１０】本発明の別の例を示すブロック図である。
【国際調査報告】
2007110898.tif 000013
2007110898.tif 000014