(57)【要約】【課題】演算処理部の効率的な実行制御が可能で、処理のスループットを向上させることができる演算処理システムを提供する。【解決手段】第１の処理を実行し、第１の処理の実行状態を示す第１の状態情報及び第１の処理の結果を示す第１の出力情報を出力する第１の演算処理装置と、第１の出力情報を入力して第２の処理を実行し、第２の処理の結果を示す第２の出力情報を出力する第２の演算処理装置と、第２の出力情報を入力して第３の処理を実行し、第３の処理の実行状態を示す第２の状態情報を出力する第３の演算処理装置と、第１の状態情報及び第２の状態情報に基づいて、第２の処理の起動を指示する起動要求を第２の演算処理装置へ出力する実行制御装置と、を備える。【選択図】      図１
2014102692.tif 000002
【特許請求の範囲】
【請求項１】
第１の処理を実行し、前記第１の処理の実行状態を示す第１の状態情報及び前記第１の処理の結果を示す第１の出力情報を出力する第１の演算処理装置と、
前記第１の出力情報を入力して第２の処理を実行し、前記第２の処理の結果を示す第２の出力情報を出力する第２の演算処理装置と、
前記第２の出力情報を入力して第３の処理を実行し、前記第３の処理の実行状態を示す第２の状態情報を出力する第３の演算処理装置と、
前記第１の状態情報及び前記第２の状態情報に基づいて、前記第２の処理の起動を指示する第１の起動要求を前記第２の演算処理装置へ出力する実行制御装置と、
を備えることを特徴とする演算処理システム。
【請求項２】
前記第１の状態情報は、前記第１の演算処理装置による前記第１の出力情報の出力の完了の有無を示し、
前記第２の状態情報は、前記第３の演算処理装置による前記第２の出力情報の入力の完了の有無を示す
ことを特徴とする請求項１に記載の演算処理システム。
【請求項３】
前記実行制御装置は、前記第１の状態情報、前記第２の状態情報に基づいて、前記第２の処理の起動の可否を示す第１の依存状態を判断し、前記依存状態に基づいて前記第１の起動要求を出力する
ことを特徴とする請求項２又は３に記載の演算処理システム。
【請求項４】
前記実行制御装置は、前記第２の処理が前記第１の処理に依存することを示す第１の依存関係、前記第２の処理が前記第３の処理に依存することを示す第２の依存関係及び前記第１の依存状態を管理する第１の管理情報を保持する情報管理部を含む
ことを特徴とする請求項３に記載の演算処理システム。
【請求項５】
前記第１の管理情報は、前記第１の依存状態を示す第１の依存数を含む
ことを特徴とする請求項４に記載の演算処理システム。
【請求項６】
前記第１の依存数は、前記第２の演算処理装置の起動の可否を決定するための、前記第１の処理又は前記第３の処理の個数である
ことを特徴とする請求項５に記載の演算処理システム。
【請求項７】
前記実行制御装置は、前記第１の状態情報又は前記第２の状態情報に基づいて前記第１の依存数を更新し、前記第１の依存数に基づいて前記第１の起動要求を出力する
ことを特徴とする請求項６に記載の演算処理システム。
【請求項８】
前記情報管理部は、さらに、前記第１の依存関係及び前記第１の処理の起動の可否を示す第２の依存状態を管理する第２の管理情報、並びに前記第２の依存関係及び前記第３の処理の起動の可否を示す第３の依存状態を管理する第３の管理情報を保持し、
前記実行制御装置は、前記第２の管理情報に基づいて、前記第１の処理の起動を指示する第２の起動要求を前記第１の演算処理装置へ出力し、前記第３の管理情報に基づいて、前記第３の処理の起動を指示する第３の起動要求を前記第３の演算処理装置へ出力する
ことを特徴とする請求項４乃至７のいずれか１項に記載の演算処理システム。
【請求項９】
前記第２の管理情報は、前記第２の依存状態を示す第２の依存数を含み、
前記第３の管理情報は、前記第３の依存状態を示す第３の依存数を含む
ことを特徴とする請求項８に記載の演算処理システム。
【請求項１０】
前記第２の依存数は、前記第１の演算処理装置の起動の可否を決定するための、前記第２の処理の個数で、
前記第３の依存数は、前記第３の演算処理装置の起動の可否を決定するための、前記第２の処理の個数である
ことを特徴とする請求項９に記載の演算処理システム。
【請求項１１】
前記実行制御装置は、前記第２の状態情報に基づいて前記第２の依存数又は前記第３の依存数を更新し、前記第２の依存数に基づいて前記第１の起動要求を出力し、前記第３の依存数に基づいて前記第３の起動要求を出力する
ことを特徴とする請求項１０に記載の演算処理システム。
【請求項１２】
前記第３の管理情報は、前記第３の演算処理装置による前記第２の状態情報の出力が省略される旨を示す出力属性情報を含み、
前記実行制御装置は、前記第１の状態情報及び前記出力属性情報に基づいて、前記第１の起動要求を出力する
ことを特徴とする請求項８乃至１１のいずれか１項に記載の演算処理システム。
【請求項１３】
前記第１の演算処理装置によって前記第１の出力情報が書き込まれ、前記第２の演算処理装置によって前記第１の出力情報が読み出される第１のチャネルと、
前記第２の演算処理装置によって前記第２の出力情報が書き込まれ、前記第３の演算処理装置によって前記第２の出力情報が読み出される第２のチャネルと、
をさらに備えることを特徴とする請求項１乃至１１のいずれか１項に記載の演算処理システム。
【請求項１４】
第１の処理を実行して前記第１の処理の結果を示す第１の出力情報を出力する第１の演算処理装置から入力した、前記第１の処理の実行状態を示す第１の状態情報、及び前記第１の出力情報を入力して第２の処理を実行する第２の演算処理装置から前記第２の処理の結果を示す第２の出力情報を入力して第３の処理を実行する第３の演算処理装置から入力した、前記第３の処理の実行状態を示す第２の状態情報に基づいて、前記第２の処理の起動を指示する起動要求を前記第２の演算処理装置へ出力する
ことを特徴とする実行制御装置。
【請求項１５】
第１の処理を実行して、前記第１の処理の実行状態を示す第１の状態情報及び前記第１の処理の結果を示す第１の出力情報を出力し、
前記第１の出力情報を入力して第２の処理を実行し、前記第２の処理の結果を示す第２の出力情報を出力し、
前記第２の出力情報を入力して第３の処理を実行し、前記第３の処理の実行状態を示す第２の状態情報を出力し、
前記第１の状態情報及び前記第２の状態情報に基づいて、前記第２の処理の起動を指示する起動要求を前記第２の演算処理装置へ出力する
ことを特徴とする実行制御方法。
【請求項１６】
演算処理システムが備える、第１の処理を実行して、前記第１の処理の実行状態を示す第１の状態情報及び前記第１の処理の結果を示す第１の出力情報を出力する第１の演算装置、前記第１の出力情報を入力して第２の処理を実行し、前記第２の処理の結果を示す第２の出力情報を出力する第２の演算装置、及び前記第２の出力情報を入力して第３の処理を実行し、前記第３の処理の実行状態を示す第２の状態情報を出力する第３の演算装置の実行制御を行う実行制御装置が備えるコンピュータを、
前記第１の状態情報及び前記第２の状態情報に基づいて、前記第２の処理の起動を指示する起動要求を前記第２の演算処理装置へ出力する実行制御手段
として機能させることを特徴とする実行制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理システム、実行制御装置、実行制御方法及び実行制御プログラムに関し、特に、依存関係のある複数の処理の実行状態に基づいて実行制御を行う、演算処理システム、実行制御装置、実行制御方法及び実行制御プログラムに関する。
【背景技術】
【０００２】
一つ以上の演算処理装置とそれらの実行制御を行う実行制御装置を含む情報処理システムが知られている。演算処理装置の実行形態には、１つの演算処理装置が順に処理を行う逐次処理と、複数の演算処理装置が平行して処理を行う並列処理がある。実行制御装置は、演算処理装置の処理内容に関する各種情報を持つことによって、演算処理装置の実行制御を行うことができる。
【０００３】
並列処理システムの実行制御装置には、演算処理部への入力データの状況による実行制御を行う装置（例えば、特許文献１参照。）、又は、演算処理部からのデータ出力が可能な状況かを示す情報による実行制御を行う装置（例えば、特許文献２参照。）がある。
【０００４】
特許文献１に記載された、ジョブの実行制御を行う制御部内のジョブ管理部は、データ入力のイベントを受け付けると、まず、受け取ったデータから、依存関係で結ばれた複数のタスクが連なった構成のジョブを生成する。そして、ジョブ管理部は、タスクの実行に必要な一つ以上のプログラムを、制御部内のプログラム格納部から演算処理部にロードする。制御部は、各タスクの所要処理時間などの情報を持ち、実行可能なタスクから演算処理部に処理を開始させ、タスクの終了に応じてジョブ情報を更新する。そして、制御部は、ジョブを構成するタスクの依存関係の現在の状態（以降、「依存状態」という。）を示す依存数カウンタを更新し、依存数カウンタが一定の状態を示したタスクを実行する。
【０００５】
特許文献１で着目されている依存関係は、具体的には、あるタスクの出力を別のタスクが入力するという「データ依存」、及びあるタスクの実行が完了してから別のタスクを実行する必要があるという「制御依存」である。そして、前段のタスクの状態によって更新される依存数カウンタ、すなわち依存状態の有無を示す指標を用いて、後段のタスクの実行制御が行われる。
【０００６】
特許文献２に記載されたプロセッサ間通信制御装置は、受信側プロセッサから送信側プロセッサへ、どの送信側プロセッサからデータ受信が可能かを示す通信抑制情報を送信する。そして、送信側プロセッサが通信抑制情報に基づいてデータ送信を行うことで、受信プロセッサにおける受信ビジーの発生確率を低下させる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】ＷＯ２００７／０２９４２１（第８−９頁、図１）
【特許文献２】特開２００８−１８６３８８（第７頁、図１、２）
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１の情報処理装置の実行制御方式には、実行制御の対象のタスクと、後段のタスクとの依存状態を考慮した実行制御に対応できないという課題がある。具体的には、特許文献１の実行制御方式では、実行制御部が演算処理部への入力データの状況のみを管理し、後段のタスクの処理状態については管理しない。そのため、特許文献１の実行制御方式は、実行制御の対象のタスクを、極力、早期に起動することによってスループットを向上させることが求められる用途には対応できない。以下にその理由を説明する。
【０００９】
ジョブは、前段のタスクＴ１と後段のタスクＴ２で構成されるものとする。タスクＴ１とタスクＴ２は、それぞれ、前段の演算処理部Ｐ１、後段の演算処理部Ｐ２によって実行されるものとする。
【００１０】
この場合、制御部は、演算処理部Ｐ２が次のデータ、すなわち、タスクＴ１の処理結果をいつ受け取れる状態になるか判断できない。つまり、制御部は、演算処理部Ｐ１によるタスクＴ１の処理を起動できるタイミングが判断できない。そのため、ジョブの処理が完了、又は、ジョブ内のタスクＴ１、Ｔ２の両方の状態が初期化されるまで、演算処理部Ｐ１は、次のデータに対するタスクＴ１の実行開始を待たなくてはならない。
【００１１】
すなわち、特許文献１の制御部が管理する、依存状態を示す依存数カウンタは、タスクＴ１と前段のタスクＴ２との依存状態のみを示すものであり、後段のタスクＴ３との依存状態の判断には利用できない。特許文献１の情報処理装置は、後段のタスクＴ３の動作状態を判断することができないので、タスクＴ１を起動して次の入力データの処理を開始したりすることはできない。なぜなら、タスクＴ２がタスクＴ１の処理結果の読み込みを完了していない可能性があり、その状態でタスクＴ１を起動すると、タスクＴ１の前の処理結果に次の処理結果を上書きしてしまう可能性があるからである。
【００１２】
例えば、無線通信における信号処理などでは、連続データに対する処理が行われることがある。連続して入力される個々のデータに対しては、実行制御装置が、同じ内容のジョブを生成する。このような用途で処理速度を向上させるためには、実行制御装置が、同じ内容の複数のジョブを同時期に生成できることが効果的である。
【００１３】
ところが、特許文献１の実行制御方式では、制御部は、ジョブが次のデータを入力することが可能となるタイミングを把握することができない。そのため、ジョブを構成する最後のタスクが終了するまで、制御部はジョブを構成する最初のタスクを起動することができない。従って、タスクの処理の開始に遅延が生じるため、演算処理部における処理の速度が低下する。
【００１４】
特許文献１の情報処理装置において、次の入力データについてタスクＡと同じ処理を開始するためには、タスクＡと同じ処理を行うタスクＡ１を新たに発生させるという方法も考えられる。しかし、この方法は、タスクＡ１を実行するために、メモリ等の追加の資源を消費するという問題がある。
【００１５】
逆に、連続データが入力される処理において、実行制御装置が同じ内容の複数のジョブを同時期に生成できる場合もある。この場合は、実行制御装置は、データ入力のイベントを受け付けるたびにジョブを生成する。従って、連続データ入力において、同様のジョブが幾度も生成され処理は高速化されるものの、実行制御部における使用メモリ量が増加する。
【００１６】
なお、タスクの並列動作が不可能なシステムも存在する。当然ながら、そのようなシステムでは、並行動作によるスループットの向上という方法を採ることはできない。
【００１７】
以上のように、特許文献１の情報処理装置には、後段のタスクＢとの依存状態が判断できないために、スループットが低下するという問題が発生する。そして、スループットを向上させるために、新たにタスクを生成すると、追加の資源を消費するという問題が発生する。
【００１８】
前述のように、特許文献１では、前段のタスクの状態によって更新される依存状態が着目されている。なぜなら、後段のタスクの起動の可否を判断するためである。実際には、性能の向上のためには、前段のタスクとの依存状態のみでなく、後段のタスクとの依存状態にも着目することが効果的であるが、特許文献１ではそのことに言及されていない。
【００１９】
一方、特許文献２のプロセッサ間通信制御装置のように、後段の受信可能状態を監視し、プロセッサからのデータ出力が可能な状況かのみを管理する場合にも、タスクの実行開始について課題がある。以下にその理由を説明する。
【００２０】
特許文献２のプロセッサ間通信制御装置は、受信側、すなわち後段のプロセッサから、送信側、すなわち前段のプロセッサへ、通信抑制情報を送信する。そのため、前段のプロセッサは、後段のプロセッサへのデータの送信の可否を判断することができる。
【００２１】
しかし、特許文献２のプロセッサ間通信制御装置では、前段のプロセッサがあるタスクＴ１の処理を完了したとしても、タスクＴ１を再び起動することが可能な状態にあるか否かを判断することができない。なぜなら、後段のプロセッサから送信される情報は、後段のプロセッサへのデータの送信の可否を判断するための通信抑制情報のみであり、前段のプロセッサの起動タイミングの判断に利用できる情報は送信されないからである。そのため、前段のプロセッサは、最適なタイミングでタスクＴ１の処理を起動することができない。
【００２２】
最適なタイミングでタスクの起動ができないことは、例えば、データが連続的に入力され、前段のプロセッサＰ１がタスクＴ１を実行し、タスクＴ１の処理結果を受けて後段のプロセッサＰ２がタスクＴ２を実行する場合に、顕著な問題を引き起こす。なぜなら、演算処理部Ｐ１に処理を起動させるためには、演算処理部Ｐ２による処理結果の受信可能状態の確認のみでなく、演算処理部Ｐ１が処理すべき次の入力データの準備状態の確認も必要だからである。
【００２３】
特許文献２の前段のプロセッサは、内部に、データ処理手段の他に、送信バッファ及びデータ送信手段を備える。つまり、前段のプロセッサは、処理とは独立して、後段のプロセッサにデータ送信を行う。従って、特許文献２のプロセッサ間通信制御装置では、そもそも、後段のプロセッサからの情報に基づいて前段のプロセッサの処理を起動する必要がない。
【００２４】
しかし、もし、後段のプロセッサがデータを受信することが可能な状態となったときに、前段のプロセッサを起動することができれば、送信バッファ及びデータ送信手段といった資源は不要である。
【００２５】
以上のように、次のデータに対する処理を効率的に実行するためには、前段のタスクＴ１を実行する演算処理部に対して、後段のタスクＴ２を実行する演算処理部の処理状態を反映した実行制御が必要である。このような実行制御を行うことができなければ、特に連続するデータ入力を処理する場合において、演算処理部における処理の遅延が発生する。
【００２６】
ところが、特許文献１、２の実行制御方法では、効率的に演算処理部の処理を起動することができない。従って、特許文献１、２の実行制御方法では、スループットを向上させることができない、あるいはスループットを向上させるためには追加の資源を要するという課題がある。
（発明の目的）
本発明の目的は、演算処理部の効率的な実行制御が可能で、追加の資源を要することなく処理のスループットを向上させることができる、演算処理システム、実行制御装置、実行制御方法及び実行制御プログラムを提供することである。
【課題を解決するための手段】
【００２７】
本発明の演算処理システムは、第１の処理を実行し、第１の処理の実行状態を示す第１の状態情報及び第１の処理の結果を示す第１の出力情報を出力する第１の演算処理装置と、第１の出力情報を入力して第２の処理を実行し、第２の処理の結果を示す第２の出力情報を出力する第２の演算処理装置と、第２の出力情報を入力して第３の処理を実行し、第３の処理の実行状態を示す第２の状態情報を出力する第３の演算処理装置と、第１の状態情報及び第２の状態情報に基づいて、第２の処理の起動を指示する起動要求を第２の演算処理装置へ出力する実行制御装置と、を備えることを特徴とする。
【００２８】
本発明の実行制御装置は、第１の処理を実行して第１の処理の結果を示す第１の出力情報を出力する第１の演算処理装置から入力した、第１の処理の実行状態を示す第１の状態情報、及び第１の出力情報を入力して第２の処理を実行する第２の演算処理装置から第２の処理の結果を示す第２の出力情報を入力して第３の処理を実行する第３の演算処理装置から入力した、第３の処理の実行状態を示す第２の状態情報に基づいて、第２の処理の起動を指示する起動要求を第２の演算処理装置へ出力することを特徴とする。
【００２９】
本発明の実行制御方法は、第１の処理を実行して、第１の処理の実行状態を示す第１の状態情報及び第１の処理の結果を示す第１の出力情報を出力し、第１の出力情報を入力して第２の処理を実行し、第２の処理の結果を示す第２の出力情報を出力し、第２の出力情報を入力して第３の処理を実行し、第３の処理の実行状態を示す第２の状態情報を出力し、第１の状態情報及び第２の状態情報に基づいて、第２の処理の起動を指示する起動要求を第２の演算処理装置へ出力することを特徴とする。
【００３０】
本発明の実行制御プログラムは、演算処理システムが備える、第１の処理を実行して、第１の処理の実行状態を示す第１の状態情報及び第１の処理の結果を示す第１の出力情報を出力する第１の演算装置、第１の出力情報を入力して第２の処理を実行し、第２の処理の結果を示す第２の出力情報を出力する第２の演算装置、及び第２の出力情報を入力して第３の処理を実行し、第３の処理の実行状態を示す第２の状態情報を出力する第３の演算装置の実行制御を行う実行制御装置が備えるコンピュータを、第１の状態情報及び第２の状態情報に基づいて、第２の処理の起動を指示する起動要求を第２の演算処理装置へ出力する実行制御手段として機能させることを特徴とする。
【発明の効果】
【００３１】
本発明の演算処理システム、実行制御装置、実行制御方法及び実行制御プログラムには、演算処理部の効率的な実行制御が可能で、追加の資源を要することなく処理のスループットを向上させることができるという効果がある。
【図面の簡単な説明】
【００３２】
【図１】本発明の第１の実施形態の演算処理装置の構成を示すブロック図である。
【図２】第１の実施形態の実行制御部の動作を示すフローチャートである。
【図３】本発明の第２の実施形態の演算処理装置の構成を示すブロック図である。
【図４】第２の実施形態の演算処理装置において用いられる各種情報及びその構成を示す図である。
【図５】第２の実施形態の処理情報管理表が保持する各種情報を示す。
【図６】第２の実施形態の実行制御部の動作を示すフローチャートである。
【図７】第２の実施形態の演算処理部によるタスクの処理フロー及びそれぞれのタスクに対応する処理情報管理表の第１の具体例である。
【図８】第２の実施形態の第１の具体例における演算処理装置の処理を示すシーケンスチャートである。
【図９Ａ】第２の実施形態の第１の具体例における実行制御装置の、タスクＡに対応する実行制御の処理を示すフローチャートである。
【図９Ｂ】第２の実施形態の第１の具体例における実行制御装置の、タスクＢに対応する実行制御の処理を示すフローチャートである。
【図９Ｃ】第２の実施形態の第１の具体例における実行制御装置の、タスクＣに対応する実行制御の処理を示すフローチャートである。
【図１０】第２の実施形態の演算処理部によるタスクの処理フロー及びそれぞれのタスクに対応する処理情報管理表の第２の具体例である。
【図１１】第２の具体例における演算処理装置の処理を示すシーケンスチャートである。
【図１２Ａ】第２の具体例における実行制御装置の、タスクＤに対応する実行制御の処理を示すフローチャートである。
【図１２Ｂ】第２の具体例における実行制御装置の、タスクＥに対応する実行制御の処理を示すフローチャートである。
【図１２Ｃ】第２の具体例における実行制御装置の、タスクＦに対応する実行制御の処理を示すフローチャートである。
【図１２Ｄ】第２の具体例における実行制御装置の、タスクＧに対応する実行制御の処理を示すフローチャートである。
【図１２Ｅ】第２の具体例における実行制御装置の、タスクＨに対応する実行制御の処理を示すフローチャートである。
【図１２Ｆ】第２の具体例における実行制御装置の、タスクＩに対応する実行制御の処理を示すフローチャートである。
【図１２Ｇ】第２の具体例における実行制御装置の、タスクＪに対応する実行制御の処理を示すフローチャートである。
【図１３】本発明の第３の実施形態の演算処理装置の構成を示すブロック図である。
【図１４】第３の実施形態の処理情報管理表が保持する各種情報を示す。
【図１５】第３の実施形態の実行制御部の動作を示すフローチャートである。
【図１６】第３の実施形態の演算処理部によるタスクの処理フロー及びそれぞれのタスクに対応する処理情報管理表の第１の具体例である。
【図１７】第３の実施形態の第１の具体例における演算処理装置の処理を示すシーケンスチャートである。
【図１８】第３の実施形態の演算処理部によるタスクの処理フロー及びそれぞれのタスクに対応する処理情報管理表の第２の具体例である。
【図１９】第３の実施形態の第２の具体例における演算処理装置の処理を示すシーケンスチャートである。
【図２０】本発明の第４の実施形態の演算処理装置の構成を示すブロック図である。
【図２１】第４の実施形態の演算処理装置において用いられる各種情報及びその構成を示す図である。
【図２２】第４の実施形態の処理情報管理表が保持する各種情報を示す。
【図２３Ａ】第４の実施形態の実行制御部の動作を示すフローチャートの一部である。
【図２３Ｂ】第４の実施形態の実行制御部の動作を示すフローチャートの一部である。
【図２３Ｃ】第４の実施形態の実行制御部の動作を示すフローチャートの一部である。
【図２４】第４の実施形態の演算処理装置の処理を示すシーケンスチャートである。
【発明を実施するための形態】
【００３３】
次に、本発明の実施形態について、図面を参照して詳細に説明する。
（第１の実施形態）
図１は、本発明の第１の実施形態の演算処理システムの構成を示すブロック図である。
【００３４】
第１の実施形態の演算処理システム１は、第１の演算処理装置１１、第２の演算処理装置１２、第３の演算処理装置１３、実行制御装置２０を備える。
【００３５】
第１の演算処理装置１１は、第１の処理を実行し、第１の処理の実行状態を示す第１の状態情報、及び第１の処理の結果を示す第１の出力情報を出力する。処理の「実行状態」とは、処理を開始するための準備状況や処理の完了の有無等をいう。従って、「第１の処理の実行状態」とは、例えば、第１の出力情報の有無である。すなわち、第１の処理の実行状態とは、第１の演算処理装置１１が、第１の出力情報の出力を完了したか否か等をいう。
【００３６】
第２の演算処理装置１２は、第１の出力情報を入力して第２の処理を実行し、第２の処理の結果を示す第２の出力情報を出力する。
【００３７】
第３の演算処理装置１３は、第２の出力情報を入力して第３の処理を実行し、第３の処理の実行状態を示す第２の状態情報を出力する。「第３の処理の実行状態」とは、例えば、第２の出力情報の入力の可否である。すなわち、第３の処理の実行状態とは、第３の演算処理装置１２が、第２の出力情報の入力を完了し、次の第２の出力情報の入力が可能な状態にあるか否か、つまり第２の出力情報の入力の準備が整ったか否か等をいう。
【００３８】
上記のように、本実施形態では、第１の処理、第２の処理、第３の処理は、それぞれ、独立した演算装置である、第１の演算処理装置１１、第２の演算処理装置１２、第３の演算処理装置１３が実行するものとする。第１の処理、第２の処理、第３の処理は、３つのタスクとして、１つの演算処理装置によって並列的に処理されてもよい。すなわち、個々の処理の実行主体は、独立した演算処理装置であっても、共有される演算処理装置であってもよい。第２の実施形態以降の実施形態では、個々の処理は、共有される１つの演算処理装置によって実行される場合を例として説明する。
【００３９】
第２の処理と、第１の処理及び第３の処理のそれぞれとの間には「依存関係」がある。第２の処理が第１の処理に依存することを「第１の依存関係」があるといい、第２の処理が第３の処理に依存することを「第２の依存関係」があるという。
【００４０】
第２の処理の起動の可否は、第１の処理及び第３の処理のそれぞれの実行状態によって制約を受ける。そのため、第１の処理及び第３の処理の実行状態が所定の状態にあるときのみ、第２の処理を起動することができる。第２の処理の起動が、第１の処理の実行状態に制約される状態にあることを、「第１の依存状態」にあるという。第２の処理の起動が、第３の処理の実行状態に制約される状態にあることを、「第２の依存状態」にあるという。
【００４１】
実行制御装置２０は、第２の処理の起動を指示する起動要求を第２の演算処理装置へ出力する。上記のように、第２の処理は、第１の処理及び第３の処理との間に依存関係がある。そこで、実行制御装置２０は、第１の状態情報及び第２の状態情報に基づいて、起動要求を第２の演算処理装置へ出力する。すなわち、実行制御装置２０は、第１の状態情報及び第２の状態情報に基づいて、第１の依存状態及び第２の依存状態が解消されたことを確認した後、起動要求を第２の演算処理装置へ出力する。
【００４２】
図２は、実行制御装置２０の動作を示すフローチャートである。
【００４３】
初めに、実行制御装置２０は、第１の演算処理装置１１、第３の演算処理装置１３から、それぞれ第１の状態情報、第２の状態情報を所得する（ステップＳ１１）。
【００４４】
次に、実行制御装置２０は、第１の演算処理装置１１対する第２の演算処理装置１２の依存状態、及び第３の演算処理装置１３に対する第２の演算処理装置１２の依存状態が解消したか否かを判断する（ステップＳ１２）。
【００４５】
第１の演算処理装置１１及び第３の演算処理装置１３の両方に対して、第２の演算処理装置１２の依存状態が解消した場合（ステップＳ１２：Ｙｅｓ）、実行制御装置２０は、第２の演算処理装置１２に起動要求を出力する。
（第１の実施形態の効果）
以上のように、本実施形態の演算処理システムでは、前段の第１の演算処理装置及び後段の第３の演算処理装置は、それぞれの実行状態を実行制御装置に通知する。そして、通知された実行状態に基づいて、第２の演算処理装置に起動指示が行われる。そのため、前後の演算処理装置の実行状態が、第２の演算処理装置の処理を起動することが可能な状態になると、直ちに第２の演算処理装置に起動指示が行われる。このように、第２の演算処理装置が効率的に起動されるので、演算処理システムとしての処理のスループットが向上するという効果がある。
【００４６】
さらに、第２の演算処理装置が効率的に起動されるので、同じ内容の複数の処理を同時に起動する必要もないため、メモリ使用量が増加するといった問題も生じない。
（第２の実施形態）
次に、本発明の第２の実施形態の構成について、図３から図５を参照して詳細に説明する。
【００４７】
図３は、本発明の第２の実施形態による演算処理システムの構成を示すブロック図である。本演算処理システムは、演算処理装置１０、実行制御装置２０を備える。演算処理装置１０は、バス等を介して実行制御装置２０と接続される。
【００４８】
演算処理装置１０は、３つのタスク、タスクＡ、Ｂ、Ｃを実行する。このように、演算処理装置１０は、共有される１つの、マルチタスク処理が可能な演算処理装置であって、３つのタスクＡ、Ｂ、Ｃを並列的に処理する。
【００４９】
なお、演算処理装置１０は、複数個の演算処理装置１１、１２、１３を含んでもよい。演算処理装置１０が演算処理装置１１、１２、１３を含む場合は、演算処理装置１１、１２、１３の各々が、実行制御装置２０と接続されてもよい。この場合、タスクＡ、Ｂ、Ｃは、個別の演算処理装置である演算処理装置１１、１２、１３によって実行されることができる。あるいは、演算処理装置１０が演算処理装置１１、１２、１３を含む場合であっても、１つの演算処理装置１１が３つのタスク、タスクＡ、Ｂ、Ｃを並列的に実行してもよい。
【００５０】
以上のように、タスクと、そのタスクを実行する主体となる演算処理装置との対応関係は限定されない。本実施形態では、共有される１つの演算処理装置１０が複数のタスクＡ、Ｂ、Ｃを並列的に処理する場合を例として説明する。しかし、本実施形態と、演算処理システムが各タスクを実行する複数の演算処理装置を備える場合との本質的な違いはない。
【００５１】
タスクＡ、Ｂ、Ｃの間には依存関係がある。すなわち、タスクＡとＢとの間、及びタスクＢとＣとの間には依存関係がある。具体的には、タスクＢは、タスクＡの処理結果Ａを入力し、処理結果ＢをタスクＣに出力する。そのため、タスクＢは、タスクＡ、Ｃの処理状態を踏まえて実行制御される必要がある。
【００５２】
実行制御装置２０は、情報管理部２１を備える。情報管理部２１は、演算処理装置１０の処理単位であるタスクに関する状態情報を含む処理情報管理表１０６を保持する。本実施形態では、３つのタスク、タスクＡ、Ｂ、Ｃが存在するので、処理情報管理表１０６として、タスクＡに関する状態情報Ａを含む処理情報管理表Ａ、タスクＢに関する状態情報Ｂを含む処理情報管理表Ｂ、及びタスクＣに関する状態情報Ｃを含む処理情報管理表Ｃを備えられる。
【００５３】
実行制御装置２０は、演算処理装置１０からの状態通知１０１をキーとして実行制御を行う。状態通知１０１は、タスクＡ、Ｃから送信される。状態通知１０１には、タスクＡ、Ｃのそれぞれからの、状態情報Ａ、Ｃが含まれる。実行制御装置２０は、状態通知１０１を受信すると、状態情報Ａ、Ｃに基づいて、情報管理部２１内の処理情報管理表Ａ、Ｃの内容を更新する。
【００５４】
実行制御装置２０は、起動要求１０２を送信することによって演算処理装置１０の実行制御を行う。演算処理装置１０は、起動要求１０２に従って、タスクＢを起動して演算処理を行い、所定の処理結果を出力する。例えば、演算処理装置１０は、記憶領域（図示なし）に演算結果データの書き出し、読み出し等を行う。
【００５５】
状態情報Ａ、Ｃは、タスクＡ、Ｃに用意される処理情報管理表Ａ、Ｃに記録される。実行制御装置２０は、処理情報管理表Ａ、Ｃを更新し、そして、処理情報管理表Ａ、Ｃを参照して、タスクＢの実行制御を行う。すなわち、実行制御装置２０は、処理情報管理表Ａ、Ｃを更新し、さらに処理情報管理表Ａ、Ｃを参照して、処理情報管理表Ｂを更新する。その結果、タスクＢが依存解消状態になったことが判明すると、タスクＢを起動するための起動要求１０２を、演算処理装置１０へ送信する。
【００５６】
図４に、本実施形態の演算処理システム２において用いられる各種情報及びその構成を示す。演算処理システム２では、処理情報管理表１０６、演算処理装置検索表１０４、タスク検索表１０５、ステータス１０３が用いられる。処理情報管理表１０６、演算処理装置検索表１０４及びタスク検索表１０５は、実行制御装置２０の内部に備えられる。
【００５７】
演算処理装置検索表１０４及びタスク検索表１０５は、処理情報管理表Ａ、Ｂ、Ｃの検索に用いられる。ステータス１０３は、状態通知１０１を解析した結果、得られる情報である。
【００５８】
まず、演算処理装置１０が実行制御装置２０へ送信する状態通知１０１について説明する。演算処理装置１０は、タスクＡ、Ｃを実行中、又は、タスクＡ、Ｃを実行した結果、タスクＡ、Ｃの実行に関する情報を実行制御装置２０へ第１の状態通知１０１として送信する。
【００５９】
状態通知１０１を解析することによって、ステータス１０３が得られる。状態通知１０１は、タスクＣがタスクＢからの入力データを読み出したとき、タスクＡが出力データを書き出したとき、又は、タスクＡ、Ｃが処理を終えたとき、などに送信される。ステータス１０３は、通知元の演算処理装置１０を識別するための演算処理装置ＩＤ（Identification Data）、状態通知１０１がいずれのタスクに関するものであるかを示すタスクＩＤと、タスクの実行状態を示す状態情報を含む。
【００６０】
なお、上記のように、本発明では、個々のタスクとタスクの実行主体である演算処理装置との対応は任意である。タスクＡ、Ｂ、Ｃが、共有される１つの演算処理装置１０によって実行される場合は演算処理装置を識別する必要がないため、演算処理装置ＩＤは不要である。
【００６１】
図４に示す通り、実行制御装置２０は、処理情報管理表Ａ、Ｃと、演算処理装置検索表１０４と、タスク検索表１０５を備える。
【００６２】
演算処理装置検索表１０４は、ステータス１０３をキーとして処理情報管理表Ａ、Ｂ、Ｃを検索するためのもので、演算処理装置ＩＤに対応したタスク検索表１０５を指すタスクポインタを備える。すなわち、演算処理装置は、タスクポインタによって、一旦、タスクに対応付けられ、さらに下記の管理表ポインタによって、処理情報管理表と対応付けられる。
【００６３】
タスク検索表１０５は、タスクＩＤに対応した処理情報管理表Ａ、Ｂ、Ｃ１０６を指す管理表ポインタを備える。このように、タスク検索表１０５は、タスクと処理情報管理表を対応付けるものである。従って、タスク検索表１０５の内容を変更することにより、タスクＡ、Ｂ、Ｃと処理情報管理表Ａ、Ｂ、Ｃとの対応付けを容易に変更することができる。
【００６４】
図５に、処理情報管理表Ａ、Ｂ、Ｃが保持する、タスクＡ、Ｂ、Ｃに関する各種情報を示す。例えば、処理情報管理表Ａ、Ｂ、Ｃが備えるべき情報として、タスクＩＤ、ポインタ、状態解析情報、依存カウンタ、属性情報等がある。
【００６５】
「タスクＩＤ」は、処理情報管理表１０６がどのタスクに対応するかを示す識別情報である。
【００６６】
「ポインタ」は、あるタスクと依存関係にある他のタスクの処理情報管理表の先頭アドレスを指す。具体的には、処理情報管理表Ａのポインタは、タスクＡと依存関係にあるタスクＢの処理情報管理表Ｂの先頭アドレスを指す。処理情報管理表Ｂのポインタは、タスクＢと依存関係にあるタスクＡ、Ｃの処理情報管理表Ａ、Ｃの先頭アドレスを指す。処理情報管理表Ｃのポインタは、タスクＣと依存関係にあるタスクＢの処理情報管理表Ｂの先頭アドレスを指す。
【００６７】
「状態解析情報」は、あるタスクの実行状態を示す状態情報の解析によって取得される情報で、そのタスクと依存関係にある他のタスクとの、現在の依存状態がどの状態にあるかを示す処理状態情報を含む。状態情報は、直接的には依存状態を示さない。依存状態は、依存状態をコード化した処理状態情報を用いて示される。すなわち、状態情報がある状態解析情報を特定し、状態解析情報に含まれる処理状態情報が依存状態を特定する。このように、間接的に依存状態を示すことによって、状態情報と依存状態の対応付けを柔軟に変更することができる。
【００６８】
なお、上記のような、状態解析情報を用いた依存状態の表示は必須のものではない。状態情報によって、直接的に依存状態を示してもよい。
【００６９】
「依存カウンタ」は、依存関係にある他のタスクとの依存状態を示す。具体的には、処理情報管理表Ｂの依存カウンタは、タスクＢの、タスクＡとの依存状態及びタスクＣとの依存状態を示す。依存カウンタが所定の値になったことを確認することにより、タスクＢと、タスクＡ、Ｃとの依存状態が解消されたことがわかる。
【００７０】
「属性情報」は、タスクの初期稼働状態を示す。
【００７１】
図５に示す通り、状態解析情報は、各状態情報に対応した処理状態情報を備える。そのため、状態情報から、処理情報管理表が更新の対象になるタスクを特定することができる。
【００７２】
タスクＢの依存状態変化には、前段のタスクＡが処理結果を出力した「出力状態」への遷移と、後段のタスクＣがタスクＢの処理結果を入力可能な「入力可能状態」への遷移と、がある。そして、前段のタスクＡの「出力状態」への遷移、及び後段のタスクＣの「入力可能状態」への遷移が完了すると、タスク依存関係は「依存解消状態」になる。なお、「出力状態」でない状態を「非出力状態」、「入力可能状態」でない状態を「入力禁止状態」という。
【００７３】
処理情報管理表１０６は、タスクの依存状態が変化するごとに値が変化する依存カウンタを備える。依存カウンタは、カウンタ値がタスクの依存解消状態の有無を示す。実行制御装置２０は、演算処理装置１０へ起動要求１０２を送信すると、カウンタ値を初期化する。つまり、依存状態は、前段のタスクＡが非出力状態で、後段のタスクＣが入力禁止状態へ変化する。
【００７４】
タスク２１の初期稼働状態を示す「属性情報」には、タスク２１が初期状態から稼働していることを意味する「busy」と、初期状態では稼働しておらず、依存解消状態になってはじめて稼働することを意味する「idle」とが存在する。
【００７５】
状態情報Ａ、Ｂ、Ｃ及び処理情報管理表Ａ、Ｂ、Ｃに格納される各情報の生成についての形態は限定されない。例えば、各処理の情報を、制御実行中に動的に生成する手法と、あらかじめ静的に用意しておく手法がある。ただし、動的に生成する場合であっても、処理情報を生成するために前提となる情報は静的に用意しておく必要がある。
【００７６】
次に、本発明の第２の実施形態の動作について詳細に説明する。
【００７７】
図６は、実行制御装置２０による制御手順である実行制御フローのフローチャートである。
【００７８】
図６のフローチャートを用いて、図３における演算処理装置１０が、タスクＡを実行することによって依存状態変化が起こし、状態通知１０１Ａを実行制御装置２０へ送信したときの、実行制御装置２０の動作について説明する。
【００７９】
まず、実行制御装置２０は、演算処理装置１０が実行するタスクＡから、状態通知１０１Ａを取得する（ステップＳ１００）。
【００８０】
次に、実行制御装置２０は、状態通知１０１Ａを解析し、演算処理装置ＩＤ、タスクＩＤ、状態情報を取得し（ステップＳ１０１）する。そして、実行制御装置２０は、演算処理装置検索表１０４、タスク検索表１０５を参照して、演算処理装置ＩＤとタスクＩＤに対応した処理情報管理表Ａを検索し（ステップＳ１０２）、状態解析情報から状態情報に対応した処理状態情報を取得する（ステップＳ１０３）。
【００８１】
次に、実行制御装置２０は、取得した処理状態情報から、タスクＡと依存関係にあり、依存状態が変化したタスクの数を把握し、その個数分だけ、以下のステップＳ１０５〜１０７（ループＩ）をループする（ステップＳ１０４）。本例では、タスクＡと依存関係にあるタスクはタスクＢのみなので、ループＩの処理回数は１回である。タスクＢと依存関係にあるタスクは、タスクＡ、Ｃの２つあるので、タスクＢから状態通知１０１Ｂを受け、タスクＡ、Ｃの両方の依存状態が変化した場合は、ループＩの処理回数は２回である。
【００８２】
ループＩの処理において、まず、実行制御装置２０は、処理情報管理表Ｂの依存カウンタを更新し（ステップＳ１０５）、更新の結果、タスクＢが依存解消状態にあるか否かを判定する（ステップＳ１０６）。
【００８３】
タスクＢが依存解消状態にない場合、実行制御装置２０は、ステップＳ１０７を実行せず、次のステップへ進む。すなわち、ループＩの処理を必要な回数だけ繰り返し、ループＩの処理が完了した後、ステップＳ１０８へ進む。
【００８４】
タスクＢが依存解消状態にある場合、実行制御装置２０は、タスクＢに対して起動要求１０２Ｂを出力し、依存カウンタを初期化する（ステップＳ１０７）。
【００８５】
ループＩ、すなわちステップＳ１０５〜１０７を、ステップＳ１０４で取得した依存状態が変化したタスクの個数分だけ実行したら、実行制御装置２０は、演算処理装置１０からの次の状態通知１０１を待つ（ステップＳ１０８）。
【００８６】
タスクＢ、Ｃから状態通知を受けた場合についても上記と同様である。すなわち、各タスクに対応する処理情報管理表からの処理状態情報の取得、依存関係にあるタスクの処理情報管理表の依存カウンタの更新及び依存解消状態の判定、並びに起動要求を行う。
【００８７】
なお、実行制御装置２０は、上位のＣＰＵ（Central Processing Unit）を演算処理装置１０の一つとして取り扱ってもよい。その場合、ＣＰＵからの起動コマンドをＣＰＵからの状態通知１０１として受け取ることで、実行制御フロー１２０に従って、タスクＢに対して起動要求１０２を送信する、という制御手法が可能である。
【００８８】
同様の手法で、実行制御装置２０は、演算処理システムから上位のＣＰＵに対しての割り込みを用いることで、実行制御装置２０からＣＰＵ内のタスク２１に対して起動要求１０２を送信することができる。これにより、実行制御装置２０は、上位のＣＰＵで実行される処理単位をタスクとみなし、演算処理装置と区別することなく、実行制御対象として扱うことが可能である。
【００８９】
次に、本実施形態の実行制御装置２０による実行制御について、具体例を示して詳細に説明する。
【００９０】
図７は、演算処理装置１０のタスクＡ、Ｂ、Ｃの処理フローと、それぞれのタスクに対応する処理情報管理表Ａ、Ｂ、Ｃの第１の具体例（以降、「具体例１」という。）である。
【００９１】
具体例１における演算処理装置１０は、互いに依存関係にあるタスクＡ、Ｂ、Ｃを順に実行する。また、図７において、タスクＡ、Ｂ、Ｃ及び処理情報管理表Ａ、Ｂ、Ｃからの矢印は情報の流れを、ポインタからの矢印は参照先を示す。
【００９２】
処理情報管理表Ａ、Ｂ、Ｃは、タスクＡとＢ及びタスクＢとＣが依存関係にあるため、それぞれが依存関係にあるタスクの処理情報管理表の先頭アドレスを指すポインタを備える。従って、処理情報管理表Ａ、Ｂ、Ｃは、互いの情報を参照することが可能である。
【００９３】
具体例１における演算処理装置１０が最初に実行するタスクＡの処理情報管理表Ａには、属性情報として「busy」が登録されている。全体のシステムが起動すると、属性情報として"busy"を有するタスクＡは稼働状態に遷移する。
【００９４】
一方、タスクＡの処理完了を待つタスクＢの処理情報管理表Ｂには、タスクＢ属性情報として「idle」が登録されている。タスクＢは、タスクＡの処理が完了し、依存解消状態になるまで、すなわちタスクＡが「出力状態」に遷移するまで稼働状態に遷移しない。また、タスクＢは、タスクＣが起動した後は、タスクＣが「入力可能状態」に遷移するまで稼働状態に遷移しない。
【００９５】
タスクＣについても、タスクＢと同様である。すなわち、タスクＢの処理完了を待つタスクＣの処理情報管理表Ｃには、タスクＣ属性情報として"idle"が登録されている。タスクＣは、タスクＢの処理が完了し、依存解消状態になるまで、すなわちタスクＢが「出力状態」に遷移するまで稼働状態に遷移しない。
【００９６】
次に、各タスクとそれに対応する処理情報管理表の関係について説明する。タスクＡは、処理中に依存状態が変化すると、実行制御装置２０に対して状態通知１０１Ａを送信する。
【００９７】
実行制御装置２０は、状態通知１０１Ａをキーとして処理情報管理表Ａを参照し、実行制御Ａを開始する。また、実行制御装置２０は、実行制御Ａの処理中又は処理後に、タスクＡに対して実行要求をすることも可能である。この場合、演算処理装置１０に起動要求１０２Ａを送信する。
【００９８】
タスクＢ、Ｃと処理情報管理表Ｂ、Ｃに関しても同様である。
【００９９】
次に、具体例１における実行制御装置２０の動作について詳細に説明する。
【０１００】
図８は、具体例１における演算処理システムの処理を示すシーケンスチャートである。
【０１０１】
まず、システムが起動すると、属性情報"busy"に従ってタスクＡが起動される（１−１）。演算処理装置１０は、第１の入力データに対してタスクＡを実行する。演算処理装置１０は、タスクＡの処理を完了すると、実行制御装置２０へ状態通知１０１Ａを送信する（２−１）。
【０１０２】
次に、実行制御装置２０は、状態通知１０１Ａをキーとして処理情報管理表Ａを参照し、実行制御Ａを実行し、起動要求１０２Ｂを演算処理装置１０へ送信する（３−１）。
【０１０３】
演算処理装置１０は、タスクＢを実行し、実行状態を示す状態通知１０１Ｂを実行制御装置２０へ送信する（４−１）。なお、状態通知１０１は、タスクの処理の途中で送信されてもよい。図８の例では、各タスクの処理の完了後、状態通知１０１が送信されるものとしている。
【０１０４】
実行制御装置２０は、状態通知１０１Ｂをキーとして、実行制御Ｂを実行し、起動要求１０２Ａ及び起動要求１０２Ｃを演算処理装置１０へ送信する（（１−２）、（５−１））。このように、タスクＢは、タスクＡ、Ｃと依存関係にあるため、実行制御Ｂの結果、依存状態が解消されると、タスクＡ、Ｃが起動される。演算処理装置１０は、第２の入力データに対してはタスクＡを、第１の入力データに対してはタスクＣを実行する。
【０１０５】
２回目のタスクＢの起動に関しては、上記の動作とは異なる。なぜなら、タスクＢは、タスクＡ、Ｃの両方と依存関係にあるからである。状態通知１０１Ａ（２−２）を受けて実行制御Ａが実行され、状態通知１０１Ｃ（６−１）を受けて実行制御Ｃが実行される。
【０１０６】
なお、実行制御Ａ、Ｃの実行開始の順序は、実行制御Ａ、Ｃに設定された所定の優先順位に基づく。あるいは、実行制御Ａ、Ｃの実行開始の順序は、タスクＡ、Ｃからの状態通知１０１Ａ、１０１Ｃの受信順序に従ってもよい。図８では、実行制御装置２０が、状態通知１０１Ａの方を先に受信し、実行制御Ａを先に実行したものとしている。
【０１０７】
そして、実行制御Ａ、Ｃの実行開始又は終了の順序がいずれであっても、実行制御Ａ又は実行制御Ｃの結果、タスクＢの依存状態が解消されると、起動要求１０２Ｂが送信され（３−２）、タスクＢが起動される。
【０１０８】
以降については、上記と同様である。すなわち、状態通知１０１Ｂ（４−２）を受けて実行制御Ｂが実行され、タスクＣが起動される（５−２）。そして、状態通知１０１Ｃが送信される（６−２）。
【０１０９】
図９Ａ、図９Ｂ、図９Ｃに、タスクＡ、Ｂ、Ｃから、状態通知１０１Ａ、１０１Ｂ、１０１Ｃが送信されたときの実行制御Ａ、Ｂ、Ｃのフローを示す。実行制御Ａ、Ｂ、Ｃは、図６の実行制御に従う。ただし、タスクＡ、Ｂ、Ｃのそれぞれと依存関係にあるタスクの個数によって、図６のループ部分の処理が異なる。
【０１１０】
まず、図９Ａを参照して、実行制御Ａのフローについて説明する。
【０１１１】
実行制御Ａでは、まず、実行制御装置２０は、タスクＡから送信されてきた状態通知１０１Ａを取得する（Ｓ１１０（図６のＳ１００に該当））。
【０１１２】
次に、実行制御装置２０は、状態通知１０１Ａを解析し、ステータス１０３を取得する（Ｓ１１１（Ｓ１０１に該当））。
【０１１３】
次に、実行制御装置２０は、ステータス１０３から得られる演算処理装置ＩＤ、タスクＩＤをキーとして、演算処理装置検索表１０４、タスク検索表１０５から処理情報管理表Ａを取得し、参照する（Ｓ１１２（Ｓ１０２に該当））。
【０１１４】
次に、実行制御装置２０は、処理情報管理表Ａから、ステータス１０３から得られる状態解析情報から状態情報に対応した処理状態情報を取得する（Ｓ１１３（Ｓ１０３に該当））。
【０１１５】
次に、実行制御装置２０は、処理状態情報から、タスクＢの依存状態が変化をしているか確認する（Ｓ１１４（Ｓ１０４に該当））。タスクＢの依存状態が変化していれば、Ｓ１１５へ進み、変化をしていなければ、Ｓ１１８へ進む。
【０１１６】
次に、実行制御装置２０は、処理情報管理表Ａから処理情報管理表Ｂを参照し、処理情報管理表Ｂの依存カウンタを更新する（Ｓ１１５（Ｓ１０５に該当））。つまり、実行制御装置２０は、タスクＢに必要な入力データが用意された状態に処理情報管理表Ｂを更新する。
【０１１７】
次に、実行制御装置２０は、Ｓ１１５における処理情報更新の結果、タスクＢが依存解消状態になったか否かを判定する（Ｓ１１６（Ｓ１０６に該当））。具体例１では、タスクＡと依存関係にあるタスクはタスクＢの一つのみなので、この判定結果は必ず「依存解消状態」になる。
【０１１８】
次に、実行制御装置２０は、タスクＢに対して起動要求１０２Ｂを出力し、処理情報管理表Ｂの依存カウンタを初期化する（Ｓ１１７（Ｓ１０７に該当））。
【０１１９】
次に、実行制御装置２０は、演算処理装置１０からの新たな状態通知１０１の待ち状態に移行する（Ｓ１１８（Ｓ１０８に該当））。
【０１２０】
実行制御Ｂについては、タスクＢと依存関係にあるタスクが、タスクＡ、Ｃの２つあるので、図６のループ部分に相当する処理が２回実行される。図９Ｂに、実行制御Ｂのフローを示す。このように、実行制御Ｂでは、図９ＡにおけるＳ１１４からＳ１１８に対応する処理が、タスクＡ及びタスクＣのそれぞれについて実行される。その他の処理については、タスクＢが状態通知１０１Ｂを送信すること、及び参照される情報が処理情報管理表Ｂであること以外は、実行制御Ａと同じである。
【０１２１】
実行制御Ｃについては、図９Ｃに示す通り、タスクＣが状態通知１０１Ｃを送信すること、及び参照される情報が処理情報管理表Ｃであること以外、図９Ａに示す実行制御Ａの処理と同様である。
【０１２２】
次に、本実施形態の実行制御装置２０による実行制御の第２の具体例（以降、「具体例２」という。）について、詳細に説明する。
【０１２３】
図１０に、演算処理装置１０によるタスクの処理フローと、それぞれのタスクに対応する処理情報管理表の構成を示す。具体例２における演算処理装置１０は、依存関係にある７つのタスク（タスクＤ、Ｅ、Ｆ、Ｇ、Ｈ、Ｉ、Ｊ）を実行する。また、図１０において、タスク及び処理情報管理表からの矢印は情報の流れを、ポインタからの矢印は参照先を示す。
【０１２４】
７つの処理情報管理表Ｄ、Ｅ、Ｆ、Ｇ、Ｈ、Ｉ、Ｊは、それぞれ、タスクの依存関係に従った参照先の処理情報管理表を指すポインタを備える。
【０１２５】
処理情報管理表Ｄ、Ｅは、処理情報管理表Ｆの先頭アドレスを指すポインタを備える。処理情報管理表Ｆは、処理情報管理表Ｄ、Ｅ、Ｇの先頭アドレスを指すポインタを備える。処理情報管理表Ｇは、処理情報管理表Ｆ、Ｈ、Ｉ、Ｊの先頭アドレスを指すポインタを備える。処理情報管理表Ｈ、Ｉ、Ｊは、処理情報管理表Ｇの先頭アドレスを指すポインタを備える。このように、処理情報管理表はタスクの依存関係に従ってポインタを備えるので、処理情報管理表Ｆ、Ｇは複数のポインタを備える。
【０１２６】
具体例２における処理フローで、最初に実行されるタスクＤ、Ｅの処理情報管理表Ｄ、Ｅは処理属性として「busy」との情報を持つ。全体のシステムが起動すると、上記処理属性を有するタスクＤ、Ｅは稼働状態に遷移する。
【０１２７】
逆に、前段のタスクの処理完了を待つ、タスクＦ、Ｇ、Ｈ、Ｉ、Ｊの処理情報管理表Ｆ、Ｇ、Ｈ、Ｉ、Ｊは、処理属性として「idle」との情報を持つ。タスクＦ、Ｇ、Ｈ、Ｉ、Ｊは、それぞれの前段のタスクの処理が完了し、依存解消状態になるまで稼働状態に遷移しない。
【０１２８】
次に、各タスクとそれに対応する処理情報管理表１０６の関係について説明する。タスクＤは、処理中に依存状態が変化すると、実行制御装置２０に対して状態通知１０１Ｄを送信する。このとき、実行制御装置２０は、状態通知１０１Ｄをキーとして処理情報管理表Ｄを参照し、実行制御Ｄを開始する。
【０１２９】
他のタスクＥ、Ｆ、Ｇ、Ｈ、Ｉ、Ｊと処理情報管理表Ｅ、Ｆ、Ｇ、Ｈ、Ｉ、Ｊに関しても、同様である。
【０１３０】
次に、具体例２における実行制御装置２０の動作について詳細に説明する。
【０１３１】
図１１は、具体例２における演算処理システムの処理を示すシーケンスチャートである。
【０１３２】
まず、システムが起動すると、属性情報"busy"に従ってタスクＤ、Ｅが起動される（１−１）。演算処理装置１０は、第１の入力データに対してタスクＤ、Ｅを実行する。
【０１３３】
演算処理装置１０は、実行制御装置２０へ、タスクＤの処理を完了すると状態通知１０１Ｄを送信し、タスクＥの処理を完了すると状態通知１０１Ｅを送信する（２−１）。
【０１３４】
次に、実行制御装置２０は、状態通知１０１Ｄ、１０１Ｅのそれぞれをキーとして、実行制御Ｄ、Ｅを実行する。実行制御Ｄ、Ｅの両方が実行されたならば、タスクＦの２つの入力データ（第１の入力データ）が揃う。また、タスクＦは、初期状態では出力データを書き込める状態であるため、依存解消状態となる。このとき、実行制御装置２０は起動要求１０２Ｆを演算処理装置１０へ送信する（３−１）。演算処理装置１０は、第１の入力データに対してタスクＦを実行する。
【０１３５】
次に、演算処理装置１０は、タスクＦの処理を完了した結果、依存状態が変化すれば、状態通知１０１Ｆを実行制御装置２０へ送信する（４−１）。
【０１３６】
実行制御装置２０は、状態通知１０１Ｆをキーとして、実行制御Ｆを実行する。そして、実行制御装置２０は、演算処理装置１０へ、起動要求１０２Ｄ、１０２Ｅ、１０２Ｇを送信する（（１−２）、（５−１））。演算処理装置１０は、第２の入力データに対してタスクＤ、Ｅを実行し、第１の入力データに対してタスクＧを実行する。
【０１３７】
次に、演算処理装置１０は、タスクＤ、Ｅの処理を完了し、依存状態が変化すれば、状態通知１０１Ｄ、１０１Ｅを実行制御装置２０へ送信する（２−２）。また、演算処理装置１０は、タスクＧの処理を完了し、依存状態が変化すれば、状態通知１０１Ｇを実行制御装置２０へ送信する（６）。
【０１３８】
実行制御装置２０は、状態通知１０１Ｄ、１０１Ｅをキーとして実行制御Ｄ、Ｅを実行し、状態通知１０１Ｇをキーとして実行制御Ｇを実行する。そして、実行制御装置２０は、起動要求１０２Ｆを演算処理装置１０へ送信する（３−２）。また、実行制御装置２０は、起動要求１０２Ｈ、１０２Ｉ、１０２Ｊを演算処理装置１０へ送信する（（７）、（８）、（９））。
【０１３９】
演算処理装置は、第２の入力データに対してタスクＦを実行し、状態通知１０１Ｆを実行制御装置２０へ送信する（４−２）。また、演算処理装置は、第１の入力データに対してタスクＨ、Ｉ、Ｊを実行し、状態通知１０１Ｈ、１０１Ｉ、１０１Ｊを実行制御装置２０へ送信する（（１０）、（１１）、（１２））。
【０１４０】
実行制御装置２０は、状態通知１０１Ｆをキーとして、実行制御Ｆを実行する。そして、実行制御装置２０は、演算処理装置１０へ、起動要求１０２Ｄ、１０２Ｅを送信する（１−３）。
【０１４１】
演算処理装置１０は、第３の入力データに対してタスクＤ、Ｅの処理を実行し、状態通知１０１Ｄ、１０１Ｅを実行制御装置２０へ送信する（２−３）。
【０１４２】
また、実行制御装置２０は、状態通知１０１Ｈ、１０１Ｉ、１０１Ｊのそれぞれをキーとして、実行制御Ｈ、Ｉ、Ｊを実行する。このとき、状態通知１０１Ｆをキーとした実行制御Ｆが実行済みなので、実行制御装置２０は、起動要求１０２Ｇを演算処理装置１０へ送信する（５−２）。
【０１４３】
このように、実行制御装置２０は、後段のタスクが前の入力データに対する処理を実行しているときに、起動準備のできた前段のタスクに対して起動要求１０２を送信する。従って、連続して入力されるデータに対して、前のデータに対する処理中に、次のデータに対する処理を開始することができる。従って、処理状態管理表という１つの依存状態を管理する情報のみを用いて、連続するデータ入力に対するパイプライン処理を実現することができる。
【０１４４】
図１２Ａから図１２Ｇに、タスクＤ、Ｅ、Ｆ、Ｇ、Ｈ、Ｉ、Ｊから、それぞれ状態通知１０１Ｄ、 １０１Ｅ、１０１Ｆ、１０１Ｇ、１０１Ｈ、１０１Ｉ、１０１Ｊを受信したときの、実行制御装置２０による実行制御Ｄ、Ｅ、Ｆ、Ｇ、Ｈ、Ｉ、Ｊのフローを示す。ここで、各タスクの実行制御は、図１０に示した、具体例２における演算処理装置１０によるタスクの処理フローに対応するものである。
【０１４５】
各々の実行制御のフローは、図６のフローに準じる。ただし、各々の実行制御のフローは、図１０に示したタスクの依存関係に従って、図６のループ部分のループ回数及びループ内での処理対象タスクが異なる。図９のフローも同様の構成であり、図９については詳細に説明したので、図１２Ａから図１２Ｇについての説明は省略する。
（第２の実施形態の効果）
以上のように、本実施形態では、前段のタスクについてはそのタスクによる処理結果のデータの有無によって、後段のタスクについては前のデータの読み取りの完了の有無によって、タスク間の依存状態を判断する。すなわち、入力データが準備され、さらに出力データを書き込む領域が揃った時点で、タスクは依存解消状態、つまり、実行制御装置２０が演算処理装置１０に対してタスクの起動要求が可能な状態と判断される。そのため、連続データ処理において、ジョブを構成する各タスクをステージとして、ジョブをパイプライン的に動作させることができる。従って、連続するデータ入力において、実行制御装置２０は、演算処理装置を、前のデータと次のデータを並列的に処理するように制御することが可能である。以上のような実行制御によって、演算処理装置１の、全体としての処理スループットを向上させることができる。
【０１４６】
さらに、実行制御装置２０は、タスクを並列に実行する場合であっても、特許文献１において、”ジョブ”を構成するタスク間の依存関係及び依存状態を示すために用いられる「処理情報」を、複数生成する必要がない。本実施形態では、各タスクに対応した、一つの処理情報管理表を動的に更新し続けることによって実行制御することができる。そのため、タスクを並列に実行する場合であっても、実行制御に必要な情報を格納するためのメモリの使用量が増加しない。
（第３の実施形態）
次に、本発明の第３の実施の形態の構成について、図１３と図１４を参照して詳細に説明する。
【０１４７】
図１３は、本発明の第３の実施形態による演算処理システムの全体構成を示すブロック図である。本実施形態の演算処理システム３は、図３に示した第２の実施形態の演算処理システムと同じ構成を備える。また、３つのタスク、タスクＡ、Ｂ、Ｃの依存関係についても、第２の実施形態と同じである。また、図１３には図示されていないが、第２の実施形態と同様に、演算処理装置１０は、複数個の演算処理装置１１、１２、１３を含んでもよい。ただし、以下に説明するように、情報管理部２１が保持する処理情報管理表１０７の内容が異なる。
【０１４８】
図１４は、処理情報管理表１０７の内部の情報の構成を示す。処理情報管理表１０７は、第２の実施形態における処理情報管理表１０６とほぼ同様の構成を備える。
【０１４９】
ただし、処理情報管理表１０７は、第２の実施形態の具体例で示した、タスクの初期稼働状態を示す属性情報（以降、「第１の属性情報」という。）に加え、第２の属性情報を保持する。
【０１５０】
第２の属性情報は、入力データを読み込んだことに対する応答の有無、すなわち、タスクがデータを読み込んだという実行情報を状態通知１０１に含めるか否かを示す。後段のタスクが、前段のタスクの出力の有無に依存しない依存関係、すなわち、前段のタスクと後段のタスクとの関係が前述の制御依存の関係にあり、データ依存の関係にない場合は、前段のタスクは、後段のタスクが起動されたとき、即座に起動可能である。つまり、制御依存の関係にある後段のタスクは、起動されると、入力可能状態になるとみなすことができる。従って、後段のタスクは、入力データを読み込んだことに対して応答する必要がない。このような場合、後段のタスクの第２の属性情報として、「応答無し」が登録される。本実施形態では、タスクＡのみが、次段のタスクＢが入力可能状態でなくても起動可能であるものとする。従って、処理情報管理表Ｂのみが、第２の処理属性情報として、「応答無し」を持つ。
【０１５１】
なお、あるタスクＴ０の後段に制御依存の関係にあるタスクが複数個ある場合は、それらのうちの１個のタスクが起動されても、タスクＴ０は即座に起動可能とはならず、依存状態が１つだけ減少するのみである。さらに、タスクＴ０の前段に制御依存又はデータ依存の関係にあるタスクが１個又は複数個ある場合は、前後段のいずれかのタスクが起動されても、依存状態が１つだけ減少のみである。
【０１５２】
例えば、タスクＴ０の前段に依存関係にあるタスクＴ１１、Ｔ１２があり、タスクＴ０の後段に制御依存の関係にあるタスクＴ２１、Ｔ２２があるとする。この場合、例えば後段のタスクＴ１２のみが起動されても、タスクＴ０は即座に起動可能とはならず、依存状態が１つだけ減少のみである。すなわち、後段のタスクＴ２１、Ｔ２２が両方起動され、さらに前段のタスクＴ１１、Ｔ１２との間の依存状態も解消しなければ、タスクＴ０は起動可能とはならない。
【０１５３】
このように、依存状態を１つだけ減少させてよい場合には、後段のタスクＴ２１、Ｔ２２の第２の属性情報として、「応答無し」を登録することができる。
【０１５４】
また、処理情報管理表１０７は、第２の属性情報である「応答無し」を活用するために、図１４に示す通り、他の処理情報管理表１０７の先頭アドレスを指すポインタとともに、依存関係にあるタスクが入力側か出力側かを示す入出力識別情報を備える。
【０１５５】
なお、処理情報管理表１０７及び処理情報管理表１０７に格納される各情報の生成についての形態は限定されない。例えば、各処理の情報を、制御実行中に動的に生成する手法と、あらかじめ静的に用意しておく手法がある。ただし、動的に生成する場合であっても、処理情報を生成するために前提となる情報は静的に用意しておく必要がある。
【０１５６】
次に、本発明の第３の実施の形態の動作について、図１５を参照して詳細に説明する。
【０１５７】
図１５は、実行制御装置２０による実行制御処理フローのフローチャートである。
【０１５８】
図１５のフローチャートを用いて、図１３における演算処理装置１０が、タスクＡを実行することによって依存状態変化が起こり、状態通知１０１を実行制御装置２０へ送信したときの、実行制御装置２０の動作について説明する。
【０１５９】
まず、実行制御装置２０は、演算処理装置１０が実行したタスクＡから状態通知１０１Ａを取得する（ステップＳ２００）。
【０１６０】
次に、実行制御装置２０は、状態通知１０１Ａを解析し、演算処理装置ＩＤ、タスクＩＤ、状態情報を取得する（ステップＳ２０１）。そして、実行制御装置２０は、演算処理装置検索表１０４、タスク検索表１０５から演算処理装置ＩＤとタスクＩＤに対応した処理情報管理表Ａを参照し（ステップＳ２０２）、状態解析情報から状態情報に対応した処理状態情報を取得する（ステップＳ２０３）。
【０１６１】
次に、実行制御装置２０は、取得した処理状態情報から、タスクＡと依存関係にあり、依存状態が変化したタスクの数を把握し、その個数分だけ、以下のステップＳ２０５〜２１３（ループＩ）をループする（ステップＳ２０４）。本例では、タスクＡと依存関係にあるタスクはタスクＢのみなので、ループの回数は１回である。タスクＢと依存関係にあるタスクは、タスクＡ、Ｃの２つあるので、タスクＢから状態通知１０１Ｂを受け、タスクＡ、Ｃの両方の依存状態が変化した場合は、ループの回数は２回である。
【０１６２】
ループＩの処理において、まず、実行制御装置２０は、処理情報管理表Ｂの依存カウンタを更新し（ステップＳ２０５）、更新の結果、タスクＢが依存解消状態にあるか否かを判定する（ステップＳ２０６）。
【０１６３】
タスクＢが依存解消状態にない場合、実行制御装置２０は、ステップＳ２０７〜２１３を実行せず、次のステップへ進む。すなわち、ループＩの処理を必要な回数だけ繰り返し、ループＩの処理が完了した後、ステップＳ２１４へ進む。
【０１６４】
タスクＢが依存解消状態にある場合、実行制御装置２０は、タスクＢに対して起動要求１０２Ｂを送信し、依存カウンタを初期化する（ステップＳ２０７）。
【０１６５】
次に、実行制御装置２０は、タスクＢが第２の属性情報として「応答無し」を持つか否かを判定する（ステップＳ２０８）。
【０１６６】
実行制御装置２０は、タスクＢが第２の属性情報として「応答無し」を持たない場合、ステップＳ２０９〜２１３を実行せず、次のステップへ進む。すなわち、ループＩの処理を必要な回数だけ繰り返し、ループＩの処理が完了した後、ステップＳ２１４へ進む。
【０１６７】
実行制御装置２０は、タスクＢが第２の属性情報として「応答無し」を持つ場合、タスクＢに対してデータを出力するタスクの数を把握し、その個数分だけ、以下のステップＳ２１０〜２１３（ループＩＩ）をループする（ステップＳ２０９）。本例では、タスクＡのみがタスクＢにデータを出力するので、ループＩＩの処理回数は１回である。
【０１６８】
ループＩＩの処理において、まず、実行制御装置２０は、タスクＢに対してデータを出力するタスクの処理情報管理表１０７の依存カウンタを更新する（ステップＳ２１０）。本例では、タスクＡのみがタスクＢにデータを出力するので、処理情報管理表Ａの依存カウンタが更新される。
【０１６９】
次に、実行制御装置２０は、タスクＡが依存解消状態にあるか否かを判定する（ステップＳ２１１）。
【０１７０】
実行制御装置２０は、タスクＡが依存解消状態にない場合、ステップＳ２１２、Ｓ２１３を実行せず、次のステップへ進む。すなわち、ループＩ及びループＩＩの処理を必要な回数だけ繰り返し、ループＩ及びループＩＩの処理が完了した後、ステップＳ２１４へ進む。
【０１７１】
実行制御装置２０は、タスクＡが依存解消状態にある場合、タスクＡに対して起動要求１０２Ａを出力し、依存カウンタを初期化する（ステップＳ２１２）。
【０１７２】
実行制御装置２０は、実行制御装置２０が起動要求１０２Ａを送信したタスクＡに対して、ステップＳ２０８〜２１３を実行する（ステップＳ２１３）。
【０１７３】
実行制御装置２０は、ループＩＩ（ステップＳ２１０〜２１３）を、ステップＳ２１０で取得した回数分実行したら、タスクＡと依存関係にある次のタスクに関してループＩ（ステップＳ２０５〜２１３）を実行する。本例では、タスクＡと依存関係にあるタスクはタスクＢのみであるから、タスクＢに対してのみ、ステップＳ２０５〜２１２が実行される。
【０１７４】
次に、実行制御装置２０は、ループＩ（ステップＳ２０５〜２１３）をステップＳ２０４で取得した回数分実行したら、演算処理装置１０からの次の状態通知１０１を待つ状態へ移行する（ステップＳ２１４）。本例では、依存状態が変化したタスクはタスクＢのみであるから、実際にはループＩの処理は１回だけ実行される。
【０１７５】
なお、演算処理装置１０が実行する処理フローが、演算処理装置１０が第２の属性情報として「応答無し」を持つタスクを起動すると同時に、前段のタスクを起動することがない演算処理フローである場合、ステップＳ２１３は不要である。
【０１７６】
次に、本実施形態の実行制御装置２０による実行制御のについて、具体例を示して詳細に説明する。
【０１７７】
図１６に、演算処理装置１０のタスクＡ、Ｂ、Ｃの処理フローと、それぞれのタスクに対応する処理情報管理表Ａ、Ｂ、Ｃ第１の具体例（以降、「具体例１」という。）である。
【０１７８】
具体例１における演算処理装置１０は、互いに依存関係にあるタスクＡ、Ｂ、Ｃを順に実行する。また、図１６において、タスクＡ、Ｂ、Ｃ及び処理情報管理表Ａ、Ｂ、Ｃからの矢印は情報の流れを、ポインタからの矢印は参照先を示す。
【０１７９】
３つの処理情報管理表Ａ、Ｂ、Ｃは、タスクＡとＢ及びタスクＢとＣが依存関係にあるため、それぞれが依存関係にあるタスクの処理情報管理表の先頭アドレスを指すポインタを備える。従って、処理情報管理表Ａ、Ｂ、Ｃは、互いの情報を参照することが可能である。
【０１８０】
また、タスクＢは、処理情報管理表Ｂに、第２の属性情報として「応答無し」を持つ。
【０１８１】
具体例１における演算処理装置１０が最初に実行するタスクＡの処理情報管理表Ａには、第１の属性情報として"busy"が登録されている。全体のシステムが起動すると、第１の属性情報として"busy"を有するタスクＡは稼働状態に遷移する。
【０１８２】
一方、タスクＡの処理完了を待つタスクＢの処理情報管理表Ｂには第１の属性情報として"idle"が登録されている。タスクＢは、タスクＡの処理が完了し、依存解消状態になるまで、すなわちタスクＡが「出力状態」に遷移するまで稼働状態に遷移しない。また、タスクＢは、タスクＣが起動した後は、タスクＣが「入力可能状態」に遷移するまで稼働状態に遷移しない。
【０１８３】
タスクＣについても、タスクＢと同様である。すなわち、タスクＢの処理完了を待つタスクＣの処理情報管理表Ｃには、タスクＣの第１の属性情報として"idle"が登録されている。タスクＣは、タスクＢの処理が完了し、依存解消状態になるまで、すなわちタスクＢが「出力状態」に遷移するまで稼働状態に遷移しない。
【０１８４】
次に、各タスクとそれに対応する処理情報管理表の関係について説明する。タスクＡは、処理中に依存状態が変化すると、実行制御装置２０に対して状態通知１０１Ａを送信する。
【０１８５】
実行制御装置２０は、状態通知１０１Ａをキーとして処理情報管理表Ａを参照し、実行制御Ａを開始する。また、実行制御装置２０は、実行制御Ａの処理中又は処理後に、タスクＡに対して実行要求をするようにしてもよい。この場合、実行制御装置２０は、演算処理装置１０に起動要求１０２Ａを送信する。
【０１８６】
タスクＢ、Ｃと処理情報管理表Ｂ、Ｃに関しても同様である。
【０１８７】
次に、具体例１における実行制御装置２０の動作について詳細に説明する。
【０１８８】
図１７は、具体例３における演算処理システムの処理を示すシーケンスチャートである。
【０１８９】
まず、システムが起動すると、第１の属性情報"busy"に従ってタスクＡが起動される（１−１）。演算処理装置１０は、第１の入力データに対してタスクＡを実行する。演算処理装置１０は、タスクＡの処理を完了すると、実行制御装置２０へ状態通知１０１Ａを送信する（２−１）。なお、状態通知１０１は、タスクの処理の途中で送信されてもよい。図１７の例では、各タスクの処理の完了後、状態通知１０１が送信されるものとしている。
【０１９０】
次に、実行制御装置２０は、状態通知１０１Ａをキーとして処理情報管理表Ａを参照し、実行制御Ａを実行し、起動要求１０２Ｂを演算処理装置１０へ送信する（３−１）。演算処理装置１０は、第１の入力データに対してタスクＢを実行する。
【０１９１】
一方、実行制御装置２０は、タスクＢが第２の属性情報として「応答無し」を持ち、且つ、タスクＡが依存関係にあるのはタスクＢのみであるため、起動要求１０２Ａを演算処理装置１０へ送信する（１−２）。演算処理装置１０は、第２の入力データに対してタスクＡを実行する。
【０１９２】
演算処理装置１０は、タスクＢを実行し、実行状態を示す状態通知１０１Ｂを実行制御装置２０へ送信する（４−１）。
【０１９３】
実行制御装置２０は、状態通知１０１Ｂをキーとして、実行制御Ｂを実行し、起動要求１０２Ｃを演算処理装置１０へ送信する（５−１）。タスクＡは、タスクＢの入力可能状態に依存せず起動可能なので、実行制御Ｂの結果としては、起動要求１０２Ａは出力されない。
【０１９４】
そして、演算処理装置１０は、タスクＣを実行する。このように、タスクＣはタスクＢの出力状態に依存するため、実行制御Ｂの結果、依存状態が解消されると、タスクＣが起動される。
【０１９５】
２回目のタスクＢの起動に関しては、上記の動作とは異なる。なぜなら、タスクＢは、タスクＡ、Ｃの両方と依存関係にあるからである。状態通知１０１Ａ（２−２）を受けて実行制御Ａが実行され、状態通知１０１Ｃ（６−１）を受けて実行制御Ｃが実行される。
【０１９６】
なお、実行制御Ａ、Ｃの実行順序は、実行制御Ａ、Ｃに設定された所定の優先順位に基づく。あるいは、実行制御Ａ、Ｃの実行開始の順序は、タスクＡ、Ｃからの状態通知１０１Ａ、１０１Ｃの受信順序に従ってもよい。図１７では、実行制御装置２０が、状態通知１０１Ａの方を先に受信し、実行制御Ａを先に実行したものとしている。
【０１９７】
そして、実行制御Ａ、Ｃの実行開始又は終了の順序がいずれであっても、実行制御Ａ又は実行制御Ｃの結果、タスクＢの依存状態が解消されると、起動要求１０２Ｂが送信され（３−２）、タスクＢが起動される。
【０１９８】
以降については、上記と同様である。すなわち、タスクＢの起動後、タスクＡが起動され（１−３）、タスクＡの実行後、状態通知１０１Ａが送信される（２−３）。
【０１９９】
また、状態通知１０１Ｂ（４−２）を受けて実行制御Ｂが実行され、タスクＣが起動される（５−２）。そして、状態通知１０１Ｃが送信される（６−２）。
【０２００】
以上の動作を繰り返すことによって、連続して入力されるデータに対して、必要最小限の状態通知１０１のみで、パイプライン処理を行うことが可能となる。
【０２０１】
次に、本実施形態の実行制御装置２０による実行制御の第２の具体例（以降、「具体例２」という。）について、詳細に説明する。
【０２０２】
図１８に、演算処理装置１０によるタスクの処理フローと、それぞれのタスクに対応する処理情報管理表の構成を示す。具体例２における演算処理装置１０は、依存関係にある７つのタスク（タスクＤ、Ｅ、Ｆ、Ｇ、Ｈ、Ｉ、Ｊ）を実行する。また、図１８において、タスク及び処理情報管理表からの矢印は情報の流れを、ポインタからの矢印は参照先を示す。
【０２０３】
７つの処理情報管理表Ｄ、Ｅ、Ｆ、Ｇ、Ｈ、Ｉ、Ｊは、それぞれ、タスクの依存関係に従った参照先の処理情報管理表を指すポインタを備える。
【０２０４】
処理情報管理表Ｄ、Ｅは、処理情報管理表Ｆの先頭アドレスを指すポインタを備える。処理情報管理表Ｆは、処理情報管理表Ｄ、Ｅ、Ｇの先頭アドレスを指すポインタを備える。処理情報管理表Ｇは、処理情報管理表Ｆ、Ｈ、Ｉ、Ｊの先頭アドレスを指すポインタを備える。処理情報管理表Ｈ、Ｉ、Ｊは、処理情報管理表Ｇの先頭アドレスを指すポインタを備える。このように、処理情報管理表はタスクの依存関係に従ってポインタを備えるので、処理情報管理表Ｆ、Ｇは複数のポインタを備える。
【０２０５】
また、タスクＦ、Ｇ、Ｈ、Ｉ、Ｊは、第２の識別情報として「応答無し」を持つ。
【０２０６】
具体例２における演算処理装置１０が最初に実行するタスクＤ、Ｅの処理情報管理表Ｄ、Ｅは、第１の属性情報として"busy"が登録されている。全体のシステムが起動すると、第１の属性情報として"busy"を有するタスクＤ、Ｅは稼働状態に遷移する。
【０２０７】
一方、前段のタスクの処理完了を待つタスクの処理情報管理表１０７は、第１の処理属性として"idle"が登録されている。第１の処理属性として"idle"を有するタスクは、前段のタスクが処理が完了し、依存解消状態になるまで、すなわち前段のタスクが「出力状態」に遷移するまで稼働状態に遷移しない。
【０２０８】
なお、後段のタスクが起動した後の、その前段のタスクの稼動状態への遷移の可否は、後段のタスクの第２の識別情報に依存する。後段のタスクが第２の識別情報として「応答無し」を持つ場合は、前段のタスクと後段のタスクとの関係は制御依存の関係にあり、データ依存の関係にない。従って、後段のタスクからの応答に関係なく、前段のタスクと後段のタスクとの依存状態を１つだけ減少させることができる。すなわち、前段のタスクと制御依存の関係にある後段のタスクが１個の場合は、後段のタスクが起動されると、前段のタスクは即座に起動可能となる。前段のタスクと制御依存の関係にある後段のタスクが複数個ある場合は、すべての後段のタスクが起動されると、依存状態が解消され、前段のタスクは、即座に起動可能となる。ただし、上記のいずれの場合においても、前段のタスク自身が、さらに前段に制御依存又はデータ依存の関係にある前々段タスクを１個又は複数個持つ場合は、前段のタスクが起動可能となるためには、前々段のすべてのタスクとの依存状態も解消されている必要がある。
【０２０９】
後段のタスクが第２の識別情報として「応答無し」を持たない場合は、後段のタスクが「入力可能状態」に遷移するまで、前段のタスクは稼働状態に遷移できない。
【０２１０】
次に、各タスクとそれに対応する処理情報管理表１０７の関係について説明する。タスクＤは、処理中に依存状態が変化すると、実行制御装置２０に対して状態通知１０１Ｄを送信するこのとき、実行制御装置２０は、状態通知１０１Ｄをキーとして処理情報管理表Ｄを参照し、実行制御Ｄを開始する。また、実行制御装置２０は、実行制御中にタスクＤに対して実行要求をする場合、演算処理装置１０に起動要求Ｄを送信する。
【０２１１】
他のタスクＥ、Ｆ、Ｇ、Ｈ、Ｉ、Ｊと処理情報管理表Ｅ、Ｆ、Ｇ、Ｈ、Ｉ、Ｊに関しても、同様である。
【０２１２】
次に、具体例２における実行制御装置２０の動作について詳細に説明する。
【０２１３】
図１９は、具体例２における演算処理システムの処理を示すシーケンスチャートである。
【０２１４】
まず、システムが起動すると、第１の属性情報"busy"に従ってタスクＤ、Ｅが起動される（１−１）。演算処理装置１０は、第１の入力データに対してタスクＤ、Ｅを実行する。
【０２１５】
演算処理装置１０は、実行制御装置２０へ、タスクＤの処理を完了すると状態通知１０１Ｄを送信し、タスクＥの処理を完了すると状態通知１０１Ｅを送信する（２−１）。
【０２１６】
次に、実行制御装置２０は、状態通知１０１Ｄ、Ｅのそれぞれをキーとして、実行制御Ｄ、Ｅを実行する。ここで、実行制御Ｄ、Ｅの両方が実行されたならば、タスクＦは、入力データが揃った状態であり、さらに、タスクＧは、実行制御システムの起動後、一度も起動されていない初期状態であり、タスクＦはタスクＧへの出力データを書き込める状態である。そのため、タスクＦは依存解消状態となるので、実行制御装置２０は起動要求１０２Ｆを演算処理装置１０へ送信する（３−１）。
【０２１７】
ところで、タスクＦの第２の識別情報は「応答無し」で、且つ、タスクＤ、Ｅが依存関係にあるのはタスクＦのみである。そのため、実行制御装置２０は、演算処理装置１０への起動要求１０２Ｆを送信（３−１）とほぼ同時に、起動要求１０２Ｄ、Ｅを演算処理装置１０へ送信する（１−２）。演算処理装置は、第２のデータ入力に対して、タスクＤ、Ｅの実行を開始する。つまり、演算処理装置１０が、前の入力データに対してタスクＦを開始するたびに、演算処理装置１０は、並行して、次の入力データに対してタスクＤ、Ｅを開始することができる。そして、演算処理装置１０は、第２の入力データに対するタスクＤ、Ｅの処理を完了すると、状態通知１０１Ｄ、Ｅを実行制御装置２０へ送信する（２−２）。
【０２１８】
第３、第４のデータ入力に対するタスクＤ、Ｅの起動要求１０２Ｄ、Ｅ（（１−３）、（１−４））、及び第３、第４のデータ入力に対するタスクＤ、Ｅの処理の完了時の状態通知１０１Ｄ、Ｅ（（２−３）、（２−４））についても、上記と同様である。
【０２１９】
演算処理装置１０は、第１の入力データに対するタスクＦの処理を完了すると、状態通知１０１Ｆを実行制御装置２０へ送信する（４−１）。実行制御装置２０は、状態通知１０１Ｆをキーとして、実行制御Ｆを実行し、起動要求１０２Ｇを演算処理装置１０へ送信する（５−１）。なぜなら、タスクＧは入力データが揃った状態であり、タスクＨ、Ｉ、Ｊは初期状態のため、タスクＧはタスクＨ、Ｉ、Ｊへの出力データを書き込める状態であるため、タスクＧは依存解消状態であるからである。
【０２２０】
演算処理装置１０は、第１の入力データに対するタスクＧの処理を完了すると、状態通知１０１Ｇを実行制御装置２０へ送信する（６−１）。実行制御装置２０は、状態通知１０１Ｇをキーとして、実行制御Ｇを実行し、起動要求１０２Ｈ、Ｉ、Ｊを演算処理装置１０へ送信する（（７−１）、（８−１）、（９−１））。なぜなら、タスクＨ、Ｉ、Ｊは入力データが揃った状態であり、タスクＨ、Ｉ、Ｊは依存解消状態であるからである。
【０２２１】
タスクＧも、タスクＦと同様に、第２の識別情報として「応答無し」を持つ。そのため、実行制御装置２０は、演算処理装置１０へ起動要求１０２Ｇを送信し（５−１）、第２の入力データに対するタスクＤ、Ｅの処理の完了時の状態通知１０１Ｄ、Ｅの両方を実行制御装置２０へ送信している場合、タスクＦは依存解消状態となる。従って、実行制御装置２０は起動要求１０２Ｆを演算処理装置１０へ送信できる（３−２）。演算処理装置１０は、第２の入力データに対するタスクＦの処理を完了すると、状態通知１０１Ｆを実行制御装置２０へ送信する（４−２）。
【０２２２】
第３のデータ入力に対するタスクＦの起動要求１０２Ｆ（３−３）、及び第３のデータ入力に対するタスクＦの処理の完了時の状態通知１０１Ｆ（４−３）についても、上記と同様である。
【０２２３】
また、タスクＨ、Ｉ、Ｊも同様に、第２の識別情報として「応答無し」を持つ。そのため、演算処理装置１０が、第１のデータ入力に対してタスクＨ、Ｉ、Ｊをすべて開始するときに、第２の入力データに対するタスクＦの処理を完了し、演算処理装置１０が状態通知１０１Ｆを実行制御装置２０へ送信している場合、タスクＧは依存解消状態となる。従って、実行制御装置２０は起動要求１０２Ｇを演算処理装置１０へ送信できる（５−２）。
【０２２４】
演算処理装置１０は、第２の入力データに対するタスクＧの処理を完了すると、状態通知１０１Ｇを実行制御装置２０へ送信する（６−２）。実行制御装置２０は、状態通知１０１Ｇをキーとして、実行制御Ｇを実行し、起動要求１０２Ｈ、Ｉ、Ｊを演算処理装置１０へ送信する（（７−２）、（８−２）、（９−２））。
【０２２５】
このように、実行制御装置２０は、後段のタスクが前の入力データに対する処理の実行中に、起動準備のできた前段のタスクに対して起動要求１０２を送信する。そのため、連続してデータが入力される場合であっても、前の入力データに対する処理の実行中に、次のデータに対する処理を開始することができる。このとき、実行制御には、タスクごとの処理情報管理表１０７のみを用いる。そのように、本実施形態の演算処理システムは、連続するデータ入力に対するパイプライン処理が、１種類の管理情報のみを用いて実現することが可能である。
（第３の実施形態の効果）
第３の実施形態では、第２の識別情報として「応答無し」を持つタスクが入力データを読み込んだという状態通知１０１、つまり、その前段のタスクにとって、出力データを書き込める状態へ遷移したという状態通知１０１が不要である。そのため、状態通知１０１を解析し、処理状態情報を取得するといった制御処理が不要になる。その結果、実行制御のための処理サイクル数が削減される。そのため、実行制御装置２０は、次のデータ入力に対するタスクを起動するための起動要求１０２を、より早く演算処理装置１０へ送信できる。従って、第２の実施形態の効果に加えて、連続する入力データの処理に対する処理スループットがさらに向上するという利点がある。
（第４の実施形態）
次に、本発明の第４の実施の形態の構成について図２０から図２２を参照して詳細に説明する。
【０２２６】
図２０は、本発明の第４の実施形態による演算処理システムの全体構成を示すブロック図である。本実施形態の演算処理システム４は、図３、１３に示した第２、第３の実施形態の演算処理システムと同じ構成を備える。ただし、本実施形態の演算処理システムは、第２、第３の実施形態の演算処理システムとは機能的に異なる部分を持つ。
【０２２７】
まず、本実施形態では、タスク間のデータの受け渡しは、「チャネル」を介して行われる。具体的には、タスクＡは、後段のタスクＢに出力するデータをチャネルａに書き込む。タスクＢは、チャネルａからデータを読み出し、処理を実行する。そして、タスクＢは、後段のタスクＣに出力するデータをチャネルｂに書き込む。タスクＣは、チャネルｂからデータを読み出し、処理を実行する。これに対して、第１、第２、第３の実施形態では、タスク間のデータの受け渡しは、タスクからタスクへ直接行われる。
【０２２８】
また、本実施形態では、３つのタスク、タスクＡ、Ｂ、Ｃ間には依存関係がなく、各タスクはチャネルとの間に依存関係を持つ。
【０２２９】
具体的には、チャネルａに書き込み可能な領域がないとき、タスクＡはチャネルａに対する依存状態にある。同様に、チャネルｂに書き込み可能な領域がないとき、タスクＢはチャネルｂに対する依存状態にある。
【０２３０】
また、チャネルａに読み出し可能なデータがないとき、タスクＢはチャネルａに対する依存状態にある。同様に、チャネルｂに読み出し可能なデータがないとき、タスクＣはチャネルｂに対する依存状態にある。
【０２３１】
このように、タスクＡとタスクＢとの間、及びタスクＢとタスクＣとの間には直接の依存関係がなく、チャネルを介して間接的に依存関係を持つ。
【０２３２】
さらに、以下に説明するように、本実施形態では、情報管理部２１の保持内容が異なる。すなわち、実行制御装置２０は、メモリ等の記憶部（図示なし）を含み、タスク情報１０８、チャネル情報１０９を保持する。
【０２３３】
タスク情報１０８は、演算処理装置１０が実行するタスクに関する情報で、第２、第３の実施形態における処理情報管理表１０６に相当する。すなわち、タスク情報１０８は、タスクＩＤ、ポインタ、状態解析情報、依存カウンタ、属性情報を含む。タスク情報１０８に含まれる、タスクＩＤ、状態解析情報、依存カウンタ、属性情報は、処理情報管理表１０６のものと同様の役割を持つ。
【０２３４】
ただし、タスク情報１０８のポインタについては、依存関係にある他のタスクの処理情報管理表の先頭アドレスを指すのではなく、依存関係にあるチャネルの先頭アドレスを指す。
【０２３５】
チャネル情報１０９は、データの受け渡しに使用されるチャネルに関する情報である。なお、チャネル自体も、所定の記憶部（図示なし）内部の領域に確保される。
【０２３６】
図２１に、本実施形態の演算処理装置４において用いられる各種情報及びその構成を示す。演算処理装置４では、演算処理装置検索表１０４、タスク検索表１０５、タスク情報１０８、チャネル情報１０９が用いられる。演算処理装置検索表１０４、タスク検索表１０５、タスク情報１０８、及びチャネル情報１０９は、実行制御装置２０の内部に備えられる。
【０２３７】
ステータス１０３に関しては、図４に示した第２の実施形態の演算処理システム２におけるものと同じ構成を備える。
【０２３８】
以上のように、第４の実施形態は、第２、第３の実施形態と類似の構成を備える。第４の実施形態が、第２、第３の実施形態と異なる点は、各種情報テーブルによる検索対象が処理情報管理表１０６、１０７からタスク情報１０８に変わり、さらにチャネル情報１０９が使用されることのみである。
【０２３９】
図２２に、第４の実施形態における、タスク情報１０８、及び、チャネル情報１０９の構成と、これらの関係を示す。
【０２４０】
タスク情報１０８とチャネル情報１０９は、互いの先頭アドレスを指すポインタを有する。ポインタを備えることにより、タスク情報１０８とチャネル情報１０９は、互いの情報を参照することが可能となり、さらに先につながるタスク情報１０８、又は、チャネル情報１０９を参照できる。
【０２４１】
また、タスク情報１０８は、タスクと依存関係にあるチャネルが、タスクに対して入力側にあるか出力側にあるかを判定するための、チャネル識別情報を含む各種情報を備える。
【０２４２】
逆に、チャネル情報１０９は、チャネルと依存関係にあるタスクが、チャネルに対して入力側にあるか出力側にあるか判定するための、タスク識別情報を含む各種情報を備える。
【０２４３】
例えば、タスク情報１０８が他に備えるべき情報として、タスクＩＤ、状態解析情報、依存カウンタ、属性情報等がある。
【０２４４】
「状態解析情報」は、あるタスクの状態情報の解析によって取得される情報で、そのタスクと依存関係にあるチャネルの、現在の依存状態がどの状態にあるかを示す処理状態情報を含む。
【０２４５】
「依存カウンタ」は、タスクと依存関係にあるチャネルとの依存状態の情報を示し、「属性情報」はタスクの初期稼働状態を示す。
【０２４６】
図２２に示す通り、状態解析情報は、状態情報に対応した処理状態情報を備える。そのため、状態情報から、チャネル情報が更新の対象になるチャネルを特定することができる。
【０２４７】
また、第４の実施形態では、状態解析情報によってチャネル情報が更新の対象になるチャネルを特定することができるので、実行制御装置２０は、第２及び第３の実施形態と同一の、演算処理装置１０からの状態通知１０１を処理可能である。
【０２４８】
チャネル情報１０９は、チャネルからデータを読み出すタスクの数によって変動する残存カウンタを備える。残存カウンタは、タスクが実行され、チャネルが依存状態変化を起こすことによって変動する。
【０２４９】
ここでのチャネルの依存状態変化には２種類ある。１つめは、前段のタスクが処理結果を出力し、チャネルにいくつかのデータが書き込み済みである「書き込み完了状態」への遷移であり、２つ目は、後段のタスクが読み出したデータの個数分だけチャネルが空いた状態である「書き込み可能状態」への遷移である。
【０２５０】
タスク情報１０８が備える依存カウンタは、チャネル情報１０９が備える残存カウンタの値によって変動する。
【０２５１】
例えば、残存カウンタが、タスクに対して入力側にあるチャネルにデータが書き込み済みであり、「書き込み完了状態」にあることを示すときは、依存カウンタは、後段のタスクへの入力データが用意されている「出力完了状態」であることを示す。
【０２５２】
タスクに対して出力側にあるチャネルがすべてのデータを読み出し済みであって、データが存在しないときも、残存カウンタは「書き込み可能状態」であることを示す。このとき、依存カウンタは、タスクは出力データを書き込める状態である「入力可能状態」であることを示す。
【０２５３】
ここで、タスクがチャネルに対して依存解消状態になる条件は、第２及び第３の実施形態における、タスクが依存解消状態になる条件と同様である。
【０２５４】
次に、図２３Ａ、２３Ｂ、２３Ｃに示す実行制御のフローチャートを用いて、例えばタスクＢが状態通知１０１Ｂを実行制御装置２０へ送信したときの、実行制御装置２０の動作について説明する。
【０２５５】
まず、実行制御装置２０は、演算処理装置が有するタスクＢから状態通知１０１Ｂを取得する（ステップＳ３００）。
【０２５６】
次に、実行制御装置２０は、状態通知１０１Ｂを解析し、演算処理装置ＩＤ、タスクＩＤ、状態情報を取得する（ステップＳ３０１）。そして、実行制御装置２０は、演算処理装置検索表１０４、タスク検索表１０５から、演算処理装置ＩＤとタスクＩＤに対応したタスク情報１０８Ｂを参照し（ステップＳ３０２）、状態解析情報から状態情報に対応した処理状態情報を取得する（ステップＳ３０３）。
【０２５７】
次に、実行制御装置２０は、取得した処理状態情報から、タスクＢと依存関係にあり、依存状態が変化したチャネルの数を把握し、その個数分だけ、以下のステップＳ３０５〜３２０をループ（ループＩ）する（ステップＳ３０４）。本例では、タスクＢと依存関係にあるチャネルはチャネルａ、ｂの２個あるので、ループの回数は２回である。
【０２５８】
なお、本例は、タスクＢから状態通知１０１Ｂを取得したときの動作である。タスクＡから状態通知１０１Ａを取得した場合、及びタスクＣから状態通知１０１Ｃを取得した場合は、タスクＡ、Ｃと依存関係にあるチャネルは、チャネルａ又はチャネルｂの１つのみなので、チャネルａ又はチャネルｂの依存状態が変化した場合は、いずれもループの回数は１回である。
【０２５９】
ループＩの処理において、まず、実行制御装置２０は、チャネルがタスクＢにとって書き込み用であるか読み出し用であるかを判定する（ステップＳ３０５）。この判定結果がいずれであるかによって、実行制御装置２０は、それぞれ以下のように動作する。
１）チャネルがタスクＡにとって書き込み用である場合
実行制御装置２０は、ステップＳ３０５の判定の結果、チャネルが書き込み用だった場合、以下のＳ３１０〜Ｓ３２０の処理を行う。これは、状態変化したチャネルがチャネルｂである場合である。
【０２６０】
まず、実行制御装置２０は、チャネル情報１０９ｂの残存カウンタの値を、チャネルｂが書き込み済みであることを示す「書き込み完了状態」に更新する（ステップＳ３１０）。ここでの「書き込み完了状態」とは、チャネルｂに、タスクＢからデータが書き込まれた状態を意味する。
【０２６１】
次に、実行制御装置２０は、チャネルｂを読み込むタスクの数（本例では、タスクＣの１個のみ）を把握し、その個数分だけ、以下のステップＳ３１２〜Ｓ３２０をループする（ステップＳ３１１）。
【０２６２】
次に、実行制御装置２０は、タスクＣの依存カウンタの値を、入力データが用意された状態を意味する「データ準備完了状態」に更新する（ステップＳ３１２）。
【０２６３】
次に、実行制御装置２０は、タスクＣが依存解消状態にあるか否かを判定する（ステップＳ３１３）。
【０２６４】
タスクＣが依存解消状態にない場合、実行制御装置２０は、ステップＳ３１４〜Ｓ３２０を実行せず、次のステップへ進む。すなわち、ループＩ及びループＩＩの処理を必要な回数だけ繰り返し、ループＩ及びループＩＩの処理が完了した後、ステップＳ３５０へ進む。
【０２６５】
タスクＣが依存解消状態にある場合、実行制御装置２０は、タスクＣに対して起動要求１０２Ｃを送信し、タスク情報１０８Ｃの依存カウンタを初期化する（ステップＳ３１４）。
【０２６６】
次に、実行制御装置２０は、起動要求１０２Ｃの送信先であるタスクＣが第２の識別情報として「応答無し」を持つか否かを判定する（ステップＳ３１５）。
【０２６７】
実行制御装置２０は、タスクＣが第２の識別情報として「応答無し」を持たない場合、ステップＳ３１６〜Ｓ３２０までの処理を行わず、次のステップへ進む。すなわち、ループＩ及びループＩＩの処理を必要な回数だけ繰り返し、ループＩ及びループＩＩの処理が完了した後、ステップＳ３５０へ進む。
【０２６８】
実行制御装置２０は、タスクＣが第２の識別情報として「応答無し」を持つ場合、チャネル情報１０９ｂの残存カウンタの値を、チャネルｂにデータの書き込みが可能であることを示す「書き込み可能状態」に更新する（ステップＳ３１６）。ここでの「書き込み可能状態」とは、チャネルｂがタスクＣに読み込まれた状態を意味する。
【０２６９】
次に、実行制御装置２０は、ステップＳ３１６の結果、チャネルｂが空き状態になったか否かを判定する（ステップＳ３１７）。
【０２７０】
実行制御装置２０は、チャネルｂが空き状態でなければ、ステップＳ３１８〜Ｓ３２０までの処理を行わず、次のステップへ進む。すなわち、ループＩ及びループＩＩの処理を必要な回数だけ繰り返し、ループＩ及びループＩＩの処理が完了した後、ステップＳ３５０へ進む。
【０２７１】
実行制御装置２０は、チャネルｂが空き状態ならば、タスク情報１０８Ｂの依存カウンタの値を、出力結果を書き込める状態である「入力可能状態」に更新する（ステップＳ３１８）。
【０２７２】
次に、実行制御装置２０は、ステップＳ３１８の結果、タスクＢが依存解消状態になったか否かを判定する（ステップＳ３１９）。
【０２７３】
実行制御装置２０は、タスクＢが依存解消状態になければ、ステップＳ３２０を行わず、次のステップへ進む。すなわち、ループＩ及びループＩＩの処理を必要な回数だけ繰り返し、ループＩ及びループＩＩの処理が完了した後、ステップＳ３５０へ進む。
【０２７４】
実行制御装置２０は、タスクＢが依存解消状態にあれば、タスクＢに対して、起動要求１０２Ｂを送信し、タスク情報１０８Ｂの依存カウンタを初期化する（ステップＳ３２０）。
２）チャネルがタスクＡにとって読み出し用である場合
実行制御装置２０は、ステップＳ３０５の判定の結果、チャネルが読み出し用だった場合、以下のＳ３１０〜Ｓ３２０の処理を行う。これは、状態変化したチャネルがチャネルａである場合である。
【０２７５】
まず、実行制御装置２０は、チャネル情報１０９ａの残存カウンタの値を、「読み出し完了状態」に更新する（ステップＳ３３０）。ここでの「読み出し完了状態」とは、チャネルａのデータが、タスクＢに読み出された状態を意味する。
【０２７６】
次に、実行制御装置２０は、ステップＳ３３０の結果、チャネルａが空き状態になったか否か判定する（ステップＳ３３１）。
【０２７７】
チャネルａが空き状態でなければ、実行制御装置２０は、ステップＳ３３２〜Ｓ３４０までの処理を行わず、次のステップへ進む。すなわち、ループＩの処理を必要な回数だけ繰り返し、ループＩの処理が完了した後、ステップＳ３５０へ進む。
【０２７８】
チャネルａが空き状態ならば、実行制御装置２０は、タスク情報１０８Ａの依存カウンタの値を、出力結果を書き込める状態である「入力可能状態」に更新する（ステップＳ３３２）。
【０２７９】
次に、実行制御装置２０は、ステップＳ３３２の結果、タスクＡが依存解消状態になったか否かを判定する（ステップＳ３３３）。
【０２８０】
実行制御装置２０は、タスクＡが依存解消状態になければ、ステップＳ３３４〜Ｓ３４０までの処理を行わず、次のステップへ進む。すなわち、ループＩの処理を必要な回数だけ繰り返し、ループＩの処理が完了した後、ステップＳ３５０へ進む。
【０２８１】
実行制御装置２０は、タスクＡが依存解消状態にあれば、タスクＡに対して、起動要求１０２Ａを送信し、タスク情報１０８Ａの依存カウンタを初期化する（ステップＳ３３４）。
【０２８２】
次に、実行制御装置２０は、チャネルａを読み出すタスクＢが第２の識別情報として「応答無し」を持つか否かを判定する（ステップＳ３３５）。
【０２８３】
実行制御装置２０は、タスクＢが第２の識別情報として「応答無し」を持たない場合、ステップＳ３３６〜Ｓ３４０までの処理を行わず、次のステップへ進む。すなわち、ループＩの処理を必要な回数だけ繰り返し、ループＩの処理が完了した後、ステップＳ３５０へ進む。
【０２８４】
実行制御装置２０は、タスクＢが第２の識別情報として「応答無し」を持つ場合、チャネル情報１０９ａの残存カウンタの値を、「読み出し完了状態」に更新する（ステップＳ３３６）。ここでの「読み出し完了状態」とは、チャネルａがタスクＢに読み込まれた状態を意味する。
【０２８５】
次に、実行制御装置２０は、ステップＳ３３６の結果、チャネルａが空き状態になったか否かを判定する（ステップＳ３３７）。
【０２８６】
チャネルａが空き状態でなければ、ステップＳ３３８〜Ｓ３４０までの処理を行わず、次のステップへ進む。すなわち、ループＩの処理を必要な回数だけ繰り返し、ループＩの処理が完了した後、ステップＳ３５０へ進む。
【０２８７】
チャネルａが空き状態ならば、タスク情報１０８Ａの依存カウンタの値を、「入力可能状態」に更新する（ステップＳ３３８）。
【０２８８】
次に、実行制御装置２０は、ステップＳ３３８の結果、タスクＡが依存解消状態になったか否かを判定する（ステップＳ３３９）。
【０２８９】
タスクＡが依存解消状態になければ、ステップＳ３４０を行わず、次のステップへ進む。すなわち、ループＩの処理を必要な回数だけ繰り返し、ループＩの処理が完了した後、ステップＳ３５０へ進む。
【０２９０】
タスクＡが依存解消状態にあれば、タスクＡに対して、起動要求１０２Ａを送信し、タスク情報１０８Ａの依存カウンタを初期化する（ステップＳ３４０）。
【０２９１】
次に、実行制御装置２０は、ステップＳ３０４に示した通り、依存状態が変化したチャネルの個数分だけ、ステップＳ３０５〜Ｓ３２０、又はＳ３０５〜Ｓ３４０の処理を実行したら、実行制御装置２０は演算処理装置１０からの次の状態通知１０１を待つ状態へ移行する（ステップＳ３５０）。
【０２９２】
次に、第４の実施形態における実行制御装置２０の動作について、図２３Ａ、２３Ｂ、２３Ｃの実行制御のフローチャートと、図２１に示す処理のための各種情報と、図２４に示す演算処理システムの処理を示すシーケンスチャートを用いて説明する。
【０２９３】
まず、システムが起動すると、第１の属性情報"busy"に従ってタスクＡが起動される（１−１）。演算処理装置１０が第１の入力データに対してタスクＡの処理を完了すると、チャネルａに結果データを出力する（Ｗａ−１）。このとき、チャネルａは「書き込み完了状態」になり、タスクＡは「出力完了状態」になる。そして、タスクＡの依存状態は、依存解消状態に変化するので、演算処理装置１０は実行制御装置２０へ状態通知１０１Ａを送信する（２−１）。なお、状態通知１０１は、タスクの処理の途中で送信されてもよい。
【０２９４】
図２４の例では、各タスクの処理の完了後、状態通知１０１が送信されるものとしている。
【０２９５】
次に、実行制御装置２０は、状態通知１０１Ａをキーとして、実行制御Ａを実行し、起動要求１０２Ｂを演算処理装置１０へ送信する（３−１）。
【０２９６】
演算処理装置１０は、第１の入力データに対するタスクｂの実行を開始する。演算処理装置１０は、タスクＡによって書き込まれた結果データをチャネルａから読み出す（Ｒａ−１）。このとき、チャネルａは「読み出し完了状態」になり、タスクｂは「入力可能状態」になる。
【０２９７】
一方、実行制御装置２０は、タスクＢが第２の属性情報として「応答無し」を持ち、且つ、チャネルａが依存関係にあるのはタスクＢのみであるため、起動要求１０２Ａを演算処理装置１０へ送信する（１−２）。演算処理装置１０は、第２の入力データに対してタスクＡを実行する。
【０２９８】
演算処理装置１０は、第１の入力データに対してタスクＢの処理を完了すると、チャネルｂに結果データを出力する（Ｗｂ−１）。このとき、チャネルｂは「書き込み完了状態」になり、タスクＢは「出力完了状態」になる。このとき、チャネルｂの依存状態は、依存解消状態に変化するので、演算処理装置１０は実行制御装置２０へ状態通知１０１Ｂを送信する（４−１）。
【０２９９】
実行制御装置２０は、状態通知１０１Ｂをキーとして、実行制御Ｂを実行し、起動要求１０２Ｃを演算処理装置１０へ送信する（５−１）。なお、タスクＡは、タスクＢの入力可能状態に依存せず起動可能なので、実行制御Ｂの結果としては、起動要求１０２Ａは出力されない。
【０３００】
そして、演算処理装置１０は、タスクＣの実行を開始する。演算処理装置１０は、タスクＢによって書き込まれた結果データをチャネルｂから読み出す（Ｒｂ−１）。このとき、チャネルｂは「読み出し完了状態」になり、タスクＣは「入力可能状態」になる。
【０３０１】
演算処理装置１０が第２の入力データに対してタスクＡの処理を完了すると、チャネルａに結果データを出力する（Ｗａ−２）。このとき、チャネルａは「書き込み完了状態」になり、タスクＡは「出力完了状態」になる。このとき、チャネルａの依存状態は、依存解消状態に変化するので、演算処理装置１０は実行制御装置２０へ状態通知１０１Ａを送信する（２−２）。
【０３０２】
また、演算処理装置１０は、第１の入力データに対するタスクＣの処理を完了すると、実行制御装置２０へ状態通知１０１Ｃを送信する（６−１）。
【０３０３】
２回目のタスクＢの起動に関しては、上記の動作とは異なる。なぜなら、タスクＢは、チャネルａ、ｂの両方と依存関係にあるからである。
【０３０４】
状態通知１０１Ａ（２−２）を受けて実行制御Ａが実行され、状態通知１０１Ｃ（６−１）を受けて実行制御Ｃが実行される。なお、実行制御Ａ、Ｃの実行順序は、実行制御Ａ、Ｃに設定された所定の優先順位に基づく。あるいは、実行制御Ａ、Ｃの実行開始の順序は、タスクＡ、Ｃからの状態通知１０１Ａ、１０１ｃの受信順序に従ってもよい。図２４では、実行制御装置２０が、状態通知１０１Ａの方を先に受信し、実行制御Ａを先に実行したものとしている。
【０３０５】
そして、実行制御Ａ、Ｃの結果、タスクＢの依存状態が解消されると、起動要求１０２Ｂが送信され（３−２）、タスクＢが起動される。
【０３０６】
以降については、上記と同様である。すなわち、タスクＢの起動後、タスクＡが起動され（１−３）、タスクＡの実行後、状態通知１０１Ａが送信される（２−３）。
【０３０７】
また、状態通知１０１Ｂ（４−２）を受けて実行制御Ｂが実行され、タスクＣが起動される（５−２）。そして、状態通知１０１Ｃが送信される（６−２）。
（第４の実施形態の効果）
第４の実施形態では、タスク間のデータの受け渡しが、チャネルを介して行われる。そのため、タスク間に直接の依存関係は存在しない。従って、第４の実施形態では、第２、第３の実施形態における発明の効果に加えて、演算処理のフローの変更を、所望の構成に合うように、チャネル情報１０９を変更することによって実現することができる。
【０３０８】
さらに、チャネル情報１０９が備える残存カウンタの値を、ある特定の記憶領域にたまっているデータ量とすることで、チャネルを任意の長さを持つバッファとして管理することができる。これにより、異なる長さのデータを単位として依存関係を管理できるため、処理データ単位の異なるタスク間についても実行制御が可能である。
【０３０９】
本発明における実行制御プログラムは、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、フラッシュメモリ等の半導体記憶装置、光ディスク、磁気ディスク、光磁気ディスク等、非一時的な媒体に格納されてもよい。
【０３１０】
なお、以上の実施形態は各々他の実施形態と組み合わせることができる。例えば、第１の実施形態に、第２又は第３の実施形態の処理情報管理表を追加してもよい。あるいは、第１の実施形態の実行制御を、第４の実施形態のチャネルを用いて行ってもよい。
【符号の説明】
【０３１１】
１、２、３、４  演算処理システム
１０、１１、１２、１３  演算処理装置
２０  実行制御装置
２１  情報管理部
１０１  状態通知
１０２  起動要求
１０３  ステータス
１０４  演算処理装置検索表
１０５  タスク検索表
１０６、１０７  処理情報管理表
１０８  タスク情報
１０９  チャネル情報
【図１】
2014102692.tif 000003
【図２】
2014102692.tif 000004
【図３】
2014102692.tif 000005
【図４】
2014102692.tif 000006
【図５】
2014102692.tif 000007
【図６】
2014102692.tif 000008
【図７】
2014102692.tif 000009
【図８】
2014102692.tif 000010
【図９Ａ】
2014102692.tif 000011
【図９Ｂ】
2014102692.tif 000012
【図９Ｃ】
2014102692.tif 000013
【図１０】
2014102692.tif 000014
【図１１】
2014102692.tif 000015
【図１２Ａ】
2014102692.tif 000016
【図１２Ｂ】
2014102692.tif 000017
【図１２Ｃ】
2014102692.tif 000018
【図１２Ｄ】
2014102692.tif 000019
【図１２Ｅ】
2014102692.tif 000020
【図１２Ｆ】
2014102692.tif 000021
【図１２Ｇ】
2014102692.tif 000022
【図１３】
2014102692.tif 000023
【図１４】
2014102692.tif 000024
【図１５】
2014102692.tif 000025
【図１６】
2014102692.tif 000026
【図１７】
2014102692.tif 000027
【図１８】
2014102692.tif 000028
【図１９】
2014102692.tif 000029
【図２０】
2014102692.tif 000030
【図２１】
2014102692.tif 000031
【図２２】
2014102692.tif 000032
【図２３Ａ】
2014102692.tif 000033
【図２３Ｂ】
2014102692.tif 000034
【図２３Ｃ】
2014102692.tif 000035
【図２４】
2014102692.tif 000036