(57)【要約】【課題】マルチ処理ノードシステムにおいて、簡単なスケジュール管理によりリアルタイム処理、パイプライン処理を実現する。【解決手段】所定のタスクを行い分配された重さが異なるタスクに対する処理スループットがほぼ均等に構成された複数の処理ノード（ＰＮ１〜ＰＮ４）それぞれにスケジューラ（ＳＣ０〜ＳＣ４）を設け、スケジューラは対応する処理ノードでタスク処理が完了するとタスク完了メッセージを次のタスクを処理する他のスケジューラにメッセージネットワーク（１０）を介して送信し、他のスケジューラからタスク完了メッセージを受信すると対応する処理ノードにそのタスクの処理開始を指令する。従って、簡単なスケジュール管理プログラムをスケジューラにインストールすることで、マルチ処理ノードシステムにおけるリアルタイム処理及びパイプライン処理を実現することができる。【選択図】図２
2004295494.tif 000002
【特許請求の範囲】
【請求項１】
マルチ処理ノードシステムにおいて、
それぞれ所定のタスクを行い、分配された重さが異なるタスクに対する処理スループットがほぼ均等に構成された複数の処理ノードと、
前記複数の処理ノードに接続され当該複数の処理ノード間でデータ転送が行われるデータネットワークと、
前記複数の処理ノードそれぞれに対応して設けられ、対応する処理ノードへタスク開始制御をし更にタスク終了信号を受信してタスクのスケジュール制御を行う複数のスケジューラと、
前記複数のスケジューラに接続され、当該複数のスケジューラ間でのメッセージの転送が行われるメッセージネットワークとを有し、
前記スケジューラは、他のスケジューラから送信されるタスク終了メッセージに応答して、対応する処理ノードにタスク開始制御を行い、当該対応する処理ノードからのタスク終了信号に応答して、次のタスクを行う処理ノードのスケジューラに前記メッセージネットワークを介してタスク終了メッセージを送信することを特徴とするマルチ処理ノードシステム。
【請求項２】
請求項１において、
前記処理ノードはローカルメモリを有し、タスク処理終了時に処理済みデータを当該ローカルメモリに格納し、
前記スケジューラは、タスク終了メッセージに、終了したタスク情報と共に前記処理済みデータが格納されている処理ノード情報とローカルアドレスとを含め、
後続のタスクを処理する処理ノードは、当該タスク終了メッセージに含まれた処理ノード情報とローカルアドレスに基づいて、前記データネットワークを介して前記処理済みデータを取得することを特徴とするマルチ処理ノードシステム。
【請求項３】
請求項１において、
各処理ノードには、システム内のグローバルアドレスと処理ノード内のローカルアドレスとを変換するアドレス変換回路を、前記データネットワークとの間に有することを特徴とするマルチ処理ノードシステム。
【請求項４】
請求項１において、
各スケジューラは、対応する処理ノードにタスク開始制御を行った時に当該処理ノードへのクロック供給を開始し、処理ノードからのタスク終了信号に応答して当該クロック供給を停止することを特徴とするマルチ処理ノードシステム。
【請求項５】
マルチ処理ノードシステムにおいて、
それぞれ所定のタスクを行う複数の処理ノードと、
前記複数の処理ノードに接続され当該複数の処理ノード間でデータ転送が行われるデータネットワークと、
前記複数の処理ノードそれぞれに対応して設けられ、対応する処理ノードへタスク開始制御を行う複数のスケジューラと、
前記複数のスケジューラに接続され、当該複数のスケジューラ間でのメッセージの転送が行われるメッセージネットワークとを有し、
各スケジューラは、対応する処理ノードからのタスク終了信号に応答して、タスク完了メッセージをプッシュ方式で次のタスクを行う処理ノードのスケジューラ転送し、各スケジューラは、タスク完了メッセージの受信に応答して、前記タスク開始制御を行い、
各処理ノードは、タスク処理を開始するときに前タスクを実行した処理ノードのローカルメモリから必要なデータをプル方式で取得することを特徴とするマルチ処理ノードシステム。
【請求項６】
請求項５において、
前記タスク完了メッセージには、処理済みデータのローカルアドレスが含まれていることを特徴とするマルチ処理ノードシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マルチ処理ノードを有するシステムに関し、特に汎用性及びリアルタイム性を有するマルチ処理ノードシステムに関する。
【０００２】
【従来の技術】
従来のリアルタイム処理システムは、一般的にＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  ＩＣ）などのような専用ＬＳＩで構成される。かかる専用ＬＳＩによるシステムは、処理能力や消費電力においてメリットを有するものの、再構成が不可能であり、他のアプリケーションに対応することが困難であり、従って汎用性に欠けるというデメリットを有する。そこで、リアルタイム性に加えてある程度の汎用性を有するシステムが要求されているが、かかるシステムは、膨大な処理要求に応えるために複数の処理ノード（処理モジュール）を有するマルチ処理ノード構成をとることが望まれる。マルチ処理ノードシステムは、各処理ノードが同じ構成のもの（Ｈｏｍｏｇｅｎｅｏｕｓ）と各処理ノードの構成が異なる構成のもの（Ｈｅｔｅｒｏｇｅｎｅｏｕｓ）とがあり、本発明は、このヘテロジーニアス構造ベースのものである。各処理ノードがプログラム可能（ｐｒｏｇｒａｍｍａｂｌｅ）または再構成可能（ｒｅ−ｃｏｎｆｉｇｕｒａｂｌｅ）なものであり、各処理に適した異なる構成を有することが多い。これらの複数の処理ノードを協調的に制御するために、集中制御または分散制御の手法がある。集中制御の場合は、複数の処理ノードに対して共通のスケジューラプロセッサを設け、そのスケジューラが複数の処理ノードにタスク開始命令を送信し、複数の処理ノードからタスク終了メッセージを受信し、適宜タスクを各処理ノードに割り当てる。かかるマルチ処理システムは、例えば以下の特許文献１に記載されている。
【０００３】
図１は、従来のマルチ処理ノードシステムの構成例を示す図である。この例では、マルチ処理ノードシステム１が、４つの処理ノードＰＮ１〜ＰＮ４を有し、処理ノードはデータネットワーク２を介して接続され、データの送受信を行う。データネットワーク２には共通メモリ４が設けられ、この共通メモリ４に対して各処理ノードがデータを格納し、データを読み出す。また、４つの処理ノードＰＮ１〜ＰＮ４は、共通のスケジューラ（マイクロコントロールユニット：ＭＣＵ）３によってそれぞれの処理の制御が行われる。即ち、スケジューラ３は、各処理ノードから状態信号や割込信号Ｓ１〜Ｓ４をそれぞれ受信し、図示しない処理プログラムに従って、各処理ノードに制御信号Ｃ１〜Ｃ４を出力する。各処理ノードは同じ構成の汎用プロセッサであり、この制御信号Ｃ１〜Ｃ４に応答してそれぞれの処理を実行する。
【０００４】
【特許文献１】
特公平６−４２２３４号公報（図１）
【０００５】
【発明が解決しようとする課題】
マルチ処理ノードの制御方法としては、パイプライン処理を行わない制御方式と、パイプライン処理を行う制御方式とが考えられる。パイプライン処理を行わない制御方式では、制御は単純ではあるが、複数の処理ノードが並列動作を行わないで、一連の複数のタスクが終了するまで次の一連の複数タスクを開始せず、従って、処理ノードの稼働率が低くなり効率的ではないという問題がある。また、パイプライン処理ではないのでリアルタイム処理を実現できないというデメリットもある。
【０００６】
一方、パイプライン処理を行う制御方式では、処理ノードの稼働率が上がりリアルタイム処理に近づくものの、共通のスケジューラが、各処理ノードへのタスク起動、各処理ノードからのタスク終了割込処理を行うため、スケジューラのプログラムの複雑度が増えるというデメリットが伴う。複数の処理ノードが同じ構成のプロセッサの場合、各処理ノードに割り当てられたタスクの処理の重さのバランスが均等でなく、パイプライン動作の実現が極めて困難になる。特に分岐が発生したときに、パイプライン処理のための同期を取ることが困難になり、データ待ちに伴って処理順序が変更されるとますます制御が複雑化する。更に、処理ノードが増えると、割込処理に多くの処理時間を割く必要があり、リアルタイム性を確保できない可能性がある。このことは、システムの拡張性がなくスケーラビィリティが得られない可能性がある。また、共通のスケジューラに対応して全ての処理タスクが同じメモリ空間を共有する必要があり、処理ノードを異なるアーキテクチャ、コンパイラで設計することが困難になる。
【０００７】
そこで、本発明の目的は、制御を単純化でき、汎用性がありリアルタイム性を有するマルチ処理ノードシステムを提供することにある。
【０００８】
【課題を解決するための手段】
上記の目的を達成するために、本発明の一つの側面は、マルチ処理ノードシステムにおいて、それぞれ所定のタスクを行い、分配された重さが異なるタスクに対する処理スループットがほぼ均等に構成された複数の処理ノードと、前記複数の処理ノードに接続され当該複数の処理ノード間でデータ転送が行われるデータネットワークと、前記複数の処理ノードそれぞれに対応して設けられ、対応する処理ノードへタスク開始制御をしタスク終了信号を受信してタスクのスケジュール制御を行う複数のスケジューラと、前記複数のスケジューラに接続され、当該複数のスケジューラ間でのメッセージの転送が行われるメッセージネットワークとを有する。そして、前記スケジューラは、他のスケジューラから送信されるタスク終了メッセージに応答して、対応する処理ノードにタスク開始制御を行い、当該対応する処理ノードからのタスク終了信号に応答して、次のタスクを行う処理ノードのスケジューラに前記メッセージネットワークを介してタスク終了メッセージを送信する。
【０００９】
上記の発明の側面によれば、各処理ノードそれぞれに対応してスケジューラが設けられ、各スケジューラが対応する処理ノードへのタスク制御を行うとともに、スケジューラ間でタスク終了メッセージの転送を行ってタスク間のスケジュール制御を行う。従って、処理ノードＡがタスクを終了すると次のタスクが処理ノードＢで行われ、それと同時に処理ノードＡが次のタスクを開始することができる。つまり、複数の処理ノードがそれらに分配された重さが異なるタスクに対する処理スループットがほぼ均等になるように構成されているので、一連の複数タスクからなる処理要求に対して、複数の処理ノードが複数のタスクをパイプライン処理することができ、複数の処理ノードのタスク制御を各処理ノードに設けた複数のスケジューラに分散したことで、スケジュール制御が簡単になりリアルタイム処理が可能になる。
【００１０】
上記の発明の側面において、好ましい実施例では、前記処理ノードはローカルメモリを有し、タスク処理終了時に処理済みデータを当該ローカルメモリに格納し、前記スケジューラは、タスク終了メッセージに、終了したタスク情報と共に前記処理済みデータが格納されている処理ノード情報とローカルアドレスとを含める。そして、次のタスクを処理する処理ノードは、当該タスク終了メッセージに含まれた処理ノード情報とローカルアドレスに基づいて、前記データネットワークを介して前記処理済みデータを取得する。各処理ノードには、システムのグローバルアドレスと処理ノード内のローカルアドレスとを変換するアドレス変換回路を有する。
【００１１】
この好ましい実施例では、各処理ノードは、処理可能なタイミングでデータを取得することができる。また、各処理ノードは、それぞれのローカルアドレスに基づいてデータ処理を行うことができ、他の処理ノードとローカルアドレス空間を共有する必要がない。従って、各処理ノードは独自のアーキテクチャで構成し、独自のコンパイラを使用することが可能になり、設計のフレキシビリティが上がりシステムの拡張性が増大する。
【００１２】
上記の発明の側面において、別の好ましい実施例では、各スケジューラは、対応する処理ノードにタスク開始制御を行った時に当該処理ノードへのクロック供給を開始し、処理ノードからのタスク終了信号に応答して、当該クロック供給を停止する。各スケジューラが対応する処理ノードへのタスク制御を行うと共に動作クロックの供給と停止も行うことで、省電力化することができる。
【００１３】
上記の発明の側面において、更に別の実施例では、前記データネットワークは、前記複数の処理ノードに接続されたデータバスと、当該データバスのバス管理を行うバスアービタとを有する。
【００１４】
本発明の別の側面は、各スケジューラはタスク終了メッセージをプッシュ方式で次のタスクを行う処理ノードのスケジューラ供給し、各スケジューラはタスク終了メッセージの受信に応答して、タスク開始制御を行う。その時タスク処理中であれば、それが終了するまで待機する。また、各処理ノードは、タスク開始するときに前タスクを実行した処理ノードのローカルメモリから必要なデータをプル方式で取得する。このようにすることで、リアルタイム処理とパイプライン処理を簡単な制御により実現することができる。
【００１５】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態例を説明する。しかしながら、本発明の保護範囲は、以下の実施の形態例に限定されるものではなく、特許請求の範囲に記載された発明とその均等物にまで及ぶものである。
【００１６】
図２は、本実施の形態におけるマルチ処理ノードシステムの構成図である。このマルチ処理ノードシステム１は、外部バスとのインターフェースであるブロックインターフェースＢＩＦと、それに対応するスケジューラＳＣ０を有する。ブロックインターフェースＢＩＦは、入力バッファＩＢ０と出力バッファＯＢ０を有する。更に、マルチ処理ノードシステム１は、複数の、例えば４つの処理ノードＰＮ１〜ＰＮ４と、それに対応して処理のスケジュール管理を行うスケジューラＳＣ１〜ＳＣ４とを有する。各スケジューラは、対応する処理ノードに対してのみスケジュール管理を行い、他の処理ノードのスケジュール管理は行わない。但し、スケジューラ間はメッセージを転送してタスク処理の終了などを連絡する。従って、各スケジューラは、対応する処理ノードから状態信号Ｓ０〜Ｓ４を受信し、処理ノードにタスク開始などの制御信号Ｃ０〜Ｃ４を供給する。
【００１７】
処理ノードＰＮ１〜ＰＮ４は、例えば特定の処理を行うプロセッサや汎用プロセッサ、デジタルシグナルプロセッサ、再構成可能なハードウエア（ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  ｈａｒｄｗａｒｅ）などの回路モジュールであり、必ずしも全て同じ構成のプロセッサではなく、任意の目的に対応した異なる構成のプロセッサである。そして、処理ノードは、後述するとおり、分配される重さが異なるタスクに対する処理スループット（処理量）がほぼ均等になるような構成にそれぞれカスタマイズされる。つまり、各処理ノードに分配されるタスクの重さが異なっていても、各処理ノードの処理能力をそれに対応させて、各処理ノードでのスループットをほぼ均等にしている。各処理ノードは、ローカルメモリとして入力バッファＩＢ１〜ＩＢ４と出力バッファＯＢ１〜ＯＢ４を有する。また、スケジューラＳＣ０〜ＳＣ４は、例えばマイクロコントロールユニットであり、ＣＰＵと内部メモリと入出力バッファなどを内蔵する。この内部メモリには、対応する処理ノードのタスク制御プログラムが適宜格納される。
【００１８】
スケジューラＳＣ０〜ＳＣ４は、メッセージネットワーク１０を介して接続され、スケジューラ間でタスク制御に関するメッセージ転送が行われる。このメッセージには、後述するとおり、タスク終了メッセージが少なくとも含まれる。処理ノードＰＮ１〜ＰＮ４とブロックインターフェースＢＩＦは、データネットワーク２を介して接続され、それらの間でデータ転送が行われる。ブロックインターフェースＢＩＦや処理ノードＰＮ１〜ＰＮ４の内部は、ローカルアドレス空間であるのに対して、データネットワーク２ではそれらのブロックインターフェースＢＩＦや処理ノードＰＮ１に共通のグローバルアドレス空間である。そこで、ブロックインターフェースＢＩＦの出力バッファＯＢ０や各処理ノードの入出力バッファＩＢ１〜ＩＢ４、ＯＢ１〜ＯＢ４とデータネットワーク２との間には、グローバルアドレスとローカルアドレスのアドレス変換を行うためのデータポートＤＰ０〜ＤＰ４が設けられている。更に、データネットワーク２は、図２の例では、４つのデータバスＤＢ１〜ＤＢ４が設けられ、それぞれにバス管理を行うバスアービタ回路１２が設けられている。データネットワーク２のデータバスの本数は、データ転送の通信量に応じて適宜選択可能である。
【００１９】
図３は、本実施の形態におけるスケジューラ間のメッセージ転送と処理タスク間のデータ転送を説明する図である。説明のために仮に処理ノードＰＮＡがタスクＡを処理し、それに続いて処理ノードＰＮＢがタスクＢを処理する場合について説明する。まず、スケジューラＳＣＡがタスクＡの開始制御信号ＣＡを処理ノードＰＮＡに供給すると、処理ノードＰＮＡはタスクＡの処理を開始する。そして、処理ノードＰＮＡはタスクＡの処理が終わると、処理済みデータを出力バッファＯＢの所定のローカルアドレス内に格納し、タスクＡの終了を示す状態信号ＳＡをスケジューラＳＣＡに供給する（処理Ｐ１）。このときデータのローカルアドレスなどが状態信号としてスケジューラＳＣＡに供給される。スケジューラＳＣＡはタスク終了の割込信号ＳＡに応答して、タスクＡの終了メッセージをスケジューラＳＣＢにメッセージネットワーク１０を介して転送する（処理Ｐ２）。このタスク終了メッセージには、タスクＡが終了したことと、処理済みデータが格納されている処理ノード情報とそのローカルアドレスとが含まれる。
【００２０】
スケジューラＳＣＢは、タスクＡ終了メッセージに応答して、次のタスクＢのスケジュール制御を行う。即ち、スケジューラＳＣＢは、処理ノードＰＮＢにおいて先行するタスク処理が終了した時に、又は処理ノードＰＮＢにおいて何らタスク処理が行われていない時に、タスクＢの処理開始を指令する制御信号ＣＢを処理ノードＰＮＢに与えて、処理ノードＰＮＢでのタスクＢの処理を起動する。この時、タスクＡ終了メッセージに含まれていたデータ格納先情報、処理ノードＰＮＡ情報とそのローカルアドレス、も処理ノードＰＮＢに与えられる。
【００２１】
処理ノードＰＮＢは、タスクＢの開始制御に応答して、与えられた処理ノードＰＮＡ情報とそのローカルアドレスにしたがって、処理済みデータを処理ノードＰＮＡの出力バッファから取得する（処理Ｐ３）。このデータ取得は、データネットワーク内のバスにアドレスと共にアクセス要求を出すことにより行われる。前述のとおり、アクセス要求に対するバス管理はバスアービタ１２により行われる。そして、処理ノードＰＮＡの出力バッファＯＢから処理ノードＰＮＢの入力バッファＩＢに、要求したデータが転送される（処理Ｐ４）。なお、データポートＤＰでは、ローカルアドレス３０とグローバルアドレス２０とのアドレス変換が行われる。
【００２２】
図４は、本実施の形態におけるスケジューラのタスク制御のフローチャート図である。このフローチャートは、タスク１と２が割り当てられる処理ノードのスケジューラを例にしている。スケジューラは、割り当てられているタスク１またはタスク２の前のタスクの終了メッセージを受信したか否かを常時監視する（Ｓ１００，Ｓ１１０）。この監視は、メッセージネットワーク１０を介してタスク終了メッセージを受信したか否かをチェックすることで行われる。更に、スケジューラは、対応する処理タスクがタスク処理を終了したか否かについても監視する（Ｓ１２０）。この監視は、対応する処理ノードからの状態信号により行われる。
【００２３】
タスク終了メッセージの受信に応答して、現在処理ノードが別のタスクを処理中か否かをチェックし（Ｓ１０２，Ｓ１１２）、処理中でなければ、タスク開始制御を行い（Ｓ１０４，Ｓ１１４）、処理中であればタスク待ち行列に登録する（Ｓ１０６，Ｓ１１６）。また、処理ノードからのタスク終了信号に応答して、次のタスクを処理する処理ノードのスケジューラにタスク終了メッセージをメッセージネットワーク１０を介して送信する（Ｓ１２２）。送信後、待ちタスクがあれば（Ｓ１２４）、次のタスク開始制御信号を処理ノードに与えてタスク処理を開始させる（Ｓ１２６）。
【００２４】
更に、各タスク開始制御Ｓ１０４，Ｓ１１４，Ｓ１２６では、先行するタスクが処理して出力バッファに格納したデータが、後続のタスク処理に伴って別の処理ノードから読み出されて、出力バッファが空き状態になることが確認される。つまり、タスク処理に伴って処理済みデータを出力バッファに格納し、後続のタスク処理を行う処理ノードからその処理済みデータを読み出すようにしているので、出力バッファの容量に限りがある場合は、当該後続のタスク処理を行う処理ノードにより処理済みデータが読み出された後でなければ、新たなタスク処理を開始できない。
【００２５】
以上のように、スケジューラは、対応する処理ノードに割り当てられたタスクの開始制御を先行するタスクの終了メッセージに応答して行い、タスク終了後はタスク終了メッセージを別のスケジューラに送信する。従って、スケジューラは制御下の処理ノードに対してのみタスク制御を行えば良いので、制御が簡単であり、スケジュール制御のためのオーバーヘッドを少なくすることができる。また、一連の複数タスクからなる処理プログラムに対して、割り当てられたタスクを処理すれば、タスクの待ち行列がないかぎり次の処理プログラムに対するタスクを処理することができ、複数の処理ノードによる並列処理が可能になる。
【００２６】
図５は、本実施の形態におけるスケジューラのクロック制御を説明する図である。スケジューラＳＣ１は、処理ノードＰＮ１のタスク管理に伴って動作クロックの管理も行う。即ち、スケジューラＳＣ１は処理ノードにタスク開始制御を行う時に（時間ｔ１）、ＰＬＬ回路にクロックイネーブル信号を出力してＰＬＬ回路から動作クロックｃｌｏｃｋを処理ノードＰＮ１に供給させる。そして、処理ノードＰＮ１から状態信号Ｓ１によってタスクが完了したことを検出すると、次に実行すべきタスクがない場合は（時間ｔ２）、クロックイネーブル信号をディセーブルにしてＰＬＬ回路による動作クロックの供給を停止する。このようにスケジューラがタスク制御に加えて動作クロックの制御も行うことにより、処理ノードがタスク処理中でない時に動作クロックの供給を停止して省電力化する。図４のフローチャートでは、工程Ｓ１０４，Ｓ１１４でクロックイネーブル信号が活性化され、工程Ｓ１２４で待ちタスクがない場合に非活性化される。
【００２７】
図６は、プログラムの具体例（１）を示す図である。この具体例では、プログラムＡとプログラムＢとがタスク処理ノードシステムによる処理を要求されるプログラムであり、図中（ａ）に示されるように、プログラムＡは、シーケンシャルに処理されるタスクａ１〜ａ５からなり、プログラムＢは、シーケンシャルに処理されるタスクｂ１〜ｂ４からなる。そこで、図中（ｂ）に示されるように、これらのプログラムに含まれる重さが異なるタスクが、４つの処理ノードＰＮ１〜ＰＮ４においてできるだけ均等な処理量になるように分配される。つまり、プログラムＡについては、モジュール１によるタスクａ１，ａ３の処理スループットと、モジュール２によるタスクａ２，ａ５の（処理スループット）と、モジュール３によるタスクａ４の処理スループットとはほぼ均等になるように、各モジュールの構成及びタスクの分配が行われている。同様に、プログラムＢについては、モジュール１によるタスクｂ１の処理スループットと、モジュール２によるタスクｂ２の処理スループットと、モジュール３によるタスクｂ３の処理スループットと、モジュール４によるタスクｂ４の処理スループットもほぼ均等になるように、各モジュールの構成及びタスクの分配が行われている。このように、各モジュールの処理スループットを同程度にすることで、後述する例に示されるとおり、リアルタイム処理及びパイプライン処理が可能になる。
【００２８】
図中、処理ノードＰＮ１〜ＰＮ４は、モジュール１〜４とも称され、以下モジュールで説明する場合もあるが、それは処理ノードの意味である。また、各処理ノードは、それぞれ所定の処理に適した構成を有し、その適した処理に応じても前記タスクが分配される。この具体例のようにモジュールにタスクを分配した場合の各スケジューラのタスク管理プログラム例を以下説明する。
【００２９】
図７は、スケジューラＳＣ０のタスク管理プログラム例である。この管理プログラムは、ステップＰ１００〜Ｐ１０３からなり、ステップＰ１００では、プログラムＡの起動命令を受信するとモジュール１のスケジューラに「プログラムＡの起動、ＢＩＦのアドレスａｄｄｒ０、データサイズｓｉｚｅ」なるメッセージを送信する。ステップＰ１０１では、プログラムＡのタスクａ５が完了したメッセージを監視し、完了メッセージを受信したらモジュール２（ｍ２）のアドレスａｄｄｒ０にデータサイズｓｉｚｅのデータを、システム外部に出力する。また、ステップＰ１０２では、プログラムＢの起動命令を受信するとモジュール１のスケジューラに「プログラムＢの起動、ＢＩＦのアドレスａｄｄｒ１にデータサイズｓｉｚｅ」なるメッセージを送信する。ステップＰ１０３では、プログラムＢのタスクｂ４が完了したメッセージを監視し、完了メッセージを受信したらモジュール４（ｍ４）のアドレスａｄｄｒ０にデータサイズｓｉｚｅのデータを、システム外部に出力する。
【００３０】
図８は、スケジューラＳＣ１とＳＣ２のタスク管理プログラム例である。スケジューラＳＣ１のプログラム例では、ステップＰ１１０で、プログラムＡの起動メッセージ「ｐＡ−＞ｓｔａｒｔ」の受信を監視し、受信したら、メッセージに含まれているＢＩＦのローカルアドレスａｄｄｒ０にアクセスしてデータを取得し、タスクａ１を実行し、タスクａ１終了後にモジュール２のスケジューラにメッセージ「ｐＡ−＞ｔａｓｋ．ａ１，  ｍ１．ａｄｄｒ０，  ｓｉｚｅ」を送信する。ステップＰ１１１では、プログラムＡのタスクａ２の完了メッセージ「ｐＡ−＞ｔａｓｋ．ａ２」の受信を監視し、受信したら、メッセージに含まれているモジュール２のローカルアドレスａｄｄｒ０にアクセスしてデータを取得し、タスクａ３を実行し、タスクａ３終了後にモジュール３のスケジューラにメッセージ「ｐＡ−＞ｔａｓｋ．ａ３，  ｍ１．ａｄｄｒ１，  ｓｉｚｅ」を送信する。ステップＰ１１２は、プログラムＢの起動メッセージを受信したときの制御でありステップＰ１１０と同様である。
【００３１】
スケジューラＳＣ２のタスク管理プログラムでは、ステップＰ１２０で、プログラムＡのタスクａ１の完了メッセージを受信した時に次のタスクａ２を開始し、それが終わったらモジュール１のスケジューラに完了メッセージを送信する。ステップＰ１２１，Ｐ１２２も同様である。
【００３２】
図９は、スケジューラＳＣ３とＳＣ４のタスク管理プログラム例である。ステップＰ１３０では、プログラムＡのタスクａ３の完了メッセージを受信した時に次のタスクａ４を開始し、それが終わったらモジュール２のスケジューラに完了メッセージを送信する。ステップＰ１３１も同様である。スケジューラＳＣ４のタスク管理プログラムでは、プログラムＢのタスクｂ３の完了メッセージを受信した時に次のタスクｂ４を開始し、それが終わったらブロックインターフェースＢＩＦのスケジューラに完了メッセージを送信する。
【００３３】
以上のタスク管理プログラムを各スケジューラＳＣ０〜ＳＣ４にインストールすることで、プログラムＡとＢを外部のシステムバスからの起動要求に応答して、マルチ処理ノードシステム１がリアルタイム処理で且つパイプライン処理で実行することができる。
【００３４】
図１０は、具体例（１）におけるプログラムＡとＢに対するパイプライン処理を示すタイミングチャート図である。横軸が時間でありブロックインターフェースＢＩＦに供給されるデータと、各モジュールが行うタスクが示されている。この例では、プログラムＡとプログラムＢの実行要求が交互に行われた例であり、ブロックインターフェースＢＩＦに、データＡとデータＢとが交互に供給されている。また、前述のとおり、モジュール１〜４におけるそれぞれのタスク処理スループットがほぼ同じになるようにハードウエア構成及びタスク分配が行われている。
【００３５】
図１０では、パイプラインステージＰＳ１でデータＡがブロックインターフェースＢＩＦに供給されて、プログラムＡの実行要求が行われる。これに応答して、次のパイプラインステージＰＳ２で、モジュール１がタスクａ１を処理し、その完了メッセージに応答してモジュール２がタスクａ２をそれぞれ処理する。同じステージＰＳ２でデータＢがブロックインターフェースＢＩＦに供給されてプログラムＢの実行要求が行われる。
【００３６】
この実行要求に応答して、次のステージＰＳ３でモジュール１はタスクｂ１を処理する。この間、ステージＰＳ１のデータＡに対するタスクａ３の処理は、待ち行列に入れられる。また、このステージＰＳ３にてデータＡが供給される。
【００３７】
ステージＰＳ４では、ステージＰＳ３でのデータＡに応答して、モジュール１がタスクａ１を処理し、更に、モジュール１は、ステージＰＳ１のデータＡに対するタスクａ３を処理する。ステージＰＳ４では、モジュール２がタスクｂ２を処理しているので、モジュール２はステージＰＳ３のデータＡに対するタスクａ２を処理することはできない。
【００３８】
ステージＰＳ５では、モジュール２が待ち状態にあったステージＰＳ３のデータＡに対するタスクａ２を処理し、モジュール３がタスクａ４を処理する。同時に、モジュール１は、データＢに対するタスクｂ１を処理する。
【００３９】
更に、ステージＰＳ６では、モジュール２は、ステージＰＳ４のデータＢに対するタスクｂ２を処理し、モジュール３は、ステージＰＳ２のデータＢに対するタスクｂ３を処理する。
【００４０】
そして、ステージＰＳ７にて、ステージＰＳ１のデータＡに対するタスクａ５がモジュール２により処理され、ステージＰＳ２のデータＢに対するタスクｂ４がモジュール４により処理される。つまり、ステージＰＳ７で最初のプログラムＡと次のプログラムＢの処理が完了する。
【００４１】
それ以降は、データＡとデータＢが交互に供給されることに応答して、モジュール１は、タスクａ１，ｚ３の処理とタスクｂ１の処理とを交互に行い、モジュール２は、タスクａ２，ａ５の処理とタスクｂ２の処理とを交互に行い、モジュール３は、タスクａ４の処理とタスクｂ３の処理とを交互に行い、モジュール４は、タスクｂ４の処理を間欠的に行う。つまり、各処理ノードのタスク処理が飽和した状態で、各ステージ毎に要求されるプログラムＡ及びＢがパイプライン処理される。従って、データＡ，Ｂがリアルタイムで処理される。
【００４２】
また、図示しないが、ステージＰＳ２でデータＡが供給された場合は、モジュール２でのタスクａ２の処理に伴ってモジュール１内の出力バッファ内の処理済みデータが読み出されないと、モジュール１でタスクａ１を処理開始することはできない。従って、ステージＰＳ２でモジュール１に処理の余力があったとしても、モジュール１は、ステージＰＳ３でタスクａ１の処理を行う。出力バッファのタスクａ１に対する容量が大きい場合は、初期状態において、複数のタスクａ１を連続して処理することが可能である。但し、パイプライン処理が飽和した状態では、図１０のような処理になる。
【００４３】
図１１は、プログラムの具体例（２）を示す図である。この具体例では、プログラムＡとプログラムＢとがタスク処理ノードシステムで処理を要求されるプログラムであり、図中（ａ）に示されるように、プログラムＡは、タスクａ１〜ａ５を有し、タスクａ１を完了したときの状態がケース１の時はタスクａ２またはａ３のいずれか一方を実行し、タスクａ１を完了したときの状態がケース２の時はタスクａ２とａ３の両方を実行する分岐命令が含まれている。そして、タスクａ１，ａ５が処理ノードＰＮ１に分配され、タスクａ２，ａ３，ａ４がそれぞれ処理ノードＰＮ２，ＰＮ３，ＰＮ４に分配されている。この分配は、それぞれの処理ノードに対応するスケジューラのタスク管理プログラムを記述することにより行うことができる。
【００４４】
また、前述と同様に、各モジュールでの分配されたタスクの処理スループットがほぼ均等になるように、モジュールの構成とタスクの配分が行われている。
【００４５】
図１２は、スケジューラＳＣ０とＳＣ１のタスク管理プログラム例である。スケジューラＳＣ０の管理プログラムにおいて、ステップＰ１００では、プログラムＡの起動命令を受信するとモジュール１のスケジューラに「プログラムＡの起動、ＢＩＦのアドレスａｄｄｒ０、データサイズｓｉｚｅ」なるメッセージを送信する。ステップＰ１０４では、プログラムＡのタスクａ５が完了したメッセージを監視し、完了メッセージを受信したらモジュール１（ｍ１）のアドレスａｄｄｒ１にデータサイズｓｉｚｅのデータを、システム外部に出力する。
【００４６】
図１２は、ケース１の場合のスケジューラＳＣ１のプログラム例であり、ステップＰ１１３で、プログラムＡの起動メッセージ「ｐＡ−＞ｓｔａｒｔ」の受信を監視し、受信したら、メッセージに含まれているＢＩＦのローカルアドレスａｄｄｒ０にアクセスしてデータを取得し、タスクａ１を実行し、タスクａ１終了後に、モジュール１の状態が「タスク２」ならモジュール２のスケジューラにメッセージ「ｐＡ−＞ｔａｓｋ．ａ１，  ｍ１．ａｄｄｒ０，  ｓｉｚｅ」を送信し、モジュール１の状態が「タスク３」ならモジュール３のスケジューラにメッセージ「ｐＡ−＞ｔａｓｋ．ａ１，  ｍ１．ａｄｄｒ０，  ｓｉｚｅ」を送信する。ステップＰ１１４では、プログラムＡのタスクａ５の完了メッセージ「ｐＡ−＞ｔａｓｋ．ａ５」の受信を監視し、受信したら、メッセージに含まれているモジュール４のローカルアドレスａｄｄｒ０にアクセスしてデータを取得し、タスクａ５を実行し、タスクａ５終了後にＢＩＦのスケジューラにメッセージ「ｐＡ−＞ｔａｓｋ．ａ５，  ｍ１．ａｄｄｒ１，  ｓｉｚｅ」を送信する。
【００４７】
図１３は、スケジューラＳＣ２とＳＣ３のタスク管理プログラム例である。スケジューラＳＣ２のタスク管理プログラムでは、ステップＰ１２３で、プログラムＡのタスクａ１の完了メッセージを受信した時に次のタスクａ２を開始し、それが終わったらモジュール４のスケジューラに完了メッセージを送信する。また、スケジューラＳＣ３のタスク管理プログラムでは、ステップＰ１３２で、プログラムＡのタスクａ１の完了メッセージを受信した時に次のタスクａ３を開始し、それが終わったらモジュール４のスケジューラに完了メッセージを送信する。
【００４８】
図１４は、スケジューラＳＣ４のタスク管理プログラム例である。これもケース１の場合の例である。ステップＰ１４１で、プログラムＡのタスクａ２の完了メッセージを受信した時に次のタスクａ４を開始し、それが終わったらＢＩＦのスケジューラに完了メッセージを送信する。また、ステップＰ１４２で、プログラムＡのタスクａ３の完了メッセージを受信した時に次のタスクａ４を開始し、それが終わったらＢＩＦのスケジューラに完了メッセージを送信する。
【００４９】
図１５は、ケース２の場合のスケジューラＳＣ１とＳＣ４のタスク管理プログラム例である。スケジューラＳＣ１のプログラム例では、ステップＰ１１５で、プログラムＡの起動メッセージ「ｐＡ−＞ｓｔａｒｔ」の受信を監視し、受信したら、メッセージに含まれているＢＩＦのローカルアドレスａｄｄｒ０にアクセスしてデータを取得し、タスクａ１を実行し、タスクａ１終了後に、モジュール２と３のスケジューラにメッセージ「ｐＡ−＞ｔａｓｋ．ａ１，  ｍ１．ａｄｄｒ０，  ｓｉｚｅ」を送信する。ステップＰ１１４は前述の通りである。
【００５０】
また、スケジューラＳＣ４のタスク管理プログラムでは、ステップＰ１４３で、プログラムＡのタスクａ２とａ３の完了メッセージ「ｐＡ−＞ｔａｓｋ．ａ２」、「ｐＡ−＞ｔａｓｋ．ａ３」の受信を監視し、両方受信したら、メッセージに含まれているモジュール２及び３のローカルアドレスａｄｄｒ０にアクセスして両方のデータを取得し、タスクａ４を実行し、タスクａ４終了後にＢＩＦのスケジューラにメッセージ「ｐＡ−＞ｔａｓｋ．ａ４，  ｍ４．ａｄｄｒ０，  ｓｉｚｅ」を送信する。
【００５１】
図１６は、具体例（２）におけるプログラムＡのパイプライン処理を示すタイミングチャート図である。図１６（Ａ）がケース１の例であり、図１６（Ｂ）がケース２の例である。前述のとおり、各モジュールの構成とタスク分配は、モジュール１によるタスクａ１，ａ３の処理スループットと、モジュール２によるタスクａ２の処理スループットと、モジュール３によるタスクａ４の処理スループットと、モジュール４によるタスクａ４の処理スループットとがほぼ均等になるようにされている。以下、各パイプラインステージにてデータがブロックインターフェースに供給されて、プログラムＡの起動要求がある場合について、各ケース１，２のパイプライン処理について説明する。
【００５２】
図１６（Ａ）の場合、パイプラインステージＰＳ１で供給されたデータ１に対して、次のステージＰＳ２でモジュール１がタスクａ１を処理する。更に、タスクａ１の処理完了に伴って、モジュール２がタスクａ２を処理する。ステージＰＳ２で供給されたデータ２に対しては、モジュール２がタスクａ２の処理に伴ってモジュール１の出力バッファ内の処理済みデータを読み出しているので、ステージＰＳ２でモジュール１がデータ２に対するタスクａ１を開始することはない。
【００５３】
ステージＰＳ３では、モジュール１がデータ２に対するタスクａ１を処理する。また、タスクａ２の処理完了に応答して、モジュール４がタスクａ４の処理を開始する。また、データ２に対するタスクａ１を処理した結果、モジュール１の状態がタスクａ３になっているとすると、ステージＰＳ３でモジュール３がタスクａ３を処理開始する。
【００５４】
ステージＰＳ４では、モジュール１がデータ３に対するタスクａ１を処理し、残った時間でデータ１に対するタスクａ５を処理する。また、データ３に対するタスクａ１の処理の結果、タスクａ２の状態になり、モジュール２がタスクａ２を処理している。更に、モジュール４はデータ２に対するタスクａ４を処理する。
【００５５】
その後は、各パイプラインステージで、モジュール１はタスクａ１，ａ５を処理し、モジュール２または３はタスクａ２またはａ３を処理し、モジュール４はタスクａ４を処理する。ステージ毎にデータが供給された場合、この状態で飽和する。
【００５６】
図１６（Ａ）の場合は、タスクａ１を処理した後タスクａ２，ａ３が同時に処理される。それ以外は、図１６（Ａ）と同じである。
【００５７】
以上のように、上記の実施の形態では、複数の処理ノードの構成をそれぞれ異なる構成にして、それぞれに分配された重さが異なるタスクに対して処理スループットが均等になるようにし、更に、各処理ノードをスケジュール制御するスケジューラが、タスク完了メッセージを転送し、そのタスク完了メッセージに応答して次のタスク開始制御をする。その結果、パイプライン処理が可能になり、データのリアルタイム処理が可能になる。
【００５８】
以上、実施の形態例をまとめると以下の付記の通りである。
【００５９】
（付記１）マルチ処理ノードシステムにおいて、
それぞれ所定のタスクを行い、分配された重さが異なるタスクに対する処理スループットがほぼ均等に構成された複数の処理ノードと、
前記複数の処理ノードに接続され当該複数の処理ノード間でデータ転送が行われるデータネットワークと、
前記複数の処理ノードそれぞれに対応して設けられ、対応する処理ノードへタスク開始制御をし更にタスク終了信号を受信してタスクのスケジュール制御を行う複数のスケジューラと、
前記複数のスケジューラに接続され、当該複数のスケジューラ間でのメッセージの転送が行われるメッセージネットワークとを有し、
前記スケジューラは、他のスケジューラから送信されるタスク終了メッセージに応答して、対応する処理ノードにタスク開始制御を行い、当該対応する処理ノードからのタスク終了信号に応答して、次のタスクを行う処理ノードのスケジューラに前記メッセージネットワークを介してタスク終了メッセージを送信することを特徴とするマルチ処理ノードシステム。
【００６０】
（付記２）付記１において、
前記処理ノードはローカルメモリを有し、タスク処理終了時に処理済みデータを当該ローカルメモリに格納し、
前記スケジューラは、タスク終了メッセージに、終了したタスク情報と共に前記処理済みデータが格納されている処理ノード情報とローカルアドレスとを含め、
後続のタスクを処理する処理ノードは、当該タスク終了メッセージに含まれた処理ノード情報とローカルアドレスに基づいて、前記データネットワークを介して前記処理済みデータを取得することを特徴とするマルチ処理ノードシステム。
【００６１】
（付記３）付記１において、
各処理ノードには、システム内のグローバルアドレスと処理ノード内のローカルアドレスとを変換するアドレス変換回路を、前記データネットワークとの間に有することを特徴とするマルチ処理ノードシステム。
【００６２】
（付記４）付記１において、
各スケジューラは、対応する処理ノードにタスク開始制御を行った時に当該処理ノードへのクロック供給を開始し、処理ノードからのタスク終了信号に応答して当該クロック供給を停止することを特徴とするマルチ処理ノードシステム。
【００６３】
（付記５）付記１において、
前記データネットワークは、前記複数の処理ノードに接続されたデータバスと、当該データバスのバス管理を行うバスアービタとを有することを特徴とするマルチ処理ノードシステム。
【００６４】
（付記６）付記１において、
前記スケジューラは、他のスケジューラからのタスク完了メッセージの受信と、対応する処理ノードからのタスク終了信号の受信とを監視し、前記タスク完了メッセージを受信したときに、対応する処理ノードがタスク処理中の場合は、当該タスク完了メッセージに対応するタスクの開始を待機し、前記タスク終了信号の受信に応答して、当該待機させたタスクの開始を制御することを特徴とするマルチ処理ノードシステム。
【００６５】
（付記７）付記１において、
前記複数の処理ノードが、複数のタスクを並列に処理して、パイプライン処理が行われることを特徴とするマルチ処理ノードシステム。
【００６６】
（付記８）マルチ処理ノードシステムにおいて、
それぞれ所定のタスクを行う複数の処理ノードと、
前記複数の処理ノードに接続され当該複数の処理ノード間でデータ転送が行われるデータネットワークと、
前記複数の処理ノードそれぞれに対応して設けられ、対応する処理ノードへタスク開始制御を行う複数のスケジューラと、
前記複数のスケジューラに接続され、当該複数のスケジューラ間でのメッセージの転送が行われるメッセージネットワークとを有し、
各スケジューラは、対応する処理ノードからのタスク終了信号に応答して、タスク完了メッセージをプッシュ方式で次のタスクを行う処理ノードのスケジューラ転送し、各スケジューラは、タスク完了メッセージの受信に応答して、前記タスク開始制御を行い、
各処理ノードは、タスク処理を開始するときに前タスクを実行した処理ノードのローカルメモリから必要なデータをプル方式で取得することを特徴とするマルチ処理ノードシステム。
【００６７】
（付記９）付記８において、
前記タスク完了メッセージには、処理済みデータのローカルアドレスが含まれていることを特徴とするマルチ処理ノードシステム。
【００６８】
（付記１０）付記８において、
前記スケジューラや、前記タスク完了メッセージを受信した時に、対応する処理ノードがタスク処理中であれば、当該タスクが終了するまで前記タスク開始制御を待機することを特徴とするマルチ処理ノードシステム。
【００６９】
【発明の効果】
以上、本発明によれば、複数の処理ノードそれぞれにスケジューラを設け、スケジューラは対応する処理ノードでタスク処理が完了するとタスク完了メッセージを次のタスクを処理する他のスケジューラに送信し、他のスケジューラからタスク完了メッセージを受信すると対応する処理ノードにそのタスクの処理開始を指令するので、簡単なスケジュール管理で、リアルタイム処理及びパイプライン処理を実現することができる。
【図面の簡単な説明】
【図１】従来のマルチ処理ノードシステムの構成例を示す図である。
【図２】本実施の形態におけるマルチ処理ノードシステムの構成図である。
【図３】本実施の形態におけるスケジューラ間のメッセージ転送と処理タスク間のデータ転送を説明する図である。
【図４】本実施の形態におけるスケジューラのタスク制御のフローチャート図である。
【図５】本実施の形態におけるスケジューラのクロック制御を説明する図である。
【図６】プログラムの具体例（１）を示す図である。
【図７】スケジューラＳＣ０のタスク管理プログラム例である。
【図８】スケジューラＳＣ１とＳＣ２のタスク管理プログラム例である。
【図９】スケジューラＳＣ３とＳＣ４のタスク管理プログラム例である。
【図１０】具体例（１）におけるプログラムＡとＢに対するパイプライン処理を示すタイミングチャート図である。
【図１１】プログラムの具体例（２）を示す図である。
【図１２】スケジューラＳＣ０とＳＣ１のタスク管理プログラム例である。
【図１３】スケジューラＳＣ２とＳＣ３のタスク管理プログラム例である。
【図１４】スケジューラＳＣ４のタスク管理プログラム例である。
【図１５】ケース２の場合のスケジューラＳＣ１とＳＣ４のタスク管理プログラム例である。
【図１６】具体例（２）におけるプログラムＡのタスク処理のタイミングチャート図である。
【符号の説明】
ＰＮ１〜ＰＮ４：処理ノード、ＳＣ０〜ＳＣ４：スケジューラ
２：データネットワーク、１０：メッセージネットワーク
１２：バスアービタ
【図１】
2004295494.tif 000003
【図２】
2004295494.tif 000004
【図３】
2004295494.tif 000005
【図４】
2004295494.tif 000006
【図５】
2004295494.tif 000007
【図６】
2004295494.tif 000008
【図７】
2004295494.tif 000009
【図８】
2004295494.tif 000010
【図９】
2004295494.tif 000011
【図１０】
2004295494.tif 000012
【図１１】
2004295494.tif 000013
【図１２】
2004295494.tif 000014
【図１３】
2004295494.tif 000015
【図１４】
2004295494.tif 000016
【図１５】
2004295494.tif 000017
【図１６】
2004295494.tif 000018