(57)【要約】【課題】プロセッサの動作率と使用率との関係から分散処理の割り当てを制御する。【解決手段】  ステップＳ３１で新たな分散処理が指令された場合、ステップＳ３２で割り当て条件を満たしているか否かを示すフラグが初期化され、ステップＳ３３、ステップＳ３４でプロセッサ使用率とプロセッサ動作率が取得され、ステップＳ３５で割り当てが決定したプロセッサを示すフラグが初期化される。ステップＳ３６でプロセッサ割り当て決定処理が実行され、ステップＳ３７で割り当てが成功したと判断された場合、ステップＳ３８でプロセッサ動作率の設定を変更する必要があるか否かが判断され、必要があれば、ステップＳ３９で新たなプロセッサ動作率が算出されて、ステップＳ４０でプロセッサ使用率とプロセッサ動作率とが更新される。ステップＳ４１でプログラムとデータがロードされ、論理スレッドの処理が実行される。本発明は情報処理装置に適用できる。【選択図】図１５
2006031525.tif 000002
【特許請求の範囲】
【請求項１】
第１の情報処理手段と、
複数の第２の情報処理手段と
を備え、
前記第１の情報処理手段は、
アプリケーションプログラムの実行を制御するアプリケーションプログラム実行制御手段と、
前記第２の情報処理手段の動作に関する動作情報を取得する動作情報取得手段と、
前記アプリケーションプログラム実行制御手段の処理により実行が制御される前記アプリケーションプログラムによって、前記第１の情報処理手段および複数の前記第２の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、前記動作情報取得により取得された前記動作情報に基づいて、手段前記処理単位に対応する前記機能を提供するための分散処理を制御する分散処理制御手段と
を備え、
前記分散処理制御手段は、
前記第１の情報処理手段および前記第２の情報処理手段において、全処理能力に対する使用中の処理能力の比率が１以上にならないように、前記処理単位に対応する前記分散処理を制御する
ことを特徴とする情報処理装置。
【請求項２】
前記第１の情報処理手段は、前記分散処理制御手段による制御に基づいて、前記第１の情報処理手段および前記第２の情報処理手段が動作可能な最大動作クロック数に対する、現在動作可能なクロック数の比を設定する、クロック数比設定手段を更に備える
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記クロック数比設定手段は、前記第１の情報処理手段および前記第２の情報処理手段が動作可能な最大動作クロック数に対する、現在動作可能なクロック数の比が共通になるようにクロック数の比を設定する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記クロック数比設定手段は、前記第１の情報処理手段および前記第２の情報処理手段が動作可能な最大動作クロック数に対する、現在動作可能なクロック数を、前記第１の情報処理手段および複数の前記第２の情報処理手段のそれぞれで独立して設定する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項５】
前記分散処理制御手段は、動作可能な最大動作クロック数の設定に対して、全処理能力に対する使用中の処理能力の割合が低い前記第２の情報処理手段に対して、優先的に、前記処理単位に対応する前記分散処理が割り当てられるように制御する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項６】
第１の情報処理手段と、
複数の第２の情報処理手段と
を備える情報処理装置の情報処理方法であって、
前記第１の情報処理手段によるアプリケーションプログラムの実行によって、複数の前記第２の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、前記処理単位に対応する前記機能を提供するための分散処理の開始を要求する分散処理開始要求ステップと、
前記第１の情報処理手段および前記第２の情報処理手段の動作に関する動作情報を基に、前記第１の情報処理手段および前記第２の情報処理手段において、全処理能力に対する使用中の処理能力の比率が１以上にならないように、前記処理単位に対応する前記分散処理の割り当てを制御する割り当て制御ステップと
を含むことを特徴とする情報処理方法。
【請求項７】
第１の情報処理手段と、
複数の第２の情報処理手段と
を用いた分散処理を制御するコンピュータが実行可能なプログラムであって、
前記第１の情報処理手段によるアプリケーションプログラムの実行によって、複数の前記第２の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、前記処理単位に対応する前記機能を提供するための分散処理の開始を要求する分散処理開始要求ステップと、
前記第１の情報処理手段および前記第２の情報処理手段の動作に関する動作情報を基に、前記第１の情報処理手段および前記第２の情報処理手段において、全処理能力に対する使用中の処理能力の比率が１以上にならないように、前記処理単位に対応する前記分散処理の割り当てを制御する割り当て制御ステップと
を含むことを特徴とする処理をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および情報処理方法、並びに、プログラムに関し、特に、複数のプロセッサによる分散処理が実行される場合に用いて好適な、情報処理装置および情報処理方法、並びに、プログラムに関する。
【背景技術】
【０００２】
近年、複数のプロセッサまたはコンピュータを用いて、処理を分散して実行させる、分散処理が注目されている。分散処理を行う方法としては、通信網を介して接続されている複数のコンピュータに処理を実行させる方法、１つのコンピュータに設けられた、複数のプロセッサに処理を実行させる方法、および上述した２つの方法を組み合わせて処理を実行させる方法がある。
【０００３】
分散処理の実行を要求（指示）する装置、または、プロセッサは、分散処理を実行するために必要なデータおよびプログラムを、分散処理を実行させる他の装置、または、他のプロセッサあてに送信する。分散処理を実行するために必要なデータおよびプログラムを受信した装置、または、プロセッサは、要求された処理を実行し、要求された処理を施したデータを、分散処理の要求元である装置、または、プロセッサあてに送信する。
【０００４】
分散処理の要求元である装置、または、プロセッサは、分散処理を実行させる他の装置、または、他のプロセッサから送信されてきたデータを受信し、受信したデータを基に、所定の処理を行うか、受信したデータを記録する。
【０００５】
従来、上述したように、均一なモジュラー構造、共通のコンピューティング・モジュール、および均一なソフトウェアセルを用いて分散処理を実行させることによって、高速処理用コンピュータ・アーキテクチャを実現する技術がある（例えば、特許文献１乃至特許文献５）
【０００６】
また、近年、情報処理装置のクロック速度の向上と集積度の向上により、非常に高速なプロセッサを同じチップ上に複数集積することが可能になったため、複数のプロセッサによる分散処理は、大型の装置を用いることなく、実現可能なようになっている。
【０００７】
【特許文献１】特開２００２−３４２１６５号公報
【特許文献２】特開２００２−３５１８５０号公報
【特許文献３】特開２００２−３５８２８９号公報
【特許文献４】特開２００２−３６６５３３号公報
【特許文献５】特開２００２−３６６５３４号公報
【０００８】
上述した特許文献において、基本となる処理用モジュールはプロセッサ・エレメント（ＰＥ）である。ＰＥは、処理ユニット（ＰＵ）、ダイレクト・メモリ・アクセス・コントローラ（DMAC）および複数の付加処理ユニット（ＡＰＵ）、すなわち、メインプロセッサに対する複数のサブプロセッサを具備するようになされている。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
近年、情報処理装置のクロック速度の向上と集積度の向上により、処理に必要な消費電力も、従来と比較して格段に高くなってきているが、従来の分散処理システムにおいては、要求される処理を実行させ、かつ、プロセッサ（またはプロセッサ群）の消費電力を抑制するために、分散される処理の割り当て先となるプロセッサの選択方法が考慮されることはなかった。
【００１０】
本発明はこのような状況に鑑みてなされたものであり、要求される処理を実行させることができ、かつ、プロセッサ（またはプロセッサ群）の消費電力を抑制することができるように、分散される処理の割り当て先を適切に選択し、論理スレッドとして動作している機能を正常な状態に保ち、信頼性の高い情報処理を実行させるようにすることができるようにするものである。
【課題を解決するための手段】
【００１１】
本発明の情報処理装置は、第１の情報処理手段と、複数の第２の情報処理手段とを備え、第１の情報処理手段は、アプリケーションプログラムの実行を制御するアプリケーションプログラム実行制御手段と、第２の情報処理手段の動作に関する動作情報を取得する動作情報取得手段と、アプリケーションプログラム実行制御手段の処理により実行が制御されるアプリケーションプログラムによって、第１の情報処理手段および複数の第２の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、動作情報取得により取得された動作情報に基づいて、手段処理単位に対応する機能を提供するための分散処理を制御する分散処理制御手段とを備え、分散処理制御手段は、第１の情報処理手段および第２の情報処理手段において、全処理能力に対する使用中の処理能力の比率が１以上にならないように、処理単位に対応する分散処理を制御することを特徴とする。
【００１２】
第１の情報処理手段には、分散処理制御手段による制御に基づいて、第１の情報処理手段および第２の情報処理手段が動作可能な最大動作クロック数に対する、現在動作可能なクロック数の比を設定するクロック数比設定手段を更に備えさせるようにすることができる。
【００１３】
クロック数比設定手段には、第１の情報処理手段および第２の情報処理手段が動作可能な最大動作クロック数に対する、現在動作可能なクロック数の比が共通になるようにクロック数の比を設定させるようにすることができる。
【００１４】
クロック数比設定手段には、第１の情報処理手段および第２の情報処理手段が動作可能な最大動作クロック数に対する、現在動作可能なクロック数を、第１の情報処理手段および複数の第２の情報処理手段のそれぞれで独立して設定させるようにすることができる。
【００１５】
分散処理制御手段には、動作可能な最大動作クロック数の設定に対して、全処理能力に対する使用中の処理能力の割合が低い第２の情報処理手段に対して、優先的に、処理単位に対応する分散処理が割り当てられるように制御させるようにすることができる。
【００１６】
本発明の情報処理方法は、第１の情報処理手段と、複数の第２の情報処理手段とを備える情報処理装置の情報処理方法であって、第１の情報処理手段によるアプリケーションプログラムの実行によって、複数の第２の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、処理単位に対応する機能を提供するための分散処理の開始を要求する分散処理開始要求ステップと、第１の情報処理手段および第２の情報処理手段の動作に関する動作情報を基に、第１の情報処理手段および第２の情報処理手段において、全処理能力に対する使用中の処理能力の比率が１以上にならないように、処理単位に対応する分散処理の割り当てを制御する割り当て制御ステップとを含むことを特徴とする。
【００１７】
本発明のプログラムは、コンピュータに、第１の情報処理手段と、複数の第２の情報処理手段とを用いた分散処理を実行させるためのプログラムであって、第１の情報処理手段によるアプリケーションプログラムの実行によって、複数の第２の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、処理単位に対応する機能を提供するための分散処理の開始を要求する分散処理開始要求ステップと、第１の情報処理手段および第２の情報処理手段の動作に関する動作情報を基に、第１の情報処理手段および第２の情報処理手段において、全処理能力に対する使用中の処理能力の比率が１以上にならないように、処理単位に対応する分散処理の割り当てを制御する割り当て制御ステップとを含むことを特徴とする処理をコンピュータに実行させる。
【００１８】
本発明の情報処理装置および情報処理方法、ならびに、プログラムにおいては、第１の情報処理手段によるアプリケーションプログラムの実行によって、分散処理が実行され、第１の情報処理手段および第２の情報処理手段の動作に関する動作情報を基に、第１の情報処理手段および第２の情報処理手段において、全処理能力に対する使用中の処理能力の比率が１以上にならないように、処理単位に対応する分散処理の割り当てが制御される。
【発明の効果】
【００１９】
本発明によると、分散処理を実行させることができる。特に、第１の情報処理手段および第２の情報処理手段において、全処理能力に対する使用中の処理能力の比率が１以上にならないように、処理単位に対応する分散処理の割り当てが制御されるので、論理スレッドとして動作している機能を正常な状態に保ち、信頼性の高い情報処理を実行させるようにすることができる。
【発明を実施するための最良の形態】
【００２０】
以下に本発明の実施の形態を説明するが、本明細書に記載の発明と、発明の実施の形態との対応関係を例示すると、次のようになる。この記載は、本明細書に記載されている発明をサポートする実施の形態が、本明細書に記載されていることを確認するためのものである。したがって、発明の実施の形態中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
【００２１】
更に、この記載は、本明細書に記載されている発明の全てを意味するものでもない。換言すれば、この記載は、本明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現、追加される発明の存在を否定するものではない。
【００２２】
請求項１に記載の情報処理装置は、第１の情報処理手段（例えば、図１のメインプロセッサ４２）と、  複数の第２の情報処理手段（例えば、図１のサブプロセッサ４３）とを備え、第１の情報処理手段は、アプリケーションプログラムの実行を制御するアプリケーションプログラム実行制御手段（例えば、図８のアプリケーション実行制御部１０１）と、第２の情報処理手段の動作に関する動作情報を取得する動作情報取得手段（例えば、図８の動作情報取得部１０４）と、アプリケーションプログラム実行制御手段の処理により実行が制御されるアプリケーションプログラムによって、第１の情報処理手段および複数の第２の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、動作情報取得により取得された動作情報に基づいて、手段処理単位に対応する機能を提供するための分散処理を制御する分散処理制御手段（例えば、図８の論理スレッド実行制御部１０２）とを備え、分散処理制御手段は、第１の情報処理手段および第２の情報処理手段において、全処理能力に対する使用中の処理能力の比率が１以上にならないように、処理単位に対応する分散処理を制御することを特徴とする。
【００２３】
第１の情報処理手段は、分散処理制御手段による制御に基づいて、第１の情報処理手段および第２の情報処理手段が動作可能な最大動作クロック数に対する、現在動作可能なクロック数の比（例えば、プロセッサ動作率SCPU_RATE[k]）を設定するクロック数比設定手段（例えば、図８の動作率設定部１０３）を更に備えることができる。
【００２４】
請求項６に記載の情報処理方法は、第１の情報処理手段（例えば、メインプロセッサ４２）と、複数の第２の情報処理手段（例えば、サブンプロセッサ４３）とを備える情報処理装置の情報処理方法であって、第１の情報処理手段によるアプリケーションプログラムの実行によって、複数の第２の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、処理単位に対応する機能を提供するための分散処理の開始を要求する分散処理開始要求ステップ（例えば、図１１のステップＳ１または図１５のステップＳ３１の処理）と、第１の情報処理手段および第２の情報処理手段の動作に関する動作情報を基に、第１の情報処理手段および第２の情報処理手段において、全処理能力に対する使用中の処理能力の比率が１以上にならないように、処理単位に対応する分散処理の割り当てを制御する割り当て制御ステップ（例えば、図１１のステップＳ２乃至ステップＳ１３の処理または図１６および図１７を用いて説明される処理）とを含むことを特徴とする。
【００２５】
また、請求項７に記載のプログラムにおいても、各ステップが対応する実施の形態（但し一例）は、請求項６に記載の情報処理方法と同様である。
【００２６】
以下、図を参照して、本発明の実施の形態について説明する。
【００２７】
図１は、分散処理を実行することが可能な、通信システムの一実施の形態を示す図である。この通信システムにおいては、例えば、ホームネットワーク、ＬＡＮ（Local Area Network），ＷＡＮ（Wide Area Network），または、インターネットなどの広域ネットワークなどに対応するネットワーク２を介して、情報処理装置１−１乃至情報処理装置１−ｎとが相互に接続されている。
【００２８】
情報処理装置１−１は、複数の情報処理装置による分散処理の実行を指示されると、要求された処理を実行するために必要なデータおよびプログラムを含むソフトウェアセルを生成し、生成したソフトウェアセルを、ネットワーク２を介して、情報処理装置１−２乃至情報処理装置１−ｎのうちのいずれかの装置あてに送信する。
【００２９】
情報処理装置１−２乃至情報処理装置１−ｎは、それぞれ、情報処理装置１−１から送信されてきたソフトウェアセルを受信し、受信したソフトウェアセルを基に、要求された処理を実行する。情報処理装置１−２乃至情報処理装置１−ｎは、それぞれ、要求された処理を実行してから、要求された処理の結果得られたデータを、ネットワーク２を介して情報処理装置１−１あてに送信する。以下、情報処理装置１−１乃至情報処理装置１−ｎを個々に区別する必要のないとき、単に情報処理装置１と称する。
【００３０】
情報処理装置１−１は、情報処理装置１−２乃至情報処理装置１−ｎのうちのいずれかから送信されてきたデータを受信し、受信したデータを基に、所定の処理を実行するか、受信したデータを記録する。
【００３１】
情報処理装置１−１は、少なくとも１つの情報処理コントローラ１１、メインメモリ１２、記録部１３−１、記録部１３−２、バス１４、操作入力部１５、通信部１６、表示部１７、およびドライブ１８を含むように構成される。
【００３２】
情報処理コントローラ１１は、メインメモリ１２に記録されている各種のプログラムを実行し、情報処理装置１−１全体を制御する。情報処理コントローラ１１は、ソフトウェアセルを生成し、生成したソフトウェアセルを、バス１４を介して、通信部１６に供給する。情報処理コントローラ１１は、通信部１６から供給されたデータを記録部１３−１または記録部１３−２に供給する。情報処理コントローラ１１は、操作入力部１５から入力されるユーザの指令に基づいて、指定されたデータを、メインメモリ１２、記録部１３−１または記録部１３−２から取得し、取得したデータを、バス１４を介して通信部１６に供給する。
【００３３】
また、情報処理コントローラ１１には、情報処理装置１−１を、ネットワーク２全体を通して一意的に特定できる情報処理装置ＩＤが割り当てられている。
【００３４】
情報処理コントローラ１１は、バス４１、メインプロセッサ４２、サブプロセッサ４３−１乃至サブプロセッサ４３−ｍ、DMAC（Direct Memory Access Controller）４４、キー管理テーブル記録部４５、およびＤＣ（Disk Controller）４６を備えている。
【００３５】
メインプロセッサ４２、サブプロセッサ４３−１乃至サブプロセッサ４３−ｍ、DMAC４４、キー管理テーブル記録部４５、およびＤＣ４６は、バス４１を介して、相互に接続されている。また、メインプロセッサ４２には、メインプロセッサ４２を特定するためのメインプロセッサＩＤが識別子として割り当てられる。同様に、サブプロセッサ４３−１乃至サブプロセッサ４３−ｍのそれぞれには、サブプロセッサ４３−１乃至サブプロセッサ４３−ｍのそれぞれを特定するためのサブプロセッサＩＤのそれぞれが識別子として割り当てられる。
【００３６】
メインプロセッサ４２は、ネットワーク２を介して接続されている、情報処理装置１−２乃至情報処理装置１−ｎに分散処理を実行させる場合、ソフトウェアセルを生成し、生成したソフトウェアセルをバス４１およびバス１４を介して、通信部１６に供給する。また、メインプロセッサ４２は、管理のためのプログラム以外のプログラムを実行するように構成することもできる。この場合、メインプロセッサ４２は、サブプロセッサとして機能する。
【００３７】
メインプロセッサ４２は、サブプロセッサ４３−１乃至サブプロセッサ４３−ｍに対して、それぞれのサブプロセッサに独立したプログラムを実行させ、論理的に１つの機能（論理スレッド）として結果を求めるようにすることができる。すなわち、メインプロセッサ４２は、サブプロセッサ４３−１乃至サブプロセッサ４３−ｍによるプログラムの実行のスケジュール管理および情報処理コントローラ１１（情報処理装置１−１）の全体の管理を行う。
【００３８】
メインプロセッサ４２は、ローカルストレージ５１−１を備え、メインメモリ１２からロードしたデータおよびプログラムを、ローカルストレージ５１−１に一時的に記憶させる。メインプロセッサ４２は、ローカルストレージ５１−１からデータおよびプログラムを読み込み、読み込んだデータおよびプログラムを基に、各種の処理を実行する。
【００３９】
サブプロセッサ４３−１乃至サブプロセッサ４３−ｍは、メインプロセッサ４２の制御に基づいて、並列的かつ独立に、プログラムを実行し、データを処理する。更に、必要に応じて、メインプロセッサ４２が実行するプログラムが、サブプロセッサ４３−１乃至サブプロセッサ４３−ｍのそれぞれが実行するプログラムのそれぞれと連携して動作するように構成することも可能である。
【００４０】
サブプロセッサ４３−１乃至サブプロセッサ４３−ｍのそれぞれは、ローカルストレージ５１−２乃至ローカルストレージ５１−（ｍ＋１）のそれぞれを備える。サブプロセッサ４３−１乃至サブプロセッサ４３−ｍのそれぞれは、ローカルストレージ５１−２乃至ローカルストレージ５１−（ｍ＋１）のそれぞれに、必要に応じて、データおよびプログラムを一時的に記憶させる。サブプロセッサ４３−１乃至サブプロセッサ４３−ｍのそれぞれは、ローカルストレージ５１−２乃至ローカルストレージ５１−（ｍ＋１）のそれぞれからデータおよびプログラムを読み込み、読み込んだデータおよびプログラムを基に、各種の処理を実行する。
【００４１】
以下、サブプロセッサ４３−１乃至サブプロセッサ４３−ｍのそれぞれを個々に区別する必要のないとき、単にサブプロセッサ４３と称する。同様に、以下、ローカルストレージ５１−１乃至ローカルストレージ５１−（ｍ＋１）のそれぞれを個々に区別する必要のないとき、単にローカルストレージ５１と称する。
【００４２】
DMAC４４は、キー管理テーブル記録部４５に記録されている、メインプロセッサキー、サブプロセッサキー、およびアクセスキーを基に、メインプロセッサ４２およびサブプロセッサ４３からのメインメモリ１２に記憶されているプログラムおよびデータへのアクセスを管理する。
【００４３】
キー管理テーブル記録部４５は、メインプロセッサキー、サブプロセッサキー、およびアクセスキーを記録している。なお、メインプロセッサキー、サブプロセッサキー、およびアクセスキーの詳細は後述する。
【００４４】
ＤＣ４６は、メインプロセッサ４２およびサブプロセッサ４３からの記録部１３−１および記録部１３−２へのアクセスを管理する。
【００４５】
なお、ここでは、情報処理装置１-１に、情報処理コントローラ１１が１つだけ備えられているものとして説明したが、情報処理コントローラ１１は、情報処理装置１-１に複数個備えられているようにしてもよい。
【００４６】
メインメモリ１２は、例えば、RAMから構成される。メインメモリ１２は、メインプロセッサ４２およびサブプロセッサ４３が実行する各種のプログラムおよびデータを一時的に記憶している。
【００４７】
記録部１３−１および記録部１３−２は、それぞれ、例えば、ハードディスクなどにより構成される。記録部１３−１および記録部１３−２は、メインプロセッサ４２およびサブプロセッサ４３が実行する各種のプログラムおよびデータを記録している。また、記録部１３−１および記録部１３−２は、情報処理コントローラ１１から供給されたデータを記録する。以下、記録部１３−１および記録部１３−２を個々に区別する必要のないとき、単に記録部１３と称する。
【００４８】
また、情報処理コントローラ１１には、バス１４を介して、操作入力部１５、通信部１６、表示部１７、およびドライブ１８が接続されている。操作入力部１５は、例えば、キー、ボタン、タッチパッド、マウスなどよりなり、ユーザによる操作入力を受け、操作入力に対応する情報を、バス１４を介して、情報処理コントローラ１１に供給する。
【００４９】
通信部１６は、情報処理コントローラ１１から供給されたソフトウェアセルを、ネットワーク２を介して情報処理装置１−２乃至情報処理装置１−ｎあてに送信する。また、通信部１６は、情報処理装置１−２乃至情報処理装置１−ｎから送信されてきたデータを、バス１４を介して、情報処理コントローラ１１に供給する。
【００５０】
表示部１７は、例えば、ＣＲＴ（cathode ray tube）やＬＣＤ（Liquid Crystal Display）などで構成されており、バス１４を介して供給された情報処理コントローラ１１の処理により生成された情報（例えば、アプリケーションプログラムの実行により生成されたデータや、アプリケーションプログラムの実行に必要なユーザへの通知などの情報を含む）を表示させる。
【００５１】
ドライブ１８は、磁気ディスク６１、光ディスク６２、光磁気ディスク６３、あるいは半導体メモリ６４などが装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて、バス１４を介して、情報処理コントローラ１１に転送され、情報処理コントローラ１１によって、記録部１３に記録される。
【００５２】
また、情報処理装置１には、情報処理装置１の全体に電源供給を行うために、電源部１９が設けられている。
【００５３】
なお、情報処理装置１−２乃至情報処理装置１−ｎは、情報処理装置１−１と同様に構成されるので、その説明は省略する。情報処理装置１−２乃至情報処理装置１−ｎは上述した構成に限らず、必要に応じて、機能を追加したり削除したりすることは可能であり、その機能に対応した構成をもつことが可能である。
【００５４】
次に、図２乃至図４を参照して、サブプロセッサ４３がメインメモリ１２にアクセスする場合の処理について説明する。
【００５５】
図２で示されるように、メインメモリ１２には、複数のアドレスを指定できるメモリロケーションが配置される。各メモリロケーションに対しては、データの状態を示す情報を格納するための追加セグメントが割り振られる。追加セグメントは、Ｆ／Ｅビット、サブプロセッサＩＤおよびＬＳアドレス（ローカルストレージアドレス）を含む。また、各メモリロケーションには、後述するアクセスキーが割り振られる。
【００５６】
“０”であるＦ／Ｅビットは、サブプロセッサ４３によって読み出されている処理中のデータ、または空き状態であるため最新データではない無効データであり、そのメモリロケーションから読み出し不可であることを示す。また、“０”であるＦ／Ｅビットは、そのメモリロケーションにデータ書き込み可能であることを示し、データが書き込まれると、Ｆ／Ｅビットは“１”に設定される。
【００５７】
“１”であるＦ／Ｅビットは、そのメモリロケーションのデータがサブプロセッサ４３によって読み出されておらず、未処理の最新データであることを示す。Ｆ／Ｅビットが“１”であるメモリロケーションのデータは読み出し可能であり、サブプロセッサ４３によって読み出されてから、Ｆ／Ｅビットは“０”に設定される。また、“１”であるＦ／Ｅビットは、メモリロケーションがデータ書き込み不可であることを示す。
【００５８】
更に、Ｆ／Ｅビットが“０”（読み出し不可／書き込み可）である状態において、メモリロケーションについて読み出し予約を設定することが可能である。Ｆ／Ｅビットが“０”であるメモリロケーションに対して読み出し予約を行う場合には、サブプロセッサ４３は、読み出し予約を行うメモリロケーションの追加セグメントに、読み出し予約情報としてサブプロセッサ４３のサブプロセッサＩＤおよびＬＳアドレスを書き込む。そして、データを書き込むサブプロセッサ４３によって、読み出し予約されたメモリロケーションにデータが書き込まれ、Ｆ／Ｅビットが“１”（読み出し可／書き込み不可）に設定されたとき、予め読み出し予約情報として追加セグメントに書き込まれているサブプロセッサＩＤおよびＬＳアドレスによって特定されるローカルストレージ５１に読み出される。
【００５９】
複数のサブプロセッサ４３によってデータを多段階に処理する必要がある場合、このように各メモリロケーションのデータの読み出しおよび書き込みを制御することによって、前段階の処理を行うサブプロセッサ４３が、処理済みのデータをメインメモリ１２における所定のアドレスに書き込んだ後に即座に、後段階の処理を行う別のサブプロセッサ４３が前処理後のデータを読み出すことが可能となる。
【００６０】
また、図３で示されるように、サブプロセッサ４３のローカルストレージ５１は、複数のアドレスを指定できるメモリロケーションによって構成される。各メモリロケーションに対しては、同様に追加セグメントが割り振られる。追加セグメントは、ビジービットを含む。
【００６１】
サブプロセッサ４３がメインメモリ１２に記憶されているデータをサブプロセッサ４３のローカルストレージ５１のメモリロケーションに読み出すときには、対応するビジービットを“１”に設定して予約する。ビジービットが“１”であるメモリロケーションには、他のデータを格納することができない。ローカルストレージ５１のメモリロケーションにデータが読み出されると、ビジービットは“０”に設定され、他のデータを格納することができるようになる。
【００６２】
更に、図２で示すように、情報処理コントローラ１１に接続されているメインメモリ１２には、複数のサンドボックスが含まれる。サンドボックスは、メインメモリ１２内の領域を画定するものであり、各サンドボックスは、各サブプロセッサ４３に割り当てられ、割り当てられたサブプロセッサ４３が排他的に使用することができる。すなわち、サブプロセッサ４３は、割り当てられたサンドボックスを使用できるが、この領域を超えてデータにアクセスすることはできない。
【００６３】
メインメモリ１２は、複数のメモリロケーションから構成されるが、サンドボックスは、これらのメモリロケーションの集合である。
【００６４】
更に、メインメモリ１２の排他的な制御を実現するために、図４で示されるキー管理テーブルが用いられる。キー管理テーブルは、キー管理テーブル記録部４５に記録され、DMAC４４と関連付けられる。キー管理テーブル内の各エントリには、サブプロセッサＩＤ、サブプロセッサキーおよびキーマスクが含まれる。
【００６５】
サブプロセッサ４３がメインメモリ１２にアクセスする場合、サブプロセッサ４３はDMAC４４に、読み出しまたは書き込みのコマンドを出力する。このコマンドには、サブプロセッサ４３を特定するサブプロセッサＩＤおよびアクセス要求先であるメインメモリ１２のアドレスが含まれる。
【００６６】
DMAC４４は、サブプロセッサ４３から供給されたコマンドを実行する場合、キー管理テーブルを参照して、アクセス要求元のサブプロセッサ４３のサブプロセッサキーを調べる。そして、DMAC４４は、調べたアクセス要求元のサブプロセッサキーと、アクセス要求先であるメインメモリ１２のメモリロケーションに割り振られたアクセスキーとを比較して、２つのキーが一致した場合にのみ、サブプロセッサ４３から供給されたコマンドを実行する。
【００６７】
図４に示されるキー管理テーブルに記録されているキーマスクは、その任意のビットが“１”になることによって、そのキーマスクと関連付けられたサブプロセッサキーの対応するビットを“０”または“１”にすることができる。
【００６８】
例えば、サブプロセッサキーが“１０１０”であるとする。通常、このサブプロセッサキーによって“１０１０”のアクセスキーを持つサンドボックスへのアクセスだけが可能になる。しかし、このサブプロセッサキーと関連付けられたキーマスクが“０００１”に設定されている場合には、キーマスクのビットが“１”に設定された桁のみにつき、サブプロセッサキーとアクセスキーとの一致判定がマスクされ（キーマスクのビットが“１”に設定された桁について、判定されず）、このサブプロセッサキー“１０１０”によってアクセスキーが“１０１０”または“１０１１”のいずれかであるアクセスキーを持つサンドボックスへのアクセスが可能となる。
【００６９】
以上のようにして、メインメモリ１２のサンドボックスの排他性が実現される。すなわち、複数のサブプロセッサ４３によってデータを多段階に処理する必要がある場合、以上のように構成することによって、前段階の処理を行うサブプロセッサ４３と、後段階の処理を行うサブプロセッサ４３のみが、メインメモリ１２の所定のアドレスにアクセスできるようになり、データを保護することができる。
【００７０】
例えば、キーマスクの値は、以下のように変更されることが考えられる。まず、情報処理装置１−１の起動直後においては、キーマスクの値は全て“０”である。メインプロセッサ４２にロードされたプログラムが実行され、サブプロセッサ４３にロードされたプログラムと連携動作するものとする。サブプロセッサ４３−１により出力された処理結果データを、メインメモリ１２に記憶させ、メインメモリ１２に記憶させた処理結果データを、サブプロセッサ４３−２に入力したいときには、サブプロセッサ４３−１により出力された処理結果データを記憶しているメインメモリ１２の領域は、サブプロセッサ４３−１およびサブプロセッサ４３−２からアクセス可能である必要がある。そのような場合に、メインプロセッサ４２は、キーマスクの値を適切に変更し、複数のサブプロセッサ４３からアクセスできるメインメモリの領域を設けることにより、サブプロセッサ４３による多段階的の処理を可能にする。
【００７１】
より具体的には、例えば、情報処理装置１−２乃至情報処理装置１−ｎから送信されてきたデータを基に、サブプロセッサ４３−１が所定の処理実行し、処理が施されたデータをメインメモリ１２の第１の領域に記憶させる。そして、サブプロセッサ４３−２は、メインメモリ１２の第１の領域から、記憶されているデータを読み出し、読み出したデータを基に、所定の処理を実行し、処理が施されたデータをメインメモリ１２の第１の領域とは、異なる第２の領域に記憶させる。
【００７２】
ここで、サブプロセッサ４３−１のサブプロセッサキーが“０１００”であり、メインメモリ１２の第１の領域のアクセスキーが“０１００”であり、サブプロセッサ４３−２のサブプロセッサキーが“０１０１”であり、メインメモリ１２の第２の領域のアクセスキーが“０１０１”である場合、サブプロセッサ４３−２は、メインメモリ１２の第１の領域にアクセスすることができない。そこで、サブプロセッサ４３−２のキーマスクを“０００１”にすることによって、サブプロセッサ４３−２は、メインメモリ１２の第１の領域にアクセスすることができるようになる。
【００７３】
次に、図５および図６を参照して、情報処理装置１−１がソフトウェアセルを生成し、生成したソフトウェアセルを基に、情報処理装置１−２乃至情報処理装置１−ｎに分散処理を実行させる場合の処理について説明する。
【００７４】
情報処理装置１−１のメインプロセッサ４２は、処理を実行するために必要なコマンド、プログラム、およびデータを含むソフトウェアセルを生成し、ネットワーク２を介して情報処理装置１−２乃至情報処理装置１−ｎあてに送信する。
【００７５】
図５は、ソフトウェアセルの構成の例を示す図である。
【００７６】
ソフトウェアセルは、送信元ＩＤ、送信先ＩＤ、応答先ＩＤ、セルインターフェース、ＤＭＡコマンド、プログラム、およびデータを含むように構成される。
【００７７】
送信元ＩＤには、ソフトウェアセルの送信元である情報処理装置１−１のネットワークアドレスおよび情報処理装置１−１の情報処理コントローラ１１の情報処理装置ＩＤ、更に、情報処理装置１−１の情報処理コントローラ１１が備えるメインプロセッサ４２およびサブプロセッサ４３の識別子（メインプロセッサＩＤおよびサブプロセッサＩＤ）が含まれる。
【００７８】
送信先ＩＤには、ソフトウェアセルの送信先である情報処理装置１−２乃至情報処理装置１−ｎのネットワークアドレス、情報処理装置１−２乃至情報処理装置１−ｎの情報処理コントローラの情報処理装置ＩＤ、および情報処理装置１−２乃至情報処理装置１−ｎの情報処理コントローラが備えるメインプロセッサおよびサブプロセッサの識別子が含まれる。
【００７９】
また、応答先ＩＤには、ソフトウェアセルの実行結果の応答先である情報処理装置１−１のネットワークアドレス、情報処理装置１−１の情報処理コントローラ１１の情報処理装置ＩＤ、および情報処理コントローラ１１が備えるメインプロセッサ４２およびサブプロセッサ４３の識別子が含まれる。
【００８０】
セルインターフェースは、ソフトウェアセルの利用に必要な情報であり、グローバルＩＤ、必要なサブプロセッサの情報、サンドボックスサイズ、および前回のソフトウェアセルＩＤから構成される。
【００８１】
グローバルＩＤは、ネットワーク２全体を通してソフトウェアセルを一意的に識別できるものであり、送信元ＩＤ、およびソフトウェアセルの生成または送信の日時（日付および時刻）を基に、生成される。
【００８２】
必要なサブプロセッサの情報には、ソフトウェアセルの実行に必要なサブプロセッサの数などが設定される。サンドボックスサイズには、ソフトウェアセルの実行に必要なメインメモリおよびサブプロセッサのローカルストレージのメモリ量が設定される。
【００８３】
前回のソフトウェアセルＩＤは、ストリーミングデータなどのシーケンシャルな実行を要求する１つのグループを構成するソフトウェアセル内の、前回のソフトウェアセルの識別子である。
【００８４】
ソフトウェアセルの実行セクションは、ＤＭＡコマンド、プログラムおよびデータから構成される。ＤＭＡコマンドには、プログラムの起動に必要な一連のＤＭＡコマンドが含まれ、プログラムには、サブプロセッサによって実行されるサブプロセッサプログラムが含まれる。ここでのデータは、このサブプロセッサプログラムを含むプログラムによって処理されるデータである。
【００８５】
更に、ＤＭＡコマンドには、ロードコマンド、キックコマンド、機能プログラム実行コマンド、ステータス要求コマンド、およびステータス返信コマンドが含まれる。
【００８６】
ロードコマンドは、メインメモリ１２に記憶されている情報をサブプロセッサのローカルストレージにロードさせるコマンドであり、ロードコマンドのほかに、メインメモリアドレス、サブプロセッサＩＤおよびＬＳアドレスを含む。メインメモリアドレスは、情報のロード元であるメインメモリの所定の領域のアドレスを示す。サブプロセッサＩＤおよびＬＳアドレスは、情報のロード先であるサブプロセッサの識別子およびローカルストレージのアドレスを示す。
【００８７】
キックコマンドは、プログラムの実行を開始するコマンドであり、キックコマンドのほかに、サブプロセッサＩＤおよびプログラムカウンタを含む。サブプロセッサＩＤは、キック対象のサブプロセッサを識別し、プログラムカウンタは、プログラム実行用プログラムカウンタのためのアドレスを与える。
【００８８】
機能プログラム実行コマンドは、ある装置（例えば、情報処理装置１−１）が他の装置（例えば、情報処理装置１−２乃至情報処理装置１−ｎのうちのいずれか）に対して、機能プログラムの実行を要求するコマンドである。機能プログラム実行コマンドを受信した装置（例えば、情報処理装置１−２乃至情報処理装置１−ｎのうちのいずれか）の情報処理コントローラは、機能プログラムＩＤによって、起動すべき機能プログラムを識別する。
【００８９】
ステータス要求コマンドは、送信先ＩＤで示される情報処理装置１−２乃至情報処理装置１−ｎの現在の動作状態（状況）に関する装置情報を、応答先ＩＤで示される情報処理装置１−１あてに送信要求するコマンドである。
【００９０】
ステータス返信コマンドは、ステータス要求コマンドを受信した情報処理装置１−２乃至情報処理装置１−ｎが、装置情報をステータス要求コマンドに含まれる応答先ＩＤで示される情報処理装置１−１に応答するコマンドである。ステータス返信コマンドは、実行セクションのデータ領域に装置情報を格納する。
【００９１】
図６は、ＤＭＡコマンドがステータス返信コマンドである場合におけるソフトウェアセルのデータ領域の構造を示す図である。
【００９２】
情報処理装置ＩＤは、情報処理コントローラを備える情報処理装置１を識別するための識別子であり、ステータス返信コマンドを送信する情報処理装置１−２乃至情報処理装置１−ｎのＩＤを示す。情報処理装置ＩＤは、例えば、情報処理装置１−２乃至情報処理装置１−ｎのそれぞれの電源がオンされたとき、情報処理装置１−２乃至情報処理装置１−ｎの情報処理コントローラ１１に含まれるメインプロセッサ４２によって、電源がオンされたときの日時、情報処理装置１−２乃至情報処理装置１−ｎのネットワークアドレス、および、情報処理装置１−２乃至情報処理装置１−ｎの情報処理コントローラ１１に含まれるサブプロセッサ４３の数などに基づいて生成される。
【００９３】
情報処理装置種別ＩＤには、情報処理装置１−２乃至情報処理装置１−ｎの特徴を表す値が含まれる。情報処理装置１−２乃至情報処理装置１−ｎの特徴とは、情報処理装置１−２乃至情報処理装置１−ｎがどのような装置であるかを示す情報であり、例えば、情報処理装置１−２乃至情報処理装置１−ｎが、ハードディスクレコーダ、PDA（Personal Digital Assistants）、ポータブルＣＤ（Compact Disc）プレーヤなどであることを示す情報である。また、情報処理装置種別ＩＤは、映像音声記録、映像音声再生など、情報処理装置１−２乃至情報処理装置１−ｎが有する機能を表すものであってもよい。情報処理装置１−２乃至情報処理装置１−ｎの特徴や機能を表す値は予め決定されているものとし、ステータス返信コマンドを受信した情報処理装置１−１は、情報処理装置種別ＩＤを読み出すことにより、情報処理装置１−２乃至情報処理装置１−ｎの特徴や機能を把握することが可能である。
【００９４】
ＭＳ（マスタ／スレーブ）ステータスは、情報処理装置１−２乃至情報処理装置１−ｎがマスタ装置またはスレーブ装置のいずれで動作しているかを表すもので、これが０に設定されている場合にはマスタ装置として動作していることを示し、１に設定されている場合にはスレーブ装置として動作していることを示す。
【００９５】
メインプロセッサ動作周波数は、情報処理コントローラ１１のメインプロセッサ４２の動作周波数を表す。メインプロセッサ使用率は、メインプロセッサ４２で現在動作している全てのプログラムについての、メインプロセッサ４２での使用率を表す。メインプロセッサ使用率は、メインプロセッサ４２の全処理能力に対する使用中の処理能力の比率を表した値で、例えば、プロセッサ処理能力評価のための単位であるMIPSを単位として算出され、または単位時間あたりのプロセッサ使用時間に基づいて算出される。
【００９６】
サブプロセッサ数は、情報処理コントローラ１１が備えるサブプロセッサ４３の数を表す。サブプロセッサＩＤは、情報処理コントローラ１１のサブプロセッサ４３を識別するための識別子である。
【００９７】
サブプロセッサステータスは、サブプロセッサ４３の状態を表すものであり、“unused”、“reserved”、および“busy”などの状態がある。“unused”は、サブプロセッサ４３が現在使用されてなく、使用の予約もされていないことを示す。“reserved”は、現在は使用されていないが、予約されている状態を示す。“busy”は、現在使用中であることを示す。
【００９８】
サブプロセッサ使用率は、サブプロセッサ４３で現在実行している、またはサブプロセッサ４３に実行が予約されているプログラムについての、サブプロセッサ４３での使用率を表す。すなわち、サブプロセッサ使用率は、サブプロセッサステータスが“busy”である場合には、現在の使用率を示し、サブプロセッサステータスが“reserved”である場合には、後に使用される予定の推定使用率を示す。
【００９９】
サブプロセッサＩＤ、サブプロセッサステータスおよびサブプロセッサ使用率は、１つのサブプロセッサ４３に対して一組設定され、１つの情報処理コントローラ１１のサブプロセッサ４３に対応する組数が設定される。
【０１００】
メインメモリ総容量およびメインメモリ使用量は、それぞれ、情報処理コントローラ１１に接続されているメインメモリ１２の総容量および現在使用中の容量を表す。
【０１０１】
記録部数は、情報処理コントローラ１１に接続されている記録部１３の数を表す。記録部ＩＤは、情報処理コントローラ１１に接続されている記録部１３を一意的に識別する情報である。記録部種別ＩＤは、記録部１３の種類（例えば、ハードディスク、ＣＤ±ＲＷ、DVD±ＲＷ、メモリディスク、SRAM、ROMなど）を表す情報である。
【０１０２】
記録部総容量および記録部使用量は、それぞれ、記録部ＩＤによって識別される記録部１３の総容量および現在使用中の容量を表す。
【０１０３】
記録部ＩＤ、記録部種別ＩＤ、記録部総容量および記録部使用量は、１つの記録部１３に対して一組設定されるものであり、情報処理コントローラ１１に接続されている記録部１３の数の組数だけ設定される。すなわち、１つの情報処理コントローラ１１に複数の記録部１３が接続されている場合、それぞれの記録部１３には異なる記録部ＩＤが割り当てられ、記録部種別ＩＤ、記録部総容量および記録部使用量も個別に管理される。
【０１０４】
このようにして、情報処理装置１−１は、情報処理装置１−２乃至情報処理装置１−ｎに分散処理を実行させる場合、ソフトウェアセルを生成し、生成したソフトウェアセルを、ネットワーク２を介して情報処理装置１−２乃至情報処理装置１−ｎあてに送信する。
【０１０５】
なお、以下、情報処理装置１−１から情報処理装置１−２乃至情報処理装置１−ｎあてに送信される各種データは、ソフトウェアセルに格納されて送信されるものとし、繰り返しになるので、その説明は省略する。
【０１０６】
情報処理装置−２乃至情報処理装置１−ｎのうちのいずれかの情報処理コントローラ１１に含まれるメインプロセッサ４２は、以上のような構成のソフトウェアセルを生成し、ネットワーク２を介して他の情報処理装置１の情報処理コントローラ１１に、生成されたソフトウェエアセルを送信する。送信元の情報処理装置１、送信先の情報処理装置１、応答先の情報処理装置１、および、それぞれに設けられている情報処理コントローラ１１は、それぞれ、上述した送信元ＩＤ、送信先ＩＤおよび応答先ＩＤによって識別される。
【０１０７】
ソフトウェアセルを受信した情報処理装置１の情報処理コントローラ１１に含まれるメインプロセッサ４２は、そのソフトウェアセルをメインメモリ１２に格納する。更に、送信先のメインプロセッサ４２は、ソフトウェアセルを読み出し、それに含まれるＤＭＡコマンドを処理する。
【０１０８】
具体的に、送信先のメインプロセッサ４２は、まず、ロードコマンドを実行する。これによって、メインメモリ１２の、ロードコマンドで指示されたアドレスから、ロードコマンドに含まれるサブプロセッサＩＤおよびＬＳアドレスで特定されるサブプロセッサ４３のローカルストレージ５１の所定領域に、情報がロードされる。ここでロードされる情報は、受信したソフトウェアセルに含まれるサブプロセッサプログラムやプログラムの実行に必要なデータ、または、その他の指示されたデータである。
【０１０９】
次に、メインプロセッサ４２は、キックコマンドを、これに含まれるサブプロセッサＩＤで指示されたサブプロセッサ４３に、同様にキックコマンドに含まれるプログラムカウンタとともに出力する。
【０１１０】
指示されたサブプロセッサは、そのキックコマンドおよびプログラムカウンタに従って、サブプロセッサプログラムを実行する。そして、実行結果をメインメモリ１２に格納した後、実行を完了したことをメインプロセッサ４２に通知する。
【０１１１】
なお、送信先の情報処理装置１の情報処理コントローラ１１において、ソフトウェアセルを実行するプロセッサは、サブプロセッサ４３に限定されなくてもよく、メインプロセッサ４２を、ソフトウェアセルに含まれる機能プログラムなどを実行するプロセッサとして指定することも可能である。
【０１１２】
この場合には、送信元の情報処理装置１は、送信先の情報処理装置１宛に、サブプロセッサプログラムの代わりに、メインメモリ用プログラムおよびそのメインメモリ用プログラムによって処理されるデータを含み、かつ、ＤＭＡコマンドがロードコマンドであるソフトウェアセルを送信し、メインメモリ１２にメインメモリ用プログラムおよびそれによって処理されるデータを記憶させる。次に、送信元の情報処理装置１は、送信先の情報処理装置１宛に、送信先の情報処理装置１の情報処理コントローラ１１についてのメインプロセッサＩＤ、メインメモリアドレス、メインメモリ用プログラムを識別するための機能プログラムＩＤなどの識別子、およびプログラムカウンタを含み、かつ、ＤＭＡコマンドがキックコマンドまたは機能プログラム実行コマンドであるソフトウェアセルを送信して、メインプロセッサ４２にメインメモリ用プログラムを実行させるようにすることができる。
【０１１３】
以上のように、本発明を適用したネットワークシステムでは、ソフトウェアセルの送信元の情報処理装置１は、サブプロセッサプログラムまたはメインメモリ用プログラムをソフトウェアセルによって送信先の情報処理装置１に送信するとともに、サブプロセッサプログラムを、送信先の情報処理装置１の情報処理コントローラ１１に設けられているサブプロセッサ４３にロードさせることにより、サブプロセッサプログラムまたはメインメモリ用プログラムを、送信先の情報処理装置１に実行させることができる。
【０１１４】
ソフトウェアセルの送信先の情報処理装置１の情報処理コントローラ１１では、受信したソフトウェアセルに含まれるプログラムがサブプロセッサプログラムである場合、このサブプロセッサプログラムを指定されたサブプロセッサ４３にロードさせる。そして、指定されたサブプロセッサ４３に、ソフトウェアセルに含まれるサブプロセッサプログラムまたはメインメモリ用プログラムを実行させる。
【０１１５】
したがって、ユーザは、ソフトウェアセルの送信先の情報処理装置１を操作することなく、自動的に、サブプロセッサプログラムまたはメインメモリ用プログラムが、ソフトウェアセルの送信元の情報処理装置１から、送信先の情報処理装置１に割り当てられ、ソフトウェアセルの送信先の情報処理装置１の情報処理コントローラ１１により、実行させることができる。また、それぞれのサブプロセッサ４３間では、ＤＭＡ方式によりデータ転送が行われ、上述したサンドボックスを使用することによって、１つの情報処理コントローラ１１において、データを多段階に処理する必要がある場合においても、高速かつ高セキュリティに処理を実行することができる。
【０１１６】
図７に、情報処理コントローラ１１のメインメモリ１２が記憶するソフトウェアの構成を表すソフトウェアスタックを示す。これらのソフトウェア（プログラム）は、情報処理装置１に電源が投入される前においては、情報処理コントローラ１１に接続される記録部１３に記録されているものである。
【０１１７】
ドライバソフト８１-１乃至８１-ｐは、ハードウェアを動作させるための専用ソフトウェアである。ドライバソフト８１-１乃至８１-ｐには、例えば、操作入力部１５に接続されているマウスを動作させるためのマウスドライバ、表示部１７に画像を表示させるためのビデオカードを動作させるためのディスプレイドライバ、通信部１６を介して接続されている図示しないプリンタを動作させるためのプリンタドライバなどがある。
【０１１８】
カーネル（ＯＳ）８２は、情報処理コントローラ１１の基本的な動作を制御しているものであり、各種資源を管理し、例えば、アプリケーションプログラム８７が発生した命令を、ドライバソフト８１-１乃至８１-ｐに伝える。また、カーネル８２は、アプリケーションプログラム８７の実行コンテキスト（あるアプリケーションプログラム８７が利用しているレジスタセットやメインメモリイメージ、ファイルハンドルなど）やＧＵＩの部品などのソフトウェア資源の管理も行なうようになされている。
【０１１９】
デバイスドライバ８３は、情報処理コントローラ１１または情報処理装置１へのデータの入出力（送受信）機能を実行するためのドライバであり、例えば、放送受信、モニタ出力、ビットストリーム入出力、ネットワーク入出力など、情報処理コントローラ１１ごとに、情報処理装置１が有する機能に応じたものが備えられるようになされている。
【０１２０】
ライブラリ８４は、ＤＬＬ（Dynamic Link Library）とも称され、いくつかの関数を書庫のようにまとめ、ソフトウェアの実行に必要な機能を独立したファイルとして共通化したものであり、通常はファイルそのものをＤＬＬと称する。サブルーチンはプログラム内部のものだが、ライブラリ８４はプログラムとは別に実行時にロードされるものとして区別される。ライブラリ８４として提供されている機能は新たに開発せずにすむので、アプリケーションプログラム８７の開発効率が高まり、更に、同じプログラム部品を複数のアプリケーションプログラム８７で共有することができるので、ディスクやメモリの容量を節約することができる。
【０１２１】
パワーマネージャ８５は、デバイスドライバ８３により管理されているメインプロセッサ４２およびサブプロセッサ４３のそれぞれの動作状況と、実行を要求されたアプリケーションプログラム８７の実行に必要な条件を判断して、それぞれのプロセッサの消費電力を管理し、分散処理の割り当てを決定したり、分散処理の割り当てが可能でなかったときには、要求された処理の実行のキャンセルを、システムサービス／フレームワーク８６に通知する。すなわち、パワーマネージャ８５は、情報処理コントローラ１１のメインプロセッサ４２およびサブプロセッサ４３が実行する分散処理を制御するものであり、メインプロセッサ４２およびサブプロセッサ４３のそれぞれの動作状況を管理し、アプリケーションプログラム８７により要求される論理スレッドを実行するための分散処理の割り当てを決定して、プログラムおよびデータを、対応するメインプロセッサ４２およびサブプロセッサ４３のそれぞれ対応するものにロードさせて実行させる。
【０１２２】
具体的には、パワーマネージャ８５は、アプリケーションプログラム８７により要求される処理が実行可能で、かつ、情報処理コントローラ１１の消費電力を下げることができるように、メインプロセッサ４２およびサブプロセッサ４３の動作クロック数を最適な値に制御する。ここで、それぞれのプロセッサの最大動作クロック数に対して、現在設定されているクロック数の比を、プロセッサ動作率と定義する。プロセッサ動作率は、それぞれのメインプロセッサ４２およびサブプロセッサ４３において、独立して制御することも、同一であるものとして制御することも可能である。すなわち、メインプロセッサ４２およびサブプロセッサ４３は、潜在的には、最大動作クロック数で動作することが可能であるが、実質的にはパワーマネージャ８５により設定されたプロセッサ動作率に基づく上限動作クロック数で動作するようになされている。
【０１２３】
すなわち、プロセッサ動作率SCPU_RATE[k]（ｋは、パワーマネージャ８５により制御されるプロセッサを区別可能なように割り当てられた番号）は、上限動作クロック数／最大動作クロック数SCPU_CK[k]で表され、プロセッサ動作率が、それぞれのメインプロセッサ４２およびサブプロセッサ４３において、同一であるものとして制御されている場合、プロセッサ動作率SCPU_RATE[k]＝SYSTEM_RATEである。
【０１２４】
また、プロセッサ使用率SCPU_STAT[k]は、各プロセッサにおいて、規定時間内にアプリケーションプログラムの実行に使用するサイクル数（但し１サイクルの周期は、CPU最大動作クロック数の逆数とする）／規定時間／最大動作クロック数SCPU_CK[k]で表される。
【０１２５】
例えば、メインプロセッサ４２およびサブプロセッサ４３が、潜在的には最大動作クロック数1.2MHzで動作可能であるものとする。この時、プロセッサ動作率として、例えば、1.0、0.5、0.25を設定することができるならば、上限動作クロック数は、1.2MHz、600Hz、300Hzとなる。具体的には、プロセッサ動作率が0.5に設定された場合、上限動作クロック数は、1.2MHz×0.5＝600Hzとなる。そして、規定時間1sec内に、アプリケーションプログラムの実行に300サイクルが使用される場合、プロセッサ使用率SCPU_STAT[k]は、300サイクル／1sec／1.2MHz＝0.25となる。
【０１２６】
すなわち、プロセッサ使用率と、プロセッサ動作率とは、常に、次の式（１）の関係が成立する。
【０１２７】
0≦プロセッサ使用率(SCPU_STAT[k])≦プロセッサ動作率(SCPU_RATE[k])≦1.0・・・（１）
【０１２８】
また、パワーマネージャ８５は、処理が割り当てられていないサブプロセッサ４３に対してサスペンド（Suspend）モードを設定し、対応するサブプロセッサには処理が割り当てられないようにすることにより、情報処理コントローラ１１の消費電力を下げることができるものとする。
【０１２９】
システムサービス／フレームワーク８６は、アプリケーションプログラム８７により実行される処理を、情報処理装置１の複数のサブプロセッサ４３にそれぞれ割り当てて分散処理を実行させたり、または、複数の情報処理装置１によって分散処理を実行させるシステムサービスを提供するソフトウェアモジュール群である。
【０１３０】
アプリケーションプログラム８７は、情報処理コントローラ１１を用いて、例えば、放送波の受信の制御、コンテンツの記録または再生、３次元グラフィックスの演算処理、電子メールの授受、ウェブページの閲覧など、それぞれの目的を実現するためのソフトウェアプログラムである。例えば、３次元グラフィックスを処理するためのアプリケーションプログラム８７が実行される場合、１画面分の処理を画素ごとに分割して、同じプログラム、同じモデルデータを基に、複数のプロセッサで並列に演算させるようにすることができる。すなわち、情報処理コントローラ１１を用いて、３次元グラフィックスを処理するためのアプリケーションプログラム８７が実行される場合、システムサービス／フレームワーク８６により、画素ごとに分割された処理が、複数のサブプロセッサ４３にそれぞれ割り当てられ、並列して演算されるようにすることができる。
【０１３１】
図８は、情報処理コントローラ１１が、それぞれのプロセッサの消費電力を管理し、分散処理の割り当てを制御する機能について説明するための機能ブロック図である。
【０１３２】
図８において、アプリケーション実行制御部１０１、論理スレッド実行制御部１０２、動作率設定部１０３、動作情報取得部１０４、および、動作情報メモリ１０５は、基本的に、情報処理装置１のメインプロセッサ４２により実現される機能である。
【０１３３】
なお、図８において、これらの機能を実現するハードウェアが、上述するとおりではない場合、例えば、メインプロセッサ４２により実現される機能のうちの一部が、異なるハードウェアにより実現される場合なども、本発明は適用可能であることは言うまでもない。
また、これらの構成は、全てが１つのチップ内にあってもよいし、個別のチップとして構成されていてもよい。
【０１３４】
アプリケーション実行制御部１０１は、所定のアプリケーションプログラムを実行するための演算処理を実行する。また、アプリケーション実行制御部１０１は、サブプロセッサ４３のうちのいずれかに分散処理を実行させる場合、論理スレッド実行制御部１０２に、論理スレッドの設定情報として、図９に示されるREQUEST_information（アプリ要求条件）を供給して、論理スレッドの生成を要求する。論理スレッドとは、複数のサブプロセッサ４３のそれぞれに必要に応じて割り当てられた複数のプログラム（それらのプログラムは、同一のアプリケーションプログラムに対応するものであっても、異なるアプリケーションプログラムに対応するものであってもかまわない）をまとめて一つの機能を提供する処理単位と定義したものである。換言すれば、複数のサブプロセッサ４３のそれぞれに必要に応じて割り当てられた複数のプログラムは、メインメモリ１２の所定の記憶領域に記憶されているプログラムであり、アプリケーション実行制御部１０１により実行が制御されているアプリケーションプログラムの要求により、メインメモリ１２から対応するサブプロセッサ４３のローカルストレージ５１にロードされて実行されるものである。
【０１３５】
図９に示される、アプリケーション実行制御部１０１から論理スレッド実行制御部１０２に供給されるREQUEST_information（アプリ要求条件）には、アプリケーションを識別するための１６バイトのＩＤ（アプリケーションＩＤ）、規定時間内に処理を終わらせる必要性の有無を示す１バイトのREQ_REAL情報、サブプロセッサの割り当てを決定する場合において優先してほしいサブプロセッサのサブプロセッサＩＤを示す１バイトのPRIORITY_ID、要求する処理に必要なサブプロセッサの数を示すREQ_NUM情報が先頭にあり、その後、処理が割り当てられるプロセッサに要求される、要求する処理によって占有されるメモリ容量を示すREQ_MEM情報、処理が割り当てられるプロセッサに要求される、要求する処理によって占有される規定時間内処理サイクル数を示すREQ_PC情報が、メインプロセッサ４２に割り当てられる処理と、REQ_NUM情報に示される、処理に必要なサブプロセッサの数と同数格納される。具体的には、REQ_MEM０およびREQ_PC０として、メインプロセッサ４２に要求されるメモリ容量とサイクル数が格納され、続いて、REQ_MEM１およびREQ_PC１、REQ_MEM２およびREQ_PC２・・・として、それぞれのサブプロセッサに要求されるメモリ容量とサイクル数が格納され格納されている。サブプロセッサに対応するREQ_MEMおよびREQ_PCのそれぞれの情報が格納される順番は、必要なサイクル数が大きい順番に配列され、サイクル数が同じ場合には必要なメモリ量が大きい順番に配列されるものとすると好適である。
【０１３６】
ここでは、REQ_REAL＝１のときリアルタイム処理が必要であることを示し、処理サイクル数とは、アプリケーションの実行に必要な処理量に対応する値である。また、アプリケーションプログラムの実行要求およびREQUEST_informationの供給は、ネットワーク２を介して、自分自身とは異なる他の情報処理装置１の情報処理コントローラ１１から供給される場合もある。
【０１３７】
図８の説明に戻る。
【０１３８】
論理スレッド実行制御部１０２は、内部に、レジスタおよびメモリを有し、アプリケーション実行制御部１０１により実行されるアプリケーションプログラムに対応する論理スレッドの生成および削除を行う。具体的には、論理スレッド実行制御部１０２は、アプリケーション実行制御部１０１から供給される、図９に示されるREQUEST_informationと、動作情報メモリ１０５に記憶されるサブプロセッサ４３のそれぞれの動作状態を基に、サブプロセッサ４３に対して、分散処理を適切に割り当てることにより、消費電力量の増加を抑制しつつ、生成した論理スレッドの状態監視と動作制御を行う。論理スレッド実行制御部１０２は、情報処理コントローラ１０１の全体の管理情報が記載されたテーブルと、実行される論理スレッドごとに、論理スレッドの実行に必要な情報が記載されたテーブルを作成し、必要に応じて、テーブルの情報を参照し、更新することにより、論理スレッドの実行を制御する。
【０１３９】
論理スレッド実行制御部１０２において管理される情報としては、上述したREQUEST_information以外に、情報処理コントローラ１１が有するサブプロセッサ４３の数を示すNUM_SCPU、例えば、１secなど、分散処理の割り当ての判別を行う場合の基準時間として用いられる規定時間を示すTIME_DEF、メモリ使用率に対する余裕分（マージン）を示すMEM_MAGINE、k番目のプロセッサでスレッド（アプリケーション）を切り替えた場合のオーバーヘッド量を示すTHREAD_OVERHEAD[k]、k番目のプロセッサのプロセッサ動作率の設定値（０乃至１の値）を示すSCPU_RATE[k]、k番目のプロセッサのプロセッサ使用率に対するプロセッサ動作率の余裕分（マージン）を示すRATE_MAGINE、および、リアルタイム処理が要求されていないアプリケーションにおいて、割り当て処理が成功しない場合に、割り当て処理ループを打ち切る回数を示すN_GIVEUPがある。
【０１４０】
ここで、k番目のプロセッサとは、０番目がメインプロセッサ４２を、１番目以降がサブプロセッサ４３のうちのいずれかを示すものとする。また、MEM_MAGINEには、例えば、10Kbytesなどの値が用いられ、RATE_MAGINEには、例えば、０．１などの値が用いられ、それぞれ、分散処理の割り当ての判別を行う場合に用いられる。また、スレッドを切り替えた場合のオーバーヘッド量とは、具体的には、現在プロセッサにおいて実行されている処理のコンテキストを、ローカルストレージ５１から退避させ、また、元の状態に戻す前に必要なサイクル数である。
【０１４１】
なお、全てのプロセッサにおいてプロセッサ動作率を共通であるものとして制御されている場合、プロセッサ動作率の設定値は、SYSTEM_RATEとあらわされる。また、次の式（２）が成り立つ。
【０１４２】
プロセッサ上限動作クロック数＝プロセッサ最大動作クロック数×プロセッサ動作率
・・・（２）
【０１４３】
動作率設定部１０３は、論理スレッド実行制御部１０２の制御に基づいて、メインプロセッサ４２およびサブプロセッサ４３のプロセッサ動作率SCPU_RATE[k]またはSYSTEM_RATEを設定するとともに、設定されたプロセッサ動作率SCPU_RATE[k]またはSYSTEM_RATEの値を、動作情報メモリ１０５に供給して登録する。
【０１４４】
動作情報取得部１０４は、サブプロセッサ４３の動作情報を取得し、動作情報メモリ１０５に供給する。
【０１４５】
動作情報メモリ１０５は、ローカルストレージ５１-１の記憶領域のうちの少なくとも一部に対応し、動作情報取得部１０４の処理により取得されたサブプロセッサ４３の動作情報、および、メインプロセッサ４２の動作情報と、動作率設定部１０３により設定された、メインプロセッサ４２およびサブプロセッサ４３のプロセッサ動作率SCPU_RATE[k]またはSYSTEM_RATEを記憶する。
【０１４６】
動作情報メモリ１０５に記録される情報には、例えば、メインプロセッサ４２およびサブプロセッサ４３が利用できるメモリの容量を示すMEM_CPU[k]（kbytes）、情報処理コントローラ１１に設けられているk番目のメインプロセッサ４２またはサブプロセッサ４３の最大動作クロック数を示すSCPU_CK[k]、k番目のメインプロセッサ４２またはサブプロセッサ４３のプロセッサ使用率を示すSCPU_STAT[k]、k番目のメインプロセッサ４２またはサブプロセッサ４３で現在動作しているアプリケーションの数を示すSCPU_APPNUM[k]、k番目のメインプロセッサ４２またはサブプロセッサ４３にプログラムを割り当てることが可能か否かを示すフラグであるSCPU_SUSPEND[k]などがある。ここで、SCPU_SUSPEND[k]＝０のとき、k番目のメインプロセッサ４２またはサブプロセッサ４３にプログラムを割り当てることが可能であることが示され、SCPU_SUSPEND[k]＝１のとき、例えば、k番目のメインプロセッサ４２またはサブプロセッサ４３にプログラムを割り当てることが禁止されていることが示される。
【０１４７】
ここで、現在のk番目のメインプロセッサ４２またはサブプロセッサ４３の動作クロック数は、SCPU_CK[k]×SCPU_RATE[k]で表される。また、プロセッサ動作率とプロセッサ使用率との関係は、次の式（３）を満たす。すなわち、全てのプロセッサにおいてプロセッサ動作率を共通であるものとして制御されている場合、プロセッサ動作率とプロセッサ使用率との関係は、次の式（４）を満たす。
【０１４８】
０≦SCPU_STAT[k]≦SCPU_RATE[k]≦１・・・（３）
【０１４９】
０≦SCPU_STAT[k]≦SYSTEM_RATE≦１・・・（４）
【０１５０】
また、k番目のメインプロセッサ４２またはサブプロセッサ４３のプロセッサ使用率を示すSCPU_STAT[k]は、新たなアプリケーションプログラムによる分散処理が行われるごとに増加する。例えば、１つめのアプリケーションの場合、SCPU_STAT[k]の増加分は、次の式（５）で表され、２つめ以降のアプリケーションの場合、SCPU_STAT[k]の増加分は、次の式（６）で表される。
【０１５１】
SCPU_STAT[k]の増加分＝（REQ_PC[k]÷TIME_DEF)÷SCPU_CK[k]・・・（５）
【０１５２】
SCPU_STAT[k]の増加分
＝（（REQ_PC[k]＋THREAD_OVERHEAD[k])÷TIME_DEF)÷SCPU_CK[k]・・・（６）
【０１５３】
次に、情報処理コントローラ１１に含まれるメインプロセッサ４２およびサブプロセッサ４３の消費電力について説明する。
【０１５４】
情報処理コントローラ１１に含まれるメインプロセッサ４２およびサブプロセッサ４３の個々の消費電力は、現在のプロセッサ動作率に比例して増加する消費電力量と、現在のプロセッサ使用率に比例して増加する消費電力量とによって決まる。現在のプロセッサ動作率に比例して増加する消費電力量PT-Aは、メインプロセッサ４２またはサブプロセッサ４３が分散処理により使用されていなくても消費される電力量であり、次の式（７）で示される。ここで、PAは動作クロック数比例係数であり、ハードウェアの構成によって予め決められている値である。そして、現在のプロセッサ使用率に比例して増加する消費電力量PT-Bは、次の式（８）で示される。ここで、Kは使用クロック数比例係数でハードウェアの構成によって予め決められている値である。
【０１５５】
PT-A＝PA（W/Cycle）×SCPU_RATE[k]×SCPU_CK[k]・・・（７）
【０１５６】
PT-B＝K（W/Cycle）×SCPU_STAT[k]×SCPU_CK[k] ・・・（８）
【０１５７】
したがって、情報処理コントローラ１１に含まれるメインプロセッサ４２およびサブプロセッサ４３の合計の消費電力ΣＰＴは、次の式（９）で表される。また、プロセッサ動作率SCPU_RATE[k]が、プロセッサごとに独立して設定されているのではなく、全て共通の値(SYSTEM_RATE)として扱われる場合には、情報処理コントローラ１１に含まれるメインプロセッサ４２およびサブプロセッサ４３の合計の消費電力ΣＰＴは、次の式（１０）で表される。
【０１５８】
ΣPT＝Σ（PA×SCPU_RATE[k]×SCPU_CK[k]＋K×SCPU_STAT[k]×SCPU_CK[k])・・・（９）
【０１５９】
ΣPT＝Σ（PA×SYSTEM_RATE×SCPU_CK[k]＋K×SCPU_STAT[k]×SCPU_CK[k])・・・（１０）
【０１６０】
図１０は、情報処理コントローラ１１に含まれるメインプロセッサ４２およびサブプロセッサ４３の個々の消費電力消費電力ＰＴと、動作クロック数との関係を示す図である。
【０１６１】
図１０に示されるように、プロセッサの使用率が大きいほど、消費電力ＰＴは大きくなるが、プロセッサの使用率が０であっても、プロセッサにクロックが供給されている限り、プロセッサおよびバスの制御のために消費される電力量など、アプリケーションの処理に依存しない固定の消費電力が発生してしまう。メインプロセッサ４２およびサブプロセッサ４３に供給されているクロックは、SYSTEM_RATE×SCPU_CKで表される。すなわち、同一のプロセッサ使用率（SCPU_STAT）であっても、プロセッサ動作率（SYSTEM_RATEまたはSCPU_RATE[k]）が大きい方が、固定分だけ消費電力は増加してしまう。
【０１６２】
次に、図１１および図１２のフローチャートを参照して、本発明を適用した情報処理装置１において実行される、分散処理割り当て決定処理１について説明する。
【０１６３】
ステップＳ１において、論理スレッド実行制御部１０２は、アプリケーション実行制御部１０１から、REQUEST_informationの供給を受け、新たな分散処理の割り当てが指令されたか否かを判断する。ステップＳ１において、新たな分散処理の割り当てが指令されていないと判断された場合、新たな分散処理の割り当てが指令されたと判断されるまで、ステップＳ１の処理が繰り返される。
【０１６４】
ステップＳ１において、新たな分散処理の割り当てが指令されたと判断された場合、ステップＳ２において、論理スレッド実行制御部１０２は、供給されたREQUEST_informationに含まれる情報から、割り当てが指令された分散処理の実行に必要なサブプロセッサの数ｊを取得する
【０１６５】
ステップＳ３において、論理スレッド実行制御部１０２は、各プロセッサへの処理の割り当て計算過程における暫定値を格納する内部のレジスタの値に対応するものとして、プロセッサ使用率TEMP_STAT[k]およびプロセッサ動作率TEMP_RATE[k]を定義する。
【０１６６】
ステップＳ４において、論理スレッド実行制御部１０２は、動作情報メモリ１０５に記憶されている、分散処理の割り当て前、すなわち、現在の各プロセッサのプロセッサ使用率SCPU_STAT[k]およびプロセッサ動作率SCPU_RATE[k]の値を取得して、プロセッサ使用率TEMP_STAT[k]およびプロセッサ動作率TEMP_RATE[k]に代入する。
【０１６７】
ここでは、サブプロセッサ４３が複数設けられている情報処理コントローラ１１において、既になんらかのアプリケーションプログラムを実行している状態において、ネットワーク２を介して接続されている他の情報処理装置１から、新たに別のアプリケーションプログラムの実行が要求された場合について説明する。また、論理スレッド実行制御部１０２または動作情報メモリ１０５が現在管理している設定値は、REQ_REAL＝１（リアルタイム処理を要求）、NUM_SCPU＝３、TIME_DEF＝１（１秒）、RATE_MARGINE＝０．１、MEM_MARGINE＝１０であるものとする。
【０１６８】
図１３を用いて、既になんらかのアプリケーションプログラムを実行している状態のメインプロセッサ４２およびサブプロセッサ４３-１乃至サブプロセッサ４３-３のプロセッサ動作率SYSTEM_RATE（ここでは、全てのプロセッサにおいてプロセッサ動作率を共通であるものとして説明する）と、プロセッサ使用率SCPU_STAT[k]の関係を説明する。ここで、説明を簡略化するために、THREAD_OVERHEADは０であるものとして説明する。
【０１６９】
ここで、メインプロセッサ４２およびサブプロセッサ４３-１乃至サブプロセッサ４３-３のプロセッサ動作率SYSTEM_RATEは０．５である。そして、k＝０で示されるメインプロセッサ４２のプロセッサ使用率SCPU_STAT[0]は０．３であるので、プロセッサ使用率SCPU_STAT[0]／プロセッサ動作率SYSTEM_RATEは、０．３／０．５であり、メインプロセッサ４２が利用できるメモリの容量MEM_CPU[0]は、5000（kbytes）であり、現在使用中のメモリ容量は1000（kbytes）であり、最大動作クロック数を示すSCPU_CK[0]は、1000である。k＝１で示されるサブプロセッサ４３−１のプロセッサ使用率SCPU_STAT[1]は０．４であるので、プロセッサ使用率SCPU_STAT[1]／プロセッサ動作率SYSTEM_RATEは、０．４／０．５であり、サブプロセッサ４３−１が利用できるメモリの容量MEM_CPU[1]は、１００（kbytes）であり、現在使用中のメモリ容量は20（kbytes）であり、最大動作クロック数を示すSCPU_CK[1]は、1000である。また、k＝２で示されるサブプロセッサ４３−２のプロセッサ使用率SCPU_STAT[2]は０．２であるので、プロセッサ使用率SCPU_STAT[2]／プロセッサ動作率SYSTEM_RATEは、０．２／０．５であり、サブプロセッサ４３−２が利用できるメモリの容量MEM_CPU[2]は、１００（kbytes）であり、現在使用中のメモリ容量は１０（kbytes）であり、最大動作クロック数を示すSCPU_CK[2]は、1000である。更に、k＝3で示されるサブプロセッサ４３−３のプロセッサ使用率SCPU_STAT[3]は０．１であるので、プロセッサ使用率SCPU_STAT[3]／プロセッサ動作率SYSTEM_RATEは、０．１／０．５であり、サブプロセッサ４３−３が利用できるメモリの容量MEM_CPU[3]は、１００（kbytes）であり、現在使用中のメモリ容量は5（kbytes）であり、最大動作クロック数を示すSCPU_CK[3]は、1000である。
【０１７０】
そして、REQUEST_informationに記載されている、新たに実行が要求されているアプリケーションプログラムの動作条件は、必要なサブプロセッサ数REQ_NUMが２であり、メインプロセッサ４２に求められる処理サイクル数REQ_PC[0]は１００、求められるメモリ容量REQ_MEM[0]が１００（kbytes）、１つ目のサブプロセッサ４３に求められる処理サイクル数REQ_PC[1]は４００、求められるメモリ容量REQ_MEM[1]が５０（kbytes）、２つ目のサブプロセッサ４３に求められる処理サイクル数REQ_PC[2]は２００、求められるメモリ容量REQ_MEM[2]が３０（kbytes）であるものとする。
【０１７１】
以上の条件に基づいて、以下の処理において、条件を満たすような分散処理の割り当てが行われる。
【０１７２】
ステップＳ５において、論理スレッド実行制御部１０２は、要求する処理に必要なサブプロセッサの数を示すREQ_NUMに対して、何番目のプロセッサの割り当て決定処理を行っているかを示すレジスタの値ｔを、ｔ＝０とする。ここで、ｔ＝０のプロセッサは、メインプロセッサ４２を示し、ｔ≧１のプロセッサは、サブプロセッサ４３のうちのいずれかを示す。
【０１７３】
ステップＳ６において、論理スレッド実行制御部１０２は、情報処理コントローラ１１に設けられているプロセッサのうち、何番目のプロセッサに処理の割り当てが可能か否かを判定しているかを示すレジスタの値ｓを、ｓ＝０とする
【０１７４】
ステップＳ７において、論理スレッド実行制御部１０２は、REQ_NUM(t)の処理は、ｓ番目のプロセッサで実行可能か否かを判断する。
【０１７５】
具体的には、論理スレッド実行制御部１０２は、REQ_NUM(t)の処理によるプロセッサ使用率SCPU_STAT[s]の増加分を加算した上で、プロセッサ使用率SCPU_STAT[s]＋RATE_MAGINEが１を超えないこと、および、REQ_NUM(t)の処理により要求されるメモリ容量について、（REQ_MEM[s]＋MEM_MARGIN）＜（MEM[s]_CPU−現在のメモリの使用量）が成立することを条件として、REQ_NUM(t)の処理は、ｓ番目のプロセッサで実行可能か否かを判断する。
【０１７６】
ステップＳ７において、REQ_NUM(t)の処理は、ｓ番目のプロセッサで実行可能ではないと判断された場合、ステップＳ８において、論理スレッド実行制御部１０２は、レジスタの値ｓを、ｓ＝ｓ＋１とする。
【０１７７】
ステップＳ９において、論理スレッド実行制御部１０２は、ｓ＞（情報処理コントローラ１１に設けられているサブプロセッサ４３の数）であるか否かを判断する。ステップＳ９において、ｓ＞（情報処理コントローラ１１に設けられているサブプロセッサ４３の数）ではないと判断された場合、処理は、ステップＳ７に戻り、それ以降の処理が繰り返される。ステップＳ９において、ｓ＞（情報処理コントローラ１１に設けられているサブプロセッサ４３の数）であると判断された場合、処理は、後述するステップＳ１９に進む。
【０１７８】
ステップＳ７において、REQ_NUM(t)の処理は、ｓ番目のプロセッサで実行可能であると判断された場合、ステップＳ１０において、論理スレッド実行制御部１０２は、必須条件を満たすプロセッサの識別番号を示す内部のレジスタに対応するSET_CPUID[t]に、割り当てられたs番目のプロセッサのプロセッサＩＤ（メインプロセッサＩＤまたはサブプロセッサＩＤ）を記載する。
【０１７９】
ステップＳ１１において、論理スレッド実行制御部１０２は、割り当てられたs番目のプロセッサの処理分のプロセッサ使用率が加算されるように、割り当て計算過程における暫定値を格納する内部のレジスタの値に対応するプロセッサ使用率TEMP_STAT[s]を更新する。
【０１８０】
ステップＳ１２において、論理スレッド実行制御部１０２は、レジスタｔの値を、ｔ＝ｔ＋１とする。
【０１８１】
ステップＳ１３において、論理スレッド実行制御部１０２は、レジスタｔの値を参照し、ｔ＞ｊ（ｊは、分散処理に必要なサブプロセッサの数）であるか否かを判断する。ステップＳ１３において、ｔ＞ｊではないと判断された場合、要求された処理の割り当てが終了していないので、処理は、ステップＳ６に戻り、それ以降の処理が繰り返される。
【０１８２】
ステップＳ１３において、ｔ＞ｊであると判断された場合、要求された処理の割り当てが終了したので、ステップＳ１４において、論理スレッド実行制御部１０２は、割り当てが成功したことを示すフラグをたてる、すなわち、ＳＥＴ＿ＮＧ＝０とする。
【０１８３】
ステップＳ１５において、論理スレッド実行制御部１０２は、すべてのプロセッサのプロセッサ動作率TEMP_RATE[k]、および、最新のプロセッサ使用率TEMP_STAT[k]を比較することにより、新たな分散処理の割り当てによって、プロセッサ動作率の設定を変更する必要があるか否かを判断する。
【０１８４】
ステップＳ１５において、プロセッサ動作率の設定を変更する必要があると判断された場合、すなわち、いずれかのプロセッサにおいて、プロセッサ動作率TEMP_RATE[k]＜プロセッサ使用率TEMP_STAT[k]であった場合、ステップＳ１６において、論理スレッド実行制御部１０２は、新たなプロセッサ動作率を算出し、算出結果を、動作率設定部１０３に供給する。動作率設定部１０３は、メインプロセッサ４２またはサブプロセッサ４３のうちの対応するものに、プロセッサ動作率の設定変更を行う。
【０１８５】
ステップＳ１７において、論理スレッド実行制御部１０２は、動作情報メモリ１０５に記憶されている、各プロセッサのプロセッサ使用率SCPU_STAT[k]、および、プロセッサ動作率SCPU_RATE[k]の値を、それぞれ、割り当て計算により得られたプロセッサ使用率TEMP_STAT[k]、および、TEMP_RATE[k]に更新する。
【０１８６】
図１４を用いて、新たな分散処理の割り当て結果と、プロセッサ動作率の設定について説明する。
【０１８７】
図１３を用いて説明した状態において、上述したように、必要なサブプロセッサ数REQ_NUMが２であり、メインプロセッサ４２に求められる処理サイクル数REQ_PC[0]は１００、求められるメモリ容量REQ_MEM[0]が１００（kbytes）、１つ目のサブプロセッサ４３に求められる処理サイクル数REQ_PC[1]は４００、求められるメモリ容量REQ_MEM[1]が５０（kbytes）、２つ目のサブプロセッサ４３に求められる処理サイクル数REQ_PC[2]は２００、求められるメモリ容量REQ_MEM[2]が３０（kbytes）である分散処理の割り当てが要求された場合、図１４に示されるように、k＝0で示されるメインプロセッサ４２のプロセッサ使用率SCPU_STAT[0]は０．４となり、k＝１で示されるサブプロセッサ４３−１のプロセッサ使用率SCPU_STAT[1]は０．８となり、k＝2で示されるサブプロセッサ４３−２のプロセッサ使用率SCPU_STAT[2]は０．４となり、k＝3で示されるサブプロセッサ４３−３のプロセッサ使用率SCPU_STAT[3]は０．１のままである。
【０１８８】
RATE_MARGINE＝０．１であることから、新たな分散処理の割り当ての後、プロセッサ動作率が個々に制御されるようになされている場合、サブプロセッサ４３−１のプロセッサ動作率SCPU_RATE[1]のみが、０．９に変更され、新たな分散処理の割り当ての後も、プロセッサ動作率が共通となるように制御されている場合、全てのプロセッサのプロセッサ動作率RATE_MARGINE＝０．１であることから、SYSTEM_RATEは０．９に変更される。また、それぞれのプロセッサにおいて、新たな分散処理が割り当てられたことにより、メインプロセッサ４２が利用できるメモリの容量（MEM_CPU[0]−現在のメモリの使用量）は、3900（kbytes）となり、サブプロセッサ４３−１が利用できるメモリの容量（MEM_CPU[1]−現在のメモリの使用量）は、30（kbytes）となり、サブプロセッサ４３−２が利用できるメモリの容量（MEM_CPU[2]−現在のメモリの使用量）は、60（kbytes）となり、サブプロセッサ４３−３が利用できるメモリの容量（MEM_CPU[3]−現在のメモリの使用量）は、95（kbytes）のままとなる。
【０１８９】
ステップＳ１５において、プロセッサ動作率の設定を変更する必要がないと判断された場合、または、ステップＳ１７の処理の終了後、ステップＳ１８において、論理スレッド実行制御部１０２は、設定された割り当てに基づいて、プログラムおよびデータを対応するプロセッサにロードし、論理スレッドの処理を制御する。メインプロセッサ４２およびサブプロセッサ４３は、割り当てられたスレッドの処理を実行し、処理が終了される。
【０１９０】
ステップＳ９において、ｓ＞（情報処理コントローラ１１に設けられているサブプロセッサ４３の数）であると判断された場合、ステップＳ１９において、論理スレッド実行制御部１０２は、ＳＥＴ＿ＮＧ＝１とし、分散処理の割り当てが不可であることを、ユーザおよび分散処理の要求元の情報処理装置１に通知し、処理が終了される。
【０１９１】
このような処理により、本発明を適用した情報処理装置１においては、プロセッサ（またはプロセッサ群）の消費電力を抑制することができるように、分散される処理の割り当て先を適切に選択することができる。
【０１９２】
上述した処理により分散処理が割り当てられた状態が、上述した図１４における状態であり、プロセッサ動作率が共通となるように制御されている場合の消費電力は、次の式（１１）により求められる。
【０１９３】
ΣPT＝Σ（PA×SYSTEM_RATE[k]＋K×SCPU_STAT[k])×SCPU_CK[k]
＝（0.9×4×PA＋（0.4＋0.8＋0.4＋0.1)×K)×1000
＝（3.6×PA＋1.7×K)×1000                        ・・・（１１）
【０１９４】
ところで、特に、プロセッサ動作率が共通となるように制御されている場合、図１４に示されるサブプロセッサ４３−３においては、プロセッサ使用率が低いのにもかかわらず、プロセッサ動作率が高くなってしまい、消費電力的には無駄な割り当てになってしまっている。
【０１９５】
そこで、更に消費電力を抑制することができるように、新たな分散処理が割り当てられる前のプロセッサ動作率SCPU_RATE[k]またはSYSTEM_RATEと、プロセッサ使用率SCPU_STAT[k]との関係を基に、分散処理の割当先を決定するようにしてもよい。
【０１９６】
次に、図１５のフローチャートを参照して、新たな分散処理が割り当てられる前のプロセッサ動作率とプロセッサ使用率との関係を基に分散処理の割当先を決定する、分散処理割り当て決定処理２について説明する。
【０１９７】
ステップＳ３１において、論理スレッド実行制御部１０２は、アプリケーション実行制御部１０１から、REQUEST_informationの供給を受け、新たな分散処理の割り当てが指令されたか否かを判断する。ステップＳ３１において、新たな分散処理の割り当てが指令されていないと判断された場合、新たな分散処理の割り当てが指令されたと判断されるまで、ステップＳ３１の処理が繰り返される。
【０１９８】
ここでは、サブプロセッサ４３が複数設けられている情報処理コントローラ１１において、既になんらかのアプリケーションプログラムを実行している状態のメインプロセッサ４２およびサブプロセッサ４３-１乃至サブプロセッサ４３-３の状態は、図１３を用いて説明した場合と同様であるものとする。
【０１９９】
すなわち、プロセッサ動作率SYSTEM_RATEが０．５であり、k＝0で示されるメインプロセッサ４２のプロセッサ使用率SCPU_STAT[0]は０．３であるので、プロセッサ使用率SCPU_STAT[0]／プロセッサ動作率SYSTEM_RATE[0]は、０．３／０．５であり、メインプロセッサ４２が利用できるメモリの容量MEM_CPU[0]は、5000（kbytes）であり、最大動作クロック数を示すSCPU_CK[0]は、1000である。k＝１で示されるサブプロセッサ４３−１のプロセッサ使用率SCPU_STAT[1]は０．４であるので、プロセッサ使用率SCPU_STAT[1]／プロセッサ動作率SYSTEM_RATE[1]は、０．４／０．５であり、サブプロセッサ４３−１が利用できるメモリの容量MEM_CPU[1]は、１００（kbytes）であり、最大動作クロック数を示すSCPU_CK[1]は、1000である。また、k＝2で示されるサブプロセッサ４３−２のプロセッサ使用率SCPU_STAT[2]は０．２であるので、プロセッサ使用率SCPU_STAT[2]／プロセッサ動作率SYSTEM_RATE[2]は、０．２／０．５であり、サブプロセッサ４３−２が利用できるメモリの容量MEM_CPU[2]は、１００（kbytes）であり、最大動作クロック数を示すSCPU_CK[2]は、1000である。更に、k＝3で示されるサブプロセッサ４３−３のプロセッサ使用率SCPU_STAT[3]は０．１であるので、プロセッサ使用率SCPU_STAT[3]／プロセッサ動作率SYSTEM_RATE[3]は、０．１／０．５であり、サブプロセッサ４３−３が利用できるメモリの容量MEM_CPU[3]は、１００（kbytes）であり、最大動作クロック数を示すSCPU_CK[3]は、1000であるものとして説明する。また、説明を簡略化するために、THREAD_OVERHEADは０であるものとして説明する。
【０２００】
このような状態において、ネットワーク２を介して接続されている他の情報処理装置１から、新たに別のアプリケーションプログラムの実行が要求された場合について説明する。また、論理スレッド実行制御部１０２または動作情報メモリ１０５が現在管理している設定値は、REQ_REAL＝１（リアルタイム処理を要求）、NUM_SCPU＝３、TIME_DEF＝１（１秒）、RATE_MARGINE＝０．１、MEM_MARGINE＝１０であるものとする。
【０２０１】
そして、REQUEST_informationに記載されている、新たに実行が要求されているアプリケーションプログラムの動作条件は、必要なサブプロセッサ数REQ_NUMが２であり、メインプロセッサ４２に求められる処理サイクル数REQ_PC[0]は１００、求められるメモリ容量REQ_MEM[0]が１００（kbytes）、１つ目のサブプロセッサ４３に求められる処理サイクル数REQ_PC[1]は４００、求められるメモリ容量REQ_MEM[1]が５０（kbytes）、２つ目のサブプロセッサ４３に求められる処理サイクル数REQ_PC[2]は２００、求められるメモリ容量REQ_MEM[2]が３０（kbytes）であるものとする。
【０２０２】
ステップＳ３１において、新たな分散処理の割り当てが指令されたと判断された場合、ステップＳ３２において、論理スレッド実行制御部１０２は、割り当て条件を満たしているか否かを示すフラグSET_NGを初期化、すなわち、SET_NG＝０とする。
【０２０３】
ステップＳ３３において、論理スレッド実行制御部１０２は、現在の各プロセッサのプロセッサ使用率SCPU_STAT[k]を取得して、TEMP_STAT[k]に代入する。
【０２０４】
ステップＳ３４において、論理スレッド実行制御部１０２は、現在の各プロセッサのプロセッサ動作率SCPU_RATE[k]を取得して、TEMP_RATE[k]に代入する。
【０２０５】
ステップＳ３５において、論理スレッド実行制御部１０２は、処理の割り当てが決定したプロセッサを示すフラグSET_CPUID[t]を初期化、すなわち、SET_CPUID[t]＝０とする。
【０２０６】
ステップＳ３６において、図１６および図１７のフローチャートを用いて後述するプロセッサ割り当て決定処理が実行される。
【０２０７】
ステップＳ３７において、論理スレッド実行制御部１０２は、図１６および図１７のフローチャートを用いて後述するプロセッサ割り当て決定処理の処理結果であるSET_NGの値に基づいて、新たな分散処理の割り当てが成功したか否かを判断する。
【０２０８】
ステップＳ３７において、新たな分散処理の割り当てが成功したと判断された場合、ステップＳ３８において、論理スレッド実行制御部１０２は、すべてのプロセッサのプロセッサ動作率TEMP_RATE[k]、および、最新のプロセッサ使用率TEMP_STAT[k]を比較することにより、新たな分散処理の割り当てによって、プロセッサ動作率の設定を変更する必要があるか否かを判断する。
【０２０９】
ステップＳ３８において、プロセッサ動作率の設定を変更する必要があると判断された場合、すなわち、いずれかのプロセッサにおいて、プロセッサ動作率TEMP_RATE[k]＜プロセッサ使用率TEMP_STAT[k]であった場合、ステップＳ３９において、論理スレッド実行制御部１０２は、新たなプロセッサ動作率を算出し、算出結果を、動作率設定部１０３に供給する。動作率設定部１０３は、メインプロセッサ４２またはサブプロセッサ４３のうちの対応するものに、プロセッサ動作率の設定を行う。
【０２１０】
ステップＳ４０において、論理スレッド実行制御部１０２は、動作情報メモリ１０５に記録されている、各プロセッサのプロセッサ使用率SCPU_STAT[k]、および、プロセッサ動作率SCPU_RATE[k]の値を、それぞれ、割り当て計算により得られたプロセッサ使用率TEMP_STAT[k]、および、TEMP_RATE[k]の値に更新する。新たな分散処理の割り当て結果と、動作率の設定については、図１８乃至図２０を用いて後述する。
【０２１１】
ステップＳ３８において、プロセッサ動作率の設定を変更する必要がないと判断された場合、または、ステップＳ３９の処理の終了後、ステップＳ４１において、論理スレッド実行制御部１０２は、設定された割り当てに基づいて、プログラムおよびデータを対応するプロセッサにロードし、論理スレッドの処理を制御する。メインプロセッサ４２およびサブプロセッサ４３は、割り当てられたスレッドの処理を実行し、処理が終了される。
【０２１２】
ステップＳ３７において、分散処理の割り当てが成功しなかったと判断された場合、ステップＳ４２において、論理スレッド実行制御部１０２は、分散処理の割り当てが不可であることを、ユーザおよび分散処理の要求元の情報処理装置１に通知し、処理が終了される。
【０２１３】
このような処理により、本発明を適用した情報処理装置１においては、図１１および図１２を用いて説明した分散処理割り当て決定処理１が実行された場合と比較して、更に、プロセッサ（またはプロセッサ群）の消費電力を抑制することができるように、分散される処理の割り当て先を適切に選択することができる。
【０２１４】
次に、図１６および図１７のフローチャートを参照して、図１５のステップＳ３６において実行されるプロセッサ割り当て決定処理について説明する。
【０２１５】
ステップＳ６１において、論理スレッド実行制御部１０２は、供給されたREQUEST_informationに含まれる情報から、割り当てが指令された分散処理の実行に必要なサブプロセッサの数ｊを取得する。
【０２１６】
ステップＳ６２において、論理スレッド実行制御部１０２は、分散処理の割り当ての可否を判断するためにそれぞれのプロセッサを区別するための内部のレジスタの値に対応するものとして、SCPU_NBを定義する。
【０２１７】
ステップＳ６３において、論理スレッド実行制御部１０２は、SCPU_NB[0]をメインプロセッサ４２であるものとする。
【０２１８】
ステップＳ６４において、論理スレッド実行制御部１０２は、供給されたREQUEST_informationに含まれる情報から、実行要求を受けた処理には、PRIORITY_IDが指定されているか否かを判断する。ステップＳ６４において、PRIORITY_IDが指定されていないと判断された場合、処理は、後述するステップＳ６７に進む。
【０２１９】
ステップＳ６４において、PRIORITY_IDが指定されていると判断された場合、ステップＳ６５において、論理スレッド実行制御部１０２は、SCPU_NB[1]をPRIORITY_IDで指定されるサブプロセッサ４３であるものとする。
【０２２０】
ステップＳ６６において、論理スレッド実行制御部１０２は、供給されたREQUEST_informationに含まれる情報を参照して、２≦ｉ≦（情報処理コントローラ１１に含まれるサブプロセッサ４３の数）となるSCPU_NB[ｉ]において、サスペンド指定されているサブプロセッサ４３を省いたうえで、現在のプロセッサ動作率SCPU_RATE[k]またはSYSTEM_RATEに対するプロセッサ使用率SCPU_STAT[k]の余裕度が高い順にソートしたサブプロセッサ４３のサブプロセッサＩＤを対応付けて、処理は、後述するステップＳ６８に進む。
【０２２１】
ステップＳ６４において、PRIORITY_IDが指定されていないと判断された場合、ステップＳ６７において、論理スレッド実行制御部１０２は、供給されたREQUEST_informationに含まれる情報を参照して、１≦ｉ≦（情報処理コントローラ１１に含まれるサブプロセッサ４３の数）となるSCPU_NB[ｉ]において、サスペンド指定されているサブプロセッサを省いたうえで、現在のプロセッサ動作率SCPU_RATE[k]またはSYSTEM_RATEに対するプロセッサ使用率SCPU_STAT[k]の余裕度が高い順にソートしたサブプロセッサ４３のサブプロセッサＩＤを対応付ける。
【０２２２】
すなわち、ステップＳ６３乃至ステップＳ６７の処理によって、SCPU_NB[0]にメインプロセッサ４２が対応付けられるとともに、SCPU_NB[1]，SCPU_NB[2]，SCPU_NB[3]・・・SCPU_NB[k]に、PRIORITY_IDが指定されている場合、指定されているサブプロセッサ４３が優先され、サスペンド指定されているサブプロセッサ４３が省かれた状態で、現在のプロセッサ動作率SCPU_RATE[k]またはSYSTEM_RATEに対するプロセッサ使用率SCPU_STAT[k]の余裕度が高い順にソートされたサブプロセッサ４３が順次対応付けられる。
【０２２３】
すなわち、図１３を用いて説明した場合において、PRIORITY_IDおよびサスペンドの指定がないとき、SCPU_NB[0]にメインプロセッサ４２が対応付けられるとともに、SCPU_NB[1]にサブプロセッサ４３−３が対応付けられ、SCPU_NB[2]にサブプロセッサ４３−２が対応付けられ、SCPU_NB[3]にサブプロセッサ４３−１が対応付けられる。
【０２２４】
ステップＳ６６またはステップＳ６７の処理の終了後、ステップＳ６８において、論理スレッド実行制御部１０２は、要求する処理に必要なサブプロセッサの数を示すREQ_NUMに対して、何番目のプロセッサの割り当て決定処理を行っているかを示すレジスタの値ｔを、ｔ＝０とする。ここで、ｔ＝０のプロセッサは、メインプロセッサ４２を示し、ｔ≧１のプロセッサは、サブプロセッサ４３のうちのいずれかを示す。
【０２２５】
ステップＳ６９において、論理スレッド実行制御部１０２は、SCPU_NB[ｉ]における変数ｉを、ｉ＝０とする。
【０２２６】
ステップＳ７０において、論理スレッド実行制御部１０２は、REQUEST_informationに含まれる情報を参照して、サブプロセッサ４３のうちのいずれかに分散して割り当てられることが要求されているREQ_NUM(t)の処理は、SCPU_NB[ｉ]で示されるプロセッサ４３で実行可能か否かを判断する。
【０２２７】
具体的には、論理スレッド実行制御部１０２は、REQ_NUM(t)の処理による、SCPU_NB[i]で示されるプロセッサにおけるプロセッサ使用率SCPU_STAT[k]の増加分を加算したうえで、プロセッサ使用率SCPU_STAT[k]＋RATE_MAGINEが１を超えないこと、および、REQ_NUM(t)の処理により要求されるSCPU_NB[i]で示されるプロセッサにおけるメモリ容量について、（REQ_MEM[k]＋MEM_MARGIN）＜（MEM_CPU[k]−現在のメモリ使用量）が成立することを条件として、REQ_NUM(t)の処理は、SCPU_NB[ｉ]で示されるプロセッサで実行可能か否かを判断する。
【０２２８】
ステップＳ７０において、REQ_NUM(t)の処理は、SCPU_NB[ｉ]で示されるプロセッサで実行可能ではないと判断された場合、ステップＳ７１において、論理スレッド実行制御部１０２は、SCPU_NB[ｉ]における変数ｉを、ｉ＝ｉ＋１とする。
【０２２９】
ステップＳ７２において、論理スレッド実行制御部１０２は、ｉ＞（サスペンドなどを除いた、実質的に処理が割り当て可能なサブプロセッサ４３の数）であるか否かを判断する。ステップＳ７２において、ｉ＞（サスペンドなどを除いた、実質的に処理が割り当て可能なサブプロセッサ４３の数）ではないと判断された場合、処理は、ステップＳ７０に戻り、それ以降の処理が繰り返される。ステップＳ７２において、ｉ＞（サスペンドなどを除いた、実質的に処理が割り当て可能なサブプロセッサ４３の数）であると判断された場合、処理は、後述するステップＳ７８に進む。
【０２３０】
ステップＳ７０において、REQ_NUM(t)の処理は、SCPU_NB[ｉ]で示されるプロセッサで実行可能であると判断された場合、ステップＳ７３において、論理スレッド実行制御部１０２は、処理の割り当てが決定したプロセッサを示すレジスタの値SET_CPUID[t]を、SCPU_NB[i]で示されるプロセッサのプロセッサＩＤとする。
【０２３１】
ステップＳ７４において、論理スレッド実行制御部１０２は、SCPU_NB[i]で示されるプロセッサのTEMP_STAT[k]に、新たに割り当てられた処理に対応するプロセッサ使用率を加算して更新する。
【０２３２】
ステップＳ７５において、論理スレッド実行制御部１０２は、何番目のプロセッサの割り当て決定処理を行っているかを示すレジスタの値ｔを、ｔ＝ｔ＋１とする。
【０２３３】
すなわち、図１３を用いて説明した場合と同様の状態のメインプロセッサ４２およびサブプロセッサ４３-１乃至サブプロセッサ４３-３に対して、必要なサブプロセッサ数REQ_NUMが２であり、メインプロセッサ４２に求められる処理サイクル数REQ_PC[0]は１００、求められるメモリ容量REQ_MEM[0]が１００（kbytes）である新たな分散処理が要求されたとき、ｉ＝０において、論理スレッド実行制御部１０２は、次の式（１２）に示されるように、メインプロセッサ４２に新たに分散処理が割り当てられたとき、プロセッサ使用率SCPU_STAT[０]＋RATE_MAGINEは１を超えず、また、次の式（１３）に示されるように、（REQ_MEM[０]＋MEM_MARGIN）＜（MEM_CPU[０]−現在のメモリ使用量）が成立するので、REQ_NUM(０)の処理は、SCPU_NB[０]で示されるメインプロセッサ４２で実行可能であると判断する。
【０２３４】
TEMP_STAT[0]（割り当て後）
＝（REQ_PC[0]÷TIME_DEF）÷SCPU_CK[0]＋TEMP_STAT[0]（割り当て前）＋RATE_MAGINE
＝（100÷1）÷1000＋0.3＋0.1
＝0.5                          ・・・（１２）
MEM_CPU[0]−現在のメモリ使用量−MEM_MARGINE（＝4890）＞REQ_MEM[0]（＝100）
・・・（１３）
【０２３５】
したがって、論理スレッド実行制御部１０２は、SET_CPUID[0]にメインプロセッサ４２のプロセッサＩＤを記載し、TEMP_STAT[0]＝0.4とし、現在のメモリ使用量を1000＋100＝1100とするとともに、何番目のプロセッサの割り当て決定処理を行っているかを示すレジスタの値ｔを、ｔ＝１とする。
【０２３６】
ステップＳ７６において、論理スレッド実行制御部１０２は、ｔ＞ｊ（ｊは、新たな処理の割り当てに必要なサブプロセッサの数）であるか否かを判断する。ステップＳ７６において、ｔ＞ｊではないと判断された場合、処理は、ステップＳ６９に戻り、それ以降の処理が繰り返される。
【０２３７】
例えば、ｔ＝１であるとき、ｔ＞ｊではないと判断されるので、上述した場合と同様に、要求された新たな分散処理において、必要なサブプロセッサ数REQ_NUMが２であり、１つ目のサブプロセッサ４３に求められる処理サイクル数REQ_PC[1]は４００、求められるメモリ容量REQ_MEM[1]が５０（kbytes）であるとき、ｉ＝１において、論理スレッド実行制御部１０２は、次の式（１４）に示されるようにSCPU_NB[１]で示されるサブプロセッサ４３−３で、プロセッサ使用率SCPU_STAT[3]＋RATE_MAGINEは１を超えず、また、次の式（１５）に示されるように、（REQ_MEM[1]＋MEM_MARGIN）＜（MEM_CPU[3]−現在のメモリ使用量）が成立するので、REQ_NUM(１)の処理は、SCPU_NB[１]で示されるサブプロセッサ４３−３で実行可能であると判断する。
【０２３８】
TEMP_STAT[3]（割り当て後）
＝（REQ_PC[1]÷TIME_DEF）÷SCPU_CK[3]＋TEMP_STAT[3]（割り当て前）＋RATE_MAGINE
＝（400÷1）÷1000＋0.1＋0.1
＝0.6                          ・・・（１４）
MEM_CPU[3]−現在のメモリ使用量−MEM_MARGINE（＝85）＞REQ_MEM[1]（＝50）
・・・（１５）
【０２３９】
したがって、論理スレッド実行制御部１０２は、SET_CPUID[1]にサブプロセッサ４３−３のプロセッサＩＤを記載し、TEMP_STAT[1]＝0.5とし、現在のメモリ使用量を５５（kbytes）とするとともに、何番目のプロセッサの割り当て決定処理を行っているかを示すレジスタの値ｔを、ｔ＝２とする。
【０２４０】
更に、同様に、要求された新たな分散処理において、2つ目のサブプロセッサ４３に求められる処理サイクル数REQ_PC[2]は２００、求められるメモリ容量REQ_MEM[2]が３０（kbytes）であるとき、ｉ＝２において、論理スレッド実行制御部１０２は、次の式（１６）に示されるようにSCPU_NB[２]で示されるサブプロセッサ４３−２で、プロセッサ使用率SCPU_STAT[2]＋RATE_MAGINEは１を超えず、また、次の式（１７）に示されるように、（REQ_MEM[2]＋MEM_MARGIN）＜（MEM_CPU[2]−現在のメモリ使用量）が成立するので、REQ_NUM(２)の処理は、SCPU_NB[２]で示されるサブプロセッサ４３−２で実行可能であると判断する。
【０２４１】
TEMP_STAT[2]（割り当て後）
＝（REQ_PC[2]÷TIME_DEF）÷SCPU_CK[2]＋TEMP_STAT[2]（割り当て前）＋RATE_MAGINE
＝（200÷1／）÷1000＋0.2＋0.1
＝0.5                          ・・・（１６）
MEM_CPU[2]−現在のメモリ使用量−MEM_MARGINE（＝80）＞REQ_MEM[2]（＝30）
・・・（１７）
【０２４２】
したがって、論理スレッド実行制御部１０２は、SET_CPUID[2]にサブプロセッサ４３−２のプロセッサＩＤを記載し、TEMP_STAT[2]＝0.4とし、現在のメモリ使用量を４０（kbytes）とするとともに、何番目のプロセッサの割り当て決定処理を行っているかを示すレジスタの値ｔを、ｔ＝３とする。
【０２４３】
ステップＳ７６において、ｔ＞ｊであると判断された場合、ステップＳ７７において、論理スレッド実行制御部１０２は、割り当てが成功したことを示すフラグを立てて、SET_NG＝０とし、処理は、図１５のステップＳ３６に戻り、ステップＳ３７に進む。
【０２４４】
ステップＳ７２において、ｉ＞（サスペンドなどを除いた、実質的に処理が割り当て可能なサブプロセッサ４３の数）であると判断された場合、ステップＳ７８において、論理スレッド実行制御部１０２は、割り当てが失敗したことを示すようにフラグをＯＦＦして、SET_NG＝１とし、処理は、図１５のステップＳ３６に戻り、ステップＳ３７に進む。
【０２４５】
このような処理により、本発明を適用した情報処理装置１においては、図１１および図１２を用いて説明した分散処理割り当て決定処理１が実行された場合と比較して、更に、プロセッサ（またはプロセッサ群）の消費電力を抑制することができるように、分散される処理の割り当て先を適切に選択することができる。
【０２４６】
図１３を用いて説明した場合と同様の状態のメインプロセッサ４２およびサブプロセッサ４３-１乃至サブプロセッサ４３-３において、プロセッサ動作率SYSTEM_RATEが共通であるものとして制御されている場合の割り当て結果を、図１８に示す。
【０２４７】
k＝0で示されるメインプロセッサ４２のプロセッサ使用率SCPU_STAT[0]は０．４となり、k＝１で示されるサブプロセッサ４３−１のプロセッサ使用率SCPU_STAT[1]は０．４のままであり、k＝2で示されるサブプロセッサ４３−２のプロセッサ使用率SCPU_STAT[2]は０．４となり、k＝3で示されるサブプロセッサ４３−３のプロセッサ使用率SCPU_STAT[3]は０．５となる。ここで、RATE_MAGINEが０．１であるので、プロセッサ動作率SYSTEM_RATEは、０．６に制御される。
【０２４８】
上述した処理により分散処理が割り当てられた状態が、上述した図１８における状態であり、プロセッサ動作率が共通となるように制御されている場合の消費電力は、次の式（１８）により求められる。
【０２４９】
ΣPT＝Σ（PA×SYSTEM_RATE＋K×SCPU_STAT[k])×SCPU_CK[k]
＝（0.6×4×PA＋（0.4＋0.4＋0.4＋0.5）×K) ×1000
＝（2.4×PA＋1.7×K)×1000                        ・・・（１８）
【０２５０】
すなわち、図１４を用いて説明した割り当て処理後と比較して、1200×PA分の消費電力を減少させることができる。
【０２５１】
図１８は、プロセッサ動作率SYSTEM_RATEが共通であるものとして制御されている場合の割り当て結果を示しているが、図１５乃至図１７のフローチャートを用いて説明した処理は、プロセッサ動作率SCPU_RATE[k]が個別に設定されているときに、特に、効率的に消費電力量を抑制することができる。
【０２５２】
例えば、既になんらかのアプリケーションプログラムを実行している状態のメインプロセッサ４２およびサブプロセッサ４３-１乃至サブプロセッサ４３-３のプロセッサ動作率SCPU_RATE[k]と、プロセッサ使用率SCPU_STAT[k]の関係が、図１９に示されるように、k＝0で示されるメインプロセッサ４２のプロセッサ使用率SCPU_STAT[0]は０．３で、プロセッサ使用率SCPU_STAT[0]／プロセッサ動作率SCPU_RATE[0]は、０．３／０．５であり、k＝１で示されるサブプロセッサ４３−１のプロセッサ使用率SCPU_STAT[1]は０．４で、プロセッサ使用率SCPU_STAT[1]／プロセッサ動作率SCPU_RATE[1]は、０．４／０．９であり、k＝2で示されるサブプロセッサ４３−２のプロセッサ使用率SCPU_STAT[2]は０．２で、プロセッサ使用率SCPU_STAT[2]／プロセッサ動作率SCPU_RATE[2]は、０．２／０．３であり、更に、k＝3で示されるサブプロセッサ４３−３のプロセッサ使用率SCPU_STAT[3]は０．１で、プロセッサ使用率SCPU_STAT[3]／プロセッサ動作率SCPU_RATE[3]は、０．１／０．５である状態において、上述した場合と同様に、REQUEST_informationに記載されている、新たに実行が要求されているアプリケーションプログラムの動作条件が、必要なサブプロセッサ数REQ_NUMが２であり、メインプロセッサ４２に求められる処理サイクル数REQ_PC[0]は１００、１つ目のサブプロセッサ４３に求められる処理サイクル数REQ_PC[1]は４００、２つ目のサブプロセッサ４３に求められる処理サイクル数REQ_PC[2]は２００である分散処理が要求された場合の割り当てについて考える。
【０２５３】
SCPU_NB[0]で示されるメインプロセッサ４２に求められる処理の割り当ては、式(１２)を用いて説明した場合と同様であるが、SCPU_NB[１]に割り当てられるのは、現在のプロセッサ動作率SCPU_RATE[k]またはSYSTEM_RATEに対するプロセッサ使用率SCPU_STAT[k]の余裕度が最も高いサブプロセッサ４３−１となり、SCPU_NB[２]に割り当てられるのは、現在のプロセッサ動作率SCPU_RATE[k]またはSYSTEM_RATEに対するプロセッサ使用率SCPU_STAT[k]の余裕度が次に高いサブプロセッサ４３−３となる。すなわち、SCPU_NB[１]であるサブプロセッサ４３−１にREQ_NUM(１)の処理が割り当てられ、SCPU_NB[２]であるサブプロセッサ４３−３にREQ_NUM(２)の処理が割り当てられる。
【０２５４】
したがって、割り当て結果は、図２０に示されるように、k＝0で示されるメインプロセッサ４２のプロセッサ使用率SCPU_STAT[0]は０．４となり、k＝１で示されるサブプロセッサ４３−１のプロセッサ使用率SCPU_STAT[1]は０．８となり、k＝2で示されるサブプロセッサ４３−２のプロセッサ使用率SCPU_STAT[2]は０．２のままであり、k＝3で示されるサブプロセッサ４３−３のプロセッサ使用率SCPU_STAT[3]は０．３となる。ここで、RATE_MAGINEが０．１であるので、プロセッサ動作率SCPU_RATE[ｉ]は、図１９を用いて説明した処理の割り当て前の状態のままで、変更する必要がないため、新たな処理の割り当てによる消費電力量の増加を、大幅に抑制することができる。
【０２５５】
なお、REQ_REALが０（リアルタイム処理が不要）であると設定されているアプリケーションに対応する論理スレッドは、アプリケーション実行のタスクの優先度を、リアルタイム処理が必要なタスクより下げてスケジューリングすることで、余った時間に処理をさせるようにしてもよい。例えば、REQ_REALが０（リアルタイム処理が不要）であると設定されているアプリケーションに対応する論理スレッドを、最初はリアルタイム処理が必要な論理スレッドと同様の条件で割り当て処理を行い、割り当てが失敗した場合には、処理に必要な処理サイクル数を１／Ｍ（規定時間をＭ倍）にして、再度割り当て処理を実行するようにしてもよい。
【０２５６】
このような処理により、消費電力量を抑制しつつ、要求された機能を提供することができる情報処理装置を実現することができる。特に、ＣＥ（Consumer electronics）機器においては、消費電力量の削減が、商品としての競争力としての大きなポイントとなるため、本発明を適用するメリットは非常に大きい。
【０２５７】
上述した一連の処理は、ソフトウェアにより実行することもできる。そのソフトウェアは、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
【０２５８】
この記録媒体は、図１に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク６１（フレキシブルディスクを含む）、光ディスク６２（CD-ROM（Compact Disk-Read Only Memory），DVD（Digital Versatile Disk）を含む）、光磁気ディスク６３（ＭＤ（Mini-Disk)（商標）を含む）、もしくは半導体メモリ６４などよりなるパッケージメディアなどにより構成される。
【０２５９】
また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０２６０】
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【図面の簡単な説明】
【０２６１】
【図１】本発明を適用した通信システムの一実施の形態を示す図である。
【図２】メインメモリを説明する図である。
【図３】サブプロセッサのローカルストレージを説明する図である。
【図４】キー管理テーブルを説明する図である。
【図５】ソフトウェアセルの構成の例を示す図である。
【図６】ＤＭＡコマンドがステータス返信コマンドである場合におけるソフトウェアセルのデータ領域の構造を示す図である。
【図７】図１の情報処理コントローラのメインメモリが記憶するソフトウェアの構成を示す図である。
【図８】情報処理コントローラが実行可能な機能について説明するための機能ブロック図である。
【図９】REQUEST_information（アプリ要求条件）について説明するための図である。
【図１０】消費電力消費電力PTと、動作クロック数との関係を示す図である。
【図１１】分散処理割り当て決定処理１について説明するためのフローチャートである。
【図１２】分散処理割り当て決定処理１について説明するためのフローチャートである。
【図１３】新たな処理の割り当て前の各プロセッサの状態について説明するための図である。
【図１４】処理割り当て後の各プロセッサの状態について説明するための図である。
【図１５】分散処理割り当て決定処理２について説明するためのフローチャートである。
【図１６】プロセッサ割り当て決定処理について説明するためのフローチャートである。
【図１７】プロセッサ割り当て決定処理について説明するためのフローチャートである。
【図１８】処理割り当て後の各プロセッサの状態について説明するための図である。
【図１９】新たな処理の割り当て前の各プロセッサの状態について説明するための図である。
【図２０】処理割り当て後の各プロセッサの状態について説明するための図である。
【符号の説明】
【０２６２】
１  情報処理装置，  ２  ネットワーク，  ３  情報処理装置，  １１  情報処理コントローラ，  １２  メインメモリ，  １５  操作入力部，  １６  通信部，  １９  電源部，  ４２  メインプロセッサ，  ４３  サブプロセッサ，５１  ローカルストレージ，  １０１  アプリケーション実行制御部，  １０２  論理スレッド実行制御部，  １０３  動作率設定部，  １０４  動作情報取得部，  １０５  動作情報メモリ
【図１】
2006031525.tif 000003
【図２】
2006031525.tif 000004
【図３】
2006031525.tif 000005
【図４】
2006031525.tif 000006
【図５】
2006031525.tif 000007
【図６】
2006031525.tif 000008
【図７】
2006031525.tif 000009
【図８】
2006031525.tif 000010
【図９】
2006031525.tif 000011
【図１０】
2006031525.tif 000012
【図１１】
2006031525.tif 000013
【図１２】
2006031525.tif 000014
【図１３】
2006031525.tif 000015
【図１４】
2006031525.tif 000016
【図１５】
2006031525.tif 000017
【図１６】
2006031525.tif 000018
【図１７】
2006031525.tif 000019
【図１８】
2006031525.tif 000020
【図１９】
2006031525.tif 000021
【図２０】
2006031525.tif 000022