(57)【要約】【課題】演算部に分散処理を行わせる制御部の保守性を向上させることのできる分散コントローラ、分散処理システム、及び、分散処理方法を提供する。【解決手段】２つ以上の演算部を制御して分散処理を行わせる、演算部に接続された分散コントローラであって、複数の制御モジュールによって構成され、制御モジュールはそれぞれ、少なくとも他の一つの制御モジュールと互いに接続されており、複数の制御モジュールのうちの少なくとも２つを用いて、演算部間の処理経路を決定する。【選択図】図８
2011203867.tif 000002
【特許請求の範囲】
【請求項１】
２つ以上の演算部を制御して分散処理を行わせる、前記演算部に接続された分散コントローラであって、
複数の制御モジュールによって構成され、
前記制御モジュールはそれぞれ、少なくとも他の一つの制御モジュールと互いに接続されており、
前記複数の制御モジュールのうちの少なくとも２つを用いて、前記演算部間の処理経路を決定することを特徴とする分散コントローラ。
【請求項２】
前記複数の制御モジュールの各々は、他の制御モジュールとの接続関係を定義した分散コントローラ接続情報を保持し、
前記複数の制御モジュールは、それぞれ、前記分散コントローラ接続情報にしたがって、接続要求を発行し、あるいは、他の制御モジュールからの接続要求に応答して接続を確立するかどうかを判断し、自律的に接続を確立することを特徴とする請求項１に記載の分散コントローラ。
【請求項３】
前記制御モジュールは、起動時に他の制御モジュールに対して起動を通知し、接続要求の発行を前記他の制御モジュールに促すことを特徴とする請求項２に記載の分散コントローラ。
【請求項４】
前記制御モジュールは、接続を確立した他の制御モジュールに関する制御モジュール情報を取得し、前記制御モジュール間の接続が不通となったときに、前記制御モジュール情報に記載された前記制御モジュールに対して接続要求を再発行する請求項２または請求項３に記載の分散コントローラ。
【請求項５】
要求されたタスクを解析し、前記タスクを構成するサービスを取得するサービス取得手段と、
接続された前記演算部に関する情報を取得する演算部情報取得手段と、
前記タスクを構成するサービスと前記演算部に関する演算部情報とを用いて、前記サービスを分散処理するための処理経路を決定する処理経路決定手段と、
が前記複数の制御モジュールのうちの２つ以上に割り当てられていることを特徴とする請求項１から請求項４のいずれか１項に記載の分散コントローラ。
【請求項６】
前記制御モジュールの一つであって、前記他の複数の制御モジュールのうち少なくとも一つの接続された制御モジュールに関する制御モジュール情報を管理する管理手段を有し、
前記管理手段は、前記制御モジュール情報と、設定された選択条件と、を用いて分散コントローラを形成する前記制御モジュールを選択することを特徴とする請求項１から請求項５のいずれか１項に記載の分散コントローラ。
【請求項７】
前記管理手段は、１つの制御モジュールにより構成されていることを特徴とする請求項６に記載の分散コントローラ。
【請求項８】
前記管理手段は、複数の制御モジュールにより構成されていることを特徴とする請求項６に記載の分散コントローラ。
【請求項９】
前記サービス取得手段、前記演算部情報取得手段、及び、前記処理経路決定手段に、別個の前記管理手段がそれぞれ割り当てられていることを特徴とする請求項６から請求項８のいずれか１項に記載の分散コントローラ。
【請求項１０】
互いに異なる処理経路決定方法によって処理経路を決定する複数の処理経路決定手段を、互いに異なる制御モジュールにそれぞれ割り当てることを特徴とする請求項６から請求項９のいずれか１項に記載の分散コントローラ。
【請求項１１】
互いに異なる演算部情報、または、これらの組合せを、互いに異なる演算部情報取得手段にそれぞれ割り当て、
演算部情報取得手段を管理する管理手段は、処理経路決定手段を管理する管理手段が選択した処理経路決定手段において処理経路を決定するために必要な情報を得ることを選択条件として、前記制御モジュール情報から演算部情報取得手段を選択することを特徴とする請求項６から請求項１０のいずれか１項に記載の分散コントローラ。
【請求項１２】
前記制御モジュールは、同一の機能をもつ複数の制御モジュールに接続して制御モジュール情報を取得し、選択している制御モジュールが使用不可であると判断した場合に、前記制御モジュール情報から同一の機能をもつ制御モジュールを再選択することを特徴とする請求項６から請求項１１のいずれか１項に記載の分散コントローラ。
【請求項１３】
前記制御モジュールの一つであって、他の制御モジュールから指定された制御モジュールを起動条件に従って起動する起動手段を有することを特徴とする請求項１から請求項１２のいずれか１項に記載の分散コントローラ。
【請求項１４】
前記制御モジュールは、前記起動手段に自分自身の複製を指定することを特徴とする請求項１３に記載の分散コントローラ。
【請求項１５】
前記起動手段は、制御モジュールの複製を保持しており、他の制御モジュールからの指定に従って、前記複製を起動することを特徴とする請求項１３に記載の分散コントローラ。
【請求項１６】
前記制御モジュールは、他の制御モジュールと重複しないように前記起動手段に前記複製の起動を指定することを特徴とする請求項１３から請求項１５のいずれか１項に記載の分散コントローラ。
【請求項１７】
２つ以上の演算部と、
前記２つ以上の演算部に接続され、２つ以上の演算部を制御して分散処理を行わせる分散コントローラと、
を備え、
前記分散コントローラは、複数の制御モジュールによって構成され、
前記制御モジュールはそれぞれ、少なくとも他の一つの制御モジュールと互いに接続されており、
前記複数の制御モジュールのうちの少なくとも２つを用いて、前記演算部間の処理経路を決定することを特徴とする分散処理システム。
【請求項１８】
２つ以上の演算部と、前記２つ以上の演算部に接続された分散コントローラと、を備え、
前記分散コントローラが、複数の制御モジュールによって構成され、
前記制御モジュールがそれぞれ、少なくとも他の一つの制御モジュールと互いに接続されている分散処理システムの分散処理方法であって、
前記複数の制御モジュールのうちの少なくとも２つを用いて、前記演算部間の処理経路を決定する工程と、
前記分散コントローラの制御に基づいて、前記処理経路の前記演算部が分散処理を実行する工程と、
を有することを特徴とする分散処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散コントローラ、分散処理システム、及び、分散処理方法に関するものである。
【背景技術】
【０００２】
従来の分散コントローラ、分散処理システム、又は分散処理方法として、例えば、特許文献１記載の分散型コントローラ、特許文献２記載のマルチプロセッサシステム、特許文献３記載の分散処理システムがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−３５２４５９号公報
【特許文献２】特開２００９−１２９２１９号公報
【特許文献３】特許第３００６１８７号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１の分散型コントローラでは、コントローラ間でメッセージのやり取りをして、協調を図ってはいるものの、各コントローラは独立してＩ／Ｏやセンサ制御を行うものであって、コントローラ単体で動作可能である。すなわち、各コントローラは耐故障性及び拡張性を有しておらず、保守性が低い。
【０００５】
また、特許文献２記載のマルチプロセッサシステムでは、各演算部間に経路が構築されているが、制御部にあたるプロセッサ情報管理部の具体的な内部構成は開示されておらず、分散は不可能であるため、制御部の保守性を確保することが困難である。
【０００６】
さらにまた、特許文献３記載の分散処理システムでは、機能モジュールがネットワーク上に分散され協調することが可能であるが、データ転送の経路を決定する制御部にあたる部分がメタオブジェクトとして必ず機能モジュールと対で定義され、分離することができない。したがって、すべての機能モジュールにメタオブジェクトを定義する必要があり、保守性は期待できない。
【０００７】
そこで、本発明に係る分散コントローラ、分散処理システム、及び、分散処理方法は、演算部に分散処理を行わせる制御部の保守性を向上させることを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明に係る分散コントローラは、２つ以上の演算部を制御して分散処理を行わせる、演算部に接続された分散コントローラであって、複数の制御モジュールによって構成され、制御モジュールはそれぞれ、少なくとも他の一つの制御モジュールと互いに接続されており、複数の制御モジュールのうちの少なくとも２つを用いて、演算部間の処理経路を決定することを特徴とする。
【０００９】
本発明に係る分散コントローラにおいて、複数の制御モジュールの各々は、他の制御モジュールとの接続関係を定義した分散コントローラ接続情報を保持し、複数の制御モジュールは、それぞれ、分散コントローラ接続情報にしたがって、接続要求を発行し、あるいは、他の制御モジュールからの接続要求に応答して接続を確立するかどうかを判断し、自律的に接続を確立することが好ましい。
【００１０】
本発明に係る分散コントローラにおいて、制御モジュールは、起動時に他の制御モジュールに対して起動を通知し、接続要求の発行を他の制御モジュールに促すことが好ましい。
【００１１】
本発明に係る分散コントローラにおいて、制御モジュールは、接続を確立した他の制御モジュールに関する制御モジュール情報を取得し、制御モジュール間の接続が不通となったときに、制御モジュール情報に記載された制御モジュールに対して接続要求を再発行することが好ましい。
【００１２】
本発明に係る分散コントローラにおいて、要求されたタスクを解析し、タスクを構成するサービスを取得するサービス取得手段と、接続された演算部に関する情報を取得する演算部情報取得手段と、タスクを構成するサービスと演算部に関する演算部情報とを用いて、サービスを分散処理するための処理経路を決定する処理経路決定手段と、が複数の制御モジュールのうちの２つ以上に割り当てられていることが好ましい。
【００１３】
本発明に係る分散コントローラにおいて、制御モジュールの一つであって、他の複数の制御モジュールのうち少なくとも一つの接続された制御モジュールに関する制御モジュール情報を管理する管理手段を有し、管理手段は、制御モジュール情報と、設定された選択条件と、を用いて分散コントローラを形成する制御モジュールを選択することが好ましい。
【００１４】
本発明に係る分散コントローラにおいて、管理手段は、１つの制御モジュールにより構成されていることが好ましい。
【００１５】
本発明に係る分散コントローラにおいて、管理手段は、複数の制御モジュールにより構成されていることが好ましい。
【００１６】
本発明に係る分散コントローラにおいて、サービス取得手段、演算部情報取得手段、及び、処理経路決定手段に、別個の管理手段がそれぞれ割り当てられていることが好ましい。
【００１７】
本発明に係る分散コントローラにおいて、互いに異なる処理経路決定方法によって処理経路を決定する複数の処理経路決定手段を、互いに異なる制御モジュールにそれぞれ割り当てることが好ましい。
【００１８】
本発明に係る分散コントローラにおいて、互いに異なる演算部情報、または、これらの組合せを、互いに異なる演算部情報取得手段にそれぞれ割り当て、演算部情報取得手段を管理する管理手段は、処理経路決定手段を管理する管理手段が選択した処理経路決定手段において処理経路を決定するために必要な情報を得ることを選択条件として、制御モジュール情報から演算部情報取得手段を選択することが好ましい。
【００１９】
本発明に係る分散コントローラにおいて、制御モジュールは、同一の機能をもつ複数の制御モジュールに接続して制御モジュール情報を取得し、選択している制御モジュールが使用不可であると判断した場合に、制御モジュール情報から同一の機能をもつ制御モジュールを再選択することが好ましい。
【００２０】
本発明に係る分散コントローラにおいて、制御モジュールの一つであって、他の制御モジュールから指定された制御モジュールを起動条件に従って起動する起動手段を有することが好ましい。
【００２１】
本発明に係る分散コントローラにおいて、制御モジュールは、起動手段に自分自身の複製を指定することが好ましい。
【００２２】
本発明に係る分散コントローラにおいて、起動手段は、制御モジュールの複製を保持しており、他の制御モジュールからの指定に従って、複製を起動することが好ましい。
【００２３】
本発明に係る分散コントローラにおいて、制御モジュールは、他の制御モジュールと重複しないように起動手段に複製の起動を指定することが好ましい。
【００２４】
また、本発明に係る分散処理システムは、２つ以上の演算部と、２つ以上の演算部に接続され、２つ以上の演算部を制御して分散処理を行わせる分散コントローラと、を備え、分散コントローラは、複数の制御モジュールによって構成され、制御モジュールはそれぞれ、少なくとも他の一つの制御モジュールと互いに接続されており、複数の制御モジュールのうちの少なくとも２つを用いて、演算部間の処理経路を決定することを特徴とする。
【００２５】
さらにまた、本発明に係る分散処理方法は、２つ以上の演算部と、２つ以上の演算部に接続された分散コントローラと、を備え、分散コントローラが、複数の制御モジュールによって構成され、制御モジュールがそれぞれ、少なくとも他の一つの制御モジュールと互いに接続されている分散処理システムの分散処理方法であって、複数の制御モジュールのうちの少なくとも２つを用いて、演算部間の処理経路を決定する工程と、分散コントローラの制御に基づいて、処理経路の演算部が分散処理を実行する工程と、を有することを特徴とする。
【発明の効果】
【００２６】
本発明に係る分散コントローラ、分散処理システム、及び、分散処理方法は、演算部に分散処理を行わせる制御部の保守性を向上させることができる、という効果を奏する。
【図面の簡単な説明】
【００２７】
【図１】分散処理システムの基本的な構成を示す図である。
【図２】ＪＰＥＧ復号化処理の処理フローを示す図である。
【図３】図１に示す分散処理システムにおいてＪＰＥＧ復号化処理を実行するシステムを示す図である。
【図４】ＪＰＥＧ復号化処理を表すタスク構成情報の構成例としてのタスク構成表を示す図である。
【図５】図１に示す分散処理システムにおける静的情報表の構成例を示す図である。
【図６】図１に示す分散処理システムにおける動的情報表の構成例を示す図である。
【図７】図３に示すシステム構成でＪＰＥＧ復号化処理を行なう場合の処理経路表を示す図である。
【図８】第１実施形態の制御部の内部構成を示す図である。
【図９】第１実施形態における制御部の内部構成を含む分散処理システム全体の構成を示す図である。
【図１０】各制御モジュールを配置する物理的なネットワークを示す図である。
【図１１】図９のシステム構成におけるＪＰＥＧ復号化処理の処理順序を示す図である。
【図１２】第１実施形態の制御モジュールの起動シーケンスを示す図である。
【図１３】制御モジュール情報の構成例を示す図である。
【図１４】制御モジュール管理表の構成例を示す図である。
【図１５】制御モジュールの再接続のシーケンスを示す図である。
【図１６】第２実施形態の制御部の内部の構成を含む分散処理システム全体の基本構成を示す図である。
【図１７】処理経路決定部を主とし、管理部を従とした場合の接続手順を説明する図である。
【図１８】図１７の全シーケンス終了後の管理部が保持する制御モジュール情報を示す図である。
【図１９】拡張した制御部の内部構成を含む分散処理システム全体の基本構成を示す図である。
【図２０】処理経路決定部が接続された後の管理部の制御モジュール管理表を示す図である。
【図２１】図１９のシステム構成におけるＪＰＥＧ復号化処理の処理順序を示す図である。
【図２２】管理部を一つに集約した制御部を含む分散処理システムの構成を示す図である。
【図２３】第３実施形態における制御部の内部の構成を含む分散処理システム全体の構成を示す図である。
【図２４】第３実施形態の各制御モジュールの故障時の対応の流れを示すフローチャートである。
【図２５】第４実施形態における制御部の内部の構成を含む分散処理システム全体の構成を示す図である。
【図２６】管理部の複製処理に関するフローチャートを示す図である。
【図２７】起動部の複製処理に関するシーケンスを示す図である。
【図２８】第４実施形態における複製処理後の制御部の内部の構成を含む処理システム全体の構成を示す図である。
【図２９】起動部の複製処理後の制御部を起動した分散処理システム全体の構成を示す図である。
【発明を実施するための形態】
【００２８】
以下に、本発明に係る分散コントローラ、分散処理システム、及び、分散処理方法の実施形態を図面に基づいて詳細に説明する。なお、以下の実施形態によりこの発明が限定されるものではない。
【００２９】
以下の実施形態に係る分散コントローラ、分散処理システム、及び、分散処理方法は、制御機能を複数の機能モジュールに分割し、モジュールごとにネットワーク分散可能としている。これにより、各モジュールの更新や保守がモジュール単位で可能となり、保守性を向上させることができる。ここで、保守性とは、定常的なメンテナンスを意味する。
【００３０】
また、ネットワーク分散可能とすることで、モジュールそのものやモジュールが動作するプラットフォーム（例えば、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ））が故障しても、代替モジュールを立ち上げることで、復旧も容易で耐故障性を向上させることができる。ここで言う耐故障性は、故障時の保守性である。
【００３１】
さらに、管理部を設け、同じ機能を異なる方法で提供する機能モジュールを複数登録しておくことにより、システムの拡張性を向上させることができる。ここで、システムの拡張性は、システム更新時の保守性を言うものとする。
【００３２】
図１は、分散処理システムの基本的な構成を示す図である。
図１に示すように、分散処理システムは、処理要求部１０、分散コントローラとしての制御部２０、Ｎ個の演算部３１、３２、３３、３４、３５、３６、３７、．．．、３Ｎで構成されている。Ｎは自然数とする。各演算部は、固有のデータ処理機能を有している。制御部２０は処理要求部１０が要求するデータ処理を受け付けて、各演算部の提供する固有のデータ処理機能の組み合わせで要求されたデータ処理を構成可能か判断し、最適な演算部を選択する。そして、選択した演算部間の通信路を定義する。制御部２０は定義した通信路を選択した演算部に配信することで、各演算部が動的に通信路を接続し、処理システムを動的に構築する。
【００３３】
分散処理の例として、処理要求部１０からＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）復号化処理がデータ処理として要求された場合について説明する。図２はＪＰＥＧ復号化処理の処理フローを示す図である。
ＪＰＥＧ復号化処理は、ファイル解析Ｓ２７０１、ハフマン復号化Ｓ２７０２、逆量子化Ｓ２７０３、ＩＤＣＴ（Ｉｎｖｅｒｓｅ  Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）Ｓ２７０４、アップサンプリングＳ２７０５、色空間変換Ｓ２７０６、及び、結果出力Ｓ２７０７の７つの処理段階からなる連続的な処理として定義する。ここで、演算部３１、３２、３３、３４、３５、３６、３７は、Ｓ２７０１からＳ２７０７の各処理段階における処理をサービスとしてそれぞれ提供するものとする。
【００３４】
制御部２０は、ＪＰＥＧ復号化処理を実行可能な演算部として、演算部３１、３２、３３、３４、３５、３６、３７を選択し、これらの演算部間の経路を動的に構築する。すなわち、制御部２０は、図３に示すＪＰＥＧ復号化処理システムを動的に構築する。ここで、図３は、図１に示す分散処理システムにおいてＪＰＥＧ復号化処理を実行するシステムを示す図である。
動的に処理システムを構築するために、制御部２０は、タスク構成情報と演算部情報を保持しており、これらに基づいて処理システムを定義する処理経路情報を動的に生成する。
【００３５】
図４は、ＪＰＥＧ復号化処理を表すタスク構成情報の構成例としてのタスク構成表を示す図である。
図４に示すタスク構成表２４００は、タスク、タスクを構成するサービス、及び、サービス間の経路を定義したデータ構造である。タスク構成表２４００は、タスク固有のタスク番号２４０１、タスクを構成するサービス数２４０２、タスクを構成するサービス固有のサービス番号の列２４０３、サービス間の経路数２４０４、及び、各経路の入出力を定義する入出力番号の列２４０５、から構成されている。
【００３６】
各項目の具体的な数値例としては、図４に示すように、ＪＰＥＧ復号化処理を表すタスク番号を１００、ファイル解析、ハフマン復号化、逆量子化、ＩＤＣＴ、アップサンプリング、色空間変換、及び、結果出力のサービス番号を、それぞれ１０１、１０２、１０３、１０４、１０５、１０６、１０７とする。入出力番号列２４０５はインデックスと呼ぶ内部表現を用いて表す。インデックスは、サービス番号列２４０３の順番を表している。すなわちインデックス１はサービス番号列の１番目のサービス番号１０１と対応しており、同様にインデックス７はサービス番号列の７番目のサービス番号１０７と対応している。
【００３７】
入出力番号列２４０５は、上から順に入力と出力の対で表されている。すなわち、１番目の経路はインデックス１で表わされるサービスを入力とし、インデックス２で表わされるサービスを出力としている。同様に、６番目の経路はインデックス６で表わされるサービスを入力とし、インデックス７で表わされるサービスを出力としている。
【００３８】
次に、演算部情報について、図５、図６を参照しつつ説明する。
演算部情報は、静的情報と動的情報で構成される。図５は、図１に示す分散処理システムにおける静的情報表１９００の構成例を示す図である。図５には便宜上演算部３９までの情報のみを記載するが、静的情報表１９００には制御部２０に接続されているすべての演算部の情報が記載されている。制御部２０は、静的情報表１９００を用いて、接続されている演算部を管理する。静的情報表１９００は、各演算部に固有の番号である演算部番号１９０１、各演算部が提供可能なサービス数１９０２、各演算部が提供可能なサービスの番号１９０３、各演算部の接続先情報１９０４、及び演算部構成１９０５で構成されている。
【００３９】
演算部構成１９０５は、演算部の構成に関する静的な情報で、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）、メモリ容量、ストレージ容量、プロセッサアーキテクチャ、ネットワーク通信速度などを含む。各演算部は２つ以上のサービスを提供することも可能である。サービスの選択は、データ処理時の条件によって決定する。データ処理時の条件は、データヘッダで判別される映像、文字列などのデータの種類、データの処理順序、処理負荷などの演算部の状態などを含む。サービスの選択は、制御部からサービスを指定するパラメータを送信して設定してもよい。図５では、演算部構成１９０５として、ＯＳとメモリ容量を示しているが、これらに限定されない。
【００４０】
接続先情報１９０４は、図５ではＩＰアドレスを示しているが、ポート番号を含めてもよいし、ハードウェアの入出力に対応したチャネル番号でもよい。また、接続先情報１９０４は、通信相手同士で固定の情報として、固定接続先だけで継続してもよいし、固定接続先を使って別の接続先を通信前に取り決めてもよい。
【００４１】
各演算部は、起動すると制御部２０に接続し、自身の起動を通知する。さらに各演算部は、演算部番号、サービス数、サービス番号、及び、演算部構成を制御部２０に通知する。それらの情報に基づいて、制御部２０は、静的情報表１９００を更新する。
【００４２】
次に、動的な演算部情報（動的情報）について図６を参照して説明する。図６は、図１に示す分散処理システムにおける動的情報表２０００の構成例を示す図である。図６には便宜上演算部３９までの情報のみを記載するが、動的情報表２０００には制御部２０に接続されているすべての演算部の情報が記載されている。動的情報表２０００は、演算部番号２００１、取得時刻２００２、及び演算部状態２００３で構成される。
【００４３】
動的情報表２０００では、演算部番号２００１で表わされる演算部について取得時刻２００２に取得した演算部の状態に関する情報が、演算部状態２００３に格納されている。演算部の状態に関する情報は、メモリの使用率、演算部の動作率、消費電力量、ＣＰＵ温度、入出力速度、実行セッション数などを含む。演算部の状態に関する情報は、それぞれ取得時刻２００２で表わされる瞬間の値、あるいは、過去一定時間の平均で表わされる。図６では、演算部状態の例として、実行しているセッションの数が表示されている。また、取得時刻は、基準時刻からの経過時間をミリ秒単位で表わしている。ここで、実行セッション数は、取得時刻の瞬間における数を示しているが過去の平均で表わしてもよい。その他の演算部の状態に関する情報についても同様に、瞬間値でも平均値でもよい。
【００４４】
つづいて、処理経路情報の構成例について図７を参照しつつ説明する。図７は、図３に示すシステム構成でＪＰＥＧ復号化処理を行なう場合の処理経路表２３００を示す図である。
制御部２０は、タスク構成情報と演算部情報を用いて、処理経路表２３００を生成する。さらに、制御部２０は、各演算部に処理経路表２３００を送信して、動的に演算部の選択と演算部間の通信路を生成し、処理システムを構築する。
【００４５】
処理経路表２３００は、セッション番号２３０１、タスク番号２３０２、演算部数２３０３、演算部番号列２３０４、接続先情報２３０５、経路数２３０６、及び、入出力番号列２３０７で構成されている。セッション番号２３０１は、各タスクの処理に固有の番号で、同じタスクを複数回実行した場合、それぞれに異なるセッション番号が付される。タスク番号２３０２で表わされるタスクを実行するのに必要な演算部の番号列が、演算部番号列２３０４に連続的に格納される。格納された演算部の数は、演算部数２３０３に格納される。
【００４６】
入出力番号列２３０７は、タスク構成表２４００（図４）と同様に、インデックスによって経路両端の入出力を表現され、それらの入出力をもつ経路の数は経路数２３０６に格納される。図７に示す例では、セッション番号は１００１としている。ＪＰＥＧ復号化処理を図３で示すシステム構成で連続的に行なう場合は、セッション番号が例えば１００２、１００３、・・・と変化していく。また、図１で示すシステム上にサービス番号１０４で表わされるＩＤＣＴのサービスを提供可能な別の演算部３９が存在した場合は、演算部番号３４が３９である別の処理経路表を生成する場合もある。
【００４７】
（第１実施形態）
（制御部の構成）
図８は、第１実施形態の制御部２０の内部構成を示す図である。
制御部２０は、サービス取得部２１、処理経路決定部２２、及び、演算部情報取得部２３の３つの制御モジュールから構成される。サービス取得部２１は、要求されたタスクを解析し、タスク構成情報を用いて、タスクを構成するサービスを取得する。演算部情報取得部２３は、接続された演算部の静的あるいは動的情報を取得し、演算部情報として管理する。処理経路決定部２２は、タスク構成情報と演算部情報から、タスクを分散処理するための演算部と演算部間の処理経路を定義した処理経路情報を決定する。各制御モジュール間の接続は、バス状、円環状、階層状などいずれでも構わない。
【００４８】
図９は、第１実施形態における制御部２０の内部構成を含む分散処理システム全体の構成を示す図である。以下では、サービス取得部２１を処理要求部１０と通信する上位層とし、演算部情報取得部２３を演算部と通信する階層とし、処理経路決定部２２を中間層とした階層構造をとる例について説明する。
【００４９】
また、以下の説明では、各制御モジュールは汎用プロセッサ上で動作するソフトウェアとしているが、同様の機能を提供するＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などのハードウェアや提供する機能によって配線を書き換え可能なリコンフィギャラブルプロセッサであってもよい。また処理経路として、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）プロトコルを用いたネットワークを前提として説明するが、その他のプロトコルを使用するネットワークであってもよいし、プロセッサシステムにおけるＡＭＢＡ（規格）などのバスやＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）、シリアルＡＴＡ（Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）、あるいはＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）といったインタフェースでもよい。
【００５０】
図１０は、各制御モジュールを配置する物理的なネットワークを示す図である。
ルータ２９００下の同一サブネット上に計算機２９０１、２９０２、２９０３、．．．、２９０Ｐが順に配置され、それぞれが異なるＩＰアドレスを取得している。同様に、ルータ２９１０下の同一サブネット上に計算機２９１１、２９１２、２９１３、．．．、２９１Ｓが順に配置され、それぞれが異なるＩＰアドレスを取得している。ここで、ＩＰアドレスの末尾のＰ及びＳは、２以上のルータが接続しうる計算機の数と同一又はそれ未満の自然数とする。
【００５１】
ルータ２９００とルータ２９１０は互いに接続されている。ここでは、計算機２９０１がサービス取得部２１を動作させ、計算機２９０２が処理経路決定部２２を動作させ、計算機２９０３が演算部情報取得部２３を動作させる。計算機２９０１、２９０２、２９０３は、それぞれ表１で示すＩＰアドレスを持つものとする。ただし、各制御モジュールは、異なるサブネット上の計算機２９１１、２９１２、．．．、２９１Ｓに配置してもよい。
また、以下すべての実施例において、特に断りのない限り、一つの計算機には一つ以上の制御モジュールは配置しないこととする。
【００５２】
【表１】
2011203867.tif 000003
【００５３】
（処理手順）
図１１は、図９のシステム構成におけるＪＰＥＧ復号化処理の処理順序を示す図である。ここでは、簡単のため、復号化するＪＰＥＧファイルは演算部３１上にあるものとし、処理対象となるＪＰＥＧファイル名は演算部３１に通知されているものとする。
【００５４】
順序１００では、処理要求部１０が、サービス取得部２１に対して、処理要求としてＪＰＥＧ復号化処理のタスク番号１００を与える。サービス取得部２１はタスク構成表２４００を用いて対応するサービス番号列と処理経路に関する情報を抽出する。
【００５５】
順序１０１では、抽出した情報を処理経路決定部２２に送信する。さらに順序１０２では、処理経路決定部２２は抽出した情報を演算部情報取得部２３に転送する。順序１０３では、演算部情報取得部２３は、静的情報表１９００（図５）を使って、サービスを提供可能な演算部を決定した後で、処理経路決定部２２に返信する。
【００５６】
順序１０４では、処理経路決定部２２は、演算部情報取得部２３に対して、サービスを提供可能な演算部について処理経路の決定に必要な演算部状態に関する情報を要求する。
【００５７】
順序１０５では、演算部情報取得部２３は、動的情報表２０００（図６）を用いて、演算部状態に関する情報を抽出し、処理経路決定部２２に返信する。処理経路決定部２２は、順序１０５で得た演算部情報に関する情報をもとに、予め定めた処理経路決定方法に従い、処理経路表２３００を生成する。ここでは、処理経路決定方法として、実行しているセッションの数が最も少ない演算部を演算部番号の若い順に選択する方法を使用し、処理経路決定部２２は、順序１０４において、順序１０３で得た演算部それぞれが実行しているサービスの数を要求する。
【００５８】
順序１０６では、処理経路決定部２２は、処理経路表２３００（図７）を演算部情報取得部２３に送信する。さらに、順序１０７では、演算部情報取得部２３は、処理経路表２３００に記載された演算部３１、３２、３３、３４、３５、３６、３７のすべてに処理経路表２３００を配信する。処理経路表２３００が配信された各演算部は、処理経路表２３００に基づき、出力側の演算部から入力側の演算部に対して処理経路を接続する。
【００５９】
順序１０８では、演算部情報取得部２３に対して処理経路接続完了を返信する。演算部情報取得部２３は、演算部３１、３２、３３、３４、３５、３６、３７のすべてから処理経路接続完了を受信すると、データ処理を開始可能であると判断して、順序１０９において、処理経路の先頭の演算部３１に対して処理開始要求を送信する。
【００６０】
順序１１０では、各演算部は、所定のデータ処理を完了すると演算部情報取得部２３に処理完了を送信する。順序１１１では、演算部情報取得部２３は、演算部３１、３２、３３、３４、３５、３６、３７のすべてから処理完了を受信したら、処理経路決定部２２に処理完了を発行する。
【００６１】
順序１１２では、処理経路決定部２２は、サービス取得部２１に対して処理完了を転送し、順序１１３では、サービス取得部２１は、処理要求部１０に対して処理完了を転送し、すべての処理を完了する。
【００６２】
制御モジュールを起動するときの制御モジュール間の接続の確立方法としては、次の（１）、（２）が考えられる。
（１）主となる制御モジュールが、他のすべての制御モジュールに対して接続要求を配信し、従となる制御モジュールがそれに応答して、接続を確立する方法
（２）他のすべての制御モジュールに対する接続要求を配信せずに、互いの接続先情報を固定とし、主となる制御モジュールが従となる制御モジュールと直接接続を確立する方法
【００６３】
主となる制御モジュールは、各接続における、（Ａ）上位階層側の制御モジュール、（Ｂ）下位階層側の制御モジュールなどに設定する。
上位階層側の制御モジュールを主とした場合、（ｉ）サービス取得部２１を主とし、処理経路決定部２２を従とする、あるいは、（ｉｉ）処理経路決定部２２を主とし、演算部情報取得部２３を従とする。
【００６４】
制御モジュールの主従の設定は、システム起動時だけでなく、処理経路決定方法を変更した処理経路決定部２２など、制御モジュールを再起動するときも上述の方法を適用して行うことができる。この場合は、主となる制御モジュールを、（Ｃ）再起動した制御モジュールとしてもよい。
【００６５】
各制御モジュールは、互いの接続関係を分散コントローラ接続情報として保持し、制御モジュールの主従を規定している。表２に分散コントローラ接続情報の構成例として、図９の階層関係を持つシステムにおける処理経路決定部２２の制御モジュール接続表を示す。制御モジュール接続表は、固定情報として制御モジュール内部に保持していてもよいし、制御モジュールの外部からユーザーなどが指定して書き換え可能としてもよい。
【００６６】
【表２】
2011203867.tif 000004
【００６７】
図１２は、第１実施形態の制御モジュールの起動シーケンスを示す図である。図１２は、（１）の方法、すなわち、「主となる制御モジュールが、他のすべての制御モジュールに対して接続要求を配信し、従となる制御モジュールがそれに応答して、接続を確立する方法」における基本的な起動シーケンスを示す。ここでは、（１）の方法を使用して接続を確立する。
【００６８】
手順１４０では、従となる制御モジュールが、自身の起動後にモジュール番号を他のすべての制御モジュールに通知する。ただし、手順１４０よりも先に、後述の手順１２０の接続要求を受信したときは、通知を発行しないでもよい。この通知を起動通知と呼ぶ。モジュール番号については後述する。また、主となる制御モジュールが接続要求を全制御モジュールに対して一定間隔で発行すれば、従となる制御モジュールが後から起動しても、主となる制御モジュールからの起動通知の発行を省略することができる。
【００６９】
手順１２０では、主となる制御モジュールが、全制御モジュールに接続を要求する。ここで、接続要求を受信する制御モジュールの接続先の情報は既知とする。主となる制御モジュールは、接続要求時に制御モジュール情報を同時に配信する。
【００７０】
ここで、制御モジュール情報について説明する。図１３は、制御モジュール情報の構成例を示す図である。
制御モジュール情報２１００は、モジュール番号２１０１、モジュール構成２１０２、起動時刻２１０３、接続先情報２１０４を含む。モジュール番号２１０１は、制御モジュール固有の番号である。自モジュールのモジュール番号は各制御モジュールが保持している。
【００７１】
モジュール構成２１０２は、ハードウェアアーキテクチャ、ＯＳ、メモリ容量その他のモジュール構成に関する情報である。起動時刻２１０３は、モジュール番号２１０１に対応する制御モジュールの起動時刻である。接続先情報２１０４は、通信相手となる制御モジュールとの制御情報の通信に使用する接続先の情報である。例えば、ＩＰアドレス、ポート番号やチャネル番号の情報などである。接続先情報は実行時に決定してもよいし、固定の情報でもよい。また、この接続先情報は、制御モジュール間の接続を確立するために使用する接続要求の接続先と同じである必要はない。
【００７２】
つづいて、手順１２１では、従となる制御モジュールが主となる制御モジュールからの接続要求を受けて、主となる制御モジュールに接続するかどうか判断する。主となる制御モジュールに接続するかどうかは、制御モジュール接続表と、受信した制御モジュール情報２１００と、を用いて、自分と接続関係にある制御モジュールであるかどうか判断する。例えば、図９に示すシステムでは、演算部情報取得部２３もサービス取得部２１からの接続要求を受信するが、接続する必要がないと判断する。
【００７３】
手順１２２では、主となる制御モジュールを接続する自接続先の情報を取得する。
手順１２３では、従となる制御モジュールが、主となる制御モジュールに接続応答を返信する。接続応答には、手順１２２で取得した接続先情報を含む。また、接続応答には、主となる制御モジュールと従となる制御モジュールの双方の制御モジュール情報２１００を含む。ここで、接続応答を受信する接続先の情報は既知とする。また、この接続先情報は、接続要求の通信に用いた接続先情報と同様に、制御モジュール間の接続を確立するために使用するものであり、制御情報の通信に用いる通信路の接続先情報とは異なっていてよい。
【００７４】
手順１２４では、主となる制御モジュールが従となる制御モジュールに接続するか判断する。従となる制御モジュールに接続するかどうかは、制御モジュール接続表と、受信した制御モジュール情報２１００と、を用いて、自分と接続関係にある制御モジュールであるかどうか判断する。
【００７５】
手順１２５では、従となる制御モジュールを接続する自接続先の情報を取得する。
手順１２６では、手順１２３で受信した従となる制御モジュールの接続先情報を使用して、従となる制御モジュールに接続する。
【００７６】
手順１２７で、主となる制御モジュールと従となる制御モジュールとの間で制御情報を通信するための通信路を確立する。
手順１２８では、主となる制御モジュールが従となるモジュールに、自制御モジュール情報を送信する。
【００７７】
手順１２９では、主となる制御モジュールが従となる制御モジュールの情報を使って制御モジュール管理表を更新し、自制御モジュールに接続された制御モジュールの情報を管理する。図１４は、制御モジュール管理表の構成例を示す図である。制御モジュール管理表２２００は、自制御モジュールに接続されたＭ個の制御モジュールの数を表わす接続数２２０１と、自制御モジュール情報２１００−０を含む各制御モジュールの制御モジュール情報２１００−０、２１００−１、．．．、２１００−Ｍから構成されている。ここで、Ｍは自然数である。より具体的には、手順１２９では、制御モジュール管理表に制御モジュール情報を追加し、接続数を更新する。
【００７８】
手順１３０では、従となる制御モジュールも制御モジュール管理表の制御モジュール情報を更新する。
【００７９】
また、（２）の方法、すなわち、「他のすべての制御モジュールに対する接続要求を配信せずに、互いの接続先情報を固定とし、主となる制御モジュールが従となる制御モジュールと直接接続を確立する方法」では、例えば、主となる制御モジュールは従となる制御モジュールの接続先をあらかじめ待ち状態として、主となる制御モジュールが直接、従となる制御モジュールに接続し、制御モジュール情報を交換する。また、上記（１）の方法、（２）の方法に限らず、任意の制御モジュール間の接続を確立し、制御モジュール情報を交換できるならば他の方法であっても構わない。
【００８０】
また、モジュール間の接続が通信路の不具合で切断された場合、図１４で示された制御モジュール管理表を用いて、再接続を試みることができる。ここでは、制御モジュールには不具合はないものとする。
【００８１】
図１５を参照して再接続について説明する。図１５は、制御モジュールの再接続のシーケンスを示す図である。
順序１３１では、主となるモジュールが従となる制御モジュールとの切断を検知する。例えば、最も単純には、データ送信ができないことで検知できる。
順序１３３では、主となる制御モジュールが、制御モジュール管理表から従となる制御モジュールの接続先を特定する。順序１３３と同時に、順序１３４では、従となるモジュールが主となる制御モジュールとの切断を検知する。
【００８２】
順序１３６では、従となる制御モジュールが、制御モジュール管理表から主となる制御モジュールの接続先を特定し、その後、主となる制御モジュールからの接続を待ち受ける。
順序１３７で、主となる制御モジュールは従となる制御モジュールに接続する。
順序１３８で、主となる制御モジュールと従となる制御モジュールとの間で制御情報を通信するための通信路を再度確立する。
図１５の再接続シーケンスによれば、制御モジュール管理表を用いることで、図１２のシーケンスを大幅に省略しながら、再接続を試みることができる。
【００８３】
（作用・効果）
第１実施形態の制御部２０（分散コントローラ）、分散処理システム、及び、これらを用いた分散処理方法の作用・効果について説明する。
処理経路決定部２２を、別の処理経路決定方法を提供できる処理経路決定部に変更する場合や処理経路決定部が実行されている計算機が故障した場合を考える。各制御モジュールがソフトウェアで実現されている場合、変更にはモジュールの再起動、または、計算機の再起動が伴う。ハードウェアで実現されている場合でもチップの再起動などが必要である。ここで、計算機を再起動しなければならないとした場合、同一の計算機上で全制御モジュールが実行されていれば、すべての制御モジュールを再起動しなければならない。
【００８４】
これに対して、第１実施形態の分散コントローラ及び分散処理システムでは、各制御モジュールが異なる計算機上に配置されており、制御モジュールは分散コントローラ接続情報と接続要求により、順不同で起動できる。したがって、処理経路決定部２２だけを更新対象とすることができ、計算機２９０２だけを再起動することができるため、システム全体に影響を及ぼすことがなく、保守性が向上する。計算機を再起動する必要がなくても、変更を加えた制御モジュールだけを再起動することができ、保守性が向上する。
【００８５】
さらに、制御モジュール間での通信に障害が生じた場合、制御モジュール管理表２２００を用いて、再接続を試みることができる。一時的な通信障害など、再起動の必要ない場合は自動で再接続させることで、保守性が向上する。
【００８６】
なお、制御モジュールは計算機上に複数配置されていても動作するし、すべて同一の計算機上に配置されても動作する。同一の計算機上に起動されていても、制御モジュールごとの保守は可能で、保守性は向上するが、計算機そのものが故障した場合はすべて利用不可となるため、すべての制御モジュールが異なる計算機上に配置されるものとしている。
【００８７】
（第２実施形態）
図１６は、第２実施形態の制御部２２０（分散コントローラ）の内部の構成を含む分散処理システム全体の基本構成を示す図である。
制御部２２０には、制御モジュールとしての、サービス取得部２１、処理経路決定部２２、及び演算部情報取得部２３に加えて、各制御モジュールの機能や状態を管理する管理部２５１、２５２、２５３を設けている。これらの管理部は特殊な制御モジュールとして定義される。ここでは、各制御モジュールが提供する機能に従って、別個の管理部を割り当てる。具体的には、管理部２５１はサービス取得部２１を管理し、管理部２５２は処理経路決定部２２を管理し、管理部２５３は演算部情報取得部２３を管理する。
【００８８】
表３に拡張したモジュール番号の構成を示す。なお、接続上限は、場合によっては制御モジュールの種類に従って個別に定義してもよいが、以下ではすべての制御モジュールで共通の上限とする。また、管理部フラグ、機能分類、機能番号については各制御モジュールが提供する機能によって定まり、制御モジュール内部に保持している。接続上限は内部に保持していてもよいし、ユーザーなどが外部から設定してもよい。また、シリアル番号は同一機能を提供する制御モジュールと重複しないように内部に保持していてもよいし、実行時に決定してもよい。
【００８９】
【表３】
2011203867.tif 000005
【００９０】
以降、モジュール番号を、管理フラグ−機能分類−機能番号／接続上限−シリアル番号の形式で示す。表４は、図１６の各制御モジュールに与えられる番号を示す。
例えば、接続上限が４のサービス取得部に対する管理部で、最初に起動しシリアル番号が０のモジュール番号は、１−１−４−０で与えられる。
また、未定義の番号はＸで表わすこととする。例えばシリアル番号が振られていないモジュールは０−２−１−Ｘなどとなる。
さらにまた、制御モジュールの集合を表わす場合もＸを使用する。例えば、０−２−Ｘ−Ｘとすれば、管理部ではない処理経路決定部の集合を表わす。
【００９１】
【表４】
2011203867.tif 000006
【００９２】
図１６で示すシステムの各制御モジュールは、表５に示す制御モジュール接続表を分散コントローラ接続情報として保持し、主となる制御モジュールと従となる制御モジュールをモジュール番号で定義している。
【００９３】
【表５】
2011203867.tif 000007
【００９４】
表５で示された主となるモジュールは、図１２の起動シーケンスに従って、制御モジュール情報を全制御モジュールに配信し、接続を要求する。従となるモジュールは主となる制御モジュールからの接続要求に応答して、接続を確立し、制御モジュール情報をそれぞれ交換する。接続先情報が固定である場合は、従となる制御モジュールが主となる制御モジュールと直接接続を確立する。
【００９５】
図１７は、処理経路決定部２２を主とし、管理部２５２を従とした場合の接続手順を説明する図である。ここでは、処理経路決定部２２がもつ処理経路決定方法は、機能番号１１１１で表わす。また、管理部２５２の接続上限は４とする。
【００９６】
順序２００では、処理経路決定部２２は起動時刻を取得する。例えば、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）やＮＴＰ（Ｎｅｔｗｏｒｋ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌ）サーバーを使用して取得してもよいし、共通の時計をシステム内に保持していてもよい。ここでは、基準時間からの差分をミリ秒単位で表わし、１００とする。
【００９７】
順序２０１では、処理経路決定部２２はシリアル番号の調停を行ない、シリアル番号を決定する。ここでは、ほかに処理経路決定部が起動していないものとして、シリアル番号を０とする。例えば、処理経路決定部間で保持するトークンを設け、トークンを保持したときに、起動している処理経路決定部からシリアル番号を回収する。そして空いている番号をシリアル番号としてつけ、トークンを解放する。
【００９８】
管理部２５２も、処理経路決定部２２に対する順序２００、２０１と同様に、順序２０２、２０３において起動時刻の取得とシリアル番号の調停を行い、起動時刻を１０１とし、シリアル番号を０とする。
【００９９】
順序２０４では、管理部２５２は、他のすべての制御モジュールに起動通知を送信する。管理部２５２が処理経路決定部２２からの接続要求を起動通知よりも先に受信すれば、順序２０４は省略できる。
【０１００】
順序２０５では、処理経路決定部２２は、自制御モジュール情報として、モジュール番号とモジュール構成を取得する。ただし、ここで、接続先情報は確定していない。
順序２１０では、処理経路決定部２２は、管理部２５２を含む全制御モジュールに制御モジュール情報を送信し、接続を要求する。接続要求を受信する管理部２５２の接続先の情報はシステム全体で共有とし、処理経路決定部２２以外からの接続要求も受け付ける。
【０１０１】
順序２２０では、管理部２５２は、処理経路決定部２２からの接続要求を受け付けると、制御モジュール接続表を使って接続するかどうかを判断する。管理部２５２は、接続管理情報の接続数が接続上限の４に達しないことを確認し、処理経路決定部２２との接続を決定する。
【０１０２】
順序２２５では、管理部２５２は、自制御モジュール情報として、モジュール番号とモジュール構成を取得する。さらに、管理部２５２は、順序２２７で接続先情報を確定する。例えば、ＩＰアドレス及びポート番号を１９２．１６８．１００．２５２：５００２２とする。その後、管理部２５２は、処理経路決定部２２からの接続を順序２２７で取得した接続先で待機する。
【０１０３】
順序２３０では、管理部２５２は、処理経路決定部２２に制御モジュール情報を送信し、応答とする。この応答には、順序２１０で受信した処理経路決定部２２の制御モジュール情報を含む。
順序２３５では、処理経路決定部２２は、制御モジュール接続表を用いて、管理部２５２が接続先として定義されているかどうかを確認し、接続を判断する。
【０１０４】
順序２４０では、処理経路決定部２２は、管理部２５２と接続する自接続先情報を取得する。例えば、ＩＰアドレス及びポート番号を１９２．１６８．１００．２２：５０２５２とする。
順序２５０では、処理経路決定部２２は、順序２３０で取得した管理部２５２の接続先情報と、順序２４０で取得した自接続先情報とを使って、管理部２５２に接続する。
順序２７０では、処理経路決定部２２と管理部２５２との接続を確立する。
【０１０５】
順序２９０では、処理経路決定部２２は、管理部２５２に接続先情報を送信する。
順序３００では、処理経路決定部は、管理部２５２に関する制御モジュール情報を制御モジュール管理表２２００に追加し、接続数を更新する。
順序３００と同様に、順序３１０では、管理部２５２は、処理経路決定部２２に関する制御モジュール情報を制御モジュール管理表２２００に追加し、接続数を更新する。
【０１０６】
図１８は、図１７の全シーケンス終了後の管理部２５２が保持する制御モジュール情報を示す図である。管理部同士の接続は省略している。
先頭には接続されたモジュール数として１が保持されている。次に制御モジュール情報が接続順に保持されている。自制御モジュール情報が先頭に、接続した処理経路決定部２２の制御モジュール情報が次に制御モジュール情報１として保持されている。
【０１０７】
管理部２５１を主とし、管理部２５２を従とする場合や、管理部２５２を主とし、管理部２５３を従とする場合も、図１７に示すシーケンスと同様のシーケンスで制御モジュール情報を交換し、制御モジュール管理表２２００を更新する。制御モジュールを追加する場合は、自接続先情報と接続相手の制御モジュール情報を追加し、接続数を増やして、制御モジュール管理表２２００を更新する。制御モジュールと切断した場合は、制御モジュール情報を削除し、接続数を減らして、制御モジュール管理表を更新する。
【０１０８】
図１８のシステムにおいて、さらに処理経路決定部２４を追加で起動する場合について説明する。図１９は、拡張した制御部３２０の内部構成を含む分散処理システム全体の基本構成を示す図である。
【０１０９】
図１９の制御部３２０（分散コントローラ）では、図１６に示す制御部２２０に対して、処理経路決定部２４と演算部情報取得部２３１、２３２、２３３、２３４、２３５の６つの制御モジュールを追加している。
【０１１０】
処理経路決定部２４がもつ処理経路決定方法は、機能番号２２２２で表わされる。処理経路決定部２４も図１７のシーケンスに基づいて管理部２５２と接続する。順序２０１で取得するシリアル番号はすでに処理経路決定部２２が起動しているため１となる。
また、順序２２７で管理部２５２は、処理経路決定部２２と異なる接続先情報を処理経路決定部２４に提供する。例えば、ＩＰアドレス及びポート番号を１９２．１６８．１００．２５２：５００２４とする。順序２３０から発行する応答は、シリアル番号で他の処理経路決定部２２に対する応答と識別することができる。従って、処理経路決定部２４が処理経路決定部２２と全く同一の機能番号１１１１で表わされる処理経路決定方法を提供していてもよい。
【０１１１】
図２０は、処理経路決定部２４が接続された後の管理部２５２の制御モジュール管理表を示す図である。この制御モジュール管理表は、制御モジュール１〜４として、自制御モジュールのほか、処理経路決定部２２、管理部２５１、管理部２５３、処理経路決定部２４の４つの制御モジュール情報を保持している。
【０１１２】
一方、図１９に示す分散処理システムにおいて、演算部情報取得部２３は、静的情報を取得する演算部情報取得部２３１と、動的情報を取得する演算部情報取得部２３２、２３３、２３４、２３５と、の５つに分割され、管理部２５３で管理される。例えば、動的情報として、演算部情報取得部２３２はメモリの使用率を、演算部情報取得部２３３は消費電力量を、演算部情報取得部２３４は入出力速度を、２３５は実行セッション数を、それぞれ取得するものとする。
【０１１３】
図２１は、図１９のシステム構成におけるＪＰＥＧ復号化処理の処理順序を示す図である。簡単のため、復号化するＪＰＥＧファイルは演算部３１上にあるものとし、処理対象となるＪＰＥＧファイル名は演算部３１に通知されているものとする。
【０１１４】
順序３００では、処理要求部１０が処理経路決定方法を指定した情報を選択条件として管理部２５１に送信する。例えば、処理経路決定部２４の機能番号を含む情報を送信する。
順序３０１では、管理部２５１は管理部２５２に選択情報を転送する。管理部２５２は選択条件を設定し、順序３０２で設定完了を管理部２５１に返信する。
順序３０３で管理部２５１は設定完了を処理要求部１０に転送する。
【０１１５】
順序３００から順序３０３までで、管理部２５２に処理経路決定部を選択する選択条件を設定している。この選択条件は処理要求部１０から指定するほかに、例えば演算部情報取得部２３１、２３２、２３３、２３４、２３５を介して取得した演算部の状態をもとにシステム内部で定めるなど、実行時に自動的に決めてもよいし、管理部２５２の固定情報として内部に保持していても構わない。
【０１１６】
順序３０４では、処理要求部１０が、管理部２５１に処理要求として、ＪＰＥＧ復号化処理のタスク番号１００を与える。管理部２５１に接続されている管理部以外の制御モジュールはサービス取得部２１だけなので、順序３０５では、管理部２５１がサービス取得部２１を選択し、タスク番号を転送する。
【０１１７】
順序３０６では、サービス取得部２１は、タスク構成表２４００を用いて対応するサービス番号列と処理経路に関する情報を抽出する。その後、抽出した情報を管理部２５１に送信する。
順序３０７で、管理部２５１は管理部２５２に抽出した情報を転送する。
【０１１８】
順序３０８では、管理部２５２は、順序３００、３０１、３０２、３０３で予め設定された設定条件に従って、処理経路決定部を選択する。ここでは、処理経路決定部２４にサービス番号列と処理経路に関する情報を転送する。従って、処理経路決定部２２は使用されないが、選択条件を変えることで、柔軟に処理経路決定方法を変更することが可能となる。
【０１１９】
処理経路決定部２４は、処理経路の決定に必要な静的演算部情報を選択し、順序３０９で、サービスを提供可能な演算部についての静的演算部情報の取得要求を管理部２５２に返信する。
順序３１０では、管理部２５２が、取得要求を管理部２５３に転送する。
順序３１１では、管理部２５３が、取得要求から、静的演算部情報を取得できる演算部情報取得部２３１を選択し、取得要求を転送する。
【０１２０】
順序３１２では、演算部情報取得部２３１が、静的情報表１９００をもとに処理経路決定部２４から要求された静的演算部情報を取得し、管理部２５３に返信する。演算部情報取得部２３１は演算部３１、３２、３３、３４、３５、３６、３７、．．．、３Ｎが起動したときに静的演算部情報を取得し、静的情報表を更新している。
順序３１３では、管理部２５３が管理部２５２に静的演算部情報を転送する。さらに、順序３２６で、管理部２５２が再度処理経路決定部２４を選択し、静的演算部情報を転送する。処理経路決定部２４は、処理経路の決定に必要な動的演算部情報を決定している。本例では、実行セッション数を動的演算部情報として取得する。演算部情報取得部２３１からの静的演算部情報を元に使用可能な演算部が選択される。
【０１２１】
順序３２７で、選択された演算部について先に決定しておいた動的演算部情報の取得要求を管理部２５２に送信する。
順序３１４で、管理部２５２は取得要求を管理部２５３に転送し、管理部２５３は実行セッション数を取得可能な動的演算部情報取得部２３５を選択する。
【０１２２】
順序３１５で管理部２５３は、動的演算部情報取得部２３５に取得要求を転送し、動的演算部情報取得部２３５は指定された演算部に関して、動的情報表２０００をもとに、実行セッション数を取得する。動的演算部情報取得部２３２、２３３、２３４、２３５は任意のタイミングで演算部から演算部情報を取得し、動的情報表２０００を更新することができる。
順序３１６では、動的演算部情報取得部２３５は、取得した動的演算部情報を管理部２５３に返信する。
順序３１７では、管理部２５３は、管理部２５２に動的演算部情報を転送する。さらに、順序３２８では、管理部２５２が再度処理経路決定部２４を選択して、取得した動的演算部情報を転送する。処理経路決定部２４は、取得した動的演算部情報をもとに演算部を選択し、演算部間の経路を決定して、処理経路表２３００を生成する。
【０１２３】
順序３２９では、処理経路決定部２４が管理部２５２に生成した処理経路表を送信する。
順序３１８では、管理部２５２は、処理経路表２３００を管理部２５３に転送する。
順序３１９では、処理経路表２３００に記載された演算部３１、３２、３３、３４、３５、３６、３７のすべてに処理経路表２３００を配信する。各演算部は処理経路表２３００に基づき、出力側の演算部から入力側の演算部に対して処理経路を接続する。
【０１２４】
順序３２０では、各演算部が管理部２５３に対して処理経路接続完了を返信する。管理部２５３は、演算部３１、３２、３３、３４、３５、３６、３７のすべてから処理経路接続完了を受信すると、データ処理を開始可能であると判断する。
順序３２１では、処理経路の先頭の演算部３１に対して処理開始要求を送信する。
順序３２２では、各演算部は所定のデータ処理を完了すると管理部２５３に処理完了を送信する。
【０１２５】
順序３２３では、管理部２５３は、演算部３１、３２、３３、３４、３５、３６、３７のすべてから処理完了を受信したら、管理部２５２に処理完了を発行する。
順序３２４では、管理部２５２が管理部２５１に処理完了を転送する。
順序３２４と同様に、順序３２５では、管理部２５１は処理要求部１０に処理完了を転送し、すべての処理を完了する。
【０１２６】
（作用・効果）
第２実施形態の分散処理システムでは、管理部２５２が複数の処理経路決定部の機能と接続状態を制御モジュール管理表として管理し、選択条件によって、異なる処理経路決定部を使用することができる。これにより、再起動の必要がなくなるだけでなく、アルゴリズムごとの保守が可能となり、さらに、保守性が向上する。また、処理経路決定部２２と処理経路決定部２４が全く同じ機能を提供してもよい。処理経路決定部を多重化することで、どちらか一方が使用不可能になってもシステム運用が可能となり保守性が向上する。一方の機能だけを保守、更新することも可能となる。
【０１２７】
また、演算部情報取得部２３１、２３２、２３３、２３４、２３５のように、異なる情報を扱う制御モジュールを分離することで、制御モジュールが管理すべき情報を限定することにより、複雑な処理や大量の情報管理を実現する必要がなくなり、保守性が向上する。演算部情報については、処理経路決定方法によって求められる情報が異なる。すなわち、取得する情報ごとに細かく演算部情報取得部を分割すれば、それらの組合せを柔軟に変更することができ、さらに新しい演算部情報を取得しなければならない場合も、新しい演算部情報の取得に特化した制御モジュールだけをシステムを実行している間でも追加できる。したがって、最小限のコストでシステムを拡張することができ、新規開発も容易で、保守性が向上する。
【０１２８】
上記の例では、管理部は、制御モジュールの機能や取得する情報の種類によって分類し、分類ごとに管理部を設けたが、制御モジュールを横断的に管理したい場合は、管理部の数を減らし、制御モジュールの情報を集約して管理してもよい。図２２は、管理部を一つに集約した制御部３７０を含む分散処理システムの構成を示す図である。集約された管理部２５１０は、すべての制御モジュールについて、どの制御モジュールに処理を割り当てるかを判断し、選択する。
【０１２９】
図２２の構成に対して、図２１に示すように、管理部２５２と管理部２５３との通信頻度が高いことから２つの管理部だけを統合して、通信を管理部内部で行なうようにしてもよい。または、機能の少ない管理部２５１を管理部２５２と統合しても保守が煩雑にならなければ、管理部２５１と管理部２５２を統合した構成も考えられる。
なお、その他の構成、作用、効果については、上述の実施形態と同様である。
【０１３０】
（第３実施形態）
図２３は、第３実施形態における制御部４２０内部の構成を含む分散処理システム全体の構成を示す図である。
図２３に示す分散処理システムの制御部４２０（分散コントローラ）は、図１６の制御部２２０に管理部２５４を追加したものである。管理部２５４は、管理部２５２と同様に処理経路決定部２２を管理する制御モジュールである。管理部２５４は、管理部２５１、管理部２５３、及び処理経路決定部２２と接続される。
【０１３１】
管理部２５４は、図１２のシーケンスに従って起動する。ここで、制御部４２０の各制御モジュールは、表５の制御モジュール接続表に従って互いに接続するものとする。
【０１３２】
図２３の分散処理システムは、図２１のシーケンスに従って処理を行なう。ただし、管理部２５１は順序３０７で管理部２５２か管理部２５４のいずれかを選択して、順序３０７の通信を行なう。選択条件は少なくとも同一セッション番号のタスク処理に関してはシステム全体で統一とし、管理部２５３が図２１の順序３１３、３１７、３２３で通信するときにも順序３０７における通信相手と同一の管理部を選択するようにする。例えば、起動時刻の古い方を選択する。同様に処理経路決定部２２、管理部２５１、２５３も同じ管理部を選択するものとする。
【０１３３】
図２４は、第３実施形態の各制御モジュールの故障時の対応の流れを示すフローチャートである。ここでは、管理部２５１及び管理部２５３が管理部２５２を使用しており、管理部２５２が故障した例を説明する。
【０１３４】
Ｓ１６０１で、管理部２５１または管理部２５３が管理部２５２の故障を検知する。故障は各通信手順の対をなす応答を設けて検出してもよい。例えば、図２１の順序３２３で管理部２５３が管理部２５２に対して通信をした直後に、管理部２５２が順序３２３−１として、順序３２３と対をなす応答をする。
【０１３５】
Ｓ１６０２では、管理部２５１または管理部２５３は、故障を検知すると、他の制御モジュールに故障を検知した制御モジュールのモジュール番号を、全制御モジュールに通知する。
Ｓ１６０３では、通知を受け付けた制御モジュールのうち、モジュール番号で示された制御モジュールが制御モジュール管理表に記載されている場合は、その情報を削除し、接続数を１減じる。ここでは、管理部２５１及び管理部２５３は、管理部２５２を制御モジュール管理表から削除する。
Ｓ１６０４では、故障していない他のモジュールを選択して処理を続ける。ここでは、管理部２５２の代わりに管理部２５４を選択する。
【０１３６】
また、図２１の順序３０７などで選択されなかった管理部２５４は、上記手順で故障を検出することができない。このため、例えば、主となる制御モジュールが定期的に接続確認を送信して、故障を検出してもよい。この場合、表５の制御モジュール接続表によれば、管理部２５２の主となる制御モジュールは管理部２５１であるから、管理部２５１が定期的に接続確認を送信して、その返信があるかどうかを検出する。管理部２５１は、管理部２５４の故障を検知すると、他の制御モジュールに故障を検知した制御モジュールのモジュール番号を全制御モジュールに通知する。管理部２５１及び管理部２５３は、管理部２５４を制御モジュール管理表から削除する。管理部２５４が故障しても管理部２５２の使用を継続できるため、順序３０７などでは引き続き管理部２５２を通信相手として選択する。
【０１３７】
（作用・効果）
第３実施形態の制御部４２０、分散処理システム、及び、これらを用いた分散処理方法では、管理部に関しても他の制御モジュールと同様に同一の機能をもつ制御モジュールをバックアップとして複数起動しておくことにより、耐障害性が高くなり、保守性を向上させることができる。
なお、その他の構成、作用、効果については、上述の実施形態と同様である。
【０１３８】
（第４実施形態）
図２５は、第４実施形態における制御部５２０の内部の構成を含む分散処理システム全体の構成を示す図である。
図２５に示す制御部５２０（分散コントローラ）では、新たな制御モジュールとして、起動部２６１及び起動部２６２を定義し、起動部２６１、２６２を管理部２５１、２５２、２５３に接続している。起動部は、指定された制御モジュールを起動することができる。従って、本システムがソフトウェアで実現されている場合は、制御モジュールの複製を指定すれば、バックアップの制御モジュールをシステムが自動的に起動することが可能となる。起動部は制御モジュールの一種であって、図１２の手順で起動し、制御モジュール管理表２２００で他のモジュールとの接続を管理される。
【０１３９】
以下、管理部２５２が起動部２６１及び起動部２６２を使って、制御モジュールの複製を生成する場合について説明する。
【０１４０】
管理部２５１、２５２、２５３はそれぞれ、制御モジュール管理表として、各管理部に接続することのできる制御モジュールの全数として接続上限を有している。さらに、詳細にモジュール番号で示される各制御モジュールが提供する機能に応じて、同じ機能を持つ制御モジュールをいくつまで持つことができるかを制限するものとする。接続の制限を規定する情報の例として、表６に管理部２５２における接続上限表を示す。ここで、管理部２５２の接続上限を２０とし、記載していない機能をもつ制御モジュールに関しては、接続上限を上回らない限りいくつでも接続することができるものとする。接続上限表が定義されない場合は、すべての制御モジュールを接続上限の範囲内で自由に接続できる。
【０１４１】
【表６】
2011203867.tif 000008
【０１４２】
また、管理部２５１、２５２、２５３は、共通で１つのトークンを保持する。このトークンは管理部間で送受信され、例えば、管理部２５１、管理部２５２、管理部２５３、管理部２５２、管理部２５１の順で循環させる。
【０１４３】
図２６は、管理部２５２の複製処理に関するフローチャートを示す図である。
管理部２５２は、ステップＳ４００で管理部２５１からトークンを受信したかどうかを判断する。受信していなければ（ステップＳ４００でＮ）、受信するまで待機する。受信したら（ステップＳ４００でＹ）、ステップＳ４０１に進む。
【０１４４】
ステップＳ４０１では、管理部２５２は、自制御モジュールを含む制御モジュール管理表上の全制御モジュールについて起動条件を判定したかどうかを判断する。管理部２５２が、すべての制御モジュールについて判定を完了したと判断した場合（ステップＳ４０１でＹ）、ステップＳ４０９に進む。
【０１４５】
管理部２５２が判定を完了していないと判断した場合（ステップＳ４０１でＮ）、ステップＳ４０２に進む。ステップＳ４０２では、管理部２５２は、接続されている全制御モジュールについて起動条件を満たしているかどうかを確認する。起動条件の判定は、例えば、該当する制御モジュールの複製を生成することで接続上限に達するかどうか、あるいは、起動時刻が基準時間を越えていないかなどを判断することにより行う。起動時刻は制御モジュール管理表２２００で管理しており、各管理部は以前に接続した制御モジュールの平均故障時間を取得している。平均故障時間の６０％を超えた制御モジュールについては、その複製を生成する。すべての制御モジュールが平均故障時間の６０％を超えており、接続上限に達している場合は、いくつかの制御モジュールを切断して、新たに制御モジュールを起動部に指定してもよい。接続上限に達することもなく、起動時刻が基準時間を越えていれば、起動条件を満たしているので、ステップＳ４０３へ進む（ステップＳ４０２でＹ）。
管理部２５２が、起動条件を満たしていないと判断した場合（ステップＳ４０２でＮ）は、次の制御モジュールの判定を行なう。
【０１４６】
ステップＳ４０３では、管理部２５２は制御モジュールの本体を取得できるかどうか確認する。複製の対象となる制御モジュールが自分自身であれば、自分自身の複製を生成し、制御モジュール本体を取得することができる。複製の対象が、自分以外の制御モジュールであって、制御モジュールを管理するサーバーなどから他の制御モジュールの複製を取得できる場合もある。制御モジュール本体を取得できる場合（ステップＳ４０３でＹ）は、管理部２５２は自分自身の複製を生成して、制御モジュール本体を取得するか、あるいは、サーバーなどから他の制御モジュールの制御モジュール本体を取得し（ステップＳ４０４）、ステップＳ４０５に進む。ステップＳ４０５では、管理部２５２は、取得した制御モジュール本体を起動部２６１または起動部２６２に送信し、ステップＳ４０８に進む。
【０１４７】
一方、ステップＳ４０３で制御モジュール本体を取得できない場合（ステップＳ４０３でＮ）は、複製したい制御モジュールを一意に規定することのできるモジュール番号を取得（ステップＳ４０６）し、ステップＳ４０７に進む。ステップＳ４０７では、取得したモジュール番号を起動部２６１または起動部２６２に送信し、ステップＳ４０８に進む。
【０１４８】
ステップＳ４０８では、管理部２５２は、起動した制御モジュールの複製から起動通知を受信したかどうか判断する。複製されたモジュールは確認信号として、起動通知を発行するものとする。ステップＳ４０８で、管理部２５２が起動通知を受信したら（ステップＳ４０８でＹ）、ステップＳ４０１に戻る。管理部２５２が起動通知を受信しなければ（ステップＳ４０８でＮ）、そのまま待機する。
【０１４９】
ステップＳ４０９では、管理部２５２は管理部２５３にトークンを送信して、管理部２５２の複製処理を終了する。トークンは一定時間を超過したら、複製処理を中断して、管理部２５３に強制的に送信するようにしてもよい。
【０１５０】
図２７は、起動部の複製処理に関するシーケンスを示す図である。
ステップＳ４２０では、起動部は、管理部から情報を受信したかどうかを判断する。起動部が情報を受信したら（ステップＳ４２０でＹ）、ステップＳ４２１に進む。起動部が情報を受信しなければ（ステップＳ４２０でＮ）、そのまま待機する。
【０１５１】
ステップＳ４２１では、起動部は、受信した情報が、制御モジュール本体かどうかを確認する。受信した情報が制御モジュール本体であれば（ステップＳ４２１でＹ）、ステップＳ４２４に進む。起動部が制御モジュール本体を受信していなければ（ステップＳ４２１でＮ）、ステップＳ４２２に進む。
【０１５２】
ステップＳ４２２では、起動部は、受信した情報が、モジュール番号かどうかを確認する。受信した情報がモジュール番号であれば（ステップＳ４２２でＹ）、ステップＳ４２３に進む。受信した情報がモジュール番号でなければ（ステップＳ４２２でＮ）、予期しない情報を受信したと判断し、処理を終了する。
【０１５３】
ステップＳ４２３では、起動部は、モジュール番号で指定される制御モジュール本体をサーバーなどから取得し、ステップＳ４２４に進む。
ステップＳ４２４では、起動部は、取得した制御モジュール本体を起動し、処理を終了する。なお、制御モジュールを起動することができるのは、起動部が動作している計算機上に限る。従って、例外的に、起動部と他の制御モジュールによって指定され、起動部によって起動された制御モジュールの複製は図１０のなかの同一計算機上で動作するものとする。
【０１５４】
図２８は、第４実施形態における複製処理後の制御部６２０の内部の構成を含む処理システム全体の構成を示す図である。
管理部２５２は、自分自身の複製を起動部２６１に指定し、処理経路決定部２２のモジュール番号を起動部２６２に指定したものとする。管理部２５２の複製を管理部２５４、処理経路決定部２２の複製を処理経路決定部２７とする。起動部２６２には、図２５上のすべての制御モジュールの複製を内部サーバー上に保持しており、それらの複製を自由に取得することができる。
【０１５５】
図２９は、起動部の複製処理後の制御部７２０を起動した分散処理システム全体の構成を示す図である。
ここでは、起動部２６２の複製を起動部２６３として起動している。起動部が複数存在する場合は、他の制御モジュールと同様の起動条件に従って、起動部の複製を起動させることができる。複製された制御モジュールは起動を通知し、他の制御モジュールと自律的に接続を行なう。
【０１５６】
（作用・効果）
第４実施形態の分散コントローラ、分散処理システム、及び分散処理方法では、起動部２６１、２６２を設けたことで、予め起動条件に従って、バックアップを自動的に起動することが可能となり、さらに保守性を向上させることができる。起動部を複数起動しておくことで、起動部自体のバックアップをとることも可能となる。
【０１５７】
また、トークンなどを使用して、複数の制御モジュールの複製を同時に起動させないことで、制御モジュールの起動中に接続先の情報が送受信されることによって接続先情報が受信できず、接続処理の漏れが発生することを防止し、故障が起こる可能性を低減し、保守性を向上している。
なお、その他の構成、作用、効果については、上述の実施形態と同様である。
【産業上の利用可能性】
【０１５８】
以上のように、本発明に係る分散コントローラ、分散処理システム、及び、分散処理方法は、制御部に高い保守性を求められる場合に有用である。
【符号の説明】
【０１５９】
１０    処理要求部
２０    制御部
２１    サービス取得部
２２    処理経路決定部
２３    演算部情報取得部
２４、２７    処理経路決定部
３１、３２、３３、３４、３５、３６、３７、．．．、３Ｎ  演算部
４０    タスク構成表
２２０  制御部
２３１、２３２、２３３、２３４、２３５  演算部情報取得部
２５１、２５２、２５３、２５４  管理部
２６１、２６２、２６３  起動部
３２０、３７０、４２０、５２０、６２０、７２０  制御部
２５１０  管理部
２９００  ルータ
２９０１、２９０２、２９０３、．．．、２９０Ｐ  計算機
２９１０  ルータ
２９１１、２９１２、２９１３、．．．、２９１Ｓ  計算機
【図１】
2011203867.tif 000009
【図２】
2011203867.tif 000010
【図３】
2011203867.tif 000011
【図４】
2011203867.tif 000012
【図５】
2011203867.tif 000013
【図６】
2011203867.tif 000014
【図７】
2011203867.tif 000015
【図８】
2011203867.tif 000016
【図９】
2011203867.tif 000017
【図１０】
2011203867.tif 000018
【図１１】
2011203867.tif 000019
【図１２】
2011203867.tif 000020
【図１３】
2011203867.tif 000021
【図１４】
2011203867.tif 000022
【図１５】
2011203867.tif 000023
【図１６】
2011203867.tif 000024
【図１７】
2011203867.tif 000025
【図１８】
2011203867.tif 000026
【図１９】
2011203867.tif 000027
【図２０】
2011203867.tif 000028
【図２１】
2011203867.tif 000029
【図２２】
2011203867.tif 000030
【図２３】
2011203867.tif 000031
【図２４】
2011203867.tif 000032
【図２５】
2011203867.tif 000033
【図２６】
2011203867.tif 000034
【図２７】
2011203867.tif 000035
【図２８】
2011203867.tif 000036
【図２９】
2011203867.tif 000037