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