(57)【要約】【課題】温度の異常が検出されたとき、分散処理を制御する。【解決手段】ステップＳ２１において、タイマ割り込みが入ったと判断された場合、ステップＳ２２において、温度情報が取得され、ステップＳ２３において、温度管理テーブルが更新される。ステップＳ２４において、温度情報に異常値があったと判断された場合、ステップＳ２５において、割り込みがかけられて、アプリケーションプログラムの処理が停止されて、ステップＳ２６において、異常発生時の処理１が実行されて、分散処理が制御される。ステップＳ２７において、ステップＳ２６において実行された異常発生時の処理１に基づいて、必要に応じて、論理スレッド管理に関するテーブルが更新され、ステップＳ２８において、アプリケーションプログラムの処理に対する割り込みが解除されて、処理は、ステップＳ２１に戻り、それ以降の処理が繰り返される。【選択図】図１５
2006018758.tif 000002
【特許請求の範囲】
【請求項１】
第１の情報処理手段と、
複数の第２の情報処理手段と、
前記第１の情報処理装置および前記第２の情報処理手段の近傍の温度をそれぞれ検出する複数の温度検出手段と
を備え、
前記第１の情報処理手段は、
アプリケーションプログラムの実行を制御するアプリケーションプログラム実行制御手段と、
前記アプリケーションプログラム実行制御手段の処理により実行が制御される前記アプリケーションプログラムによって、複数の前記第２の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、前記処理単位に対応する前記機能を提供するための分散処理を制御する分散処理制御手段と、
前記温度検出手段により検出された前記温度に関する第１の情報、および、前記第２の情報処理手段による処理の実行に関する第２の情報を記録する記録手段と、
前記温度検出手段により検出された前記温度の異常を検出する異常検出手段と、
前記異常検出手段により前記温度の異常が検出された場合、前記分散処理制御手段による前記分散処理を制御する異常時制御手段と
を備え、
前記異常時制御手段は、前記異常検出手段により前記温度の異常が検出された場合、前記記録手段により記録されている前記第１の情報および前記第２の情報に基づいて、前記温度の異常が検出された前記第２の情報処理手段により実行されている処理の割り当てを変更するように、前記分散処理制御手段を制御する
ことを特徴とする情報処理装置。
【請求項２】
前記異常時制御手段は、前記温度の異常が検出されていない他の前記第２の情報処理手段のうちのいずれかを選択し、前記温度の異常が検出された前記第２の情報処理手段により実行されている処理が、選択された他の前記第２の情報処理手段により実行されることにより、処理の割り当てが変更されるように、前記分散処理制御手段を制御する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記異常時制御手段は、前記記録手段により記録されている前記第１の情報に基づいて、前記温度検出手段により検出された前記近傍の温度が低い前記第２の情報処理手段を優先的に処理の割り当て先として選択する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記異常時制御手段は、前記記録手段により記録されている前記第２の情報に基づいて、近傍の他の第２の情報処理手段において処理が実行されていない前記第２の情報処理手段を優先的に処理の割り当て先として選択する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項５】
前記異常時制御手段は、前記温度の異常が検出されていない他の前記第２の情報処理手段のうちのいずれかを選択し、前記温度の異常が検出された前記第２の情報処理手段により実行されている処理と、選択された他の前記第２の情報処理手段により実行されている処理とが交換されて実行されることにより、処理の割り当てが変更されるように、前記分散処理制御手段を制御する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記異常時制御手段は、前記記録手段により記録されている前記第１の情報に基づいて、前記温度検出手段により検出された前記近傍の温度が低い前記第２の情報処理手段を優先的に処理の交換先として選択する
ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記異常時制御手段は、前記記録手段により記録されている前記第２の情報に基づいて、近傍の他の第２の情報処理手段において処理が実行されていない前記第２の情報処理手段を優先的に処理の交換先として選択する
ことを特徴とする請求項５に記載の情報処理装置。
【請求項８】
他の情報処理装置と情報を通信する通信手段を更に備える
ことを特徴とする請求項１に記載の情報処理装置。
【請求項９】
前記通信手段により通信可能な少なくとも１つの前記他の情報処理装置とで構成されるネットワークシステムにおいて、自分自身がマスタ装置である場合、
前記通信手段は、前記他の情報処理装置から、前記他の情報処理装置における前記第１の情報および前記第２の情報を受信し、
前記記録手段は、前記通信手段により受信された前記第１の情報および前記第２の情報を更に記録し、
前記異常検出手段は、前記記録手段により記録された前記第１の情報に基づいて、前記通信手段により通信可能な前記他の情報処理装置において発生した温度の異常を更に検出し、
前記異常時制御手段は、前記異常検出手段により前記温度の異常が検出された場合、前記記録手段により記録されている自分自身および前記他の情報処理装置の前記第１の情報および前記第２の情報に基づいて、前記温度の異常が検出された前記第２の情報処理手段により実行されている処理の割り当てを変更するように、前記分散処理制御手段を制御し、
前記ネットワークシステムにおいて、自分自身がスレーブ装置である場合、
前記通信手段は、前記記録手段により記録されている前記第１の情報および前記第２の情報を、前記ネットワークシステムにおけるマスタ装置へ送信する
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記異常時制御手段は、前記異常検出手段により前記温度の異常が検出された場合、前記通信手段により通信可能な前記他の情報処理装置に、前記他の情報処理装置における前記第１の情報および前記第２の情報の送信を要求する第１の信号を生成し、
前記通信手段は、前記第１の信号を前記他の情報処理装置へ送信するとともに、前記他の情報処理装置から、前記第１の情報および前記第２の情報に対応する第２の信号を受信し、
前記異常時制御手段は、前記通信手段により受信された前記第２の信号を基に、前記温度の異常が検出された前記第２の情報処理手段により実行されている処理の割り当てを変更するように、前記分散処理制御手段を制御する
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１１】
前記異常時制御手段は、前記異常検出手段により前記温度の異常が検出された場合、前記通信手段により通信可能な前記他の情報処理装置に、前記温度の異常が検出された前記第２の情報処理手段により実行されている処理の実行を要求する第１の信号を生成し、
前記通信手段は、前記第１の信号を前記他の情報処理装置へ送信するとともに、前記他の情報処理装置から、前記第１の信号に対する返信である第２の信号を受信し、
前記異常時制御手段は、前記通信手段により受信された前記第２の信号を基に、前記温度の異常が検出された前記第２の情報処理手段により実行されている処理の割り当てを変更するように、前記分散処理制御手段を制御する
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１２】
前記第１の情報処理手段および前記第２の情報処理手段を含む情報処理ユニットを複数含む
ことを特徴とする請求項１に記載の情報処理装置。
【請求項１３】
前記第１の情報処理手段および前記第２の情報処理手段を含む情報処理ユニットの消費電力を測定する電力測定手段を更に備え、
前記記録手段は、前記電力測定手段により測定された前記消費電力に関する情報を更に記録し、
前記異常検出手段は、前記電力測定手段により測定された前記消費電力の異常を更に検出し、
前記異常時制御手段は、前記異常検出手段により前記温度の異常、または、前記消費電力の異常が検出された場合、前記分散処理制御手段による前記分散処理を制御する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項１４】
第１の情報処理手段と、
複数の第２の情報処理手段と
を備える情報処理装置の情報処理方法であって、
前記第１の情報処理手段によるアプリケーションプログラムの実行によって、複数の前記第２の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、前記処理単位に対応する前記機能を提供するための分散処理の開始を要求する分散処理開始要求ステップと、
前記第１の情報処理手段または前記第２の情報処理手段近傍に発生する温度情報を取得する温度情報取得ステップと、
前記温度情報取得ステップの処理により取得された前記温度情報の異常を検出する異常検出ステップと、
前記異常検出ステップの処理により検出された前記温度の異常は、前記第１の情報処理手段または前記第２の情報処理手段のうちのいずれの近傍で発生したかを判断する判断ステップと、
前記温度情報取得ステップの処理により取得された前記温度情報、および、前記判断ステップの処理による判断手段による判断結果を基に、前記温度の異常が検出された前記第２の情報処理手段により実行されている処理の割り当てを変更するように、前記分散処理を制御する分散処理制御ステップと
を含むことを特徴とする情報処理方法。
【請求項１５】
第１の情報処理手段と、
複数の第２の情報処理手段と
を用いた分散処理を制御するコンピュータが実行可能なプログラムであって、
前記第１の情報処理手段によるアプリケーションプログラムの実行によって、複数の前記第２の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、前記処理単位に対応する前記機能を提供するための分散処理の開始を要求する分散処理開始要求ステップと、
前記第１の情報処理手段または前記第２の情報処理手段近傍に発生する温度情報を取得する温度情報取得ステップと、
前記温度情報取得ステップの処理により取得された前記温度情報の異常を検出する異常検出ステップと、
前記異常検出ステップの処理により検出された前記温度の異常は、前記第１の情報処理手段または前記第２の情報処理手段のうちのいずれの近傍で発生したかを判断する判断ステップと、
前記温度情報取得ステップの処理により取得された前記温度情報、および、前記判断ステップの処理による判断手段による判断結果を基に、前記温度の異常が検出された前記第２の情報処理手段により実行されている処理の割り当てを変更するように、前記分散処理を制御する分散処理制御ステップと
を含むことを特徴とする処理をコンピュータに実行させるためのプログラム。
【請求項１６】
第１の情報処理手段と、
複数の第２の情報処理手段と、
前記第１の情報処理手段および前記第２の情報処理手段を含む情報処理ユニットが消費する電力を測定する電力測定手段と、
他の情報処理装置と情報を通信する通信手段と
を備え、
前記第１の情報処理手段は、
アプリケーションプログラムの実行を制御するアプリケーションプログラム実行制御手段と、
前記アプリケーションプログラム実行制御手段の処理により実行が制御される前記アプリケーションプログラムによって、複数の前記第２の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、前記処理単位に対応する前記機能を提供するための分散処理を制御する分散処理制御手段と、
前記電力測定手段により測定された前記電力に関する第１の情報、および、前記第２の情報処理手段による処理の実行に関する第２の情報を記録する記録手段と、
前記電力測定手段により測定された前記電力の異常を検出する異常検出手段と、
前記異常検出手段により前記電力の異常が検出された場合、前記分散処理制御手段による前記分散処理を制御する異常時制御手段と
を備え、
前記異常時制御手段は、前記異常検出手段により前記電力の異常が検出された場合、前記記録手段により記録されている前記第１の情報および前記第２の情報に基づいて、前記電力の異常が検出された前記第２の情報処理手段により実行されている処理の割り当てを変更するように、前記分散処理制御手段を制御する
ことを特徴とする情報処理装置。
【請求項１７】
前記通信手段により通信可能な少なくとも１つの前記他の情報処理装置とで構成されるネットワークシステムにおいて、自分自身がマスタ装置である場合、
前記通信手段は、前記他の情報処理装置から、前記他の情報処理装置における前記第１の情報および前記第２の情報を受信し、
前記記録手段は、前記通信手段により受信された前記第１の情報および前記第２の情報を更に記録し、
前記異常検出手段は、前記記録手段により記録された前記第１の情報に基づいて、前記通信手段により通信可能な前記他の情報処理装置において発生した電力の異常を更に検出し、
前記異常時制御手段は、前記異常検出手段により前記電力の異常が検出された場合、前記記録手段により記録されている自分自身および前記他の情報処理装置の前記第１の情報および前記第２の情報に基づいて、前記電力の異常が検出された前記第２の情報処理手段により実行されている処理の割り当てを変更するように、前記分散処理制御手段を制御し、
前記ネットワークシステムにおいて、自分自身がスレーブ装置である場合、
前記通信手段は、前記記録手段により記録されている前記第１の情報および前記第２の情報を、前記ネットワークシステムにおけるマスタ装置へ送信する
ことを特徴とする請求項１６に記載の情報処理装置。
【請求項１８】
前記異常時制御手段は、前記異常検出手段により前記電力の異常が検出された場合、前記通信手段により通信可能な前記他の情報処理装置に、前記他の情報処理装置における前記第１の情報および前記第２の情報の送信を要求する第１の信号を生成し、
前記通信手段は、前記第１の信号を前記他の情報処理装置へ送信するとともに、前記他の情報処理装置から、前記第１の情報および前記第２の情報に対応する第２の信号を受信し、
前記異常時制御手段は、前記通信手段により受信された前記第２の信号を基に、前記電力の異常が検出された前記第２の情報処理手段により実行されている処理の割り当てを変更するように、前記分散処理制御手段を制御する
ことを特徴とする請求項１６に記載の情報処理装置。
【請求項１９】
前記異常時制御手段は、前記異常検出手段により前記電力の異常が検出された場合、前記通信手段により通信可能な前記他の情報処理装置に、前記電力の異常が検出された前記第２の情報処理手段により実行されている処理の実行を要求する第１の信号を生成し、
前記通信手段は、前記第１の信号を前記他の情報処理装置へ送信するとともに、前記他の情報処理装置から、前記第１の信号に対する返信である第２の信号を受信し、
前記異常時制御手段は、前記通信手段により受信された前記第２の信号を基に、前記電力の異常が検出された前記第２の情報処理手段により実行されている処理の割り当てを変更するように、前記分散処理制御手段を制御する
ことを特徴とする請求項１６に記載の情報処理装置。
【請求項２０】
前記異常時制御手段は、前記電力の異常が検出されていない他の情報処理ユニットのうちのいずれかを選択し、前記電力の異常が検出された前記第２の情報処理手段により実行されている処理が、選択された他の前記情報処理ユニットにより実行されることにより、処理の割り当てが変更されるように、前記分散処理制御手段を制御する
ことを特徴とする請求項１６に記載の情報処理装置。
【請求項２１】
前記異常時制御手段は、前記電力検出手段により検出された前記電力が少ない前記情報処理ユニットを優先的に処理の割り当て先として選択する
ことを特徴とする請求項２０に記載の情報処理装置。
【請求項２２】
前記異常時制御手段は、電力源として電池またはバッテリを用いている前記情報処理ユニットより、電力源としてＡＣ電源を用いている前記情報処理ユニットを優先的に処理の割り当て先として選択する
ことを特徴とする請求項２０に記載の情報処理装置。
【請求項２３】
前記異常時制御手段は、前記電力の異常が検出されていない他の前記情報処理ユニットのうちのいずれかを選択し、前記電力の異常が検出された前記第２の情報処理手段により実行されている処理と、選択された他の前記情報処理ユニットにより実行されている処理とが交換されて実行されることにより、処理の割り当てが変更されるように、前記分散処理制御手段を制御する
ことを特徴とする請求項１６に記載の情報処理装置。
【請求項２４】
前記異常時制御手段は、前記電力検出手段により検出された前記電力が少ない前記情報処理ユニットを優先的に処理の交換先として選択する
ことを特徴とする請求項２３に記載の情報処理装置。
【請求項２５】
前記異常時制御手段は、電力源として電池またはバッテリを用いている前記情報処理ユニットより、電力源としてＡＣ電源を用いている前記情報処理ユニットを優先的に処理の交換先として選択する
ことを特徴とする請求項２３に記載の情報処理装置。
【請求項２６】
前記情報処理ユニットは複数備えられている
ことを特徴とする請求項１６に記載の情報処理装置。
【請求項２７】
第１の情報処理手段と、
複数の第２の情報処理手段と
を備える情報処理装置の情報処理方法であって、
前記第１の情報処理手段によるアプリケーションプログラムの実行によって、複数の前記第２の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、前記処理単位に対応する前記機能を提供するための分散処理の開始を要求する分散処理開始要求ステップと、
前記第１の情報処理手段および前記第２の情報処理手段を含む情報処理ユニットが消費する電力に関する情報を取得する電力情報取得ステップと、
前記電力情報取得ステップの処理により取得された前記電力に関する情報の異常を検出する異常検出ステップと、
前記電力情報取得ステップの処理により取得された前記電力情報を基に、前記電力の異常が検出された前記情報処理ユニットの前記第２の情報処理手段により実行されている処理の割り当てを変更するように、前記分散処理を制御する分散処理制御ステップと
を含むことを特徴とする情報処理方法。
【請求項２８】
第１の情報処理手段と、
複数の第２の情報処理手段と
を用いた分散処理を制御するコンピュータが実行可能なプログラムであって、
前記第１の情報処理手段によるアプリケーションプログラムの実行によって、複数の前記第２の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、前記処理単位に対応する前記機能を提供するための分散処理の開始を要求する分散処理開始要求ステップと、
前記第１の情報処理手段および前記第２の情報処理手段を含む情報処理ユニットが消費する電力に関する情報を取得する電力情報取得ステップと、
前記電力情報取得ステップの処理により取得された前記電力に関する情報の異常を検出する異常検出ステップと、
前記電力情報取得ステップの処理により取得された前記電力情報を基に、前記電力の異常が検出された前記情報処理ユニットの前記第２の情報処理手段により実行されている処理の割り当てを変更するように、前記分散処理を制御する分散処理制御ステップと
を含むことを特徴とする処理をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および情報処理方法、並びに、プログラムに関し、特に、複数のプロセッサによる分散処理が実行される場合に用いて好適な、情報処理装置および情報処理方法、並びに、プログラムに関する。
【背景技術】
【０００２】
近年、複数のプロセッサまたはコンピュータを用いて、処理を分散して実行させる、分散処理が注目されている。分散処理を行う方法としては、通信網を介して接続されている複数のコンピュータに処理を実行させる方法、１つのコンピュータに設けられた、複数のプロセッサに処理を実行させる方法、および上述した２つの方法を組み合わせて処理を実行させる方法がある。
【０００３】
分散処理の実行を要求（指示）する装置、または、プロセッサは、分散処理を実行するために必要なデータおよびプログラムを、分散処理を実行させる他の装置、または、他のプロセッサあてに送信する。分散処理を実行するために必要なデータおよびプログラムを受信した装置、または、プロセッサは、要求された処理を実行し、要求された処理を施したデータを、分散処理の要求元である装置、または、プロセッサあてに送信する。
【０００４】
分散処理の要求元である装置、または、プロセッサは、分散処理を実行させる他の装置、または、他のプロセッサから送信されてきたデータを受信し、受信したデータを基に、所定の処理を行うか、受信したデータを記録する。
【０００５】
従来、上述したように、均一なモジュラー構造、共通のコンピューティング・モジュール、および均一なソフトウェアセルを用いて分散処理を実行させることによって、高速処理用コンピュータ・アーキテクチャを実現する技術がある（例えば、特許文献１乃至特許文献５）
【０００６】
また、近年、情報処理装置のクロック速度の向上と集積度の向上により、非常に高速なプロセッサを同じチップ上に複数集積することが可能になったため、複数のプロセッサによる分散処理は、大型の装置を用いることなく、実現可能なようになっている。
【０００７】
【特許文献１】特開２００２−３４２１６５号公報
【特許文献２】特開２００２−３５１８５０号公報
【特許文献３】特開２００２−３５８２８９号公報
【特許文献４】特開２００２−３６６５３３号公報
【特許文献５】特開２００２−３６６５３４号公報
【０００８】
上述した特許文献において、基本となる処理用モジュールはプロセッサ・エレメント（ＰＥ）である。ＰＥは、処理ユニット（ＰＵ）、ダイレクト・メモリ・アクセス・コントローラ（DMAC）および複数の付加処理ユニット（ＡＰＵ）、すなわち、メインプロセッサに対する複数のサブプロセッサを具備するようになされている。
【０００９】
また、従来のプロセッサシステムにおける電力制御方式には、ネットワークおよびシステムコントローラを常時稼働させ、各プロセッサの動作を停止・再開させて電力制御を行うことができるもの（例えば、特許文献６）、負荷に応じて、動作周波数と電源電圧を制御するもの（例えば、特許文献７）、フォルト・トレラントシステムを利用して、故障したＣＰＵの電力を遮断することによりシステム電力制御を行うもの（例えば、特許文献８）、マルチプロセッサシステムにおいて負荷のない状態を自動的に検知し、クロック周波数を制御することで電力制御を行うもの（例えば、特許文献９）、環境や状況の変化に適応させて、適切に機器の連携動作を制御することで電力制御を行うもの（例えば、特許文献１０）などがある。
【００１０】
【特許文献６】特開平９−３４６０１号公報
【特許文献７】特開２００２−３０４２３２号公報
【特許文献８】特表２００１−５２６８０９号公報
【特許文献９】特開２０００−１１２５５９号公報
【特許文献１０】特開２００１−１４５１７４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
近年、情報処理装置のクロック速度の向上と集積度の向上により、非常に高速なプロセッサを同じチップ上に複数集積することができるようになった。このため、１つのチップに集積された複数のプロセッサを用いて、それぞれのプロセッサに独立したプログラムを実行させ、論理的に１つの機能（論理スレッド）として結果を求める処理を実行させた場合、このチップ内で機能しているプロセッサに対応する位置において発生する熱量は、従来と比較して格段に高くなってきている（プロセッサの熱密度が高くなっている）。
【００１２】
したがって、従来においては考慮する必要がなかったチップ上のそれぞれのプロセッサの配置に対応する部分の温度上昇を考慮しなければ、熱暴走や故障などが発生する懸念がある。しかしながら、従来の分散処理システムにおいては、チップ上のそれぞれのプロセッサの配置に対応する部分が、正常動作できる温度範囲内で動作していることを保証し、素子の劣化を防ぎながら、信頼性の高い情報処理を、それぞれのプロセッサに行わせることができなかった。
【００１３】
また、従来の分散処理システムにおいては、チップの温度上昇が考慮されていなかったため、いずれかのプロセッサに対応する部分の温度上昇の状態に対応させて、複数のプロセッサ間における処理（スレッド）を移動させたり、交換させる技術はなかった。換言すれば、分散処理システムにおける論理スレッドの配分や、処理（スレッド）の移動先または交換先となるプロセッサの選択において、プロセッサの動作状況、チップ上の温度、チップ上のサブプロセッサの配置は考慮されていなかった。
【００１４】
また、情報処理装置のクロック速度の向上と集積度の向上により、処理に必要な消費電力も、従来と比較して格段に高くなってきているが、従来のプロセッサシステムにおける電力制御方式は、その装置が行うべき処理に必用な電力以外を如何に小さくするか、という目的で行われていた。そのため、従来、分散処理システムを実行することが可能な情報処理装置においては、クロック速度の向上と集積度の向上にともなって、プロセッサ（またはプロセッサ群）に供給される電力が不足してしまう場合や、プロセッサ（またはプロセッサ群）の消費電力を一定値以下に抑えつつ、動作を継続させたい場合に対して、考慮されることはなかった。
【００１５】
本発明はこのような状況に鑑みてなされたものであり、分散処理実行中のいずれかのプロセッサの温度上昇、または、電力供給量が異常な状態に陥っても、論理スレッドとして動作している機能を正常な状態に保ち、素子の劣化を防ぎながら、信頼性の高い情報処理を実行させるようにすることができるようにするものである。
【課題を解決するための手段】
【００１６】
本発明の第１の情報処理装置は、第１の情報処理手段と、複数の第２の情報処理手段と、第１の情報処理装置および第２の情報処理手段の近傍の温度をそれぞれ検出する複数の温度検出手段とを備え、第１の情報処理手段は、アプリケーションプログラムの実行を制御するアプリケーションプログラム実行制御手段と、アプリケーションプログラム実行制御手段の処理により実行が制御されるアプリケーションプログラムによって、複数の第２の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、処理単位に対応する機能を提供するための分散処理を制御する分散処理制御手段と、温度検出手段により検出された温度に関する第１の情報、および、第２の情報処理手段による処理の実行に関する第２の情報を記録する記録手段と、温度検出手段により検出された温度の異常を検出する異常検出手段と、異常検出手段により温度の異常が検出された場合、分散処理制御手段による分散処理を制御する異常時制御手段とを備え、異常時制御手段は、異常検出手段により温度の異常が検出された場合、記録手段により記録されている第１の情報および第２の情報に基づいて、温度の異常が検出された第２の情報処理手段により実行されている処理の割り当てを変更するように、分散処理制御手段を制御することを特徴とする。
【００１７】
異常時制御手段には、温度の異常が検出されていない他の第２の情報処理手段のうちのいずれかを選択させるようにすることができ、温度の異常が検出された第２の情報処理手段により実行されている処理が、選択された他の第２の情報処理手段により実行されることにより、処理の割り当てが変更されるように、分散処理制御手段を制御させるようにすることができる。
【００１８】
異常時制御手段には、記録手段により記録されている第１の情報に基づいて、温度検出手段により検出された近傍の温度が低い第２の情報処理手段を優先的に処理の割り当て先として選択させるようにすることができる。
【００１９】
異常時制御手段には、記録手段により記録されている第２の情報に基づいて、近傍の他の第２の情報処理手段において処理が実行されていない第２の情報処理手段を優先的に処理の割り当て先として選択させるようにすることができる。
【００２０】
異常時制御手段には、温度の異常が検出されていない他の第２の情報処理手段のうちのいずれかを選択させるようにすることができ、温度の異常が検出された第２の情報処理手段により実行されている処理と、選択された他の第２の情報処理手段により実行されている処理とが交換されて実行されることにより、処理の割り当てが変更されるように、分散処理制御手段を制御させるようにすることができる。
【００２１】
異常時制御手段には、記録手段により記録されている第１の情報に基づいて、温度検出手段により検出された近傍の温度が低い第２の情報処理手段を優先的に処理の交換先として選択させるようにすることができる。
【００２２】
異常時制御手段には、記録手段により記録されている第２の情報に基づいて、近傍の他の第２の情報処理手段において処理が実行されていない第２の情報処理手段を優先的に処理の交換先として選択させるようにすることができる。
【００２３】
他の情報処理装置と情報を通信する通信手段を更に備えさせるようにすることができる。
【００２４】
通信手段により通信可能な少なくとも１つの他の情報処理装置とで構成されるネットワークシステムにおいて、自分自身がマスタ装置である場合、通信手段には、他の情報処理装置から、他の情報処理装置における第１の情報および第２の情報を受信させるようにすることができ、記録手段には、通信手段により受信された第１の情報および第２の情報を更に記録させるようにすることができ、異常検出手段には、記録手段により記録された第１の情報に基づいて、通信手段により通信可能な他の情報処理装置において発生した温度の異常を更に検出させるようにすることができ、異常時制御手段には、異常検出手段により温度の異常が検出された場合、記録手段により記録されている自分自身および他の情報処理装置の第１の情報および第２の情報に基づいて、温度の異常が検出された第２の情報処理手段により実行されている処理の割り当てを変更するように、分散処理制御手段を制御させるようにすることができ、ネットワークシステムにおいて、自分自身がスレーブ装置である場合、通信手段には、記録手段により記録されている第１の情報および第２の情報を、ネットワークシステムにおけるマスタ装置へ送信させるようにすることができる。
【００２５】
異常時制御手段には、異常検出手段により温度の異常が検出された場合、通信手段により通信可能な他の情報処理装置に、他の情報処理装置における第１の情報および第２の情報の送信を要求する第１の信号を生成させるようにすることができ、通信手段には、第１の信号を他の情報処理装置へ送信させるようにすることができるとともに、他の情報処理装置から、第１の情報および第２の情報に対応する第２の信号を受信させるようにすることができ、異常時制御手段には、通信手段により受信された第２の信号を基に、温度の異常が検出された第２の情報処理手段により実行されている処理の割り当てを変更するように、分散処理制御手段を制御させるようにすることができる。
【００２６】
異常時制御手段には、異常検出手段により温度の異常が検出された場合、通信手段により通信可能な他の情報処理装置に、温度の異常が検出された第２の情報処理手段により実行されている処理の実行を要求する第１の信号を生成させるようにすることができ、通信手段には、第１の信号を他の情報処理装置へ送信するとともに、他の情報処理装置から、第１の信号に対する返信である第２の信号を受信させるようにすることができ、異常時制御手段には、通信手段により受信された第２の信号を基に、温度の異常が検出された第２の情報処理手段により実行されている処理の割り当てを変更するように、分散処理制御手段を制御させるようにすることができる。
【００２７】
第１の情報処理手段および第２の情報処理手段を含む情報処理ユニットを複数含むものとすることができる。
【００２８】
第１の情報処理手段および第２の情報処理手段を含む情報処理ユニットの消費電力を測定する電力測定手段を更に備えさせるようにすることができ、記録手段には、電力測定手段により測定された消費電力に関する情報を更に記録させるようにすることができ、異常検出手段には、電力測定手段により測定された消費電力の異常を更に検出させるようにすることができ、異常時制御手段には、異常検出手段により温度の異常、または、消費電力の異常が検出された場合、分散処理制御手段による分散処理を制御させるようにすることができる。
【００２９】
本発明の第１の情報処理方法は、第１の情報処理手段と、複数の第２の情報処理手段と
を備える情報処理装置の情報処理方法であって、第１の情報処理手段によるアプリケーションプログラムの実行によって、複数の第２の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、処理単位に対応する機能を提供するための分散処理の開始を要求する分散処理開始要求ステップと、第１の情報処理手段または第２の情報処理手段近傍に発生する温度情報を取得する温度情報取得ステップと、温度情報取得ステップの処理により取得された温度情報の異常を検出する異常検出ステップと、異常検出ステップの処理により検出された温度の異常は、第１の情報処理手段または第２の情報処理手段のうちのいずれの近傍で発生したかを判断する判断ステップと、温度情報取得ステップの処理により取得された温度情報、および、判断ステップの処理による判断手段による判断結果を基に、温度の異常が検出された第２の情報処理手段により実行されている処理の割り当てを変更するように、分散処理を制御する分散処理制御ステップとを含むことを特徴とする。
【００３０】
本発明の第１のプログラムは、第１の情報処理手段と、複数の第２の情報処理手段とを用いた分散処理を制御するコンピュータが実行可能なプログラムであって、第１の情報処理手段によるアプリケーションプログラムの実行によって、複数の第２の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、処理単位に対応する機能を提供するための分散処理の開始を要求する分散処理開始要求ステップと、第１の情報処理手段または第２の情報処理手段近傍に発生する温度情報を取得する温度情報取得ステップと、温度情報取得ステップの処理により取得された温度情報の異常を検出する異常検出ステップと、異常検出ステップの処理により検出された温度の異常は、第１の情報処理手段または第２の情報処理手段のうちのいずれの近傍で発生したかを判断する判断ステップと、温度情報取得ステップの処理により取得された温度情報、および、判断ステップの処理による判断手段による判断結果を基に、温度の異常が検出された第２の情報処理手段により実行されている処理の割り当てを変更するように、分散処理を制御する分散処理制御ステップとを含むことを特徴とする処理をコンピュータに実行させる。
【００３１】
本発明の第１の情報処理装置および情報処理方法、並びにプログラムにおいては、第１の情報処理手段によるアプリケーションプログラムの実行によって、分散処理の開始が要求され、第１の情報処理手段または第２の情報処理手段近傍に発生する温度情報が取得され、温度情報の異常が検出され、検出された温度の異常は、第１の情報処理手段または第２の情報処理手段のうちのいずれの近傍で発生したかが判断され、温度情報および判断結果を基に、温度の異常が検出された第２の情報処理手段により実行されている処理の割り当てが変更されるように、分散処理が制御される。
【００３２】
本発明の第２の情報処理装置は、第１の情報処理手段と、複数の第２の情報処理手段と、第１の情報処理手段および第２の情報処理手段を含む情報処理ユニットが消費する電力を測定する電力測定手段と、他の情報処理装置と情報を通信する通信手段とを備え、第１の情報処理手段は、アプリケーションプログラムの実行を制御するアプリケーションプログラム実行制御手段と、アプリケーションプログラム実行制御手段の処理により実行が制御されるアプリケーションプログラムによって、複数の第２の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、処理単位に対応する機能を提供するための分散処理を制御する分散処理制御手段と、電力測定手段により測定された電力に関する第１の情報、および、第２の情報処理手段による処理の実行に関する第２の情報を記録する記録手段と、電力測定手段により測定された電力の異常を検出する異常検出手段と、異常検出手段により電力の異常が検出された場合、分散処理制御手段による分散処理を制御する異常時制御手段とを備え、異常時制御手段は、異常検出手段により電力の異常が検出された場合、記録手段により記録されている第１の情報および第２の情報に基づいて、電力の異常が検出された第２の情報処理手段により実行されている処理の割り当てを変更するように、分散処理制御手段を制御することを特徴とする。
【００３３】
通信手段により通信可能な少なくとも１つの他の情報処理装置とで構成されるネットワークシステムにおいて、自分自身がマスタ装置である場合、通信手段には、他の情報処理装置から、他の情報処理装置における第１の情報および第２の情報を受信させるようにすることができ、記録手段には、通信手段により受信された第１の情報および第２の情報を更に記録させるようにすることができ、異常検出手段には、記録手段により記録された第１の情報に基づいて、通信手段により通信可能な他の情報処理装置において発生した電力の異常を更に検出させるようにすることができ、異常時制御手段には、異常検出手段により電力の異常が検出された場合、記録手段により記録されている自分自身および他の情報処理装置の第１の情報および第２の情報に基づいて、電力の異常が検出された第２の情報処理手段により実行されている処理の割り当てを変更するように、分散処理制御手段を制御させるようにすることができ、ネットワークシステムにおいて、自分自身がスレーブ装置である場合、通信手段には、記録手段により記録されている第１の情報および第２の情報を、ネットワークシステムにおけるマスタ装置へ送信させるようにすることができる。
【００３４】
異常時制御手段には、異常検出手段により電力の異常が検出された場合、通信手段により通信可能な他の情報処理装置に、他の情報処理装置における第１の情報および第２の情報の送信を要求する第１の信号を生成させるようにすることができ、通信手段には、第１の信号を他の情報処理装置へ送信するとともに、他の情報処理装置から、第１の情報および第２の情報に対応する第２の信号を受信させるようにすることができ、異常時制御手段には、通信手段により受信された第２の信号を基に、電力の異常が検出された第２の情報処理手段により実行されている処理の割り当てを変更するように、分散処理制御手段を制御させるようにすることができる。
【００３５】
異常時制御手段には、異常検出手段により電力の異常が検出された場合、通信手段により通信可能な他の情報処理装置に、電力の異常が検出された第２の情報処理手段により実行されている処理の実行を要求する第１の信号を生成させるようにすることができ、通信手段には、第１の信号を他の情報処理装置へ送信するとともに、他の情報処理装置から、第１の信号に対する返信である第２の信号を受信させるようにすることができ、異常時制御手段には、通信手段により受信された第２の信号を基に、電力の異常が検出された第２の情報処理手段により実行されている処理の割り当てを変更するように、分散処理制御手段を制御させるようにすることができる。
【００３６】
異常時制御手段には、電力の異常が検出されていない他の情報処理ユニットのうちのいずれかを選択し、電力の異常が検出された第２の情報処理手段により実行されている処理が、選択された他の情報処理ユニットにより実行されることにより、処理の割り当てが変更されるように、分散処理制御手段を制御させるようにすることができる。
【００３７】
異常時制御手段には、電力検出手段により検出された電力が少ない情報処理ユニットを優先的に処理の割り当て先として選択させるようにすることができる。
【００３８】
異常時制御手段には、電力源として電池またはバッテリを用いている情報処理ユニットより、電力源としてＡＣ電源を用いている情報処理ユニットを優先的に処理の割り当て先として選択させるようにすることができる。
【００３９】
異常時制御手段には、電力の異常が検出されていない他の情報処理ユニットのうちのいずれかを選択させるようにすることができ、電力の異常が検出された第２の情報処理手段により実行されている処理と、選択された他の情報処理ユニットにより実行されている処理とが交換されて実行されることにより、処理の割り当てが変更されるように、分散処理制御手段を制御させるようにすることができる。
【００４０】
異常時制御手段には、電力検出手段により検出された電力が少ない情報処理ユニットを優先的に処理の交換先として選択させるようにすることができる。
【００４１】
異常時制御手段には、電力源として電池またはバッテリを用いている情報処理ユニットより、電力源としてＡＣ電源を用いている情報処理ユニットを優先的に処理の交換先として選択させるようにすることができる
【００４２】
情報処理ユニットは複数備えられているものとすることができる。
【００４３】
本発明の第２の情報処理方法は、第１の情報処理手段と、複数の第２の情報処理手段とを備える情報処理装置の情報処理方法であって、第１の情報処理手段によるアプリケーションプログラムの実行によって、複数の第２の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、処理単位に対応する機能を提供するための分散処理の開始を要求する分散処理開始要求ステップと、第１の情報処理手段および第２の情報処理手段を含む情報処理ユニットが消費する電力に関する情報を取得する電力情報取得ステップと、電力情報取得ステップの処理により取得された電力に関する情報の異常を検出する異常検出ステップと、電力情報取得ステップの処理により取得された電力情報を基に、電力の異常が検出された情報処理ユニットの第２の情報処理手段により実行されている処理の割り当てを変更するように、分散処理を制御する分散処理制御ステップとを含むことを特徴とする。
【００４４】
本発明の第２のプログラムは、第１の情報処理手段と、複数の第２の情報処理手段とを用いた分散処理をコンピュータに実行させるためのプログラムであって、第１の情報処理手段によるアプリケーションプログラムの実行によって、複数の第２の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、処理単位に対応する機能を提供するための分散処理の開始を要求する分散処理開始要求ステップと、第１の情報処理手段および第２の情報処理手段を含む情報処理ユニットが消費する電力に関する情報を取得する電力情報取得ステップと、電力情報取得ステップの処理により取得された電力に関する情報の異常を検出する異常検出ステップと、電力情報取得ステップの処理により取得された電力情報を基に、電力の異常が検出された情報処理ユニットの第２の情報処理手段により実行されている処理の割り当てを変更するように、分散処理を制御する分散処理制御ステップとを含むことを特徴とする処理をコンピュータに実行させる。
【００４５】
本発明の第２の情報処理装置および情報処理方法、並びに、プログラムにおいては、第１の情報処理手段によるアプリケーションプログラムの実行によって、分散処理の開始が要求され、第１の情報処理手段および第２の情報処理手段を含む情報処理ユニットが消費する電力に関する情報が取得され、取得された電力に関する情報の異常が検出され、電力情報を基に、電力の異常が検出された情報処理ユニットの第２の情報処理手段により実行されている処理の割り当てが変更されるように、分散処理が制御される。
【発明の効果】
【００４６】
本発明によると、分散処理を実行させることができる。特に、プロセッサの温度情報が取得されて、温度に異常が発生した場合、処理の割り当てが変更されるように、分散処理が制御されるので、論理スレッドとして動作している機能を正常な状態に保ち、素子の劣化を防ぎながら、信頼性の高い情報処理を実行させるようにすることができる。
【００４７】
また、他の本発明によると、分散処理を実行させることができる。特に、プロセッサが消費する電力に関する情報が取得されて、消費電力量に異常が発生した場合、処理の割り当てが変更されるように、分散処理が制御されるので、論理スレッドとして動作している機能を正常な状態に保ち、素子の劣化を防ぎながら、信頼性の高い情報処理を実行させるようにすることができる。
【発明を実施するための最良の形態】
【００４８】
以下に本発明の実施の形態を説明するが、本明細書に記載の発明と、発明の実施の形態との対応関係を例示すると、次のようになる。この記載は、本明細書に記載されている発明をサポートする実施の形態が、本明細書に記載されていることを確認するためのものである。したがって、発明の実施の形態中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
【００４９】
更に、この記載は、本明細書に記載されている発明の全てを意味するものでもない。換言すれば、この記載は、本明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現、追加される発明の存在を否定するものではない。
【００５０】
請求項１に記載の情報処理装置は、第１の情報処理手段（例えば、メインプロセッサ４２）と、複数の第２の情報処理手段（例えば、サブンプロセッサ４３）と、第１の情報処理装置および第２の情報処理手段の近傍の温度をそれぞれ検出する複数の温度検出手段（例えば、温度検出部１２１）とを備え、第１の情報処理手段は、アプリケーションプログラムの実行を制御するアプリケーションプログラム実行制御手段（例えば、演算処理部１６１）と、アプリケーションプログラム実行制御手段の処理により実行が制御されるアプリケーションプログラムによって、複数の第２の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、処理単位に対応する機能を提供するための分散処理を制御する分散処理制御手段（例えば、論理スレッド管理処理部１６３、論理スレッド管理処理部２１７、または、論理スレッド管理処理部４５７）と、温度検出手段により検出された温度に関する第１の情報、および、第２の情報処理手段による処理の実行に関する第２の情報を記録する記録手段（例えば、温度管理テーブル１６７、温度管理テーブル２１５、温度管理テーブル２３３、または、温度・電力管理テーブル４５２）と、温度検出手段により検出された温度の異常を検出する異常検出手段（例えば、温度上昇検出部１６８、または、異常検出部４５３）と、異常検出手段により温度の異常が検出された場合、分散処理制御手段による分散処理を制御する異常時制御手段（例えば、温度異常対応処理制御部１６９、温度異常対応処理制御部２１６、温度異常対応処理制御部２３４、温度異常対応処理制御部２５２、または、異常対応処理制御部４５５）とを備え、異常時制御手段は、異常検出手段により温度の異常が検出された場合、記録手段により記録されている第１の情報および第２の情報に基づいて、温度の異常が検出された第２の情報処理手段により実行されている処理の割り当てを変更するように、分散処理制御手段を制御することを特徴とする。
【００５１】
他の情報処理装置と情報を通信する通信手段（例えば、通信部１６）を更に備えることができる。
【００５２】
第１の情報処理手段および第２の情報処理手段を含む情報処理ユニット（例えば、情報処理コントローラ）を複数含むことができる。
【００５３】
第１の情報処理手段および第２の情報処理手段を含む情報処理ユニット（例えば、情報処理コントローラ）の消費電力を測定する電力測定手段（例えば、電力測定部３２１）を更に備えることができ、記録手段（例えば、温度・電力管理テーブル４５２）は、電力測定手段により測定された消費電力に関する情報を更に記録することができ、異常検出手段（例えば、異常検出部４５３）は、電力測定手段により測定された消費電力の異常を更に検出することができ、異常時制御手段（例えば、異常対応処理制御部４５５）は、異常検出手段により温度の異常、または、消費電力の異常が検出された場合、分散処理制御手段による分散処理を制御することができる。
【００５４】
請求項１４に記載の情報処理方法は、第１の情報処理手段（例えば、メインプロセッサ４２）と、複数の第２の情報処理手段（例えば、サブンプロセッサ４３）とを備える情報処理装置の情報処理方法であって、第１の情報処理手段によるアプリケーションプログラムの実行によって、複数の第２の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、処理単位に対応する機能を提供するための分散処理の開始を要求する分散処理開始要求ステップ（例えば、図１４のステップＳ１、または、図５６のステップＳ４５１の処理）と、第１の情報処理手段または第２の情報処理手段近傍に発生する温度情報を取得する温度情報取得ステップ（例えば、図１５のステップＳ２２、図２２のステップＳ７３、図２４のステップＳ１２２、図２７のステップＳ１４２、図３２のステップＳ２１２、図５７のステップＳ４７３の処理、または、図６０のステップＳ５６２）と、温度情報取得ステップの処理により取得された温度情報の異常を検出する異常検出ステップ（例えば、図１５のステップＳ２４、図２２のステップＳ７５、図２７のステップＳ１４４、図３２のステップＳ２１４、または、図５７のステップＳ４７５の処理）と、異常検出ステップの処理により検出された温度の異常は、第１の情報処理手段または第２の情報処理手段のうちのいずれの近傍で発生したかを判断する判断ステップ（例えば、図１６のステップＳ４１、図２３のステップＳ９１、図２８のステップＳ１８１、図３３のステップＳ２３１、または、図５８のステップＳ５０２の処理）と、温度情報取得ステップの処理により取得された温度情報、および、判断ステップの処理による判断手段による判断結果を基に、温度の異常が検出された第２の情報処理手段により実行されている処理の割り当てを変更するように、分散処理を制御する分散処理制御ステップ（例えば、図１６のステップＳ４２乃至ステップＳ５４、図２３のステップＳ９２乃至ステップＳ１０７、図２８のステップＳ１８２乃至ステップＳ１９６、図３３のステップＳ２３２乃至ステップＳ２４６、または、図５８のステップＳ５０３乃至ステップＳ５１８の処理）とを含むことを特徴とする。
【００５５】
また、請求項１５に記載のプログラムにおいても、各ステップが対応する実施の形態（但し一例）は、請求項１４に記載の情報処理方法と同様である。
【００５６】
請求項１６に記載の情報処理装置は、第１の情報処理手段（例えば、メインプロセッサ４２）と、複数の第２の情報処理手段（例えば、サブンプロセッサ４３）と、第１の情報処理手段および第２の情報処理手段を含む情報処理ユニット（例えば、情報処理コントローラ）が消費する電力を測定する電力測定手段（例えば、電力測定部３２１）と、他の情報処理装置と情報を通信する通信手段（例えば、通信部１６）とを備え、第１の情報処理手段は、アプリケーションプログラムの実行を制御するアプリケーションプログラム実行制御手段（例えば、演算処理部１６１）と、アプリケーションプログラム実行制御手段の処理により実行が制御されるアプリケーションプログラムによって、複数の第２の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、処理単位に対応する機能を提供するための分散処理を制御する分散処理制御手段（例えば、論理スレッド管理処理部３５７、または、論理スレッド管理処理部４５７）と、電力測定手段により測定された電力に関する第１の情報、および、第２の情報処理手段による処理の実行に関する第２の情報を記録する記録手段（例えば、電力管理テーブル３５４、電力管理テーブル３７３、または、温度・電力管理テーブル４５２）と、電力測定手段により測定された電力の異常を検出する異常検出手段（例えば、電力上昇検出部３５５、または、異常検出部４５３）と、異常検出手段により電力の異常が検出された場合、分散処理制御手段による分散処理を制御する異常時制御手段（例えば、電力異常対応処理制御部３５６、電力異常対応処理制御部３７４、電力異常対応処理制御部３９２、または、異常対応処理制御部４５５）とを備え、異常時制御手段は、異常検出手段により電力の異常が検出された場合、記録手段により記録されている第１の情報および第２の情報に基づいて、電力の異常が検出された第２の情報処理手段により実行されている処理の割り当てを変更するように、分散処理制御手段を制御することを特徴とする。
【００５７】
請求項２７に記載の情報処理方法は、第１の情報処理手段（例えば、メインプロセッサ４２）と、複数の第２の情報処理手段（例えば、サブンプロセッサ４３）とを備える情報処理装置の情報処理方法であって、第１の情報処理手段によるアプリケーションプログラムの実行によって、複数の第２の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、処理単位に対応する機能を提供するための分散処理の開始を要求する分散処理開始要求ステップ（例えば、図４１のステップＳ３０１、または、図５６のステップＳ４５１の処理）と、第１の情報処理手段および第２の情報処理手段を含む情報処理ユニット（例えば、情報処理コントローラ）が消費する電力に関する情報を取得する電力情報取得ステップ（例えば、図４２のステップＳ３２３、図４４のステップＳ３２８、図４６のステップＳ４０２、図４９のステップＳ４６２、図５７のステップＳ４７３、または、図６０のステップＳ５６２の処理）と、電力情報取得ステップの処理により取得された電力に関する情報の異常を検出する異常検出ステップ（例えば、図４２のステップＳ３２５、図４６のステップＳ４０４、図４９のステップＳ４６４、または、図５７のステップＳ４７５の処理）と、電力情報取得ステップの処理により取得された電力情報を基に、電力の異常が検出された情報処理ユニットの第２の情報処理手段により実行されている処理の割り当てを変更するように、分散処理を制御する分散処理制御ステップ（例えば、図４３、図４７、図５０を用いて説明した処理、または、図５９のステップＳ５２０乃至ステップＳ５３０の処理）とを含むことを特徴とする。
【００５８】
また、請求項２８に記載のプログラムにおいても、各ステップが対応する実施の形態（但し一例）は、請求項２７に記載の情報処理方法と同様である。
【００５９】
以下、図を参照して、本発明の実施の形態について説明する。
【００６０】
図１は、分散処理を実行することが可能な、通信システムの一実施の形態を示す図である。この通信システムにおいては、例えば、ホームネットワーク、ＬＡＮ（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など）を表す情報である。
【０１３６】
記録部総容量および記録部使用量は、それぞれ、記録部ＩＤによって識別される記録部１３の総容量および現在使用中の容量を表す。
【０１３７】
記録部ＩＤ、記録部種別ＩＤ、記録部総容量および記録部使用量は、１つの記録部１３に対して一組設定されるものであり、情報処理コントローラ１１に接続されている記録部１３の数の組数だけ設定される。すなわち、１つの情報処理コントローラ１１に複数の記録部１３が接続されている場合、それぞれの記録部１３には異なる記録部ＩＤが割り当てられ、記録部種別ＩＤ、記録部総容量および記録部使用量も個別に管理される。
【０１３８】
このようにして、情報処理装置１−１は、情報処理装置１−２乃至情報処理装置１−ｎに分散処理を実行させる場合、ソフトウェアセルを生成し、生成したソフトウェアセルを、ネットワーク２を介して情報処理装置１−２乃至情報処理装置１−ｎあてに送信する。
【０１３９】
なお、以下、情報処理装置１−１から情報処理装置１−２乃至情報処理装置１−ｎあてに送信される各種データは、ソフトウェアセルに格納されて送信されるものとし、繰り返しになるので、その説明は省略する。
【０１４０】
情報処理装置１−２乃至情報処理装置１−ｎのうちのいずれかの情報処理コントローラ１１に含まれるメインプロセッサ４２は、以上のような構成のソフトウェアセルを生成し、ネットワーク２を介して他の情報処理装置１の情報処理コントローラ１１に、生成されたソフトウェエアセルを送信する。送信元の情報処理装置１、送信先の情報処理装置１、応答先の情報処理装置１、および、それぞれに設けられている情報処理コントローラ１１は、それぞれ、上述した送信元ＩＤ、送信先ＩＤおよび応答先ＩＤによって識別される。
【０１４１】
ソフトウェアセルを受信した情報処理装置１の情報処理コントローラ１１に含まれるメインプロセッサ４２は、そのソフトウェアセルをメインメモリ１２に格納する。更に、送信先のメインプロセッサ４２は、ソフトウェアセルを読み出し、それに含まれるＤＭＡコマンドを処理する。
【０１４２】
具体的に、送信先のメインプロセッサ４２は、まず、ロードコマンドを実行する。これによって、メインメモリ１２の、ロードコマンドで指示されたアドレスから、ロードコマンドに含まれるサブプロセッサＩＤおよびＬＳアドレスで特定されるサブプロセッサ４３のローカルストレージ５１の所定領域に、情報がロードされる。ここでロードされる情報は、受信したソフトウェアセルに含まれるサブプロセッサプログラムやプログラムの実行に必要なデータ、または、その他の指示されたデータである。
【０１４３】
次に、メインプロセッサ４２は、キックコマンドを、これに含まれるサブプロセッサＩＤで指示されたサブプロセッサ４３に、同様にキックコマンドに含まれるプログラムカウンタとともに出力する。
【０１４４】
指示されたサブプロセッサは、そのキックコマンドおよびプログラムカウンタに従って、サブプロセッサプログラムを実行する。そして、実行結果をメインメモリ１２に格納した後、実行を完了したことをメインプロセッサ４２に通知する。
【０１４５】
なお、送信先の情報処理装置１の情報処理コントローラ１１において、ソフトウェアセルを実行するプロセッサは、サブプロセッサ４３に限定されなくてもよく、メインプロセッサ４２を、ソフトウェアセルに含まれる機能プログラムなどを実行するプロセッサとして指定することも可能である。
【０１４６】
この場合には、送信元の情報処理装置１は、送信先の情報処理装置１宛に、サブプロセッサプログラムの代わりに、メインメモリ用プログラムおよびそのメインメモリ用プログラムによって処理されるデータを含み、かつ、ＤＭＡコマンドがロードコマンドであるソフトウェアセルを送信し、メインメモリ１２にメインメモリ用プログラムおよびそれによって処理されるデータを記憶させる。次に、送信元の情報処理装置１は、送信先の情報処理装置１宛に、送信先の情報処理装置１の情報処理コントローラ１１についてのメインプロセッサＩＤ、メインメモリアドレス、メインメモリ用プログラムを識別するための機能プログラムＩＤなどの識別子、およびプログラムカウンタを含み、かつ、ＤＭＡコマンドがキックコマンドまたは機能プログラム実行コマンドであるソフトウェアセルを送信して、メインプロセッサ４２にメインメモリ用プログラムを実行させるようにすることができる。
【０１４７】
以上のように、本発明を適用したネットワークシステムでは、ソフトウェアセルの送信元の情報処理装置１は、サブプロセッサプログラムまたはメインメモリ用プログラムをソフトウェアセルによって送信先の情報処理装置１に送信するとともに、サブプロセッサプログラムを、送信先の情報処理装置１の情報処理コントローラ１１に設けられているサブプロセッサ４３にロードさせることにより、サブプロセッサプログラムまたはメインメモリ用プログラムを、送信先の情報処理装置１に実行させることができる。
【０１４８】
ソフトウェアセルの送信先の情報処理装置１の情報処理コントローラ１１では、受信したソフトウェアセルに含まれるプログラムがサブプロセッサプログラムである場合、このサブプロセッサプログラムを指定されたサブプロセッサ４３にロードさせる。そして、指定されたサブプロセッサ４３に、ソフトウェアセルに含まれるサブプロセッサプログラムまたはメインメモリ用プログラムを実行させる。
【０１４９】
したがって、ユーザは、ソフトウェアセルの送信先の情報処理装置１を操作することなく、自動的に、サブプロセッサプログラムまたはメインメモリ用プログラムが、ソフトウェアセルの送信元の情報処理装置１から、送信先の情報処理装置１に割り当てられ、ソフトウェアセルの送信先の情報処理装置１の情報処理コントローラ１１により、実行させることができる。また、それぞれのサブプロセッサ４３間では、ＤＭＡ方式によりデータ転送が行われ、上述したサンドボックスを使用することによって、１つの情報処理コントローラ１１において、データを多段階に処理する必要がある場合においても、高速かつ高セキュリティに処理を実行することができる。
【０１５０】
図８に、個々の情報処理コントローラ１１のメインメモリ１２が記憶するソフトウェアの構成を示す。これらのソフトウェア（プログラム）は、情報処理装置１に電源が投入される前においては、情報処理コントローラ１１に接続される記録部１３に記録されているものである。
【０１５１】
各プログラムは、機能または特徴によって、制御プログラム、機能プログラム、および、デバイスドライバにカテゴライズされる。
【０１５２】
制御プログラムは、それぞれの情報処理コントローラ１１が同じものを備え、それぞれの情報処理コントローラ１１のメインプロセッサ４２が実行するものである。例えば、複数の情報処理装置１において分散処理を実行することが可能なようになされている場合、制御プログラムには、後述するＭＳ（マスタ／スレーブ）マネージャおよび能力交換プログラムが含まれる。
【０１５３】
機能プログラムは、メインプロセッサ４２が実行する、いわゆるアプリケーションプログラムに対応するものであり、例えば、記録用、再生用、素材検索用など、情報処理コントローラ１１ごとに、情報処理装置１が有する機能に応じたものが備えられるようになされている。
【０１５４】
デバイスドライバは、情報処理コントローラ１１または情報処理装置１へのデータの入出力（送受信）機能を実行するためのドライバであり、例えば、放送受信、モニタ出力、ビットストリーム入出力、ネットワーク入出力など、情報処理コントローラ１１ごとに、情報処理装置１が有する機能に応じたものが備えられるようになされている。
【０１５５】
図８に示される各プログラムのメインメモリ１２へのロードについて説明する。
【０１５６】
図示しない接続ケーブルなどによって情報処理装置１が物理的にネットワーク２に接続された状態で、情報処理装置１に主電源が投入され、情報処理装置１が電気的および機能的にネットワーク２に接続されると、その情報処理装置１の情報処理コントローラ１１のメインプロセッサ４２は、制御プログラムに属する各プログラム、およびデバイスドライバに属する各プログラムを、メインメモリ１２にロードする。
【０１５７】
具体的には、メインプロセッサ４２は、まず、ＤＣ４６に読み出し命令を実行させることによって、記録部１３からロードするプログラムを読み出し、次に、ＤＭＡＣ４４に書き込み命令を実行させることによって、そのプログラムをメインメモリ１２に書き込ませることにより、制御プログラムに属する各プログラム、およびデバイスドライバに属する各プログラムを、メインメモリ１２にロードすることができる。
【０１５８】
また、機能プログラムに属する各プログラムについては、メインプロセッサ４２の制御に基づいて、必要なときに必要なプログラムだけがロードされるようにしてもよいし、または、他のカテゴリに属するプログラムと同様に、主電源投入直後に各プログラムがロードされるようにしてもよい。
【０１５９】
また、機能プログラムには、プログラムごとにプログラムを一意的に識別できる識別子が、機能プログラムＩＤとして割り当てられる。機能プログラムＩＤは、機能プログラムの作成の段階で、作成日時や情報処理装置ＩＤなどから決定される。
【０１６０】
ここで、機能プログラムに属する各プログラムは、ネットワーク２に接続された全ての情報処理装置１の記録部１３に記録されている必要はなく、いずれか１つの情報処理装置１の記録部１３に記録されていれば、上述した方法によって、必要に応じて、それぞれの情報処理装置１の間で、機能プログラムを授受することができる。したがって、ネットワーク２に接続されている複数の情報処理装置１を仮想的な１台の情報処理装置として動作させ、機能プログラムを実行させることができる。
【０１６１】
次に、ＭＳマネージャ、および、能力交換プログラムについて説明する。
【０１６２】
ＭＳマネージャは、情報処理装置１がネットワーク２に接続されていることを検知すると、同じネットワーク２に接続されている他の情報処理装置１の存在を確認する。ここでの「接続」または「存在」は、情報処理装置１が物理的にネットワーク２に接続されているだけでなく、電気的および機能的にネットワーク２に接続されていることに対応する。
【０１６３】
具体的には、ＭＳマネージャは、同じネットワーク２に接続されている他の情報処理装置１の存在を確認するために、ＤＭＡコマンドがステータス要求コマンドであり、送信元ＩＤおよび応答先ＩＤが自分自身で、送信先ＩＤを特定しないソフトウェアセルを生成して、生成したソフトウェアセルをネットワーク２に送信し、ネットワーク接続確認用のタイマを設定する。タイマのタイムアウト時間は、例えば１０分とする。
【０１６４】
それぞれの情報処理装置１のメインプロセッサ４２は、装置情報（動作状態に関する情報）を格納するための領域を、メインメモリ１２に確保し、例えば、情報処理装置ＩＤ、情報処理装置種別ＩＤ、サブプロセッサＩＤ、記録部ＩＤ、記録部数、記録部総容量などの情報を、装置情報テーブルとして記録している。
【０１６５】
したがって、ネットワーク２に他の情報処理装置１が接続されている場合、接続されている他の情報処理装置１からは、ＤＭＡコマンドがステータス返信コマンドであり、かつ、他の情報処理装置１のメインメモリ１２に記録されている装置情報をデータとして含む、ソフトウェアセルが返信される。ＭＳマネージャは、タイマがタイムアウトするまで、ステータス返信コマンドのソフトウェアセルの受信を監視する。その結果、ＭＳステータス＝０（マスタ装置）を示すステータス返信コマンドが受信された場合、ＭＳマネージャは、自分自身の装置情報テーブルにおけるＭＳステータスを１に設定する。これによって、ＭＳマネージャは、自分自身をスレーブ装置であると認識する。一方、タイマがタイムアウトするまでの間に、ステータス返信コマンドが全く受信されなかった場合、またはＭＳステータス＝０（マスタ装置）を示すステータス返信コマンドが受信されなかった場合、ＭＳマネージャは、自分自身の装置情報テーブルにおけるＭＳステータスを０に設定する。これによって、ＭＳマネージャは、自分自身がマスタ装置であると認識する。
【０１６６】
また、ＭＳマネージャは、自分自身が、マスタ装置またはスレーブ装置のいずれであっても、定期的にステータス要求コマンドをネットワーク２に送信してステータス情報を照会することにより、他の装置の状況を監視する。その結果、ネットワーク２の接続状態に変化があった場合には、その情報を、後述する能力交換プログラムに通知する。
【０１６７】
そして、能力交換プログラムは、自分自身がマスタ装置である場合、ネットワーク２に接続されている全ての他の情報処理装置１の装置情報、すなわち各スレーブ装置の装置情報を取得する。
【０１６８】
スレーブ装置の装置情報の取得は、上述したように、ＤＭＡコマンドがステータス要求コマンドであるソフトウェアセルを生成してネットワーク２に送信し、その後、ＤＭＡコマンドがステータス返信コマンドで、かつ、データとしてスレーブ装置の装置情報を含むソフトウェアセルを受信することによって行われる。
【０１６９】
能力交換プログラムは、マスタ装置である自分自身の装置情報テーブルと同様に、ネットワーク２に接続されている全てスレーブ装置の装置情報を格納するための領域を自装置のメインメモリ１２に確保し、これら情報を、スレーブ装置の装置情報テーブルとして記録する。
【０１７０】
すなわち、マスタ装置のメインメモリ１２には、ネットワーク２に接続されている全ての情報処理装置１の装置情報が、装置情報テーブルとして記録される。
【０１７１】
一方、能力交換プログラムは、自分自身がスレーブ装置である場合、同様にして、ネットワーク２に接続されている全ての他の情報処理装置の装置情報を取得し、これら装置情報に含まれる情報処理装置ＩＤおよびＭＳステータスを、メインメモリ１２に記録する。すなわち、スレーブ装置のメインメモリ１２には、自分自身の装置情報が、装置情報テーブルとして記録されるとともに、ネットワーク２に接続されている他の情報処理装置１（マスタ装置およびスレーブ装置）についての情報処理装置ＩＤおよびＭＳステータスが記録される。
【０１７２】
また、能力交換プログラムは、自分自身がマスタ装置またはスレーブ装置のいずれであっても、新たにネットワーク２に情報処理装置１が接続されたり、接続されている情報処理装置１のうちのいずれかがネットワーク２から切断されたことが通知された場合、上述したように、ＭＳマネージャから、ネットワーク２の接続状態に変化があったことを示す情報を取得して、メインメモリ１２に記録されている情報を更新する。
【０１７３】
なお、ＭＳマネージャおよび能力交換プログラムは、メインプロセッサ４２で実行されることに限らず、いずれかのサブプロセッサ４３で実行されてもよい。また、ＭＳマネージャおよび能力交換プログラムは、情報処理装置の主電源が投入されている間は常時動作する常駐プログラムであることが望ましい。
【０１７４】
なお、分散処理におけるマスタ装置は、ユーザの操作およびスレーブ装置の動作状態を把握する必要がある。ユーザがネットワーク２に接続されているいずれかの情報処理装置１を操作した場合、操作対象がマスタ装置であれば、その操作情報は、マスタ装置において直接把握され、操作対象がスレーブ装置であれば、その操作情報は、操作されたスレーブ装置からマスタ装置に送信される。すなわち、ユーザの操作対象がマスタ装置とスレーブ装置のいずれであるかにかかわらず、その操作情報は、常に、マスタ装置において把握されるようになされる。操作情報の送信は、例えば、ＤＭＡコマンドが操作情報送信コマンドであるソフトウェアセルによって行われる。
【０１７５】
そして、マスタ装置の情報処理コントローラ１１に含まれるメインプロセッサ４２は、その操作情報に従って、実行する機能プログラムを選択する。マスタ装置の情報処理コントローラ１１に含まれるメインプロセッサ４２は、上述したように、自分自身の記録部１３から、または、他の情報処理装置１（すなわち、スレーブ装置）から、メインメモリ１２に機能プログラムをロードする。
【０１７６】
機能プログラムには、その実行単位ごとに必要となる、情報処理装置種別ＩＤ、メインプロセッサまたはサブプロセッサの処理能力、メインメモリ使用量、外部記録部に関する条件などの、装置に関する要求スペックが規定されている。マスタ装置の情報処理コントローラ１１に含まれるメインプロセッサ４２は、各機能プログラムについて必要となる要求スペックを読み出とともに、能力交換プログラムによってメインメモリ１２に予め記録されている装置情報テーブルを参照し、ネットワーク２に接続されているそれぞれの情報処理装置１の装置情報を読み出す。
【０１７７】
そして、マスタ装置の情報処理コントローラ１１に含まれるメインプロセッサ４２は、ネットワーク２上に接続された各情報処理装置１の装置情報と、機能プログラム実行に必要となる要求スペックとを順次比較し、例えば、機能プログラムが録画機能を必要とする場合、情報処理装置種別ＩＤに基づいて、録画機能を有する情報処理装置１のみを特定して抽出するなど、機能プログラムを実行するために必要なメインプロセッサまたはサブプロセッサの処理能力、メインメモリ使用量、外部記録部に関する条件を確保できるスレーブ装置を、実行要求候補装置として特定する。ここで、複数の実行要求候補装置が特定された場合、これらの候補装置から１つの実行要求候補装置が選択される。
【０１７８】
マスタ装置内の情報処理コントローラ１１に含まれるメインプロセッサ４２は、実行要求候補装置として特定されたスレーブ装置について、自分自身のメインメモリ１２に記録されている装置情報テーブルを更新する。更に、メインプロセッサ４２は、ＤＭＡコマンドがロードコマンドおよびキックコマンドであるソフトウェアセルを生成し、機能プログラムに関する必要なサブプロセッサの情報およびサンドボックスサイズを設定して、実行要求候補装置として特定されたスレーブ装置に送信する。
【０１７９】
機能プログラムの実行を要求されたスレーブ装置は、その機能プログラムを実行するとともに、自分自身に記録されている装置情報テーブルを更新する。スレーブ装置の情報処理コントローラ１１に含まれるメインプロセッサ４２は、その際、必要であれば、上述したように、自分自身の記録部１３から、または、他の情報処理装置１から、メインメモリ１２に機能プログラムをロードする。
【０１８０】
更に、メインメモリ用プログラムと同様に、サブプロセッサプログラムも、必要であれば、ソフトウェアセルによって他の情報処理装置１に送信させ、他の情報処理装置１のサブプロセッサ４３にロードさせ、他の情報処理装置１に実行させることができる。
【０１８１】
機能プログラムの実行終了後、機能プログラムを実行したスレーブ装置の情報処理コントローラ１１のメインプロセッサ４２は、終了通知をマスタ装置の情報処理コントローラ１１のメインプロセッサ４２に送信するとともに、自分自身が記憶している装置情報テーブルを更新する。マスタ装置の情報処理コントローラ１１のメインプロセッサ４２−１は、スレーブ装置により送信された機能プログラムの実行の終了通知を受信して、自分自身が記憶している装置情報テーブルのうち、機能プログラムを実行したスレーブ装置に対応する部分を更新する。
【０１８２】
なお、仮想的な１台の情報処理装置として機能プログラムが実行される場合、マスタ装置が、ユーザの操作およびスレーブ装置の動作状態を把握しておく必要があるため、ネットワーク２から切断された情報処理装置１がマスタ装置である場合、例えば、ネットワーク２から切断されていない情報処理装置１のうち、最も小さい値の情報処理装置ＩＤを有する情報処理装置１をマスタ装置とするようにすればよい。
【０１８３】
また、本発明を適用した情報処理コントローラは、複数のサブプロセッサを含む全体の構成をワンチップＩＣ（集積回路）として構成するようにしてもよい。複数のサブプロセッサを含む情報処理コントローラをワンチップＩＣとして構成した場合、同じ処理を行う他のプロセッサと比較して、熱密度が高くなることが避けられない。そこで、メインプロセッサ４２、および、それぞれのサブプロセッサ４３に温度センサなどによる温度検出部を設け、正常動作可能な温度範囲内で動作するよう管理することにより、素子の劣化を防ぐとともに信頼性の高い情報処理コントローラおよび情報処理装置を実現することができる。更に、本発明を適用した情報処理コントローラは、１つまたは複数の情報処理装置内のサブプロセッサ間で、温度上昇に応じた処理の移動、または、交換を行うことにより、熱暴走などによる素子の破壊や処理速度の低下を防ぐようにすることができる。
【０１８４】
図９乃至図１７を用いて、本発明を適用した情報処理装置の情報処理コントローラにおいて、プロセッサの温度上昇に応じた分散処理を実現する場合における、第１の実施の形態について説明する。
【０１８５】
図９は、メインプロセッサ４２、および、それぞれのサブプロセッサ４３に温度検出部が設けられている情報処理装置１０１の構成を示すブロック図である。
【０１８６】
なお、図１における場合と対応する部分には同一の符号を付してあり、その説明は適宜省略する。すなわち、図９に示される情報処理装置１０１は、情報処理コントローラ１１に代わって、情報処理コントローラ１１１が備えられ、１チップで構成されている情報処理コントローラ１１１の温度を検出するための温度検出部１２１-（ｍ＋２）（ｍは、情報処理コントローラ１１１に設けられているサブプロセッサ４３の数と等しい値である）が新たに設けられている以外は、基本的に、図１を用いて説明した情報処理装置１と同様の構成を有している。
【０１８７】
また、情報処理コントローラ１１１は、新たに、サブプロセッサ４３-１乃至サブプロセッサ４３−ｍの温度を計測するための温度検出部１２１-１乃至温度検出部１２１−ｍ、および、メインプロセッサ４２の温度を計測するための温度検出部１２１−（ｍ＋１）、並びに、温度検出部１２１-１乃至温度検出部１２１−（ｍ＋２）により計測された温度の測定結果をモニタリングし、その結果を、バス４１を介して、メインプロセッサ４２に供給するする温度モニタ処理部１２２が設けられている以外は、基本的に、図１を用いて説明した情報処理コントローラ１１と同様の構成を有するものである。
【０１８８】
情報処理装置１０１は、第１の実施の形態においては、ネットワーク２に接続されておらず、スタンドアロンで処理を実行するようになされている。すなわち、第１の実施の形態の情報処理装置１０１による分散処理は、情報処理コントローラ１１１のサブプロセッサ４３-１乃至サブプロセッサ４３−ｍのみで実行されるものである。
【０１８９】
次に、図１０を参照して、情報処理コントローラ１１１のチップ構成（チップ上における素子などの配置）について説明する。なお、図１０においては、ＤＭＡＣ４４、キー管理テーブル４５、ＤＣ４６、および、温度モニタ処理部１２２の配置については省略する。
【０１９０】
情報処理コントローラ１１１のチップには、サブプロセッサ４３-１乃至サブプロセッサ４３-８の８つのサブプロセッサと、それらに対応するローカルストレージ５１−２乃至ローカルストレージ５１-９とが、バス４１を真ん中に４つずつ（４×２の配列で）設けられ、メインプロセッサ４２と、バス４１を介して、相互に高速のデータ転送を行うために、隣接して配置されるようになされている。図１０においては、メインプロセッサ４２に接続されているバス４１の一方に、サブプロセッサ４３-１乃至サブプロセッサ４３-４が、サブプロセッサ４３-１が最もメインプロセッサ４２に近くなり、それ以降、番号順に、メインプロセッサ４２から遠くなるように設けられており、バス４１の他方に、サブプロセッサ４３-５乃至サブプロセッサ４３-８が、サブプロセッサ４３-５が最もメインプロセッサ４２に近くなり、それ以降、番号順に、メインプロセッサ４２から遠くなるように設けられている。また、情報処理コントローラ１１１のチップには、放熱のためのヒートシンク１４１が設けられている。
【０１９１】
そして、サブプロセッサ４３-１乃至サブプロセッサ４３-８のそれぞれの近傍に、温度センサなどの温度検出部１２１-１乃至温度検出部１２１-８が設けられ、メインプロセッサ４２の近傍に、温度検出部１２１-９が設けられ、ヒートシンク１４１の近傍に、温度検出部１２１−１０が設けられている。
【０１９２】
図１１に、温度上昇を用いて制御を行うことができる、第１の実施の形態の情報処理コントローラ１１１によって実行されるソフトウェアの構成を示す。これらのソフトウェア（プログラム）は、情報処理装置に電源が投入される前においては、情報処理コントローラ１１１に接続される記録部１３に記録されているものである。
【０１９３】
なお、図８における場合と対応する部分には同一の符号を付してあり、その説明は適宜省略する。すなわち、第１の実施の形態における情報処理コントローラ１１１のメインメモリ１２が記憶するソフトウェアの構成は、新たに、制御プログラムに、温度管理プログラムが追加され、制御プログラムからＭＳマネージャおよび能力交換プログラムが省略されている以外は、基本的に、図８を用いて説明した場合と同様である。また、温度管理プログラムは、情報処理装置１０１の主電源が投入されている間は常時動作する常駐プログラムであることが望ましい。
【０１９４】
温度管理プログラムは、情報処理装置１０１の温度検出部１２１-１乃至温度検出部１２１−１０により測定され、温度モニタ処理部１２２によりモニタリングされる温度情報を収集し、管理するとともに、これらの温度情報に基づいて、メインプロセッサ４２により実行される処理の制御、および、サブプロセッサ４３-１乃至サブプロセッサ４３-８において必要に応じて実行される、処理の移動または交換を制御する。
【０１９５】
図１２は、情報処理装置１０１が実行可能な機能、換言すれば、図１１を用いて説明したソフトウェアが実行されることにより実現される機能について説明するための機能ブロック図である。
【０１９６】
図１２において、演算処理部１６１、記憶部１６２、論理スレッド管理処理部１６３、および、温度異常対応処理制御部１６９の機能は、基本的に、情報処理装置１０１のメインプロセッサ４２により実現される機能である。また、図１２において、温度情報取得部１６４、割り込み制御部１６５、タイマ１６６、温度管理テーブル１６７、温度上昇検出部１６８の機能は、基本的に、情報処理装置１０１の温度モニタ処理部１２２により実現される機能である。
【０１９７】
また、図１２において、演算処理部１８１、レジスタ１８２、浮動小数点レジスタ１８３、プログラムカウンタ１８４、割り込み制御部１８５、および、スレッド移動・交換処理部１８６は、基本的に、情報処理部１０１のサブプロセッサ４３により実現される機能であり、コード領域１８７、データ領域１８８、データ領域１８９、および、スタック領域１９０は、ローカルストレージ５１の保存領域のうちの少なくとも一部に対応するものである。また、図１２においては、１組のサブプロセッサ４３および温度検出部１２１のみが図示されているが、情報処理コントローラ１１１内の全てのサブプロセッサ４３および温度検出部１２１についても、同様に接続されているものとする。
【０１９８】
演算処理部１６１は、所定のアプリケーションプログラムを実行するための演算処理を実行する。記憶部１６２は、ローカルストレージ５１-１の記憶領域のうちの少なくとも一部に対応し、演算処理部１６１により実行されるプログラムや、プログラムの実行に必要なデータなどを記憶する。また、演算処理部１６１は、サブプロセッサ４３のうちのいずれかに分散処理を実行させる場合、論理スレッド管理処理部１６３に、論理スレッドの設定情報を供給して、論理スレッドの生成を要求する。論理スレッドとは、複数のサブプロセッサ４３のそれぞれに必要に応じて割り当てられた複数のプログラム（それらのプログラムは、同一のアプリケーションプログラムに対応するものであっても、異なるアプリケーションプログラムに対応するものであってもかまわない）をまとめて一つの機能を提供する処理単位と定義したものである。換言すれば、複数のサブプロセッサ４３のそれぞれに必要に応じて割り当てられた複数のプログラムは、メインメモリ１２の所定の記憶領域に記憶されているプログラムであり、演算処理部１６１により実行が制御されているアプリケーションプログラムの要求により、メインメモリ１２から対応するサブプロセッサ４３のローカルストレージ５１にロードされて実行されるものである。
【０１９９】
論理スレッド管理処理部１６３は、演算処理部１６１により実行されるアプリケーションプログラムに対応する論理スレッドの生成および削除を行うとともに、生成した論理スレッドの状態監視と動作制御を行う。論理スレッド管理処理部１６３は、情報処理コントローラ１０１の全体の管理情報が記載されたテーブルと、実行される論理スレッドごとに、論理スレッドの実行に必要な情報が記載されたテーブルを作成し、必要に応じて、テーブルの情報を参照し、更新することにより、論理スレッドの実行を制御する。
【０２００】
温度情報取得部１６４は、割り込み制御部１６５の処理により制御されるタイミングで、温度検出部１２１から供給される温度情報を取得し、管理情報テーブル１６７を更新する。割り込み制御部１６５は、タイマ１６６を参照して、温度情報取得部１６４に対してタイマ割り込みをかけるとともに、温度上昇検出部１６８から供給される情報を基に、演算処理部１６１および温度異常対応処理制御部１６９に割り込みをかける。
【０２０１】
温度管理テーブル１６７は、情報処理コントローラ１１１における温度管理を行うための情報が記載されるテーブルであり、図１３に示されるように、情報処理コントローラ１１１を識別するためのコントローラＩＤ、サブプロセッサ４３−１乃至サブプロセッサ４３-８の動作状態を示す情報、ヒートシンク１４１、メインプロセッサ４２、および、サブプロセッサ４３−１乃至サブプロセッサ４３−８における最新の温度検出結果（すなわち、温度検出部１２１−１乃至温度検出部１２１−１０のそれぞれの最新の温度検出結果）、ヒートシンク１４１、メインプロセッサ４２、および、サブプロセッサ４３−１乃至サブプロセッサ４３−８における上限温度の設定値（すなわち、温度検出部１２１−１乃至温度検出部１２１−１０のそれぞれが検出する温度がこれ以上高い場合は、異常値であると判別するための設定値）、並びに、チップ内のサブプロセッサの配置情報が記載されている。
【０２０２】
図１３において、上限温度とは、情報処理コントローラ１１１または情報処理装置１０１の設計時において、予め設定された正常な動作を行うために要求される温度の上限値である。上限温度は、正常かつ効率的な動作を行うために望ましい温度上限値であってもよい。また、サブプロセッサ４３−１乃至サブプロセッサ４３-８の動作状態を示す情報とは、それぞれが動作中であるか否かを示す、例えば、ＲＵＮまたはＳＴＯＰのステータスである。そして、サブプロセッサ配置情報とは、情報処理コントローラ１１１または情報処理装置１０１の設計時においてあらかじめ設定された、サブプロセッサ４３−１乃至サブプロセッサ４３-８の配置を示す情報であり、例えば、図１０を用いて説明した場合においては、サブプロセッサ４３−１乃至サブプロセッサ４３-８が縦２行×横４列で配置されていることを示す情報、および、それらの配置とサブプロセッサＩＤとの対応を示す情報が記載されている。
【０２０３】
温度上昇検出部１６８は、温度管理テーブル１６７を参照し、温度検出部１２１-１乃至温度検出部１２１−１０により検出された温度検出結果のうち、あらかじめ設定されている上限温度を超えたものがあった場合、割り込み制御部１６５に異常な温度上昇が検出されたことを通知し、演算処理部１６１および温度異常対応処理制御部１６９に割り込みをかけさせる。
【０２０４】
温度異常対応処理制御部１６９は、割り込み制御部１６５により割り込みがかかった場合、温度管理テーブル１６７を参照して、異常な温度上昇が検出された温度検出部１２１に対応するのは、情報処理コントローラ１１１であるか、メインプロセッサ４２であるか、または、サブプロセッサ４３のうちのいずれであるかを検出し、論理スレッド管理処理部１６３を制御して、必要に応じて、実行されている処理をいったん停止させたり、異常な温度上昇が検出されたサブプロセッサ４３と、正常なサブプロセッサ４３のいずれかとの、実行されているスレッドの移動または交換を制御する。
【０２０５】
次に、演算処理部１８１は、メインプロセッサ４２により割り当てられたプログラム（スレッド）を、論理スレッド管理処理部１６３の制御に基づいて実行する。レジスタ１８２および浮動小数点レジスタ１８３は、演算処理部１８１により実行されるプログラムの実行に用いられるレジスタであり、プログラムカウンタ１８４は、演算処理部１８１により現在実行されている命令が格納されているアドレスを示すカウンタである。
【０２０６】
割り込み制御部１８５は、論理スレッド管理処理部１６３の制御に基づいて、割り込みがなされた場合、演算処理部１８１の処理を停止させたり、割り込みが解除された場合、演算処理部１８１の処理を再開させる。スレッド移動・交換処理部１８６は、論理スレッド管理処理部１６３の制御に基づいて、自分自身が実行しているプログラムを他のサブプロセッサ４３に移動させる場合、または、他のサブプロセッサ４３が実行しているプログラムと交換させる場合に、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させ、スタック領域１９０とデータ領域１８９の内容を、プログラムの処理の移動先、または、交換先として選択されたサブプロセッサ４３のローカルストレージ５１に転送させる処理を制御する。
【０２０７】
また、コード領域１８７は、各サブプロセッサ共通のコードを記憶する領域であり、データ領域１８８は、固定データを記憶する領域であり、データ領域１８９は、サブプロセッサ４３によって異なるデータを記憶する領域であり、スタック領域１９０は、自分自身が実行しているプログラムを他のサブプロセッサ４３に移動させる場合、または、他のサブプロセッサ４３が実行しているプログラムと交換させる場合に、実行中のプログラムのコンテキストを退避させるための領域である。
【０２０８】
次に、図１２の機能ブロックを用いて説明した機能を有する情報処理コントローラ１１が実行する処理の具体例について説明する。
【０２０９】
例えば、３次元グラフィックスを処理するためのアプリケーションプログラムが実行される場合、１画面分の処理を画素ごとに分割して、同じプログラム、同じモデルデータを基に、複数のプロセッサで並列に演算させるようにすることができる。すなわち、演算処理部１６１において、３次元グラフィックスを処理するためのアプリケーションプログラムが実行される場合、画素ごとに分割された処理が、複数のサブプロセッサ４３にそれぞれ割り当てられ、並列して演算されるようにすることができる。
【０２１０】
演算処理部１６１は、論理スレッド管理処理部１６３に論理スレッドの生成を要求するとき、この論理スレッドにおいて使用するサブプロセッサ４３の総数を、予め決めておき、論理スレッドの設定情報として、論理スレッド管理処理部１６３に供給する。ここでは、使用するサブプロセッサ４３の総数を、２個であるものとする。そして、論理スレッド管理処理部１６３は、処理に必要な、共通に使用するプログラムとモデルデータを、分散処理を割り当てたサブプロセッサ４３のコード領域１８７およびデータ領域１８８（ローカルストレージ５１）にロードさせる。
【０２１１】
なお、このとき、処理に必要な、共通に使用するプログラムとモデルデータを、分散処理が割り当てられていないサブプロセッサ４３のローカルストレージ５１にも、予め供給しておくようにしてもよい。それにより、後述する処理において、温度上昇のため、現在分散処理が割り当てられていないサブプロセッサ４３に、対応する論理スレッドの処理が新たに割り当てられた（処理が移動された、または、交換された）とき、新たにプログラムとモデルデータをロードする必要がなくなるため、好適である。
【０２１２】
例えば、分散処理が割り当てられたサブプロセッサ４３が、サブプロセッサ４３−１およびサブプロセッサ４３-２であるとき、サブプロセッサ４３−１の演算処理部８１は、画面上の座標（２ｘ，ｙ）の位置の輝度値の演算処理を行い、サブプロセッサ４３-２の演算処理部８１は、画面上の座標（２ｘ＋１、ｙ）の位置の輝度値の演算処理を行うものとする。
【０２１３】
割り込み制御部１６５は、情報処理装置１０１が動作中である場合、常に、タイマ１６７を参照して、所定の一定時間ごとに、温度情報取得部１６４に割り込みをかけ、温度検出部１２１−１乃至温度検出部１２１−１０により検出された温度情報を取得させ、温度管理テーブル１６７の、温度検出結果の値を更新させる。
【０２１４】
サブプロセッサ４３−１およびサブプロセッサ４３-２は、演算処理部１６１により処理されているアプリケーションプログラムの要求により割り当てられたスレッドを、それぞれ、順次処理する。サブプロセッサ４３−１およびサブプロセッサ４３-２は、演算処理の実行にともなって、高速にスイッチングするトランジスタの割合に応じて発熱する。また、メインプロセッサ４２、および、分散処理が割り当てられたサブプロセッサ４３の発熱は、自分自身のトランジスタのスイッチングのみならず、隣接したプロセッサの発熱の影響を受ける。すなわち、高速でスイッチングするプロセッサが隣接して存在した場合、それらのプロセッサの温度は、著しく上昇する。
【０２１５】
温度上昇検出部１６８は、温度管理テーブル１６７を参照し、温度検出部１２１-１乃至温度検出部１２１−１０により検出された温度検出結果のうち、予め設定されている上限温度を超えたものがあった場合、割り込み制御部１６５に異常な温度上昇が検出されたことを通知する。割り込み制御部１６５は、温度上昇検出部１６８の通知を受け、演算処理部１６１および温度異常対応処理制御部１６９に割り込みをかける。
【０２１６】
割り込み制御部１６５により割り込みがかけられた演算処理部１６１は、実行中のアプリケーションプログラムの処理を、いったん停止させる。また、割り込み制御部１６５により割り込みがかけられた温度異常対応処理制御部１６９は、温度管理テーブル１６７を参照して、異常な温度上昇が検出された温度検出部１２１に対応するのは、情報処理コントローラ１１１であるか、メインプロセッサ４２であるか、または、サブプロセッサ４３のうちのいずれであるかを検出し、論理スレッド管理処理部１６３を制御して、必要に応じて、処理をいったん停止させたり、異常な温度上昇が検出されたサブプロセッサ４３と、正常なサブプロセッサ４３のいずれかとの、実行されているスレッドの移動または交換を制御する。
【０２１７】
具体的には、温度異常対応処理制御部１６９は、温度管理テーブル１６７を参照して、異常な温度上昇が検出された温度検出部１２１に対応するのが、サブプロセッサ４３−１であることを検出した場合、温度管理テーブル１６７を参照し、サブプロセッサ４３−１が実行していたスレッドの処理が新たに割り振られる、すなわち、処理の移動先となるサブプロセッサ４３を選択することができるか否かを判断する。
【０２１８】
移動先のサブプロセッサ４３は、現在動作中のサブプロセッサ４３に隣接しないものであって、かつ、停止状態であるサブプロセッサ４３のうち、温度検出結果が最も低いものが選択され、この条件を満たすサブプロセッサ４３が複数ある場合は、サブプロセッサＩＤとして割り当てられている番号が最も若いものが選択される。また、現在動作中のサブプロセッサ４３に隣接しない、停止状態であるサブプロセッサ４３が存在しない場合、停止状態のサブプロセッサ４３のうち、温度検出結果が最も低いものが選択され、この条件を満たすサブプロセッサ４３が複数ある場合は、サブプロセッサＩＤとして割り当てられている番号が最も若いものが選択される。
【０２１９】
また、停止状態のサブプロセッサ４３が存在しない場合、処理の移動ではなく、処理の交換が行われる。処理の交換先として、温度検出結果が最も低いものが選択され、この条件を満たすサブプロセッサが複数ある場合は、サブプロセッサＩＤとして割り当てられている番号が最も若いものが選択される。
【０２２０】
また、処理に必要な、共通に使用するプログラムとモデルデータが、分散処理が割り当てられていないサブプロセッサ４３のローカルストレージ５１のうちのいずれかに、予め供給されている場合、共通に使用するプログラムとモデルデータがローカルストレージ５１に保存されているサブプロセッサ４３が優先して選択されるようにしてもよい。
【０２２１】
ここで、温度異常対応処理制御部１６９は、温度管理テーブル１６７を参照して、動作実行中のサブプロセッサ４３−１およびサブプロセッサ４３-２のうち、異常な温度上昇が検出された温度検出部１２１に対応するのが、サブプロセッサ４３−１であることを検出した場合、温度管理テーブル１６７を参照して、停止中のサブプロセッサ４３−３乃至サブプロセッサ４３-８のうち、上述した条件に合致したものとして、例えば、サブプロセッサ４３−４を選択するものとする。
【０２２２】
温度異常対応処理制御部１６９は、サブプロセッサ４３−１の処理の移動先としてサブプロセッサ４３−４が選択されたことを論理スレッド管理処理部１６３に通知する。論理スレッド管理処理部１６３は、サブプロセッサ４３−１の実行している処理のコンテキストを退避させて、処理を停止させ、退避させたコンテキストを、サブプロセッサ４３−４にロードさせるために、サブプロセッサ４３−１を制御するとともに、温度管理テーブル１６７のサブプロセッサ４３−１の動作状態を示すステータスをＳＴＯＰに変更する。
【０２２３】
サブプロセッサ４３-１の割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受け、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させる。そして、スレッド移動・交換処理部１８６は、移動先のサブプロセッサ４３−４が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、論理スレッド管理処理部１６３が管理する図示しない情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０２２４】
論理スレッド管理処理部１６３は、退避されたデータ（移動先のサブプロセッサ４３−４が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータ）を、移動先のサブプロセッサ４３−４に供給し、コード領域１８７乃至スタック領域１９０の対応する部分に記憶させる。
【０２２５】
そして、割り込み処理部１６５は、演算処理部１６１に対する割り込みを解除する。演算処理部１６１は、論理スレッド管理処理部１６３による論理スレッドの実行を再び要求するので、論理スレッド管理処理部１６３は、サブプロセッサ４３-２およびサブプロセッサ４３−４に、分散処理を開始させる。
【０２２６】
また、温度異常対応処理制御部１６９は、温度管理テーブル１６７を参照して、異常な温度上昇が検出された温度検出部１２１に対応するのは、情報処理コントローラ１１１、または、メインプロセッサ４２であることを検出した場合、論理スレッド管理処理部１６３を制御して、演算処理部１６１により実行されているアプリケーションプログラムを一時停止させるなどして、常時動作する常駐プログラムなどが実行する一部の必要な処理を除いて、メインプロセッサ４２の処理を一時中断させ、発熱量を低下させる。そして、温度異常対応処理制御部１６９は、温度管理テーブル１６７を参照して、異常な温度上昇が検出されなくなるまで待機し、温度状態が正常状態に戻った場合、または、予め定められた、所定の温度以下となった場合、メインプロセッサ４２の処理、すなわち、演算処理部１６１により実行されているアプリケーションプログラムの処理を再開させる。
【０２２７】
なお、図１２においては、演算処理部１６１、記憶部１６２、論理スレッド管理処理部１６３、および、温度異常対応処理制御部１６９の機能が、基本的に、情報処理装置１０１のメインプロセッサ４２により実現される機能であり、温度情報取得部１６４、割り込み制御部１６５、タイマ１６６、温度管理テーブル１６７、温度上昇検出部１６８の機能が、基本的に、情報処理装置１０１の温度モニタ処理部１２２により実現される機能であるものとして説明したが、これらの機能を実現するハードウェアが、上述するとおりではない場合、例えば、メインプロセッサ４２により実現される機能のうちの一部が温度モニタ処理部１２２により実現されたり、温度モニタ処理部１２２により実現される機能のうちの一部がメインプロセッサ４２により実現される場合や、これらの機能が、それぞれ異なるハードウェアにより実現される場合なども、本発明は適用可能であることは言うまでもない。
【０２２８】
次に、図１４のフローチャートを参照して、図９に示される第１の実施の形態の情報処理装置１０１が実行するアプリケーションプログラム実行処理１について説明する。ここでは、温度管理プログラムが、情報処理装置１０１の主電源が投入されている間は常時動作する常駐プログラムであるものとして説明する。
【０２２９】
ステップＳ１において、演算処理部１６１は、ユーザにより、アプリケーションプログラムの実行が指令されたか否かを判断する。すなわち、ステップＳ１において、メインプロセッサ４２は、操作入力部１５から、バス１４およびバス４１を介して供給される信号を基に、アプリケーションプログラムの実行が指令されたか否かを判断する。ステップＳ１において、アプリケーションプログラムの実行が指令されていないと判断された場合、アプリケーションプログラムの実行が指令されたと判断されるまで、ステップＳ１の処理が繰り返される。
【０２３０】
ステップＳ１において、アプリケーションプログラムの実行が指令されたと判断された場合、ステップＳ２において、演算処理部１６１は、論理スレッドのサブプロセッサへの割り当てなどを設定し、論理スレッドの設定情報を論理スレッド管理処理部１６３に供給する。
【０２３１】
ステップＳ３において、論理スレッド管理処理部１６３は、論理スレッドが割り当てられたサブプロセッサ４３のローカルストレージ５１のコード領域１８７およびデータ領域１８８に、割り当てられた処理を実行するためのプログラムやデータをロードさせる。
【０２３２】
ステップＳ４において、演算処理部１６１および論理スレッド管理処理部１６３は、サブプロセッサ４３による処理を含めた、アプリケーションプログラムの実行を制御する。サブプロセッサ４３の演算処理部１８１は、割り当てられた処理を実行する。
【０２３３】
ところで、温度管理プログラムは、情報処理装置１０１の主電源が投入されている間は常時動作する常駐プログラムであるので、ステップＳ１乃至ステップＳ４の処理が実行されている間も、処理が実行されている。温度管理プログラムによる温度情報管理処理１については、図１５のフローチャートを用いて後述する。
【０２３４】
ステップＳ５において、演算処理部１６１は、割り込み制御部１６５により、温度異常発生のための割り込みがあるか否かを判断する。ステップＳ５において、温度異常発生のための割り込みがないと判断された場合、処理は、後述するステップＳ８に進む。
【０２３５】
ステップＳ５において、温度異常発生のための割り込みがあったと判断された場合、割り込みにより実行中の処理が停止されるので、ステップＳ６において、演算処理部１６１は、割り込みが解除されたか否かを判断する。ステップＳ６において、割り込みが解除されていないと判断された場合、割り込みが解除されたと判断されるまで、ステップＳ６の処理が繰り返される。
【０２３６】
ステップＳ６において、割り込みが解除されたと判断された場合、ステップＳ７において、演算処理部１６１は、必要に応じて、論理スレッドの設定情報を、再度、論理スレッド管理処理部１６３に供給するので、論理スレッド管理処理部１６３は、論理スレッド管理に関するテーブルを更新する。
【０２３７】
ステップＳ５において、温度異常発生のための割り込みがないと判断された場合、または、ステップＳ７の処理の終了後、ステップＳ８において、演算処理部１６１は、アプリケーションプログラムの処理が終了されたか否かを判断する。ステップＳ８において、アプリケーションプログラムの処理が終了されていないと判断された場合、処理は、ステップＳ４に戻り、それ以降の処理が繰り返される。ステップＳ８において、アプリケーションプログラムの処理が終了されたと判断された場合、処理が終了される。
【０２３８】
このような処理により、メインプロセッサ４２により実行されるアプリケーションプログラムに対応する分散処理が、サブプロセッサ４３のうちの選択されたものにより実行される。
【０２３９】
次に、図１５のフローチャートを参照して、図９の情報処理装置１０１が実行する（具体的には、図１１の温度管理プログラムが実行する）温度情報管理処理１について説明する。
【０２４０】
ステップＳ２１において、温度情報取得部１６４は、割り込み制御部１６５から、タイマ割り込みが入ったか否かを判断する。ステップＳ２１において、タイマ割り込みが入っていないと判断された場合、タイマ割り込みが入ったと判断されるまで、ステップＳ２１の処理が繰り返される。
【０２４１】
ステップＳ２１において、タイマ割り込みが入ったと判断された場合、ステップＳ２２において、温度情報取得部１６４は、温度検出部１２１のそれぞれから、温度情報を取得する。
【０２４２】
ステップＳ２３において、温度情報取得部１６４は、ステップＳ２２において取得された温度情報を基に、温度管理テーブル１６７を更新する。
【０２４３】
ステップＳ２４において、温度上昇検出部１６８は、温度管理テーブル１６７を参照し、温度情報に異常値があるか否か、すなわち、温度検出部１２１のそれぞれにより検出された温度検出結果のうち、予め設定されている上限温度を超えたものがあるか否かを判断する。ステップＳ２４において、温度情報に異常値がないと判断された場合、処理は、ステップＳ２１に戻り、それ以降の処理が繰り返される。
【０２４４】
ステップＳ２４において、温度情報に異常値があったと判断された場合、ステップＳ２５において、温度上昇検出部１６８は、割り込み制御部１６５に、異常な温度上昇が検出されたことを通知し、演算処理部１６１および温度異常対応処理制御部１６９に割り込みをかけさせる。割り込み制御部１６５は、温度異常対応処理制御部１６９および演算処理部１６１に対して、割り込みをかけ、演算処理部１６１により制御されるアプリケーションプログラムの処理を停止させるとともに、温度異常対応処理制御部１６９に対して異常発生時の処理を開始させる。
【０２４５】
ステップＳ２６において、図１６を用いて後述する異常発生時の処理１が実行される。
【０２４６】
ステップＳ２７において、温度異常対応処理制御部１６９は、ステップＳ２６において実行された異常発生時の処理１に基づいて、論理スレッド管理処理部１６３を制御し、必要に応じて、論理スレッド管理に関するテーブルを更新させる。
【０２４７】
ステップＳ２８において、割り込み制御部１６５は、演算処理部１６１により制御されるアプリケーションプログラムの処理に対する割り込みを解除し、処理は、ステップＳ２１に戻り、それ以降の処理が繰り返される。
【０２４８】
このような処理により、温度検出部１２１のそれぞれにより検出された温度情報が取得され、検出された温度情報により更新される温度管理テーブル１６７を基に、異常発生時の割り込み処理が実行されるか否かが判断される。
【０２４９】
次に、図１６のフローチャートを参照して、図１５のステップＳ２６において実行される異常発生時の処理１について説明する。
【０２５０】
ステップＳ４１において、温度異常対応処理制御部１６９は、温度管理テーブル１６７を参照し、温度の異常が発生したのは、メインプロセッサ４２、または、情報処理コントローラ１１１であるか否か、換言すれば、予め設定されている上限温度を超えた温度検出結果を得たのは、温度検出部１２１-９または温度検出部１２１−１０のうちのいずれかであるか否かを判断する。ステップＳ４１において、温度の異常が発生したのは、メインプロセッサ４２、または、情報処理コントローラ１１１であると判断された場合、処理は、後述するステップＳ５３に進む。
【０２５１】
ステップＳ４１において、温度の異常が発生したのは、メインプロセッサ４２、または、情報処理コントローラ１１１ではない、すなわち、サブプロセッサ４３のうちのいずれかであると判断された場合、ステップＳ４２において、温度異常対応処理制御部１６９は、温度管理テーブル１６７を参照し、温度の異常が発生したサブプロセッサ４３の処理の移動が可能であるか否か、換言すれば、温度の異常が発生したサブプロセッサ４３以外のサブプロセッサ４３のうちのいずれかが、停止状態であるか否かを判断する。ステップＳ４２において、温度の異常が発生したサブプロセッサ４３の処理の移動が可能ではないと判断された場合、処理は、後述するステップＳ４７に進む。
【０２５２】
ステップＳ４２において、温度の異常が発生したサブプロセッサ４３の処理の移動が可能であると判断された場合、ステップＳ４３において、温度異常対応処理制御部１６９は、処理の移動先のサブプロセッサ４３を選択し、選択結果を、論理スレッド管理処理部１６３に供給する。具体的には、温度異常対応処理制御部１６９は、現在動作中のサブプロセッサ４３に隣接しないものであって、かつ、停止状態であるサブプロセッサ４３のうち、温度検出結果が最も低いものを移動先のサブプロセッサ４３として優先的に選択するようになされている。また、この条件を満たすサブプロセッサ４３が複数ある場合、温度異常対応処理制御部１６９は、サブプロセッサＩＤとして割り当てられている番号が最も若いものを選択する。また、現在動作中のサブプロセッサ４３に隣接しない、停止状態であるサブプロセッサ４３が存在しない場合、温度異常対応処理制御部１６９は、停止状態のサブプロセッサ４３のうち、温度検出結果が最も低いものを選択し、更に、この条件を満たすサブプロセッサ４３が複数ある場合は、サブプロセッサＩＤとして割り当てられている番号が最も若いものを選択し、選択結果を、論理スレッド管理処理部１６３に供給する。
【０２５３】
例えば、図１７Ａに示されるように、動作実行中のサブプロセッサが、サブプロセッサ４３−１およびサブプロセッサ４３-２であり、このうち、異常な温度上昇が検出された温度検出部１２１に対応するのが、サブプロセッサ４３−１であった場合、温度異常対応処理制御部１６９は、温度管理テーブル１６７を参照して、停止中のサブプロセッサ４３−３乃至サブプロセッサ４３-８のうち、上述した条件に合致したものとして、図１７Ｂに示されるように、例えば、サブプロセッサ４３−４を選択することができる。
【０２５４】
ステップＳ４４において、論理スレッド管理処理部１６３は、温度上限値を超えたサブプロセッサ４３により実行されていた処理に関するコンテキストを退避させる。温度上限値を超えたサブプロセッサ４３の割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受けて、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させた後、移動先のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、論理スレッド管理処理部１６３が管理する情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０２５５】
ステップＳ４５において、論理スレッド管理処理部１６３は、温度上限値を超えたサブプロセッサ４３の動作を停止させる。
【０２５６】
ステップＳ４６において、論理スレッド管理処理部１６３は、移動先のサブプロセッサとして選択されたサブプロセッサ４３に、ステップＳ４４の処理により退避されたコンテキストをリストアする。移動先のサブプロセッサとして選択されたサブプロセッサ４３においては、供給されたコンテキストを、コード領域１８７乃至スタック領域１９０の対応する部分に記憶して、処理は、図１５のステップＳ２６に戻り、ステップＳ２７に進む。
【０２５７】
ステップＳ４２において、温度の異常が発生したサブプロセッサ４３の処理の移動が可能ではないと判断された場合、ステップＳ４７において、温度異常対応処理制御部１６９は、処理の交換先のサブプロセッサ４３を選択し、選択結果を、論理スレッド管理処理部１６３に供給する。具体的には、温度異常対応処理制御部１６９は、温度検出結果が最も低いものを移動先のサブプロセッサ４３として優先的に選択するようになされており、この条件を満たすサブプロセッサ４３が複数ある場合、サブプロセッサＩＤとして割り当てられている番号が最も若いものを選択するようになされている。
【０２５８】
ステップＳ４８において、論理スレッド管理処理部１６３は、温度上限値を超えたサブプロセッサ４３により実行されていた処理に関するコンテキストを退避させる。温度上限値を超えたサブプロセッサ４３の割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受けて、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させた後、移動先のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、論理スレッド管理処理部１６３が管理する情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０２５９】
ステップＳ４９において、論理スレッド管理処理部１６３は、温度上限値を超えたサブプロセッサ４３の動作を停止させる。
【０２６０】
ステップＳ５０において、論理スレッド管理処理部１６３は、処理の交換先として選択されたサブプロセッサ４３により実行されていた処理に関するコンテキストを退避させる。処理の交換先として選択されたサブプロセッサ４３の割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受けて、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させた後、移動先のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、論理スレッド管理処理部１６３が管理する情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０２６１】
ステップＳ５１において、論理スレッド管理処理部１６３は、処理の交換先として選択されたサブプロセッサ４３の動作を停止させる。
【０２６２】
ステップＳ５２において、論理スレッド管理処理部１６３は、退避された２つのサブプロセッサ４３のコンテキストを交換してリストアさせる。すなわち、論理スレッド管理処理部１６３は、処理の交換先のサブプロセッサとして選択されたサブプロセッサ４３に、ステップＳ４８の処理により退避されたコンテキストをリストアさせるとともに、温度上限値を超えたサブプロセッサ４３に、ステップＳ５０の処理により退避されたコンテキストをリストアさせる。そして、それぞれのサブプロセッサ４３は、供給されたコンテキストを、コード領域１８７乃至スタック領域１９０の対応する部分に記憶して、処理は、図１５のステップＳ２６に戻り、ステップＳ２７に進む。
【０２６３】
ステップＳ４１において、温度の異常が発生したのは、メインプロセッサ４２、または、情報処理コントローラ１１１であると判断された場合、ステップＳ５３において、温度異常対応処理制御部１６９は、論理スレッド管理処理部１６３を制御して、演算処理部１６１により実行されているアプリケーションプログラムを一時停止させるなどして、常時動作する常駐プログラムなどが実行する一部の必要な処理を除いて、メインプロセッサ４２の処理を一時中断させる。
【０２６４】
ステップＳ５４において、温度異常対応処理制御部１６９は、温度管理テーブル１６７を参照して、温度状態が正常に戻ったか否かを判断する。ステップＳ５４において、温度状態が正常に戻っていないと判断された場合、温度状態が正常に戻ったと判断されるまで、ステップＳ５４の処理が繰り返される。ステップＳ５４において、温度状態が正常に戻ったと判断された場合、処理は、図１５のステップＳ２６に戻り、ステップＳ２７に進む。
【０２６５】
このような処理により、温度異常の発生箇所、そのときのチップ内の動作、および、それぞれのプロセッサの温度検出値に基づいて、処理が停止されるか、分散処理のうちの一部が移動されるか、または、分散処理のうちの一部が交換されるかが判断され、処理の移動先または交換先が選択されるようになされている。
【０２６６】
以上説明した処理により、メインプロセッサ４２、および、それぞれのサブプロセッサ４３に温度検出部１２１が設けられ、ネットワーク２に接続されておらず、スタンドアロンで処理を実行するようになされている、本発明の第１の実施の形態の情報処理装置１０１において、温度異常があるか否かが監視され、温度異常が検出された場合、温度異常の発生箇所、そのときのチップ内の動作、および、それぞれのプロセッサの温度検出値に基づいて、処理が停止されるか、分散処理のうちの一部が移動されるか、または、分散処理のうちの一部が交換されるかが判断され、必要に応じて、処理の移動先または交換先が選択されて、処理が移動または交換されるようになされているので、実行中の処理を停止させるのを最小限に抑えつつ、熱暴走などによる素子の破壊や処理速度の低下を防ぐようにすることができる。
【０２６７】
図９乃至図１７を用いて説明した処理においては、情報処理装置１０１が、ネットワーク２に接続されておらず、スタンドアロンで処理を実行するようになされているものとして説明したが、例えば、図１８に示されるように、情報処理装置１０１が、ネットワーク２に複数個接続されている場合においても、本発明は、適用可能である。
【０２６８】
次に、図１８乃至図３３を用いて、本発明を適用した情報処理装置の情報処理コントローラにおいて、プロセッサの温度上昇に応じた分散処理を実現する場合における、第２の実施の形態について説明する。
【０２６９】
図１８は、温度に応じた分散処理を、複数の情報処理装置１０１の間で実現するためのネットワークシステムである。なお、情報処理装置１０１−１乃至情報処理装置１０１−ｎのハードウェア構成については、図９を用いて説明した情報処理装置１０１のハードウェア構成と基本的に同様であり、更に、情報処理装置１０１−１乃至情報処理装置１０１−ｎの情報処理コントローラ１１１は、図１０を用いて説明した場合と同様のプロセッサの配置を有する１チップで構成されるので、それらの説明は省略する。
【０２７０】
すなわち、図１９に示されるように、図１０を用いて説明した場合と同様のチップ構成（チップ上における素子などの配置）を有する情報処理コントローラ１１１が、それぞれ、バス１４および通信部１６を介して、ネットワーク２に接続されている。したがって、情報処理装置１０１-１乃至情報処理装置１０１-ｎにおいては、図１乃至図８を用いて説明した場合と同様にして、いずれかがマスタ装置として認識され、それ以外のものがスレーブ装置として認識されている。
【０２７１】
図２０に、温度上昇を用いて制御を行うことができる、第２の実施の形態の情報処理コントローラ１１１によって実行されるソフトウェアの構成を示す。これらのソフトウェア（プログラム）は、情報処理装置に電源が投入される前においては、情報処理コントローラ１１１に接続される記録部１３に記録されているものである。
【０２７２】
なお、図８における場合と対応する部分には同一の符号を付してあり、その説明は適宜省略する。すなわち、第２の実施の形態における情報処理コントローラ１１１のメインメモリ１２が記憶するソフトウェアの構成は、制御プログラムに、新たに、温度管理プログラムが追加されている以外は、基本的に、図８を用いて説明した場合と同様である。温度管理プログラムは、情報処理装置１０１の主電源が投入されている間は常時動作する常駐プログラムであることが望ましい。
【０２７３】
図２０の温度管理プログラムは、第１の実施の形態（図１１）における場合と基本的に同様の処理を実行し、情報処理装置１０１の温度検出部１２１-１乃至温度検出部１２１−１０により測定され、温度モニタ処理部１２２によりモニタリングされる温度情報を収集し、管理するとともに、これらの温度情報に基づいて、メインプロセッサ４２により実行される処理の制御、および、サブプロセッサ４３-１乃至サブプロセッサ４３-８において必要に応じて実行される、処理の移動または交換を制御するが、更に、ネットワーク２を介して接続されている他の情報処理装置１０１と温度情報を交換して、メインプロセッサ４２により実行される処理の制御、および、サブプロセッサ４３-１乃至サブプロセッサ４３-８において必要に応じて実行される、処理の移動または交換を制御する。
【０２７４】
ネットワーク２を介して接続されている他の情報処理装置１０１との温度情報、および、処理の移動または交換の制御には、３つのパターンがある。
【０２７５】
第１のパターンは、例えば、情報処理装置１０１−１がマスタ装置である場合、情報処理装置１０１−１が、自分自身の温度管理テーブルのみならず、ネットワーク２に接続されているスレーブ装置である情報処理装置１０１-２乃至情報処理１０１-ｎのそれぞれの温度管理テーブルを管理するものである。すなわち、スレーブ装置である情報処理装置１０１-２乃至情報処理１０１-ｎは、所定の時間ごとに更新された最新の温度管理テーブルを、マスタ装置である情報処理装置１０１-１に随時送信するようになされている。そして、マスタ装置である情報処理装置１０１−１は、ネットワーク２に接続されている情報処理装置１０１−１乃至情報処理１０１-ｎの全ての温度情報を監視し、情報処理装置１０１−１乃至情報処理１０１-ｎのうちのいずれかにおいて、温度上昇の異常が検出された場合、例えば、ネットワーク２に接続されている情報処理装置１０１の情報処理コントローラ１１１に含まれる全てのサブプロセッサ４３から、処理の移動または交換先として最適なサブプロセッサ４３を選択し、選択されたサブプロセッサ４３に、異常が発生したサブプロセッサ４３の処理を移動するか、または、それぞれの処理を交換するなどの処理を制御する。
【０２７６】
第２のパターンは、それぞれの情報処理装置１０１が、自分自身の温度管理テーブルを基に温度情報を監視し、温度上昇の異常を検出した場合、ネットワーク２に接続されている、他の情報処理装置１０１の全てに対して、温度情報の送信を要求するコマンドを送信するものである。すなわち、温度上昇の異常を検出していない状態の情報処理装置１０１は、他の情報処理装置１０１から、温度情報の送信を要求するコマンドを受信したとき、自分自身の温度管理テーブルを基に温度情報を返信するコマンドを生成して、温度情報要求コマンドの送信元の情報処理装置１０１に、生成された温度情報を返信するコマンドを送信する。そして、温度情報を返信するコマンドを受信した情報処理装置１０１は、ネットワーク２に接続されている全ての情報処理装置１０１の情報処理コントローラ１１１に含まれる全てのサブプロセッサ４３から、処理の移動または交換先として最適なサブプロセッサ４３を選択し、選択されたサブプロセッサ４３に、異常が発生したサブプロセッサ４３の処理を移動するか、または、それぞれの処理を交換するなどの処理を制御する。
【０２７７】
第３のパターンは、それぞれの情報処理装置１０１が、自分自身の温度管理テーブルを基に温度情報を監視し、温度上昇の異常を検出した場合、ネットワーク２に接続されている、他の情報処理装置１０１の全てに対して、サブプロセッサプログラムの移動を要求するコマンドを送信するものである。すなわち、温度上昇の異常を検出していない状態の情報処理装置１０１は、他の情報処理装置１０１から、サブプロセッサプログラムの移動を要求するコマンドを受信したとき、自分自身の温度管理テーブルを基に、サブプロセッサプログラムの移動先となることが可能か否かを示す返信コマンドを生成し、サブプロセッサプログラムの移動を要求するコマンドの送信元の情報処理装置１０１に、生成した返信コマンドを送信する。そして、返信コマンドを受信した情報処理装置１０１は、返信コマンドを基に、処理の移動または交換先として最適なサブプロセッサ４３を選択し、選択されたサブプロセッサ４３に、異常が発生したサブプロセッサ４３の処理を移動するか、または、それぞれの処理を交換するなどの処理を制御する。
【０２７８】
図２１に、第２の実施の形態の第１のパターンにおける情報処理コントローラ１１１が実行可能な機能を説明するための機能ブロック図を示す。なお、図１２における場合と対応する部分には同一の符号を付してあり、その説明は適宜省略する。すなわち、図２１に示される、第２の実施の形態の第１のパターンにおける情報処理コントローラ１１１のうち、メインプロセッサ４２が実行可能な機能においては、ＭＳマネージメント処理部２１１、能力交換処理制御部２１２、記憶部２１３、および、温度管理情報送受信制御部２１４が新たに設けられ、温度異常対応処理制御部１６９に代わって、温度異常対応処理制御部２１６が設けられ、論理スレッド管理処理部１６３に代わって、論理スレッド管理処理部２１７が設けられている以外は、基本的に、図１２を用いて説明した場合と同様であり、温度モニタ処理部１２２が実現可能な機能は、温度管理テーブル１６７に代わって、温度管理テーブル２１５が設けられている以外は、図１２を用いて説明した場合と同様である。
【０２７９】
なお、図２１において、これらの機能を実現するハードウェアが、上述するとおりではない場合、例えば、メインプロセッサ４２により実現される機能のうちの一部が温度モニタ処理部１２２により実現されたり、温度モニタ処理部１２２により実現される機能のうちの一部がメインプロセッサ４２により実現される場合や、これらの機能が、それぞれ異なるハードウェアにより実現される場合なども、本発明は適用可能であることは言うまでもない。
【０２８０】
ＭＳマネージメント処理部２１１は、自分自身がネットワーク２に接続されていることを検知すると、ＤＭＡコマンドがステータス要求コマンドであり、送信元ＩＤおよび応答先ＩＤが自分自身で、送信先ＩＤを特定しないソフトウェアセルを生成して、生成したソフトウェアセルを、通信部１６を介して、ネットワーク２に送信し、ＤＭＡコマンドがステータス返信コマンドであり、かつ、他の情報処理装置１のメインメモリ１２に記録されている装置情報をデータとして含むソフトウェアセルを受信することにより、同じネットワーク２に接続されている情報処理装置１０１のうち、自分自身がマスタ装置であるか、スレーブ装置であるかを認識する。能力交換処理制御部２１２は、自分自身がマスタ装置である場合、ネットワーク２に接続されている全ての他の情報処理装置１０１の装置情報、すなわち各スレーブ装置の装置情報を取得して、記憶部２１３に記憶させ、自分自身がスレーブ装置である場合、ネットワーク２に接続されている全ての他の情報処理装置１０１の装置情報に含まれる情報処理装置ＩＤおよびＭＳステータスを取得して、記憶部２１３に記憶させる。
【０２８１】
記憶部２１３は、メインメモリ１２のうちの少なくとも一部の記憶領域に対応し、ネットワーク２に接続されている情報処理装置１０１の装置情報、または、装置情報のうちの一部の情報を記憶する。温度管理情報送受信制御部２１４は、温度異常対応処理制御部２１６の制御に基づいて、通信部１６を介して、温度管理テーブル、または、温度管理のために生成された各種コマンド（ソフトウェアセル）の、ネットワーク２に接続されている他の情報処理装置１０１への送信を制御するとともに、通信部１６を介して、他の情報処理装置１０１の温度管理テーブル、または、温度管理のための各種コマンド（ソフトウェアセル）などの、ネットワーク２に接続されている他の情報処理装置１０１からの受信を制御する。以下、温度管理テーブル、または、温度管理のために生成された各種コマンド（ソフトウェアセル）など、ネットワーク２によって接続された複数の情報処理装置１０１の温度管理と温度管理の結果実行される分散処理の制御にかかわる情報を個々に区別する必要がない場合、温度管理情報と総称するものとする。
【０２８２】
温度管理テーブル２１５は、自分自身がマスタ装置である場合、温度情報取得部１６４により取得された情報を基に更新される自分自身の温度管理テーブルのみならず、温度管理情報送受信制御部２１４の処理により受信が制御された、ネットワーク２に接続されている他の情報処理装置１０１から送信された温度管理テーブルを記憶し、自分自身がスレーブ装置である場合、温度情報取得部１６４により取得された情報を基に更新される自分自身の温度管理テーブルを記憶する。
【０２８３】
温度異常対応処理制御部２１６は、自分自身がマスタ装置であり、割り込み制御部１６５により割り込みがかかった場合、温度管理テーブル２１５を参照して、ネットワーク２に接続されている全ての情報処理装置１０１のうち、異常な温度上昇が検出された温度検出部１２１に対応するのは、いずれの情報処理装置１０１が備えるものであるか、および、情報処理コントローラ１１１であるか、メインプロセッサ４２であるか、または、サブプロセッサ４３のうちのいずれであるかを検出し、検出結果を基に、論理スレッド管理処理部２１７を制御して、必要に応じて、処理をいったん停止させたり、サブプロセッサ４３のいずれかとの、実行されているスレッドの移動または交換を制御する。
【０２８４】
論理スレッド管理処理部２１７は、演算処理部１６１により実行されるアプリケーションプログラムに対応する論理スレッドの生成および削除を行うとともに、自分自身がマスタ装置である場合、ネットワーク２に接続されている情報処理装置１０１のうちのいずれかにおいて実行される分散処理に対応する論理スレッドの状態監視と動作制御を行う。論理スレッド管理処理部２１７は、自分自身がマスタ装置である場合、ネットワーク２に接続されている全ての情報処理装置１０１の管理情報が記載されたテーブルと、実行される論理スレッドごとに、論理スレッドの実行に必要な情報が記載されたテーブルを作成し、必要に応じて、テーブルの情報を参照し、更新することにより、論理スレッドの実行を制御する。
【０２８５】
また、論理スレッド管理処理部２１７は、自分自身がマスタ装置である場合、必要に応じて、他の情報処理装置１０１において実行されているスレッドの処理を制御するためのソフトウェアセルを生成し、通信部１６を介して、生成されたソフトウェアセルを送信する。また、更に、論理スレッド管理処理部２１７は、自分自身がスレーブ装置である場合、通信部１６を介して、マスタ装置である情報処理装置１０１から送信されたソフトウェアセルの供給を受け、ソフトウェアセルの内容に基づいた分散処理をサブプロセッサ４３に実行させるとともに、必要に応じて、返信や応答に対応するソフトウェアセルを生成し、通信部１６を介して、生成されたソフトウェアセルを送信する。更に、論理スレッド管理処理部２１７は、自分自身がマスタ装置であるかスレーブ装置であるかにかかわらず、必要に応じて、通信部１６により受信された、他の情報処理装置１０１において実行されたスレッドに関する情報を取得する。
【０２８６】
次に、図２２乃至図２４のフローチャートを参照して、第２の実施の形態の第１のパターンにおける動作を説明する。第２の実施の形態においても、アプリケーションプログラム実行処理は、図１４を用いて説明した第１の実施の形態における場合と、基本的に同様であるので、その説明は省略する。
【０２８７】
図２２のフローチャートを参照して、マスタ装置の温度情報管理処理について説明する。
【０２８８】
ステップＳ７１において、温度情報取得部１６４は、割り込み制御部１６５から、タイマ割り込みが入ったか否かを判断する。
【０２８９】
ステップＳ７１において、タイマ割り込みが入っていないと判断された場合、ステップＳ７２において、温度管理情報送受信制御部２１４は、ネットワーク２に接続されている他の情報処理装置１０１から、温度管理テーブルを受信したか否かを判断する。ステップＳ７２において、温度管理テーブルを受信していないと判断された場合、処理は、ステップＳ７１に戻り、それ以降の処理が繰り返される。ステップＳ７２において、温度管理テーブルを受信したと判断された場合、処理は、後述するステップＳ７４に進む。
【０２９０】
ステップＳ７１において、タイマ割り込みが入ったと判断された場合、ステップＳ７３において、温度情報取得部１６４は、温度検出部１２１のそれぞれから、温度情報を取得する。
【０２９１】
ステップＳ７２において、温度管理テーブルを受信したと判断された場合、または、ステップＳ７３の処理の終了後、ステップＳ７４において、温度情報取得部１６４は、ステップＳ７２において受信された他の情報処理装置１０１の温度管理テーブル、または、ステップＳ７３において取得された自分自身の温度情報を基に、温度管理テーブル２１５を更新する。
【０２９２】
ステップＳ７５において、温度上昇検出部１６８は、温度管理テーブル２１５を参照し、温度情報に異常値があるか否か、すなわち、ネットワーク２に接続されている情報処理装置１０１に設けられている全ての温度検出部１２１により検出された温度検出結果のうち、予め設定されている上限温度を超えたものがあるか否かを判断する。ステップＳ７５において、温度情報に異常値がないと判断された場合、処理は、ステップＳ７１に戻り、それ以降の処理が繰り返される。
【０２９３】
ステップＳ７５において、温度情報に異常値があったと判断された場合、ステップＳ７６において、温度上昇検出部１６８は、割り込み制御部１６５に、異常な温度上昇が検出されたことを通知し、演算処理部１６１および温度異常対応処理制御部２１６に割り込みをかけさせる。割り込み制御部１６５は、温度異常対応処理制御部２１６および演算処理部１６１に対して、割り込みをかけ、演算処理部１６１により制御されるアプリケーションプログラムの処理を停止させるとともに、温度異常対応処理制御部２１６に対して異常発生時の処理を開始させる。
【０２９４】
ステップＳ７７において、図２３を用いて後述する異常発生時の処理２が実行される。
【０２９５】
ステップＳ７８において、温度異常対応処理制御部２１６は、ステップＳ７７において実行された異常発生時の処理２に基づいて、論理スレッド管理処理部２１７を制御し、必要に応じて、論理スレッド管理に関するテーブルを更新させる。
【０２９６】
ステップＳ７９において、割り込み制御部１６５は、演算処理部１６１により制御されるアプリケーションプログラムの処理に対する割り込みを解除し、処理は、ステップＳ７１に戻り、それ以降の処理が繰り返される。
【０２９７】
このような処理により、ネットワーク２に接続されている情報処理装置１０１のそれぞれにおいて、温度検出部１２１のそれぞれにより検出された温度情報を基に更新された温度管理テーブルを、マスタ装置が取得して、温度管理テーブル２１５として管理することができるようになされ、マスタ装置において記憶されている温度管理テーブル２１５を基に、異常発生時の割り込み処理が実行されるか否かが判断される。
【０２９８】
次に、図２３のフローチャートを参照して、図２２のステップＳ７７において実行される異常発生時の処理２について説明する。
【０２９９】
ステップＳ９１において、温度異常対応処理制御部２１６は、温度管理テーブル２１５を参照し、温度の異常が発生したのは、ネットワーク２に接続されているいずれかの情報処理装置１０１のメインプロセッサ４２、または、情報処理コントローラ１１１であるか否かを判断する。ステップＳ９１において、温度の異常が発生したのは、ネットワーク２に接続されているいずれかの情報処理装置１０１のメインプロセッサ４２、または、情報処理コントローラ１１１であると判断された場合、処理は、後述するステップＳ１０３に進む。
【０３００】
ステップＳ９１において、温度の異常が発生したのは、メインプロセッサ４２、または、情報処理コントローラ１１１ではない、すなわち、ネットワーク２に接続されているいずれかの情報処理装置１０１のサブプロセッサ４３のうちのいずれかであると判断された場合、ステップＳ９２において、温度異常対応処理制御部２１６は、温度管理テーブル２１５を参照し、温度の異常が発生したサブプロセッサ４３の処理の移動が可能であるか否か、換言すれば、温度の異常が発生したサブプロセッサ４３以外のサブプロセッサ４３のうちのいずれかに、停止状態のものがあるか否かを判断する。ステップＳ９２において、温度の異常が発生したサブプロセッサ４３の処理の移動が可能ではないと判断された場合、処理は、後述するステップＳ９７に進む。
【０３０１】
ステップＳ９２において、温度の異常が発生したサブプロセッサ４３の処理の移動が可能であると判断された場合、ステップＳ９３において、温度異常対応処理制御部２１６は、温度管理テーブル２１５を参照し、ネットワーク２に接続されている情報処理装置１０１の情報処理コントローラ１１１のサブプロセッサ４３の中から、処理の移動先のサブプロセッサ４３を選択し、選択結果を、論理スレッド管理処理部２１７に供給する。具体的には、温度異常対応処理制御部２１６は、ネットワーク２に接続されている情報処理装置１０１の情報処理コントローラ１１１のサブプロセッサ４３の中から、現在動作中のサブプロセッサ４３に隣接しないものであって、かつ、停止状態であるサブプロセッサ４３のうち、温度検出結果が最も低いものを移動先のサブプロセッサ４３として優先的に選択するようになされている。また、この条件を満たすサブプロセッサ４３が複数ある場合、温度異常対応処理制御部２１６は、サブプロセッサＩＤとして割り当てられている番号が最も若いものを選択する。また、現在動作中のサブプロセッサ４３に隣接しない、停止状態であるサブプロセッサ４３が存在しない場合、温度異常対応処理制御部２１６は、ネットワーク２に接続されている情報処理装置１０１の情報処理コントローラ１１１のサブプロセッサ４３の中から、停止状態のサブプロセッサ４３のうち、温度検出結果が最も低いものを選択し、更に、この条件を満たすサブプロセッサ４３が複数ある場合は、サブプロセッサＩＤとして割り当てられている番号が最も若いものを選択し、選択結果を、論理スレッド管理処理部２１７に供給する。
【０３０２】
ステップＳ９４において、論理スレッド管理処理部２１７は、温度上限値を超えたサブプロセッサ４３により実行されていた処理に関するコンテキストを退避させる。
【０３０３】
温度上限値を超えたサブプロセッサ４３がマスタ装置であった場合、割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受け、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させた後、移動先のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、論理スレッド管理処理部２１７が管理する情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０３０４】
また、温度上限値を超えたサブプロセッサ４３がスレーブ装置であった場合、割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受け、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させた後、移動先のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、バス４１、バス１４、および、通信部１６、並びに、ネットワーク２を介して、マスタ装置として動作している情報処理装置１０１の論理スレッド管理処理部２１７が管理する情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０３０５】
ステップＳ９５において、論理スレッド管理処理部２１７は、温度上限値を超えたサブプロセッサ４３の動作を停止させる。
【０３０６】
ステップＳ９６において、論理スレッド管理処理部２１７は、移動先のサブプロセッサとして選択されたサブプロセッサ４３に、ステップＳ９４の処理により退避されたコンテキストをリストアする。すなわち、論理スレッド管理処理部２１７は、処理の移動先のサブプロセッサ４３がマスタ装置内のサブプロセッサ４３であるとき、バス４１を介して、移動先のサブプロセッサ４３に、自分自身が管理する情報記憶領域に記憶されているコンテキストを供給し、処理の移動先のサブプロセッサ４３がスレーブ装置内のサブプロセッサ４３であるとき、バス４１、バス１４、および、通信部１６、並びに、ネットワーク２を介して、スレーブ装置として動作している情報処理装置１０１に含まれる移動先のサブプロセッサ４３に、自分自身が管理する情報記憶領域に記憶されているコンテキストを供給する。移動先のサブプロセッサとして選択されたサブプロセッサ４３においては、供給されたコンテキストを、コード領域１８７乃至スタック領域１９０の対応する部分に記憶して、処理は、図２２のステップＳ７７に戻り、ステップＳ７８に進む。
【０３０７】
ステップＳ９２において、温度の異常が発生したサブプロセッサ４３の処理の移動が可能ではないと判断された場合、ステップＳ９７において、温度異常対応処理制御部２１６は、温度管理テーブル２１５を参照して、ネットワーク２に接続されている情報処理装置１０１の情報処理コントローラ１１１のサブプロセッサ４３の中から、処理の交換先のサブプロセッサ４３を選択し、選択結果を、論理スレッド管理処理部２１７に供給する。具体的には、温度異常対応処理制御部２１６は、ネットワーク２に接続されている情報処理装置１０１の情報処理コントローラ１１１のサブプロセッサ４３の中から、温度検出結果が最も低いものを移動先のサブプロセッサ４３として優先的に選択するようになされており、この条件を満たすサブプロセッサ４３が複数ある場合、サブプロセッサＩＤとして割り当てられている番号が最も若いものを選択するようになされている。
【０３０８】
ステップＳ９８において、論理スレッド管理処理部２１７は、温度上限値を超えたサブプロセッサ４３により実行されていた処理に関するコンテキストを退避させる。
【０３０９】
温度上限値を超えたサブプロセッサ４３がマスタ装置であった場合、割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受け、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させた後、移動先のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、論理スレッド管理処理部２１７が管理する情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０３１０】
また、温度上限値を超えたサブプロセッサ４３がスレーブ装置であった場合、割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受け、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させた後、交換先のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、バス４１、バス１４、および、通信部１６、並びに、ネットワーク２を介して、マスタ装置として動作している情報処理装置１０１の論理スレッド管理処理部２１７が管理する情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０３１１】
ステップＳ９９において、論理スレッド管理処理部２１７は、温度上限値を超えたサブプロセッサ４３の動作を停止させる。
【０３１２】
ステップＳ１００において、論理スレッド管理処理部２１７は、処理の交換先として選択されたサブプロセッサ４３により実行されていた処理に関するコンテキストを退避させる。
【０３１３】
処理の交換先として選択されたサブプロセッサ４３がマスタ装置であった場合、割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受け、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させた後、交換元のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、論理スレッド管理処理部２１７が管理する情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０３１４】
また、処理の交換先として選択されたサブプロセッサ４３がスレーブ装置であった場合、割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受け、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させた後、交換元のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、バス４１、バス１４、および、通信部１６、並びに、ネットワーク２を介して、マスタ装置として動作している情報処理装置１０１の論理スレッド管理処理部２１７が管理する情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０３１５】
ステップＳ１０１において、論理スレッド管理処理部２１７は、処理の交換先として選択されたサブプロセッサ４３の動作を停止させる。
【０３１６】
ステップＳ１０２において、論理スレッド管理処理部２１７は、退避された２つのサブプロセッサ４３のコンテキストを交換してリストアさせる。すなわち、論理スレッド管理処理部２１７は、処理の交換先のサブプロセッサとして選択されたサブプロセッサ４３に、ステップＳ９８の処理により退避されたコンテキストをリストアするとともに、温度上限値を超えたサブプロセッサ４３に、ステップＳ１００の処理により退避されたコンテキストをリストアする。具体的には、論理スレッド管理処理部２１７は、温度上限値を越えたサブプロセッサ４３、または、処理の交換先のサブプロセッサ４３がマスタ装置内のサブプロセッサ４３であるとき、バス４１を介して、交換先のサブプロセッサ４３に、自分自身が管理する情報記憶領域に記憶されているコンテキストのうち対応するものを供給し、温度上限値を越えたサブプロセッサ４３、または、処理の交換先のサブプロセッサ４３がスレーブ装置内のサブプロセッサ４３であるとき、バス４１、バス１４、および、通信部１６、並びに、ネットワーク２を介して、スレーブ装置として動作している情報処理装置１０１に含まれる交換先のサブプロセッサ４３に、自分自身が管理する情報記憶領域に記憶されているコンテキストのうち対応するものを供給する。それぞれのサブプロセッサ４３には、供給されたコンテキストを、コード領域１８７乃至スタック領域１９０の対応する部分に記憶して、処理は、図２２のステップＳ７７に戻り、ステップＳ７８に進む。
【０３１７】
ステップＳ９１において、温度の異常が発生したのは、メインプロセッサ４２、または、情報処理コントローラ１１１であると判断された場合、ステップＳ１０３において、温度異常対応処理制御部２１６は、温度の異常が発生したメインプロセッサ４２、または、情報処理コントローラ１１１は、マスタ装置である情報処理装置１０１に含まれるか否かを判断する。ステップＳ１０３において、温度の異常が発生したメインプロセッサ４２、または、情報処理コントローラ１１１は、マスタ装置である情報処理装置１０１に含まれると判断された場合、処理は、後述するステップＳ１０６に進む。
【０３１８】
ステップＳ１０３において、温度の異常が発生したメインプロセッサ４２、または、情報処理コントローラ１１１は、マスタ装置である情報処理装置１０１に含まれない、すなわち、温度の異常が発生したメインプロセッサ４２、または、情報処理コントローラ１１１は、スレーブ装置である情報処理装置１０１に含まれると判断された場合、ステップＳ１０４において、温度異常対応処理制御部２１６は、温度管理テーブル２１５を参照して、異常が発生したメインプロセッサ４２、または、情報処理コントローラ１１１が含まれる情報処理装置１０１の情報処理コントローラ１１１全体の処理が移動可能であるか否かを判断する。ステップＳ１０４において、異常が発生したメインプロセッサ４２、または、情報処理コントローラ１１１が含まれる情報処理装置１０１の情報処理コントローラ１１１全体の処理が移動可能であると判断された場合、処理は、ステップＳ９３に進む。
【０３１９】
ステップＳ１０４において、異常が発生したメインプロセッサ４２、または、情報処理コントローラ１１１が含まれる情報処理装置１０１の情報処理コントローラ全体の処理が移動可能ではないと判断された場合、ステップＳ１０５において、温度異常対応処理制御部２１６は、温度管理テーブル２１５を参照して、異常が発生したメインプロセッサ４２、または、情報処理コントローラ１１１が含まれる情報処理装置１０１の情報処理コントローラ１１１全体の処理の交換が可能であるか否かを判断する。ステップＳ１０５において、異常が発生したメインプロセッサ４２、または、情報処理コントローラ１１１が含まれる情報処理装置１０１の情報処理コントローラ１１１全体の処理の交換が可能であると判断された場合、処理は、ステップＳ９７に進む。
【０３２０】
ステップＳ１０３において、温度の異常が発生したメインプロセッサ４２、または、情報処理コントローラ１１１は、マスタ装置である情報処理装置１０１に含まれると判断された場合、または、ステップＳ１０５において、異常が発生したメインプロセッサ４２、または、情報処理コントローラ１１１が含まれる情報処理装置１０１の情報処理コントローラ全体の処理の交換が可能ではないと判断された場合、ステップＳ１０６において、温度異常対応処理制御部２１６は、論理スレッド管理処理部２１７を制御して、演算処理部１６１により実行されているアプリケーションプログラムを一時停止させるなどして、常時動作する常駐プログラムなどが実行する一部の必要な処理を除いて、メインプロセッサ４２の処理を一時中断させる。
【０３２１】
ステップＳ１０７において、温度異常対応処理制御部２１６は、温度管理テーブル２１５を参照して、温度状態が正常に戻ったか否かを判断する。ステップＳ１０７において、温度状態が正常に戻っていないと判断された場合、温度状態が正常に戻ったと判断されるまで、ステップＳ１０７の処理が繰り返される。ステップＳ１０７において、温度状態が正常に戻ったと判断された場合、処理は、図２２のステップＳ７７に戻り、ステップＳ７８に進む。
【０３２２】
このような処理により、温度異常の発生箇所、そのときのチップ内の動作、および、それぞれのプロセッサの温度検出値に基づいて、処理が一時停止されるか、分散処理のうちの少なくとも一部が移動されるか、または、分散処理のうちの少なくとも一部が交換されるかが判断され、処理の移動先または交換先が選択されるようになされている。
【０３２３】
次に、図２４のフローチャートを参照して、図２２を用いて説明したマスタ装置の温度情報管理処理と並行して実行される、スレーブ装置の温度情報管理処理について説明する。
【０３２４】
ステップＳ１２１において、スレーブ装置として動作している情報処理装置１０１の温度情報取得部１６４は、割り込み制御部１６５から、タイマ割り込みが入ったか否かを判断する。ステップＳ１２１において、タイマ割り込みが入っていないと判断された場合、タイマ割り込みが入ったと判断されるまで、ステップＳ１２１の処理が繰り返される。
【０３２５】
ステップＳ１２１において、タイマ割り込みが入ったと判断された場合、ステップＳ１２２において、温度情報取得部１６４は、温度検出部１２１のそれぞれから、温度情報を取得する。
【０３２６】
ステップＳ１２３において、温度情報取得部１６４は、ステップＳ１２２において取得された温度情報を基に、温度管理テーブル２１５を更新する。
【０３２７】
ステップＳ１２４において、温度管理情報送受信制御部２１４は、ステップＳ１２３において更新された温度管理テーブル２１５を、通信部１６およびネットワーク２を介して、マスタ装置として動作している情報処理装置１０１に送信し、処理は、ステップＳ１２１に戻り、それ以降の処理が繰り返される。
【０３２８】
このような処理により、スレーブ装置の温度管理テーブルがマスタ装置に送信される。送信されたそれぞれのスレーブ装置の温度管理テーブルは、マスタ装置において管理される。
【０３２９】
図２１乃至図２４を用いて説明した処理により、メインプロセッサ４２、および、それぞれのサブプロセッサ４３に温度検出部１２１が設けられている情報処理コントローラ１１１を有する情報処理装置１０１が、複数、ネットワーク２に接続されている第２の実施の形態において、第１のパターンの温度情報、および、処理の移動または交換の制御を用いて、実行中の処理を停止させるのを最小限に抑えつつ、熱暴走などによる素子の破壊や処理速度の低下を防ぐようにすることができる。
【０３３０】
次に、図２５に、第２の実施の形態の第２のパターンにおける情報処理コントローラ１１１が実行可能な機能を説明するための機能ブロック図を示す。なお、図２１における場合と対応する部分には同一の符号を付してあり、その説明は適宜省略する。すなわち、図２５に示される、第２の実施の形態の第２のパターンにおける情報処理コントローラ１１１のうち、メインプロセッサ４２が実行可能な機能においては、記憶部２１３、温度管理情報送受信制御部２１４、および、温度異常対応処理制御部２１６に代わって、記憶部２３１、温度管理情報送受信制御部２３２、および、温度異常対応処理制御部２３４が設けられている以外は、基本的に、図２１を用いて説明した場合と同様であり、温度モニタ処理部１２２が実現可能な機能は、温度管理テーブル２１５に代わって、温度管理テーブル２３３が設けられている以外は、図２１を用いて説明した場合と同様である。
【０３３１】
なお、図２５において、これらの機能を実現するハードウェアが、上述するとおりではない場合、例えば、メインプロセッサ４２により実現される機能のうちの一部が温度モニタ処理部１２２により実現されたり、温度モニタ処理部１２２により実現される機能のうちの一部がメインプロセッサ４２により実現される場合や、これらの機能が、それぞれ異なるハードウェアにより実現される場合なども、本発明は適用可能であることは言うまでもない。
【０３３２】
記憶部２３１は、メインメモリ１２のうちの少なくとも一部の記憶領域に対応し、ネットワーク２に接続されている情報処理装置１０１の装置情報、または、装置情報のうちの一部の情報を記憶するとともに、温度管理情報送受信制御部２３２が受信した、他の情報処理装置１０１における温度管理テーブルを一時記憶する。温度管理情報送受信制御部２３２は、温度異常対応処理制御部２３４の制御に基づいて、通信部１６を介して、温度管理情報、または、温度管理のために生成された各種コマンド（ソフトウェアセル）の、ネットワーク２に接続されている他の情報処理装置１０１への送信を制御するとともに、通信部１６を介して、他の情報処理装置１０１から送信された温度管理情報、または、温度管理のための各種コマンド（ソフトウェアセル）などの、ネットワーク２に接続されている他の情報処理装置１０１からの受信を制御する。
【０３３３】
温度異常対応処理制御部２３４は、自分自身の温度情報取得部１６４により取得された情報を基に、温度上昇検出部１６８により温度異常の発生が検出されて、割り込み制御部１６５により割り込み処理が実行された場合、ネットワーク２に接続されている、他の情報処理装置１０１の全てに対して、温度管理情報の送信を要求するコマンドを生成し、温度管理情報送受信制御部２３２を制御して、生成したコマンドを送信させる。また、温度異常対応処理制御部２３４は、温度管理情報送受信制御部２３２が、ネットワーク２に接続されている、他の情報処理装置１０１から温度管理情報の送信を要求するコマンドを受信した場合、温度管理テーブル２３３に記憶されている温度管理テーブルを基に、図２６に示される温度情報返信コマンドを生成し、温度管理情報送受信制御部２３２を制御して、生成した温度情報返信コマンドを送信させる。
【０３３４】
温度情報返信コマンドには、温度管理テーブル２３３に記憶されている温度管理テーブルを基に、ヒートシンク１４１、メインプロセッサ４２、および、サブプロセッサ４３−１乃至サブプロセッサ４３−８における最新の温度検出結果（すなわち、温度検出部１２１−１乃至温度検出部１２１−１０のそれぞれの最新の温度検出結果）、ヒートシンク１４１、メインプロセッサ４２、サブプロセッサ４３−１乃至サブプロセッサ４３−８における上限温度の設定値（すなわち、温度検出部１２１−１乃至温度検出部１２１−１０のそれぞれが検出する温度がこれ以上高い場合は、異常値であると判別するための設定値）、および、サブプロセッサ４３−１乃至サブプロセッサ４３-８の動作状態を示す情報、並びに、チップ内のサブプロセッサの配置情報が記載されている。
【０３３５】
温度管理テーブル２３３は、自分自身がマスタ装置であるかスレーブ装置であるかにかかわらず、自分自身の温度情報取得部１６４により取得された情報を基に更新される自分自身の温度管理テーブルを記憶する。
【０３３６】
次に、図２７および図２８のフローチャートを参照して、第２の実施の形態の第２のパターンにおける動作を説明する。第２の実施の形態においても、アプリケーションプログラム実行処理は、図１４を用いて説明した第１の実施の形態における場合と、基本的に同様であるので、その説明は省略する。
【０３３７】
図２７のフローチャートを参照して、温度情報管理処理２について説明する。
【０３３８】
ステップＳ１４１乃至ステップＳ１４４において、図１５のステップＳ２１乃至ステップＳ２４と基本的に同様の処理が実行される。すなわち、タイマ割り込みが入ったと判断された場合、温度情報取得部１６４は、温度検出部１２１のそれぞれから、温度情報を取得し、温度管理テーブル２３３を更新する。そして、温度上昇検出部１６８は、温度管理テーブル２３３を参照し、温度情報に異常値があるか否かを判断する。
【０３３９】
ステップＳ１４４において、温度情報に異常値がないと判断された場合、ステップＳ１４５において、温度異常対応処理制御部２３４は、温度管理情報送受信制御部２３２が、ネットワーク２に接続されている、他の情報処理装置１０１から温度管理情報の送信を要求するコマンドを受信したか否かを判断する。ステップＳ１４５において、他の情報処理装置１０１から温度管理情報の送信を要求するコマンドを受信していないと判断された場合、処理は、ステップＳ１４１に戻り、それ以降の処理が繰り返される。
【０３４０】
ステップＳ１４５において、他の情報処理装置１０１から温度管理情報の送信を要求するコマンドを受信したと判断された場合、ステップＳ１４６において、温度異常対応処理制御部２３４は、温度管理テーブル２３３に記憶されている温度管理テーブルを基に、図２６に示される温度情報返信コマンドを生成し、温度管理情報送受信制御部２３２を制御して、生成した温度情報返信コマンドを送信させ、処理は、ステップＳ１４１に戻り、それ以降の処理が繰り返される。
【０３４１】
ステップＳ１４４において、温度情報に異常値があったと判断された場合、ステップＳ１４７において、温度上昇検出部１６８は、割り込み制御部１６５に、異常な温度上昇が検出されたことを通知し、演算処理部１６１および温度異常対応処理制御部２３４に割り込みをかけさせる。割り込み制御部１６５は、温度異常対応処理制御部２３４および演算処理部１６１に対して、割り込みをかけ、演算処理部１６１により制御されるアプリケーションプログラムの処理を停止させるとともに、温度異常対応処理制御部２３４に対して異常発生時の処理を開始させる。
【０３４２】
ステップＳ１４８において、図２８を用いて後述する異常発生時の処理３が実行される。
【０３４３】
ステップＳ１４９において、温度異常対応処理制御部２３４は、ステップＳ１４８において実行された異常発生時の処理３に基づいて、論理スレッド管理処理部２１７を制御し、必要に応じて、論理スレッド管理に関するテーブルを更新させる。
【０３４４】
ステップＳ１５０において、割り込み制御部１６５は、演算処理部１６１により制御されるアプリケーションプログラムの処理に対する割り込みを解除し、処理は、ステップＳ１４１に戻り、それ以降の処理が繰り返される。
【０３４５】
このような処理により、ネットワーク２に接続されている情報処理装置１０１のそれぞれが、マスタ措置であるかスレーブ装置であるかにかかわらず、自分自身の温度検出部１２１のそれぞれにより検出された温度情報を基に更新された温度管理テーブルを基に、自分自身の温度異常を検出し、異常発生時には、割り込み処理が実行され、後述する異常発生時の処理３が実行される。また、ネットワーク２に接続されている他の情報処理装置から、温度情報の送信要求を受けた場合、図２６に示される温度情報返信コマンドが生成されて、送信要求元の情報処理装置１０１に送信される。
【０３４６】
次に、図２８のフローチャートを参照して、図２７のステップＳ１４８において実行される異常発生時の処理３について説明する。
【０３４７】
ステップＳ１８１において、温度異常対応処理制御部２３４は、温度管理テーブル２３３を参照し、温度の異常が発生したのは、メインプロセッサ４２、または、情報処理コントローラ１１１であるか否か、換言すれば、予め設定されている上限温度を超えた温度検出結果を得たのは、温度検出部１２１-９または温度検出部１２１−１０のうちのいずれかであるか否かを判断する。ステップＳ１８１において、温度の異常が発生したのは、メインプロセッサ４２、または、情報処理コントローラ１１１であると判断された場合、処理は、後述するステップＳ１９５に進む。
【０３４８】
ステップＳ１８１において、温度の異常が発生したのは、メインプロセッサ４２、または、情報処理コントローラ１１１ではない、すなわち、サブプロセッサ４３のうちのいずれかであると判断された場合、ステップＳ１８２において、温度異常対応処理制御部２３４は、ネットワーク２に接続されている、他の情報処理装置１０１の全てに対して、温度管理情報の送信を要求するコマンドを生成し、温度管理情報送受信制御部２３２を制御して、生成したコマンドを送信させる。温度管理情報送受信制御部２３２は、温度管理情報の送信を要求するコマンドを、通信部１６およびネットワーク２を介して、ネットワーク２に接続されている、他の情報処理装置１０１の全てに送信する。
【０３４９】
ステップＳ１８３において、温度管理情報送受信制御部２３２は、図２６を用いて説明した温度情報返信コマンドを受信し、温度異常対応処理制御部２３４に供給する。
【０３５０】
ステップＳ１８４において、温度異常対応処理制御部２３４は、ネットワーク２に接続されている、他の情報処理装置１０１の全てから送信された温度情報返信コマンドを基に、温度の異常が発生したサブプロセッサ４３の処理の移動が可能であるか否かを判断する。
【０３５１】
ステップＳ１８４において、処理の移動が可能であると判断された場合、ステップＳ１８５乃至ステップＳ１８８において、図２３のステップＳ９３乃至ステップＳ９６と基本的に同様の処理が実行される。すなわち、温度管理テーブル２３３が参照されて、ネットワーク２に接続されている情報処理装置１０１の情報処理コントローラ１１１のサブプロセッサ４３の中から、処理の移動先のサブプロセッサ４３が選択され、温度上限値を超えたサブプロセッサ４３により実行されていた処理に関するコンテキストが退避され、温度上限値を超えたサブプロセッサ４３の動作が停止され、退避されたコンテキストが移動先のサブプロセッサにリストアされる。
【０３５２】
ステップＳ１８８の処理の終了後、処理は、図２７のステップＳ１４８に戻り、ステップＳ１４９に進む。
【０３５３】
ステップＳ１８４において、処理の移動が可能ではないと判断された場合、ステップＳ１８９乃至ステップＳ１９４において、図２３のステップＳ９７乃至ステップＳ１０２と基本的に同様の処理が実行される。すなわち、温度管理テーブル２３３が参照されて、ネットワーク２に接続されている情報処理装置１０１の情報処理コントローラ１１１のサブプロセッサ４３の中から、処理の交換先のサブプロセッサ４３が選択され、温度上限値を超えたサブプロセッサ４３により実行されていた処理に関するコンテキストが退避され、温度上限値を超えたサブプロセッサ４３の動作が停止される。
【０３５４】
そして、処理の交換先として選択されたサブプロセッサ４３により実行されていた処理に関するコンテキストが退避され、処理の交換先として選択されたサブプロセッサ４３の動作が停止され、退避された２つのサブプロセッサ４３のコンテキストが、交換されてリストアされる。
【０３５５】
ステップＳ１９４の処理の終了後、処理は、図２７のステップＳ１４８に戻り、ステップＳ１４９に進む。
【０３５６】
ステップＳ１８１において、温度の異常が発生したのは、メインプロセッサ４２、または、情報処理コントローラ１１１であると判断された場合、ステップＳ１９５およびステップＳ１９６において、図１６のステップＳ５３およびステップＳ５４と基本的に同様の処理が実行される。すなわち、論理スレッド管理処理部２１７が制御されて、演算処理部１６１により実行されているアプリケーションプログラムが一時停止され、常時動作する常駐プログラムなどが実行する一部の必要な処理を除いて、メインプロセッサ４２の処理が一時中断され、温度管理テーブル２３３が参照されて、温度状態が正常に戻ったか否かが判断され、温度状態が正常に戻っていないと判断された場合、温度状態が正常に戻ったと判断されるまで、ステップＳ１９６の処理が繰り返される。
【０３５７】
ステップＳ１９６において、温度状態が正常に戻ったと判断された場合、処理は、図２７のステップＳ１４８に戻り、ステップＳ１４９に進む。
【０３５８】
このような処理により、温度異常が発生した場合、他の装置に温度情報の送信を要求し、温度異常の発生箇所、ネットワーク２に接続されているそれぞれの情報処理コントローラ１１１のそのときの動作、および、それぞれのプロセッサの温度検出値に基づいて、処理が停止されるか、分散処理のうちの一部が移動されるか、または、分散処理のうちの一部が交換されるかが判断され、処理の移動先または交換先が選択されるようになされている。
【０３５９】
図２５乃至図２８を用いて説明した処理により、メインプロセッサ４２、および、それぞれのサブプロセッサ４３に温度検出部１２１が設けられている情報処理コントローラ１１１を有する情報処理装置１０１が、複数、ネットワーク２に接続されている第２の実施の形態において、第２のパターンの温度情報、および、処理の移動または交換の制御を用いて、実行中の処理を停止させるのを最小限に抑えつつ、熱暴走などによる素子の破壊や処理速度の低下を防ぐようにすることができる。
【０３６０】
次に、図２９に、第２の実施の形態の第３のパターンにおける情報処理コントローラ１１１が実行可能な機能を説明するための機能ブロック図を示す。なお、図２１における場合と対応する部分には同一の符号を付してあり、その説明は適宜省略する。すなわち、図２９に示される、第２の実施の形態の第３のパターンにおける情報処理コントローラ１１１のうち、メインプロセッサ４２が実行可能な機能においては、温度管理情報送受信制御部２１４、および、温度異常対応処理制御部２１６に代わって、温度管理情報送受信制御部２５１、および、温度異常対応処理制御部２５２が設けられている以外は、基本的に、図２１を用いて説明した場合と同様であり、温度モニタ処理部１２２が実現可能な機能は、温度管理テーブル２１５に代わって、図２５を用いて説明した温度管理テーブル２３３が設けられている以外は、図２１を用いて説明した場合と同様である。
【０３６１】
なお、図２９において、これらの機能を実現するハードウェアが、上述するとおりではない場合、例えば、メインプロセッサ４２により実現される機能のうちの一部が温度モニタ処理部１２２により実現されたり、温度モニタ処理部１２２により実現される機能のうちの一部がメインプロセッサ４２により実現される場合や、これらの機能が、それぞれ異なるハードウェアにより実現される場合なども、本発明は適用可能であることは言うまでもない。
【０３６２】
温度管理情報送受信制御部２５１は、温度異常対応処理制御部２５２の制御に基づいて、通信部１６を介して、温度管理情報、または、温度管理のために生成された各種コマンド（ソフトウェアセル）の、ネットワーク２に接続されている他の情報処理装置１０１への送信を制御するとともに、通信部１６を介して、他の情報処理装置１０１から送信された温度管理情報、または、温度管理のための各種コマンド（ソフトウェアセル）などの、ネットワーク２に接続されている他の情報処理装置１０１からの受信を制御する。
【０３６３】
温度異常対応処理制御部２５２は、自分自身の温度情報取得部１６４により取得された情報を基に、温度上昇検出部１６８により温度異常の発生が検出されて、割り込み制御部１６５により割り込み処理が実行された場合、ネットワーク２に接続されている、他の情報処理装置１０１の全てに対して、現在実行中の論理スレッドに対応する処理の移動または高官を要求するために、図３０に示される、サブプロセッサプログラム移動要求コマンドを生成し、温度管理情報送受信制御部２５１を制御して、生成したコマンドを送信させる。また、温度異常対応処理制御部２５２は、温度管理情報送受信制御部２５１が、ネットワーク２に接続されている、他の情報処理装置１０１から、図３０に示される、サブプロセッサプログラム移動要求コマンドを受信した場合、温度管理テーブル２３３に記憶されている温度管理テーブルを基に、図３１に示されるサブプロセッサプログラム移動返信コマンドを生成し、温度管理情報送受信制御部２５１を制御して、生成したサブプロセッサプログラム移動返信コマンドを送信させる。
【０３６４】
サブプロセッサプログラム移動要求コマンドには、温度異常が発生したサブプロセッサにおいて実行されている処理（スレッド）によるサブプロセッサ使用率と、ローカルストレージ容量が記載されている。
【０３６５】
また、サブプロセッサプログラム移動返信コマンドには、サブプロセッサプログラムの移動要求を受けるか否かを示す情報（移動がＯＫか、交換ならＯＫか、または、いずれもＮＧか）と、サブプロセッサプログラムの移動要求を受ける場合には、サブプロセッサプログラムの移動要求を受けるサブプロセッサＩＤとが含まれる。温度異常対応処理制御部２５２は、サブプロセッサプログラムの移動要求を受けるか、交換を受けるか、または、いずれも拒否するかを、サブプロセッサプログラム移動要求コマンドに記載されている、温度異常が発生したサブプロセッサにおいて実行されている処理（スレッド）によるサブプロセッサ使用率、および、ローカルストレージ容量の情報と、自分自身の温度管理テーブル２３３に記憶されている温度管理テーブルとを基に判断する。
【０３６６】
温度管理テーブル２３３は、図２５を用いて説明した場合と同様に、自分自身がマスタ装置であるかスレーブ装置であるかにかかわらず、自分自身の温度情報取得部１６４により取得された情報を基に更新される自分自身の温度管理テーブルを記憶する。
【０３６７】
次に、図３２および図３３のフローチャートを参照して、第２の実施の形態の第３のパターンにおける動作を説明する。第２の実施の形態においても、アプリケーションプログラム実行処理は、図１４を用いて説明した第１の実施の形態における場合と、基本的に同様であるので、その説明は省略する。
【０３６８】
図３２のフローチャートを参照して、温度情報管理処理２について説明する。
【０３６９】
ステップＳ２１１乃至ステップＳ２１４において、図１５のステップＳ２１乃至ステップＳ２４と基本的に同様の処理が実行される。すなわち、タイマ割り込みが入ったと判断された場合、温度情報取得部１６４は、温度検出部１２１のそれぞれから、温度情報を取得し、温度管理テーブル２３３を更新する。そして、温度上昇検出部１６８は、温度管理テーブル２３３を参照し、温度情報に異常値があるか否かを判断する。
【０３７０】
ステップＳ２１４において、温度情報に異常値がないと判断された場合、ステップＳ２１５において、温度異常対応処理制御部２５２は、温度管理情報送受信制御部２５１が、ネットワーク２に接続されている、他の情報処理装置１０１から、図３０を用いて説明したサブプロセッサプログラム移動要求コマンドを受信したか否かを判断する。ステップＳ２１５において、他の情報処理装置１０１からサブプロセッサプログラム移動要求コマンドを受信していないと判断された場合、処理は、ステップＳ２１１に戻り、それ以降の処理が繰り返される。
【０３７１】
ステップＳ２１５において、他の情報処理装置１０１からサブプロセッサプログラム移動要求コマンドを受信したと判断された場合、ステップＳ２１６において、温度異常対応処理制御部２５２は、受信したサブプロセッサプログラム移動要求コマンドに記載されている、温度異常が発生したサブプロセッサにおいて実行されている処理（スレッド）によるサブプロセッサ使用率と、ローカルストレージ容量と、温度管理テーブル２３３に記憶されている自分自身のサブプロセッサ４３−１乃至サブプロセッサ４３-８の動作状態を示す情報、ヒートシンク１４１、メインプロセッサ４２、および、サブプロセッサ４３−１乃至サブプロセッサ４３−８における最新の温度検出結果、並びに、チップ内のサブプロセッサの配置情報を基に、サブプロセッサプログラムの移動要求を受けるか否かを決定して、図３１に示される温度情報返信コマンドを生成し、温度管理情報送受信制御部２５１を制御して、生成した温度情報返信コマンドを送信させ、処理は、ステップＳ２１１に戻り、それ以降の処理が繰り返される。
【０３７２】
ステップＳ２１４において、温度情報に異常値があったと判断された場合、ステップＳ２１７において、温度上昇検出部１６８は、割り込み制御部１６５に、異常な温度上昇が検出されたことを通知し、演算処理部１６１および温度異常対応処理制御部２５２に割り込みをかけさせる。割り込み制御部１６５は、温度異常対応処理制御部２５２および演算処理部１６１に対して、割り込みをかけ、演算処理部１６１により制御されるアプリケーションプログラムの処理を停止させるとともに、温度異常対応処理制御部２５２に対して異常発生時の処理を開始させる。
【０３７３】
ステップＳ２１８において、図３３を用いて後述する異常発生時の処理４が実行される。
【０３７４】
ステップＳ２１９において、温度異常対応処理制御部２５２は、ステップＳ２１８において実行された異常発生時の処理４に基づいて、論理スレッド管理処理部２１７を制御し、必要に応じて、論理スレッド管理に関するテーブルを更新させる。
【０３７５】
ステップＳ２２０において、割り込み制御部１６５は、演算処理部１６１により制御されるアプリケーションプログラムの処理に対する割り込みを解除し、処理は、ステップＳ２１１に戻り、それ以降の処理が繰り返される。
【０３７６】
このような処理により、ネットワーク２に接続されている情報処理装置１０１のそれぞれが、マスタ措置であるかスレーブ装置であるかにかかわらず、自分自身の温度検出部１２１のそれぞれにより検出された温度情報を基に更新された温度管理テーブルを基に、自分自身の温度異常を検出し、異常発生時には、割り込み処理が実行され、後述する異常発生時の処理４が実行される。また、ネットワーク２に接続されている他の情報処理装置から、図３０に示されるサブプロセッサプログラム移動要求コマンドが受信された場合、図３１に示される温度情報返信コマンドが生成されて、要求元の情報処理装置１０１に送信される。
【０３７７】
次に、図３３のフローチャートを参照して、図３２のステップＳ２１８において実行される異常発生時の処理４について説明する。
【０３７８】
ステップＳ２３１において、温度異常対応処理制御部２５２は、温度管理テーブル２３３を参照し、温度の異常が発生したのは、メインプロセッサ４２、または、情報処理コントローラ１１１であるか否か、換言すれば、予め設定されている上限温度を超えた温度検出結果を得たのは、温度検出部１２１-９または温度検出部１２１−１０のうちのいずれかであるか否かを判断する。ステップＳ２３１において、温度の異常が発生したのは、メインプロセッサ４２、または、情報処理コントローラ１１１であると判断された場合、処理は、後述するステップＳ２４５に進む。
【０３７９】
ステップＳ２３１において、温度の異常が発生したのは、メインプロセッサ４２、または、情報処理コントローラ１１１ではない、すなわち、サブプロセッサ４３のうちのいずれかであると判断された場合、ステップＳ２３２において、温度異常対応処理制御部２５２は、図３０を用いて説明したサブプロセッサプログラム移動要求コマンドを生成し、温度管理情報送受信制御部２５１を制御して、ネットワーク２に接続されている他の情報処理装置１０１の全てに対して、生成したコマンドを送信させる。温度管理情報送受信制御部２５１は、サブプロセッサプログラム移動要求コマンドを、通信部１６およびネットワーク２を介して、ネットワーク２に接続されている、他の情報処理装置１０１の全てに送信する。
【０３８０】
ステップＳ２３３において、温度管理情報送受信制御部２５１は、図３１に示されるサブプロセッサプログラム移動要求コマンドを受信し、温度異常対応処理制御部２５２に供給する。
【０３８１】
ステップＳ２３４において、温度異常対応処理制御部２５２は、ステップＳ２３３において受信された温度情報返信コマンドを基に、温度の異常が発生したサブプロセッサ４３の処理の移動が可能であるか否かを判断する。
【０３８２】
ステップＳ２３４において、処理の移動が可能であると判断された場合、ステップＳ２３５乃至ステップＳ２３８において、図２３のステップＳ９３乃至ステップＳ９６と基本的に同様の処理が実行される。すなわち、温度管理テーブル２３３が参照されて、ネットワーク２に接続されている情報処理装置１０１の情報処理コントローラ１１１のサブプロセッサ４３の中から、処理の移動先のサブプロセッサ４３が選択され、温度上限値を超えたサブプロセッサ４３により実行されていた処理に関するコンテキストが退避され、温度上限値を超えたサブプロセッサ４３の動作が停止され、退避されたコンテキストが移動先のサブプロセッサにリストアされる。
【０３８３】
ステップＳ２３８の処理の終了後、処理は、図３２のステップＳ２１８に戻り、ステップＳ２１９に進む。
【０３８４】
ステップＳ２３４において、処理の移動が可能ではないと判断された場合、ステップＳ２３９乃至ステップＳ２４４において、図２３のステップＳ９７乃至ステップＳ１０２と基本的に同様の処理が実行される。すなわち、温度管理テーブル２３３が参照されて、ネットワーク２に接続されている情報処理装置１０１の情報処理コントローラ１１１のサブプロセッサ４３の中から、処理の交換先のサブプロセッサ４３が選択され、温度上限値を超えたサブプロセッサ４３により実行されていた処理に関するコンテキストが退避され、温度上限値を超えたサブプロセッサ４３の動作が停止される。
【０３８５】
そして、処理の交換先として選択されたサブプロセッサ４３により実行されていた処理に関するコンテキストが退避され、処理の交換先として選択されたサブプロセッサ４３の動作が停止され、退避された２つのサブプロセッサ４３のコンテキストが、交換されてリストアされる。
【０３８６】
ステップＳ２４４の処理の終了後、処理は、図３２のステップＳ２１８に戻り、ステップＳ２１９に進む。
【０３８７】
ステップＳ２３１において、温度の異常が発生したのは、メインプロセッサ４２、または、情報処理コントローラ１１１であると判断された場合、ステップＳ２４５およびステップＳ２４６において、図１６のステップＳ５３およびステップＳ５４と基本的に同様の処理が実行される。すなわち、論理スレッド管理処理部２１７が制御されて、演算処理部１６１により実行されているアプリケーションプログラムが一時停止され、常時動作する常駐プログラムなどが実行する一部の必要な処理を除いて、メインプロセッサ４２の処理が一時中断され、温度管理テーブル２３３が参照されて、温度状態が正常に戻ったか否かが判断され、温度状態が正常に戻っていないと判断された場合、温度状態が正常に戻ったと判断されるまで、ステップＳ２４６の処理が繰り返される。
【０３８８】
ステップＳ２４６において、温度状態が正常に戻ったと判断された場合、処理は、図３２のステップＳ２１８に戻り、ステップＳ２１９に進む。
【０３８９】
このような処理により、温度異常が発生した場合、サブプロセッサプログラム移動要求コマンドが送信され、その返信コマンドが受信され、温度異常の発生箇所、ネットワーク２に接続されているそれぞれの情報処理コントローラ１１１のそのときの動作、および、それぞれのプロセッサの温度検出値に基づいて、処理が停止されるか、分散処理のうちの一部が移動されるか、または、分散処理のうちの一部が交換されるかが判断され、処理の移動先または交換先が選択されるようになされている。
【０３９０】
図２９乃至図３３を用いて説明した処理により、メインプロセッサ４２、および、それぞれのサブプロセッサ４３に温度検出部１２１が設けられている情報処理コントローラ１１１を有する情報処理装置１０１が、複数、ネットワーク２に接続されている第２の実施の形態において、第３のパターンの温度情報、および、処理の移動または交換の制御を用いて、実行中の処理を停止させるのを最小限に抑えつつ、熱暴走などによる素子の破壊や処理速度の低下を防ぐようにすることができる。
【０３９１】
また、図３４に示されるように、１つの情報処理装置２８１−１に、複数の情報処理コントローラ１１１−１乃至情報処理コントローラ１１１−ｐ（ｐは正の整数）が設けられている場合、通信部１６およびネットワーク２を介して、複数の情報処理コントローラ１１１が授受していた各種情報を、バス１４を介して授受するようにすることにより、第２の実施の形態における場合と同様にして、本発明が適用可能であることは言うまでもない。
【０３９２】
このとき、１つの情報処理装置２８１−１に備えられている、複数の情報処理コントローラ１１１−１乃至情報処理コントローラ１１１−ｐのいずれかが、情報処理装置２８１−１内のマスタとして動作し、他の情報処理コントローラが、スレーブとして動作するようになされる。そして、上述した第２の実施の形態の第１乃至第３のパターンのいずれかと同様の処理が用いられて、複数の情報処理コントローラ１１１−１乃至情報処理コントローラ１１１−ｐのいずれかにおける温度異常の発生が検出されて、バス１４に接続されているそれぞれの情報処理コントローラ１１１のそのときの動作、および、それぞれのプロセッサの温度検出値に基づいて、処理が停止されるか、分散処理のうちの一部が移動されるか、または、分散処理のうちの一部が交換されるかが判断され、処理の移動先または交換先が選択されるようにすることができるようになされている。
【０３９３】
更に、情報処理装置２８１−１がネットワーク２に接続され、ネットワーク２に、情報処理装置２８１−１と同様の構成を有する情報処理装置２８１−２や、上述した複数の情報処理装置１０１（図３４においては、情報処理装置１０１−１および情報処理装置１０１−２）が接続されている場合、情報処理装置２８１−１の情報処理コントローラ１１１−１乃至情報処理コントローラ１１１−ｐのいずれかにおける温度異常の発生が検出されたが、バス１４に接続されているそれぞれの情報処理コントローラ１１１に処理の移動先または交換先が見つからなかった場合、上述した第２の実施の形態の第１乃至第３のパターンのいずれかと同様の処理が用いられて、ネットワーク２を介して接続されている情報処理装置２８１−２や、上述した複数の情報処理装置１０１に含まれるサブプロセッサ４３のうちのいずれかから、処理の移動先または交換先が選択されるようにしてもよい。
【０３９４】
また、本発明を適用した情報処理コントローラは、温度センサなどによる温度検出部を設け、正常動作可能な温度範囲内で動作するよう管理するのみならず、情報処理コントローラに供給される電力量を監視し、異常な電力量が１つの情報処理コントローラで消費されることを防止することにより、素子の劣化を防ぐとともに信頼性の高い情報処を実現することができる。更に、本発明を適用した情報処理コントローラは、１つまたは複数の情報処理装置内のサブプロセッサ間で、消費電力量の増加に応じた処理の移動、または、交換を行うことにより、素子の破壊や処理速度の低下を防ぐようにすることができる。
【０３９５】
図３５乃至図５２を用いて、本発明を適用した情報処理装置の情報処理コントローラにおいて、プロセッサの消費電力量の増加に応じた分散処理を実現する場合における、第３の実施の形態について説明する。
【０３９６】
図３５は、情報処理コントローラの消費電力を測定する電力測定部が設けられ、情報処理コントローラに、電源部１９の状態を取得し、電力測定部の測定結果を取得する電力管理処理部が設けられている情報処理装置３０１−１の構成を示すブロック図である。
【０３９７】
なお、図１における場合と対応する部分には同一の符号を付してあり、その説明は適宜省略する。すなわち、図３５に示される情報処理装置３０１−１は、情報処理コントローラ１１に代わって、電源部１９の状態を取得し、電力測定部３２１の測定結果を取得する電力管理処理部３３１が設けられている情報処理コントローラ３１１が備えられ、１チップで構成されている情報処理コントローラ３１１の消費電力を測定する電力測定部３２１が新たに設けられている以外は、基本的に、図１を用いて説明した情報処理装置１と同様の構成を有している。
【０３９８】
また、ネットワーク２に接続されている情報処理装置３０１−２乃至情報処理装置３０１−ｎは、基本的に、情報処理装置３０１−１と同様の構成を有するものであるので、その説明は省略する。以下、情報処理装置３０１−１乃至情報処理装置３０１−ｎを個々に区別する必要のないとき、単に情報処理装置３０１と称する。
【０３９９】
図３６を用いて、同期整流方式の電力測定部３２１の構成について説明する。出力インダクタの直流抵抗Ｒｄｃは、設計時にあらかじめ定められる有限の値であるので、出力インダクタ両端の電位差Ｖｄｒｏｐを、電圧計測回路３４１により計測することで、情報処理コントローラ３１１に供給される電流値Ｉｏｕｔを知ることができる。電流値Ｉｏｕｔは電源部１９の出力に接続された負荷となる装置である情報処理コントローラ３１１の消費電流に相当し、出力インダクタの直流抵抗Ｒｄｃは通常電源回路出力端から見た負荷インピーダンスに対して十分小さな値であり、消費電力は（負荷インピーダンス）×（消費電流）の２乗で計算されることから、出力インダクタ両端の電位差Ｖｄｒｏｐを、電圧計測回路３４１により計測することで、情報処理コントローラ３１１の消費電力を間接的に監視することが可能となる。
【０４００】
図３７に、消費電力量を用いて分散処理の割り当ての制御を行う、第３の実施の形態の情報処理コントローラ３１１によって実行されるソフトウェアの構成を示す。これらのソフトウェア（プログラム）は、情報処理装置に電源が投入される前においては、情報処理コントローラ３１１に接続される記録部１３に記録されているものである。
【０４０１】
なお、図８における場合と対応する部分には同一の符号を付してあり、その説明は適宜省略する。すなわち、第３の実施の形態における情報処理コントローラ３１１のメインメモリ１２が記憶するソフトウェアの構成は、新たに、制御プログラムに、電力管理プログラムが追加されている以外は、基本的に、図８を用いて説明した場合と同様である。また、電力管理プログラムは、情報処理装置３０１の主電源が投入されている間は常時動作する常駐プログラムであることが望ましい。
【０４０２】
電力管理プログラムは、情報処理装置３０１の電力測定部３２１により測定される電力情報を収集し、電力管理処理部３３１により管理するとともに、これらの電力情報に基づいて、メインプロセッサ４２により実行される処理の制御、および、サブプロセッサ４３-１乃至サブプロセッサ４３-８において必要に応じて実行される、処理の移動または交換を制御するが、更に、ネットワーク２を介して接続されている他の情報処理装置３０１と電力情報を交換して、メインプロセッサ４２により実行される処理の制御、および、サブプロセッサ４３-１乃至サブプロセッサ４３-８において必要に応じて実行される、処理の移動または交換を制御する。
【０４０３】
ネットワーク２を介して接続されている他の情報処理装置３０１との電力情報、および、処理の移動または交換の制御には、３つのパターンがある。
【０４０４】
第１のパターンは、例えば、情報処理装置３０１−１がマスタ装置である場合、情報処理装置３０１−１が、自分自身の電力管理テーブルのみならず、ネットワーク２に接続されているスレーブ装置である情報処理装置３０１-２乃至情報処理３０１-ｎのそれぞれの電力管理テーブルを管理するものである。すなわち、スレーブ装置である情報処理装置３０１-２乃至情報処理３０１-ｎは、所定の時間ごとに更新された最新の電力管理テーブルを、マスタ装置である情報処理装置３０１-１に随時送信するようになされている。そして、マスタ装置である情報処理装置３０１−１は、ネットワーク２に接続されている情報処理装置３０１−１乃至情報処理３０１-ｎの全ての電力情報を監視し、情報処理装置３０１−１乃至情報処理３０１-ｎのうちのいずれかにおいて、消費電力量の異常が検出された場合、例えば、ネットワーク２に接続されている情報処理装置３０１の情報処理コントローラ３１１に含まれる全てのサブプロセッサ４３から、処理の移動または交換先として最適なサブプロセッサ４３を選択し、選択されたサブプロセッサ４３に、異常が発生したサブプロセッサ４３の処理を移動するか、または、それぞれの処理を交換するなどの処理を制御する。
【０４０５】
第２のパターンは、それぞれの情報処理装置３０１が、自分自身の電力管理テーブルを基に電力情報を監視し、消費電力量の異常を検出した場合、ネットワーク２に接続されている、他の情報処理装置３０１の全てに対して、電力情報の送信を要求するコマンドを送信するものである。すなわち、消費電力量の異常を検出していない状態の情報処理装置３０１は、他の情報処理装置３０１から、電力情報の送信を要求するコマンドを受信したとき、自分自身の電力管理テーブルを基に、図３９に示される電力情報返信コマンドを生成して、電力情報要求コマンドの送信元の情報処理装置３０１に、生成された電力情報を返信するコマンドを送信する。
【０４０６】
電力情報返信コマンドには、ＡＣを電源としているときの消費電力上限、バッテリを電源としているときの消費電力上限、電池を電源としているときの消費電力上限、ＡＣ，バッテリ、電池などのうち、いずれの電源が接続されているかを示す電源接続情報、および、現在の処理における消費電力の値などの情報が含まれている。ＡＣ電源を電源としているときの消費電力上限は、ＡＣ電源使用時に正常な動作を行うために要求される消費電力の上限値であり、情報処理装置の設計時に、予め設定されるものである。ＡＣ電源時の消費電力上限は、正常かつ効率的な動作を行うために望ましい消費電力上限値であってもよい。バッテリを電源としているときの消費電力上限、および、電池を電源としているときの消費電力上限についても同様である。また、電源接続情報は、情報処理装置３０１の設計時にあらかじめ設定される場合もあるし、情報処理装置３０１が複数の電源ソースに対応している場合には、適宜、変化することもあり得る。現在の消費電力は、電力測定部３２１により測定された消費電力であり、当然、情報処理装置の動作状況によって変動する値である。
【０４０７】
そして、電力情報を返信するコマンドを受信した情報処理装置３０１は、ネットワーク２に接続されている全ての情報処理装置３０１の情報処理コントローラ３１１に含まれる全てのサブプロセッサ４３から、処理の移動または交換先として最適なサブプロセッサ４３を選択し、選択されたサブプロセッサ４３に、異常が発生したサブプロセッサ４３の処理を移動するか、または、それぞれの処理を交換するなどの処理を制御する。
【０４０８】
第３のパターンは、それぞれの情報処理装置３０１が、自分自身の電力管理テーブルを基に電力情報を監視し、消費電力量の異常を検出した場合、ネットワーク２に接続されている、他の情報処理装置３０１の全てに対して、サブプロセッサプログラムの移動を要求するコマンドを送信するものである。すなわち、消費電力量の異常を検出していない状態の情報処理装置３０１は、他の情報処理装置３０１から、サブプロセッサプログラムの移動を要求するコマンドを受信したとき、自分自身の電力管理テーブルを基に、サブプロセッサプログラムの移動先となることが可能か否かを示す返信コマンドを生成し、サブプロセッサプログラムの移動を要求するコマンドの送信元の情報処理装置３０１に、生成した返信コマンドを送信する。そして、返信コマンドを受信した情報処理装置３０１は、返信コマンドを基に、処理の移動または交換先として最適なサブプロセッサ４３を選択し、選択されたサブプロセッサ４３に、異常が発生したサブプロセッサ４３の処理を移動するか、または、それぞれの処理を交換するなどの処理を制御する。
【０４０９】
図３８に、第３の実施の形態の第１のパターンにおける情報処理コントローラ３１１が実行可能な機能を説明するための機能ブロック図を示す。なお、図２１における場合と対応する部分には同一の符号を付してあり、その説明は適宜省略する。すなわち、図３８に示される、第３の実施の形態の第１のパターンにおける情報処理コントローラ３１１のうち、メインプロセッサ４２が実行可能な機能においては、温度異常対応処理制御部２１６に代わって、電力異常対応処理制御部３５６が設けられ、論理スレッド管理処理部２１７に代わって、論理スレッド管理処理部３５７が設けられ、温度管理情報送受信制御部２１４に代わって、電力管理情報送受信制御部３５８が設けられている以外は、基本的に、図２１を用いて説明した場合と同様である。また、第３の実施の形態の第１のパターンにおける情報処理コントローラ３１１が実行可能な機能においては、図２１を用いて説明した温度モニタ処理部１２２が実現可能な機能に代わって、電力管理処理部３３１が実行可能な機能である、電力情報取得部３５１、割り込み制御部３５２、タイマ３５３、電力管理テーブル３５４、および、電力上昇検出部３５５が設けられている。
【０４１０】
電力情報取得部３５１は、割り込み制御部３５２の処理により制御されるタイミングで、電力測定部３２１から供給される電力情報を取得し、電力情報テーブル３５４を更新する。割り込み制御部３５２は、タイマ３５３を参照して、電力情報取得部３５１に対してタイマ割り込みをかけるとともに、電力上昇検出部３５５から供給される情報を基に、演算処理部１６１および電力異常対応処理制御部３５６に割り込みをかける。
【０４１１】
電力管理情報送受信制御部２１４は、電力異常対応処理制御部３５６の制御に基づいて、通信部１６を介して、電力管理テーブル、または、電力管理のために生成された各種コマンド（ソフトウェアセル）の、ネットワーク２に接続されている他の情報処理装置３０１への送信を制御するとともに、通信部１６を介して、他の情報処理装置３０１の電力管理テーブル、または、電力管理のための各種コマンド（ソフトウェアセル）などの、ネットワーク２に接続されている他の情報処理装置３０１からの受信を制御する。以下、電力管理テーブル、または、電力管理のために生成された各種コマンド（ソフトウェアセル）など、ネットワーク２によって接続された複数の情報処理装置３０１の電力管理と電力管理の結果実行される分散処理の制御にかかわる情報を個々に区別する必要がない場合、電力管理情報と総称するものとする。
【０４１２】
電力管理テーブル３５４は、情報処理コントローラ３１１における消費電力管理を行うための情報が記載されるテーブルであり、自分自身がスレーブ装置であるとき、自分自身の電力情報を記録し、自分自身がマスタ装置であるとき、ネットワーク２に接続されている全ての情報処理装置３０１における電力情報を記録している。電力情報は、図４０に示されるように、情報処理コントローラ３１１を識別するためのコントローラＩＤ、ＡＣを電源としているときの消費電力上限、バッテリを電源としているときの消費電力上限、電池を電源としているときの消費電力上限、ＡＣ電源、バッテリ７３、電池などのうち、いずれの電源が接続されているかを示す電源接続情報、および、現在の処理における消費電力の値などの情報を含むものである。ＡＣ電源を電源としているときの消費電力上限は、ＡＣ電源使用時に正常な動作を行うために要求される消費電力の上限値であり、情報処理装置の設計時に、予め設定されるものである。また、ＡＣ電源時の消費電力上限は、正常かつ効率的な動作を行うために望ましい消費電力上限値であってもよい。バッテリ７３を電源としているときの消費電力上限、および、電池を電源としているときの消費電力上限についても同様である。また、電源接続情報は、情報処理装置３０１の設計時にあらかじめ設定される場合もあるし、情報処理装置３０１が複数の電源ソースに対応している場合には、適宜、変化することもあり得る。現在の消費電力は、電力測定部３２１により測定された消費電力であり、当然、情報処理装置の動作状況によって変動する値である。
【０４１３】
電力上昇検出部３５５は、自分自身がマスタ装置である場合、電力管理テーブル３５４を参照し、ネットワーク２に接続されているすべての情報処理装置３０１の電力検出結果のうち、設定されている上限値を超えたものがあった場合、割り込み制御部３５２に消費電力量の異常が検出されたことを通知し、演算処理部１６１および電力異常対応処理制御部３５６に割り込みをかけさせる。
【０４１４】
電力異常対応処理制御部３５６は、自分自身がマスタ装置であり、割り込み制御部３５２により割り込みがかかった場合、電力管理テーブル３５４を参照して、ネットワーク２に接続されている全ての情報処理装置３０１のうち消費電力量の異常が検出されたのは、いずれの情報処理装置３０１であるかを検出し、検出結果を基に、論理スレッド管理処理部３５７を制御して、必要に応じて、処理をいったん停止させたり、サブプロセッサ４３のいずれかとの、実行されているスレッドの移動または交換を制御する。
【０４１５】
論理スレッド管理処理部３５７は、演算処理部１６１により実行されるアプリケーションプログラムに対応する論理スレッドの生成および削除を行うとともに、自分自身がマスタ装置である場合、ネットワーク２に接続されている情報処理装置３０１のうちのいずれかにおいて実行される分散処理に対応する論理スレッドの状態監視と動作制御を行う。論理スレッド管理処理部３５７は、自分自身がマスタ装置である場合、ネットワーク２に接続されている全ての情報処理装置３０１の管理情報が記載されたテーブルと、実行される論理スレッドごとに、論理スレッドの実行に必要な情報が記載されたテーブルを作成し、必要に応じて、テーブルの情報を参照し、更新することにより、論理スレッドの実行を制御する。
【０４１６】
また、論理スレッド管理処理部３５７は、自分自身がマスタ装置である場合、必要に応じて、他の情報処理装置３０１において実行されているスレッドの処理を制御するためのソフトウェアセルを生成し、通信部１６を介して、生成されたソフトウェアセルを送信する。また、更に、論理スレッド管理処理部３５７は、自分自身がスレーブ装置である場合、通信部１６を介して、マスタ装置である情報処理装置３０１から送信されたソフトウェアセルの供給を受け、ソフトウェアセルの内容に基づいた分散処理をサブプロセッサ４３に実行させるとともに、必要に応じて、返信や応答に対応するソフトウェアセルを生成し、通信部１６を介して、生成されたソフトウェアセルを送信する。更に、論理スレッド管理処理部３５７は、自分自身がマスタ装置であるかスレーブ装置であるかにかかわらず、必要に応じて、通信部１６により受信された、他の情報処理装置１０１において実行されたスレッドに関する情報を取得する。
【０４１７】
なお、図３８において、これらの機能を実現するハードウェアが、上述するとおりではない場合、例えば、メインプロセッサ４２により実現される機能のうちの一部が電力管理処理部３３１により実現されたり、電力管理処理部３３１により実現される機能のうちの一部がメインプロセッサ４２により実現される場合や、これらの機能が、それぞれ異なるハードウェアにより実現される場合なども、本発明は適用可能であることは言うまでもない。
【０４１８】
次に、図４１乃至図４４のフローチャートを参照して、第３の実施の形態の第１のパターンにおける動作を説明する。
【０４１９】
図４１のフローチャートを参照して、図３８に示される第３の実施の形態の情報処理装置３０１が実行するアプリケーションプログラム実行処理２について説明する。ここでは、電力管理プログラムが、情報処理装置３０１の主電源が投入されている間は常時動作する常駐プログラムであるものとして説明する。
【０４２０】
ステップＳ３０１において、演算処理部１６１は、ユーザにより、アプリケーションプログラムの実行が指令されたか否かを判断する。すなわち、ステップＳ３０１において、メインプロセッサ４２は、操作入力部１５から、バス１４およびバス４１を介して供給される信号を基に、アプリケーションプログラムの実行が指令されたか否かを判断する。ステップＳ３０１において、アプリケーションプログラムの実行が指令されていないと判断された場合、アプリケーションプログラムの実行が指令されたと判断されるまで、ステップＳ３０１の処理が繰り返される。
【０４２１】
ステップＳ３０１において、アプリケーションプログラムの実行が指令されたと判断された場合、ステップＳ３０２において、演算処理部１６１は、論理スレッドのサブプロセッサへの割り当てなどを設定し、論理スレッドの設定情報を論理スレッド管理処理部３５７に供給する。
【０４２２】
ステップＳ３０３において、論理スレッド管理処理部３５７は、論理スレッドが割り当てられたサブプロセッサ４３のローカルストレージ５１のコード領域１８７およびデータ領域１８８に、割り当てられた処理を実行するためのプログラムやデータをロードさせる。
【０４２３】
ステップＳ３０４において、演算処理部１６１および論理スレッド管理処理部３５７は、サブプロセッサ４３による処理を含めた、アプリケーションプログラムの実行を制御する。サブプロセッサ４３の演算処理部１８１は、割り当てられた処理を実行する。
【０４２４】
ところで、電力管理プログラムは、情報処理装置３０１の主電源が投入されている間は常時動作する常駐プログラムであるので、ステップＳ３０１乃至ステップＳ３０４の処理が実行されている間も、処理が実行されている。電力管理プログラムによるマスタ装置の電力情報管理処理については、図４２のフローチャートを用いて、スレーブ装置の電力情報管理処理については、図４４のフローチャートを参照して、それぞれ後述する。
【０４２５】
ステップＳ３０５において、演算処理部１６１は、割り込み制御部３５２により、消費電力量の異常発生のための割り込みがあるか否かを判断する。ステップＳ５において、消費電力量の異常発生のための割り込みがないと判断された場合、処理は、後述するステップＳ３０８に進む。
【０４２６】
ステップＳ３０５において、消費電力量の異常発生のための割り込みがあったと判断された場合、割り込みにより実行中の処理が停止されるので、ステップＳ３０６において、演算処理部１６１は、割り込みが解除されたか否かを判断する。ステップＳ３０６において、割り込みが解除されていないと判断された場合、割り込みが解除されたと判断されるまで、ステップＳ３０６の処理が繰り返される。
【０４２７】
ステップＳ３０６において、割り込みが解除されたと判断された場合、ステップＳ３０７において、演算処理部１６１は、必要に応じて、論理スレッドの設定情報を、再度、論理スレッド管理処理部３５７に供給するので、論理スレッド管理処理部３５７は、論理スレッド管理に関するテーブルを更新する。
【０４２８】
ステップＳ３０５において、消費電力量の異常発生のための割り込みがないと判断された場合、または、ステップＳ３０７の処理の終了後、ステップＳ３０８において、演算処理部１６１は、アプリケーションプログラムの処理が終了されたか否かを判断する。ステップＳ３０８において、アプリケーションプログラムの処理が終了されていないと判断された場合、処理は、ステップＳ３０４に戻り、それ以降の処理が繰り返される。ステップＳ３０８において、アプリケーションプログラムの処理が終了されたと判断された場合、処理が終了される。
【０４２９】
このような処理により、メインプロセッサ４２により実行されるアプリケーションプログラムに対応する分散処理が、サブプロセッサ４３のうちの選択されたものにより実行される。
【０４３０】
次に、図４２のフローチャートを参照して、マスタ装置の電力情報管理処理について説明する。
【０４３１】
ステップＳ３２１において、電力情報取得部３５１は、割り込み制御部３５２から、タイマ割り込みが入ったか否かを判断する。
【０４３２】
ステップＳ３２１において、タイマ割り込みが入っていないと判断された場合、ステップＳ３２２において、電力管理情報送受信制御部３５８は、ネットワーク２に接続されている他の情報処理装置３０１から、電力管理テーブルを受信したか否かを判断する。ステップＳ３２２において、電力管理テーブルを受信していないと判断された場合、処理は、ステップＳ３２１に戻り、それ以降の処理が繰り返される。ステップＳ３２２において、電力管理テーブルを受信したと判断された場合、処理は、後述するステップＳ３２４に進む。
【０４３３】
ステップＳ３２１において、タイマ割り込みが入ったと判断された場合、ステップＳ３２３において、電力情報取得部３５１は、電力測定部３２１から、電力の測定結果を示す情報を取得する。
【０４３４】
ステップＳ３２２において、電力管理テーブルを受信したと判断された場合、または、ステップＳ３２３の処理の終了後、ステップＳ３２４において、電力情報取得部３５１は、ステップＳ３２２において受信された他の情報処理装置３０１の電力管理テーブル、または、ステップＳ３２３において取得された自分自身の電力情報を基に、電力管理テーブル３５４を更新する。
【０４３５】
ステップＳ３２５において、電力上昇検出部３５５は、電力管理テーブル３５４を参照し、電力情報に異常値があるか否か、すなわち、ネットワーク２に接続されている情報処理装置３０１に設けられている電力測定部３２１により検出された電力検出結果のうち、予め設定されている上限値を超えたものがあるか否かを判断する。ステップＳ３２５において、電力情報に異常値がないと判断された場合、処理は、ステップＳ３２１に戻り、それ以降の処理が繰り返される。
【０４３６】
ステップＳ３２５において、電力情報に異常値があったと判断された場合、ステップＳ３２６において、電力上昇検出部３５５は、割り込み制御部３５２に、異常な電力の上昇が検出されたことを通知し、演算処理部１６１および電力異常対応処理制御部３５６に割り込みをかけさせる。割り込み制御部３５２は、電力異常対応処理制御部３５６および演算処理部１６１に対して、割り込みをかけ、演算処理部１６１により制御されるアプリケーションプログラムの処理を停止させるとともに、電力異常対応処理制御部３５６に対して異常発生時の処理を開始させる。
【０４３７】
ステップＳ３２７において、図４３を用いて後述する異常発生時の処理５が実行される。
【０４３８】
ステップＳ３２８において、電力異常対応処理制御部３５６は、ステップＳ３２７において実行された異常発生時の処理５に基づいて、論理スレッド管理処理部３５７を制御し、必要に応じて、論理スレッド管理に関するテーブルを更新させる。
【０４３９】
ステップＳ３２９において、割り込み制御部３５２は、演算処理部１６１により制御されるアプリケーションプログラムの処理に対する割り込みを解除し、処理は、ステップＳ３２１に戻り、それ以降の処理が繰り返される。
【０４４０】
このような処理により、ネットワーク２に接続されている、マスタ装置である情報処理装置３０１において、ネットワーク２に接続されているすべての情報処理装置３０１の電力測定部３２１により検出された電力情報を基に更新された電力管理テーブルを取得して、電力管理テーブル３５４として管理することができるようになされ、マスタ装置において記憶されている電力管理テーブル３５４を基に、異常発生時の割り込み処理が実行されるか否かが判断される。
【０４４１】
次に、図４３のフローチャートを参照して、図４２のステップＳ３２７において実行される異常発生時の処理５について説明する。
【０４４２】
ステップＳ３４１において、電力異常対応処理制御部３５６は、電力管理テーブル３５４を参照し、消費電力量の異常が発生した情報処理コントローラ３１１に含まれる全てのサブプロセッサ４３の処理の移動が可能であるか否かを判断する。ステップＳ３４１において、消費電力量の異常が発生した情報処理コントローラ３１１に含まれる全てのサブプロセッサ４３の処理の移動が可能ではないと判断された場合、処理は、後述するステップＳ３４６に進む。
【０４４３】
ステップＳ３４１において、消費電力量の異常が発生した情報処理コントローラ３１１に含まれる全てのサブプロセッサ４３の処理の移動が可能であると判断された場合、ステップＳ３４２において、電力異常対応処理制御部３５６は、電力管理テーブル３５４を参照し、ネットワーク２に接続されている情報処理装置３０１の情報処理コントローラ３１１の中から、処理の移動先の情報処理コントローラ３１１を選択し、選択結果を、論理スレッド管理処理部３５７に供給する。具体的には、電力異常対応処理制御部３５６は、電力管理テーブル３５４を参照して、ネットワーク２に接続されている情報処理装置３０１の情報処理コントローラ３１１のうち、現在動作中のサブプロセッサ４３の処理を実行可能な情報処理コントローラ３１１であって、現在最も電力消費量の少ない情報処理コントローラ３１１を選択するようになされている。また、この条件を満たす情報処理コントローラ３１１が複数ある場合、電力異常対応処理制御部３５６は、例えば、プロセッサＩＤとして割り当てられている番号が最も若いものを選択するようにしてもよい。また、電力異常対応処理制御部３５６は、バッテリまたは電池で動作している他の情報処理装置３０１の情報処理コントローラ３１１よりも、ＡＣ電源で動作している他の情報処理装置３０１の情報処理コントローラ３１１を、優先的に処理の移動先として選択するようにしてもよい。
【０４４４】
また、処理の移動先として選択された情報処理コントローラ３１１において、いずれのサブプロセッサ４３に分散処理が割り当てられるかは、処理の移動先として選択された情報処理コントローラ３１１のメインプロセッサ４２の論理スレッド管理処理部３５７が決定する。
【０４４５】
ステップＳ３４３において、論理スレッド管理処理部３５７は、電力上限値を超えた情報処理コントローラ３１１により実行されていた処理に関するコンテキストを退避させる。
【０４４６】
電力上限値を超えた情報処理コントローラ３１１がマスタ装置であった場合、割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受け、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させた後、移動先のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、論理スレッド管理処理部３５７が管理する情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０４４７】
また、電力上限値を超えた情報処理コントローラ３１１がスレーブ装置であった場合、割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受け、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させた後、移動先のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、バス４１、バス１４、および、通信部１６、並びに、ネットワーク２を介して、マスタ装置として動作している情報処理装置３０１の論理スレッド管理処理部３５７が管理する情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０４４８】
ステップＳ３４４において、論理スレッド管理処理部３５７は、電力上限値を超えた情報処理コントローラ３１１のサブプロセッサ４３の動作を停止させる。
【０４４９】
ステップＳ３４５において、論理スレッド管理処理部３５７は、移動先の情報処理コントローラ３１１のサブプロセッサとして選択されたサブプロセッサ４３に、ステップＳ３４３の処理により退避されたコンテキストをリストアする。すなわち、論理スレッド管理処理部３５７は、処理の移動先のサブプロセッサ４３がマスタ装置内のサブプロセッサ４３であるとき、バス４１を介して、移動先のサブプロセッサ４３に、自分自身が管理する情報記憶領域に記憶されているコンテキストを供給し、処理の移動先のサブプロセッサ４３がスレーブ装置内のサブプロセッサ４３であるとき、バス４１、バス１４、および、通信部１６、並びに、ネットワーク２を介して、スレーブ装置として動作している情報処理装置３０１に含まれる移動先のサブプロセッサ４３に、自分自身が管理する情報記憶領域に記憶されているコンテキストを供給する。移動先のサブプロセッサとして選択されたサブプロセッサ４３においては、供給されたコンテキストを、コード領域１８７乃至スタック領域１９０の対応する部分に記憶して、処理は、図４２のステップＳ３２７に戻り、ステップＳ３２８に進む。
【０４５０】
ステップＳ３４１において、消費電力量の異常が発生した情報処理コントローラ３１１に含まれる全てのサブプロセッサ４３の処理の移動が可能ではないと判断された場合、ステップＳ３４６において、電力異常対応処理制御部３５６は、電力管理テーブル３５４を参照して、ネットワーク２に接続されている情報処理装置３０１の情報処理コントローラ３１１のサブプロセッサ４３の中から、処理の交換先となる情報処理コントローラ３１１のサブプロセッサ４３を選択し、選択結果を、論理スレッド管理処理部３５７に供給する。具体的には、電力異常対応処理制御部３５６は、ネットワーク２に接続されている情報処理装置３０１の情報処理コントローラ３１１の中から、電力測定結果が最も低いものを交換先の情報処理コントローラ３１１として優先的に選択したり、または、バッテリまたは電池で動作している他の情報処理装置３０１の情報処理コントローラ３１１よりも、ＡＣ電源で動作している他の情報処理装置３０１の情報処理コントローラ３１１を、優先的に処理の交換先として選択するようになされており、この条件を満たす情報処理コントローラ３１１が複数ある場合、プロセッサＩＤとして割り当てられている番号が最も若いものを選択するようになされている。
【０４５１】
また、処理に必要な、共通に使用するプログラムとモデルデータが、分散処理が割り当てられていないサブプロセッサ４３のローカルストレージ５１のうちのいずれかに、予め供給されている場合、共通に使用するプログラムとモデルデータがローカルストレージ５１に保存されているサブプロセッサ４３を有する情報処理コントローラ３１１が優先して選択されるようにしてもよい。
【０４５２】
また、処理の交換先として選択された情報処理コントローラ３１１において、いずれのサブプロセッサ４３に分散処理が割り当てられるかは、処理の交換先として選択された情報処理コントローラ３１１のメインプロセッサ４２の論理スレッド管理処理部３５７が決定する。
【０４５３】
ステップＳ３４７において、論理スレッド管理処理部３５７は、消費電力量の異常が発生した情報処理コントローラ３１１のサブプロセッサ４３により実行されていた処理に関するコンテキストを退避させる。
【０４５４】
消費電力量の異常が発生した情報処理コントローラ３１１がマスタ装置であった場合、割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受け、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させた後、交換先のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、論理スレッド管理処理部３５７が管理する情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０４５５】
また、消費電力量の異常が発生した情報処理コントローラ３１１がスレーブ装置であった場合、割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受け、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させた後、交換先のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、バス４１、バス１４、および、通信部１６、並びに、ネットワーク２を介して、マスタ装置として動作している情報処理装置３０１の論理スレッド管理処理部３５７が管理する情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０４５６】
ステップＳ３４８において、論理スレッド管理処理部３５７は、消費電力量の異常が発生した情報処理コントローラ３１１のサブプロセッサ４３の動作を停止させる。
【０４５７】
ステップＳ３４９において、論理スレッド管理処理部３５７は、処理の交換先として選択された情報処理コントローラ３１１のサブプロセッサ４３により実行されていた処理に関するコンテキストを退避させる。
【０４５８】
処理の交換先として選択された情報処理コントローラ３１１がマスタ装置であった場合、割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受け、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させた後、交換元のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、論理スレッド管理処理部３５７が管理する情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０４５９】
また、処理の交換先として選択された情報処理コントローラ３１１がスレーブ装置であった場合、割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受け、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させた後、交換元のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、バス４１、バス１４、および、通信部１６、並びに、ネットワーク２を介して、マスタ装置として動作している情報処理装置３０１の論理スレッド管理処理部３５７が管理する情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０４６０】
ステップＳ３５０において、論理スレッド管理処理部３５７は、処理の交換先として選択された情報処理コントローラ３１１のサブプロセッサ４３の動作を停止させる。
【０４６１】
ステップＳ３５１において、論理スレッド管理処理部３５７は、退避された２つの情報処理コントローラ３１１のサブプロセッサ４３のコンテキストを交換してリストアさせる。すなわち、論理スレッド管理処理部３５７は、処理の交換先として選択された情報処理コントローラ３１１のサブプロセッサ４３に、ステップＳ３４７の処理により退避されたコンテキストをリストアするとともに、電力上限値を超えた情報処理コントローラ３１１のサブプロセッサ４３に、ステップＳ３４９の処理により退避されたコンテキストをリストアする。すなわち、論理スレッド管理処理部３５７は、電力上限値を超えた情報処理コントローラ３１１、または、処理の移動先の情報処理コントローラ３１１がマスタ装置内の情報処理コントローラ３１１であるとき、バス４１を介して、移動先のサブプロセッサ４３に、自分自身が管理する情報記憶領域に記憶されているコンテキストのうち対応するものを供給し、電力上限値を越えた情報処理コントローラ３１１、または、処理の移動先の情報処理コントローラ３１１がスレーブ装置内の情報処理コントローラ３１１であるとき、バス４１、バス１４、および、通信部１６、並びに、ネットワーク２を介して、スレーブ装置として動作している情報処理装置３０１に含まれる移動先の情報処理コントローラ３１１のサブプロセッサ４３に、自分自身が管理する情報記憶領域に記憶されているコンテキストのうち対応するものを供給する。それぞれの情報処理コントローラ３１１のサブプロセッサ４３には、供給されたコンテキストを、コード領域１８７乃至スタック領域１９０の対応する部分に記憶して、処理は、図４２のステップＳ３２７に戻り、ステップＳ７８に進む。
【０４６２】
このような処理により、消費電力量の異常の発生箇所と、ネットワーク２に接続されている情報処理装置３０１のそれぞれの情報処理コントローラ３１１における動作、および、電力測定値に基づいて、分散処理のうちの一部が移動されるか、または、分散処理のうちの一部が交換されるかが判断され、処理の移動先または交換先が選択されるようになされている。
【０４６３】
次に、図４４のフローチャートを参照して、図４２を用いて説明したマスタ装置の電力情報管理処理と並行して実行される、スレーブ装置の電力情報管理処理について説明する。
【０４６４】
ステップＳ３８１において、スレーブ装置として動作している情報処理装置３０１の電力情報取得部３５１は、割り込み制御部３５２から、タイマ割り込みが入ったか否かを判断する。ステップＳ３８１において、タイマ割り込みが入っていないと判断された場合、タイマ割り込みが入ったと判断されるまで、ステップＳ３８１の処理が繰り返される。
【０４６５】
ステップＳ３８１において、タイマ割り込みが入ったと判断された場合、ステップＳ３８２において、電力情報取得部３５１は、電力測定部３２１のそれぞれから、電力情報を取得する。
【０４６６】
ステップＳ３８３において、電力情報取得部３５１は、ステップＳ３８２において取得された電力情報を基に、電力管理テーブル３５４を更新する。
【０４６７】
ステップＳ３８４において、電力管理情報送受信制御部３５８は、ステップＳ３８３において更新された電力管理テーブル３５４を、通信部１６およびネットワーク２を介して、マスタ装置として動作している情報処理装置３０１に送信し、処理は、ステップＳ３８１に戻り、それ以降の処理が繰り返される。
【０４６８】
このような処理により、スレーブ装置の電力管理テーブルがマスタ装置に送信される。送信されたそれぞれのスレーブ装置の電力管理テーブルは、マスタ装置において管理される。
【０４６９】
図４１乃至図４４を用いて説明した処理により、情報処理コントローラ３１１の消費電力を測定する電力測定部３２１が設けられている情報処理装置３０１が、複数、ネットワーク２に接続されている第３の実施の形態において、第１のパターンの電力情報、および、処理の移動または交換の制御を用いて、実行中の処理を停止させるのを最小限に抑えつつ、熱暴走などによる素子の破壊や処理速度の低下を防ぐようにすることができる。
【０４７０】
次に、図４５に、第３の実施の形態の第２のパターンにおける情報処理コントローラ３１１が実行可能な機能を説明するための機能ブロック図を示す。なお、図３８における場合と対応する部分には同一の符号を付してあり、その説明は適宜省略する。すなわち、図４５に示される、第３の実施の形態の第２のパターンにおける情報処理コントローラ３１１のうち、メインプロセッサ４２が実行可能な機能においては、記憶部２１３、電力管理情報送受信制御部３５８、および、電力異常対応処理制御部３５６に代わって、記憶部３７１、電力管理情報送受信制御部３７２、および、電力異常対応処理制御部３７４が設けられている以外は、基本的に、図３８を用いて説明した場合と同様であり、電力管理処理部３３１が実現可能な機能は、電力管理テーブル３５４に代わって、電力管理テーブル３７３が設けられている以外は、図３８を用いて説明した場合と同様である。
【０４７１】
なお、図４５において、これらの機能を実現するハードウェアが、上述するとおりではない場合、例えば、メインプロセッサ４２により実現される機能のうちの一部が電力管理処理部３３１により実現されたり、電力管理処理部３３１により実現される機能のうちの一部がメインプロセッサ４２により実現される場合や、これらの機能が、それぞれ異なるハードウェアにより実現される場合なども、本発明は適用可能であることは言うまでもない。
【０４７２】
記憶部３７１は、メインメモリ１２のうちの少なくとも一部の記憶領域に対応し、ネットワーク２に接続されている情報処理装置３０１の装置情報、または、装置情報のうちの一部の情報を記憶するとともに、電力管理情報送受信制御部３７２が受信した、他の情報処理装置３０１における電力管理テーブルを一時記憶する。電力管理情報送受信制御部３７２は、電力異常対応処理制御部３７４の制御に基づいて、通信部１６を介して、電力管理情報、または、電力管理のために生成された各種コマンド（ソフトウェアセル）の、ネットワーク２に接続されている他の情報処理装置３０１への送信を制御するとともに、通信部１６を介して、他の情報処理装置３０１から送信された電力管理情報、または、電力管理のための各種コマンド（ソフトウェアセル）などの、ネットワーク２に接続されている他の情報処理装置３０１からの受信を制御する。
【０４７３】
電力異常対応処理制御部３７４は、自分自身の電力情報取得部３５１により取得された情報を基に、電力上昇検出部３５５により電力異常対応処理の発生が検出されて、割り込み制御部３５２により割り込み処理が実行された場合、ネットワーク２に接続されている、他の情報処理装置３０１の全てに対して、電力管理情報の送信を要求するコマンドを生成し、電力管理情報送受信制御部３７２を制御して、生成したコマンドを送信させる。また、電力異常対応処理制御部３７４は、電力管理情報送受信制御部３７２が、ネットワーク２に接続されている、他の情報処理装置３０１から電力管理情報の送信を要求するコマンドを受信した場合、電力管理テーブル３７３に記憶されている電力管理テーブルを基に、図３９を用いて説明した電力情報返信コマンドを生成し、電力管理情報送受信制御部３７２を制御して、生成した電力情報返信コマンドを送信させる。
【０４７４】
電力管理テーブル３７３は、自分自身がマスタ装置であるかスレーブ装置であるかにかかわらず、自分自身の電力情報取得部３５１により取得された情報を基に更新される自分自身の電力管理テーブルを記憶する。
【０４７５】
次に、図４６および図４７のフローチャートを参照して、第３の実施の形態の第２のパターンにおける動作を説明する。第２のパターンにおいても、アプリケーションプログラム実行処理は、図４１を用いて説明した第１のパターンにおける場合と、基本的に同様であるので、その説明は省略する。
【０４７６】
図４６のフローチャートを参照して、電力情報管理処理２について説明する。
【０４７７】
ステップＳ４０１において、電力情報取得部３５１は、割り込み制御部３５２から、タイマ割り込みが入ったか否かを判断する。ステップＳ４０１において、タイマ割り込みが入っていないと判断された場合、タイマ割り込みが入ったと判断されるまで、ステップＳ４０１の処理が繰り返される。
【０４７８】
ステップＳ４０１において、タイマ割り込みが入ったと判断された場合、ステップＳ４０２乃至ステップＳ４０４において、図４２のステップＳ３２３乃至ステップＳ３２５と基本的に同様の処理が実行される。すなわち、タイマ割り込みが入ったと判断された場合、電力情報取得部３５１は、電力測定部３２１から、電力の測定値を取得し、電力管理テーブル３７３を更新する。そして、電力上昇検出部３５５は、電力管理テーブル３７３を参照し、電力測定値を示す情報に異常値があるか否かを判断する。
【０４７９】
ステップＳ４０４において、電力測定値を示す情報に異常値がないと判断された場合、ステップＳ４０５において、電力異常対応処理制御部３７４は、電力管理情報送受信制御部３７２が、ネットワーク２に接続されている、他の情報処理装置３０１から電力管理情報の送信を要求するコマンドを受信したか否かを判断する。ステップＳ４０５において、他の情報処理装置３０１から電力管理情報の送信を要求するコマンドを受信していないと判断された場合、処理は、ステップＳ４０１に戻り、それ以降の処理が繰り返される。
【０４８０】
ステップＳ４０５において、他の情報処理装置３０１から電力管理情報の送信を要求するコマンドを受信したと判断された場合、ステップＳ４０６において、電力異常対応処理制御部３７４は、電力管理テーブル３７３に記憶されている電力管理テーブルを基に、図３９を用いて説明した電力情報返信コマンドを生成し、電力管理情報送受信制御部３７２を制御して、生成した電力情報返信コマンドを送信させ、処理は、ステップＳ４０１に戻り、それ以降の処理が繰り返される。
【０４８１】
ステップＳ４０４において、電力測定値を示す情報に異常値があったと判断された場合、ステップＳ４０７において、電力上昇検出部３５５は、割り込み制御部３５２に、異常な電力測定値の上昇が検出されたことを通知し、演算処理部１６１および電力異常対応処理制御部３７４に割り込みをかけさせる。割り込み制御部３５２は、電力異常対応処理制御部３７４および演算処理部１６１に対して、割り込みをかけ、演算処理部１６１により制御されるアプリケーションプログラムの処理を停止させるとともに、電力異常対応処理制御部３７４に対して異常発生時の処理を開始させる。
【０４８２】
ステップＳ４０８において、図４７を用いて後述する異常発生時の処理６が実行される。
【０４８３】
ステップＳ４０９において、電力異常対応処理制御部３７４は、ステップＳ４０８において実行された異常発生時の処理６に基づいて、論理スレッド管理処理部３５７を制御し、必要に応じて、論理スレッド管理に関するテーブルを更新させる。
【０４８４】
ステップＳ４１０において、割り込み制御部３５２は、演算処理部１６１により制御されるアプリケーションプログラムの処理に対する割り込みを解除し、処理は、ステップＳ４０１に戻り、それ以降の処理が繰り返される。
【０４８５】
このような処理により、ネットワーク２に接続されている情報処理装置３０１のそれぞれが、マスタ措置であるかスレーブ装置であるかにかかわらず、自分自身の電力測定部３２１のそれぞれにより検出された電力情報を基に更新された電力管理テーブルを基に、自分自身の消費電力の測定値の異常を検出し、異常発生時には、割り込み処理が実行され、後述する異常発生時の処理６が実行される。また、ネットワーク２に接続されている他の情報処理装置から、電力情報の送信要求を受けた場合、図３９を用いて説明した電力情報返信コマンドが生成されて、送信要求元の情報処理装置３０１に送信される。
【０４８６】
次に、図４７のフローチャートを参照して、図４６のステップＳ４０８において実行される異常発生時の処理６について説明する。
【０４８７】
ステップＳ４３１において、電力異常対応処理制御部３７４は、ネットワーク２に接続されている、他の情報処理装置３０１の全てに対して、電力管理情報の送信を要求するコマンドを生成し、電力管理情報送受信制御部３７２を制御して、生成したコマンドを送信させる。電力管理情報送受信制御部３７２は、電力管理情報の送信を要求するコマンドを、通信部１６およびネットワーク２を介して、ネットワーク２に接続されている、他の情報処理装置３０１の全てに送信する。
【０４８８】
ステップＳ４３２において、電力管理情報送受信制御部３７２は、図３９を用いて説明した電力情報返信コマンドを受信し、電力異常対応処理制御部３７４に供給する。
【０４８９】
ステップＳ４３３において、電力異常対応処理制御部３７４は、ネットワーク２に接続されている、他の情報処理装置３０１の全てから送信された電力情報返信コマンドを基に、消費電力値の異常が発生したサブプロセッサ４３の処理の移動が可能であるか否かを判断する。
【０４９０】
ステップＳ４３３において、処理の移動が可能であると判断された場合、ステップＳ４３４乃至ステップＳ４３７において、図４３のステップＳ３４２乃至ステップＳ３４５と基本的に同様の処理が実行される。すなわち、電力管理テーブル３７３が参照されて、ネットワーク２に接続されている情報処理装置３０１の情報処理コントローラ３１１の中から、処理の移動先の情報処理コントローラ３１１が選択され、消費電力の上限値を超えた情報処理コントローラ３１１により実行されていた処理に関するコンテキストが退避され、消費電力の上限値を超えた情報処理コントローラ３１１のサブプロセッサ４３の動作が停止され、退避されたコンテキストが移動先の情報処理コントローラ３１１のサブプロセッサにリストアされる。
【０４９１】
ステップＳ４３７の処理の終了後、処理は、図４６のステップＳ４０８に戻り、ステップＳ４０９に進む。
【０４９２】
ステップＳ４３３において、処理の移動が可能ではないと判断された場合、ステップＳ４３８乃至ステップＳ４４３において、図４３のステップＳ３４６乃至ステップＳ３５１と基本的に同様の処理が実行される。すなわち、電力管理テーブル３７３が参照されて、ネットワーク２に接続されている情報処理装置３０１の情報処理コントローラ３１１の中から、処理の交換先の情報処理コントローラ３１１が選択され、消費電力の上限値を超えた情報処理コントローラ３１１により実行されていた処理に関するコンテキストが退避され、消費電力の上限値を超えた情報処理コントローラ３１１のサブプロセッサ４３の動作が停止される。
【０４９３】
そして、処理の交換先として選択された情報処理コントローラ３１１のサブプロセッサ４３により実行されていた処理に関するコンテキストが退避され、処理の交換先として選択された情報処理コントローラ３１１のサブプロセッサ４３の動作が停止され、退避された２つの情報処理コントローラ３１１のサブプロセッサ４３のコンテキストが、交換されてリストアされる。
【０４９４】
ステップＳ４４３の処理の終了後、処理は、図４６のステップＳ４０８に戻り、ステップＳ４０９に進む。
【０４９５】
このような処理により、消費電力値の異常が発生した情報処理コントローラ３１１において、ネットワーク２に接続されているそれぞれの情報処理コントローラ３１１のそのときの動作、および、それぞれのプロセッサの電力測定値に関する情報が取得され、取得された情報に基づいて、分散処理のうちの一部が移動されるか、または、分散処理のうちの一部が交換されるかが判断され、処理の移動先または交換先が選択されるようになされている。
【０４９６】
図４５乃至図４７を用いて説明した処理により、情報処理コントローラ３１１に電力測定部３２１が設けられている情報処理装置３０１が、複数、ネットワーク２に接続されている第３の実施の形態において、第２のパターンの電力情報、および、処理の移動または交換の制御を用いて、熱暴走などによる素子の破壊や処理速度の低下を防ぐようにすることができる。
【０４９７】
次に、図４８に、第３の実施の形態の第３のパターンにおける情報処理コントローラ３１１が実行可能な機能を説明するための機能ブロック図を示す。なお、図３８における場合と対応する部分には同一の符号を付してあり、その説明は適宜省略する。すなわち、図４８に示される、第３の実施の形態の第３のパターンにおける情報処理コントローラ３１１のうち、メインプロセッサ４２が実行可能な機能においては、電力管理情報送受信制御部３８５、および、電力異常対応処理制御部３５６に代わって、電力管理情報送受信制御部３９１、および、電力異常対応処理制御部３９２が設けられている以外は、基本的に、図２１を用いて説明した場合と同様であり、電力管理処理部３３１が実現可能な機能は、温度管理テーブル３５４に代わって、図４５を用いて説明した電力管理テーブル３７３が設けられている以外は、図３８を用いて説明した場合と同様である。
【０４９８】
なお、図４８において、これらの機能を実現するハードウェアが、上述するとおりではない場合、例えば、メインプロセッサ４２により実現される機能のうちの一部が電力管理処理部３３１により実現されたり、電力管理処理部３３１により実現される機能のうちの一部がメインプロセッサ４２により実現される場合や、これらの機能が、それぞれ異なるハードウェアにより実現される場合なども、本発明は適用可能であることは言うまでもない。
【０４９９】
電力管理情報送受信制御部３９１は、電力異常対応処理制御部３９２の制御に基づいて、通信部１６を介して、電力管理情報、または、電力管理のために生成された各種コマンド（ソフトウェアセル）の、ネットワーク２に接続されている他の情報処理装置３０１への送信を制御するとともに、通信部１６を介して、他の情報処理装置３０１から送信された電力管理情報、または、電力管理のための各種コマンド（ソフトウェアセル）などの、ネットワーク２に接続されている他の情報処理装置３０１からの受信を制御する。
【０５００】
電力異常対応処理制御部３９２は、自分自身の電力情報取得部３５１により取得された情報を基に、電力上昇検出部３５５により消費電力量の異常の発生が検出されて、割り込み制御部３５２により割り込み処理が実行された場合、ネットワーク２に接続されている、他の情報処理装置３０１の全てに対して、自分自身のサブプロセッサ４３において実行されている論理スレッドの移動または交換を要求するサブプロセッサプログラム移動要求コマンドを生成し、電力管理情報送受信制御部３９１を制御して、生成したコマンドを送信させる。また、電力異常対応処理制御部３９２は、電力管理情報送受信制御部３９１が、ネットワーク２に接続されている、他の情報処理装置３０１から、サブプロセッサプログラム移動要求コマンドを受信した場合、電力管理テーブル３７３に記憶されている電力管理テーブルを基に、サブプロセッサプログラム移動返信コマンドを生成し、電力管理情報送受信制御部３９１を制御して、生成したサブプロセッサプログラム移動返信コマンドを送信させる。
【０５０１】
サブプロセッサプログラム移動要求コマンドには、消費電力量の異常が発生したサブプロセッサにおいて実行されている処理（スレッド）によるサブプロセッサ使用率と、ローカルストレージ容量が記載されている。
【０５０２】
また、サブプロセッサプログラム移動返信コマンドには、サブプロセッサプログラムの移動要求を受けるか否かを示す情報（移動がＯＫか、交換ならＯＫか、または、いずれもＮＧか）と、サブプロセッサプログラムの移動要求を受ける場合には、サブプロセッサプログラムの移動要求を受けるサブプロセッサＩＤとが含まれる。電力異常対応処理制御部３９２は、サブプロセッサプログラムの移動要求を受けるか、交換を受けるか、または、いずれも拒否するかを、サブプロセッサプログラム移動要求コマンドに記載されている、消費電力量の異常が発生したサブプロセッサにおいて実行されている処理（スレッド）によるサブプロセッサ使用率、および、ローカルストレージ容量の情報と、自分自身の電力管理テーブル３７３に記憶されている電力管理テーブルとを基に判断する。
【０５０３】
電力管理テーブル３７３は、自分自身がマスタ装置であるかスレーブ装置であるかにかかわらず、自分自身の電力情報取得部３５１により取得された情報を基に更新される自分自身の電力管理テーブルを記憶する。
【０５０４】
次に、図４９および図５０のフローチャートを参照して、第３の実施の形態の第３のパターンにおける動作を説明する。第３のパターンにおいても、アプリケーションプログラム実行処理は、図４１を用いて説明した第１のパターンにおける場合と、基本的に同様であるので、その説明は省略する。
【０５０５】
図４９のフローチャートを参照して、電力情報管理処理２について説明する。
【０５０６】
ステップＳ４６１乃至ステップＳ４６４において、図４６のステップＳ４０１乃至ステップＳ４０４と基本的に同様の処理が実行される。すなわち、タイマ割り込みが入ったと判断された場合、電力情報取得部３５１は、電力測定部３２１のそれぞれから、電力情報を取得し、電力管理テーブル３７３を更新する。そして、電力上昇検出部３５５は、電力管理テーブル３７３を参照し、電力情報に異常値があるか否かを判断する。
【０５０７】
ステップＳ４６４において、電力情報に異常値がないと判断された場合、ステップＳ４６５において、電力異常対応処理制御部３９２は、電力管理情報送受信制御部３９１が、ネットワーク２に接続されている、他の情報処理装置３０１から、サブプロセッサプログラム移動要求コマンドを受信したか否かを判断する。ステップＳ４６５において、他の情報処理装置３０１からサブプロセッサプログラム移動要求コマンドを受信していないと判断された場合、処理は、ステップＳ４６１に戻り、それ以降の処理が繰り返される。
【０５０８】
ステップＳ４６５において、他の情報処理装置３０１からサブプロセッサプログラム移動要求コマンドを受信したと判断された場合、ステップＳ４６６において、電力異常対応処理制御部３９２は、受信したサブプロセッサプログラム移動要求コマンドに記載されている、消費電力量の異常が発生したサブプロセッサにおいて実行されている処理（スレッド）によるサブプロセッサ使用率と、ローカルストレージ容量と、電力管理テーブル３７３に記憶されている自分自身のサブプロセッサ４３−１乃至サブプロセッサ４３-８の動作状態を示す情報を基に、サブプロセッサプログラムの移動要求を受けるか否かを決定して、電力情報返信コマンドを生成し、電力管理情報送受信制御部３９１を制御して、生成した電力情報返信コマンドを送信させ、処理は、ステップＳ４６１に戻り、それ以降の処理が繰り返される。
【０５０９】
ステップＳ４６４において、電力情報に異常値があったと判断された場合、ステップＳ４６７において、電力上昇検出部３５５は、割り込み制御部３５２に、異常な消費電力の上昇が検出されたことを通知し、演算処理部１６１および電力異常対応処理制御部３９２に割り込みをかけさせる。割り込み制御部３５２は、電力異常対応処理制御部３９２および演算処理部１６１に対して、割り込みをかけ、演算処理部１６１により制御されるアプリケーションプログラムの処理を停止させるとともに、電力異常対応処理制御部３９２に対して異常発生時の処理を開始させる。
【０５１０】
ステップＳ４６８において、図５０を用いて後述する異常発生時の処理７が実行される。
【０５１１】
ステップＳ４６９において、電力異常対応処理制御部３９２は、ステップＳ４６８において実行された異常発生時の処理７に基づいて、論理スレッド管理処理部３５７を制御し、必要に応じて、論理スレッド管理に関するテーブルを更新させる。
【０５１２】
ステップＳ４７０において、割り込み制御部３５２は、演算処理部１６１により制御されるアプリケーションプログラムの処理に対する割り込みを解除し、処理は、ステップＳ４６１に戻り、それ以降の処理が繰り返される。
【０５１３】
このような処理により、ネットワーク２に接続されている情報処理装置３０１のそれぞれが、マスタ措置であるかスレーブ装置であるかにかかわらず、自分自身の電力測定部３２１のそれぞれにより検出された電力情報を基に更新された電力管理テーブルを基に、自分自身の電力異常対応処理を検出し、異常発生時には、割り込み処理が実行され、後述する異常発生時の処理７が実行される。また、ネットワーク２に接続されている他の情報処理装置から、サブプロセッサプログラム移動要求コマンドが受信された場合電力情報返信コマンドが生成されて、送信要求元の情報処理装置３０１に送信される。
【０５１４】
次に、図５０のフローチャートを参照して、図４９のステップＳ４６８において実行される異常発生時の処理７について説明する。
【０５１５】
ステップＳ４８１において、電力異常対応処理制御部３９２は、電力管理テーブル３７３を参照して、サブプロセッサプログラム移動要求コマンドを生成し、電力管理情報送受信制御部３９１を制御して、ネットワーク２に接続されている他の情報処理装置３０１の全てに対して、生成したコマンドを送信させる。電力管理情報送受信制御部３９１は、サブプロセッサプログラム移動要求コマンドを、通信部１６およびネットワーク２を介して、ネットワーク２に接続されている、他の情報処理装置３０１の全てに送信する。
【０５１６】
ステップＳ４８２において、電力管理情報送受信制御部３９１は、サブプロセッサプログラム移動返信コマンドを受信し、電力異常対応処理制御部３９２に供給する。
【０５１７】
ステップＳ４８３において、電力異常対応処理制御部３９２は、ステップＳ４８２において受信された電力情報返信コマンドを基に、消費電力量の異常が発生したサブプロセッサ４３の処理の移動が可能であるか否かを判断する。
【０５１８】
ステップＳ４８３において、処理の移動が可能であると判断された場合、ステップＳ４８４乃至ステップＳ４８７において、図４７のステップＳ４３４乃至ステップＳ４３７と基本的に同様の処理が実行される。すなわち、電力管理テーブル３７３が参照されて、ネットワーク２に接続されている情報処理装置３０１の情報処理コントローラ３１１のサブプロセッサ４３の中から、処理の移動先の情報処理コントローラ３１１が選択され、消費電力の上限値を超えた情報処理コントローラ３１１のサブプロセッサ４３により実行されていた処理に関するコンテキストが退避され、消費電力の上限値を超えた情報処理コントローラ３１１のサブプロセッサ４３の動作が停止され、退避されたコンテキストが移動先の情報処理コントローラ３１１のサブプロセッサにリストアされる。
【０５１９】
ステップＳ４８７の処理の終了後、処理は、図４９のステップＳ４６８に戻り、ステップＳ４６９に進む。
【０５２０】
ステップＳ４８３において、処理の移動が可能ではないと判断された場合、ステップＳ４８８乃至ステップＳ２９３において、図４７のステップＳ４３８乃至ステップＳ４４３と基本的に同様の処理が実行される。すなわち、電力管理テーブル３７３が参照されて、ネットワーク２に接続されている情報処理装置３０１の情報処理コントローラ３１１のサブプロセッサ４３の中から、処理の交換先の情報処理コントローラ３１１が選択され、消費電力の上限値を超えた情報処理コントローラ３１１のサブプロセッサ４３により実行されていた処理に関するコンテキストが退避され、消費電力の上限値を超えた情報処理コントローラ３１１のサブプロセッサ４３の動作が停止される。
【０５２１】
そして、処理の交換先として選択された情報処理コントローラ３１１のサブプロセッサ４３により実行されていた処理に関するコンテキストが退避され、処理の交換先として選択された情報処理コントローラ３１１のサブプロセッサ４３の動作が停止され、退避された２つのサブプロセッサ４３のコンテキストが、交換されてリストアされる。
【０５２２】
ステップＳ４９３の処理の終了後、処理は、図４９のステップＳ４６８に戻り、ステップＳ４６９に進む。
【０５２３】
このような処理により、消費電力の異常が発生した情報処理コントローラ３１１において、サブプロセッサプログラム移動要求コマンドが送信され、その返信コマンドを基に、処理の移動先または交換先が選択されるようになされている。
【０５２４】
図４８乃至図５０を用いて説明した処理により、電力測定部３２１が設けられている情報処理コントローラ３１１を有する情報処理装置３０１が、複数、ネットワーク２に接続されている第３の実施の形態において、第３のパターンの電力情報、および、処理の移動または交換の制御を用いて、実行中の処理を停止させるのを最小限に抑えつつ、熱暴走などによる素子の破壊や処理速度の低下を防ぐようにすることができる。
【０５２５】
また、図５１に示されるように、１つの情報処理装置３９５に、複数の情報処理コントローラ３１１−１乃至情報処理コントローラ３１１−ｐ（ｐは正の整数）が設けられている場合、通信部１６およびネットワーク２を介して、複数の情報処理コントローラ３１１が授受していた各種情報を、バス１４を介して授受するようにすることにより、第２の実施の形態における場合と同様にして、本発明が適用可能であることは言うまでもない。
【０５２６】
このとき、１つの情報処理装置３９５に備えられている、複数の情報処理コントローラ３１１−１乃至情報処理コントローラ３１１−ｐのいずれかが、情報処理装置３９５内のマスタとして動作し、他の情報処理コントローラが、スレーブとして動作するようになされる。そして、上述した第３の実施の形態の第１乃至第３のパターンのいずれかと同様の処理が用いられて、複数の情報処理コントローラ３１１−１乃至情報処理コントローラ３１１−ｐのいずれかにおける消費電力値の異常の発生が検出されて、バス１４に接続されているそれぞれの情報処理コントローラ３１１のそのときの動作、および、それぞれのプロセッサの電力測定値に基づいて、処理が停止されるか、分散処理のうちの一部が移動されるか、または、分散処理のうちの一部が交換されるかが判断され、処理の移動先または交換先が選択されるようにすることができるようになされている。
【０５２７】
更に、図５２に示されるように、図５１を用いて説明した情報処理装置３９５と同様の構成を有する情報処理装置３９５−１がネットワーク２に接続され、ネットワーク２に、情報処理装置３９５−１と同様の構成を有する情報処理装置３９５−２や、上述した複数の情報処理装置３０１（図５２においては、情報処理装置３０１−１および情報処理装置３０１−２）が接続されている場合、情報処理装置３９５−１の情報処理コントローラ３１１−１乃至情報処理コントローラ３１１−ｐのいずれかにおける消費電力値の異常の発生が検出されたが、バス１４に接続されているそれぞれの情報処理コントローラ３１１に処理の移動先または交換先が見つからなかった場合、上述した第３の実施の形態の第１乃至第３のパターンのいずれかと同様の処理が用いられて、ネットワーク２を介して接続されている情報処理装置３９５−２や、上述した複数の情報処理装置３０１に含まれる情報処理コントローラ３１１のうちのいずれかから、処理の移動先または交換先が選択されるようにしてもよい。この時、他の条件が同じであれば、バッテリまたは電池で動作している他の情報処理装置３９５−２または情報処理装置３０１よりも、ＡＣ電源で動作している他の情報処理装置３９５−２または情報処理装置３０１が、優先的に処理の移動、交換先として選択されるようにしてもよい。
【０５２８】
また、本発明を適用した情報処理コントローラは、複数のサブプロセッサを含む全体の構成をワンチップＩＣ（集積回路）として構成し、温度センサなどによる温度検出部を設け、正常動作可能な温度範囲内で動作するよう管理するとともに、情報処理コントローラに供給される電力量を監視し、異常な電力量が１つの情報処理コントローラで消費されることを防止することにより、素子の劣化を防ぐとともに、より信頼性の高い情報処理コントローラおよび情報処理装置を実現することができる。更に、本発明を適用した情報処理コントローラは、１つまたは複数の情報処理装置内のサブプロセッサ間で、温度上昇および消費電力量の増加に応じた処理の移動、または、交換を行うことにより、素子の破壊や処理速度の低下を防ぐようにすることができる。
【０５２９】
図５３乃至図６０を用いて、本発明を適用した情報処理装置の情報処理コントローラにおいて、プロセッサの温度上昇および消費電力量の増加に応じた分散処理を実現する場合の実施の一形態について説明する。
【０５３０】
図５３は、情報処理コントローラの各部の温度を計測する温度検出部が設けられるとともに、情報処理コントローラの消費電力を測定する電力測定部が設けられ、情報処理コントローラに、温度検出部により検出された温度情報を取得するとともに、電源部１９の状態を取得し、電力測定部の測定結果を取得する温度電力管理処理部が設けられている情報処理装置４０１−１の構成を示すブロック図である。
【０５３１】
なお、図１における場合と対応する部分には同一の符号を付してあり、その説明は適宜省略する。すなわち、図５３に示される情報処理装置４０１−１は、情報処理コントローラ１１に代わって、サブプロセッサ４３-１乃至サブプロセッサ４３−ｍの温度を計測するための温度検出部１２１-１乃至温度検出部１２１−ｍ、および、メインプロセッサ４２の温度を計測するための温度検出部１２１−（ｍ＋１）、並びに、温度検出部１２１により検出された温度状態を取得し、電源部１９の状態を取得し、更に、電力測定部３２１の測定結果を取得する温度電力管理処理部４２１が設けられている情報処理コントローラ３１１が備えられ、１チップで構成されている情報処理コントローラ４１１の消費電力を測定する電力測定部３２１が新たに設けられている以外は、基本的に、図１を用いて説明した情報処理装置１と同様の構成を有している。
【０５３２】
また、ネットワーク２に接続されている情報処理装置４０１−２乃至情報処理装置４０１−ｎは、基本的に、情報処理装置４０１−１と同様の構成を有するものであるので、その説明は省略する。以下、情報処理装置４０１−１乃至情報処理装置４０１−ｎを個々に区別する必要のないとき、単に情報処理装置４０１と称する。
【０５３３】
図５４に、温度上昇および消費電力量の増加を検出することによって分散処理の割り当てを制御する情報処理コントローラ４１１によって実行されるソフトウェアの構成を示す。これらのソフトウェア（プログラム）は、情報処理装置に電源が投入される前においては、情報処理コントローラ４１１に接続される記録部１３に記録されているものである。
【０５３４】
なお、図８における場合と対応する部分には同一の符号を付してあり、その説明は適宜省略する。すなわち、情報処理コントローラ４１１のメインメモリ１２が記憶するソフトウェアの構成は、新たに、制御プログラムに、温度・電力管理プログラムが追加されている以外は、基本的に、図８を用いて説明した場合と同様である。また、温度・電力管理プログラムは、情報処理装置１０１の主電源が投入されている間は常時動作する常駐プログラムであることが望ましい。
【０５３５】
温度・電力管理プログラムは、情報処理装置４０１の温度検出部１２１-１乃至温度検出部１２１−（ｍ＋２）により測定された温度情報、および、電力測定部３２１により測定される温度情報を収集し、これらの温度情報および電力情報に基づいて、メインプロセッサ４２により実行される処理の制御、および、サブプロセッサ４３-１乃至サブプロセッサ４３-ｍにおいて必要に応じて実行される、自分自身の中における処理の移動または交換を制御するとともに、ネットワーク２を介して接続されている他の情報処理装置４０１と温度情報を交換して、メインプロセッサ４２により実行される処理の制御、および、サブプロセッサ４３-１乃至サブプロセッサ４３-ｍにおいて必要に応じて実行される、処理の移動または交換を制御する。
【０５３６】
ネットワーク２を介して接続されている他の情報処理装置４０１との電力情報、および、温度情報の授受、並びに、処理の移動または交換の制御には、３つのパターンがある。
【０５３７】
第１のパターンは、例えば、情報処理装置４０１−１がマスタ装置である場合、情報処理装置４０１−１が、自分自身の温度・電力管理テーブルのみならず、ネットワーク２に接続されているスレーブ装置である情報処理装置４０１-２乃至情報処理４０１-ｎのそれぞれの温度・電力管理テーブルを管理するものである。すなわち、スレーブ装置である情報処理装置４０１-２乃至情報処理４０１-ｎは、所定の時間ごとに更新された最新の温度・電力管理テーブルを、マスタ装置である情報処理装置４０１-１に随時送信するようになされている。そして、マスタ装置である情報処理装置４０１−１は、ネットワーク２に接続されている情報処理装置４０１−１乃至情報処理４０１-ｎの全ての電力情報を監視し、情報処理装置４０１−１乃至情報処理４０１-ｎのうちのいずれかにおいて、温度上昇の異常、または、消費電力量の異常が検出された場合、例えば、ネットワーク２に接続されている情報処理装置４０１の情報処理コントローラ４１１に含まれる全てのサブプロセッサ４３から、処理の移動または交換先として最適なサブプロセッサ４３を選択し、選択されたサブプロセッサ４３に、異常が発生したサブプロセッサ４３の処理を移動するか、または、それぞれの処理を交換するなどの処理を制御する。
【０５３８】
第２のパターンは、それぞれの情報処理装置４０１が、自分自身の温度・電力管理テーブルを基に温度情報および電力情報を監視し、温度上昇の異常、または、消費電力量の異常を検出した場合、ネットワーク２に接続されている、他の情報処理装置４０１の全てに対して、温度・電力情報の送信を要求するコマンドを送信するものである。すなわち、温度上昇の異常、または、消費電力量の異常を検出していない状態の情報処理装置４０１は、他の情報処理装置４０１から、温度・電力情報の送信を要求するコマンドを受信したとき、自分自身の温度・電力管理テーブルを基に、温度・電力情報を返信するコマンドを生成して、温度・電力情報要求コマンドの送信元の情報処理装置４０１に、生成された温度・電力情報を返信するコマンドを送信する。
【０５３９】
温度・電力情報返信コマンドには、ヒートシンク１４１、メインプロセッサ４２、および、サブプロセッサ４３−１乃至サブプロセッサ４３−８における最新の温度検出結果（すなわち、温度検出部１２１−１乃至温度検出部１２１−１０のそれぞれの最新の温度検出結果）、ヒートシンク１４１、メインプロセッサ４２、サブプロセッサ４３−１乃至サブプロセッサ４３−８における上限温度の設定値（すなわち、温度検出部１２１−１乃至温度検出部１２１−１０のそれぞれが検出する温度がこれ以上高い場合は、異常値であると判別するための設定値）、サブプロセッサ４３−１乃至サブプロセッサ４３-８の動作状態を示す情報、チップ内のサブプロセッサの配置情報、ＡＣを電源としているときの消費電力上限、バッテリを電源としているときの消費電力上限、電池を電源としているときの消費電力上限、ＡＣ，バッテリ、電池などのうち、いずれの電源が接続されているかを示す電源接続情報、および、現在の処理における消費電力の値などの情報が含まれている。
【０５４０】
そして、温度・電力情報を返信するコマンドを受信した情報処理装置４０１は、ネットワーク２に接続されている全ての情報処理装置４０１の情報処理コントローラ４１１に含まれる全てのサブプロセッサ４３から、処理の移動または交換先として最適なサブプロセッサ４３を選択し、選択されたサブプロセッサ４３に、異常が発生したサブプロセッサ４３の処理を移動するか、または、それぞれの処理を交換するなどの処理を制御する。
【０５４１】
第３のパターンは、それぞれの情報処理装置４０１が、自分自身の温度・電力管理テーブルを基に温度・電力情報を監視し、温度上昇の異常、または、消費電力量の異常を検出した場合、ネットワーク２に接続されている、他の情報処理装置４０１の全てに対して、サブプロセッサプログラムの移動を要求するコマンドを送信するものである。すなわち、消費電力量の異常を検出していない状態の情報処理装置４０１は、他の情報処理装置４０１から、サブプロセッサプログラムの移動を要求するコマンドを受信したとき、自分自身の温度・電力管理テーブルを基に、サブプロセッサプログラムの移動先となることが可能か否かを示す返信コマンドを生成し、サブプロセッサプログラムの移動を要求するコマンドの送信元の情報処理装置４０１に、生成した返信コマンドを送信する。そして、返信コマンドを受信した情報処理装置４０１は、返信コマンドを基に、処理の移動または交換先として最適なサブプロセッサ４３を選択し、選択されたサブプロセッサ４３に、異常が発生したサブプロセッサ４３の処理を移動するか、または、それぞれの処理を交換するなどの処理を制御する。
【０５４２】
なお、この３つのパターンにおいて、特に、温度上昇に異常があった場合、処理の移動または交換先として選択されるサブプロセッサとして、自分自身に含まれるサブプロセッサ４３の優先順位を高くするようにしてもよい。
【０５４３】
図５５に、温度上昇および消費電力量の増加を検出することによって分散処理の割り当てを制御する情報処理コントローラ４１１が第１のパターンにおいて実行可能な機能を説明するための機能ブロック図を示す。なお、図２１における場合と対応する部分には同一の符号を付してあり、その説明は適宜省略する。すなわち、図５５に示される、温度上昇および消費電力量の増加を検出することによって分散処理の割り当てを制御する情報処理コントローラ４１１が第１のパターンにおいて実現可能な機能は、メインプロセッサ４２が実行可能な機能においては、温度異常対応処理制御部２１６に代わって、温度・電力異常対応処理制御部４５５が設けられ、論理スレッド管理処理部２１７に代わって、論理スレッド管理処理部４５７が設けられ、温度管理情報送受信制御部２１４に代わって、温度・電力管理情報送受信制御部４５６が設けられている以外は、基本的に、図２１を用いて説明した場合と同様である。また、図２１を用いて説明した温度モニタ処理部１２２が実現可能な機能に代わって、温度・電力管理処理部４２１が実行可能な機能である、温度・電力情報取得部４５１、割り込み制御部１６５、タイマ１６６、温度・電力管理テーブル４５２、および、異常検出部４５３が、新たに設けられている。
【０５４４】
温度・電力情報取得部４５１は、割り込み制御部１６５の処理により制御されるタイミングで、温度検出部１２１および電力測定部３２１から供給される温度情報および電力情報を取得し、温度・電力情報テーブル４５６を更新する。割り込み制御部１６５は、タイマ１６６を参照して、温度・電力情報取得部４５１に対してタイマ割り込みをかけるとともに、異常検出部４５３から供給される情報を基に、演算処理部１６１および温度・電力異常対応処理制御部４５５に割り込みをかける。
【０５４５】
温度・電力管理情報送受信制御部４５６は、温度・電力異常対応処理制御部４５５の制御に基づいて、通信部１６を介して、温度・電力電力管理テーブル、または、温度管理および電力管理のために生成された各種コマンド（ソフトウェアセル）の、ネットワーク２に接続されている他の情報処理装置４０１への送信を制御するとともに、通信部１６を介して、他の情報処理装置４０１の温度・電力管理テーブル、または、温度管理および電力管理のための各種コマンド（ソフトウェアセル）などの、ネットワーク２に接続されている他の情報処理装置４０１からの受信を制御する。以下、温度・電力電力管理テーブル、または、温度管理および電力管理のために生成された各種コマンド（ソフトウェアセル）など、ネットワーク２によって接続された複数の情報処理装置４０１の電力管理と電力管理の結果実行される分散処理の制御にかかわる情報を個々に区別する必要がない場合、温度・電力管理情報と総称するものとする。
【０５４６】
温度・電力管理テーブル４５２は、情報処理コントローラ４１１における温度管理および消費電力管理を行うための情報が記載されるテーブルであり、自分自身がスレーブ装置であるとき、自分自身の温度管理情報および電力情報を記録し、自分自身がマスタ装置であるとき、ネットワーク２に接続されているすべての情報処理装置４０１における温度管理情報および電力情報を記録している。温度情報には、図１３を用いて説明した場合と同様に、情報処理コントローラ４１１を識別するためのコントローラＩＤ、サブプロセッサ４３−１乃至サブプロセッサ４３-８の動作状態を示す情報、ヒートシンク１４１、メインプロセッサ４２、および、サブプロセッサ４３−１乃至サブプロセッサ４３−８における最新の温度検出結果（すなわち、温度検出部１２１−１乃至温度検出部１２１−１０のそれぞれの最新の温度検出結果）、ヒートシンク１４１、メインプロセッサ４２、および、サブプロセッサ４３−１乃至サブプロセッサ４３−８における上限温度の設定値（すなわち、温度検出部１２１−１乃至温度検出部１２１−１０のそれぞれが検出する温度がこれ以上高い場合は、異常値であると判別するための設定値）、並びに、チップ内のサブプロセッサの配置情報が記載されている。また、電力情報には、図４０を用いて説明した場合と同様に、情報処理コントローラ４１１を識別するためのコントローラＩＤ、ＡＣを電源としているときの消費電力上限、バッテリを電源としているときの消費電力上限、電池を電源としているときの消費電力上限、ＡＣ，バッテリ７３、電池などのうち、いずれの電源が接続されているかを示す電源接続情報、および、現在の処理における消費電力の値などの情報を含む情報が記載されている。
【０５４７】
なお、上限温度とは、情報処理コントローラ４１１または情報処理装置４０１の設計時において、予め設定された正常な動作を行うために要求される温度の上限値である。上限温度は、正常かつ効率的な動作を行うために望ましい温度上限値であってもよい。また、サブプロセッサ４３−１乃至サブプロセッサ４３-８の動作状態を示す情報とは、それぞれが動作中であるか否かを示す、例えば、ＲＵＮまたはＳＴＯＰのステータスである。そして、サブプロセッサ配置情報とは、情報処理コントローラ４１１または情報処理装置４０１の設計時において予め設定された、サブプロセッサ４３−１乃至サブプロセッサ４３-８の配置を示す情報である。
【０５４８】
また、ＡＣ電源を電源としているときの消費電力上限は、ＡＣ電源使用時に正常な動作を行うために要求される消費電力の上限値であり、情報処理装置の設計時に、予め設定されるものである。また、ＡＣ電源時の消費電力上限は、正常かつ効率的な動作を行うために望ましい消費電力上限値であってもよい。バッテリ７３を電源としているときの消費電力上限、および、電池を電源としているときの消費電力上限についても同様である。また、電源接続情報は、情報処理装置４０１の設計時に予め設定される場合もあるし、情報処理装置４０１が複数の電源ソースに対応している場合には、適宜、変化することもあり得る。現在の消費電力は、電力測定部３２１により測定された消費電力であり、当然、情報処理装置の動作状況によって変動する値である。
【０５４９】
異常検出部４５３は、自分自身がマスタ装置である場合、温度・電力管理テーブル４５２を参照し、ネットワーク２に接続されている全ての情報処理装置４０１の温度測定結果または電力検出結果のうち、設定されている上限値を超えたものがあった場合、割り込み制御部１６５に、温度または消費電力量の異常が検出されたことを通知し、演算処理部１６１および異常対応処理制御部４５５に割り込みをかけさせる。
【０５５０】
異常対応処理制御部４５５は、自分自身がマスタ装置であり、割り込み制御部１６５により割り込みがかかった場合、温度・電力管理テーブル４５２を参照して、ネットワーク２に接続されている全ての情報処理装置４０１のうちのいずれかの温度情報または消費電力量の異常の発生情報を取得し、これを基に、論理スレッド管理処理部４５７を制御して、必要に応じて、処理をいったん停止させたり、サブプロセッサ４３のいずれかとの、実行されているスレッドの移動または交換を制御する。
【０５５１】
論理スレッド管理処理部４５７は、演算処理部１６１により実行されるアプリケーションプログラムに対応する論理スレッドの生成および削除を行うとともに、自分自身がマスタ装置である場合、ネットワーク２に接続されている情報処理装置４０１のうちのいずれかにおいて実行される分散処理に対応する論理スレッドの状態監視と動作制御を行う。論理スレッド管理処理部４５７は、自分自身がマスタ装置である場合、ネットワーク２に接続されている全ての情報処理装置４０１の管理情報が記載されたテーブルと、実行される論理スレッドごとに、論理スレッドの実行に必要な情報が記載されたテーブルを作成し、必要に応じて、テーブルの情報を参照し、更新することにより、論理スレッドの実行を制御する。
【０５５２】
また、論理スレッド管理処理部４５７は、自分自身がマスタ装置である場合、必要に応じて、他の情報処理装置４０１において実行されているスレッドの処理を制御するためのソフトウェアセルを生成し、通信部１６を介して、生成されたソフトウェアセルを送信する。また、更に、論理スレッド管理処理部４５７は、自分自身がスレーブ装置である場合、通信部１６を介して、マスタ装置である情報処理装置４０１から送信されたソフトウェアセルの供給を受け、ソフトウェアセルの内容に基づいた分散処理をサブプロセッサ４３に実行させるとともに、必要に応じて、返信や応答に対応するソフトウェアセルを生成し、通信部１６を介して、生成されたソフトウェアセルを送信する。更に、論理スレッド管理処理部４５７は、自分自身がマスタ装置であるかスレーブ装置であるかにかかわらず、必要に応じて、通信部１６により受信された、他の情報処理装置１０１において実行されたスレッドに関する情報を取得する。
【０５５３】
なお、図５５において、これらの機能を実現するハードウェアが、上述するとおりではない場合、例えば、メインプロセッサ４２により実現される機能のうちの一部が温度電力管理処理部４２１により実現されたり、温度電力管理処理部４２１により実現される機能のうちの一部がメインプロセッサ４２により実現される場合や、これらの機能が、それぞれ異なるハードウェアにより実現される場合なども、本発明は適用可能であることは言うまでもない。
【０５５４】
次に、図５６乃至図６０のフローチャートを参照して、温度および電力を基に分散処理を制御する場合の第１のパターンにおける動作を説明する。
【０５５５】
図５６のフローチャートを参照して、図５５に示される情報処理装置４０１が実行するアプリケーションプログラム実行処理３について説明する。ここでは、温度・電力管理プログラムが、情報処理装置４０１の主電源が投入されている間は常時動作する常駐プログラムであるものとして説明する。
【０５５６】
ステップＳ４５１において、演算処理部１６１は、ユーザにより、アプリケーションプログラムの実行が指令されたか否かを判断する。すなわち、ステップＳ４５１において、メインプロセッサ４２は、操作入力部１５から、バス１４およびバス４１を介して供給される信号を基に、アプリケーションプログラムの実行が指令されたか否かを判断する。ステップＳ４５１において、アプリケーションプログラムの実行が指令されていないと判断された場合、アプリケーションプログラムの実行が指令されたと判断されるまで、ステップＳ４５１の処理が繰り返される。
【０５５７】
ステップＳ４５１において、アプリケーションプログラムの実行が指令されたと判断された場合、ステップＳ４５２において、演算処理部１６１は、論理スレッドのサブプロセッサへの割り当てなどを設定し、論理スレッドの設定情報を論理スレッド管理処理部４５７に供給する。
【０５５８】
ステップＳ４５３において、論理スレッド管理処理部４５７は、論理スレッドが割り当てられたサブプロセッサ４３のローカルストレージ５１のコード領域１８７およびデータ領域１８８に、割り当てられた処理を実行するためのプログラムやデータをロードさせる。
【０５５９】
ステップＳ４５４において、演算処理部１６１および論理スレッド管理処理部４５７は、サブプロセッサ４３による処理を含めた、アプリケーションプログラムの実行を制御する。サブプロセッサ４３の演算処理部１８１は、割り当てられた処理を実行する。
【０５６０】
ところで、温度・電力管理プログラムは、情報処理装置４０１の主電源が投入されている間は常時動作する常駐プログラムであるので、ステップＳ４５１乃至ステップＳ４５４の処理が実行されている間も、処理が実行されている。温度・電力管理プログラムによるマスタ装置の温度・電力情報管理処理については、図５７のフローチャートを用いて、スレーブ装置の温度・電力管理処理については、図６０を用いて、それぞれ後述する。
【０５６１】
ステップＳ４５５において、演算処理部１６１は、割り込み制御部１６５により、温度上昇、または、消費電力量の異常発生のための割り込みがあるか否かを判断する。ステップＳ５において、温度上昇、または、消費電力量の異常発生のための割り込みがないと判断された場合、処理は、後述するステップＳ４５８に進む。
【０５６２】
ステップＳ４５５において、温度上昇、または、消費電力量の異常発生のための割り込みがあったと判断された場合、割り込みにより実行中の処理が停止されるので、ステップＳ４５６において、演算処理部１６１は、割り込みが解除されたか否かを判断する。ステップＳ４５６において、割り込みが解除されていないと判断された場合、割り込みが解除されたと判断されるまで、ステップＳ４５６の処理が繰り返される。
【０５６３】
ステップＳ４５６において、割り込みが解除されたと判断された場合、ステップＳ４５７において、演算処理部１６１は、必要に応じて、論理スレッドの設定情報を、再度、論理スレッド管理処理部４５７に供給するので、論理スレッド管理処理部４５７は、論理スレッド管理に関するテーブルを更新する。
【０５６４】
ステップＳ４５５において、消費電力量の異常発生のための割り込みがないと判断された場合、または、ステップＳ４５７の処理の終了後、ステップＳ４５８において、演算処理部１６１は、アプリケーションプログラムの処理が終了されたか否かを判断する。ステップＳ４５８において、アプリケーションプログラムの処理が終了されていないと判断された場合、処理は、ステップＳ４５４に戻り、それ以降の処理が繰り返される。ステップＳ４５８において、アプリケーションプログラムの処理が終了されたと判断された場合、処理が終了される。
【０５６５】
このような処理により、メインプロセッサ４２により実行されるアプリケーションプログラムに対応する分散処理が、サブプロセッサ４３のうちの選択されたものにより実行される。
【０５６６】
次に、図５７のフローチャートを参照して、マスタ装置の温度・電力情報管理処理について説明する。
【０５６７】
ステップＳ４７１において、温度・電力情報取得部４５１は、割り込み制御部１６５から、タイマ割り込みが入ったか否かを判断する。
【０５６８】
ステップＳ４７１において、タイマ割り込みが入っていないと判断された場合、ステップＳ４７２において、温度・電力管理情報送受信制御部４５６は、ネットワーク２に接続されている他の情報処理装置４０１から、温度・電力管理テーブルを受信したか否かを判断する。ステップＳ４７２において、温度・電力管理テーブルを受信していないと判断された場合、処理は、ステップＳ４７１に戻り、それ以降の処理が繰り返される。ステップＳ４７２において、電力管理テーブルを受信したと判断された場合、処理は、後述するステップＳ４７４に進む。
【０５６９】
ステップＳ４７１において、タイマ割り込みが入ったと判断された場合、ステップＳ４７３において、温度・電力情報取得部４５１は、電力測定部３２１から、電力の測定結果を示す情報を取得するとともに、温度検出部１２１から、温度の検出結果を示す情報を取得する。
【０５７０】
ステップＳ４７２において、温度・電力管理テーブルを受信したと判断された場合、または、ステップＳ４７３の処理の終了後、ステップＳ４７４において、温度・電力情報取得部４５１は、ステップＳ４７２において受信された他の情報処理装置４０１の温度・電力管理テーブル、または、ステップＳ４７３において取得された自分自身の温度情報および電力情報を基に、温度・電力管理テーブル４５２を更新する。
【０５７１】
ステップＳ４７５において、異常検出部４５３は、温度・電力管理テーブル４５２を参照し、温度情報または電力情報に異常値があるか否か、すなわち、ネットワーク２に接続されている情報処理装置４０１に設けられている温度検出部１２１または電力測定部３２１により検出された温度検出結果または電力検出結果のうち、予め設定されている上限値を超えたものがあるか否かを判断する。ステップＳ４７５において、温度情報または電力情報のいずれにも異常値がないと判断された場合、処理は、ステップＳ４７１に戻り、それ以降の処理が繰り返される。
【０５７２】
ステップＳ４７５において、温度情報または電力情報に異常値があったと判断された場合、ステップＳ４７６において、異常検出部４５３は、割り込み制御部１６５に、異常な温度上昇または消費電力の上昇が検出されたことを通知し、演算処理部１６１および異常対応処理制御部４５５に割り込みをかけさせる。割り込み制御部１６５は、異常対応処理制御部４５５および演算処理部１６１に対して、割り込みをかけ、演算処理部１６１により制御されるアプリケーションプログラムの処理を停止させるとともに、異常対応処理制御部４５５に対して異常発生時の処理を開始させる。
【０５７３】
ステップＳ４７７において、図５８および図５９を用いて後述する異常発生時の処理８が実行される。
【０５７４】
ステップＳ４７８において、異常対応処理制御部４５５は、ステップＳ４７７において実行された異常発生時の処理８に基づいて、論理スレッド管理処理部４５７を制御し、必要に応じて、論理スレッド管理に関するテーブルを更新させる。
【０５７５】
ステップＳ４７９において、割り込み制御部１６５は、演算処理部１６１により制御されるアプリケーションプログラムの処理に対する割り込みを解除し、処理は、ステップＳ４７１に戻り、それ以降の処理が繰り返される。
【０５７６】
このような処理により、ネットワーク２に接続されている、マスタ装置である情報処理装置４０１において、ネットワーク２に接続されている全ての情報処理装置４０１の温度検出部１２１または電力測定部３２１により検出された温度検出結果または電力検出結果を基に更新された温度管理テーブルを取得して、温度・電力管理テーブル４５２として管理することができるようになされ、マスタ装置において記憶されている温度・電力管理テーブル４５２を基に、異常発生時の割り込み処理が実行されるか否かが判断される。
【０５７７】
次に、図５８および図５９のフローチャートを参照して、図５７のステップＳ４７７において実行される異常発生時の処理８について説明する。
【０５７８】
ステップＳ５０１において、異常対応処理制御部４５５は、温度・電力管理テーブル４５２を参照し、温度に異常が発生したか否かを判断する。ステップＳ５０１において、温度に異常が発生していないと判断された場合、処理は、ステップＳ５１９に進む。
【０５７９】
ステップＳ５０１において、温度に異常が発生したと判断された場合、ステップＳ５０２において、異常対応処理制御部４５５は、温度・電力管理テーブル４５２を参照し、温度の異常が発生したのは、メインプロセッサ４２、または、情報処理コントローラ４１１であるか否か、換言すれば、予め設定されている上限温度を超えた温度検出結果を得たのは、温度検出部１２１-９または温度検出部１２１−１０のうちのいずれかであるか否かを判断する。ステップＳ５０２において、温度の異常が発生したのは、メインプロセッサ４２、または、情報処理コントローラ４１１であると判断された場合、処理は、後述するステップＳ５１４に進む。
【０５８０】
ステップＳ５０２において、温度の異常が発生したのは、メインプロセッサ４２、または、情報処理コントローラ４１１ではない、すなわち、サブプロセッサ４３のうちのいずれかであると判断された場合、ステップＳ５０３において、異常対応処理制御部４５５は、温度・電力管理テーブル４５２を参照し、温度の異常が発生したサブプロセッサ４３の処理の移動が可能であるか否か、換言すれば、温度の異常が発生したサブプロセッサ４３以外のサブプロセッサ４３のうちのいずれかが、停止状態であるか否かを判断する。ステップＳ５０３において、温度の異常が発生したサブプロセッサ４３の処理の移動が可能ではないと判断された場合、処理は、後述するステップＳ５０８に進む。
【０５８１】
ステップＳ５０３において、温度の異常が発生したサブプロセッサ４３の処理の移動が可能であると判断された場合、ステップＳ５０４において、異常対応処理制御部４５５は、処理の移動先のサブプロセッサ４３を選択し、選択結果を、論理スレッド管理処理部４５７に供給する。具体的には、異常対応処理制御部４５５は、ネットワーク２に接続されている情報処理装置４０１の情報処理コントローラ４１１に含まれるサブプロセッサ４３のうち、現在動作中のサブプロセッサ４３に隣接しないものであって、かつ、停止状態であるサブプロセッサ４３のうち、温度検出結果が最も低いものを移動先のサブプロセッサ４３として優先的に選択するようになされている。また、この条件を満たすサブプロセッサ４３が複数ある場合、異常対応処理制御部４５５は、サブプロセッサＩＤとして割り当てられている番号が最も若いものを選択する。また、現在動作中のサブプロセッサ４３に隣接しない、停止状態であるサブプロセッサ４３が存在しない場合、異常対応処理制御部４５５は、停止状態のサブプロセッサ４３のうち、温度検出結果が最も低いものが選択され、更に、この条件を満たすサブプロセッサ４３が複数ある場合は、サブプロセッサＩＤとして割り当てられている番号が最も若いものが選択され、選択結果が、論理スレッド管理処理部４５７に供給される。
【０５８２】
ステップＳ５０５において、論理スレッド管理処理部４５７は、温度上限値を超えたサブプロセッサ４３により実行されていた処理に関するコンテキストを退避させる。温度上限値を超えたサブプロセッサ４３がマスタ装置であった場合、割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受けて、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させた後、移動先のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、論理スレッド管理処理部４５７が管理する情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０５８３】
また、温度上限値を超えたサブプロセッサ４３がスレーブ装置であった場合、割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受け、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させた後、移動先のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、バス４１、バス１４、および、通信部１６、並びに、ネットワーク２を介して、マスタ装置として動作している情報処理装置４０１の論理スレッド管理処理部４５７が管理する情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０５８４】
ステップＳ５０６において、論理スレッド管理処理部４５７は、温度上限値を超えたサブプロセッサ４３の動作を停止させる。
【０５８５】
ステップＳ５０７において、論理スレッド管理処理部４５７は、移動先のサブプロセッサとして選択されたサブプロセッサ４３に、ステップＳ５０５の処理により退避されたコンテキストをリストアする。すなわち、論理スレッド管理処理部４５７は、処理の移動先のサブプロセッサ４３がマスタ装置内のサブプロセッサ４３であるとき、バス４１を介して、移動先のサブプロセッサ４３に、自分自身が管理する情報記憶領域に記憶されているコンテキストを供給し、処理の移動先のサブプロセッサ４３がスレーブ装置内のサブプロセッサ４３であるとき、バス４１、バス１４、および、通信部１６、並びに、ネットワーク２を介して、スレーブ装置として動作している情報処理装置４０１に含まれる移動先のサブプロセッサ４３に、自分自身が管理する情報記憶領域に記憶されているコンテキストを供給する。移動先のサブプロセッサとして選択されたサブプロセッサ４３においては、供給されたコンテキストを、コード領域１８７乃至スタック領域１９０の対応する部分に記憶して、処理は、ステップＳ５１９に進む。
【０５８６】
ステップＳ５０３において、温度の異常が発生したサブプロセッサ４３の処理の移動が可能ではないと判断された場合、ステップＳ５０８において、異常対応処理制御部４５５は、処理の交換先のサブプロセッサ４３を選択し、選択結果を、論理スレッド管理処理部４５７に供給する。具体的には、異常対応処理制御部４５５は、ネットワーク２に接続されている情報処理装置４０１の情報処理コントローラ４１１のサブプロセッサ４３の中から、温度検出結果が最も低いものを移動先のサブプロセッサ４３として優先的に選択するようになされており、この条件を満たすサブプロセッサ４３が複数ある場合、サブプロセッサＩＤとして割り当てられている番号が最も若いものを選択するようになされている。
【０５８７】
ステップＳ５０９において、論理スレッド管理処理部４５７は、温度上限値を超えたサブプロセッサ４３により実行されていた処理に関するコンテキストを退避させる。温度上限値を超えたサブプロセッサ４３がマスタ装置であった場合、割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受けて、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させた後、処理の交換先のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、処理の交換先のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、論理スレッド管理処理部４５７が管理する情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０５８８】
また、温度上限値を超えたサブプロセッサ４３がスレーブ装置であった場合、割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受け、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させた後、処理の交換先のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、処理の交換先のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、バス４１、バス１４、および、通信部１６、並びに、ネットワーク２を介して、マスタ装置として動作している情報処理装置４０１の論理スレッド管理処理部４５７が管理する情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０５８９】
ステップＳ５１０において、論理スレッド管理処理部４５７は、温度上限値を超えたサブプロセッサ４３の動作を停止させる。
【０５９０】
ステップＳ５１１において、論理スレッド管理処理部４５７は、処理の交換先として選択されたサブプロセッサ４３により実行されていた処理に関するコンテキストを退避させる。処理の交換先として選択されたサブプロセッサ４３がマスタ装置であった場合、割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受けて、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させた後、処理の交換元のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、処理の交換元のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、論理スレッド管理処理部４５７が管理する情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０５９１】
また、処理の交換先として選択されたサブプロセッサ４３がスレーブ装置であった場合、割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受け、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させた後、処理の交換元のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、処理の交換元のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、バス４１、バス１４、および、通信部１６、並びに、ネットワーク２を介して、マスタ装置として動作している情報処理装置４０１の論理スレッド管理処理部４５７が管理する情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０５９２】
ステップＳ５１２において、論理スレッド管理処理部４５７は、処理の交換先として選択されたサブプロセッサ４３の動作を停止させる。
【０５９３】
ステップＳ５１３において、論理スレッド管理処理部４５７は、退避された２つのサブプロセッサ４３のコンテキストを交換してリストアさせる。すなわち、論理スレッド管理処理部４５７は、処理の交換先のサブプロセッサとして選択されたサブプロセッサ４３に、ステップＳ５０９の処理により退避されたコンテキストをリストアさせるとともに、温度上限値を超えたサブプロセッサ４３に、ステップＳ５１１の処理により退避されたコンテキストをリストアさせる。具体的には、論理スレッド管理処理部２１７は、温度上限値を越えたサブプロセッサ４３、または、処理の交換先のサブプロセッサ４３がマスタ装置内のサブプロセッサ４３であるとき、バス４１を介して、温度上限値を超えた、または、交換先のサブプロセッサ４３に、自分自身が管理する情報記憶領域に記憶されているコンテキストのうち対応するものを供給し、温度上限値を越えたサブプロセッサ４３、または、処理の交換先のサブプロセッサ４３がスレーブ装置内のサブプロセッサ４３であるとき、バス４１、バス１４、および、通信部１６、並びに、ネットワーク２を介して、スレーブ装置として動作している情報処理装置４０１に含まれる温度上限値を超えた、または、交換先のサブプロセッサ４３に、自分自身が管理する情報記憶領域に記憶されているコンテキストのうち対応するものを供給する。それぞれのサブプロセッサ４３には、供給されたコンテキストを、コード領域１８７乃至スタック領域１９０の対応する部分に記憶して、処理は、ステップＳ５１９に進む。
【０５９４】
ステップＳ５０２において、温度の異常が発生したのは、メインプロセッサ４２、または、情報処理コントローラ４１１であると判断された場合、ステップＳ５１４において、異常対応処理制御部４５５は、温度の異常が発生したメインプロセッサ４２、または、情報処理コントローラ４１１は、マスタ装置である情報処理装置４０１に含まれるか否かを判断する。ステップＳ５１４において、温度の異常が発生したメインプロセッサ４２、または、情報処理コントローラ４１１は、マスタ装置である情報処理装置４０１に含まれると判断された場合、処理は、後述するステップＳ５１７に進む。
【０５９５】
ステップＳ５１４において、温度の異常が発生したメインプロセッサ４２、または、情報処理コントローラ４１１は、マスタ装置である情報処理装置４０１に含まれない、すなわち、温度の異常が発生したメインプロセッサ４２、または、情報処理コントローラ４１１は、スレーブ装置である情報処理装置４０１に含まれると判断された場合、ステップＳ５１５において、異常対応処理制御部４５５は、温度・電力管理テーブル４５２を参照して、異常が発生したメインプロセッサ４２、または、情報処理コントローラ４１１が含まれる情報処理装置４０１の情報処理コントローラ全体の処理が移動可能であるか否かを判断する。ステップＳ５１５において、異常が発生したメインプロセッサ４２、または、情報処理コントローラ４１１が含まれる情報処理装置４０１の情報処理コントローラ全体の処理が移動可能であると判断された場合、処理は、ステップＳ５０４に進む。
【０５９６】
ステップＳ５１５において、異常が発生したメインプロセッサ４２、または、情報処理コントローラ４１１が含まれる情報処理装置４０１の情報処理コントローラ全体の処理が移動可能ではないと判断された場合、ステップＳ５１６において、異常対応処理制御部４５５は、温度・電力管理テーブル４５２を参照して、異常が発生したメインプロセッサ４２、または、情報処理コントローラ４１１が含まれる情報処理装置４０１の情報処理コントローラ全体の処理の交換が可能であるか否かを判断する。ステップＳ５１６において、異常が発生したメインプロセッサ４２、または、情報処理コントローラ４１１が含まれる情報処理装置４０１の情報処理コントローラ全体の処理の交換が可能であると判断された場合、処理は、ステップＳ５０８に進む。
【０５９７】
ステップＳ５１４において、温度の異常が発生したメインプロセッサ４２、または、情報処理コントローラ４１１は、マスタ装置である情報処理装置４０１に含まれると判断された場合、または、ステップＳ５１６において、異常が発生したメインプロセッサ４２、または、情報処理コントローラ４１１が含まれる情報処理装置４０１の情報処理コントローラ全体の処理の交換が可能ではないと判断された場合、ステップＳ５１７において、異常対応処理制御部４５５は、論理スレッド管理処理部４５７を制御して、演算処理部１６１により実行されているアプリケーションプログラムを一時停止させるなどして、常時動作する常駐プログラムなどが実行する一部の必要な処理を除いて、メインプロセッサ４２の処理を一時中断させる。
【０５９８】
ステップＳ５１８において、異常対応処理制御部４５５は、温度・電力管理テーブル４５２を参照して、温度状態が正常に戻ったか否かを判断する。ステップＳ５１８において、温度状態が正常に戻っていないと判断された場合、温度状態が正常に戻ったと判断されるまで、ステップＳ５１８の処理が繰り返される。
【０５９９】
ステップＳ５０１において、温度に異常が発生していないと判断された場合、ステップＳ５０７の処理の終了後、ステップＳ５１３の処理の終了後、または、ステップＳ５１８において、温度状態が正常に戻ったと判断された場合、ステップＳ５１９において、異常対応処理制御部４５５は、電力の異常が発生したか否かを判断する。ステップＳ５１９において、異常対応処理制御部４５５は、電力の異常が発生していないと判断された場合、処理は、図５７のステップＳ４７７に戻り、ステップＳ４７８に進む。
【０６００】
ステップＳ５１９において、異常対応処理制御部４５５は、電力の異常が発生したと判断された場合、ステップＳ５２０において、異常対応処理制御部４５５は、温度・電力管理テーブル４５２を参照し、消費電力量の異常が発生した情報処理コントローラ４１１に含まれる全てのサブプロセッサ４３の処理の移動が可能であるか否かを判断する。ステップＳ３４１において、消費電力量の異常が発生した情報処理コントローラ４１１に含まれる全てのサブプロセッサ４３の処理の移動が可能ではないと判断された場合、処理は、後述するステップＳ５２５に進む。
【０６０１】
ステップＳ５２０において、消費電力量の異常が発生した情報処理コントローラ４１１に含まれる全てのサブプロセッサ４３の処理の移動が可能であると判断された場合、ステップＳ５２１において、異常対応処理制御部４５５は、温度・電力管理テーブル４５２を参照し、ネットワーク２に接続されている情報処理装置４０１の情報処理コントローラ４１１の中から、処理の移動先の情報処理コントローラ４１１を選択し、選択結果を、論理スレッド管理処理部４５７に供給する。具体的には、異常対応処理制御部４５５は、温度・電力管理テーブル４５２を参照して、ネットワーク２に接続されている情報処理装置４０１の情報処理コントローラ４１１のうち、現在動作中のサブプロセッサ４３の処理を実行可能な情報処理コントローラ４１１であって、現在最も電力消費量の少ない情報処理コントローラ４１１を選択したり、バッテリまたは電池で動作している他の情報処理装置４０１の情報処理コントローラ４１１よりも、ＡＣ電源で動作している他の情報処理装置４０１の情報処理コントローラ４１１を、優先的に処理の移動先として選択するようになされており、この条件を満たす情報処理コントローラ４１１が複数ある場合、プロセッサＩＤとして割り当てられている番号が最も若いものが選択されるようになされている。
【０６０２】
また、処理の移動先として選択された情報処理コントローラ４１１において、いずれのサブプロセッサ４３に分散処理が割り当てられるかは、処理の移動先として選択された情報処理コントローラ４１１のメインプロセッサ４２の論理スレッド管理処理部４５７が決定する。
【０６０３】
ステップＳ５２２において、論理スレッド管理処理部４５７は、電力上限値を超えた情報処理コントローラ４１１により実行されていた処理に関するコンテキストを退避させる。
【０６０４】
温度上限値を超えた情報処理コントローラ４１１がマスタ装置であった場合、割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受け、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させた後、移動先のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、論理スレッド管理処理部４５７が管理する情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０６０５】
また、温度上限値を超えた情報処理コントローラ４１１がスレーブ装置であった場合、割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受け、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させた後、移動先のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、バス４１、バス１４、および、通信部１６、並びに、ネットワーク２を介して、マスタ装置として動作している情報処理装置４０１の論理スレッド管理処理部４５７が管理する情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０６０６】
ステップＳ５２３において、論理スレッド管理処理部４５７は、電力上限値を超えた情報処理コントローラ４１１のサブプロセッサ４３の動作を停止させる。
【０６０７】
ステップＳ５２４において、論理スレッド管理処理部４５７は、移動先の情報処理コントローラ４１１のサブプロセッサとして選択されたサブプロセッサ４３に、ステップＳ５２２の処理により退避されたコンテキストをリストアする。すなわち、論理スレッド管理処理部４５７は、処理の移動先のサブプロセッサ４３がマスタ装置内のサブプロセッサ４３であるとき、バス４１を介して、移動先のサブプロセッサ４３に、自分自身が管理する情報記憶領域に記憶されているコンテキストを供給し、処理の移動先のサブプロセッサ４３がスレーブ装置内のサブプロセッサ４３であるとき、バス４１、バス１４、および、通信部１６、並びに、ネットワーク２を介して、スレーブ装置として動作している情報処理装置４０１に含まれる移動先のサブプロセッサ４３に、自分自身が管理する情報記憶領域に記憶されているコンテキストを供給する。移動先のサブプロセッサとして選択されたサブプロセッサ４３においては、供給されたコンテキストを、コード領域１８７乃至スタック領域１９０の対応する部分に記憶して、処理は、図５７のステップＳ４７７に戻り、ステップＳ４７８に進む。
【０６０８】
ステップＳ５２０において、消費電力量の異常が発生した情報処理コントローラ４１１に含まれる全てのサブプロセッサ４３の処理の移動が可能ではないと判断された場合、ステップＳ５２５において、異常対応処理制御部４５５は、温度・電力管理テーブル４５２を参照して、ネットワーク２に接続されている情報処理装置４０１の情報処理コントローラ４１１のサブプロセッサ４３の中から、処理の交換先となる情報処理コントローラ４１１のサブプロセッサ４３を選択し、選択結果を、論理スレッド管理処理部４５７に供給する。具体的には、異常対応処理制御部４５５は、ネットワーク２に接続されている情報処理装置４０１の情報処理コントローラ４１１の中から、電力測定結果が最も低いものを交換先の情報処理コントローラ４１１として優先的に選択したり、または、バッテリまたは電池で動作している他の情報処理装置４０１の情報処理コントローラ４１１よりも、ＡＣ電源で動作している他の情報処理装置４０１の情報処理コントローラ４１１を、優先的に処理の交換先として選択するようになされており、この条件を満たす情報処理コントローラ４１１が複数ある場合、プロセッサＩＤとして割り当てられている番号が最も若いものを選択するようになされている。
【０６０９】
また、処理に必要な、共通に使用するプログラムとモデルデータが、分散処理が割り当てられていないサブプロセッサ４３のローカルストレージ５１のうちのいずれかに、予め供給されている場合、共通に使用するプログラムとモデルデータがローカルストレージ５１に保存されているサブプロセッサ４３を有する情報処理コントローラ４１１が優先して選択されるようにしてもよい。
【０６１０】
また、処理の交換先として選択された情報処理コントローラ４１１において、いずれのサブプロセッサ４３に分散処理が割り当てられるかは、処理の交換先として選択された情報処理コントローラ４１１のメインプロセッサ４２の論理スレッド管理処理部４５７が決定する。
【０６１１】
ステップＳ５２６において、論理スレッド管理処理部４５７は、電力上限値を超えた、すなわち、消費電力量の異常が発生した情報処理コントローラ４１１のサブプロセッサ４３により実行されていた処理に関するコンテキストを退避させる。
【０６１２】
消費電力量の異常が発生した情報処理コントローラ４１１がマスタ装置であった場合、割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受け、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させた後、処理の交換先のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、処理の交換先のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、論理スレッド管理処理部４５７が管理する情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０６１３】
また、消費電力量の異常が発生した情報処理コントローラ４１１がスレーブ装置であった場合、割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受け、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させた後、処理の交換先のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、処理の交換先のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、バス４１、バス１４、および、通信部１６、並びに、ネットワーク２を介して、マスタ装置として動作している情報処理装置４０１の論理スレッド管理処理部４５７が管理する情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０６１４】
ステップＳ５２７において、論理スレッド管理処理部４５７は、電力上限値を超えた、すなわち、消費電力量の異常が発生した情報処理コントローラ４１１のサブプロセッサ４３の動作を停止させる。
【０６１５】
ステップＳ５２８において、論理スレッド管理処理部４５７は、処理の交換先として選択された情報処理コントローラ４１１のサブプロセッサ４３により実行されていた処理に関するコンテキストを退避させる。
【０６１６】
処理の交換先として選択された情報処理コントローラ４１１がマスタ装置であった場合、割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受け、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させた後、処理の交換元のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、処理の交換元のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、論理スレッド管理処理部４５７が管理する情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０６１７】
また、処理の交換先として選択された情報処理コントローラ４１１がスレーブ装置であった場合、割り込み制御部１８５は、実行している処理のコンテキストの退避を命令する割り込み命令を受け、演算処理部１８１の処理を停止させ、スレッド移動・交換処理部１８６は、実行中のプログラムのコンテキスト（レジスタ１８２、浮動小数点レジスタ１８３、および、プログラムカウンタ１８４のそれぞれの値）をスタック領域１９０に退避させた後、処理の交換元のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを予め保有している場合、スタック領域１９０とデータ領域１８９の内容を、処理の交換元のサブプロセッサ４３が、共通に使用するプログラムとモデルデータを保有していない場合、コード領域１８７乃至スタック領域１９０のデータを、バス４１、バス１４、および、通信部１６、並びに、ネットワーク２を介して、マスタ装置として動作している情報処理装置４０１の論理スレッド管理処理部４５７が管理する情報記憶領域（メインプロセッサ４２のローカルストレージ５１の記憶領域のうちの一部）に転送する。
【０６１８】
ステップＳ５２９において、論理スレッド管理処理部４５７は、処理の交換先として選択された情報処理コントローラ４１１のサブプロセッサ４３の動作を停止させる。
【０６１９】
ステップＳ５３０において、論理スレッド管理処理部４５７は、退避された２つの情報処理コントローラ４１１のサブプロセッサ４３のコンテキストを交換してリストアさせる。すなわち、論理スレッド管理処理部４５７は、処理の交換先として選択された情報処理コントローラ４１１のサブプロセッサ４３に、ステップＳ５２６の処理により退避されたコンテキストをリストアするとともに、電力上限値を超えた情報処理コントローラ４１１のサブプロセッサ４３に、ステップＳ５２８の処理により退避されたコンテキストをリストアする。具体的には、論理スレッド管理処理部４５７は、電力上限値を超えた情報処理コントローラ４１１、または、処理の移動先の情報処理コントローラ４１１がマスタ装置内の情報処理コントローラ４１１であるとき、バス４１を介して、電力上限値を超えた、または、移動先のサブプロセッサ４３に、自分自身が管理する情報記憶領域に記憶されているコンテキストのうち対応するものを供給し、温度上限値を越えた情報処理コントローラ４１１、または、処理の移動先の情報処理コントローラ４１１がスレーブ装置内の情報処理コントローラ４１１であるとき、バス４１、バス１４、および、通信部１６、並びに、ネットワーク２を介して、スレーブ装置として動作している情報処理装置４０１に含まれる電力上限値を超えた、または、移動先の情報処理コントローラ４１１のサブプロセッサ４３に、自分自身が管理する情報記憶領域に記憶されているコンテキストのうち対応するものを供給する。それぞれの情報処理コントローラ４１１のサブプロセッサ４３には、供給されたコンテキストを、コード領域１８７乃至スタック領域１９０の対応する部分に記憶して、処理は、図５７のステップＳ４７７に戻り、ステップＳ４７８に進む。
【０６２０】
このような処理により、消費電力量の異常の発生箇所と、ネットワーク２に接続されている情報処理装置４０１のそれぞれの情報処理コントローラ４１１における動作、および、温度計測値または電力測定値に基づいて、分散処理のうちの一部が移動されるか、または、分散処理のうちの一部が交換されるかが判断され、処理の移動先または交換先が選択されるようになされている。
【０６２１】
次に、図６０のフローチャートを参照して、図５７を用いて説明したマスタ装置の電力情報管理処理と並行して実行される、スレーブ装置の温度・電力情報管理処理について説明する。
【０６２２】
ステップＳ５６１において、スレーブ装置として動作している情報処理装置４０１の温度・電力情報取得部４５１は、割り込み制御部１６５から、タイマ割り込みが入ったか否かを判断する。ステップＳ５６１において、タイマ割り込みが入っていないと判断された場合、タイマ割り込みが入ったと判断されるまで、ステップＳ５６１の処理が繰り返される。
【０６２３】
ステップＳ５６１において、タイマ割り込みが入ったと判断された場合、ステップＳ５６２において、温度・電力情報取得部４５１は、温度検出部１２１および電力測定部３２１のそれぞれから、電力情報を取得する。
【０６２４】
ステップＳ５６３において、温度・電力情報取得部４５１は、ステップＳ５６２において取得された温度情報および電力情報を基に、温度・電力管理テーブル４５２を更新する。
【０６２５】
ステップＳ５６４において、温度・電力管理情報送受信制御部４５６は、ステップＳ５６３において更新された温度・電力管理テーブル４５２を、通信部１６およびネットワーク２を介して、マスタ装置として動作している情報処理装置４０１に送信し、処理は、ステップＳ５６１に戻り、それ以降の処理が繰り返される。
【０６２６】
このような処理により、スレーブ装置の温度・電力管理テーブルがマスタ装置に送信される。送信されたそれぞれのスレーブ装置の温度・電力管理テーブルは、マスタ装置において管理される。
【０６２７】
図５６乃至図６０を用いて説明した処理により、情報処理コントローラ４１１の各部の温度を計測する温度検出部１２１、および、消費電力を測定する電力測定部３２１が設けられている情報処理装置４０１が、複数、ネットワーク２に接続されている場合の第１のパターンの電力情報、および、処理の移動または交換の制御を用いて、実行中の処理を停止させるのを最小限に抑えつつ、熱暴走などによる素子の破壊や処理速度の低下を防ぐようにすることができる。
【０６２８】
なお、ここでは、温度情報および電力情報を用いて、分散処理を制御する実施の形態の第１のパターンにおける場合のみを説明したが、第２のパターンおよび第３のパターンにおいても、温度情報を用いて分散処理を制御する場合、または、電力情報を用いて分散処理を制御する場合と同様にして、温度・電力情報送信コマンドと、温度・電力情報返信コマンドとの授受、または、サブプロセッサプログラム移動要求コマンドと、サブプロセッサプログラム移動返信コマンドとの授受により、温度情報および電力情報を用いて、分散処理を制御し、実行中の処理を停止させるのを最小限に抑えつつ、熱暴走などによる素子の破壊や処理速度の低下を防ぐようにすることができる。
【０６２９】
また、１つの情報処理装置に、図５３を用いて説明した情報処理コントローラ４１１が複数設けられている場合、または、図５３を用いて説明した情報処理コントローラ４１１が複数設けられている情報処理装置がネットワーク２に接続されている場合においても、本発明は適用可能であることはいうまでもない。
【０６３０】
上述した一連の処理は、ソフトウェアにより実行することもできる。そのソフトウェアは、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
【０６３１】
この記録媒体は、図１などに示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク６１（フレキシブルディスクを含む）、光ディスク６２（CD-ROM（Compact Disk-Read Only Memory），DVD（Digital Versatile Disk）を含む）、光磁気ディスク６３（ＭＤ（Mini-Disk)（商標）を含む）、もしくは半導体メモリ６４などよりなるパッケージメディアなどにより構成される。
【０６３２】
また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０６３３】
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【図面の簡単な説明】
【０６３４】
【図１】本発明を適用した通信システムの一実施の形態を示す図である。
【図２】電源部の構成について説明するための図である。
【図３】メインメモリを説明する図である。
【図４】サブプロセッサのローカルストレージを説明する図である。
【図５】キー管理テーブルを説明する図である。
【図６】ソフトウェアセルの構成の例を示す図である。
【図７】ＤＭＡコマンドがステータス返信コマンドである場合におけるソフトウェアセルのデータ領域の構造を示す図である。
【図８】図１の情報処理コントローラのメインメモリが記憶するソフトウェアの構成を示す図である。
【図９】本発明を適用した情報処理装置の構成を示す図である。
【図１０】図９の情報処理コントローラのチップ内の構成について説明するための図である。
【図１１】図９の情報処理コントローラのメインメモリが記憶するソフトウェアの構成を示す図である。
【図１２】図９の情報処理コントローラが実行可能な機能について説明するための機能ブロック図である。
【図１３】温度管理テーブルについて説明するための図である。
【図１４】アプリケーションプログラム実行処理１について説明するためのフローチャートである。
【図１５】温度情報管理処理１について説明するためのフローチャートである。
【図１６】異常発生時の処理１について説明するためのフローチャートである。
【図１７】処理の移動について説明するための図である。
【図１８】本発明を適用した情報処理コントローラの構成を示す図である。
【図１９】図１８の情報処理装置のチップ内の構成について説明するための図である。
【図２０】図１８の情報処理コントローラのメインメモリが記憶するソフトウェアの構成を示す図である。
【図２１】図１８の情報処理コントローラが、第１のパターンにおいて実行可能な機能について説明するための機能ブロック図である。
【図２２】マスタ装置の温度情報管理処理について説明するためのフローチャートである。
【図２３】異常発生時の処理２について説明するためのフローチャートである。
【図２４】スレーブ装置の温度情報管理処理について説明するためのフローチャートである。
【図２５】図１８の情報処理コントローラが、第２のパターンにおいて実行可能な機能について説明するための機能ブロック図である。
【図２６】温度情報返信コマンドについて説明するための図である。
【図２７】温度情報管理処理２について説明するためのフローチャートである。
【図２８】異常発生時の処理３について説明するためのフローチャートである。
【図２９】図１８の情報処理コントローラが、第３のパターンにおいて実行可能な機能について説明するための機能ブロック図である
【図３０】サブプロセッサプログラム移動要求コマンドについて説明するための図である。
【図３１】サブプロセッサプログラム移動返信コマンドについて説明するための図である。
【図３２】温度情報管理処理３について説明するためのフローチャートである。
【図３３】異常発生時の処理４について説明するためのフローチャートである。
【図３４】本発明を適用した、複数の情報処理コントローラを備える情報処理装置の構成を示す図である。
【図３５】本発明を適用した情報処理コントローラの構成を示す図である。
【図３６】電力測定部の電力測定方法について説明するための図である。
【図３７】図３５の情報処理コントローラのメインメモリが記憶するソフトウェアの構成を示す図である。
【図３８】図３５の情報処理コントローラが、第１のパターンにおいて実行可能な機能について説明するための機能ブロック図である。
【図３９】電力情報返信コマンドについて説明するための図である、
【図４０】電力管理情報について説明するための図である。
【図４１】アプリケーションプログラム実行処理２について説明するためのフローチャートである。
【図４２】マスタ装置の電力情報管理処理について説明するためのフローチャートである。
【図４３】異常発生時の処理５について説明するためのフローチャートである。
【図４４】スレーブ装置の電力情報管理処理について説明するためのフローチャートである。
【図４５】図３５の情報処理コントローラが、第２のパターンにおいて実行可能な機能について説明するための機能ブロック図である。
【図４６】電力情報管理処理１について説明するためのフローチャートである。
【図４７】異常発生時の処理６について説明するためのフローチャートである。
【図４８】図３５の情報処理コントローラが、第３のパターンにおいて実行可能な機能について説明するための機能ブロック図である。
【図４９】電力情報管理処理２について説明するためのフローチャートである。
【図５０】異常発生時の処理７について説明するためのフローチャートである。
【図５１】本発明を適用した、複数の情報処理コントローラを備える情報処理装置の構成を示す図である。
【図５２】本発明を適用した、複数の情報処理コントローラを備え、ネットワークに接続されている情報処理装置の構成を示す図である。
【図５３】本発明を適用した情報処理コントローラの構成を示す図である。
【図５４】図５３の情報処理コントローラのメインメモリが記憶するソフトウェアの構成を示す図である。
【図５５】図５３の情報処理コントローラが実行可能な機能について説明するための機能ブロック図である。
【図５６】アプリケーションプログラム実行処理３について説明するためのフローチャートである。
【図５７】マスタ装置の温度・電力情報管理処理について説明するためのフローチャートである。
【図５８】異常発生時の処理８について説明するためのフローチャートである
【図５９】異常発生時の処理８について説明するためのフローチャートである
【図６０】スレーブ装置の温度・電力情報管理処理について説明するためのフローチャートである。
【符号の説明】
【０６３５】
１  情報処理装置，  ２  ネットワーク，  ３  情報処理装置，  １１  情報処理コントローラ，  １２  メインメモリ，  １５  操作入力部，  １６  通信部，  １９  電源部，  ４２  メインプロセッサ，  ４３  サブプロセッサ，５１  ローカルストレージ，  １０１  情報処理装置，  １１１  情報処理コントローラ，  １２１  温度検出部，  １２２  温度モニタ処理部，  １６１  演算処理部，  １６３  論理スレッド管理処理部，  １６４  温度情報取得部，  １６５  割り込み制御部，  １６７  温度管理テーブル，  １６８  温度上昇検出部，  １６９  温度異常対応処理制御部，  １８１  演算処理部，  １８５割り込み制御部，  １８６  スレッド交換処理部，  １８７  コード領域，  １８８，１８９  データ領域，  １９０  スタック領域，  ２１１  ＭＳマネージメント処理部，  ２１２  能力交換処理部，  ２１３  記憶部，  ２１４  温度情報送受信制御部，  ２１５  温度管理テーブル，  ２１６  温度異常対応処理制御部，  ２３１  記憶部，  ２３２  温度情報送受信制御部，  ２３３  温度管理テーブル，  ２３４  温度異常対応処理制御部，  ２５１  温度情報送受信制御部，  ２５２  温度異常対応処理制御部，  ３０１  情報処理装置，  ３１１  情報処理コントローラ，  ３２１  電力測定部，  ３３１  電力管理処理部，  ３５１  電力情報取得部，  ３５２  割り込み制御部，  ３５４  電力管理テーブル，  ３５５  電力上昇検出部，  ３５６  電力異常対応処理部，  ３５７  論理スレッド管理処理部，  ３５８  電力管理情報送受信制御部，  ３７１  記憶部，  ３７２  電力管理情報送受信制御部，  ３７３  電力管理テーブル，  ３７４  電力異常対応処理制御部，  ３９１  電力管理情報送受信制御部，  ３９２  電力異常対応処理制御部，  ４０１  情報処理装置，  ４１１  情報処理コントローラ，  ４２１  温度電力管理処理部，  ４５１  温度・電力情報取得部，  ４５２  温度・電力管理テーブル，  ４５３  異常検出部，  ４５５  異常対応処理制御部  ４５６  温度・電力管理情報送受信制御部，  ４５７  論理スレッド管理処理部
【図１】
2006018758.tif 000003
【図２】
2006018758.tif 000004
【図３】
2006018758.tif 000005
【図４】
2006018758.tif 000006
【図５】
2006018758.tif 000007
【図６】
2006018758.tif 000008
【図７】
2006018758.tif 000009
【図８】
2006018758.tif 000010
【図９】
2006018758.tif 000011
【図１０】
2006018758.tif 000012
【図１１】
2006018758.tif 000013
【図１２】
2006018758.tif 000014
【図１３】
2006018758.tif 000015
【図１４】
2006018758.tif 000016
【図１５】
2006018758.tif 000017
【図１６】
2006018758.tif 000018
【図１７】
2006018758.tif 000019
【図１８】
2006018758.tif 000020
【図１９】
2006018758.tif 000021
【図２０】
2006018758.tif 000022
【図２１】
2006018758.tif 000023
【図２２】
2006018758.tif 000024
【図２３】
2006018758.tif 000025
【図２４】
2006018758.tif 000026
【図２５】
2006018758.tif 000027
【図２６】
2006018758.tif 000028
【図２７】
2006018758.tif 000029
【図２８】
2006018758.tif 000030
【図２９】
2006018758.tif 000031
【図３０】
2006018758.tif 000032
【図３１】
2006018758.tif 000033
【図３２】
2006018758.tif 000034
【図３３】
2006018758.tif 000035
【図３４】
2006018758.tif 000036
【図３５】
2006018758.tif 000037
【図３６】
2006018758.tif 000038
【図３７】
2006018758.tif 000039
【図３８】
2006018758.tif 000040
【図３９】
2006018758.tif 000041
【図４０】
2006018758.tif 000042
【図４１】
2006018758.tif 000043
【図４２】
2006018758.tif 000044
【図４３】
2006018758.tif 000045
【図４４】
2006018758.tif 000046
【図４５】
2006018758.tif 000047
【図４６】
2006018758.tif 000048
【図４７】
2006018758.tif 000049
【図４８】
2006018758.tif 000050
【図４９】
2006018758.tif 000051
【図５０】
2006018758.tif 000052
【図５１】
2006018758.tif 000053
【図５２】
2006018758.tif 000054
【図５３】
2006018758.tif 000055
【図５４】
2006018758.tif 000056
【図５５】
2006018758.tif 000057
【図５６】
2006018758.tif 000058
【図５７】
2006018758.tif 000059
【図５８】
2006018758.tif 000060
【図５９】
2006018758.tif 000061
【図６０】
2006018758.tif 000062