(57)【要約】【課題】リアルタイム要求に適したパイプライン処理の特性を残しつつ、プロセッサ要素間のデータ転送の総量を削減する。【解決手段】パイプライン処理装置１０では、スケジューラが、アプリケーションの初期化時に、複数のステージに分割されたアプリケーションプログラムの各実行コードを各プロセッサ要素ＰＥ１〜ＰＥ８のローカルメモリ２１に個別に割り当てる。アプリケーションの実行中は、各プロセッサ要素ＰＥ１〜ＰＥ８が、対象データを実行コードにより処理する。各プロセッサ要素ＰＥ１〜ＰＥ８では、実行コードが対象データの単位データ量の処理を終了したことを検知すると、経路情報に従って他のプロセッサ要素に実行コードを転送する。【選択図】      図１
2010039511.tif 000002
【特許請求の範囲】
【請求項１】
対象データをパイプライン処理するためのプログラムを複数のステージに分割したときの実行コードと前記対象データとを記憶する局所記憶手段と、経路情報を記憶する経路情報記憶手段とを有する複数のプロセッサ要素を備えたパイプライン処理装置であって、
アプリケーションの初期化時に、分割されたステージの各実行コードを前記各プロセッサ要素の局所記憶手段に個別に割り当てる手段と、
前記各プロセッサ要素の使用順序を決定し、該使用順序に従った経路情報を前記各プロセッサ要素の経路情報記憶手段に書き込む経路情報書込手段と、
を備え、
前記各プロセッサ要素は、
前記対象データを前記実行コードにより処理するデータ処理手段と、
前記実行コードが前記対象データの単位データ量の処理を終了したことを検知する検知手段と、
前記実行コードが単位データ量の処理を終了したことが前記検知手段により検知された場合、前記経路情報に従って他のプロセッサ要素に前記実行コードを転送する実行コード転送手段と
を備えたことを特徴とするパイプライン処理装置。
【請求項２】
対象データをパイプライン処理するためのプログラムを複数のステージに分割したときの実行コードと前記対象データとを記憶する局所記憶手段と、経路情報を記憶する経路情報記憶手段と、前記各ステージに対応するステータス情報を記憶するステータス情報記憶手段とを有する複数のプロセッサ要素を備えたパイプライン処理装置であって、
アプリケーションの初期化時に、一のプロセッサ要素の局所記憶手段に、複数のステージに分割された該アプリケーションプログラムの最初のステージの実行コードを割り当てる手段を備え、
前記各プロセッサ要素は、
前記対象データを前記実行コードにより処理するデータ処理手段と、
前記局所記憶手段に実行コードを書き込み可能であるときは、前記ステータス情報を空き状態と設定する手段と、
前記データ処理手段による処理が終了した場合、他のプロセッサ要素に前記実行コードの転送要求を送出する手段と、
他のプロセッサ要素から該実行コードの転送要求を受けたときに、前記ステータス情報が空き状態と設定されている場合、該他のプロセッサ要素に許可応答を送出する手段と、
前記転送要求に応じて他のプロセッサ要素から許可応答を受けた場合、該許可応答元のプロセッサ要素を次の転送先とする経路情報を前記経路情報記憶手段に書き込む経路情報書込手段と、
前記経路情報書込手段により書き込まれた経路情報に従って他のプロセッサ要素に前記実行コードを転送する手段と
を備えたことを特徴とするパイプライン処理装置。
【請求項３】
対象データをパイプライン処理するためのプログラムを複数のステージに分割したときの実行コードと前記対象データとを記憶する局所記憶手段と、経路情報を記憶する経路情報記憶手段とを有する複数のプロセッサ要素を備えたパイプライン処理装置に用いられるパイプライン処理方法であって、
アプリケーションの初期化時に、分割されたステージの各実行コードを前記各プロセッサ要素の局所記憶手段に個別に割り当てる工程と、
前記各プロセッサ要素の使用順序を決定し、該使用順序に従った経路情報を前記各プロセッサ要素の経路情報記憶手段に書き込む経路情報書込工程と、
前記各プロセッサ要素において、前記対象データを前記実行コードにより処理するデータ処理工程と、
前記実行コードが前記対象データの単位データ量の処理を終了したことを検知する検知工程と、
前記実行コードが単位データ量の処理を終了したことが前記検知工程により検知された場合、前記経路情報に従って他のプロセッサ要素に前記実行コードを転送する実行コード転送工程と
を具備したことを特徴とするパイプライン処理方法。
【請求項４】
対象データをパイプライン処理するためのプログラムを複数のステージに分割したときの実行コードと前記対象データとを記憶する局所記憶手段と、経路情報を記憶する経路情報記憶手段と、前記各ステージに対応するステータス情報を記憶するステータス情報記憶手段とを有する複数のプロセッサ要素を備えたパイプライン処理装置に用いられるパイプライン処理方法であって、
アプリケーションの初期化時に、該プログラムを複数のステージの実行コードに分割し、一のプロセッサ要素の局所記憶手段に最初のステージの実行コードを割り当てる工程と、
前記各プロセッサ要素において、対象データを前記実行コードにより処理するデータ処理工程と、
前記局所記憶手段に実行コードを書き込み可能であるときは、前記ステータス情報を空き状態と設定する工程と、
前記各プロセッサ要素において、前記データ処理工程による処理が終了した場合、他のプロセッサ要素に前記実行コードの転送要求を送出する工程と、
前記転送要求を受けた他のプロセッサ要素において、ステータス情報が空き状態と設定されている場合、転送要求元のプロセッサ要素に許可応答を送出する手段と、
前記転送要求に応じて許可応答を受けた場合、該許可応答元のプロセッサ要素を次の転送先とする経路情報を前記経路情報記憶手段に書き込む経路情報書込工程と、
前記経路情報書込工程により書き込まれた経路情報に従って他のプロセッサ要素に前記実行コードを転送する工程と
を具備したことを特徴とするパイプライン処理方法。
【請求項５】
個別に記憶手段を備えており、対象データをパイプライン処理するため複数のプロセッサ要素に用いられるパイプライン制御プログラムであって、
前記各プロセッサ要素を、
前記パイプライン処理するためのプログラムを複数のステージに分割したときの実行コードと前記対象データとを前記記憶手段に書き込む手段、
アプリケーションの初期化時に、予め設定された各プロセッサ要素の使用順序に従った経路情報を前記各プロセッサ要素の記憶手段に書き込む手段、
前記対象データを前記実行コードにより処理するデータ処理手段、
前記実行コードが前記対象データの単位データ量の処理を終了したことを検知する検知手段、
前記実行コードが単位データ量の処理を終了したことが前記検知手段により検知された場合、前記経路情報に従って他のプロセッサ要素に前記実行コードを転送する実行コード転送手段、
として実現させるプログラム。
【請求項６】
個別に記憶手段を備えており、対象データをパイプライン処理するための複数のプロセッサ要素に用いられるパイプライン制御プログラムであって、
前記各プロセッサ要素を、
前記パイプライン処理するためのプログラムを複数のステージに分割したときの実行コードと前記対象データとを前記記憶手段に書き込む手段、
前記対象データを前記実行コードにより処理するデータ処理手段、
前記記憶手段に実行コードを書き込み可能であるときは、前記ステータス情報を空き状態と設定する手段、
前記データ処理手段による処理が終了した場合、他のプロセッサ要素に前記実行コードの転送要求を送出する手段、
他のプロセッサ要素から該実行コードの転送要求を受けたときに、前記ステータス情報が空き状態と設定されている場合、該他のプロセッサ要素に許可応答を送出する手段、
前記転送要求に応じて他のプロセッサ要素から許可応答を受けた場合、該許可応答元のプロセッサ要素を次の転送先とする経路情報を前記記憶手段に書き込む手段、
前記記憶手段に書き込まれた経路情報に従って他のプロセッサ要素に前記実行コードを転送する手段
として実現させるパイプライン制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサを用いてパイプライン処理するパイプライン処理装置等に関し、特に、リアルタイム要求に適したパイプライン処理の特性を残しつつ、プロセッサ要素間のデータ転送の総量を削減し、且つアプリケーション開発の負荷を軽減し得るパイプライン処理装置等に関する。
【背景技術】
【０００２】
従前より、例えば動画像を再生するときには、一定時間内に一定量のデータ処理がリアルタイム要求される場合がある。
【０００３】
リアルタイム要求を実現する方法としては、ＤＳＰ（digital signal processor）などの専用のハードウェアを組み込んだ組み込みシステムが挙げられる。近年では、プロセッサ技術の進歩により、マルチプロセッサを用いてプログラム並列処理を行う組み込みシステムが増えている。
【０００４】
例えば、各々のプロセッサ要素（以下、ＰＥとも表記する）が比較的小容量のローカルメモリを有し、実行コードと処理対象のデータ（以下、対象データともいう）とをローカルメモリに取り込んでから処理する構成のシステムがある。この構成のシステムでは、ローカルメモリに取り込まれるデータを処理している間は共有メモリなどの外部資源にアクセスする必要がない。そのため、他のプロセッサとの資源の競合が生じにくく、リアルタイム要求を実現するのに適している。
【０００５】
しかしながら、マルチプロセッサを使用する場合、どのようにスケジューリングするかが問題となる。すなわち、複数のプロセッサとプログラムとをどのような手順で割り当てればリアルタイム要求を満たせるのかが問題となる。この問題の解決策のひとつとして、ソフトウェアをパイプライン処理（以下、単にパイプライン処理という）する方法がある。
【０００６】
従来のパイプライン処理では、アプリケーションソフトウェアをあらかじめ複数のプログラムまたは機能モジュールなどのステージに分割する。そして、分割したステージのそれぞれを１つのＰＥに割り付ける（ロードする）。なお、多くの場合は、プログラムの分割数を使用可能なＰＥ数に対応させる。
【０００７】
パイプライン処理するためのマルチプロセッサでは、対象データが入力されると、例えばローカルメモリの空き領域の大きさから決定される処理単位分のデータが最前段のＰＥ１にロードされる。ＰＥ１での処理が終了すると、処理結果のデータが次の段のＰＥ２に転送される。ＰＥ２で２段目の処理が開始されると同時に、最前段のＰＥ１に新しいデータがロードされる。それから、最初のデータがパイプラインの最終段であるＰＥ３に転送され、処理が定常状態になる。この後は、ＰＥ１〜ＰＥ３の全てにおいて、データが同時に処理されている状態になる。これにより、所望の要求性能が満たされるようになる。
【０００８】
パイプライン処理のメリットとしては、メモリやＩ／Ｏ等の外部資源にアクセスするＰＥが限定されるため資源競合が起こりにくく、処理時間を見積もり易いためリアルタイム設計がしやすいということが挙げられる。また、データの処理順序が逆転することがないため出力段の同期処理の必要がないことや、データが必ず逐次処理となるためあらかじめ分割できないデータでも問題なく処理できることが挙げられる。
【特許文献１】特許第３８８９７２６号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述したパイプライン処理には次の課題がある。第１の課題は、パイプライン段数分のＰＥ間でデータを転送しなければならない、ということである。データ転送はＤＭＡ（direct memory access）により行われることが多いが、転送すべきデータが大きい場合やパイプライン段数を多くしたい場合には、ＤＭＡのオーバヘッドがシステム全体に影響にすることがある。特に、転送用のバスを共有しているハードウェアであれば、バスの使用率が上昇してくると、バスが使用できるまでの待ちの時間を見積もるのが困難になる。結果として、リアルタイム性を実現できなくなることがある。
【００１０】
第２の課題は、処理の重い段が１つでもあると、その段がボトルネックとなり、システム全体としての要求性能を達成できない、ということである。例えば図１７に示すように、単位データ当たり５ｍｓの要求性能が求められる前提において、ソフトウェア全体の処理性能が単位データ当たり１４ｍｓかかるとする。そこで、アプリケーション設計者がプログラムを３ステージに分割し、各ステージをＰＥ１〜ＰＥ３で実行するとする。ここでは、ＰＥ１〜ＰＥ３は、それぞれ単位データ当たり４ｍｓ，６ｍｓ，４ｍｓの処理時間を要するので、ＰＥ２において要求性能を満たしていないことになる。要するに、ＰＥ１，ＰＥ３が要求性能を満たしていてもＰＥ２が要求性能を満たしていなければ、システム全体として要求性能を達成できないことになる。なお、ＰＥ数に余裕がある場合でも同様である。
【００１１】
そこで、アプリケーション設計者は、所望の要求性能を実現できるようにプログラムをさらに分割し、あまっているＰＥに割り付ける作業を行う。ＰＥ数に余裕がない場合は、アプリケーション設計者は、プログラムの分割を見直す作業を行う。
【００１２】
しかしながら、一般的には、プログラムを分割する作業は非常な労力を伴う。プログラムを分割する作業を行うとした場合、アプリケーション設計者は、プログラムの分割可能点を正確に把握しなければならない。また、分割した場合にボトルネックが生じないように、各ステージにおける処理性能を把握しなければならない。
【００１３】
また、原理的あるいは現実的に分割不可能な機能モジュールがボトルネックになってしまう。この問題は、性能を上げるために多段化しようとすればするほど現れやすくなる。
【００１４】
なお、このような問題はパイプライン処理の潜在的欠点と認識されている。これに対し、例えば、スケジューラがプログラムの実行時間と入出力関係とを認識し、処理内容がパイプライン状になるように周期的にスケジュールすることによって所望の時間を達成できる枠組みをアプリケーション設計者に提供する方法などもある（例えば特許文献１参照）。
【００１５】
本発明は、上記実情に鑑みてなされたものであり、リアルタイム要求に適したパイプライン処理の特性を残しつつ、プロセッサ要素間のデータ転送の総量を削減し得るパイプライン処理装置、パイプライン処理方法及びパイプライン制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明は上記課題を解決するために以下の手段を講じる。  
第１の発明は、対象データをパイプライン処理するためのプログラムを複数のステージに分割したときの実行コードと前記対象データとを記憶する局所記憶手段と、経路情報を記憶する経路情報記憶手段とを有する複数のプロセッサ要素を備えたパイプライン処理装置であって、前記アプリケーションの初期化時に、分割されたステージの各実行コードを前記各プロセッサ要素の局所記憶手段に個別に割り当てる手段と、前記各プロセッサ要素の使用順序を決定し、該使用順序に従った経路情報を前記各プロセッサ要素の経路情報記憶手段に書き込む経路情報書込手段とを備え、前記各プロセッサ要素は、前記対象データを前記実行コードにより処理するデータ処理手段と、前記実行コードが前記対象データの単位データ量の処理を終了したことを検知する検知手段と、前記実行コードが単位データ量の処理を終了したことが前記検知手段により検知された場合、前記経路情報に従って他のプロセッサ要素に前記実行コードを転送する実行コード転送手段とを備えたパイプライン処理装置である。
【００１７】
第１の発明は、アプリケーションの初期化時に、分割されたステージの各実行コードを前記各プロセッサ要素の局所記憶手段に個別に割り当てる手段と、各プロセッサ要素の使用順序を決定し、該使用順序に従った経路情報を各プロセッサ要素の経路情報記憶手段に書き込む経路情報書込手段とを備え、各プロセッサ要素において、実行コードにより単位データ量の処理を終了したことが検知された場合、経路情報に従って他のプロセッサ要素に実行コードを転送するので、対象データを転送するのに比してバスの使用率を抑えることができ、リアルタイム要求に適したパイプライン処理の特性を残しつつ、プロセッサ要素間のデータ転送の総量を削減し得るパイプライン処理装置を提供することができる。
【００１８】
第２の発明は、対象データをパイプライン処理するためのプログラムを複数のステージに分割したときの実行コードと前記対象データとを記憶する局所記憶手段と、経路情報を記憶する経路情報記憶手段と、前記各ステージに対応するステータス情報を記憶するステータス情報記憶手段とを有する複数のプロセッサ要素を備えたパイプライン処理装置であって、前記アプリケーションの初期化時に、一のプロセッサ要素の局所記憶手段に、複数のステージに分割された該アプリケーションプログラムの最初のステージの実行コードを割り当てる手段を備え、前記各プロセッサ要素が、前記対象データを前記実行コードにより処理するデータ処理手段と、前記局所記憶手段に実行コードを書き込み可能であるときは、前記ステータス情報を空き状態と設定する手段と、前記データ処理手段による処理が終了した場合、他のプロセッサ要素に前記実行コードの転送要求を送出する手段と、他のプロセッサ要素から該実行コードの転送要求を受けたときに、前記ステータス情報が空き状態と設定されている場合、該他のプロセッサ要素に許可応答を送出する手段と、前記転送要求に応じて他のプロセッサ要素から許可応答を受けた場合、該許可応答元のプロセッサ要素を次の転送先とする経路情報を前記経路情報記憶手段に書き込む経路情報書込手段と、前記経路情報書込手段により書き込まれた経路情報に従って他のプロセッサ要素に前記実行コードを転送する手段とを備えたパイプライン処理装置である。
【００１９】
第２の発明は、各プロセッサ要素が、他のプロセッサ要素から実行コードの転送要求を受けたときに、ステータス情報が空き状態と設定されている場合、許可応答を送出するとともに、転送要求に応じて他のプロセッサ要素から許可応答を受けた場合、許可応答元のプロセッサ要素を次の転送先とし、その経路情報に従って他のプロセッサ要素に実行コードを転送するので、対象データを転送するのに比してバスの使用率を抑えることができ、リアルタイム要求に適したパイプライン処理の特性を残しつつ、プロセッサ要素間のデータ転送の総量を削減し得るパイプライン処理装置を提供することができる。
【発明の効果】
【００２０】
本発明によれば、リアルタイム要求に適したパイプライン処理の特性を残しつつ、プロセッサ要素間のデータ転送の総量を削減し、且つアプリケーション開発の負担を軽減することができる。
【発明を実施するための最良の形態】
【００２１】
以下、図面を参照して本発明の実施形態を説明する。なお、本発明において、「アプリケーション」は、プログラムのみならず、ミドルウェアやデバイスドライバなどを含むものとする。  
＜第１の実施形態＞  
図１は本発明の第１の実施形態に係るパイプライン処理装置１０の構成を示す模式図である。このパイプライン処理装置１０は、複数のプロセッサ要素ＰＥ１〜ＰＥ８、共有メモリ１１、バス１２、入出力ポート（Ｉ／Ｏ）１３，１４を備えている。なお、図1に示すプロセッサ要素の個数は例示であり、これに限るものではない。
【００２２】
共有メモリ１１は、「スケジューラ」のプログラムを記憶する記憶装置である。スケジューラは、アプリケーションの初期化時に、そのアプリケーションのプログラムを複数のステージに分割し、分割した各ステージに対応する実行コードを各プロセッサ要素ＰＥ１〜ＰＥ８のローカルメモリ２１に個別に割り当てる機能を有している。また、スケジューラは、各プロセッサ要素ＰＥ１〜ＰＥ８の使用順序を決定し、この使用順序に従った「経路情報」を各プロセッサ要素ＰＥ１〜ＰＥ８のパイプライン制御プログラムに設定する機能を有している。  
なお、ここではスケジューラが共有メモリ１１に記憶されるとしているが、これに限らず、プロセッサ要素のローカルメモリ２１に記憶される構成であってもよい。
【００２３】
各プロセッサ要素ＰＥ１〜ＰＥ８は、図２に示すように、ローカルメモリ２１、演算ユニット２２、ＤＭＡＣ（direct memory access controller）２３を有している。
【００２４】
ローカルメモリ２１は、各プロセッサ要素ＰＥ１〜ＰＥ８に個別に設けられた記憶装置であり、対象データをパイプライン処理するための「実行コード」と、「対象データ」とを記憶する。また、ローカルメモリ２１は、「パイプライン制御プログラム」も記憶している。パイプライン制御プログラムは、経路情報や、ステージの実行コードが格納されるステージバッファの状態を示す「ステータス情報」を管理情報として保持しており、これらの情報に基づいて各プロセッサ要素ＰＥ１〜ＰＥ８を制御する。パイプライン制御プログラムの詳細については後述する。
【００２５】
なお、ローカルメモリ２１は、図３に示すように、各ステージの実行コードを格納するステージバッファ（stage buffer）をステージバッファＡ及びステージバッファＢとして２重化している。これにより、ＤＭＡＣ２３が実行コードの転送中に（図３（Ａ））、次のステージの処理を実行できる（図３（Ｂ））。この結果、ＤＭＡの処理時間に要するタイムラグをなくすことが可能となる。従来のデータパイプライン方式でもよく用いられる構成である。
【００２６】
演算ユニット２２は、対象データを実行コードにより処理するものである。演算ユニット２２にパイプライン制御プログラムが組み込まれることにより各種機能が発揮される。具体的には、演算ユニット２２は、実行コードが対象データの単位データ量の処理を終了したことを検知する検知機能を有する。また、演算ユニット２２は、検知機能により実行コードが単位データ量の処理を終了したことを検知した場合、ＤＭＡＣ２３にＤＭＡ起動をかける機能を有する。
【００２７】
ＤＭＡＣ２３は、演算ユニット２２からＤＭＡ起動がかかると、ローカルメモリ２１に記憶された経路情報に従って他のプロセッサ要素に実行コードを転送する。
【００２８】
図４は本実施形態に係るパイプライン制御プログラムの機能構成を示した模式図である。パイプライン制御プログラムは、管理情報とパイプライン制御プログラム実行コードとを保持する。
【００２９】
管理情報は、パイプライン制御プログラムがプロセッサ要素ＰＥの制御を行う上で必要な情報である。管理情報として、例えば、経路情報や、データバッファ状態を示す情報、ステージバッファ状態を示す情報（ステータス情報含む）が保持される。なお、管理情報はキャッシュメモリなどに記憶される。
【００３０】
経路情報は、パイプラインがどのようにつながっているかを示すデータであり、例えば図４に示す「転送先のＰＥ番号」が該当する。なお、本実施形態においては、経路情報はアプリケーションの初期化時にスケジューラにより固定値が与えられるものとする。ただし、これに限るものではなく、アプリケーション実行中に動的に変更されるとしてもよい。
【００３１】
他の管理情報は、アプリケーション実行時に動的に変更されるものであり、現在の実行状態を保持するものである。例えば、データバッファの状態を示す情報としては、最終ステージ番号、入力データを保持するバッファのアドレス、出力データを保持するバッファのアドレス、有効データサイズがある。また、ステージバッファの状態を示す情報としては、ステータス情報、ステージ番号がある。
【００３２】
ステージバッファは、ローカルメモリ２１における各ステージの実行コードを保持する記憶領域のことであり、各ステージを識別するためのステージ番号やステージバッファの状態を示すステータス情報により管理される。ステージバッファは、図５に示すように、“空き状態（ＩＤＬＥ）”，“準備状態（ＳＴＡＮＤＢＹ）”，“実行状態（ＡＣＴＩＶＥ）”，“転送状態（ＴＲＡＮＳＦＥＲ）”の順に状態遷移する。ここでは、ステータス情報の設定を変えることにより、ステージバッファを状態遷移させて、パイプラインの逐次処理を実現する。
【００３３】
なお、“ＡＣＴＩＶＥ”は、「現在この実行コードを実行している」状態であるので、１個のＰＥ内でＡＣＴＩＶＥであるステージバッファは高々１つである。“ＳＴＡＮＤＢＹ”は、実行コードはすでに存在するが、まだそれを実行するときではない状態である。現在ＡＣＴＩＶＥ状態のステージの処理が終了すると、ＳＴＡＮＤＢＹ状態のステージがＡＣＴＩＶＥ状態となる。
【００３４】
また、パイプライン制御プログラム実行コードが演算ユニット２２に組み込まれると、演算ユニット２２が次のように機能する。まず、演算ユニット２２は、そのＰＥが保持する実行コードの処理が全体の処理のうち最初のステージか否かを認識する。そして、演算ユニット２２に、最初のステージの実行コードが処理すべきデータが到着すると、その実行コードを実行する。演算ユニット２２は、単位データ量の処理が終了すると、ＤＭＡ起動をかける。また、演算ユニット２２は、実行した実行コードを消去する。実行コードのＤＭＡ転送がされると、次ステージの実行コードが到着する（あるいは到着している）ので、演算ユニット２２は、次ステージの実行コードを実行する。次ステージの実行が完了したら、経路情報に従って実行コードを転送し、今実行した実行コードを消去する。これを繰り返すと、最終ステージの処理とその実行コードの転送とが終了したときに、最初のステージの処理が到着していることになる。
【００３５】
なお、ローカルメモリの容量に余裕がある場合、全てのＰＥのローカルメモリに全ての段の実行コードを収容できる場合がある。このような場合は、実行コードの実体の転送を省略することができる。パイプライン制御プログラムは前段に対して、次ステージの実行コードの準備ができたこと（次ステージの実行コードの実行許可）を通知するだけでよい。そのため、ＰＥ間のデータ転送をほとんど無くす、または全く無し（割り込みだけなど）にすることができる。また、処理単位ごとに実行コードを消去する必要もなくなる。  図６はパイプライン処理装置１０における初期化処理を説明するための図である。パイプライン処理装置１０における初期化処理は、例えばアプリケーションの開始時などにスケジューラにより実行される。ただし、この初期化処理を行う主体は、共有メモリ１１に記憶されたスケジューラに限るものではなく、各パイプライン制御プログラム内に設けた別個の初期化プログラムが実行するとしてもよい。なお、以下の説明において、パイプライン処理するためのアプリケーションプログラムは、ステージ１〜ステージ３に分割されるものとする。
【００３６】
始めに、アプリケーションの開始時などにおいて、スケジューラに初期化命令が送出される。これに応じて、スケジューラは、各ＰＥの経路情報を設定し、対応する経路情報を各ＰＥに送出する（Ｓ１）。ここでは、ＰＥ３，ＰＥ２，ＰＥ１の転送先としてそれぞれＰＥ２，ＰＥ１，ＰＥ３が設定される。
【００３７】
続いて、スケジューラは、全ＰＥの有効データバッファサイズを０にセットする（Ｓ２）。それから、スケジューラは、全ＰＥの２重化した２番目のステージバッファＢのステータス状態を“ＩＤＬＥ”にセットする（Ｓ３）。
【００３８】
次に、スケジューラは、全ＰＥの最終ステージ番号と、1番目のステージバッファＡのステージ番号をセットする（Ｓ４）。ここでは、ＰＥ３，ＰＥ２，ＰＥ１のそれぞれに対して、最終ステージ番号及びステージバッファＡのステージ番号を（３，１），（１，２），（２，３）と設定する。
【００３９】
続いて、スケジューラは、各ＰＥの１番目のステージバッファＡに対応するステージの実行コードをロードする（Ｓ５）。ここでは、ＰＥ３，ＰＥ２，ＰＥ１に対してそれぞれステージ１，ステージ２，ステージ３をロードする。
【００４０】
次に、スケジューラは、全ＰＥのステージバッファＡのステータス状態を“ＳＴＡＮＤＢＹ”にセットする（Ｓ６）。そして、スケジューラは、全ＰＥに「ＳＴＡＮＤＢＹ通知」を送出する（Ｓ７）。
【００４１】
以上の手順で初期化処理が行われると、パイプライン処理装置１０においてパイプライン処理を実行できるようになる。  
パイプライン処理装置１０の初期化後は、各ＰＥにおいて、ＳＴＡＮＤＢＹ通知の受取処理、ステージの終了処理、ＤＭＡ完了通知の受取処理、が随時実行される。
【００４２】
図７はＳＴＡＮＤＢＹ通知の受取処理の手順を示す図である。各ＰＥは、「ＳＴＡＮＤＢＹ通知」を受け取ると、あるステージバッファｘのステータス情報を“ＩＤＬＥ”から“ＳＴＡＮＤＢＹ”に変更する（Ｔ１）。ＳＴＡＮＤＢＹ通知時に２重化した一方のステージバッファが“ＡＣＴＩＶＥ”であれば、その処理が継続される（Ｔ２−Ｙｅｓ）。
【００４３】
一方、ＡＣＴＩＶＥ状態のステージバッファがなければ、ステージ番号と最終ステージ番号とから次のステージバッファを検索する（Ｔ２−Ｎｏ，Ｔ３）。
【００４４】
ステージバッファを検索した場合、該当するステージバッファのステータス情報を“ＳＴＡＮＤＢＹ”から“ＡＣＴＩＶＥ”に変更する（Ｔ４）。ステータス情報をＡＣＴＩＶＥに変更するときには、パイプライン制御プログラムが、バッファの最初と最後のアドレス及びバッファの大きさを、該当するステージの実行コードに渡す処理を行う（Ｔ５）。これにより、該当するステージの実行コードの処理が開始される。
【００４５】
図８はステージの終了処理の手順を示す図である。各ＰＥでは、実行コード完了通知が送出されると、処理したステージバッファｘのステータス情報を“ＡＣＴＩＶＥ”から“ＴＲＡＮＳＦＥＲ”に変更する（Ｕ１）。
【００４６】
ステップＵ１の処理をしたＰＥは、入力データバッファのアドレスと出力データバッファのアドレスとを入れ替える（Ｕ２）。そして、実行コード完了通知に含まれる出力サイズを有効データサイズにする（Ｕ３）。また、最終ステージ番号を更新する（Ｕ４）。
【００４７】
それから、ＰＥは、転送先ＰＥから“空き状態（ＩＤＬＥ）”のステージバッファ（stage buff）を検索する（Ｕ５）。空き状態のステージバッファが検索された場合、ＰＥでは、転送先ＰＥへ実行コードのＤＭＡ転送を開始する（Ｕ６−Ｙｅｓ，Ｕ７）。また、ＰＥは、ＤＭＡ転送を開始したときに、後述するＳＴＡＮＤＢＹ通知を他のプロセッサ要素から既に受けている場合、ステージ番号と最終ステージ番号とから次ステージのステージバッファを検索する（Ｕ８−Ｙｅｓ，Ｕ９）。
【００４８】
そして、ＰＥは、次ステージのステージバッファが検索された場合、該当するステージバッファのステータス情報を“ＳＴＡＮＤＢＹ”から“ＡＣＴＩＶＥ”に変更する（Ｕ１０）。
【００４９】
この後、ＰＥは、該当するステージの実行コードの処理を開始する（Ｕ１１）。具体的には、データバッファの最初と最後のアドレス及びバッファの大きさを実行コードに引き渡すことにより処理を実行する。
【００５０】
図９はＤＭＡ完了処理の手順を示す図である。各ＰＥでは、実行コードのＤＭＡ転送が完了した場合、転送先ＰＥに「ＳＴＡＮＤＢＹ通知」を送信する（Ｖ１）。ＳＴＡＮＤＢＹ通知を送信したＰＥは、ステージバッファのステータス情報を“ＴＲＡＮＳＦＥＲ”から“ＩＤＬＥ”に変更する。これにより実行コードが無効化される（Ｖ２）。
【００５１】
従来のパイプライン処理の方式では、図１０（Ａ）に示すように、実行コードが各プロセッサ要素に固定され、対象データが紙面の左から右へ順次転送される。これに対し、本実施形態の方式では、図１０（Ｂ）に示すように、対象データが各プロセッサ要素に固定され、実行コードが紙面の右から左へと逆方向に順次転送される。
【００５２】
つまり、ステージに着目すると、例えばステージ１の実行コードが入力データをローカルメモリ２１のデータバッファにロードする機能を有する場合、ステージ１の実行コードは対象データをロードし終えたら次のプロセッサ要素ＰＥ３に移って次の対象データをロードすることになる。そして、ステージの実行コードはプロセッサ要素Ｐ２，Ｐ１，Ｐ３・・・を順次移り、上述の処理を繰り返すようになる。
【００５３】
また、データに着目すると、まず、処理単位の対象データが最初のステージ１によってデータバッファにロードされ、対象データは最終ステージ３が終了して出力Ｉ／Ｏなどに渡される。この間、対象データは同一のプロセッサ要素に存在し続けていることになる。
【００５４】
また、プロセッサ要素（ＰＥ）に着目すると、次の動作が行われていることになる。すなわち、対象データのひとつの処理単位に対して順々に実行コードが到着し、データが処理されていく。データの処理が一巡すると、また最初のステージ１の実行コードと対象データとがデータバッファにロードされる。そして、これを繰り返す動作が行われる。
【００５５】
上述した構成により、本実施形態に係るパイプライン処理装置１０では、次の処理が行われることになる。すなわち、スケジューラが、アプリケーションの初期化時に、複数のステージに分割されたアプリケーションプログラムの各実行コードを各プロセッサ要素ＰＥ１〜ＰＥ８のローカルメモリ２１に個別に割り当てる。そして、スケジューラが、各プロセッサ要素ＰＥ１〜ＰＥ８の使用順序を決定し、この使用順序に従った経路情報を各プロセッサ要素ＰＥ１〜ＰＥ８のローカルメモリ２１に書き込む。そして、アプリケーションの実行中は、各プロセッサ要素ＰＥ１〜ＰＥ８が、対象データを実行コードにより処理する。各プロセッサ要素ＰＥ１〜ＰＥ８では、実行コードが対象データの単位データ量の処理を終了したことを検知すると、経路情報に従って他のプロセッサ要素に実行コードを転送する。
【００５６】
それゆえ、本実施形態に係るパイプライン処理装置１０では、対象データを他のプロセッサ要素に転送するのではなく実行コードを転送するので、リアルタイム処理に適したパイプライン処理の特性を残しつつ、プロセッサ要素間のデータ転送の総量を削減することができる。
【００５７】
すなわち、データの総量に比べて実行コードの総量が少ない場合、ＰＥ間の転送の総量がその差分だけ小さく済むので、転送オーバヘッドとバス競合を削減することができる。また結果として、データの処理時間も見積もりやすくなるので、アプリケーション設計者に複雑詳細なプログラム分割をする手間を省くことが可能となる。
【００５８】
なお、可変長符合の処理などにより生じる小さなデータ片が残る場合はデータ片も実行コードとともに前段のＰＥに転送する構成としてもよい。
【００５９】
また、本実施形態に係るパイプライン処理装置１０において、最前段のデータの入力と最終段のデータの出力とはアプリケーションが行う実装でもよいし、パイプライン制御プログラムが行う実装でも良い。本発明の本質に関係するものではない。
【００６０】
＜第２の実施形態＞  
図１１は本発明の第２の実施形態に係るパイプライン処理装置１０Ｓの構成を示す模式図である。なお、既に説明した部分と同一部分には同一符号を付し、特に説明がない限りは重複した説明を省略する。本実施形態に係るパイプライン処理装置１０Ｓでは、スケジューラが経路情報を決定するのではなく、各プロセッサ要素が自ら決定する。
【００６１】
各プロセッサ要素ＰＥ１〜ＰＥ８の演算ユニット２２Ｓは、パイプライン制御プログラムが組み込まれることにより、図１２に示すように、データ処理部３１、ステータス情報設定部３２、転送要求部３３、許可応答部３４、経路情報書込部３５、実行コード転送制御部３６を有する。
【００６２】
データ処理部３１は、各プロセッサ要素において、対象データを実行コードにより処理するものである。ステータス情報設定部３２は、ローカルメモリ２１Ｓに記憶されたステージバッファのステータス情報を随時更新するものであり、データ処理部３１が対象データを処理していないときは、ステータス情報を“空き状態（ＩＤＬＥ）”と設定する。
【００６３】
転送要求部３３は、各プロセッサ要素ＰＥ１〜ＰＥ８において、データ処理部３１による処理が終了した場合、他のプロセッサ要素に実行コードの転送要求を送出するものである。許可応答部３４は、他のプロセッサ要素から該実行コードの転送要求を受けたときに、ステータス情報が“空き状態（ＩＤＬＥ）”と設定されている場合、該他のプロセッサ要素に許可応答を送出するものである。経路情報書込部３５は、転送要求に応じて他のプロセッサ要素から許可応答を受けた場合、該許可応答元のプロセッサ要素を次の転送先とする経路情報をローカルメモリ２１Ｓに書き込むものである。
【００６４】
実行コード転送制御部３６は、ＤＭＡＣ２３にＤＭＡ起動をかけるものである。具体的には、実行コード転送制御部３６は、データ処理部３１において実行コードの処理が完了した場合、実行コード完了通知をＤＭＡＣ２３に送出することによりＤＭＡを起動させる。ここでは、実行コード転送制御部３６は、経路情報書込部３５により書き込まれた経路情報に従って他のプロセッサ要素に実行コードをＤＭＡ転送させる。
【００６５】
次に本実施形態に係るパイプライン処理装置１０Ｓの動作を説明する。始めに、対象データを処理するアプリケーションが実行されると、その初期化が行われ、スケジューラなどにより、アプリケーションプログラムが複数のステージに分割される。そして、一のプロセッサ要素ＰＥ１のローカルメモリに最初のステージの実行コードが割り当てられる。なお、各プロセッサ要素ＰＥ１〜ＰＥ８は、対象データを処理していないときは、ステータス情報設定部４２により、ステータス情報が“ＩＤＬＥ”に設定される。
【００６６】
続いて、プロセッサ要素ＰＥ１では、実行コードによる処理が終了すると、他のプロセッサ要素ＰＥ２にその実行コードの転送要求を送出する。転送要求を受けたプロセッサ要素ＰＥ２は、ステータス情報が空き状態と設定されている場合、転送要求元のプロセッサ要素ＰＥ１に許可応答を送出する。
【００６７】
プロセッサ要素ＰＥ１は、転送要求に応じて他のプロセッサ要素ＰＥ２から許可応答を受けた場合、許可応答元のプロセッサ要素ＰＥ２を次の転送先とする経路情報を設定する。そして、プロセッサ要素ＰＥ１は、設定された経路情報に従って他のプロセッサ要素ＰＥ２に実行コードを転送する。
【００６８】
以上説明したように、本実施形態に係るパイプライン処理装置１０Ｓは、各プロセッサ要素が、転送要求に応じて他のプロセッサ要素から許可応答を受けた場合、該許可応答元のプロセッサ要素を次の転送先とする経路情報をローカルメモリ２１Ｓに書き込み、その経路情報に従って他のプロセッサ要素に実行コードを転送するので、対象データを転送するのに比してバスの使用率を抑えることができ、リアルタイム要求に適したパイプライン処理の特性を残しつつ、プロセッサ要素間のデータ転送の総量を削減することができる。
【００６９】
＜第３の実施形態＞  
本発明の第３の実施形態に係るパイプライン処理装置１０Ｔは、第２の実施形態に係るパイプライン処理装置１０Ｓの変形例であり、実行コードを複製することでパイプライン段数を動的に決定するものである。
【００７０】
本実施形態に係るローカルメモリ２１Ｔは、各ステージの状態をサブステージに区分けし、これらのサブステージが先頭状態か継続状態かを示す「サブステータス情報」をサブステージ番号とともに記憶している。つまり、後述する実行コード複製部４０により実行コードが複製されると、ＡＣＴＩＶＥ状態は、複製された実行コードの先頭であることを示す先頭状態か、先頭ではないことを示す継続状態かの２つの状態に区別されることになる。そして、サブステータス情報がこれらの２つの状態に対応して設定される。
【００７１】
本実施形態に係る演算ユニット２２Ｔは、図１３に示すように、実行コード複製部４０をさらに備えている。本実施形態に係る演算ユニット２２Ｔは、第２の実施形態に係るデータ処理部３１、転送要求部３３、実行コード転送制御部３６に代えて、データ処理部４１、転送要求部４３、実行コード転送制御部４６を備えている。
【００７２】
実行コード複製部４０は、実行コードによる処理が予め設定された要求時間を超える場合、実行コードの複製を生成する。要求時間に近づいたことの検知は、「タイマ割込」などで実装される。また、実行コード複製部４０は、実行コードが複製された場合、複製元の実行コード及び複製により得られた実行コードに対応する各ステージのサブステータス情報をサブステージ番号と関連付けて設定する。
【００７３】
データ処理部４１は、第２の実施形態に係るデータ処理部３１の機能に加え、サブステータス情報が設定されたときのステージの状態から対象データの処理を再開する。転送要求部４３は、第２の実施形態に係る転送要求部３３の機能に加え、実行コード複製部４０により実行コードが複製された場合、他のプロセッサ要素に複製された実行コードの転送要求を送出する。
【００７４】
具体的には、転送要求部４３は、実行コードによる処理が予め設定された要求時間を超えることをタイマ割込により検知する。転送要求部４３は、タイマ割込が生じると、サブステータス情報が先頭状態であるか否かを判定する。転送要求部４３は、サブステータス情報が先頭状態である場合、転送先ＰＥが経路情報として設定されているか否かを判定する。転送先ＰＥが設定されていない場合、空き状態のプロセッサ要素（空きＰＥ）を検索し、検索したプロセッサ要素に転送要求を送出する。
【００７５】
一方、転送要求部４３は、タイマ割込の通知時にサブステータス情報が継続状態である場合、既に転送先ＰＥが経路情報として設定されているはずなので、空きＰＥの検索は行わない。また、転送先ＰＥには、複製した実行コードが既に存在するはずなので、実行コードの転送は行わない。この場合、プロセッサ要素のコンテキストを移動する必要がないので、バス使用率の上昇を回避することができる。
【００７６】
実行コード転送制御部４６は、第２の実施形態に係る実行コード転送制御部３６の機能に加え、サブステータス情報に基づいて、複製された実行コードを他のプロセッサ要素にＤＭＡ転送させる。実行コード転送制御部４６は、継続状態の実行コードに対しては、各プロセッサ要素でコンテキストを移動する必要がない。このような場合、実行コード転送制御部４６は、サブステージ番号のみを通知するようにする。これにより、同一の実行コードを複数回転送することによる処理時間の増加を回避できる。また、実行コード転送制御部４６は、最後のサブステージにおいて対象データの処理が終了した場合、実行コードを削除する機能を有する。なお、ローカルメモリ２１Ｔが全てのステージの実行コードを収容できるほどの記憶領域を有している場合は、実行コードを転送する必要がないので、サブステータス番号のみが通知されることになる。
【００７７】
次に、本実施形態に係るパイプライン処理装置１０Ｔの動作を図１４を用いて説明する。前提として、対象データをパイプライン処理するためのアプリケーションプログラムはステージ1〜３の３ステージに分割され、それぞれプロセッサ要素ＰＥ１〜ＰＥ３に割り付けられるものとする（図１４（Ａ））。
【００７８】
かかる前提のもと、要求時間が経過してタイマ割込が生じたときにプロセッサ要素ＰＥ２の処理が終了していない場合、プロセッサ要素ＰＥ２における実行コード複製部４０により実行コードが複製される。実行コードが複製されると、プロセッサ要素ＰＥ２の実行コード転送制御部４６により、複製された実行コードのＤＭＡ起動がかけられる。これにより、プロセッサ要素ＰＥ１にも同一の実行コードが記憶されることになる（図１４（Ｂ））。要するに、実行コードを複製して同一の実行コードを持つＰＥが１つ増加することになる。なお、実行コードが複製された場合、実行コード複製部４０により、サブステータス情報がサブステージ番号とともに設定される。ここでは、プロセッサ要素ＰＥ１の実行コードには先頭状態が設定され、プロセッサ要素ＰＥ２の実行コードには継続状態が設定される。
【００７９】
そして、このような動作が、最初のデータ単位の処理が全て終了する時点（パイプライン処理が一巡する時点）まで繰り返されると（図１４（Ｃ），（Ｄ））、パイプライン段数が決まり、経路情報が決定された状態になる。図１４の例では５段に決定された状態となっている。
【００８０】
この後は、各プロセッサ要素に対象データがロードされ、実行コードが順次実行される。この状態では、全てのプロセッサ要素において、各ステージ及びサブステージが要求時間内に終了するので、所望の要求性能を達成することができる。
【００８１】
図１５はタイマ割込が生じたときの処理の手順を示す図である。各ＰＥでは、要求時間が経過してタイマ割込が生じたときに、サブステータス情報が先頭状態である場合、転送先ＰＥには現在のステージの情報がないので、実行コードを転送する（Ｗ１−Ｙｅｓ）。実行コードの転送に際しては、経路情報が設定されているか否かを検索し、経路情報が設定されていなければ、空きＰＥを検索して転送先ＰＥとして設定する（Ｗ２〜Ｗ４）。
【００８２】
各ＰＥは、転送先ＰＥに実行コードを転送する際には、まず、転送先ＰＥから空き状態のステージバッファを検索する（Ｗ５）。各ＰＥは、空き状態のステージバッファが検索された場合、転送先ＰＥへ実行コードのＤＭＡ転送を開始する（Ｗ６−Ｙｅｓ，Ｗ７）。そして、各ＰＥは、ＤＭＡ転送を終了すると、サブステータス情報を先頭状態から継続状態に変更する（Ｗ８）。
【００８３】
一方、ステップＷ１において、サブステータス情報が継続状態である場合、転送先ＰＥに複製した実行コードがあるので、各ＰＥは実行コードを転送しない（Ｗ１−Ｎｏ）。
【００８４】
なお、実行コード完了通知を受けたときに、サブステータス情報が継続状態である場合は、タイマ割込と同じ理由でＤＭＡの実行が省略される。ステータス情報が“ＩＤＬＥ”に変更されるだけである。
【００８５】
図１６はＤＭＡ完了処理の手順を示す図である。各ＰＥでは、実行コードのＤＭＡ転送が完了した場合、転送先ＰＥに「ＳＴＡＮＤＢＹ通知」を送信する（Ｘ１）。ここで、ＳＴＡＮＤＢＹ通知を送信したＰＥに複製された実行コードが存在しない場合、既に処理が終了しており、ステータス情報は“ＴＲＡＮＳＦＥＲ”となっている。そこで、ステータス情報を“ＴＲＡＮＳＦＥＲ”から“ＩＤＬＥ”に変更する（Ｘ２−Ｙｅｓ，Ｘ３）。
【００８６】
一方、ＳＴＡＮＤＢＹ通知を送信したＰＥが、タイマ割込によってＤＭＡを起動していた場合、ステータス情報の変更はしない（Ｘ２−Ｎｏ）。ＤＭＡがタイマ割込によって起動された場合、実行コードによる処理が終了しておらず、ステータス情報は“ＡＣＴＩＶＥ”のまま維持する。
【００８７】
以上説明したように、本実施形態に係るパイプライン処理装置１０Ｔでは、各プロセッサ要素が、ステージの状態を区分けするためのサブステータス情報を記憶しており、実行コードによる処理が予め設定された要求時間を超える場合、実行コードの処理を停止するとともに複製し、実行コードが複製された場合、先頭状態か継続状態かを示すサブステータス情報を設定し、複製された実行コードを転送した後、このサブステータス情報に基づいて対象データの処理を再開するので、各プロセッサ要素における処理を要求時間内に終了させることができ、所望の要求性能を満たすことができる。
【００８８】
例えば、第２に実施形態に係るパイプライン処理装置１０Ｓでは、ステージ１，２，３の処理にそれぞれ４ｍｓ，１２ｍｓ，４ｍｓを要するとすると、単位データ量当り５ｍｓの要求性能が求められたときには、ステージ２がボトルネックとなって要求性能を満たすことができない。これに対し、本実施形態係るパイプライン処理装置１０Ｔであれば、ステージ２の処理を３つのプロセッサ要素で処理させることにより、５ｍｓ以内の処理を実現することができる。
【００８９】
また、本実施形態に係るパイプライン処理装置１０Ｔでは、アプリケーションの設計者は各ステージの処理時間を正確に把握する必要がなくなるので、アプリケーションの設計者の負荷を軽減することができる。具体的には、アプリケーションの設計者は、例えばデータロード、暗号解読、圧縮解凍、データ出力などの機能単位に分割するだけの作業で済むようになる。また、アプリケーション設計者は、実行コードを細分化させる必要もなくなる。
【００９０】
なお、本実施形態に係るパイプライン処理装置１０Ｔは、動作概念としては前記の通りサブステージを順繰りに送っていくパイプライン処理であるが、継続状態の実行コードは移動する必要がなく、複製した実行コードでの処理が非常に簡素になる。
【００９１】
１個のＰＥに着目した場合、要求時間の到来によって概念上のサブステージが変更されても、実行コードの内容自体は変更していない。また処理対象のデータはローカルメモリ２１Ｔに記憶されたまま転送されていない。したがって、ローカルメモリ２１Ｔ上では、実行コードもデータも同じままであるため、実行コードをあらゆるタイミングで一時停止したり、再開したりすることができる。さらに、データの中途半端なところを処理中でも、一時変数などに重要な情報を保持しているタイミングでも一時停止したり、再開したりすることができる。
【００９２】
要するに、割り込みがかかって戻っていくだけなので、実行コードがそれを認識する必要がなく、非常に精度の高いタイミングでパイプライン動作を行うことができる。
【００９３】
また、本実施形態に係るパイプライン処理装置１０Ｔは、サブステージ変更のための一時停止と再開とが同一ＰＥ上で行われるため、アプリケーション処理のどのタイミングでも転送可能である。アプリケーションに対しては、例えば一時タイマ割り込みがかかって、そこから復帰しただけのように認識させることができるので、処理対象のデータ、実行コードともどこを実行中でもサブステージの変更が可能である。したがって、実際に１個のステージまたはサブステージの処理が行われる時間はアプリケーションの中身によらず非常に高い精度（例えばタイマ割り込みの精度）で実現できる。
【００９４】
＜他の変形例＞
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に構成要素を適宜組み合わせてもよい。
【００９５】
なお、上記実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フロッピー（登録商標）ディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤなど）、光磁気ディスク（ＭＯ）、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【００９６】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【００９７】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワークソフト等のＭＷ（ミドルウェア）等が上記実施形態を実現するための各処理の一部を実行しても良い。
【００９８】
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、ＬＡＮやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
【００９９】
また、記憶媒体は１つに限らず、複数の媒体から上記実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【０１００】
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記実施形態における各処理を実行するものであって、パソコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【０１０１】
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【図面の簡単な説明】
【０１０２】
【図１】本発明の第１の実施形態に係るパイプライン処理装置１０の構成を示す模式図である。
【図２】同実施形態に係る各プロセッサ要素の構成を示す模式図である。
【図３】同実施形態に係るローカルメモリの概念を示す模式図である。
【図４】同実施形態に係るパイプライン制御プログラムの機能構成を示した模式図である。
【図５】同実施形態に係るステージバッファの状態遷移を示す模式図である。
【図６】同実施形態に係るパイプライン処理装置１０における初期化処理を説明するための図である。
【図７】同実施形態に係るＳＴＡＮＤＢＹ通知の受取処理の手順を示す図である。
【図８】同実施形態に係るステージの終了処理の手順を示す図である。
【図９】同実施形態に係るＤＭＡ完了処理の手順を示す図である。
【図１０】従来のパイプライン処理との差異を説明するための図である。
【図１１】本発明の第２の実施形態に係るパイプライン処理装置１０Ｓの構成を示す模式図である。
【図１２】同実施形態に係る各プロセッサ要素の構成を示す模式図である。
【図１３】本発明の第３の実施形態に係る各プロセッサ要素の構成を示す模式図である。
【図１４】同実施形態に係るパイプライン処理装置１０Ｔの動作を説明するための模式図である。
【図１５】同実施形態に係るタイマ割込が生じたときの処理の手順を示す図である。
【図１６】同実施形態に係るＤＭＡ完了処理の手順を示す図である。
【図１７】一般的なパイプライン処理を説明するための模式図である。
【符号の説明】
【０１０３】
１０・・・パイプライン処理装置、１１・・・共有メモリ、１２・・・バス、１３，１４・・・入出力ポート、２１・・・ローカルメモリ、２２・・・演算ユニット、２３・・・ＤＭＡＣ、３１・・・データ処理部、３２・・・ステータス情報設定部、３３・・・転送要求部、３４・・・許可応答部、３５・・・経路情報書込部、３６・・・実行コード転送制御部、４０・・・実行コード複製部、４１・・・データ処理部、４３・・・転送要求部、４６・・・実行コード転送制御部、ＰＥ１〜ＰＥ８・・・プロセッサ要素。
【図１】
2010039511.tif 000003
【図２】
2010039511.tif 000004
【図３】
2010039511.tif 000005
【図４】
2010039511.tif 000006
【図５】
2010039511.tif 000007
【図６】
2010039511.tif 000008
【図７】
2010039511.tif 000009
【図８】
2010039511.tif 000010
【図９】
2010039511.tif 000011
【図１０】
2010039511.tif 000012
【図１１】
2010039511.tif 000013
【図１２】
2010039511.tif 000014
【図１３】
2010039511.tif 000015
【図１４】
2010039511.tif 000016
【図１５】
2010039511.tif 000017
【図１６】
2010039511.tif 000018
【図１７】
2010039511.tif 000019