(57)【要約】【課題】複数の処理を実行するシステムにおいて、ハンドシェークや処理の待ち時間によるシステム性能の低下を低減することができる複数処理実行方法を提供する。【解決手段】データを格納する外部メモリと、複数の処理部と複数のチャンネルを有するＤＭＡ部とを具備したプロセッサと、プロセッサに具備されたそれぞれの処理部による処理の実行を指示するホストＣＰＵと、を備えたデータ処理システムにおける複数処理実行方法であって、ホストＣＰＵによって実行が指示された処理部に対応するデータの読み出しが全て完了した後に、次のデータの読み出しを開始させるリードＤＭＡステップと、次のデータの読み出しと並行してホストＣＰＵによって実行が指示された処理部に処理を実行させる複数処理実行ステップと、ホストＣＰＵによって実行が指示された処理部が処理を完了した結果データの書き込みを開始させるライトＤＭＡステップと、を含む。【選択図】図３
2013175074.tif 000002
【特許請求の範囲】
【請求項１】
データを格納する外部メモリと、
前記データに対して処理を施す複数の処理部と、複数の前記処理部のそれぞれに対応した複数のチャンネルを有し、それぞれのチャンネル毎に前記外部メモリにアクセスするＤＭＡ部と、を具備したプロセッサと、
前記プロセッサに具備されたそれぞれの前記処理部による処理の実行を指示するホストＣＰＵと、
を備えたデータ処理システムにおける複数処理実行方法であって、
前記ホストＣＰＵによって実行が指示された前記処理部に対応する前記ＤＭＡ部のデータ読み出し用チャンネルによって、前記外部メモリからの前記データの読み出しが全て完了した後に、該データ読み出し用チャンネルに、前記外部メモリからの次の前記データの読み出しを開始させるリードＤＭＡステップと、
前記データ読み出し用チャンネルによる前記外部メモリからの次の前記データの読み出しと並行して、前記ホストＣＰＵによって実行が指示された前記処理部に、前記外部メモリからの読み出しが完了した前記データに対する処理を実行させる複数処理実行ステップと、
前記ホストＣＰＵによって実行が指示された前記処理部に対応する前記ＤＭＡ部のデータ書き込み用チャンネルに、該処理部が処理を完了した結果データの前記外部メモリへの書き込みを開始させるライトＤＭＡステップと、
を含む、
ことを特徴とする複数処理実行方法。
【請求項２】
前記リードＤＭＡステップは、
前記処理部が前記データに対する処理を実行するか否かの周期を表す、それぞれの前記処理部に対応した実行周期に基づいて、それぞれの前記処理部に対応する前記データ読み出し用チャンネルに、次の前記データの読み出しを開始させるか否かを判定するリードＤＭＡ実行判定ステップ、
を含み、
次の前記データの読み出しを開始させると判定した前記データ読み出し用チャンネルに、次の前記データの読み出しを開始させ、
前記データの読み出しを開始させた前記データ読み出し用チャンネルによる前記外部メモリからの次の前記データの読み出しが全て完了した後に、次のリードＤＭＡ実行判定ステップを実行し、
前記複数処理実行ステップは、
前記リードＤＭＡ実行判定ステップによって次の前記データの読み出しを開始させるか否かを判定する前に前記データの読み出しを開始させた前記データ読み出し用チャンネルに対応する前記処理部に、前記外部メモリからの読み出しが完了した前記データに対する処理を実行させ、
前記ライトＤＭＡステップは、
前記データに対する処理を実行した前記処理部に対応する前記データ書き込み用チャンネルに、該処理部が処理を完了した前記結果データの前記外部メモリへの書き込みを開始させる、
ことを特徴とする請求項１に記載の複数処理実行方法。
【請求項３】
前記リードＤＭＡ実行判定ステップは、
前記データ読み出し用チャンネルによって前記データの読み出しを実行するか否かを表す、それぞれの前記データ読み出し用チャンネルに対応したＤＭＡ実行状態と、
前記処理部によって前記データに対する処理を実行するか否かを表す、それぞれの前記処理部に対応した処理実行状態と、
を設定し、
次の前記データの読み出しを開始させるか否かを判定する前に、
現在の前記ＤＭＡ実行状態を、前記処理実行状態にコピーすることによって、前記データの読み出しを実行する前記データ読み出し用チャンネルに対応した前記処理部による前記データに対する処理を実行する状態とし、
次の前記データの読み出しを開始させるか否かの判定において、
前記実行周期が、前記処理部が前記データに対する処理を実行するタイミングであるときに、次の前記データの読み出しを開始させると判定し、次の前記データの読み出しを開始させると判定した前記データ読み出し用チャンネルに対応する前記ＤＭＡ実行状態を、前記データの読み出しを実行する状態に更新し、
前記実行周期が、前記処理部が前記データに対する処理を実行しないタイミングであるときに、次の前記データの読み出しを開始させないと判定し、次の前記データの読み出しを開始させないと判定した前記データ読み出し用チャンネルに対応する前記ＤＭＡ実行状態を、前記データの読み出しを実行しない状態に更新し、
次の前記データの読み出しを開始させるか否かの判定をした後に、
前記ＤＭＡ実行状態が、前記データの読み出しを実行する状態である前記データ読み出し用チャンネルに、次の前記データの読み出しを開始させ、
前記ＤＭＡ実行状態が、前記データの読み出しを実行する状態である前記データ読み出し用チャンネルによる前記外部メモリからの次の前記データの読み出しが全て完了した後に、次の該リードＤＭＡ実行判定ステップを実行し、
前記複数処理実行ステップは、
前記処理実行状態が、前記データに対する処理を実行する状態である前記処理部に、前記外部メモリからの読み出しが完了した前記データに対する処理を実行させ、
前記ライトＤＭＡステップは、
前記処理実行状態が、前記データに対する処理を実行する状態である前記処理部に対応する前記データ書き込み用チャンネルに、該処理部が処理を完了した前記結果データの前記外部メモリへの書き込みを開始させる、
ことを特徴とする請求項２に記載の複数処理実行方法。
【請求項４】
該複数処理実行方法は、さらに、
予め計測した前記処理部が前記データに対する処理を実行する際に要する処理時間と、該処理部に対応した前記データ読み出し用チャンネルによって前記外部メモリからの前記データを読み出す際に要するデータ転送時間との差に基づいて、前記ホストＣＰＵが前記プロセッサに実行を指示する前記処理部の組み合わせを決定する実行処理決定ステップと、
前記ホストＣＰＵによって実行が指示された前記処理部の組み合わせに応じて、組み合わされた該処理部のそれぞれが処理を実行する際に要する、該処理部に対応する前記データ読み出し用チャンネルによって読み出した前記データを一時的に記憶する内蔵メモリの容量を動的に確保するバッファ確保ステップと、
を含み、
前記複数処理実行ステップは、
前記実行処理決定ステップによって組み合わされ、前記ホストＣＰＵによって実行が指示されたそれぞれの前記処理部に、対応する前記データ読み出し用チャンネルによって前記外部メモリからの読み出しが完了したそれぞれの前記データに対する処理を実行させ、
前記ライトＤＭＡステップは、
前記実行処理決定ステップによって組み合わされ、前記ホストＣＰＵによって実行が指示されたそれぞれの前記処理部に対応する前記データ書き込み用チャンネルに、それぞれの該処理部が処理を完了したそれぞれの前記結果データの前記外部メモリへの書き込みを開始させる、
ことを特徴とする請求項１に記載の複数処理実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数処理実行方法に関する。特に、自身が割り込み制御機構を持たない、ホストＣＰＵに制御されるプロセッサにおける複数処理の実行方法に関する。
【背景技術】
【０００２】
一般的に、予め定めた処理を実行する際に、ホストＣＰＵでは性能が足りず、所望のシステム性能を満足できない場合、補助的に処理性能が高いプロセッサを用いて当該処理を行うことで、システム性能を満足させる方法がとられることがある。このような方法において、対象となる予め定めた処理が複数ある場合には、ホストＣＰＵが実行する処理の優先度を決定し、プロセッサに対して最も優先度が高い処理を実行するよう指示を与える。そして、プロセッサは、指示された処理を完了したときに、ホストＣＰＵに処理が完了したことを通知する。ホストＣＰＵは、プロセッサから処理が完了した通知を受け取ると、プロセッサに対して次に優先度が高い処理を実行するよう指示を与える。このようなホストＣＰＵとプロセッサとのハンドシェークを繰り返しながら、システムにおいて予め定められた複数の処理を実行する（非特許文献１参照）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】岸田昌巳、“サービス・コールの概要（１）――タスクの生成と終了”、Ｉｎｔｅｒｆａｃｅ増刊  μＩＴＲＯＮ準拠ＴＯＰＰＥＲＳの実践活用  インターフェース編集部／編  第１５章、ＣＱ出版社、ｐ．１８１〜１９８、２００７年３月１日発行
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術を用いた方法では、システムにおいて実行する処理の数分だけ、ホストＣＰＵとプロセッサとの間のハンドシェークが発生する。一般的に、ハンドシェークは、割り込み処理で行われるため、ホストＣＰＵは、プロセッサから処理が完了した割り込みの通知を受け取ると、ハンドシェークの処理を行うために現在実行中の処理をそのつど中断しなければならない。このため、ハンドシェークに要する処理時間分だけシステム全体の性能が低下してしまう。
【０００５】
また、プロセッサが処理を行う場合、プロセッサは、演算（処理）に必要なデータを取得（転送）し、取得したデータをプロセッサ内に備えた内蔵メモリに一時的に記憶する。そして、プロセッサは、内蔵メモリに記憶しているデータを用いてホストＣＰＵから指示された演算を実行し、演算後のデータを出力（転送）する。しかし、プロセッサ内に備える内蔵メモリの容量は、あまり多くないことが想定される。これは、内蔵メモリの容量を多くすることによって、プロセッサの回路規模の増大を防ぐためである。このため、プロセッサは、演算に使用するデータ、または演算した後のデータを、複数回に分けて転送することになる。このとき、プロセッサで実行する処理の内容によっては、例えば、実際に演算を実行する時間よりも、演算に使用するデータを転送する時間の方が、今回実行する処理全体の時間に対して支配的である場合がある。このような場合には、演算に使用するデータの転送が完了するまでの間、プロセッサにおける実際の演算を行うことができず、プロセッサの演算が非効率的になってしまう。
【０００６】
また逆に、プロセッサで実行する処理の内容によっては、例えば、演算に使用するデータを転送する時間よりも、実際に演算を実行する時間の方が、今回実行する処理全体の時間に対して支配的である場合もある。このような場合には、プロセッサにおける実際の演算が完了するまでの間、次に演算に使用するデータの転送を行うことができず、プロセッサのデータ転送が非効率的になってしまう。
【０００７】
以下に、従来の技術を用いた方法によるハンドシェークやデータの転送と、システムの処理時間との関係について説明する。図８は、従来のシステムにおけるハンドシェークやデータの転送と、システムの処理時間との関係の一例を模式的に示した図である。図８には、処理Ａおよび処理Ｂの２つの処理を行うシステムの場合を示している。図８において、処理Ａは、データの転送時間よりも演算時間の方が長い処理であり、処理Ｂは、データの転送時間よりも演算時間の方が短い処理である。また、処理Ａの方が、処理Ｂよりも優先度が高い処理である。従って、ホストＣＰＵは、最初に処理Ａをプロセッサに実行させ、処理Ａが完了した後に処理Ｂをプロセッサに実行させる。また、図８に示したそれぞれの処理では、処理に使用するデータを３回に分けて取得し、取得したデータに基づいてそれぞれの処理の演算を実行する。なお、図８においては、演算後のデータの転送（出力）は省略している。
【０００８】
まず、システムにおける予め定めた処理を開始する処理開始信号がホストＣＰＵに入力されると、ホストＣＰＵは、プロセッサに対して処理Ａを実行するよう指示を与える。プロセッサは、処理Ａの実行開始の指示がホストＣＰＵから入力されると、処理Ａに使用するデータの転送（取得）を開始する。そして、プロセッサは、１回目の処理Ａの演算を実行することができるだけのデータ転送が完了すると、転送されたデータに基づいて１回目の処理Ａの演算を開始する。
【０００９】
この処理Ａは、上述したように、データの転送時間よりも演算時間の方が長い処理である。このため、例えば、１回目の処理Ａの演算が完了していないことによって、２回目のデータ転送に引き続いて３回目のデータ転送を開始することができない場合がある。この場合には、図８に示したように、１回目の処理Ａの演算が完了した後に、３回目のデータ転送を開始することになる。すなわち、処理Ａでは、１回目の処理Ａの演算が完了するまで、３回目のデータ転送を開始することができず、データ転送の待ち時間（転送待ち時間）が発生してしまう。
【００１０】
その後、プロセッサは、処理Ａの全てのデータ転送と演算とが完了すると、処理Ａが完了した通知を、ホストＣＰＵに出力する。
【００１１】
続いて、ホストＣＰＵは、プロセッサから処理Ａが完了した通知を受け取ると、ハンドシェークの処理を行い、その後、プロセッサに対して次の処理Ｂを実行するよう指示を与える。プロセッサは、処理Ｂの実行開始の指示がホストＣＰＵから入力されると、処理Ｂに使用するデータの転送（取得）を開始する。そして、プロセッサは、１回目の処理Ｂの演算を実行することができるだけのデータ転送が完了すると、転送されたデータに基づいて１回目の処理Ｂの演算を開始する。
【００１２】
この処理Ｂは、上述したように、データの転送時間よりも演算時間の方が短い処理である。このため、例えば、１回目の処理Ｂの演算が完了した後、２回目の処理Ｂの演算を実行することができるだけのデータ転送が完了していない場合がある。この場合には、図８に示したように、２回目の処理Ｂの演算を実行することができるだけのデータ転送が完了した後に、２回目の処理Ｂの演算を開始することになる。すなわち、処理Ｂでは、２回目のデータ転送が完了するまで、２回目の処理Ｂの演算を開始することができず、演算の待ち時間（演算待ち時間）が発生してしまう。
【００１３】
その後、プロセッサは、処理Ｂの全てのデータ転送と演算とが完了すると、処理Ｂが完了した通知を、ホストＣＰＵに出力する。ホストＣＰＵは、プロセッサから処理Ｂが完了した通知を受け取ると、システムにおける予め定めた処理を完了する。
【００１４】
このように、従来の技術を用いた方法によってシステムを構成した場合には、ハンドシェークや待ち時間のような、実際にデータに対する処理を行っていない時間が存在する。この実際にデータに対する処理を行っていない時間は、システムの性能を低下させる要因となってしまう、という問題がある。
【００１５】
本発明は、上記の課題認識に基づいてなされたものであり、複数の処理を実行するシステムにおいて、ハンドシェークが頻発することや、それぞれの処理内での待ち時間が発生することによるシステム性能の低下を低減することができる複数処理実行方法を提供することを目的としている。
【課題を解決するための手段】
【００１６】
上記の課題を解決するため、本発明の複数処理実行方法は、データを格納する外部メモリと、前記データに対して処理を施す複数の処理部と、複数の前記処理部のそれぞれに対応した複数のチャンネルを有し、それぞれのチャンネル毎に前記外部メモリにアクセスするＤＭＡ部と、を具備したプロセッサと、前記プロセッサに具備されたそれぞれの前記処理部による処理の実行を指示するホストＣＰＵと、を備えたデータ処理システムにおける複数処理実行方法であって、前記ホストＣＰＵによって実行が指示された前記処理部に対応する前記ＤＭＡ部のデータ読み出し用チャンネルによって、前記外部メモリからの前記データの読み出しが全て完了した後に、該データ読み出し用チャンネルに、前記外部メモリからの次の前記データの読み出しを開始させるリードＤＭＡステップと、前記データ読み出し用チャンネルによる前記外部メモリからの次の前記データの読み出しと並行して、前記ホストＣＰＵによって実行が指示された前記処理部に、前記外部メモリからの読み出しが完了した前記データに対する処理を実行させる複数処理実行ステップと、前記ホストＣＰＵによって実行が指示された前記処理部に対応する前記ＤＭＡ部のデータ書き込み用チャンネルに、該処理部が処理を完了した結果データの前記外部メモリへの書き込みを開始させるライトＤＭＡステップと、を含む、ことを特徴とする。
【００１７】
また、本発明の前記リードＤＭＡステップは、前記処理部が前記データに対する処理を実行するか否かの周期を表す、それぞれの前記処理部に対応した実行周期に基づいて、それぞれの前記処理部に対応する前記データ読み出し用チャンネルに、次の前記データの読み出しを開始させるか否かを判定するリードＤＭＡ実行判定ステップ、を含み、次の前記データの読み出しを開始させると判定した前記データ読み出し用チャンネルに、次の前記データの読み出しを開始させ、前記データの読み出しを開始させた前記データ読み出し用チャンネルによる前記外部メモリからの次の前記データの読み出しが全て完了した後に、次のリードＤＭＡ実行判定ステップを実行し、前記複数処理実行ステップは、前記リードＤＭＡ実行判定ステップによって次の前記データの読み出しを開始させるか否かを判定する前に前記データの読み出しを開始させた前記データ読み出し用チャンネルに対応する前記処理部に、前記外部メモリからの読み出しが完了した前記データに対する処理を実行させ、前記ライトＤＭＡステップは、前記データに対する処理を実行した前記処理部に対応する前記データ書き込み用チャンネルに、該処理部が処理を完了した前記結果データの前記外部メモリへの書き込みを開始させる、ことを特徴とする。
【００１８】
また、本発明の前記リードＤＭＡ実行判定ステップは、前記データ読み出し用チャンネルによって前記データの読み出しを実行するか否かを表す、それぞれの前記データ読み出し用チャンネルに対応したＤＭＡ実行状態と、前記処理部によって前記データに対する処理を実行するか否かを表す、それぞれの前記処理部に対応した処理実行状態と、を設定し、次の前記データの読み出しを開始させるか否かを判定する前に、現在の前記ＤＭＡ実行状態を、前記処理実行状態にコピーすることによって、前記データの読み出しを実行する前記データ読み出し用チャンネルに対応した前記処理部による前記データに対する処理を実行する状態とし、次の前記データの読み出しを開始させるか否かの判定において、前記実行周期が、前記処理部が前記データに対する処理を実行するタイミングであるときに、次の前記データの読み出しを開始させると判定し、次の前記データの読み出しを開始させると判定した前記データ読み出し用チャンネルに対応する前記ＤＭＡ実行状態を、前記データの読み出しを実行する状態に更新し、前記実行周期が、前記処理部が前記データに対する処理を実行しないタイミングであるときに、次の前記データの読み出しを開始させないと判定し、次の前記データの読み出しを開始させないと判定した前記データ読み出し用チャンネルに対応する前記ＤＭＡ実行状態を、前記データの読み出しを実行しない状態に更新し、次の前記データの読み出しを開始させるか否かの判定をした後に、前記ＤＭＡ実行状態が、前記データの読み出しを実行する状態である前記データ読み出し用チャンネルに、次の前記データの読み出しを開始させ、前記ＤＭＡ実行状態が、前記データの読み出しを実行する状態である前記データ読み出し用チャンネルによる前記外部メモリからの次の前記データの読み出しが全て完了した後に、次の該リードＤＭＡ実行判定ステップを実行し、前記複数処理実行ステップは、前記処理実行状態が、前記データに対する処理を実行する状態である前記処理部に、前記外部メモリからの読み出しが完了した前記データに対する処理を実行させ、前記ライトＤＭＡステップは、前記処理実行状態が、前記データに対する処理を実行する状態である前記処理部に対応する前記データ書き込み用チャンネルに、該処理部が処理を完了した前記結果データの前記外部メモリへの書き込みを開始させる、ことを特徴とする。
【００１９】
また、本発明の複数処理実行方法は、さらに、予め計測した前記処理部が前記データに対する処理を実行する際に要する処理時間と、該処理部に対応した前記データ読み出し用チャンネルによって前記外部メモリからの前記データを読み出す際に要するデータ転送時間との差に基づいて、前記ホストＣＰＵが前記プロセッサに実行を指示する前記処理部の組み合わせを決定する実行処理決定ステップと、前記ホストＣＰＵによって実行が指示された前記処理部の組み合わせに応じて、組み合わされた該処理部のそれぞれが処理を実行する際に要する、該処理部に対応する前記データ読み出し用チャンネルによって読み出した前記データを一時的に記憶する内蔵メモリの容量を動的に確保するバッファ確保ステップと、を含み、前記複数処理実行ステップは、前記実行処理決定ステップによって組み合わされ、前記ホストＣＰＵによって実行が指示されたそれぞれの前記処理部に、対応する前記データ読み出し用チャンネルによって前記外部メモリからの読み出しが完了したそれぞれの前記データに対する処理を実行させ、前記ライトＤＭＡステップは、前記実行処理決定ステップによって組み合わされ、前記ホストＣＰＵによって実行が指示されたそれぞれの前記処理部に対応する前記データ書き込み用チャンネルに、それぞれの該処理部が処理を完了したそれぞれの前記結果データの前記外部メモリへの書き込みを開始させる、ことを特徴とする。
【発明の効果】
【００２０】
本発明によれば、複数の処理を実行するシステムにおいて、ハンドシェークが頻発することや、それぞれの処理内での待ち時間が発生することによるシステム性能の低下を低減することができるという効果が得られる。
【図面の簡単な説明】
【００２１】
【図１】本発明の第１の実施形態における複数処理実行方法を適用した撮像装置の概略構成を示したブロック図である。
【図２】本第１の実施形態の複数処理実行方法の実行に係わる撮像装置における概略構成を示したブロック図である。
【図３】本第１の実施形態における複数処理実行方法の処理手順を示したフローチャートである。
【図４】本第１の実施形態の複数処理実行方法におけるハンドシェークやデータの転送と、システムの処理時間との関係の一例を模式的に示した図である。
【図５】本発明の第２実施形態の複数処理実行方法を適用した撮像装置におけるデータの分割方法の一例を模式的に示した図である。
【図６】本第２の実施形態における複数処理実行方法の処理手順を示したフローチャートである。
【図７】本発明の第３の実施形態における複数処理実行方法の処理手順を示したフローチャートである。
【図８】従来のシステムにおけるハンドシェークやデータの転送と、システムの処理時間との関係の一例を模式的に示した図である。
【発明を実施するための形態】
【００２２】
＜第１の実施形態＞
以下、本発明の実施形態について、図面を参照して説明する。本第１の実施形態においては、例えば、デジタルスチルカメラなどの撮像装置に、本第１の実施形態の複数処理実行方法を適用した場合の一例について説明する。図１は、本第１の実施形態における複数処理実行方法を適用した撮像装置の概略構成を示したブロック図である。図１に示した撮像装置１０は、レンズ１と、イメージャ２と、キャプチャ部３と、ＤＲＡＭ４と、画像処理プロセッサ５と、ホストＣＰＵ６と、画像処理部７と、記録部８と、メモリカード９と、を備えている。
【００２３】
イメージャ２は、レンズ１によって結像された被写体の光学像を光電変換する固体撮像素子を備え、被写体光に応じた画像信号をキャプチャ部３に出力する。
キャプチャ部３は、イメージャ２から出力された画像信号をキャプチャし、キャプチャした画像信号を、入力画像データとしてＤＲＡＭ４に格納する。また、キャプチャ部３は、入力画像データのＤＲＡＭ４への格納が完了したときに、イメージャ２から出力された画像信号のキャプチャが完了したことを表す割り込み信号（以下、「キャプチャ完了信号」という）を、ホストＣＰＵ６に出力する。
【００２４】
ホストＣＰＵ６は、撮像装置１０内の各構成要素をそれぞれ制御することによって、撮像装置１０全体の制御を行う。また、ホストＣＰＵ６は、キャプチャ部３からキャプチャ完了信号が入力された後、画像処理プロセッサ５に予め定めたタスク（画像処理）を実行させるための指示（以下、「実行指示」という）を、画像処理プロセッサ５に出力する。また、ホストＣＰＵ６は、画像処理プロセッサ５から画像処理が完了したことを表す割り込み信号（以下、「終了割り込み信号」という）が入力された後、次に画像処理プロセッサ５に実行させる画像処理がある場合には、次のタスク（画像処理）を実行させるための実行指示を、画像処理プロセッサ５に出力する。
【００２５】
画像処理プロセッサ５は、ホストＣＰＵ６から入力された実行指示に応じて、今回実行するタスク（画像処理）に必要な画像データ（例えば、入力画像データ）をＤＲＡＭ４から読み出し、読み出した画像データに対してホストＣＰＵ６から指示された画像処理を施す。そして、画像処理プロセッサ５は、画像処理を施した後の画像処理結果を、再びＤＲＡＭ４に書き戻す。また、画像処理プロセッサ５は、画像処理結果のＤＲＡＭ４への書き戻しが完了したときに、画像処理が完了したことを表す割り込み信号（以下、「終了割り込み信号」という）を、ホストＣＰＵ６に出力する。
【００２６】
なお、画像処理プロセッサ５は、ＤＲＡＭ４へのアクセスにおいて、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）を用いる。すなわち、画像処理プロセッサ５によるＤＲＡＭ４からの画像データの読み出しと、ＤＲＡＭ４への画像処理結果の書き戻しとは、ＤＭＡで行われる。また、画像処理プロセッサ５は、複数種類（例えば、Ｎ種類）の異なる画像処理を、画像データに対して同時期に（並行して）施すことができる。そのため、画像処理プロセッサ５は、それぞれの画像処理に応じた画像データを、ＤＭＡによってＤＲＡＭ４から同時期に（並行して）読み出すことができ、それぞれの画像処理結果をＤＭＡによってＤＲＡＭ４に同時期に（並行して）書き戻すことができる。なお、画像処理プロセッサ５の構成、およびホストＣＰＵ６と画像処理プロセッサ５とによる画像処理の実行手順に関する詳細な説明は、後述する。
【００２７】
画像処理部７は、ホストＣＰＵ６から入力された実行指示に応じて、ＤＲＡＭ４に格納された画像処理結果を読み出し、読み出した画像処理結果に対して各種の画像処理を施す。そして、画像処理部７は、画像処理を施した後の画像処理結果を、出力画像データとして記録部８に出力する。
記録部８は、画像処理部７から入力された出力画像データに対して、メモリカード９に格納するための圧縮処理などを施して、記録用の画像データを生成する。そして、記録部８は、生成した記録用の画像データをメモリカード９に書き込む。
【００２８】
次に、撮像装置１０において、本第１の実施形態の複数処理実行方法を実行するための構成について説明する。図２は、本第１の実施形態の複数処理実行方法の実行に係わる撮像装置１０における概略構成を示したブロック図である。図２に示したように、本第１の実施形態の複数処理実行方法の実行に係わる撮像装置１０の構成要素は、ＤＲＡＭ４と、画像処理プロセッサ５と、ホストＣＰＵ６とである。
【００２９】
また、画像処理プロセッサ５は、上述したように、ＤＭＡによるＤＲＡＭ４へのアクセス、およびＤＲＡＭ４から読み出した画像データに対する画像処理を、同時期に（並行して）行うことができる。このため、画像処理プロセッサ５は、図２に示したように、ＤＭＡによってＤＲＡＭ４にアクセスする複数チャンネルのＤＭＡ部５１と、ＤＭＡ部５１がそれぞれのチャンネルでＤＲＡＭ４から読み出したそれぞれの画像データに対して、それぞれの画像処理を施す複数種類（例えば、Ｎ種類）の画像処理演算部５２とを備えている。
【００３０】
ＤＭＡ部５１は、それぞれのチャンネル毎に、ＤＭＡによるＤＲＡＭ４へのアクセスを行う。ＤＭＡ部５１は、ＤＲＡＭ４に格納されている画像データを読み出す際、ＤＭＡによって読み出した画像データを、画像処理プロセッサ５の内部に備える内蔵メモリ（不図示）に一時記憶する。また、ＤＭＡ部５１は、画像処理を施した後の画像処理結果をＤＲＡＭ４に書き戻す際、内蔵メモリに一時記憶されている画像処理結果を、ＤＭＡによってＤＲＡＭ４に格納する。
画像処理演算部５２のそれぞれは、内蔵メモリに一時記憶されている画像データに対して画像処理を施し、画像処理を施した後の画像処理結果を、再び内蔵メモリに一時記憶する。
【００３１】
このような構成によって、画像処理プロセッサ５は、ホストＣＰＵ６から入力された実行指示に応じて、ＤＭＡ部５１が、対応するチャンネルのＤＭＡによってＤＲＡＭ４から画像データを読み出し、対応する画像処理演算部５２が、読み出した画像データに対して画像処理を施す。そして、画像処理プロセッサ５は、ＤＭＡ部５１が、対応するチャンネルのＤＭＡによって画像処理を施した後の画像処理結果をＤＲＡＭ４に書き戻し、画像処理が完了したことを表す終了割り込み信号をホストＣＰＵ６に出力する。
【００３２】
次に、撮像装置１０における本第１の実施形態の複数処理実行方法の処理手順について説明する。図３は、本第１の実施形態における複数処理実行方法の処理手順を示したフローチャートである。図３に示したフローチャートでは、本第１の実施形態の複数処理実行方法におけるホストＣＰＵ６および画像処理プロセッサ５の動作を示している。なお、画像処理プロセッサ５は、上述したように、複数種類（例えば、Ｎ種類）の異なる画像処理を同時期に（並行して）施すことができる。以下の説明においては、入力画像データに対して２種類の異なる画像処理（処理Ａおよび処理Ｂ）を、同時期に（並行して）施す場合の処理手順について説明する。
【００３３】
撮像装置１０の動作が開始されると、ホストＣＰＵ６は、複数処理実行の処理を開始する。複数処理実行の処理において、ホストＣＰＵ６は、まず、割り込み処理を実行する（ステップＳ１）。ステップＳ１の割り込み処理では、ホストＣＰＵ６が、撮像装置１０内の各構成要素からの割り込み信号を受け付ける。その後、キャプチャ部３は、イメージャ２から出力された画像信号を１フレーム分キャプチャした入力画像データをＤＲＡＭ４に格納すると、ホストＣＰＵ６にキャプチャ完了信号を出力する。
【００３４】
ホストＣＰＵ６が、撮像装置１０内の各構成要素からの割り込み信号を受け付けると、受け付けた割り込みの要因を判定する（ステップＳ２）。ステップＳ２において、割り込みの要因がキャプチャ部３からのキャプチャ完了信号である場合には、ホストＣＰＵ６は、画像処理プロセッサ５を起動する（ステップＳ３）。ホストＣＰＵ６が画像処理プロセッサ５を起動する際、ホストＣＰＵ６は、画像処理プロセッサ５に実行指示を出力するとともに、今回実行する２種類の画像処理がどの画像処理であるか、すなわち、複数種類（例えば、Ｎ種類）備えた画像処理演算部５２の内、どの画像処理演算部５２の演算を実行するかを表す情報を画像処理プロセッサ５に出力する。
【００３５】
画像処理プロセッサ５は、ホストＣＰＵ６によって起動が指示される、すなわち、ホストＣＰＵ６から実行指示と実行する画像処理の情報が入力されると、指示された２種類の画像処理の実行を開始する。なお、画像処理プロセッサ５は、小容量の内蔵メモリしか持たないため、キャプチャ部３が１フレーム分キャプチャした入力画像データを、複数個（例えば、Ｍ個）に分割し、分割した入力画像データのそれぞれに対する画像処理を、分割した数分（例えば、Ｍ回）だけ繰り返すことによって、１フレーム分の画像処理を完了する。
【００３６】
まず、画像処理プロセッサ５は、２種類の画像処理に必要な、分割した最初（１個目）の入力画像データ（１／Ｍの入力画像データ）をＤＲＡＭ４から読み出すためのリードＤＭＡ（１回目のリードＤＭＡ）を起動する（ステップＳ５）。次に、画像処理プロセッサ５は、分割した処理の１回目のループにおいて、１回目のリードＤＭＡの終了を待つ（ステップＳ６）。１回目のリードＤＭＡが終了すると、画像処理プロセッサ５は、次（２個目）の入力画像データ（１／Ｍの入力画像データ）を事前にＤＲＡＭ４から読み出すためのリードＤＭＡ（２回目のリードＤＭＡ）を起動する（ステップＳ７）。
【００３７】
画像処理プロセッサ５は、２回目のリードＤＭＡによって２個目の入力画像データをＤＲＡＭ４から読み出している間に、１個目の入力画像データに対する２種類の画像処理（処理Ａおよび処理Ｂの演算）を、同時期に（並行して）実行する（ステップＳ８およびステップＳ９）。なお、図３に示したフローチャートでは、処理Ａの演算（ステップＳ８）と処理Ｂの演算（ステップＳ９）とを、順次実行する場合の一例を示している。
【００３８】
その後、２種類の画像処理が完了すると、画像処理プロセッサ５は、今回の処理のループが１回目のループであるか否かを判定する（ステップＳ１０）。ステップＳ１０において、今回の処理のループが１回目のループである場合には、画像処理プロセッサ５は、１個目の入力画像データ（１／Ｍの入力画像データ）に対して画像処理を施した後のそれぞれの１個目の画像処理結果をＤＲＡＭ４に書き戻すためのライトＤＭＡ（１回目のライトＤＭＡ）を起動する（ステップＳ１２）。
【００３９】
なお、図３に示したフローチャートでは、処理Ａの演算（ステップＳ８）と処理Ｂの演算（ステップＳ９）とを順次実行し、２種類の画像処理が完了した後にライトＤＭＡを起動する（ステップＳ１２）場合について説明した。しかし、画像処理を実行し、画像処理を施した後の画像処理結果をＤＲＡＭ４に書き戻す手順は、図３に示したステップＳ８〜ステップＳ１２までの処理手順のみに限定されるものではない。例えば、ライトＤＭＡを起動させるための判断の処理（ステップＳ１０）とライトＤＭＡを起動させる処理（ステップＳ１２）との負荷が小さく、ライトＤＭＡによる画像処理結果のＤＲＡＭ４への書き戻しに多くの時間を要しない場合もある。この場合には、処理Ａの演算（ステップＳ８）、および処理Ｂの演算（ステップＳ９）が完了する毎に、ステップＳ１０〜ステップＳ１２までの処理を行う、すなわち、それぞれの画像処理が完了する毎に、画像処理を施した後の画像処理結果をＤＲＡＭ４に書き戻す手順にすることもできる。
【００４０】
そして、画像処理プロセッサ５は、分割した処理の２回目のループにおいて、２回目のリードＤＭＡの終了を待つ（ステップＳ６）。２回目のリードＤＭＡが終了すると、画像処理プロセッサ５は、次（３個目）の入力画像データ（１／Ｍの入力画像データ）を事前にＤＲＡＭ４から読み出すためのリードＤＭＡ（３回目のリードＤＭＡ）を起動する（ステップＳ７）。
【００４１】
画像処理プロセッサ５は、３回目のリードＤＭＡによって３個目の入力画像データをＤＲＡＭ４から読み出している間に、２個目の入力画像データに対する２種類の画像処理（処理Ａおよび処理Ｂの演算）を、同時期に（並行して）実行する（ステップＳ８およびステップＳ９）。
【００４２】
その後、２種類の画像処理が完了すると、画像処理プロセッサ５は、今回の処理のループが１回目のループであるか否かを判定する（ステップＳ１０）。ステップＳ１０において、今回の処理のループが１回目のループでない場合には、画像処理プロセッサ５は、１回目のライトＤＭＡの終了を待つ（ステップＳ１１）。１回目のライトＤＭＡが終了すると、画像処理プロセッサ５は、２個目の入力画像データ（１／Ｍの入力画像データ）に対して画像処理を施した後のそれぞれの２個目の画像処理結果をＤＲＡＭ４に書き戻すためのライトＤＭＡ（２回目のライトＤＭＡ）を起動する（ステップＳ１２）。
【００４３】
以降、同様に、画像処理プロセッサ５は、ステップＳ６〜ステップＳ１２までの処理を、入力画像データを分割した数分（例えば、Ｍ回）だけ繰り返す。その後、画像処理プロセッサ５は、ステップＳ６〜ステップＳ１２までの処理の繰り返しを、入力画像データを分割した数と同じ回数行うと、すなわち、キャプチャ部３がキャプチャした１フレーム分の入力画像データに対する２種類の画像処理が完了すると、処理のループを抜け出し、最後のライトＤＭＡの終了を待つ（ステップＳ１３）。最後のライトＤＭＡが終了する、すなわち、キャプチャ部３がキャプチャした１フレーム分の画像処理結果をＤＲＡＭ４に書き戻すと、画像処理プロセッサ５は、終了割り込み信号をホストＣＰＵ６に出力する（ステップＳ１４）。
【００４４】
ホストＣＰＵ６は、割り込み処理において、画像処理プロセッサ５からの終了割り込み信号を受け付ける（ステップＳ１）。ホストＣＰＵ６が、画像処理プロセッサ５からの終了割り込み信号を受け付けると、受け付けた割り込みの要因を判定する（ステップＳ２）。ここでは、ステップＳ２において、割り込みの要因が画像処理プロセッサ５からの終了割り込み信号であると判定されるため、ホストＣＰＵ６は、画像処理部７を起動し、画像処理プロセッサ５がＤＲＡＭ４に書き戻した画像処理結果に対して各種の画像処理を施させる（ステップＳ４）。
【００４５】
ここで、本第１の実施形態の複数処理実行方法におけるハンドシェークやデータの転送と、システムの処理時間との関係について説明する。図４は、本第１の実施形態の複数処理実行方法におけるハンドシェークやデータの転送と、システムの処理時間との関係の一例を模式的に示した図である。図４には、処理Ａおよび処理Ｂの２つの画像処理を行うシステムの場合を示している。図４において、処理Ａは、データの転送時間よりも演算時間の方が長い画像処理であり、処理Ｂは、データの転送時間よりも演算時間の方が短い画像処理である。ホストＣＰＵ６は、画像処理プロセッサ５に、処理Ａと処理Ｂとの２つの画像処理を、同時期に（並行して）実行させる。また、画像処理プロセッサ５は、それぞれの画像処理に必要な入力画像データを、複数個（例えば、Ｍ個）に分割して処理する。なお、図４においては、２種類の画像処理に必要な入力画像データ（１／Ｍの入力画像データ）をＤＲＡＭ４から読み出すためのリードＤＭＡの時間、およびそれぞれの画像処理における演算時間のみを示し、画像処理を施した後の画像処理結果をＤＲＡＭ４に書き戻すためのライトＤＭＡは省略している。
【００４６】
まず、キャプチャ部３からのキャプチャ完了信号がホストＣＰＵ６に入力されると、ホストＣＰＵ６は、画像処理プロセッサ５に対して処理Ａおよび処理Ｂの実行指示を出力する（図３のステップＳ１〜ステップＳ３参照）。画像処理プロセッサ５は、ホストＣＰＵ６から入力された実行指示に応じて、リードＤＭＡを起動し、処理Ａおよび処理Ｂに必要な、分割した最初（１個目）の入力画像データをＤＲＡＭ４から読み出す。そして、次（２個目）の入力画像データのリードＤＭＡ（２回目のリードＤＭＡ）を起動する（図３のステップＳ５〜ステップＳ７参照）。
【００４７】
その後、画像処理プロセッサ５は、２回目のリードＤＭＡによって２個目の入力画像データをＤＲＡＭ４から読み出している間に、１個目の入力画像データに対する処理Ａの演算および処理Ｂの演算を、同時期に（並行して）実行する（図３のステップＳ８およびステップＳ９参照）。なお、図４では、処理Ａと処理Ｂとを、順次実行する場合の一例を示している。このとき、図４を見てわかるように、処理Ａと処理Ｂとが連続的に実行されるため、一方の処理の待ち時間を、他方の処理で使用することができる。
【００４８】
より具体的には、処理Ａは、データの転送時間よりも演算時間の方が長い画像処理であるため、処理Ａを連続的に実行すると、前回の演算が完了するまで次のデータ転送を開始することができないことによるデータ転送の待ち時間（転送待ち時間）が発生してしまうが、この転送待ち時間を処理ＢのＤＭＡ（データ転送）に使用することができる。また、処理Ｂは、データの転送時間よりも演算時間の方が短い画像処理であるため、処理Ｂを連続的に実行すると、前回のデータ転送が完了するまで次の演算を開始することができないことによる演算の待ち時間（演算待ち時間）が発生してしまうが、この演算待ち時間を処理Ａの演算に使用することができる。
【００４９】
なお、図４に示した一例では、処理Ａおよび処理Ｂに必要な最初（１個目）の入力画像データのＤＲＡＭ４からの読み出し、すなわち、処理Ａに対応したチャンネルのリードＤＭＡと、処理Ｂに対応したチャンネルのリードＤＭＡとが終了した後に、処理Ａの演算を開始する場合の一例を示している。これは、処理Ａに対応したチャンネルのリードＤＭＡと、処理Ｂに対応したチャンネルのリードＤＭＡとが、同時期に（並行して）行われる、すなわち、２つのチャンネルのリードＤＭＡが終了した時点で、処理Ａおよび処理Ｂのそれぞれの演算に必要な入力画像データが揃う場合を示したものである。しかし、システムによるＤＭＡの制御では、例えば、処理Ａに対応したチャンネルのリードＤＭＡがＤＲＡＭ４からの入力画像データの読み出しを占有することができる場合がある。この場合には、処理Ａに対応したチャンネルのリードＤＭＡが先に終了し、処理Ａに対応したチャンネルのリードＤＭＡが終了した時点で、処理Ａの演算に必要な入力画像データが揃うことになる。従って、このような場合には、処理Ａに対応したチャンネルのリードＤＭＡが終了した後に、先に処理Ａの演算を開始し、その後、処理Ｂに対応したチャンネルのリードＤＭＡが終了した後に、処理Ｂの演算を開始することができる。このようにすると、全ての処理Ａおよび処理Ｂが終了するまでの時間、すなわち、処理Ａおよび処理Ｂを実行している期間を短くすることもできる。
【００５０】
上記に述べたように、本第１の実施形態の複数処理実行方法を適用した撮像装置１０では、ホストＣＰＵ６が、画像処理プロセッサ５に複数種類（例えば、Ｎ種類）の異なる画像処理を、同時期に（並行して）施させる。これにより、画像処理プロセッサ５は、複数種類（例えば、Ｎ種類）の画像処理に対応するリードＤＭＡおよびライトＤＭＡを一纏めにして同時期に（並行して）起動し、複数種類（例えば、Ｎ種類）の画像処理を、同時期に（並行して）実行する。すなわち、本第１の実施形態の複数処理実行方法では、複数種類（例えば、Ｎ種類）の異なる画像処理を一纏めにして、対応するデータ転送（ＤＭＡ）と、それぞれの画像処理の演算とを連続的に実行する。これにより、本第１の実施形態の複数処理実行方法では、従来のプロセッサの処理において、それぞれの処理を単体で実行することで、システムの性能を低下させてしまう要因となっていたデータ転送や演算の待ち時間を、同時期に（並行して）実行している他の処理を実行する時間に充てることができる。このことにより、本第１の実施形態の複数処理実行方法では、システム全体の処理における待ち時間を少なくし、システム性能の低下を防止することができる。
【００５１】
また、本第１の実施形態の複数処理実行方法では、複数種類（例えば、Ｎ種類）の異なる画像処理を一纏めにして、同時期に（並行して）施させるため、ハンドシェークの処理の回数を削減することができる。すなわち、本第１の実施形態の複数処理実行方法では、従来のプロセッサの処理において、それぞれの処理を単体で実行するたびに行われているハンドシェークの処理の回数を、同時期に（並行して）実行する複数種類（例えば、Ｎ種類）の処理毎に１回に削減することができる。このことにより、本第１の実施形態の複数処理実行方法では、システム全体の処理におけるハンドシェークに要する処理時間を少なくし、システム性能の低下をさらに防止することができる。
【００５２】
なお、本第１の実施形態の複数処理実行方法は、画像処理プロセッサ５において同時期に（並行して）実行するそれぞれの画像処理に必要な画像データが、同じ分割数に分割されている場合に有効である。しかし、撮像装置１０においては、全ての画像処理で使用する画像データが、同じ分割数に分割されているとは限らない。また、同時期に（並行して）実行するそれぞれの画像処理で処理する画像データが、異なる構成要素が生成した画像データであることも考えられる。
【００５３】
＜第２の実施形態＞
次に、本発明の第２の実施形態の複数処理実行方法について説明する。以下の説明においては、第１の実施形態と同様に、本第２の実施形態の複数処理実行方法を、撮像装置１０に適用した場合について説明する。なお、本第２の実施形態の複数処理実行方法を適用した撮像装置１０、および本第２の実施形態の複数処理実行方法の実行に係わる撮像装置１０における概略構成は、図１および図２に示した第１の実施形態の複数処理実行方法を適用した撮像装置１０と同様であるため、詳細な説明は省略する。従って、以下の説明においては、図１および図２に示した第１の実施形態の複数処理実行方法を適用した撮像装置１０が、本第２の実施形態の複数処理実行方法を実行するものとして説明を行う。本第２の実施形態の複数処理実行方法は、撮像装置１０に備えた画像処理プロセッサ５が、それぞれの画像処理に使用する画像データを異なる分割数に分割して処理する場合に有効である。
【００５４】
まず、画像処理プロセッサ５における画像データの分割方法について説明する。図５は、本第２実施形態の複数処理実行方法を適用した撮像装置１０におけるデータの分割方法の一例を模式的に示した図である。図５（ａ）には、画像データの分割数が、同時期に（並行して）実行する異なる画像処理で同じ場合を示し、図５（ｂ）には、画像データの分割数が、同時期に（並行して）実行する異なる画像処理で異なる場合を示している。
【００５５】
図５（ａ）に示した一例では、処理Ａにおいて処理する画像データと、処理Ｂにおいて処理する縮小画像データとが、どちらも横方向の短冊に分割されて処理される、すなわち、処理Ａおよび処理Ｂによってそれぞれ画像処理する１フレーム内の短冊の数は、いずれも同じである。このように、画像処理に使用する画像データが同じ分割数に分割されている場合には、それぞれの画像処理において処理する画像データの大きさが異なる大きさであっても、それぞれの画像処理を同時期に終了することができる。すなわち、図３に示した第１の実施形態の複数処理実行方法の処理手順におけるステップＳ６〜ステップＳ１２までの処理のループを実行する回数は、画像データを分割した数分となる。
【００５６】
一方、図５（ｂ）に示した一例では、処理Ａにおいて画像データがブロック単位で処理されるのに対し、処理Ｂにおいては、縮小画像データが横方向の短冊単位で処理される、すなわち、処理Ａおよび処理Ｂが１フレームの画像データを画像処理する際のそれぞれの処理単位が、処理Ａと処理Ｂとで異なる。例えば、図５（ｂ）に示した処理Ａのブロックが、処理Ｂの短冊を横方向に４分割したものであれば、処理Ａと処理Ｂとにおける１フレームの分割数の比は、処理Ａ：処理Ｂ＝４：１となる。
【００５７】
このように、処理に使用する画像データが異なる分割数に分割されている場合には、図３に示した第１の実施形態の複数処理実行方法であると、それぞれの画像処理において処理する画像データの大きさに係わらず、それぞれの画像処理を同時期に終了することができない。すなわち、図５（ｂ）に示した処理Ａにおける画像データの分割数分の回数に合わせて、図３に示した第１の実施形態の複数処理実行方法の処理手順におけるステップＳ６〜ステップＳ１２までの処理のループを実行すると、処理Ｂで不要な処理を実行してしまうことになる。また、逆に、図５（ｂ）に示した処理Ｂにおける画像データの分割数分の回数に合わせて、図３に示した第１の実施形態の複数処理実行方法の処理手順におけるステップＳ６〜ステップＳ１２までの処理のループを実行すると、処理Ａによる画像処理が終わらない、すなわち、１フレーム分の画像データの全てに対して処理Ａが実行されないことになる。
【００５８】
このため、本第２の実施形態の複数処理実行方法では、図３に示した第１の実施形態の複数処理実行方法の処理手順におけるステップＳ６〜ステップＳ１２までの処理のループに対応する処理のループ内で、同時期に（並行して）実行する異なる画像処理における画像データの分割数に応じて、それぞれの画像処理を実行するが否かを切り替える。
【００５９】
次に、撮像装置１０における本第２の実施形態の複数処理実行方法の処理手順について説明する。図６は、本第２の実施形態における複数処理実行方法の処理手順を示したフローチャートである。図６に示したフローチャートでは、本第２の実施形態の複数処理実行方法におけるホストＣＰＵ６および画像処理プロセッサ５の動作を示している。なお、画像処理プロセッサ５は、上述したように、複数種類（例えば、Ｎ種類）の異なる画像処理を同時期に（並行して）施すことができる。以下の説明においては、入力画像データを異なる分割数で処理する２種類の異なる画像処理（処理Ａおよび処理Ｂ）を、同時期に（並行して）施す場合の処理手順について説明する。
【００６０】
ここで、処理Ａは画像データをブロック単位で処理し、処理Ｂは画像データを横方向の短冊単位で処理するものとし、処理Ａのブロックが、処理Ｂの短冊を横方向に２分割したもの、すなわち、処理Ａと処理Ｂとにおける１フレームの分割数の比が、処理Ａ：処理Ｂ＝２：１であるものとする（図５（ｂ）参照）。
【００６１】
撮像装置１０の動作が開始されると、ホストＣＰＵ６は、複数処理実行の処理を開始する。複数処理実行の処理において、ホストＣＰＵ６は、まず、割り込み処理を実行する（ステップＳ１０１）。ステップＳ１０１の割り込み処理では、ホストＣＰＵ６が、撮像装置１０内の各構成要素からの割り込み信号を受け付ける。その後、キャプチャ部３は、イメージャ２から出力された画像信号を１フレーム分キャプチャした入力画像データをＤＲＡＭ４に格納すると、ホストＣＰＵ６にキャプチャ完了信号を出力する。
【００６２】
ホストＣＰＵ６が、撮像装置１０内の各構成要素からの割り込み信号を受け付けると、受け付けた割り込みの要因を判定する（ステップＳ１０２）。ステップＳ１０２において、割り込みの要因がキャプチャ部３からのキャプチャ完了信号である場合には、ホストＣＰＵ６は、画像処理プロセッサ５を起動する（ステップＳ１０３）。ホストＣＰＵ６が画像処理プロセッサ５を起動する際、ホストＣＰＵ６は、画像処理プロセッサ５に実行指示を出力するとともに、今回実行する２種類の画像処理がどの画像処理であるか、すなわち、複数種類（例えば、Ｎ種類）備えた画像処理演算部５２の内、どの画像処理演算部５２の演算を実行するかを表す情報を画像処理プロセッサ５に出力する。
【００６３】
画像処理プロセッサ５は、ホストＣＰＵ６によって起動が指示される、すなわち、ホストＣＰＵ６から実行指示と実行する画像処理の情報が入力されると、指示された２種類の画像処理の実行を開始する。なお、画像処理プロセッサ５は、小容量の内蔵メモリしか持たないため、キャプチャ部３が１フレーム分キャプチャした入力画像データを、それぞれの処理に応じた複数個に分割し、分割した入力画像データのそれぞれに対する画像処理を、それぞれの処理に応じて分割した数分だけ繰り返すことによって、１フレーム分の画像処理を完了する。以下の説明においては、処理Ａの画像処理における入力画像データの分割数を分割数Ｍａ、処理Ｂの画像処理における入力画像データの分割数を分割数Ｍｂとし、今回実行する全ての画像処理（処理Ａおよび処理Ｂ）における入力画像データの分割数の最大値を、分割数ＭＡＸとする。また、処理Ａの分割数Ｍａが、分割数ＭＡＸであるとする。
【００６４】
まず、画像処理プロセッサ５は、２種類の画像処理のそれぞれに必要な、分割した最初（１個目）の入力画像データ（１／Ｍａの入力画像データ、および１／Ｍｂの入力画像データ）をＤＲＡＭ４から読み出すため、２種類の画像処理のそれぞれに対応した全てのチャンネルのリードＤＭＡ（１回目のリードＤＭＡ）を起動する（ステップＳ１０５）。次に、画像処理プロセッサ５は、処理Ａおよび処理Ｂのそれぞれに対応したチャンネルのリードＤＭＡを起動したか否かを表すＤＭＡ実行状態のフラグ（以下、「プレフラグ」という）を全てＯＮ（リードＤＭＡを起動した状態）にする（ステップＳ１０６）。
【００６５】
続いて、画像処理プロセッサ５は、分割数ＭＡＸ分の回数（仮に、“ｉ”とする）だけ繰り返すループ（ｉ）の１回目（ｉ＝１）の処理において、プレフラグがＯＮである処理（ここでは、処理Ａおよび処理Ｂ）に対応したチャンネルの１回目のリードＤＭＡの終了を待つ（ステップＳ１０７）。１回目のリードＤＭＡが終了すると、画像処理プロセッサ５は、処理Ａおよび処理Ｂのそれぞれに対応し、処理の演算を実行するか否かを表す処理実行状態のフラグ（以下、「ポストフラグ」という）に、プレフラグの状態をコピーする（ステップＳ１０８）。
【００６６】
続いて、画像処理プロセッサ５は、同時期に（並行して）実行する画像処理の種類（仮に、“ｊ”とする）だけ繰り返すループ（ｊ）において、それぞれの画像処理毎に、次（２個目）の入力画像データを事前にＤＲＡＭ４から読み出すためのリードＤＭＡ（２回目のリードＤＭＡ）を起動するか否かを判定する（ステップＳ１０９）。この判定では、分割数ＭＡＸ分の回数ｉだけ繰り返すループ（ｉ）のカウント値を、それぞれの画像処理を実行する周期（以下、「実行周期Ｔ」という）で除算したときの余りを算出する。そして、余りが“０”のときに、事前にＤＲＡＭ４から読み出すためのリードＤＭＡ（２回目のリードＤＭＡ）を起動し、余りが“０”以外のときに、事前にＤＲＡＭ４から読み出すためのリードＤＭＡ（２回目のリードＤＭＡ）を起動しないと判定する。なお、実行周期Ｔは、分割数ＭＡＸ分の回数ｉだけ繰り返すループ（ｉ）において、それぞれの画像処理の演算を何回に１回実行するかを表す値であり、分割数ＭＡＸを、それぞれの画像処理における入力画像データの分割数で除算した商である。
【００６７】
例えば、処理Ａの分割数Ｍａ＝１０、処理Ｂの分割数Ｍｂ＝５である場合を考える。この場合、分割数ＭＡＸ＝１０である。このとき、処理Ａに対応した実行周期Ｔ（以下「実行周期Ｔａ」という）は、分割数ＭＡＸ＝分割数Ｍａであるため、実行周期Ｔａ＝１０／１０＝１である。すなわち、処理Ａは、１回に１回実行、すなわち、毎回実行することになる。また、処理Ｂに対応した実行周期Ｔ（以下「実行周期Ｔｂ」という）は、分割数ＭＡＸ≠分割数Ｍｂであり、実行周期Ｔｂ＝１０／５＝２である。すなわち、処理Ｂは、２回に１回実行することになる。
【００６８】
そして、１回目のループ（ｊ＝１）では、１つ目（ｊ＝１）の画像処理である処理Ａに必要な、次（２個目）の入力画像データ（１／Ｍａの入力画像データ）を事前にＤＲＡＭ４から読み出すために、処理Ａに対応したチャンネルのリードＤＭＡ（２回目のリードＤＭＡ）を起動するか否かを判定する。ここでは、ループ（ｉ）のカウント値（ここでは、ｉ＝１）を実行周期Ｔａ＝１で除算したときの余りは“０”になるため、処理Ａに対応したチャンネルのリードＤＭＡを起動すると判定する。
【００６９】
また、２回目のループ（ｊ＝２）では、２つ目（ｊ＝２）の画像処理である処理Ｂに必要な、次（２個目）の入力画像データ（１／Ｍｂの入力画像データ）を事前にＤＲＡＭ４から読み出すために、処理Ｂに対応したチャンネルのリードＤＭＡ（２回目のリードＤＭＡ）を起動するか否かを判定する。ここでは、ループ（ｉ）のカウント値（ここでは、ｉ＝１）を実行周期Ｔｂ＝２で除算したときの余りは“０”以外になるため、処理Ｂに対応したチャンネルのリードＤＭＡを起動しないと判定する。
【００７０】
ステップＳ１０９において、処理に対応したチャンネルのリードＤＭＡを起動すると判定した場合には、対応するプレフラグをＯＮ（リードＤＭＡを起動する状態）にし（ステップＳ１１０）、処理に対応したチャンネルのリードＤＭＡを起動しないと判定した場合には、対応するプレフラグをＯＦＦ（リードＤＭＡを起動しない状態）にする（ステップＳ１１１）。
【００７１】
ステップＳ１０９〜ステップＳ１１１のループ（ｊ）では、上述した次の入力画像データを事前にＤＲＡＭ４から読み出すためのリードＤＭＡを起動するか否かの判定と、それぞれの処理に対応するプレフラグの変更とを、同時期に（並行して）実行する画像処理の種類だけ繰り返す。そして、同時期に（並行して）実行するそれぞれの画像処理に対する判定が完了すると、ループ（ｊ）を抜け出す。
【００７２】
続いて、画像処理プロセッサ５は、プレフラグがＯＮであるチャンネル、すなわち、事前にＤＲＡＭ４から読み出すためのリードＤＭＡを起動すると判定された処理に対応するチャンネルのリードＤＭＡ（２回目のリードＤＭＡ）を起動する（ステップＳ１１２）。
ここでは、ステップＳ１０９〜ステップＳ１１１の処理の結果に応じて、処理Ａに対応したチャンネルのリードＤＭＡのみが起動される。
【００７３】
画像処理プロセッサ５は、処理Ａに対応したチャンネルの２回目のリードＤＭＡによって２個目の入力画像データをＤＲＡＭ４から読み出している間に、ポストフラグがＯＮ（演算を実行する状態）になっている処理の１個目の入力画像データに対するそれぞれの画像処理の演算を同時期に（並行して）実行する。ここでは、処理Ａに必要な２個目の入力画像データ（１／Ｍａの入力画像データ）をＤＲＡＭ４から読み出している間に、１個目の入力画像データ（１／Ｍａの入力画像データ、および１／Ｍｂの入力画像データ）に対する２種類の画像処理（処理Ａおよび処理Ｂの演算）を、同時期に（並行して）実行する（ステップＳ１１３およびステップＳ１１４）。なお、図６に示したフローチャートでは、処理Ａの演算（ステップＳ１１３）と処理Ｂの演算（ステップＳ１１４）とを、順次実行する場合の一例を示している。
【００７４】
その後、２種類の画像処理が完了すると、画像処理プロセッサ５は、今回のループ（ｉ）が１回目のループ（ｉ＝１）であるか否かを判定する（ステップＳ１１５）。ステップＳ１１５において、今回のループ（ｉ）が１回目のループ（ｉ＝１）である場合には、画像処理プロセッサ５は、ポストフラグがＯＮ（演算を実行する状態）になっている処理の１個目の入力画像データに対して画像処理を施した後の１個目の画像処理結果をＤＲＡＭ４に書き戻すためのライトＤＭＡ（１回目のライトＤＭＡ）を起動する（ステップＳ１１７）。ここでは、１個目の入力画像データ（１／Ｍａの入力画像データ、および１／Ｍｂの入力画像データ）に対して処理Ａおよび処理Ｂの演算を施しているため、処理Ａおよび処理Ｂのそれぞれに対応したチャンネルのライトＤＭＡ（１回目のライトＤＭＡ）が起動される。
【００７５】
なお、図６に示したフローチャートでは、処理Ａの演算（ステップＳ１１３）と処理Ｂの演算（ステップＳ１１４）とを順次実行し、２種類の画像処理が完了した後に、それぞれの処理に対応するチャンネルのライトＤＭＡを起動する（ステップＳ１１７）場合について説明した。しかし、画像処理を実行し、画像処理を施した後の画像処理結果をＤＲＡＭ４に書き戻す手順は、図６に示したステップＳ１１３〜ステップＳ１１７までの処理手順のみに限定されるものではない。例えば、図３に示した第１の実施形態の複数処理実行方法の処理手順におけるステップＳ８〜ステップＳ１２までの処理と同様に、それぞれの画像処理が完了する毎に、画像処理を施した後の画像処理結果をＤＲＡＭ４に書き戻す手順にすることもできる。
【００７６】
そして、画像処理プロセッサ５は、分割数ＭＡＸ分の回数ｉだけ繰り返すループ（ｉ）の２回目（ｉ＝２）の処理において、プレフラグがＯＮである処理（ここでは、処理Ａのみ）に対応したチャンネルの２回目のリードＤＭＡの終了を待つ（ステップＳ１０７）。２回目のリードＤＭＡが終了すると、画像処理プロセッサ５は、ポストフラグにプレフラグの状態（ここでは、処理ＡのみがＯＮになっている）をコピーする（ステップＳ１０８）。
【００７７】
続いて、画像処理プロセッサ５は、同時期に（並行して）実行する画像処理の種類だけ繰り返すループ（ｊ）において、それぞれの画像処理毎に、次（３個目または２個目）の入力画像データを事前にＤＲＡＭ４から読み出すためのリードＤＭＡ（３回目または２回目のリードＤＭＡ）を起動するか否かを判定する（ステップＳ１０９）。
【００７８】
ここでは、２回目のループ（ｊ＝２）であるため、１つ目（ｊ＝１）の画像処理である処理Ａに必要な、次（３個目）の入力画像データ（１／Ｍａの入力画像データ）を事前にＤＲＡＭ４から読み出すために、処理Ａに対応したチャンネルのリードＤＭＡ（３回目のリードＤＭＡ）を起動するか否かを判定する。また、２つ目（ｊ＝２）の画像処理である処理Ｂに必要な、次（２個目）の入力画像データ（１／Ｍｂの入力画像データ）を事前にＤＲＡＭ４から読み出すために、処理Ｂに対応したチャンネルのリードＤＭＡ（２回目のリードＤＭＡ）を起動するか否かを判定する。
【００７９】
例えば、処理Ａの分割数Ｍａ＝１０、処理Ｂの分割数Ｍｂ＝５、分割数ＭＡＸ＝１０である場合、ステップＳ１０９では、２回目のループ（ｉ）のカウント値（ここでは、ｉ＝２）を実行周期Ｔａ＝１で除算したときの余りは“０”になるため、処理Ａに対応したチャンネルのリードＤＭＡを起動すると判定する。また、２回目のループ（ｉ）のカウント値（ここでは、ｉ＝２）を実行周期Ｔｂ＝２で除算したときの余りは“０”になるため、処理Ｂに対応したチャンネルのリードＤＭＡも起動すると判定する。
【００８０】
そして、ステップＳ１０９において、処理に対応したチャンネルのリードＤＭＡを起動すると判定した処理Ａおよび処理Ｂに対応するプレフラグをＯＮ（リードＤＭＡを起動する状態）にする（ステップＳ１１０）。そして、同時期に（並行して）実行するそれぞれの画像処理に対する判定が完了すると、ループ（ｊ）を抜け出す。
【００８１】
続いて、画像処理プロセッサ５は、プレフラグがＯＮであるチャンネル、すなわち、事前にＤＲＡＭ４から読み出すためのリードＤＭＡを起動すると判定された、処理Ａに対応するチャンネルのリードＤＭＡ（３回目のリードＤＭＡ）と、処理Ｂに対応するチャンネルのリードＤＭＡ（２回目のリードＤＭＡ）とを起動する（ステップＳ１１２）。
【００８２】
画像処理プロセッサ５は、処理Ａおよび処理Ｂに対応したチャンネルのリードＤＭＡによって入力画像データをＤＲＡＭ４から読み出している間に、ポストフラグがＯＮ（演算を実行する状態）になっている処理の２個目の入力画像データに対するそれぞれの画像処理の演算を同時期に（並行して）実行する。ここでは、処理Ａに必要な３個目の入力画像データ（１／Ｍａの入力画像データ）と、処理Ｂに必要な２個目の入力画像データ（１／Ｍｂの入力画像データ）とをＤＲＡＭ４から読み出している間に、２個目の入力画像データ（１／Ｍａの入力画像データ）に対する処理Ａの演算を実行する（ステップＳ１１３）。なお、処理Ｂの演算（ステップＳ１１４）は実行しない。
【００８３】
その後、処理Ａの画像処理が完了すると、画像処理プロセッサ５は、今回のループ（ｉ）が１回目のループ（ｉ＝１）であるか否かを判定する（ステップＳ１１５）。ステップＳ１１５において、今回のループ（ｉ）が１回目のループ（ｉ＝１）でない場合には、画像処理プロセッサ５は、ポストフラグがＯＮ（演算を実行する状態）になっている処理の１回目のライトＤＭＡの終了を待つ（ステップＳ１１１）。ここでは、ポストフラグが処理ＡのみＯＮになっているので、処理Ａの１回目のライトＤＭＡの終了を待つ。
【００８４】
処理Ａの１回目のライトＤＭＡが終了すると、画像処理プロセッサ５は、ポストフラグがＯＮ（演算を実行する状態）になっている処理の２個目の入力画像データに対して画像処理を施した後の２個目の画像処理結果をＤＲＡＭ４に書き戻すためのライトＤＭＡ（２回目のライトＤＭＡ）を起動する（ステップＳ１１７）。ここでは、ポストフラグが処理ＡのみＯＮになっているため、２個目の入力画像データ（１／Ｍａの入力画像データ）に対して画像処理を施した処理Ａの２個目の画像処理結果をＤＲＡＭ４に書き戻すため、処理Ａに対応したチャンネルのライトＤＭＡ（３回目のライトＤＭＡ）が起動される。
【００８５】
以降、同様に、画像処理プロセッサ５は、ステップＳ１０７〜ステップＳ１１７までのループ（ｉ）の処理を、今回実行する全ての画像処理における入力画像データの最大の分割数の数分（分割数ＭＡＸ分の回数ｉ）だけ繰り返す。その後、画像処理プロセッサ５は、ステップＳ１０７〜ステップＳ１１７までのループ（ｉ）の処理の繰り返しを、分割数ＭＡＸと同じ回数ｉだけ行うと、すなわち、キャプチャ部３がキャプチャした１フレーム分の入力画像データに対する２種類の画像処理が完了すると、処理のループを抜け出す。そして、画像処理プロセッサ５は、ポストフラグがＯＮ（演算を実行する状態）になっている処理の最後のライトＤＭＡの終了を待つ（ステップＳ１１８）。ポストフラグがＯＮになっている処理の最後のライトＤＭＡが終了する、すなわち、キャプチャ部３がキャプチャした１フレーム分の画像処理結果をＤＲＡＭ４に書き戻すと、画像処理プロセッサ５は、終了割り込み信号をホストＣＰＵ６に出力する（ステップＳ１１９）。
【００８６】
ホストＣＰＵ６は、割り込み処理において、画像処理プロセッサ５からの終了割り込み信号を受け付ける（ステップＳ１０１）。ホストＣＰＵ６が、画像処理プロセッサ５からの終了割り込み信号を受け付けると、受け付けた割り込みの要因を判定する（ステップＳ１０２）。ここでは、ステップＳ１０２において、割り込みの要因が画像処理プロセッサ５からの終了割り込み信号であると判定されるため、ホストＣＰＵ６は、画像処理部７を起動し、画像処理プロセッサ５がＤＲＡＭ４に書き戻した画像処理結果に対して各種の画像処理を施させる（ステップＳ１０４）。
【００８７】
上記に述べたように、本第２の実施形態の複数処理実行方法を適用した撮像装置１０では、画像処理プロセッサ５が、複数種類（例えば、Ｎ種類）の画像処理を、同時期に（並行して）実行する異なる画像処理における画像データの分割数の比に基づいて、ＤＭＡの起動と演算の実行とを制御する。すなわち、本第２の実施形態の複数処理実行方法では、複数種類（例えば、Ｎ種類）の画像処理に対応するチャンネルのリードＤＭＡおよびライトＤＭＡの起動、およびそれぞれの画像処理の演算の実行を、それぞれの画像処理における画像データの分割数に応じて制御する。言い換えれば、本第２の実施形態の複数処理実行方法では、分割数が最大である処理Ａのループ（ｉ）を実行している間に、分割数が最大ではない処理Ｂを実行することによって、第１の実施形態の複数処理実行方法と同様に、ホストＣＰＵ６が、画像処理プロセッサ５に複数種類（例えば、Ｎ種類）の異なる画像処理を、同時期に（並行して）施させる。これにより、本第２の実施形態の複数処理実行方法では、画像データを異なる分割数で処理する複数種類（例えば、Ｎ種類）の異なる画像処理を、同時期に（並行して）実行する場合でも、対応するデータ転送（ＤＭＡ）と、それぞれの画像処理の演算とを連続的に実行することができる。このことにより、本第２の実施形態の複数処理実行方法でも、第１の実施形態の複数処理実行方法と同様に、従来のプロセッサの処理においてシステムの性能を低下させてしまう要因となっていたデータ転送や演算の待ち時間を、同時期に（並行して）実行している他の処理を実行する時間に充てることができ、システム全体の処理における待ち時間を少なくし、システム性能の低下を防止することができる。
【００８８】
また、本第２の実施形態の複数処理実行方法でも、第１の実施形態の複数処理実行方法と同様に、従来のプロセッサの処理において、それぞれの処理を単体で実行するたびに行われているハンドシェークの処理の回数を、同時期に（並行して）実行する複数種類（例えば、Ｎ種類）の処理毎に１回に削減することができる。このことにより、本第２の実施形態の複数処理実行方法でも、第１の実施形態の複数処理実行方法と同様に、システム全体の処理におけるハンドシェークに要する処理時間を少なくし、システム性能の低下をさらに防止することができる。
【００８９】
なお、本第２の実施形態の複数処理実行方法の処理手順では、入力画像データをそれぞれ異なる分割数で処理する２種類の異なる画像処理（処理Ａおよび処理Ｂ）を、同時期に（並行して）実行する場合の処理手順について説明した。しかし、上述したように、本第２の実施形態の複数処理実行方法では、画像処理を実行する際の画像データの分割数に応じて、ＤＭＡの起動と演算の実行とを制御することができる。このため、本第２の実施形態の複数処理実行方法では、同時期に（並行して）実行する画像処理のいずれかが、画像データを分割せずに画像処理を実行する画像処理であっても、分割数を“１”として考えることによって、同様にＤＭＡの起動と演算の実行とを制御することができる。
【００９０】
なお、第１の実施形態の複数処理実行方法、および本第２の実施形態の複数処理実行方法では、画像処理プロセッサ５において２種類の異なる画像処理（処理Ａおよび処理Ｂ）を、同時期に（並行して）施す場合について説明した。しかし、画像処理プロセッサ５が同時期に（並行して）実行する画像処理の数は、２種類に限定されるものではなく、画像処理を実行する際に使用する内蔵メモリの容量が、画像処理プロセッサ５に備えた内蔵メモリの容量を超えない範囲で、さらに多くの種類の画像処理を組み合わせて、同時期に（並行して）実行することができる。
【００９１】
＜第３の実施形態＞
次に、本発明の第３の実施形態の複数処理実行方法について説明する。以下の説明においては、第１の実施形態および第２の実施形態と同様に、本第３の実施形態の複数処理実行方法を、撮像装置１０に適用した場合について説明する。なお、本第３の実施形態の複数処理実行方法を適用した撮像装置１０、および本第３の実施形態の複数処理実行方法の実行に係わる撮像装置１０における概略構成は、図１および図２に示した第１の実施形態の複数処理実行方法を適用した撮像装置１０と同様であるため、詳細な説明は省略する。従って、以下の説明においては、図１および図２に示した第１の実施形態の複数処理実行方法を適用した撮像装置１０が、本第３の実施形態の複数処理実行方法を実行するものとして説明を行う。本第３の実施形態の複数処理実行方法は、撮像装置１０に備えたホストＣＰＵ６が、画像処理プロセッサ５に実行させる画像処理の組み合わせを、画像処理プロセッサ５に備えた内蔵メモリの容量を考慮して動的に変更する方法である。
【００９２】
本第３の実施形態の複数処理実行方法では、画像処理プロセッサ５に備えている全ての画像処理演算部５２で実行する複数種類（例えば、Ｎ種類）の画像処理について、データの転送時間と演算時間とのそれぞれを事前に計測し、計測したそれぞれの値をホストＣＰＵ６のプログラムデータとして、例えば、プログラムメモリに格納しておく。ホストＣＰＵ６は、予め計測したデータの転送時間と演算時間とに基づいて、今回画像処理プロセッサ５に実行を指示する画像処理の組み合わせを決定する。ホストＣＰＵ６による画像処理プロセッサ５に実行を指示する画像処理の組み合わせの決定は、データの転送時間と演算時間との差の時間に基づいて行う。従って、予めプログラムデータとして格納しておく値は、データの転送時間と演算時間との差の時間であっても良い。
【００９３】
また、本第３の実施形態の複数処理実行方法では、画像処理プロセッサ５において同時期に（並行して）実行する、すなわち、組み合わせて実行する最大の処理の数が、「最大結合処理数」として予め定義されている。この最大結合処理数は、撮像装置１０の動作モードに応じて実行する画像処理を複数種類組み合わせた場合に、画像処理を実行する際に使用する内蔵メモリの容量が、画像処理プロセッサ５に備えた内蔵メモリの容量を超えない範囲で設定される必要がある。
【００９４】
次に、撮像装置１０における本第３の実施形態の複数処理実行方法の処理手順について説明する。図７は、本第３の実施形態における複数処理実行方法の処理手順を示したフローチャートである。図７に示したフローチャートでは、本第３の実施形態の複数処理実行方法におけるホストＣＰＵ６および画像処理プロセッサ５の動作を示している。なお、画像処理プロセッサ５は、上述したように、複数種類（例えば、Ｎ種類）の異なる画像処理を同時期に（並行して）施すことができる。以下の説明においては、入力画像データに対して４種類の異なる画像処理（処理Ａ、処理Ｂ、処理Ｃ、および処理Ｄ）を施す場合の処理手順について説明する。
【００９５】
ここで、処理Ａおよび処理Ｂは、データの転送時間よりも演算時間の方が長い画像処理であり、処理Ｃおよび処理Ｄは、データの転送時間よりも演算時間の方が短い画像処理であるものとする。そして、処理Ａと処理Ｂとでは、データの転送時間と演算時間との差の時間が処理Ａの方が大きく、処理Ｃと処理Ｄとでは、データの転送時間と演算時間との差の時間が処理Ｃの方が大きいものとする。また、ホストＣＰＵ６には、最大結合処理数として“２”が予め設定されているものとする。従って、以下の説明においては、画像処理プロセッサ５が、４種類の画像処理を２種類ずつ２回に分けて実行する場合について説明する。
【００９６】
撮像装置１０の動作が開始されると、ホストＣＰＵ６は、撮像装置１０の動作モードに応じて、実行する画像処理を選択する（ステップＳ２０１）。ここでは、上述したように、４種類の異なる画像処理（処理Ａ、処理Ｂ、処理Ｃ、および処理Ｄ）を選択する。
【００９７】
続いて、ホストＣＰＵ６は、選択したそれぞれの画像処理におけるデータの転送時間と演算時間との時間差ｄｉｆｆ［ｉ］を算出する（ステップＳ２０２）。ステップＳ２０２における時間差ｄｉｆｆ［ｉ］の算出では、それぞれの画像処理（処理Ａ、処理Ｂ、処理Ｃ、および処理Ｄ）毎に、「演算時間」から「データの転送時間」を減算した時間差ｄｉｆｆ［ｉ］を算出する。ここで、“ｉ”は、それぞれの画像処理に対応する時間差ｄｉｆｆを区別するものである。以下の説明においては、処理Ａ、処理Ｂ、処理Ｃ、および処理Ｄのそれぞれに対応した時間差ｄｉｆｆをそれぞれ、時間差ｄｉｆｆ［Ａ］、時間差ｄｉｆｆ［Ｂ］、時間差ｄｉｆｆ［Ｃ］、および時間差ｄｉｆｆ［Ｄ］とする。なお、データの転送時間と演算時間との差の時間、すなわち、時間差ｄｉｆｆ［ｉ］をプログラムデータとして予め格納している場合には、ステップＳ２０２は不要となる。
【００９８】
ここでは、上述したように、処理Ａおよび処理Ｂは、データの転送時間よりも演算時間の方が長く、処理Ｃおよび処理Ｄは、データの転送時間よりも演算時間の方が短い。従って、時間差ｄｉｆｆ［Ａ］と時間差ｄｉｆｆ［Ｂ］とは正の値であり、時間差ｄｉｆｆ［Ｃ］と時間差ｄｉｆｆ［Ｄ］とは負の値である。また、上述したように、処理Ａと処理Ｂとでは、処理Ａの方がデータの転送時間と演算時間との差の時間が大きく、処理Ｃと処理Ｄとでは、処理Ｃの方がデータの転送時間と演算時間との差の時間が大きい。従って、時間差ｄｉｆｆ［Ａ］と時間差ｄｉｆｆ［Ｂ］とでは、時間差ｄｉｆｆ［Ａ］の方が大きく、時間差ｄｉｆｆ［Ｃ］と時間差ｄｉｆｆ［Ｄ］とでは、時間差ｄｉｆｆ［Ｃ］の方が絶対値が大きい。
【００９９】
続いて、ホストＣＰＵ６は、最大結合処理数の回数だけ繰り返すループを、時間差ｄｉｆｆ［ｉ］が正の値である処理の数（以下、「処理数ＴＡＳＫ＿ＮＵＭ」という）の回数だけ繰り返し、画像処理プロセッサ５が同時期に（並行して）実行を指示する画像処理の組み合わせを決定する。なお、上述したように、時間差ｄｉｆｆ［ｉ］が正の値である処理は、処理Ａと処理Ｂとである。従って、処理数ＴＡＳＫ＿ＮＵＭは“２”である。
【０１００】
まず、処理数ＴＡＳＫ＿ＮＵＭの回数だけ繰り返す１回目の処理（ここでは、処理Ａに対応する処理）において、最大結合処理数の回数だけ繰り返すループを実行する。最大結合処理数の回数だけ繰り返すループでは、まず、今回の対象としている処理に組み合わせる他の処理を検索する（ステップＳ２０３）。ステップＳ２０３における処理の検索では、それぞれの処理の時間差ｄｉｆｆ［ｉ］の絶対値が、今回の対象としている処理の時間差ｄｉｆｆ［ｉ］の内輪の値に最も近い負の値である処理を検索する。ここでは、対象としている処理が処理Ａであるため、処理Ａの時間差ｄｉｆｆ［Ａ］の内輪の値に最も近い方の時間差ｄｉｆｆ［Ｃ］の絶対値または処理Ｄの時間差ｄｉｆｆ［Ｄ］の絶対値を検出する。そして、処理Ｃまたは処理Ｄのいずれかを、処理Ａに組み合わせる処理として選択する。なお、処理Ｂは、時間差ｄｉｆｆ［Ｂ］が正の値であるため、検索の対象、すなわち、処理Ａに組み合わせる処理ではない。
【０１０１】
続いて、ホストＣＰＵ６は、組み合わせる処理があるか否かを判定する（ステップＳ２０４）。ステップＳ２０４において、組み合わせる処理がある場合には、ホストＣＰＵ６は、今回の対象としている処理の時間差ｄｉｆｆ［ｉ］に選択した処理の時間差ｄｉｆｆ［ｉ］を加算し、処理を組み合わせた後の新たな時間差ｄｉｆｆ［ｉ］を算出する（ステップＳ２０５）。ここで算出される新たな時間差ｄｉｆｆ［ｉ］の値は、今回の対象としている処理の時間差ｄｉｆｆ［ｉ］の値から選択した処理の時間差ｄｉｆｆ［ｉ］の値を減算した正の値となる。
【０１０２】
以降、ホストＣＰＵ６は、今回の対象としている処理の時間差ｄｉｆｆ［ｉ］を、算出した新たな時間差ｄｉｆｆ［ｉ］に置き換えて、ステップＳ２０３〜ステップＳ２０５までのループの処理を、最大結合処理数の回数だけ繰り返す。その後、ホストＣＰＵ６は、ステップＳ２０３〜ステップＳ２０５までのループの処理の繰り返しを、最大結合処理数と同じ回数だけ行うと、処理のループを抜け出す。また、ステップＳ２０４において、組み合わせる処理がない場合、すなわち、最大結合処理数と同じ回数だけ繰り返す前であっても、対象としている処理の時間差ｄｉｆｆ［ｉ］の内輪の値に最も近い負の値である処理がない場合には、ステップＳ２０３〜ステップＳ２０５までの処理のループを抜け出す。
【０１０３】
続いて、ホストＣＰＵ６は、同様に、処理数ＴＡＳＫ＿ＮＵＭの回数だけ繰り返す２回目の処理（ここでは、処理Ｂに対応する処理）において、最大結合処理数の回数だけ繰り返すループの処理を実行する。
【０１０４】
以降、同様に、ホストＣＰＵ６は、最大結合処理数の回数だけ繰り返すループの処理を処理数ＴＡＳＫ＿ＮＵＭの回数だけ繰り返す。その後、ホストＣＰＵ６は、最大結合処理数の回数だけ繰り返すループの処理の繰り返しを、処理数ＴＡＳＫ＿ＮＵＭと同じ回数だけ行うと、すなわち、時間差ｄｉｆｆ［ｉ］が正の値である全ての処理に対して、画像処理プロセッサ５で同時期に（並行して）実行する他の画像処理の組み合わせを決定すると、処理のループを抜け出す。
【０１０５】
なお、ここでは、処理数ＴＡＳＫ＿ＮＵＭ＝２であるため、ホストＣＰＵ６は、処理数ＴＡＳＫ＿ＮＵＭの回数だけ繰り返すループの処理を２回繰り返す。また、最大結合処理数＝２であるため、ホストＣＰＵ６は、最大で２種類の画像処理を結合する。以下の説明においては、処理Ａに処理Ｃが組み合わされ、処理Ｂに処理Ｄが組み合わされたものとして説明を行う。
【０１０６】
続いて、ホストＣＰＵ６は、画像処理プロセッサ５が実行した画像処理の組み合わせの数を表すカウント値ｔａｓｋ＿ｃｎｔをリセット（初期化）、すなわち、“０”にする。そして、ホストＣＰＵ６は、複数処理実行の処理を開始する。
【０１０７】
複数処理実行の処理において、ホストＣＰＵ６は、まず、割り込み処理を実行する（ステップＳ２０７）。ステップＳ２０７の割り込み処理では、ホストＣＰＵ６が、撮像装置１０内の各構成要素からの割り込み信号を受け付ける。その後、キャプチャ部３は、イメージャ２から出力された画像信号を１フレーム分キャプチャした入力画像データをＤＲＡＭ４に格納すると、ホストＣＰＵ６にキャプチャ完了信号を出力する。
【０１０８】
ホストＣＰＵ６が、撮像装置１０内の各構成要素からの割り込み信号を受け付けると、受け付けた割り込みの要因を判定する（ステップＳ２０８）。ステップＳ２０８において、割り込みの要因がキャプチャ部３からのキャプチャ完了信号である場合には、ホストＣＰＵ６は、画像処理プロセッサ５を起動する（ステップＳ２１１）。ホストＣＰＵ６が画像処理プロセッサ５を起動する際、ホストＣＰＵ６は、画像処理プロセッサ５に実行指示を出力するとともに、最初に実行する画像処理の組み合わせ（ここでは、まず、処理Ａと処理Ｃとの２種類の組み合わせ）を表す情報を画像処理プロセッサ５に出力する。この実行する画像処理の組み合わせを表す情報には、画像処理プロセッサ５に備えた複数種類（例えば、Ｎ種類）の画像処理演算部５２のそれぞれを、異なるそれぞれのビットで表したフラグが用いられる。この場合、ホストＣＰＵ６は、今回実行する画像処理に対応するビットをＯＮにしたフラグを、画像処理プロセッサ５に出力する。
【０１０９】
画像処理プロセッサ５は、ホストＣＰＵ６によって起動が指示される、すなわち、ホストＣＰＵ６から実行指示と実行する画像処理の情報を表すフラグが入力されると、指示された組み合わせの画像処理の実行を開始する。まず、画像処理プロセッサ５は、入力されたフラグにおいてＯＮになっているビットに対応した画像処理演算部５２が、画像処理する際に必要とする内蔵メモリの容量を動的に確保する（ステップＳ２１４）。
【０１１０】
なお、画像処理プロセッサ５は、キャプチャ部３が１フレーム分キャプチャした入力画像データを、それぞれの処理に応じた複数個（例えば、Ｍ個）に分割し、分割した入力画像データのそれぞれに対する画像処理を、それぞれの処理に応じて分割した数分だけ繰り返すことによって、１フレーム分の画像処理を完了する。従って、それぞれの画像処理演算部５２に対応して動的に確保する内蔵メモリの容量は、分割した入力画像データに対して画像処理を施すために必要な小容量である。以下の説明においては、処理Ａ、処理Ｂ、処理Ｃ、および処理Ｄのそれぞれの画像処理における入力画像データの分割数を、それぞれ分割数Ｍａ、分割数Ｍｂ、分割数Ｍｃ、および分割数Ｍｄとする。
【０１１１】
続いて、画像処理プロセッサ５は、今回実行する２種類の画像処理（処理Ａおよび処理Ｃ）のそれぞれに必要な、分割した最初（１個目）の入力画像データ（１／Ｍａの入力画像データ、および１／Ｍｃの入力画像データ）をＤＲＡＭ４から読み出すため、フラグがＯＮになっているビットに対応したリードＤＭＡ（１回目のリードＤＭＡ）を起動する（ステップＳ２１５）。次に、画像処理プロセッサ５は、分割した処理の１回目のループにおいて、フラグがＯＮになっているビットに対応した１回目のリードＤＭＡの終了を待つ（ステップＳ２１６）。１回目のリードＤＭＡが終了すると、画像処理プロセッサ５は、次（２個目）の入力画像データ（１／Ｍａの入力画像データ、および１／Ｍｃの入力画像データ）を事前にＤＲＡＭ４から読み出すため、フラグがＯＮになっているビットに対応したリードＤＭＡ（２回目のリードＤＭＡ）を起動する（ステップＳ２１７）。
【０１１２】
画像処理プロセッサ５は、２回目のリードＤＭＡによって２個目の入力画像データをＤＲＡＭ４から読み出している間に、１個目の入力画像データに対して、フラグがＯＮになっているビットに対応した２種類の画像処理（処理Ａおよび処理Ｃの演算）を、同時期に（並行して）実行する（ステップＳ２１８およびステップＳ２１９）。なお、図７に示したフローチャートでは、第１の処理の演算（ステップＳ２１８）と第２の処理の演算（ステップＳ２１９）とを、順次実行する場合の一例を示している。ここでは、処理Ａが第１の処理に対応し、処理Ｃが第２の処理に対応する。
【０１１３】
その後、フラグがＯＮになっているビットに対応した２種類の画像処理が完了すると、画像処理プロセッサ５は、今回の処理のループが１回目のループであるか否かを判定する（ステップＳ２２０）。ステップＳ２２０において、今回の処理のループが１回目のループである場合には、画像処理プロセッサ５は、１個目の入力画像データ（１／Ｍａの入力画像データ、および１／Ｍｃの入力画像データ）に対して画像処理を施した後のそれぞれの１個目の画像処理結果をＤＲＡＭ４に書き戻すため、フラグがＯＮになっているビットに対応したライトＤＭＡ（１回目のライトＤＭＡ）を起動する（ステップＳ２２２）。
【０１１４】
なお、図７に示したフローチャートでは、第１の処理（処理Ａ）の演算（ステップＳ２１８）と第２の処理（処理Ｃ）の演算（ステップＳ２１９）とを順次実行し、２種類の画像処理が完了した後に、フラグがＯＮになっているビットに対応したライトＤＭＡを起動する（ステップＳ２２２）場合について説明した。しかし、画像処理を実行し、画像処理を施した後の画像処理結果をＤＲＡＭ４に書き戻す手順は、図７に示したステップＳ２１８〜ステップＳ２２２までの処理手順のみに限定されるものではない。例えば、図３に示した第１の実施形態の複数処理実行方法の処理手順におけるステップＳ８〜ステップＳ１２までの処理と同様に、それぞれの画像処理が完了する毎に、画像処理を施した後の画像処理結果をＤＲＡＭ４に書き戻す手順にすることもできる。
【０１１５】
そして、画像処理プロセッサ５は、分割した処理の２回目のループにおいて、フラグがＯＮになっているビットに対応した２回目のリードＤＭＡの終了を待つ（ステップＳ２１６）。２回目のリードＤＭＡが終了すると、画像処理プロセッサ５は、次（３個目）の入力画像データ（１／Ｍａの入力画像データ、および１／Ｍｃの入力画像データ）を事前にＤＲＡＭ４から読み出すため、フラグがＯＮになっているビットに対応したリードＤＭＡ（３回目のリードＤＭＡ）を起動する（ステップＳ２１７）。
【０１１６】
画像処理プロセッサ５は、３回目のリードＤＭＡによって３個目の入力画像データをＤＲＡＭ４から読み出している間に、２個目の入力画像データに対して、フラグがＯＮになっているビットに対応した２種類の画像処理（処理Ａおよび処理Ｃの演算）を、同時期に（並行して）実行する（ステップＳ２１８およびステップＳ２１９）。
【０１１７】
その後、フラグがＯＮになっているビットに対応した２種類の画像処理が完了すると、画像処理プロセッサ５は、今回の処理のループが１回目のループであるか否かを判定する（ステップＳ２２０）。ステップＳ２２０において、今回の処理のループが１回目のループでない場合には、画像処理プロセッサ５は、フラグがＯＮになっているビットに対応した１回目のライトＤＭＡの終了を待つ（ステップＳ２２１）。フラグがＯＮになっているビットに対応した１回目のライトＤＭＡが終了すると、画像処理プロセッサ５は、２個目の入力画像データ（１／Ｍａの入力画像データ、および１／Ｍｃの入力画像データ）に対して画像処理を施した後のそれぞれの２個目の画像処理結果をＤＲＡＭ４に書き戻すため、フラグがＯＮになっているビットに対応したライトＤＭＡ（２回目のライトＤＭＡ）を起動する（ステップＳ２２２）。
【０１１８】
以降、同様に、画像処理プロセッサ５は、ステップＳ２１６〜ステップＳ２２２までの処理を、入力画像データを分割した数分（例えば、Ｍ回）だけ繰り返す。その後、画像処理プロセッサ５は、ステップＳ２１６〜ステップＳ２２２までの処理の繰り返しを、入力画像データを分割した数と同じ回数行うと、すなわち、キャプチャ部３がキャプチャした１フレーム分の入力画像データに対して実行した、フラグがＯＮになっているビットに対応した２種類の画像処理が完了すると、処理のループを抜け出す。そして画像処理プロセッサ５は、フラグがＯＮになっているビットに対応した最後のライトＤＭＡの終了を待つ（ステップＳ２２３）。フラグがＯＮになっているビットに対応した最後のライトＤＭＡが終了する、すなわち、キャプチャ部３がキャプチャした１フレーム分の入力画像データに対して実行した、フラグがＯＮになっているビットに対応した２種類の画像処理結果（処理Ａおよび処理Ｃの画像処理結果）をＤＲＡＭ４に書き戻すと、画像処理プロセッサ５は、終了割り込み信号をホストＣＰＵ６に出力する（ステップＳ２２４）。
【０１１９】
ホストＣＰＵ６は、割り込み処理において、画像処理プロセッサ５からの終了割り込み信号を受け付ける（ステップＳ２０７）。ホストＣＰＵ６が、画像処理プロセッサ５からの終了割り込み信号を受け付けると、受け付けた割り込みの要因を判定する（ステップＳ２０８）。ここでは、ステップＳ２０８において、割り込みの要因が画像処理プロセッサ５からの終了割り込み信号であると判定される。
【０１２０】
続いて、ホストＣＰＵ６は、カウント値ｔａｓｋ＿ｃｎｔに“１”を加算する、すなわち、カウント値ｔａｓｋ＿ｃｎｔの値を１つ進める（ステップＳ２０９）。そして、ホストＣＰＵ６は、入力画像データに対して施す全ての画像処理（処理Ａ、処理Ｂ、処理Ｃ、および処理Ｄ）が完了したか否かを判定する（ステップＳ２１０）。ステップＳ２１０の判定では、カウント値ｔａｓｋ＿ｃｎｔの値が、処理数ＴＡＳＫ＿ＮＵＭの値に到達しているか否かによって、全ての画像処理が完了したか否かを判定する。そして、カウント値ｔａｓｋ＿ｃｎｔの値が処理数ＴＡＳＫ＿ＮＵＭの値に到達している場合に、全ての画像処理が完了したと判定し、カウント値ｔａｓｋ＿ｃｎｔの値が処理数ＴＡＳＫ＿ＮＵＭの値に到達していない場合に、全ての画像処理が完了していないと判定する。これは、本第３の実施形態の複数処理実行方法では、時間差ｄｉｆｆ［ｉ］が正の値である処理に時間差ｄｉｆｆ［ｉ］が負の値である処理を組み合わせている。従って、時間差ｄｉｆｆ［ｉ］が正の値である処理の数である処理数ＴＡＳＫ＿ＮＵＭの値だけ画像処理の組み合わせができる。このことから、画像処理プロセッサ５が、処理数ＴＡＳＫ＿ＮＵＭの回数だけ組み合わせた画像処理を実行すると、全ての画像処理が完了したことになるためである。
【０１２１】
ここでは、ステップＳ２１０において、全ての画像処理が完了していないと判定されるため、ホストＣＰＵ６は、再度、画像処理プロセッサ５を起動する（ステップＳ２１１）。ホストＣＰＵ６が画像処理プロセッサ５を起動する際、ホストＣＰＵ６は、画像処理プロセッサ５に実行指示を出力するとともに、次に実行する画像処理の組み合わせ（ここでは、まず、処理Ｂと処理Ｄとの２種類の組み合わせ）を表す情報を画像処理プロセッサ５に出力する。
【０１２２】
画像処理プロセッサ５は、ホストＣＰＵ６によって起動が指示されると、指示された組み合わせの画像処理の実行を開始し、入力されたフラグにおいてＯＮになっているビットに対応した処理Ｂと処理Ｄとの２種類の画像処理演算部５２が、画像処理する際に必要とする内蔵メモリの容量を動的に確保する（ステップＳ２１４）。
【０１２３】
続いて、画像処理プロセッサ５は、今回実行する２種類の画像処理（処理Ｂおよび処理Ｄ）のそれぞれに必要な、分割した最初（１個目）の入力画像データ（１／Ｍｂの入力画像データ、および１／Ｍｄの入力画像データ）をＤＲＡＭ４から読み出すため、フラグがＯＮになっているビットに対応したリードＤＭＡ（１回目のリードＤＭＡ）を起動する（ステップＳ２１５）。
【０１２４】
以降、上述した処理Ａと処理Ｃとの２種類の画像処理と同様の手順で、処理Ｂと処理Ｄとの２種類の画像処理を実行する。なお、処理Ｂと処理Ｄとの２種類の画像処理は、処理Ｂが第１の処理（ステップＳ２１８）に対応し、処理Ｄが第２の処理（ステップＳ２１９）に対応する以外は、上述した処理Ａと処理Ｃとの２種類の画像処理と同様の手順で実行されるため、詳細な説明は省略する。
【０１２５】
その後、フラグがＯＮになっているビットに対応した２種類の画像処理（処理Ｂおよび処理Ｄ）が完了する、すなわち、キャプチャ部３がキャプチャした１フレーム分の入力画像データに対して実行した、フラグがＯＮになっているビットに対応した２種類の画像処理結果（処理Ｂおよび処理Ｄの画像処理結果）をＤＲＡＭ４に書き戻すと、画像処理プロセッサ５は、終了割り込み信号をホストＣＰＵ６に出力する（ステップＳ２２４）。
【０１２６】
ホストＣＰＵ６は、割り込み処理において、画像処理プロセッサ５からの終了割り込み信号を受け付ける（ステップＳ２０７）。ホストＣＰＵ６が、画像処理プロセッサ５からの終了割り込み信号を受け付けると、受け付けた割り込みの要因を判定する（ステップＳ２０８）。ここでは、ステップＳ２０８において、割り込みの要因が画像処理プロセッサ５からの終了割り込み信号であると判定される。
【０１２７】
続いて、ホストＣＰＵ６は、カウント値ｔａｓｋ＿ｃｎｔに“１”を加算して、カウント値ｔａｓｋ＿ｃｎｔの値を１つ進める（ステップＳ２０９）。そして、ホストＣＰＵ６は、入力画像データに対して施す全ての画像処理（処理Ａ、処理Ｂ、処理Ｃ、および処理Ｄ）が完了したか否かを判定する（ステップＳ２１０）。ここでは、ステップＳ２１０において、全ての画像処理が完了したと判定されるため、ホストＣＰＵ６は、画像処理部７を起動し、画像処理プロセッサ５がＤＲＡＭ４に書き戻した画像処理結果に対して各種の画像処理を施させる（ステップＳ２１２）。そして、ホストＣＰＵ６は、カウント値ｔａｓｋ＿ｃｎｔをリセット（初期化）、すなわち、“０”にする。
【０１２８】
上記に述べたように、本第３の実施形態の複数処理実行方法を適用した撮像装置１０では、ホストＣＰＵ６が、画像処理プロセッサ５に実行させる画像処理の組み合わせを、画像処理プロセッサ５に備えた内蔵メモリの容量を考慮して動的に決定する。これにより、第１の実施形態の複数処理実行方法と同様に、ホストＣＰＵ６が、画像処理プロセッサ５に複数種類（例えば、Ｎ種類）の異なる画像処理を、同時期に（並行して）施させる。これにより、本第３の実施形態の複数処理実行方法でも、第１の実施形態の複数処理実行方法と同様に、従来のプロセッサの処理においてシステムの性能を低下させてしまう要因となっていたデータ転送や演算の待ち時間を、同時期に（並行して）実行している他の処理を実行する時間に充てることができ、システム全体の処理における待ち時間を少なくし、システム性能の低下を防止することができる。
【０１２９】
また、本第３の実施形態の複数処理実行方法を適用した撮像装置１０では、ホストＣＰＵ６が、画像処理プロセッサ５に実行させる画像処理の組み合わせを決定する際に、必要以上に多くの種類の画像処理を組み合わせないようにすることができる。そして、画像処理プロセッサ５が、ホストＣＰＵ６から指示された画像処理を実行する際に必要な入力画像データを一時記憶するための内蔵メモリの容量を動的に確保する。これにより、本第３の実施形態の複数処理実行方法では、画像処理プロセッサ５に備えた内蔵メモリの容量を圧迫することがなくなる。
【０１３０】
なお、本第３の実施形態の複数処理実行方法を適用した撮像装置１０では、ホストＣＰＵ６が、画像処理プロセッサ５に実行させる画像処理を、必要以上に多くしないように画像処理の組み合わせを決定するため、ハンドシェークの処理の回数が、第１の実施形態の複数処理実行方法や第２の実施形態の複数処理実行方法よりも多くなることも考えられる。しかし、本第３の実施形態の複数処理実行方法でも、複数種類（例えば、Ｎ種類）の異なる画像処理を一纏めにして、同時期に（並行して）施させるため、従来のプロセッサの処理において、それぞれの処理を単体で実行するたびに行われているハンドシェークの処理の回数よりは、ハンドシェークの処理の回数を削減することができる。このことにより、本第３の実施形態の複数処理実行方法でも、システム全体の処理におけるハンドシェークに要する処理時間を少なくし、システム性能の低下をさらに防止することができる。
【０１３１】
なお、本第３の実施形態の複数処理実行方法では、画像処理プロセッサ５の処理手順が、第１の実施形態の複数処理実行方法とほぼ同様の手順である場合について説明したが、画像処理プロセッサ５の処理手順を、第２の実施形態の複数処理実行方法とほぼ同様の手順にすることもできる。
【０１３２】
上記に述べたとおり、本発明を実施するための形態によれば、画像処理プロセッサにおいて、データ転送を行う入出力部（ＤＭＡ部５１）と、画像処理の演算を行う演算部（画像処理演算部５２）との動作を分け、それぞれの入出力部の制御と、それぞれの演算部の制御とを一纏めにして制御する。これにより、本発明を実施するための形態では、画像処理プロセッサにおけるデータ転送と画像処理の演算とを、同時期に（並行して）実行することができる。このことにより、本発明を実施するための形態では、従来のプロセッサの処理においてシステムの性能を低下させてしまう要因となっていたデータ転送や演算の待ち時間を、同時期に（並行して）実行している他の画像処理を実行する時間に充てることができる。また、本発明を実施するための形態では、複数種類の異なる画像処理を組み合わせて（一纏めにして）、同時期に（並行して）実行することができる。このことにより、本発明を実施するための形態では、従来のプロセッサの処理において、それぞれの処理を単体で実行するたびに行われているハンドシェークの処理の回数を、同時期に（並行して）実行する画像処理の組み合わせの回数に削減することができる。これらのことにより、本発明を実施するための形態では、複数の処理を実行するシステムにおいて、ハンドシェークが頻発することや、それぞれの処理内での待ち時間が発生することによるシステム性能の低下を低減することができる。
【０１３３】
なお、本実施形態においては、画像処理プロセッサ５が、２種類の異なる画像処理を同時期に（並行して）実行する場合について説明した。しかし、画像処理プロセッサ５が同時期に（並行して）実行する画像処理の数は、２種類に限定されるものではなく、さらに多くの種類の画像処理を同時期に（並行して）実行する場合であっても、同様に本発明の複数処理実行方法を適用することができる。
【０１３４】
なお、本実施形態においては、本発明の複数処理実行方法を、撮像装置１０に適用した場合について説明した。しかし、本発明の複数処理実行方法を適用することができるシステムは、本発明を実施するための形態に限定されるものではなく、ホストＣＰＵと、ホストＣＰＵに制御される割り込み制御機構を持たないプロセッサとを備え、プロセッサで複数の処理を行うシステムであれば、どのようなシステムも適用することができる。
【０１３５】
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。
【符号の説明】
【０１３６】
１０・・・撮像装置（データ処理システム）
１・・・レンズ
２・・・イメージャ
３・・・キャプチャ部
４・・・ＤＲＡＭ（外部メモリ）
５・・・画像処理プロセッサ（プロセッサ）
５１・・・ＤＭＡ部
５２・・・画像処理演算部（処理部）
６・・・ホストＣＰＵ
７・・・画像処理部
８・・・記録部
９・・・メモリカード
【図１】
2013175074.tif 000003
【図２】
2013175074.tif 000004
【図３】
2013175074.tif 000005
【図４】
2013175074.tif 000006
【図５】
2013175074.tif 000007
【図６】
2013175074.tif 000008
【図７】
2013175074.tif 000009
【図８】
2013175074.tif 000010