JP4315057B2 - 情報処理装置および情報処理方法、並びに、プログラム - Google Patents

情報処理装置および情報処理方法、並びに、プログラム Download PDF

Info

Publication number
JP4315057B2
JP4315057B2 JP2004164089A JP2004164089A JP4315057B2 JP 4315057 B2 JP4315057 B2 JP 4315057B2 JP 2004164089 A JP2004164089 A JP 2004164089A JP 2004164089 A JP2004164089 A JP 2004164089A JP 4315057 B2 JP4315057 B2 JP 4315057B2
Authority
JP
Japan
Prior art keywords
processing
information
abnormality
sub
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004164089A
Other languages
English (en)
Other versions
JP2005346328A (ja
Inventor
直樹 大出
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2004164089A priority Critical patent/JP4315057B2/ja
Priority to EP05252978A priority patent/EP1624375A3/en
Priority to US11/134,764 priority patent/US20050283673A1/en
Publication of JP2005346328A publication Critical patent/JP2005346328A/ja
Application granted granted Critical
Publication of JP4315057B2 publication Critical patent/JP4315057B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2025Failover techniques using centralised failover control functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2051Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant in regular structures

Description

本発明は、情報処理装置および情報処理方法、並びに、プログラムに関し、特に、複数のプロセッサによる分散処理が実行される場合に用いて好適な、情報処理装置および情報処理方法、並びに、プログラムに関する。
近年、複数のプロセッサまたはコンピュータを用いて、処理を分散して実行させる、分散処理が注目されている。分散処理を行う方法としては、通信網を介して接続されている複数のコンピュータに処理を実行させる方法、1つのコンピュータに設けられた、複数のプロセッサに処理を実行させる方法、および上述した2つの方法を組み合わせて処理を実行させる方法がある。
分散処理の実行を要求(指示)する装置、または、プロセッサは、分散処理を実行するために必要なデータおよびプログラムを、分散処理を実行させる他の装置、または、他のプロセッサあてに送信する。分散処理を実行するために必要なデータおよびプログラムを受信した装置、または、プロセッサは、要求された処理を実行し、要求された処理を施したデータを、分散処理の要求元である装置、または、プロセッサあてに送信する。
分散処理の要求元である装置、または、プロセッサは、分散処理を実行させる他の装置、または、他のプロセッサから送信されてきたデータを受信し、受信したデータを基に、所定の処理を行うか、受信したデータを記録する。
従来、上述したように、均一なモジュラー構造、共通のコンピューティング・モジュール、および均一なソフトウェアセルを用いて分散処理を実行させることによって、高速処理用コンピュータ・アーキテクチャを実現する技術がある(例えば、特許文献1乃至特許文献5)
特開2002−342165号公報 特開2002−351850号公報 特開2002−358289号公報 特開2002−366533号公報 特開2002−366534号公報
上述した特許文献において、基本となる処理用モジュールはプロセッサ・エレメント(PE)である。PEは、処理ユニット(PU)、ダイレクト・メモリ・アクセス・コントローラ(DMAC)および複数の付加処理ユニット(APU)、すなわち、メインプロセッサに対する複数のサブプロセッサを具備するようになされている。
しかしながら、従来の複数サブプロセッサを管理する方式において、それぞれのサブプロセッサに独立したプログラムを実行させ、論理的に1つの機能(論理スレッド)として結果を求める場合、論理スレッドを実行している複数のサブプロセッサのうちの1つのサブプロセッサが何らかの要因で止まってしまうと、論理スレッドの全ての機能が停止してしまっていた。そして、論理スレッドの機能が停止してしまった場合、その論理スレッドを利用しているアプリケーションは、再度、論理スレッドの利用条件をリクエストして、論理スレッドの機能の再開を要求し、対応するプログラムを、停止していないサブプロセッサにロードさせて実行させるという煩雑な処理を経て、論理スレッドを再開させる必要があった。
本発明はこのような状況に鑑みてなされたものであり、論理スレッドを実行中のいずれかのサブプロセッサが異常な状態に陥っても、論理スレッドとして動作している機能を正常な状態に保つことができるように、論理スレッドの機能を必要に応じて停止させるか、または、必ずしも停止させることなく、論理スレッドとして動作している機能を正常な状態に保つことができ、煩雑な処理を行うことなしに、必要に応じて、論理スレッドを再開することができるようにするものである。
本発明の情報処理装置は、第1の情報処理手段と、複数の第2の情報処理手段と、第2の情報処理手段の異常を検出する異常検出手段とを備え、第1の情報処理手段は、アプリケーションプログラムの実行を制御するアプリケーションプログラム実行制御手段と、アプリケーションプログラム実行制御手段の処理により実行が制御されるアプリケーションプログラムによって、複数の第2の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、処理単位に対応する機能を提供するための分散処理を制御する分散処理制御手段と、異常検出手段により検出された第2の情報処理手段の異常に関する第1の情報を取得する異常情報取得手段とを備え、分散処理制御手段は、処理単位に依存して設定される、異常検出手段により第2の情報処理手段の異常が検出された場合の動作を示す第2の情報を記憶し、異常情報取得手段により、第1の情報が取得された場合、第2の情報を基に、処理単位に対応する分散処理を制御することを特徴とする。
第2の情報に示される、異常が検出された場合の動作には、処理単位に対応する全ての分散処理を停止させる動作が含まれるものとすることができる。
第2の情報に示される、異常が検出された場合の動作には、処理単位に対応する全ての分散処理を一旦停止させた後、異常検出手段により異常が検出された第2の情報処理手段が実行していた分散処理を、処理単位に対応する分散処理を実行していなかった第2の情報処理手段に実行させるものとして、処理単位に対応する分散処理を再開させる動作が含まれるものとすることができる。
第2の情報に示される、異常が検出された場合の動作には、異常検出手段により異常が検出された第2の情報処理手段が実行していた処理単位に対応する分散処理を停止させ、処理単位に対応する分散処理を実行していた異常が発生していない第2の情報処理手段が実行していた分散処理を継続させる動作が含まれるものとすることができる。
第2の情報に示される、異常が検出された場合の動作には、処理単位に対応する全ての分散処理を一旦停止させ、異常検出手段により異常が検出された第2の情報処理手段が動作可能な状態になった後、処理単位に対応する分散処理を、処理の一旦停止前に分散処理を実行していた複数の第2の情報処理手段に実行させるものとして、処理単位に対応する分散処理を再開させる動作が含まれるものとすることができる。
第2の情報に示される、異常が検出された場合の動作には、処理単位に対応する全ての分散処理を一旦停止させた後、処理単位に対応する分散処理を実行していた異常が発生していない第2の情報処理手段に、処理の一旦停止前に実行していた第1の分散処理とともに、異常検出手段により異常が検出された第2の情報処理手段が実行していた第2の分散処理を、時分割で実行させるものとして、処理単位に対応する分散処理を再開させる動作が含まれるものとすることができる。
第1の情報処理手段には、第2の情報処理装置のうちのいずれか1つに、第1の分散処理と第2の分散処理を時分割で実行させる場合の時分割処理を制御する時分割処理制御手段を更に備えさせるようにすることができる。
本発明の情報処理方法は、第1の情報処理手段と、複数の第2の情報処理手段とを備える情報処理装置の情報処理方法であって、第1の情報処理手段によるアプリケーションプログラムの実行によって、複数の第2の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、処理単位に対応する機能を提供するための分散処理の開始を要求する分散処理開始要求ステップと、分散処理を実行している第2の情報処理手段の異常を検出する異常検出ステップと、異常検出ステップの処理により検出された第2の情報処理手段の異常に関する第1の情報を取得する異常情報取得ステップと、異常情報取得ステップの処理により、第1の情報が取得された場合、処理単位に依存して設定される、異常が検出された場合の動作を示す第2の情報を取得する異常動作情報取得ステップと、異常動作情報取得ステップの処理により取得された第2の情報を基に、処理単位に対応する分散処理を制御する分散処理制御ステップとを含むことを特徴とする。
本発明のプログラムは、第1の情報処理手段によるアプリケーションプログラムの実行によって、複数の第2の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、処理単位に対応する機能を提供するための分散処理の開始を要求する分散処理開始要求ステップと、分散処理を実行している第2の情報処理手段のうちのいずれかの異常に関する第1の情報を取得する異常情報取得ステップと、異常情報取得ステップの処理により、第1の情報が取得された場合、処理単位に依存して設定される、異常が検出された場合の動作を示す第2の情報を取得する異常動作情報取得ステップと、異常動作情報取得ステップの処理により取得された第2の情報を基に、処理単位に対応する分散処理を制御する分散処理制御ステップとを含むことを特徴とする。
本発明の情報処理装置および情報処理方法、並びに、プログラムにおいては、第1の情報処理手段によるアプリケーションプログラムの実行によって、複数の第2の情報処理手段に割り当てられる複数の処理が、まとめて一つの機能を提供する処理単位とされて、処理単位に対応する機能を提供するための分散処理の、第2の情報処理手段における実行が制御され、分散処理を実行している第2の情報処理手段のうちのいずれかの異常に関する第1の情報が取得され、処理単位に依存して設定される、異常が検出された場合の動作を示す第2の情報が取得されて、第2の情報を基に、処理単位に対応する分散処理が制御される。
本発明によると、分散処理を実行させることができる。特に、論理スレッドの機能を必要に応じて停止させるか、または、必ずしも停止させることなく、論理スレッドとして動作している機能を正常な状態に保つことができ、煩雑な処理を行うことなしに、必要に応じて、論理スレッドを再開させることができる。
以下に本発明の実施の形態を説明するが、本明細書に記載の発明と、発明の実施の形態との対応関係を例示すると、次のようになる。この記載は、本明細書に記載されている発明をサポートする実施の形態が、本明細書に記載されていることを確認するためのものである。したがって、発明の実施の形態中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
更に、この記載は、本明細書に記載されている発明の全てを意味するものでもない。換言すれば、この記載は、本明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現、追加される発明の存在を否定するものではない。
請求項1に記載の情報処理装置(例えば、図1の情報処理装置1)は、第1の情報処理手段(例えば、図1のメインプロセッサ42)と、複数の第2の情報処理手段(例えば、図1のサブプロセッサ43-1乃至サブプロセッサ43-3)と、第2の情報処理手段の異常を検出する異常検出手段(例えば、図1の異常検出部47-1乃至47-3)とを備え、第1の情報処理手段は、アプリケーションプログラムの実行を制御するアプリケーションプログラム実行制御手段(例えば、図7のアプリケーションプログラム実行制御部101)と、アプリケーションプログラム実行制御手段の処理により実行が制御されるアプリケーションプログラムによって、複数の第2の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位(例えば、論理スレッド)とし、処理単位に対応する機能を提供するための分散処理を制御する分散処理制御手段(例えば、図7のスレッドリソースコントローラ102)と、異常検出手段により検出された第2の情報処理手段の異常に関する第1の情報を取得する異常情報取得手段(例えば、図7の異常通知取得部103)とを備え、分散処理制御手段は、処理単位に依存して設定される、異常検出手段により第2の情報処理手段の異常が検出された場合の動作を示す第2の情報(例えば、図9の異常時対応動作ID)を記憶し、異常情報取得手段により、第1の情報が取得された場合、第2の情報を基に、処理単位に対応する分散処理を制御することを特徴とする。
第2の情報に示される、異常が検出された場合の動作には、処理単位に対応する全ての分散処理を停止させる動作(例えば、図12を用いて説明した動作)が含まれるものとすることができる。
第2の情報に示される、異常が検出された場合の動作には、処理単位に対応する全ての分散処理を一旦停止させた後、異常検出手段により異常が検出された第2の情報処理手段(例えば、図13におけるサブプロセッサ43−2)が実行していた分散処理を、処理単位に対応する分散処理を実行していなかった第2の情報処理手段(例えば、図13におけるサブプロセッサ43−3)に実行させるものとして、処理単位に対応する分散処理を再開させる動作(例えば、図13を用いて説明した動作)が含まれるものとすることができる。
第2の情報に示される、異常が検出された場合の動作には、異常検出手段により異常が検出された第2の情報処理手段(例えば、図16におけるサブプロセッサ43−2)が実行していた処理単位に対応する分散処理を停止させ、処理単位に対応する分散処理を実行していた異常が発生していない第2の情報処理手段(例えば、図16におけるサブプロセッサ43−1)が実行していた分散処理を継続させる動作(例えば、図16を用いて説明した動作)が含まれるものとすることができる。
第2の情報に示される、異常が検出された場合の動作には、処理単位に対応する全ての分散処理を一旦停止させ、異常検出手段により異常が検出された第2の情報処理手段(例えば、図17および図18におけるサブプロセッサ43−2)が動作可能な状態になった後、処理単位に対応する分散処理を、処理の一旦停止前に分散処理を実行していた複数の第2の情報処理手段(例えば、図17および図18におけるサブプロセッサ43−1およびサブプロセッサ43−2)に実行させるものとして、処理単位に対応する分散処理を再開させる動作(例えば、図17および図18を用いて説明した動作)が含まれるものとすることができる。
第2の情報に示される、異常が検出された場合の動作には、処理単位に対応する全ての分散処理を一旦停止させた後、処理単位に対応する分散処理を実行していた異常が発生していない第2の情報処理手段(例えば、図14および図15におけるサブプロセッサ43−1)に、処理の一旦停止前に実行していた第1の分散処理とともに、異常検出手段により異常が検出された第2の情報処理手段(例えば、図14および図15におけるサブプロセッサ43−2)が実行していた第2の分散処理を、時分割で実行させるものとして、処理単位に対応する分散処理を再開させる動作(例えば、図14および図15を用いて説明した動作)が含まれるものとすることができる。
第1の情報処理手段は、第2の情報処理装置のうちのいずれか1つに、第1の分散処理と第2の分散処理を時分割で実行させる場合の時分割処理を制御する時分割処理制御手段(たとえば、図7の論理スレッドスケジューラ104)を更に備えることができる。
請求項8に記載の情報処理方法は、第1の情報処理手段(例えば、図1のメインプロセッサ42)と、複数の第2の情報処理手段(例えば、図1のサブプロセッサ43-1乃至サブプロセッサ43-3)とを備える情報処理装置(例えば、図1の情報処理装置1)の情報処理方法は、第1の情報処理手段によるアプリケーションプログラムの実行によって、複数の第2の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位(例えば、論理スレッド)とし、処理単位に対応する機能を提供するための分散処理の開始を要求する分散処理開始要求ステップ(例えば、図10のステップS1、図12のステップS51、図13のステップS81、図14のステップS121、図16のステップS171、図17のステップS201)と、分散処理を実行している第2の情報処理手段の異常を検出する異常検出ステップ(例えば、図12のステップS57、図13のステップS87、図14のステップS127、図16のステップS177、図17のステップS207)と、異常検出ステップの処理により検出された第2の情報処理手段の異常に関する第1の情報を取得する異常情報取得ステップ(例えば、図11のステップS31、図12のステップS60、図13のステップS90、図14のステップS130、図16のステップS180、図17のステップS210)と、異常情報取得ステップの処理により、第1の情報が取得された場合、処理単位に依存して設定される、異常が検出された場合の動作を示す第2の情報(例えば、図9の異常時対応動作ID)を取得する異常動作情報取得ステップ(例えば、図11のステップS34)と、異常動作情報取得ステップの処理により取得された第2の情報を基に、処理単位に対応する分散処理を制御する分散処理制御ステップ(例えば、図11のステップS36)とを含むことを特徴とする。
請求項9に記載のプログラムは、第1の情報処理手段(例えば、図1のメインプロセッサ42)と、複数の第2の情報処理手段(例えば、図1のサブプロセッサ43-1乃至サブプロセッサ43-3)とにおける分散処理を制御するコンピュータが実行可能なプログラムであって、第1の情報処理手段によるアプリケーションプログラムの実行によって、複数の第2の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位(例えば、論理スレッド)とし、処理単位に対応する機能を提供するための分散処理の開始を要求する分散処理開始要求ステップ(例えば、図10のステップS1、図12のステップS51、図13のステップS81、図14のステップS121、図16のステップS171、図17のステップS201)と、分散処理を実行している第2の情報処理手段のうちのいずれかの異常に関する第1の情報を取得する異常情報取得ステップ(例えば、図11のステップS31、図12のステップS60、図13のステップS90、図14のステップS130、図16のステップS180、図17のステップS210)と、異常情報取得ステップの処理により、第1の情報が取得された場合、処理単位に依存して設定される、異常が検出された場合の動作を示す第2の情報(例えば、図9の異常時対応動作ID)を取得する異常動作情報取得ステップ(例えば、図11のステップS34)と、異常動作情報取得ステップの処理により取得された第2の情報を基に、処理単位に対応する分散処理を制御する分散処理制御ステップ(例えば、図11のステップS36)とを含むことを特徴とする処理をコンピュータに実行させる。
以下、図を参照して、本発明の実施の形態について説明する。
図1は、本発明を適用した通信システムの一実施の形態を示す図である。この通信システムにおいては、例えば、ホームネットワーク、LAN(Local Area Network),WAN(Wide Area Network),または、インターネットなどの広域ネットワークなどに対応するネットワーク2を介して、情報処理装置1と、情報処理装置3−1乃至情報処理装置3−nとが相互に接続されている。
情報処理装置1は、複数の情報処理装置による分散処理の実行を指示されると、要求された処理を実行するために必要なデータおよびプログラムを含むソフトウェアセルを生成し、生成したソフトウェアセルを、ネットワーク2を介して、情報処理装置3−1乃至情報処理装置3−nのうちのいずれかの装置あてに送信する。
情報処理装置3−1乃至情報処理装置3−nは、それぞれ、情報処理装置1から送信されてきたソフトウェアセルを受信し、受信したソフトウェアセルを基に、要求された処理を実行する。情報処理装置3−1乃至情報処理装置3−nは、それぞれ、要求された処理を実行してから、要求された処理の結果得られたデータを、ネットワーク2を介して情報処理装置1あてに送信する。以下、情報処理装置3−1乃至情報処理装置3−nを個々に区別する必要のないとき、単に情報処理装置3と称する。
情報処理装置1は、情報処理装置3−1乃至情報処理装置3−nのうちのいずれかから送信されてきたデータを受信し、受信したデータを基に、所定の処理を実行するか、受信したデータを記録する。
情報処理装置1は、情報処理コントローラ11、メインメモリ12、記録部13−1、記録部13−2、バス14、操作入力部15、通信部16、表示部17、およびドライブ18を含むように構成される。
情報処理コントローラ11は、メインメモリ12に記録されている各種のプログラムを実行し、情報処理装置1全体を制御する。情報処理コントローラ11は、ソフトウェアセルを生成し、生成したソフトウェアセルを、バス14を介して、通信部16に供給する。情報処理コントローラ11は、通信部16から供給されたデータを記録部13−1または記録部13−2に供給する。情報処理コントローラ11は、操作入力部15から入力されるユーザの指令に基づいて、指定されたデータを、メインメモリ12、記録部13−1または記録部13−2から取得し、取得したデータを、バス14を介して通信部16に供給する。
また、情報処理コントローラ11には、情報処理装置1を、ネットワーク2全体を通して一意的に特定できる装置IDが割り当てられている。
情報処理コントローラ11は、バス41、メインプロセッサ42、サブプロセッサ43−1乃至サブプロセッサ43−3、DMAC(Direct Memory Access Controller)44、キー管理テーブル記録部45、およびDC(Disk Controller)46を備えている。
メインプロセッサ42、サブプロセッサ43−1乃至サブプロセッサ43−3、DMAC44、キー管理テーブル記録部45、およびDC46は、バス41を介して、相互に接続されている。また、メインプロセッサ42には、メインプロセッサ42を特定するためのメインプロセッサIDが識別子として割り当てられる。同様に、サブプロセッサ43−1乃至サブプロセッサ43−3のそれぞれには、サブプロセッサ43−1乃至サブプロセッサ43−3のそれぞれを特定するためのサブプロセッサIDのそれぞれが識別子として割り当てられる。
メインプロセッサ42は、ネットワーク2を介して接続されている、情報処理装置3−1乃至情報処理装置3−nに分散処理を実行させる場合、ソフトウェアセルを生成し、生成したソフトウェアセルをバス41およびバス14を介して、通信部16に供給する。また、メインプロセッサ42は、管理のためのプログラム以外のプログラムを実行するように構成することもできる。この場合、メインプロセッサ42は、サブプロセッサとして機能する。
メインプロセッサ42は、サブプロセッサ43−1乃至サブプロセッサ43−3に対して、それぞれのサブプロセッサに独立したプログラムを実行させ、論理的に1つの機能(論理スレッド)として結果を求めるようにすることができる。すなわち、メインプロセッサ42は、サブプロセッサ43−1乃至サブプロセッサ43−3によるプログラムの実行のスケジュール管理および情報処理コントローラ11(情報処理装置1)の全体の管理を行う。
メインプロセッサ42は、ローカルストレージ51−1を備え、メインメモリ12からロードしたデータおよびプログラムを、ローカルストレージ51−1に一時的に記憶させる。メインプロセッサ42は、ローカルストレージ51−1からデータおよびプログラムを読み込み、読み込んだデータおよびプログラムを基に、各種の処理を実行する。
サブプロセッサ43−1乃至サブプロセッサ43−3は、メインプロセッサ42の制御に基づいて、並列的かつ独立に、プログラムを実行し、データを処理する。更に、必要に応じて、メインプロセッサ42が実行するプログラムが、サブプロセッサ43−1乃至サブプロセッサ43−3のそれぞれが実行するプログラムのそれぞれと連携して動作するように構成することも可能である。
サブプロセッサ43−1乃至サブプロセッサ43−3のそれぞれは、ローカルストレージ51−2乃至ローカルストレージ51−4のそれぞれを備える。サブプロセッサ43−1乃至サブプロセッサ43−3のそれぞれは、ローカルストレージ51−2乃至ローカルストレージ51−4のそれぞれに、必要に応じて、データおよびプログラムを一時的に記憶させる。サブプロセッサ43−1乃至サブプロセッサ43−3のそれぞれは、ローカルストレージ51−2乃至ローカルストレージ51−4のそれぞれからデータおよびプログラムを読み込み、読み込んだデータおよびプログラムを基に、各種の処理を実行する。
サブプロセッサ43−1乃至サブプロセッサ43−3には、それぞれ、異常検出部47−1乃至異常検出部47−3が接続されている。異常検出部47−1乃至異常検出部47−3は、対応するサブプロセッサ43−1乃至サブプロセッサ43−3の異常状態を検知し、異常制御部48に通知する。
以下、サブプロセッサ43−1乃至サブプロセッサ43−3のそれぞれを個々に区別する必要のないとき、単にサブプロセッサ43と称し、異常検出部47−1乃至47−3のそれぞれを個々に区別する必要のないとき、単に異常検出部47と称する。同様に、以下、ローカルストレージ51−1乃至ローカルストレージ51−4のそれぞれを個々に区別する必要のないとき、単にローカルストレージ51と称する。
また、図1においては、サブプロセッサ43が、サブプロセッサ43−1乃至サブプロセッサ43−3の3つ設けられている場合について説明したが、サブプロセッサ43は、3つ以外のいかなる数設けられていても良いことは言うまでもなく、更に、異常検出部47およびローカルストレージ51も、サブプロセッサ43が設けられている数に対応する数だけ設けられるようにしても良いことはいうまでもない。
DMAC44は、キー管理テーブル記録部45に記録されている、メインプロセッサキー、サブプロセッサキー、およびアクセスキーを基に、メインプロセッサ42およびサブプロセッサ43からのメインメモリ12に記憶されているプログラムおよびデータへのアクセスを管理する。
キー管理テーブル記録部45は、メインプロセッサキー、サブプロセッサキー、およびアクセスキーを記録している。なお、メインプロセッサキー、サブプロセッサキー、およびアクセスキーの詳細は後述する。
DC46は、メインプロセッサ42およびサブプロセッサ43からの記録部13−1および記録部13−2へのアクセスを管理する。
異常制御部48は、異常検出部47−1乃至47−3のうちのいずれかから、サブプロセッサ43−1乃至サブプロセッサ43−3のうちのいずれかに異常が発生したことの通知を受けたとき、異常が発生したサブプロセッサ43の動作を停止させるとともに、異常が発生したサブプロセッサ43に関する情報を、バス41を介して、メインプロセッサ42に供給する。
なお、異常制御部48が、サブプロセッサ43の異常を検出してその動作を停止させる場合の停止のための命令は、バス41を介さずにサブプロセッサ43に直接供給することができるようにしてもよい。
メインメモリ12は、例えば、RAMから構成される。メインメモリ12は、メインプロセッサ42およびサブプロセッサ43が実行する各種のプログラムおよびデータを一時的に記憶している。
記録部13−1および記録部13−2は、それぞれ、例えば、ハードディスクなどにより構成される。記録部13−1および記録部13−2は、メインプロセッサ42およびサブプロセッサ43が実行する各種のプログラムおよびデータを記録している。また、記録部13−1および記録部13−2は、情報処理コントローラ11から供給されたデータを記録する。以下、記録部13−1および記録部13−2を個々に区別する必要のないとき、単に記録部13と称する。
また、情報処理コントローラ11には、バス14を介して、操作入力部15、通信部16、表示部17、およびドライブ18が接続されている。操作入力部15は、例えば、キー、ボタン、タッチパッド、マウスなどよりなり、ユーザによる操作入力を受け、操作入力に対応する情報を、バス14を介して、情報処理コントローラ11に供給する。
通信部16は、情報処理コントローラ11から供給されたソフトウェアセルを、ネットワーク2を介して情報処理装置3−1乃至情報処理装置3−nあてに送信する。また、通信部16は、情報処理装置3−1乃至情報処理装置3−nから送信されてきたデータを、バス14を介して、情報処理コントローラ11に供給する。
表示部17は、例えば、CRT(cathode ray tube)やLCD(Liquid Crystal Display)などで構成されており、バス14を介して供給された情報処理コントローラ11の処理により生成された情報(例えば、アプリケーションプログラムの実行により生成されたデータや、アプリケーションプログラムの実行に必要なユーザへの通知などの情報を含む)を表示させる。
ドライブ18は、磁気ディスク61、光ディスク62、光磁気ディスク63、あるいは半導体メモリ64などが装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて、バス14を介して、情報処理コントローラ11に転送され、情報処理コントローラ11によって、記録部13に記録される。
なお、情報処理装置3−1乃至情報処理装置3−nは、情報処理装置1と同様に構成されるので、その説明は省略する。情報処理装置3−1乃至情報処理装置3−nは上述した構成に限らず、必要に応じて、機能を追加したり削除したりすることは可能であり、その機能に対応した構成をもつことが可能である。
次に、図2乃至図4を参照して、サブプロセッサ43がメインメモリ12にアクセスする場合の処理について説明する。
図2で示されるように、メインメモリ12には、複数のアドレスを指定できるメモリロケーションが配置される。各メモリロケーションに対しては、データの状態を示す情報を格納するための追加セグメントが割り振られる。追加セグメントは、F/Eビット、サブプロセッサIDおよびLSアドレス(ローカルストレージアドレス)を含む。また、各メモリロケーションには、後述するアクセスキーが割り振られる。
“0”であるF/Eビットは、サブプロセッサ43によって読み出されている処理中のデータ、または空き状態であるため最新データではない無効データであり、そのメモリロケーションから読み出し不可であることを示す。また、“0”であるF/Eビットは、そのメモリロケーションにデータ書き込み可能であることを示し、データが書き込まれると、F/Eビットは“1”に設定される。
“1”であるF/Eビットは、そのメモリロケーションのデータがサブプロセッサ43によって読み出されておらず、未処理の最新データであることを示す。F/Eビットが“1”であるメモリロケーションのデータは読み出し可能であり、サブプロセッサ43によって読み出されてから、F/Eビットは“0”に設定される。また、“1”であるF/Eビットは、メモリロケーションがデータ書き込み不可であることを示す。
更に、F/Eビットが“0”(読み出し不可/書き込み可)である状態において、メモリロケーションについて読み出し予約を設定することが可能である。F/Eビットが“0”であるメモリロケーションに対して読み出し予約を行う場合には、サブプロセッサ43は、読み出し予約を行うメモリロケーションの追加セグメントに、読み出し予約情報としてサブプロセッサ43のサブプロセッサIDおよびLSアドレスを書き込む。そして、データを書き込むサブプロセッサ43によって、読み出し予約されたメモリロケーションにデータが書き込まれ、F/Eビットが“1”(読み出し可/書き込み不可)に設定されたとき、予め読み出し予約情報として追加セグメントに書き込まれているサブプロセッサIDおよびLSアドレスによって特定されるローカルストレージ51に読み出される。
複数のサブプロセッサ43によってデータを多段階に処理する必要がある場合、このように各メモリロケーションのデータの読み出しおよび書き込みを制御することによって、前段階の処理を行うサブプロセッサ43が、処理済みのデータをメインメモリ12における所定のアドレスに書き込んだ後に即座に、後段階の処理を行う別のサブプロセッサ43が前処理後のデータを読み出すことが可能となる。
また、図3で示されるように、サブプロセッサ43のローカルストレージ51は、複数のアドレスを指定できるメモリロケーションによって構成される。各メモリロケーションに対しては、同様に追加セグメントが割り振られる。追加セグメントは、ビジービットを含む。
サブプロセッサ43がメインメモリ12に記憶されているデータをサブプロセッサ43のローカルストレージ51のメモリロケーションに読み出すときには、対応するビジービットを“1”に設定して予約する。ビジービットが“1”であるメモリロケーションには、他のデータを格納することができない。ローカルストレージ51のメモリロケーションにデータが読み出されると、ビジービットは“0”に設定され、他のデータを格納することができるようになる。
更に、図2で示すように、情報処理コントローラ11に接続されているメインメモリ12には、複数のサンドボックスが含まれる。サンドボックスは、メインメモリ12内の領域を画定するものであり、各サンドボックスは、各サブプロセッサ43に割り当てられ、割り当てられたサブプロセッサ43が排他的に使用することができる。すなわち、サブプロセッサ43は、割り当てられたサンドボックスを使用できるが、この領域を超えてデータにアクセスすることはできない。
メインメモリ12は、複数のメモリロケーションから構成されるが、サンドボックスは、これらのメモリロケーションの集合である。
更に、メインメモリ12の排他的な制御を実現するために、図4で示されるキー管理テーブルが用いられる。キー管理テーブルは、キー管理テーブル記録部45に記録され、DMAC44と関連付けられる。キー管理テーブル内の各エントリには、サブプロセッサID、サブプロセッサキーおよびキーマスクが含まれる。
サブプロセッサ43がメインメモリ12にアクセスする場合、サブプロセッサ43はDMAC44に、読み出しまたは書き込みのコマンドを出力する。このコマンドには、サブプロセッサ43を特定するサブプロセッサIDおよびアクセス要求先であるメインメモリ12のアドレスが含まれる。
DMAC44は、サブプロセッサ43から供給されたコマンドを実行する場合、キー管理テーブルを参照して、アクセス要求元のサブプロセッサ43のサブプロセッサキーを調べる。そして、DMAC44は、調べたアクセス要求元のサブプロセッサキーと、アクセス要求先であるメインメモリ12のメモリロケーションに割り振られたアクセスキーとを比較して、2つのキーが一致した場合にのみ、サブプロセッサ43から供給されたコマンドを実行する。
図4に示されるキー管理テーブルに記録されているキーマスクは、その任意のビットが“1”になることによって、そのキーマスクと関連付けられたサブプロセッサキーの対応するビットを“0”または“1”にすることができる。
例えば、サブプロセッサキーが“1010”であるとする。通常、このサブプロセッサキーによって“1010”のアクセスキーを持つサンドボックスへのアクセスだけが可能になる。しかし、このサブプロセッサキーと関連付けられたキーマスクが“0001”に設定されている場合には、キーマスクのビットが“1”に設定された桁のみにつき、サブプロセッサキーとアクセスキーとの一致判定がマスクされ(キーマスクのビットが“1”に設定された桁について、判定されず)、このサブプロセッサキー“1010”によってアクセスキーが“1010”または“1011”のいずれかであるアクセスキーを持つサンドボックスへのアクセスが可能となる。
以上のようにして、メインメモリ12のサンドボックスの排他性が実現される。すなわち、複数のサブプロセッサ43によってデータを多段階に処理する必要がある場合、以上のように構成することによって、前段階の処理を行うサブプロセッサ43と、後段階の処理を行うサブプロセッサ43のみが、メインメモリ12の所定のアドレスにアクセスできるようになり、データを保護することができる。
例えば、キーマスクの値は、以下のように変更されることが考えられる。まず、情報処理装置1の起動直後においては、キーマスクの値は全て“0”である。メインプロセッサ42にロードされたプログラムが実行され、サブプロセッサ43にロードされたプログラムと連携動作するものとする。サブプロセッサ43−1により出力された処理結果データを、メインメモリ12に記憶させ、メインメモリ12に記憶させた処理結果データを、サブプロセッサ43−2に入力したいときには、サブプロセッサ43−1により出力された処理結果データを記憶しているメインメモリ12の領域は、サブプロセッサ43−1およびサブプロセッサ43−2からアクセス可能である必要がある。そのような場合に、メインプロセッサ42は、キーマスクの値を適切に変更し、複数のサブプロセッサ43からアクセスできるメインメモリの領域を設けることにより、サブプロセッサ43による多段階的の処理を可能にする。
より具体的には、例えば、情報処理装置3−1乃至情報処理装置3−nから送信されてきたデータを基に、サブプロセッサ43−1が所定の処理実行し、処理が施されたデータをメインメモリ12の第1の領域に記憶させる。そして、サブプロセッサ43−2は、メインメモリ12の第1の領域から、記憶されているデータを読み出し、読み出したデータを基に、所定の処理を実行し、処理が施されたデータをメインメモリ12の第1の領域とは、異なる第2の領域に記憶させる。
ここで、サブプロセッサ43−1のサブプロセッサキーが“0100”であり、メインメモリ12の第1の領域のアクセスキーが“0100”であり、サブプロセッサ43−2のサブプロセッサキーが“0101”であり、メインメモリ12の第2の領域のアクセスキーが“0101”である場合、サブプロセッサ43−2は、メインメモリ12の第1の領域にアクセスすることができない。そこで、サブプロセッサ43−2のキーマスクを“0001”にすることによって、サブプロセッサ43−2は、メインメモリ12の第1の領域にアクセスすることができるようになる。
次に、図5および図6を参照して、情報処理装置1がソフトウェアセルを生成し、生成したソフトウェアセルを基に、情報処理装置3−1乃至情報処理装置3−nに分散処理を実行させる場合の処理について説明する。
情報処理装置1のメインプロセッサ42は、処理を実行するために必要なコマンド、プログラム、およびデータを含むソフトウェアセルを生成し、ネットワーク2を介して情報処理装置3−1乃至情報処理装置3−nあてに送信する。
図5は、ソフトウェアセルの構成の例を示す図である。
ソフトウェアセルは、送信元ID、送信先ID、応答先ID、セルインターフェース、DMAコマンド、プログラム、およびデータを含むように構成される。
送信元IDには、ソフトウェアセルの送信元である情報処理装置1のネットワークアドレスおよび情報処理装置1の情報処理コントローラ11の装置ID、更に、情報処理装置1の情報処理コントローラ11が備えるメインプロセッサ42およびサブプロセッサ43の識別子(メインプロセッサIDおよびサブプロセッサID)が含まれる。
送信先IDには、ソフトウェアセルの送信先である情報処理装置3−1乃至情報処理装置3−nのネットワークアドレス、情報処理装置3−1乃至情報処理装置3−nの情報処理コントローラの装置ID、および情報処理装置3−1乃至情報処理装置3−nの情報処理コントローラが備えるメインプロセッサおよびサブプロセッサの識別子が含まれる。
また、応答先IDには、ソフトウェアセルの実行結果の応答先である情報処理装置1のネットワークアドレス、情報処理装置1の情報処理コントローラ11の装置ID、および情報処理コントローラ11が備えるメインプロセッサ42およびサブプロセッサ43の識別子が含まれる。
セルインターフェースは、ソフトウェアセルの利用に必要な情報であり、グローバルID、必要なサブプロセッサの情報、サンドボックスサイズ、および前回のソフトウェアセルIDから構成される。
グローバルIDは、ネットワーク2全体を通してソフトウェアセルを一意的に識別できるものであり、送信元ID、およびソフトウェアセルの生成または送信の日時(日付および時刻)を基に、生成される。
必要なサブプロセッサの情報には、ソフトウェアセルの実行に必要なサブプロセッサの数などが設定される。サンドボックスサイズには、ソフトウェアセルの実行に必要なメインメモリおよびサブプロセッサのローカルストレージのメモリ量が設定される。
前回のソフトウェアセルIDは、ストリーミングデータなどのシーケンシャルな実行を要求する1つのグループを構成するソフトウェアセル内の、前回のソフトウェアセルの識別子である。
ソフトウェアセルの実行セクションは、DMAコマンド、プログラムおよびデータから構成される。DMAコマンドには、プログラムの起動に必要な一連のDMAコマンドが含まれ、プログラムには、サブプロセッサによって実行されるサブプロセッサプログラムが含まれる。ここでのデータは、このサブプロセッサプログラムを含むプログラムによって処理されるデータである。
更に、DMAコマンドには、ロードコマンド、キックコマンド、機能プログラム実行コマンド、ステータス要求コマンド、およびステータス返信コマンドが含まれる。
ロードコマンドは、メインメモリが記憶している情報をサブプロセッサのローカルストレージにロードさせるコマンドであり、ロードコマンドのほかに、メインメモリアドレス、サブプロセッサIDおよびLSアドレスを含む。メインメモリアドレスは、情報のロード元であるメインメモリの所定の領域のアドレスを示す。サブプロセッサIDおよびLSアドレスは、情報のロード先であるサブプロセッサの識別子およびローカルストレージのアドレスを示す。
キックコマンドは、プログラムの実行を開始するコマンドであり、キックコマンドのほかに、サブプロセッサIDおよびプログラムカウンタを含む。サブプロセッサIDは、キック対象のサブプロセッサを識別し、プログラムカウンタは、プログラム実行用プログラムカウンタのためのアドレスを与える。
機能プログラム実行コマンドは、ある装置(例えば、情報処理装置1)が他の装置(例えば、情報処理装置3−1乃至情報処理装置3−nのうちのいずれか)に対して、機能プログラムの実行を要求するコマンドである。機能プログラム実行コマンドを受信した装置(例えば、情報処理装置3−1乃至情報処理装置3−nのうちのいずれか)の情報処理コントローラは、機能プログラムIDによって、起動すべき機能プログラムを識別する。
ステータス要求コマンドは、送信先IDで示される情報処理装置3−1乃至情報処理装置3−nの現在の動作状態(状況)に関する装置情報を、応答先IDで示される情報処理装置1あてに送信要求するコマンドである。
ステータス返信コマンドは、ステータス要求コマンドを受信した情報処理装置3−1乃至情報処理装置3−nが、装置情報をステータス要求コマンドに含まれる応答先IDで示される情報処理装置1に応答するコマンドである。ステータス返信コマンドは、実行セクションのデータ領域に装置情報を格納する。
図6は、DMAコマンドがステータス返信コマンドである場合におけるソフトウェアセルのデータ領域の構造を示す図である。
装置IDは、情報処理コントローラを備える情報処理装置3−1乃至情報処理装置3−nを識別するための識別子であり、ステータス返信コマンドを送信する情報処理装置3−1乃至情報処理装置3−nのIDを示す。装置IDは、例えば、装置の電源をオンしたとき、情報処理装置3−1乃至情報処理装置3−nの情報処理コントローラに含まれるメインプロセッサによって、装置の電源をオンしたときの日時、情報処理装置3−1乃至情報処理装置3−nのネットワークアドレスおよび情報処理装置3−1乃至情報処理装置3−nの情報処理コントローラに含まれるサブプロセッサの数などに基づいて生成される。
装置種別IDには、情報処理装置3−1乃至情報処理装置3−nの特徴を表す値が含まれる。情報処理装置3−1乃至情報処理装置3−nの特徴とは、情報処理装置3−1乃至情報処理装置3−nがどのような装置であるかを示す情報であり、例えば、情報処理装置3−1乃至情報処理装置3−nが、ハードディスクレコーダ、PDA(Personal Digital Assistants)、ポータブルCD(Compact Disc)プレーヤなどであることを示す情報である。また、装置種別IDは、映像音声記録、映像音声再生など、情報処理装置3−1乃至情報処理装置3−nの機能を表すものであってもよい。情報処理装置3−1乃至情報処理装置3−nの特徴や機能を表す値は予め決定されているものとし、装置種別IDを読み出すことにより、情報処理装置3−1乃至情報処理装置3−nの特徴や機能を把握することが可能である。
メインプロセッサ動作周波数は、情報処理コントローラのメインプロセッサの動作周波数を表す。メインプロセッサ使用率は、メインプロセッサで現在動作している全てのプログラムについての、メインプロセッサでの使用率を表す。メインプロセッサ使用率は、メインプロセッサの全処理能力に対する使用中の処理能力の比率を表した値で、例えば、プロセッサ処理能力評価のための単位であるMIPSを単位として算出され、または単位時間あたりのプロセッサ使用時間に基づいて算出される。
サブプロセッサ数は、情報処理コントローラが備えるサブプロセッサの数を表す。サブプロセッサIDは、情報処理コントローラのサブプロセッサを識別するための識別子である。
サブプロセッサステータスは、サブプロセッサの状態を表すものであり、“unused”、“reserved”、および“busy”などの状態がある。“unused”は、サブプロセッサが現在使用されてなく、使用の予約もされていないことを示す。“reserved”は、現在は使用されていないが、予約されている状態を示す。“busy”は、現在使用中であることを示す。
サブプロセッサ使用率は、サブプロセッサで現在実行している、またはサブプロセッサに実行が予約されているプログラムについての、サブプロセッサでの使用率を表す。すなわち、サブプロセッサ使用率は、サブプロセッサステータスが“busy”である場合には、現在の使用率を示し、サブプロセッサステータスが“reserved”である場合には、後に使用される予定の推定使用率を示す。
サブプロセッサID、サブプロセッサステータスおよびサブプロセッサ使用率は、1つのサブプロセッサに対して一組設定され、1つの情報処理コントローラのサブプロセッサに対応する組数が設定される。
メインメモリ総容量およびメインメモリ使用量は、それぞれ、情報処理コントローラに接続されているメインメモリの総容量および現在使用中の容量を表す。
記録部数は、情報処理コントローラに接続されている記録部の数を表す。記録部IDは、情報処理コントローラに接続されている記録部を一意的に識別する情報である。記録部種別IDは、記録部の種類(例えば、ハードディスク、CD±RW、DVD±RW、メモリディスク、SRAM、ROMなど)を表す。
記録部総容量および記録部使用量は、それぞれ、記録部IDによって識別される記録部の総容量および現在使用中の容量を表す。
記録部ID、記録部種別ID、記録部総容量および記録部使用量は、1つの記録部に対して一組設定されるものであり、情報処理コントローラに接続されている記録部の数の組数だけ設定される。すなわち、1つの情報処理コントローラに複数の記録部が接続されている場合、各記録部には異なる記録部IDが割り当てられ、記録部種別ID、記録部総容量および記録部使用量も別々に管理される。
このようにして、情報処理装置1は、情報処理装置3−1乃至情報処理装置3−nに分散処理を実行させる場合、ソフトウェアセルを生成し、生成したソフトウェアセルを、ネットワーク2を介して情報処理装置3−1乃至情報処理装置3−nあてに送信する。
なお、以下、情報処理装置1から情報処理装置3−1乃至情報処理装置3−nあてに送信される各種データは、ソフトウェアセルに格納されて送信されるものとし、繰り返しになるので、その説明は省略する。
図7は、所定のアプリケーションプログラムを実行する情報処理装置1の論理スレッドの制御機能について説明するための機能ブロック図である。
図7において、アプリケーションプログラム実行制御部101、スレッドリソースコントローラ102、異常通知取得部103、論理スレッドスケジューラ104、および、論理スレッド実行制御部105のそれぞれの機能は、情報処理コントローラ11のメインプロセッサ42の処理により実行されるものである。
アプリケーションプログラム実行制御部101は、メインメモリ12からロードしたアプリケーションプログラムの実行を制御する。アプリケーションプログラム実行制御部101は、スレッドリソースコントローラ102に、論理スレッドの設定情報を供給して、論理スレッドの生成を要求する。論理スレッドとは、複数のサブプロセッサ43のそれぞれに必要に応じて割り当てられた複数のプログラム(それらのプログラムは、同一のアプリケーションプログラムに対応するものであっても、異なるアプリケーションプログラムに対応するものであってもかまわない)をまとめて一つの機能を提供する処理単位と定義したものである。換言すれば、複数のサブプロセッサ43のそれぞれに必要に応じて割り当てられた複数のプログラムは、メインメモリ12の所定の記憶領域に記憶されているプログラムであり、アプリケーションプログラム実行制御部101により実行が制御されているアプリケーションプログラムの要求により、メインメモリ12から対応するサブプロセッサ43のローカルストレージ51にロードされて実行されるものである。また、アプリケーションプログラム実行制御部101は、論理スレッド実行制御部105、または、スレッドリソースコントローラ102から、必要に応じて、エラー通知などを受ける。
スレッドリソースコントローラ102は、アプリケーションプログラム実行制御部101の制御に基づいて、論理スレッドの生成および削除を行うとともに、生成した論理スレッドの状態監視と動作制御を行う。スレッドリソースコントローラ102は、異常通知取得部103から供給される情報などに基づいて、論理スレッドの状態を監視するために、情報処理コントローラ11の全体の管理情報が記載された全体管理情報テーブルと、実行されている論理スレッドごとの管理情報が記載された論理スレッド管理情報テーブルとを内部のメモリ(すなわち、ローカルストレージ51−1)に有している。スレッドリソースコントローラ102は、異常通知取得部103から供給される情報などに基づいて、必要に応じて、これらのテーブルを再構築、または、更新するとともに、これらのテーブルの情報を基に、論理スレッドスケジューラ104を生成し、論理スレッド実行制御部105を制御することにより、論理スレッドの実行を管理し、動作を制御する。
全体管理情報テーブルおよび論理スレッド管理情報テーブルの詳細については、図8および図9を用いて後述する。
すなわち、サブプロセッサ43−1乃至サブプロセッサ43−3は、メインプロセッサ42の制御に基づいて、並列的かつ独立に、プログラムを実行し、データを処理することができるようになされており、更に、必要に応じて、メインプロセッサ42が実行するプログラムが、サブプロセッサ43−1乃至サブプロセッサ43−3のそれぞれが実行するプログラムのそれぞれと連携して動作するように構成することも可能なようになされている。スレッドリソースコントローラ102は、サブプロセッサ43−1乃至サブプロセッサ43−3に割り当てられる論理スレッドの実行状態を管理することにより、アプリケーションプログラムを実行させるようにすることができる。
異常通知取得部103は、サブプロセッサ43−1乃至サブプロセッサ43−3に接続されている異常検出部47−1乃至47−3が検出したサブプロセッサ43−1乃至サブプロセッサ43−3の異常状態を示す情報を、異常制御部48から取得し、異常が発生したサブプロセッサ43に関する情報を、スレッドリソースコントローラ102に供給する。
論理スレッドスケジューラ104は、スレッドリソースコントローラ102により必要に応じて生成されるものであり、1つの論理スレッドにおいて分散して処理されるべき複数のスレッドを1つのサブプロセッサ43で実行する必要が生じた場合、その実行のスケジューリングを行い、論理スレッド実行制御部105を制御する。
論理スレッド実行制御部105は、スレッドリソースコントローラ102または論理スレッドスケジューラ104の制御に基づいて、論理スレッドの実行(実際には、サブプロセッサ43−1乃至サブプロセッサ43−3により実行されている)を制御するものであり、論理スレッドの実行を制御ために必要な情報を、スレッドリソースコントローラ102と授受する。
図8に、上述したスレッドリソースコントローラ102が保持している全体管理情報テーブルを示す。
全体管理情報テーブルには、全サブプロセッサ数、使用中サブプロセッサ数、空きサブプロセッサ数、停止中サブプロセッサ数、および、全てのサブプロセッサ43の状態を示す情報が記載されている。具体的には、全体管理情報テーブルには、全サブプロセッサ数として、M(1以上の正の整数であり、図1を用いて説明した情報処理装置1の情報処理コントローラ11においては3)が記載され、使用中サブプロセッサ数として、N(0または1以上M未満の正の整数)が記載され、空きサブプロセッサ数として、P(0または1以上M未満の正の整数)が記載され、停止中サブプロセッサ数として、M−(N+P)に対応する値(0または1以上M未満の正の整数)が記載され、それぞれのサブプロセッサ43が、使用中であるか、空き状態(新たに使用可能である状態、すなわち、停止中ではないが使用中ではない状態)であるか、異常発生などにより停止中であるかを示す状態情報、または、エラー情報が記載されている。
図9に、上述したスレッドリソースコントローラ102が保持している論理スレッド管理情報テーブルを示す。
論理スレッド管理情報テーブルには、その論理スレッドを他の論理スレッドと区別することが可能なIDである論理スレッドID,その論理スレッドの所有者であるアプリケーションプログラムを示す所有者ID(または、その論理スレッドを所有するアプリケーションプログラムを他のアプリケーションプログラムと区別することが可能なIDであるアプリケーションID)、サブプロセッサ43のうちのいずれかの異常が検出された場合の動作を示す異常時対応動作ID、この論理スレッドの実行のために使用されているサブプロセッサ43を示すサブプロセッサIDが記載され、サブプロセッサIDごとに、対応するサブプロセッサ43が実行しているプログラムを示す動作中プログラムコード(またはメインメモリ上の開始アドレス)、スレッドの動作状況を示すコンテキストデータ、および、それぞれのサブプロセッサ43の動作状態を示す状態情報が格納されている。
状態情報としては、「正常動作中」、「異常発生中」「異常発生による停止中」「時分割動作中」、「初期化処理中」、「動作変更要求の処理中」「正常待機中」、「終了処理中」、「正常復帰待機中」がある。ここで、「正常動作中」とは、正常な状態で、論理スレッドのうちの割り当てられたスレッドの処理を実行している状態を示し、「異常発生中」とは、異常検出部47により異常が検出された状態を示し、「異常発生による停止中」とは、異常検出部47により異常が検出された後、対応するサブプロセッサ43の動作が異常制御部48の制御により停止されている状態を示し、「時分割動作中」とは、具体的には、1つのサブプロセッサ43で複数のスレッドを時分割で処理している状態であることを示す。また、「初期化処理中」とは、具体的には、プログラムのロード完了待ちや初期設定などの処理中を示し、「動作変更要求の処理中」とは、具体的には、通常動作から時分割処理動作に移行する期間を示し、「正常待機中」とは、新たなスレッドにより使用可能な状態である、すなわち、停止中ではないが、使用中ではない状態を示し、「終了処理中」とは、スレッドの停止準備中を示し、「正常復帰待機中」とは、正常状態に復帰するために待機中であることを示す。
スレッドリソースコントローラ102は、全体管理情報テーブル、および、論理スレッド管理情報テーブルを、アプリケーションプログラム実行制御部101、異常通知取得部103、または、論理スレッド実行制御部105から供給される各種情報を基に必要に応じて再構築、または、更新し、全体管理情報テーブル、および、論理スレッド管理情報テーブルを参照して、論理スレッド実行制御部105の論理スレッドの実行と、サブプロセッサ43による論理スレッドに対応するそれぞれのプログラム(スレッド)の実行とを制御して、任意の論理スレッドの動作を開始させたり、停止させたり、再開させることができる。
また、スレッドリソースコントローラ102は、異常通知取得部103から、論理スレッドに対応するプログラムを実行しているいずれかのサブプロセッサ43の異常が検出されたことを示す信号の入力を受けたとき、論理スレッド管理情報テーブルを参照し、異常が検出されたサブプロセッサ43が実行している論理スレッドIDと、異常発生時に論理スレッドの動作とアプリケーション動作を保つためにどのような処理を実行するかを予め定義するIDである異常時対応動作IDを読み込む。そして、スレッドリソースコントローラ102は、異常時対応動作IDに基づいて、それ以降の論理スレッドの実行(サブプロセッサ43による論理スレッドに対応するプログラムの実行)を制御する。異常発生時の処理には、「停止」、「リソース確保後続行」、「時分割動作続行」、「強制続行」、「正常復帰待機」のうちのいずれかが、異常時対応動作IDによって指定されるものとする。
「停止」は、異常発生時に、論理スレッドの処理を全て停止させるものである。すなわち、「停止」は、同一の論理スレッドの処理を実行しているものであれば、異常が発生していないサブプロセッサ43の処理も停止させるものである。「リソース確保後続行」は、異常発生時に、論理スレッドの全ての処理を一旦停止させ、異常が発生したサブプロセッサ43に割り当てられていた処理を、他の使用されていないサブプロセッサ43に割り当てた後、論理スレッドの処理を改めて開始(または再開)させるものである。
「時分割動作続行」は、異常発生時に、論理スレッドの全ての処理を一旦停止させ、論理スレッドスケジューラ104の処理により、異常が発生したサブプロセッサ43に割り当てられていた処理を、同一の論理スレッドの処理を実行していた他のサブプロセッサ43に時分割で割り当てることができるようにスケジューリングを行い、論理スレッドの処理を改めて開始(または再開)させるものである。
「強制続行」は、異常発生時に、論理スレッドの処理を一旦停止させることなく、同一の論理スレッドの処理を実行していた他のサブプロセッサ43の処理内容のみ継続させるものである。「正常復帰待機」は、異常発生時に、論理スレッドの全ての処理を一旦停止させ、異常が発生したサブプロセッサ43の状態が回復し、再度処理可能になった場合に、異常発生前に論理スレッドの処理が割り当てられていた状態と同一の状態で、論理スレッドの処理を改めて開始(または再開)させるものである。
また、異常発生時に、「停止」、「リソース確保後続行」、「時分割動作続行」、「強制続行」、「正常復帰待機」のうちのいずれの処理が実行されると好適であるかは、対応する論理スレッドが実行する処理の形態によって決まるものである。「停止」は、一般的なエラー処理であるため、アプリケーションプログラム全般に適用可能である。また、「リソース確保後続行」は、自動実行(開始/終了時間指定がない予約実行も含む)等の処理に向いており、例えば、ダビング、バックアップ、データベース作成、フォーマット変換などの、リアルタイム性が全く必要ない処理が実行される場合に適用可能である。「リソース時分割動作続行」は、利用者の操作中における臨時処理的なものに向いており、例えば、コンテンツ編集アプリ、予約録画をしながらダビングなど、リアルタイム性はそれほど必要ないが、ある程度処理完了を確約したい場合に適用可能である。
「強制続行」は、通常は利用される可能性は低いが、緊急性の高い用途に向いており、例えば、フライトレコーダ、防犯記録装置、監視カメラなど、壊れるまで強制的に動作する必要のあるものに適用されると好適である。「正常復帰待機」は、例えば、家庭用電化製品などで、ある程度自立回復動作を行う必要があるものや、作業者が頻繁にメンテナンスすることが困難、または、メンテナンスの必要性が低いもの、もしくは、過酷な条件下(例えば、高所、海底、極寒冷地)などでのモニター制御などに適用されると好適である。
したがって、異常発生時に、「停止」、「リソース確保後続行」、「時分割動作続行」、「強制続行」、「正常復帰待機」のうちのいずれの処理が実行されるかは、アプリケーションプログラムに依存するものである。また、アプリケーションプログラムによっては、異常発生時にいずれの処理が実行されるかを、ユーザが設定可能なようにしてもよい。ユーザにより異常発生時にいずれの処理が実行されるかの設定が変更された場合、スレッドリソースコントローラ102は、論理スレッド管理情報テーブルの異常時対応動作ID情報を更新する。
異常発生の検出と、「停止」、「リソース確保後続行」、「時分割動作続行」、「強制続行」、「正常復帰待機」の処理の詳細については後述する。
次に、図10のアローチャートを参照して、情報処理装置1において、複数のサブプロセッサ43を用いて複数のプログラム(実行される複数のプログラムは、同一または同等のものでも、異なるプログラムであってもかまわない)をロードし実行させ、その複数サブプロセッサが実行する処理を1つの機能の論理スレッドとして管理する場合について説明する。
ステップS1において、アプリケーションプログラム実行制御部101は、スレッドリソースコントローラ102に論理スレッドの生成要求を通知し、プログラムコード、初期値情報、処理に必要なサブプロセッサ使用数、または、処理に利用されるサブプロセッサIDをスレッドリソースコントローラ102に設定する。なお、一般的な処理においては、スレッドリソースコントローラ102には処理に必要なサブプロセッサ使用数が設定されるが、例えば、セキュアな情報を処理する場合などの特殊な場合においては、処理に利用されるサブプロセッサIDが設定される。
ステップS2において、スレッドリソースコントローラ102は、アプリケーションプログラム実行制御部101による論理スレッドの生成要求に応じて、論理スレッドを生成し、設定されたプログラムコード、初期値情報、処理に必要なサブプロセッサ使用数、または、処理に利用されるサブプロセッサIDに基づいて、全体管理情報テーブル、および、論理スレッド管理情報テーブルを再構築する。すなわち、スレッドリソースコントローラ102は、生成した論理スレッドの処理を割り当てるサブプロセッサ43を確保し、この論理スレッドを管理するための論理スレッド管理情報テーブルを構築する。
ステップS3において、スレッドリソースコントローラ102は、生成した論理スレッドの処理を割り当てるサブプロセッサ43のうちの1つ(図10においては、サブプロセッサ43−1)に、対応するプログラムをロードする。
そして、スレッドリソースコントローラ102は、ステップS4において、プログラムがロードされたサブプロセッサ43−1に、初期値を供給して初期データを設定し、ステップS5において、プログラムがロードされたサブプロセッサ43−1に、プログラムスタート命令を出す。
サブプロセッサ43−1は、ステップS6において、プログラムスタート命令を受けて、初期化処理を実行し、ステップS7において、スレッドリソースコントローラ102に、初期化完了を通知する。
ステップS8において、スレッドリソースコントローラ102は、サブプロセッサ43−1からの初期化完了通知を受けて、サブプロセッサ43−1において実行されるスレッドの処理開始を準備する。
ステップS9において、スレッドリソースコントローラ102および初期化がなされていないサブプロセッサ43のうちの1つ(図10においては、サブプロセッサ43−2)は、上述したステップS3乃至ステップS7と同等のシーケンスを実行する。すなわち、スレッドリソースコントローラ102は、サブプロセッサ43-2に、対応するプログラムをロードし、初期値を供給して初期データを設定し、プログラムスタート命令を出す。サブプロセッサ43−2は、プログラムスタート命令を受けて、初期化処理を実行し、スレッドリソースコントローラ102に、初期化完了を通知する。
ステップS10において、スレッドリソースコントローラ102は、サブプロセッサ43−2からの初期化完了通知を受けて、サブプロセッサ43−2において実行されるスレッドの処理開始を準備する。
ここでは、論理スレッドの実行において使用されるサブプロセッサ43の数が2つである場合について説明しているが、論理スレッドの実行において使用されるサブプロセッサ43の数が3つ以上である場合、ステップS9およびステップS10の処理と同等の処理が、生成した論理スレッドの処理が割り当てられた全てのサブプロセッサ43の初期化が完了するまで繰り返される。
論理スレッドの処理が割り当てられた全てのサブプロセッサ43の初期化が完了した後、生成した論理スレッドの処理が割り当てられた全てのサブプロセッサ43に、処理開始命令が出される。すなわち、ステップS11において、スレッドリソースコントローラ102は、サブプロセッサ43−1に、処理開始命令を出す。そして、ステップS12において、スレッドリソースコントローラ102は、サブプロセッサ43−2に、処理開始命令を出す。
ステップS13において、スレッドリソースコントローラ102は、論理スレッド実行制御部105に論理スレッドの動作開始を指令する。論理スレッド実行制御部105は、論理スレッドの動作を開始する。
そして、ステップS14において、論理スレッド実行制御部105とアプリケーションプログラム実行制御部101とは、必要に応じて任意に動作内容を確認する処理を行いながら(確認が必要か否かは、アプリケーションプログラムに依存する)、対応する論理スレッドが終了するまで、処理の実行を制御する。
このような処理により、情報処理装置1において所定のアプリケーションプログラムが実行される場合、複数のサブプロセッサ43を用いて複数のプログラムが1つの論理スレッドとして実行される。
ここで、論理スレッドに属するサブプロセッサ43のうちのいずれかが、何らかの異常により動作停止した場合、そのサブプロセッサ43に対応する異常検出部47により異常が検出され、異常制御部48より、異常通知取得部103を介して、スレッドリソースコントローラ102に、異常サブプロセッサ番号、異常状態等が通知される。そして、異常が発生したサブプロセッサ43が属する論理スレッドに対して指定されている異常時対応動作IDに対応した、例えば、新規サブプロセッサの割当てや動作変更などの処理が実行される。
次に、図11のフローチャートを参照して、異常発生時の処理について説明する。図11に示される異常発生時の処理は、図10を用いて説明したステップS13の処理が実行された後、所定の時間ごとに、ステップS31の判断処理が実行されて、ステップS31において異常が発生したことの通知を受けたと判断された場合には、割り込み処理として実行されるものである。
ステップS31において、異常通知取得部103は、いずれかのサブプロセッサ43において異常が発生したことの通知を、異常制御部48から受けたか否かを判断する。ステップS31において、異常が発生したことの通知を受けていないと判断された場合、処理は、後述するステップS37に進む。
ステップS31において、異常が発生したことの通知を受けたと判断された場合、ステップS32において、異常通知取得部103は、異常制御部48から供給された情報を基に、異常が発生したサブプロセッサ43を特定するためのサブプロセッサIDを取得し、スレッドリソースコントローラ102に供給する。
ステップS33において、スレッドリソースコントローラ102は、論理スレッド管理情報テーブルを参照し、異常が検出されたサブプロセッサ43が実行している論理スレッドIDを取得する。
ステップS34において、スレッドリソースコントローラ102は、論理スレッド管理情報テーブルを参照し、対応する論理スレッドにおいて設定されている異常時対応動作IDを取得する。
ステップS35において、スレッドリソースコントローラ102は、全体管理情報テーブルおよび論理スレッド管理テーブルの内容を、発生した異常の内容に基づいて更新する。
ステップS36において、スレッドリソースコントローラ102は、異常時対応動作IDに基づいた処理、すなわち、上述した、「停止」、「リソース確保後続行」、「時分割動作続行」、「強制続行」、「正常復帰待機」のうちのいずれかの処理を実行する。このとき、スレッドリソースコントローラ102は、実行する処理に対応させて、全体管理情報テーブルおよび論理スレッド管理テーブルの内容を、随時更新する。
ステップS31において、異常が発生したことの通知を受けていないと判断された場合、または、ステップS36の処理の終了後、ステップS37において、スレッドリソースコントローラ102は、アプリケーションプログラム実行制御部101から供給される信号を基に、アプリケーションプログラムが終了したか否かを判断する。ステップS37において、アプリケーションプログラムが終了していないと判断された場合、処理は、ステップS31に戻り、それ以降の処理が繰り返される。ステップS37において、アプリケーションプログラムが終了したと判断された場合、処理が終了される。
このような処理により、論理スレッドに属するサブプロセッサ43のうちのいずれかが、何らかの異常により動作停止した場合、異常が発生したサブプロセッサ43が属する論理スレッドに対して指定されている異常時対応動作IDに対応した「停止」、「リソース確保後続行」、「時分割動作続行」、「強制続行」、「正常復帰待機」のうちのいずれかの処理が実行される。
次に、図12乃至図18のアローチャートを参照して、論理スレッドの処理が複数のサブプロセッサ43において実行され、異常が発生したサブプロセッサ43が属する論理スレッドに対して指定されている異常時対応動作IDに対応した「停止」、「リソース確保後続行」、「時分割動作続行」、「強制続行」、「正常復帰待機」のそれぞれの処理が実行される場合について説明する。図12乃至図18のアローチャートにおいては、サブプロセッサ43-2において異常が発生した場合を例として説明する。
図12のアローチャートを参照して、論理スレッドに属するサブプロセッサ43のうちのいずれかに異常が発生した場合、論理スレッドの処理が「停止」されるときの情報処理装置1の動作について説明する。
ステップS51において、アプリケーションプログラム実行制御部101は、スレッドリソースコントローラ102に論理スレッドの生成要求を通知し、プログラムコード、初期値情報、処理に必要なサブプロセッサ使用数、または、処理に利用されるサブプロセッサIDをスレッドリソースコントローラ102に設定する。なお、一般的な処理においては、スレッドリソースコントローラ102には処理に必要なサブプロセッサ使用数が設定されるが、例えば、セキュアな情報を処理する場合などの特殊な場合においては、処理に利用されるサブプロセッサIDが設定される。
ステップS52において、スレッドリソースコントローラ102は、アプリケーションプログラム実行制御部101による論理スレッドの生成要求に応じて、論理スレッドを生成し、設定されたプログラムコード、初期値情報、処理に必要なサブプロセッサ使用数、または、処理に利用されるサブプロセッサIDに基づいて、全体管理情報テーブル、および、論理スレッド管理情報テーブルを再構築する。すなわち、スレッドリソースコントローラ102は、生成した論理スレッドの処理を割り当てるサブプロセッサ43を確保し、この論理スレッドを管理するための論理スレッド管理情報テーブルを構築する。
ステップS53において、スレッドリソースコントローラ102は、生成した論理スレッドの処理を割り当てるサブプロセッサ43のうちの1つ(図12においては、サブプロセッサ43−1)に、対応するプログラムをロードし、初期値を供給して初期データを設定し、プログラムスタート命令を出す。サブプロセッサ43−1は、プログラムスタート命令を受けて、初期化処理を実行し、スレッドリソースコントローラ102に、初期化完了を通知する。
ステップS54において、スレッドリソースコントローラ102は、初期化がなされていないサブプロセッサ43のうちの1つ(図12においては、サブプロセッサ43−2)に対して、上述したステップS53と同等のシーケンスを実行する。すなわち、スレッドリソースコントローラ102は、サブプロセッサ43-2に、対応するプログラムをロードし、初期値を供給して初期データを設定し、プログラムスタート命令を出す。サブプロセッサ43−2は、プログラムスタート命令を受けて、初期化処理を実行し、スレッドリソースコントローラ102に、初期化完了を通知する。スレッドリソースコントローラ102は、論理スレッドが割り当てられたサブプロセッサ43の全てに対してプログラムのスタート命令を出力し、初期化完了の通知を受けた場合、それぞれのサブプロセッサ43に、処理開始命令を出力する。すなわち、ステップS53およびステップS54において、図10を用いて説明したステップS3乃至ステップS12のシーケンスが実行される。
なお、ここでは、論理スレッドの処理が2つのサブプロセッサ43に対して割り当てられたものとして説明したが、論理スレッドの処理が3つ以上のサブプロセッサ43に対して割り当てられた場合、ステップS54の処理は、生成した論理スレッドの処理が割り当てられた全てのサブプロセッサ43の初期化が完了するまで繰り返される。
ステップS55において、スレッドリソースコントローラ102は、論理スレッド実行制御部105に論理スレッドの動作開始を指令する。論理スレッド実行制御部105は、論理スレッドの動作を開始する。
ステップS56において、サブプロセッサ43-2で異常が発生し、サブプロセッサ43−2は、異常検出部47−2に異常情報を通知する。
異常検出部47−2は、ステップS57において、サブプロセッサ43−2の異常を検出し、ステップS58において、異常制御部48に対して、サブプロセッサ43−2の緊急停止依頼を出力する。
異常制御部48は、ステップS59において、サブプロセッサ43−2の緊急停止処理、すなわち、バス41を介して、サブプロセッサ43−2に緊急停止を指令する制御信号を供給する処理を実行し、ステップS60において、異常通知取得部103(すなわち、バス41を介してメインプロセッサ42)に、サブプロセッサ43−2に異常が発生したことを通知するための異常通知を供給する。
異常通知取得部103は、ステップS61において、異常制御部48から供給された異常通知の内容を基に、例えば、異常が発生したサブプロセッサを示す情報をサブプロセッサIDに変換するなどの情報変換処理を行い、ステップS62において、スレッドリソースコントローラ102に、異常通知と論理スレッドの緊急停止依頼を供給する。
ステップS63において、スレッドリソースコントローラ102は、情報テーブルの情報の取得と更新の処理、すなわち、図11を用いて説明したステップS32乃至ステップS35の処理を実行する。なお、以下に説明するステップS64乃至ステップS70の処理が、図11のステップS36の、異常時対応動作IDに基づいた処理に対応するものである。
ステップS64において、スレッドリソースコントローラ102は、論理スレッド実行制御部105に、論理スレッドの停止要求を供給する。
論理スレッド実行制御部105は、ステップS65において、論理スレッドの停止処理を行い、ステップS66において、アプリケーションプログラム実行制御部101に論理スレッドエラー通知を供給する。
ステップS67において、アプリケーションプログラム実行制御部101は、アプリケーションプログラムの実行の停止処理を行う。
ステップS68において、論理スレッド実行制御部105は、スレッドリソースコントローラ102に、論理スレッド停止完了を通知する。
ステップS69において、スレッドリソースコントローラ102は、対応する論理スレッドの処理を分担している、異常が発生していないサブプロセッサ43の全て(ここでは、サブプロセッサ43−1)にサブプロセッサ停止命令を供給する。すなわち、メインプロセッサ42から、バス41を介して、サブプロセッサ43−1にサブプロセッサ停止命令が供給される。
ステップS70において、サブプロセッサ43−1は、処理を停止するので、対応する論理スレッドに関する処理が全て終了される。
このような処理により、論理スレッドに属するサブプロセッサ43のうちのいずれかに異常が発生した場合、論理スレッドの処理が全て「停止」される。
次に、図13のアローチャートを参照して、論理スレッドに属するサブプロセッサ43のうちのいずれかに異常が発生した場合、論理スレッドの処理が「リソース確保後続行」されるときの情報処理装置1の動作について説明する。
ステップS81乃至ステップS95において、図12を用いて説明したステップS51乃至ステップS65の処理が実行される。
すなわち、アプリケーションプログラム実行制御部101は、スレッドリソースコントローラ102に論理スレッドの生成要求を通知し、プログラムコード、初期値情報、処理に必要なサブプロセッサ使用数、または、処理に利用されるサブプロセッサIDをスレッドリソースコントローラ102に設定する。スレッドリソースコントローラ102は、論理スレッドを生成し、設定されたプログラムコード、初期値情報、処理に必要なサブプロセッサ使用数、または、処理に利用されるサブプロセッサIDに基づいて、全体管理情報テーブル、および、論理スレッド管理情報テーブルを再構築し、生成した論理スレッドの処理を割り当てるサブプロセッサ43のそれぞれに、対応するプログラムをロードし、初期値を供給して初期データを設定し、プログラムスタート命令を出す。サブプロセッサ43−1およびサブプロセッサ43−2は、プログラムスタート命令を受けて、初期化処理を実行し、スレッドリソースコントローラ102に、初期化完了を通知するので、スレッドリソースコントローラ102は、プログラムの実行命令をサブプロセッサ43−1およびサブプロセッサ43−2に出力する。そして、スレッドリソースコントローラ102は、論理スレッド実行制御部105に論理スレッドの動作開始を指令する。論理スレッド実行制御部105は、論理スレッドの動作を開始する。
論理スレッド実行中に、サブプロセッサ43-2で異常が発生したとき、サブプロセッサ43−2は、異常検出部47−2に異常情報を通知する。異常検出部47−2は、サブプロセッサ43−2の異常を検出し、異常制御部48に対して、サブプロセッサ43−2の緊急停止依頼を出力する。異常制御部48は、サブプロセッサ43−2の緊急停止処理、すなわち、バス41を介して、サブプロセッサ43−2に緊急停止を指令する制御信号を供給する処理を実行し、異常通知取得部103に、サブプロセッサ43−2に異常が発生したことを通知するための異常通知を供給する。異常通知取得部103は、異常制御部48から供給された異常通知の内容を基に、例えば、異常が発生したサブプロセッサを示す情報をサブプロセッサIDに変換するなどの情報変換処理を行い、スレッドリソースコントローラ102に、異常通知と論理スレッドの緊急停止依頼を供給する。スレッドリソースコントローラ102は、情報テーブルの情報の取得と更新の処理を実行する。スレッドリソースコントローラ102は、論理スレッド実行制御部105に、論理スレッドの停止要求を供給する。論理スレッド実行制御部105は、論理スレッドの停止処理を行う。
ステップS96において、論理スレッド実行制御部105は、スレッドリソースコントローラ102に、論理スレッド停止完了を通知する。
ステップS97において、スレッドリソースコントローラ102は、対応する論理スレッドの処理を分担している、異常が発生していないサブプロセッサ43の全て(ここでは、サブプロセッサ43−1)にサブプロセッサ停止命令を供給する。すなわち、メインプロセッサ42から、バス41を介して、サブプロセッサ43−1にサブプロセッサ停止命令が供給される。
ステップS98において、サブプロセッサ43−1は、実行中の処理を一時停止する。
ステップS99において、スレッドリソースコントローラ102は、全体管理情報テーブルを参照して、異常が発生したサブプロセッサ43−2の処理を代わって実行することが可能な他のサブプロセッサ43を検出し、そのサブプロセッサ43を新規サブプロセッサとして割り当てて、全体管理情報テーブルおよび論理スレッド管理情報テーブルの記載を更新する。ここで、新規サブプロセッサとして処理が割り当てられたのは、サブプロセッサ43−3であるものとする。
ステップS100において、スレッドリソースコントローラ102は、サブプロセッサ43−3に、対応するプログラムをロードし、初期値を供給して初期データを設定し、プログラムスタート命令を出す。サブプロセッサ43−3は、プログラムスタート命令を受けて、初期化処理を実行し、スレッドリソースコントローラ102に、初期化完了を通知するので、スレッドリソースコントローラ102は、プログラムの実行命令をサブプロセッサ43−3に出力する。
ステップS101において、スレッドリソースコントローラ102は、サブプロセッサ43−1に、一時停止していた論理スレッドの動作再開要求を供給する。なお、論理スレッドの動作再開が、一時停止前の処理の継続であるか、再度初期化から開始されるかは、アプリケーションプログラムに依存する。
ステップS102において、スレッドリソースコントローラ102は、論理スレッド実行処理部105に、論理スレッドの動作再開を通知し、論理スレッド実行処理部105は、論理スレッドの動作を再開する。
このような処理により、論理スレッドに属するサブプロセッサ43のうちのいずれかに異常が発生した場合であっても、論理スレッドの処理は完全に停止されることなく、異常が発生していないサブプロセッサがリソースとして確保された後、続行される。
次に、図14および図15のアローチャートを参照して、論理スレッドに属するサブプロセッサ43のうちのいずれかに異常が発生した場合、論理スレッドの処理が「時分割動作続行」されるときの情報処理装置1の動作について説明する。
ステップS121乃至ステップS138においては、図13のステップS81乃至ステップS98と同様の処理が実行される。
すなわち、アプリケーションプログラム実行制御部101は、スレッドリソースコントローラ102に論理スレッドの生成要求を通知し、プログラムコード、初期値情報、処理に必要なサブプロセッサ使用数、または、処理に利用されるサブプロセッサIDをスレッドリソースコントローラ102に設定する。スレッドリソースコントローラ102は、論理スレッドを生成し、設定されたプログラムコード、初期値情報、処理に必要なサブプロセッサ使用数、または、処理に利用されるサブプロセッサIDに基づいて、全体管理情報テーブル、および、論理スレッド管理情報テーブルを再構築し、生成した論理スレッドの処理を割り当てるサブプロセッサ43のそれぞれに、対応するプログラムをロードし、初期値を供給して初期データを設定し、プログラムスタート命令を出す。サブプロセッサ43−1およびサブプロセッサ43−2は、プログラムスタート命令を受けて、初期化処理を実行し、スレッドリソースコントローラ102に、初期化完了を通知するので、スレッドリソースコントローラ102は、プログラムの実行命令をサブプロセッサ43−1およびサブプロセッサ43−2に出力する。そして、スレッドリソースコントローラ102は、論理スレッド実行制御部105に論理スレッドの動作開始を指令する。論理スレッド実行制御部105は、論理スレッドの動作を開始する。
論理スレッド実行中に、サブプロセッサ43-2で異常が発生したとき、サブプロセッサ43−2は、異常検出部47−2に異常情報を通知する。異常検出部47−2は、サブプロセッサ43−2の異常を検出し、異常制御部48に対して、サブプロセッサ43−2の緊急停止依頼を出力する。異常制御部48は、サブプロセッサ43−2の緊急停止処理、すなわち、バス41を介して、サブプロセッサ43−2に緊急停止を指令する制御信号を供給する処理を実行し、異常通知取得部103に、サブプロセッサ43−2に異常が発生したことを通知するための異常通知を供給する。異常通知取得部103は、異常制御部48から供給された異常通知の内容を基に、例えば、異常が発生したサブプロセッサを示す情報をサブプロセッサIDに変換するなどの情報変換処理を行い、スレッドリソースコントローラ102に、異常通知と論理スレッドの緊急停止依頼を供給する。スレッドリソースコントローラ102は、情報テーブルの情報の取得と更新の処理を実行する。スレッドリソースコントローラ102は、論理スレッド実行制御部105に、論理スレッドの停止要求を供給する。論理スレッド実行制御部105は、論理スレッドの停止処理を行う。
そして、論理スレッド実行制御部105は、スレッドリソースコントローラ102に、論理スレッド停止完了を通知する。スレッドリソースコントローラ102は、対応する論理スレッドの処理を分担している、異常が発生していないサブプロセッサ43の全て(ここでは、サブプロセッサ43−1)にサブプロセッサ停止命令を供給する。サブプロセッサ43−1は、実行中の処理を一時停止する。
ステップS139において、スレッドリソースコントローラ102は、論理スレッドスケジューラ104に、一時停止した論理スレッドに関する情報を供給して、異常が発生していないサブプロセッサ43(ここでは、サブプロセッサ43−1のみ)において、一時停止した論理スレッドの処理を時分割で実行させるために、論理スレッドのスケジューリング開始を指令する。
論理スレッドスケジューラ104は、ステップS140において、論理スレッドのスケジューリングを開始するために初期化を行い、ステップS141において、動作準備完了を、スレッドリソースコントローラ102に通知する。
ステップS142において、スレッドリソースコントローラ102は、異常が発生したサブプロセッサ43−2の処理を、異常が発生していないサブプロセッサ43−1が、論理スレッドスケジューラ104のスケジューリングに基づいて時分割で実行するので、全体管理情報テーブルおよび論理スレッド管理情報テーブルの記載を更新する。
ステップS143において、スレッドリソースコントローラ102は、論理スレッドスケジューラ104に対して、論理スレッドの対応するプログラムを全てロードし、初期値を供給して初期データを設定する。
ステップS144において、スレッドリソースコントローラ102は、論理スレッド実行制御部105に論理スレッドの動作開始を指令する。論理スレッド実行制御部105は、論理スレッドの動作を開始する。
ステップS145において、論理スレッドスケジューラ104は、サブプロセッサ43−1に、時分割で割り当てられた処理に対応する第1のプログラムをロードさせ、初期値を供給して初期データを設定し、プログラムスタート命令を出す。サブプロセッサ43−1は、プログラムスタート命令を受けて、プログラムを実行する。
ステップS146において、論理スレッドスケジューラ104は、ステップS145においてサブプロセッサ43−1が実行していた第1のプログラムの処理に関する情報(すなわち、スレッドの動作状況)を示すコンテキストをメインメモリ12の所定の記憶領域に退避させ、サブプロセッサ43−1に、時分割で割り当てられた次の処理に対応する第2のプログラムを実行させるために、コンテキストをスイッチする(第2のプログラムのコンテキストをメインメモリ12の所定の記憶領域から読み出す)。
ステップS147において、論理スレッドスケジューラ104は、サブプロセッサ43−1に、時分割で割り当てられた処理に対応する第2のプログラムをロードさせ、初期値を供給して初期データを設定し、プログラムスタート命令を出す。サブプロセッサ43−1は、プログラムスタート命令を受けて、プログラムを実行する。
ステップS148において、論理スレッドスケジューラ104は、ステップS147においてサブプロセッサ43−1が実行していた第2のプログラムの処理に関するコンテキストをメインメモリ12の所定の記憶領域に退避させ、サブプロセッサ43−1に、時分割で割り当てられた次の処理に対応する第1のプログラムを実行させるために、コンテキストをスイッチする(第1のプログラムのコンテキストをメインメモリ12の所定の記憶領域から読み出す)。
そして、ステップS149およびステップS150において、ステップS145およびステップS146と同様の処理が実行されて、第1のプログラムがロードされて実行され、所定のタイミングで、時分割で割り当てられた次の処理に対応する第2のプログラムを実行させるために、第1のプログラムのコンテキストが退避された後、コンテキストがスイッチされる。
そして、ステップS151およびステップS152において、ステップS147およびステップS148と同様の処理が実行されて、第2のプログラムがロードされて実行され、所定のタイミングで、時分割で割り当てられた次の処理に対応する第1のプログラムを実行させるために、第2のプログラムのコンテキストが退避された後、コンテキストがスイッチされる。
そして、ステップS153以降も、同様に、第1のプログラムと第2のプログラムが、論理スレッドが終了するまで、論理スレッドスケジューラ104のスケジューリングに基づいて、異常が発生していないサブプロセッサ43-1において交互に実行される。
このような処理により、論理スレッドに属するサブプロセッサ43のうちのいずれかに異常が発生した場合であっても、論理スレッドの処理を停止することなく、異常が発生していないサブプロセッサ43において「時分割動作続行」される。
なお、ここでは、2つのサブプロセッサ43を用いて処理が行われていた論理スレッドにおいて、一方のサブプロセッサ43に異常が発生した場合、換言すれば、ただ1つのサブプロセッサ43に異常が発生していない場合について説明したが、例えば、3つ以上のサブプロセッサ43を用いて処理が行われていた論理スレッドにおいて、1つのサブプロセッサ43に異常が発生した場合、論理スレッドスケジューラ104は、異常が発生していない2つ以上のサブプロセッサ43に対して、論理スレッドの処理を時分割で実行するようにスケジューリングするようにしてもよいことはもちろんである。
次に、図16のアローチャートを参照して、論理スレッドに属するサブプロセッサ43のうちのいずれかに異常が発生した場合、論理スレッドの処理が「強制続行」されるときの情報処理装置1の動作について説明する。
ステップS171乃至ステップS183においては、図12のステップS51乃至ステップS63と同様の処理が実行される。
すなわち、アプリケーションプログラム実行制御部101は、スレッドリソースコントローラ102に論理スレッドの生成要求を通知し、プログラムコード、初期値情報、処理に必要なサブプロセッサ使用数、または、処理に利用されるサブプロセッサIDをスレッドリソースコントローラ102に設定する。スレッドリソースコントローラ102は、論理スレッドを生成し、設定されたプログラムコード、初期値情報、処理に必要なサブプロセッサ使用数、または、処理に利用されるサブプロセッサIDに基づいて、全体管理情報テーブル、および、論理スレッド管理情報テーブルを再構築し、生成した論理スレッドの処理を割り当てるサブプロセッサ43のそれぞれに、対応するプログラムをロードし、初期値を供給して初期データを設定し、プログラムスタート命令を出す。サブプロセッサ43−1およびサブプロセッサ43−2は、プログラムスタート命令を受けて、初期化処理を実行し、スレッドリソースコントローラ102に、初期化完了を通知するので、スレッドリソースコントローラ102は、プログラムの実行命令をサブプロセッサ43−1およびサブプロセッサ43−2に出力する。そして、スレッドリソースコントローラ102は、論理スレッド実行制御部105に論理スレッドの動作開始を指令する。論理スレッド実行制御部105は、論理スレッドの動作を開始する。
論理スレッド実行中に、サブプロセッサ43-2で異常が発生したとき、サブプロセッサ43−2は、異常検出部47−2に異常情報を通知する。異常検出部47−2は、サブプロセッサ43−2の異常を検出し、異常制御部48に対して、サブプロセッサ43−2の緊急停止依頼を出力する。異常制御部48は、サブプロセッサ43−2の緊急停止処理、すなわち、バス41を介して、サブプロセッサ43−2に緊急停止を指令する制御信号を供給する処理を実行し、異常通知取得部103に、サブプロセッサ43−2に異常が発生したことを通知するための異常通知を供給する。異常通知取得部103は、異常制御部48から供給された異常通知の内容を基に、例えば、異常が発生したサブプロセッサを示す情報をサブプロセッサIDに変換するなどの情報変換処理を行い、スレッドリソースコントローラ102に、異常通知と論理スレッドの緊急停止依頼を供給する。スレッドリソースコントローラ102は、情報テーブルの情報の取得と更新の処理を実行する。
ステップS184において、スレッドリソースコントローラ102は、アプリケーションプログラム実行制御部101に、論理スレッドの処理にエラーが発生したことを通知する。すなわち、スレッドリソースコントローラ102は、論理スレッド実行制御部105に、論理スレッドの停止を要求しないので、論理スレッド実行制御部105は、論理スレッドの停止処理を行わない。
すなわち、異常が発生したサブプロセッサ43−2の動作は停止されるが、論理スレッドが停止されないので、異常が発生しないサブプロセッサ43−1の処理は、割り当てられたスレッドが終了するまで続行される。
このような処理により、論理スレッドに属するサブプロセッサ43のうちのいずれかに異常が発生した場合であっても、論理スレッドの処理を停止することなく、異常が発生していないサブプロセッサ43に割り当てられた処理のみが「強制続行」される。
次に、図17および図18のアローチャートを参照して、論理スレッドに属するサブプロセッサ43のうちのいずれかに異常が発生した場合、論理スレッドの処理が「正常復帰待機」されるときの情報処理装置1の動作について説明する。
ステップS201乃至ステップS214においては、図16のステップS171乃至ステップS184と同様の処理が実行される。
すなわち、アプリケーションプログラム実行制御部101は、スレッドリソースコントローラ102に論理スレッドの生成要求を通知し、プログラムコード、初期値情報、処理に必要なサブプロセッサ使用数、または、処理に利用されるサブプロセッサIDをスレッドリソースコントローラ102に設定する。スレッドリソースコントローラ102は、論理スレッドを生成し、設定されたプログラムコード、初期値情報、処理に必要なサブプロセッサ使用数、または、処理に利用されるサブプロセッサIDに基づいて、全体管理情報テーブル、および、論理スレッド管理情報テーブルを再構築し、生成した論理スレッドの処理を割り当てるサブプロセッサ43のそれぞれに、対応するプログラムをロードし、初期値を供給して初期データを設定し、プログラムスタート命令を出す。サブプロセッサ43−1およびサブプロセッサ43−2は、プログラムスタート命令を受けて、初期化処理を実行し、スレッドリソースコントローラ102に、初期化完了を通知するので、スレッドリソースコントローラ102は、プログラムの実行命令をサブプロセッサ43−1およびサブプロセッサ43−2に出力する。そして、スレッドリソースコントローラ102は、論理スレッド実行制御部105に論理スレッドの動作開始を指令する。論理スレッド実行制御部105は、論理スレッドの動作を開始する。
論理スレッド実行中に、サブプロセッサ43-2で異常が発生したとき、サブプロセッサ43−2は、異常検出部47−2に異常情報を通知する。異常検出部47−2は、サブプロセッサ43−2の異常を検出し、、異常制御部48に対して、サブプロセッサ43−2の緊急停止依頼を出力する。異常制御部48は、サブプロセッサ43−2の緊急停止処理、すなわち、バス41を介して、サブプロセッサ43−2に緊急停止を指令する制御信号を供給する処理を実行し、異常通知取得部103に、サブプロセッサ43−2に異常が発生したことを通知するための異常通知を供給する。異常通知取得部103は、異常制御部48から供給された異常通知の内容を基に、例えば、異常が発生したサブプロセッサを示す情報をサブプロセッサIDに変換するなどの情報変換処理を行い、スレッドリソースコントローラ102に、異常通知と論理スレッドの緊急停止依頼を供給する。スレッドリソースコントローラ102は、情報テーブルの情報の取得と更新の処理を実行し、アプリケーションプログラム実行制御部101に、論理スレッドの処理にエラーが発生したことを通知する。
ステップS215において、スレッドリソースコントローラ102は、論理スレッド実行制御部105に、論理スレッドの停止要求を供給する。
論理スレッド実行制御部105は、ステップS216において、論理スレッドの停止処理を行い、ステップS217において、スレッドリソースコントローラ102に、論理スレッド停止完了を通知する。
ステップS218において、スレッドリソースコントローラ102は、対応する論理スレッドの処理を分担している、異常が発生していないサブプロセッサ43の全て(ここでは、サブプロセッサ43−1)にサブプロセッサ停止命令を供給する。すなわち、メインプロセッサ42から、バス41を介して、サブプロセッサ43−1にサブプロセッサ停止命令が供給される。
ステップS219において、サブプロセッサ43−1は、処理を停止する。
ステップS220において、以上状態を回復して、動作可能な状態になったサブプロセッサ43−2は、状態が回復し、スレッドの処理の再開が可能であることを、異常検出部47−2に通知する。
異常検出部47−2は、ステップS221において、サブプロセッサ43−2の異常からの回復を検出し、ステップS222において、異常制御部48に対して、サブプロセッサ43−2の回復を通知する。
ステップS223において、異常制御部48は、例えば、サブプロセッサ43−2に所定の信号を送信して、サブプロセッサ43−2の動作を確認する。ステップS224において、サブプロセッサ43−2は、供給された信号に対する応答を異常制御部48に供給するなどして、動作状態が正常であることを異常制御部48に通知する。
ステップS225において、異常制御部48は、異常通知取得部103に、サブプロセッサ43−2の回復を通知する。
異常通知取得部103は、ステップS226において、異常制御部48から供給された異常回復通知の内容を基に、例えば、異常が回復したサブプロセッサを示す情報をサブプロセッサIDに変換するなどの情報変換処理を行い、ステップS227において、スレッドリソースコントローラ102に、サブプロセッサ43−2の異常回復を通知して、論理スレッドの動作再開依頼を供給する。
ステップS228において、スレッドリソースコントローラ102は、動作を再開する論理スレッドを管理するために、全体管理情報テーブル、および、論理スレッド管理情報テーブルの情報の取得と更新を行う。
ステップS229において、スレッドリソースコントローラ102は、生成した論理スレッドの処理を割り当てるサブプロセッサ43のうちの1つ(図18においては、サブプロセッサ43−2)に、対応するプログラムをロードし、初期値を供給して初期データを設定し、プログラムスタート命令を出す。サブプロセッサ43−2は、プログラムスタート命令を受けて、初期化処理を実行し、スレッドリソースコントローラ102に、初期化完了を通知するので、スレッドリソースコントローラ102は、プログラムの実行命令をサブプロセッサ43−2に出力する。
ステップS230において、スレッドリソースコントローラ102は、初期化がなされていないサブプロセッサ43のうちの1つ(図18においては、サブプロセッサ43−1)に対して、上述したステップS229と同等のシーケンスを実行する。すなわち、スレッドリソースコントローラ102は、サブプロセッサ43−1に、対応するプログラムをロードし、初期値を供給して初期データを設定し、プログラムスタート命令を出す。サブプロセッサ43−1は、プログラムスタート命令を受けて、初期化処理を実行し、スレッドリソースコントローラ102に、初期化完了を通知するので、スレッドリソースコントローラ102は、プログラムの実行命令をサブプロセッサ43−1に出力する。
ステップS229およびステップS230の処理は、生成した論理スレッドの処理が割り当てられた全てのサブプロセッサ43の初期化が完了するまで繰り返される。
ステップS231において、スレッドリソースコントローラ102は、アプリケーションプログラム実行制御部101に、論理スレッドの再開を通知する。ステップS232において、アプリケーションプログラム実行制御部101は、アプリケーションプログラムの処理の再開準備を行い、処理を再開する。そして、ステップS233において、スレッドリソースコントローラ102は、論理スレッド実行制御部105に論理スレッドの動作開始を指令する。論理スレッド実行制御部105は、論理スレッドの動作を開始する。なお、論理スレッドの動作再開が、一時停止前の処理の継続であるか、再度初期化から開始されるかは、アプリケーションプログラムに依存する。
そして、スレッドリソースコントローラ102の制御に基づき、サブプロセッサ43-1およびサブプロセッサ43-2において、異常発生前と同一の状態で、論理スレッドの処理が再開され、論理スレッドが終了するまで、処理が実行される。
このような処理により、論理スレッドに属するサブプロセッサ43のうちのいずれかに異常が発生した場合であっても、論理スレッドの処理は停止されることなく、異常が発生したサブプロセッサの回復まで待機され、異常が発生したサブプロセッサが復帰した後、論理スレッドの処理が続行される。
このように、本発明を適用することにより、論理スレッドの処理が複数のサブプロセッサ43において実行され、異常が発生したサブプロセッサ43が属する論理スレッドに対して指定されている異常時対応動作IDに対応して、「停止」、「リソース確保後続行」、「時分割動作続行」、「強制続行」、「正常復帰待機」のそれぞれの処理が実行されるので、1つのサブプロセッサが何らかの要因で止まってしまっても、論理スレッドの機能を必要に応じて停止させるか、または、必ずしも停止させることなく、論理スレッドとして動作している機能を正常な状態に保つことができ、煩雑な処理を行うことなしに、必要に応じて、論理スレッドを再開することができる。
上述した一連の処理は、ソフトウェアにより実行することもできる。そのソフトウェアは、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
この記録媒体は、図1に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク61(フレキシブルディスクを含む)、光ディスク62(CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク63(MD(Mini-Disk)(商標)を含む)、もしくは半導体メモリ64などよりなるパッケージメディアなどにより構成される。
また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
本発明を適用した通信システムの一実施の形態を示す図である。 メインメモリを説明する図である。 サブプロセッサのローカルストレージを説明する図である。 キー管理テーブルを説明する図である。 ソフトウェアセルの構成の例を示す図である。 DMAコマンドがステータス返信コマンドである場合におけるソフトウェアセルのデータ領域の構造を示す図である。 情報処理装置の機能の構成を示すブロック図である。 全体管理情報テーブルについて説明するための図である。 論理スレッド管理情報テーブルについて説明するための図である。 論理スレッドの処理の実行について説明するためのアローチャートである。 異常発生時の処理について説明するための図である。 異常発生時に「停止」される場合の処理について説明するためのアローチャートである。 異常発生時に「リソース確保後続行」される場合の処理について説明するためのアローチャートである。 異常発生時に「時分割動作続行」される場合の処理について説明するためのアローチャートである。 異常発生時に「時分割動作続行」される場合の処理について説明するためのアローチャートである。 異常発生時に「強制続行」される場合の処理について説明するためのアローチャートである。 異常発生時に「正常復帰待機」される場合の処理について説明するためのアローチャートである。 異常発生時に「正常復帰待機」される場合の処理について説明するためのアローチャートである。
符号の説明
1 情報処理装置, 2 ネットワーク, 3 情報処理装置, 11 情報処理コントローラ, 12 メインメモリ, 15 操作入力部, 16 通信部, 42 メインプロセッサ, 43 サブプロセッサ, 47 異常検出部, 48 異常制御部, 51 ローカルストレージ, 101 アプリケーションプログラム実行制御部, 102 スレッドリソースコントローラ, 103 異常通知取得部, 104 論理スレッドスケジューラ, 105 論理スレッド実行制御部

Claims (9)

  1. 第1の情報処理手段と、
    複数の第2の情報処理手段と、
    前記第2の情報処理手段の異常を検出する異常検出手段と
    を備え、
    前記第1の情報処理手段は、
    アプリケーションプログラムの実行を制御するアプリケーションプログラム実行制御手段と、
    前記アプリケーションプログラム実行制御手段の処理により実行が制御される前記アプリケーションプログラムによって、複数の前記第2の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、前記処理単位に対応する前記機能を提供するための分散処理を制御する分散処理制御手段と、
    前記異常検出手段により検出された前記第2の情報処理手段の異常に関する第1の情報を取得する異常情報取得手段と
    を備え、
    前記分散処理制御手段は、
    前記処理単位に依存して設定される、前記異常検出手段により前記第2の情報処理手段の異常が検出された場合の動作を示す第2の情報を記憶し、
    前記異常情報取得手段により、前記第1の情報が取得された場合、前記第2の情報を基に、前記処理単位に対応する前記分散処理を制御する
    ことを特徴とする情報処理装置。
  2. 前記第2の情報に示される、異常が検出された場合の動作には、前記処理単位に対応する全ての前記分散処理を停止させる動作が含まれる
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 前記第2の情報に示される、異常が検出された場合の動作には、前記処理単位に対応する全ての前記分散処理を一旦停止させた後、前記異常検出手段により異常が検出された前記第2の情報処理手段が実行していた前記分散処理を、前記処理単位に対応する前記分散処理を実行していなかった前記第2の情報処理手段に実行させるものとして、前記処理単位に対応する前記分散処理を再開させる動作が含まれる
    ことを特徴とする請求項1に記載の情報処理装置。
  4. 前記第2の情報に示される、異常が検出された場合の動作には、
    前記異常検出手段により異常が検出された前記第2の情報処理手段が実行していた前記処理単位に対応する前記分散処理を停止させ、
    前記処理単位に対応する前記分散処理を実行していた異常が発生していない前記第2の情報処理手段が実行していた前記分散処理を継続させる
    動作が含まれる
    ことを特徴とする請求項1に記載の情報処理装置。
  5. 前記第2の情報に示される、異常が検出された場合の動作には、前記処理単位に対応する全ての前記分散処理を一旦停止させ、前記異常検出手段により異常が検出された前記第2の情報処理手段が動作可能な状態になった後、前記処理単位に対応する前記分散処理を、処理の一旦停止前に前記分散処理を実行していた複数の前記第2の情報処理手段に実行させるものとして、前記処理単位に対応する前記分散処理を再開させる動作が含まれる
    ことを特徴とする請求項1に記載の情報処理装置。
  6. 前記第2の情報に示される、異常が検出された場合の動作には、前記処理単位に対応する全ての前記分散処理を一旦停止させた後、前記処理単位に対応する前記分散処理を実行していた異常が発生していない前記第2の情報処理手段に、処理の一旦停止前に実行していた第1の分散処理とともに、前記異常検出手段により異常が検出された前記第2の情報処理手段が実行していた第2の分散処理を、時分割で実行させるものとして、前記処理単位に対応する前記分散処理を再開させる動作が含まれる
    ことを特徴とする請求項1に記載の情報処理装置。
  7. 前記第1の情報処理手段は、前記第2の情報処理装置のうちのいずれか1つに、前記第1の分散処理と前記第2の分散処理を時分割で実行させる場合の時分割処理を制御する時分割処理制御手段を更に備える
    ことを特徴とする請求項6に記載の情報処理装置。
  8. 第1の情報処理手段と、
    複数の第2の情報処理手段と
    を備える情報処理装置の情報処理方法は、
    前記第1の情報処理手段によるアプリケーションプログラムの実行によって、複数の前記第2の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、前記処理単位に対応する前記機能を提供するための分散処理の開始を要求する分散処理開始要求ステップと、
    前記分散処理を実行している前記第2の情報処理手段の異常を検出する異常検出ステップと、
    前記異常検出ステップの処理により検出された前記第2の情報処理手段の異常に関する第1の情報を取得する異常情報取得ステップと、
    前記異常情報取得ステップの処理により、前記第1の情報が取得された場合、前記処理単位に依存して設定される、異常が検出された場合の動作を示す第2の情報を取得する異常動作情報取得ステップと、
    前記異常動作情報取得ステップの処理により取得された前記第2の情報を基に、前記処理単位に対応する前記分散処理を制御する分散処理制御ステップと
    を含むことを特徴とする情報処理方法。
  9. 第1の情報処理手段と、複数の第2の情報処理手段とにおける分散処理を制御するコンピュータが実行可能なプログラムであって、
    前記第1の情報処理手段によるアプリケーションプログラムの実行によって、複数の前記第2の情報処理手段に割り当てられる複数の処理をまとめて一つの機能を提供する処理単位とし、前記処理単位に対応する前記機能を提供するための分散処理の開始を要求する分散処理開始要求ステップと、
    前記分散処理を実行している前記第2の情報処理手段のうちのいずれかの異常に関する第1の情報を取得する異常情報取得ステップと、
    前記異常情報取得ステップの処理により、前記第1の情報が取得された場合、前記処理単位に依存して設定される、異常が検出された場合の動作を示す第2の情報を取得する異常動作情報取得ステップと、
    前記異常動作情報取得ステップの処理により取得された前記第2の情報を基に、前記処理単位に対応する前記分散処理を制御する分散処理制御ステップと
    を含むことを特徴とする処理をコンピュータに実行させるためのプログラム。
JP2004164089A 2004-06-02 2004-06-02 情報処理装置および情報処理方法、並びに、プログラム Expired - Fee Related JP4315057B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2004164089A JP4315057B2 (ja) 2004-06-02 2004-06-02 情報処理装置および情報処理方法、並びに、プログラム
EP05252978A EP1624375A3 (en) 2004-06-02 2005-05-13 Apparatus, method and program to handle an abnormality in a distributed information processing system
US11/134,764 US20050283673A1 (en) 2004-06-02 2005-05-23 Information processing apparatus, information processing method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004164089A JP4315057B2 (ja) 2004-06-02 2004-06-02 情報処理装置および情報処理方法、並びに、プログラム

Publications (2)

Publication Number Publication Date
JP2005346328A JP2005346328A (ja) 2005-12-15
JP4315057B2 true JP4315057B2 (ja) 2009-08-19

Family

ID=35447224

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004164089A Expired - Fee Related JP4315057B2 (ja) 2004-06-02 2004-06-02 情報処理装置および情報処理方法、並びに、プログラム

Country Status (3)

Country Link
US (1) US20050283673A1 (ja)
EP (1) EP1624375A3 (ja)
JP (1) JP4315057B2 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4086611B2 (ja) * 2002-10-02 2008-05-14 三洋電機株式会社 記録制御装置、方法、およびその記録制御方法を利用可能な記録媒体
US8028200B2 (en) * 2006-09-29 2011-09-27 Sap Ag Tracing operations in multiple computer systems
US8037458B2 (en) * 2006-09-29 2011-10-11 Sap Ag Method and system for providing a common structure for trace data
US7954011B2 (en) * 2006-09-29 2011-05-31 Sap Ag Enabling tracing operations in clusters of servers
US7979850B2 (en) * 2006-09-29 2011-07-12 Sap Ag Method and system for generating a common trace data format
US7941789B2 (en) * 2006-09-29 2011-05-10 Sap Ag Common performance trace mechanism
JP4937022B2 (ja) * 2007-07-13 2012-05-23 株式会社東芝 順序関係解析装置、方法及びプログラム
US8776038B2 (en) 2008-08-07 2014-07-08 Code Systems Corporation Method and system for configuration of virtualized software applications
US8434093B2 (en) 2008-08-07 2013-04-30 Code Systems Corporation Method and system for virtualization of software applications
US8954958B2 (en) 2010-01-11 2015-02-10 Code Systems Corporation Method of configuring a virtual application
US8959183B2 (en) 2010-01-27 2015-02-17 Code Systems Corporation System for downloading and executing a virtual application
US9104517B2 (en) 2010-01-27 2015-08-11 Code Systems Corporation System for downloading and executing a virtual application
US9229748B2 (en) 2010-01-29 2016-01-05 Code Systems Corporation Method and system for improving startup performance and interoperability of a virtual application
US8763009B2 (en) 2010-04-17 2014-06-24 Code Systems Corporation Method of hosting a first application in a second application
US9218359B2 (en) 2010-07-02 2015-12-22 Code Systems Corporation Method and system for profiling virtual application resource utilization patterns by executing virtualized application
JP2012053504A (ja) * 2010-08-31 2012-03-15 Hitachi Ltd ブレード型サーバ装置
US9021015B2 (en) 2010-10-18 2015-04-28 Code Systems Corporation Method and system for publishing virtual applications to a web server
US9209976B2 (en) 2010-10-29 2015-12-08 Code Systems Corporation Method and system for restricting execution of virtual applications to a managed process environment
JP2016091076A (ja) * 2014-10-30 2016-05-23 日本電気株式会社 情報処理装置
US10585755B2 (en) 2016-11-29 2020-03-10 Ricoh Company, Ltd. Electronic apparatus and method for restarting a central processing unit (CPU) in response to detecting an abnormality
CN110554891A (zh) * 2018-05-31 2019-12-10 北京京东尚科信息技术有限公司 系统框架切换方法与装置
JP2021190013A (ja) * 2020-06-04 2021-12-13 株式会社東海理化電機製作所 制御装置、プログラム、およびシステム

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4710926A (en) * 1985-12-27 1987-12-01 American Telephone And Telegraph Company, At&T Bell Laboratories Fault recovery in a distributed processing system
US4949254A (en) * 1988-09-29 1990-08-14 Ibm Corp. Method to manage concurrent execution of a distributed application program by a host computer and a large plurality of intelligent work stations on an SNA network
US5062037A (en) * 1988-10-24 1991-10-29 Ibm Corp. Method to provide concurrent execution of distributed application programs by a host computer and an intelligent work station on an sna network
JPH02287858A (ja) * 1989-04-28 1990-11-27 Toshiba Corp 分散処理システムのリスタート方式
US5369767A (en) * 1989-05-17 1994-11-29 International Business Machines Corp. Servicing interrupt requests in a data processing system without using the services of an operating system
US5715386A (en) * 1992-09-30 1998-02-03 Lucent Technologies Inc. Apparatus and methods for software rejuvenation
US6304957B1 (en) * 1993-02-26 2001-10-16 Nippondenso Co., Ltd. Multitask processing unit
US5504670A (en) * 1993-03-31 1996-04-02 Intel Corporation Method and apparatus for allocating resources in a multiprocessor system
GB2290891B (en) * 1994-06-29 1999-02-17 Mitsubishi Electric Corp Multiprocessor system
JP3154942B2 (ja) * 1995-09-11 2001-04-09 株式会社東芝 分散チェックポイント生成方法および同方法が適用される計算機システム
US5805785A (en) * 1996-02-27 1998-09-08 International Business Machines Corporation Method for monitoring and recovery of subsystems in a distributed/clustered system
JP3541335B2 (ja) * 1996-06-28 2004-07-07 富士通株式会社 情報処理装置及び分散処理制御方法
KR100252250B1 (ko) * 1996-06-28 2000-04-15 윤종용 시스템복구장치
US6178529B1 (en) * 1997-11-03 2001-01-23 Microsoft Corporation Method and system for resource monitoring of disparate resources in a server cluster
US6334178B1 (en) * 1998-08-31 2001-12-25 International Business Machines Corporation Multiprocessing system with automated propagation of changes to centrally maintained configuration settings
GB2348978A (en) * 1999-04-09 2000-10-18 Pixelfusion Ltd Parallel redundant data processing apparatus
US6708291B1 (en) * 2000-05-20 2004-03-16 Equipe Communications Corporation Hierarchical fault descriptors in computer systems
US7020797B2 (en) * 2001-09-10 2006-03-28 Optimyz Software, Inc. Automated software testing management system
US20030103310A1 (en) * 2001-12-03 2003-06-05 Shirriff Kenneth W. Apparatus and method for network-based testing of cluster user interface
WO2003048961A1 (en) * 2001-12-04 2003-06-12 Powerllel Corporation Parallel computing system, method and architecture
US7437713B2 (en) * 2002-01-10 2008-10-14 Microsoft Corporation Automated system that tests software on multiple computers
US6983400B2 (en) * 2002-05-16 2006-01-03 Sun Microsystems Inc. Distributed test harness model
US7159211B2 (en) * 2002-08-29 2007-01-02 Indian Institute Of Information Technology Method for executing a sequential program in parallel with automatic fault tolerance
JP4051703B2 (ja) * 2003-03-31 2008-02-27 日本電気株式会社 シングルプロセッサ向けosによる並列処理システム、並列処理プログラム
US7178065B2 (en) * 2003-04-02 2007-02-13 Sun Microsystems, Inc. System and method for measuring performance with distributed agents
US7257734B2 (en) * 2003-07-17 2007-08-14 International Business Machines Corporation Method and apparatus for managing processors in a multi-processor data processing system

Also Published As

Publication number Publication date
EP1624375A2 (en) 2006-02-08
EP1624375A3 (en) 2009-09-09
JP2005346328A (ja) 2005-12-15
US20050283673A1 (en) 2005-12-22

Similar Documents

Publication Publication Date Title
JP4315057B2 (ja) 情報処理装置および情報処理方法、並びに、プログラム
US10585704B2 (en) System and method of providing system jobs within a compute environment
US7080225B1 (en) Method and apparatus for managing migration of data in a computer system
US8086880B2 (en) Information processing apparatus, information processing method, and computer program
US8468383B2 (en) Reduced power failover system
EP3125116A1 (en) Method and system for managing virtual and real machines
US7296050B2 (en) Distributed computing system and method
US20080140756A1 (en) Information Processing System, Information Processing Apparatus, Information Processing Method, Recording Medium, and Program
CN113569987A (zh) 模型训练方法和装置
US7376764B1 (en) Method and apparatus for migrating data in a computer system
CN109558260A (zh) Kubernetes故障排除系统、方法、设备及介质
JP2007226646A (ja) ストレージシステム
US8943337B1 (en) Power management within a data protection system
US8499080B2 (en) Cluster control apparatus, control system, control method, and control program
JP2006031525A (ja) 情報処理装置および情報処理方法、並びに、プログラム
CN111290767B (zh) 具有业务快速恢复功能的容器组更新方法及系统
CN114816272B (zh) Kubernetes环境下的磁盘管理系统
CN115617459A (zh) 一种用于资源调度的方法、装置及设备
CN114579364A (zh) 一种基于混合云的云原生数据库备份方法
CN114416129A (zh) 一种数据处理系统
CN113296892B (zh) 开发环境的休眠方法、装置、电子设备及存储介质
JPH09319720A (ja) 分散プロセス管理システム
CN114780170B (zh) 容器资源的配置方法、装置、设备及存储介质
US11675678B1 (en) Managing storage domains, service tiers, and failed service tiers
US20230305876A1 (en) Managing storage domains, service tiers, and failed servers

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070412

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090316

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090428

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090511

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120529

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees