(57)【要約】【課題】多数のプロセッサが任意のメモリに対して等しく高い性能でアクセス可能であり、キャッシュの整合性を保つためのハードウェア物量が小さく、かつプロセッサのエンハンスによるキャッシュ容量の増加に容易に対応可能な共有メモリ型並列計算機を提供する。【解決手段】下位アドレスによってメモリがインタリーブされた、プロセッサが任意のメモリに対して等しく高い性能でアクセス可能な対称型マルチプロセッサ型計算機において、プロセッサをグループ化し、グループ間ではスヌープを間引き、すべてのリクエストをスヌープするのはグループ内に限ることによりスヌープリクエストを削減する。グループ間でスヌープを間引く手段としては、アドレス範囲によるスヌープ対象の限定と、ディレクトリを併用する。グループ内では、バックサイドでスヌープリクエストの転送を行うことでフロントサイドの負荷を減らす。【選択図】図１
2007207151.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュを持つ複数のプロセッサと、下位アドレスによってインタリーブされ、該複数のプロセッサによって共有されるメモリと、該プロセッサから発行されるメモリアクセスのリクエストを監視するスヌープフィルタを備える並列計算機であって、
該プロセッサは１つ以上のプロセッサからなる複数の論理的なプロセッサグループを形成し、該メモリは上位アドレスによって複数の論理的な領域に分割され、該スヌープフィルタは該メモリの各領域と該プロセッサグループを対応づける手段と、該プロセッサグループが対応づけられた領域の外の領域をキャッシュしている情報を保持する手段を備え、
該スヌープフィルタは、プロセッサから発行されるメモリアクセスのリクエストに基づき、そのアドレスを含む領域に対応づけられたプロセッサグループおよび、そのアドレスを含むラインをキャッシュしている可能性のあるプロセッサグループに対してスヌープリクエストを発行することを特徴とする並列計算機。
【請求項２】
請求項１の並列計算機であって、該プロセッサグループ内のプロセッサ間で該スヌープリクエストを転送する転送手段を備え、該プロセッサグループ内のプロセッサに対しては該転送手段を通じてスヌープリクエストを発行することにより、該スヌープフィルタから、メモリアクセスのリクエストを発行した該プロセッサの属する該プロセッサグループに対する該スヌープリクエストの発行を削減することを特徴とする並列計算機。
【請求項３】
請求項２の並列計算機であって、該スヌープフィルタは該プロセッサグループ内の該転送手段で接続されたプロセッサのいずれか１つだけにスヌープリクエストを発行し、
該スヌープリクエストを受け取ったプロセッサは該転送手段で接続されたすべてのプロセッサにスヌープリクエストを転送することにより、該スヌープフィルタから該プロセッサグループに対するスヌープリクエストの発行を削減することを特徴とする並列計算機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列計算機に係り、特に、科学技術計算に代表される大規模並列プログラムを実行するのに適した、高メモリバンド幅で高並列の共有メモリ型並列計算機の構成に属する。
【背景技術】
【０００２】
共有メモリ型並列計算機の構成としては、全てのプロセッサから全てのメモリを均等にアクセス可能な対称型マルチプロセッサと、各プロセッサ(またはプロセッサグループ)はそれぞれの近くに配置された一部のメモリだけを高速に、他のプロセッサ(またはプロセッサグループ)の近くに配置されたそれ以外のメモリについてはネットワークを通じて低速にアクセス可能なＣＣ−ＮＵＭＡ(Ｃache Ｃoherent Non-Uniform Memory Ａccess)型マルチプロセッサが知られている。
【０００３】
一般的に、計算機においてプロセッサ単体の実効性能を向上するためにキャッシュが不可欠である。共有メモリ型並列計算機においては、各プロセッサは、他のプロセッサのメモリアクセスをスヌープし、自分のキャッシュしているラインへのメモリアクセスがあった場合には、必要に応じてそのラインを無効化、更新、またはメモリへの書き戻しを行うことで、キャッシュとメモリの整合性を保っている。
【０００４】
しかし、プロセッサ数が増加すると、他プロセッサのメモリアクセスをすべてスヌープする場合には、スヌープの能力がボトルネックになって、メモリアクセスの性能が頭打ちになる。そのためプロセッサ数に比例したメモリアクセスのバンド幅を確保するためには、不要なリクエストを間引いてから各プロセッサがスヌープする必要がある。
【０００５】
対称型マルチプロセッサの例として、特開２０００−１７２５６４（特許文献１）には、プロセッサの外に、プロセッサの全キャッシュのタグと同等の情報を持ち、メモリスイッチを通過するストアリクエストの内、アドレスがこの情報と一致したものだけをプロセッサに送ることで、スヌープの数を削減している技術が開示されている。
【０００６】
上記特許文献１の技術によれば、プロセッサの持つキャッシュが大きい場合は、プロセッサの外に持つタグと同等の情報も大きくなるため、必要となるハードウェア物量が大きくなる。また、プロセッサのキャッシュ増加に対応するためには、同時にプロセッサの外にもつタグと同等の情報も増やす必要があるため、プロセッサだけのエンハンスによるキャッシュ増加に容易に対応できない。
【０００７】
ＣＣ−ＮＵＭＡ型マルチプロセッサの例として、米スタンフォード大学で研究されたＤＡＳＨ（非特許文献１）では、各プロセッサグループの近くのメモリにディレクトリを設け、その他のプロセッサグループがそのメモリの内容をキャッシュしている情報を保持する。そのメモリに対するリクエストはメモリ近くのプロセッサグループによってスヌープされるとともに、そのアドレスを含むラインを他のプロセッサグループがキャッシュしていれば、ディレクトリを参照してそのプロセッサグループにもスヌープリクエストが送られる。
【０００８】
【特許文献１】特開２０００−１７２５６４公報
【非特許文献１】Lenoski, Daniel, et al.,  The Stanford ＤＡＳＨ Multiprocessor,  Computer, IEEE, 1992年3月, Volume 25, issue 3, ＰＰ.63-79
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上記非特許文献１に記載の技術によれば、各プロセッサが近くのメモリだけを参照している場合には、プロセッサグループ内のスヌープだけを処理するため、容易にプロセッサ数に比例したメモリアクセス性能を実現できるが、他のプロセッサグループの近くのメモリを頻繁に参照する場合には、ネットワーク性能、ディレクトリ参照の性能、１つのプロセッサグループのメモリ性能、１つのプロセッサのスヌープ性能のいずれか、もしくはすべてがボトルネックとなり得る。
【００１０】
これは、大規模並列プログラムにおいて、データ中の各要素を読み書きするプロセッサが一つではない場合、例えばメモリを縦横にアクセスする行列の転置や、データサイズが変化しながらメモリをアクセスしていくプログラム等で性能が出ないことを意味する。
【００１１】
実装面に目を向けると、全てのプロセッサから全てのメモリを均等にアクセス可能な対称型マルチプロセッサでは、プロセッサ数が多くなると、プロセッサとメモリの物理的平均距離が大きくなり、長距離配線が増える。また、高メモリバンド幅を要求しない並列計算機においては、多数のプロセッサとメモリをバス接続することで、少ない配線でスヌープを実現することができるが、高メモリバンド幅が必要な並列計算機では、プロセッサとメモリの間をスイッチで接続し、プロセッサからスイッチまでは一対一またはそれに近いネット形態で接続するため、配線量が多くなる。
【００１２】
このため、多数のプロセッサで高メモリバンド幅の対称型マルチプロセッサを構成する場合、スヌープリクエストが多いことにより転送のバンド幅要求が大きく、それを満たすための配線が多いことにより長距離の配線量が多くなり、実装に与える負担が大きくなる。
【００１３】
そこで、本発明の目的は、プロセッサが任意のメモリに対して等しく高い性能でアクセス可能であり、キャッシュの整合性を保つためのハードウェア物量が小さく、かつプロセッサのエンハンスによるキャッシュ容量の増加に容易に対応可能な共有メモリ型並列計算機を提供することにある。
また、本発明の目的は、多数のプロセッサにより上記並列計算機を構成した場合の長距離配線量を削減可能とし、実装の負担を軽減することにある。
【課題を解決するための手段】
【００１４】
本発明は、下位アドレスによってメモリがインタリーブされた、プロセッサが任意のメモリに対して等しく高い性能でアクセス可能な対称型マルチプロセッサ型計算機において、プロセッサをグループ化し、グループ間ではスヌープを間引き、すべてのリクエストをスヌープするのはグループ内に限ることによりスヌープリクエストを削減することで、上記第１の目的を解決するものである。
また、グループ内では、バックサイドでスヌープリクエストの転送を行うことでフロントサイドの負荷を減らすことにより、上記第２の目的を解決するものである。
【００１５】
本発明による並列計算機は、好ましくは、キャッシュを持つ複数のプロセッサと、下位アドレスによってインタリーブされ、複数のプロセッサによって共有されるメモリと、プロセッサから発行されるメモリアクセスのリクエストを監視するスヌープフィルタを備える並列計算機であって、プロセッサは１つ以上のプロセッサからなる複数の論理的なプロセッサグループを形成し、メモリは上位アドレスによって複数の論理的な領域に分割され、スヌープフィルタはメモリの各領域とプロセッサグループを対応づけるテーブルと、プロセッサグループが対応づけられた領域の外の領域をキャッシュしている情報を保持するディレクトリを備え、スヌープフィルタは、プロセッサから発行されるメモリアクセスのリクエストに基づき、そのアドレスを含む領域に対応づけられたプロセッサグループおよび、そのアドレスを含むラインをキャッシュしている可能性のあるプロセッサグループに対してスヌープリクエストを発行するように構成された並列計算機にある。
【００１６】
好ましい例では、グループ間でスヌープを間引く手段としては、アドレス範囲によるスヌープ対象の限定と、ディレクトリを併用する。
また、好ましくは、メモリを上位アドレスにより複数の論理的な領域に分割し、各プロセッサグループとメモリの領域を対応づける。オペレーティングシステムおよびコンパイラのサポートにより、プロセッサは主に、プロセッサグループが対応付けられたメモリの領域を使用する。各プロセッサが対応づけられた領域のメモリだけをキャッシュしている限りは、メモリリクエストのアドレスが含まれる領域に対応づけられていないプロセッサグループはそのメモリリクエストをスヌープする必要はない。
また、好ましくは、ディレクトリはプロセッサグループが対応づけられた領域以外のメモリをキャッシュしている情報を保持する。メモリリクエストのアドレスが含まれる領域に対応づけられていないプロセッサグループに対しては、ディレクトリを参照して、メモリリクエストのアドレスを含むラインをキャッシュしている可能性のあるプロセッサグループのみにスヌープリクエストを発行することで、スヌープリクエストを削減することができる。
【００１７】
上記構成では、プロセッサグループ間のスヌープリクエストを削減可能だが、プロセッサグループ内のスヌープリクエストは多いままである。そのため、好ましくは、プロセッサとメモリの間をスイッチで接続した高メモリバンド幅の対称型マルチプロセッサにおいては、スイッチからプロセッサに対してスヌープリクエストが発行されるが、プロセッサグループ内のスヌープを送る専用パスを設けることで、スイッチからプロセッサに送るスヌープリクエストを削減し、プロセッサとスイッチの間のバンド幅要求を下げることができる。
【００１８】
また、プロセッサが他グループのメモリリクエストをスヌープする場合も、スイッチからプロセッサへのパスだけを使った場合は、プロセッサグループ内の全てのプロセッサに同じスヌープリクエストを送ることになる。ここで、好ましくは、スイッチからはプロセッサグループ内でスヌープを送る専用パスで接続されたプロセッサのうち、いずれか一つだけにスヌープリクエストを送り、スイッチからのスヌープリクエストを受けたプロセッサが専用パスを通じてスヌープリクエストを転送することにより、プロセッサとスイッチの間のバンド幅要求を下げることができる。
【発明の効果】
【００１９】
本発明によれば、プロセッサが任意のメモリに対して等しく高い性能でアクセス可能であり、キャッシュの整合性を保つためのハードウェア物量が小さく、かつプロセッサのエンハンスによるキャッシュ容量の増加に容易に対応可能な共有メモリ型並列計算機を得ることができる。また、多数のプロセッサにより上記並列計算機を構成した場合の長距離配線量を削減可能とし、実装の負担を軽減することができる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の実施の形態について、図面を用いて説明する。
【実施例１】
【００２１】
図１は、一実施例による並列計算機の構成を示すブロック図である。
１６個のプロセッサ１０１〜１１６はそれぞれ４個ずつ分けられて４つのグループに分割される。即ち、プロセッサ１０１〜１０４はプロセッサグループＡに属し、同様にプロセッサ１０５〜１０８は、プロセッサグループＢ、プロセッサ１０９〜１１２はプロセッサグループＣ、プロセッサ１１３〜１１６はプロセッサグループＤにそれぞれ属する。なお、プロセッサグループの数および、各プロセッサが何れのプロセッサグループに属するかは固定としてもよいし、又は可変として別途設けるテーブル等によりプロセッサとプロセッサグループを対応づけるようにしてもよい。
【００２２】
これらのプロセッサ１０１〜１１６は、メモリスイッチ３０００を介してメモリ２０１〜２０４に接続される。メモリスイッチ３０００は、プロセッサ側スイッチ３１０１〜３１１６と、メモリ側スイッチ３２０１〜３２０４から構成される２段スイッチを有している。プロセッサ１０１〜１１６はプロセッサ側スイッチ３１０１〜３１１６に接続され、メモリ側スイッチ３２０１〜３２０４を介してメモリ２０１〜２０４に接続される。
メモリスイッチ３０００は、スヌープフィルタ４０００を有し、スヌープフィルタ４０００は、論理的に分割されたメモリの領域とプロセッサグループを対応づける情報(Ｌ)のテーブル５００と、ディレクトリ(Ｄ)６００を備える。
【００２３】
メモリ２０１〜２０４は下位アドレスによりインタリーブされる。インタリーブの単位は任意であるが、本実施例では、キャッシュラインをインタリーブの単位とする例を示す。
図中のＰ(０)からＰ(n-１)までのｎライン分を領域Ｐ２０１０、Ｑ(０)からＱ(ｎ-１)までのｎライン分を領域Ｑ２０２０、Ｒ(０)からＲ(ｍ-１)までのｍライン分を領域Ｒ２０３０、Ｓ(０)以降を領域Ｓ２０４０とする。
なお、本実施例では、メモリに４つの領域を定義したが、領域の数及び各領域の大きさは固定としてもよいし、又は可変とすることもできる。可変とする場合は、領域の境界となるアドレスを保持する等の方式が考えられる。
【００２４】
図２は、上位アドレスにより論理的に分割されたメモリの領域とプロセッサグループの対応関係を規定する情報(Ｌ)のテーブル５００の例を示す。この図を参照して、スヌープを間引く手段に関するアドレス範囲によるスヌープ対象の限定について説明する。
図示のように、４つのエントリ５１０〜５４０は領域とプロセッサグループの関係を規定する。すなわち、領域ＰにはプロセッサグループＡ、領域ＱにはプロセッサグループＢ、領域ＲにはプロセッサグループＣおよびプロセッサグループＤがそれぞれ対応づけられており、領域Ｓにはいずれのプロセッサグループも対応づけられていない。
エントリ５３０の様に、一つの領域に複数のプロセッサグループを対応づけることも可能であり、また逆に、複数の領域に一つのプロセッサを対応づけることも可能である。
【００２５】
この例のように、アドレス範囲によるスヌープ対象の限定では、領域Ｐに対する全てのメモリアクセスを、領域Ｐに対応づけられたプロセッサグループであるプロセッサグループＡがスヌープする。プロセッサグループＢ、プロセッサグループＣ、プロセッサグループＤは、後述するディレクトリ（図３）によってスヌープ対象とならない限り、領域Ｐに対するメモリリクエストをスヌープしない。
【００２６】
図３は、プロセッサグループが対応づけられた領域以外のメモリをキャッシュしている情報を保持するディレクトリ(Ｄ)６００の例を示す。
この図を参照して、ディレクトリにより、領域に対応づけられていないプロセッサグループがスヌープ対象となる場合について説明する。
エントリ６１１〜６１４は、プロセッサグループＡ以外のプロセッサグループが、プロセッサグループＡの対応づけられた領域Ｐのラインをキャッシュしていることを示す。同様にエントリ６２１〜６２５は、プロセッサグループＢ以外のプロセッサグループが、プロセッサグループＢの対応づけられた領域Ｑのラインをキャッシュしていることを示す。エントリ６３１はプロセッサグループＣ以外でありかつプロセッサグループＤ以外のプロセッサグループがプロセッサグループＣおよびプロセッサグループＤの対応づけられた領域Ｒのラインをキャッシュしていることを示す。エントリ６４１〜６４４は、全てのプロセッサグループが、いずれのプロセッサグループも対応づけられていない領域Ｓのラインをキャッシュしていることを示す。エントリ６３１に示す通り、一つのラインを複数のプロセッサグループがキャッシュすることも可能である。
【００２７】
本例に基づく、ディレクトリにより、領域に対応づけられていないプロセッサグループがスヌープ対象となるケースにおける動作の例について、以下に説明する。
ラインＰ(３３)に対するメモリアクセスがあれば、ディレクトリ６００を参照し、エントリ６１１によりプロセッサグループＢがラインＰ(３３)をキャッシュしていることが示される。このため、アドレス範囲による限定だけでは、領域Ｐに対応づけられていなかったプロセッサグループＢはスヌープ対象でなかったものが、ディレクトリによってスヌープ対象となる。
【００２８】
同様に、ラインＲ(０)に対するメモリアクセスがあれば、エントリ６３１によりプロセッサグループＡおよびプロセッサグループＢがラインＲ(０)をキャッシュしていることが示される。このため、領域Ｒに対応づけられていなかったプロセッサグループＡおよびプロセッサグループＢもスヌープ対象となる。
【００２９】
本実施例におけるディレクトリのエントリは、プロセッサグループが対応づけられた領域以外の領域をキャッシュすることで登録される。ディレクトリに空きエントリがなくなると、古いエントリを消去する。古いエントリを消去するときには、対応するキャッシュも消去するため、登録されていたプロセッサグループに対して、当該キャッシュラインについてのパージリクエストを発行する。
【００３０】
上記のメカニズムにより、プロセッサグループが対応づけられた領域以外の領域をキャッシュすることができる量は、ディレクトリのエントリ数の制約を受ける。プロセッサグループが対応づけられた領域をキャッシュすることについては制約がない。
このため、プロセッサは主に、オペレーティングシステムおよびコンパイラのサポートにより、プロセッサグループが対応づけられたメモリの領域を使用することで、キャッシュを十分に利用することができる。必要な場合に限り、プロセッサグループが対応づけられた領域以外のメモリの領域を使用したときも、本実施例のスヌープを削減する効果により、メモリアクセスの性能を低下させることはない。
【００３１】
オペレーティングシステムおよびコンパイラのサポートの例としては、限られたプロセッサしか参照しないローカル変数は、当該プロセッサが含まれるプロセッサグループが対応づけられたメモリの領域に割り当て、全てのプロセッサが参照するグローバル変数を、本実施例の領域Ｓのようにいずれのプロセッサグループも対応づけられていないメモリの領域に割り当てることが考えられる。
プロセッサグループ内のプロセッサ数で処理できる程度に並列度が低いプログラムについては、すべての変数をプロセッサグループが対応づけられたメモリの領域に割り当てればよい。
【００３２】
なお、図１の例において、メモリスイッチ３０００は、プロセッサ側スイッチ３１０１〜３１１６と、メモリ側スイッチ３２０１〜３２０４からなる２段スイッチの構成を有しているが、この構成に限定されない。例えば、単段のスイッチの方が２段スイッチよりもレイテンシが小さくなるため性能がよいが、プロセッサ数が多い場合はハードウェア物量が多くなる。さらに、プロセッサ数が多い場合は、３段以上のスイッチからなる構成とすることもありえる。このため、実際の装置設計においては、性能とハードウェア物量のトレードオフによりスイッチ段数を決定する。
本実施例では、スヌープフィルタ４０００が、上記メモリスイッチ構造のどこに接続されるかを明示していない。これは、スヌープフィルタを接続するのに最適な位置は、論理的接続のみならず、メモリスイッチ構造をLＳIや基板等の上にどのように分割して実装するかに依存するためである。
【実施例２】
【００３３】
図４は、メモリスイッチの実装を考慮した並列計算機の一実施例を示す。
本実施例では、２段スイッチ構成のメモリスイッチについて、プロセッサ１０１〜１１６の近傍にプロセッサ側スイッチ３１０１〜３１１６をそれぞれ配置している。また、メモリ２０１〜２０４の近傍（上側）にメモリ側スイッチ３２０１〜３２０４を配置している。
プロセッサ側及びメモリ側の点線で囲まれた部分は、それぞれ同一のＬＳI内、または同一基板内、または同一シャーシ内等の、物理的に近接配置される範囲であることを示す。
【００３４】
本実施例では、メモリ側スイッチに合わせ、スヌープフィルタも４つの部分４２０１〜４２０４に分割し、それぞれメモリ側スイッチ２０１〜メモリ側スイッチ２０４に接続している。各分割されたスヌープフィルタ４２０１〜４２０４は、論理的に分割されたメモリの領域とプロセッサグループを対応づける情報(Ｌ)テーブルについては、各々が完全なコピーを持つ。また、ディレクトリ(Ｄ)については、分割されたスヌープフィルタ４２０１はメモリ２０１のキャッシュラインの情報のみを持ち、同様に分割されたスヌープフィルタ４２０２から分割されたスヌープフィルタ４２０４は、対応するメモリ２０２〜２０４のキャッシュラインの情報のみを持つ。
【００３５】
論理的に分割されたメモリの領域とプロセッサグループを対応づける情報(Ｌ)は、ディレクトリ(Ｄ)と比較してデータ量が少ないので、各々が完全なコピーを持つことによるオーバーヘッドは小さい。
本実施例によれば、高並列で高メモリバンド幅の共有メモリ型計算機を構成するのに必須となる、多段構成のメモリスイッチを分割して実装する形態において、スヌープフィルタが容易に分割して実装可能である。
【実施例３】
【００３６】
実施例２に示された例では、プロセッサをグループ化し、グループ間ではスヌープを間引く手段だけでは、同一プロセッサグループ内のスヌープリクエストの間引きは行わない。このため、プロセッサグループ内のプロセッサ数が多い場合には、プロセッサとメモリスイッチ間のパスを使って全てのスヌープリクエストを転送すると、同一プロセッサグループ内のスヌープリクエストが、メモリスイッチの帯域の大きな割合を使用し、装置全体のプロセッサ数が大きい場合には、帯域要求が大きいことによりグローバル配線数が増え、実装にインパクトを与える。
【００３７】
図５に示す並列計算機の例は、バックサイドでスヌープリクエストの転送を行うことでフロントサイドの負荷を減らす実施例について説明するものである。各プロセッサグループＡ〜Ｄは、プロセッサグループ内でスヌープリクエストを転送するパス７０１〜７１６を備える。なお、メモリスイッチ３０００及びメモリ２０１〜２０４の構成は図１と同様である。
【００３８】
プロセッサ１０１からのスヌープリクエストは、プロセッサグループ内でスヌープリクエストを転送するパス７０１を通じて同一プロセッサグループ内のプロセッサ１０２〜１０４に転送される。同様に、プロセッサ１０２〜１１６からのスヌープリクエストは、プロセッサグループ内でスヌープリクエストを転送するパス７０２からプロセッサグループ内でスヌープリクエストを転送するパス７１６を通じて同一プロセッサグループ内の他のプロセッサに転送される。これにより、同一プロセッサグループ内のスヌープリクエストによるメモリスイッチの帯域の使用量を削減することができる。
【００３９】
また、プロセッサグループＡが、他プロセッサグループのリクエストをスヌープする場合は、スヌープフィルタにより間引きされた後、プロセッサとスイッチの間のパスを通じて、プロセッサグループＡ内のプロセッサにスヌープリクエストが送られる。ここで、プロセッサグループＡ内のすべてのプロセッサに対して、プロセッサとメモリスイッチ間のパスを使ってスヌープリクエストを送るのではなく、プロセッサグループ内のいずれか一つのプロセッサ、例えばプロセッサ１０１にスヌープリクエストを送り、プロセッサ１０１からプロセッサグループ内でスヌープリクエストを転送するパス７０１を通じて、プロセッサ１０２〜プロセッサ１０４に転送することで、スヌープリクエストが使用するメモリスイッチの帯域を削減することができる。他のプロセッサグループについても同様である。
なお、上記の例で、スイッチからスヌープリクエストを受けるプロセッサは、固定である必要はなく、特定のパスに負荷が集中することを避けるため、アドレスハッシュや、ラウンドロビン等により分散させることが望ましい。
【００４０】
図５において、プロセッサグループ内でスヌープリクエストを転送するパス７０１〜７１６は、シングルソース、マルチシンクのパスの如くに描かれているが、これは情報の流れを示す概念的なものである。実際の回路形態としては、ポイントトゥーポイントで全体全の接続であってもよいし、また、バスを時分割や適当な優先権制御を行うことにより、一つのプロセッサが送信した信号を、同一プロセッサグループ内の他のプロセッサが同時に受信する構成であってもよい。
またさらにその変形として、プロセッサ間をバックサイドでスイッチ接続し、そのスイッチを通じてスヌープリクエストの放送を行う構成であってもよい。
【実施例４】
【００４１】
図６は、更に他の実施例による並列計算機を示す。
プロセッサ１０１〜１０４は、プロセッサの近傍に配置されたプロセッサ側スイッチ３１５１に接続される。同様に、プロセッサ１０５〜１０８、プロセッサ１０９〜１１２、プロセッサ１１３〜１１６は、プロセッサ側スイッチ３１５２、３１５３、３１５４にそれぞれ接続される。他の構成は図４に示したものと同様である。
この例によれば、プロセッサの近傍に配置されたプロセッサスイッチに、プロセッサグループへのスヌープリクエストの放送の機能を持たせ、また、プロセッサグループ内でのスヌープリクエストを、プロセッサの近傍に配置されたプロセッサスイッチで折り返すことにより、スイッチ間のスヌープリクエストの転送を削減することができる。本実施例は、実施例３の最後に示した、バックサイドに設けたスイッチを通じてスヌープリクエストの放送を行う構成をさらに変形し、フロントサイドのスイッチにバックサイドのスイッチの機能を取り込んだものと見ることもできる。
【実施例５】
【００４２】
図７は、更に他の実施例による並列計算機を示す。
プロセッサグループＡ内のプロセッサ１６１〜１６４はバス結合によりプロセッサ側スイッチ３１６０に接続される。同様に、各プロセッサグループＢ、Ｃ、Ｄ内のプロセッサ１７１〜１７４、プロセッサ１８１〜１８４、プロセッサ１９１〜１９４は、それぞれバス結合によりプロセッサ側スイッチ３１７０、３１８０、３１９０に接続される。本実施例は、並列計算機全体では、プロセッサ数に比例した高いメモリバンド幅が必要であるが、個々のプロセッサについては高いバンド幅を要求しない場合に適用され得る。
【００４３】
以上説明したように、いくつかの本実施例によれば、各プロセッサが処理するスヌープリクエストの数が減るので、プロセッサのスヌープ性能の制約を受けずに、プロセッサ数に比例したメモリアクセスのバンド幅を確保した高並列の共有メモリ型並列計算機を構成できる。さらに、並列計算機は、ＣＣ−ＮＵＭＡ型マルチプロセッサと異なり、全てのプロセッサがメモリの特定の範囲をアクセスする場合や、メモリを縦横にアクセスする場合においても極端な性能低下を引き起こさない。
また、本実施例によれば、スヌープリクエストの多くを局所化するので、高メモリアクセスバンド幅の共有メモリ型並列計算機において、グローバル配線を減らし、実装にあたえるインパクトを軽減することができる。
【図面の簡単な説明】
【００４４】
【図１】本発明の一実施例（実施例１）における並列計算機の構成を示すブロック図である。
【図２】分割されたメモリの論理的な領域とプロセッサグループの対応関係を規定する情報のテーブル５００の例を示す図である。
【図３】プロセッサグループが対応づけられた領域以外のメモリをキャッシュしている情報を保持するディレクトリ６００の例を示す図である。
【図４】本発明の他の実施例（実施例２）による並列計算機の構成を示すブロック図である。
【図５】本発明の他の実施例（実施例３）による並列計算機の構成を示すブロック図である。
【図６】本発明の他の実施例（実施例４）による並列計算機の構成を示すブロック図である。
【図７】本発明の他の実施例（実施例５）による並列計算機の構成を示すブロック図である。
【符号の説明】
【００４５】
１０１〜１１６、１６１〜１９４：プロセッサ  ２０１〜２０４：メモリ  
５００：論理分割メモリ領域／プロセッサグループ対応付け情報（Ｌ）テーブル  
５１０〜５４０：エントリ  ６００：ディレクトリ  ６１１〜６４４：ディレクトリのエントリ  
７０１〜７１６：スヌープリクエスト転送パス  ２０１０〜２０４０：論理分割メモリ領域  ３０００：メモリスイッチ  ３１０１〜３１９０：プロセッサ側スイッチ  
３２０１〜３２０４：メモリ側スイッチ  ４０００：スヌープフィルタ  ４２０１〜４２０４：分割スヌープフィルタ。
【図１】
2007207151.tif 000003
【図２】
2007207151.tif 000004
【図３】
2007207151.tif 000005
【図４】
2007207151.tif 000006
【図５】
2007207151.tif 000007
【図６】
2007207151.tif 000008
【図７】
2007207151.tif 000009