(57)【特許請求の範囲】
【請求項１】
通信可能に接続されている複数のモジュールがデータを所定の順序で処理するように、制御手段で制御することでパイプライン処理を実行するデータ処理装置であって、
前記モジュールは、
当該モジュールで処理するデータを取り込み、当該データに前記パイプライン処理の一部の処理を実行する処理手段と、
当該モジュールの処理したデータの許容出力量を示す設定を記憶する記憶手段と、
前記処理手段の処理したデータを、前記設定に基づいて当該モジュールより一つ後段のモジュールへ出力する出力手段と、を備え、
前記制御手段は、
前記複数のモジュールについて前記パイプライン処理の後段のモジュールから逆順に着目し、着目したモジュールのデータの処理時間を当該着目したモジュールの記憶手段の記憶する設定に基づいて推定する推定手段と、
前記着目したモジュールの処理時間に応じて、前記着目したモジュールから一つ前段のモジュールの記憶手段に許容出力量を設定する設定手段と
を備えることを特徴とするデータ処理装置。
【請求項２】
通信可能に接続されている複数のモジュールがデータを格納するパケットを所定の順序で処理するように、制御手段で制御することでパイプライン処理を実行するデータ処理装置であって、
前記モジュールは、
当該モジュールで処理するデータを格納するパケットを取り込み、当該データに前記パイプライン処理の一部の処理を実行する処理手段と、
当該モジュールの処理したデータの出力間隔を記憶する記憶手段と、
前記処理手段の処理したデータをパケットに格納して、前記出力間隔に基づいて当該モジュールより一つ後段のモジュールへ出力する出力手段と、を備え、
前記制御手段は、
前記複数のモジュールについて前記パイプライン処理の後段のモジュールから逆順に着目し、着目したモジュールのパケットあたりの処理時間を当該着目したモジュールの記憶する出力間隔に基づいて推定する推定手段と、
前記着目したモジュールから一つ前段のモジュールの出力間隔が前記着目したモジュールの処理時間以上になるように、前記着目したモジュールから一つ前段のモジュールの記憶手段の出力間隔を設定する設定手段と
を備えることを特徴とするデータ処理装置。
【請求項３】
前記推定手段の推定する処理時間は、前記着目したモジュールがパケットを取得してから当該パケットの格納するデータを処理して前記出力手段で出力するまでの時間であることを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
前記推定手段は、前記着目したモジュールの処理内容と当該着目したモジュールの出力間隔とに基づいて、前記着目したモジュールのパケットあたりの処理時間を推定することを特徴とする請求項２に記載のデータ処理装置。
【請求項５】
前記着目したモジュールの処理内容が変倍の場合、前記推定手段の推定する処理時間は、前記着目したモジュールがパケットを取得してから当該パケットの格納するデータを処理して、当該データによって生成するデータの全てを前記出力手段で出力するまでの時間であることを特徴とする請求項４に記載のデータ処理装置。
【請求項６】
前記処理時間または前記出力間隔は、サイクルタイム又はクロック数によって示されることを特徴とする請求項２乃至５のいずれか１項に記載のデータ処理装置。
【請求項７】
前記複数のモジュールはリング状に単方向のバスで接続されていることを特徴とする請求項２乃至６のいずれか１項に記載のデータ処理装置。
【請求項８】
前記設定手段は、パイプライン処理上で最後段のモジュールの記憶手段に所定の値を設定することを特徴とする請求項２乃至７のいずれか１項に記載のデータ処理装置。
【請求項９】
ｍ×ｎ画素の画像を所定方向にスキャンした順に１画素ずつ前記パケットの夫々が格納し、前記着目したモジュールの処理内容が変倍処理の場合に、前記推定手段は前記画像の一部を格納するパケットについて、ｎ×Ｌ（Ｌは１〜ｍの自然数）番目のパケットの処理に要する時間を第１処理時間として推定し、ｎ×Ｌ番目以外のパケットの処理に要する時間を第２処理時間として推定し、
前記設定手段は前記着目したモジュールから一つ前段のモジュールの記憶手段に設定する出力間隔として、第１処理時間に対応する第１出力間隔と、第２処理時間に対応する第２出力間隔とを設定し、
前記着目したモジュールから一つ前段のモジュールの出力手段は、前記画像の一部を格納するパケットについて、ｎ×Ｌ（Ｌは１からｍの自然数）番目の次のパケットを出力する際には第１出力間隔に基づいてパケットを出力し、ｎ×Ｌ番目以外のパケットの次のパケットを出力する際には第２出力間隔に基づいてパケットを出力することを特徴とする請求項２乃至８のいずれか１項に記載のデータ処理装置。
【請求項１０】
通信可能に接続されている複数のモジュールがデータを所定の順序で処理するように、制御手段で制御することでパイプライン処理を実行するデータ処理装置の制御方法であって、
前記モジュールが、
当該モジュールで処理するデータを取り込み、当該データに前記パイプライン処理の一部の処理を実行する処理工程と、
当該モジュールの処理したデータの許容出力量を示す設定を記憶する記憶工程と、
前記処理工程で処理したデータを、前記設定に基づいて当該モジュールより一つ後段のモジュールへ出力する出力工程と、を実行し、
前記制御手段が、
前記複数のモジュールについて前記パイプライン処理の後段のモジュールから逆順に着目  し、着目したモジュールのデータの処理時間を当該着目したモジュールの記憶工程における設定に基づいて推定する推定工程と、
前記着目したモジュールから一つ前段のモジュールの許容出力量の設定が前記着目したモジュールの処理時間に対応したものとなるように、前記着目したモジュールから一つ前段のモジュールの記憶手段に許容出力量を設定する設定工程と、を実行する
ことを特徴とする制御方法。
【請求項１１】
通信可能に接続されている複数のモジュールがデータを格納するパケットを所定の順序で処理するように、制御手段で制御することでパイプライン処理を実行するデータ処理装置の制御方法であって、
前記モジュールが、
当該モジュールで処理するデータを格納するパケットを取り込み、当該データに前記パイプライン処理の一部の処理を実行する処理工程と、
当該モジュールの処理したデータの出力間隔を記憶する記憶工程と、
前記処理工程で処理したデータをパケットに格納して、前記出力間隔に基づいて当該モジュールより一つ後段のモジュールへ出力する出力工程と、を実行し、
前記制御手段が、
前記複数のモジュールについて前記パイプライン処理の後段のモジュールから逆順に着目し、着目したモジュールのパケットあたりの処理時間を当該着目したモジュールの記憶する出力間隔に基づいて推定する推定工程と、
前記着目したモジュールから一つ前段のモジュールの出力間隔が前記着目したモジュールの処理時間以上になるように、前記着目したモジュールから一つ前段のモジュールの記憶工程の出力間隔を設定する設定工程と、を実行する
ことを特徴とする制御方法。
【請求項１２】
通信可能に接続されている複数のモジュールがデータを格納するパケットを所定の順序で処理するように、制御手段で制御することでパイプライン処理を実行するデータ処理装置であって、
前記モジュールは、
当該モジュールで処理するデータを格納するパケットを取り込み、当該データに前記パイプライン処理の一部の処理を実行する処理手段と、
当該モジュールの処理したデータの出力間隔を記憶する記憶手段と、
前記処理手段の処理したデータをパケットに格納して、前記出力間隔に基づいて当該モジュールより後段のモジュールへ出力する出力手段と、を備え、
前記制御手段は、
前記複数のモジュールについて前記パイプライン処理の後段のモジュールから逆順に着目し、当該着目したモジュールの出力間隔に基づいて、前記着目したモジュールから一つ前段のモジュールの出力間隔を設定する設定手段と
を備えることを特徴とするデータ処理装置。
【請求項１３】
通信可能に接続されている複数のモジュールがデータを格納するパケットを所定の順序で処理することで、パイプライン処理を実行するデータ処理装置を制御する制御装置であって、
前記複数のモジュールにおいて前記データを処理する順序を示す順序情報を取得する取得手段と、
前記順序情報に従って、前記複数のモジュールについて前記パイプライン処理の後段のモジュールから逆順に着目し、当該着目したモジュールにおける前記パイプライン処理の一部の処理によるデータの出力間隔に基づいて、前記着目したモジュールより前段のモジュールにおける前記パイプライン処理の一部の処理によるデータの出力間隔を設定する設定手段とを有することを特徴とする制御装置。
【請求項１４】
通信可能に接続されている複数のモジュールがデータを格納するパケットを所定の順序で処理することで、パイプライン処理を実行するデータ処理装置を制御する制御装置であって、
前記複数のモジュールにおいて前記データを処理する順序を示す順序情報を取得する取得手段と、
前記順序情報に従って、前記複数のモジュールについて前記パイプライン処理の後段のモジュールから逆順に着目し、当該着目したモジュールにおける前記パイプライン処理の一部の処理によるデータの出力間隔に基づいて、前記着目したモジュールから前段のモジュールにおける前記パイプライン処理の一部の処理によるデータの出力間隔を設定する設定手段と、
前記データ処理装置に前記データの処理内容を登録するデータを配信する配信手段、とを有することを特徴とする制御装置。
【請求項１５】
前記複数のモジュールがリング状に単方向のバスで接続されたデータ処理装置を制御することを特徴とする請求項１３または１４のいずれか一項に記載の制御装置。
【請求項１６】
前記順序情報は、前記複数のモジュールが物理的に接続されている順序とは異なる順序を示すことを特徴とする請求項１３または１４のいずれか一項に記載の制御装置。
【請求項１７】
通信可能に接続されている複数のモジュールがデータを格納するパケットを所定の順序で処理することで、パイプライン処理を実行するデータ処理装置の制御方法であって、前記複数のモジュールにおいて前記データを処理する順序を示す順序情報を取得する取得工程と、
前記順序情報に従って、前記複数のモジュールについて前記パイプライン処理の後段のモジュールから逆順に着目し、当該着目したモジュールにおける前記パイプライン処理の一部の処理によるデータの出力間隔に基づいて、前記着目したモジュールより前段のモジュールの出力間隔を設定する設定工程とを実行することを特徴とする制御方法。
【請求項１８】
通信可能に接続されている複数のモジュールがデータを格納するパケットを所定の順序で処理することで、パイプライン処理を実行するデータ処理装置の制御装置に、前記複数のモジュールにおいて前記データを処理する順序を示す順序情報を取得する取得手段と、
前記順序情報に従って、前記複数のモジュールについて前記パイプライン処理の後段のモジュールから逆順に着目し、当該着目したモジュールにおける前記パイプライン処理の一部の処理によるデータの出力間隔に基づいて、前記着目したモジュールより前段のモジュールにおける前記パイプライン処理の一部の処理によるデータの出力間隔を設定する設定手段として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列処理が可能な複数の処理モジュールを有する並列処理回路について、各処理モジュールの利用順序が変動しても効率のよく処理モジュール間のデータの転送を実現するためのデータ処理装置、データ処理方法およびプログラムに関する。
【背景技術】
【０００２】
従来、リングバスで直列に接続した処理モジュールについて、各処理モジュールにパイプライン処理の一部の処理を割り当て、各処理モジュールを並列に動作させることでパイプライン処理を高速に実行する方法がある。
【０００３】
ここで、リングバス上に段数可変のＦＩＦＯを配置し、処理モジュール内で送信データとリングバス上のデータとの競合が起きると、ＦＩＦＯの段数を伸ばして空きスロットを生成し、競合によるシステム性能の低下を回避する方法がある（特許文献１）。
【０００４】
またパイプライン処理をする複数のＰＥ（Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ）を型リング状に接続した構造を一つの層として、異なる層のＰＥを接続し、パケット制御装置を介することなくリングバス同士でパケットをやりとりする方法がある（特許文献２）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第２５２２９５２号公報
【特許文献２】特許第３０８３５８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
パイプライン型の処理モジュールについて、後段の処理モジュールが処理しきれない量のデータを前段の処理モジュールが後段へ一度に転送すると、処理しきれないデータが前段の処理モジュールと後段の処理モジュールとの間の通信帯域を圧迫してしまう。このような通信帯域の圧迫により、データの転送効率が低下し、それにより並列処理回路全体としては処理効率も低下する。
【０００７】
ここで、複数の処理モジュールを直列にリング状に接続している構成では、物理的な接続順序と異なる順番で複数の処理モジュールによってデータを処理するように制御できる。これにより、データを複数の処理モジュールが任意の順番で処理することができるため回路規模を縮小できる。（これは、パイプライン処理の２ヶ所で同じ処理が入る場合、直線的なパイプライン回路であれば同じ処理であっても複数の回路を用意する必要があるためである。）
しかし特許文献１、２の方法では、異なる順番で処理する複数のパイプライン処理を複数の処理モジュールに設定する場合、後段で処理しきれない量のデータを前段の処理モジュールが後段へ転送することで転送効率の低下が生じる恐れがある。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明に係るデータ処理装置は、通信可能に接続されている複数のモジュールがデータを所定の順序で処理するように、制御手段で制御することでパイプライン処理を実行するデータ処理装置であって、
前記モジュールは、当該モジュールで処理するデータを格納するパケットを取り込み、当該データに前記パイプライン処理の一部の処理を実行する処理手段と、当該モジュールの処理したデータの許容出力量を示す設定を記憶する記憶手段と、前記処理手段の処理したデータを、前記設定に基づいて当該モジュールより一つ後段のモジュールへ出力する出力手段と、を備え、
前記制御手段は、前記複数のモジュールについて前記パイプライン処理の後段のモジュールから逆順に着目し、着目したモジュールのデータ処理時間を当該着目したモジュールの記憶手段の記憶する設定に基づいて推定する推定手段と、前記着目したモジュールから一つ前段のモジュールの設定が前記着目したモジュールの処理時間以上になるように、前記着目したモジュールから一つ前段のモジュールの記憶手段に許容出力量を設定する設定手段とを備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、複数の処理モジュールが所定の順序でデータを処理する場合に、その処理順序を変更した場合でも、複数のモジュール（とその間のバス）を流れるデータ量を調節し、効率的なデータ処理が可能となる。
【図面の簡単な説明】
【００１０】
【図１】処理モジュールの構成図である。
【図２】パケットのフォーマットを示す図である。
【図３】リングバスを有する並列処理部の構成図である。
【図４】各モジュールの送信間隔を設定する処理のフローチャートである。
【図５】各モジュールの送信間隔を設定する処理のフローチャートである。
【図６】バンド画像内縦スキャン方式での変倍処理の例（画素２×２、縦２倍、横２倍）を示す概略図である。
【図７】入力モジュールと出力モジュールの構成図である。
【図８】データ処理装置の概略構成図である。
【図９】各モジュールのデータ送信間隔の設定例を示す図である。
【図１０】変倍モジュールへバンド画素を送信する制御方法を示すフローチャートである。
【発明を実施するための形態】
【００１１】
＜実施例１＞
図８は、本発明の一実施例であるデータ処理装置の概略構成を示す。制御部９００は、演算制御用のＣＰＵ９０１、固定データやプログラムを格納するＲＯＭ９０２、データの一時保存やプログラムのロードに用いるＲＡＭ９０３および、外部データを保持する外部記憶装置９０４を有する。ＲＡＭ９０３はＳＲＡＭやＤＲＡＭであってもよいし、複数種類から構成されていてもよい。
【００１２】
入力部９１０は、処理すべきデータをシステム外部より取り込む。たとえばイメージスキャナおよびＡ／Ｄ変換器などのデバイスを有する画像読み込み装置や、マイクおよびＡ／Ｄ変換などのデバイスを有する音声入力装置などであってもよい。
【００１３】
並列処理部９２０は、制御部９００の制御によって様々なデータ処理内容を設定可能な複数の並列演算用の処理モジュールを有している。そして、並列処理部９２０は取得するデータについて制御部９００によって設定された処理内容に応じた処理を実行し、処理したデータを出力する。並列処理部９２０は処理済みのデータを、制御部９００又は、出力部９３０に送る。
【００１４】
出力部９３０は、並列処理部９２０によって処理されたデータを外部に出力する。出力部９３０としては、他の装置にデータを出力するインターフェイス、プリンタやディスプレイ、音声出力装置などが挙げられる。データ入力部９１０に入力されるデータは、データ入力部９１０が制御部に送ってＣＰＵ９０１が処理してもよいし、そのままＲＡＭ９０３や外部記憶装置９０４が一時記録してもよい。また、並列処理部９２０が、データ入力部９１０からの入力データを直接受け取ってそのまま処理を行ってもよいし、並列処理部９２０が制御部９００からデータを取得して処理してもよい。
【００１５】
図３は、並列処理部９２０の概略構成を示す。
【００１６】
図３の並列処理部９２０は、入力モジュール（不図示）、処理モジュール（不図示）および出力モジュール（不図示）を有している。ここで、矢印はデータ（又はパケット、信号）が流れる論理的な方向を示す。
【００１７】
入力モジュールはデータ取得部３０１と通信処理部３０２を有している。データ取得部３０１は、外部記憶装置９０４や制御部９００又は入力部９１０からデータを取得する。通信処理部３０２は、取得したデータをリングバスに供給する処理を行う。
【００１８】
処理モジュールはデータ処理回路３０４と通信処理部３０３を有しており、並列処理部９２０が処理するパイプライン処理の一部の処理が割り当てられている。ここでは４つの処理モジュールがある。通信処理部３０３は、一方の通信処理部からのデータを他方の通信処理部へ送信しつつ、処理モジュール内のデータ処理回路３０４で処理するデータを識別して、データ処理回路３０４に送信する。データ処理回路３０４は、通信処理部３０３からのデータに対して所定の処理を行う。なお、データ処理回路３０４の処理内容はデータに付随するコマンドで設定してもよいし、並列処理部９２０の起動時に処理内容を登録するデータを制御部９００が配信してもよい、又は設計時に登録してもよい。
【００１９】
出力モジュールはデータ出力部３０６と通信処理部３０５を有している。通信処理部３０５は、処理モジュールによって一連の処理を完了したデータを識別して、処理済みのデータをデータ出力部３０６へ送信する。データ出力部３０６は、通信処理部３０５から送信されたデータを外部記憶装置９０４や制御部９００又は出力部９３０に出力する。
【００２０】
リングバス３０７は、入力モジュールと処理モジュール及び出力モジュールの有する通信処理部をリング状に直列に連結し、これらの通信処理部を通信可能にする。本実施例ではリングバス３０７は単方向にデータを送信するシリアルバスである。単方向のリングバスを用いると制御が簡単なので回路規模も小さくてすむ。
【００２１】
図２は並列処理部９２０の扱うパケットの構造を示す。ｖａｌｉｄフラグ２０１はパケットが有効であるかどうかを示す（“１”を格納しているときは有効で、“０”を格納しているときは無効）。ｓｔａｌｌフラグ２０２はパケットが受信保留であるかどうかを示す（“１”を格納しているときは保留有りで、“０”を格納しているときは保留無し）。Ｃｏｕｎｔ２０３はデータの順序（並列処理部９２０への入力順に相当する）を示し、ｎｏｄｅ  ＩＤ２０４は通信処理部がパケットを取り込むか否かを識別するための識別情報である。ＤＡＴＡ２０５はデータもしくはコマンドを格納している。
【００２２】
ｎｏｄｅ  ＩＤ２０４について、パケットを正しい処理順序でデータ処理回路の間で受け渡し可能であればそのフォーマットは限定しない。例えば、ｎｏｄｅ  ＩＤ２０４として、データを最後に処理した処理モジュールのＩＤを設定する方法や、パケットの送り手と受け手の識別子の組合せによって割り当てる方法がある。また、データパケットとコマンドパケットとで異なるフォーマットのｎｏｄｅ  ＩＤ２０４を採用してもよい。本実施例では説明の簡便のため、１データパケットは１画素データを割り当てることとする。しかし、ｎ個の画素データを１データパケットに割り当てるようにしてもよい。
【００２３】
〔処理モジュール〕
図１は、図３におけるデータ処理回路３０４と通信処理部３０３とを有する処理モジュール１０１の詳細な構成を示す。入力データ受信部１０５は上流の通信処理部からパケットを受信する。入力データ識別部１０６は、入力データ受信部１０５の受信しているパケット（以降、入力パケットと称する）のｎｏｄｅ  ＩＤ２０４を確認し、入力パケットの格納するデータがモジュール内のデータ処理回路３０４で処理すべきかどうかを識別する。入力データ識別部１０６は不図示のレジスタにＩＤを格納している。そして、レジスタのＩＤとｎｏｄｅ  ＩＤ２０４が一致する入力パケットで且つｖａｌｉｄフラグが“１”であると入力データ識別部１０６が判定したものは、モジュール内で処理すべきデータを格納していると判断する。入力データ識別部１０６が、入力パケットはモジュール内のデータ処理回路３０４で処理すべきデータを保持していると判定した場合は、処理データ出力部１０７がデータ処理回路３０４へ送出する。そして、入力データ識別部１０６は、データを抽出した入力パケットのｖａｌｉｄフラグを“０”に設定し、出力データ生成部１１２へ送信する。（ここで、入力データ識別部１０６が入力パケットはモジュール内で処理すべきデータを格納していないと判定した場合、入力パケットは出力データ生成部１１２を通って、出力データ送信部１１３が下流の通信処理部へ送信する。また、入力データ識別部１０６によって、入力パケットがモジュール内のデータ処理回路３９４で処理すべきデータを格納していると判定されても、データ処理回路３０４がデータを受付けられない状態である場合は入力パケットの処理を保留する。入力パケットを保留するために、入力データ識別部が入力パケットのｓｔａｌｌフラグ２０２に“１”を設定し、その入力パケットを出力データ生成部１１２に転送する。）
データ処理回路３０４は処理データ出力部１０７から入力されるデータに予め設定された処理を施して、処理結果としての処理済データを処理済データ入力部１０８へ送信する。前述したように、データ処理回路３０４はデータに付加されているコマンドに沿った処理をしてもよい。処理済データ入力部１０８はモジュール内のデータ処理回路３０４が処理したデータを受け取る。
【００２４】
データ送信間隔カウンタ１０９は、直前にデータ送信制御部１１１から出力データ生成部１１２へデータを送信してからの間隔（クロック数、又はサイクルタイムで表わす情報）を保持する。データ送信間隔レジスタ１１０は直前にデータ送信制御部１１１がデータを送信してから次にデータを送信するまでに空ける間隔を示す情報を保持する。データ送信間隔レジスタ１１０は、並列処理装置９２０が処理するパイプライン処理を切換える場合、もしくは並列処理装置９２０の初期化時に処理に用いるモジュールのデフォルト送信間隔保持部１１４の値に応じて設定する値を格納する。データ送信間隔レジスタ１１０に設定する値の決定方法については後述する。
【００２５】
データ送信制御部１１１は処理済データ入力部１０８から取得した際に、データ送信間隔カウンタ１０９の値がデータ送信間隔レジスタ１１０の値以上であれば（出力データ生成部への）送信待ち状態になる。
【００２６】
出力データ生成部１１２は、入力データ識別部１０６から送られるパケットで、ｖａｌｉｄフラグが“０”の空パケットに、送信制御部１１１が送信しようとするデータを格納しｖａｌｉｄフラグを“１”に設定する。ここで、出力データ生成部１１２は不図示のレジスタにＩＤを格納しており、空パケットにデータを格納する際にレジスタのＩＤをｎｏｄｅ  ＩＤ２０４に格納する。また、データ送信制御部１１１はデータを出力データ生成部１１２に送信すると同時にデータ送信間隔カウンタ１０９を“０”にクリアする。データ送信制御部１１１がデータ送信間隔カウンタ１０９をクリアするタイミングは、送信開始と同時、送信完了と同時、又はどちらかのｎサイクルタイム後でもよい。ただし、データ送信間隔レジスタ１１０はデータ送信制御部１１１がクリアするタイミングに応じた値を格納しておく必要がある。
【００２７】
また、入力データ識別部１０６は入力パケットの保持するデータが自身のレジスタのＩＤと一致しても、データ処理回路３０４が前のデータを処理中である場合は、入力パケットのｓｔａｌｌフラグに“１”を格納してそのまま出力データ生成部１１２に転送する。ここで、データ処理回路３０４が前のデータを処理中である事はデータ処理回路１０４から入力データ識別部１０６への不図示の信号線（処理データ出力部１０７を経由してもよい）によって伝達される。また、データ送信制御部１１１が送信待ちの状態である事はデータ送信制御部１１１からデータ処理回路３０４への不図示の信号線（処理済データ入力部１０８を経由してもよい）によって伝達される。データ送信制御部１１１と処理済みデータ入力部にデータが詰まっている場合は、データ処理回路３０４がデータを処理済データ入力部１０８へ出力できないので、データ処理回路３０４は処理を完了できない。従って、データ送信制御部１１１が送信待ち状態である事を不図示の信号線で入力データ識別部１０６へ直接伝達してもよい。この構成では入力データ識別部１０６は、データ送信制御部１１１が送信待ちの状態である場合に、モジュール内で処理するデータを格納している入力パケットにｓｔａｌｌフラグ“１”を格納するように制御してもよい。
【００２８】
出力データ送信部１１３は出力データ生成部１１２からのパケットを、リングバス１０２を介して下流の通信処理部へ送信する。
【００２９】
なお、入力データ識別部１０６が参照するＩＤと出力データ生成部１１２が格納するＩＤとは、複数セットあってもよい。例えば、１つのパイプライン処理において異なるシーケンスで、同じモジュールを２回用いる場合や、同じモジュールを使用する複数のパイプライン処理を並列処理部９２０で仮想的に並列的に処理する場合などに有効である。
【００３０】
なお、上述の処理モジュールのデータ送信制御部１１１は、所定長のパケットを送信する際に、レジスタの設定に基づいてパケットの間隔を調節することで、処理モジュールのデータの許容出力量を保証している。
【００３１】
〔入力モジュール〕
図７（ａ）は、図３におけるデータ取得部３０１と通信処理部３０２とを有する入力モジュール７０１の構成を示す。図１の処理モジュールと同じ構成には同じ符号を付すとともに、機能が変わらないものについては説明を省略する。
【００３２】
データ取得部３０１は、制御部９００、入力部９１０からのデータを取得する。制御部９００、入力部９１０が予め図２のフォーマットのパケットもしくは図２のフォーマットに簡単に変換できるパケットにデータを格納して並列処理部９２０に入力するようにしてもよい。また、データ取得部３０１は制御部９００又は入力部９１０にデータの送信を一時停止するように信号を出せるものとする。
【００３３】
データ入力部７０７はデータ取得部３０１の取得したデータを受け取る。
【００３４】
〔出力モジュール〕
図７（ｂ）は、図３におけるデータ出力部３０６と通信処理部３０５とを有する出力モジュール８０１の構成を示す。図１の処理モジュールと同じ構成には同じ符号を付すとともに、機能が変わらないものについては説明を省略する。
【００３５】
データ出力部３０６は処理データ出力部１０７からのデータを制御部９００、又は出力部９３０へ出力する。
【００３６】
デフォルト送信間隔保持部８０８は、前記処理データ出力部８０７が前記データ出力部８０４に対してデータを出力する間隔を保持する。このデフォルト送信間隔保持部８０８が保持する送信間隔の値は、データ送信間隔レジスタの値を決定する際に最終段の情報として参照する。
【００３７】
この値は、前記データ出力部８０４が出力する先の外部記憶媒体９０４の応答速度や、ＣＰＵ９０１の処理速度を考慮して決めればよい。また、並列処理部９２０と接続している回路の挙動によって決まるものであっても良いし、逆に許容される出力速度の範囲内で設定された値を参照しても良い。また、データ出力部３０６において並列処理部９２０の外部との速度差を吸収できる程度のバッファを構成しておけば、出力モジュール８０１にデフォルト送信間隔保持部は無くてもよい。
【００３８】
〔各モジュールのデータ送信間隔の決定について〕
各モジュールのデータ送信間隔レジスタ１１０の値は制御部９００のＣＰＵ９０１の実現する設定部９０６が設定する。
【００３９】
ここで、あるモジュールを着目モジュールとして、着目モジュールのデータ送信間隔レジスタ１１０を設定する際には、着目モジュールよりもパイプライン処理上で後段の処理をするモジュールがデータをもらすことなく受信可能な値を設定する。詳細にはＣＰＵ９０１がパイプライン処理に用いるモジュールの夫々を順に着目して、推定部９０５が着目モジュールの処理時間を推定し、設定部９０６が着目モジュールから一つ前段のモジュールの送信間隔を着目モジュールの処理時間以上になるように設定する。なお、並列処理部９２０に実行させるパイプライン処理を切換る度に、ＣＰＵ９０１が各モジュールのデータ送信間隔を設定する。
【００４０】
ここで、処理の後段のデータ処理部において、処理時間とは、データ処理回路がデータを供給されてから次のデータを処理可能となるまでの間隔（サイクルタイム、クロック数等で示す）とする。これは、あるモジュールについて１つのパケットの受信を開始した時点から次のパケットの受信を開始する時点までの間隔（サイクルタイム、クロック数等で示す）に相当する。従って、処理時間を短くすることは各モジュールが単位時間で扱うデータ量の増加に繋がる。また、各モジュールの送信間隔とはデータ処理回路３０４又はデータ取得部３０１のデータ出力間隔である。
【００４１】
例えば、全てのモジュールに対して後段のモジュールが受信できる送信間隔を設定するには、パイプライン処理の順番に沿って各モジュールに着目して設定する方法と、パイプライン処理の順序と逆順に着目して設定する方法とがある。パイプライン処理の順番に沿って各モジュールに着目して設定する場合は、着目モジュールの送信間隔より論理的に一つ後段のモジュールの処理時間より長いことを検出すると最初のモジュールから再び設定し直す必要がある。これは、着目モジュールの送信間隔が更新されると、それに伴って処理時間も変わるためである。例えば、送信間隔が長くなるように更新されると処理時間も長くなる、一方で送信間隔が短くなるように更新されると処理時間も短くなる。（ここで、一つ後段のモジュールとは着目モジュールの１つ後のパイプライン処理をするモジュールを示す。また、パイプライン処理上の最前段のモジュールには、推定した最長の処理時間より長い送信間隔を設定されることになる。）
一方で、パイプライン処理の順序と逆の順序で着目して設定する場合、着目モジュールに論理的に一つ後段のモジュールが受信可能な送信間隔を設定する。
【００４２】
また、第２の方法では、パイプライン処理上で最後段の処理をするモジュールから最前段の処理をするモジュールへ順番に着目する。そして、着目したモジュールより１つ後段のデフォルト送信感覚保持部１１４の保持する値の示す間隔より長い間隔を示す値を、着目したモジュールのデータ送信間隔レジスタ１１０に設定する。
【００４３】
図４は、制御部９００がパイプライン処理の順序と逆順に各モジュールに着目し、ＣＰＵ９０１が各モジュールのデータ送信間隔レジスタ１１０の値を設定する処理のフローチャートを示す。
【００４４】
まずステップＳ４０１において並列処理部９２０で実行する一連の処理の最後段（ｉ段目）の処理をするモジュール（出力モジュール）に着目する。
【００４５】
但し、Ｔｏｕｔ（ｉ）には初期値として処理順でｉ番目にある出力モジュールのデフォルト送信間隔値保持部１１４が保持する値が入っているものとする。
【００４６】
次にステップＳ４０２において、ステップＳ４０１（又はステップＳ４０６）において設定した着目モジュールの送信間隔の設定値に基づいて、着目モジュールの受信可能間隔を算出する。着目モジュールが「間引き」や「バンド画像内縦スキャン処理での変倍」など、入力データ量と出力データ量とが異なるような処理を行わず、また外部モジュール等の動作速度の影響を受けない場合、受信可能間隔は送信間隔設定値と等しくなる。ただし、最初に設定するモジュールの送信間隔の場合はデフォルト送信間隔値保持部１１４が格納する値などの初期設定値を用いる。また、ここでは説明の簡略のため全てのモジュールで入力データ量と出力データ量とが等しいと仮定し、処理時間Ｔｉｎ（ｉ）＝Ｔｏｕｔ（ｉ）となる。次にステップＳ４０３において、ｉ≦１の比較により、最前段のモジュール（入力モジュール）までデータ送信間隔レジスタ１１０の値の設定が完了したかどうか判断する。もしｉ≦１であれば着目しているモジュールは入力モジュールであるので処理を終了する。出力モジュールの送信間隔Ｔｏｕｔ（ｉ）は、出力モジュールのデータ送信間隔レジスタ１１０が格納している値の示す間隔となる。
【００４７】
ステップＳ４０３においてｉ＞１であれば、ステップＳ４０４に遷移する。そしてステップＳ４０４で、着目モジュールの処理時間Ｔｉｎ（ｉ）と、パイプライン処理で着目モジュールより１つ前段の処理をするモジュール（以降、論理的に１つ前段のモジュールと略す、）の送信間隔Ｔｏｕｔ（ｉ−１）とを比較する。もし、着目モジュールの処理時間Ｔｉｎ（ｉ）が、論理的に１つ前段のモジュールの送信間隔Ｔｏｕｔ（ｉ−１）より大きければ、ステップＳ４０５に進む。そして、論理的に１つ前段のモジュールの送信間隔Ｔｏｕｔ（ｉ−１）に着目モジュールの処理時間Ｔｉｎ（ｉ）の値を代入する。実際には、論理的に１つ前段のモジュールのデータ送信間隔レジスタ１１０に処理時間Ｔｉｎ（ｉ）の値を設定する。
【００４８】
ステップＳ４０６ではｉをデクリメント（ｉ＝ｉ−１）することで、論理的に１つ前段のモジュールに着目する（新たな着目モジュールとして設定する）。
【００４９】
そして、ステップＳ４０２に遷移して、以上の処理を繰り返すことで各モジュールのデータ送信間隔レジスタ１１０の値を設定する。ＲＯＭ９０２、ＲＡＭ９０３、外部記憶装置９０４のいずれかは、各パイプライン処理でどのモジュールが何番目の処理をするかを判断するための順序情報を格納し、制御部９００が順序情報を参照することで各モジュールの論理的な処理順序を解釈する。
【００５０】
また、ステップＳ４０４では、制御部９００が各モジュールのデフォルト送信間隔保持部１１４を個別に参照するようにしてもよいし、図４の処理をする前に各モジュールのデフォルト送信間隔保持部１１４を取得し、取得した値に基づいて処理してもよい。
【００５１】
図９は各モジュールにおいて入力データ量と出力データ量が等しい場合に、色々な条件下で各モジュールのデータ送信間隔（データ送信間隔レジスタ１１０に設定する値に相当する）の例を示す。また、ここでは１つの固定長パケットを同じサイクルタイムで処理する処理モジュールが５つある例を示す。
【００５２】
送信間隔とは、図３に示す各モジュールが１サイクルタイムで１つの固定長のパケットを出力する場合に、パケットとパケットの間のサイクルタイムに相当する。例えば、あるモジュールにおいて送信間隔が２である場合、そのモジュールは１つのパケットを送って３サイクルタイム目に次のパケットを送信可能である。
【００５３】
図９（ａ）は、物理的な接続順に、各モジュールのＩＤとそのモジュールに設定されているデフォルト送信間隔値とを示している。ここで、物理的な接続順は、図３に示すような並列処理部９２０にパケットを１つだけ入力した際に、このパケットを受信するモジュールの順（処理の有無に関わらない）に対応する。
【００５４】
図９（ｂ）は図９（ａ）を論理的な処理順に並び替えたものである。論理的な処理順は、実際のパイプライン処理をするモジュールの順番に対応する。図３に示す構成であれば１番目は入力モジュール、最後は出力モジュール、その間にパイプライン処理を担当する順番に処理モジュールが入る。図９（ｂ）を参照すると、１１→１１→１１→３２→１１→７→５という送信間隔を持つモジュールの順にパケットが流される。ここで、送信間３２のモジュールと、このモジュールより論理的に１つ前段のモジュールとの送信間隔は順に、１１→３２となる。従って、送信間隔３２の処理モジュールが受付けたパケットを順調に処理しても、論理的に１つ前段のモジュールが送信するパケットのうち送信間隔３２の処理を待つパケットは増加する可能性が高いことがわかる。
【００５５】
図９（ｃ）は図４に示した処理に則って、制御部が図９（ａ），図９（ｂ）に示した設定を有する並列処理部９２０の各モジュールの送信間隔を最適化したものである。
【００５６】
図９（ｃ）を参照すると、図４に示した処理で各モジュールの送信間隔を最適化すると、３２→３２→３２→３２→１１→７→５という送信間隔でパケットが流されるため、パケットは滞留することなく処理される。すなわち、図９（ｂ）に示した設定と比べると、次のモジュールの処理を待つパケットが増加することを抑制できる。
【００５７】
以上のように、各モジュールにおいて論理的に１つ後段のモジュールで受信可能な間隔（上述例では論理的に１つ後段のモジュールの送信間隔に相当する）で前段のモジュールがデータを送信することで、次のモジュールの処理を待つパケットの増加を抑制できる。このように次のモジュールの処理を待つパケットの増加を抑制することで、並列処理部９２０の有するリングバスを流れているパケット量を最適化できるので効率良くパケットを転送することができるようになる。
【００５８】
＜実施例２＞
次に、画像データなどの入力データに対しバンド画像内縦スキャン処理を用いた変倍処理などの処理を行う処理モジュールを有する並列処理部９２０について説明する。なお、実施例１と機能的に変わらない処理や構成についてはその説明を省略する。
【００５９】
バンド画像内縦スキャン処理について説明する。たとえば１ページの画像を縦方向に複数のバンド画像（ｍ×ｎ画素に分割した画像）に分割した際に、そのバンド画像の処理において、通常の技術では水平方向に並ぶ画素（以下ライン）を水平方向（所定方向）に順次処理していくライン処理を行う。ところがここに示すバンド画像内縦スキャン処理においては、バンド内に含まれる複数ラインを１カラム目から順に縦方向（所定方向）に処理していく処理方法となる。
【００６０】
図６は、入力に対してバンド画像内縦スキャン処理を用いた変倍処理（画素２×２、縦２倍、横２倍）を施し４画素を高さ４、幅４の１６画素に拡大する処理を示す概念図である。丸（図中の○）は１つの画素を示し、２×２の塊は画像データの一箇所を切り取ったものに相当する。ライン処理では画素１→３→２→４の順に処理するところを、バンド画像内縦スキャン処理では画素１→２の順に処理し、バンド画像に含まれる全てのライン数を処理したところで次のカラムへうつり、更に３→４と順に処理を進める。
【００６１】
また、図６の矢印は、図９（ｂ）において処理部ＩＤ＝０ｘ０４の処理モジュール（ここでは、変倍処理モジュールと略す）が変倍処理（縦２倍、横２倍）を行うことを示す。矢印の右側の画素群について、数字のない丸は変倍処理によって挿入した画素を示す。
【００６２】
実際には、変倍モジュールは１カラム目の画素を〔１→○→２→○〕の順に出力して、次のカラムに移り、それ以降のカラムも同様に縦方向に出力する。
【００６３】
図６中において論理的に１つ前段のモジュールの出力する画素２×２を、着目モジュールで画素４×４に変倍する際には、まず着目モジュールの送信間隔に基づいて着目モジュールの複数の受信間隔を求める。次に、論理的に１つ前段のモジュールの送信間隔を着目モジュールの受信間隔以上に設定する制御が必要となる。
【００６４】
次に複数種類の処理時間について説明する。図６に示す変倍処理では、変倍モジュールは、画素１の入力に対して画素１と変倍して挿入した画素の２画素分（図６のａに相当する）を出力する時間を要する。
【００６５】
一方で、変倍モジュールは画素２の入力に対して画素２と変倍で挿入した５つの画素の計６画素分（図６のｂ＋ｃに相当する）を出力する時間（クロック数、又はサイクルタイムで表現する、以降も同様）を要する。また、画素３は画素１と同様の時間、画素４は画素２と同様の時間を要する。このように、変倍モジュールでは、Ｍ×Ｎ画素の画像をスキャンした順に１画素ずつ格納するパケットが、スキャン順に入力される場合、Ｎ×Ｌ（Ｌは１〜Ｍの自然数）番目の第１パケットの処理時間はＮ×Ｌ番目以外の第２パケットの処理時間より長くなる。従って、その複数の処理時間（第１処理時間、第２処理時間）に応じて論理的に１つ前段のモジュールの送信間隔を複数用意して、変倍モジュールの処理時間の入れ替えに対応して入れ替えながら出力制御する必要がある。
【００６６】
ここで、変倍モジュールが、画素２（又は画素４）の入力に応じて出力する画素群を第２画素群（斜線箇所）として、第２画素群の出力に要する時間を第２処理時間とする。ここで、ｍ×ｎの画素群（バンド）を前記縦キャンで入力する際の、ｎ×Ｌ（Ｌ：１〜ｍの自然数）番目の画素の入力があった場合には、変倍モジュールは第２処理時間を要することとなる。
また、ｎ×Ｌ番目以外の画素、（画素１又は画素３）は第１処理時間で処理する。
【００６７】
従って、変倍モジュールより論理的に一つ前段のモジュールは、変倍モジュールの変倍処理の内容と変倍モジュールに設定されている送信間隔に基づいて第１・２処理時間に対応する第１・第２送信間隔でデータを出力する必要がある。
【００６８】
図１０は、変倍モジュールより論理的に一つ前段のモジュールのデータ送信制御部が変倍モジュールへ画素を送信するときの制御方法を示すフローである。（ここで、説明の簡便のため１パケットに１画素を格納するものとする。また、切換タイミングとして、バンドの縦方向画素数、バンドの横方向画素数を用いる）
ステップＳ１００１において、変数ｉに（横方向画素数）をセットする。ステップＳ１００２において、送信する画素を特定するＩＤを表す変数ｘに１をセットする。画素はｘを添字とした配列に昇順に格納されていることとする。ステップＳ１００３において、変数ｊに（縦方向画素数−１）をセットする。ステップＳ１００４において、ｊ  又は  ｉが１未満であるか判断する。ステップＳ１００４でｊ  又は  ｉが１未満（ＹＥＳ）ならばステップＳ１００９にジャンプする。ステップＳ１００４でｊ  又は  ｉが１未満でない（ＮＯ）ならばステップＳ１００５に進む。
【００６９】
ステップＳ１００５において、画素（ｘ）を変倍モジュールに出力する。ステップＳ１００６において、「第１処理時間」に対応する「第１出力間隔」だけウェイトする。なお、第１出力間隔は第１処理時間以上であればよいが、より効率的に転送するためには第１出力間隔と第１処理時間が等しい方が好ましい。ステップＳ１００７において、ｊをデクリメントする。ステップＳ１００８において、ｘをインクリメントする。ステップ１００８の処理が完了したらステップＳ１００４から処理を繰り返す。
【００７０】
ステップＳ１００９において、ｉが１未満か判断する。ステップＳ１００９でｉが１未満（ＹＥＳ）ならば処理を終了する。ステップＳ１００９でｉが１未満でない（ＮＯ）ならばステップＳ１０１０に進む。ステップＳ１０１０において画素（ｘ）を変倍モジュールに送信する。ステップＳ１０１１において、「第２処理時間」に対応する「第２出力間隔」だけウェイトする。なお、第２出力間隔も第１出力間隔と同様に第２処理時間以上であればよい。ステップＳ１０１２において、ｉをデクリメントする。ステップＳ１０１３において、ｘをインクリメントする。ステップ１０１３の処理が完了したらステップＳ１００３から処理を繰り返す。
【００７１】
図６の変倍処理に図１０の送信制御を対応させて説明すると、変倍モジュールより論理的に一つ前段のモジュールのデータ送信制御部１１１は画素１を変倍モジュールに送信する。送信した後、変倍モジュールのデータ送信制御部１１１は「第１処理時間＝２画素分」だけウェイトする。この処理をバンド内で縦方向にある画素を順に着目して「縦の画素数−１」回行う。図６の場合「縦方向画素数−１」は２−１＝１回となるので繰り返さない。バンド内の縦方向で最下部にある画素は「第２処理時間」だけウェイトするためである。
【００７２】
「縦方向画素数−１」回だけ「第１処理時間」で処理した後、変倍モジュールより論理的に一つ前段のモジュールのデータ送信制御部１１１は画素２を変倍モジュールに送信し、「第２処理時間＝６画素分」だけウェイトする。そして、画素３に着目する。
【００７３】
画素３と画素４における制御は、画素１と画素２における制御と同様なので省略する。
【００７４】
以上のように変倍モジュールで画素数が増える場合でも、変倍モジュールが処理する時間間隔以上に論理的に一つ前段のモジュールの送信制御部１１１からの送信間隔を空けるため転送効率が良くなる。
【００７５】
なお、図１と図７（ａ）の構成においては、第１・第２処理時間、バンド内で着目している画素を示す情報（ｉ，ｊ）、バンドの縦方向画素数および横方向画素数はデータ送信間隔レジスタ１１０が保持している。
【００７６】
各モジュールについて処理時間を求めるには、図５に示すように、各モジュールをパイプライン処理で利用する順序の最後段から最前段へ順に着目しながら決定する。着目したモジュールが、縦横変倍を行う処理を行う可能性があれば、以下の式でｉ番目の処理モジュールの処理時間（第２処理時間ＴｉｎＷ（ｉ）、第１処理時間ＴｉｎＨ（ｉ））を求める。ここで、縦方向送信間隔はＴｏｕｔＨ（ｉ）と表記する。
ＴｉｎＷ（ｉ）＝縦の倍率×（ＴｏｕｔＨ（ｉ））＋縦方向画素数×縦の倍率×（横の倍率−１）×（ＴｏｕｔＨ（ｉ））…（１）
ＴｉｎＨ（ｉ）＝縦の倍率×（ＴｏｕｔＨ（ｉ））…（２）
このようにして求められた横方向・縦方向それぞれの処理時間（ＴｉｎＷ（ｉ）、ＴｉｎＨ（ｉ））を元に、データ送信間隔レジスタ１１０を設定する。
【００７７】
図４のステップＳ４０２の処理に（１）式と（２）式の演算を取り込んだ制御部９００の処理を示すフローチャートを図５に示す。まず、ステップＳ５０１においてパイプライン処理の処理順で最後のモジュール（出力モジュール）に着目しｉ＝Ｍをセットする。但し、出力モジュールのデフォルト送信間隔値保持部１１４には予め設定された値、又は固定的に格納されている値が入っているものとする。
【００７８】
次に、ステップＳ５０２において出力モジュールの縦方向の送信間隔ＴｏｕｔＨ（ｉ）にデフォルト送信間隔Ｔｏｕｔ（ｉ）をセットする。同様にステップＳ５０３において出力モジュールの横方向の送信間隔ＴｏｕｔＷ（ｉ）にデフォルト送信間隔Ｔｏｕｔ（ｉ）をセットする。
【００７９】
次に、ステップＳ５０４において着目しているモジュールの縦方向送信間隔設定値ＴｏｕｔＨ（ｉ）により横方向処理時間ＴｉｎＷ（ｉ）を算出する。次に、ステップＳ５０５において着目しているモジュールの縦方向送信間隔設定値ＴｏｕｔＨ（ｉ）により縦方向処理時間ＴｉｎＨ（ｉ）を算出する。
【００８０】
次に、ステップＳ５０６において処理順で最初のモジュール（入力モジュール）までの設定を完了したかｉ≦１を満たしているかどうかで判断する。もし、ｉ≦１を満たしていれば図５の処理は終了する。
【００８１】
次に、ステップＳ５０６でｉ≦１を満たしていない場合は、設定の終了していないモジュールがあるので、論理的に１つ前段のモジュールの第１送信間隔ＴｏｕｔＨ（ｉ−１）と第２送信間隔ＴｏｕｔＷ（ｉ−１）を求める。
【００８２】
まず、ステップＳ５０７において、論理的に１つ前段のモジュールの第１送信間隔ＴｏｕｔＨ（ｉ−１）に、論理的に１つ前段のモジュールのデフォルト送信間隔Ｔｏｕｔ（ｉ−１）をセットする。次に、ステップＳ５０８において論理的に１つ前段のモジュールの第２送信間隔ＴｏｕｔＷ（ｉ−１）に論理的に１つ前段のモジュールのデフォルト送信間隔Ｔｏｕｔ（ｉ−１）をセットする。
【００８３】
次に着目モジュールの第２処理時間ＴｉｎＷ（ｉ）と論理的に１つ前段のモジュールの第２送信間隔ＴｏｕｔＷ（ｉ−１）とを比較する。もし、ＴｉｎＷ（ｉ）  ＞  ＴｏｕｔＷ（ｉ−１）が成立したら、ステップＳ５１０において論理的に１つ前段のモジュールの第２送信間隔ＴｏｕｔＷ（ｉ−１）に着目モジュールの第２処理時間ＴｉｎＷ（ｉ）を代入する。一方で、ＴｉｎＷ（ｉ）  ＞  ＴｏｕｔＷ（ｉ−１）の条件を満たしていなければステップＳ５１０の処理は省略する。
【００８４】
次に、ステップＳ５１１において、着目モジュールの第１処理時間ＴｉｎＨ（ｉ）と論理的に１つ前段の第１送信間隔ＴｏｕｔＨ（ｉ−１）とを比較する。もし、ＴｉｎＨ（ｉ）  ＞  ＴｏｕｔＨ（ｉ−１）が成立したら、ステップＳ５１２において論理的に１つ前段のモジュールの第１送信間隔ＴｏｕｔＨ（ｉ−１）に着目モジュールの第１処理時間ＴｉｎＨ（ｉ）を代入する。一方で、ＴｉｎＨ（ｉ）  ＞  ＴｏｕｔＨ（ｉ−１）の条件を満たしていなければステップＳ５１２の処理は省略する。
【００８５】
次に、ステップＳ５１３においてｉをデクリメントすることで、論理的に１つ前段のモジュールを着目モジュールとして設定し、ステップＳ５０４〜Ｓ５１２の処理を各モジュールについて実施する。
【００８６】
図９（ｂ）示す様に、変倍処理を実施するモジュール（ＩＤ＝０ｘ０４）の送信間隔は３２となることから、第２処理時間ＴｉｎＷ（ｉ）と第１処理時間ＴｉｎＨ（ｉ）は（１）式、（２）式を用いて以下のように求められる。なお、ＩＤ＝０ｘ０４〜０ｘ０５間の各モジュールの送信間隔の決定処理については実施例１の処理と同様であるのでここでは省略する。
・ＴｉｎＷ（ｉ）＝縦の倍率×ＴｏｕｔＨ（ｉ）＋縦方向画素数×縦の倍率×（横の倍率−１）×ＴｏｕｔＨ（ｉ）
＝２×３２＋２×２×１×３２＝１９２
・ＴｉｎＨ（ｉ）＝縦の倍率×ＴｏｕｔＨ（ｉ）
＝２×３２  ＝６４
これらの処理時間（ＴｉｎＷ（ｉ）、ＴｉｎＨ（ｉ））は論理的に１つ前段のモジュール（ＩＤ＝０ｘ０８）のデフォルトの送信間隔１１より大きいので、論理的に１つ前段のモジュールの第２送信間隔を１９２、第１送信間隔を６４と設定する。図５に示す処理によって図９（ｂ）に示す各モジュールの送信間隔は図９（ｄ）のように設定できる。
【００８７】
このように、本実施例では、並列処理部９２０の有する処理モジュールの１つがバンド画像内縦スキャン処理での変倍処理をすることで複数種類の処理時間を有していても、次のモジュールの処理を待つパケットの増加を抑制できる。これにより、並列処理部９２０の有する複数のモジュールに流れるデータ量（パケット量）を最適化することができる。
【００８８】
なお、上述の実施例では処理モジュールが４個、５個の例を示したが、本発明において処理モジュールは２個以上であればその数は制限されない。また、図３に示した様に出力モジュールと入力モジュールを別々に配置した構成に基づいて説明しているが、上述した入力モジュールと出力モジュールの処理を別々に実行できるならば、物理的には入出力モジュールとして構成してもよい。
【００８９】
なお、上述の実施例では１つのパケットに１つの画素を格納する例を説明したが、画像データからタイル状（ｍ×ｎ画素）もしくはバンド状（ｍ×ｎ画素、ｍは画像の一辺に相当する）の画素を分割して格納するようにしてもよい。また、バンドのスキャン方向とモジュールのデータ送信制御部がデータを出力する順序に対応していれば縦方向スキャン処理に関わらず本発明を適用できる。
【００９０】
なお、上述の実施例ではリングバス状に各モジュールを接続する例を挙げたが、リングバスの代わりにクロスバースイッチや共有メモリを用いて、各モジュールが処理する順序を任意に変えられる構成であれば、各モジュールの共有する箇所の転送効率は改善できる。
【００９１】
なお、上述の実施例で説明したように、リングバス状に各モジュールを接続し各モジュールが一方向にパケットを流す場合は、データの流れが単純であるため簡易な構成で転送効率の向上が可能である。またこの場合、各モジュールが受付けたパケットについて、モジュールで処理できないときに、入力データ識別部がｓｔａｌｌフラグ２０２をこのパケットに設定することで、次にモジュールが処理できるようになるまでリングバスを周回させ続けることができる。
【００９２】
また、上述の実施例では単一のパイプライン処理を設定する例しか説明していないが、本発明を複数のパイプライン処理を時分割多重で実行する並列処理部に適用することができる。その場合、図２に示すパケットのフォーマットにパケットの属するパイプライン処理を識別するパス識別子を設けて、各モジュールのデータ送信間隔カウンタ、データ送信間隔レジスタ、はパイプライン処理毎に設定（送信間隔など）を保存させればよい。また、入力データ識別部の入力パケットの識別用のレジスタ、出力データ生成部の出力するパケットに付加するＩＤを格納するレジスタもパイプライン処理毎のＩＤを格納しておく必要がある。なお、この場合は、設定の範囲内であればパイプライン処理を切換えても各モジュールの送信間隔を設定する処理を再度行う必要はない。
【００９３】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施例の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005590849.tif 000002
【図２】
0005590849.tif 000003
【図３】
0005590849.tif 000004
【図４】
0005590849.tif 000005
【図５】
0005590849.tif 000006
【図６】
0005590849.tif 000007
【図７】
0005590849.tif 000008
【図８】
0005590849.tif 000009
【図９】
0005590849.tif 000010
【図１０】
0005590849.tif 000011