(57)【要約】【課題】  分散処理を容易に実現させる。【解決手段】  問題解決部１１１は、オセロゲームのコマを置く手順を決めるための盤上のコマの情報を問題として取得し、それぞれ考えられる次の一手毎に部分問題として分割する。問題解決状態リスト生成部１１２は、部分問題から部分問題解決状態リストを生成し、部分問題解決状態リスト記憶部１０４に記憶させる。分担決定部１１３は、分散処理装置動作状態管理部１０１により取得されて生成された分散処理装置動作状態リスト記憶部１０２に記憶された分散処理装置動作リストと、部分問題解決状態リストに基づいて、部分問題の処理の分担を分散処理装置毎に行い、分担結果と部分問題の情報をソフトウェアセル生成部１１４に供給する。ソフトウェアセル生成部１１４は、供給された部分問題と、それらの問題を処理すべきプログラムからソフトウェアセルを生成し、各分担として決定された分散処理装置に送信する。【選択図】  図７
2005339137.tif 000002
【特許請求の範囲】
【請求項１】
第１の情報処理装置と少なくとも１の第２の情報処理装置からなる情報処理システムにおいて、
前記第１の情報処理装置は、
問題を複数の部分問題に分割する分割手段と、
前記少なくとも１の第２の情報処理装置の動作状態に基づいて、前記分割手段により分割された部分問題毎の処理分担を決定する分担決定手段と、
前記部分問題の処理に必要な部分問題情報を生成する部分問題情報生成手段と、
前記部分問題情報生成手段により生成された部分問題情報を、それぞれ前記分担決定手段により処理分担として決定された前記少なくとも１の第２の情報処理装置に送信する第１の送信手段と、
前記少なくとも１の第２の情報処理装置により処理された、前記部分問題情報に対応する部分問題処理結果を受信する第１の受信手段と
を備え、
前記第２の情報処理装置は、
前記第１の情報処理装置より送信されてくる前記部分問題情報を受信する第２の受信手段と、
前記第２の受信手段により受信された部分問題情報に基づいて、前記部分問題の処理を実行する実行手段と、
前記実行手段により処理が実行された前記部分問題処理結果を、前記第１の情報処理装置に送信する第２の送信手段と
を備える
ことを特徴とする情報処理システム。
【請求項２】
問題を複数の部分問題に分割する分割手段と、
少なくとも１の他の情報処理装置の動作状態に基づいて、前記分割手段により分割された部分問題毎の処理分担を決定する分担決定手段と、
前記部分問題の処理に必要な部分問題情報を生成する部分問題情報生成手段と、
前記部分問題情報生成手段により生成された部分問題情報を、それぞれ前記分担決定手段により処理分担として決定された前記少なくとも１の他の情報処理装置に送信する送信手段と、
前記少なくとも１の他の情報処理装置により処理された、前記部分問題情報に対応する部分問題処理結果を受信する受信手段と
を備えることを特徴とする情報処理装置。
【請求項３】
前記送信手段は、前記部分問題情報生成手段により生成された部分問題情報を、それぞれ前記分担決定手段により処理分担として決定された前記少なくとも１の他の情報処理装置にネットワークを介して送信し、
前記受信手段は、前記少なくとも１の他の情報処理装置により処理された、前記部分問題情報に対応する部分問題処理結果を前記ネットワークを介して受信する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記送信装置は、さらに、前記少なくとも１の他の情報処理装置に対して、動作状態の情報を要求する情報を送信し、
前記受信装置は、さらに、前記動作状態の情報の要求に基づいて、前記少なくとも１の他の情報処理装置より送信されてくる動作状態の情報を受信する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項５】
前記部分問題情報生成手段は、前記部分問題の処理に必要な部分問題情報をソフトウェアセルとして生成する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項６】
問題を複数の部分問題に分割する分割ステップと、
少なくとも１の他の情報処理装置の動作状態に基づいて、前記分割ステップの処理で分割された部分問題毎の処理分担を決定する分担決定ステップと、
前記部分問題の処理に必要な部分問題情報を生成する部分問題情報生成ステップと、
前記部分問題情報生成ステップの処理で生成された部分問題情報を、それぞれ前記分担決定ステップの処理で処理分担として決定された前記少なくとも１の他の情報処理装置に送信する送信ステップと、
前記少なくとも１の他の情報処理装置により処理された、前記部分問題情報に対応する部分問題処理結果を受信する受信ステップと
を含むことを特徴とする情報処理方法。
【請求項７】
問題の複数の部分問題への分割を制御する分割制御ステップと、
少なくとも１の他の情報処理装置の動作状態に基づいて、前記分割制御ステップの処理で分割された部分問題毎の処理分担の決定を制御する分担決定制御ステップと、
前記部分問題の処理に必要な部分問題情報の生成を制御する部分問題情報生成制御ステップと、
前記部分問題情報生成制御ステップの処理で生成された部分問題情報の、それぞれの前記分担決定制御ステップの処理で処理分担として決定された前記少なくとも１の他の情報処理装置への送信を制御する送信制御ステップと、
前記少なくとも１の他の情報処理装置により処理された、前記部分問題情報に対応する部分問題処理結果の受信を制御する受信制御ステップと
を含むことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。
【請求項８】
問題の複数の部分問題への分割を制御する分割制御ステップと、
少なくとも１の他の情報処理装置の動作状態に基づいて、前記分割制御ステップの処理で分割された部分問題毎の処理分担の決定を制御する分担決定制御ステップと、
前記部分問題の処理に必要な部分問題情報の生成を制御する部分問題情報生成制御ステップと、
前記部分問題情報生成制御ステップの処理で生成された部分問題情報の、それぞれの前記分担決定制御ステップの処理で処理分担として決定された前記少なくとも１の他の情報処理装置への送信を制御する送信制御ステップと、
前記少なくとも１の他の情報処理装置により処理された、前記部分問題情報に対応する部分問題処理結果の受信を制御する受信制御ステップと
をコンピュータに実行させることを特徴とするプログラム。
【請求項９】
他の情報処理装置により決定された処理分担として送信されてくる、前記他の情報処理装置により複数に分割された問題の一部である部分問題の処理に必要な部分問題情報を受信する受信手段と、
前記受信手段により受信された部分問題情報に基づいて、前記部分問題の処理を実行する実行手段と、
前記実行手段により処理が実行された前記部分問題処理結果を、前記他の情報処理装置に送信する送信手段と
を備えることを特徴とする情報処理装置。
【請求項１０】
前記受信手段は、他の情報処理装置により分担が決定されてネットワークを介して送信されてくる、前記他の情報処理装置により複数に分割された問題の一部である部分問題の処理に必要な部分問題情報を受信し、
前記送信手段は、前記実行手段により処理が実行された前記部分問題処理結果を、前記ネットワークを介して前記他の情報処理装置に送信する
ことを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
自らの動作状態を認識する認識手段をさらに備え、
前記受信装置は、さらに、前記他の情報処理装置より、前記動作状態の情報を要求する情報を受信し、
前記送信装置は、さらに、前記動作状態の情報の要求に基づいて、前記他の情報処理装置に、前記認識手段により認識される自らの動作状態の情報を送信する
ことを特徴とする請求項９に記載の情報処理装置。
【請求項１２】
前記部分問題情報は、ソフトウェアセルである
ことを特徴とする請求項９に記載の情報処理装置。
【請求項１３】
他の情報処理装置により決定された処理分担として送信されてくる、前記他の情報処理装置により複数に分割された問題の一部である部分問題の処理に必要な部分問題情報を受信する受信ステップと、
前記受信ステップの処理で受信された部分問題情報に基づいて、前記部分問題の処理を実行する実行ステップと、
前記実行ステップの処理により処理が実行された前記部分問題処理結果を、前記他の情報処理装置に送信する送信ステップと
を含むことを特徴とする情報処理方法。
【請求項１４】
他の情報処理装置により決定された処理分担として送信されてくる、前記他の情報処理装置により複数に分割された問題の一部である部分問題の処理に必要な部分問題情報の受信を制御する受信制御ステップと、
前記受信制御ステップの処理で受信された部分問題情報に基づいて、前記部分問題の処理の実行を制御する実行制御ステップと、
前記実行制御ステップの処理により処理が実行された前記部分問題処理結果の、前記他の情報処理装置への送信を制御する送信制御ステップと
を含むことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。
【請求項１５】
他の情報処理装置により決定された処理分担として送信されてくる、前記他の情報処理装置により複数に分割された問題の一部である部分問題の処理に必要な部分問題情報の受信を制御する受信制御ステップと、
前記受信制御ステップの処理で受信された部分問題情報に基づいて、前記部分問題の処理の実行を制御する実行制御ステップと、
前記実行制御ステップの処理により処理が実行された前記部分問題処理結果の、前記他の情報処理装置への送信を制御する送信制御ステップと
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置および方法、記録媒体、並びにプログラムに関し、特に、探索問題を複数の問題に分割し、分割された問題をソフトウェアセルとして異機種間で並列処理できるようにした情報処理システム、情報処理装置および方法、記録媒体、並びにプログラムに関する。
【背景技術】
【０００２】
膨大な可能性を探索させ、目的とする状態を求めるような問題を解くといった処理がある。例えば、チェスなどのゲームのコマを置く手順を決定する問題、音声・画像認識において入力信号パターンの出現確率を求めるような問題、または、複雑な迷路をロボットに探索させるような問題である。
【０００３】
従来、これらの問題を解く処理は、問題を複数の部分問題（例えば、チェスなどの場合、ある１つの手を打ったときの何手か先の盤面の評価を予測する）に分割し、複数の処理装置に対して分散して処理させるといった手法がある。
【０００４】
また、複数のクライアントコンピュータと、その複数のクライアントコンピュータに情報を提供するホストコンピュータからなる通信システムにおいて、ホストコンピュータが、演算すべき計算問題を、計算時間の短いプログラムに分割して、ランダムに選択されたクライアントコンピュータにバックグラウンドで実行させることにより、全体として膨大な回数のモンテカルロ型最適解探索計算処理を分散処理により実行させることが提案されている（例えば、特許文献１参照）。
【０００５】
【特許文献１】特開２００３−００６１７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、それらを実行させるためにはその問題を解くためのプログラムやその結果を統括する構成や、各部分問題の処理状態をネットワークで転送するためのプロトコルなどを個別に構築する必要があった。
【０００７】
本発明はこのような状況に鑑みてなされたものであり、特に、部分問題に分割できるような問題を分散して処理させる際、異機種間でも分散処理を容易に実現させるようにするものである。
【課題を解決するための手段】
【０００８】
本発明の情報処理システムは、第１の情報処理装置が、問題を複数の部分問題に分割する分割手段と、少なくとも１の第２の情報処理装置の動作状態に基づいて、分割手段により分割された部分問題毎の処理分担を決定する分担決定手段と、部分問題の処理に必要な部分問題情報を生成する部分問題情報生成手段と、部分問題情報生成手段により生成された部分問題情報を、それぞれ分担決定手段により処理分担として決定された少なくとも１の第２の情報処理装置に送信する第１の送信手段と、少なくとも１の第２の情報処理装置により処理された、部分問題情報に対応する部分問題処理結果を受信する第１の受信手段とを備え、第２の情報処理装置が、第１の情報処理装置より送信されてくる部分問題情報を受信する第２の受信手段と、第２の受信手段により受信された部分問題情報に基づいて、部分問題の処理を実行する実行手段と、実行手段により処理が実行された部分問題処理結果を、第１の情報処理装置に送信する第２の送信手段とを備えることを特徴とする。
【０００９】
本発明の第１の情報処理装置は、問題を複数の部分問題に分割する分割手段と、少なくとも１の他の情報処理装置の動作状態に基づいて、分割手段により分割された部分問題毎の処理分担を決定する分担決定手段と、部分問題の処理に必要な部分問題情報を生成する部分問題情報生成手段と、部分問題情報生成手段により生成された部分問題情報を、それぞれ分担決定手段により処理分担として決定された少なくとも１の他の情報処理装置に送信する送信手段と、少なくとも１の他の情報処理装置により処理された、部分問題情報に対応する部分問題処理結果を受信する受信手段とを備えることを特徴とする。
【００１０】
前記送信手段には、部分問題情報生成手段により生成された部分問題情報を、それぞれ分担決定手段により処理分担として決定された少なくとも１の他の情報処理装置にネットワークを介して送信させるようにすることができ、受信手段には、少なくとも１の他の情報処理装置により処理された、部分問題情報に対応する部分問題処理結果をネットワークを介して受信させるようにすることができる。
【００１１】
前記送信装置には、さらに、少なくとも１の他の情報処理装置に対して、動作状態の情報を要求する情報を送信させるようにすることができ、受信装置には、さらに、動作状態の情報の要求に基づいて、少なくとも１の他の情報処理装置より送信されてくる動作状態の情報を受信させるようにすることができる。
【００１２】
前記部分問題情報生成手段には、部分問題の処理に必要な部分問題情報をソフトウェアセルとして生成させることができる。
【００１３】
本発明の第１の情報処理方法は、問題を複数の部分問題に分割する分割ステップと、少なくとも１の他の情報処理装置の動作状態に基づいて、分割ステップの処理で分割された部分問題毎の処理分担を決定する分担決定ステップと、部分問題の処理に必要な部分問題情報を生成する部分問題情報生成ステップと、部分問題情報生成ステップの処理で生成された部分問題情報を、それぞれ分担決定ステップの処理で処理分担として決定された少なくとも１の他の情報処理装置に送信する送信ステップと、少なくとも１の他の情報処理装置により処理された、部分問題情報に対応する部分問題処理結果を受信する受信ステップとを含むことを特徴とする。
【００１４】
本発明の第１の記録媒体のプログラムは、問題の複数の部分問題への分割を制御する分割制御ステップと、少なくとも１の他の情報処理装置の動作状態に基づいて、分割制御ステップの処理で分割された部分問題毎の処理分担の決定を制御する分担決定制御ステップと、部分問題の処理に必要な部分問題情報の生成を制御する部分問題情報生成制御ステップと、部分問題情報生成制御ステップの処理で生成された部分問題情報の、それぞれの分担決定制御ステップの処理で処理分担として決定された少なくとも１の他の情報処理装置への送信を制御する送信制御ステップと、少なくとも１の他の情報処理装置により処理された、部分問題情報に対応する部分問題処理結果の受信を制御する受信制御ステップとを含むことを特徴とする。
【００１５】
本発明の第１のプログラムは、問題の複数の部分問題への分割を制御する分割制御ステップと、少なくとも１の他の情報処理装置の動作状態に基づいて、分割制御ステップの処理で分割された部分問題毎の処理分担の決定を制御する分担決定制御ステップと、部分問題の処理に必要な部分問題情報の生成を制御する部分問題情報生成制御ステップと、部分問題情報生成制御ステップの処理で生成された部分問題情報の、それぞれの分担決定制御ステップの処理で処理分担として決定された少なくとも１の他の情報処理装置への送信を制御する送信制御ステップと、少なくとも１の他の情報処理装置により処理された、部分問題情報に対応する部分問題処理結果の受信を制御する受信制御ステップとをコンピュータに実行させることを特徴とする。
【００１６】
本発明の第２の情報処理装置は、他の情報処理装置により決定された処理分担として送信されてくる、他の情報処理装置により複数に分割された問題の一部である部分問題の処理に必要な部分問題情報を受信する受信手段と、受信手段により受信された部分問題情報に基づいて、部分問題の処理を実行する実行手段と、実行手段により処理が実行された部分問題処理結果を、他の情報処理装置に送信する送信手段とを備えることを特徴とする。
【００１７】
前記受信手段には、他の情報処理装置により分担が決定されてネットワークを介して送信されてくる、他の情報処理装置により複数に分割された問題の一部である部分問題の処理に必要な部分問題情報を受信させるようにすることができ、送信手段には、実行手段により処理が実行された部分問題処理結果を、ネットワークを介して他の情報処理装置に送信させるようにすることができる。
【００１８】
前記自らの動作状態を認識する認識手段をさらに設けるようにすることができ、受信装置には、さらに、他の情報処理装置より、動作状態の情報を要求する情報を受信させるようにすることができ、送信装置には、さらに、動作状態の情報の要求に基づいて、他の情報処理装置に、認識手段により認識される自らの動作状態の情報を送信させるようにすることができる。
【００１９】
前記部分問題情報は、ソフトウェアセルとするようにすることができる。
【００２０】
本発明の第２の情報処理方法は、他の情報処理装置により決定された処理分担として送信されてくる、他の情報処理装置により複数に分割された問題の一部である部分問題の処理に必要な部分問題情報を受信する受信ステップと、受信ステップの処理で受信された部分問題情報に基づいて、部分問題の処理を実行する実行ステップと、実行ステップの処理により処理が実行された部分問題処理結果を、他の情報処理装置に送信する送信ステップとを含むことを特徴とする。
【００２１】
本発明の第２の記録媒体のプログラムは、他の情報処理装置により決定された処理分担として送信されてくる、他の情報処理装置により複数に分割された問題の一部である部分問題の処理に必要な部分問題情報の受信を制御する受信制御ステップと、受信制御ステップの処理で受信された部分問題情報に基づいて、部分問題の処理の実行を制御する実行制御ステップと、実行制御ステップの処理により処理が実行された部分問題処理結果の、他の情報処理装置への送信を制御する送信制御ステップとを含むことを特徴とする。
【００２２】
本発明の第２のプログラムは、他の情報処理装置により決定された処理分担として送信されてくる、他の情報処理装置により複数に分割された問題の一部である部分問題の処理に必要な部分問題情報の受信を制御する受信制御ステップと、受信制御ステップの処理で受信された部分問題情報に基づいて、部分問題の処理の実行を制御する実行制御ステップと、実行制御ステップの処理により処理が実行された部分問題処理結果の、他の情報処理装置への送信を制御する送信制御ステップとをコンピュータに実行させることを特徴とする。
【００２３】
本発明の情報処理システムにおいては、第１の情報処理装置により、問題が複数の部分問題に分割され、少なくとも１の第２の情報処理装置の動作状態に基づいて、分割された部分問題毎の処理分担が決定され、部分問題の処理に必要な部分問題情報が生成され、生成された部分問題情報が、それぞれ処理分担として決定された少なくとも１の第２の情報処理装置に送信され、少なくとも１の第２の情報処理装置により処理された、部分問題情報に対応する部分問題処理結果が受信され、第２の情報処理装置により、第１の情報処理装置より送信されてくる部分問題情報が受信され、受信された部分問題情報に基づいて、部分問題の処理が実行され、処理が実行された部分問題処理結果が、第１の情報処理装置に送信される。
【００２４】
本発明の第１の情報処理装置および方法、並びにプログラムにおいては、問題が複数の部分問題に分割され、少なくとも１の他の情報処理装置の動作状態に基づいて、分割された部分問題毎の処理分担が決定され、部分問題の処理に必要な部分問題情報が生成され、生成された部分問題情報が、それぞれ分処理分担として決定された少なくとも１の他の情報処理装置に送信され、少なくとも１の他の情報処理装置により処理された、部分問題情報に対応する部分問題処理結果が受信される。
【００２５】
本発明の第２の情報処理装置および方法、並びにプログラムにおいては、他の情報処理装置により決定された処理分担として送信されてくる、他の情報処理装置により複数に分割された問題の一部である部分問題の処理に必要な部分問題情報が受信され、受信された部分問題情報に基づいて、部分問題の処理が実行され、処理が実行された部分問題処理結果が、他の情報処理装置に送信される。
【００２６】
本発明の情報処理装置は、独立した装置であっても良いし、情報処理を行うブロックであっても良い。
【発明の効果】
【００２７】
本発明によれば、部分問題に分割できるような問題を分散して処理させる際、分散処理を容易に実現させるようにすることが可能となる。
【発明を実施するための最良の形態】
【００２８】
以下に本発明の実施の形態を説明するが、本明細書に記載の発明と、発明の実施の形態との対応関係を例示すると、次のようになる。この記載は、本明細書に記載されている発明をサポートする実施の形態が本明細書に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
【００２９】
さらに、この記載は、本明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、本明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現、追加される発明の存在を否定するものではない。
【００３０】
即ち、本発明の情報処理システムは、第１の情報処理装置（例えば、図１の管理装置１１）が、問題を複数の部分問題に分割する分割手段（例えば、図１１のフローチャートのステップＳ３１の処理を実行する図７の問題解決部１１１）と、少なくとも１の第２の情報処理装置の動作状態に基づいて、分割手段により分割された部分問題毎の処理分担を決定する分担決定手段（例えば、図７の分担決定部１１３）と、部分問題の処理に必要な部分問題情報を生成する部分問題情報生成手段（例えば、図１１のフローチャートのステップＳ３４の処理を実行する図７のソフトウェアセル１１４）と、部分問題情報生成手段により生成された部分問題情報を、それぞれ分担決定手段により処理分担として決定された少なくとも１の第２の情報処理装置に送信する第１の送信手段（例えば、図１１のフローチャートのステップＳ３５の処理を実行する図７のソフトウェアセル１１４）と、少なくとも１の第２の情報処理装置により処理された、部分問題情報に対応する部分問題処理結果を受信する第１の受信手段（例えば、図１１のフローチャートのステップＳ３７の処理を実行する図７の問題解決部１１１）とを備え、第２の情報処理装置（例えば、図１の分散処理装置１３−１乃至１３−３）が、第１の情報処理装置より送信されてくる部分問題情報を受信する第２の受信手段（例えば、図１５の部分問題認識部１７１）と、第２の受信手段により受信された部分問題情報に基づいて、部分問題の処理を実行する実行手段（例えば、図１５の問題解決処理実行部１７２）と、実行手段により処理が実行された部分問題処理結果を、第１の情報処理装置に送信する第２の送信手段（例えば、図１５の出力部１７３）とを備えることを特徴とする。
【００３１】
本発明の第１の情報処理装置は、問題を複数の部分問題に分割する分割手段（例えば、図１１のフローチャートのステップＳ３１の処理を実行する図７の問題解決部１１１）と、少なくとも１の他の情報処理装置の動作状態に基づいて、分割手段により分割された部分問題毎の処理分担を決定する分担決定手段（例えば、図７の分担決定部１１３）と、部分問題の処理に必要な部分問題情報を生成する部分問題情報生成手段（例えば、図１１のフローチャートのステップＳ３４の処理を実行する図７のソフトウェアセル１１４）と、部分問題情報生成手段により生成された部分問題情報を、それぞれ分担決定手段により処理分担として決定された少なくとも１の他の情報処理装置に送信する送信手段（例えば、図１１のフローチャートのステップＳ３５の処理を実行する図７のソフトウェアセル１１４）と、少なくとも１の他の情報処理装置により処理された、部分問題情報に対応する部分問題処理結果を受信する受信手段（例えば、図１１のフローチャートのステップＳ３７の処理を実行する図７の問題解決部１１１）とを備えることを特徴とする。
【００３２】
本発明の第１の情報処理方法は、問題を複数の部分問題に分割する分割ステップ（例えば、図１１のフローチャートのステップＳ３１の処理）と、少なくとも１の他の情報処理装置の動作状態に基づいて、分割ステップの処理で分割された部分問題毎の処理分担を決定する分担決定ステップ（例えば、図１１のフローチャートのステップＳ３３の処理）と、部分問題の処理に必要な部分問題情報を生成する部分問題情報生成ステップ（例えば、図１１のフローチャートのステップＳ３４の処理）と、部分問題情報生成ステップの処理で生成された部分問題情報を、それぞれ分担決定ステップの処理で処理分担として決定された少なくとも１の他の情報処理装置に送信する送信ステップ（例えば、図１１のフローチャートのステップＳ３５の処理）と、少なくとも１の他の情報処理装置により処理された、部分問題情報に対応する部分問題処理結果を受信する受信ステップ（例えば、図１１のフローチャートのステップＳ３７の処理）とを含むことを特徴とする。
【００３３】
本発明の第２の情報処理装置は、他の情報処理装置により決定された処理分担として送信されてくる、他の情報処理装置により複数に分割された問題の一部である部分問題の処理に必要な部分問題情報を受信する受信手段（例えば、図１５の部分問題認識部１７１）と、受信手段により受信された部分問題情報に基づいて、部分問題の処理を実行する実行手段（例えば、図１５の問題解決処理実行部１７２）と、実行手段により処理が実行された部分問題処理結果を、他の情報処理装置に送信する送信手段（例えば、図１５の出力部１７３）とを備えることを特徴とする。
【００３４】
本発明の第２の情報処理方法は、他の情報処理装置により決定された処理分担として送信されてくる、他の情報処理装置により複数に分割された問題の一部である部分問題の処理に必要な部分問題情報を受信する受信ステップ（例えば、図１１のフローチャートのステップＳ５１の処理）と、受信ステップの処理で受信された部分問題情報に基づいて、部分問題の処理を実行する実行ステップ（例えば、図１１のフローチャートのステップＳ５５の処理）と、実行ステップの処理により処理が実行された部分問題処理結果を、他の情報処理装置に送信する送信ステップ（例えば、図１１のフローチャートのステップＳ５７の処理）とを含むことを特徴とする。
【００３５】
尚、記録媒体、および、プログラムにおいては、情報処理方法と同様であるので、その対応関係の説明は省略する。
【００３６】
図１は、本発明を適用した通信システムの一実施の形態を示す図である。この通信システムにおいては、IPネットワークなどの通信網１２を介して、管理装置１１、分散処理装置１３−１乃至１３−３が相互に接続されている。
【００３７】
管理装置１１は、分散処理の実行が指示されると、要求された処理を実行するために必要なデータおよびプログラムを含むソフトウェアセルを生成し、生成したソフトウェアセルを、通信網１２を介して、分散処理装置１３−１乃至１３−３のいずれかあてに送信する。
【００３８】
分散処理装置１３−１乃至１３−３は、それぞれ、管理装置１１から送信されてきたソフトウェアセルを受信し、受信したソフトウェアセルを基に、要求された処理を実行する。分散処理装置１３−１乃至１３−３は、それぞれ、要求された処理を実行してから、要求された処理の結果得られたデータを、通信網１２を介して管理装置１１あてに送信する。以下、分散処理装置１３−１乃至１３−３を個々に区別する必要のないとき、単に分散処理装置１３と称するものとし、その他の構成についても同様とする。
【００３９】
管理装置１１は、分散処理装置１３−１乃至１３−３のいずれかから送信されてきたデータを受信し、受信したデータを基に、所定の処理を実行するか、受信したデータを記録する。
【００４０】
管理装置１１は、情報処理コントローラ３１、メインメモリ３２、記録部３３−１、記録部３３−２、バス３４、出力部３５、通信部３６、およびドライブ３７を含むように構成される。
【００４１】
情報処理コントローラ３１は、メインメモリ３２に記録されている各種のプログラムを実行し、管理装置１１全体を制御する。情報処理コントローラ３１は、ソフトウェアセルを生成し、生成したソフトウェアセルを、バス３４を介して、通信部３６に供給する。情報処理コントローラ３１は、通信部３６から供給されたデータを記録部３３−１または３３−２に供給する。情報処理コントローラ３１は、入力部（図示せず）からの指令に基づいて、指定されたデータを、メインメモリ３２、記録部３３−１または３３−２から取得し、取得したデータをバス３４を介して出力部３５に供給する。
【００４２】
また、情報処理コントローラ３１には、管理装置１１を、通信網１２全体を通して一意に特定できる装置IDが割り当てられている。
【００４３】
情報処理コントローラ３１は、バス４１、メインプロセッサ４２、サブプロセッサ４３−１乃至４３−３、DMAC（Direct Memory Access Controller）４４、キー管理テーブル記録部４５、およびＤＣ（Disk Controller）４６を備えている。
【００４４】
メインプロセッサ４２、サブプロセッサ４３−１乃至４３−３、DMAC４４、キー管理テーブル記録部４５、およびDC４６は、バス４１を介して、相互に接続されている。また、メインプロセッサ４２には、メインプロセッサ４２を特定するためのメインプロセッサIDが識別子として割り当てられる。同様に、サブプロセッサ４３−１乃至４３−３のそれぞれには、サブプロセッサ４３−１乃至４３−３のそれぞれを特定するためのサブプロセッサIDのそれぞれが識別子として割り当てられる。
【００４５】
メインプロセッサ４２は、サブプロセッサ４３−１乃至４３−３によるプログラムの実行のスケジュール管理および情報処理コントローラ３１（管理装置１１）の全体の管理を行う。メインプロセッサ４２は、ローカルストレージ５１−１を備え、メインメモリ３２からロードしたデータおよびプログラムを、ローカルストレージ５１−１に一時的に記憶させる。メインプロセッサ４２は、ローカルストレージ５１−１からデータおよびプログラムを読み込み、読み込んだデータおよびプログラムを基に、各種の処理を実行する。
【００４６】
メインプロセッサ４２は、通信網１２を介して接続されている、分散処理装置１３−１乃至１３−３のいずれかに分散処理を実行させる場合、ソフトウェアセルを生成し、生成したソフトウェアセルをバス４１およびバス３４を介して、通信部３６に供給する。また、メインプロセッサ４２は、管理のためのプログラム以外のプログラムを実行するように構成することもできる。この場合、メインプロセッサ４２は、サブプロセッサとして機能する。
【００４７】
サブプロセッサ４３−１乃至４３−３は、メインプロセッサ４２の制御の基、並列的かつ独立に、プログラムを実行し、データを処理する。さらに、必要に応じて、メインプロセッサ４２が実行するプログラムが、サブプロセッサ４３−１乃至４３−３のそれぞれが実行するプログラムのそれぞれと連携して動作するように構成することも可能である。
【００４８】
サブプロセッサ４３−１乃至４３−３のそれぞれは、ローカルストレージ５１−２乃至５１−４のそれぞれを備える。サブプロセッサ４３−１乃至４３−３のそれぞれは、ローカルストレージ５１−２乃至５１−４のそれぞれに、必要に応じて、データおよびプログラムを一時的に記憶させる。サブプロセッサ４３−１乃至４３−３のそれぞれは、ローカルストレージ５１−２乃至５１−４のそれぞれからデータおよびプログラムを読み込み、読み込んだデータおよびプログラムを基に、各種の処理を実行する。
【００４９】
以下、サブプロセッサ４３−１乃至４３−３のそれぞれを個々に区別する必要のないとき、単にサブプロセッサ４３と称する。同様に、以下、ローカルストレージ５１−１乃至５１−４のそれぞれを個々に区別する必要のないとき、単にローカルストレージ５１と称する。
【００５０】
DMAC４４は、キー管理テーブル記録部４５に記録されている、メインプロセッサキー、サブプロセッサキー、およびアクセスキーを基に、メインプロセッサ４２およびサブプロセッサ４３からのメインメモリ３２に記憶されているプログラムおよびデータへのアクセスを管理する。
【００５１】
キー管理テーブル記録部４５は、メインプロセッサキー、サブプロセッサキー、およびアクセスキーを記録している。なお、メインプロセッサキー、サブプロセッサキー、およびアクセスキーの詳細は後述する。
【００５２】
DC４６は、メインプロセッサ４２およびサブプロセッサ４３からの記録部３３−１，３３−２へのアクセスを管理する。
【００５３】
メインメモリ３２は、例えば、RAMから構成される。メインメモリ３２は、メインプロセッサ４２およびサブプロセッサ４３が実行する各種のプログラムおよびデータを一時的に記憶している。
【００５４】
記録部３３−１，３３−２は、それぞれ、例えば、ハードディスクなどにより構成される。記録部３３−１，３３−２は、メインプロセッサ４２およびサブプロセッサ４３が実行する各種のプログラムおよびデータを記録している。また、記録部３３−１，３３−２は、情報処理コントローラ３１から供給されたデータを記録する。以下、記録部３３−１，３３−２を個々に区別する必要のないとき、単に記録部３３と称する。
【００５５】
また、情報処理コントローラ３１には、バス３４を介して、出力部３５、通信部３６、およびドライブ３７が接続されている。出力部３５は、例えば、ディスプレイ、スピーカ、およびランプなどよりなり、情報処理コントローラ３１から供給されたデータを出力する。
【００５６】
通信部３６は、情報処理コントローラ３１から供給されたソフトウェアセルを、通信網１２を介して分散処理装置１３−１乃至１３−３のいずれかあてに送信する。また、通信部３６は、分散処理装置１３−１乃至１３−３のいずれかから送信されてきたデータを、バス３４を介して、情報処理コントローラ３１に供給する。
【００５７】
ドライブ３７は、磁気ディスク６１、光ディスク６２、光磁気ディスク６３、あるいは半導体メモリ６４などが装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて、バス３４を介して、情報処理コントローラ３１に転送され、情報処理コントローラ３１によって、記録部３３に記録される。
【００５８】
なお、分散処理装置１３−１乃至１３−３は、管理装置１１と同様に構成されるので、その説明は省略する。分散処理装置１３−１乃至１３−３は上述した構成に限らず、必要に応じて、機能を追加したり削除したりすることは可能であり、その機能に対応した構成をもつことが可能である。
【００５９】
次に、図２乃至図４を参照して、サブプロセッサ４３がメインメモリ３２にアクセスする場合の処理について説明する。
【００６０】
図２で示されるように、メインメモリ３２には、複数のアドレスを指定できるメモリロケーションが配置される。各メモリロケーションに対しては、データの状態を示す情報を格納するための追加セグメントが割り振られる。追加セグメントは、Ｆ／Ｅビット、サブプロセッサIDおよびLSアドレス（ローカルストレージアドレス）を含む。また、各メモリロケーションには、後述するアクセスキーが割り振られる。
【００６１】
“０”であるＦ／Ｅビットは、サブプロセッサ４３によって読み出されている処理中のデータ、または空き状態であるため最新データではない無効データであり、そのメモリロケーションから読み出し不可であることを示す。また、“０”であるＦ／Ｅビットは、そのメモリロケーションにデータ書き込み可能であることを示し、データが書き込まれると、Ｆ／Ｅビットは“１”に設定される。
【００６２】
“１”であるＦ／Ｅビットは、そのメモリロケーションのデータがサブプロセッサ４３によって読み出されておらず、未処理の最新データであることを示す。Ｆ／Ｅビットが“１”であるメモリロケーションのデータは読み出し可能であり、サブプロセッサ４３によって読み出されてから、Ｆ／Ｅビットは“０”に設定される。また、“１”であるＦ／Ｅビットは、メモリロケーションがデータ書き込み不可であることを示す。
【００６３】
さらに、Ｆ／Ｅビットが“０”（読み出し不可／書き込み可）である状態において、メモリロケーションについて読み出し予約を設定することが可能である。Ｆ／Ｅビットが“０”であるメモリロケーションに対して読み出し予約を行う場合には、サブプロセッサ４３は、読み出し予約を行うメモリロケーションの追加セグメントに、読み出し予約情報としてサブプロセッサ４３のサブプロセッサIDおよびLSアドレスを書き込む。そして、データを書き込むサブプロセッサ４３によって、読み出し予約されたメモリロケーションにデータが書き込まれ、Ｆ／Ｅビットが“１”（読み出し可／書き込み不可）に設定されたとき、あらかじめ読み出し予約情報として追加セグメントに書き込まれているサブプロセッサIDおよびLSアドレスによって特定されるローカルストレージ５１に読み出される。
【００６４】
複数のサブプロセッサ４３によってデータを多段階に処理する必要がある場合、このように各メモリロケーションのデータの読み出しおよび書き込みを制御することによって、前段階の処理を行うサブプロセッサ４３が、処理済みのデータをメインメモリ３２における所定のアドレスに書き込んだ後に即座に、後段階の処理を行う別のサブプロセッサ４３が前処理後のデータを読み出すことが可能となる。
【００６５】
また、図３で示されるように、サブプロセッサ４３のローカルストレージ５１は、複数のアドレスを指定できるメモリロケーションによって構成される。各メモリロケーションに対しては、同様に追加セグメントが割り振られる。追加セグメントは、ビジービットを含む。
【００６６】
サブプロセッサ４３がメインメモリ３２に記憶されているデータをサブプロセッサ４３のローカルストレージ５１のメモリロケーションに読み出すときには、対応するビジービットを“１”に設定して予約する。ビジービットが“１”であるメモリロケーションには、他のデータを格納することができない。ローカルストレージ５１のメモリロケーションにデータが読み出されると、ビジービットは“０”に設定され、他のデータを格納することができるようになる。
【００６７】
さらに、図２で示すように情報処理コントローラ３１に接続されているメインメモリ３２には、複数のサンドボックスが含まれる。サンドボックスは、メインメモリ３２内の領域を画定するものであり、各サンドボックスは、各サブプロセッサ４３に割り当てられ、割り当てられたサブプロセッサ４３が排他的に使用することができる。すなわち、サブプロセッサ４３は、割り当てられたサンドボックスを使用できるが、この領域を超えてデータにアクセスすることはできない。
【００６８】
メインメモリ３２は、複数のメモリロケーションから構成されるが、サンドボックスは、これらのメモリロケーションの集合である。
【００６９】
さらに、メインメモリ３２の排他的な制御を実現するために、図４で示されるキー管理テーブルが用いられる。キー管理テーブルは、キー管理テーブル記録部４５に記録され、DMAC４４と関連付けられる。キー管理テーブル内の各エントリには、サブプロセッサID、サブプロセッサキーおよびキーマスクが含まれる。
【００７０】
サブプロセッサ４３がメインメモリ３２にアクセスする場合、サブプロセッサ４３はDMAC４４に、読み出しまたは書き込みのコマンドを出力する。このコマンドには、サブプロセッサ４３を特定するサブプロセッサIDおよびアクセス要求先であるメインメモリ３２のアドレスが含まれる。
【００７１】
DMAC４４は、サブプロセッサ４３から供給されたコマンドを実行する場合、キー管理テーブルを参照して、アクセス要求元のサブプロセッサ４３のサブプロセッサキーを調べる。そして、DMAC４４は、調べたアクセス要求元のサブプロセッサキーと、アクセス要求先であるメインメモリ３２のメモリロケーションに割り振られたアクセスキーとを比較して、２つのキーが一致した場合にのみ、サブプロセッサ４３から供給されたコマンドを実行する。
【００７２】
図４は、キー管理テーブルを説明する図である。キー管理テーブルに記録されているキーマスクは、その任意のビットが“１”になることによって、そのキーマスクと関連付けられたサブプロセッサキーの対応するビットを“０”または“１”にすることができる。
【００７３】
例えば、サブプロセッサキーが“１０１０”であるとする。通常、このサブプロセッサキーによって“１０１０”のアクセスキーを持つサンドボックスへのアクセスだけが可能になる。しかし、このサブプロセッサキーと関連付けられたキーマスクが“０００１”に設定されている場合には、キーマスクのビットが“１”に設定された桁のみにつき、サブプロセッサキーとアクセスキーとの一致判定がマスクされ（キーマスクのビットが“１”に設定された桁について、判定されず）、このサブプロセッサキー“１０１０”によってアクセスキーが“１０１０”または“１０１１”のいずれかであるアクセスキーを持つサンドボックスへのアクセスが可能となる。
【００７４】
以上のようにして、メインメモリ３２のサンドボックスの排他性が実現される。すなわち、複数のサブプロセッサ４３によってデータを多段階に処理する必要がある場合、以上のように構成することによって、前段階の処理を行うサブプロセッサ４３と、後段階の処理を行うサブプロセッサ４３のみが、メインメモリ３２の所定のアドレスにアクセスできるようになり、データを保護することができる。
【００７５】
例えば、キーマスクの値は、以下のように変更されることが考えられる。まず、管理装置１１の起動直後においては、キーマスクの値は全て“０”である。メインプロセッサ４２にロードされたプログラムが実行され、サブプロセッサ４３にロードされたプログラムと連携動作するものとする。サブプロセッサ４３−１により出力された処理結果データを、メインメモリ３２に記憶させ、メインメモリ３２に記憶させた処理結果データを、サブプロセッサ４３−２に入力したいときには、サブプロセッサ４３−１により出力された処理結果データを記憶しているメインメモリ３２の領域は、サブプロセッサ４３−１およびサブプロセッサ４３−２からアクセス可能である必要がある。そのような場合に、メインプロセッサ４２は、キーマスクの値を適切に変更し、複数のサブプロセッサ４３からアクセスできるメインメモリの領域を設けることにより、サブプロセッサ４３による多段階的の処理を可能にする。
【００７６】
より具体的には、例えば、分散処理装置１３−１乃至１３−３のいずれかから送信されてきた、データを基に、サブプロセッサ４３−１が所定の処理実行し、処理が施されたデータをメインメモリ３２の第１の領域に記憶させる。そして、サブプロセッサ４３−２は、メインメモリ３２の第１の領域から、記憶されているデータを読み出し、読み出したデータを基に、所定の処理を実行し、処理が施されたデータをメインメモリ３２の第１の領域とは、異なる第２の領域に記憶させる。
【００７７】
ここで、サブプロセッサ４３−１のサブプロセッサキーが“０１００”であり、メインメモリ３２の第１の領域のアクセスキーが“０１００”であり、サブプロセッサ４３−２のサブプロセッサキーが“０１０１”であり、メインメモリ３２の第２の領域のアクセスキーが“０１０１”である場合、サブプロセッサ４３−２は、メインメモリ３２の第１の領域にアクセスすることができない。そこで、サブプロセッサ４３−２のキーマスクを“０００１”にすることによって、サブプロセッサ４３−２は、メインメモリ３２の第１の領域にアクセスすることができるようになる。
【００７８】
次に、図５および図６を参照して、管理装置１１がソフトウェアセルを生成し、生成したソフトウェアセルを基に、分散処理装置１３−１乃至１３−３のいずれかに分散処理を実行させる場合の処理について説明する。
【００７９】
管理装置１１のメインプロセッサ４２は、処理を実行するために必要なコマンド、プログラム、およびデータを含むソフトウェアセルを生成し、通信網１２を介して分散処理装置１３−１乃至１３−３のいずれかあてに送信する。
【００８０】
図５は、ソフトウェアセルの構成の例を示す図である。
【００８１】
ソフトウェアセルは、送信元ID、送信先ID、応答先ID、セルインターフェース、DMAコマンド、プログラム、およびデータを含むように構成される。
【００８２】
送信元IDには、ソフトウェアセルの送信元である管理装置１１のネットワークアドレスおよび管理装置１１の情報処理コントローラ３１の装置ID、さらに、管理装置１１の情報処理コントローラ３１が備えるメインプロセッサ４２およびサブプロセッサ４３の識別子（メインプロセッサIDおよびサブプロセッサID）が含まれる。
【００８３】
送信先IDには、ソフトウェアセルの送信先である分散処理装置１３−１乃至１３−３のいずれかのネットワークアドレス、分散処理装置１３−１乃至１３−３のいずれかの情報処理コントローラの装置ID、および分散処理装置１３−１乃至１３−３のいずれかの情報処理コントローラが備えるメインプロセッサおよびサブプロセッサの識別子が含まれる。
【００８４】
また、応答先IDには、ソフトウェアセルの実行結果の応答先である管理装置１１のネットワークアドレス、管理装置１１の情報処理コントローラ３１の装置ID、および情報処理コントローラ３１が備えるメインプロセッサ４２およびサブプロセッサ４３の識別子が含まれる。
【００８５】
セルインターフェースは、ソフトウェアセルの利用に必要な情報であり、グローバルID、必要なサブプロセッサの情報、サンドボックスサイズ、および前回のソフトウェアセルIDから構成される。
【００８６】
グローバルIDは、通信網１２全体を通してソフトウェアセルを一意的に識別できるものであり、送信元ID、およびソフトウェアセルの生成または送信の日時（日付および時刻）を基に、生成される。
【００８７】
必要なサブプロセッサの情報は、ソフトウェアセルの実行に必要なサブプロセッサの数が設定される。サンドボックスサイズは、ソフトウェアセルの実行に必要なメインメモリおよびサブプロセッサのローカルストレージのメモリ量が設定される。
【００８８】
前回のソフトウェアセルIDは、ストリーミングデータなどのシーケンシャルな実行を要求する１つのグループを構成するソフトウェアセル内の、前回のソフトウェアセルの識別子である。
【００８９】
ソフトウェアセルの実行セクションは、DMAコマンド、プログラムおよびデータから構成される。DMAコマンドには、プログラムの起動に必要な一連のDMAコマンドが含まれ、プログラムには、サブプロセッサによって実行されるサブプロセッサプログラムが含まれる。ここでのデータは、このサブプロセッサプログラムを含むプログラムによって処理されるデータである。
【００９０】
さらに、DMAコマンドには、ロードコマンド、キックコマンド、機能プログラム実行コマンド、ステータス要求コマンド、およびステータス返信コマンドが含まれる。
【００９１】
ロードコマンドは、メインメモリが記憶している情報をサブプロセッサのローカルストレージにロードさせるコマンドであり、ロードコマンドのほかに、メインメモリアドレス、サブプロセッサIDおよびLSアドレスを含む。メインメモリアドレスは、情報のロード元であるメインメモリの所定の領域のアドレスを示す。サブプロセッサIDおよびLSアドレスは、情報のロード先であるサブプロセッサの識別子およびローカルストレージのアドレスを示す。
【００９２】
キックコマンドは、プログラムの実行を開始するコマンドであり、キックコマンドのほかに、サブプロセッサIDおよびプログラムカウンタを含む。サブプロセッサIDは、キック対象のサブプロセッサを識別し、プログラムカウンタは、プログラム実行用プログラムカウンタのためのアドレスを与える。
【００９３】
機能プログラム実行コマンドは、ある装置（例えば、管理装置１１）が他の装置（例えば、分散処理装置１３−１乃至１３−３のいずれか）に対して、機能プログラムの実行を要求するコマンドである。機能プログラム実行コマンドを受信した装置（例えば、分散処理装置１３−１乃至１３−３のいずれか）の情報処理コントローラは、機能プログラムIDによって、起動すべき機能プログラムを識別する。
【００９４】
ステータス要求コマンドは、送信先IDで示される分散処理装置１３−１乃至１３−３のいずれかの現在の動作状態（状況）に関する装置情報を、応答先IDで示される管理装置１１あてに送信要求するコマンドである。
【００９５】
ステータス返信コマンドは、ステータス要求コマンドを受信した分散処理装置１３−１乃至１３−３のいずれかが、装置情報をステータス要求コマンドに含まれる応答先IDで示される管理装置１１に応答するコマンドである。ステータス返信コマンドは、実行セクションのデータ領域に装置情報を格納する。
【００９６】
図６は、DMAコマンドがステータス返信コマンドである場合におけるソフトウェアセルのデータ領域の構造を示す図である。
【００９７】
装置IDは、情報処理コントローラを備える分散処理装置１３−１乃至１３−３のいずれかを識別するための識別子であり、ステータス返信コマンドを送信する分散処理装置１３−１乃至１３−３のいずれかのIDを示す。装置IDは、例えば、装置の電源をオンしたとき、分散処理装置１３−１乃至１３−３のいずれかの情報処理コントローラに含まれるメインプロセッサによって、装置の電源をオンしたときの日時、分散処理装置１３−１乃至１３−３のいずれかのネットワークアドレスおよび分散処理装置１３−１乃至１３−３のいずれかの情報処理コントローラに含まれるサブプロセッサの数などに基づいて生成される。
【００９８】
装置種別IDには、分散処理装置１３−１乃至１３−３のいずれかの特徴を表す値が含まれる。分散処理装置１３−１乃至１３−３のいずれかの特徴とは、分散処理装置１３−１乃至１３−３のいずれかがどのような装置であるかを示す情報であり、例えば、分散処理装置１３−１乃至１３−３のいずれかが、ハードディスクレコーダ、PDA（Personal Digital Assistants）、ポータブルＣＤ（Compact Disc）プレーヤなどであることを示す情報である。また、装置種別IDは、映像音声記録、映像音声再生など、分散処理装置１３−１乃至１３−３のいずれかの機能を表すものであってもよい。分散処理装置１３−１乃至１３−３のいずれかの特徴や機能を表す値は予め決定されているものとし、装置種別IDを読み出すことにより、分散処理装置１３−１乃至１３−３のいずれかの特徴や機能を把握することが可能である。
【００９９】
メインプロセッサ動作周波数は、情報処理コントローラのメインプロセッサの動作周波数を表す。メインプロセッサ使用率は、メインプロセッサで現在動作している全てのプログラムについての、メインプロセッサでの使用率を表す。メインプロセッサ使用率は、メインプロセッサの全処理能力に対する使用中の処理能力の比率を表した値で、例えば、プロセッサ処理能力評価のための単位であるMIPSを単位として算出され、または単位時間あたりのプロセッサ使用時間に基づいて算出される。
【０１００】
サブプロセッサ数は、情報処理コントローラが備えるサブプロセッサの数を表す。サブプロセッサIDは、情報処理コントローラのサブプロセッサを識別するための識別子である。
【０１０１】
サブプロセッサステータスは、サブプロセッサの状態を表すものであり、“unused”、“reserved”、および“busy”などの状態がある。“unused”は、サブプロセッサが現在使用されてなく、使用の予約もされていないことを示す。“reserved”は、現在は使用されていないが、予約されている状態を示す。“busy”は、現在使用中であることを示す。
【０１０２】
サブプロセッサ使用率は、サブプロセッサで現在実行している、またはサブプロセッサに実行が予約されているプログラムについての、サブプロセッサでの使用率を表す。すなわち、サブプロセッサ使用率は、サブプロセッサステータスが“busy”である場合には、現在の使用率を示し、サブプロセッサステータスが“reserved”である場合には、後に使用される予定の推定使用率を示す。
【０１０３】
サブプロセッサID、サブプロセッサステータスおよびサブプロセッサ使用率は、１つのサブプロセッサに対して一組設定され、１つの情報処理コントローラのサブプロセッサに対応する組数が設定される。
【０１０４】
メインメモリ総容量およびメインメモリ使用量は、それぞれ、情報処理コントローラに接続されているメインメモリの総容量および現在使用中の容量を表す。
【０１０５】
記録部数は、情報処理コントローラに接続されている記録部の数を表す。記録部IDは、情報処理コントローラに接続されている記録部を一意的に識別する情報である。記録部種別IDは、記録部の種類（例えば、ハードディスク、ＣＤ±ＲＷ、DVD±ＲＷ、メモリディスク、SRAM、ROMなど）を表す。
【０１０６】
記録部総容量および記録部使用量は、それぞれ、記録部IDによって識別される記録部の総容量および現在使用中の容量を表す。
【０１０７】
記録部ID、記録部種別ID、記録部総容量および記録部使用量は、１つの記録部に対して一組設定されるものであり、情報処理コントローラに接続されている記録部の数の組数だけ設定される。すなわち、１つの情報処理コントローラに複数の記録部が接続されている場合、各記録部には異なる記録部IDが割り当てられ、記録部種別ID、記録部総容量および記録部使用量も別々に管理される。
【０１０８】
このようにして、管理装置１１は、分散処理装置１３−１乃至１３−３のいずれかに分散処理を実行させる場合、ソフトウェアセルを生成し、生成したソフトウェアセルを、通信網１２を介して分散処理装置１３−１乃至１３−３のいずれかあてに送信する。
【０１０９】
なお、以下、管理装置１１から分散処理装置１３−１乃至１３−３のいずれかあてに送信される各種データは、ソフトウェアセルに格納されて送信されるものとし、繰り返しになるので、その説明は省略する。
【０１１０】
次に、図７を参照して、管理装置１１により実現される機能について説明する。
【０１１１】
分散処理装置動作状態管理部１０１は、通信網１２を介して接続されている分散処理装置１３−１乃至１３−３の動作状態を監視する。そして、分散処理装置動作状態管理部１０１は、監視結果に基づいて、分散処理装置動作状態リストを生成して、分散処理装置動作状態リスト記憶部１０２に記憶させる。尚、分散処理装置動作状態リストについては、図１０を参照して後述する。
【０１１２】
問題解決管理部１０３は、入力される問題を分析して、部分問題に分割して、部分問題解決状態リスト記憶部１０４に記憶させる。そして、問題解決管理部１０３は、分散処理装置動作状態リスト記憶部１０２に記憶された分散処理装置動作状態リストに基づいて、部分問題解決状態リスト記憶部１０４に記憶されている分割された部分問題の処理を分散処理装置１３−１乃至１３−３に割り振って供給し、問題を分散処理装置１３−１乃至１３−３のそれぞれに分散処理させる。
【０１１３】
尚、問題とは、探索問題であり、例えば、オセロゲーム、チェス、または将棋などのコマを置く手順を探索する問題や、鉄道などの経路探索問題（出発地から目的地までの経路として最短の経路、最小料金で目的地まで到達する経路、または、乗り換え回数を最小にする経路を求める問題）などである。以降においては、オセロゲーム（２人で対抗するゲームであって、８×８のマス目からなる盤上に一方の面が白で、かつ、他方の面が黒である丸状のコマを対抗するプレイヤが交互に置き、同一の色で縦方向、横方向、または斜方向に並ぶ異なる色のコマを挟むとき、その挟まれた色のコマを反転させ、これを交互に繰り返していき、最終的に白または黒のコマの多い方のプレイヤが勝者となるゲーム）のコマを置く手順を求める問題（数手先の状態で、プレイヤの色（白または黒）となるコマの数が多くなるようにコマを置く手順を決める問題）を例として説明する。また、以降においては、特に断りのない限り、プレイヤとは、管理装置１１がコマを置く手順を決定するプレイヤであって、対抗するプレイヤについては、対抗プレイヤと称するものとする。
【０１１４】
問題解決部１１１は、供給された問題を認識し、問題を部分問題として分割する。すなわち、ここで問題は、オセロゲームのコマを置く手順を求める探索問題であるので、問題解決部１１１は、オセロゲームの盤上のコマの配置の情報（盤情報）に基づいて、プレイヤがコマを置くことができる位置を認識する。さらに、問題認識部１１１は、認識したコマを置くことが可能な位置毎に、プレイヤのコマを置いた状態の盤情報を生成し、これを部分問題として問題解決状態リスト生成部１１２に供給する。
【０１１５】
また、問題解決部１１１は、部分問題解決状態リスト１０４を参照しながら、分散処理装置１３により分散処理されて、送信されてくる部分問題の処理結果を認識し、問題が解決されているか否かを判断して、解決されるまで、同様の処理を繰り返し、最終的に解決した（すなわち、プレイヤにとって最も有利なコマを置く手順が決定できた）場合、図示せぬディスプレイやスピーカなどにより画像や音声として、その処理結果であるコマを置く手順をプレイヤに呈示する。
【０１１６】
部分問題解決状態リスト生成部１１２は、問題解決部１１１より供給された部分問題毎に、解決状態（処理状況）を示すリストを生成し、部分問題解決状態リスト記憶部１０４に、その部分問題の情報と共に記憶させる。このとき、部分問題解決状態リスト生成部１１２は、分担決定部１１３により、その部分問題を処理するように分担が決められた分散処理装置１３の情報も生成する部分問題解決状態リストに反映する。尚、部分問題解決状態リストについては、図１３を参照して詳細を後述する。
【０１１７】
分担決定部１１３は、部分問題解決状態リスト記憶部１０４に記憶されている部分問題解決状態リストの情報と、分散処理装置動作状態リスト記憶部１０２に記憶されている分散処理装置動作状態リストの情報とに基づいて、各部分問題の処理を分担する分散処理装置１３を決定し、決定した情報を部分問題解決状態リスト生成部１１２に供給する。さらに、分担決定部１１３は、部分問題解決状態リスト記憶部１０４より記憶されている部分問題の情報を読み出して、分担が決定された分散処理装置１３の情報と共にソフトウェアセル生成部１１４に供給する。尚、分担決定部１１３は、分散処理装置１３の各々の仕様（中央演算処理装置の処理速度やメモリの容量などの情報）などを予め取得して、その情報に基づいて、分担を決定するようにしても良い。
【０１１８】
ソフトウェアセル生成部１１４は、部分問題の情報、すなわち、盤上のコマの配置の情報と共に、オセロゲームのルールや、コマを置く手順を探索するためのプログラムからなるソフトウェアセルを生成し、通信網１２を介して、分担が決定された分散処理装置１３に送信する。
【０１１９】
次に、分散処理装置１３により実現される機能について説明する。
【０１２０】
動作状態管理部１３１は、分散処理装置１３の動作状態、すなわち、情報処理コントローラ３１の動作状態の情報を監視し、管理装置１１の分散処理装置動作状態管理部１０１より自らの動作状態の情報を要求されるとき、分散処理装置１３の動作状態の情報を供給する。
【０１２１】
動作実行部１３２は、管理装置１１より送信されてくるソフトウェアセルを実行し、処理結果を管理装置１１に送り返す。より詳細には、動作実行部１３２のソフトウェアセル実行部１４１は、管理装置１１より送信されてくるソフトウェアセルのプログラムを認識し、予めインストールされていない場合、そのプログラムをインストールする。また、ソフトウェアセル実行部１４１は、ソフトウェアセルに含まれている部分問題の情報、すなわち、オセロゲームの盤上のコマの配置などの情報をソフトウェアセル実行用記憶部１４２に記憶させる。
【０１２２】
次に、図９のフローチャートを参照して、管理装置１１と分散処理装置１３とによる分散処理装置動作状態管理処理について説明する。
【０１２３】
ステップＳ１において、分散処理装置動作状態管理部１０１は、通信網１２に接続されている分散処理装置１３を認識する。すなわち、例えば、分散処理装置動作状態管理部１０１は、図１の場合、分散処理装置１３−１乃至１３−３の３台の分散処理装置が存在することを認識する。
【０１２４】
ステップＳ２において、分散処理装置動作状態管理部１０１は、動作状態の情報を取得していない分散処理装置１３に動作状態の情報を問い合わせる。
【０１２５】
ステップＳ１１において、動作状態管理部１３１は、動作状態についての問い合わせが、管理装置１１より送信されてきたか否かを判定し、動作状態の問い合わせがあるまでその処理を繰り返す。例えば、ステップＳ２の処理により、管理装置１１より動作状態の情報の問い合わせがあったと判定された場合、その処理は、ステップＳ１２に進む。
【０１２６】
ステップＳ１２において、動作状態管理部１３１は、現在の自らの動作状態として、空き状態であることを示すVACANT、管理装置１１より送信されてきたソフトウェアセルを実行中であることを示すRUNNING、エラーが発生して動作できない状態を示すERROR、または、なんらかの処理を実行中であることを示すBUSYのいずれかの状態であるかを判断し、判断結果に応じた動作状態の情報を生成する。
【０１２７】
ステップＳ１３において、ステップＳ１２の処理で生成された動作状態の情報を管理装置１１に送信する。
【０１２８】
ステップＳ３において、分散処理装置動作状態管理部１０１は、問い合わせをした動作状態の情報が、その分散処理装置１３から送信されてきたか否かを判断し、動作状態の情報が送信されてくるまで、その処理を繰り返す。例えば、ステップＳ１３の処理により、分散処理装置１３より現在の動作状態の情報が送信されてきた場合、その処理は、ステップＳ４に進む。
【０１２９】
ステップＳ４において、分散処理装置動作状態管理部１０１は、送信されてきた動作状態の情報を、図１０で示されるような分散処理装置動作状態リストとして登録し、分散処理装置動作状態リスト記憶部１０２に記憶させる。分散処理装置動作状態リストは、図１０で示されるように、左上から分散処理装置ID、ネットワークアドレス、およびステータスの欄が設けられている。図１０の場合、分散処理装置IDの欄には上から１，２，３，４・・・と記録されている。また、それぞれの分散処理装置IDに対応して、ネットワークアドレスとして「192.168.0.1：10000」、「192.168.0.2：1000」、「192.168.0.3：100」、および、「192.168.0.4：10」と記録されている。さらに、ステータスとして、それぞれの分散処理装置IDに対応して、「VACANT」、「RUNNING」、「ERROR」、および、「BUSY」と記録されている。
【０１３０】
従って、図１０においては、分散処理装置ID＝１に対応する分散処理装置１３は、ネットワークアドレスが、「192.168.0.1」であって、ポート番号が「10000」であり、動作状態が「VACANT」であることが示されている。また、分散処理装置ID＝２に対応する分散処理装置１３は、ネットワークアドレスが、「192.168.0.2」であって、ポート番号が「1000」であり、動作状態が「RUNNING」であることが示されている。さらに、分散処理装置ID＝３に対応する分散処理装置１３は、ネットワークアドレスが、「192.168.0.3」であって、ポート番号が「100」であり、動作状態が「ERROR」であることが示されている。また、分散処理装置ID＝４に対応する分散処理装置１３は、ネットワークアドレスが、「192.168.0.4」であって、ポート番号が「10」であり、動作状態が「BUSY」であることが示されている。
【０１３１】
ステップＳ５において、分散処理装置動作状態管理部１０１は、動作状態の情報を取得していない分散処理装置があるか否かを判定し、動作状態の情報を取得していない分散処理装置が存在すると判定した場合、その処理は、ステップＳ２に戻る。すなわち、全ての分散処理装置１３の動作状態の情報が取得されるまで、ステップＳ２乃至Ｓ５の処理が繰り返される。
【０１３２】
そして、ステップＳ５において、全ての分散処理装置１３の動作状態の情報が取得できた場合、その処理は、ステップＳ６に進む。
【０１３３】
ステップＳ６において、所定の時間が経過したか否かを判定し、所定の時間が経過するまでのその処理を繰り返し、そして、所定の時間が経過したと判定された場合、その処理は、ステップＳ１に戻り、以降の処理を繰り返す。
【０１３４】
すなわち、以上の処理により、所定の時間間隔で、管理装置１１は、通信網１２に接続されている分散処理装置１３の動作状態の情報を繰り返し取得することで、動作状態を監視し続け、分散処理装置動作状態リストとして分散処理装置動作状態リスト記憶部１０２に記憶させる。このため、分散処理装置動作状態リストには、最新の分散処理装置１３の動作状態が記録されていることになる。
【０１３５】
次に、図１１のフローチャートを参照して、問題処理について説明する。
【０１３６】
ステップＳ３１において、問題解決部１１１は、現状の問題を分析し、部分問題に分割する。すなわち、例えば、図１２で示されるような盤面の情報が入力された問題であり、かつ、プレイヤの色が白である場合、次の一手として白のコマを置くことができる位置は、図１２で示す星印Ａ乃至Ｅの位置である。尚、図１２においては、マス目の位置を図中の座標（水平方向のマス目の番号，垂直方向のマス目の番号）として示す場合、位置（４，５），（４，４），（４，２），（５，４）、および（６，４）が黒のコマであり、位置（５，５），（５，３）、および（５，２）が白のコマである。従って、星印Ａの位置（３，５）に白のコマが置かれると位置（４，４）の黒のコマが、位置（５，３）の白のコマと挟まれて白のコマとなる。星印Ｂの位置（７，５）に白のコマが置かれると位置（６，４）の黒のコマが、位置（５，３）の白のコマと挟まれて白のコマとなる。また、星印Ｃの位置（３，２）に白のコマが置かれると位置（４，２）の黒のコマが、位置（５，２）の白のコマと挟まれて白のコマとなる。さらに、星印Ｄの位置（７，３）に白のコマが置かれると位置（６，４）のコマが、位置（５，５）の白のコマと挟まれて白のコマとなる。また、星印Ｅの位置（３，１）に白のコマが置かれると位置（４，２）の黒のコマが、位置（５，３）の白のコマと挟まれて白のコマとなる。
【０１３７】
そこで、問題解決部１１１は、白のコマを置くことができる図１２の星印Ａ乃至Ｅの位置のそれぞれに白のコマを置いた場合の盤面の情報を、問題を分割した部分問題として生成し、問題解決状態リスト生成部１１２に供給する。
【０１３８】
ステップＳ３２において、問題解決状態リスト生成部１１２は、問題解決部１１１より供給された部分問題としての盤面の情報のそれぞれについて、例えば、図１３で示されるような部分問題解決状態リストを生成して、部分問題解決状態リスト記憶部１０４に記憶させる。
【０１３９】
すなわち、図１３で示されるように、部分問題解決状態リストは、部分問題ID、実行状態、派生フラグ、派生元、ソフトウェアセルの所在、スコア、および備考情報から構成されており、部分問題を識別する部分問題IDは、図１３の場合、図１２の白のコマを置くことができる星印に対応してＡ乃至Ｅと記録されている。実行状態は、各部分問題の実行状態の情報が記録され、図１３では、全てが部分問題解決状態リストに登録されたばかりなので、全て「WAITING」とされており、実行待ちの状態となっていることが示されている。この他に、実行状態としては、実行が終了していることを示す「FINISHED」、実行中であることを示す「RUNNING」が記録される。尚、実行中であることを示すために、「RUNNING」に代えて、担当している機器のIDを記録するようにしても良い。
【０１４０】
派生フラグは、部分問題の処理結果から派生して生じる、さらなる部分問題の有無の情報を示すものであり、派生する部分問題があるとき「TRUE」と記録され、ないとき「FALSE」が記録される。図１３の場合、いずれの部分問題も処理が実行されておらず、派生する部分問題の有無が判別できないので、「−」と示されている。
【０１４１】
派生元は、派生する部分問題が存在する場合、その派生元となる部分問題IDが記録される。図１３の場合、いずれの部分問題も処理が実行されておらず、派生する部分問題の有無が判別できないので、「−」と示されている。
【０１４２】
ソフトウェアセルの所在は、部分問題IDで識別される部分問題を処理するためのソフトウェアセルが送信されている、すなわち、その部分問題IDの部分問題の処理が分担されている分散処理装置１３を識別する分散処理装置IDが記録される。
【０１４３】
スコアは、各部分問題の処理結果である評価結果（評価値）が記録される項目である。この例においては、オセロゲームの二手先のプレイヤのコマの数と、盤上の端に置くことができたコマの数の和が記録されるものとする。尚、評価結果の設定方法は、これに限るものではなく、その他の評価方法に基づいた評価結果であってもよく、その場合、どの評価方法による評価結果であるかを識別する情報を付加するようにしてもよい。また、二手先における盤上のコマの数に限らず、それ以上先の手におけるコマ数であってもよい。また、コマ数のみならず、別の評価結果として、ゲームを終了させるまでの手数を最も少なくする、あるいは、最も多くするといったようなものであっても良い。
【０１４４】
備考情報は、部分問題解決状態リストの各項目以外に、付加することができる情報が記録され、図１３においては、部分問題の処理ステップ数が示されている。ここで、部分問題の処理ステップ数とは、最初の部分問題の処理結果から何回派生して生じた部分問題であるかを示す値であり、例えば、最初の部分問題の処理ステップ数は１であるが、その処理結果から派生して生じた部分問題は、処理ステップ数が２となる。従って、さらに、処理ステップ数が２の部分問題の処理結果により派生して生じた部分問題の処理ステップ数は３となり、派生して生じた回数に応じた値となる。
【０１４５】
ステップＳ３３において、分担決定部１１３は、部分問題解決状態リスト記憶部１０４に記憶された部分問題解決状態リストと、分散処理装置動作状態リスト記憶部１０２に記憶された分散処理装置動作状態リストとに基づいて、各部分問題の処理を担当する分散処理装置１３の分担を決定し、決定した各部分問題の処理担当となる分散処理装置１３の情報と、それぞれに対応する部分問題の情報を部分問題リスト記憶部１０４より読み出して、ソフトウェアセル１１４に供給すると共に、決定した各部分問題の処理担当となる分散処理装置１３の情報を部分問題解決状態リスト生成部１１２に供給する。
【０１４６】
例えば、図１３で示されるように部分問題ID＝A乃至Eの5の部分問題が存在し、分散処理装置IDとして１乃至３（例えば、図１の分散処理装置１３−１乃至１３−３に対応するものとする）が存在する場合であって、さらに、分散処理装置動作状態リストにおけるステータスが全て「VACANT」であったとき、分担決定部１１３は、空き状態になっている分散処理装置ID＝１，２，３にそれぞれ図１４の上から示される部分問題ID＝Ａ，Ｂ，Ｃを分担させるように割り振る。
【０１４７】
ステップＳ３４において、ソフトウェアセル生成部１１４は、オセロゲームのルールなどの情報を含んだ部分問題を処理するためのプログラム、および、部分問題の情報からなるソフトウェアセルを生成する。
【０１４８】
ステップＳ３５において、ソフトウェアセル生成部１１４は、生成したソフトウェアセルを、各部分問題の担当となる分散処理装置１３に対して送信する。すなわち、上述のように、部分問題ID＝Ａ，Ｂ，Ｃが、それぞれ分散処理装置ID＝１，２，３に割振られた場合、分散処理装置ID＝１，２，３は分散処理装置１３−１乃至１３−３に対応しているので、部分問題ID＝Aに対応するソフトウェアセルは、分散処理装置１３−１に送信され、部分問題ID＝Ｂに対応するソフトウェアセルは、分散処理装置１３−２に送信され、部分問題ID＝Ｃに対応するソフトウェアセルは、分散処理装置１３−３に送信されることになる。
【０１４９】
ステップＳ３６において、部分問題解決処理部１１２は、ステップＳ３３の処理で供給された、決定された各部分問題の処理担当となる分散処理装置１３の情報に基づいて、部分問題解決状態リストの実行状態を更新する。例えば、上述したように、部分問題ID＝Ａ，Ｂ，Ｃが、それぞれ分散処理装置ID＝１，２，３に割振られた場合、部分問題解決処理部１１２は、図１４で示されるように、部分問題ID＝Ａ，Ｂ，Ｃの実行状態を「WAITING」から「RUNNING」に更新する。
【０１５０】
ステップＳ５１において、動作実行部１３２のソフトウェアセル実行部１４１は、通信網１２を介して、管理装置１１よりソフトウェアセルが送信されてきたか否かを判定し、送信されてきたと判定されるまで、その処理を繰り返す。ステップＳ５１において、例えば、ステップＳ３５の処理により、管理装置１１よりソフトウェアセルが送信されてきたと判定された場合、その処理は、ステップＳ５２に進む。
【０１５１】
ステップＳ５２において、ソフトウェアセル実行部１４１は、ソフトウェアセルに含まれているプログラムがインストールされているか否かを判定する。すなわち、ここでいうプログラムは、上述したように部分問題であるオセロゲームの盤情報に基づいた、コマを置く手順を決定するためのプログラムである。
【０１５２】
ステップＳ５２において、例えば、最初の処理で、そのプログラムがインストールされていない場合、その処理は、ステップＳ５３に進み、ソフトウェアセル実行部１４１は、適宜ソフトウェアセル実行用記憶部１４２を使用しながら、送信されてきたソフトウェアセルに含まれているプログラムを展開してインストールする。
【０１５３】
ここで、図１５を参照して、ソフトウェアセルに含まれている、部分問題であるオセロゲームの盤情報に基づいた、コマを置く手順を決定するためのプログラムが展開されることにより、動作実行部１３２により実現される機能について説明する。
【０１５４】
問題解決部１６１は、部分問題であるオセロゲームの盤情報に基づいた、コマを置く手順を決定するためのプログラムであり、管理装置１１より送信されてきたソフトウェアセルに含まれている部分問題の情報を処理し、処理結果と、その処理に基づいて派生的に発生する部分問題を管理装置１１に送り返す。
【０１５５】
より詳細には、問題解決部１６１の部分問題認識部１７１は、ソフトウェアセルに含まれている部分問題を抽出して認識し、問題解決処理実行部１７２に供給する。
【０１５６】
問題解決処理部１７２の問題処理部１８１は、部分問題認識部１７１より供給された部分問題を処理し、処理結果を出力部１７３に出力する。また、問題解決処理部１７２の派生問題抽出１８２は、問題処理部１８１の部分問題の処理により派生的に発生する部分問題を抽出して、出力部１７３に出力する。
【０１５７】
出力部１７３は、問題解決処理実行部１７２より供給される処理結果と、派生的に発生した部分問題とを併せて、管理装置１１に送信する。
【０１５８】
ここで、図１１のフローチャートの説明に戻る。
【０１５９】
一方、ステップＳ５２において、インストールされていないと判定された場合、ステップＳ５３の処理はスキップされることになる。
【０１６０】
ステップＳ５４において、部分問題認識部１７１は、ソフトウェアセルとして送信されてきた部分問題を認識する。
【０１６１】
さらに、問題解決処理実行部１７２の問題処理部１８１は、認識した部分問題に基づいて、二手先までの盤上の状態を評価してこれを処理結果として出力部１７３に出力する。
【０１６２】
例えば、一手先の手として、図１２で示されている星印Ｂの位置に白のコマをおいた場合についての部分問題が供給されてきた場合、図１６で示されるような盤情報がソフトウェアセルに含まれて送信されてきていることになる。
【０１６３】
すなわち、図１６においては、図１２の盤上における位置（７，５）に白のコマが置かれる事により、位置（６，４）の黒のコマが、位置（５，３）の白のコマと挟まれることにより、白のコマに変更した状態である。
【０１６４】
従って、対抗プレイヤにより黒のコマを置く事が可能な二手先の手は、図１６で示される位置ａ乃至ｅとなる。このとき、位置ａ（８，６）に黒のコマが置かれると位置（７，５），（６，４），（５，３）の３個の白のコマが、位置（４，２）の黒のコマと挟まれて黒のコマとなる。位置ｂ（５，６）に黒のコマが置かれると位置（５，５）の白のコマが、位置（５，４）の黒のコマと挟まれて黒のコマとなる。また、位置ｃ（７，４）に黒のコマが置かれると位置（６，４）の白のコマが、位置（５，４）の黒のコマと挟まれて黒のコマとなる。さらに、位置ｄ（６，２）に黒のコマが置かれると位置（５，２）のコマが、位置（４，２）の黒のコマと挟まれて黒のコマとなる。また、位置ｅ（５，１）に黒のコマが置かれると位置（５，３），（５，２）の２個の白のコマが、位置（５，４）の黒のコマと挟まれて黒のコマとなる。
【０１６５】
結果として、図１７で示されるように、位置ａ（８，６））に黒のコマが置かれたとき、対抗プレイヤの黒のコマの数が、最多の８個となるため、問題処理部１８１は、対抗プレイヤの黒のコマは位置ａに置かれるとみなす。
【０１６６】
従って、一手先に図１２の星印Ｂに対応する位置（７，５）に白のコマが置かれた場合、二手先においては、図１７で示されるように黒のコマが位置ａ（８，６）の位置に置かれると推定されることになる。問題処理部１８１は、部分問題の処理結果として、図１７の盤上のプレイヤの白のコマの数と、盤上の端に置くことができたコマの数との和を評価結果として求め、出力部１７３に供給する。すなわち、図１７の場合、白のコマの数は２個であり、盤上の端に置くことができたコマの数は０であるので、２が部分問題の処理結果として出力部１７３に供給される。尚、二手先の最終的な黒のコマの数が同一となる黒のコマの置かれる位置が複数に存在する場合、いずれについても置かれる可能性があるため、そのいずれの位置に置かれたときの白のコマの数も評価結果として求められる。
【０１６７】
ステップＳ５６において、派生問題抽出部１８２は、二手先の盤情報に基づいて、派生して生じる部分問題を抽出し、抽出した盤情報を出力部１７３に供給する。すなわち、二手先の盤情報に基づいて派生する部分問題は、さらに、その次の一手である。従って、例えば、図１７の場合、さらに次の一手として白のコマを置くことが可能な位置は、星印Ｆ乃至Ｉの位置である。
【０１６８】
従って、星印Ｆの位置（３，５）に白のコマが置かれると位置（４，５）の黒のコマが、位置（５，５）の白のコマと挟まれて白のコマとなる。星印Ｇの位置（３，３）に白のコマが置かれると位置（４，４）の黒のコマが、位置（５，５）の白のコマと挟まれて白のコマとなる。また、星印Ｈの位置（３，２）に白のコマが置かれると位置（４，２）の黒のコマが、位置（５，２）の白のコマと挟まれて白のコマとなる。さらに、星印Ｉの位置（７，３）に白のコマが置かれると位置（６，４）の黒のコマが、位置（５，５）の白のコマと挟まれて白のコマとなる。
【０１６９】
そこで、派生問題抽出部１８２は、白のコマを置くことができる図１７の星印Ｆ乃至Ｉの位置のそれぞれに白のコマを置いた場合の盤面の情報を、部分問題の処理結果から派生して生じた部分問題として抽出し、出力部１７３に供給する。
【０１７０】
ステップＳ５７において、出力部１７３は、問題解決処理実行部１７２より供給される処理結果と、派生的に発生した部分問題とを併せて、管理装置１１に送信する。
【０１７１】
ステップＳ３７において、問題解決部１１１は、分散処理装置１３より部分問題の処理結果である評価結果と、派生した部分問題が送信されてきたか否かを判定し、送信されてきたと判定されるまで、その処理を繰り返す。例えば、ステップＳ５７の処理により、部分問題の処理結果と、その処理結果に基づいて派生的に発生した部分問題とが送信されてきた場合、その処理は、ステップＳ３８に進む。
【０１７２】
ステップＳ３８において、問題解決部１１１は、送信されてきた部分問題の処理結果と、その処理結果に基づいて派生的に発生した部分問題を、部分問題解決状態リスト生成部１１２に対して供給し、部分問題解決状態リストを更新させる。
【０１７３】
従って、分散処理装置１３−１乃至１３−３よりそれぞれ部分問題の処理結果と、その処理結果により派生して生じる部分問題の情報に基づいて、例えば、部分問題解決状態リストは、図１８で示されるように更新されることになる。
【０１７４】
すなわち、図１８で示されるように、部分問題ID＝Ａ，Ｂ，Ｃの実行状態が、処理の実行状態を示す「RUNNING」から処理が終了したことを示す「FINISHED」に変更される。また、派生フラグは、いずれも「TRUE」であり、いずれの処理結果に対しても派生的に部分問題が発生したことが示されている。
【０１７５】
さらに、ソフトウェアセルの所在は、部分問題ID＝Ａ，Ｂ，Ｃのそれぞれについて、１，２，３とされており、部分問題を処理するためのそれぞれのソフトウェアセルが、分散処理装置１３−１乃至１３−３のそれぞれに存在する（インストールされている）ことが示されている。
【０１７６】
さらに、スコアは、部分問題ID＝Ａ，Ｂ，Ｃのそれぞれについて、３，２，３と示されており、それぞれ処理結果、すなわち、評価結果となる盤上のプレイヤの白のコマの数がそれぞれ３個、２個、および３個であることが示されている。
【０１７７】
また、派生して生じた部分問題として部分問題ID＝Ｆ乃至Ｉが部分問題解決状態リストに設けられ、それぞれの実行状態が「WAITING」とされている。また、派生元は、いずれも「B」とされており、部分問題ID＝Bの部分問題の処理結果から派生的の生じた部分問題であることが示されている。
【０１７８】
さらに、処理結果から派生的に発生した部分問題については、処理ステップ数が１インクリメントされることになるので、備考情報が２とされる。尚、図示されていないが、部分問題ID＝Ａ，Ｃに対応する部分問題の処理結果から派生的に生じた部分問題もそれぞれIDが付されて記録される。
【０１７９】
ステップＳ３９において、問題解決部１１１は、部分問題解決状態リスト記憶部１０４に問い合わせて、部分問題解決状態リストを参照して問題が処理されたか否かを判定する。より詳細には、問題解決部１１１は、全ての部分問題について実行状態が「FINISHED」になっているか否かを判定し、全ての実行状態が「FINISHED」ではない、すなわち、まだ、未処理の部分問題が存在すると判定した場合、その処理は、ステップＳ３３に戻り、それ以降の処理が繰り返される。
【０１８０】
ステップＳ３９において、例えば、部分問題解決状態リストが、図１８で示されるような場合、部分問題ID＝D以降の部分問題の実行状態は、「WAITING」であって、処理を待っている状態であるので、全ての部分問題は処理されていないとみなされ、その処理は、ステップＳ３３に進む。
【０１８１】
さらに、部分問題解決状態リストが、図１８で示されるような場合、ステップＳ３３に戻ったとき、同一の処理ステップ数となる部分問題のうち未処理の部分問題の処理を優先的に処理する。図１８の場合、備考情報の欄に示される「１」に対応する、未処理の部分問題は、部分問題ID＝Ｄ，Ｅの部分問題である。
【０１８２】
また、上述した図１１のフローチャートを参照して説明した問題処理において、分散処理装置１３は、ステップＳ５２乃至Ｓ５７の処理を実行している間、分散処理装置動作状態リストにおけるステータスは、「RUNNING」となるが、ステップＳ５１の処理を繰り返している間は、他のプログラムを実行していないと仮定すれば、ステータスは「VACANT」となる。
【０１８３】
そこで、分散処理装置１３−１，１３−２の分散処理装置動作状態リストにおけるステータスが「VACANT」であった場合、ステップＳ３３の処理により、部分問題ID＝Ｄ，Ｅに対応する部分問題は、例えば、分散処理装置１３−１，１３−２にそれぞれ割り振られる。その結果、分散処理装置１３−１，１３−２においては、ステップＳ５２乃至Ｓ５７の処理により、部分問題ID＝Ｄ，Ｅに対応する部分問題の処理が実行されることになる。
【０１８４】
ところで、部分問題ID＝Eに対応する部分問題は、図１９で示されるように、図１２で示される盤上の状態において、一手先の手として、星印Eに対応する位置（３，１）に白のコマが置かれることにより、位置（４，２）の黒のコマが、位置（５，３）の白のコマと挟まれることにより白のコマに変化したものである。
【０１８５】
この場合、二手先の状態として、対抗プレイヤの黒のコマは、図１９の位置ｆ乃至ｉのいずれかに置くことが可能である。このとき、位置ｆ（５，６）に黒のコマが置かれると位置（５，５）の白のコマが、位置（５，４）の黒のコマと挟まれて黒のコマとなる。また、位置ｇ（６，６）に黒のコマが置かれると位置（５，５）の白のコマが、位置（４，４）の黒のコマと挟まれて黒のコマとなる。また、位置ｈ（６，２）に黒のコマが置かれると位置（５，３）の白のコマが、位置（４，４）の黒のコマと挟まれて黒のコマとなる。さらに、位置ｉ（５，１）に黒のコマが置かれると位置（５，２），（５，３）の２個のコマが、位置（５，４）の黒のコマと挟まれて黒のコマとなる。
【０１８６】
結果として、図２０で示されるように、位置ｉ（５，１）に黒のコマが置かれたとき、対抗プレイヤの黒のコマの数が、最多の７個となるため、問題処理部１８１は、対抗プレイヤの黒のコマは位置ｉに置かれるとみなす。
【０１８７】
従って、一手先に図１２の星印Ｅに対応する位置（３，１）に白のコマが置かれた場合、二手先においては、図１９で示されるように黒のコマが位置ｉ（５，１）の位置に置かれると推定されることになる。問題処理部１８１は、部分問題の処理結果として、図２０の盤上のプレイヤの白のコマの数を評価結果として求め、出力部１７３に供給する。すなわち、図２０の場合、白のコマの数は３個であるが、さらに、盤上の端の位置に白のコマを置くことができたので（位置（３，１）のコマは、盤上の端部のマスに置かれている）、端部に置かれたコマの数である１を足して、評価結果を４（＝３＋１）として出力する。
【０１８８】
さらに、派生問題抽出部１８２は、白のコマを置くことができる図２０の星印J乃至Nの位置のそれぞれに白のコマを置いた場合の盤面の情報を、部分問題から派生して生じた部分問題として生成し、出力部１７３に供給する。
【０１８９】
図２０で示される処理結果と、処理結果により派生的に発生した部分問題（星印Ｋ乃至Ｎの位置に白のコマを置いた盤情報）とが、ステップＳ５７の処理により送信され、ステップＳ３８の処理で、これらの処理結果と、処理結果により派生的に発生した部分問題とに基づいて、部分問題解決状態リストが更新されると、図２１で示されるようなものとなる。
【０１９０】
すなわち、図２１において、部分問題ID＝Ａ乃至Ｃの情報は、図１８と同様であるが、部分問題ID＝Ｄ，Ｅの部分問題の実行状態は、「RUNNING」から「FINISHED」に変更される。また、派生フラグは、「TRUE」に変更される。さらに、部分問題ID＝Ｄ，Ｅのソフトウェアセルの所在は、それぞれ１，２である。さらに、部分問題ID＝Ｄ，Ｅのスコアは、それぞれ３，４である。
【０１９１】
さらに、部分問題ID＝Eの部分問題の処理結果により派生して発生した部分問題ID＝J乃至Nが設けられている。尚、部分問題ID＝Dの部分問題の処理結果にもより派生して発生した部分問題は、図示していないが、同様に部分問題解決状態リストに更新して記録されている。
【０１９２】
部分問題解決状態リストが図２１で示されるような場合、処理ステップ数が同一の部分問題がすべて処理されているので、ステップＳ３８において、問題解決部１１１は、さらに、この同一の処理ステップ数の部分問題の処理結果のうちのスコアを比較し、最もスコアが大きな部分問題以外の部分問題の処理結果により派生的に発生した部分問題を部分問題解決状態リストから削除して、部分問題解決状態リストを更新する。
【０１９３】
すなわち、図２１の場合、部分問題ID＝Eの処理結果のスコアが、同一の処理ステップ数（備考情報＝１）の部分問題の中で最も高いので、図２２で示されるように、それ以外の部分問題である部分問題ID＝Ａ乃至Ｄの処理結果に基づいて、派生的に発生する部分問題を削除する。すなわち、図２２においては、図２１において示されていた部分問題ID＝Bの部分問題の処理結果から派生的に発生する部分問題である部分問題ID＝F乃至Iに対応する部分問題が部分問題解決状態リストから削除されている。尚、図２２においては、斜線部で示されている部分が削除された部分であることを示している。また、図示していないが、部分問題ID＝Ａ乃至Ｄに対応する部分問題の処理結果から派生的に発生した部分問題も削除されている。
【０１９４】
すなわち、このように部分問題解決状態リストが更新されていくことにより、二手先毎に、白のコマが最も多い状態を維持することができる部分問題の処理結果から派生的に発生する部分問題を順次処理していく処理を繰り返すことで、処理しなければならない部分問題の数を抑制しつつ、最良のコマを置く手順を決定する処理を繰り返すことができる。
【０１９５】
そして、ステップＳ３９において、問題が解決した、すなわち、部分問題解決状態リストに登録された全ての部分問題の実行状態の情報が「FINISHED」であると判定された場合、ステップＳ４０において、問題解決部１１１は、部分問題解決状態リストを参照して、上述した処理により、各処理ステップ数の情報（備考情報の値）毎にスコアの高い部分問題IDに対応する部分問題の処理結果を表示する。すなわち、このように表示された部分問題の処理結果を順次辿って、コマを置くようにすることで、二手先、すなわち、相手がコマを置いた後の状態で、常に、自らのコマを最も多くすることが可能となる。
【０１９６】
尚、以上においては、例えば、図１１のステップＳ３４の処理において、毎回部分問題を処理するためのプログラムを含むソフトウェアセルを生成して、分散処理装置１３に送信する例について説明してきたが、部分問題の処理結果から派生的に生じる部分問題については、既に、その部分問題を処理した分散処理装置１３が、ソフトウェアセルを所持していることになるため、それ以降は、そのソフトウェアセルの所在情報の情報のみを、処理を担当する分散処理装置１３に送付するようにすることで、情報システム全体の負荷を軽減することが可能となる。
【０１９７】
すなわち、この場合、部分問題の処理を分担して処理すべき分散処理装置１３が、ソフトウェアセルの所在の情報を取得することで、ソフトウェアセルの所在の情報に基づいて、ソフトウェアセルを所持した他の分散処理装置１３からソフトウェアセルを取得することで、部分問題を処理することが可能となる。
【０１９８】
結果として、盤情報やプログラムのような大きな情報を含むソフトウェアセルを部分問題の情報を分散処理装置に送る度に生成する必要がなくなり、部分問題IDと、そのソフトウェアセルの所在情報という軽い情報のみからなるソフトウェアセルを、処理を担当する分散処理装置１３に送付するのみで済むので、管理装置１１の負荷を軽減させるようにすることができる。
【０１９９】
以上によれば、オセロゲームなどの探索問題をIPネットワークなどの通信網１２を介して接続された複数の分散処理装置を用いて処理することにより、１台の情報処理装置では、計算処理量が膨大な処理であっても、複数の分散処理装置により合理的に処理することが可能となる。また、ソフトウェアセルに含まれるプログラムを変化させることにより、部分問題に分割できるような探索問題であれば、処理対象を様々に変化させるようにすることができ、さらに、ソフトウェアセルを使用することが可能な機器であれば、異機種間でも分散処理を容易に実現させることが可能となる。
【０２００】
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行させることが可能な、例えば汎用のパーソナルコンピュータなどに記録媒体からインストールされる。
【０２０１】
プログラムが記録されている記録媒体は、図１に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク６１（フレキシブルディスクを含む）、光ディスク６２（CD-ROM(Compact Disc-Read Only Memory)，DVD（Digital Versatile Disk）を含む）、光磁気ディスク６３（MD（Mini-Disc）を含む）、もしくは半導体メモリ６４などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記録されているローカルストレージ５１−１乃至５１−４や、記録部３３−１，３３−２に含まれるハードディスクなどで構成される。
【０２０２】
尚、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理は、もちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理を含むものである。
【０２０３】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【図面の簡単な説明】
【０２０４】
【図１】本発明を適用した通信システムの一実施の形態を示す図である。
【図２】メインメモリを説明する図である。
【図３】サブプロセッサのローカルストレージを説明する図である。
【図４】キー管理テーブルを説明する図である。
【図５】ソフトウェアセルの構成の例を示す図である。
【図６】DMAコマンドがステータス返信コマンドである場合におけるソフトウェアセルのデータ領域の構造を示す図である。
【図７】管理装置１１により実現される機能を説明する機能ブロック図である。
【図８】分散処理装置１３により実現される機能を説明する機能ブロック図である。
【図９】分散処理装置動作状態管理処理を説明するフローチャートである。
【図１０】分散処理装置動作状態リストを説明する図である。
【図１１】問題処理を説明するフローチャートである。
【図１２】盤上の情報を説明する図である。
【図１３】部分問題解決状態リストを説明する図である。
【図１４】部分問題解決状態リストを説明する図である。
【図１５】動作実行部にソフトウェアセルのプログラムがインストールされる際、実現される機能を説明する機能ブロック図である。
【図１６】盤上の情報を説明する図である。
【図１７】盤上の情報を説明する図である。
【図１８】部分問題解決状態リストを説明する図である。
【図１９】盤上の情報を説明する図である。
【図２０】盤上の情報を説明する図である。
【図２１】部分問題解決状態リストを説明する図である。
【図２２】部分問題解決状態リストを説明する図である。
【符号の説明】
【０２０５】
１１  管理装置，  １３  分散処理装置，  １０１  分散処理装置動作状態管理部，  １０２  分散処理装置動作状態リスト記憶部，  １０３  問題解決管理部，  １０４  部分問題解決状態リスト記憶部，  １１１  問題解決部，  １１２  問題解決状態リスト生成部，  １１３  分担決定部，  １１４  ソフトウェアセル生成部，  １３１  動作状態管理部，  １３２  動作実行部，  １４１  ソフトウェアセル実行部，  １４２  ソフトウェアセル実行用記憶部，  １６１  問題解決部，  １７１  部分問題認識部，  １７２  問題解決処理実行部，  １８１  問題処理部，  １８２  派生問題抽出部
【図１】
2005339137.tif 000003
【図２】
2005339137.tif 000004
【図３】
2005339137.tif 000005
【図４】
2005339137.tif 000006
【図５】
2005339137.tif 000007
【図６】
2005339137.tif 000008
【図７】
2005339137.tif 000009
【図８】
2005339137.tif 000010
【図９】
2005339137.tif 000011
【図１０】
2005339137.tif 000012
【図１１】
2005339137.tif 000013
【図１２】
2005339137.tif 000014
【図１３】
2005339137.tif 000015
【図１４】
2005339137.tif 000016
【図１５】
2005339137.tif 000017
【図１６】
2005339137.tif 000018
【図１７】
2005339137.tif 000019
【図１８】
2005339137.tif 000020
【図１９】
2005339137.tif 000021
【図２０】
2005339137.tif 000022
【図２１】
2005339137.tif 000023
【図２２】
2005339137.tif 000024