(57)【特許請求の範囲】
【請求項１】
予め定められたデータ取得単位毎にデータを取得するデータ取得部と、
前記データ取得部が１つの前記データ取得単位で取得する量のデータを記憶する記憶容量に加え、前記データ取得単位に満たない量のデータを記憶する追加記憶容量を具備する複数のバッファ部と、
前記データ取得部が取得するデータの内、有効なデータの量を算出すると共に、前記データ取得部が取得したデータが有効なデータであるか否かを表す有効データ情報を出力する有効データ量算出部と、
前記複数のバッファ部を排他的に制御して、前記データ取得部が取得したデータの前記複数のバッファ部のいずれか１つのバッファ部への書き込みを制御するデータ書き込み制御部と、
を備え、
前記有効データ量算出部は、
前記算出した有効なデータの量と、前記バッファ部に具備された前記追加記憶容量とに基づいて、前記データ取得部による１回のデータ取得において取得する前記データ取得単位の数を決定し、
前記データ取得部は、
前記有効データ量算出部によって決定された数の前記データ取得単位に含まれるデータを取得し、
前記データ書き込み制御部は、
前記有効データ量算出部から出力された有効データ情報に基づいて、前記複数のバッファ部のいずれか１つのバッファ部にデータを書き込むか否かを制御する、
ことを特徴とするデータ処理装置。
【請求項２】
前記バッファ部に具備される前記追加記憶容量は、
前記データ取得部が、前記データ取得単位に満たない量のデータを取得するのに要する取得時間と、該データ取得単位に満たない量のデータを処理するのに要する処理時間とに基づいて決定された記憶容量である、
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記有効データ量算出部は、
前記有効なデータの量が、前記追加記憶容量以下である場合、
前記データ取得部による１回のデータ取得において取得する前記データ取得単位の数を２つとし、
前記データ取得部は、
連続する２つの前記データ取得単位に含まれるデータを取得する、
ことを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
前記有効データ量算出部は、
前記有効なデータの量が、前記追加記憶容量よりも多い場合、
前記データ取得部による１回のデータ取得において取得する前記データ取得単位の数を１つとする、
ことを特徴とする請求項３に記載のデータ処理装置。
【請求項５】
前記データ書き込み制御部は、
前記データ取得部が取得したデータの内、前記有効データ量算出部から出力された有効データ情報が有効なデータであることを表しているデータのみ、前記複数のバッファ部のいずれか１つのバッファ部に書き込むように制御する、
ことを特徴とする請求項４に記載のデータ処理装置。
【請求項６】
前記データ書き込み制御部は、
前記データ取得部が取得したデータの内、前記有効データ量算出部から出力された有効データ情報が有効なデータであることを表しているデータを、前記複数のバッファ部のいずれか１つのバッファ部に書き込むときに、前記複数のバッファ部のいずれか１つのバッファ部にデータ書き込み制御信号を出力する、
ことを特徴とする請求項５に記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置に関する。
【背景技術】
【０００２】
静止画用カメラ、動画用カメラ、医療用内視鏡カメラ、または産業用内視鏡カメラなどの撮像装置に備えた画像処理装置において、例えば、特許文献１に開示された技術のように、２つのラインバッファを交互に使用することによってフィルタ処理などを行う画像処理回路が知られている。このような画像処理回路においては、１フレームの静止画像を複数のブロックに分割し、分割したブロック毎に画像処理が行われる。
【０００３】
しかし、図６（ａ）に示したように、１フレームの静止画像を複数のブロックに分割した場合、分割したそれぞれのブロック内では処理を行う画像データの流れが連続しているが、異なるブロックとの間ではデータの流れが連続していない（図６（ｂ）参照）。そのため、１つのブロックの処理が完了する毎に、画像処理回路をリセットし、次に処理するブロックに対応した画像データの範囲などの設定を、毎回設定し直すという手続が必要であった。
【０００４】
このように、各ブロックの処理毎に画像処理回路の動作を制御した場合、画像処理回路が動作していない時間的なロスの期間が、それぞれのブロックの処理の間に発生してしまう、という問題がある。この画像処理回路が動作していないロス時間は、１フレームの静止画像を処理するパイプライン処理全体の処理時間に影響することとなる。
【０００５】
パイプライン処理において各ブロック間の処理の時間的なロスを低減するため、例えば、特許文献２のような技術が開示されている。特許文献２に開示された技術では、パイプラインを構成する各処理回路毎に、当該処理回路による処理が完了したことを表す割込み信号（処理完了割込み信号）を、パイプライン処理の全体を制御するシーケンサに出力する。そして、シーケンサが、処理回路から処理完了割込み信号が入力されるたびに、その処理回路の設定を個別に変更する。これにより、シーケンサが処理回路の設定を変更するタイミングが、分割したブロックの処理を開始するタイミング毎ではなく、それぞれのブロックにおいて各処理回路の処理が完了したタイミング毎となる。このようにシーケンサが各処理回路の設定を変更するタイミングをそれぞれの処理回路毎にすることによって、特許文献２の技術では、各ブロック間の処理における時間的なロスを低減し、１フレームの静止画像のパイプライン処理を高速化している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平８−３３６１１４号公報
【特許文献２】特開２０１０−１７６６０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、パイプラインを構成する処理回路の中には、特許文献２に開示された技術を採用して、１つのブロックの処理が完了した後に設定を変更して次のブロックの処理を開始した場合においても、依然として時間的なロスが発生してしまう処理回路が存在する。例えば、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）のバースト転送によって、共通のデータバスに接続されたＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの外部メモリに記憶されたデータにアクセスするデータ処理装置においては、データ処理装置内に備えたデータの一時保存用のバッファの大きさ（容量）や構成と、ＤＭＡ転送（バースト転送）によってデータを転送するデータの量との組み合わせによってロス時間が発生してしまう。これは、バースト転送が予め定められたバースト幅の単位で行われるため、外部メモリ上にデータの切れ目（バースト境界）が存在してしまうことに起因している。
【０００８】
以下に、ロス時間が発生するデータ処理装置の一例を説明する。図７は、ロス時間が発生する従来のデータ処理装置の概略構成の一例を示したブロック図である。図７に示した従来のデータ処理装置は、２つのバッファ（バッファＡとバッファＢ）と、外部メモリに記憶されているブロック処理（画像処理）に必要な画像データ（ブロック処理用データ）を共通のデータバスを介して取得するＤＭＡインタフェース（Ｉ／Ｆ）と、取得したブロック処理用データを一方のバッファに書き込む（格納する）バッファ書き込み回路と、他方のバッファに格納されているブロック処理用データを読み出して画像処理部に出力するバッファ読み出し回路と、他の画像処理回路などのデータ処理装置によって処理された画像データを取得するイメージプロセスインタフェース（Ｉ／Ｆ）と、イメージプロセスインタフェースが取得した画像データとバッファ読み出し回路から入力されたブロック処理用データとを用いて画像処理を行う画像処理部と、を備えている。
【０００９】
図７に示したような構成の従来のデータ処理装置では、イメージプロセスインタフェースから入力される画像データの処理に同期して、外部メモリ上に格納されているブロック処理用データを、ＤＭＡインタフェースおよびバッファ書き込み回路を介して内部のバッファ（バッファＡまたはバッファＢ）に取り込み、それぞれのデータに基づいたブロック処理を行う。ブロック処理用データを格納するバッファの大きさは、バッファ書き込み回路によるバッファへのデータ書き込み処理を簡略化するために、ＤＭＡインタフェースがＤＭＡ転送するブロック処理用データの量と同じバッファサイズ（記憶容量）になっている。すなわち、図７に示した従来のデータ処理装置は、１回のＤＭＡ転送によって、一方のバッファに格納することができる量のブロック処理用データを外部メモリから取得し、ＤＭＡ転送毎に２つのバッファを交互に使用して、各ブロックのブロック処理を行う。
【００１０】
図７に示した従来のデータ処理装置では、例えば、図６（ａ）に示したブロック５のブロック処理に必要なブロック処理用データは、図８に示したように、バッファＡ→バッファＢ→バッファＡ→バッファＢ→バッファＡというように、ＤＭＡインタフェースおよびバッファ書き込み回路を介して順次２つのバッファに格納される。しかし、外部メモリからバースト転送するブロック処理用データのバースト境界は、必ずしも処理するブロックの境界と一致しているとは限らず、図８に示したように、ブロック処理用データが、ＤＭＡインタフェースがバースト転送する際のデータのバースト境界をまたいでバッファに格納されることもある。そのため、例えば、１回目のＤＭＡ転送（バースト転送）によってバッファＡに格納されるブロック処理用データや５回目のＤＭＡ転送（バースト転送）によってバッファＡに格納されるブロック処理用データのように、ブロック５のブロック処理に使用されないブロック処理用データもＤＭＡ転送されることとなる。
【００１１】
図７に示した従来のデータ処理装置では、画像処理部が、２つのバッファに格納されたブロック処理用データを、バッファ読み出し回路を介して交互に読み出して、ブロック処理を行う。ここで、図８に示したように、ブロック処理用データがそれぞれのバッファに格納された場合における従来のデータ処理装置の処理のタイミングを、図９を用いて説明する。
【００１２】
まず、ＤＭＡインタフェースは、外部メモリからＤＭＡ転送（バースト転送）したブロック処理用データを、バッファ書き込み回路を介してバッファＡに格納する。バッファＡへのブロック処理用データの格納が完了すると、ＤＭＡインタフェースは、引き続き外部メモリからＤＭＡ転送したブロック処理用データを、バッファ書き込み回路を介してバッファＢに格納する。
【００１３】
また、画像処理部は、ＤＭＡ転送によってバッファＡにブロック処理用データが格納されると、バッファＡに格納されているブロック処理用データの内、ブロック５のブロック処理に使用する一部（端数）のブロック処理用データをバッファ読み出し回路を介して読み出して、ブロック５のブロック処理を開始する。画像処理部は、バッファＡに格納されているブロック処理用データを用いたブロック５のブロック処理が終了し、バッファＢにブロック処理用データが格納されている場合には、引き続きバッファ読み出し回路を介してバッファＢに格納されているブロック処理用データを読み出して、ブロック５のブロック処理を継続する。
【００１４】
その後、ＤＭＡインタフェースは、バッファＡに格納されているブロック処理用データを用いたブロック５のブロック処理が終了し、バッファＡに格納されているブロック処理用データがブロック５のブロック処理に不要となった場合、引き続きブロック５のブロック処理に必要なブロック処理用データを外部メモリからＤＭＡ転送し、バッファ書き込み回路を介してバッファＡに格納する。以降、ＤＭＡインタフェースは、ブロック５のブロック処理に必要なブロック処理用データを外部メモリからＤＭＡ転送し、バッファ書き込み回路を介してバッファＢ、バッファＡに順次格納する。
【００１５】
また、画像処理部は、バッファＢに格納されているブロック処理用データを用いたブロック５のブロック処理が終了し、バッファＡにブロック処理用データが格納されている場合には、引き続きバッファ読み出し回路を介してバッファＡに格納されているブロック処理用データを読み出して、ブロック５のブロック処理を継続する。以降、画像処理部は、バッファＢ、バッファＡに格納されているブロック処理用データを用いて、ブロック５のブロック処理を順次行う。
【００１６】
ブロック５のブロック処理に用いる最終（図８および図９においては、５回目のＤＭＡ転送）のブロック処理用データのバッファＡへの格納が完了した時点で、データ処理装置のＤＭＡインタフェースおよびバッファ書き込み回路がリセットされ、次に処理するブロック６のブロック処理に必要なブロック処理用データを外部メモリからＤＭＡ転送するための準備が開始される。なお、ブロック５のブロック処理に用いる最終のブロック処理用データは、バッファＡに格納されているため、ブロック６のブロック処理に用いるブロック処理用データは、バッファＢから順次格納することとなる。より具体的には、図８および図９に示したように、バッファＢ→バッファＡ→バッファＢ→バッファＡ→バッファＢというように、ＤＭＡインタフェースおよびバッファ書き込み回路を介して順次２つのバッファに格納される。
【００１７】
しかし、ブロック５のブロック処理に用いる最終のブロック処理用データのバッファＡへの格納が完了した時点では、バッファＢに格納されているブロック処理用データを用いたブロック５のブロック処理が終了していないため、ブロック６のブロック処理に必要なブロック処理用データのＤＭＡ転送を開始することができない。このため、ＤＭＡインタフェースは、バッファＢに格納されているブロック処理用データを用いたブロック５のブロック処理が終了するまで、ＤＭＡ転送（バースト転送）を待機することとなる。そして、ＤＭＡインタフェースは、バッファＢに格納されているブロック処理用データを用いたブロック５のブロック処理が終了し、バッファＢに格納されているブロック処理用データがブロック５のブロック処理に不要となった後に、ブロック６のブロック処理に必要なブロック処理用データのＤＭＡ転送を開始する。
【００１８】
また、画像処理部は、バッファＢに格納されているブロック処理用データを用いたブロック５のブロック処理が終了した後、引き続きバッファ読み出し回路を介してバッファＡに格納されている最終のブロック処理用データを読み出してブロック５のブロック処理を行っている。ブロック５のブロック処理を行うための最終のブロック処理用データは、バッファＡに格納されているブロック処理用データの内、一部（端数）のブロック処理用データである。このため、バッファＡに格納されている最終のブロック処理用データを用いたブロック５のブロック処理は、比較的早い時間に終了する。そして、画像処理部は、引き続きブロック６のブロック処理を開始することができる状態となる。
【００１９】
しかし、ブロック６のブロック処理を開始することができる状態となった時点では、ＤＭＡインタフェースによるブロック６のブロック処理に必要なブロック処理用データの外部メモリからのＤＭＡ転送、およびバッファ書き込み回路を介したバッファＢへの格納が完了していない。このため、画像処理部は、バッファＢにブロック６のブロック処理に必要なブロック処理用データが格納されるまで、ブロック６のブロック処理を待機することとなる。このブロック処理に必要なブロック処理用データがバッファに格納されるまで、すなわち、ＤＭＡ転送（バースト転送）が完了するまで、画像処理部がブロック処理の開始を待機している時間（ブロック処理開始の遅れ時間）が、データ処理装置におけるロス時間となってしまう、という問題がある。そして、このロス時間は、パイプライン処理全体の処理時間に影響してしまう。
【００２０】
本発明は、上記の課題認識に基づいてなされたものであり、複数のバッファを交互に切り替えて分割したブロック毎に処理を行うデータ処理装置において、処理に必要なデータが、当該データを転送する際の転送の切れ目をまたいでいるような場合でも、各ブロックの処理の間のロス時間を低減することができるデータ処理装置を提供することを目的としている。
【課題を解決するための手段】
【００２１】
上記の課題を解決するため、本発明のデータ処理装置は、予め定められたデータ取得単位毎にデータを取得するデータ取得部と、前記データ取得部が１つの前記データ取得単位で取得する量のデータを記憶する記憶容量に加え、前記データ取得単位に満たない量のデータを記憶する追加記憶容量を具備する複数のバッファ部と、前記データ取得部が取得するデータの内、有効なデータの量を算出すると共に、前記データ取得部が取得したデータが有効なデータであるか否かを表す有効データ情報を出力する有効データ量算出部と、前記複数のバッファ部を排他的に制御して、前記データ取得部が取得したデータの前記複数のバッファ部のいずれか１つのバッファ部への書き込みを制御するデータ書き込み制御部と、を備え、前記有効データ量算出部は、前記算出した有効なデータの量と、前記バッファ部に具備された前記追加記憶容量とに基づいて、前記データ取得部による１回のデータ取得において取得する前記データ取得単位の数を決定し、前記データ取得部は、前記有効データ量算出部によって決定された数の前記データ取得単位に含まれるデータを取得し、前記データ書き込み制御部は、前記有効データ量算出部から出力された有効データ情報に基づいて、前記複数のバッファ部のいずれか１つのバッファ部にデータを書き込むか否かを制御する、ことを特徴とする。
【００２２】
また、本発明の前記バッファ部に具備される前記追加記憶容量は、前記データ取得部が、前記データ取得単位に満たない量のデータを取得するのに要する取得時間と、該データ取得単位に満たない量のデータを処理するのに要する処理時間とに基づいて決定された記憶容量である、ことを特徴とする。
【００２３】
また、本発明の前記有効データ量算出部は、前記有効なデータの量が、前記追加記憶容量以下である場合、前記データ取得部による１回のデータ取得において取得する前記データ取得単位の数を２つとし、前記データ取得部は、連続する２つの前記データ取得単位に含まれるデータを取得する、ことを特徴とする。
【００２４】
また、本発明の前記有効データ量算出部は、前記有効なデータの量が、前記追加記憶容量よりも多い場合、前記データ取得部による１回のデータ取得において取得する前記データ取得単位の数を１つとする、ことを特徴とする。
【００２５】
また、本発明の前記データ書き込み制御部は、前記データ取得部が取得したデータの内、前記有効データ量算出部から出力された有効データ情報が有効なデータであることを表しているデータのみ、前記複数のバッファ部のいずれか１つのバッファ部に書き込むように制御する、ことを特徴とする。
【００２６】
また、本発明の前記データ書き込み制御部は、前記データ取得部が取得したデータの内、前記有効データ量算出部から出力された有効データ情報が有効なデータであることを表しているデータを、前記複数のバッファ部のいずれか１つのバッファ部に書き込むときに、前記複数のバッファ部のいずれか１つのバッファ部にデータ書き込み制御信号を出力する、ことを特徴とする。
【発明の効果】
【００２７】
本発明によれば、複数のバッファを交互に切り替えて分割したブロック毎に処理を行うデータ処理装置において、処理に必要なデータが、当該データを転送する際の転送の切れ目をまたいでいるような場合でも、各ブロックの処理の間のロス時間を低減することができるという効果が得られる。
【図面の簡単な説明】
【００２８】
【図１】本発明の実施形態におけるデータ処理装置の概略構成を示したブロック図である。
【図２】本実施形態のデータ処理装置における処理の流れを説明する図である。
【図３】本実施形態のデータ処理装置に備えるバッファのバッファサイズを説明する図である。
【図４】本実施形態のデータ処理装置に備えたバッファにデータを格納したときの一例を示した図である。
【図５】本実施形態のデータ処理装置において行うブロック毎の処理タイミングの一例を示したタイミングチャートである。
【図６】従来のパイプライン処理におけるブロック分けの方法を説明する図である。
【図７】従来のデータ処理装置の概略構成の一例を示したブロック図である。
【図８】従来のデータ処理装置に備えたバッファにデータを格納したときの一例を示した図である。
【図９】従来のデータ処理装置において行うブロック毎の処理タイミングの一例を示したタイミングチャートである。
【発明を実施するための形態】
【００２９】
以下、本発明の実施形態について、図面を参照して説明する。図１は、本実施形態におけるデータ処理装置の概略構成を示したブロック図である。図１に示したデータ処理装置１は、ＤＭＡインタフェース（Ｉ／Ｆ）１０と、バッファ書き込み回路２０と、２つのバッファ（バッファＡ３０およびバッファＢ４０）と、転送量算出部５０と、バッファ読み出し回路６０と、イメージプロセスインタフェース（Ｉ／Ｆ）７０と、画像処理部８０と、を備えている。データ処理装置１は、図７に示した従来のデータ処理装置と同様に、例えば、図６（ａ）に示したように１フレームの静止画像を複数のブロックに分割し、分割したブロック毎にブロック処理（画像処理）を行う。
【００３０】
より具体的には、イメージプロセスインタフェース７０から入力される画像データの処理に同期して、共通のデータバスに接続されたＤＲＡＭなどの外部メモリ上に格納されているブロック処理に必要な画像データ（ブロック処理用データ）を、ＤＭＡインタフェース１０がＤＭＡ転送（バースト転送）によって取得する。そして、ＤＭＡインタフェース１０が取得したブロック処理用データを、バッファ書き込み回路２０が、バッファＡ３０またはバッファＢ４０に格納する。また、画像処理部８０は、バッファＡ３０またはバッファＢ４０に格納されたブロック処理用データをバッファ読み出し回路６０を介して読み出し、読み出したブロック処理用データとイメージプロセスインタフェース７０から入力された画像データとを用いてブロック処理（画像処理）を行う。
【００３１】
データ処理装置１と図７に示した従来のデータ処理装置とを比較すると、データ処理装置１では、２つのバッファ（バッファＡ３０およびバッファＢ４０）のそれぞれの記憶容量が増加され、転送量算出部５０が追加されていることのみが異なる。従って、以下の説明においては、図７に示した従来のデータ処理装置と異なる構成要素および異なる動作のみを説明し、図７に示した従来のデータ処理装置と同様の構成要素および動作に関する詳細な説明は省略する。
【００３２】
バッファＡ３０およびバッファＢ４０は、それぞれ、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などで構成された、ブロック処理用データを一時記憶する記憶部である。バッファＡ３０およびバッファＢ４０は、それぞれ、ＤＭＡインタフェース１０が外部メモリから１回のＤＭＡ転送によって取得するブロック処理用データの量と同じ大きさの記憶容量に加えて、さらに、予め定められた大きさの記憶容量が増加されたバッファサイズ（記憶容量）となっている。以下の説明においては、バッファＡ３０に増加された記憶容量の部分のみを表すときには、「追加バッファＡ３１」という。また、バッファＢ４０に増加された記憶容量の部分のみを表すときには、「追加バッファＢ４１」という。なお、追加バッファＡ３１および追加バッファＢ４１の記憶容量の大きさに関する詳細な説明は、後述する。
【００３３】
ＤＭＡインタフェース１０は、外部メモリに記憶されているブロック処理用データを、ＤＭＡ転送（バースト転送）によって共通のデータバスを介して取得する。そして、ＤＭＡインタフェース１０は、取得したブロック処理用データをバッファ書き込み回路２０に出力する。ＤＭＡインタフェース１０がＤＭＡ転送によってブロック処理用データを取得する方法は、転送量算出部５０によって制御される。なお、転送量算出部５０からの制御に応じたＤＭＡインタフェース１０によるブロック処理用データの取得方法に関する詳細な説明は、後述する。
【００３４】
バッファ書き込み回路２０は、ＤＭＡインタフェース１０から入力されたブロック処理用データを、バッファＡ３０またはバッファＢ４０のいずれか一方のバッファに書き込む（格納する）。バッファ書き込み回路２０によるブロック処理用データの書き込みは、転送量算出部５０から入力されたブロック処理用データの情報に基づいて行われる。なお、転送量算出部５０から入力されるブロック処理用データの情報およびブロック処理用データの情報に基づいたバッファ書き込み回路２０によるブロック処理用データのバッファＡ３０またはバッファＢ４０への書き込み（格納）方法に関する詳細な説明は、後述する。
【００３５】
転送量算出部５０は、ＤＭＡインタフェース１０がＤＭＡ転送によって取得するブロック処理用データの取得方法を制御する。また、転送量算出部５０は、バッファ書き込み回路２０によってバッファＡ３０またはバッファＢ４０に書き込むブロック処理用データの情報を出力する。なお、転送量算出部５０におけるＤＭＡインタフェース１０の制御およびバッファ書き込み回路２０への情報の出力に関する詳細な説明は、後述する。
【００３６】
バッファ読み出し回路６０は、バッファＡ３０またはバッファＢ４０のいずれか一方のバッファに格納されているブロック処理用データを読み出して、画像処理部８０に出力する。
イメージプロセスインタフェース７０は、他の画像処理回路などのデータ処理装置によって処理された画像データを取得し、取得した画像データを画像処理部８０に出力する。
画像処理部８０は、バッファ読み出し回路６０を介して入力されたバッファＡ３０またはバッファＢ４０に格納されたブロック処理用データと、イメージプロセスインタフェース７０から入力された画像データとを用いて、分割したブロック毎のブロック処理を行う。画像処理部８０は、ブロック処理したデータを、例えば、次の画像処理回路など、データ処理装置１の外部に出力する。
【００３７】
ここで、本実施形態のデータ処理装置１におけるブロック処理の流れについて説明する。図２は、本実施形態のデータ処理装置１におけるブロック処理の流れを説明する図である。図２には、データ処理装置１が外部メモリ２からデータを取得してブロック処理（画像処理）したデータを出力するまでの処理の流れと、各段階で読み出しまたは書き込みされるデータの流れとを模式的に示している。なお、図２においては、データ処理装置１に備えたバッファＡ３０およびバッファＢ４０を併せて、「バッファ部３４」として表している。従って、以下の説明において、「バッファ部３４」という場合には、バッファＡ３０またはバッファＢ４０のいずれか一方を示すものとする。
【００３８】
外部メモリ２には、ブロック処理用データが、横方向にデータの流れが連続した状態（ラスター順）で格納されている。ＤＭＡインタフェース１０は、１回のバースト転送において、１バースト幅分のブロック処理用データを、外部メモリ２から取得する。また、ＤＭＡインタフェース１０は、外部メモリ２から取得するブロック処理用データのライン数と同じ回数のバースト転送を行ってＤＭＡ転送を終了する。従って、ＤＭＡインタフェース１０は、１回のＤＭＡ転送において、１バースト幅×ライン数分のブロック処理用データを外部メモリ２から取得する。なお、ＤＭＡインタフェース１０が１回のバースト転送で取得する１バースト幅が、外部メモリ２におけるバースト境界の境界線となる。
【００３９】
例えば、外部メモリ２上に格納されているブロック処理用データが、フレーム毎にＹＣ４２２点順次のフォーマットで格納されているものとする。この場合、ＤＭＡインタフェース１０は、例えば、１バースト幅（３２画素分）×ライン数のブロック処理用データをＤＭＡ転送によって取得する。
【００４０】
バッファ書き込み回路２０は、ＤＭＡインタフェース１０が取得したブロック処理用データを、外部メモリ２に格納されている形式と同様の形式で、バッファ部３４に格納する。その後、バッファ読み出し回路６０は、バッファ部３４に格納されているブロック処理用データを縦横変換、すなわち、縦方向にデータの流れが連続するように変換して読み出し、画像処理部８０に出力する。なお、バッファ読み出し回路６０がバッファ部３４に格納されているブロック処理用データを読み出す際に縦横変換する理由は、イメージプロセスインタフェース７０から画像処理部８０に入力される他のデータ処理装置によって処理された画像データとデータの流れを統一するためである。従って、イメージプロセスインタフェース７０から入力される画像データの流れによっては、バッファ読み出し回路６０によるブロック処理用データの縦横変換は、必ずしも必要な処理ではない。
【００４１】
画像処理部８０は、バッファ読み出し回路６０によって縦横変換されて入力されたブロック処理用データと、イメージプロセスインタフェース７０から入力された画像データとを用いてブロック処理を行い、ブロック処理したデータをデータ処理装置１の外部に出力する。
【００４２】
次に、本実施形態のデータ処理装置１に備えたバッファＡ３０およびバッファＢ４０に増加される記憶容量の大きさ（バッファサイズ）について説明する。図３は、本実施形態のデータ処理装置１に備えるバッファ部３４のバッファサイズ（記憶容量）を説明する図である。図３（ａ）は、図７に示した従来のデータ処理装置に備えたバッファのバッファサイズを模式的に示した図であり、図３（ｂ）は、本実施形態のデータ処理装置１に備えたバッファ部３４のバッファサイズを模式的に示した図である。
【００４３】
図３（ａ）に示したように、図７に示したような構成の従来のデータ処理装置に備えたバッファのバッファサイズは、ＤＭＡインタフェースが１回のバースト転送で取得する１バースト幅で、かつ、画像処理部がブロック処理を行うブロックのライン数である。
【００４４】
それに対して、データ処理装置１に備える２つのバッファ（バッファＡ３０およびバッファＢ４０）のそれぞれは、上記に述べたように、予め定められた大きさの記憶容量αが増加されたバッファサイズとなっている。データ処理装置１に備える２つのバッファのそれぞれに増加される記憶容量ａは、ＤＭＡインタフェース１０がブロック処理用データを取得し、バッファ部３４に書き込む（格納する）ために要する処理時間と、画像処理部８０によってブロック処理する際の処理時間とに基づいて決定される。
【００４５】
例えば、ＤＭＡインタフェース１０が１バースト幅のバースト転送に要する処理時間（クロック数）が４クロックであり、画像処理部８０がブロック処理を行うブロックのライン数が１００ライン、すなわち、画像処理部８０がブロック処理する縦の１ラインの画素数が１００画素、であると仮定した場合を考える。この場合、ＤＭＡインタフェース１０がＤＭＡ転送によってブロック処理用データを取得して、バッファ書き込み回路２０がバッファ部３４に格納する処理時間（クロック数）は、下式（１）のように求めことができる。
【００４６】
４（クロック）×１００（ライン）＝４００（クロック）  ・・・・・（１）
【００４７】
そして、画像処理部８０が１画素のブロック処理に要する処理時間（クロック数）が１クロックであるとして、上式（１）で求めたバッファ部３４に格納する処理時間を、画像処理部８０がブロック処理する縦のライン数に換算すると、下式（２）のようになる。
【００４８】
４００（クロック）／１００（画素）＝４（ライン）  ・・・・・（２）
【００４９】
すなわち、ＤＭＡインタフェース１０がＤＭＡ転送によってブロック処理用データを取得してバッファ部３４に格納する処理時間は、画像処理部８０における縦の４ライン分のブロック処理を行う時間に相当する。このようなことから、データ処理装置１に備えた２つのバッファのそれぞれに追加する記憶容量αは、４ライン×１００画素＝４００画素分以上が必要であることがわかる。従って、データ処理装置１では、この大きさの記憶容量αを、追加バッファＡ３１および追加バッファＢ４１として、それぞれ、バッファＡ３０およびバッファＢ４０に追加する。このように、本実施形態のデータ処理装置１では、ＤＭＡインタフェース１０によってブロック処理用データを取得してバッファ部３４に書き込むために要する処理時間と同じ時間で、画像処理部８０がブロック処理することができる縦のライン数分（追加画素幅）の記憶容量を、従来のデータ処理装置に備えたバッファに増加させたバッファサイズのバッファを備える構成とする。
【００５０】
次に、本実施形態のデータ処理装置１に備えた転送量算出部５０によるＤＭＡインタフェース１０の制御およびバッファ書き込み回路２０への情報の出力について説明する。図４は、本実施形態のデータ処理装置１に備えたバッファにブロック処理用データを格納したときの一例を示した図である。図４は、データ処理装置１におけるブロック処理（画像処理）に必要なブロック処理用データが、ＤＭＡインタフェース１０がバースト転送する際の外部メモリ２におけるバースト境界をまたぎ、かつ、１バースト幅に満たない端数のブロック処理用データが、バッファＡ３０およびバッファＢ４０に増加した記憶容量αの追加画素幅よりも少ない場合を示している。
【００５１】
転送量算出部５０は、それぞれのバースト幅毎に、当該バースト幅のブロック処理に使用する有効なブロック処理用データの量（以下、「有効データ量」という）を算出する。有効データ量は、ブロック処理用データの画像サイズ、ブロック処理の基準座標（例えば、ブロックの左上端の座標）、ブロックのサイズ、ブロック処理用データの格納フォーマットなどの値に基づいて算出される。例えば、図４に示したブロック５のブロック処理では、１つめのバースト幅および５つめのバースト幅では、一部（端数）のブロック処理用データのみが有効なデータであり、２つめ〜４つめまでのバースト幅では、全てのブロック処理用データが有効なデータである。転送量算出部５０は、それぞれのバースト幅内の有効データ量を算出する。
【００５２】
そして、転送量算出部５０は、算出した有効データ量と、バッファに追加した記憶容量αとに基づいて、ＤＭＡインタフェース１０がＤＭＡ転送によってブロック処理用データを取得する際に行われるバースト転送のバースト幅を決定する。
【００５３】
より具体的には、有効データ量が記憶容量α以下（有効データ量≦記憶容量α）である場合、すなわち、１つめのバースト幅に含まれるブロック処理用データの内、一部（端数）の有効なブロック処理用データの横方向の画素数が、追加バッファＡ３１および追加バッファＢ４１の横方向の画素数よりも少ない場合には、転送量算出部５０は、１つめのバースト幅に含まれる有効なブロック処理用データと、２つめのバースト幅に含まれるブロック処理用データとを同じバッファ部３４に格納することができると判断する。そして、転送量算出部５０は、１つめのバースト幅と２つめのバースト幅との２バースト幅分のブロック処理用データを、１回のＤＭＡ転送で取得するように、すなわち、２バースト幅×ライン数分のＤＭＡ転送を行うように、ＤＭＡインタフェース１０を制御する。
【００５４】
逆に、有効データ量が記憶容量αよりも多い（有効データ量＞記憶容量α）である場合、すなわち、１つめのバースト幅に含まれるブロック処理用データの内、一部（端数）の有効なブロック処理用データの横方向の画素数が、追加バッファＡ３１および追加バッファＢ４１の横方向の画素数よりも多い場合には、転送量算出部５０は、１つめのバースト幅に含まれる有効なブロック処理用データと、２つめのバースト幅に含まれるブロック処理用データとを同じバッファ部３４に格納することができないと判断する。そして、転送量算出部５０は、１つめのバースト幅に含まれるブロック処理用データと、２つめのバースト幅に含まれるブロック処理用データとを、２回のＤＭＡ転送に分けて取得するように、すなわち、従来のデータ処理装置と同様に、１バースト幅×ライン数分のＤＭＡ転送を２回行うように、ＤＭＡインタフェース１０を制御する。
【００５５】
そして、転送量算出部５０は、算出した有効データ量に基づいて、ＤＭＡインタフェース１０がＤＭＡ転送によって取得したブロック処理用データが、ブロック処理に使用する有効なデータであるか、ブロック処理に使用しない無効なデータであるかを判断するための情報を、バッファ書き込み回路２０に出力する。
【００５６】
例えば、転送量算出部５０によって、１つめのバースト幅に含まれる有効なブロック処理用データと、２つめのバースト幅に含まれるブロック処理用データとを同じバッファ部３４に格納することができると判断され、ＤＭＡインタフェース１０が２バースト幅×ライン数分のＤＭＡ転送を行った場合でも、１つめのバースト幅における全てのブロック処理用データがバッファ書き込み回路２０に入力される。すなわち、ＤＭＡインタフェース１０によるＤＭＡ転送は、バースト幅の単位でのデータ転送となるため、１つめのバースト幅に含まれる有効なブロック処理用データのみがＤＭＡ転送されるわけではない。
【００５７】
そこで、転送量算出部５０は、ＤＭＡインタフェース１０によってＤＭＡ転送されたブロック処理用データの内、バッファ部３４に格納する有効なブロック処理用データを判断することができる情報を、バッファ書き込み回路２０に出力する。この情報は、例えば、ＤＭＡインタフェース１０からバッファ書き込み回路２０に入力されるブロック処理用データの内、有効なデータの範囲を表す情報や、バースト転送されたブロック処理用データの内、有効なデータの個数または無効なデータの個数を表す情報である。
【００５８】
バッファ書き込み回路２０は、転送量算出部５０から入力された有効なブロック処理用データを判断するための情報に基づいて、ＤＭＡインタフェース１０から入力されたブロック処理用データ毎に、当該ブロック処理用データが有効なデータであるか、無効なデータであるかを判断し、その判断結果に基づいて、バッファ部３４への書き込みを制御する。例えば、無効なブロック処理用データがＤＭＡインタフェース１０から入力された場合には、バッファ部３４へのデータ書き込み制御信号を出力せず、有効なブロック処理用データがＤＭＡインタフェース１０から入力された場合にのみ、バッファ部３４へのデータ書き込み制御信号を出力する。
【００５９】
なお、転送量算出部５０が、ＤＭＡインタフェース１０が取得したブロック処理用データ毎に、当該ブロック処理用データが有効なデータであるか、無効なデータであるかを判断する構成とすることもできる。この場合、転送量算出部５０は、ＤＭＡインタフェース１０が取得したブロック処理用データが有効なデータであるか、無効なデータであるかを表す情報（判断結果）をバッファ書き込み回路２０に出力する。そして、バッファ書き込み回路２０は、転送量算出部５０から入力された判断結果に基づいて、バッファ部３４へのデータ書き込みを制御することによって実現することができる。
【００６０】
また、転送量算出部５０は、ＤＭＡインタフェース１０が有効なブロック処理用データを取得した場合にのみ、ＤＭＡインタフェース１０から入力されたブロック処理用データが有効なデータであることを表す情報を、バッファ書き込み回路２０に出力する。そして、バッファ書き込み回路２０は、転送量算出部５０からブロック処理用データが有効なデータであることを表す情報が入力された場合にのみ、バッファ部３４へのデータ書き込み制御信号を出力することによって実現することができる。
【００６１】
このような制御によって、例えば、図４に示したブロック処理用データをバッファに格納した一例におけるブロック５のブロック処理では、１つめのバースト幅と２つめのバースト幅との２バースト幅分のブロック処理用データが、１回目のＤＭＡ転送で取得され、バッファＡ３０に格納されている。また、３つめのバースト幅のブロック処理用データは、２回目のＤＭＡ転送で取得され、バッファＢ４０に格納されている。また、４つめのバースト幅と５つめのバースト幅との２バースト幅分のブロック処理用データが、３回目のＤＭＡ転送で取得され、バッファＡ３０に格納されている。さらに、ブロック６のブロック処理では、ブロック処理用データが、バッファＢ４０→バッファＡ３０→バッファＢ４０というように、ＤＭＡインタフェース１０およびバッファ書き込み回路２０を介して順次２つのバッファに格納されている。
【００６２】
上記に述べたように、本実施形態のデータ処理装置１では、外部メモリ２からバースト転送するブロック処理用データの外部メモリ２におけるバースト境界が、ブロック処理するブロックの境界と一致していない場合においても、ＤＭＡインタフェース１０が取得した有効なブロック処理用データのみをバッファ部３４に格納することができる。これにより、本実施形態のデータ処理装置１では、安易にバッファサイズを増大させることなく、データの処理を行うことができる。
【００６３】
次に、本実施形態のデータ処理装置１における処理タイミングについて説明する。図５は、本実施形態のデータ処理装置１において行うブロック毎の処理タイミングの一例を示したタイミングチャートである。データ処理装置１では、画像処理部８０が、バッファ部３４の２つのバッファ（バッファＡ３０およびバッファＢ４０）に格納されたブロック処理用データを、バッファ読み出し回路６０を介して交互に読み出して、ブロック処理を行う。ここでは、図４に示したように、ブロック処理用データがそれぞれのバッファに格納された場合におけるデータ処理装置１の処理のタイミングについて説明する。
【００６４】
まず、ＤＭＡインタフェース１０は、タイミングｔ１において、転送量算出部５０によって決定された２バースト幅×ライン数分のブロック処理用データを、１回目のＤＭＡ転送（バースト転送）によって、外部メモリ２から取得する。そして、バッファ書き込み回路２０は、転送量算出部５０から入力されたブロック処理用データの情報に基づいて、ＤＭＡインタフェース１０から入力されたブロック処理用データをバッファＡ３０に格納する。ここでは、図４に示したように、１つめのバースト幅に含まれる有効なブロック処理用データと、２つめのバースト幅に含まれるブロック処理用データとが、バッファＡ３０に格納される。
【００６５】
その後、バッファＡ３０へのブロック処理用データの格納が完了すると、引き続き、ＤＭＡインタフェース１０は、タイミングｔ２において、転送量算出部５０によって決定された１バースト幅×ライン数分のブロック処理用データを、２回目のＤＭＡ転送によって、外部メモリ２から取得する。そして、バッファ書き込み回路２０は、転送量算出部５０から入力されたブロック処理用データの情報に基づいて、ＤＭＡインタフェース１０から入力されたブロック処理用データをバッファＢ４０に格納する。ここでは、図４に示したように、３つめのバースト幅に含まれるブロック処理用データが、バッファＢ４０に格納される。
【００６６】
また、画像処理部８０は、ＤＭＡ転送によってバッファＡ３０にブロック処理用データが格納されると、タイミングｔ３において、バッファＡ３０に格納されているブロック５のブロック処理に使用するブロック処理用データを、バッファ読み出し回路６０を介して読み出して、ブロック５のブロック処理を開始する。
【００６７】
その後、バッファＡ３０に格納されているブロック処理用データを用いたブロック５のブロック処理が終了したとき、すでにバッファＢ４０にはブロック処理用データが格納されているため、引き続き、画像処理部８０は、タイミングｔ４において、バッファ読み出し回路６０を介してバッファＢ４０に格納されているブロック処理用データを読み出して、ブロック５のブロック処理を継続する。
【００６８】
その後、バッファＡ３０に格納されているブロック処理用データを用いたブロック５のブロック処理が終了し、バッファＡ３０に格納されているブロック処理用データがブロック５のブロック処理に不要となったとき、引き続き、ＤＭＡインタフェース１０は、タイミングｔ５において、ブロック５のブロック処理に用いる最終のブロック処理用データを、３回目のＤＭＡ転送によって、外部メモリ２から取得する。最終のブロック処理用データは、転送量算出部５０によって、４つめのバースト幅に含まれるブロック処理用データと、５つめのバースト幅に含まれる有効なブロック処理用データとを同じバッファ部３４に格納することができると判断されたため、ＤＭＡインタフェース１０は、２バースト幅×ライン数分のブロック処理用データを、３回目のＤＭＡ転送で取得する。そして、バッファ書き込み回路２０は、転送量算出部５０から入力されたブロック処理用データの情報に基づいて、ＤＭＡインタフェース１０から入力されたブロック処理用データをバッファＡ３０に格納する。ここでは、図４に示したように、４つめのバースト幅に含まれるブロック処理用データと、５つめのバースト幅に含まれる有効なブロック処理用データとが、バッファＡ３０に格納される。
【００６９】
そして、最終のブロック処理用データのバッファＡ３０への格納が完了したとき、データ処理装置１のＤＭＡインタフェース１０およびバッファ書き込み回路２０がリセットされ、次に処理するブロック６のブロック処理に必要なブロック処理用データを外部メモリからＤＭＡ転送するための準備が開始される。なお、ブロック５のブロック処理に用いる最終のブロック処理用データは、バッファＡ３０に格納されているため、ブロック６のブロック処理に用いるブロック処理用データは、バッファＢ４０から順次格納することとなる。より具体的には、図４に示したように、バッファＢ４０→バッファＡ３０→バッファＢ４０というように、ＤＭＡインタフェース１０およびバッファ書き込み回路２０を介して順次２つのバッファに格納される。
【００７０】
また、画像処理部８０は、バッファＢ４０に格納されているブロック処理用データを用いたブロック５のブロック処理が終了したとき、すでにバッファＡ３０にはブロック処理用データが格納されているため、引き続き、画像処理部８０は、タイミングｔ６において、バッファ読み出し回路６０を介してバッファＡ３０に格納されている最終のブロック処理用データを読み出して、ブロック５のブロック処理を継続する。
【００７１】
データ処理装置１では、図５の処理のタイミングに示したように、最終のブロック処理用データを使用したブロック５のブロック処理が開始された時点で、バッファＢ４０に格納されているブロック処理用データは、すでにブロック５のブロック処理に不要となっている。従って、ＤＭＡインタフェース１０は、バッファＢ４０に格納されているブロック処理用データがブロック５のブロック処理に不要となったとき、引き続き、タイミングｔ７において、転送量算出部５０によって決定された２バースト幅×ライン数分のブロック処理用データを、ブロック６のブロック処理における１回目のＤＭＡ転送によって、外部メモリ２から取得する。そして、バッファ書き込み回路２０は、転送量算出部５０から入力されたブロック処理用データの情報に基づいて、ＤＭＡインタフェース１０から入力されたブロック処理用データをバッファＢ４０に格納する。ここでは、図４に示したように、１つめのバースト幅に含まれる有効なブロック処理用データと、２つめのバースト幅に含まれるブロック処理用データとが、バッファＢ４０に格納される。
【００７２】
その後、バッファＡ３０に格納されている最終のブロック処理用データを用いたブロック５のブロック処理が終了した後、画像処理部８０は、引き続きブロック６のブロック処理を開始することができる状態となる。データ処理装置１では、図５の処理のタイミングに示したように、画像処理部８０がブロック６のブロック処理を開始することができる状態となった時点で、バッファＢ４０には、すでにブロック６のブロック処理に必要なブロック処理用データが格納されている。画像処理部８０は、タイミングｔ８において、バッファＢ４０に格納されているブロック６のブロック処理に使用するブロック処理用データを、バッファ読み出し回路６０を介して読み出して、ブロック６のブロック処理を開始する。
【００７３】
また、バッファＡ３０に格納されているブロック処理用データがブロック５のブロック処理に不要となったとき、引き続き、ＤＭＡインタフェース１０は、タイミングｔ９において、転送量算出部５０によって決定された１バースト幅×ライン数分のブロック処理用データを、ブロック６のブロック処理における２回目のＤＭＡ転送によって、外部メモリ２から取得する。そして、バッファ書き込み回路２０は、転送量算出部５０から入力されたブロック処理用データの情報に基づいて、ＤＭＡインタフェース１０から入力されたブロック処理用データをバッファＡ３０に格納する。ここでは、図４に示したように、３つめのバースト幅に含まれるブロック処理用データが、バッファＡ３０に格納される。
【００７４】
上記に述べたように、本実施形態のデータ処理装置１では、現在処理しているブロックの最終のブロック処理用データを、バッファ部３４に格納した時点で、すでに、次のブロックを処理するためにブロック処理用データの格納に使用するバッファが使用できる状態となっている。これにより、本実施形態のデータ処理装置１では、次のブロックの処理に使用するブロック処理用データを、事前に格納しておくことができる。このことにより、現在処理しているブロックの処理が終了次第、次のブロックの処理を開始することができ、画像処理部８０がブロック処理の開始を待機しているロス時間をなくすことができる。
【００７５】
上記に述べたとおり、本発明を実施するための形態によれば、処理に必要なデータを転送する際の転送の切れ目（転送単位）に満たない端数のデータを格納するための少量の記憶容量をバッファに追加する。そして、データを転送する際に、追加した記憶容量と処理に使用する有効なデータ量とに基づいて、データの転送方法を切り替えて、転送単位に満たない端数のデータを事前にバッファに格納しておく。これにより、処理に必要なデータが、当該データを転送する転送単位をまたいでおり、転送単位に満たない端数のデータの処理が速く終了してしまうことにより、次の処理の開始が待たされてしまうことによって発生するロス時間を低減することができる。このことにより、分割したブロック毎に処理を行う場合に、各ブロックの処理の間のロス時間を低減することができ、処理時間を短縮することが可能になる。なお、本発明を実施するための形態の構成は、内部の処理時間、すなわち、画像処理部８０の処理時間に対して、データの転送、すなわち、ＤＭＡインタフェース１０およびバッファ書き込み回路２０によるバッファ部３４へのデータの書き込みが速いデータ処理装置において有効である。
【００７６】
また、本発明を実施するための形態では、処理に使用する有効なデータ量に基づいて、データをバッファに格納する。これにより、安易にバッファサイズを増大させることなく、当該処理に使用する有効なデータのみを、バッファに格納することができる。このことにより、データ処理装置の回路規模の増大を抑えることができる。
【００７７】
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。
【符号の説明】
【００７８】
１・・・データ処理装置
２・・・外部メモリ
１０・・・ＤＭＡインタフェース（データ取得部）
２０・・・バッファ書き込み回路（データ書き込み制御部）
３０・・・バッファＡ（バッファ部）
３１・・・追加バッファＡ（バッファ部）
４０・・・バッファＢ（バッファ部）
４１・・・追加バッファＢ（バッファ部）
５０・・・転送量算出部（有効データ量算出部）
６０・・・バッファ読み出し回路
７０・・・イメージプロセスインタフェース
８０・・・画像処理部
【図１】
0005583563.tif 000002
【図２】
0005583563.tif 000003
【図３】
0005583563.tif 000004
【図４】
0005583563.tif 000005
【図５】
0005583563.tif 000006
【図６】
0005583563.tif 000007
【図７】
0005583563.tif 000008
【図８】
0005583563.tif 000009
【図９】
0005583563.tif 000010