(57)【要約】【課題】分割領域やメモリアドレスの割り当てについて予め複雑な演算処理を必要とせずにデータの並列処理を実現すること。【解決手段】データ処理装置は、データの読み出しを第１の位置（例えば先頭位置）から開始して処理する第１処理部２０３と、データの読み出しを第１の位置とは異なる第２の位置（例えば最後尾位置）から開始して処理する第２処理部２０５を備える。制御部２０４は、各処理部によるデータの処理量を監視して、該処理量の合計が所定のデータのサイズに達した場合、第１処理部２０３および第２処理部２０５による並列処理を停止させる制御を行う。各処理部はデータを異なる位置から処理していき、それぞれの処理経過から制御部２０４はデータの並列処理の完了時点を判断することにより、第１処理部２０３および第２処理部２０５による各処理を同じタイミングで終了させることができる。【選択図】  図１
2014157411.tif 000002
【特許請求の範囲】
【請求項１】
メモリから読み出されたデータを処理する第１の処理手段と、
前記メモリから読み出されたデータを処理する第２の処理手段と、
前記メモリに記憶された所定のデータを前記第１の処理手段により処理しながら、前記第２の処理手段により前記所定のデータを並列処理させる制御手段と備え、
前記制御手段は、前記所定のデータにおける第１の位置から連続的に読み出して処理するように前記第１の処理手段を制御すると共に、前記所定のデータにおける第２の位置から連続的に読み出して処理するように前記第２の処理手段を制御し、前記第１の処理手段により処理されたデータ量と前記第２の処理手段により処理されたデータ量の合計が前記所定のデータのサイズに達した場合に、前記第１の処理手段と第２の処理手段による並列処理を停止させることを特徴とするデータ処理装置。
【請求項２】
前記制御手段は、前記所定のデータにおける先頭の位置を前記第１の位置として設定すると共に前記第１の位置から最後に向かう方向へ連続的に前記所定のデータを読み出すように前記第１の処理手段を制御し、前記所定のデータにおける最後の位置を前記第２の位置として設定すると共に前記第２の位置から先頭に向かう方向へ連続的に前記所定のデータを読み出すように前記第２の処理手段を制御することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記制御手段は、前記所定のデータにおける先頭の位置を前記第１の位置として設定すると共に前記第１の位置から最後に向かう方向へ連続的に前記所定のデータを読み出すように前記第１の処理手段を制御し、前記所定のデータにおける先頭から最後の位置までの途中における所定の位置を前記第２の位置として設定すると共に前記第２の位置から最後に向かう方向へ連続的に前記所定のデータを読み出すように前記第２の処理手段を制御することを特徴とする請求項１に記載のデータ処理装置。
【請求項４】
前記第１の処理手段と前記第２の処理手段はそれぞれ、所定量のデータを処理する度にカウントを行うカウンタを有し、
前記制御手段は、前記第１の処理手段と前記第２の処理手段からの前記カウンタのカウント値に基づいて、前記第１および第２の処理手段の並列処理を停止させるタイミングを制御することを特徴とする請求項１から３のいずれか１項に記載のデータ処理装置。
【請求項５】
前記制御手段は、前記第１の処理手段により処理されているデータの位置と、前記第２の処理手段により処理されているデータの位置とが一致した場合、または一致した位置から予め設定されたデータ量の処理が終了した場合に、前記第１および第２の処理手段による並列処理を停止させることを特徴とする請求項４に記載のデータ処理装置
【請求項６】
前記制御手段は、前記第１の処理手段が前記所定のデータを処理している間に、前記第２の処理手段が前記所定のデータとは別のデータの処理を終了した場合、前記所定のデータのうちで前記第１の処理手段によって処理されていないデータを、前記第１の処理手段による前記所定のデータの処理と並列に前記第２の処理手段により処理させることを特徴とする請求項１から５のいずれか１項に記載のデータ処理装置。
【請求項７】
メモリから読み出されたデータを処理する第１の処理手段と、
前記メモリから読み出されたデータを処理する第２の処理手段と、
前記メモリに記憶された所定のデータを前記第１の処理手段により処理しながら、前記第２の処理手段により前記所定のデータを並列処理させる制御手段と備えたデータ処理装置にて実行される制御方法であって、
前記制御手段により、
前記所定のデータにおける第１の位置から連続的に読み出して処理するように前記第１の処理手段を制御するステップと、
前記所定のデータにおける第２の位置から連続的に読み出して処理するように前記第２の処理手段を制御するステップと、
前記第１の処理手段により処理されたデータ量と前記第２の処理手段により処理されたデータ量の合計が前記所定のデータのサイズに達した場合に、前記第１の処理手段と第２の処理手段による並列処理を停止させるステップを有することを特徴とするデータ処理装置の制御方法。
【請求項８】
メモリから読み出されたデータを処理する第１の処理手段と、
前記メモリから読み出されたデータを処理する第２の処理手段と、
前記メモリに記憶された所定のデータを前記第１の処理手段により処理しながら、前記第２の処理手段により前記所定のデータを並列処理させる制御手段と備えたデータ処理装置にてコンピュータにより実行されるデータ処理プログラムであって、
前記制御手段により、
前記所定のデータにおける第１の位置から連続的に読み出して処理するように前記第１の処理手段を制御するステップと、
前記所定のデータにおける第２の位置から連続的に読み出して処理するように前記第２の処理手段を制御するステップと、
前記第１の処理手段により処理されたデータ量と前記第２の処理手段により処理されたデータ量の合計が前記所定のデータのサイズに達した場合に、前記第１の処理手段と第２の処理手段による並列処理を停止させるステップを有することを特徴とするデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の演算処理部によりデータを並列処理する技術に関するものである。
【背景技術】
【０００２】
近年、デジタルカメラは高画素化が進み、画像データを高速に処理して膨大な情報量を有する静止画の撮影記録を行う装置や、動画記録中に静止画撮影を行える装置が製品化されている。
画像データを分割しながら画像処理を行う方法には、撮像画像データを一旦メモリに記憶しておいて分割しながら処理する方法や、動画の撮像および記録中に分割した静止画像をシーケンシャルに処理する方法が知られている。この他、同じ演算処理を行える複数の演算処理回路を装備し、パイプライン処理で同時に並列処理する方法が提案されている。
特許文献１では、画像データを並列に演算処理する並列画像処理装置にて、各演算回路による演算処理が同時に完了するように、各演算回路のメモリに蓄積する画像データを割り当てている。また、特許文献２では画像データの分割領域データを複数の入力手段に入力し、入力された分割領域データ各々に対して、分割領域毎に独立に処理可能な画像処理がパイプライン処理により実行される。このパイプライン処理結果を統合することで、高速かつ任意の順序で分割した画像を処理できる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−２１６１２１号公報
【特許文献２】特開平１０−３０４１８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１や特許文献２の技術では、画像データの分割領域を予め計算しておく必要があり、並列処理を行う前に複雑な演算処理が必要となる。
本発明は、分割領域やメモリアドレスの割り当てについて予め複雑な演算処理を必要とせずにデータの並列処理を実現することを目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、本発明に係る装置は、メモリから読み出されたデータを処理する第１の処理手段と、前記メモリから読み出されたデータを処理する第２の処理手段と、前記メモリに記憶された所定のデータを前記第１の処理手段により処理しながら、前記第２の処理手段により前記所定のデータを並列処理させる制御手段と備える。前記制御手段は、前記所定のデータにおける第１の位置から連続的に読み出して処理するように前記第１の処理手段を制御すると共に、前記所定のデータにおける第２の位置から連続的に読み出して処理するように前記第２の処理手段を制御し、前記第１の処理手段により処理されたデータ量と前記第２の処理手段により処理されたデータ量の合計が前記所定のデータのサイズに達した場合に、前記第１の処理手段と第２の処理手段による並列処理を停止させる。
【発明の効果】
【０００６】
本発明によれば、分割領域やメモリアドレスの割り当てについて予め複雑な演算処理を必要とせずにデータの並列処理を実現できる。
【図面の簡単な説明】
【０００７】
【図１】図２および図３と併せて本発明の第１実施形態を説明するための、装置の構成例を示すブロック図である。
【図２】並列処理例の説明図である。
【図３】並列処理例を説明するフローチャートである。
【図４】本発明の第２実施形態における並列処理例を説明するフローチャートである。
【図５】本発明の第３実施形態における並列処理例を説明するフローチャートである。
【図６】本発明の第４実施形態における並列処理例を説明するフローチャートである。
【図７】並列処理を説明する入出力波形図である。
【図８】並列処理例の説明図である。
【発明を実施するための形態】
【０００８】
以下に、本発明の各実施形態について添付図面を参照して詳細に説明する。なお、画像データの処理装置を例示して説明するが、本発明は、各種データを並列処理する装置に幅広く適用できる。
【０００９】
［第１実施形態］
図１は、本発明の第１実施形態に係るデータ処理装置の構成例を示すブロック図である。
図１（Ａ）は、本発明が適用されたデータ処理装置を含む撮像装置１００の構成を示す図である。図１（Ａ）において、撮像部１０１は被写体を撮影し、画像データを出力する。メモリ１０２は撮像部１０１からの画像データを記憶する。画像処理部１０３は、メモリ１０２に記憶された画像データを読み出して所定の処理を施し、再びメモリ１０２に記憶する。また、画像処理部１０３は、ＣＰＵ（中央演算処理装置）１０６の指示により、表示部１０４に表示される各種の情報を処理してメモリ１０２に記憶する。
表示部１０４は、メモリ１０２より読み出した画像データやその他の情報を表示する。記録部１０５はメモリ１０２より読み出した画像データをメモリカードなどの記録媒体に記録する。ＣＰＵ１０６は操作部１０７からの指示に応じて撮像装置１００の各部を制御する。また、ＣＰＵ１０６は、画像処理部１０３による処理を制御する。クロック発生部１０８は、撮像装置１００の動作クロックを発生させる。撮像装置１００の各部は、クロック発生部１０８からのクロックに従って動作する。
【００１０】
図１（Ｂ）は、画像処理部１０３の構成例を示す図である。図１（Ｂ）において、メモリ１０２に記録されている画像データは、第１読み出し部２００によって画像処理部１０３に取り込まれる。画像データの一部は第１読み出し部２００が読み出す。第１読み出し部２００が読み出した画像データは、入力セレクタ２０２を介して第１処理部２０３に入力される。第１処理部２０３は、画像処理用の所定の演算（第１の演算処理）を行う処理回路を備える。また、第１処理部２０３は、クロック発生部１０８からのクロックに従って、画像データの各画素のデータを処理する。また、第１処理部２０３は、クロックに基づいて、処理されている所定量の画像データを処理する度にカウントを行うカウンタを備える。所定量とは、例えば、１ライン分に相当するデータ量であり、カウンタはライン数を計数する（カウント値をＴＣ１と記す）。メモリ１０２から読み出された１画面の画像データにおける１ライン分の画素数に対応した値をカウントする毎にＴＣ１が１ずつ増加する。このカウント値ＴＣ１は制御部２０４に出力される。また第１処理部２０３は処理したデータ（演算結果）を出力セレクタ２０６へ送り、第１書き込み部２０７により、メモリ１０２に対して処理後のデータを出力する。
【００１１】
メモリ１０２に記憶されている画像データの一部はまた、第２読み出し部２０１により読み出される。第２読み出し部２０１が読み出した画像データは、入力セレクタ２０２を介して第２処理部２０５に入力される。第２の演算処理を行う第２処理部２０５は第１処理部２０３と同様に画像演算処理を行う処理回路を備える。また、第２処理部２０５は、クロック発生部１０８からのクロックに従って、画像データの各画素のデータを処理する。また、第２処理部２０５は、クロックに基づいて、処理されている画像データのライン数をカウントするカウンタを備える（カウント値をＴＣ２と記す）。メモリ１０２から読み出された１画面の画像データにおける１ライン分の画素数に対応した値をカウントする毎にＴＣ２が１ずつ増加する。このカウント値ＴＣ２は制御部２０４に出力される。
制御部２０４は第１処理部２０３および第２処理部２０５からのラインカウント値ＴＣ１とＴＣ２に基づいて、各処理部により処理されているデータの状態を検出する。そして、この処理の経過状態に応じて各処理部を制御する。例えば、制御部２０４は第１処理部２０３と第２処理部２０５からのラインカウント値ＴＣ１とＴＣ２を監視する。画像の垂直方向におけるラインカウント位置を示す値を比較することで、並列処理の終了タイミングを検出することができる。
【００１２】
次に、図２および図３を参照して、本実施形態における並列演算処理の設定処理および制御内容を説明する。図２は処理の様子を説明する図であり、図３は処理例を説明するフローチャートである。図３の処理は、ＣＰＵ１０６、及び制御部２０４が各部を制御することにより実行される。また、一部の処理は画像処理部１０３により実行される。
図３において、制御部２０４は、ＣＰＵ１０６からの指示に従い、第１処理部２０３および第２処理部２０５に対してそれぞれ出力される画像データの、メモリ１０２における先頭アドレスを設定する。制御部２０４は、設定した読み出し開始アドレスを第１読み出し部２００と第２読み出し部２０１に出力する（Ｓ３０１）。例えば、本実施形態では、第１処理部２０３は１画面の画像データの先頭位置から処理を行い、第２処理部２０５は１画面の最後尾から先頭に向かって処理を行うものとする。そこで、制御部２０４は、第１読み出し部２００に対し、読み出し開始アドレスとして、処理対象の１画面の画像データにおける先頭データのアドレスを設定し、更に、順方向読み出しを行うように指示する。一方、制御部２０４は、第２読み出し部２０１に対し、読み出し開始アドレスとして、処理対象の１画面の画像データにおける最後のデータのアドレスを設定し、更に、逆方向読み出しを行うように指示する。このように読み出し開始アドレスと読み出し順序が設定されると、第１読み出し部２００はクロック発生部１０８からのクロックに同期して、１画面の先頭から後方に向かって画像データを読み出していく。他方、第２読み出し部２０１は、クロック発生部１０８からのクロックに同期して、１画面の最後のデータから先頭に向かって画像データを読み出していく。
【００１３】
このように、第１読み出し部２００および第２読み出し部２０１にはそれぞれ異なる読み出し開始位置が設定され、読み出し方向は互いに反対である。
また、制御部２０４は、第１書き込み部２０７および第２書き込み部２０８による書き込み開始アドレスと書き込み方向を設定する。本実施形態では、１画面の画像データを第１処理部と第２処理部で処理した結果のデータがメモリ１０２にて連続したアドレスに記憶されるように、第１書き込み部２０７と第２書き込み部２０８のそれぞれの書き込み開始アドレスを決める。また、制御部２０４は、第１書き込み部２０７に対し順方向に書き込むように書き込み方向を指示し、第２書き込み部２０８に対し逆方向に書き込むように書き込み方向を指示する。
【００１４】
次に、制御部２０４は、第１処理部２０３および第２処理部２０５に対し、それぞれに入力された画像データを並列処理するように指示する（Ｓ３０２）。また、制御部２０４は各処理部に対し、処理の内容についても指示する。各処理部による演算結果である処理済みデータは、第１書き込み部２０７や第２書き込み部２０８を介して、設定された開始位置および方向に従ってメモリ１０２に書き込まれる。次に、制御部２０４は、第１処理部２０３が処理した画像データの処理量に相当するラインカウント値ＴＣ１と第２処理部２０５が処理した画像データの処理量に相当するラインカウント値ＴＣ２を取得する。そして、制御部２０４は、これらのカウント値に基づいて、各処理部により１画面分の画像データが処理されたか否かを判別する（Ｓ３０３）。具体的には、処理対象である１画面分の画像データの垂直方向の画素数（ライン数）を「Ｃ」と記すとき、ＴＣ１＋ＴＣ２がＣに等しいか否かについて判定される。「ＴＣ１＋ＴＣ２＝Ｃ」と判定された場合、Ｓ３０４に移行し、また「ＴＣ１＋ＴＣ２＜Ｃ」と判定された場合、Ｓ３０２に戻って、第１処理部２０３と第２処理部２０５による並列処理が実行される。１画面分の画像データの処理が終了した場合、Ｓ３０４で制御部２０４は、各処理部による処理を停止させる。すなわち制御部２０４は、第１処理部２０３および第２処理部２０５に処理を停止するように指示すると共に、第１読み出し部２００と第２読み出し部２０１に対して読み出しの停止を指示して演算処理を終了させる。
【００１５】
図３の処理では、第１書き込み部２０７が順方向にて処理済みのデータをメモリ１０２に書き込み、第２書き込み部２０８が逆方向にて処理済みのデータをメモリ１０２に書き込む。よって、演算終了タイミングはＴＣ１とＴＣ２の加算値が画像データのライン数に相当するＣ値に到達した時点である。
しかし、これに限らず、演算内容に応じて演算処理の終了タイミングを変更する構成としてもよい。例えば、オーバーラップを必要とする演算処理の場合、「ＴＣ１＋ＴＣ２＝Ｃ」になった時点が演算処理の完了時点ではない。この場合には、「ＴＣ１＋ＴＣ２＝Ｃ」に達した時点から所定ライン数の処理（オーバーラップ処理）が行われた時点でそれぞれの演算処理が完了するようにしてもよい。第１処理部２０３および第２処理部２０５は同様の演算処理が可能である。このため、これらの処理部により同じ画像処理を実行する場合、メモリ１０２に書き込まれる画像データは、第１書き込み部２０７が順方向書き込みを行ったデータと、第２書き込み部２０８が逆方向書き込みを行ったデータにより構成される。つまり、並列処理によってメモリ１０２の画像領域にデータを書き出す処理が実行され、入力画像データを単体の演算処理回路で行った場合と同様の出力結果が得られる。
【００１６】
図２は本実施形態において処理される画像を示す図である。図２において時間の経過方向を上から下に示しており、左側には第１処理部２０３の処理を示し、右側には第２処理部２０５の処理を例示する。Ｐ１００は処理対象となる１画面の画像データを示す。
第１処理部２０３による画像データＰ１００の処理中、第２処理部２０５は、メモリ１０２から画像データＰ１００を終端（アドレス）から読み出す。各処理部が同様の演算処理を行うことで並列処理が行われる。制御部２０４は、第１処理部２０３のＴＣ値（ＴＣ１）と第２処理部２０５のＴＣ値（ＴＣ２）を取得して判定処理を行う。ＴＣ１とＴＣ２の合計が画像データＰ１００のライン数と一致した場合、制御部２０４は第１処理部２０３および第２処理部２０５の演算処理を終了させることで、同時に並列処理が完了する（完了のタイミングを「Ｔ１」に示す）。但し、第１処理部２０３と第２処理部２０５のうち、双方の演算処理タイミングによってはどちらが先に終了してもよい。
【００１７】
第１実施形態では、入力された画像データにおける処理済領域の合計が画像データ全体の処理サイズと一致した時点またはこの時点からさらに所定のデータ量のオーバーラップ処理が終了した時点で並列処理が終わり、各演算処理が同時に終了する。そのため、１画面の画像データを二つの処理部により並列処理する場合に、各処理部により処理される画像データを簡単に指定することができる。すなわち、各処理部により処理される画像データをメモリ領域に割り当てるための複雑な処理を行う必要がない。
以上に説明した処理は、画像処理装置を構成するコンピュータがメモリからデータ処理プログラムを読み出して実行することによっても実現できる。つまり、ＣＰＵ（中央演算処理装置）はデータ処理プログラムの記述内容に従い、以下の処理ステップを実行する。なお、コンピュータは、メモリに記憶された所定のデータを第１の処理手段により処理しながら、第２の処理手段によって所定のデータを並列処理させる制御を行う。第１の処理手段については、第１読み出し部２００、第１処理部２０３、第１書き込み部２０７の各機能を、ＣＰＵがプログラムを実行することで実現される。同様に、第２の処理手段については、第２読み出し部２０１、第２処理部２０５、第２書き込み部２０８の各機能を、ＣＰＵがプログラムを実行することで実現される。
第１の処理では、所定のデータにおける第１の位置から連続的に読み出して処理するように第１の処理手段を制御するステップが実行される。また、所定のデータにおける第２の位置から連続的に読み出して処理するように第２の処理手段を制御するステップが実行される。第１の位置は、例えば、所定のデータの先頭に設定され、読み出し方向および書き込み方向（第１方向）は後方である。また、第２の位置はデータの最後尾に設定され、読み出し方向および書き込み方向（第２方向）は前方である。ＣＰＵは第１および第２の処理を並列処理で実行する。そして、ＣＰＵは第１および第２の処理でのデータの処理量を監視して、該処理量の合計を所定のデータのサイズと比較する。すなわち、第１の処理手段により処理されたデータ量と第２の処理手段により処理されたデータ量の合計が、所定のデータのサイズに達した場合に、並列処理を停止させるステップが実行される。事前に入力画像データの分割領域を複雑な演算により求める必要がなくなるので、ＣＰＵによる並列処理能力を高めることができる。
【００１８】
［第２実施形態］
次に、本発明の第２実施形態を説明する。なお、第２実施形態に係る装置の構成は第１実施形態の場合と同様であるため、各構成要素については既に使用した符号を用いることにより、それらの詳細な説明を省略し、以下では相違点を主に説明する。なお、このような説明の省略の仕方は後述する他の実施形態でも同様とする。
第２実施形態では、例えば第１処理部２０３が１画面の画像データの先頭から処理を開始し、第２処理部２０５は１画面の画像データの途中から開始する。図４のフローチャートを参照して、本実施形態の処理例を説明する。
【００１９】
図４において、制御部２０４は、メモリ１０２からの読み出しアドレス及び読み出し方向、及び、メモリ１０２に対する書き込みアドレス及び書き込み方向を設定する（Ｓ４０１）。例えば、制御部２０４は、第１処理部２０３が処理対象の１画面の画像データの先頭から順方向に読み出しを行うように設定する。また、制御部２０４は、第２処理部２０５が処理対象の１画面の画像データの先頭から所定のオフセット値（ＯＦＶ）だけ後の位置から順方向読み出しを行うように設定する。本実施形態では、例えば、１画面の画像データにおける垂直方向の画素数（ライン数）Ｃの半分であるＣ／２の位置を読み出し開始位置として設定する。そして、制御部２０４は、この読み出し開始位置のアドレスを第２読み出し部２０１に設定する。つまり、１画面の画像データの先頭位置を起点として、これにＯＦＶを加算した位置から後方に向かってデータの読み出しが行われることになる。
同様に、制御部２０４は、メモリ１０２に対する処理済みのデータの書き込み開始アドレスと書き込み方向を設定し、第１書き込み部２０７と第２書き込み部２０８に対して出力する。また、各処理部により処理された画像データがメモリ１０２において連続したアドレスに記憶されるように、制御部２０４は第１書き込み部２０７に対して、画像データの先頭から順方にデータを書き込むように指示する。制御部２０４は第２書き込み２０８に対して、第１書き込み部２０７に設定した書き込み開始アドレスから、前記オフセット値ＯＦＶだけ後のアドレスを書き込み開始アドレスとして指示する。
【００２０】
次に、制御部２０４は、第１処理部２０３および第２処理部２０５に対し、並列に演算処理を行うように指示する（Ｓ４０２）。各処理部により処理された画像データは第１書き込み部２０７及び第２書き込み部２０８によりメモリ１０２に書き込まれる。各処理部により処理が開始された後、制御部２０４は、第１処理部２０３からのラインカウント値ＴＣ１と、第２処理部２０５に対して出力される画像データの読み出し開始位置の設定値とを比較する。そして、制御部２０４は、ＴＣ１が第２処理部２０５に対する画像データの読み出し開始位置（先頭位置＋オフセット値）に等しいか否かを判定する（Ｓ４０３）。両者が一致したと判定された場合、制御部２０４は第１処理部２０３に対して処理を停止するように指示し、第１処理部２０３の演算処理を終了させる（Ｓ４０４）。次に、制御部２０４は、第２処理部２０５からのＴＣ２の値に基づいて、第２処理部２０５の演算処理が完了しているか否かを判定する（Ｓ４０５）。第２処理部２０５の演算処理が完了していないと判定された場合、引き続き第２処理部２０５による演算処理が続行される（Ｓ４０６）。
また、Ｓ４０３で、ＴＣ１と第２処理部２０５による画像データの読み出し開始位置が一致しない場合、制御部２０４は、第２処理部２０５の処理が終了したか否かを判別する（Ｓ４０７）。ここでは、第２処理部２０５が処理しているデータが、１画面の最後のラインであるか否かを判別することにより、第２処理部２０５の処理の終了を判別する。Ｓ４０７で第２処理部２０５の演算処理が終了していない場合、Ｓ４０２に戻り、第１処理部２０３と第２処理部２０５による並列処理を続ける。
また、Ｓ４０７で第２処理部２０５の処理が終了していなかった場合、制御部２０４は、第１処理部２０３からのラインカウント値ＴＣ１と、第２処理部２０５に対して出力される画像データの読み出し開始位置の設定値を比較する。そして、制御部２０４はＴＣ１が第２処理部２０５に対する画像データの読み出し開始位置に等しいか否かを判定する（Ｓ４０８）。両者が一致したと判定された場合、制御部２０４は第１処理部２０３に対して処理を停止するように指示し、第１処理部２０３の演算処理を終了させる（Ｓ４０９）。また、両者が一致していない場合、制御部２０４は、第１処理部２０３による処理を続ける（Ｓ４１０）。そしてＳ４０８に戻る。
【００２１】
以上のように、複数の処理部による演算処理の開始位置を異なる位置に設定して、それぞれ同じ方向（上記の例では先頭から後方）に従ってデータの読み出しおよび書き込みが行われる。処理の終了時点は、開始位置を異なる位置に設定する際に使用したオフセット値に基づいて判定される。
第２実施形態によれば、第１処理部２０３による第１の演算処理の完了位置が、画像データの途中の開始位置に設定され、第１処理部２０３は、処理済みデータのＴＣ値が当該位置に到達した時点で処理が完了する。この時点までに第２処理部２０５の処理が完了していれば、１画面の画像データの処理の完了タイミングは、第１処理部２０３の処理の終了時点に一致する。よって、複雑な演算による入力画像の分割領域を求める必要がなく、画像データを複数の演算処理部により並列処理することができる。
第２実施形態では、第１処理部２０３が第１の位置、例えばデータの先頭から演算処理をしている最中に、第２処理部２０５が第２の位置から演算処理を開始する。これにより、第２処理部による演算処理の開始位置と、第１処理部の演算処理の処理経過を比較し、並列処理を終了させるタイミングを判定できる。すなわち、並列処理の完了タイミングについては、第１処理部２０３が処理しているデータの位置を、データの途中から第２処理部２０５の演算処理を開始させた第２の位置に到達する時点に設定可能である。
【００２２】
［第３実施形態］
次に、本発明の第３実施形態を説明する。
前記第１および第２実施形態では第１処理部２０３と第２処理部２０５が共に、最初から並列処理を行うことを前提として説明した。第３実施形態では、複数の演算処理部がそれぞれに異なるデータを処理しており、ある処理部がその演算処理を終了した後で、他の処理部が演算している処理を補助する例を説明する。
図８は、第１処理部２０３および第２処理部２０５の演算処理例を示す。時間の経過方向を上から下に示しており、左側には第１処理部２０３の処理を示し、右側には第２処理部２０５の処理を示す。画像データＰ２００とＰ２０１は第１処理部２０３の処理対象を示し、画像データＰ２０２からＰ２０６は第２処理部２０５の処理対象を示す。
【００２３】
初めに第１処理部２０３と第２処理部２０５が異なる画像データをそれぞれ処理している。第１処理部２０３は画像データＰ２００の処理を終えた後で、次に画像データＰ２０１の処理にとり掛かっているとする。ある時点で第２処理部２０５は画像データＰ２０２からＰ２０６の処理が先に終わる。第２処理部２０５は、第１処理部２０３による画像データＰ２０１の処理中に、その演算処理を補助するために、並列処理を行う。この場合、複数の処理部が同じ画像データを対象として並列処理する期間（以下、並列処理期間という）と、各処理部が異なる画像データをそれぞれ処理する期間（以下、個別処理期間という）とを区別する必要がある。ＣＰＵ１０６は、第１処理部２０３および第２処理部２０５の処理状態に基づいて、各処理部の並列処理期間と個別処理期間の判定用信号（以下、MODE信号という）を生成し、画像処理部１０３に出力する。
【００２４】
図５のフローチャートを参照して、本実施形態における画像データの処理を説明する。
まず、ＣＰＵ１０６は、第１処理部２０３および第２処理部２０５が処理する内容に基づいて、１画面の画像データを並列処理するか否かを決定し、MODE信号の値を設定する。MODE信号は、０または１の値をとる。例えば、第１処理部２０３および第２処理部２０５がそれぞれ異なる画像データを並列に処理する場合（以下、並列処理Ａという）、または、どちらか一方の処理部しか演算処理を行わない場合に、MODE信号の値は０に設定される。また、第１処理部２０３および第２処理部２０５が同じ１画面の画像データの一部を並列処理する場合（以下、並列処理Ｂという）、MODE信号の値は１に設定される。本実施形態では、初めに第１処理部２０３と第２処理部２０５で異なる画像データをそれぞれ処理する場合を想定しているので、MODE信号の値には０が設定される。
【００２５】
次に、制御部２０４はMODE信号の値を判別する（Ｓ５０２）。MODE信号の値が０の場合、制御部２０４は、第１処理部２０３と第２処理部２０５に対し、ＣＰＵ１０６により設定された処理を実行させる（Ｓ５０７）。この際、制御部２０４は、ＣＰＵ１０６から、メモリ１０２において、各処理部に対して処理される画像データが記憶されているアドレスの情報を受け取る。制御部２０４は、第１読み出し部２００と第２読み出し部２０１に対し、それぞれ処理される画像データを読み出すように指示する。各処理部による演算結果は、第１書き込み部２０７と第２書き込み部２０８によりそれぞれメモリ１０２に記憶される。
次に、制御部２０４は、第１処理部２０３と第２処理部２０５の演算処理が共に終了したか否かを判定する（Ｓ５０８）。両方の処理部による演算処理が終了した場合、処理が終了する。また、どちらかの演算処理が終了していない場合、制御部２０４は、第１処理部２０３と第２処理部２０５のうち、いずれか一方の演算処理が終了したか否かを判定する（Ｓ５０９）。どちらの演算処理も終了していない場合には、Ｓ５０７に戻って処理が繰り返される。また、どちらか一方の演算処理が終了した場合にはＳ５０１へ戻る。このように一方の処理が完了した場合、制御部２０４はその旨をＣＰＵ１０６に知らせる。ＣＰＵ１０６は、一方の処理部の処理が完了した場合、MODE信号を１に設定する。
【００２６】
MODE信号が１に設定された場合、制御部２０４は、第１処理部２０３と第２処理部２０５の一方で処理中の１画面の画像データを他方の処理部においても処理させる。そのため、制御部２０４は、例えば、メモリ１０２において、第１処理部２０３が処理している１画面の画像データの終端のデータのアドレスを読み出し開始アドレスとして第２読み出し部２０１に設定する。更に制御部２０４は第２読み出し部２０１に対して、逆方向に画像データを読み出すように指示する（Ｓ５０３）。そのため、第１実施形態と同様に、第１処理部２０３による画像データの処理中に、第２読み出し部２０１により、同じ画像データの終端部から逆方向に画像データが読み出され、第２処理部２０５により処理される（並列処理Ｂ）。
このように、第２処理部２０５の画像データの読み出し開始位置は、第１処理部２０３が処理している画像データの最後尾位置に設定される。同様に第２書き込み部２０８の書き込み開始アドレスは、第１処理部２０３により処理された画像データのメモリ１０２に対する書き込み開始アドレスから１画面分後のアドレスに設定され、更に、逆方向に書き込みを行うように設定される。
【００２７】
次のＳ５０４で制御部２０４は、第１処理部２０３と第２処理部２０５に対し、それぞれの入力画像データを演算処理で並列に処理するように指示する。各演算結果は第１書き込み部２０７と第２書き込み部２０８によりメモリ１０２に書き込まれる。次に、制御部２０４は、第１処理部２０３のＴＣ１値と第２処理部２０５のＴＣ２値を取得する。そして、ＴＣ１＋ＴＣ２が、処理対象の１画面の画像データの垂直方向の画素数Ｃに等しいか否かについて判定される（Ｓ５０５）。「ＴＣ１＋ＴＣ２＝Ｃ」と判定された場合、制御部２０４は第１処理部２０３および第２処理部２０５へ処理終了信号を出力し、それぞれの演算処理を終了させる（Ｓ５０６）。また、Ｓ５０５でＴＣ１＋ＴＣ２がＣに等しくないと判定された場合、Ｓ５０４に戻って処理を継続させる。こうして並列処理が終了する。なお、オーバーラップ処理を必要とする場合には、第１実施形態で説明した通りであるので、その説明を省略する。
【００２８】
次に、図７を参照して並列処理を行ったときの終了タイミングについて説明する。図７は各処理部に処理されるデータの状態を示す。それぞれ、ハイレベルである状態のときにデータが入力される。入力波形（１）は第２処理部２０５の処理対象を示す入力データの波形であり、入力波形（３）は第１処理部２０３の処理対象を示す入力データの波形である。また出力波形（２）は、第２処理部２０５が演算処理したデータの出力波形であり、出力波形（４）は、第１処理部２０３が演算処理したデータの出力波形である。
図７の上段は、第１処理部２０３と第２処理部２０５がそれぞれ別の画像データだけを処理する場合（並列処理Ａ）の入出力波形例を示す。本例では、第２処理部２０５がメモリ１０２からの入力波形（１）を処理して、出力波形（２）に示すデータをメモリ１０２に書き込んでいく。これと並行して、第１処理部２０３はメモリ１０２からの入力波形（３）を処理して、出力波形（４）に示すデータをメモリ１０２に書き込んでいく。第１処理部２０３の演算処理が終了した時点（Ｔ２参照）が処理完了のタイミングである。
【００２９】
図７の下段には、第１処理部２０３と第２処理部２０５が同じ画像データを処理する場合（並列処理Ｂ）に係る入出力波形例を示す。本例では、第２処理部２０５の演算処理が先に終了する。第２処理部２０５の入力波形（１）に斜線部７０１で示すように、第１処理部２０３が処理中である入力波形（３）のデータのうち、未処理の部分が第２処理部２０５の新たな処理対象となる。つまり、第２処理部２０５は、未処理の画像データを最後尾の位置から前方へ読み出して並列処理を実行する。これにより、第１処理部２０３と第２処理部２０５を同時に終了させることができる。処理完了のタイミングは、両処理部が演算処理を同時に終了した時点（Ｔ１参照）であり、前記Ｔ２よりも前である。
このように、MODE信号の値を判別して、複数の演算処理部による並列処理Ａと並列処理Ｂとを切り替えることにより、処理効率が向上する。なお、図７の例では、第２処理部２０５が演算処理の終了後に第１処理部２０３を補助する処理を説明した。これに限らず、例えば、第１処理部２０３と第２処理部２０５とが異なる画像データを処理している途中から、並列処理Ｂに切り替えた場合でも処理を同時に終了させることができる。
【００３０】
図８は、図７の下段に例示した入出力波形を、画像として視覚的に例示した説明図である。例えば、第１処理部２０３は画像データＰ２００を処理しており、第２処理部２０５は画像データＰ２０２〜Ｐ２０６を処理している場合を想定する。
第１処理部２０３は画像データＰ２００の処理を終えると、次に画像データＰ２０１の処理に取りかかる。一方、第２処理部２０５は画像データＰ２０２〜Ｐ２０６を順番に処理しており、画像データＰ２０６の処理を終えた時点で、第１処理部２０３は画像データＰ２０１の処理を行っている最中である。
第１処理部２０３による画像データＰ２０１の処理中に、MODE信号の値が１に設定されると、第２処理部２０５は画像データＰ２０１を最後尾から読み出して前方に向かって読み出し、メモリ１０２への逆方向書き込みを実行する。MODE信号の値が１に設定されたことで、制御部２０４は第１処理部２０３および第２処理部２０５の各ＴＣ値を取得して、その合計（ＴＣ１＋ＴＣ２）と、画像データＰ２０１の垂直方向の画素数（Ｃ）とを比較する。両者が一致した場合、制御部２０４が第１処理部２０３および第２処理部２０５の演算処理を終了させることで、同時に並列処理Ｂが完了する（Ｔ１参照）。但し、双方の演算処理タイミングによっては、どちらか一方が先に終了しても構わない。
【００３１】
第３実施形態では、MODE信号の値の設定によって並列処理Ｂを行っている期間が判別できる。よって、ある処理部がデータの先頭から処理している最中であっても、別の処理部がデータの後ろから処理していくことができる。互いのデータ処理が済んだ領域の合計サイズが、データ全体の処理量と一致した時点またはオーバーラップ処理の後で、並列処理Ｂが終了するので、演算処理効率を高めることができる。
第３実施形態によれば、並列処理期間であるか否かの判別、つまり、複数の演算処理部が別々のデータをそれぞれ並列処理している状態と、同じデータを対象として並列処理している状態とを判別できる。このため、並列処理期間中に制御部は、各処理部が既に処理済みのメモリ領域のデータを観測することで、同時に並列処理が完了するか否かを把握できる。
【００３２】
［第４実施形態］
次に、本発明の第４実施形態を説明する。第４実施形態では、複数の演算処理部がそれぞれに異なるデータを処理しており、ある処理部がその演算処理を終了した後で、別の処理部が演算している処理を補助する例を説明する。例えば、第１処理部２０３がデータの先頭から処理を実行している最中に、第２処理部２０５が処理を終えると、画像データの途中位置から処理を開始する。第２処理部２０５に未処理分のデータを分担させることで第１処理部２０３を補助することができる。
【００３３】
図６のフローチャートを参照して、本実施形態に係る処理例を説明する。なお、図６にてＳ６０１−Ｓ６０２、Ｓ６０８−Ｓ６１０に示す各処理は、図５のＳ５０１−Ｓ５０２、Ｓ５０７−Ｓ５０９の処理とそれぞれ同様である。よって、それらの処理の説明は省略し、以下では主にＳ６０３ないしＳ６０７を説明する。
Ｓ６０２でMODE信号の値が１の場合、Ｓ６０３に処理を進める。制御部２０４は、一方の処理部、ここでは第１処理部２０３により処理中である１画面の画像データを、第２処理部２０５により並列処理するため、第２読み出し部２０１に対し読み出しアドレスと読み出し方向を設定する。また、制御部２０４は、第２書き込み部２０８の書き込みアドレスと書き込み方向を設定する（Ｓ６０３）。ここでは、制御部２０４は、その時点での第１処理部２０３によるＴＣ１よりも後で、第１処理部２０３が処理している１画面の画像データの先頭から所定値だけ後の位置（オフセット値）を読み出し開始位置として設定する。更に、制御部２０４は、読み出し方向を、処理中の１画面の画像データの後方に向かって順方向に読み出すように設定する。また、制御部２０４は、第２読み出し部２０１で設定したオフセット値を、第１書き込み部２０７の書き込み開始位置に加算した値を書き込み開始アドレスとして設定し、第２書き込み部２０８に出力する。
【００３４】
次に制御部２０４は、第１処理部２０３と第２処理部２０５によりそれぞれ画像データを並列処理させる（Ｓ６０４）。次に、制御部２０４は、第１処理部２０３からのＴＣ１と、第２処理部２０５の読み出し開始位置の設定値を比較する（Ｓ６０５）。両者が一致しないと判定された場合、Ｓ６０４に戻って処理が繰り返される。また、両者が一致したことが判定された場合、制御部２０４は、第１処理部２０３へ処理終了信号を送信し、第１処理部２０３の演算処理（先行処理）を停止させると共に、その旨をＣＰＵ１０６に知らせる（Ｓ６０６）。第１処理部２０３の処理が終了すると、MODE信号の値が０に設定される。次に制御部２０４は、第２処理部２０５の処理が完了しているか否かを判定する（Ｓ６０７）。第２処理部２０５の処理が完了していない場合、Ｓ６０８に処理を進め、演算処理が繰り返し実行される。また、Ｓ６０７で第２処理部２０５の処理が完了していると判定された場合、一連の処理を終了する。
【００３５】
第４実施形態では、MODE信号の値の設定によって並列処理Ｂを行っている期間が判別できる。よって、ある処理部がデータの先頭から処理している最中であっても、別の処理部がデータの中段から処理していくことができる。中段から処理を行う処理部の開始位置と、データを先頭から処理している先行処理部のＴＣ値とを比較することで、制御部は処理経過を把握できる。先行処理部のＴＣ値が、中段から処理を行う処理部の開始位置に一致した時点で、並列処理Ｂが終了する。このように、処理の完了タイミングを、中段から演算処理を行う後発処理部に入力して処理するデータの開始位置に設定できる。
【００３６】
以上のように、第４実施形態によれば、例えば、第１処理部が未処理のデータ部分を第２処理部に分担させることができる。すなわち、複数の演算処理部のうち何れかが処理しきれないで抱えているデータを、別の演算処理部が途中から補助することで並列処理を実行できる。
尚、前記した各実施形態では、同様の処理能力をもつ演算処理部が２つの場合を例示して説明したが、演算処理部の数は３以上でも構わない。また、制御部２０４ではＴＣ値を比較する場合を説明したが、これに限らず比較対象として画像サイズやデータ量などを使用してもよい。
【符号の説明】
【００３７】
２００  第１読み出し部
２０１  第２読み出し部
２０３  第１処理部
２０４  制御部
２０５  第２処理部
２０７  第１書き込み部
２０８  第２書き込み部
【図１】
2014157411.tif 000003
【図２】
2014157411.tif 000004
【図３】
2014157411.tif 000005
【図４】
2014157411.tif 000006
【図５】
2014157411.tif 000007
【図６】
2014157411.tif 000008
【図７】
2014157411.tif 000009
【図８】
2014157411.tif 000010