説明

データ処理装置

【課題】複数のバッファを交互に切り替えて分割したブロック毎に処理を行うデータ処理装置において、処理に必要なデータが、データを転送する際の転送の切れ目をまたいでいるような場合でも、各ブロックの処理の間のロス時間を低減することができるデータ処理装置を提供する。
【解決手段】予め定められたデータ取得単位毎にデータを取得するデータ取得部と、1つのデータ取得単位で取得する量のデータを記憶する記憶容量に加え、データ取得単位に満たない量のデータを記憶する追加記憶容量を具備する複数のバッファ部と、データ取得部が取得するデータの内、有効なデータの量を算出すると共に、取得したデータが有効なデータであるか否かを表す有効データ情報を出力する有効データ量算出部と、複数のバッファ部を排他的に制御して、取得したデータの複数のバッファ部のいずれか1つのバッファ部への書き込みを制御するデータ書き込み制御部と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理装置に関する。
【背景技術】
【0002】
静止画用カメラ、動画用カメラ、医療用内視鏡カメラ、または産業用内視鏡カメラなどの撮像装置に備えた画像処理装置において、例えば、特許文献1に開示された技術のように、2つのラインバッファを交互に使用することによってフィルタ処理などを行う画像処理回路が知られている。このような画像処理回路においては、1フレームの静止画像を複数のブロックに分割し、分割したブロック毎に画像処理が行われる。
【0003】
しかし、図6(a)に示したように、1フレームの静止画像を複数のブロックに分割した場合、分割したそれぞれのブロック内では処理を行う画像データの流れが連続しているが、異なるブロックとの間ではデータの流れが連続していない(図6(b)参照)。そのため、1つのブロックの処理が完了する毎に、画像処理回路をリセットし、次に処理するブロックに対応した画像データの範囲などの設定を、毎回設定し直すという手続が必要であった。
【0004】
このように、各ブロックの処理毎に画像処理回路の動作を制御した場合、画像処理回路が動作していない時間的なロスの期間が、それぞれのブロックの処理の間に発生してしまう、という問題がある。この画像処理回路が動作していないロス時間は、1フレームの静止画像を処理するパイプライン処理全体の処理時間に影響することとなる。
【0005】
パイプライン処理において各ブロック間の処理の時間的なロスを低減するため、例えば、特許文献2のような技術が開示されている。特許文献2に開示された技術では、パイプラインを構成する各処理回路毎に、当該処理回路による処理が完了したことを表す割込み信号(処理完了割込み信号)を、パイプライン処理の全体を制御するシーケンサに出力する。そして、シーケンサが、処理回路から処理完了割込み信号が入力されるたびに、その処理回路の設定を個別に変更する。これにより、シーケンサが処理回路の設定を変更するタイミングが、分割したブロックの処理を開始するタイミング毎ではなく、それぞれのブロックにおいて各処理回路の処理が完了したタイミング毎となる。このようにシーケンサが各処理回路の設定を変更するタイミングをそれぞれの処理回路毎にすることによって、特許文献2の技術では、各ブロック間の処理における時間的なロスを低減し、1フレームの静止画像のパイプライン処理を高速化している。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開平8−336114号公報
【特許文献2】特開2010−176606号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、パイプラインを構成する処理回路の中には、特許文献2に開示された技術を採用して、1つのブロックの処理が完了した後に設定を変更して次のブロックの処理を開始した場合においても、依然として時間的なロスが発生してしまう処理回路が存在する。例えば、DMA(Direct Memory Access)のバースト転送によって、共通のデータバスに接続されたDRAM(Dynamic Random Access Memory)などの外部メモリに記憶されたデータにアクセスするデータ処理装置においては、データ処理装置内に備えたデータの一時保存用のバッファの大きさ(容量)や構成と、DMA転送(バースト転送)によってデータを転送するデータの量との組み合わせによってロス時間が発生してしまう。これは、バースト転送が予め定められたバースト幅の単位で行われるため、外部メモリ上にデータの切れ目(バースト境界)が存在してしまうことに起因している。
【0008】
以下に、ロス時間が発生するデータ処理装置の一例を説明する。図7は、ロス時間が発生する従来のデータ処理装置の概略構成の一例を示したブロック図である。図7に示した従来のデータ処理装置は、2つのバッファ(バッファAとバッファB)と、外部メモリに記憶されているブロック処理(画像処理)に必要な画像データ(ブロック処理用データ)を共通のデータバスを介して取得するDMAインタフェース(I/F)と、取得したブロック処理用データを一方のバッファに書き込む(格納する)バッファ書き込み回路と、他方のバッファに格納されているブロック処理用データを読み出して画像処理部に出力するバッファ読み出し回路と、他の画像処理回路などのデータ処理装置によって処理された画像データを取得するイメージプロセスインタフェース(I/F)と、イメージプロセスインタフェースが取得した画像データとバッファ読み出し回路から入力されたブロック処理用データとを用いて画像処理を行う画像処理部と、を備えている。
【0009】
図7に示したような構成の従来のデータ処理装置では、イメージプロセスインタフェースから入力される画像データの処理に同期して、外部メモリ上に格納されているブロック処理用データを、DMAインタフェースおよびバッファ書き込み回路を介して内部のバッファ(バッファAまたはバッファB)に取り込み、それぞれのデータに基づいたブロック処理を行う。ブロック処理用データを格納するバッファの大きさは、バッファ書き込み回路によるバッファへのデータ書き込み処理を簡略化するために、DMAインタフェースがDMA転送するブロック処理用データの量と同じバッファサイズ(記憶容量)になっている。すなわち、図7に示した従来のデータ処理装置は、1回のDMA転送によって、一方のバッファに格納することができる量のブロック処理用データを外部メモリから取得し、DMA転送毎に2つのバッファを交互に使用して、各ブロックのブロック処理を行う。
【0010】
図7に示した従来のデータ処理装置では、例えば、図6(a)に示したブロック5のブロック処理に必要なブロック処理用データは、図8に示したように、バッファA→バッファB→バッファA→バッファB→バッファAというように、DMAインタフェースおよびバッファ書き込み回路を介して順次2つのバッファに格納される。しかし、外部メモリからバースト転送するブロック処理用データのバースト境界は、必ずしも処理するブロックの境界と一致しているとは限らず、図8に示したように、ブロック処理用データが、DMAインタフェースがバースト転送する際のデータのバースト境界をまたいでバッファに格納されることもある。そのため、例えば、1回目のDMA転送(バースト転送)によってバッファAに格納されるブロック処理用データや5回目のDMA転送(バースト転送)によってバッファAに格納されるブロック処理用データのように、ブロック5のブロック処理に使用されないブロック処理用データもDMA転送されることとなる。
【0011】
図7に示した従来のデータ処理装置では、画像処理部が、2つのバッファに格納されたブロック処理用データを、バッファ読み出し回路を介して交互に読み出して、ブロック処理を行う。ここで、図8に示したように、ブロック処理用データがそれぞれのバッファに格納された場合における従来のデータ処理装置の処理のタイミングを、図9を用いて説明する。
【0012】
まず、DMAインタフェースは、外部メモリからDMA転送(バースト転送)したブロック処理用データを、バッファ書き込み回路を介してバッファAに格納する。バッファAへのブロック処理用データの格納が完了すると、DMAインタフェースは、引き続き外部メモリからDMA転送したブロック処理用データを、バッファ書き込み回路を介してバッファBに格納する。
【0013】
また、画像処理部は、DMA転送によってバッファAにブロック処理用データが格納されると、バッファAに格納されているブロック処理用データの内、ブロック5のブロック処理に使用する一部(端数)のブロック処理用データをバッファ読み出し回路を介して読み出して、ブロック5のブロック処理を開始する。画像処理部は、バッファAに格納されているブロック処理用データを用いたブロック5のブロック処理が終了し、バッファBにブロック処理用データが格納されている場合には、引き続きバッファ読み出し回路を介してバッファBに格納されているブロック処理用データを読み出して、ブロック5のブロック処理を継続する。
【0014】
その後、DMAインタフェースは、バッファAに格納されているブロック処理用データを用いたブロック5のブロック処理が終了し、バッファAに格納されているブロック処理用データがブロック5のブロック処理に不要となった場合、引き続きブロック5のブロック処理に必要なブロック処理用データを外部メモリからDMA転送し、バッファ書き込み回路を介してバッファAに格納する。以降、DMAインタフェースは、ブロック5のブロック処理に必要なブロック処理用データを外部メモリからDMA転送し、バッファ書き込み回路を介してバッファB、バッファAに順次格納する。
【0015】
また、画像処理部は、バッファBに格納されているブロック処理用データを用いたブロック5のブロック処理が終了し、バッファAにブロック処理用データが格納されている場合には、引き続きバッファ読み出し回路を介してバッファAに格納されているブロック処理用データを読み出して、ブロック5のブロック処理を継続する。以降、画像処理部は、バッファB、バッファAに格納されているブロック処理用データを用いて、ブロック5のブロック処理を順次行う。
【0016】
ブロック5のブロック処理に用いる最終(図8および図9においては、5回目のDMA転送)のブロック処理用データのバッファAへの格納が完了した時点で、データ処理装置のDMAインタフェースおよびバッファ書き込み回路がリセットされ、次に処理するブロック6のブロック処理に必要なブロック処理用データを外部メモリからDMA転送するための準備が開始される。なお、ブロック5のブロック処理に用いる最終のブロック処理用データは、バッファAに格納されているため、ブロック6のブロック処理に用いるブロック処理用データは、バッファBから順次格納することとなる。より具体的には、図8および図9に示したように、バッファB→バッファA→バッファB→バッファA→バッファBというように、DMAインタフェースおよびバッファ書き込み回路を介して順次2つのバッファに格納される。
【0017】
しかし、ブロック5のブロック処理に用いる最終のブロック処理用データのバッファAへの格納が完了した時点では、バッファBに格納されているブロック処理用データを用いたブロック5のブロック処理が終了していないため、ブロック6のブロック処理に必要なブロック処理用データのDMA転送を開始することができない。このため、DMAインタフェースは、バッファBに格納されているブロック処理用データを用いたブロック5のブロック処理が終了するまで、DMA転送(バースト転送)を待機することとなる。そして、DMAインタフェースは、バッファBに格納されているブロック処理用データを用いたブロック5のブロック処理が終了し、バッファBに格納されているブロック処理用データがブロック5のブロック処理に不要となった後に、ブロック6のブロック処理に必要なブロック処理用データのDMA転送を開始する。
【0018】
また、画像処理部は、バッファBに格納されているブロック処理用データを用いたブロック5のブロック処理が終了した後、引き続きバッファ読み出し回路を介してバッファAに格納されている最終のブロック処理用データを読み出してブロック5のブロック処理を行っている。ブロック5のブロック処理を行うための最終のブロック処理用データは、バッファAに格納されているブロック処理用データの内、一部(端数)のブロック処理用データである。このため、バッファAに格納されている最終のブロック処理用データを用いたブロック5のブロック処理は、比較的早い時間に終了する。そして、画像処理部は、引き続きブロック6のブロック処理を開始することができる状態となる。
【0019】
しかし、ブロック6のブロック処理を開始することができる状態となった時点では、DMAインタフェースによるブロック6のブロック処理に必要なブロック処理用データの外部メモリからのDMA転送、およびバッファ書き込み回路を介したバッファBへの格納が完了していない。このため、画像処理部は、バッファBにブロック6のブロック処理に必要なブロック処理用データが格納されるまで、ブロック6のブロック処理を待機することとなる。このブロック処理に必要なブロック処理用データがバッファに格納されるまで、すなわち、DMA転送(バースト転送)が完了するまで、画像処理部がブロック処理の開始を待機している時間(ブロック処理開始の遅れ時間)が、データ処理装置におけるロス時間となってしまう、という問題がある。そして、このロス時間は、パイプライン処理全体の処理時間に影響してしまう。
【0020】
本発明は、上記の課題認識に基づいてなされたものであり、複数のバッファを交互に切り替えて分割したブロック毎に処理を行うデータ処理装置において、処理に必要なデータが、当該データを転送する際の転送の切れ目をまたいでいるような場合でも、各ブロックの処理の間のロス時間を低減することができるデータ処理装置を提供することを目的としている。
【課題を解決するための手段】
【0021】
上記の課題を解決するため、本発明のデータ処理装置は、予め定められたデータ取得単位毎にデータを取得するデータ取得部と、前記データ取得部が1つの前記データ取得単位で取得する量のデータを記憶する記憶容量に加え、前記データ取得単位に満たない量のデータを記憶する追加記憶容量を具備する複数のバッファ部と、前記データ取得部が取得するデータの内、有効なデータの量を算出すると共に、前記データ取得部が取得したデータが有効なデータであるか否かを表す有効データ情報を出力する有効データ量算出部と、前記複数のバッファ部を排他的に制御して、前記データ取得部が取得したデータの前記複数のバッファ部のいずれか1つのバッファ部への書き込みを制御するデータ書き込み制御部と、を備え、前記有効データ量算出部は、前記算出した有効なデータの量と、前記バッファ部に具備された前記追加記憶容量とに基づいて、前記データ取得部による1回のデータ取得において取得する前記データ取得単位の数を決定し、前記データ取得部は、前記有効データ量算出部によって決定された数の前記データ取得単位に含まれるデータを取得し、前記データ書き込み制御部は、前記有効データ量算出部から出力された有効データ情報に基づいて、前記複数のバッファ部のいずれか1つのバッファ部にデータを書き込むか否かを制御する、ことを特徴とする。
【0022】
また、本発明の前記バッファ部に具備される前記追加記憶容量は、前記データ取得部が、前記データ取得単位に満たない量のデータを取得するのに要する取得時間と、該データ取得単位に満たない量のデータを処理するのに要する処理時間とに基づいて決定された記憶容量である、ことを特徴とする。
【0023】
また、本発明の前記有効データ量算出部は、前記有効なデータの量が、前記追加記憶容量以下である場合、前記データ取得部による1回のデータ取得において取得する前記データ取得単位の数を2つとし、前記データ取得部は、連続する2つの前記データ取得単位に含まれるデータを取得する、ことを特徴とする。
【0024】
また、本発明の前記有効データ量算出部は、前記有効なデータの量が、前記追加記憶容量よりも多い場合、前記データ取得部による1回のデータ取得において取得する前記データ取得単位の数を1つとする、ことを特徴とする。
【0025】
また、本発明の前記データ書き込み制御部は、前記データ取得部が取得したデータの内、前記有効データ量算出部から出力された有効データ情報が有効なデータであることを表しているデータのみ、前記複数のバッファ部のいずれか1つのバッファ部に書き込むように制御する、ことを特徴とする。
【0026】
また、本発明の前記データ書き込み制御部は、前記データ取得部が取得したデータの内、前記有効データ量算出部から出力された有効データ情報が有効なデータであることを表しているデータを、前記複数のバッファ部のいずれか1つのバッファ部に書き込むときに、前記複数のバッファ部のいずれか1つのバッファ部にデータ書き込み制御信号を出力する、ことを特徴とする。
【発明の効果】
【0027】
本発明によれば、複数のバッファを交互に切り替えて分割したブロック毎に処理を行うデータ処理装置において、処理に必要なデータが、当該データを転送する際の転送の切れ目をまたいでいるような場合でも、各ブロックの処理の間のロス時間を低減することができるという効果が得られる。
【図面の簡単な説明】
【0028】
【図1】本発明の実施形態におけるデータ処理装置の概略構成を示したブロック図である。
【図2】本実施形態のデータ処理装置における処理の流れを説明する図である。
【図3】本実施形態のデータ処理装置に備えるバッファのバッファサイズを説明する図である。
【図4】本実施形態のデータ処理装置に備えたバッファにデータを格納したときの一例を示した図である。
【図5】本実施形態のデータ処理装置において行うブロック毎の処理タイミングの一例を示したタイミングチャートである。
【図6】従来のパイプライン処理におけるブロック分けの方法を説明する図である。
【図7】従来のデータ処理装置の概略構成の一例を示したブロック図である。
【図8】従来のデータ処理装置に備えたバッファにデータを格納したときの一例を示した図である。
【図9】従来のデータ処理装置において行うブロック毎の処理タイミングの一例を示したタイミングチャートである。
【発明を実施するための形態】
【0029】
以下、本発明の実施形態について、図面を参照して説明する。図1は、本実施形態におけるデータ処理装置の概略構成を示したブロック図である。図1に示したデータ処理装置1は、DMAインタフェース(I/F)10と、バッファ書き込み回路20と、2つのバッファ(バッファA30およびバッファB40)と、転送量算出部50と、バッファ読み出し回路60と、イメージプロセスインタフェース(I/F)70と、画像処理部80と、を備えている。データ処理装置1は、図7に示した従来のデータ処理装置と同様に、例えば、図6(a)に示したように1フレームの静止画像を複数のブロックに分割し、分割したブロック毎にブロック処理(画像処理)を行う。
【0030】
より具体的には、イメージプロセスインタフェース70から入力される画像データの処理に同期して、共通のデータバスに接続されたDRAMなどの外部メモリ上に格納されているブロック処理に必要な画像データ(ブロック処理用データ)を、DMAインタフェース10がDMA転送(バースト転送)によって取得する。そして、DMAインタフェース10が取得したブロック処理用データを、バッファ書き込み回路20が、バッファA30またはバッファB40に格納する。また、画像処理部80は、バッファA30またはバッファB40に格納されたブロック処理用データをバッファ読み出し回路60を介して読み出し、読み出したブロック処理用データとイメージプロセスインタフェース70から入力された画像データとを用いてブロック処理(画像処理)を行う。
【0031】
データ処理装置1と図7に示した従来のデータ処理装置とを比較すると、データ処理装置1では、2つのバッファ(バッファA30およびバッファB40)のそれぞれの記憶容量が増加され、転送量算出部50が追加されていることのみが異なる。従って、以下の説明においては、図7に示した従来のデータ処理装置と異なる構成要素および異なる動作のみを説明し、図7に示した従来のデータ処理装置と同様の構成要素および動作に関する詳細な説明は省略する。
【0032】
バッファA30およびバッファB40は、それぞれ、例えば、SRAM(Static Random Access Memory)などで構成された、ブロック処理用データを一時記憶する記憶部である。バッファA30およびバッファB40は、それぞれ、DMAインタフェース10が外部メモリから1回のDMA転送によって取得するブロック処理用データの量と同じ大きさの記憶容量に加えて、さらに、予め定められた大きさの記憶容量が増加されたバッファサイズ(記憶容量)となっている。以下の説明においては、バッファA30に増加された記憶容量の部分のみを表すときには、「追加バッファA31」という。また、バッファB40に増加された記憶容量の部分のみを表すときには、「追加バッファB41」という。なお、追加バッファA31および追加バッファB41の記憶容量の大きさに関する詳細な説明は、後述する。
【0033】
DMAインタフェース10は、外部メモリに記憶されているブロック処理用データを、DMA転送(バースト転送)によって共通のデータバスを介して取得する。そして、DMAインタフェース10は、取得したブロック処理用データをバッファ書き込み回路20に出力する。DMAインタフェース10がDMA転送によってブロック処理用データを取得する方法は、転送量算出部50によって制御される。なお、転送量算出部50からの制御に応じたDMAインタフェース10によるブロック処理用データの取得方法に関する詳細な説明は、後述する。
【0034】
バッファ書き込み回路20は、DMAインタフェース10から入力されたブロック処理用データを、バッファA30またはバッファB40のいずれか一方のバッファに書き込む(格納する)。バッファ書き込み回路20によるブロック処理用データの書き込みは、転送量算出部50から入力されたブロック処理用データの情報に基づいて行われる。なお、転送量算出部50から入力されるブロック処理用データの情報およびブロック処理用データの情報に基づいたバッファ書き込み回路20によるブロック処理用データのバッファA30またはバッファB40への書き込み(格納)方法に関する詳細な説明は、後述する。
【0035】
転送量算出部50は、DMAインタフェース10がDMA転送によって取得するブロック処理用データの取得方法を制御する。また、転送量算出部50は、バッファ書き込み回路20によってバッファA30またはバッファB40に書き込むブロック処理用データの情報を出力する。なお、転送量算出部50におけるDMAインタフェース10の制御およびバッファ書き込み回路20への情報の出力に関する詳細な説明は、後述する。
【0036】
バッファ読み出し回路60は、バッファA30またはバッファB40のいずれか一方のバッファに格納されているブロック処理用データを読み出して、画像処理部80に出力する。
イメージプロセスインタフェース70は、他の画像処理回路などのデータ処理装置によって処理された画像データを取得し、取得した画像データを画像処理部80に出力する。
画像処理部80は、バッファ読み出し回路60を介して入力されたバッファA30またはバッファB40に格納されたブロック処理用データと、イメージプロセスインタフェース70から入力された画像データとを用いて、分割したブロック毎のブロック処理を行う。画像処理部80は、ブロック処理したデータを、例えば、次の画像処理回路など、データ処理装置1の外部に出力する。
【0037】
ここで、本実施形態のデータ処理装置1におけるブロック処理の流れについて説明する。図2は、本実施形態のデータ処理装置1におけるブロック処理の流れを説明する図である。図2には、データ処理装置1が外部メモリ2からデータを取得してブロック処理(画像処理)したデータを出力するまでの処理の流れと、各段階で読み出しまたは書き込みされるデータの流れとを模式的に示している。なお、図2においては、データ処理装置1に備えたバッファA30およびバッファB40を併せて、「バッファ部34」として表している。従って、以下の説明において、「バッファ部34」という場合には、バッファA30またはバッファB40のいずれか一方を示すものとする。
【0038】
外部メモリ2には、ブロック処理用データが、横方向にデータの流れが連続した状態(ラスター順)で格納されている。DMAインタフェース10は、1回のバースト転送において、1バースト幅分のブロック処理用データを、外部メモリ2から取得する。また、DMAインタフェース10は、外部メモリ2から取得するブロック処理用データのライン数と同じ回数のバースト転送を行ってDMA転送を終了する。従って、DMAインタフェース10は、1回のDMA転送において、1バースト幅×ライン数分のブロック処理用データを外部メモリ2から取得する。なお、DMAインタフェース10が1回のバースト転送で取得する1バースト幅が、外部メモリ2におけるバースト境界の境界線となる。
【0039】
例えば、外部メモリ2上に格納されているブロック処理用データが、フレーム毎にYC422点順次のフォーマットで格納されているものとする。この場合、DMAインタフェース10は、例えば、1バースト幅(32画素分)×ライン数のブロック処理用データをDMA転送によって取得する。
【0040】
バッファ書き込み回路20は、DMAインタフェース10が取得したブロック処理用データを、外部メモリ2に格納されている形式と同様の形式で、バッファ部34に格納する。その後、バッファ読み出し回路60は、バッファ部34に格納されているブロック処理用データを縦横変換、すなわち、縦方向にデータの流れが連続するように変換して読み出し、画像処理部80に出力する。なお、バッファ読み出し回路60がバッファ部34に格納されているブロック処理用データを読み出す際に縦横変換する理由は、イメージプロセスインタフェース70から画像処理部80に入力される他のデータ処理装置によって処理された画像データとデータの流れを統一するためである。従って、イメージプロセスインタフェース70から入力される画像データの流れによっては、バッファ読み出し回路60によるブロック処理用データの縦横変換は、必ずしも必要な処理ではない。
【0041】
画像処理部80は、バッファ読み出し回路60によって縦横変換されて入力されたブロック処理用データと、イメージプロセスインタフェース70から入力された画像データとを用いてブロック処理を行い、ブロック処理したデータをデータ処理装置1の外部に出力する。
【0042】
次に、本実施形態のデータ処理装置1に備えたバッファA30およびバッファB40に増加される記憶容量の大きさ(バッファサイズ)について説明する。図3は、本実施形態のデータ処理装置1に備えるバッファ部34のバッファサイズ(記憶容量)を説明する図である。図3(a)は、図7に示した従来のデータ処理装置に備えたバッファのバッファサイズを模式的に示した図であり、図3(b)は、本実施形態のデータ処理装置1に備えたバッファ部34のバッファサイズを模式的に示した図である。
【0043】
図3(a)に示したように、図7に示したような構成の従来のデータ処理装置に備えたバッファのバッファサイズは、DMAインタフェースが1回のバースト転送で取得する1バースト幅で、かつ、画像処理部がブロック処理を行うブロックのライン数である。
【0044】
それに対して、データ処理装置1に備える2つのバッファ(バッファA30およびバッファB40)のそれぞれは、上記に述べたように、予め定められた大きさの記憶容量αが増加されたバッファサイズとなっている。データ処理装置1に備える2つのバッファのそれぞれに増加される記憶容量aは、DMAインタフェース10がブロック処理用データを取得し、バッファ部34に書き込む(格納する)ために要する処理時間と、画像処理部80によってブロック処理する際の処理時間とに基づいて決定される。
【0045】
例えば、DMAインタフェース10が1バースト幅のバースト転送に要する処理時間(クロック数)が4クロックであり、画像処理部80がブロック処理を行うブロックのライン数が100ライン、すなわち、画像処理部80がブロック処理する縦の1ラインの画素数が100画素、であると仮定した場合を考える。この場合、DMAインタフェース10がDMA転送によってブロック処理用データを取得して、バッファ書き込み回路20がバッファ部34に格納する処理時間(クロック数)は、下式(1)のように求めことができる。
【0046】
4(クロック)×100(ライン)=400(クロック) ・・・・・(1)
【0047】
そして、画像処理部80が1画素のブロック処理に要する処理時間(クロック数)が1クロックであるとして、上式(1)で求めたバッファ部34に格納する処理時間を、画像処理部80がブロック処理する縦のライン数に換算すると、下式(2)のようになる。
【0048】
400(クロック)/100(画素)=4(ライン) ・・・・・(2)
【0049】
すなわち、DMAインタフェース10がDMA転送によってブロック処理用データを取得してバッファ部34に格納する処理時間は、画像処理部80における縦の4ライン分のブロック処理を行う時間に相当する。このようなことから、データ処理装置1に備えた2つのバッファのそれぞれに追加する記憶容量αは、4ライン×100画素=400画素分以上が必要であることがわかる。従って、データ処理装置1では、この大きさの記憶容量αを、追加バッファA31および追加バッファB41として、それぞれ、バッファA30およびバッファB40に追加する。このように、本実施形態のデータ処理装置1では、DMAインタフェース10によってブロック処理用データを取得してバッファ部34に書き込むために要する処理時間と同じ時間で、画像処理部80がブロック処理することができる縦のライン数分(追加画素幅)の記憶容量を、従来のデータ処理装置に備えたバッファに増加させたバッファサイズのバッファを備える構成とする。
【0050】
次に、本実施形態のデータ処理装置1に備えた転送量算出部50によるDMAインタフェース10の制御およびバッファ書き込み回路20への情報の出力について説明する。図4は、本実施形態のデータ処理装置1に備えたバッファにブロック処理用データを格納したときの一例を示した図である。図4は、データ処理装置1におけるブロック処理(画像処理)に必要なブロック処理用データが、DMAインタフェース10がバースト転送する際の外部メモリ2におけるバースト境界をまたぎ、かつ、1バースト幅に満たない端数のブロック処理用データが、バッファA30およびバッファB40に増加した記憶容量αの追加画素幅よりも少ない場合を示している。
【0051】
転送量算出部50は、それぞれのバースト幅毎に、当該バースト幅のブロック処理に使用する有効なブロック処理用データの量(以下、「有効データ量」という)を算出する。有効データ量は、ブロック処理用データの画像サイズ、ブロック処理の基準座標(例えば、ブロックの左上端の座標)、ブロックのサイズ、ブロック処理用データの格納フォーマットなどの値に基づいて算出される。例えば、図4に示したブロック5のブロック処理では、1つめのバースト幅および5つめのバースト幅では、一部(端数)のブロック処理用データのみが有効なデータであり、2つめ〜4つめまでのバースト幅では、全てのブロック処理用データが有効なデータである。転送量算出部50は、それぞれのバースト幅内の有効データ量を算出する。
【0052】
そして、転送量算出部50は、算出した有効データ量と、バッファに追加した記憶容量αとに基づいて、DMAインタフェース10がDMA転送によってブロック処理用データを取得する際に行われるバースト転送のバースト幅を決定する。
【0053】
より具体的には、有効データ量が記憶容量α以下(有効データ量≦記憶容量α)である場合、すなわち、1つめのバースト幅に含まれるブロック処理用データの内、一部(端数)の有効なブロック処理用データの横方向の画素数が、追加バッファA31および追加バッファB41の横方向の画素数よりも少ない場合には、転送量算出部50は、1つめのバースト幅に含まれる有効なブロック処理用データと、2つめのバースト幅に含まれるブロック処理用データとを同じバッファ部34に格納することができると判断する。そして、転送量算出部50は、1つめのバースト幅と2つめのバースト幅との2バースト幅分のブロック処理用データを、1回のDMA転送で取得するように、すなわち、2バースト幅×ライン数分のDMA転送を行うように、DMAインタフェース10を制御する。
【0054】
逆に、有効データ量が記憶容量αよりも多い(有効データ量>記憶容量α)である場合、すなわち、1つめのバースト幅に含まれるブロック処理用データの内、一部(端数)の有効なブロック処理用データの横方向の画素数が、追加バッファA31および追加バッファB41の横方向の画素数よりも多い場合には、転送量算出部50は、1つめのバースト幅に含まれる有効なブロック処理用データと、2つめのバースト幅に含まれるブロック処理用データとを同じバッファ部34に格納することができないと判断する。そして、転送量算出部50は、1つめのバースト幅に含まれるブロック処理用データと、2つめのバースト幅に含まれるブロック処理用データとを、2回のDMA転送に分けて取得するように、すなわち、従来のデータ処理装置と同様に、1バースト幅×ライン数分のDMA転送を2回行うように、DMAインタフェース10を制御する。
【0055】
そして、転送量算出部50は、算出した有効データ量に基づいて、DMAインタフェース10がDMA転送によって取得したブロック処理用データが、ブロック処理に使用する有効なデータであるか、ブロック処理に使用しない無効なデータであるかを判断するための情報を、バッファ書き込み回路20に出力する。
【0056】
例えば、転送量算出部50によって、1つめのバースト幅に含まれる有効なブロック処理用データと、2つめのバースト幅に含まれるブロック処理用データとを同じバッファ部34に格納することができると判断され、DMAインタフェース10が2バースト幅×ライン数分のDMA転送を行った場合でも、1つめのバースト幅における全てのブロック処理用データがバッファ書き込み回路20に入力される。すなわち、DMAインタフェース10によるDMA転送は、バースト幅の単位でのデータ転送となるため、1つめのバースト幅に含まれる有効なブロック処理用データのみがDMA転送されるわけではない。
【0057】
そこで、転送量算出部50は、DMAインタフェース10によってDMA転送されたブロック処理用データの内、バッファ部34に格納する有効なブロック処理用データを判断することができる情報を、バッファ書き込み回路20に出力する。この情報は、例えば、DMAインタフェース10からバッファ書き込み回路20に入力されるブロック処理用データの内、有効なデータの範囲を表す情報や、バースト転送されたブロック処理用データの内、有効なデータの個数または無効なデータの個数を表す情報である。
【0058】
バッファ書き込み回路20は、転送量算出部50から入力された有効なブロック処理用データを判断するための情報に基づいて、DMAインタフェース10から入力されたブロック処理用データ毎に、当該ブロック処理用データが有効なデータであるか、無効なデータであるかを判断し、その判断結果に基づいて、バッファ部34への書き込みを制御する。例えば、無効なブロック処理用データがDMAインタフェース10から入力された場合には、バッファ部34へのデータ書き込み制御信号を出力せず、有効なブロック処理用データがDMAインタフェース10から入力された場合にのみ、バッファ部34へのデータ書き込み制御信号を出力する。
【0059】
なお、転送量算出部50が、DMAインタフェース10が取得したブロック処理用データ毎に、当該ブロック処理用データが有効なデータであるか、無効なデータであるかを判断する構成とすることもできる。この場合、転送量算出部50は、DMAインタフェース10が取得したブロック処理用データが有効なデータであるか、無効なデータであるかを表す情報(判断結果)をバッファ書き込み回路20に出力する。そして、バッファ書き込み回路20は、転送量算出部50から入力された判断結果に基づいて、バッファ部34へのデータ書き込みを制御することによって実現することができる。
【0060】
また、転送量算出部50は、DMAインタフェース10が有効なブロック処理用データを取得した場合にのみ、DMAインタフェース10から入力されたブロック処理用データが有効なデータであることを表す情報を、バッファ書き込み回路20に出力する。そして、バッファ書き込み回路20は、転送量算出部50からブロック処理用データが有効なデータであることを表す情報が入力された場合にのみ、バッファ部34へのデータ書き込み制御信号を出力することによって実現することができる。
【0061】
このような制御によって、例えば、図4に示したブロック処理用データをバッファに格納した一例におけるブロック5のブロック処理では、1つめのバースト幅と2つめのバースト幅との2バースト幅分のブロック処理用データが、1回目のDMA転送で取得され、バッファA30に格納されている。また、3つめのバースト幅のブロック処理用データは、2回目のDMA転送で取得され、バッファB40に格納されている。また、4つめのバースト幅と5つめのバースト幅との2バースト幅分のブロック処理用データが、3回目のDMA転送で取得され、バッファA30に格納されている。さらに、ブロック6のブロック処理では、ブロック処理用データが、バッファB40→バッファA30→バッファB40というように、DMAインタフェース10およびバッファ書き込み回路20を介して順次2つのバッファに格納されている。
【0062】
上記に述べたように、本実施形態のデータ処理装置1では、外部メモリ2からバースト転送するブロック処理用データの外部メモリ2におけるバースト境界が、ブロック処理するブロックの境界と一致していない場合においても、DMAインタフェース10が取得した有効なブロック処理用データのみをバッファ部34に格納することができる。これにより、本実施形態のデータ処理装置1では、安易にバッファサイズを増大させることなく、データの処理を行うことができる。
【0063】
次に、本実施形態のデータ処理装置1における処理タイミングについて説明する。図5は、本実施形態のデータ処理装置1において行うブロック毎の処理タイミングの一例を示したタイミングチャートである。データ処理装置1では、画像処理部80が、バッファ部34の2つのバッファ(バッファA30およびバッファB40)に格納されたブロック処理用データを、バッファ読み出し回路60を介して交互に読み出して、ブロック処理を行う。ここでは、図4に示したように、ブロック処理用データがそれぞれのバッファに格納された場合におけるデータ処理装置1の処理のタイミングについて説明する。
【0064】
まず、DMAインタフェース10は、タイミングt1において、転送量算出部50によって決定された2バースト幅×ライン数分のブロック処理用データを、1回目のDMA転送(バースト転送)によって、外部メモリ2から取得する。そして、バッファ書き込み回路20は、転送量算出部50から入力されたブロック処理用データの情報に基づいて、DMAインタフェース10から入力されたブロック処理用データをバッファA30に格納する。ここでは、図4に示したように、1つめのバースト幅に含まれる有効なブロック処理用データと、2つめのバースト幅に含まれるブロック処理用データとが、バッファA30に格納される。
【0065】
その後、バッファA30へのブロック処理用データの格納が完了すると、引き続き、DMAインタフェース10は、タイミングt2において、転送量算出部50によって決定された1バースト幅×ライン数分のブロック処理用データを、2回目のDMA転送によって、外部メモリ2から取得する。そして、バッファ書き込み回路20は、転送量算出部50から入力されたブロック処理用データの情報に基づいて、DMAインタフェース10から入力されたブロック処理用データをバッファB40に格納する。ここでは、図4に示したように、3つめのバースト幅に含まれるブロック処理用データが、バッファB40に格納される。
【0066】
また、画像処理部80は、DMA転送によってバッファA30にブロック処理用データが格納されると、タイミングt3において、バッファA30に格納されているブロック5のブロック処理に使用するブロック処理用データを、バッファ読み出し回路60を介して読み出して、ブロック5のブロック処理を開始する。
【0067】
その後、バッファA30に格納されているブロック処理用データを用いたブロック5のブロック処理が終了したとき、すでにバッファB40にはブロック処理用データが格納されているため、引き続き、画像処理部80は、タイミングt4において、バッファ読み出し回路60を介してバッファB40に格納されているブロック処理用データを読み出して、ブロック5のブロック処理を継続する。
【0068】
その後、バッファA30に格納されているブロック処理用データを用いたブロック5のブロック処理が終了し、バッファA30に格納されているブロック処理用データがブロック5のブロック処理に不要となったとき、引き続き、DMAインタフェース10は、タイミングt5において、ブロック5のブロック処理に用いる最終のブロック処理用データを、3回目のDMA転送によって、外部メモリ2から取得する。最終のブロック処理用データは、転送量算出部50によって、4つめのバースト幅に含まれるブロック処理用データと、5つめのバースト幅に含まれる有効なブロック処理用データとを同じバッファ部34に格納することができると判断されたため、DMAインタフェース10は、2バースト幅×ライン数分のブロック処理用データを、3回目のDMA転送で取得する。そして、バッファ書き込み回路20は、転送量算出部50から入力されたブロック処理用データの情報に基づいて、DMAインタフェース10から入力されたブロック処理用データをバッファA30に格納する。ここでは、図4に示したように、4つめのバースト幅に含まれるブロック処理用データと、5つめのバースト幅に含まれる有効なブロック処理用データとが、バッファA30に格納される。
【0069】
そして、最終のブロック処理用データのバッファA30への格納が完了したとき、データ処理装置1のDMAインタフェース10およびバッファ書き込み回路20がリセットされ、次に処理するブロック6のブロック処理に必要なブロック処理用データを外部メモリからDMA転送するための準備が開始される。なお、ブロック5のブロック処理に用いる最終のブロック処理用データは、バッファA30に格納されているため、ブロック6のブロック処理に用いるブロック処理用データは、バッファB40から順次格納することとなる。より具体的には、図4に示したように、バッファB40→バッファA30→バッファB40というように、DMAインタフェース10およびバッファ書き込み回路20を介して順次2つのバッファに格納される。
【0070】
また、画像処理部80は、バッファB40に格納されているブロック処理用データを用いたブロック5のブロック処理が終了したとき、すでにバッファA30にはブロック処理用データが格納されているため、引き続き、画像処理部80は、タイミングt6において、バッファ読み出し回路60を介してバッファA30に格納されている最終のブロック処理用データを読み出して、ブロック5のブロック処理を継続する。
【0071】
データ処理装置1では、図5の処理のタイミングに示したように、最終のブロック処理用データを使用したブロック5のブロック処理が開始された時点で、バッファB40に格納されているブロック処理用データは、すでにブロック5のブロック処理に不要となっている。従って、DMAインタフェース10は、バッファB40に格納されているブロック処理用データがブロック5のブロック処理に不要となったとき、引き続き、タイミングt7において、転送量算出部50によって決定された2バースト幅×ライン数分のブロック処理用データを、ブロック6のブロック処理における1回目のDMA転送によって、外部メモリ2から取得する。そして、バッファ書き込み回路20は、転送量算出部50から入力されたブロック処理用データの情報に基づいて、DMAインタフェース10から入力されたブロック処理用データをバッファB40に格納する。ここでは、図4に示したように、1つめのバースト幅に含まれる有効なブロック処理用データと、2つめのバースト幅に含まれるブロック処理用データとが、バッファB40に格納される。
【0072】
その後、バッファA30に格納されている最終のブロック処理用データを用いたブロック5のブロック処理が終了した後、画像処理部80は、引き続きブロック6のブロック処理を開始することができる状態となる。データ処理装置1では、図5の処理のタイミングに示したように、画像処理部80がブロック6のブロック処理を開始することができる状態となった時点で、バッファB40には、すでにブロック6のブロック処理に必要なブロック処理用データが格納されている。画像処理部80は、タイミングt8において、バッファB40に格納されているブロック6のブロック処理に使用するブロック処理用データを、バッファ読み出し回路60を介して読み出して、ブロック6のブロック処理を開始する。
【0073】
また、バッファA30に格納されているブロック処理用データがブロック5のブロック処理に不要となったとき、引き続き、DMAインタフェース10は、タイミングt9において、転送量算出部50によって決定された1バースト幅×ライン数分のブロック処理用データを、ブロック6のブロック処理における2回目のDMA転送によって、外部メモリ2から取得する。そして、バッファ書き込み回路20は、転送量算出部50から入力されたブロック処理用データの情報に基づいて、DMAインタフェース10から入力されたブロック処理用データをバッファA30に格納する。ここでは、図4に示したように、3つめのバースト幅に含まれるブロック処理用データが、バッファA30に格納される。
【0074】
上記に述べたように、本実施形態のデータ処理装置1では、現在処理しているブロックの最終のブロック処理用データを、バッファ部34に格納した時点で、すでに、次のブロックを処理するためにブロック処理用データの格納に使用するバッファが使用できる状態となっている。これにより、本実施形態のデータ処理装置1では、次のブロックの処理に使用するブロック処理用データを、事前に格納しておくことができる。このことにより、現在処理しているブロックの処理が終了次第、次のブロックの処理を開始することができ、画像処理部80がブロック処理の開始を待機しているロス時間をなくすことができる。
【0075】
上記に述べたとおり、本発明を実施するための形態によれば、処理に必要なデータを転送する際の転送の切れ目(転送単位)に満たない端数のデータを格納するための少量の記憶容量をバッファに追加する。そして、データを転送する際に、追加した記憶容量と処理に使用する有効なデータ量とに基づいて、データの転送方法を切り替えて、転送単位に満たない端数のデータを事前にバッファに格納しておく。これにより、処理に必要なデータが、当該データを転送する転送単位をまたいでおり、転送単位に満たない端数のデータの処理が速く終了してしまうことにより、次の処理の開始が待たされてしまうことによって発生するロス時間を低減することができる。このことにより、分割したブロック毎に処理を行う場合に、各ブロックの処理の間のロス時間を低減することができ、処理時間を短縮することが可能になる。なお、本発明を実施するための形態の構成は、内部の処理時間、すなわち、画像処理部80の処理時間に対して、データの転送、すなわち、DMAインタフェース10およびバッファ書き込み回路20によるバッファ部34へのデータの書き込みが速いデータ処理装置において有効である。
【0076】
また、本発明を実施するための形態では、処理に使用する有効なデータ量に基づいて、データをバッファに格納する。これにより、安易にバッファサイズを増大させることなく、当該処理に使用する有効なデータのみを、バッファに格納することができる。このことにより、データ処理装置の回路規模の増大を抑えることができる。
【0077】
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。
【符号の説明】
【0078】
1・・・データ処理装置
2・・・外部メモリ
10・・・DMAインタフェース(データ取得部)
20・・・バッファ書き込み回路(データ書き込み制御部)
30・・・バッファA(バッファ部)
31・・・追加バッファA(バッファ部)
40・・・バッファB(バッファ部)
41・・・追加バッファB(バッファ部)
50・・・転送量算出部(有効データ量算出部)
60・・・バッファ読み出し回路
70・・・イメージプロセスインタフェース
80・・・画像処理部

