(57)【要約】【課題】  異常を発生したサブプロセッサが実行している論理スレッドで設定された異常発生対応動作を実行させる。【解決手段】  ステップＳ３１で、いずれかのサブプロセッサで異常が発生したことの通知を受けたと判断された場合、ステップＳ３２で、異常が発生したサブプロセッサを特定するためのサブプロセッサＩＤが取得され、ステップＳ３３で、異常が検出されたサブプロセッサが実行している論理スレッドＩＤが取得され、ステップＳ３４で、対応する論理スレッドで設定されている異常時対応動作ＩＤが取得される。ステップＳ３５で、全体管理情報テーブルおよび論理スレッド管理テーブルの内容が更新される。ステップＳ３６で、異常時対応動作ＩＤに基づいた、「停止」、「リソース確保後続行」、「時分割動作続行」、「強制続行」、「正常復帰待機」のうちのいずれかの処理が実行される。【選択図】図１１
2005346328.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４４は、調べたアクセス要求元のサブプロセッサキーと、アクセス要求先であるメインメモリ１２のメモリロケーションに割り振られたアクセスキーとを比較して、２つのキーが一致した場合にのみ、サブプロセッサ４３から供給されたコマンドを実行する。
【００７５】
図４に示されるキー管理テーブルに記録されているキーマスクは、その任意のビットが“１”になることによって、そのキーマスクと関連付けられたサブプロセッサキーの対応するビットを“０”または“１”にすることができる。
【００７６】
例えば、サブプロセッサキーが“１０１０”であるとする。通常、このサブプロセッサキーによって“１０１０”のアクセスキーを持つサンドボックスへのアクセスだけが可能になる。しかし、このサブプロセッサキーと関連付けられたキーマスクが“０００１”に設定されている場合には、キーマスクのビットが“１”に設定された桁のみにつき、サブプロセッサキーとアクセスキーとの一致判定がマスクされ（キーマスクのビットが“１”に設定された桁について、判定されず）、このサブプロセッサキー“１０１０”によってアクセスキーが“１０１０”または“１０１１”のいずれかであるアクセスキーを持つサンドボックスへのアクセスが可能となる。
【００７７】
以上のようにして、メインメモリ１２のサンドボックスの排他性が実現される。すなわち、複数のサブプロセッサ４３によってデータを多段階に処理する必要がある場合、以上のように構成することによって、前段階の処理を行うサブプロセッサ４３と、後段階の処理を行うサブプロセッサ４３のみが、メインメモリ１２の所定のアドレスにアクセスできるようになり、データを保護することができる。
【００７８】
例えば、キーマスクの値は、以下のように変更されることが考えられる。まず、情報処理装置１の起動直後においては、キーマスクの値は全て“０”である。メインプロセッサ４２にロードされたプログラムが実行され、サブプロセッサ４３にロードされたプログラムと連携動作するものとする。サブプロセッサ４３−１により出力された処理結果データを、メインメモリ１２に記憶させ、メインメモリ１２に記憶させた処理結果データを、サブプロセッサ４３−２に入力したいときには、サブプロセッサ４３−１により出力された処理結果データを記憶しているメインメモリ１２の領域は、サブプロセッサ４３−１およびサブプロセッサ４３−２からアクセス可能である必要がある。そのような場合に、メインプロセッサ４２は、キーマスクの値を適切に変更し、複数のサブプロセッサ４３からアクセスできるメインメモリの領域を設けることにより、サブプロセッサ４３による多段階的の処理を可能にする。
【００７９】
より具体的には、例えば、情報処理装置３−１乃至情報処理装置３−ｎから送信されてきたデータを基に、サブプロセッサ４３−１が所定の処理実行し、処理が施されたデータをメインメモリ１２の第１の領域に記憶させる。そして、サブプロセッサ４３−２は、メインメモリ１２の第１の領域から、記憶されているデータを読み出し、読み出したデータを基に、所定の処理を実行し、処理が施されたデータをメインメモリ１２の第１の領域とは、異なる第２の領域に記憶させる。
【００８０】
ここで、サブプロセッサ４３−１のサブプロセッサキーが“０１００”であり、メインメモリ１２の第１の領域のアクセスキーが“０１００”であり、サブプロセッサ４３−２のサブプロセッサキーが“０１０１”であり、メインメモリ１２の第２の領域のアクセスキーが“０１０１”である場合、サブプロセッサ４３−２は、メインメモリ１２の第１の領域にアクセスすることができない。そこで、サブプロセッサ４３−２のキーマスクを“０００１”にすることによって、サブプロセッサ４３−２は、メインメモリ１２の第１の領域にアクセスすることができるようになる。
【００８１】
次に、図５および図６を参照して、情報処理装置１がソフトウェアセルを生成し、生成したソフトウェアセルを基に、情報処理装置３−１乃至情報処理装置３−ｎに分散処理を実行させる場合の処理について説明する。
【００８２】
情報処理装置１のメインプロセッサ４２は、処理を実行するために必要なコマンド、プログラム、およびデータを含むソフトウェアセルを生成し、ネットワーク２を介して情報処理装置３−１乃至情報処理装置３−ｎあてに送信する。
【００８３】
図５は、ソフトウェアセルの構成の例を示す図である。
【００８４】
ソフトウェアセルは、送信元ＩＤ、送信先ＩＤ、応答先ＩＤ、セルインターフェース、DMAコマンド、プログラム、およびデータを含むように構成される。
【００８５】
送信元ＩＤには、ソフトウェアセルの送信元である情報処理装置１のネットワークアドレスおよび情報処理装置１の情報処理コントローラ１１の装置ＩＤ、更に、情報処理装置１の情報処理コントローラ１１が備えるメインプロセッサ４２およびサブプロセッサ４３の識別子（メインプロセッサＩＤおよびサブプロセッサＩＤ）が含まれる。
【００８６】
送信先ＩＤには、ソフトウェアセルの送信先である情報処理装置３−１乃至情報処理装置３−ｎのネットワークアドレス、情報処理装置３−１乃至情報処理装置３−ｎの情報処理コントローラの装置ＩＤ、および情報処理装置３−１乃至情報処理装置３−ｎの情報処理コントローラが備えるメインプロセッサおよびサブプロセッサの識別子が含まれる。
【００８７】
また、応答先ＩＤには、ソフトウェアセルの実行結果の応答先である情報処理装置１のネットワークアドレス、情報処理装置１の情報処理コントローラ１１の装置ＩＤ、および情報処理コントローラ１１が備えるメインプロセッサ４２およびサブプロセッサ４３の識別子が含まれる。
【００８８】
セルインターフェースは、ソフトウェアセルの利用に必要な情報であり、グローバルＩＤ、必要なサブプロセッサの情報、サンドボックスサイズ、および前回のソフトウェアセルＩＤから構成される。
【００８９】
グローバルＩＤは、ネットワーク２全体を通してソフトウェアセルを一意的に識別できるものであり、送信元ＩＤ、およびソフトウェアセルの生成または送信の日時（日付および時刻）を基に、生成される。
【００９０】
必要なサブプロセッサの情報には、ソフトウェアセルの実行に必要なサブプロセッサの数などが設定される。サンドボックスサイズには、ソフトウェアセルの実行に必要なメインメモリおよびサブプロセッサのローカルストレージのメモリ量が設定される。
【００９１】
前回のソフトウェアセルＩＤは、ストリーミングデータなどのシーケンシャルな実行を要求する１つのグループを構成するソフトウェアセル内の、前回のソフトウェアセルの識別子である。
【００９２】
ソフトウェアセルの実行セクションは、DMAコマンド、プログラムおよびデータから構成される。DMAコマンドには、プログラムの起動に必要な一連のDMAコマンドが含まれ、プログラムには、サブプロセッサによって実行されるサブプロセッサプログラムが含まれる。ここでのデータは、このサブプロセッサプログラムを含むプログラムによって処理されるデータである。
【００９３】
更に、DMAコマンドには、ロードコマンド、キックコマンド、機能プログラム実行コマンド、ステータス要求コマンド、およびステータス返信コマンドが含まれる。
【００９４】
ロードコマンドは、メインメモリが記憶している情報をサブプロセッサのローカルストレージにロードさせるコマンドであり、ロードコマンドのほかに、メインメモリアドレス、サブプロセッサＩＤおよびＬＳアドレスを含む。メインメモリアドレスは、情報のロード元であるメインメモリの所定の領域のアドレスを示す。サブプロセッサＩＤおよびＬＳアドレスは、情報のロード先であるサブプロセッサの識別子およびローカルストレージのアドレスを示す。
【００９５】
キックコマンドは、プログラムの実行を開始するコマンドであり、キックコマンドのほかに、サブプロセッサＩＤおよびプログラムカウンタを含む。サブプロセッサＩＤは、キック対象のサブプロセッサを識別し、プログラムカウンタは、プログラム実行用プログラムカウンタのためのアドレスを与える。
【００９６】
機能プログラム実行コマンドは、ある装置（例えば、情報処理装置１）が他の装置（例えば、情報処理装置３−１乃至情報処理装置３−ｎのうちのいずれか）に対して、機能プログラムの実行を要求するコマンドである。機能プログラム実行コマンドを受信した装置（例えば、情報処理装置３−１乃至情報処理装置３−ｎのうちのいずれか）の情報処理コントローラは、機能プログラムＩＤによって、起動すべき機能プログラムを識別する。
【００９７】
ステータス要求コマンドは、送信先ＩＤで示される情報処理装置３−１乃至情報処理装置３−ｎの現在の動作状態（状況）に関する装置情報を、応答先ＩＤで示される情報処理装置１あてに送信要求するコマンドである。
【００９８】
ステータス返信コマンドは、ステータス要求コマンドを受信した情報処理装置３−１乃至情報処理装置３−ｎが、装置情報をステータス要求コマンドに含まれる応答先ＩＤで示される情報処理装置１に応答するコマンドである。ステータス返信コマンドは、実行セクションのデータ領域に装置情報を格納する。
【００９９】
図６は、DMAコマンドがステータス返信コマンドである場合におけるソフトウェアセルのデータ領域の構造を示す図である。
【０１００】
装置ＩＤは、情報処理コントローラを備える情報処理装置３−１乃至情報処理装置３−ｎを識別するための識別子であり、ステータス返信コマンドを送信する情報処理装置３−１乃至情報処理装置３−ｎのＩＤを示す。装置ＩＤは、例えば、装置の電源をオンしたとき、情報処理装置３−１乃至情報処理装置３−ｎの情報処理コントローラに含まれるメインプロセッサによって、装置の電源をオンしたときの日時、情報処理装置３−１乃至情報処理装置３−ｎのネットワークアドレスおよび情報処理装置３−１乃至情報処理装置３−ｎの情報処理コントローラに含まれるサブプロセッサの数などに基づいて生成される。
【０１０１】
装置種別ＩＤには、情報処理装置３−１乃至情報処理装置３−ｎの特徴を表す値が含まれる。情報処理装置３−１乃至情報処理装置３−ｎの特徴とは、情報処理装置３−１乃至情報処理装置３−ｎがどのような装置であるかを示す情報であり、例えば、情報処理装置３−１乃至情報処理装置３−ｎが、ハードディスクレコーダ、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)（商標）を含む）、もしくは半導体メモリ６４などよりなるパッケージメディアなどにより構成される。
【０２４１】
また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０２４２】
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【図面の簡単な説明】
【０２４３】
【図１】本発明を適用した通信システムの一実施の形態を示す図である。
【図２】メインメモリを説明する図である。
【図３】サブプロセッサのローカルストレージを説明する図である。
【図４】キー管理テーブルを説明する図である。
【図５】ソフトウェアセルの構成の例を示す図である。
【図６】DMAコマンドがステータス返信コマンドである場合におけるソフトウェアセルのデータ領域の構造を示す図である。
【図７】情報処理装置の機能の構成を示すブロック図である。
【図８】全体管理情報テーブルについて説明するための図である。
【図９】論理スレッド管理情報テーブルについて説明するための図である。
【図１０】論理スレッドの処理の実行について説明するためのアローチャートである。
【図１１】異常発生時の処理について説明するための図である。
【図１２】異常発生時に「停止」される場合の処理について説明するためのアローチャートである。
【図１３】異常発生時に「リソース確保後続行」される場合の処理について説明するためのアローチャートである。
【図１４】異常発生時に「時分割動作続行」される場合の処理について説明するためのアローチャートである。
【図１５】異常発生時に「時分割動作続行」される場合の処理について説明するためのアローチャートである。
【図１６】異常発生時に「強制続行」される場合の処理について説明するためのアローチャートである。
【図１７】異常発生時に「正常復帰待機」される場合の処理について説明するためのアローチャートである。
【図１８】異常発生時に「正常復帰待機」される場合の処理について説明するためのアローチャートである。
【符号の説明】
【０２４４】
１  情報処理装置，  ２  ネットワーク，  ３  情報処理装置，  １１  情報処理コントローラ，  １２  メインメモリ，  １５  操作入力部，  １６  通信部，  ４２  メインプロセッサ，  ４３  サブプロセッサ，  ４７  異常検出部，  ４８  異常制御部，  ５１  ローカルストレージ，  １０１  アプリケーションプログラム実行制御部，  １０２  スレッドリソースコントローラ，  １０３  異常通知取得部，  １０４  論理スレッドスケジューラ，  １０５  論理スレッド実行制御部
【図１】
2005346328.tif 000003
【図２】
2005346328.tif 000004
【図３】
2005346328.tif 000005
【図４】
2005346328.tif 000006
【図５】
2005346328.tif 000007
【図６】
2005346328.tif 000008
【図７】
2005346328.tif 000009
【図８】
2005346328.tif 000010
【図９】
2005346328.tif 000011
【図１０】
2005346328.tif 000012
【図１１】
2005346328.tif 000013
【図１２】
2005346328.tif 000014
【図１３】
2005346328.tif 000015
【図１４】
2005346328.tif 000016
【図１５】
2005346328.tif 000017
【図１６】
2005346328.tif 000018
【図１７】
2005346328.tif 000019
【図１８】
2005346328.tif 000020