(57)【要約】【課題】プロセッサコア間でメッセージ通信を行う並列プログラム実行の電力効率を向上する情報処理システムを提供する。【解決手段】ノード間ネットワーク５で接続された複数の計算ノード１，２間でデータ通信を行いながら並列処理を行う情報処理システムにおいて、計算ノード１は、計算ノード１で動作中のプログラムがデータ送信の準備が完了したにもかかわらず、計算ノード２でデータ受信の準備が完了していない場合に、計算ノード１を省電力モードに移行させるための通信制御ソフトウェアを備える。または、計算ノード２は、計算ノード２で動作中のプログラムがデータ受信の準備が完了したにもかかわらず、計算ノード１でデータ送信の準備が完了していない場合に、計算ノード２を省電力モードに移行させるための通信制御ソフトウェアを備える。【選択図】図１
2010134698.tif 000002
【特許請求の範囲】
【請求項１】
複数の計算ノードと、前記複数の計算ノード間を接続するネットワークとを備え、前記ネットワークで接続された前記複数の計算ノード間でデータ通信を行いながら並列処理を行う情報処理システムであって、
前記複数の計算ノードは、第１の計算ノードと第２の計算ノードとを含み、
前記第１の計算ノードは、前記第１の計算ノードで動作中のプログラムがデータ送信の準備が完了し、前記第２の計算ノードでデータ受信の準備が完了していない場合に、前記第１の計算ノードを省電力モードに移行させるための通信制御ソフトウェアを備えることを特徴とする情報処理システム。
【請求項２】
請求項１に記載の情報処理システムにおいて、
前記第１の計算ノードは、前記第２の計算ノードでデータ受信の準備が完了しているかどうかを、前記通信制御ソフトウェアにおける送信関数、ノンブロッキング型の送信完了関数、または、前記複数の計算ノードが同期してデータ送受信を行う集団通信関数の内部で検出して省電力制御を行うことを特徴とする情報処理システム。
【請求項３】
請求項２に記載の情報処理システムにおいて、
前記通信制御ソフトウェアは、ＭＰＩ通信ライブラリであることを特徴とする情報処理システム。
【請求項４】
請求項２に記載の情報処理システムにおいて、
前記送信関数、前記送信完了関数、および、前記集団通信関数の各関数は、プログラム開発者が記述する指示文によって、移行する省電力モードおよび対象ブロックを変更可能であり、プログラムの処理内容に応じて、消費電力の削減量と、省電力モードへの移行および復帰にかかる実行時間の増加を制御することを特徴とする情報処理システム。
【請求項５】
請求項１に記載の情報処理システムにおいて、
前記第１の計算ノードは、前記ネットワークに接続されるネットワークアダプタを備え、
前記ネットワークアダプタは、通常の電力モードへ復帰する際の条件を設定するレジスタ群と、送受信パケットを監視して復帰条件を判定する判定部とを備え、復帰条件を満たした場合に周波数・電源電圧制御ユニットに対して通常の電力モードへの復帰を指示することを特徴とする情報処理システム。
【請求項６】
請求項５に記載の情報処理システムにおいて、
前記周波数・電源電圧制御ユニットは、省電力モードへの移行を制御するレジスタ群を備え、
前記周波数・電源電圧制御ユニットに備える省電力モードへの移行を制御するレジスタ群と、前記ネットワークアダプタに備える通常の電力モードへ復帰する際の条件を設定するレジスタ群とは、前記通信制御ソフトウェアから設定できるレジスタ群と、オペレーティングシステムが特権モードで省電力制御を行うレジスタ群とに分離して備えることを特徴とする情報処理システム。
【請求項７】
請求項１に記載の情報処理システムにおいて、
前記第１の計算ノードは、複数のプロセッサコアと各プロセッサコアに付随するキャッシュメモリと主記憶とを統合して１つのパッケージに３次元実装されたチップであり、前記キャッシュメモリのハードウェアによるコヒーレンス制御が及ぶ範囲に応じて、前記キャッシュメモリの論理ブロックの省電力モード移行を行うことを特徴とする情報処理システム。
【請求項８】
複数の計算ノードと、前記複数の計算ノード間を接続するネットワークとを備え、前記ネットワークで接続された前記複数の計算ノード間でデータ通信を行いながら並列処理を行う情報処理システムであって、
前記複数の計算ノードは、第１の計算ノードと第２の計算ノードとを含み、
前記第２の計算ノードは、前記第２の計算ノードで動作中のプログラムがデータ受信の準備が完了し、前記第１の計算ノードでデータ送信の準備が完了していない場合に、前記第２の計算ノードを省電力モードに移行させるための通信制御ソフトウェアを備えることを特徴とする情報処理システム。
【請求項９】
請求項８に記載の情報処理システムにおいて、
前記第２の計算ノードは、前記第１の計算ノードでデータ送信の準備が完了しているかどうかを、前記通信制御ソフトウェアにおける受信関数、ノンブロッキング型の受信完了関数、または、前記複数の計算ノードが同期してデータ送受信を行う集団通信関数の内部で検出して省電力制御を行うことを特徴とする情報処理システム。
【請求項１０】
請求項９に記載の情報処理システムにおいて、
前記通信制御ソフトウェアは、ＭＰＩ通信ライブラリであることを特徴とする情報処理システム。
【請求項１１】
請求項９に記載の情報処理システムにおいて、
前記受信関数、前記受信完了関数、および、前記集団通信関数の各関数は、プログラム開発者が記述する指示文によって、移行する省電力モードおよび対象ブロックを変更可能であり、プログラムの処理内容に応じて、消費電力の削減量と、省電力モードへの移行および復帰にかかる実行時間の増加を制御することを特徴とする情報処理システム。
【請求項１２】
請求項８に記載の情報処理システムにおいて、
前記第２の計算ノードは、前記ネットワークに接続されるネットワークアダプタを備え、
前記ネットワークアダプタは、通常の電力モードへ復帰する際の条件を設定するレジスタ群と、送受信パケットを監視して復帰条件を判定する判定部とを備え、復帰条件を満たした場合に周波数・電源電圧制御ユニットに対して通常の電力モードへの復帰を指示することを特徴とする情報処理システム。
【請求項１３】
請求項１２に記載の情報処理システムにおいて、
前記周波数・電源電圧制御ユニットは、省電力モードへの移行を制御するレジスタ群を備え、
前記周波数・電源電圧制御ユニットに備える省電力モードへの移行を制御するレジスタ群と、前記ネットワークアダプタに備える通常の電力モードへ復帰する際の条件を設定するレジスタ群とは、前記通信制御ソフトウェアから設定できるレジスタ群と、オペレーティングシステムが特権モードで省電力制御を行うレジスタ群とに分離して備えることを特徴とする情報処理システム。
【請求項１４】
請求項８に記載の情報処理システムにおいて、
前記第２の計算ノードは、複数のプロセッサコアと各プロセッサコアに付随するキャッシュメモリと主記憶とを統合して１つのパッケージに３次元実装されたチップであり、前記キャッシュメモリのハードウェアによるコヒーレンス制御が及ぶ範囲に応じて、前記キャッシュメモリの論理ブロックの省電力モード移行を行うことを特徴とする情報処理システム。
【請求項１５】
複数の計算ノードと、前記複数の計算ノード間を接続するネットワークとを備え、前記ネットワークで接続された前記複数の計算ノード間でデータ通信を行いながら並列処理を行う情報処理システムであって、
前記複数の計算ノードは、ＭＰＩ通信ライブラリである通信制御ソフトウェアをそれぞれ備えた第１の計算ノードと第２の計算ノードとを含み、
前記第１の計算ノード上の前記通信制御ソフトウェアは、前記第１の計算ノードで動作中のプログラムがデータ送信の準備が完了し、前記第２の計算ノードでデータ受信の準備が完了していない場合に、前記第１の計算ノードを省電力モードに移行させ、
前記第２の計算ノード上の前記通信制御ソフトウェアは、前記第２の計算ノードで動作中のプログラムがデータ受信の準備が完了し、前記第１の計算ノードでデータ送信の準備が完了していない場合に、前記第２の計算ノードを省電力モードに移行させることを特徴とする情報処理システム。
【請求項１６】
請求項１５に記載の情報処理システムにおいて、
前記第１の計算ノードおよび前記第２の計算ノードは、前記第２の計算ノードまたは前記第１の計算ノードでデータ受信またはデータ送信の準備が完了しているかどうかを、前記通信制御ソフトウェアにおける送信関数、受信関数、ノンブロッキング型の送信完了関数、受信完了関数、または、前記複数の計算ノードが同期してデータ送受信を行う集団通信関数の内部で検出して省電力制御を行うことを特徴とする情報処理システム。
【請求項１７】
請求項１６に記載の情報処理システムにおいて、
前記送信関数、前記受信関数、前記送信完了関数、前記受信完了関数、および、前記集団通信関数の各関数は、プログラム開発者が記述する指示文によって、移行する省電力モードおよび対象ブロックを変更可能であり、プログラムの処理内容に応じて、消費電力の削減量と、省電力モードへの移行および復帰にかかる実行時間の増加を制御することを特徴とする情報処理システム。
【請求項１８】
請求項１５に記載の情報処理システムにおいて、
前記第１の計算ノードおよび前記第２の計算ノードは、それぞれ、前記ネットワークに接続されるネットワークアダプタを備え、
前記ネットワークアダプタは、通常の電力モードへ復帰する際の条件を設定するレジスタ群と、送受信パケットを監視して復帰条件を判定する判定部とを備え、復帰条件を満たした場合に周波数・電源電圧制御ユニットに対して通常の電力モードへの復帰を指示することを特徴とする情報処理システム。
【請求項１９】
請求項１８に記載の情報処理システムにおいて、
前記周波数・電源電圧制御ユニットは、省電力モードへの移行を制御するレジスタ群を備え、
前記周波数・電源電圧制御ユニットに備える省電力モードへの移行を制御するレジスタ群と、前記ネットワークアダプタに備える通常の電力モードへ復帰する際の条件を設定するレジスタ群とは、前記通信制御ソフトウェアから設定できるレジスタ群と、オペレーティングシステムが特権モードで省電力制御を行うレジスタ群とに分離して備えることを特徴とする情報処理システム。
【請求項２０】
請求項１５に記載の情報処理システムにおいて、
前記第１の計算ノードおよび前記第２の計算ノードは、それぞれ、複数のプロセッサコアと各プロセッサコアに付随するキャッシュメモリと主記憶とを統合して１つのパッケージに３次元実装されたチップであり、前記キャッシュメモリのハードウェアによるコヒーレンス制御が及ぶ範囲に応じて、前記キャッシュメモリの論理ブロックの省電力モード移行を行うことを特徴とする情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システムに関し、特に、複数のプロセッサコアとメモリで構成されるマルチプロセッサシステムの並列プログラム実行における省電力制御に適用して有効な技術に関する。
【背景技術】
【０００２】
本発明者が検討したところによれば、情報処理システムに関しては、例えば特許文献１，２、非特許文献１に記載される技術などがある。
【０００３】
特許文献１には、コンパイラが、入力プログラムから自動的に並列性を持つタスクを抽出し、複数のコアに割り当て、効率の良いスケジューリングを行い、処理時間を見積もることで、動作周波数と電源電圧を最適化するコードを生成するマルチプロセッサシステムについて開示されている。
【０００４】
特許文献２には、プロセッサコア間の通信にメールボックスキューを提供するシステムにおいて、満杯の送信メールボックスに書き込むプロセッサコア、または、空の受信メールボックスから読み出すプロセッサコアが低電力状態に移行し、他のプロセッサコアが送信メールボックスから読み出しまたは受信メールボックスへ書き込むことによって通常の電力モードに復帰する方法が開示されている。
【０００５】
非特許文献１には、スレッドレベルおよびプロセスレベルの並列処理の組合せからなるプログラムの実行パターンに応じて、演算処理を行っていない一部のプロセッサコアの動作周波数と基板電圧を高速に制御することにより電力効率を向上する低電力回路技術が開示されている。
【特許文献１】特開２００７−３０５１４８号公報
【特許文献２】特開２００７−５２７９０号公報
【非特許文献１】Ｈ．Ａｏｋｉ，ｅｔ．ａｌ．，ＶＬＳＩ  Ｓｙｍｐｏｓｉｕｍ  ２００８「Ａ  Ｐｏｗｅｒｆｕｌ  ｙｅｔ  Ｅｃｏｌｏｇｉｃａｌ  Ｐａｒａｌｌｅｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｙｓｔｅｍ  ｕｓｉｎｇ  Ｅｘｅｃｕｔｉｏｎ−ｂａｓｅｄ  Ａｄａｐｔｉｖｅ  Ｐｏｗｅｒ−ｄｏｗｎ  Ｃｏｎｔｒｏｌ  ａｎｄ  Ｃｏｍｐａｃｔ  Ｑｕａｄｒｕｐｌｅ−Ｐｒｅｃｉｓｉｏｎ  Ａｓｓｉｓｔ  ＦＰＵｓ」
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、前記のような情報処理システムに関して、本発明者が検討した結果、以下のようなことが明らかとなった。
【０００７】
前記のような情報処理システムにおいては、半導体素子の微細化とプロセッサ設計の複雑化に伴う消費電力の増大により、動作周波数と命令レベル並列度の向上によるプロセッサコア単体の性能向上に限界が生じている。そこで、プロセッサコア単体の設計は複雑化せず、プロセッサチップに搭載するコア数を増やして性能を上げるマルチコア化が進行している。さらに、大量の演算を所定の時間内で実行する必要がある応用分野においては、必要な処理性能を得るために、このようなプロセッサチップとメモリを多数接続して構成される並列計算機が使用される。
【０００８】
最近は、複数チップを積層する３次元実装の技術開発が進められており、将来、積層されたマルチコアプロセッサとメモリが３次元的に密結合したシステムオンチップと、これを多数接続して構成される並列計算機システムが実現可能となると予測される。
【０００９】
このようなマルチプロセッサシステムにおいて、コア数に比例した実効性能を得るためには、スレッドレベルおよびプロセスレベルの並列処理を行う必要がある。このスレッドレベルの並列処理では、使用する全プロセッサコアがメモリ空間を共有する必要があるのに対し、プロセスレベルの並列処理ではその制限はない。
【００１０】
もともとプロセッサコアの設計が単純である場合が多い組込み用途のプロセッサにおいては、マルチコア化による性能向上は一般的な手法であり、プログラムの並列化によるスケーラブルな高速処理と、多数の論理ブロックを時間的、空間的に細かく制御することによる省電力性を両立させる必要がある。
【００１１】
この問題を解決するための１つの方法として、前記特許文献１に開示されている、動作周波数と電源電圧を最適化するコードを生成するマルチプロセッサシステムの技術がある。また、プロセッサコア間の通信にメールボックスキューを提供するシステムとして、前記特許文献２に開示されている技術がある。さらに、スレッドレベルおよびプロセスレベルの並列処理の組合せからなるプログラムの実行において、電力効率を向上する低電力回路技術として、前記非特許文献１に開示されている技術がある。
【００１２】
しかしながら、前記のようなマルチプロセッサシステムにおいて、プログラムの並列化によるスケーラブルな高速処理を実現する、すなわち、処理量の増加に応じてコア数を増加してもコア数に比例した実効性能を得るためには、ローカルなメモリが個別に配置された計算ノードを複数個で接続し、ネットワーク経由のメッセージ通信によってデータを交換する分散メモリ型のマルチプロセッサシステムを用いるのが有利であり、従って、プロセスレベルの並列処理が必要となる。
【００１３】
この個々の計算ノードは共有メモリ型のマルチプロセッサシステムであり、プロセスレベルの並列処理を記述するためのプロセス間通信制御ソフトウェアとしては、ＭＰＩ（Ｍｅｓｓａｇｅ  Ｐａｓｓｉｎｇ  Ｉｎｔｅｒｆａｃｅ）通信ライブラリを利用されることが多い。
【００１４】
そこで、本発明の目的の１つは、前記のようなマルチプロセッサシステムに対する必要性を考慮して、プロセッサコア間でメッセージ通信を行う並列プログラム実行の電力効率を向上する情報処理システムを提供することにある。
【００１５】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１６】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１７】
すなわち、代表的なものの概要は、ネットワークで接続された複数の計算ノード間でデータ通信を行いながら並列処理を行う情報処理システムにおいて、第１の計算ノードは、第１の計算ノードで動作中のプログラムがデータ送信の準備が完了したにもかかわらず、第２の計算ノードでデータ受信の準備が完了していない場合に、第１の計算ノードを省電力モードに移行させるための通信制御ソフトウェアを備えることを特徴とする。または、第２の計算ノードは、第２の計算ノードで動作中のプログラムがデータ受信の準備が完了したにもかかわらず、第１の計算ノードでデータ送信の準備が完了していない場合に、第２の計算ノードを省電力モードに移行させるための通信制御ソフトウェアを備えることを特徴とする。
【発明の効果】
【００１８】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００１９】
すなわち、代表的なものによって得られる効果は、プロセッサコア間でメッセージ通信を行う並列プログラム実行の電力効率を向上する情報処理システムを提供することができる。
【発明を実施するための最良の形態】
【００２０】
＜本発明の実施の形態の概要＞
本発明の実施の形態では、マルチコアプロセッサを用いた情報処理システムにおける電力効率を向上するために、プロセスレベルの並列化によるスケーラブルな高速処理と、多数の論理ブロックを時間的・空間的に細かく制御することによる省電力性を両立することを目的とする。
【００２１】
この目的を達成するために、プロセッサコア間でメッセージ通信を行う並列プログラム実行の電力効率を向上する情報処理システムを提供する。プロセスレベルの並列化されたプログラムの実行においては、各プロセスの実行時間のばらつきに起因して、プロセス間通信を行う際にプロセス実行に待ちが発生する典型的なパターンがあり、これらのパターンをＭＰＩ通信ライブラリに代表される通信制御ソフトウェアで検出し、通信制御ソフトウェアから周波数・電源電圧制御（以下、ＦＶ制御と呼ぶ）ユニットに対して省電力モードへの移行を命令する。
【００２２】
この省電力モードは、プロセッサコアやキャッシュメモリなどの論理ブロックごとに設定することが可能であり、動作周波数変更、クロック供給停止、電源電圧変更、電源供給停止など、消費電力の削減量と通常電力モードへの復帰時間が異なる複数のモードを持つ。従って、メモリ素子中のデータを保持しつつ通常電力モードにソフトウェアのオーバヘッド込みで数サイクルから数十サイクルで復帰できるモードを用いることによって、プログラム全体の実行時間に大きな影響を与えずに通常電力モードに復帰可能である。
【００２３】
それぞれの計算ノードは、当該計算ノードに属する論理ブロックごとに省電力モードを制御するレジスタ群と、通常電力モードへの復帰条件を設定するレジスタ群と、復帰条件の判定部を備える。前記復帰条件の判定に必要なデータは、送受信データをメモリアクセスするＤＭＡコントローラから取得する。
【００２４】
省電力モードへの移行にあたっては、メッセージを送信（あるいは受信）する準備が完了した第１（第２）の計算ノードのプロセッサコアが、メッセージを受信（あるいは送信）する第２（第１）の計算ノードにおいて受信バッファの確保（あるいは送信データの準備）が完了しているかどうかを判定する。受信バッファの確保（あるいは送信データの準備）が未完了の場合、第１（第２）の計算ノードのプロセッサコアは、第１（第２）の計算ノードのネットワークアダプタに通常電力モードへの復帰条件を設定し、ＦＶ制御ユニットに対して第１（第２）の計算ノードのプロセッサコア群および周辺回路を省電力モードへ移行する命令を発行する。
【００２５】
通常電力モードへの復帰にあたっては、第１（第２）の計算ノードのネットワークアダプタが送受信されるメッセージを監視することによって復帰条件の判定を行い、第１（第２）の計算ノードのＦＶ制御ユニットに対してプロセッサコア群および周辺回路を通常の電力モードへ移行する命令を発行する。
【００２６】
省電力モード適用の対象となる、複数プロセスが同期する際のプロセス実行時間のばらつきの大きさは、実行するプログラムの内容によって異なる。省電力モードとして、動作周波数変更、クロック供給停止、電源電圧変更、電源供給停止など、省電力性と復帰時間の異なる複数のモードを持つ場合に、消費電力の削減量と、省電力モードへの移行および復帰にかかる実行時間増加との最適なバランスを、プログラム開発者によって記述される指示文によって、移行する省電力モードおよび対象ブロックを変更することを可能とすることで、プログラムの処理内容に応じて、消費電力の削減量と、省電力モードへの移行および復帰にかかる実行時間の増加を制御する。
【００２７】
以上のような構成により、プロセスレベルで並列化されたプログラムの実行において、プロセス間通信の際にプロセス実行に待ちが発生する典型的なパターンを通信制御ソフトウェアが検出して、動作を停止あるいは低速にすることができる論理ブロックに対する、最適な復帰時間の省電力モードと、通常電力モードへの復帰条件を設定することによって、電力効率を向上することができる。
【００２８】
また、遠隔の計算ノードにおけるデータ送信またはデータ受信の準備が完了しているかどうかを、通信制御ソフトウェアにおける送信関数、または、受信関数の内部で検出して省電力制御を行うことにより、省電力制御をサポートしないシステムにおいて動作する並列プログラムを変更することなく、省電力制御を行うシステムにおいては電力効率を上げて実行することができる。さらに、プログラムの処理内容に応じてプログラム開発者が記述する指示文によって、移行する省電力モードおよび対象ブロックを変更することを可能として、消費電力の削減量と、省電力モードへの移行および復帰にかかる実行時間の増加を最適に制御することができる。
【００２９】
以下、前述した本発明の実施の形態の概要に基づいた実施の形態を、図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００３０】
＜並列計算機システムの構成＞
図１は、本発明の情報処理システムの一実施の形態である並列計算機システムの構成の一例を示すブロック図である。
【００３１】
本実施の形態である並列計算機システムは、複数の計算ノードとノード間ネットワークで構成され、例えば図１の例においては、それぞれが同じ構成を持つ２つの計算ノード１および２と、ノード間ネットワーク５で構成されている。ここでは、計算ノード１を送信側、計算ノード２を受信側として説明し、さらに、計算ノード２が計算ノード１に対して遠隔に配置される場合を説明する。
【００３２】
計算ノード１は、複数（図１においては２つの例）のプロセッサコア（コア）１１１，１１２と、プロセッサコア１１１，１１２ごとに独立にアクセスできるローカルメモリ（ＬＭ）１２１，１２２と、プロセッサコア１１１，１１２からのアクセスに対してコヒーレンスが保証されているレベル１キャッシュメモリ（Ｌ１）１３１，１３２と、プロセッサコア１１１，１１２で共有されるレベル２キャッシュメモリ（Ｌ２キャッシュ）１４と、主記憶１５と、ネットワークアダプタ１６と、これらの論理ブロックに対して供給されるクロックや電源電圧を制御するＦＶ制御ユニット１０を主体として構成される。
【００３３】
この計算ノード１の主記憶１５には、送信データ１７が格納されている。さらに、主記憶１５には、ＭＰＩ通信ライブラリなどの通信制御ソフトウェアが格納されている。また、ネットワークアダプタ１６には、通常電力モードへの復帰条件の復帰判定部１６１と、送受信データをメモリアクセスするＤＭＡコントローラ（ＤＭＡＣ）１６２が設けられている。
【００３４】
計算ノード２も同様に、２つのプロセッサコア２１１，２２と、２つのローカルメモリ２２１，２２２と、２つのレベル１キャッシュメモリ２３１，２３２と、レベル２キャッシュメモリ２４と、主記憶２５と、ネットワークアダプタ２６と、ＦＶ制御ユニット２０を主体として構成される。この計算ノード２の主記憶２５には、受信バッファ２７が設けられており、さらに、ＭＰＩ通信ライブラリなどの通信制御ソフトウェアが格納されている。また、ネットワークアダプタ２６には、復帰判定部２６１と、ＤＭＡコントローラ２６２が設けられている。
【００３５】
この並列計算機システムでは、プロセスレベルで並列化されたプログラムを実行する場合、相互にデータ通信を行う複数のプロセスは、それぞれがある１つの計算ノード１，２に割り当てられる。この各プロセスは、計算ノード１，２内の複数のプロセッサコア１１１，１１２，２１１，２１２ごとにスレッドを割り当てる、スレッドレベルの並列化がなされていてもよい。
【００３６】
図１では、計算ノード１で動作しているプロセスが、ＭＰＩ通信ライブラリなどの通信制御ソフトウェアの送信関数を呼び出すことによって、主記憶１５上の送信データ１７を、計算ノード２で動作しているプロセスの主記憶２５上の受信バッファ２７へ、ネットワークアダプタ１６、ノード間ネットワーク５、ネットワークアダプタ２６を経由して、計算ノード１と計算ノード２間で複製する場合を示す。ノード間ネットワーク５は、共有バスやクロスバースイッチなどで構成してもよい。
【００３７】
ここでは、データを受信する計算ノード２側のプロセスは、受信バッファ２７にある必要なデータの上書きを防止するために、通信制御ソフトウェアの受信関数を呼び出す必要がある。受信関数を呼び出した時点で、受信バッファ２７へネットワークアダプタ２６のＤＭＡコントローラ２６２が、送信ノード１から送信されてきたデータを上書きしてもよいことを示す。
【００３８】
＜計算ノード間でのデータの複製（受信関数に対して送信関数の呼び出しが先行）＞
図２は、時間的に、計算ノード１のプロセス１８が送信関数１９１を呼び出し、次に、計算ノード２のプロセス２８が受信関数２９２を呼び出すことによって、送信データ１７を受信バッファ２７へ計算ノード間で複製する際に、送信関数１９１と受信関数２９２が、計算ノード１と２の間で受け渡すメッセージの一例を示す説明図である。この送信関数１９１は、受信関数２９２が呼び出され対応する受信を開始した時点でリターンする、同期型の通信を行うものとする。
【００３９】
送信データ１７の準備が終わったプロセス１８が、送信データ領域のアドレスとサイズを引数で指定して送信関数１９１を呼び出すと、送信関数１９１は送信要求の制御メッセージ３１を計算ノード２に送出するとともに、送信データ１７を通信バッファ１９０にコピーする。送信要求の制御メッセージ３１を受けた計算ノード２のネットワークアダプタ２６は、主記憶２５上に設けられる制御メッセージの制御用キュー２９３に送信要求を記録する。
【００４０】
次に、受信バッファ２７の準備が終わったプロセス２８が、受信バッファ２７のアドレスとサイズを引数で指定して受信関数２９２を呼び出すと、受信関数２９２は受信要求の制御メッセージ３２を計算ノード１に送出する。受信要求の制御メッセージ３２を受けた計算ノード１のネットワークアダプタ１６は、主記憶１５上に設けられる制御メッセージの制御用キュー１９３に受信要求を記録する。
【００４１】
送信関数１９１は、送信データ１７の通信バッファ１９０へのコピー終了後、制御用キュー１９３を調べて、送信要求の制御メッセージ３１に対応する受信要求の制御メッセージ３２が到着しているかどうかを確認する。到着している場合は、通信バッファ１９０から計算ノード２の通信バッファ２９０への計算ノード１，２間のデータ転送メッセージ３３を、ネットワークアダプタ１６に対して起動する。そして、受信完了した時点で、受信完了の制御メッセージ３４を計算ノード１に通知する。
【００４２】
一方、受信要求の制御メッセージ３２が到着していない場合は、送信側のプロセス１８に対して受信側のプロセス２８の実行が遅れていることを意味し、送信関数１９１が受信要求の制御メッセージ３２の到着を確認した時点でリターンする同期型のとき、計算ノード１のプロセッサコア１１１あるいは１１２は制御用キュー１９３をポーリングするループに入り、実質的な演算処理は行われない。
【００４３】
そこで、並列プログラム実行の電力効率を向上するため、送信関数１９１は、ＦＶ制御ユニット１０に対し、自らが動作する計算ノード１のプロセッサコア１１１，１１２を省電力モードに移行する命令を発行する。ここでは、移行する省電力モードを通信制御ソフトウェアの環境設定として指定可能としてもよく、また、受信要求の制御メッセージ３２が到達していないことを確認してから省電力制御を行うまでに一定の待ち時間を設け、この待ち時間を通信制御ソフトウェアの環境設定として指定可能としてもよい。
【００４４】
＜ＦＶ制御ユニットおよびネットワークアダプタのレジスタ群＞
図３は、ＦＶ制御ユニット１０における省電力モードへの移行を命令するレジスタ群１０１、および、ネットワークアダプタ１６における通常電力モードへの復帰条件を設定するレジスタ群１６３の一例を示す構成図である。ＦＶ制御ユニット１０は、レジスタ１０２に設定された論理ブロックに対して、レジスタ群１０１のいずれかに書き込みが行われたとき、当該レジスタに対応する電力モードへの移行を行う。ＦＶ制御ユニット１０における省電力制御命令は、一つの命令レジスタに命令コードをセットすることによって実現してもよい。あるいは、レジスタ群１０１のそれぞれに、制御対象の論理ブロックをビットマップで指定できるようにしてもよい。
【００４５】
移行する省電力モードが、電源電圧と動作周波数を低下するモード（ＬＶＬＦ）である場合、ポーリング間隔が伸びるものの、送信関数１９１は、受信要求の制御メッセージ３２の確認は引き続き行い、確認がとれた時点でＦＶ制御ユニット１０に対して命令を発行し、計算ノード１を通常の電源電圧と動作周波数に復帰させた後、リターンしてプロセス１８の実行を継続する。
【００４６】
移行する省電力モードが、プロセッサコア１１１，１１２の電源電圧をゼロにするモード（電源オフ）、あるいは動作周波数をゼロにするモード（クロック停止）である場合、送信関数１９１の動作も停止するため、受信要求の制御メッセージ３２を特徴付けるために必要な条件を、ネットワークアダプタ１６に設定した後、省電力モードへ移行する。ネットワークアダプタ１６は、ノード間ネットワーク５から到着するメッセージを復帰判定部１６１に渡し、受信要求の制御メッセージ３２の到達確認とＦＶ制御ユニット１０に対する通常電力モードへの復帰命令の発行を行う。
【００４７】
＜通常電力モードへの復帰条件設定のレジスタ群＞
図４は、通常電力モードへの復帰条件を設定するレジスタ群の一例を示す構成図である。図４における復帰条件の判定は、メッセージパケットの複数のワードに関する条件を示すレジスタ４０〜４９の論理演算によって行われる。個々のワードに関する条件を示すレジスタ４０は、有効ビット４０１、条件番号４０２、ワード番号４０３、ビットマスク４０４、および、ワードデータ４０５から構成され、有効ビット４０１の値が１であり、メッセージパケット先頭からのワード数がワード番号４０３の値である、メッセージパケットのワードについて、ビットマスク４０４の値が０であるビットのデータがワードデータ４０５の値に一致するとき、真と判定される。レジスタ４１〜４９も同様に、有効ビット４１１〜４９１、条件番号４１２〜４９２、ワード番号４１３〜４９３、ビットマスク４１４〜４９４、および、ワードデータ４１５〜４９５から構成される。
【００４８】
複数のワードに関する条件を示すレジスタ４０〜４９のうち、条件番号の値が同じ条件について論理和をとった後、条件番号の値が異なる条件について論理積をとった結果が真であるとき、通常電力モードへの復帰命令を発行する。この条件は、受信要求の制御メッセージ３２を特徴付ける必要条件であればよく、送信要求の制御メッセージ３１に対応する受信要求の制御メッセージ３２を厳密に特定する必要かつ十分な条件を設定しなくてもよい。
【００４９】
また、通常電力モードへの復帰にあたっては、受信要求の制御メッセージ３２の到着に伴いネットワークアダプタ１６からプロセッサコア１１１あるいは１１２へ受信割り込みを発生するようにして、割り込み発生をＦＶ制御ユニット１０が監視して、プロセッサコア１１１，１１２を通常電力モードへ復帰するように実現してもよい。
【００５０】
＜計算ノード間でのデータの複製（送信関数に対して受信関数の呼び出しが先行）＞
図５は、前記図２に対して、計算ノード２のプロセス２８が受信関数２９２を呼び出し、次に、計算ノード１のプロセス１８が送信関数１９１を呼び出すという順番の場合に、送信関数１９１と受信関数２９２が計算ノード１と２の間で受け渡すメッセージの一例を示す説明図である。この受信関数２９２は、受信バッファ２７への受信したデータを書き込みが完了した時点でリターンするブロッキング型とする。
【００５１】
受信バッファ２７の準備が終わったプロセス２８が、受信バッファのアドレスとサイズを引数で指定して受信関数２９２を呼び出すと、受信関数２９２は受信要求の制御メッセージ３２を計算ノード１に送出する。
【００５２】
次に、送信データ１７の準備が終わったプロセス１８が、送信データ領域のアドレスとサイズを引数で指定して送信関数１９１を呼び出すと、送信関数１９１は送信要求の制御メッセージ３１を計算ノード２に送出する。送信要求の制御メッセージ３１を受けた計算ノード２のネットワークアダプタ２６は、主記憶２５上に設けられる制御メッセージの制御用キュー２９３に送信要求を記録する。
【００５３】
送信関数１９１は、送信データ１７の通信バッファ１９０へのコピー終了後、制御用キュー１９３を調べて、送信要求の制御メッセージ３１に対応する受信要求の制御メッセージ３２が到着していることを確認し、通信バッファ１９０から計算ノード２の通信バッファ２９０への計算ノード１，２間のデータ転送メッセージ３３を、ネットワークアダプタ１６に対して起動する。受信関数２９２は、転送されたデータを通信バッファ２９０から受信バッファ２７へコピーする。
【００５４】
従って、受信関数２９２が受信要求の制御メッセージ３２を送出した時点で、送信要求の制御メッセージ３１が到着していない場合は、受信側のプロセス２８に対して送信側のプロセス１８の実行が遅れていることを意味し、受信関数２９２がブロッキング型のとき、計算ノード２のプロセッサコア２１１あるいは２１２は制御用キュー２９３をポーリングするループに入り、実質的な演算処理は行われない。
【００５５】
そこで、並列プログラム実行の電力効率を向上するため、受信関数２９２は、ＦＶ制御ユニット２０に対し、自らが動作する計算ノード２のプロセッサコア２１１，２１２を省電力モードに移行する命令を発行する。ここでは、移行する省電力モードを通信制御ソフトウェアの環境設定として指定可能としてもよく、また、送信要求の制御メッセージ３１が到達していないことを確認してから省電力制御を行うまでに一定の待ち時間を設けて、この待ち時間を通信制御ソフトウェアの環境設定として指定可能としてもよい。
【００５６】
移行する省電力モードが、受信関数１９２の動作が停止する、プロセッサコアの電源電圧あるいは動作周波数をゼロにするモードである場合、送信要求の制御メッセージ３１を特徴付けるために必要な条件を、ネットワークアダプタ２６に設定した後、省電力モードへ移行する。ネットワークアダプタ２６は、ノード間ネットワーク５から到着するメッセージを復帰判定部２６１に渡し、送信要求の制御メッセージ３１の到達確認とＦＶ制御ユニット２０に対する通常電力モードへの復帰命令の発行を行う。
【００５７】
＜集団通信関数＞
ところで、プロセスレベルで並列化されたプログラムの多くにおいて、複数のプロセスにまたがってブロードキャスト、全対全通信、総和などの操作を行う、集団通信関数が使用される。集団通信に参加するプロセスグループの全てのプロセスは、送信バッファおよび受信バッファ双方の引数を指定して集団通信関数を呼び出し、集団通信関数の内部において、送信先の計算ノードあるいは受信元の計算ノードを集団通信の種類に応じたパターンで変化させながら、複数回の送信および受信が行われる。
【００５８】
そこで、集団通信関数の内部において、前記の省電力制御を行う送信関数および受信関数を使用することによって、プロセスグループにおけるそれぞれのプロセス実行時間のばらつきに起因する送信待ち、および、受信待ちの間のプロセッサコアを省電力モードに移行して、電力効率を向上することができる。
【００５９】
図６は、計算ノード１，２に加えて、４つの計算ノード１〜４で構成される場合に、計算ノード１〜４で動作しているプロセス１８，２８，３８，４８からなるプロセスグループにおいて、各プロセスが自分のデータを全てのプロセスに送る動作である、全対全通信を行う集団通信関数による、送信関数および受信関数の使用例を示す説明図である。ここでは、各プロセスの実行時間にばらつきがあり、集合通信関数１Ｃ，２Ｃ，３Ｃ，４Ｃの呼び出し時刻が異なる。また、１２Ｓ，１３Ｓ，２１Ｓ，２４Ｓ，３４Ｓ，３１Ｓ，４３Ｓ，４２Ｓは送信関数を示し、それぞれに対応し、１２Ｒ，１３Ｒ，２１Ｒ，２４Ｒ，３４Ｒ，３１Ｒ，４３Ｒ，４２Ｒは受信関数を示す。
【００６０】
前記全対全通信は、まず、計算ノード１と２の間、および、計算ノード３と４の間でデータを交換し、次に、計算ノード１と３の間、および、計算ノード２と４の間でデータを交換することによって実現される。計算ノード１のプロセス１８においては、まず、計算ノード２への送信関数１２Ｓにより自プロセスのデータをプロセス２８へ送り、計算ノード２からの受信関数２１Ｒによりプロセス２８のデータを受信する。次に、計算ノード３への送信関数１３Ｓにより自プロセスおよびプロセス２８のデータをプロセス３８へ送り、計算ノード３からの受信関数３１Ｒによりプロセス３８および４８のデータを受信する。
【００６１】
図６においては、プロセス１８に対して、プロセス２８の実行が遅れているので、送信関数１２Ｓにおいて、計算ノード１のプロセッサコアに対する前記の省電力制御が適用できる。プロセス４８に対して、プロセス３８の実行が遅れているので、受信関数３４Ｒにおいて、計算ノード４のプロセッサコアに対する前記の省電力制御が適用できる。また、計算ノード３と４の間でのデータ交換終了に対して、計算ノード１と２の間でのデータ交換の終了が遅れるので、受信関数１３Ｒおよび２４Ｒにおいて、計算ノード３および４のプロセッサコアに対する前記の省電力制御が適用できる。
【００６２】
２つの計算ノード間でのデータ交換を行う場合に、同期型の送信関数を用いることにより、図６における送信関数１２Ｓおよび受信関数１２Ｒは、プロセス１８とプロセス２８の実行時間のずれを吸収する。従って、引き続いて行われる逆方向の送信関数２１Ｓおよび受信関数２１Ｒについては、効果の小さい省電力制御を適用しないことにより、実行時間の増大を抑えることができる。
【００６３】
同様に、２つの計算ノード間でのデータ交換を行う場合に、ブロッキング型の受信関数を用いることにより、図６における受信関数３４Ｒおよび送信関数３４Ｓが、プロセス３８とプロセス４８の実行時間のずれは吸収するため、送信関数４３Ｓおよび受信関数４３Ｒについては省電力制御を適用せず、実行時間の増大を抑えることができる。
【００６４】
＜ノンブロッキング型の送信関数と受信関数＞
ところで、プロセスレベルで並列化されたプログラムの実行時間を短縮するため、あるいは、各プロセスが非同期に動作する場合に、送信あるいは受信の起動のみを行ってリターンする、ノンブロッキング型の送信関数、受信関数を使用する場合がある。
【００６５】
ノンブロッキング型の送信関数の呼出しは、送信データがコピーされる前にリターンするので、送信を完了させるため、すなわち、送信データのコピーが終了したことを確認するために、送信完了関数の呼出しが必要となる。
【００６６】
同様に、ノンブロッキング型の受信関数の呼出しは、送られてきたデータが受信バッファに格納される前にリターンするので、受信操作を完了させ、データが受信バッファに受け取られたことを確認するためには、受信完了関数の呼出しが必要である。
【００６７】
図７は、計算ノード１で動作しているプロセス１８から計算ノード２で動作しているプロセス２８へのノンブロッキング型の通信と、演算処理をオーバーラップすることにより実行時間を短縮する通信例を示す説明図である。ここでは、１ＮＳはノンブロッキング型の送信関数の呼出しを示し、これに対応し、１ＷＳは送信完了関数の呼出し、１ＥＳは送信完了関数のリターンをそれぞれ示す。また、２ＮＲはノンブロッキング型の受信関数の呼出しを示し、これに対応し、２ＷＲは受信完了関数の呼出し、２ＥＲは受信完了関数のリターンをそれぞれ示す。
【００６８】
図７（ａ）は、プロセス１８による送信起動が、プロセス２８による受信起動に対して先行して発行される場合を示す。送信データの準備が終わったプロセス１８は、ノンブロッキング型の送信関数の呼出し１ＮＳを行い、送信を起動する。ノンブロッキング型の送信関数は、図２に示される、送信要求の制御メッセージ３１を計算ノード２に送出するとともに、送信データ１７を通信バッファ１９０にコピーを開始する。送信要求の制御メッセージ３１を受けた計算ノード２のネットワークアダプタ２６は、制御メッセージの制御用キュー２９３に送信要求を記録する。
【００６９】
ノンブロッキング型の送信関数は、送信データ１７のコピー完了を待つことなくリターンし、プロセス１８は演算処理を続行した後、送信完了関数の呼出し１ＷＳを行う。
【００７０】
一方、計算ノード２のプロセス２８は、前記送信関数の呼出し１ＮＳに対応する受信バッファの準備ができると、ノンブロッキング型の受信関数の呼出し２ＮＲを行い、受信を起動する。ノンブロッキング型の受信関数は、図２に示される、受信要求の制御メッセージ３２を計算ノード１に送出してリターンし、引き続いて行われるネットワークアダプタ２６によるデータ受信と並行して、プロセッサコアでは演算処理を続行する。受信要求の制御メッセージ３２を受けた計算ノード１のネットワークアダプタ１６は、制御メッセージの制御用キュー１９３に受信要求を記録する。
【００７１】
前記の送信完了関数は、制御用キュー１９３をポーリングするループに入り、受信要求の制御メッセージ３２の到着を待つ。従って、送信完了関数の呼出し１ＷＳから受信要求３２の到着までの間、計算ノード１において実質的な演算処理は行われない。
【００７２】
そこで、送信完了関数は、呼出し１ＷＳにおいて受信要求の制御メッセージ３２が未到着の場合、ＦＶ制御ユニットに対し、自らが動作する計算ノード１のプロセッサコアを省電力モードに移行する命令を発行する。ここでは、移行する省電力モードを通信制御ソフトウェアの環境設定として指定可能としてもよく、また、受信要求の制御メッセージ３２が到達していないことを確認してから省電力制御を行うまでに一定の待ち時間を設けて、この待ち時間を通信制御ソフトウェアの環境設定として指定可能としてもよい。
【００７３】
図７（ｂ）は、プロセス２８による受信起動が、プロセス２８による送信起動に対して先行して発行される場合である。受信バッファを確保したプロセス２８は、ノンブロッキング型の受信関数の呼出し２ＮＲを行い、受信を起動する。ノンブロッキング型の受信関数は、図５に示される、受信要求の制御メッセージ３２を計算ノード１に送出する。
【００７４】
ノンブロッキング型の受信関数は、データの受信を待つことなくリターンし、プロセス２８は演算処理を続行した後、受信完了関数の呼出し２ＷＲを行う。
【００７５】
一方、計算ノード１のプロセス１８は、前記受信関数の呼出し２ＮＲに対応する送信データの準備ができると、ノンブロッキング型の送信関数の呼出し１ＮＳを行い、送信を起動する。ノンブロッキング型の送信関数は、図５に示される、送信要求の制御メッセージ３１を計算ノード２に送出する。送信要求の制御メッセージ３１を受けた計算ノード２のネットワークアダプタ２６は、制御メッセージの制御用キュー２９３に送信要求を記録する。
【００７６】
前記の受信完了関数は、制御用キュー２９３をポーリングするループに入り、送信要求の制御メッセージ３１の到着を待つ。従って、受信完了関数の呼出し２ＷＲから送信要求の制御メッセージ３１の到着までの間、計算ノード２において実質的な演算処理は行われない。
【００７７】
そこで、受信完了関数は、呼出し２ＷＲにおいて送信要求の制御メッセージ３１が未到着の場合、ＦＶ制御ユニットに対し、自らが動作する計算ノード２のプロセッサコアを省電力モードに移行する命令を発行する。ここでは、移行する省電力モード、あるいは、省電力制御を行うまでの待ち時間を通信制御ソフトウェアの環境設定として指定可能としてもよい。
【００７８】
なお、図２に示すように、データの送信を、通信バッファ１９０を経由して行う方式の通信制御ソフトウェアでは、使用される送信関数が、同期型ではない、ブロッキング型の場合に、送信データ１７が通信バッファ１９０へのメモリコピーが完了し、送信データ領域が上書き可能になった時点で、計算ノード２へのデータ転送開始を待たずにリターンすることができる。プロセス１８は、遠隔の計算ノード２のプロセス２８の実行状況に依存せずに、処理を続行できるため、省電力モードへの移行を行う必要がない。
【００７９】
ノンブロッキング型の送信関数で起動した通信の送信完了関数においても、前記と同じく遠隔の計算ノードの実行状況に依存せずに処理を続行できるため、省電力モードへの移行を行う必要はない。
【００８０】
一方、大量のデータをプロセス間で通信するプログラムにおいて、図２に示す通信バッファ１９０，２９０を経由する通信方式は、通信バッファ１９０，２９０によるメモリ使用量増大と、メモリコピーによる実行時間増加が問題となる。
【００８１】
＜ネットワークアダプタが送信データおよび受信バッファを直接アクセスする方式＞
図８は、送信関数１９１、受信関数２９２において、１回の送信および受信によって転送されるデータ量が、しきい値１９４，２９４より大きい場合に、送信データ１７をネットワークアダプタ１６が直接読み出して、計算ノード２へ転送されたデータを、ネットワークアダプタ２６が受信バッファ２７へ直接書き込む方式を示す説明図である。
【００８２】
このとき、受信関数２９２の呼出しに対して時間的に先行して呼び出される、ブロッキング型の送信関数１９１、あるいは、ノンブロッキング型で起動した通信の送信完了関数は、ネットワークアダプタ１６が全ての送信データ１７を読み出し完了するまで、リターンしない。従って、ＦＶ制御ユニットに対し、自らが動作する計算ノード１のプロセッサコアを省電力モードに移行する命令を発行することができる。また、ネットワークアダプタ１６が送信データ１７の読み出しを行うため、プロセッサコアの省電力モードから通常電力モードへの復帰するタイミングを、送信データ１７の読み出し完了時とすることにより、省電力モードの適用時間を延長することができる。
【００８３】
さらに、受信側の計算ノード２において、ネットワークアダプタ２６が受信バッファ２７へ書き込みを行うため、プロセッサコアの省電力モードから通常電力モードへの復帰するタイミングを、受信バッファ２７への書き込み完了時とすることにより電力効率を向上させることができる。
【００８４】
＜本実施の形態の効果＞
以上で説明したように、本実施の形態によれば、ＭＰＩ通信ライブラリに代表される通信制御ソフトウェアにおける、送信関数、受信関数、ノンブロッキング型で起動された送信完了関数、受信完了関数、あるいは、複数回のデータ送受信を伴う集団通信関数の内部において、省電力モードへの移行条件を検出し、通常電力モードへの復帰条件を設定し、省電力制御を行うことにより、省電力制御をサポートしないシステムにおいて動作する並列プログラムを変更することなく、省電力制御を行うシステムにおいては電力効率を向上させて実行することができる。
【００８５】
さらに、電力効率を向上するために、省電力モードとして、動作周波数変更、クロック供給停止、電源電圧変更、電源供給停止など、省電力性と復帰時間の異なる複数のモードを持つ場合に、プログラム開発者が、プログラムの処理内容に応じて、移行する省電力モードおよび対象ブロックの変更を可能とすることが望ましい。
【００８６】
プログラム開発者は、前記省電力制御を適用対象となる通信関数呼出し時点において発生し得るプロセス実行時間のばらつきの大きさと、通信の頻度および粒度を見積もり、省電力モードへの移行および復帰にかかる実行時間の増加と対比することによって、通常電力モードのままで通信を行う場合も含んで最適な省電力モードを選択する。選択した省電力モードは、省電力制御をサポートしないシステムにおいてはコメント文として解釈されて実行に影響を与えない形式の指示文によって、記述することにより、プログラムの互換性を保ちながら、消費電力の削減量と、省電力モードへの移行および復帰にかかる実行時間の増加を最適に制御することができる。
【００８７】
＜本実施の形態の付加機能および応用例＞
以下においては、本実施の形態である並列計算機システムにおける付加機能および応用例として、省電力制御の対象ブロック、管理者権限とユーザ権限、システムオンチップについて説明する。
【００８８】
＜省電力制御の対象ブロック＞
省電力モードへ移行する対象ブロックについて、以下で説明する。図１に示す並列計算機システムにおけるプロセッサコア以外の論理ブロックを省電力制御の対象とすることができる。
【００８９】
ネットワークアダプタ１６，２６およびノード間ネットワーク５が、外部システムとの通信には使用されず、前記通信関数によって占有されるネットワークである場合、ネットワークアダプタ１６あるいは２６に処理すべき情報がなく、一定時間書き込みがなければ自ら省電力モードへ移行し、送信または受信のための情報が書き込まれたら通常電力モードへ復帰する。
【００９０】
主記憶１５あるいは２５は、通信関数からの制御による、プロセッサコア１１１，１１２あるいは２１１，２１２に対する省電力制御と合わせて、省電力モードへの移行および通常電力モードへの復帰を行うことができる。
【００９１】
図１が、送信側の計算ノード１のレベル１およびレベル２キャッシュメモリ１３１，１３２および１４に対する、受信側の計算ノード２におけるレベル１およびレベル２キャッシュメモリ２３１，２３２および２４のコヒーレンスが、ハードウェアにより保証されないシステムである場合に、受信側の計算ノード２におけるキャッシュメモリ２３１，２３２および２４は、ブロッキング型の受信関数において、受信バッファ２７の領域をキャッシュパージしてからリターンするまでの間、省電力モードへ移行させることができる。
【００９２】
送信データ１７が、ローカルメモリ１２１あるいは１２２に準備されて、キャッシュメモリとは独立なローカルメモリ間でデータ送信が行われる場合、送信側の計算ノード１におけるキャッシュメモリ１３１，１３２および１４は、ブロッキング型の送信関数において、計算ノード１から２へのデータ転送を開始してから送信関数がリターンするまでの間、省電力モードへ移行させることができる。
【００９３】
受信バッファ２７が、ローカルメモリ２２１あるいは２２２に準備されて、キャッシュメモリとは独立なローカルメモリ間でデータ受信が行われる場合、受信側の計算ノード２におけるキャッシュメモリ２３１，２３２および２４は、ブロッキング型の受信関数において、計算ノード１から２へのデータ転送が開始されてから受信関数がリターンするまでの間、省電力モードへ移行させることができる。
【００９４】
＜管理者権限とユーザ権限＞
ところで、本発明における特徴の一つに、計算ノード内の資源管理を行うオペレーティングシステムが管理者権限で省電力制御を行うのではなく、ユーザ権限で実行される通信関数の内部で省電力制御を行うことがある。省電力モードへの移行を伴うユーザプログラム実行と並行して、オペレーティングシステムが優先度の高い処理を実行している場合には、ユーザ権限での省電力制御に対して管理者権限での省電力制御を優先させる必要がある。
【００９５】
図９は、ＦＶ制御ユニット１０において、管理者権限の特権モードによってのみ値をセットできる省電力制御レジスタ１０３および制御対象論理ブロックをセットするレジスタ１０４を、別途備える構成の一例を示す構成図である。ここでは、管理者権限による省電力制御レジスタ１０３に値がセットされているときは、ユーザプログラムからの省電力制御は行うことができない。
【００９６】
＜システムオンチップ＞
本発明の実現の一形態として、複数チップを積層する３次元実装技術を利用して、積層されたマルチコアプロセッサチップとメモリチップを３次元的に密結合したシステムオンチップを、ノード間ネットワークで複数接続したシステム構成が挙げられる。ここでは、マルチコアプロセッサチップは、プロセッサコアと各プロセッサコアに付随するキャッシュメモリを備える。
【００９７】
論理構成としては３次元実装を前提としないマルチコアプロセッサチップとメモリチップを構成要素として積層する場合、３次元接続に関する、ハードウェアによるキャッシュコヒーレンス制御機能を持たず、２次元的に実装されているマルチコアプロセッサチップ内部でのみ行われる場合がある。
【００９８】
図１０は、マルチコアプロセッサチップ５１，５２、メモリチップ６１，６２、および、インターフェースチップ７１を３次元接続バス８１〜８４により接続したシステムオンチップの一例を示す説明図である。これに限定されるものではないが、例えば図１に対応させると、マルチコアプロセッサチップ５１，５２にはプロセッサコアとレベル１キャッシュメモリが備えられ、メモリチップ６１，６２には主記憶とローカルメモリとレベル２キャッシュメモリが備えられ、インターフェースチップ７１にはネットワークアダプタとＦＶ制御ユニットが備えられる。
【００９９】
キャッシュメモリのコヒーレンス制御が及ぶ適用範囲が、メモリチップ６１，６２上の主記憶を共有するコア群の一部にとどまる前記のタイプの図１０の計算ノードにおいて、あるマルチコアプロセッサチップ５１上の全てのコアが動作を停止する省電力モードに移行するとき、他のマルチコアプロセッサチップ５２で動作中のコアによる主記憶アクセスによって、マルチコアプロセッサチップ５１上のキャッシュメモリは、影響を受けないため、省電力モードに移行できる。例えば、マルチコアプロセッサチップ５２上で行われている通信関数以外の処理が行われていない場合、マルチコアプロセッサチップ５２上のキャッシュメモリは、通信関数の主記憶アクセスによりコヒーレンス制御を受ける可能性があるために動作を停止させない一方で、マルチコアプロセッサチップ５１上のキャッシュメモリに対して、省電力モードを適用し、動作を停止させる。
【０１００】
図１０に示すようなマルチコアプロセッサチップとメモリチップを３次元実装したシステムオンチップにおいて、プロセッサコアとこれに付随するキャッシュメモリを備えるマルチコアプロセッサチップ５１または５２ごとに、キャッシュメモリのハードウェアによるコヒーレンス制御が及ぶ範囲に応じてキャッシュメモリの省電力モード移行を行うことができる。
【０１０１】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【０１０２】
本発明は、ネットワークで接続されたマルチコアプロセッサで構成される情報処理システムに適用することで、通信制御ソフトウェアの通信関数内部において論理ブロックごとに省電力モードへの移行および通常電力モードへの復帰を行うことによる、プロセスレベルの並列化によるスケーラブルな高速処理と省電力性を両立することができる。
【図面の簡単な説明】
【０１０３】
【図１】本発明の情報処理システムの一実施の形態である並列計算機システムの構成の一例を示すブロック図である。
【図２】本発明の情報処理システムの一実施の形態において、送信関数の呼び出しが受信関数の呼び出しに対して時間的に先行する場合に計算ノード間で渡されるメッセージの一例を示す説明図である。
【図３】本発明の情報処理システムの一実施の形態において、省電力モードへの移行命令および通常電力モードへの復帰条件を設定するレジスタ群の一例を示す構成図である。
【図４】本発明の情報処理システムの一実施の形態において、通常電力モードへの復帰条件を設定するレジスタ群の一例を示す構成図である。
【図５】本発明の情報処理システムの一実施の形態において、送信関数の呼び出しに対して受信関数の呼び出しが時間的に先行する場合に計算ノード間で渡されるメッセージの一例を示す説明図である。
【図６】本発明の情報処理システムの一実施の形態において、全対全通信を行う集団通信関数による送信関数および受信関数の使用例を示す説明図である。
【図７】本発明の情報処理システムの一実施の形態において、演算処理とオーバーラップするノンブロッキング型の通信例（ａ），（ｂ）を示す説明図である。
【図８】本発明の情報処理システムの一実施の形態において、ネットワークアダプタが送信データおよび受信バッファを直接アクセスする方式を示す説明図である。
【図９】本発明の情報処理システムの一実施の形態において、管理者権限でのみセットできるレジスタを分離した省電力制御レジスタの構成の一例を示す構成図である。
【図１０】本発明の情報処理システムの一実施の形態において、マルチコアプロセッサチップとメモリチップを積層したシステムオンチップの一例を示す説明図である。
【符号の説明】
【０１０４】
１，２，３，４  計算ノード
５  ノード間ネットワーク
１０，２０  ＦＶ制御ユニット（周波数・電源電圧制御ユニット）
１０１  レジスタ群
１０２  レジスタ
１０３  省電力制御レジスタ
１０４  レジスタ
１１１，１１２，２１１，２１２  プロセッサコア
１２１，１２２，２２１，２２２  ローカルメモリ
１３１，１３２，２３１，２３２  レベル１キャッシュメモリ
１４，２４  レベル２キャッシュメモリ
１５，２５  主記憶
１６，２６  ネットワークアダプタ
１７  送信データ
２７  受信バッファ
１６１，２６１  復帰判定部
１６２，２６２  ＤＭＡコントローラ
１６３  レジスタ群
１８，２８，３８，４８  プロセス
１９０，２９０  通信バッファ
１９１  送信関数
２９２  受信関数
１９３，２９３  制御用キュー
１９４，２９４  しきい値
３１  送信要求の制御メッセージ
３２  受信要求の制御メッセージ
３３  データ転送メッセージ
３４  受信完了の制御メッセージ
４０〜４９  レジスタ
４０１〜４９１  有効ビット
４０２〜４９２  条件番号
４０４〜４９４  ビットマスク
４０５〜４９５  ワードデータ
５１，５２  マルチコアプロセッサチップ
６１，６２  メモリチップ
７１  インターフェースチップ
８１〜８４  ３次元接続バス
【図１】
2010134698.tif 000003
【図２】
2010134698.tif 000004
【図３】
2010134698.tif 000005
【図４】
2010134698.tif 000006
【図５】
2010134698.tif 000007
【図６】
2010134698.tif 000008
【図７】
2010134698.tif 000009
【図８】
2010134698.tif 000010
【図９】
2010134698.tif 000011
【図１０】
2010134698.tif 000012