【特許請求の範囲】
【請求項1】
予め定められたデータ取得単位毎にデータを取得するデータ取得部と、
前記データ取得部が1つの前記データ取得単位で取得する量のデータを記憶する記憶容量に加え、前記データ取得単位に満たない量のデータを記憶する追加記憶容量を具備する複数のバッファ部と、
前記データ取得部が取得するデータの内、有効なデータの量を算出すると共に、前記データ取得部が取得したデータが有効なデータであるか否かを表す有効データ情報を出力する有効データ量算出部と、
前記複数のバッファ部を排他的に制御して、前記データ取得部が取得したデータの前記複数のバッファ部のいずれか1つのバッファ部への書き込みを制御するデータ書き込み制御部と、
を備え、
前記有効データ量算出部は、
前記算出した有効なデータの量と、前記バッファ部に具備された前記追加記憶容量とに基づいて、前記データ取得部による1回のデータ取得において取得する前記データ取得単位の数を決定し、
前記データ取得部は、
前記有効データ量算出部によって決定された数の前記データ取得単位に含まれるデータを取得し、
前記データ書き込み制御部は、
前記有効データ量算出部から出力された有効データ情報に基づいて、前記複数のバッファ部のいずれか1つのバッファ部にデータを書き込むか否かを制御する、
ことを特徴とするデータ処理装置。
【請求項2】
前記バッファ部に具備される前記追加記憶容量は、
前記データ取得部が、前記データ取得単位に満たない量のデータを取得するのに要する取得時間と、該データ取得単位に満たない量のデータを処理するのに要する処理時間とに基づいて決定された記憶容量である、
ことを特徴とする請求項1に記載のデータ処理装置。
【請求項3】
前記有効データ量算出部は、
前記有効なデータの量が、前記追加記憶容量以下である場合、
前記データ取得部による1回のデータ取得において取得する前記データ取得単位の数を2つとし、
前記データ取得部は、
連続する2つの前記データ取得単位に含まれるデータを取得する、
ことを特徴とする請求項2に記載のデータ処理装置。
【請求項4】
前記有効データ量算出部は、
前記有効なデータの量が、前記追加記憶容量よりも多い場合、
前記データ取得部による1回のデータ取得において取得する前記データ取得単位の数を1つとする、
ことを特徴とする請求項3に記載のデータ処理装置。
【請求項5】
前記データ書き込み制御部は、
前記データ取得部が取得したデータの内、前記有効データ量算出部から出力された有効データ情報が有効なデータであることを表しているデータのみ、前記複数のバッファ部のいずれか1つのバッファ部に書き込むように制御する、
ことを特徴とする請求項4に記載のデータ処理装置。
【請求項6】
前記データ書き込み制御部は、
前記データ取得部が取得したデータの内、前記有効データ量算出部から出力された有効データ情報が有効なデータであることを表しているデータを、前記複数のバッファ部のいずれか1つのバッファ部に書き込むときに、前記複数のバッファ部のいずれか1つのバッファ部にデータ書き込み制御信号を出力する、
ことを特徴とする請求項5に記載のデータ処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2012−123465(P2012−123465A)
【公開日】平成24年6月28日(2012.6.28)
【国際特許分類】
【出願番号】特願2010−271595(P2010−271595)
【出願日】平成22年12月6日(2010.12.6)
【出願人】(000000376)オリンパス株式会社 (11,466)
【Fターム(参考)】