(57)【要約】【課題】利用可能なパスのうちの最速なパスを利用して機能パイプライン処理を実行または制御できるようにする。【解決手段】  機能ブロックPa1乃至Pa10からなる機能パイプライン処理の実行を制御する処理実行依頼装置２は、「処理実行依頼装置２→他の情報処理装置３」というパス１と、「処理実行依頼装置２→他の情報処理装置４」というパス２とを経路候補として設定する。処理実行依頼装置２は、パス１とパス２とを使用して機能パイプライン処理を一旦実行させる。処理実行依頼装置２は、２つの経路候補のうちのデータが最速に通過した方を、正式経路に設定する。それ以降、処理実行依頼装置２は、正式経路を利用して機能パイプライン処理を実行させる。本発明は、複数の情報処理装置で機能パイプライン処理を行う情報処理システムに適用可能である。【選択図】図３１
2006079280.tif 000002
【特許請求の範囲】
【請求項１】
３以上の情報処理装置から構成され、
所定の１単位量のデータが入力される毎に、そのデータに対する複数の機能ブロックのそれぞれの処理が第１の順番で順次実行されていく機能パイプライン処理を実行するために、
３以上の前記情報処理装置のうちの２以上のそれぞれが第２の順番で仮想的に配置されて形成される経路を設定し、
前記経路に含まれる２以上の前記情報処理装置のそれぞれが利用可能な各プロセッサのそれぞれに対して、前記第１の順番と前記第２の順番とに応じて、複数の前記機能ブロックのうちの１以上の処理を割り当てる第１の制御を行い、
その後、所定のデータを前記１単位量毎に前記経路に順次通過させていく第２の制御を行う情報処理システムにおいて、
３以上の前記情報処理装置のうちの所定の情報処理装置は、
３以上の前記情報処理装置のそれぞれが利用可能なプロセッサの個数に基づいて、前記経路の候補を２以上設定する候補設定手段と、
前記機能パイプライン処理を実行させるために、前記候補設定手段により設定された２以上の前記候補のそれぞれを個別に利用して前記第１の制御と前記第２の制御とを行う第１の制御手段と、
前記候補設定手段により設定された２以上の前記候補のうちの、前記第１の制御手段の前記第２の制御により前記１単位量のデータが最速に通過した候補を、前記経路として設定する経路設定手段と、
前記経路設定手段により前記経路が設定された以降、前記機能パイプライン処理を実行させるために、前記経路を利用して前記第２の制御を行う第２の制御手段と
を備えることを特徴とする情報処理システム。
【請求項２】
３以上の情報処理装置から構成され、
所定の１単位量のデータが入力される毎に、そのデータに対する複数の機能ブロックのそれぞれの処理が第１の順番で順次実行されていく機能パイプライン処理を実行するために、
３以上の前記情報処理装置のうちの２以上のそれぞれが第２の順番で仮想的に配置されて形成される経路を設定し、
前記経路に含まれる２以上の前記情報処理装置のそれぞれが利用可能な各プロセッサのそれぞれに対して、前記第１の順番と前記第２の順番とに応じて、複数の前記機能ブロックのうちの１以上の処理を割り当てる第１の制御を行い、
その後、所定のデータを前記１単位量毎に前記経路に順次通過させていく第２の制御を行う情報処理システムの情報処理方法において、
３以上の前記情報処理装置のうちの所定の情報処理装置が、
３以上の前記情報処理装置のそれぞれが利用可能なプロセッサの個数に基づいて、前記経路の候補を２以上設定し、
前記機能パイプライン処理を実行させるために、設定された２以上の前記候補のそれぞれを個別に利用して前記第１の制御と前記第２の制御とを行い、
設定された２以上の前記候補のうちの、前記第２の制御により前記１単位量のデータが最速に通過した候補を、前記経路として設定し、
前記経路が設定された以降、前記機能パイプライン処理を実行させるために、前記経路を利用して前記第２の制御を行う
ことを特徴とする情報処理方法。
【請求項３】
３以上の情報処理装置から構成され、
所定の１単位量のデータが入力される毎に、そのデータに対する複数の機能ブロックのそれぞれの処理が第１の順番で順次実行されていく機能パイプライン処理を実行するために、
３以上の前記情報処理装置のうちの２以上のそれぞれが第２の順番で仮想的に配置されて形成される経路を設定し、
前記経路に含まれる２以上の前記情報処理装置のそれぞれが利用可能な各プロセッサのそれぞれに対して、前記第１の順番と前記第２の順番とに応じて、複数の前記機能ブロックのうちの１以上の処理を割り当てる第１の制御を行い、
その後、所定のデータを前記１単位量毎に前記経路に順次通過させていく第２の制御を行う情報処理システム
を構成する３以上の前記情報処理装置のうちの所定の１つにおいて、
３以上の前記情報処理装置のそれぞれが利用可能なプロセッサの個数に基づいて、前記経路の候補を２以上設定する候補設定手段と、
前記機能パイプライン処理を実行させるために、前記候補設定手段により設定された２以上の前記候補のそれぞれを個別に利用して前記第１の制御と前記第２の制御とを行う第１の制御手段と、
前記候補設定手段により設定された２以上の前記候補のうちの、前記第１の制御手段の前記第２の制御により前記１単位量のデータが最速に通過した候補を、前記経路として設定する経路設定手段と、
前記経路設定手段により前記経路が設定された以降、前記機能パイプライン処理を実行させるために、前記経路を利用して前記第２の制御を行う第２の制御手段と
を備えることを特徴とする情報処理装置。
【請求項４】
前記経路設定手段は、さらに、所定の条件が満たされた場合、２以上の前記候補のうちの前記経路としてまだ設定されていない候補の中から、前記経路を再設定し、
前記第２の制御手段は、さらに、前記経路設定手段により前記経路が再設定された以降、前記機能パイプライン処理を実行させるために、再設定された前記経路を利用して前記第２の制御を行う
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
３以上の情報処理装置から構成され、
所定の１単位量のデータが入力される毎に、そのデータに対する複数の機能ブロックのそれぞれの処理が第１の順番で順次実行されていく機能パイプライン処理を実行するために、
３以上の前記情報処理装置のうちの２以上のそれぞれが第２の順番で仮想的に配置されて形成される経路を設定し、
前記経路に含まれる２以上の前記情報処理装置のそれぞれが利用可能な各プロセッサのそれぞれに対して、前記第１の順番と前記第２の順番とに応じて、複数の前記機能ブロックのうちの１以上の処理を割り当てる第１の制御を行い、
その後、所定のデータを前記１単位量毎に前記経路に順次通過させていく第２の制御を行う情報処理システム
を構成する３以上の前記情報処理装置のうちの所定の１つの情報処理方法において、
３以上の前記情報処理装置のそれぞれが利用可能なプロセッサの個数に基づいて、前記経路の候補を２以上設定する候補設定ステップと、
前記機能パイプライン処理を実行させるために、前記候補設定ステップの処理により設定された２以上の前記候補のそれぞれを個別に利用して前記第１の制御と前記第２の制御とを行う第１の制御ステップと、
前記候補設定ステップの処理により設定された２以上の前記候補のうちの、前記第１の制御ステップの処理に基づく前記第２の制御により前記１単位量のデータが最速に通過した候補を、前記経路として設定する経路設定ステップと、
前記経路設定ステップの処理により前記経路が設定された以降、前記機能パイプライン処理を実行させるために、前記経路を利用して前記第２の制御を行う第２の制御ステップと
を含むことを特徴とする情報処理方法。
【請求項６】
３以上の情報処理装置から構成され、
所定の１単位量のデータが入力される毎に、そのデータに対する複数の機能ブロックのそれぞれの処理が第１の順番で順次実行されていく機能パイプライン処理を実行するために、
３以上の前記情報処理装置のうちの２以上のそれぞれが第２の順番で仮想的に配置されて形成される経路を設定し、
前記経路に含まれる２以上の前記情報処理装置のそれぞれが利用可能な各プロセッサのそれぞれに対して、前記第１の順番と前記第２の順番とに応じて、複数の前記機能ブロックのうちの１以上の処理を割り当てる第１の制御を行い、
その後、所定のデータを前記１単位量毎に前記経路に順次通過させていく第２の制御を行う情報処理システム
を構成する３以上の前記情報処理装置のうちの少なくとも１つを制御するコンピュータに実行させるプログラムであって、
３以上の前記情報処理装置のそれぞれが利用可能なプロセッサの個数に基づいて、前記経路の候補を２以上設定する候補設定ステップと、
前記機能パイプライン処理を実行させるために、前記候補設定ステップの処理により設定された２以上の前記候補のそれぞれを個別に利用して前記第１の制御と前記第２の制御を行う第１の制御ステップと、
前記候補設定ステップの処理により設定された２以上の前記候補のうちの、前記第１の制御ステップの処理に基づく前記第２の制御により前記１単位量のデータが最速に通過した候補を、前記経路として設定する経路設定ステップと、
前記経路設定ステップの処理により前記経路が設定された以降、前記機能パイプライン処理を実行させるために、前記経路を利用して前記第２の制御を行う第２の制御ステップと
を含むことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システムおよび方法、情報処理装置および方法、並びにプログラムに関し、特に、利用可能なパスのうちの最速なパスを利用して機能パイプライン処理を実行または制御することができる、情報処理システムおよび方法、情報処理装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
近年、グリッドコンピューティングが注目されている。グリッドコンピューティングとは、ネットワークにつながる複数の情報処理装置を協調動作させて高い演算性能を実現する技術である。この技術は例えば、特許文献１乃至５に開示されている。
【０００３】
そこで、この技術を利用することで、複数の情報処理装置を利用した機能パイプライン処理の実行が可能になる、と本発明人は思想した。
【０００４】
機能パイプライン処理とは、次の処理を指す。即ち、所定の１単位量のデータに対する所定の処理を自立的に（他とは独立して）実行する複数の機能ブロックのそれぞれの処理順番が予め決定されており、複数の機能ブロックのうちの１番目の機能ブロックに１単位量のデータが入力される毎に、そのデータに対する複数の機能ブロックのそれぞれの処理が上述した処理順番で順次実行されていく処理が、機能パイプライン処理である。なお、機能ブロックの処理は、タスクやプロセスと称されることもある。
【特許文献１】特開２００２−３４２１６５号公報
【特許文献２】特開２００２−３５１８５０号公報
【特許文献３】特開２００２−３５８２８９号公報
【特許文献４】特開２００２−３６６５３３号公報
【特許文献５】特開２００２−３６６５３４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１乃至５等の従来の技術を単体または組合せで利用して、この機能パイプライン処理が実行された場合、次のような課題が発生する。
【０００６】
即ち、特許文献１乃至５等の従来の技術を単体または組合せで利用して、この機能パイプライン処理が実行される場合、そのパス（経路）は固定される。経路とは、この機能パイプライン処理が複数の情報処理装置により実行される場合、複数の情報処理装置がその処理順番で仮想的に配置されて形成されるデータの伝送経路を指す。
【０００７】
しかしながら、複数の情報処理装置のそれぞれのプロセッサの負荷率や、ネットワーク上の帯域等の制限によって、固定パス上での機能パイプライン処理が必ずしも最速にはならない、という課題が発生する。
【０００８】
また、ネットワーク上において固定パスに含まれる情報処理装置に障害が生じた場合、それ以降の機能パイプライン処理の実現が不可能になる、という課題も発生する。
【０００９】
本発明は、このような状況に鑑みてなされたものであり、利用可能なパスのうちの最速なパスを利用して機能パイプライン処理を実行または制御することができるようにするものである。
【課題を解決するための手段】
【００１０】
本発明の情報処理システムは、３以上の情報処理装置から構成される。この本発明の情報処理システムは、所定の１単位量のデータが入力される毎にそのデータに対する複数の機能ブロックのそれぞれの処理が第１の順番で順次実行されていく機能パイプライン処理を実行するために、３以上の情報処理装置のうちの２以上のそれぞれが第２の順番で仮想的に配置されて形成される経路を設定し、経路に含まれる２以上の情報処理装置のそれぞれが利用可能な各プロセッサのそれぞれに対して、第１の順番と第２の順番とに応じて、複数の機能ブロックのうちの１以上の処理を割り当てる第１の制御を行い、その後、所定のデータを１単位量毎に経路に順次通過させていく第２の制御を行う。詳細には、本発明の情報処理システムは、次のことを特徴とする。即ち、３以上の情報処理装置のうちの所定の情報処理装置は、３以上の情報処理装置のそれぞれが利用可能なプロセッサの個数に基づいて、経路の候補を２以上設定する候補設定手段と、機能パイプライン処理を実行させるために、候補設定手段により設定された２以上の候補のそれぞれを個別に利用して第１の制御と第２の制御とを行う第１の制御手段と、候補設定手段により設定された２以上の候補のうちの、第１の制御手段の第２の制御により１単位量のデータが最速に通過した候補を、経路として設定する経路設定手段と、経路設定手段により経路が設定された以降、機能パイプライン処理を実行させるために、設定された経路を利用して第２の制御を行う第２の制御手段とを備えることを特徴とする。
【００１１】
本発明の情報処理システムの情報処理方法は、３以上の情報処理装置から構成される情報処理システムの情報処理方法である。この本発明の情報処理システムは、所定の１単位量のデータが入力される毎にそのデータに対する複数の機能ブロックのそれぞれの処理が第１の順番で順次実行されていく機能パイプライン処理を実行するために、３以上の情報処理装置のうちの２以上のそれぞれが第２の順番で仮想的に配置されて形成される経路を設定し、経路に含まれる２以上の情報処理装置のそれぞれが利用可能な各プロセッサのそれぞれに対して、第１の順番と第２の順番とに応じて、複数の機能ブロックのうちの１以上の処理を割り当てる第１の制御を行い、その後、所定のデータを１単位量毎に経路に順次通過させていく第２の制御を行う情報処理システムの情報処理方法である。詳細には、次のことを特徴とする。即ち、３以上の情報処理装置のうちの所定の情報処理装置が、３以上の情報処理装置のそれぞれが利用可能なプロセッサの個数に基づいて、経路の候補を２以上設定し、機能パイプライン処理を実行させるために、設定された２以上の候補のそれぞれを個別に利用して第１の制御と第２の制御とを行い、設定された２以上の候補のうちの、第２の制御により１単位量のでーたが最速に通過した候補を、経路として設定し、経路が設定された以降、機能パイプライン処理を実行させるために、設定された経路を利用して第２の制御を行うことを特徴とする。
【００１２】
本発明の情報処理システムおよび方法においては、所定の１単位量のデータが入力される毎にそのデータに対する複数の機能ブロックのそれぞれの処理が第１の順番で順次実行されていく、といった機能パイプライン処理が実行される。即ち、情報処理システムを構成する３以上の情報処理装置のうちの２以上のそれぞれが第２の順番で仮想的に配置されて形成される経路が設定され、その経路に含まれる２以上の情報処理装置のそれぞれが利用可能な各プロセッサのそれぞれに対して、第１の順番と第２の順番とに応じて、複数の機能ブロックのうちの１以上の処理を割り当てる第１の制御が行われ、その後、所定のデータを１単位量毎に経路に順次通過させていく第２の制御が行われることで、機能パイプライン処理が実行される。詳細には、３以上の情報処理装置のそれぞれが利用可能なプロセッサの個数に基づいて経路の候補が２以上設定され、設定された２以上の候補のそれぞれを個別に利用する第１の制御と第２の制御が行われて機能パイプライン処理が一旦実行され、設定された２以上の候補のうちの、第２の制御により１単位量のデータが最速に通過した候補、即ち、一旦実行された機能パイプライン処理の結果を最速に出力した候補が、経路として設定される。そして、それ以降、設定された経路を利用する第２の制御が行われて機能パイプライン処理が実行される。
【００１３】
本発明の情報処理装置は、次のような情報処理システムを構成する３以上の情報処理装置のうちの所定の１つである。即ち、所定の１単位量のデータが入力される毎にそのデータに対する複数の機能ブロックのそれぞれの処理が第１の順番で順次実行されていく機能パイプライン処理を実行するために、３以上の情報処理装置のうちの２以上のそれぞれが第２の順番で仮想的に配置されて形成される経路を設定し、経路に含まれる２以上の情報処理装置のそれぞれが利用可能な各プロセッサのそれぞれに対して、第１の順番と第２の順番とに応じて、複数の機能ブロックのうちの１以上の処理を割り当てる第１の制御を行い、その後、所定のデータを１単位量毎に経路に順次通過させていく第２の制御を行う、という情報処理システムが、本発明の情報処理装置が含まれる情報処理システムである。詳細には、この本発明の情報処理装置は、３以上の情報処理装置のそれぞれが利用可能なプロセッサの個数に基づいて、経路の候補を２以上設定する候補設定手段と、機能パイプライン処理を実行させるために、候補設定手段により設定された２以上の候補のそれぞれを利用して第１の制御と第２の制御とを行う第１の制御手段と、候補設定手段により設定された２以上の候補のうちの、第１の制御手段の第２の制御により１単位量のデータが最速に通過した候補を、経路として設定する経路設定手段と、経路設定手段により経路が設定された以降、機能パイプライン処理を実行させるために、経路を利用して第２の制御を行う第２の制御手段とを備えることを特徴とする。
【００１４】
経路設定手段は、さらに、所定の条件が満たされた場合、２以上の候補のうちの経路としてまだ設定されていない候補の中から、経路を再設定し、第２の制御手段は、さらに、経路設定手段により経路が再設定された以降、機能パイプライン処理を実行させるために、再設定された経路を利用して第２の制御を行うようにすることができる。
【００１５】
本発明の情報処理方法は、次のような情報処理システムを構成する３以上の情報処理装置のうちの所定の１つの情報処理装置の情報処理方法である。即ち、３以上の情報処理装置から構成される。この本発明の情報処理システムは、所定の１単位量のデータが入力される毎にそのデータに対する複数の機能ブロックのそれぞれの処理が第１の順番で順次実行されていく機能パイプライン処理を実行するために、３以上の情報処理装置のうちの２以上のそれぞれが第２の順番で仮想的に配置されて形成される経路を設定し、経路に含まれる２以上の情報処理装置のそれぞれが利用可能な各プロセッサのそれぞれに対して、第１の順番と第２の順番とに応じて、複数の機能ブロックのうちの１以上の処理を割り当てる第１の制御を行い、その後、所定のデータを１単位量毎に経路に順次通過させていく第２の制御を行う、という情報処理システムが、本発明の情報処理方法の対象になる。詳細には、本発明の情報処理方法は、３以上の情報処理装置のそれぞれが利用可能なプロセッサの個数に基づいて、経路の候補を２以上設定する候補設定ステップと、機能パイプライン処理を実行させるために、候補設定ステップの処理により設定された２以上の候補のそれぞれを利用して第１の制御と第２の制御とを行う第１の制御ステップと、候補設定ステップの処理により設定された２以上の候補のうちの、第１の制御ステップの処理に基づく第２の制御により１単位量のデータが最速に通過した候補を、経路として設定する経路設定ステップと、経路設定ステップの処理により経路が設定された以降、機能パイプライン処理を実行させるために、経路を利用して第２の制御を行う第２の制御ステップとを含むことを特徴とする。
【００１６】
本発明のプログラムは、次のような情報処理システムを構成する３以上の情報処理装置のうちの少なくとも１つを制御するコンピュータに実行させるプログラムである。即ち、３以上の情報処理装置から構成される。この本発明の情報処理システムは、所定の１単位量のデータが入力される毎にそのデータに対する複数の機能ブロックのそれぞれの処理が第１の順番で順次実行されていく機能パイプライン処理を実行するために、３以上の情報処理装置のうちの２以上のそれぞれが第２の順番で仮想的に配置されて形成される経路を設定し、経路に含まれる２以上の情報処理装置のそれぞれが利用可能な各プロセッサのそれぞれに対して、第１の順番と第２の順番とに応じて、複数の機能ブロックのうちの１以上の処理を割り当てる第１の制御を行い、その後、所定のデータを１単位量毎に経路に順次通過させていく第２の制御を行う、という情報処理システムが、本発明のプログラムの対象となる。詳細には、本発明のプログラムは、３以上の情報処理装置のそれぞれが利用可能なプロセッサの個数に基づいて、経路の候補を２以上設定する候補設定ステップと、機能パイプライン処理を実行させるために、候補設定ステップの処理により設定された２以上の候補のそれぞれを利用して第１の制御と第２の制御とを行う第１の制御ステップと、候補設定ステップの処理により設定された２以上の候補のうちの、第１の制御ステップの処理に基づく第２の制御により１単位量のデータが最速に通過した候補を、経路として設定する経路設定ステップと、経路設定ステップの処理により経路が設定された以降、機能パイプライン処理を実行させるために、設定された経路を利用して第２の制御を行う第２の制御ステップとを含むことを特徴とする。
【００１７】
本発明の情報処理装置および方法、並びにプログラムにおいては、所定の１単位量のデータが入力される毎に、そのデータに対する複数の機能ブロックのそれぞれの処理が第１の順番で順次実行されていく機能パイプライン処理の実行が制御される。即ち、情報処理システムを構成する３以上の情報処理装置の中から２以上の情報処理装置を選択し、２以上の情報処理装置のそれぞれが第２の順番で仮想的に配置されて形成される経路を設定し、２以上の情報処理装置のそれぞれが利用可能な各プロセッサのそれぞれに対して、第１の順番と第２の順番とに応じて、複数の機能ブロックのうちの１以上の処理を割り当てる第１の制御が行われ、その後、所定のデータを１単位量毎に経路に順次通過させる第２の制御が行われることで機能パイプライン処理が実行される。詳細には、３以上の情報処理装置のそれぞれが利用可能なプロセッサの個数に基づいて、経路の候補が２以上設定され、設定された２以上の候補のそれぞれを個別に利用する第１の制御と第２の制御とが行われることで機能パイプライン処理が一旦実行され、設定された２以上の候補のうちの、第２の制御により１単位量のデータが最速に通過した候補、即ち、一旦実行された機能パイプライン処理の結果を最速に出力した候補が、経路として設定される。そして、それ以降、設定された経路を利用する第２の制御が実行されることで、機能パイプライン処理が実行される。
【発明の効果】
【００１８】
以上のごとく、本発明によれば、複数の情報処理装置を含む所定のパス（経路）を利用して機能パイプライン処理を実行または制御することができる。特に、利用可能なパスのうちの最速なパスを利用して機能パイプライン処理を実行または制御することができる。
【発明を実施するための最良の形態】
【００１９】
以下に本発明の実施の形態を説明するが、請求項に記載の構成要件と、発明の実施の形態における具体例との対応関係を例示すると、次のようになる。この記載は、請求項に記載されている発明をサポートする具体例が、発明の実施の形態に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、構成要件に対応するものとして、ここには記載されていない具体例があったとしても、そのことは、その具体例が、その構成要件に対応するものではないことを意味するものではない。逆に、具体例が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その具体例が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００２０】
さらに、この記載は、発明の実施の形態に記載されている具体例に対応する発明が、請求項に全て記載されていることを意味するものではない。換言すれば、この記載は、発明の実施の形態に記載されている具体例に対応する発明であって、この出願の請求項には記載されていない発明の存在、すなわち、将来、分割出願されたり、補正により追加される発明の存在を否定するものではない。
【００２１】
本発明によれば、情報処理システムが提供される。この情報処理システム（例えば図１の情報処理システムであって、具体的には例えば、図７の仮想的な１台の情報処理装置６１として動作する情報処理システム）は、３以上の情報処理装置（例えば、４台の図７の情報処理装置１乃至４）から構成され、所定の１単位量のデータが入力される毎に、そのデータに対する複数の機能ブロック（例えば、図１２の機能ブロックPa1乃至Pa10）のそれぞれの処理が第１の順番で順次実行されていく機能パイプライン処理を実行するために、３以上の前記情報処理装置のうちの２以上のそれぞれが第２の順番で仮想的に配置されて形成される経路を設定し、前記経路に含まれる２以上の前記情報処理装置のそれぞれが利用可能な各プロセッサのそれぞれに対して、前記第１の順番と前記第２の順番とに応じて、複数の前記機能ブロックのうちの１以上の処理を割り当てる第１の制御を行い、その後、所定のデータを前記１単位量毎に前記経路に順次通過させていく第２の制御を行う情報処理システムである。詳細には、３以上の前記情報処理装置のうちの所定の情報処理装置（例えば、後述する処理実行依頼装置であって、図１５の例では、情報処理装置２）は、３以上の前記情報処理装置のそれぞれが利用可能なプロセッサの個数（例えば、図１７の経路選択テーブルの「空きプロセッサ数」の項目の記述値）に基づいて、前記経路の候補（例えば、図２１に示される「ID2の情報処理装置２→ID3の情報処理装置３」というパス１と、「ID2の情報処理装置２→ID4の情報処理装置４」というパス２）を２以上設定する候補設定手段（例えば、図１５の経路候補設定部８１）と、前記機能パイプライン処理を実行させるために、前記候補設定手段により設定された２以上の前記候補のそれぞれを利用して前記第１の制御と前記第２の制御とを行う第１の制御手段（例えば、図１５の経路候補機能パイプライン制御部８２）と、前記候補設定手段により設定された２以上の前記候補のうちの、前記第１の制御手段の前記第２の制御により前記１単位量のデータが最速に通過した候補を、前記経路として設定する経路設定手段（例えば、図１５の正式経路設定部８３）と、前記経路設定手段により前記経路が設定された以降、前記機能パイプライン処理を実行させるために、前記経路を利用して前記第２の制御を行う第２の制御手段（例えば、図１５の正式経路機能パイプライン制御部８４）とを備えることを特徴とする。
【００２２】
本発明によれば、情報処理システムの情報処理方法が提供される。この情報処理方法は、上述した本発明の情報処理システムの情報処理方法であって、本発明の情報処理システムを構成する３以上の前記情報処理装置のうちの所定の情報処理装置が、３以上の前記情報処理装置のそれぞれが利用可能なプロセッサの個数に基づいて、前記経路の候補を２以上設定し（例えば、図１４のステップＳ１２４の「経路選択処理」であって、具体的には例えば図１８と図１９のフローチャートに従う「経路選択処理」を実行し）、前記機能パイプライン処理を実行させるために、設定された２以上の前記候補のそれぞれを利用して前記第１の制御と前記第２の制御とを行い（例えば、図１４のステップＳ１２５の「パイプライン実行処理」のうちの、図２９のステップＳ３２１０乃至Ｓ３２４０の処理を行い）、設定された２以上の前記候補のうちの、前記第２の制御により前記１単位量のデータが最速に通過した候補（例えば、図２９の例では、「処理実行依頼装置２→他の情報処理装置３」というパス１）を、前記経路として設定し（例えば、図１４のステップＳ１２５の「パイプライン実行処理」のうちの、図２９のステップＳ３２５０の処理を行い）、前記経路が設定された以降、前記機能パイプライン処理を実行させるために、前記経路を利用して前記第２の制御を行う（例えば、図１４のステップＳ１２５の「パイプライン実行処理」のうちの、図２９のステップＳ３２６０以降の処理を行う）ことを特徴とする。
【００２３】
本発明によれば、情報処理装置が提供される。この情報処理装置は、上述した本発明の情報処理システムを構成する３以上の情報処理装置のうちの所定の１つ（例えば、図１５の処理実行依頼装置２）である。この情報処理装置は、３以上の前記情報処理装置のそれぞれが利用可能なプロセッサの個数に基づいて、前記経路の候補を２以上設定する候補設定手段（例えば、図１５の経路候補設定部８１）と、前記機能パイプライン処理を実行させるために、前記候補設定手段により設定された２以上の前記候補のそれぞれを利用して前記第１の制御と前記第２の制御とを行う第１の制御手段（例えば、図１５の経路候補機能パイプライン制御部８２）と、前記候補設定手段により設定された２以上の前記候補のうちの、前記第１の制御手段の前記第２の制御により前記１単位量のデータが最速に通過した候補を、前記経路として設定する経路設定手段（例えば、図１５の正式経路設定部８３）と、前記経路設定手段により前記経路が設定された以降、前記機能パイプライン処理を実行させるために、前記経路を利用して前記第２の制御を行う第２の制御手段（例えば、図１５の正式経路機能パイプライン制御部８４）とを備えることを特徴とする。
【００２４】
この情報処理装置において、前記経路設定手段は、さらに、所定の条件が満たされた場合、２以上の前記候補のうちの前記経路としてまだ設定されていない候補の中から、前記経路を再設定し、前記第２の制御手段は、さらに、前記経路設定手段により前記経路が再設定された以降、前記機能パイプライン処理を実行させるために、再設定された前記経路を利用して前記第２の制御を行う（例えば、図３３と図３４のフローチャートに従った処理を行う）ようにすることができる。
【００２５】
本発明によれば、情報処理方法が提供される。この情報処理方法は、上述した本発明の情報処理装置に対応する情報処理方法である。この情報処理方法は、３以上の前記情報処理装置のそれぞれが利用可能なプロセッサの個数に基づいて、前記経路の候補を２以上設定する候補設定ステップ（例えば、図１４のステップＳ１２４の「経路選択処理」であって、具体的には例えば図１８や図１９のフローチャートに従う「経路選択処理」）と、前記機能パイプライン処理を実行させるために、前記候補設定ステップの処理により設定された２以上の前記候補のそれぞれを利用して前記第１の制御と前記第２の制御とを行う第１の制御ステップ（例えば、図１４のステップＳ１２５の「パイプライン実行処理」のうちの、図２９のステップＳ３２１０乃至Ｓ３２４０の処理）と、前記候補設定ステップの処理により設定された２以上の前記候補のうちの、前記第１の制御ステップの処理に基づく前記第２の制御により前記１単位量のデータが最速に通過した候補を、前記経路として設定する経路設定ステップ（例えば、図１４のステップＳ１２５の「パイプライン実行処理」のうちの、図２９のステップＳ３２５０の処理）と、前記経路設定ステップの処理により前記経路が設定された以降、前記機能パイプライン処理を実行させるために、前記経路を利用して前記第２の制御を行う第２の制御ステップ（例えば、図１４のステップＳ１２５の「パイプライン実行処理」のうちの、図２９のステップＳ３２６０以降の処理）とを含むことを特徴とする。
【００２６】
本発明よれば、プログラムが提供される。このプログラムは、上述した本発明の情報処理方法に対応するプログラムであって、例えば図１の情報処理コントローラ１１等のコンピュータにより実行されるプログラムである。
【００２７】
さらに本発明によれば、当然ながら、上述した本発明のプログラムを記録した記録媒体も提供される。
【００２８】
次に、図面を参照して、本発明の実施の形態について説明する。
【００２９】
図１は、本発明が適用される情報処理システムの構成例を示している。換言すると、図１は、本発明が適用されるＮ個（Ｎは、１以上の任意の整数値）の情報処理装置からなる情報処理システムの構成例を示している。
【００３０】
図１に示されるように、この情報処理システムは、Ｎ個の情報処理装置１乃至Ｎのそれぞれが所定のネットワーク５１を介して相互に接続されることで構成されている。
【００３１】
係る構成の情報処理システムは、上述したグリッドコンピューティングを実現することが可能である。
【００３２】
即ち、例えば情報処理装置１は、所定の分散処理の実行が指示されると、その分散処理の少なくとも一部分を実行するために必要なデータやプログラムを含むソフトウエアセルを生成し、そのソフトウエアセルを、他の情報処理装置２乃至Ｎのうちの１以上のそれぞれに対してネットワーク５１を介して送信する。
【００３３】
なお、ソフトウエアセルの詳細については、図５等を参照して後述する。
【００３４】
他の情報処理装置２乃至Ｎのうちのソフトウエアセルを受信した１以上のそれぞれは、そのソフトウエアセルに基づいて、情報処理装置１により要求された処理を実行する。
【００３５】
その後、１以上の他の情報処理装置のそれぞれは、必要に応じて、その処理結果のデータを情報処理装置１に対してネットワーク５１を介して送信する。なお、後述するように、このデータの送信先は、必ずしも情報処理装置１である必要は無い。また、後述するように、このデータもソフトウエアセルに含ませて送信させることが可能である。即ち、情報処理装置１以外の情報処理装置２乃至Ｎも、必要に応じて、ソフトウエアセルを生成し、他の情報処理装置に送信することができる。
【００３６】
情報処理装置１は、他の情報処理装置２乃至Ｎのうちの少なくとも１つからデータが送信されてきた場合、そのデータを受信し、そのデータに基づいて所定の処理を実行するか、或いはそのデータを記録する。
【００３７】
このようにして、例えばソフトウエアセルを利用することによって、グリッドコンピューティングが可能になる。
【００３８】
次に、情報処理装置１の構成例について説明する。
【００３９】
情報処理装置１は、情報処理コントローラ１１、メインメモリ１２、記録部１３、バス１４、ドライブ１５、UI（User Interface）部１６、および通信部１７を含むように構成される。
【００４０】
情報処理コントローラ１１には、ネットワーク５１全体を通して一意的に情報処理装置１自身を特定できる装置IDが割り当てられている。
【００４１】
情報処理コントローラ１１は、メインメモリ１２に記録されている各種のプログラムを実行し、情報処理装置１全体を制御する。
【００４２】
例えば、情報処理コントローラ１１は、ソフトウエアセルを生成し、バス１４を介して通信部１７に供給する。また例えば、情報処理コントローラ１１は、通信部１７から供給されたソフトウエアセルを記録部１３に供給する。
【００４３】
さらに例えば、情報処理コントローラ１１は、UI部１６からの指令をバス１４を介して取得し、その指令に従って所定の処理を実行する。
【００４４】
情報処理コントローラ１１は、メインプロセッサ２１、DMAC（Direct Memory Access Controller）２２、DC（Disk Controller）２３、および、サブプロセッサ２４−１乃至２４−ｍ（ｍは、０以上の任意の整数値）のそれぞれがバスを介して相互に接続されることで構成されている。
【００４５】
メインプロセッサ２１には、自分自身を特定するためのメインプロセッサIDが割り当てられている。同様に、サブプロセッサ２４−１乃至２４−ｍのそれぞれには、自分自身を特定するためのサブプロセッサIDのそれぞれが割り当てられている。
【００４６】
メインプロセッサ２１は、ローカルストレージ３１を備え、メインメモリ１２からロードしたデータやプログラムを、ローカルストレージ３１に一時的に記憶させる。メインプロセッサ２１は、ローカルストレージ３１からデータやプログラムを読み出し、それらのデータやプログラムに基づいて各種処理を実行する。
【００４７】
例えばメインプロセッサ２１は、サブプロセッサ２４−１乃至２４−ｍによるプログラムの実行のスケジュール管理、および情報処理コントローラ１１（情報処理装置１）の全体の管理を行うための各種処理を実行する。
【００４８】
また例えば、メインプロセッサ２１は、分散処理を実行する他の情報処理装置の管理を行うための各種処理を実行する。詳細には、例えば、メインプロセッサ２１は、ネットワーク５１を介して接続されている情報処理装置２乃至Ｎのうちの少なくとも１つに分散処理を実行させる場合、ソフトウエアセルを生成し、バス１４を介して通信部１７に供給する。また例えば、メインプロセッサ２１は、バス１４を介して通信部１７からソフトウエアセルを受信した場合、そのソフトウエアセルに含まれるプログラムやデータをメインメモリ１２に記憶させる。
【００４９】
このように、メインプロセッサ２１は、管理のためのプログラムを実行するように構成されていると言える。ただし、メインプロセッサ２１は、管理のためのプログラム以外のプログラムを実行するように構成することもできる。この場合、メインプロセッサ２１は、サブプロセッサとして機能する。
【００５０】
サブプロセッサ２４−１乃至２４−ｍのそれぞれは、メインプロセッサ２１の制御に基づいて、並列的かつ独立にプログラムを実行してデータを処理する。さらに、必要に応じて、メインプロセッサ２１が実行するプログラムが、サブプロセッサ２４−１乃至２４−ｍのそれぞれが実行するプログラムのそれぞれと連携して動作するように構成することも可能である。
【００５１】
サブプロセッサ２４−１乃至２４−ｍのそれぞれは、ローカルストレージ３２−１乃至３２−ｍのそれぞれを備える。サブプロセッサ２４−１乃至２４−ｍのそれぞれは、自分自身内部のローカルストレージ３２−１乃至３２−ｍのそれぞれに、必要に応じて、データやプログラムを一時的に記憶させる。サブプロセッサ２４−１乃至２４−ｍのそれぞれは、自分自身内部のローカルストレージ３２−１乃至３２−ｍのそれぞれからデータやプログラムを読み出し、それらのデータやプログラムに基づいて各種の処理を実行する。
【００５２】
DMAC２２は、メインプロセッサ２１およびサブプロセッサ２４−１乃至２４−ｍのうちの少なくとも１つからの要請を受けて、メインメモリ１２に記憶されているプログラムやデータに対するアクセスの管理を行う。このとき、DMAC２２は、後述する図４に示されるキー管理テーブルを利用して、メインメモリ１２のアクセス管理を行う。なお、メインメモリ１２のアクセス管理の詳細については、図２乃至図４を参照して後述する。
【００５３】
DC２３は、メインプロセッサ２１およびサブプロセッサ２４−１乃至２４−ｍのうちの少なくとも１つからの要請を受けて、記録部１３に記憶されているプログラムやデータへのアクセスを管理する。
【００５４】
係る構成の情報処理コントローラ１１には、メインメモリ１２と記録部１３とが接続されている。
【００５５】
メインメモリ１２は、例えばRAM（Random Access Memory）等により構成される。メインメモリ１２は、メインプロセッサ２１およびサブプロセッサ２４−１乃至２４−ｍのうちの少なくとも１つが実行する各種のプログラムや、それらの各種のプログラムの実行時に利用される若しくは生成される各種データを一時的に記憶している。
【００５６】
記録部１３は、例えばハードディスク等の1以上の外部記憶装置により構成される。即ち、記録部１３は、複数個の外部記憶装置から構成されることも多々ある。記録部１３は、メインプロセッサ２１およびサブプロセッサ２４−１乃至２４−ｍのうちの少なくとも１つが実行する各種のプログラムや、それらの各種のプログラムの実行時に利用される若しくは生成される各種データを記録している。また、記録部１３は、情報処理コントローラ１１から供給されたデータを記録する。
【００５７】
また、情報処理コントローラ１１には、バス１４を介して、ドライブ１５、UI部１６、および、通信部１７が接続されている。
【００５８】
ドライブ１５は、必要に応じてバス１４に接続される。ドライブ１５には、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどよりなるリムーバブル記録媒体１８が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記録部１３等にインストールされる。
【００５９】
UI部１６は、例えば、リモートコントローラ（受光部含む）、キーボード、マウス等の入力インタフェースと、表示装置やスピーカ等の出力インタフェースとから構成される。従って、ユーザはUI部１６を操作することで、様々な情報（指令等）を情報処理装置１に入力させることができる。また、情報処理装置１は、UI部１６を利用して、様々な情報をユーザに呈示することができる。
【００６０】
通信部１７は、例えば、モデム、ターミナルアダプタ、無線通信機器等より構成される。係る構成の通信部１７は、ネットワーク５１を介する他の情報処理装置２乃至Ｎのそれぞれとの間の通信を制御する。例えば通信部１７は、情報処理コントローラ１１から供給されたソフトウエアセルを、ネットワーク５１を介して他の情報処理装置２乃至Ｎのうちの１以上に送信する。また、通信部１７は、情報処理装置２乃至Ｎのうちの少なくとも１つからネットワーク５１を介して送信されてきたソフトウエアセルを受信し、バス１４介して情報処理コントローラ１１に供給する。
【００６１】
以上、情報処理装置１の構成例について説明した。
【００６２】
情報処理装置２乃至Ｎのそれぞれも、上述した情報処理装置１の構成と基本的に同様の構成を有する。従って、その構成の説明については省略する。
【００６３】
なお、以下、情報処理装置２乃至Ｎのそれぞれの構成要素（ブロック）の記述が必要な場合、情報処理装置１の対応するブロックの名称と符号を用いて記述する。具体的には例えば、情報処理装置２のメインプロセッサの記述が必要な場合、情報処理装置２のメインプロセッサ２１と記述する。ただし、サブプロセッサの個数は各情報処理装置１乃至Ｎ毎に異なることが多い。即ち、サブプロセッサ２４−ｍの「ｍ」も、各情報処理装置１乃至Ｎ毎に異なる値となることが多い。
【００６４】
また、情報処理装置１乃至Ｎのそれぞれは、基本的に同様の構成を有することから、基本的に同様の動作（処理）を行うことができる。そこで、以下、所定の処理（動作）を説明する場合には、情報処理装置１乃至Ｎのうちの所定の１つに着目して、着目された情報処理装置の処理として説明する。即ち、それ以外の情報処理装置の処理の説明は省略する。
【００６５】
また、情報処理装置１乃至Ｎのそれぞれは、上述した構成に限定されず、必要に応じて、各種機能を追加したり削除したりすることが可能であり、各種機能のそれぞれに対応した構成をそれぞれもつことが可能である。
【００６６】
以上、図１を参照して、情報処理装置１乃至Ｎの構成例について説明した。
【００６７】
次に、図２乃至図４を参照して、情報処理装置１のサブプロセッサ２４−１乃至２４−ｍのうちの所定の１つがメインメモリ１２にアクセスする場合の処理について説明する。
【００６８】
なお、以下、サブプロセッサ２４−１乃至２４−ｍを個々に区別する必要が無い場合、それらのうちの所定の１つをサブプロセッサ２４と単に称する。これに伴い、以下、サブプロセッサ２４と称されている場合、ローカルストレージ３２−１乃至３２−ｍも、ローカルストレージ３２と単に称する。
【００６９】
図２に示されるように、メインメモリ１２には、複数のアドレスを指定可能なメモリロケーションが配置される。各メモリロケーションに対しては、追加セグメントが割り振られる。追加セグメントは、データの状態を示す情報を格納するためのセグメントであり、具体的には例えば、F/Eビット、サブプロセッサID、およびＬＳアドレス（ローカルストレージアドレス）を含む。また、各メモリロケーションには、後述するアクセスキーが割り振られる。
【００７０】
「０」であるF/Eビットは、サブプロセッサ２４により読み出し処理が施されている最中のデータであるというデータ状態、または、空き状態であるため最新データではない無効データであるというデータ状態、即ち、そのメモリロケーションから読み出し不可であるというデータ状態を示す。また、「０」であるF/Eビットは、そのメモリロケーションにデータ書き込み可能であるというデータ状態を示し、そのメモリロケーションにデータが実際に書き込まれると、F/Eビットは「１」に設定される。
【００７１】
「１」であるF/Eビットは、そのメモリロケーションのデータがサブプロセッサ２４によって読み出されておらず、未処理の最新データであるというデータ状態を示す。F/Eビットが「１」であるメモリロケーションのデータは読み出し可能であり、そのメモリロケーションからサブプロセッサ２４によってデータが実際に読み出されると、F/Eビットは「０」に設定される。また、「１」であるF/Eビットは、そのメモリロケーションがデータ書き込み不可であるというデータ状態を示す。
【００７２】
さらに、F/Eビットが「０」であるデータ状態、即ち、読み出し不可／書き込み可であるデータ状態において、そのメモリロケーションについて読み出し予約を設定することが可能である。F/Eビットが「０」であるメモリロケーションに対して読み出し予約を行う場合には、サブプロセッサ２４は、読み出し予約を行うメモリロケーションの追加セグメントに、自分自身のサブプロセッサIDおよびＬＳアドレスを読み出し予約情報として書き込む。そして、サブプロセッサ２４によって、読み出し予約されたメモリロケーションにデータが書き込まれ、F/Eビットが「１」に設定されたとき、即ち、読み出し可／書き込み不可であるデータ状態に遷移したとき、読み出し予約情報で特定されるローカルストレージ３２、即ち、追加セグメントに予め書き込まれているサブプロセッサIDおよびＬＳアドレスによって特定されるローカルストレージ３２に読み出される。
【００７３】
複数のサブプロセッサ２４によってデータを多段階に処理する必要がある場合、このように各メモリロケーションのデータの読み出しおよび書き込みを制御することによって、前段の処理を行うサブプロセッサ２４が、メインメモリ１２内の所定のアドレスに処理済みのデータを書き込んだ後即座に、後段の処理を行う別のサブプロセッサ２４が、そのデータを読み出すことが可能となる。
【００７４】
また、図３に示されるように、サブプロセッサ２４−１のローカルストレージ３２−１は、複数のアドレスを指定できるメモリロケーションによって構成される。この構成は、その他のサブプロセッサ２４−２乃至２４−ｍについても同様である。従って、以下、図３の説明においても、サブプロセッサ２４およびローカルストレージ３２と称する。
【００７５】
各メモリロケーションに対しては、上述した図２のメインメモリ１２のそれと同様に、追加セグメントが割り振られる。ただし、ローカルストレージ３２における追加セグメントは、ビジービットを含む。
【００７６】
サブプロセッサ２４が、メインメモリ１２に記憶されているデータを自分自身内部のローカルストレージ３２のメモリロケーションに格納するときには、対応するビジービットを「１」に設定して予約する。ビジービットが「１」であるメモリロケーションには、他のデータを格納することができない。ローカルストレージ３２のメモリロケーションにデータが格納されてからデータが読み出されると、ビジービットは「０」に設定され、他のデータを格納することができるようになる。
【００７７】
さらに、図２に示されるように、メインメモリ１２には複数のサンドボックスが含まれる。サンドボックスは、メインメモリ１２内の領域を画定するものである。各サンドボックスは、各サブプロセッサ２４に割り当てられ、割り当てられたサブプロセッサ２４が排他的に使用することができる。すなわち、サブプロセッサ２４は、割り当てられたサンドボックスを使用できるが、この領域を超えてデータにアクセスすることはできない。
【００７８】
メインメモリ１２は、複数のメモリロケーションから構成されるが、サンドボックスは、これらのメモリロケーションの集合である。
【００７９】
さらに、メインメモリ１２の排他的な制御を実現するために、図４に示されるキー管理テーブルが用いられる。キー管理テーブルは、DMAC２２と関連付けられる。キー管理テーブル内の各エントリには、サブプロセッサID、サブプロセッサキーおよびキーマスクが含まれる。
【００８０】
サブプロセッサ２４は、メインメモリ１２にアクセスする場合、読み出しまたは書き込みのコマンドをDMAC２２に対して出力する。このコマンドには、サブプロセッサ２４を特定するサブプロセッサID、および、アクセス要求先であるメインメモリ１２のアドレスが含まれる。
【００８１】
DMAC２２は、サブプロセッサ２４から供給されたコマンドを実行する場合、キー管理テーブルを参照して、アクセス要求元のサブプロセッサ２４のサブプロセッサキーを調べる。そして、DMAC２２は、調べたアクセス要求元のサブプロセッサキーと、アクセス要求先であるメインメモリ１２のメモリロケーションに割り振られたアクセスキーとを比較して、２つのキーが一致した場合にのみ、サブプロセッサ２４から供給されたコマンドを実行する。
【００８２】
このように、図４は、キー管理テーブルの一例を示している。キー管理テーブルに記録されているキーマスクは、その任意のビットが「１」になることによって、そのキーマスクと関連付けられたサブプロセッサキーの対応するビットを「０」または「１」にすることができる。
【００８３】
例えば、サブプロセッサキーが「１０１０」であるとする。通常、このサブプロセッサキーによって「１０１０」のアクセスキーを持つサンドボックスへのアクセスだけが可能になる。しかし、このサブプロセッサキーと関連付けられたキーマスクが「０００１」に設定されている場合には、キーマスクのビットが「１」に設定された桁のみにつき、サブプロセッサキーとアクセスキーとの一致判定がマスクされる。即ち、キーマスクのビットが「１」に設定された桁については判定されない。その結果、このサブプロセッサキー「１０１０」によってアクセスキーが「１０１０」または「１０１１」のいずれかであるアクセスキーを持つサンドボックスへのアクセスが可能となる。
【００８４】
以上のようにして、メインメモリ１２のサンドボックスの排他性が実現される。即ち、複数のサブプロセッサ２４によってデータを多段階に処理する必要がある場合、以上のように構成することによって、前段の処理と後段の処理とのそれぞれを行うサブプロセッサ２４のみが、メインメモリ１２の所定のアドレスにアクセスできるようになり、データを保護することができる。
【００８５】
例えば、キーマスクの値は、次のように変更されることが考えられる。即ち、図１の情報処理装置１の起動直後においては、キーマスクの値は全て「０」になる。例えばいま、メインプロセッサ２１にロードされたプログラムが実行され、サブプロセッサ２４にロードされたプログラムと連携動作するとする。さらに、サブプロセッサ２４−１により出力された処理結果データを、メインメモリ１２に記憶させ、メインメモリ１２に記憶された処理結果データを、サブプロセッサ２４−２に入力させるとする。この場合、サブプロセッサ２４−１から出力された処理結果データが記憶されているメインメモリ１２の領域は、サブプロセッサ２４−１およびサブプロセッサ２４−２からアクセス可能である必要がある。このような場合、メインプロセッサ２１は、キーマスクの値を適切に変更し、複数のサブプロセッサ２４からアクセスできるメインメモリの領域を設けることにより、サブプロセッサ２４による多段階的の処理を可能にする。
【００８６】
より具体的には、例えば、サブプロセッサ２４−１が、所定の処理を実行し、その結果得られる第１の処理結果データをメインメモリ１２の第１の領域に記憶させる。そして、サブプロセッサ２４−２が、メインメモリ１２の第１の領域に記憶されている第１の処理結果データを読み出し、そのデータに基づいて所定の処理を実行し、その結果得られる第２の処理結果データを、メインメモリ１２の第１の領域とは異なる第２の領域に記憶させる。
【００８７】
ここで例えば、サブプロセッサ２４−１のサブプロセッサキーが「０１００」であり、メインメモリ１２の第１の領域のアクセスキーが「０１００」であり、サブプロセッサ２４−２のサブプロセッサキーが「０１０１」であり、かつ、メインメモリ１２の第２の領域のアクセスキーが「０１０１」であるとする。この場合、サブプロセッサ２４−２は、メインメモリ１２の第１の領域にアクセスできない。そこで、サブプロセッサ２４−２のキーマスクを「０００１」にすることによって、サブプロセッサ２４−２は、メインメモリ１２の第１の領域にアクセスできるようになる。
【００８８】
以上、図２乃至図４を参照して、情報処理装置１のサブプロセッサ２４がメインメモリ１２にアクセスする場合の処理について説明した。
【００８９】
次に、図５と図６とを参照して、情報処理装置１がソフトウエアセルを生成し、そのソフトウエアセルに基づいて、他の情報処理装置２乃至Ｎのうちの１以上に分散処理を実行させる場合の処理について説明する。なお、図５と図６との説明を行う範囲内では、他の情報処理装置２乃至Ｎをまとめて、他の情報処理装置と称する。
【００９０】
情報処理装置１のメインプロセッサ２１は、例えば図５に示されるようなソフトウエアセルを生成し、ネットワーク５１を介して他の情報処理装置に送信する。即ち、図５は、ソフトウエアセルの構成の例を示す図である。
【００９１】
図５に示されるように、ソフトウエアセルは、「送信元ID」、「送信先ID」、「応答先ID」、「セルインターフェース」、「DMAコマンド」、「プログラム（サブプロセッサプログラム）」、および「データ」を含むように構成される。
【００９２】
「送信元ID」には、ソフトウエアセルの送信元である情報処理装置１のネットワークアドレス、その情報処理コントローラ１１の装置ID、並びに、その情報処理コントローラ１１が備えるメインプロセッサ２１およびサブプロセッサ２４−１乃至２４−ｍのそれぞれのID（メインプロセッサIDまたはサブプロセッサID）が含まれる。
【００９３】
「送信先ID」には、ソフトウエアセルの送信先である他の情報処理装置のネットワークアドレス、他の情報処理装置の情報処理コントローラ１１の装置ID、並びに、その情報処理コントローラ１１が備えるメインプロセッサ２１およびサブプロセッサ２４−１乃至２４−ｍのそれぞれのIDが含まれる。
【００９４】
また、「応答先ID」には、ソフトウエアセルの実行結果の応答先の情報処理装置（一般的には、送信元の情報処理装置１であることが多いが、必ずしも情報処理装置１であるとは限らない）のネットワークアドレス、その情報処理コントローラ１１の装置ID、並びに、その情報処理コントローラ１１が備えるメインプロセッサ２１およびサブプロセッサ２４−１乃至２４−ｍのそれぞれのIDが含まれる。
【００９５】
なお、繰り返しになるが、送信元、送信先、および、応答先のそれぞれの情報処理装置（情報処理装置１乃至Ｎのうちの何れか）では、サブプロセッサ２４の個数は必ずしも同一とならないので、当然ながら、「送信元ID」、「送信先ID」、および「応答先ID」のそれぞれの上述した説明で登場したサブプロセッサ２４−ｍの「ｍ」は必ずしも同一値とはならない。
【００９６】
「セルインターフェース」には、ソフトウエアセルの利用に必要な情報が含まれる。具体的には例えば、図５に示されるように、「セルインターフェース」には、「グローバルID」、「必要なサブプロセッサの情報」、「サンドボックスサイズ」、および「前回のソフトウエアセルID」が含まれる。
【００９７】
「グローバルID」には、ネットワーク５１全体を通してそのソフトウエアセルを一意的に識別できるIDであって、「送信元ID」の記述値、およびソフトウエアセルの生成または送信の日時（日付および時刻）に基づいて生成されるIDが含まれる。
【００９８】
「必要なサブプロセッサの情報」には、ソフトウエアセルの実行に必要なサブプロセッサの個数が含まれる。
【００９９】
「サンドボックスサイズ」には、ソフトウエアセルの実行に必要なメインメモリおよびサブプロセッサのローカルストレージのメモリ量が含まれる。
【０１００】
「前回のソフトウエアセルID」には、ストリーミングデータなどのシーケンシャルな実行を要求する１つのグループを構成するソフトウエアセル内の、前回のソフトウエアセルのIDが含まれる。
【０１０１】
このような「セルインターフェース」に続く「ソフトウエアセルの実行セクション」は、「DMAコマンド」、「プログラム」および「データ」から構成される。
【０１０２】
「DMAコマンド」には、それに続く「プログラム」に含まれるプログラムの起動に必要な一連のDMAコマンドが含まれる。「プログラム」には、サブプロセッサによって実行されるサブプロセッサプログラムが含まれる。「データ」は、その前の「プログラム」に含まれるサブプロセッサプログラム、またはその他のプログラムによって処理される各種データが含まれる。
【０１０３】
「DMAコマンド」には、例えば図５に示されるように、「ロードコマンド」、「キックコマンド」、「機能プログラム実行コマンド」、「ステータス要求コマンド」、および「ステータス返信コマンド」のうちの少なくとも１つが含まれる。
【０１０４】
「ロードコマンド」には、メインメモリに記憶されている情報をサブプロセッサのローカルストレージにロードさせるコマンドが含まれる。この「ロードコマンド」は、「メインメモリアドレス」、「サブプロセッサID」、および、「LSアドレス」と一体となって使用される。「メインメモリアドレス」には、情報のロード元であるメインメモリの所定の領域のアドレスが含まれる。「サブプロセッサID」および「LSアドレス」のそれぞれには、情報のロード先であるサブプロセッサのIDおよびローカルストレージのアドレスのそれぞれが含まれる。
【０１０５】
「キックコマンド」には、「DMAコマンド」に続く「プログラム」に含まれるサブプロセッサプログラムの実行を開始するコマンドが含まれる。この「キックコマンド」は、「サブプロセッサID」および「プログラムカウンタ」と一体となって使用される。「サブプロセッサID」には、キック対象のサブプロセッサのIDが含まれる。「プログラムカウンタ」には、プログラム実行用プログラムカウンタのためのアドレス、またはそのアドレスを与える情報が含まれる。
【０１０６】
「機能プログラム実行コマンド」には、情報処理装置１が他の装置に対して、機能プログラムの実行を要求するコマンドが含まれる。この「機能プログラム実行コマンド」は「機能プログラムID」と一体となって使用される。「機能プログラムID」には、対応する「機能プログラム実行コマンド」により実行が要求されている機能プログラムのIDを示している。
【０１０７】
従って、他の情報処理装置の情報処理コントローラ１１は、「DMAコマンド」が「機能プログラム実行コマンド」であるソフトウエアセルを情報処理装置１から受け取ると、そのソフトウエアセルに含まれる「機能プログラムID」の記述値によって、起動すべき機能プログラムを識別することができる。なお、機能プログラムについては、図７以降の図面を参照して後述する。
【０１０８】
「ステータス要求コマンド」には、「送信先ID」で特定される他の情報処理装置の現在の動作状態（状況）に関する装置情報を、「応答先ID」で特定される情報処理装置（例えば、情報処理装置１）宛てに送信要求するコマンドが含まれる。
【０１０９】
「ステータス返信コマンド」とは、「DMAコマンド」が「ステータス要求コマンド」である第１のソフトウエアセルが情報処理装置１から他の情報処理装置に送信された場合、他の情報処理装置が「ステータス要求コマンド」に対する応答として生成する第２のソフトウエアセルに含ませる「DMAコマンド」である。
【０１１０】
即ち、他の情報処理装置は、「DMAコマンド」が「ステータス要求コマンド」である第１のソフトウエアセルを受信した場合、「DMAコマンド」が「ステータス返信コマンド」である第２のソフトウエアセルを新たに生成する。そして、他の情報処理装置は、その第２のソフトウエアセルを、第１のソフトウエアセルの「応答先ID」で特定される情報処理装置（例えば、情報処理装置１）宛てに送信する。
【０１１１】
このような「DMAコマンド」が「ステータス返信コマンド」である第２のソフトウエアの「データ」には、他の情報処理装置の装置情報として、例えば図６に示されるような装置情報が含まれる。即ち、図６は、「DMAコマンド」が「ステータス返信コマンド」である第２のソフトウエアセルのデータ領域の構造例を示す図である。
【０１１２】
「情報処理装置ID」には、この「ステータス返信コマンド」を含む第２のソフトウエアセルを送信する他の情報処理装置のIDが記述される。他の情報処理装置のIDは、例えば、他の情報処理装置の電源状態がオン状態となったとき、その情報処理コントローラ１１のメインプロセッサ２１によって、電源状態がオン状態となった時点の日時、他の情報処理装置のネットワークアドレス、および、その情報処理コントローラ１１のサブプロセッサ２４の数などに基づいて生成される。
【０１１３】
「情報処理装置識別ID」には、他の情報処理装置の特徴を表す値が記述される。他の情報処理装置の特徴とは、他の情報処理装置が如何なる装置であるのかを示す情報である。例えば、他の情報処理装置が、ハードディスクレコーダ、PDA（Personal Digital Assistants）、ポータブルCD（Compact Disc）プレーヤなどであることを示す情報が、他の情報処理装置の特徴の一例である。また、映像音声記録、映像音声再生など、他の情報処理装置の機能も、他の情報処理装置の特徴として利用することができる。このような各特徴（機能含む）のそれぞれに対して、一意の値が予め付与されており、それらの各値のうちの、他の情報処理装置の特徴を表す１以上の値が、この「情報処理装置識別ID」に記述される。従って、この「ステータス返信コマンド」を含む第２のソフトウエアセルを受信する情報処理装置（例えば、情報処理装置１）は、この「情報処理装置識別ID」の記述値に基づいて、その第２のソフトウエアセルを送信した他の情報処理装置の特徴（機能含む）を把握することができる。
【０１１４】
「MSステータス」には、他の情報処理装置がマスタ装置とスレーブ装置とのうちの何れで動作をしているのかを示す値として、「０」または「１」が記述される。即ち、他の情報処理装置がマスタ装置として動作している場合、「MSステータス」には「０」が記述される。これに対して、他の情報処理装置がスレーブ装置として動作している場合、「MSステータス」には０以外の値（例えば１）が記述される。なお、マスタ装置とスレーブ装置との詳細については、図７以降の図面を参照して後述する。
【０１１５】
「CPU動作周波数」には、他の情報処理装置の情報処理コントローラ１１のメインプロセッサ２１の動作周波数が記述される。「CPU使用率」には、このメインプロセッサ２１で現在動作している全プログラムについての、メインプロセッサ２１の使用率が記述される。メインプロセッサ２１の使用率は、メインプロセッサ２１の全処理能力に対する使用中の処理能力の比率を表した値で、例えば、プロセッサ処理能力評価のための単位であるMIPSを単位として算出され、または単位時間あたりのプロセッサ使用時間に基づいて算出される。
【０１１６】
「サブプロセッサ数」には、他の情報処理装置の情報処理コントローラ１１が備えるサブプロセッサ２４の個数が記述される。例えば図１の例では、「ｍ」が「サブプロセッサ数」に記述されることになる。
【０１１７】
「サブプロセッサ使用数」には、他の情報処理装置の情報処理コントローラ１１において、現在使用可能なサブプロセッサ２４の個数を示している。使用可能なサブプロセッサ２４とは、後述する「サブプロセッサステータス」に「reserved」または「busy」に対応する値が記述されているサブプロセッサを示す。従って、この「ステータス返信コマンド」を含む第２のソフトウエアセルを受信する情報処理装置（例えば、情報処理装置１）は、この「サブプロセッサ使用数」の記述値に基づいて、他の情報処理装置の空きプロセッサ数等を把握することができる。なお、空きプロセッサ数については、図１４以降の図面を参照して後述する。
【０１１８】
「サブプロセッサID１」には、他の情報処理装置の情報処理コントローラ１１のサブプロセッサ２４−１乃至２４−ｍのうちの、サブプロセッサ２４−１のIDが記述される。
【０１１９】
「サブプロセッサID１」に続く、「サブプロセッサ使用率」と「サブプロセッサステータス」とのそれぞれには、「サブプロセッサID１」により特定されるサブプロセッサ２４−１に関する情報が記述される。
【０１２０】
即ち、「サブプロセッサ使用率」には、サブプロセッサ２４−１で現在実行している、またはサブプロセッサ２４−１に実行が予約されているプログラムについての、サブプロセッサ２４−１の使用率が記述される。
【０１２１】
また、「サブプロセッサステータス」には、サブプロセッサ２４−１の状態を示す値が記述される。サブプロセッサ２４−１の状態としては例えば、「unused」、「reserved」、および「busy」などの状態が利用される。「unused」は、サブプロセッサ２４−１が現在使用されてなく、使用の予約もされていない状態を示す。「reserved」は、サブプロセッサ２４−１が現在は使用されていないが、予約されている状態を示す。「busy」は、サブプロセッサ２４−１が現在使用中である状態を示す。
【０１２２】
従って、「サブプロセッサステータス」に「busy」を示す値（例えば０）が記述されている場合には、その直前の「サブプロセッサ使用率」には、サブプロセッサ２４−１の現在の使用率が記述される。これに対して、「サブプロセッサステータス」に「reserved」を示す値（例えば１）が記述されている場合には、その直前の「サブプロセッサ使用率」には、サブプロセッサ２４−１についての、後に使用される予定の推定使用率が記述される。また、「サブプロセッサステータス」に「unused」を示す値（例えば２）が記述されている場合には、その直前の「サブプロセッサ使用率」には、例えば「０」が記述される。
【０１２３】
このような「サブプロセッサID1」、「サブプロセッサ使用率」、および「サブプロセッサステータス」からなるサブプロセッサ２４−１についての組に続いて、その組と同様の構成を有する、サブプロセッサ２４−２乃至２４−ｍのそれぞれについての組がその順番に配置される。
【０１２４】
即ち、「サブプロセッサID」、「サブプロセッサステータス」、および「サブプロセッサ使用率」からなる組は、サブプロセッサ２４−１乃至２４−ｍのそれぞれ毎に１組ずつ設定される。
【０１２５】
図示しないサブプロセッサ２４−ｍについての「サブプロセッサIDm」、「サブプロセッサステータス」、および「サブプロセッサ使用率」といった最後の組に続いて、「メインメモリ総容量」と「メインメモリ使用量」とのそれぞれがその順番に配置される。「メインメモリ総容量」と「メインメモリ使用量」とのそれぞれには、他の情報処理装置の情報処理コントローラ１１に接続されているメインメモリ１２の総容量と現在使用中の容量とのそれぞれが記述される。
【０１２６】
「外部記憶装置総数」には、他の情報処理装置の情報処理コントローラ１１に接続されている記録部１３を構成する外部記憶装置の個数が記述される。
【０１２７】
「外部記憶ID」には、この記録部１３を構成する各外部記憶装置のうちの所定の１つを一意に識別するIDが記述される。
【０１２８】
「外部記憶部種別ID」、「外部記憶総容量」、および、「外部記憶使用量」には、それらの直前の「外部記憶ID」で特定される外部記憶装置に関する各種情報が記述される。即ち、「外部記憶部種別ID」には、その外部記憶装置の種類（例えば、ハードディスク、CD±ＲＷ、DVD±ＲＷ、メモリディスク、SRAM、ROMなど）を示す値が記述される。「外部記憶総容量」および「外部記憶使用量」のそれぞれには、その外部記憶装置の総容量および現在使用中のそれぞれの容量が記述される。
【０１２９】
即ち、「外部記憶ID」、「外部記憶種別ID」、「外部記憶総容量」、「外部記憶使用量」からなる組は、図６の例では１組だけしか図示されていないが、実際には、記録部１３を構成する各外部記憶装置のそれぞれ毎に１組ずつ設定されて配置される。換言すると、図６は、記録部１３が１つの外部記憶装置で構成されている場合の一例を示しているに過ぎず、記録部１３が複数の外部記憶装置で構成されている場合には、このような組が、外部記憶装置の個数だけ設定されて配置されることになる。即ち、記録部１３が複数の外部記憶装置で構成されている場合には、複数の外部記憶装置のそれぞれに対して、「外部記憶ID」がそれぞれ割り当てられ、「外部記憶種別ID」、「外部記憶総容量」および「外部記憶使用量」も別々に管理される。
【０１３０】
このようにして、情報処理装置１のメインプロセッサ２１は、他の情報処理装置に分散処理を実行させる場合、上述した図５に示されるような第１のソフトウエアセルを生成し、ネットワーク５１を介して他の情報処理装置宛てに送信する。即ち、第１のソフトウエアセルにおいて、「送信元ID」には情報処理装置１のIDが記述され、かつ、「送信先ID」には他の情報処理装置のIDが記述されている。具体的には例えば、「送信先ID」に情報処理装置２のIDが記述されている場合には、第１のソフトウエアセルは情報処理装置２に供給される。
【０１３１】
他の情報処理装置のメインプロセッサ２１は、第１のソフトウエアセルを受信すると、メインメモリ１２に格納する。そして、メインプロセッサ２１は、第１のソフトウエアセルを評価し、それに含まれる「DMAコマンド」を処理する。
【０１３２】
具体的には例えば、他の情報処理装置のメインプロセッサ２１はまず、「DMAコマンド」のうちの「ロードコマンド」を実行する。すると、「ロードコマンド」に対応する「メインメモリアドレス」に含まれるメインメモリ１２のメインメリアドレスから情報が読み出される。そして、その「ロードコマンド」に対応する「サブプロセッサID」と「LSアドレス」とで特定されるサブプロセッサ２４のローカルストレージ３２の所定領域に対して、読み出されたその情報がロードされる。ここで言う情報とは、第１のソフトウエアセルの「プログラム」に含まれるサブプロセッサプログラムや「データ」に含まれる各種データの場合もあるし、或いは、その他のデータ等の場合もある。
【０１３３】
次に、「DMAコマンド」として「キックコマンド」が含まれている場合、他の情報処理装置のメインプロセッサ２１は、「キックコマンド」を、対応する「サブプロセッサID」で特定されるサブプロセッサ２４に対して、対応する「プログラムカウンタ」と共に出力する。
【０１３４】
すると、「キックコマンド」が出力されたサブプロセッサ２４は、その「キックコマンド」と「プログラムカウンタ」とに従って、第１のソフトウエアプログラムの「プログラム」に含まれるサブプロセッサプログラムを実行する。そして、サブプロセッサ２４は、その実行結果をメインメモリ１２に格納した後に、実行が完了したことをメインプロセッサ２１へ通知する。
【０１３５】
他の情報処理装置のメインプロセッサ２１は、必要に応じて、サブプロセッサ２４の実行結果をメインメモリ１２から読み出し、その実行結果を含む第２のソフトウエアセルを生成する。即ち、その実行結果を「データ」に含み、かつ、「送信先ID」には第１のソフトウエアセルの「応答先ID」と同一のIDが記述された第２のソフトウエアセルが生成される。そして、メインプロセッサ２１は、第２のソフトウエアセルを、その「送信先ID」で特定される情報処理装置（例えば、情報処理装置１）に送信する。
【０１３６】
また例えば、情報処理装置１から他の情報処理装置に対して送信された第１のソフトウエアセルにおいて、「応答先ID」には情報処理装置１のIDが記述されており、かつ、「DMAコマンド」が「ステータス要求コマンド」である場合には、他の情報処理装置のメインプロセッサ２１は、「DMAコマンド」が「ステータス返信コマンド」であって、かつ、上述した図６に示される装置情報を「データ」に含む第２のソフトウエアセルを生成して、情報処理装置１に送信する。すると、情報処理装置１は、第２のソフトウエアセルを受信することで、その第２のソフトウエアセルから、他の情報処理装置の図６の装置情報を取得することができる。
【０１３７】
なお、以下、情報処理装置１乃至Ｎのうちの所定の１つから他の１つに対して送信されるデータやプログラムは全て、ソフトウエアセルに格納されて送信されるとする。これらのソフトウエアセルの生成から送信までの一連の処理については、上述した第１のソフトウエアセルや第２のソフトウエアセルについての一連の処理と全く同様であるので、その説明は省略する。
【０１３８】
このように、情報処理装置１乃至Ｎのそれぞれは、各種ソフトウエアセルをやり取りし、各種ソフトウエアセルに従って各種処理をそれぞれ実行していくことで、あたかも仮想的な１台の情報処理装置として動作することができる。例えば、図７に示されるように、ネットワーク５１に４台の情報処理装置１乃至４のそれぞれが相互に接続されている場合、情報処理装置１乃至４のそれぞれは、各種ソフトウエアセルをやり取りし、各種ソフトウエアセルに従って各種処理をそれぞれ実行していくことで、仮想的な１台の情報処理装置６１として動作することができる。
【０１３９】
以下、このようにして、ネットワーク５１に接続された４台の情報処理装置１乃至４が、図７の仮想的な１台の情報処理装置６１として動作するための前提処理として、情報処理装置１乃至４の電源投入後の処理について説明する。ただし、情報処理装置１乃至４の電源投入後のそれぞれの処理は、基本的に同様の処理であるので、ここでは、情報処理装置１に着目し、情報処理装置１の処理として説明する。即ち、その他の情報処理装置２乃至４の処理の説明は省略する。
【０１４０】
情報処理装置１の電源投入後、即ち、その電源状態がオン状態に推移すると、メインプロセッサ２１は、記録部１３に予め記録されている制御プログラムのうちの「マスタ/スレーブマネージャ」と「能力交換プログラム」と（後述する図８参照）の読み出し命令をDC２３に対して行うことで、「マスタ/スレーブマネージャ」と「能力交換プログラム」とをDC２３を介して記録部１３から読み出す。そして、メインプロセッサ２１は、その書き込み命令をDMAC２２対して実行することで、「マスタ/スレーブマネージャ」と「能力交換プログラム」とをメインメモリ１２にロードする。
【０１４１】
メインプロセッサ２１は、上述した図６に示される「データ」に記述されるべき各値、即ち、自身の情報処理装置１の装置情報を示す各値を保存するための領域をメインメモリ１２に確保し、その各値を、メインメモリ１２の確保された領域に保存する。換言すると、メインメモリ１２の確保された領域には、図６の「データ」に対応するテーブルが記述される。以下、このようなテーブルを、装置情報テーブルと称する。
【０１４２】
次に、メインプロセッサ２１は、メインメモリ１２にロードされた「マスタ/スレーブマネージャ」を実行する。「マスタ/スレーブマネージャ」は、その処理が終了すると、終了通知をメインプロセッサ２１へ送る。メインプロセッサ２１は、「マスタ/スレーブマネージャ」からの終了通知を受け取ると、次に、「能力交換プログラム」を実行する。
【０１４３】
ここで、「マスタ/スレーブマネージャ」と、「能力交換プログラム」との詳細について説明する。
【０１４４】
「マスタ/スレーブマネージャ」と「能力交換プログラム」とは、情報処理装置１の電源が切断されるまで、即ち、その電源状態がオフ状態に遷移するまで、動作する常駐プログラムである。
【０１４５】
「マスタ/スレーブマネージャ」は、自身の情報処理装置１がネットワーク５１に接続されていることを検知すると、同一ネットワーク５１に接続された他の情報処理装置の存在を確認する。
【０１４６】
「マスタ/スレーブマネージャ」は、仮に、ネットワーク５１に他の情報処理装置が存在しないことを確認した場合、メインメモリ１２内の装置情報テーブルの「MSステータス」に「０」を記述する。すると、上述したように、情報処理装置１がそれ以降マスタ装置として動作することになる。
【０１４７】
これに対して、例えば図７の例では、「マスタ/スレーブマネージャ」は、情報処理装置２乃至４のそれぞれの存在を認識することになる。この場合、「マスタ/スレーブマネージャ」は、メインメモリ１２内の装置情報テーブルの「MSステータス」に「０」以外の値（例えば「１」）を記述する。すると、上述したように、情報処理装置１がそれ以降スレーブ装置として動作することになる。
【０１４８】
また、「マスタ/スレーブマネージャ」は、ネットワーク５１の状況（接続状態）を常に確認する。即ち、「マスタ/スレーブマネージャ」は、ネットワーク５１に他の情報処理装置が新たに接続されたこと、ネットワーク５１に接続された他の情報処理装置の電源が切断されたこと、および、ネットワーク５１から他の情報処理装置が切り離されたこと等のネットワーク５１の接続状態を常に監視する。そして、「マスタ/スレーブマネージャ」は、ネットワーク５１の接続状態に変化があると、そのことを示す情報を「能力交換プログラム」に通知する。なお、以下、このようにして、「マスタ/スレーブマネージャ」から「能力交換プログラム」に通知される情報を、ネットワーク状態変化通知と称する。
【０１４９】
「能力交換プログラム」は、自身の情報処理装置１がマスタ装置として動作している場合、ネットワーク５１に接続された他の情報処理装置の装置情報を取得する。例えば図７の例では、「能力交換プログラム」は、情報処理装置２乃至４のそれぞれの装置情報を取得する。
【０１５０】
即ち、「能力交換プログラム」は、「DMAコマンド」が「ステータス要求コマンド」である上述した第１のソフトウエアセルを生成して、他の情報処理装置に送信する。すると、他の情報処理装置は、「ステータス要求コマンド」に対する応答として、「DMAコマンド」が「ステータス返信コマンド」である上述した第２のソフトウエアセルを生成して情報処理装置１に送信してくる。そこで、「能力交換プログラム」は、第２のソフトウエアセルを受信して、この第２のソフトウエアセルに含まれる上述した図６の「データ」の各記述値を取得することで、他の情報処理装置の装置情報を取得する。
【０１５１】
次に、「能力交換プログラム」は、メインメモリ１２の装置情報テーブルが格納されている領域を拡張し、情報処理装置１自身の装置情報と同様に、他の情報処理装置の装置情報も拡張された領域に記憶する。即ち、この拡張された領域には、情報処理装置１自身の図６の装置情報テーブルと共に、他の情報処理装置のそれぞれの図６の装置情報テーブルが記憶される。例えば図７の例では、この拡張された領域には、情報処理装置１乃至４のそれぞれの装置情報テーブルが記憶される。
【０１５２】
これに対して、情報処理装置１がスレーブ装置として動作している場合、「能力交換プログラム」は、ネットワーク５１に接続された他の情報処理装置のうちの、マスタ装置として動作している情報処理装置の装置情報を取得し、メインメモリ１２に記憶させる。
【０１５３】
また、「能力交換プログラム」は、ネットワーク５１に新たな他の情報処理装置が接続されたことを示すネットワーク状態変化通知を「マスタ/スレーブマネージャ」から受け取ると、新たな他の情報処理装置の装置情報を取得する。これに対して、ネットワーク５１から他の情報処理装置が切り離されたことを示すネットワーク状態変化通知、或いは、他の情報処理装置の電源が切断されたことを示すネットワーク状態変化通知を「マスタ/スレーブマネージャ」から受け取ると、「能力交換プログラム」は、他の情報処理装置の装置情報をメインメモリ１２から削除する。
【０１５４】
図７に示されるネットワーク５１に接続された４台の情報処理装置１乃至４のそれぞれの電源が投入され、その後、情報処理装置１乃至４のそれぞれにより以上の一連の処理が実行されると、ネットワーク５１に接続された４台の情報処理装置１乃至４のそれぞれは、仮想的な１台の情報処理装置６１として動作することが可能になる。
【０１５５】
次に、ネットワーク５１に接続された情報処理装置１乃至４からなる仮想的な１台の情報処理装置６１が、所定の機能プログラムを実行する場合の処理について説明する。
【０１５６】
機能プログラムとは、仮想的な１台の情報処理装置６１を含む所定の情報処理装置がユーザに提供する機能を実現するためのプログラムを指す。例えば、機能プログラムとしては、映像や音声の記録再生機能を実現するためのプログラムや、記録された映像データの中から所定の映像データを探すための検索機能を実現するためのプログラムが存在する。
【０１５７】
係る機能プログラムを含むソフトウエアの、仮想的な１台の情報処理装置６１を含む所定の情報処理装置内での構成例が図８に示されている。即ち、図８は、例えば情報処理装置１乃至４のうちの何れかのメインメモリ１２にロードされ得る各種プログラムが、その機能とその特徴とによってカテゴライズされた場合の構成例を示している。
【０１５８】
図８に示されるように、このようにカテゴライズされた場合には、プログラムは、デバイスドライバ、制御プログラム、および、機能プログラムといった３種類に分類される。
【０１５９】
デバイスドライバには、図８に示される各プログラムと図示せぬハードウエアとの間の各種情報の授受を司るプログラムが含まれる。例えば、図８に示されるように、テレビジョン放送信号の受信用のアンテナとの間の各種情報の授受を司る「方送受信」、所定の表示装置（モニタ）との間の各種情報の授受を司る「モニタ出力」、DVD±R/RW等のリムーバブル記録媒体との間の各種情報の授受を司る「ビットストリーム」、および、ネットワーク５１に接続された他の情報処理装置との間の各種情報の授受を司る「ネットワーク入出力」が含まれる。
【０１６０】
制御プログラムには、上述した「能力交換」と「マスタ/スレーブマネージャ」との他、「リソースマネージャ」等が含まれる。
【０１６１】
「リソースマネージャ」は、自身の情報処理装置のサブプロセッサの制御を行い、例えば図７の例では情報処理装置１乃至４のうちの何れかに存在するサブプロセッサ２４の制御を行い、かつ、サブプロセッサの管理情報を他の情報処理装置との間で授受するための通信制御を行うプログラムである。
【０１６２】
「リソースマネージャ」によるサブプロセッサの制御とは、プログラムデータの転送、プログラムの開始、プログラムの停止、および、プログラムの結果の受信等を指す。
【０１６３】
また「リソースマネージャ」による通信制御とは、ネットワーク５１上にある他の情報処理装置との通信や制御を指す。この通信制御により、他の情報処理装置にあるサブプロセッサ２４の空き状態等の問い合わせや、データの送受信を行うことができる。
【０１６４】
さらにまた、「リソースマネージャ」によるサブプロセッサの管理情報とは、例えば図９に示されるサブプロセッサ管理テーブルに記述される各種情報を指す。即ち、図９は、「リソースマネージャ」に用意されているサブプロセッサ管理テーブルの一例を示している。
【０１６５】
「リソースマネージャ」は、このサブプロセッサ管理テーブルを用いることで、各サブプロセッサのそれぞれの管理を行うことができる。ここで言う各サブプロセッサとは、自身の情報処理装置のサブプロセッサの他、通信制御により取得された他の情報処理装置のサブプロセッサも含まれる。例えば図７の例では、情報処理装置１の「リソースマネージャ」は、情報処理装置１自身のサブプロセッサ２４の他、他の情報処理装置２乃至４のサブプロセッサのそれぞれの管理を行うことができる。
【０１６６】
サブプロセッサ管理テーブルの１行は、所定の１つのサブプロセッサが対応付けられている。サブプロセッサ管理テーブルにおける、「サブプロセッサID」、「情報処理装置ID」、および、「ステータス」のそれぞれは、上述した図６の装置情報テーブルにおける、「サブプロセッサIDk（kは、図１の例では１乃至mのうちの何れかの値）」、「情報処理装置ID」、および、「サブプロセッサステータス」のそれぞれに対応する。「プログラムID」には、その行に対応するサブプロセッサが実行するまたは実行予定の機能プログラムのIDが記述される。「ロックシーケンスID」には、その行に対応するサブプロセッサが何れのシーケンスをロックするのかを示す値が記述される。「優先度」には、サブプロセッサ管理テーブルで管理されている全サブプロセッサのうちの、その行に対応するサブプロセッサの優先度が記述される。
【０１６７】
図８に戻り、機能プログラムには、上述したように、ユーザに提供する所定の機能を実現するための「プログラム」が含まれる。
【０１６８】
以上のことから、上述したソフトウエアセルに関する一連の処理、即ち、ソフトウエアセルを生成したり、そのソフトウエアセルを他の情報処理装置との間で送受信する処理は、結局、「能力交換」や「リソースマネージャ」等が含まれる制御プログラムにより実行される、ということがわかる。また、ソフトウエアセルの「プログラム」には機能プログラムが主に含まれる、ということがわかる。
【０１６９】
従って、図７に示されるネットワーク５１に接続された情報処理装置１乃至４のそれぞれは、制御プログラムを予め格納しておく必要がある。
【０１７０】
また、情報処理装置１乃至４のそれぞれは、ネットワーク５１を介して相互に通信を行うことから、デバイスドライバの「ネットワーク入出力」も予め格納しておく必要がある。
【０１７１】
これに対して、その他のプログラム、例えば機能プログラムについては、情報処理装置１乃至４の全てに格納されている必要はない。換言すると、その他のプログラム、例えば機能プログラムについては、情報処理装置１乃至４の全てに格納されているとは限らない。
【０１７２】
さらに、情報処理装置１乃至４のうちの、機能プログラムを格納している情報処理装置が、その機能プログラムを実行できない場合もある。情報処理装置が機能プログラムを実行できない場合とは、例えば、その機能プログラムで利用されるデータの入出力を司るデバイスドライバが、情報処理装置に格納されていない場合等を指す。
【０１７３】
或いは、機能プログラムを格納している情報処理装置が、その機能プログラムをたとえ実行できたとしても、その機能プログラムを実行する装置として最適な装置であるとは必ずしも言えない。即ち、機能プログラムを格納している情報処理装置が、その機能プログラムを最適に実行できるとは限らない。
【０１７４】
そこで、上述した図７に示されるように、ネットワーク５１に接続された４台の情報処理装置１乃至４をまとめて仮想的な１台の情報処理装置６１として動作させることで、その機能プログラムを最適に実行するのである。即ち、仮想的な１台の情報処理装置６１を構成する４台の情報処理装置１乃至４のうちの最適な１台に、その機能プログラムを実行させるのである。
【０１７５】
以下、図１０と図１１を参照して、仮想的な１台の情報処理装置６１が、所定の機能プログラムを実行する場合の処理例についてさらに詳しく説明する。即ち、仮想的な１台の情報処理装置６１が所定の機能プログラムを実行する場合の処理例を説明する図として、仮想的な１台の情報処理装置６１の構成例と情報の流れが図１０に示されており、そのフローチャートが図１１に示されている。
【０１７６】
図１０に示されるように、例えば、仮想的な１台の情報処理装置６１のうちの情報処理装置１がマスタ装置として動作しており、その他の情報処理装置２乃至４がスレーブ装置として動作しているとする。このため、以下、図１０と図１１の説明をしている範囲内では、図１０の記載に併せて、情報処理装置１乃至４のそれぞれを、マスタ装置、スレーブ装置A、スレーブ装置B、および、スレーブ装置Cと称する。
【０１７７】
マスタ装置は、ユーザの操作や、各スレーブ装置A乃至Cのそれぞれの使用状況を把握する必要がある。
【０１７８】
そこで、マスタ装置とスレーブ装置とを問わず、ユーザが所定の情報処理装置を操作した場合、その操作情報はマスタ装置に通知されることになる。
【０１７９】
例えば図１０の例では、スレーブ装置Aがユーザ操作の対象とされている。この場合、図１１のステップＳ２１において、スレーブ装置Aは、操作情報をマスタ装置に送信する。より正確には、スレーブ装置Aは、操作情報を含むソフトウエアセルを生成し、そのソフトウエアセルをマスタ装置に送信する。これにより、スレーブ装置Aの処理は終了となる。
【０１８０】
マスタ装置のメインプロセッサ２１は、その操作情報が送信されてくると、ステップＳ１１において、その操作情報を受信し、ステップＳ１２において、各情報処理装置の動作状況を調べて、その操作情報に応じた機能プログラムを実行できる情報処理装置を選択する。
【０１８１】
具体的には例えばいま、ステップＳ１１の処理で受信された操作情報に対応する機能プログラムが、マスタ装置自身に格納されているとする。この場合、マスタ装置のメインプロセッサ２１は、その機能プログラムについての各種情報、例えば、それが使用するメインプロセッサの使用率、サブプロセッサの使用率、および、記録部（外部記憶装置）の使用量を取得する。
【０１８２】
また、マスタ装置のメインプロセッサ２１は、メインメモリ１２に記憶されている各情報処理装置の上述した装置情報、即ち、各情報処理装置それぞれについての上述した図６の装置情報テーブルの各記述値に基づいて、各情報処理装置の動作状況を調べる。
【０１８３】
そして、マスタ装置のメインプロセッサ２１は、機能プログラムについての各種情報、および、各情報処理装置の動作状況に基づいて、その機能プログラムを動作させるのに最適であると判断される情報処理装置を選択する。このとき、マスタ装置のメインプロセッサ２１は、自分自身を選択してもよいが、ここでは例えば、スレーブ装置Bを選択したとする。
【０１８４】
この場合、ステップＳ１３において、マスタ装置は、ステップＳ１２の処理で選択されたスレーブ装置Bに対して、機能プログラムの実行要求を送信する。
【０１８５】
そして、マスタ装置は、この機能プログラムで使用するメインプロセッサの使用率、サブプロセッサの使用率、および、外部記憶装置の使用量などを加味して、選択されたスレーブ装置Bに対する装置情報テーブルの記述値を書き換える。これにより、マスタ装置の処理は終了となる。ただし、マスタ装置は、後述するステップＳ３２の処理後に、スレーブ装置Bに対する装置情報テーブルの記述値を再度書き換える。
【０１８６】
スレーブ装置Bは、マスタ装置からの実行要求が送信されてくると、ステップＳ３１において、その実行要求を受信し、ステップＳ３２において、その実行要求で要求された機能プログラムを実行する。
【０１８７】
スレーブ装置Bは、機能プログラムの処理終了後、終了通知をマスタに送信すると、その処理を終了させる。マスタ装置は、この終了通知を受信すると、上述したように、スレーブ装置Bに対する装置情報テーブルの記述値を再度書き換える。
【０１８８】
具体的には例えばいまの場合、機能プログラムはマスタ装置に格納されているとしたので(スレーブ装置Bに格納されていないので)、ステップＳ１３において、マスタ装置は、この機能プログラムを「プログラム」として含み、かつ、この機能プログラムに対する「キックコマンド」を「DMAコマンド」として含むソフトウエアセルを生成して、スレーブ装置Bに送信する。
【０１８９】
すると、スレーブ装置Bは、ステップＳ３１において、そのソフトウエアセルを受信すると、ステップＳ３２において、そのソフトウエアセルに含まれる機能プログラムを実行する。
【０１９０】
これに対して例えば、スレーブ装置B側に機能プログラムが格納されている場合、ステップＳ１３において、マスタ装置は、この機能プログラムを実行させるための「機能プログラム実行コマンド」を「DMAコマンド」として含むソフトウエアセルを生成して、スレーブ装置Bに送信する。
【０１９１】
すると、スレーブ装置Bは、ステップＳ３１において、そのソフトウエアセルを受信する。そして、ステップＳ３２において、スレーブ装置Bのメインプロセッサ２１は、そのソフトウエアセルに含まれる「機能プログラム実行コマンド」に従って、スレーブ装置B自身の記録部１３に予め保存されている機能プログラムをメインメモリ１２にロードし、その機能プログラムを実行する。
【０１９２】
以上、図１０と図１１とを参照して、仮想的な１台の情報処理装置６１が、所定の機能プログラムを実行する場合の処理の一例として、１台のスレーブ装置Bが機能プログラムを実行する場合の処理について説明した。
【０１９３】
さらに、この仮想的な１台の情報処理装置６１においては、情報処理装置１乃至４のうちの任意の台数の任意の情報処理装置のそれぞれが、機能プログラムを並列的かつ独立して実行することができる。
【０１９４】
例えば、この仮想的な１台の情報処理装置６１においては、情報処理装置１乃至４のうちの任意の台数の任意の情報処理装置のそれぞれが、機能パイプライン処理の所定の部分処理を実現する各機能プログラムのそれぞれを並列的かつ独立して実行することができる。
【０１９５】
機能パイプライン処理とは、上述したように、所定の１単位量のデータに対する所定の処理を他とは独立して自立的に実行する複数の機能ブロックのそれぞれの処理（各タスク）の順番が予め決定されており、複数の機能ブロックのうちの１番目の機能ブロックに１単位量のデータが入力される毎に、そのデータに対する複数の機能ブロックのそれぞれの処理が上述した順番で順次実行されていく処理を指す。
【０１９６】
具体的には例えば、図１２に示されるように、所定の単位量のデータに対する１０個の機能ブロックPa1乃至Pa10のそれぞれの処理（各タスク）がその順番に順次実行されていく処理が、機能パイプライン処理の一例である。この場合、機能ブロックPaq（qは、１乃至１０のうちの何れかの値）は、他の機能ブロックとは独立して自立的に、１単位量のデータが入力される毎にそのデータに対して所定の処理を順次施して、後段の機能ブロックPaq+1または外部に出力する。
【０１９７】
例えばいま、機能ブロックPa1乃至Pa10のそれぞれの処理、即ち各タスクのそれぞれが、１つのサブプロセッサ２４に割り当てられて実行されるとする。即ち、１つのサブプロセッサ２４は、機能ブロックPa1乃至Pa10のうちの割り当てられた１つの処理を実行するとする。また、上述した図７の仮想的な１台の情報処理装置６１を構成する情報処理装置１乃至４のうちの、情報処理装置２にはサブプロセッサ２４が５個設けられ、かつ、情報処理装置３にはサブプロセッサ２４が５個設けられているとする。
【０１９８】
この場合、例えば、情報処理装置２のサブプロセッサ２４−１乃至２４−５のそれぞれが機能ブロックPa1乃至Pa5のそれぞれの処理をその順番に実行し、かつ、情報処理装置３のサブプロセッサ２４−１乃至２４−５のそれぞれが機能ブロックPa6乃至Pa10のそれぞれの処理をその順番に実行することで、図１２の機能パイプライン処理を実行することが可能になる。
【０１９９】
詳細には例えば、情報処理装置２のメインプロセッサ２１は、１単位量のデータを、最前段のサブプロセッサ２４−１に供給する。
【０２００】
すると、サブプロセッサ２４−１は、供給された１単位量のデータに対する機能ブロックPa1の処理を実行して、処理が施された１単位量のデータをサブプロセッサ２４−２に供給する。以下同様に、サブプロセッサ２４−２は、供給された１単位量のデータに対する機能ブロックPa2の処理を実行して、処理が施された１単位量のデータをサブプロセッサ２４−３に供給する。サブプロセッサ２４−３は、供給された１単位量のデータに対する機能ブロックPa3の処理を実行して、処理が施された１単位量のデータをサブプロセッサ２４−４に供給する。サブプロセッサ２４−４は、供給された１単位量のデータに対する機能ブロックPa4の処理を実行して、処理が施された１単位量のデータをサブプロセッサ２４−５に供給する。そして、最後段のサブプロセッサ２４−５は、供給された１単位量のデータに対する機能ブロックPa5の処理を実行して、処理が施された１単位量のデータをメインプロセッサ２１に供給する。
【０２０１】
すると、情報処理装置２のメインプロセッサ２１は、供給された１単量のデータを含むソフトウエアセルを生成して、ネットワーク５１を介して情報処理装置３に送信する。
【０２０２】
情報処理装置２は、１単位量のデータが供給される毎に、以上の一連の処理を順次実行していく。換言すると、情報処理装置２の処理とは、図１２の機能パイプライン処理のうちの機能ブロックPa1乃至Pa5までの部分処理であると言える。
【０２０３】
情報処理装置３のメインプロセッサ２１は、情報処理装置２から送信されたソフトウエアセルを受信すると、そのソフトウエアセルに含まれる１単位量のデータを、最前段のサブプロセッサ２４−１に供給する。
【０２０４】
すると、サブプロセッサ２４−１は、供給された１単位量のデータに対する機能ブロックPa6の処理を実行して、処理が施された１単位量のデータをサブプロセッサ２４−２に供給する。以下同様に、サブプロセッサ２４−２は、供給された１単位量のデータに対する機能ブロックPa7の処理を実行して、処理が施された１単位量のデータをサブプロセッサ２４−３に供給する。サブプロセッサ２４−３は、供給された１単位量のデータに対する機能ブロックPa8の処理を実行して、処理が施された１単位量のデータをサブプロセッサ２４−４に供給する。サブプロセッサ２４−４は、供給された１単位量のデータに対する機能ブロックPa9の処理を実行して、処理が施された１単位量のデータをサブプロセッサ２４−５に供給する。そして、最後段のサブプロセッサ２４−５は、供給された１単位量のデータに対する機能ブロックPa10の処理を実行して、処理が施された１単位量のデータをメインプロセッサ２１に供給する。
【０２０５】
すると、情報処理装置３のメインプロセッサ２１は、供給された１単量のデータを外部に出力する。ここで言う外部出力とは、メインプロセッサ２１から見た場合の外部出力である。従って、ここで言う外部出力とは、情報処理装置３において、記録部１３に記録させること、ドライブ１５を介してリムーバブル記録媒体１８に記録させること、UI部１６を介してユーザに呈示すること、および、通信部１７を介して他の情報処理装置に送信すること（例えば、情報処理装置２に戻すこと）等を指す。
【０２０６】
情報処理装置３は、１単位量のデータが供給される毎に、即ち、１単位量のデータを含むソフトウエアセルが他の情報処理装置２から送信されてくる毎に、以上の一連の処理を順次実行していく。換言すると、情報処理装置３の処理とは、図１２機能パイプライン処理のうちの、機能ブロックPa6乃至Pa10までの部分処理であると言える。
【０２０７】
以上説明したように、情報処理装置２が機能ブロックPa1乃至Pa5までの部分処理を実行し、かつ、情報処理装置３が機能ブロックPa6乃至Pa10までの部分処理を実行することで、機能ブロックPa1乃至Pa10全体についての機能パイプライン処理、即ち、図１２の機能パイプライン処理を実行することが可能になる。
【０２０８】
換言すると例えば、図１３に示されるように、情報処理装置２が、機能ブロックPa1乃至Pa5までの部分処理を実現可能な機能プログラム７１を実行し、かつ、情報処理装置３が、機能ブロックPa6乃至Pa10までの部分処理を実現可能な機能プログラム７２を実行することで、図１２の機能パイプライン処理を実現することが可能になる。
【０２０９】
なお、繰り返しになるが、本明細書においては、機能パイプライン処理が２以上の情報処理装置で実行される場合、データの転送経路がパスと称される。換言すると、パスとは、機能パイプライン処理についての、２以上の情報処理装置のそれぞれの処理順番を指すとも言える。例えば、図１３の例では、「情報処理装置２  →  情報処理装置３」がパスである。
【０２１０】
ところで、［発明が解決しようとする課題］で上述したように、従来においては、このパスは固定されていた。例えば、上述した図１３の例では、「情報処理装置２  →  情報処理装置３」が固定パスとして常に使用されていた。
【０２１１】
ところが、例えば、上述した図７の仮想的な１台の情報処理装置６１を構成する情報処理装置１乃至４のうちの、情報処理装置４のサブプロセッサ２４が５個以上設けられている場合には、図１３には図示はしないが、情報処理装置２が機能プログラム７１を実行し、かつ、情報処理装置３の代わりに情報処理装置４が機能プログラム７２を実行しても、図１２の機能パイプライン処理を実行することが可能になる。即ち、この場合、「情報処理装置２  →  情報処理装置４」がパスとなる。
【０２１２】
このような場合、現在利用されている「情報処理装置２  →  情報処理装置３」という固定パスよりも、現在利用されていない「情報処理装置２  →  情報処理装置４」というパスの方が、情報処理装置３，４それぞれのプロセッサの負荷率や、ネットワーク５１上の帯域等の制限に応じて、機能パイプライン処理が高速に実行されるときもある。
【０２１３】
しかしながら、このようなときでも、上述した特許文献１乃至５等の従来の技術を単体または組合せで単に利用しても、「情報処理装置２  →  情報処理装置３」という固定パスが常に使用されることになり、その結果、機能パイプライン処理の処理速度が制限されてしまう、という課題が発生してしまう。
【０２１４】
また、例えば、情報処理装置３に障害が生じた場合、具体的には例えば、ここでは情報処理装置３には５個のサブプロセッサ２４−１乃至２４−５しか搭載されていないので（なお、後述する他の例では８個になる）、そのうちの１つのサブプロセッサ２４が他の割り込み等で使用できなくなった場合でさえも、「情報処理装置２  →  情報処理装置３」という固定パスでの機能パイプライン処理の実現が不可能になってしまう、という課題が発生してしまう。
【０２１５】
そこで、この課題を解決すべく、本発明人は次のような手法を発明した。即ち、本発明人が発明した手法とは、３以上の情報処理装置のそれぞれで利用可能なプロセッサの個数の情報に基づいて、機能パイプライン処理の経路（パス）の候補を２以上作成し、作成された２以上の候補のそれぞれを個別に利用して機能パイプライン処理を一旦実行し、一旦実行された機能パイプライン処理の結果を最速に出力した候補を、これから利用する経路（以下、正式経路と称する）として設定し、それ以降、この正式経路を利用して機能パイプライン処理を実行していく、という手法である。
【０２１６】
上述した図７の仮想的な１台の情報処理装置６１が、本発明のこの手法を利用して、機能パイプライン処理を実行する場合、上述した図１１の処理の代わりに、例えば図１４に示される処理が実行される。即ち、図１４は、仮想的な１台の情報処理装置６１が機能パイプライン処理を実行する場合の、より正確には、機能パイプライン処理を実現させる機能プログラムを実行する場合の、本発明の処理例を示すフローチャートである。
【０２１７】
ここで注目すべき点は、次の点である。即ち、図１１の処理では、機能プログラムの実行要求はマスタ装置によりなされていたのに対して、図１４の本発明の処理では、機能パイプライン処理の所定の部分処理を実現する機能プログラムの実行要求は、マスタ装置やスレーブ装置といったカテゴリとは独立して、専用の装置（以下、処理実行依頼装置と称する）によりなされる、という点である。即ち、図１１の処理と同様にマスタ装置が処理実行依頼装置になることもあるし、スレーブ装置のうちの１台が処理実行依頼装置となることもある点である。
【０２１８】
例えば以下の説明では、図１１の処理と図１４の本発明の処理との差異を容易に理解してもらうことを目的として、図１１の例ではスレーブ装置Aとされていた情報処理装置２が処理実行依頼装置として機能するとする。
【０２１９】
このため、図１４の本発明の処理を説明する場合、スレーブ装置Aである情報処理装置２を、処理実行依頼装置２と称する。また、図１４の本発明の処理を説明する場合、処理実行依頼装置２に着目していくので、図１１の例ではスレーブ装置Bとされていた情報処理装置３を、他の情報処理装置３と称する。同様に、図１１の例ではスレーブ装置Cとされていた情報処理装置４を、他の情報処理装置４と称する。また、ここでも、情報処理装置１がマスタ装置として動作しているとする。このため、図１４の本発明の処理を説明する場合も、情報処理装置１をマスタ装置１と称する。
【０２２０】
さらに例えばここでも、処理実行依頼装置２がユーザ操作の対象とされているとする。
【０２２１】
この場合、処理実行依頼装置２は、例えば図１５に示されるような機能的構成を有することができる。即ち、図１５は、情報処理装置２が処理実行依頼装置として機能する場合の機能的構成例を示している。
【０２２２】
そこで、図１４のフローチャートの説明を行う前に、この図１５を参照して、処理実行依頼装置２の機能的構成例について先に説明する。
【０２２３】
経路候補設定部８１は、処理実行依頼装置２自身、他の情報処理装置３、および、他の情報処理装置４のそれぞれが利用可能なサブプロセッサ２４の個数に基づいて、経路の候補を２以上設定する。この場合、詳細については後述するが、他の情報処理装置３および他の情報処理装置４のそれぞれが利用可能なサブプロセッサ２４の個数については、マスタ装置１から経路候補設定部８１に通知される。
【０２２４】
具体的には例えばいま、上述した図１２の機能パイプライン処理が実行対象であるとする。この場合、経路候補設定部８１は、図１３を参照して上述した「処理実行依頼装置２→他の情報処理装置３」というパス１と「処理実行依頼装置２→他の情報処理装置４」というパス２とのそれぞれを、経路の候補として設定することになる。
【０２２５】
経路候補機能パイプライン制御部８２は、経路候補設定部８１により設定された２以上の経路の候補のそれぞれを利用して機能パイプライン処理を一旦実行させる。
【０２２６】
例えばいまの場合、経路候補機能パイプライン制御部８２は、パス１とパス２とのそれぞれを利用して図１２の機能パイプライン処理を一旦実行させることになる。
【０２２７】
詳細には、経路候補機能パイプライン制御部８２は、図１２の機能パイプライン処理のうちの、処理実行依頼装置２自身のサブプロセッサ２４−１乃至２４−５のそれぞれに対して機能ブロックPa1乃至Pa5のそれぞれを割り当てる制御を行う。また、経路候補機能パイプライン制御部８２は、他の情報処理装置３のサブプロセッサ２４−１乃至２４−５のそれぞれに対して機能ブロックPa6乃至Pa10のそれぞれを割り当てる制御を行う。同様に、経路候補機能パイプライン制御部８２は、他の情報処理装置３のサブプロセッサ２４−１乃至２４−５のそれぞれに対して機能ブロックPa6乃至Pa10のそれぞれを割り当てる制御を行う。
【０２２８】
具体的には例えば、経路候補機能パイプライン制御部８２は、上述した図１３の機能プログラム７１を自分自身内のメインメモリ１２にロードすることで、処理実行依頼装置２自身のサブプロセッサ２４−１乃至２４−５のそれぞれに対して機能ブロックPa1乃至Pa5のそれぞれを割り当てる制御を行う。
【０２２９】
また例えば、経路候補機能パイプライン制御部８２は、図１３の機能プログラム７２を含むソフトウエアセルを生成し、そのソフトウエアセルを他の情報処理装置３に送信し、そのソフトウエアセルに含まれる機能プログラム７２を、他の情報処理装置３内のメインメモリ１２にロードさせることで、他の情報処理装置３のサブプロセッサ２４−１乃至２４−５のそれぞれに対して機能ブロックPa6乃至Pa10のそれぞれを割り当てる制御を行う。
【０２３０】
同様に例えば、経路候補機能パイプライン制御部８２は、図１３の機能プログラム７２を含むソフトウエアセルを他の情報処理装置４にも送信し、そのソフトウエアセルに含まれる機能プログラム７２を、他の情報処理装置４内のメインメモリ１２にロードさせることで、他の情報処理装置４のサブプロセッサ２４−１乃至２４−５のそれぞれに対して機能ブロックPa6乃至Pa10のそれぞれを割り当てる制御を行う。
【０２３１】
その後、経路候補機能パイプライン制御部８２は、所定のデータを１単位量毎にパス１とパス２とのそれぞれに順次通過させていく制御を行う。即ち、経路候補機能パイプライン制御部８２は、図１３の機能プログラム７１を実行することで、１単位量のデータ毎に、機能ブロックPa1乃至Pa5までの部分処理を施し、その部分処理が施されたデータを1単位量毎に、他の情報処理装置３と他の情報処理装置４とのそれぞれに送信する。
【０２３２】
このとき、経路候補機能パイプライン制御部８２は、パス１とパス２とのそれぞれについて、１単位量のデータが通過するのに要する通過時間を計測し、その計測結果を正式経路設定部８３に通知する。なお、この通過時間が、後述する到達時間に相当する。
【０２３３】
正式経路設定部８３は、経路候補設定部８１により設定された２以上の経路の候補のうちの、経路候補機能パイプライン制御部８２から通知される通過時間が最短の候補、即ち、１単位量のデータが最速に通過した候補を、正式経路として設定する。換言すると、経路候補機能パイプライン制御部８２の制御により一旦実行された機能パイプライン処理の結果を最速に出力した候補が、正式経路として設定される。
【０２３４】
例えばいまの場合、パス１の方がパス２よりも通過時間が短かったとすると、パス１が正式経路に設定される。
【０２３５】
この正式経路設定部８３の設定結果が正式経路機能パイプライン制御部８４に通知されると、それ以降、正式経路機能パイプライン制御部８４は、所定のデータを１単位量毎に正式経路に順次通過させていく第２の制御を行う。例えばパス１が正式経路に設定されている場合、正式経路機能パイプライン制御部８４は、図１３の機能プログラム７１を実行することで、１単位量のデータ毎に、機能ブロックPa1乃至Pa5までの部分処理を施し、その部分処理が施されたデータを1単位量毎に、パス１に含まれる他の情報処理装置３に送信する。
【０２３６】
次に、図１４に戻り、係る図１５の機能的構成を有する処理実行依頼装置２、マスタ装置１、他の情報処理装置３、および、他の情報処理装置４の間で実行される処理について説明する。
【０２３７】
即ち、図１４のステップＳ１２１とＳ１１１のそれぞれの処理として、図１１のステップＳ２１とＳ１１のそれぞれの処理と基本的に同様の処理が実行される。即ち、ステップＳ１２１において、処理実行依頼装置２の経路候補設定部８１は、操作情報をマスタ装置１に送信する。より正確には、処理実行依頼装置２の経路候補設定部８１は、操作情報を含むソフトウエアセルを生成し、そのソフトウエアセルをマスタ装置１に送信する。すると、ステップＳ１１１において、マスタ装置１は、その操作情報を受信する。
【０２３８】
このように、ここまでの処理は、図１１の処理と同様の処理である。換言すると、この時点でマスタ装置１が受け取った操作情報が、機能パイプライン処理の実行機能以外の機能を実現させる指令であった場合には、それ以降、例えば図１１の処理が実行されることになる。これに対して、その操作情報が、機能パイプライン処理の実行機能を実現させる指令であった場合には、それ以降、例えば次のような処理が実行される。
【０２３９】
即ち、ステップＳ１１２において、マスタ装置１は、ネットワーク５１に接続されているスレーブ装置のうちの処理実行依頼装置２を除くスレーブ装置の全てに対して、即ち、例えばここでは他の情報処理装置３と他の情報処理装置４とのそれぞれに対して、空きサブプロセッサ数の取得依頼を送信する。
【０２４０】
すると、他の情報処理装置３は、ステップＳ１３１において、その取得依頼を受信し、ステップＳ１３２において、空きサブプロセッサ数をマスタ装置１に通信する。同様に、他の情報処理装置４は、ステップＳ１４１において、その取得依頼を受信し、ステップＳ１４２において、空きサブプロセッサ数をマスタ装置１に通信する。
【０２４１】
具体的には例えば、空きサブプロセッサとは、実行対象の機能パイプライン処理の各機能ブロックの処理（タスク）の割り振りが可能なサブプロセッサ２４を指す。従って、空きサブプロセッサ数は、例えば上述した図６の装置情報を示す「データ」のうちの「サブプロセッサ数」の記述値から「サブプロセッサ使用数」の記述値を減算することで得られることになる。
【０２４２】
そこで例えば、マスタ装置１は、「送信元ID」と「応答先ID」とが共にマスタ装置１のIDであり、「送信先ID」が他の情報処理装置３であり、かつ、「DMAコマンド」が「ステータス要求コマンド」であるソフトウエアセル（上述した図５参照）を生成する。そして、ステップＳ１１２におい、マスタ装置１は、そのソフトウエアセルを、空きサブプロセッサ数の取得依頼として他の情報処理装置３に送信する。
【０２４３】
すると例えば、他の情報処理装置３は、ステップＳ１３１において、そのソフトウエアセルを受信する。次に、他の情報処理装置３は、「送信先ID」がマスタ装置１であり、「DMAコマンド」が「ステータス返信コマンド」であり、かつ、「データ」が上述した図６の装置情報であるソフトウエアセルを生成する。そして、ステップＳ１３２において、他の情報処理装置３は、そのソフトウエアセルを、空きプロセッサ数を示す情報としてマスタ装置１に送信（通知）する。
【０２４４】
同様に例えば、マスタ装置１は、例えば、「送信元ID」と「応答先ID」とが共にマスタ装置１のIDであり、「送信先ID」が他の情報処理装置４であり、かつ、「DMAコマンド」が「ステータス要求コマンド」であるソフトウエアセルを生成する。そして、ステップＳ１１２におい、マスタ装置１は、そのソフトウエアセルを、空きサブプロセッサ数の取得依頼として他の情報処理装置４に送信する。
【０２４５】
すると例えば、他の情報処理装置４は、ステップＳ１４１において、そのソフトウエアセルを受信する。次に、他の情報処理装置４は、「送信先ID」がマスタ装置１であり、「DMAコマンド」が「ステータス返信コマンド」であり、かつ、「データ」が図６の装置情報であるソフトウエアセルを生成する。そして、ステップＳ１４２において、他の情報処理装置４は、そのソフトウエアセルを、空きプロセッサ数を示す情報としてマスタ装置１に送信する。
【０２４６】
なお、マスタ装置１の上述した電源投入時の処理が実行されている場合、マスタ装置１、処理実行依頼装置２、他の情報処理装置３、および他の情報処理装置４のそれぞれの図６の「データ」で示される各装置情報が既に取得され、それらが装置情報テーブルのそれぞれとしてマスタ装置１に既に保持されている。従って、この場合、ステップＳ１１２、ステップＳ１３１およびＳ１３２、並びに、ステップＳ１４１およびＳ１４２の処理は特に必須な処理ではない。
【０２４７】
ただし、正確な空きプロセッサ数、即ち、最新の空きプロセッサ数が取得できるという点で、ステップＳ１１２、ステップＳ１３１およびＳ１３２、並びに、ステップＳ１４１およびＳ１４２の処理は実行された方が好適である。
【０２４８】
このようにして、ステップＳ１３２の処理で他の情報処理装置３の空きプロセッサ数が通知され、かつ、ステップＳ１４２の処理で他の情報処理装置４の空きプロセッサ数が通知されると、マスタ装置１の処理はステップＳ１１３に進む。
【０２４９】
ステップＳ１１３において、マスタ装置１は、例えば図１６に示されるような空きサブプロセッサリストを作成して、処理実行依頼装置２に送信する。これにより、マスタ装置１の処理は終了になる。
【０２５０】
即ち、図１６は、ステップＳ１１３の処理でマスタ装置１により生成される空きサブプロセッサリストの例を示している。
【０２５１】
この空きサブプロセッサリストにおいて、「情報処理装置ID」の項目には、空きプロセッサ数の通知を行った情報処理装置のIDが記述される。即ち、「情報処理装置ID」の項目には例えば、ステップＳ１３２またはＳ１４２の処理で供給されたソフトウエアセルの図６の「データ（装置情報）」のうちの「情報処理装置ID」の値がそのまま記述される。
【０２５２】
「空きプロセッサ数」の項目には、その左方の「情報処理装置ID」で特定される情報処理装置の空きプロセッサ数が記述される。即ち、「空きプロセッサ数」の項目には例えば、ステップＳ１３２またはＳ１４２の処理で供給されたソフトウエアセルの図６の「データ（装置情報）」のうちの、「サブプロセッサ数」の値から「サブプロセッサ使用数」の値が減算された値が記述される。
【０２５３】
即ち、他の情報処理装置３のIDが「３」とされ、その空きプロセッサ数が「８」とされ、かつ、他の情報処理装置４のIDが「４」とされ、その空きプロセッサ数が「６」とされた場合の空きサブプロセッサリストの例が図１６に示されていることになる。
【０２５４】
図１４に戻り、処理実行依頼装置２の経路候補設定部８１は、ステップＳ１２２において、このような空きサブプロセッサリストを受信すると、ステップＳ１２３において、例えば、図１７に示されるような経路選択テーブルを作成する。
【０２５５】
即ち、図１７は、ステップＳ１２３の処理で処理実行依頼装置２の経路候補設定部８１により作成される経路選択テーブルの例を示している。
【０２５６】
この空きサブプロセッサリストにおいて、「情報処理装置ID」の項目には、実行対象の機能パイプライン処理の所定の部分処理を実行し得る情報処理装置のIDが記述される。
【０２５７】
「空きプロセッサ数」の項目には、その左方の「情報処理装置ID」で特定される情報処理装置の空きプロセッサ数が記述される。
【０２５８】
即ち、「情報処理装置ID」と「空きプロセッサ数」との項目のそれぞれには例えば、直前のステップＳ１２２の処理で受信された図１６の空きプロセッサリストの「情報処理装置ID」と「空きプロセッサ数」のそれぞれの値がそのまま記述される。
【０２５９】
「パス１」乃至「パス５」は、詳細については後述するが、実行対象の機能パイプライン処理の経路（パス）の候補を示している。即ち、「パス１」乃至「パス５」のそれぞれの項目には、実行対象の機能パイプライン処理についての、その左方の「情報処理装置ID」で特定される情報処理装置の処理順番が記述される。即ち、「パス１」乃至「パス５」のそれぞれの項目において何も記述されていないことは、その左方の「情報処理装置ID」で特定される情報処理装置が、その経路の候補には含まれていないことを意味する。
【０２６０】
最終行の「到達時間」の項目には、上述した経路候補機能パイプライン制御部８２により測定される各経路候補の通過時間自身、または、その通過時間に相当する時間が、「パス１」乃至「パス５」といった各経路の候補毎に記述される。なお、「到達時間」の記述値の詳細については、図２９を参照して後述する。
【０２６１】
図１４に戻り、ステップＳ１２４において、処理実行依頼装置２の経路候補設定部８１は、ステップＳ１２３の処理で作成された経路選択テーブルを用いて、実行対象の機能パイプライン処理の経路（パス）の候補を２以上選択する。
【０２６２】
なお、以下、このようなステップＳ１２４の処理を、「経路選択処理」と称する。この「経路選択処理」の詳細な説明については、図１８のフローチャートを参照して後述する。
【０２６３】
次に、ステップＳ１２５において、処理実行依頼装置２の経路候補機能パイプライン制御部８２は、直前のステップＳ１２４の「経路選択処理」により作成された２以上の経路候補のそれぞれに含まれる他の情報処理装置に対して、機能パイプライン処理のうちの所定の部分処理に対応する機能プログラムの実行を依頼する。そして、処理実行依頼装置２の正式経路設定部８３は、その機能パイプライン処理の結果を最速に出力した経路候補を、正式経路（正式パス）として設定し、その設定結果を正式経路機能パイプライン制御部８４に通知する。すると、正式経路機能パイプライン制御部８４は、それ以降、正式経路に含まれる他の情報処理装置に対してのみ、機能パイプライン処理のうちの所定の部分処理に対応する機能プログラムの実行を依頼する。
【０２６４】
この間、ステップＳ１３３において、他の情報処理装置３は、処理実行依頼装置２から依頼を受けた場合、対応する機能プログラムを実行する。即ち、ステップＳ１３３において、他の情報処理装置３は、１単位量のデータが供給される毎に、機能パイプライン処理のうちの所定の部分処理をそのデータに対して施す。そして、他の情報処理装置３は、１単位量分の部分処理が完了すると、後段の部分処理を行う装置または外部に対して処理結果（１単位量の処理済データ）を供給するとともに、処理が完了したことを示す情報（以下、処理完了通知と称する）を処理実行依頼装置２に供給する。
【０２６５】
同様に、ステップＳ１４３において、他の情報処理装置４は、処理実行依頼装置２から依頼を受けた場合、対応する機能プログラムを実行する。即ち、ステップＳ１４３において、他の情報処理装置４は、１単位量のデータが供給される毎に、機能パイプライン処理のうちの所定の部分処理をそのデータに対して施す。そして、他の情報処理装置４は、１単位量分の部分処理が完了すると、後段の部分処理を行う装置または外部に対して処理結果を供給するとともに、処理完了通知を処理実行依頼装置２に供給する。
【０２６６】
詳細には、ステップＳ１２５において、処理実行依頼装置２の経路候補機能パイプライン制御部８２は、例えば、所定の時点から、２以上の経路候補のそれぞれの最終段に位置する他の情報処理装置からの処理完了通知の供給時点まで、例えば図１４の例では他の情報処理装置３と他の情報処理装置４とのそれぞれからの処理完了通知の供給タイミングまでの時間を、上述した通過時間に相当する到達時間として正式経路設定部８３に通知する。その結果、正式経路設定部８３は、この到達時間が最短の経路候補を正式経路として設定する。そして、処理実行依頼装置２の正式経路機能パイプライン制御部８４は、それ以降、正式経路に含まれる他の情報処理装置に対してのみ、機能パイプライン処理のうちの所定の部分処理に対応する機能プログラムの実行を依頼する。
【０２６７】
なお、以下、処理実行依頼装置２、他の情報処理装置３、および、他の情報処理装置４の間で実行される上述した一連の処理、即ち、ステップＳ１２５，Ｓ１３３，Ｓ１４３の処理を、「パイプライン実行処理」と称する。この「パイプライン実行処理」の詳細な説明については、図２９と図３０とのフローチャートを参照して後述する。
【０２６８】
ステップＳ１２５の「パイプライン実行処理」が終了すると、処理実行依頼装置２の処理は終了する。ステップＳ１３３の「パイプライン実行処理」が終了すると、他の情報処理装置３の処理は終了する。ステップＳ１４３の「パイプライン実行処理」が終了すると、他の情報処理装置４の処理は終了する。
【０２６９】
以下、ステップＳ１２４の「経路選択処理」、および、ステップＳ１２５，Ｓ１３３，Ｓ１４３の「パイプライン実行処理」のそれぞれの詳細について、その順番に個別に説明していく。
【０２７０】
はじめに、図１８のフローチャートを参照して、図１４のステップＳ１２４の「経路選択処理」の詳細例について説明する。即ち、図１８は、「経路選択処理」の詳細例を示している。
【０２７１】
なお、「経路選択処理」は、処理実行依頼装置２のうちの図１５の経路候補設定部８１により実行されるが、以下の「経路選択処理」の説明においては、説明の簡略上、単に処理実行依頼装置２により実行されるとして述べていく。
【０２７２】
図１８のステップＳ２０１において、処理実行依頼装置２は、実行元の情報処理装置を決定する。実行元の情報処理装置とは、実行対象の機能パイプライン処理のうちの最前段の機能ブロックの処理（タスク）を少なくとも実行する情報処理装置を指す。実行元の情報処理装置は、任意の情報処理装置がなり得るが、ここでは例えば、処理実行依頼装置２自身であるとする。即ち、ここでは例えば、ステップＳ２０１において、処理実行依頼装置２は、自分自身を実行元の情報処理装置に決定する。
【０２７３】
ステップＳ２０２において、処理実行依頼装置２は、実行元の情報処理装置のIDを最上位ノードとして、上述した図１４のステップＳ１２２の処理で受信された経路選択テーブルに含まれる全情報処理IDが網羅されるように２本木を構築する。
【０２７４】
なお、２本木の構築手法は特に限定されないが、本実施の形態では例えば、次のような第１乃至第４の処理で示される手法が採用されているとする。
【０２７５】
即ち、２本木の構築手法における第１の処理とは、最上位ノードを実行元の情報処理装置のIDとして、左右２つの子ノードを構築し、左右２つの子ノードのそれぞれに対して、経路選択テーブルの「空きプロセッサ数」のうちの１番目と２番目に大きい値のそれぞれに対応する２つの「情報処理装置ID」のそれぞれを割り当てる、という処理である。即ち、最上位ノードを実行元の情報処理装置として、左右２つの子ノードを構築し、左右２つの子ノードのそれぞれに対して、空きプロセッサ数が最も多い情報処理装置と、次に多い情報処理装置とのそれぞれを割り当てる、という処理が第１の処理である。
【０２７６】
２本木の構築手法における第２の処理とは、左の子ノードに対してさらに左右２つの子ノードを構築し、左右２つの子ノードのそれぞれに対して、経路選択テーブルの「空きプロセッサ数」のまだ利用されていない数値のうちの１番目と２番目に大きい値のそれぞれに対応する２つの「情報処理装置ID」のそれぞれを割り当てる、という処理である。即ち、左の子ノードに対してさらに左右２つの子ノードを構築し、左右２つの子ノードのそれぞれに対して、まだ割り当てられていない情報処理装置のうちの、空きプロセッサ数が最も多い情報処理装置と、次に多い情報処理装置とのそれぞれを割り当てる、という処理が第２の処理である。
【０２７７】
２本木の構築手法における第３の処理とは、左の子ノードに対する第２の処理と同様の右の子ノードに対する処理である。即ち、右の子ノードに対してさらに左右２つの子ノードを構築し、左右２つの子ノードのそれぞれに対して、経路選択テーブルの「空きプロセッサ数」のまだ利用されていない数値のうちの１番目と２番目に大きい値のそれぞれに対応する２つの「情報処理装置ID」のそれぞれを割り当てる、という処理である。即ち、右の子ノードに対してさらに左右２つの子ノードを構築し、左右２つの子ノードのそれぞれに対して、まだ割り当てられていない情報処理装置のうちの、空きプロセッサ数が最も多い情報処理装置と、次に多い情報処理装置とのそれぞれを割り当てる、という処理が第３の処理である。
【０２７８】
２本木の構築手法における第４の処理とは、上述した第２の処理と第３の処理とを、全ての情報処理装置（ID）が割り当てられるまで繰り返し実行する、という処理である。
【０２７９】
具体的には例えば、実行元の情報処理装置である処理実行依頼装置２のIDが「２」とされ、そのサブプロセッサ数が「５」とされ、かつ、上述した図１７の経路選択テーブルが利用されるとする。この場合、上述した第１乃至第４の処理が実行されると、図１９に示されるような２本木が構築される。
【０２８０】
即ち、図１９は、ステップＳ２０２の処理で構築される２本木の例である。
【０２８１】
図１９において、丸印（○）は、ノードを示している。丸印の中の数値は、そのノードに割り当てられた情報処理装置の空きプロセッサ数を示している。丸印の右横の文字列IDに続く数値は、そのノードに割り当てられた情報処理装置のIDを示している。このことは、後述する他の２本木においても同様である。
【０２８２】
図１８に戻り、処理実行依頼装置２は、このようにしてステップＳ２０２の処理で２本木を構築すると、ステップＳ２０３において、この２本木を用いて経路（パス）の候補を決定する。
【０２８３】
以下、このようなステップＳ２０３の処理を「経路候補探索処理」と称する。この「経路候補探索処理」の詳細例が図２０に示されている。そこで、以下、この図２０のフローチャートを参照して、「経路候補探索処理」の詳細例について説明する。
【０２８４】
ステップＳ２１１において、処理実行依頼装置２は、サブプロセッサ必要数を取得する。
【０２８５】
サブプロセッサ必要数とは、実行対象の機能パイプライン処理の実行に必要なサブプロセッサ２４の個数を指す。例えば、機能パイプライン処理がＱ個（Ｑは２以上の整数値）の機能ブロックの処理（タスク）からなり、かつ、Ｑ個の機能ブロックの処理のそれぞれが１つのサブプロセッサ２４に割り当てられる場合、「Ｑ」がサブプロセッサ必要数になる。具体的には例えば、上述した図１２の機能パイプライン処理が実行対象とされている場合、即ち、１０個の機能ブロックPa1乃至Pa10の処理からなる機能パイプライン処理が実行対象とされている場合、サブプロセッサ必要数は「１０」となる。
【０２８６】
ステップＳ２１２において、処理実行依頼装置２は、経路（パス）候補の番号iを１に設定する。
【０２８７】
ステップＳ２１３において、処理実行依頼装置２は、最上位ノード（実行元の情報処理装置２のID）を基準ノードに設定する。具体的には例えばいま、上述した図１９の２本木が利用されるとすると、ステップＳ２１３において、ID2のノードが基準ノードに設定される。
【０２８８】
ステップＳ２１４において、処理実行依頼装置２は、現在の基準ノードの下に、基準ノードにまだ設定されていない子ノードが存在するか否かを判定する。
【０２８９】
ステップＳ２１４において、現在の基準ノードの下に、基準ノードにまだ設定されていない子ノードが存在しないと判定された場合、即ち、全子ノードが既に基準ノードに設定された場合、処理はステップＳ２２１に進む。
【０２９０】
ステップＳ２２１において、処理実行依頼装置２は、基準ノードが最上位ノードであるか否かを判定する。
【０２９１】
後述するステップＳ２１４乃至Ｓ２２０のループ処理が繰り返されて、２本木の全ノードが基準ノードに設定された場合、その結果として、ステップＳ２２１の処理において、基準ノードが最上位ノードであると判定されることになり、これにより、「経路候補探索処理」は終了となる。
【０２９２】
これに対して、ステップＳ２２１において、基準ノードが最上位ノードではないと判定された場合、処理はステップＳ２２２に進む。ステップＳ２２２において、処理実行依頼装置２は、基準ノードを親モードに移す。その後、処理はステップＳ２１４に戻され、現在の基準ノードの下に、基準ノードにまだ設定されていない子ノードが存在するか否かが再度判定される。
【０２９３】
ところで、いまの場合、ステップＳ２１３の処理の後にステップＳ２１４の判定処理に進んでおり、このため当然ながら、図１９の２本木の現在の基準ノードであるID2のノードの子ノード、即ち、ID3とID4とのノードは何れも基準ノードにまだ設定されていない。そこで、ステップＳ２１４において、現在の基準ノードの下に、基準ノードにまだ設定されていない子ノードが存在すると判定されて、処理はステップＳ２１５に進められる。
【０２９４】
ステップＳ２１５において、処理実行依頼装置２は、基準ノードにまだ設定されていない子ノードのうちの所定の１つを基準ノードに設定する。具体的には例えばいま、ステップＳ２１５の処理で、図１９の２本木のID3のノードが基準ノードに設定されたとする。
【０２９５】
ステップＳ２１６において、処理実行依頼装置２は、最上位ノードから基準ノードまでの経路をパスｉに設定し、パスi内サブプロセッサ総数を演算する。パスi内サブプロセッサ総数とは、パスｉに含まれる各情報処理装置のそれぞれの空きサブプロセッサ数の総加算値（合計値）を指す。
【０２９６】
具体的には例えばいまの場合、ステップＳ２１６において、図２１に示されるように、「ID2→ID3」がパス１に設定される。そして、パス１内のID2の処理実行依頼装置２の空きサブプロセッサ数である「５」と、パス１内のID3の他の情報処理装置３の空きサブプロセッサ数である「８」とが加算され、その加算結果である「１３」がパス１内サブプロセッサ総数に設定される。
【０２９７】
図２０に戻り、ステップＳ２１７において、処理実行依頼装置２は、パスi内サブプロセッサ総数が、サブプロセッサ必要数以上になったか否かを判定する。
【０２９８】
ステップＳ２１７において、パスi内サブプロセッサ総数が、サブプロセッサ必要数以上になっていないと判定された場合、即ち、パスi内サブプロセッサ総数が、サブプロセッサ必要数未満の場合、処理はステップＳ２１４に戻され、それ以降の処理が繰り返される。
【０２９９】
これに対して、例えばいまの場合、パスi内サブプロセッサ総数が「１３」であるとステップＳ２１６の処理で演算され、サブプロセッサ必要数が「１０」であるとステップ２１１の処理で取得されているので、ステップＳ２１７において、パスi内サブプロセッサ総数が、サブプロセッサ必要数以上になったと判定されて、処理はステップＳ２１８に進められる。
【０３００】
ステップＳ２１８において、処理実行依頼装置２は、経路選択テーブルの「パスi」の項目に通過順序を記述する。通過順序とは、処理実行依頼装置２に対応する最上位ノードを除く、パスiにおける各ノードの通過順序を指す。即ち、通過順序とは、実行対象の機能パイプライン処理が実行される場合における、処理実行依頼装置２を除く、各ノードに対応する各情報処理装置の処理順番を指す。例えば、処理実行依頼装置２の次に処理を実行する情報処理装置の通過順序が「１」になる。
【０３０１】
具体的には例えばいまの場合、図２１に示されるように、パス１においては、ID2の後にID3が続くので、ID3の他の情報処理装置３の通過順序が「１」になる。そこで、ステップＳ２１８において、図２２の経路選択テーブルに示されるように、「情報処理装置ID」が「３」に対応する「パス１」の項目、即ち、１行目の「パス１」の項目には「１」が記述されるのである。
【０３０２】
図２０に戻り、処理実行依頼装置２は、ステップＳ２１９において、基準ノードを親ノードに移し、ステップＳ２２０において、経路（パス）候補の番号iを更新する（i=i+1を演算する）。その後、処理はステップＳ２１４に戻され、それ以降の処理が繰り返される。
【０３０３】
即ち、例えばいまの場合、図２１のID2の最上位ノードに基準ノードが移され、番号iが２に更新される。
【０３０４】
その後、ステップ２１４の処理でYESであると判定されて、ステップＳ２１５の処理でID4のノードが基準ノードに設定される。
【０３０５】
次に、ステップＳ２１６の処理で、図２１に示されるように、「ID2→ID4」がパス２に設定される。そして、パス２内のID2の処理実行依頼装置２の空きサブプロセッサ数である「５」と、パス２内のID4の他の情報処理装置４の空きサブプロセッサ数である「６」とが加算され、その加算結果である「１１」がパス２内サブプロセッサ総数に設定される。
【０３０６】
この場合、パス２内サブプロセッサ総数が「１１」であるとステップＳ２１６の処理で演算され、サブプロセッサ必要数が「１０」であるとステップ２１１の処理で取得されているので、ステップＳ２１７の処理でYESであると判定されて、処理はステップＳ２１８に進められる。
【０３０７】
次に、ステップＳ２１８の処理で、図２２に示されるように、「パス２」の項目に通過順序が記述されて、ステップＳ２１９の処理で、ID2のノードに基準ノードが移されて、番号iが３に更新されると、処理はステップＳ２１４に戻される。
【０３０８】
即ち、この時点では、図２１の２本木の全ノードが基準ノードに設定されて、その結果として、最上位ノードであるID2のノードに基準ノードが移されたので、ステップＳ２１４の処理でNOであると判定され、さらに、ステップＳ２２１の処理でYESであると判定されて、「経路候補探索処理」が終了になる。
【０３０９】
以上、図１９と図２１に示される２層の２本木を用いる図２０の「経路候補探索処理」の詳細例について説明したが、当然ながら、処理実行依頼装置２は、さらに多層の２本木を用いても、上述した一連の処理を実行することで、複数の経路候補を容易に決定することができる。
【０３１０】
例えば以下、３層の２本木を用いる図２０の「経路候補探索処理」の詳細例についてさらに説明する。
【０３１１】
例えばいま、図２３に示されるような１４個の機能ブロックPb1乃至Pb14の処理（タスク）からなる機能パイプライン処理が、実行対象になっているとする。また、１４個の機能ブロックPb1乃至Pb14のそれぞれの処理（タスク）は、1台のサブプロセッサ２４に割り当てられるとする。
【０３１２】
さらに、図１の情報処理システムにおいて、ネットワーク５１には７台の情報処理装置１乃至７のそれぞれが接続されているとする。また、７台の情報処理装置１乃至７のそれぞれのIDとして、１乃至７のそれぞれが付与されているとする。また、情報処理装置１がマスタ装置１として動作し、情報処理装置２が処理実行依頼装置２として動作し、かつ、情報処理装置３乃至７のそれぞれが他の情報処理装置３乃至７のそれぞれとして動作しているとする。また、処理実行依頼装置２、および、他の情報処理装置３乃至７のそれぞれの空きプロセッサ数が、５，８，６，３，２，１のそれぞれであるとする。
【０３１３】
この場合、処理実行依頼装置２は、上述した図１４のステップＳ１２２の処理で、図２４に示される空きサブプロセッサリストをマスタ装置１から受信し、ステップ１２３の処理で、図２５に示される経路選択テーブルを作成し、ステップＳ１２４の処理として、例えば図１８の「経路選択処理」を実行する。
【０３１４】
即ち、ステップＳ２０１の処理で、処理実行依頼装置２自身が実行元の情報処理装置に決定されて、ステップＳ２０２の処理で、図２６に示されるような２本木が生成される。そして、ステップＳ２０３の処理として、例えば図２０の「経路候補探索処理」が実行される。
【０３１５】
実行対象の図２３の機能パイプライン処理は、１４個の機能ブロックPb1乃至Pb14の処理（タスク）からなるので、ステップＳ２１１の処理で、サブプロセッサ必要数として「１４」が取得される
【０３１６】
次に、ステップＳ２１２の処理で、番号iが１に設定され、ステップＳ２１３の処理で、図２６の２本木のうちのID2のノードが基準ノードに設定される。
【０３１７】
次に、ステップＳ２１４の処理でYESであると判定されて、ステップＳ２１５の処理で、例えばID3のノードが基準ノードに設定される。
【０３１８】
次に、ステップＳ２１６の処理で、図２６の２本木のうちの「ID2→ID3」がパス１に設定される。そして、パス１内のID2の処理実行依頼装置２の空きサブプロセッサ数である「５」と、パス１内のID3の他の情報処理装置３の空きサブプロセッサ数である「８」とが加算され、その加算結果である「１３」がパス１内サブプロセッサ総数に設定される。
【０３１９】
この場合、パス１内サブプロセッサ総数が「１３」であるとステップＳ２１６の処理で演算され、サブプロセッサ必要数が「１４」であるとステップ２１１の処理で取得されているので、ステップＳ２１７の処理でNOであると判定されて、処理はステップＳ２１４に戻され、それ以降の処理が繰り返される。
【０３２０】
即ち、ステップＳ２１４の処理でYESであると判定されて、ステップＳ２１５の処理で、例えばID5のノードが基準ノードに設定される。
【０３２１】
次に、ステップＳ２１６の処理で、図２６の２本木のうちの「ID2→ID3→ID5」がパス１に設定される。そして、パス１内のID2の処理実行依頼装置２の空きサブプロセッサ数である「５」と、パス１内のID3の他の情報処理装置３の空きサブプロセッサ数である「８」と、パス１内のID5の他の情報処理装置５の空きサブプロセッサ数である「３」とが総加算され、その総加算結果である「１６」がパス１内サブプロセッサ総数に設定される。
【０３２２】
この場合、パス１内サブプロセッサ総数が「１６」であるとステップＳ２１６の処理で演算され、サブプロセッサ必要数が「１４」であるとステップ２１１の処理で取得されているので、ステップＳ２１７の処理でYESであると判定されて、処理はステップＳ２１８に進められる。
【０３２３】
ステップＳ２１８の処理で、図２７に示されるように、経路選択テーブルの「パス１」の項目に通過順序が記述される。このように、経路選択テーブルの「パス１」の項目に通過順序が記述された時点で、図２８に示されるように、パス１が経路候補として正式に決定される。
【０３２４】
次に、ステップＳ２１９の処理で、ID3のノードに基準ノードが移されて、番号iが２に更新されると、処理はステップＳ２１４に戻され、それ以降の処理が繰り返される。
【０３２５】
即ち、ステップＳ２１４の処理でYESであると判定されて、ステップＳ２１５の処理で、例えばID6のノードが基準ノードに設定される。
【０３２６】
次に、ステップＳ２１６の処理で、図２６の２本木のうちの「ID2→ID3→ID6」がパス２に設定される。そして、パス２内のID2の処理実行依頼装置２の空きサブプロセッサ数である「５」と、パス２内のID3の他の情報処理装置３の空きサブプロセッサ数である「８」と、パス２内のID6の他の情報処理装置６の空きサブプロセッサ数である「２」とが総加算され、その総加算結果である「１５」がパス２内サブプロセッサ総数に設定される。
【０３２７】
この場合、パス２内サブプロセッサ総数が「１５」であるとステップＳ２１６の処理で演算され、サブプロセッサ必要数が「１４」であるとステップ２１１の処理で取得されているので、ステップＳ２１７の処理でYESであると判定されて、処理はステップＳ２１８に進められる。
【０３２８】
ステップＳ２１８の処理で、図２７に示されるように、経路選択テーブルの「パス２」の項目に通過順序が記述される。このように、経路選択テーブルの「パス２」の項目に通過順序が記述された時点で、図２８に示されるように、パス２が経路候補として正式に決定される。
【０３２９】
次に、ステップＳ２１９の処理で、ID3のノードに基準ノードが移されて、番号iが３に更新されると、処理はステップＳ２１４に戻され、それ以降の処理が繰り返される。
【０３３０】
即ち、この時点で基準モードはID3のモードであって、その子モードであるID5とID6のモードは何れも基準モードに既に設定されたので、ステップＳ２１４の処理でNOであると判定される。そして、ステップＳ２２１の処理でNOであると判定され、ステップＳ２２２の処理で、ID2のノードに基準ノードが移されて、処理はステップＳ２１４に再び戻される。
【０３３１】
ステップＳ２１４の処理でYESであると判定されて、ステップＳ２１５の処理で、例えばID4のノードが基準ノードに設定される。
【０３３２】
次に、ステップＳ２１６の処理で、図２６の２本木のうちの「ID2→ID4」がパス３に設定される。そして、パス３内のID2の処理実行依頼装置２の空きサブプロセッサ数である「５」と、パス３内のID4の他の情報処理装置４の空きサブプロセッサ数である「６」とが加算され、その加算結果である「１１」がパス３内サブプロセッサ総数に設定される。
【０３３３】
この場合、パス３内サブプロセッサ総数が「１１」であるとステップＳ２１６の処理で演算され、サブプロセッサ必要数が「１４」であるとステップ２１１の処理で取得されているので、ステップＳ２１７の処理でNOであると判定されて、処理はステップＳ２１４に戻され、それ以降の処理が繰り返される。
【０３３４】
即ち、ステップＳ２１４の処理でYESであると判定されて、ステップＳ２１５の処理で、例えばID7のノードが基準ノードに設定される。
【０３３５】
次に、ステップＳ２１６の処理で、図２６の２本木のうちの「ID2→ID4→ID7」がパス３に設定される。そして、パス３内のID2の処理実行依頼装置２の空きサブプロセッサ数である「５」と、パス３内のID4の他の情報処理装置４の空きサブプロセッサ数である「６」と、パス３内のID7の他の情報処理装置７の空きサブプロセッサ数である「１」とが総加算され、その総加算結果である「１２」がパス３内サブプロセッサ総数に設定される。
【０３３６】
この場合、パス３内サブプロセッサ総数が「１２」であるとステップＳ２１６の処理で演算され、サブプロセッサ必要数が「１４」であるとステップ２１１の処理で取得されているので、ステップＳ２１７の処理でNOであると判定されて、処理はステップＳ２１４に戻され、それ以降の処理が繰り返される。
【０３３７】
即ち、この時点で基準モードはID7の最下層のモードであるので、ステップＳ２１４の処理でNOであると判定される。そして、ステップＳ２２１の処理でNOであると判定されて、ステップＳ２２２の処理で、基準モードがID4に移されて、処理はステップＳ２１４に再び戻される。
【０３３８】
この時点で基準モードはID4のモードであって、その子モードであるID7のモードは基準モードに既に設定されたので、ステップＳ２１４の処理でNOであると判定される。そして、ステップＳ２２１の処理でNOであると判定されて、ステップＳ２２２の処理で、基準モードがID2に移されて、処理はステップＳ２１４に再び戻される。
【０３３９】
今度は、最上位のID2のモードに基準モードが移され、かつ、図２６の２本木に含まれる全モードが基準ノードに既に設定されたので、ステップＳ２１４の処理でNOであると判定されて、ステップＳ２２１の処理でYESであると判定されて、「経路候補探索処理」は終了となる。
【０３４０】
即ち、パス３内サブプロセッサ総数は「１２」であり、サブプロセッサ必要数である「１４」未満であるので、パス３が利用されても、上述した図２３の機能パイプライン処理を実行することは不可能である。従って、図２８に示されるように、パス３は経路候補としては採用されない。即ち、図２７に示されるように、経路選択テーブルの「パス３」の項目には何も記述されない。
【０３４１】
以上、図１８乃至図２８を参照して、図１４のステップＳ１２４の「経路選択処理」の詳細例について説明した。
【０３４２】
なお、以上の例では、図１８のステップＳ２０２の処理で、２本木が構築されたが、当然ながらＭ本木（Ｍは、３以上の整数値）が構築されてもよい。ただし、その構築の処理やそれを利用する後段の処理の単純化（高速化）を考慮すると、本実施の形態のように２本木が構築された方が好適である。
【０３４３】
ところで、図１４に示されるように、ステップＳ１２４の以上のような「経路選択処理」が終了すると、ステップＳ１２５，Ｓ１３３，Ｓ１４３の「パイプライン実行処理」が実行される。この「パイプライン実行処理」の詳細例が、図２９と図３０のフローチャートに示されている。そこで、以下、図２９と図３０のフローチャートを参照して、「パイプライン実行処理」の詳細例について説明する。
【０３４４】
はじめに、図２９のステップＳ３２１０において、図１５の処理実行依頼装置２の経路候補機能パイプライン制御部８２は、各機能プログラムのそれぞれを、上述したステップＳ１２４の「経路選択処理」で決定された各経路候補のそれぞれに含まれる他の情報処理のうちの、対応する他の情報処理装置に送信する。
【０３４５】
具体的には例えば、上述した図１２の機能パイプライン処理が「パイプライン実行処理」の実行対象とされ、かつ、上述した図２２の経路選択テーブルが利用されるとする。
【０３４６】
この場合、上述した図２１に示されるように、「ID2の処理実行装置２  →  ID3の他の情報処理装置３」というパス１と、「ID2の処理実行装置２  →  ID4の他の情報処理装置４」というパス２とが、経路候補として設定されていることになる。即ち、ステップＳ３２１０の処理における機能プログラムの送信先は、他の情報処理装置３と他の情報処理装置４とのそれぞれになる。
【０３４７】
また、上述したように、処理実行依頼装置２の空きプロセッサ数は５であるので、例えば、図１２の機能パイプライン処理のうちの、機能ブロックPa1乃至Pa5までの部分処理を処理実行依頼装置２に実行させ、残りの機能ブロックPa6乃至Pa10までの部分処理を他の情報処理装置３または他の情報処理装置４に実行させることで、図１２の機能パイプライン処理が実行されることになる。
【０３４８】
そこで、ステップＳ３２１０において、処理実行処理装置２の経路候補機能パイプライン制御部８２は、図３１に示されるような機能プログラム７１と機能プログラム７２とを用意し、機能プログラム７１を自身のメインメモリ１２にロードし、かつ、機能プログラム７２を、他の情報処理装置３と他の情報処理装置４とのそれぞれにネットワーク５１を介して送信する。より正確には、処理実行処理装置２の経路候補機能パイプライン制御部８２は、機能プログラム７２を含むソフトウエアセルを生成して、そのソフトウエアセルを、他の情報処理装置３と他の情報処理装置４とのそれぞれにネットワーク５１を介して送信する。
【０３４９】
なお、機能プログラム７１と機能プログラム７２とのそれぞれは、上述した図１３のそれらと同一であって、この図１３を参照して説明済みであるので、ここでは、その説明については省略する。
【０３５０】
ステップＳ３３１０において、他の情報処理装置３は、機能プログラム７２を受信し、自身のメインメモリ１２にロードする。より正確には、他の情報処理装置３は、ソフトウエアセルを受信し、そのソフトウエアセルに含まれる機能プログラム７２を、自身のメインメモリ１２にロードする。
【０３５１】
同様に、ステップＳ３４１０において、他の情報処理装置４は、機能プログラム７２を受信し、自身のメインメモリ１２にロードする。より正確には、他の情報処理装置４は、ソフトウエアセルを受信し、そのソフトウエアセルに含まれる機能プログラム７２を、自身のメインメモリ１２にロードする。
【０３５２】
この間、ステップＳ３２２０において、処理実行依頼装置２の経路候補機能パイプライン制御部８２は、所定の単位量の処理を開始する。例えばいまの場合、処理実行依頼装置２の経路候補機能パイプライン制御部８２は、図３１の機能プログラム７１を実行して、入力データに対して、機能ブロックPa1乃至Pa5までの部分処理を所定の単位量毎に施すことを開始する。所定の単位量とは、例えば、入力データがビデオデータの場合、フレームまたはフィールドを指す。
【０３５３】
そして、処理実行依頼装置２の経路候補機能パイプライン制御部８２は、ステップＳ３２３０において、１単位量の最初の処理データを各経路候補のそれぞれに送信する。
【０３５４】
なお、経路候補にデータを送信することとは、直前の図１４のステップＳ１２４の「経路選択処理」で経路選択テーブルの「パスｉ」の項目に通過順番が「１」であると記述された他の情報処理装置に対して、データを送信することを指す。即ち、例えばいまの場合、図２２の経路選択テーブルが利用されているので、ステップＳ３２３０において、１単位量の最初の処理データが、他の情報処理装置３と他の情報処理装置４とのそれぞれに送信される。より正確には、１単位量の最初の処理データを含むソフトウエアセルが生成され、そのソフトウエアセルが、他の情報処理装置３と他の情報処理装置４とのそれぞれにネットワーク５１を介して送信される。
【０３５５】
また、１単位量の最初の処理データとは、図３１の機能ブロックPa１に対して入力データが１単位量毎に順次入力される場合に機能ブロックPa5から最初に出力されるデータを指す。例えば入力データがビデオデータの場合、最初のフレームまたはフィールドのデータが、１単位量の最初の処理データである。
【０３５６】
このようにして、ステップＳ３２３０の処理で１単位量の最初の処理データが処理実行依頼装置２から送信されると、ステップＳ３３２０において、他の情報処理装置３は、１単位量の最初の処理データを受信し、それに対する処理を実行する。例えばいまの場合、他の情報処理装置３は、図３１の機能プログラム７２を実行して、１単位量の最初の処理データに対して、機能ブロックPa6乃至Pa10までの部分処理を施す。
【０３５７】
同様に、ステップＳ３４２０において、他の情報処理装置４は、１単位量の最初の処理データを受信し、それに対する処理を実行する。例えばいまの場合、他の情報処理装置４は、図３１の機能プログラム７２を実行して、１単位量の最初の処理データに対して、機能ブロックPa6乃至Pa10までの部分処理を施す。
【０３５８】
例えばいま、他の情報処理装置３が、他の情報処理装置４よりも先に、最初の処理データに対する処理を完了したとする。即ち、機能ブロックPa10の処理済データが、他の情報処理装置４よりも先に、他の情報処理装置３から出力されたとする。
【０３５９】
この場合、ステップＳ３３３０において、他の情報処理装置３は、他の情報処理装置４よりも前に（後述するステップＳ３４３０参照）、上述した処理完了通知を処理実行依頼装置２に送信することになる。
【０３６０】
すると、ステップＳ３２４０において、処理実行依頼装置２の経路候補機能パイプライン制御部８２は、他の情報処理装置３からの処理完了通知を受信し、そのことを正式経路設定部８３に通知する。
【０３６１】
そこで、正式経路設定部８３は、この通知を受けると、ステップＳ３２５０において、最初に処理完了通知が到達した経路候補を正式経路に設定する。
【０３６２】
最初に処理完了通知が到達した経路候補とは、最初に到達した処理完了通知の送信元である他の情報処理装置が最後の処理順序とされている経路候補を指す。具体的には例えばいまの場合、他の情報処理装置３からの処理完了通知が先に到達したので、図２２の経路選択テーブルの「パス１」に対応する経路候補、即ち、上述した図２１に示される「ID2の処理実行依頼装置２→ID3の他の情報処理装置３」というパス１が、最初に処理完了通知が到達した経路候補となる。即ち、いまの場合、ステップＳ３２５０の処理で、パス１が正式経路に設定されることになる。
【０３６３】
このようにして、正式経路設定部８３により正式経路が設定されて、その設定結果が正式経路機能パイプライン制御部８４に供給されると、それ以降、正式経路機能パイプライン制御部８４は、１単位量の処理データを正式経路に送信することになる。正式経路にデータを送信することとは、経路選択テーブルにおいて正式経路に設定された「パスｉ」の項目に通過順番が「１」であると記述された他の情報処理装置に対して、データを送信することを指す。
【０３６４】
具体的には例えばいまの場合、図２２の経路選択テーブルが利用されており、パス１が正式経路に設定されているので、それ以降の１単位量の処理データは、他の情報処理装置３にのみ送信される。
【０３６５】
即ち、ステップＳ３２６０において、処理実行依頼装置２の正式経路機能パイプライン制御部８４は、１単位量の次の処理データを正式経路に送信する。例えばいまの場合、処理実行依頼装置２の正式経路機能パイプライン制御部８４は、１単位量の次の処理データを他の情報処理装置３に送信する。
【０３６６】
また、ステップＳ３２７０において、処理実行依頼装置２の経路候補機能パイプライン制御部８２は、経路選択テーブルの正式経路に対応する「パスi」の「到達時間」の項目に、正式経路についての上述した到達時間を記述（記録）する。例えばいまの場合、経路選択テーブルの「パス１」の「到達時間」の項目に、パス１についての到達時間が記述される。
【０３６７】
なお、この例での到達時間とは、ステップＳ３２３０の処理で、１単位量の最初の処理データが送信された時点から、それに対する処理完了通知が受信された時点までの時間を指す。即ち、ステップＳ３２７０の処理では、ステップＳ３２３０からＳ３２４０までの間の処理時間が、到達時間として記録される。
【０３６８】
具体的には例えば、処理実行依頼装置２の経路候補機能パイプライン制御部８２は、ステップＳ３２３０の処理で１単位量の最初の処理データを送信した時点で、計時動作を開始し（時刻を０にリセットし）、ステップＳ３２４０の処理で処理完了通知を受信した時点の時刻を計時し、ステップＳ３２７０において、その時刻を到達時間として経路選択テーブルに記述する。
【０３６９】
このように、この例の「パイプライン実行処理」においては、最速の経路候補は、他の経路候補の到達時間の結果を取得する如何に関わらず、即座に正式経路に設定されて、次の処理データが送信される。
【０３７０】
その後、図２９に示されるように、他の情報処理装置４も、最初の処理データに対する処理を完了すると、ステップＳ３４３０において、処理完了通知を送信してくる。
【０３７１】
そこで、処理実行依頼装置２の経路候補機能パイプライン制御部８２は、ステップＳ３２８０において、その処理完了通知を受信し、ステップＳ３２９０において、経路選択テーブルの「パス２」の「到達時間」の項目に、パス２についての到達時間を記述（記録）する。
【０３７２】
それ以降、図２９と図３０の「パイプライン実行処理」の例では、処理実行依頼装置２と他の情報処理装置４との間の処理は終了となる。即ち、図２９と図３０の「パイプライン実行処理」の例では、経路選択テーブルの「到達時間」の記述値は参考値として利用されるだけである。換言すると、図２９と図３０の「パイプライン実行処理」の例では、ステップＳ３２７０とＳ３２９０との処理は必須な処理ではない。ただし、後述する図３３と図３４とで示される「パイプライン実行処理」の他の例では、正式経路を更新するためのステップ３３５１の処理において、この到達時間が利用される。即ち、後述する図３３と図３４とで示される「パイプライン実行処理」の他の例では、ステップＳ３２７０とＳ３２９０との処理は必須な処理になる。
【０３７３】
ところで、正式経路であるパス１に含まれる他の情報処理装置３は、ステップＳ３３４０の処理を完了すると、図３０のステップＳ３３５０において、処理完了通知を送信してくる。
【０３７４】
そこで、処理実行依頼装置２の正式経路機能パイプライン制御部８４は、ステップＳ３３００において、処理完了通知を受信し、ステップＳ３３１０において、１単位量の次の処理データを正式経路に送信する。即ち、１単位量の次の処理データは、他の情報処理装置３に送信される。
【０３７５】
他の情報処理装置３は、ステップＳ３３６０において、１単位量の次の処理データを受信し、それに対する処理を実行する。そして、他の情報処理装置３は、その処理が完了すると、ステップＳ３３７０において、処理完了通知を送信する。
【０３７６】
処理実行依頼装置２の正式経路機能パイプライン制御部８４は、ステップＳ３３２０において、この処理完了通知を受信すると、ステップＳ３３３０において、全データに対する処理が完了したか否かを判定する。
【０３７７】
ステップＳ３３３０において、全データに対する処理が完了したと判定された場合、処理実行依頼装置２の「パイプライン実行処理」は終了となる。
【０３７８】
この間、他の情報処理装置３は、ステップＳ３３８０において、次の処理データが送信されてきたか否かを判定する。処理実行依頼装置２の「パイプライン実行処理」が終了すると、当然ながら、次の処理データは送信されてこない。このような場合、ステップＳ３３８０において、次の処理データが送信されてこないと判定され、他の情報処理装置３の「パイプライン実行処理」は終了となる。
【０３７９】
これに対して、ステップＳ３３３０において、全データに対する処理が完了していないと判定された場合、処理はステップＳ３３１０に戻され、それ以降の処理が繰り返される。即ち、ステップＳ３３１０において、さらに次の処理データが他の情報処理装置３に送信される。すると、ステップＳ３３８０において、次の処理データが送信されてきたと判定され、処理はステップＳ３３６０に戻され、それ以降の処理が繰り返される。
【０３８０】
以上、図２９と図３０とを参照して、図１２の機能パイプライン処理を実行対象として、図２２の経路選択テーブルを用いる場合の「パイプライン実行処理」について説明した。
【０３８１】
さらに、処理実行依頼装置２等は、図１２以外の機能パイプライン処理を実行対象とする「パイプライン実行処理」も当然ながら実行できる。この場合も、「パイプライン実行処理」は、図２９と図３０のフローチャートと同様の流れの処理になる。
【０３８２】
具体的には例えば、処理実行依頼装置２や他の情報処理装置３乃至７は、上述した図２３の機能パイプライン処理を対象とする「パイプライン実行処理」も実行することができる。
【０３８３】
この場合、図２７に示される経路選択テーブルが利用されるとすると、例えば、図３２に示されるような機能プログラム９１乃至９３が用意されることになる。機能プログラム９１とは、図２３の機能パイプライン処理のうちの機能ブロックPb1乃至Pb5までの部分処理を実現する機能プラグラムである。機能プログラム９２とは、図２３の機能パイプライン処理のうちの機能ブロックPb6乃至Pb13までの部分処理を実現する機能プラグラムである。機能プログラム９３とは、図２３の機能パイプライン処理のうちの機能ブロックPb14の部分処理を実現する機能プラグラムである。
【０３８４】
そこで、図２９のステップＳ３２１０において、処理実行処理装置２の経路候補機能パイプライン制御部８２は、機能プログラム９１を自身のメインメモリ１２にロードし、機能プログラム９２を他の情報処理装置３に送信し、かつ、機能プログラム９３を他の情報処理装置５と他の情報処理装置６とのそれぞれに送信する。
【０３８５】
すると、図示はしないが、他の情報処理装置３は、機能プログラム９２を受信し、自身のメインメモリ１２にロードする。同様に、他の情報処理装置５と他の情報処理装置６のそれぞれは、機能プログラム９３をそれぞれ受信し、自身のメインメモリ１２にそれぞれロードする。
【０３８６】
この間、ステップＳ３２２２０において、処理実行依頼装置２の経路候補機能パイプライン制御部８２は、機能プログラム９１を実行して、入力データに対して、機能ブロックPb1乃至Pb5までの部分処理を所定の単位量毎に施すことを開始する。
【０３８７】
そして、処理実行依頼装置２の経路候補機能パイプライン制御部８２は、ステップＳ３２３０において、１単位量の最初の処理データを他の情報処理装置３に送信する。
【０３８８】
すると、図示はしないが、他の情報処理装置３は、機能プログラム９２を実行して、１単位量の最初の処理データに対して、機能ブロックPb6乃至Pb13までの部分処理を施す。そして、他の情報処理装置３は、最終段の機能ブロックPb13から出力された１単位量の最初の処理データを、他の情報処理装置５と他の情報処理装置６とのそれぞれに送信する。
【０３８９】
他の情報処理装置５は、機能プログラム９３を実行して、１単位量の最初の処理データに対して機能ブロックPb14の部分処理を施す。そして、他の情報処理装置５は、その処理を完了すると、処理完了通知を処理実行依頼装置２に送信する。
【０３９０】
同様に、他の情報処理装置６は、機能プログラム９３を実行して、１単位量の最初の処理データに対して機能ブロックPb14の部分処理を施す。そして、他の情報処理装置６は、その処理を完了すると、処理完了通知を処理実行依頼装置２に送信する。
【０３９１】
従って、ステップＳ３２４０において、処理実行依頼装置２の経路候補機能パイプライン制御部８２は、他の情報処理装置５または他の情報処理装置６からの処理完了通知を受信することになる。そこで、ステップＳ３２５０において、正式経路設定部８３は、他の情報処理装置５を含むパス１と、他の情報処理装置６を含むパス２とのうちの、最初に処理完了通知が到達した経路候補を正式経路に設定する。
【０３９２】
具体的には例えば、他の情報処理装置５からの処理完了通知が先に到達した場合、図２７の経路選択テーブルの「パス１」に対応する経路候補、即ち、上述した図２８に示される「ID2の処理実行依頼装置２→ID3の他の情報処理装置３→ID5の他の情報処理装置５」というパス１が、ステップＳ３２５０の処理で正式経路に設定されることになる。
【０３９３】
このようにして、パス１が正式経路に設定されると、図示はしないが、それ以降の１単位量のデータに対する図２３の機能パイプライン処理は、パス１が利用されて実行されることになる。即ち、正式経路機能パイプライン制御部８４は、パス１を利用した図２３の機能パイプライン処理の実行を制御する。
【０３９４】
これに対して例えば、他の情報処理装置６からの処理完了通知が先に到達した場合、図２７の経路選択テーブルの「パス２」に対応する経路候補、即ち、上述した図２８に示される「ID2の処理実行依頼装置２→ID3の他の情報処理装置３→ID6の他の情報処理装置６」というパス２が、ステップＳ３２５０の処理で正式経路に設定されることになる。
【０３９５】
このようにして、パス２が正式経路に設定されると、図示はしないが、それ以降の１単位量のデータに対する図２３の機能パイプライン処理は、パス２が利用されて実行されることになる。即ち、正式経路機能パイプライン制御部８４は、パス２を利用した図２３の機能パイプライン処理の実行を制御する。
【０３９６】
以上、図２９と図３０とを参照して、「パイプライン実行処理」について説明した。
【０３９７】
ただし、図１４のステップＳ１２５等の「パイプライン実行処理」は、図２９と図３０の例に特に限定されず、様々な処理を採用することができる。
【０３９８】
例えば、本発明においては、ステップＳ１２５等の「パイプライン実行処理」の前に実行されるステップＳ１２４の「経路選択処理」では、複数の経路候補が設定される。そこで、正式経路が使用できなくなった場合、正式経路を、他の経路候補に切り替えるという「パイプライン実行処理」を、図２９と図３０の例の代わりに、ステップＳ１２５等の処理として採用することができる。
【０３９９】
即ち、パイプライン実行処理の経路候補のうちの、正式経路として設定された経路候補以外の経路候補をバックアップパスとして保持しておき、必要に応じてバックアップパスを利用するという「パイプライン実行処理」を、図２９と図３０の例の代わりに、ステップＳ１２５等の処理として採用することができる。以下、このような「パイプライン実行処理」を、図２９と図３０の例のそれと区別するために、「バックアップパイプライン実行処理」と称する。このような「バックアップパイプライン実行処理」を実行することで、機能パイプライン処理を中断させることなく、データを継続的に出力し続けることが可能になる。
【０４００】
この「バックアップパイプライン実行処理」の詳細例が、図３３と図３４に示されている。そこで、以下、図３３と図３４のフローチャートを参照して、「バックアップパイプライン実行処理」の詳細例について説明する。
【０４０１】
図３３のフローチャートにおいて、丸１は、図２９の丸１と繋がっていることを、丸２は、図２９の丸１と繋がっていることを、それぞれ示している。また、図３４のフローチャートにおいて、丸３は、図２９の丸３と繋がっていることを、丸４は、直前の図３３の丸４と繋がっていることを、それぞれ示している。
【０４０２】
即ち、「バックアップパイプライン実行処理」においても、最初は、上述した図２９と全く同様の処理が実行される。
【０４０３】
従って、「バックアップパイプライン実行処理」のうちの図２９に対応する処理については、説明済みであるので、その説明は省略する。
【０４０４】
ところで、図２９の例では、上述したように、「処理実行依頼装置２→他の情報処理装置３」というパス１が正式経路に設定されて、ステップＳ３２６０において、１単位量の次の処理データが処理実行依頼装置２から他の情報処理装置３に対して送信され、ステップＳ３３４０において、他の情報処理装置３により、１単位量の次の処理データが受信されて、それに対する処理が実行される。
【０４０５】
そこで、「バックアップパイプライン実行処理」においては、他の情報処理装置３は、ステップＳ３３４０の処理を完了すると、図３３のステップＳ３３５１において、処理完了通知を送信してくる。
【０４０６】
すると、処理実行依頼装置２の正式経路機能パイプライン制御部８４は、ステップＳ３３０１において、処理完了通知を受信し、ステップＳ３３１１において、１単位量の次の処理データを正式経路に送信する。即ち、次の処理データが他の情報処理装置３に送信される。
【０４０７】
他の情報処理装置３は、ステップＳ３３６１において、１単位量の次の処理データを受信し、それに対する処理を実行する。そして、その処理が完了すると、ステップＳ３３７１において、他の情報処理装置３は、処理完了通知を送信する。
【０４０８】
この間、処理実行依頼装置２の正式経路機能パイプライン制御部８４は、ステップＳ３３２１において、一定時間内に処理完了通知が送信されてきたか否かを判定する。
【０４０９】
一定時間内に、他の情報処理装置３によりステップＳ３３７１の処理が実行されて、処理完了通知が処理実行依頼装置２の正式経路機能パイプライン制御部８４に送信されてくると、ステップＳ３３２１においてYESであると判定されて、処理はステップＳ３３３１に進む。
【０４１０】
処理実行依頼装置２の正式経路機能パイプライン制御部８４は、ステップＳ３３３１において、処理完了通知を受信すると、ステップＳ３３４１において、全データに対する処理が完了したか否かを判定する。
【０４１１】
ステップＳ３３４１において、全データに対する処理が完了したと判定された場合、処理実行依頼装置２の「バックアップパイプライン実行処理」は終了となる。
【０４１２】
この間、他の情報処理装置３は、ステップＳ３３８１において、次の処理データが送信されてきたか否かを判定する。処理実行依頼装置２の「バックアップパイプライン実行処理」が終了すると、当然ながら、次の処理データは送信されてこない。このような場合、ステップＳ３３８１において、次の処理データが送信されてこないと判定され、他の情報処理装置３の「バックアップパイプライン実行処理」は終了となる。
【０４１３】
これに対して、ステップＳ３３４１において、全データに対する処理が完了していないと判定された場合、処理はステップＳ３３１１に戻され、それ以降の処理が繰り返される。即ち、ステップＳ３３１１において、さらに次の処理データが他の情報処理装置３に送信される。すると、ステップＳ３３８１において、次の処理データが送信されてきたと判定され、処理はステップＳ３３６１に戻され、それ以降の処理が繰り返される。
【０４１４】
このように、正式経路として設定されたパス１に特に問題が発生せず、一定時間内に、他の情報処理装置３が処理完了通知を送信できている間は、上述した図３０の処理と基本的に同様の処理が実行される。
【０４１５】
これに対して、正式経路として設定されたパス１に何かしらの問題が発生してしまい、一定時間内に、他の情報処理装置３が処理完了通知を送信することが不可能になった場合には、ステップＳ３３２１においてNOであると判定される。
【０４１６】
この場合、正式経路機能パイプライン制御部８４は、一定時間内に処理完了通知が送信されてこないことを、正式経路設定部８３に通知する。これにより、処理は図３４のステップＳ３３５１に進む。
【０４１７】
即ち、処理実行依頼装置２の正式経路設定部８３は、この通知を受けると、ステップＳ３３５１において、経路選択テーブルの「到達時間」の記述値を参照して、正式経路を、次に最速な経路候補に更新する。
【０４１８】
例えばいまの場合、バックアップパスとして「ID2の処理実行依頼装置２→ID4の他の情報処理装置４」というパス２のみが保持されているので、ステップＳ３３５１の処理では、正式経路がパス１からパス２に更新されることになる。即ち、正式経路がパス２に再設定されることになる。
【０４１９】
なお、実際には複数のバックアップパスが保持されていることが多々ある。このような場合、処理実行依頼装置２の正式経路設定部８３は、このステップＳ３３５１の処理で、複数のバックアップパスのそれぞれについての「到達時間」の記述値を比較し、最短時間を有するバックアップパス、即ち、最速のバックアップパスを正式経路として再設定するのである。
【０４２０】
その後の処理については、正式経路がパス１からパス２に変わった点を除いては、上述した図３３の処理と基本的に同様の処理が実行される。
【０４２１】
即ち、正式経路設定部８３が、ステップＳ３５３１の処理結果、即ち、正式経路の再設定結果を正式経路機能パイプライン制御部８４に通知すると、処理はステップＳ３３６１に進む。
【０４２２】
ステップＳ３３６１において、正式経路機能パイプライン制御部８４は、１単位量の次の処理データを正式経路であるパス２に送信する。即ち、今度は、１単位量の次の処理データは、他の情報処理装置４に送信されるのである。
【０４２３】
ステップＳ３４４１において、他の情報処理装置４は、１単位量の次の処理データを受信して、それに対する処理を実行する。そして、他の情報処理装置４は、ステップＳ３４４１の処理を完了すると、ステップＳ３４４２において、処理完了通知を処理実行依頼装置２に送信する。
【０４２４】
この間、処理実行依頼装置２の正式経路機能パイプライン制御部８４は、ステップＳ３３７１において、一定時間内に処理完了通知が送信されてきたか否かを判定する。
【０４２５】
一定時間内に、他の情報処理装置４によりステップＳ３４４２の処理が実行されて、処理完了通知が処理実行依頼装置２に送信されてくると、ステップＳ３３７１においてYESであると判定されて、処理はステップＳ３３８１に進む。
【０４２６】
処理実行依頼装置２の正式経路機能パイプライン制御部８４は、ステップＳ３３８１において、処理完了通知を受信すると、ステップＳ３３９１において、全データに対する処理が完了したか否かを判定する。
【０４２７】
ステップＳ３３９１において、全データに対する処理が完了したと判定された場合、処理実行依頼装置２の「バックアップパイプライン実行処理」は終了となる。
【０４２８】
この間、他の情報処理装置４は、ステップＳ３４４３において、次の処理データが送信されてきたか否かを判定する。処理実行依頼装置２の「バックアップパイプライン実行処理」が終了すると、当然ながら、次の処理データは送信されてこない。このような場合、ステップＳ３４４３において、次の処理データが送信されてこないと判定され、他の情報処理装置４の「バックアップパイプライン実行処理」は終了となる。
【０４２９】
これに対して、ステップＳ３３９１において、全データに対する処理が完了していないと判定された場合、処理はステップＳ３３６１に戻され、それ以降の処理が繰り返される。即ち、ステップＳ３３６１において、さらに次の処理データが他の情報処理装置４に送信される。すると、ステップＳ３４４３において、次の処理データが送信されてきたと判定され、処理はステップＳ３４４１に戻され、それ以降の処理が繰り返される。
【０４３０】
このように、正式経路として再設定されたパス２に特に問題が発生せず、一定時間内に、他の情報処理装置４が処理完了通知を送信できる間は、正式経路がパス１からパス２に変わった点を除いては、上述した図３０の処理と基本的に同様の処理が実行される。
【０４３１】
これに対して、正式経路として再設定されたパス２に何かしらの問題が発生してしまい、一定時間内に、他の情報処理装置４が処理完了通知を送信することが不可能になった場合には、ステップＳ３３７１においてNOであると判定されて、処理はステップＳ３４０１に進む。
【０４３２】
即ち、この例ではバックアップパスは他に保持されていないので、処理実行依頼装置２の正式経路機能パイプライン制御部８４は、ステップＳ３４０１において、所定のエラー処理を実行する。これにより、処理実行依頼装置２も含めて全ての「バックアップパイプライン実行処理」は終了になる。
【０４３３】
換言すると、図示はしないが、ステップＳ３３７１においてNOであると判定された時点でバックアップパスがまだ１以上保持されている場合には、処理はステップＳ３３５１に戻され、他のバックアップパスが正式経路にさらに再設定されて、上述した一連の処理がさらに実行されることになる。即ち、他のバックアップパスを利用する機能パイプライン処理がさらに実行されることになる。
【０４３４】
以上、図１４のステップＳ１２５等の「パイプライン実行処理」として、図２９と図３０とで示される第１の例、および、図３３と図３４とで示される第２の例について説明した。繰り返しになるが、この「パイプライン実行処理」は、第１の例と第２の例に限定されず、その他様々な処理を採用することが可能である。
【０４３５】
例えば、ある時点で最速であった経路が、ネットワークの負荷等の要因により遅延が生ずることがある。そこで、２重の正式経路のそれぞれを同時に利用してパイプライン処理を実行するという「パイプライン実行処理」（以下、２重パイプライン実行処理と称する）を採用することも可能である。この「２重パイプライン実行処理」を実行することで、出力データを常に最速で出力し続けることが可能となる。
【０４３６】
「２重パイプライン実行処理」において、２重の正式経路の決定手法は特に限定されず、様々な決定手法を採用することが可能である。具体的には例えば、次のような決定手法を採用することが可能である。
【０４３７】
即ち、実行元の情報処理装置（処理実行依頼装置）２の図１５の経路候補設定部８１は、図１４のステップＳ１２４の「経路選択処理」のうちの図１８のステップＳ２０３の「経路候補探索処理」として、上述した図２０の例の代わりに、次のような処理を実行する。即ち、経路候補設定部８１は、最上位ノードに対応する実行元の情報処理装置２自身と、その最上位ノードに対する２つの子モード（以下、それぞれノードA，ノードBと称する）のうちの一方に対応する他の情報処理装置とを少なくとも含む第１の経路候補を１以上決定するとともに、実行元の情報処理装置２自身と、ノードAとノードBとのうちの他方に対応する他の情報処理装置とを少なくとも含む第２の経路候補を１以上決定する、といった処理を実行する。
【０４３８】
次に、図１４のステップＳ１２５の「パイプライン実行処理」の一部として、実行元の情報処理装置２の経路候補機能パイプライン制御部８２は、１以上の第１の経路候補、および、１以上の第２の経路候補の全てを利用して機能パイプライン処理を一旦実行させる。そして、正式経路設定部８３は、１以上の第１の経路候補の中から最速の１つを第１の正式経路として設定し、かつ、１以上の第２の経路候補の中から最速の１つを第２の正式経路として設定する。
【０４３９】
以上のような一連の処理を実行する手法が、「２重パイプライン実行処理」における２重の正式経路の決定手法として採用可能である。
【０４４０】
なお、この場合、第１の正式経路と第２の正式経路とのそれぞれの処理データは、それぞれ個別に所定の出力先（実行元の情報処理装置２除く）に出力されて、その出力先で最速のデータを選択して使用するようにしてもよい。或いは、第１の正式経路と第２の正式経路とのそれぞれの処理データが、実行元の情報処理装置２に一度戻され（送信され）、その後、実行元の情報処理装置２が、最速に到達した処理データのみを所定の出力先に出力するようにしてもよい。
【０４４１】
ところで、「２重パイプライン実行処理」で説明したように、図１８のステップＳ２０３の「経路候補探索処理」も、図２０の例に特に限定されず、その後の図１４のステップＳ１２５の「パイプライン実行処理」の特徴に応じて、様々な処理を採用することが可能である。
【０４４２】
例えば、ネットワーク帯域の制限によって、各情報処理装置間でのデータの遅延が生じる場合がある。この遅延をできるだけ少なくさせるためには、経路に含まれる情報処理装置の数をできるだけ少なくする必要がある。そこで、木の深さを制限する「経路候補探索処理」を採用することが可能である。木の深さとは、２分木における階層の数を指す。
【０４４３】
具体的には例えば、図３５に示されるような、木の深さを制限する「経路候補選択処理」を採用することが可能である。即ち、図３５のフローチャートは、「経路候補探索処理」の図２０とは異なる他の例を示している。そこで、以下、図３５のフローチャートを参照して、「経路候補探索処理」の他の例について説明する。
【０４４４】
なお、図２０の例と同様に図３５の例の「経路候補探索処理」も正確には、図１５の処理実行依頼装置２の経路候補設定部８１により実行されるが、以下、説明の簡略上、処理実行依頼装置２により単に実行されるとする。
【０４４５】
即ち、ステップＳ４００１において、処理実行依頼装置２は、サブプロセッサ必要数を取得する。
【０４４６】
ステップＳ４００２において、処理実行依頼装置２は、木の深さの制限を設定する。
【０４４７】
具体的には例えば、ユーザ等が、機能パイプライン処理の経路に含める情報処理装置の台数をR台（Rは２以上の任意の整数値）に制限したいと所望した場合、ステップＳ４００２において、処理実行依頼装置２は、木の深さの制限を「R」に設定する。
【０４４８】
ステップＳ４００３において、処理実行依頼装置２は、経路（パス）候補の番号iを１に設定するとともに、木の深さjを0に設定する。
【０４４９】
ステップＳ４００４において、処理実行依頼装置２は、最上位ノード（実行元の情報処理装置２のID）を基準ノードに設定する。
【０４５０】
ステップＳ４００５において、処理実行依頼装置２は、現在の基準ノードの下に、基準ノードにまだ設定されていない子ノードが存在するか否かを判定する。
【０４５１】
ステップＳ４００５において、現在の基準ノードの下に、基準ノードにまだ設定されていない子ノードが存在しないと判定された場合、即ち、全子ノードが既に基準ノードに設定された場合、処理はステップＳ４０１３に進む。
【０４５２】
ステップＳ４０１３において、処理実行依頼装置２は、基準ノードが最上位ノードであるか否かを判定する。
【０４５３】
後述するステップＳ４００５乃至Ｓ４０１２のループ処理が繰り返されて、２本木のうちの木の深さ制限以内に含まれる全ノードが基準ノードに設定された場合、その結果として、ステップＳ４０１３において、基準ノードが最上位ノードであると判定されることになり、これにより、図３５の例の「経路候補探索処理」は終了となる。
【０４５４】
これに対して、ステップＳ４０１３において、基準ノードが最上位ノードではないと判定された場合、処理はステップＳ４０１４に進む。ステップＳ４０１４において、処理実行依頼装置２は、基準ノードを親モードに移す。その後、処理はステップＳ４００５に戻され、現在の基準ノードの下に、基準ノードにまだ設定されていない子ノードが存在するか否かが再度判定される。
【０４５５】
以上、ステップＳ４００５においてNOであると判定された場合のそれ以降の処理について説明した。
【０４５６】
これに対して、ステップＳ４００５において、YESであると判定された場合、即ち、現在の基準ノードの下に、基準ノードにまだ設定されていない子ノードが存在すると判定された場合、処理はステップＳ４００６に進められる。
【０４５７】
ステップＳ４００６において、処理実行依頼装置２は、基準ノードにまだ設定されていない子ノードのうちの所定の１つを基準ノードに設定するとともに、木の深さjを更新する(j=j+1を演算する)。
【０４５８】
ステップＳ４００７において、処理実行依頼装置２は、ステップＳ４００６の処理で更新された木の深さjは、ステップＳ４００２の処理で設定された木の深さの制限以上であるか否かを判定する。
【０４５９】
ステップＳ４００７において、木の深さjは木の深さの制限以上であると判定された場合、処理はステップＳ４０１３に進み、それ以降の処理が繰り返される。
【０４６０】
これに対して、ステップＳ４００７において、木の深さjは木の深さの制限以上ではないと判定された場合、即ち、木の深さjは木の深さの制限未満の場合、処理はステップＳ４００８に進められる。
【０４６１】
ステップＳ４００８において、処理実行依頼装置２は、最上位ノードから基準ノードまでの経路をパスiに設定し、パスi内サブプロセッサ総数を演算する。
【０４６２】
ステップＳ４００９において、処理実行依頼装置２は、パスi内サブプロセッサ総数が、サブプロセッサ必要数以上になったか否かを判定する。
【０４６３】
ステップＳ４００９において、パスi内サブプロセッサ総数が、サブプロセッサ必要数以上になっていないと判定された場合、即ち、パスi内サブプロセッサ総数が、サブプロセッサ必要数未満の場合、処理はステップＳ４００５に戻され、それ以降の処理が繰り返される。
【０４６４】
これに対して、ステップＳ４００９において、パスi内サブプロセッサ総数が、サブプロセッサ必要数以上になったと判定された場合、処理はステップＳ４０１０に進められる。
【０４６５】
ステップＳ４０１０において、処理実行依頼装置２は、経路選択テーブルの「パスi」の項目に通過順序を記述する。
【０４６６】
そして、処理実行依頼装置２は、ステップＳ４０１１において、基準ノードを親ノードに移し、ステップＳ４０１２において、経路（パス）候補の番号iを更新する（i=i+1を演算する）。その後、処理はステップＳ４００５に戻され、それ以降の処理が繰り返される。
【０４６７】
このようにして、木の深さを制限する図３５の例の「経路候補選択処理」が実行される。
【０４６８】
以上説明したように、本発明においては、例えば図１の情報処理システムを構成する情報処理装置１乃至Ｎのそれぞれが、例えばＮ＝４の場合の図１４に示される各処理を実行することで、次の第１乃至第３の効果を奏することが可能になる。
【０４６９】
即ち、第１の効果とは、複数の情報処理装置を用いた機能パイプライン処理の実現が可能になり、その結果、１つの情報処理装置内のサブプロセッサの個数以上のサブプロセッサを利用した機能パイプライン処理が実現できる、という効果である。換言すると、第１の効果とは、１つの情報処理装置で実現可能なタスクの個数より多いタスクからなる機能パイプライン処理の実現が可能になるという効果である。
【０４７０】
第２の効果とは、機能パイプライン処理が実行される場合に、複数の経路候補を用意することができるので、最速の経路による処理結果が常に取得可能になる、という効果である。
【０４７１】
第３の効果とは、機能パイプライン処理が実行される場合に、経路を多重化したり、バックアップ経路を保持することが容易にできるので、ある一つの経路の処理が実行不可能になった場合でも、別の経路を利用することで機能パイプライン処理を停止せずに、その処理を続行することが可能となる、という効果である。
【０４７２】
ところで、上述した一連の処理は、上述したようにソフトウエアにより実行させることもできるが、ハードウエアにより実行させることができる。
【０４７３】
また、上述した一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、ネットワークや記録媒体からインストールされる。
【０４７４】
このようなプログラムを含む記録媒体は、図１に示されるように、装置本体とは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク（フロッピディスクを含む）、光ディスク（CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む）、光磁気ディスク（ＭＤ（Mini Disk）を含む）、もしくは半導体メモリなどよりなるリムーバブル記録媒体（パッケージメディア）１８により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに提供される、プログラムが記録されているメインメモリ１２や、記録部１３に含まれるハードディスクなどで構成される。
【０４７５】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、その順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０４７６】
また、本明細書において、システムとは、複数の装置や処理部により構成される装置全体を表すものである。
【図面の簡単な説明】
【０４７７】
【図１】本発明が適用される情報処理システム、即ち、本発明が適用される情報処理装置からなる情報処理システムの構成例を示すブロック図である。
【図２】図１の情報処理装置内のメインメモリを説明する図である。
【図３】図１の情報処理装置内のサブプロセッサのローカルストレージを説明する図である。
【図４】キー管理テーブルを説明する図である。
【図５】ソフトウエアセルの構成の例を示す図である。
【図６】DMAコマンドがステータス返信コマンドである場合におけるソフトウエアセルのデータ領域の構造を示す図である。
【図７】図１の情報処理システムを仮想的な１台の情報処理装置として動作させることを説明する図である。
【図８】情報処理装置のソフトウエア構成例を示す図である。
【図９】サブプロセッサ管理テーブルの例を示す図である。
【図１０】図７の仮想的な１台の情報処理装置が、所定の機能プログラムを実行する場合の処理例を説明する図である。
【図１１】図７の仮想的な１台の情報処理装置が、所定の機能プログラムを実行する場合の処理例を説明するフローチャートである。
【図１２】１０個のタスクからなる機能パイプライン処理を説明する図である。
【図１３】図１２の機能パイプライン処理を２台の情報処理装置で実現する例を説明する図である。
【図１４】図７の仮想的な１台の情報処理装置が、機能パイプライン処理を実行するまでの一連の処理例を説明するフローチャートである。
【図１５】図７の仮想的な１台の情報処理装置を構成する所定の１台が処理実行依頼装置として動作する場合の機能的構成例を示す機能ブロック図である。
【図１６】空きサブプロセッサリストの例を示す図である。
【図１７】経路選択テーブルの例を示す図である。
【図１８】図１４の処理のうちの「経路選択処理」の詳細例を説明するフローチャートである。
【図１９】図１８の「経路選択処理」により構築される２本木の例を示す図である。
【図２０】図１８の「経路選択処理」のうちの「経路候補探索処理」の詳細例を説明するフローチャートである。
【図２１】図２０の「経路候補探索処理」で決定された経路（パス）候補の例を示す図である。
【図２２】図１７の経路選択テーブルに対して、図２０の「経路候補探索処理」で決定された経路（パス）候補の情報が追加された後の経路選択テーブルの例を示す図である。
【図２３】１４個のタスクからなる機能パイプライン処理を説明する図である。
【図２４】図２３の機能パイプライン処理が対象とされて図１４の処理が実行された場合における空きサブプロセッサの例を示す図である。
【図２５】図２３の機能パイプライン処理が対象とされて図１４の処理が実行された場合における経路選択テーブルの例を示す図である。
【図２６】図２３の機能パイプライン処理が対象とされて図１４の処理が実行された場合における、図１８の「経路選択処理」により構築される２本木の例を示す図である。
【図２７】図２３の機能パイプライン処理が対象とされて図１４の処理が実行された場合における、図２５の経路選択テーブルに対して、図２０の「経路候補探索処理」で決定された経路（パス）候補の情報が追加された後の経路選択テーブルの例を示す図である。
【図２８】図２３の機能パイプライン処理が対象とされて図１４の処理が実行された場合における、図２０の「経路候補探索処理」で決定された経路（パス）候補の例を示す図である。
【図２９】図１４の処理のうちの「パイプライン実行処理」の詳細例を説明するフローチャートである。
【図３０】図１４の処理のうちの「パイプライン実行処理」の詳細例を説明するフローチャートである。
【図３１】図１２の機能パイプライン処理が、図２９と図３０との「パイプライン実行処理」により実現される場合の例を説明する図である。
【図３２】図１２の機能パイプライン処理が、図２９と図３０との「パイプライン実行処理」により実現される場合の例を説明する図である。
【図３３】図３０とは異なる「パイプライン実行処理」の詳細例を説明するフローチャートである。
【図３４】図３０とは異なる「パイプライン実行処理」の詳細例を説明するフローチャートである。
【図３５】図１８とは異なる「経路候補探索処理」の詳細例を説明するフローチャートである。
【符号の説明】
【０４７８】
１乃至Ｎ  情報処理装置，  １１  情報処理コントローラ，  １２  メインメモリ，  １３  記録部，  １４  バス，  １５  ドライブ，  １６  UI部，  １７  通信部，  １８  リムーバブル記録媒体，  ２１  メインプロセッサ，  ２２  DMAC，  ２３  DC，  ２４−１乃至２４−ｍ  サブプロセッサ，  ３１，３２−１乃至３２−ｍ  ローカルストレージ，  ５１  ネットワーク，  ６１  仮想的な１台の情報処理装置，  ７１，７２  機能プログラム，  ８１  経路候補設定部，  ８２  経路候補機能パイプライン制御部，  ８３  正式経路設定部，  ８４  正式経路機能パイプライン制御部，９１，９２，９３  機能プログラム
【図１】
2006079280.tif 000003
【図２】
2006079280.tif 000004
【図３】
2006079280.tif 000005
【図４】
2006079280.tif 000006
【図５】
2006079280.tif 000007
【図６】
2006079280.tif 000008
【図７】
2006079280.tif 000009
【図８】
2006079280.tif 000010
【図９】
2006079280.tif 000011
【図１０】
2006079280.tif 000012
【図１１】
2006079280.tif 000013
【図１２】
2006079280.tif 000014
【図１３】
2006079280.tif 000015
【図１４】
2006079280.tif 000016
【図１５】
2006079280.tif 000017
【図１６】
2006079280.tif 000018
【図１７】
2006079280.tif 000019
【図１８】
2006079280.tif 000020
【図１９】
2006079280.tif 000021
【図２０】
2006079280.tif 000022
【図２１】
2006079280.tif 000023
【図２２】
2006079280.tif 000024
【図２３】
2006079280.tif 000025
【図２４】
2006079280.tif 000026
【図２５】
2006079280.tif 000027
【図２６】
2006079280.tif 000028
【図２７】
2006079280.tif 000029
【図２８】
2006079280.tif 000030
【図２９】
2006079280.tif 000031
【図３０】
2006079280.tif 000032
【図３１】
2006079280.tif 000033
【図３２】
2006079280.tif 000034
【図３３】
2006079280.tif 000035
【図３４】
2006079280.tif 000036
【図３５】
2006079280.tif 000037