(57)【要約】  本発明は、分散処理システムにおいて、より簡易な構成によってタスクを時分割で実行するマルチタスクを実現する。受信データをノード１間で中継することにより、各ノード１が発信したデータを他の全てノード１に転送する分散処理システムにおいて、各ノード１は、タスク切替命令に応答して、中継の対象となっているデータを待避し、データを発信するタスクをタスク切替命令で指示された切替先のタスクに切り替える。また、待避しておいた切替先のタスクのデータを復帰し当該データの中継を再開する。各ノード１では、複数のタスクのサブタスク１０１がマルチタスクで実行されており、各サブタスク１０１は、他のノード１から受信した、対応するタスクのデータの処理を行う。タスクのデータ待ちとなったサブタスク１０１は待機状態となって実行時間が削られ、その分多く、実行すべき処理のあるサブタスク１０１に実行時間が割り当てられる。
2018235180.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードをネットワークで接続した、複数のタスクを実行する分散処理システムであって、
各ノードに切替先のタスクの識別子を伴うタスク切替命令を一斉送信する制御部を備え、
前記各ノードは、
当該分散処理システムが実行する複数のタスク各々の部分であるサブタスクを、マルチタスクで実行するサブタスク実行部と、
各ノードのタスクのサブタスクが発信元となる、当該サブタスクが部分であるタスクのデータが、当該タスクのデータの発信元のサブタスクが実行されているノード以外の他の全てのノードに前記ネットワークを介して伝搬するように、前記ネットワークと前記タスクのデータの送受信を行うデータ送受信部と、
前記データ送受信部がネットワークから受信したタスクのデータを、当該タスクのサブタスクに転送するデータ取込部と、
前記タスク切替命令に応答して、前記ネットワークを介して伝搬するデータが、当該タスク切替命令に伴う識別子が示すタスクのデータに切り替わるように、前記データ送受信部の前記タスクのデータの送受信の動作を制御する伝搬データ切替部とを有することを特徴とする分散処理システム。
【請求項２】
複数のノードを備えた、複数のタスクを実行する分散処理システムであって、
各ノードに切替先のタスクの識別子を伴うタスク切替命令を一斉送信する制御部を備え、
前記各ノードは、
当該分散処理システムが実行する複数のタスク各々の部分であるサブタスクを、マルチタスクで実行するサブタスク実行部と、
タスクのサブタスクが発信元となるデータを、当該サブタスクが部分であるタスクのデータとして他のノードに送信する送信部と、
他のノードから受信したタスクのデータを、当該タスクのサブタスクに転送するデータ取込部と、
他のノードから受信したタスクのデータを、当該データが当該データの発信元のノードから他の全てのノードに順次転送されていくように、他のノードに中継するデータ転送部とを有し、
前記送信部は、前記タスク切替命令の受信に応答して、当該タスク切替命令に伴う識別子が示すタスク以外のタスクのデータの他のノードへの送信を停止し、
前記中継部は、前記タスク切替命令の受信に応答して、他のノードから受信した当該時点で他のノードに未中継のタスクのデータの中継を、当該データのタスクの識別子を伴う前記タスク切替命令を受信するまで延期することを特徴とする分散処理システム。
【請求項３】
請求項２記載の分散処理システムであって、
前記サブタスクは、転送されたデータの各々を処理対象のデータに含めて、各処理対象のデータに対して所定の処理を行うと共に、処理対象のデータ待ちの状態となったならば、待機状態に遷移し、
前記サブタスク実行部は、待機状態に遷移したサブタスクの実行時間を減少させ、他の遷移状態にないサブタスクの実行時間を増加することを特徴とする分散処理システム。
【請求項４】
請求項２または３記載の分散処理システムであって、
前記中継部は、前記タスク切替命令の受信に応答して、他のノードから受信した当該時点で他のノードに未中継のタスクのデータを、当該タスクの待避データとして保存すると共に、保存されている、当該タスク切替命令に伴う識別子が示すタスクの待避データの前記他のノードへの中継を行うことを特徴とする分散処理システム。
【請求項５】
請求項２、３または４記載の分散処理システムであって、
前記データ取込部は、前記タスク切替命令に応答して、他のノードから受信した当該時点でサブタスクに未転送のデータの、サブタスクへの転送を、当該データのタスクの識別子を伴う前記タスク切替命令を受信するまで延期することを特徴とする分散処理システム。
【請求項６】
複数のノードを備えた、複数のタスクを実行する分散処理システムであって、
各ノードに切替先のタスクの識別子を伴うタスク切替命令を一斉送信する制御部を備え、
前記各ノードは、
当該分散処理システムが実行する複数のタスク各々の部分であるサブタスクを、マルチタスクで実行するサブタスク実行部と、
タスクのサブタスクが発信元となるデータを、当該サブタスクが部分であるタスクのデータとして他のノードに送信する送信部と、
他のノードから受信したタスクのデータを、当該タスクのサブタスクに転送すると共に、当該データが当該データの発信元のノードから他の全てのノードに順次転送されていくように、他のノードに中継するデータ転送部とを有し、
前記送信部は、前記タスク切替命令の受信に応答して、当該タスク切替命令に伴う識別子が示すタスク以外のタスクのデータの他のノードへの送信を停止し、
前記データ転送部は、前記タスク切替命令の受信に応答して、当該時点で他のノードから受信しているデータを、当該タスクの待避データとして保存すると共に、保存されている、当該タスク切替命令に伴う識別子が示すタスクの待避データの前記サブタスクへの転送と前記他のノードへの中継を行うことを特徴とする分散処理システム。
【請求項７】
請求項２、３、４、５または６記載の分散処理システムであって、
ｎ（但し、ｎは２以上の任意の自然数）個の前記ノードをチャネルでリング状に接続したリングを複数有し、
各リングに含まれるノードの数は等しく、
前記各リングの各ノードは、当該ノードを送信側とするチャネルで、当該ノードを含むリング以外の各リングのノードと、同じリングに含まれる各ノードが、当該ノードを送信側とするチャネルで、他のリングの異なるノードにそれぞれ接続されるように、接続されており、
前記各ノードの前記データ転送手段は、当該ノードが含まれるリングの当該リングにおける接続上の順番が当該ノードの前の順番のノードに接続したチャネルから受信したタスクのデータを、当該ノードが含まれるリングの当該リングにおける接続上の順番が当該ノードの次の順番のノードに接続するチャネルと、当該ノードを送信側とするチャネルであって当該ノードが含まれるリング以外の他のリングのノードに接続するチャネルに送信することにより、前記他のノードから受信したタスクのデータの他のノードへの中継を行い、
前記送信部は、タスクのサブタスクが発信元となるタスクのデータを、当該ノードが含まれるリングの当該リングにおける接続上の順番が当該ノードの次の順番のノードに接続するチャネルと、当該ノードを送信側とするチャネルであって当該ノードが含まれるリング以外の他のリングのノードに接続するチャネルに送信することにより、前記タスクのデータの他のノードへの送信を行うことを特徴とする分散処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散処理システムにおけるタスク切替の技術に関するものである。
【背景技術】
【０００２】
分散処理システムとしては、タスクを分割したサブタスクを複数のノードに割り当て、各ノードにおいて割り当てられたサブタスクを並行処理する分散処理システムが知られている（たとえば、特許文献１）。【０００３】
また、分散処理システムとしては、各ノードを双方向のチャネルでリング状に接続してリング型のネットワークを構成し、各ノードにおいてリングに沿ってデータを順次中継していくことにより、発信元のノードがリングに送出したデータを他の全てのノードに転送する分散処理システムも知られている（たとえば、特許文献２）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３-２３４９９号公報
【特許文献２】国際公開第２００５／０７３８８０号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
コンピュータシステムをマルチタスクで運用すると、以下のようなメリットを享受できる。
（１）I/O待ちなど処理待ちになったときに他のタスクを実行することでコンピュータシステムの使用効率を向上させることができる。
（２）キューイングの必要が無いので、長い処理の投入後に短い処理が発生した場合でも、短い処理が短時間で完了する。
（３）トラブルタスクを容易に停止させることができる。
一方、上述のような分散処理システムにおいて、タスクを時分割で実行することによりマルチタスクを実現する場合には、次のような問題が生じる。
すなわち、この場合には、各ノードにおいてタスクのサブタスクが非同期で実行されているため、各ノードにおけるサブタスクの処理間に不整合が生ぜず、タスクが効率良く行われるようにタスクを切り替えるためには、各ノードのサブタスクの状態を集中管理し、各ノードのサブタスクの状態に応じて、各ノードに割り当てるサブタスクを切り替える複雑な制御が必要となると共に、当該制御のためのオーバーヘッドが生じる。【０００６】
そこで、本発明は、分散処理システムにおいて、より簡易な構成によって、タスクを時分割で実行するマルチタスクを実現することを課題とする。
【課題を解決するための手段】
【０００７】
前記課題達成のために、本発明は、複数のノードをネットワークで接続した、複数のタスクを実行する分散処理システムに、各ノードに切替先のタスクの識別子を伴うタスク切替命令を一斉送信する制御部を備えると共に、前記各ノードに、当該分散処理システムが実行する複数のタスク各々の部分であるサブタスクを、マルチタスクで実行するサブタスク実行部と、各ノードのタスクのサブタスクが発信元となる、当該サブタスクが部分であるタスクのデータが、当該タスクのデータの発信元のサブタスクが実行されているノード以外の他の全てのノードに前記ネットワークを介して伝搬するように、前記ネットワークと前記タスクのデータの送受信を行うデータ送受信部と、前記データ送受信部がネットワークから受信したタスクのデータを、当該タスクのサブタスクに転送するデータ取込部と、前記タスク切替命令に応答して、前記ネットワークを介して伝搬するデータが、当該タスク切替命令に伴う識別子が示すタスクのデータに切り替わるように、前記データ送受信部の前記タスクのデータの送受信の動作を制御する伝搬データ切替部とを備えたものである。【０００８】
また、前記課題達成のために、本発明は、複数のノードを備えた、複数のタスクを実行する分散処理システムに、各ノードに切替先のタスクの識別子を伴うタスク切替命令を一斉送信する制御部を備えると共に、前記各ノードに、当該分散処理システムが実行する複数のタスク各々の部分であるサブタスクを、マルチタスクで実行するサブタスク実行部と、タスクのサブタスクが発信元となるデータを、当該サブタスクが部分であるタスクのデータとして他のノードに送信する送信部と、他のノードから受信したタスクのデータを、当該タスクのサブタスクに転送するデータ取込部と、他のノードから受信したタスクのデータを、当該データが当該データの発信元のノードから他の全てのノードに順次転送されていくように、他のノードに中継するデータ転送部とを設けたものである。ここで、前記送信部は、前記タスク切替命令の受信に応答して、当該タスク切替命令に伴う識別子が示すタスク以外のタスクのデータの他のノードへの送信を停止し、前記中継部は、前記タスク切替命令の受信に応答して、他のノードから受信した当該時点で他のノードに未中継のタスクのデータの中継を、当該データのタスクの識別子を伴う前記タスク切替命令を受信するまで延期する。【０００９】
ここで、より具体的には、たとえば、前記サブタスクを、転送されたデータの各々を処理対象のデータに含めて、各処理対象のデータに対して所定の処理を行うと共に、処理対象のデータ待ちの状態となったならば、待機状態に遷移するものとし、前記サブタスク実行部は、待機状態に遷移したサブタスクの実行時間を減少させ、他の遷移状態にないサブタスクの実行時間を増加するものとしてよい。【００１０】
また、このような分散処理システムは、前記中継部において、前記タスク切替命令の受信に応答して、他のノードから受信した当該時点で他のノードに未中継のタスクのデータを、当該タスクの待避データとして保存すると共に、保存されている、当該タスク切替命令に伴う識別子が示すタスクの待避データの前記他のノードへの中継を行うように構成してもよい。【００１１】
また、このような分散処理システムは、前記データ取込部において、前記タスク切替命令に応答して、他のノードから受信した当該時点でサブタスクに未転送のデータの、サブタスクへの転送を、当該データのタスクの識別子を伴う前記タスク切替命令を受信するまで延期するように構成してもよい。【００１２】
また、前記課題達成のために、本発明は、複数のノードを備えた、複数のタスクを実行する分散処理システムに、各ノードに切替先のタスクの識別子を伴うタスク切替命令を一斉送信する制御部を備えると共に、前記各ノードに、当該分散処理システムが実行する複数のタスク各々の部分であるサブタスクを、マルチタスクで実行するサブタスク実行部と、タスクのサブタスクが発信元となるデータを、当該サブタスクが部分であるタスクのデータとして他のノードに送信する送信部と、他のノードから受信したタスクのデータを、当該タスクのサブタスクに転送すると共に、当該データが当該データの発信元のノードから他の全てのノードに順次転送されていくように、他のノードに中継するデータ転送部とを設けたものである。ここで、前記送信部は、前記タスク切替命令の受信に応答して、当該タスク切替命令に伴う識別子が示すタスク以外のタスクのデータの他のノードへの送信を停止し、前記データ転送部は、前記タスク切替命令の受信に応答して、当該時点で他のノードから受信しているデータを、当該タスクの待避データとして保存すると共に、保存されている、当該タスク切替命令に伴う識別子が示すタスクの待避データの前記サブタスクへの転送と前記他のノードへの中継を行う。【００１３】
また、以上の各分散処理システムは、ｎ（但し、ｎは２以上の任意の自然数）個の前記ノードをチャネルでリング状に接続したリングを複数有するものとしてもよい。ここで、各リングに含まれるノードの数は等しく、前記各リングの各ノードは、当該ノードを送信側とするチャネルで、当該ノードを含むリング以外の各リングのノードと、同じリングに含まれる各ノードが、当該ノードを送信側とするチャネルで、他のリングの異なるノードにそれぞれ接続されるように、接続されている。そして、前記各ノードの前記データ転送手段は、当該ノードが含まれるリングの当該リングにおける接続上の順番が当該ノードの前の順番のノードに接続したチャネルから受信したタスクのデータを、当該ノードが含まれるリングの当該リングにおける接続上の順番が当該ノードの次の順番のノードに接続するチャネルと、当該ノードを送信側とするチャネルであって当該ノードが含まれるリング以外の他のリングのノードに接続するチャネルに送信することにより、前記他のノードから受信したタスクのデータの他のノードへの中継を行う。また、前記送信部は、タスクのサブタスクが発信元となるタスクのデータを、当該ノードが含まれるリングの当該リングにおける接続上の順番が当該ノードの次の順番のノードに接続するチャネルと、当該ノードを送信側とするチャネルであって当該ノードが含まれるリング以外の他のリングのノードに接続するチャネルに送信することにより、前記タスクのデータの他のノードへの送信を行う。【００１４】
以上のような分散処理システムによれば、各ノードのタスクのサブタスクが発信元となる、当該サブタスクが部分であるタスクのデータが、当該タスクのデータの発信元のサブタスクが実行されているノード以外の他の全てのノードに前記ネットワークを介して伝搬するように構成された分散処理システムにおいて、制御部が、各ノードに切替先のタスクの識別子を伴うタスク切替命令を一斉送信することにより、前記ネットワークを介して伝搬するデータを、当該タスク切替命令の切替先のタスクのデータに切り替えることができる。【００１５】
そして、一般的なマルチタスクの制御によれば、各ノードでは、他のノードからデータを転送されなくなったタスクのサブタスクは、処理すべきデータが無くなるため実行時間が無くなるまたは減少する一方、他のノードからデータを転送されるようになったタスクのサブタスクは、処理すべきデータが順次発生するため、実行時間が増加する。【００１６】
よって、各ノードでは、タスク切替命令の切替先のタスク、すなわち、各ノードにおいて他のノードからデータを転送されるようになったタスクのサブタスクの実行が支配的に行われるようになり、分散処理システムにおいて実行されるタスクが切り替わる。
よって、以上のような分散処理システムによれば、各ノードのサブタスクの状態を集中管理等する必要のない簡易な構成によって、タスクを時分割で実行するマルチタスクを実現することができる。
【発明の効果】
【００１７】
以上のように、本発明によれば、分散処理システムにおいて、より簡易な構成によって、タスクを時分割で実行するマルチタスクを実現することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態に係る分散システムを示す図である。
【図２】本発明の実施形態に係るノードの構成を示すブロック図である。
【図３】本発明の実施形態に係るノードの機能を示すブロック図である。
【図４】本発明の実施形態に係るタスクデータ転送処理部の構成を示すブロック図である。
【図５】本発明の実施形態に係る分散システムのデータ転送のようすを示す図である。
【図６】本発明の実施形態に係る転送データ切り替え処理を示すフローチャートである。
【図７】本発明の第実施形態に係る転送データ切り替え処理の処理例を示す図である。
【図８】本発明の第実施形態に係る転送データ切り替え処理の処理例を示す図である。
【図９】本発明の第実施形態に係る転送データ切り替え処理の処理例を示す図である。
【発明を実施するための形態】
【００１９】
以下、本発明に係る分散システムの実施形態について説明する。
図１に、本実施形態に係る分散システムの構成を示す。
図示するように、分散システムは、一つのコントローラ（ＣＮＴ)と、複数のリング （Ｒi）を有し、各リングiは、それぞれ同数のノード（Ｎij）を含んでいる。なお、Ｒi は、i 番目のリングを表しており、Ｎijは、i番目のリングのｊ番目のノードを表している。
【００２０】
ここで、図１ａは、リング数が２、リング内のノード数が３の場合を示しており、図１ｂは、リング数が３、リング内のノード数が４の場合を示している。
そして、図示するように、各リング中において、当該リングに含まれる各ノードをチャネルでリング状に順次接続したリング型のネットワークが形成されている。
また、i番目のリングのｊ番目のノードは、i番目のリング以外の各リングのｊ番目のノードとそれぞれ双方向のチャネルで接続されている。
一方、コントローラ（ＣＮＴ)は、各リング （Ｒi）の各ノード（Ｎij）と直接接続されている。
コントローラ（ＣＮＴ)と各ノード（Ｎij）との接続は、ノード（Ｎij）毎に設けたチャネルで、ノード（Ｎij）とコントローラ（ＣＮＴ)とをそれぞれ接続するようにしてもよいし、バス型のチャネルでコントローラ（ＣＮＴ)と各ノード（Ｎij）を接続するようにしてもよい。
【００２１】
次に、図２に各ノードの構成を示す。
図示するように、ノード１は、ストレージ１１とプロセッサ１２を備えている。プロセッサ１２は、ＣＰＵと、その周辺デバイスを備えたコンピュータとしての構成を有しており、ストレージ１１を用いて他のノード１とは独立にデータ処理を行うことができる。
【００２２】
また、ノード１は、当該ノード１に接続している、チャネル毎に設けられた、チャネルを用いて他のノード１との間のデータ伝送を行うチャネルインタフェース１３を備えている。
【００２３】
次に、図３に、プロセッサ１２のソフトウエアの実行によって形成される、ノード１（Ｎij）の機能ブロックの構成を示す。
分散処理システムが行うタスクを分割したタスクの部分をサブタスクと呼ぶこととして、ノード１には、複数のタスクのサブタスク１０１が割り当てられている。各サブタスク１０１は、オペレーティングシステム１０２上で、サブタスク１０１のスケジューリングやリソースの管理などを行ってマルチタスク環境を提供するマルチタスク制御部１０２１の制御により、時分割にマルチタスクの形態で実行されている。
【００２４】
次に、各サブタスク１０１は、各々固有のデータスペース１０１１を備え、自己のデータスペース１０１１を用いて処理を行う。そして、各データスペース１０１１には、他ノードに送信するデータを格納する送信キューＳＱと、他ノードから受信したデータが格納される受信キューＲＱとが設けられている。
【００２５】
そして、オペレーティングシステム１０２は、各サブタスク１０１の送信キューＳＱに格納されたデータの他のノード１への転送や、他のノード１から受信したデータの受信キューＲＱへの格納を行う、タスクデータ転送処理部１０２２を備えている。
【００２６】
次に、図４に、オペレーティングシステム１０２のタスクデータ転送処理部１０２２の構成を示す。
図示するように、タスクデータ転送処理部１０２２は、受信バッファ４１、送信バッファ４２、待避バッファ４３、重複転送抑止部ＣＨＫ４４、受信データ転送部４５、送信データ転送部４６、以上各部を制御する転送制御部４７を備えている。
【００２７】
そして、受信バッファ４１は、自ノード１と同じリングに含まれている当該リング上の順番が一つ前のノード１からチャネルインタフェース１３が受信したデータが格納されるバッファＲＳ（ｒ）を備えている。
【００２８】
ここで、リング上の順番とは、リングに沿ってチャネルのデータの転送方向に進んだときに通るノード１の順番である。
また、受信バッファ４１は、自ノード１が含まれるリングと異なる他のリングのリング中の順番が同じノード１からチャネルインタフェース１３が受信したデータが格納される、当該他のリングの数と同数のバッファＲi（ｒ）を備えている。
【００２９】
次に、送信バッファ４２は、自ノード１と同じリングに含まれている当該リング上の順番が一つ後のノード１にチャネルインタフェース１３を介して送信するデータを格納するバッファＲＳ（ｓ）を備えている。また、送信バッファ４２は、自ノード１が含まれるリングと異なる他のリングのリング中の順番が同じノード１にチャネルインタフェース１３を介して送信するデータを格納する、当該他のリングの数と同数のバッファＲi（ｓ）を備えている。
【００３０】
そして、転送制御部４７は、通常時には、以下の動作が行われるように各部を制御する。
すなわち、転送制御部４７は、送信データ転送部４６に、実行対象タスクとなっているタスクを送信対象タスクとして設定する。実行対象タスクについては後述する。
送信対象タスクを設定された送信データ転送部４６は、送信対象タスクのサブタスク１０１のデータスペース１０１１の送信キューＳＱに格納されたデータを、送信バッファ４２のバッファＲＳ（ｓ）と各バッファＲi（ｓ）に転送し、自ノード１と同じリングに含まれている当該リング上の順番が一つ後のノード１と、自ノード１が含まれるリングと異なる他の各リングのリング中の順番が同じノード１の各々に送信する。
【００３１】
なお、サブタスク１０１のデータスペース１０１１の送信キューＳＱに格納されたデータには、そのサブタスク１０１が属するタスクの識別を示すタスク識別子が付加されている。
また、転送制御部４７は、自ノード１と同じリングに含まれている当該リング上の順番が一つ前のノード１から受信し、受信バッファ４１のバッファＲＳ（ｒ）に格納されたデータを、重複転送抑止部ＣＨＫ４４に転送させる。重複転送抑止部ＣＨＫ４４は、転送されたデータが、自ノード１が発信元のデータであるかどうかを調べ、自ノード１が発信元のデータでない場合のみ、当該データを出力し、自ノード１が発信元のデータであれば、当該データを破棄する。
【００３２】
そして、重複転送抑止部ＣＨＫ４４から出力されたデータは、送信バッファ４２のバッファＲＳ（ｓ）と各バッファＲi（ｓ）に転送され、当該データは、自ノード１と同じリングに含まれている当該リング上の順番が一つ後のノード１と、自ノード１が含まれるリングと異なる他の各リングのリング中の順番が同じノード１の各々に送信される。
【００３３】
また、重複転送抑止部ＣＨＫ４４から出力されたデータは受信データ転送部４５にも転送され、受信データ転送部４５は、転送されたデータを、そのデータに付加されているタスク識別子のタスクのサブタスク１０１のデータスペース１０１１の受信キューＲＱに格納する。
【００３４】
また、自ノード１が含まれるリングと異なる他の各リングのリング中の順番が同じノード１の各々から受信し各Ｒi（ｒ）に格納されたデータは、受信データ転送部４５に転送され、受信データ転送部４５は、転送されたデータを、そのデータに付加されているタスク識別子のタスクのサブタスク１０１のデータスペース１０１１の受信キューＲＱに格納する。
【００３５】
以下、このようなタスクデータ転送処理部１０２２の動作によって実現されるノード１間のデータ転送動作について、リング数が２、リング内のノード数が３の分散システムを例にとり説明する。
【００３６】
いま、図５ａに示すようにリングＲ１のノードＮ１１において、タスクＡが実行対象タスクであるときに、タスクＡのサブタスク１０１が発信した送信データは、ノードＮ１１からノードＮ１２とノードＮ２１に転送され、ノードＮ１２とノードＮ２１のタスクＡのサブタスク１０１に送られる。また、ノードＮ１２に送られたデータは、ノードＮ１２によって、ノードＮ１３とノードＮ２２に中継され、ノードＮ１３とノードＮ２２のタスクＡのサブタスク１０１に送られる。また、ノードＮ１３に送られたデータは、ノードＮ１３によって、ノードＮ２３に中継され、ノードＮ２３のタスクＡのサブタスク１０１に送られる。
結果、タスクＡが実行対象タスクであるときに、ノードＮ１１のタスクＡのサブタスク１０１が発信した送信データは、順次ノード１を一つずつ上述のように伝搬し、自ノードＮ１１以外の全てのノードのタスクＡのサブタスク１０１に転送される。
【００３７】
同様に、図５ｂに示すように、リングＲ１のノードＮ１２において、タスクＢが実行対象タスクであるときに、タスクＢのサブタスク１０１が発信した送信データは、図示するように、ノードＮ１２からノードＮ１３とノードＮ２２に転送され、ノードＮ１３とノードＮ２２のタスクＢのサブタスク１０１に送られる。また、ノードＮ１３に送られたデータは、ノードＮ１３によってノードＮ１１とノードＮ２３に中継され、ノードＮ１１とノードＮ２３のタスクＢのサブタスク１０１に送られる。また、ノードＮ１１に送られたデータは、ノードＮ１１によって、ノードＮ２１に中継され、ノードＮ２１のタスクＢのサブタスク１０１に送られる。
結果、タスクＢが実行対象タスクであるときに、ノードＮ１２のタスクＢのサブタスク１０１の送信データは、順次ノード１を一つずつ上述のように伝搬し、自ノードＮ１２以外の全てのノード１のタスクＢのサブタスク１０１に転送される。
【００３８】
以下、同様に、任意のリングの任意のノード１（Ｎij）の任意のタスクＸのサブタスク１０１が発信した送信データは、そのタスクＸが実行対象タスクであるときに、自ノード（Ｎij）以外の全てのノード１の、タスクＸのサブタスク１０１に転送される。
【００３９】
したがって、タスクＸが実行対象タスクであるときに、各リングの各ノード１のタスクＸのサブタスク１０１が、それぞれ、データを送信すると、各リングの各ノード１のタスクＸのサブタスク１０１には、他の全てのノード１のタスクＸのサブタスク１０１が送信したデータが転送される。
【００４０】
以下、このような分散処理システムにおいて、タスクを切り替える動作について説明する。
まず、本実施形態に係る各ノード１の各タスクのサブタスク１０１は、以下の処理Ｐ１、Ｐ２を行うものである。
処理Ｐ１；所定の演算を行い、演算結果を表すデータを、送信キューＳＱに格納し、他のノードの同タスクのサブタスク１０１に送信する。
処理Ｐ２；受信キューＲＱに格納された、他のノードの同タスクのサブタスク１０１から受信したデータを取り出し、当該データが表す演算結果を処理Ｐ１の演算結果に統合する演算を行う。
【００４１】
但し、処理Ｐ２の演算は、他の全てのノードの同タスクのサブタスク１０１から受信したデータついて行うものである。また、少なくとも、処理Ｐ２の演算に順序依存性は無く、他のノード１の同タスクのサブタスク１０１から受信したデータを、どのような順序で処理しても、最終的に同じ結果が得られるものである。
【００４２】
また、各サブタスク１０１は、行うべき処理が無い場合、すなわち、処理Ｐ１を終了しており、処理Ｐ２で次に処理すべき、他ノードの同タスクのサブタスク１０１から受信したデータが、受信キューＲＱに無い場合には、その後、受信キューＲＱに格納されるデータが受信されるまで、待機状態に遷移する。
【００４３】
そして、各ノード１のオペレーティングシステム１０２のマルチタスク制御部１０２１は、待機状態にあるサブタスク１０１に実行時間（CPU時間）を与えず、もしくは、当該実行時間を減少し、その分、待機状態にない他のサブタスク１０１の実行時間（CPU時間）を増加させる。
【００４４】
さて、図１に戻り、分散処理システムのタスクの切り替えは、コントローラ（ＣＮＴ)が所定のスケジュールに従って行う。
また、タスクの切り替えは、タスクの切り替え時に、コントローラ（ＣＮＴ)が各リングの各ノード１（Ｎij）に、切替先のタスクのタスク識別子を指定したタスク切替命令を一斉に送信することにより行う。
【００４５】
一方、各ノード１（Ｎij）のタスクデータ転送処理部１０２２の転送制御部４７は、タスクの切り替えのために、図６に示す転送データ切替処理を行う。
図示するように、転送制御部４７は、コントローラ（ＣＮＴ)が送信されたタスク切替命令の受信の発生を監視し（ステップ６０２）、タスク切替命令の受信が発生したならば、実行対象タスクを、タスク切替命令のタスク識別子が示す切替先のタスクに切り替え、送信データ転送部４６に、実行対象タスクとなっているタスクを送信対象タスクとして設定する（ステップ６０４）。
【００４６】
なお、ステップ６０４で、送信対象タスクが切り替わると、上述のように、当該切り替え後の送信対象タスクのサブタスク１０１のデータスペース１０１１の送信キューＳＱに格納されたデータが、自ノード１と同じリングに含まれている当該リング上の順番が一つ後のノード１と、自ノード１が含まれるリングと異なる他の各リングのリング中の順番が同じノード１の各々に送信されるようになり、切り替え前の送信対象タスクのサブタスク１０１のデータスペース１０１１の送信キューＳＱに格納されたデータは他ノードに送信されなくなる。
【００４７】
また、次に、受信バッファ４１のバッファＲＳ（ｒ）に格納されているデータの転送先を、重複転送抑止部ＣＨＫ４４から、待避バッファ４３に変更し、待避バッファ４３に、バッファＲＳ（ｒ）から転送したデータを、当該データに付加されているタスク識別子が示すタスクの待避データとして格納すると共に、待避バッファ４３に格納されている、ステップ６０４で切り替えた後の実行対象タスクのタスクの待避データを、重複転送抑止部ＣＨＫ４４に転送する（ステップ６０６）。
【００４８】
重複転送抑止部ＣＨＫ４４は、待避バッファ４３から転送されたデータを、受信バッファ４１のバッファＲＳ（ｒ）から転送されたデータと同様に処理する。
すなわち、重複転送抑止部ＣＨＫ４４は、待避バッファ４３から転送されたデータが、自ノードが発信元のデータであるかどうかを調べ、自ノードが発信元のデータでない場合のみ、当該データを、送信バッファ４２のバッファＲＳ（ｓ）と各バッファＲi（ｓ）に転送し、自ノード１と同じリングに含まれている当該リング上の順番が一つ後のノード１と、自ノード１が含まれるリングと異なる他の各リングのリング中の順番が同じノード１の各々に送信させると共に、当該データを、受信データ転送部４５に転送し、当該データに付加されているタスク識別子のタスクのサブタスク１０１のデータスペース１０１１の受信キューＲＱに格納させる。
【００４９】
そして、受信バッファ４１のバッファＲＳ（ｒ）に格納されているデータの転送先を、重複転送抑止部ＣＨＫ４４に復帰し（ステップ６０８）、ステップ６０２の監視に戻る。
以上、タスクデータ転送処理部１０２２の転送制御部４７が行う転送データ転送処理について説明した。
ここで、このような転送データ切替処理の処理例を図７から図１０に示す。
なお、各図中においてDk(Nij)は、i番目のリングのj番目のノード１のタスクｋのサブタスク１０１が発信元であるデータを表す。
いま、図７ａに示すように、タスクＡが実行対象タスクに設定されており、各ノード１のタスクＡのサブタスク１０１が発信元となっているタスクＡのデータが上述のようにノード１を一つずつ伝搬しているときに、タスクＡのデータ伝搬の途中で、コントローラ（ＣＮＴ)からタスクＢを切替先とするタスク切替命令が各ノード１（Ｎij）に送信されると、図７ｂに示すように、各ノード１において、その時点で受信している他のノード及びサブタスク１０１に未転送のタスクＡのデータが、待避バッファ４３にタスクＡの待避データとして待避され、タスクＡのデータの伝搬は停止する。
【００５０】
また、各ノード１において、タスクＢが実行対象タスクに設定され、各ノード１のタスクＢのサブタスク１０１が発信元となるタスクＢのデータが送信され、タスクＢのデータが、図７ｂ、図８ａ示すように、ノード１を一つずつ伝搬し、タスクＢのデータが各ノード１のタスクＢのサブタスク１０１に転送されていく。
【００５１】
そして、図８ａに示す、タスクＢのデータの伝搬の途中で、コントローラ（ＣＮＴ)からタスクＡを切替先とするタスク切替命令が各ノード１（Ｎij）に送信されると、図８ｂに示すように、各ノード１において、その時点で受信している他のノード及びサブタスク１０１に未転送のタスクＢのデータが、待避バッファ４３にタスクＢの待避データとして待避され、タスクＢのデータの伝搬は停止する。
【００５２】
また、各ノード１から、待避しておいたタスクＡの待避データが送信され、これにより、図８ｂ、図９に示すように、タスクＡのデータの伝搬が再開され、タスクＡのデータが、各ノード１のタスクＡのサブタスク１０１に転送されていく。
【００５３】
さて、以上のように、本実施形態によれば、コントローラ（ＣＮＴ)からタスク切替命令を各ノード１（Ｎij）に送信することにより、分散処理システムの各ノード１（Ｎij）間でデータを転送するタスクを切り替えることができる。
【００５４】
そして、各ノード１では、他のノード１からデータを転送されなくなったタスクのサブタスク１０１は、上述した処理Ｐ２で処理すべきデータが無くなるため待機状態となる一方、他のノード１からデータを転送されるようになったタスクのサブタスク１０１は、上述した処理Ｐ２で処理すべきデータが発生するようになる。
【００５５】
よって、各ノード１では、コントローラ（ＣＮＴ)が送信したタスク切替命令の切替先にタスク、すなわち、各ノード１において他のノード１からデータを転送されるようになったタスクのサブタスク１０１の実行が支配的に行われるようになり、分散処理システムにおいて実行されるタスクが切り替わる。
【００５６】
すなわち、コントローラ（ＣＮＴ)のタスク切替命令の送信により、分散処理システムにおけるタスクの切替が実現される。
したがって、本実施形態によれば、各ノードのサブタスクの状態を集中管理等する必要のない簡易な構成によって、タスクを時分割で実行するマルチタスクを実現することができる。
なお、図７、８、９では、各ノード１が同期して動作する場合について示したが、実際には、各ノード１の動作は非同期であってよい。この場合でも、コントローラ（ＣＮＴ)からタスク切替命令を各ノード１（Ｎij）に送信すると、速やかに、各ノード１（Ｎij）間で、タスク切替命令で指定した切替先のタスクのデータが支配的に転送されるようになる。よって、各ノード１において、速やかにタスク切替命令で指定した切替先のタスクのサブタスク１０１の実行が支配的に行われるようになり、分散処理システムにおいて実行されるタスクが切り替わる。
【００５７】
ところで、以上の実施形態は、コントローラ（ＣＮＴ)から、タスク切替命令の他に、タスク識別子を指定したpend命令や、タスク識別子を指定したstop命令を、各ノード１（Ｎij）に送信するようにしてもよい。
【００５８】
pend命令は、タスクを一時的に停止させる命令であり、各ノード１はpend命令を受け取ったならば、pend命令が指定するタスク識別子が付加されたデータの転送を中断すると共に、当該データを転送を再開可能な形態で保存する。
【００５９】
stop命令は、タスクを停止する命令であり、各ノード１はstop命令を受け取ったならば、stop命令が指定するタスク識別子が示すタスクのサブタスク１０１の送信キューＳＱと受信キューＲＱをクリアすると共に以降、stop命令が指定するタスク識別子が付加されたデータを受信したならば、そのデータを破棄する。
【符号の説明】
【００６０】
１…ノード、１１…ストレージ、１２…プロセッサ、１３…チャネルインタフェース、４１…受信バッファ、４２…送信バッファ、４３…待避バッファ、４４…重複転送抑止部ＣＨＫ、４５…受信データ転送部、４６…送信データ転送部、４７…転送制御部、１０１…サブタスク、１０２…オペレーティングシステム、１０１１…データスペース、１０２１…マルチタスク制御部、１０２２…タスクデータ転送処理部。
【図１】
2018235180.tif 000003
【図２】
2018235180.tif 000004
【図３】
2018235180.tif 000005
【図４】
2018235180.tif 000006
【図５】
2018235180.tif 000007
【図６】
2018235180.tif 000008
【図７】
2018235180.tif 000009
【図８】
2018235180.tif 000010
【図９】
2018235180.tif 000011
【国際調査報告】
2018235180.tif 000012
2018235180.tif 000013