JP2012164186A - データ処理装置 - Google Patents

データ処理装置 Download PDF

Info

Publication number
JP2012164186A
JP2012164186A JP2011024819A JP2011024819A JP2012164186A JP 2012164186 A JP2012164186 A JP 2012164186A JP 2011024819 A JP2011024819 A JP 2011024819A JP 2011024819 A JP2011024819 A JP 2011024819A JP 2012164186 A JP2012164186 A JP 2012164186A
Authority
JP
Japan
Prior art keywords
data
buffer
divided
block processing
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2011024819A
Other languages
English (en)
Other versions
JP5738618B2 (ja
Inventor
Tomonori Yonemoto
友紀 米本
Suguru Ikeda
英 池田
Keisuke Nakazono
啓介 中薗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Olympus Corp
Original Assignee
Olympus Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Olympus Corp filed Critical Olympus Corp
Priority to JP2011024819A priority Critical patent/JP5738618B2/ja
Priority to US13/367,490 priority patent/US9026697B2/en
Publication of JP2012164186A publication Critical patent/JP2012164186A/ja
Application granted granted Critical
Publication of JP5738618B2 publication Critical patent/JP5738618B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03HIMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
    • H03H17/00Networks using digital techniques
    • H03H17/02Frequency selective networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/16Multiplexed systems, i.e. using two or more similar devices which are alternately accessed for enqueue and dequeue operations, e.g. ping-pong buffers
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03HIMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
    • H03H17/00Networks using digital techniques
    • H03H17/02Frequency selective networks
    • H03H2017/0298DSP implementation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Bus Control (AREA)
  • Image Input (AREA)
  • Storing Facsimile Image Data (AREA)

Abstract

【課題】分割ブロック毎の処理に必要なデータが、データ転送の切れ目をまたいでいる場合でも、バッファの記憶容量を増大させることなく、各ブロックの処理間のロス時間を低減することができるデータ処理装置を提供する。
【解決手段】予め定められたデータ取得単位毎にデータを取得するデータ取得部と、1つのデータ取得単位よりも少ない記憶容量の複数の分割バッファを具備し、合計の記憶容量が2つのデータ取得単位以上であるバッファ部と、データが有効であるか否かの有効データ情報を出力する有効データ領域判定部と、分割バッファにデータが格納されているか否かの管理情報を出力するバッファ状態管理部と、管理情報に基づいて、少なくとも有効データ情報に示された有効なデータを含む、分割バッファの記憶容量の単位のデータを分割バッファに書き込むデータ書き込み制御部と、管理情報に基づいて有効なデータを読み出すデータ読み出し制御部とを備える。
【選択図】図1

Description

本発明は、データ処理装置に関する。
静止画用カメラ、動画用カメラ、医療用内視鏡カメラ、または産業用内視鏡カメラなどの撮像装置に備えた画像処理装置において、例えば、特許文献1に開示された技術のように、2つのラインバッファを交互に使用することによってフィルタ処理などを行う画像処理回路が知られている。このような画像処理回路においては、1フレームの静止画像を複数のブロックに分割し、分割したブロック毎に画像処理が行われる。しかし、図10(a)に示したように、1フレームの静止画像を複数のブロックに分割した場合、分割したそれぞれのブロック内では処理を行う画像データの流れが連続しているが、異なるブロックとの間ではデータの流れが連続していない(図10(b)参照)。
そのため、1つのブロックの処理が完了する毎に、画像処理回路をリセットし、次に処理するブロックに対応した画像データの範囲などの設定を、毎回設定し直すという手続が必要であった(図11参照)。このように、各ブロックの処理毎に画像処理回路の動作を制御した場合、画像処理回路が動作していない時間的なロスの期間が、それぞれのブロックの処理の間に発生してしまう、という問題がある。この画像処理回路が動作していないロス時間は、1フレームの静止画像を処理するパイプライン処理全体の処理時間に影響することとなる。
パイプライン処理において各ブロック間の処理の時間的なロスを低減するため、例えば、特許文献2のような技術が開示されている。特許文献2に開示された技術では、パイプラインを構成する各処理回路毎に、当該処理回路による処理が完了したことを表す割込み信号(処理完了割込み信号)を、パイプライン処理の全体を制御するシーケンサに出力する(図12(a)参照)。そして、シーケンサが、処理回路から処理完了割込み信号が入力されるたびに、その処理回路の設定を個別に変更する(図12(b)参照)。これにより、シーケンサが処理回路の設定を変更するタイミングが、分割したブロックの処理を開始するタイミング毎ではなく、それぞれのブロックにおいて各処理回路の処理が完了したタイミング毎となる。このようにシーケンサが各処理回路の設定を変更するタイミングをそれぞれの処理回路毎にすることによって、特許文献2の技術では、各ブロック間の処理における時間的なロスを低減し、1フレームの静止画像のパイプライン処理を高速化している。
特開平8−336114号公報 特開2010−176606号公報
しかしながら、パイプラインを構成する処理回路の中には、特許文献2に開示された技術を採用して、1つのブロックの処理が完了した後に設定を変更して次のブロックの処理を開始した場合においても、依然として時間的なロスが発生してしまう処理回路が存在する。例えば、DMA(Direct Memory Access)のバースト転送によって、共通のデータバスに接続されたDRAM(Dynamic Random Access Memory)などの外部メモリに記憶されたデータにアクセスするデータ処理装置においては、データ処理装置内に備えたデータの一時保存用のバッファの大きさ(容量)や構成と、DMA転送(バースト転送)によってデータを転送するデータの量との組み合わせによってロス時間が発生してしまう。これは、バースト転送が予め定められたバースト幅の単位で行われるため、外部メモリ上にデータの切れ目(バースト境界)が存在してしまうことに起因している。
以下に、ロス時間が発生するデータ処理装置の一例を説明する。図13は、ロス時間が発生する従来のデータ処理装置の概略構成の一例を示したブロック図である。図13に示した従来のデータ処理装置は、2つのバッファ(バッファAとバッファB)と、外部メモリに記憶されているブロック処理(画像処理)に必要な画像データ(ブロック処理用データ)を共通のデータバスを介して取得して一方のバッファに書き込む(格納する)DMAインタフェース(I/F)と、他方のバッファに格納されているブロック処理用データを読み出してブロック処理(画像処理)を行った後に、例えば、パイプラインの次の画像処理部に出力するバッファ読み出し回路と、を備えている。
図13に示したような構成の従来のデータ処理装置では、2つのバッファを用いて、それぞれのバッファの動作(一方のバッファへのデータの書き込み、および他方のバッファからのデータの読み出し)を交互に切り替えることによって、データの入出力を同時期に行っている。ブロック処理用データを格納するそれぞれのバッファの大きさは、DMAインタフェースがDMA転送(バースト転送)によって外部メモリから取得するブロック処理用データの量と同じバッファサイズ(記憶容量)になっている。すなわち、図13に示した従来のデータ処理装置は、1回のDMA転送(バースト転送)によって、一方のバッファに格納することができるブロック処理用データのバースト境界の単位で管理されている。
図13に示した従来のデータ処理装置において、例えば、1ブロック目のブロック処理に必要なブロック処理用データは、図14(a)に示したように、バッファA→バッファB→バッファA→バッファBというように、DMAインタフェースによって順次2つのバッファに格納される。しかし、外部メモリからバースト転送するブロック処理用データは、必ずしもバースト境界と一致しているとは限らず、図14(a)に示したように、ブロック処理用データが、DMAインタフェースがバースト転送する際のデータのバースト境界をまたいでバッファに格納されることもある。そのため、例えば、1ブロック目の処理の4回目のDMA転送(バースト転送)によってバッファBに格納されるブロック処理用データや、2ブロック目の処理の1回目および5回目のDMA転送(バースト転送)によってバッファAに格納されるブロック処理用データのように、それぞれのブロックのブロック処理において使用されるブロック処理用データの量が少ない場合もある。そして、DMAインタフェースのバースト転送によって、ブロック処理に使用されないブロック処理用データもDMA転送されることとなる。
従来のデータ処理装置では、バッファ読み出し回路が、2つのバッファに格納されたブロック処理用データを交互に読み出して、ブロック処理を行う。ここで、図14(a)に示したように、ブロック処理用データがそれぞれのバッファに格納された場合における従来のデータ処理装置の処理のタイミングを、図14(b)を用いて説明する。
まず、DMAインタフェースは、外部メモリからDMA転送(バースト転送)したブロック処理用データをバッファAに格納する。バッファAへのブロック処理用データの格納が完了すると、DMAインタフェースは、引き続き外部メモリからDMA転送したブロック処理用データをバッファBに格納する。
また、バッファ読み出し回路は、DMA転送によってバッファAにブロック処理用データが格納されると、バッファAに格納されているブロック処理用データを読み出して、1ブロック目のブロック処理を開始する。バッファ読み出し回路は、バッファAに格納されているブロック処理用データを用いた1ブロック目のブロック処理が終了した後、バッファBにブロック処理用データが格納されている場合には、引き続きバッファBに格納されているブロック処理用データを読み出して、1ブロック目のブロック処理を継続する。
その後、DMAインタフェースは、バッファAに格納されているブロック処理用データを用いた1ブロック目のブロック処理が終了した場合、引き続き1ブロック目のブロック処理に必要なブロック処理用データを外部メモリからDMA転送してバッファAに格納する。以降、DMAインタフェースは、1ブロック目のブロック処理に必要なブロック処理用データの外部メモリからのDMA転送と、一方のバッファへの格納を順次行う。
また、バッファ読み出し回路は、バッファBに格納されているブロック処理用データを用いた1ブロック目のブロック処理が終了した後、バッファAにブロック処理用データが格納されている場合には、引き続きバッファAに格納されているブロック処理用データを読み出して、1ブロック目のブロック処理を継続する。以降、バッファ読み出し回路は、バッファB、バッファAに格納されているブロック処理用データを用いて、1ブロック目のブロック処理を順次行う。
1ブロック目のブロック処理に用いる最終のブロック処理用データ(図14(a)においては、4回目のDMA転送によってバッファBに格納されたブロック処理用データ)の一方のバッファへの格納が完了すると、2ブロック目の処理に必要な設定をすることで、DMAインタフェースは、引き続き、次に処理する2ブロック目のブロック処理に用いるブロック処理用データのDMA転送および一方のバッファへの格納を開始することができる。なお、1ブロック目のブロック処理に用いる最終のブロック処理用データは、バッファBに格納されているため、2ブロック目のブロック処理に用いるブロック処理用データは、バッファAから順次格納することとなる。より具体的には、図14(a)に示したように、バッファA→バッファB→バッファA→バッファB→バッファAというように、順次2つのバッファに格納される。
また、バッファ読み出し回路は、バッファAに格納されているブロック処理用データを用いた1ブロック目のブロック処理が終了した後、引き続きバッファBに格納されている最終のブロック処理用データを読み出して1ブロック目のブロック処理を行う。1ブロック目のブロック処理を行うための最終のブロック処理用データは、バッファBに格納されているブロック処理用データの内、一部(端数)のブロック処理用データである。このため、バッファBに格納されている最終のブロック処理用データを用いた1ブロック目のブロック処理は、比較的早い時間に終了する。そして、バッファ読み出し回路は、引き続き、次に処理する2ブロック目のブロック処理を開始することができる状態となる。
しかし、2ブロック目のブロック処理を開始することができる状態となった時点では、DMAインタフェースによる2ブロック目のブロック処理に必要な最初のブロック処理用データの外部メモリからのDMA転送、およびバッファAへの格納が完了していない。これは、例えば、図14(b)に示したように、バッファBに格納されている1ブロック目の最後のブロック処理用データの処理時間が、バッファAに2ブロック目の最初のブロック処理用データをDMA転送する時間よりも短い場合に発生する。
このため、バッファ読み出し回路は、バッファAに2ブロック目のブロック処理に必要な最初のブロック処理用データが格納されるまで、2ブロック目のブロック処理を待機することとなる。このブロック処理に必要なブロック処理用データがバッファに格納されるまで、すなわち、DMA転送(バースト転送)が完了するまで、バッファ読み出し回路がブロック処理の開始を待機している時間(ブロック処理開始の遅れ時間)が、データ処理装置におけるロス時間となってしまう、という問題がある。
また、バッファ読み出し回路は、バッファAに2ブロック目の最初のブロック処理用データが格納されると、バッファAに格納されているブロック処理用データを読み出して、2ブロック目のブロック処理を開始する。バッファ読み出し回路は、バッファAに格納されているブロック処理用データを用いた2ブロック目の最初のブロック処理が終了した後、引き続きバッファBに格納されているブロック処理用データを読み出して、2ブロック目のブロック処理を継続する状態となる。
しかし、図14(a)に示したように、2ブロック目のブロック処理を行うための最初のブロック処理用データが、バッファAに格納されているブロック処理用データの内、一部(端数)のブロック処理用データである場合には、バッファAに格納されている最初のブロック処理用データを用いた2ブロック目のブロック処理は、比較的早い時間に終了する。そして、バッファBに格納されているブロック処理用データを読み出して、2ブロック目のブロック処理を継続する状態となった時点では、2ブロック目のバッファAのブロック処理時間が2ブロック目のバッファBのDMA転送時間より短いため、DMAインタフェースによる2ブロック目のブロック処理に必要なブロック処理用データの外部メモリからのDMA転送、およびバッファBへの格納が完了していない。
このため、バッファ読み出し回路は、バッファBに2ブロック目のブロック処理に必要なブロック処理用データが格納されるまで、2ブロック目のブロック処理を待機することとなる。このブロック処理に必要なブロック処理用データがバッファに格納されるまでバッファ読み出し回路がブロック処理の開始を待機している時間も、データ処理装置におけるロス時間となってしまう、という問題がある。そして、これらのロス時間は、パイプライン処理全体の処理時間に影響してしまう。
このようなロス時間を低減することができる可能性を高めるため、例えば、図15に示したように、データ処理装置に搭載するバッファを、2つから4つ(バッファA、バッファB、バッファC、およびバッファD)に増やすことも考えられる。しかし、データ処理装置に搭載するバッファを増やすと、データ処理装置の回路規模が増大してしまう、という問題がある。
本発明は、上記の課題認識に基づいてなされたものであり、分割したブロック毎に処理を行うデータ処理装置において、処理に必要なデータが、当該データを転送する際の転送の切れ目をまたいでいるような場合でも、データ処理装置に備えるバッファの記憶容量を増大させることなく、各ブロックの処理の間のロス時間を低減することができるデータ処理装置を提供することを目的としている。
上記の課題を解決するため、本発明のデータ処理装置は、予め定められたデータ取得単位毎にデータを取得するデータ取得部と、前記データ取得部が1つの前記データ取得単位で取得する量よりも少ない、予め定められた記憶容量である複数の分割バッファを具備し、該複数の分割バッファの記憶容量を合計した記憶容量が、前記データ取得部が2つの前記データ取得単位で取得する量以上であるバッファ部と、前記データ取得部が取得するデータの内、有効なデータの領域を算出し、前記データ取得部が取得したデータが有効なデータであるか否かを表す有効データ情報を出力する有効データ領域判定部と、前記バッファ部に備えた前記分割バッファ毎に、該分割バッファに前記データが格納されているか否かを管理すると共に、該管理している各分割バッファの管理情報を出力するバッファ状態管理部と、前記管理情報に基づいて選択された、データが格納されていない前記分割バッファに、前記データ取得部が1回のデータ取得によって取得したデータの内、少なくとも前記有効データ情報によって有効なデータであることが示されているデータを含む、前記分割バッファの記憶容量の単位のデータを書き込むデータ書き込み制御部と、前記管理情報に基づいて選択された、データが格納されている前記分割バッファから、前記有効データ情報によって有効なデータであることが示されているデータを読み出すデータ読み出し制御部と、を備える、ことを特徴とする。
また、本発明の前記データ書き込み制御部は、前記バッファ部内の前記複数の分割バッファが、円環状に連結されているものと仮定し、前記データ取得部が1回のデータ取得によって取得したデータを、前記管理情報に基づいて順次選択した連続する前記分割バッファに、前記分割バッファの記憶容量の単位で順次書き込み、前記分割バッファへのデータの書き込みが完了する毎に、該データを書き込んだ前記分割バッファを表す情報と、該データの書き込みが完了したことを表す通知とを含む書き込み完了情報を出力し、前記バッファ状態管理部は、前記書き込み完了情報に基づいて、前記分割バッファの記憶容量の単位のデータが書き込まれた前記分割バッファの管理情報を、データが格納されている状態に変更する、ことを特徴とする。
また、本発明の前記データ読み出し制御部は、前記バッファ部内の前記複数の分割バッファが、円環状に連結されているものと仮定し、前記管理情報に基づいて順次選択された前記分割バッファから、格納されているデータの読み出しが完了する毎に、該データを読み出した前記分割バッファを表す情報と、該データの読み出しが完了したことを表す通知とを含む読み出し完了情報を出力し、前記バッファ状態管理部は、前記読み出し完了情報に基づいて、前記データが読み出された前記分割バッファの管理情報を、データが格納されていない状態に変更する、ことを特徴とする。
また、本発明の前記バッファ状態管理部は、前記データ書き込み制御部によって前記データ取得部が1回のデータ取得によって取得したデータの前記分割バッファへの書き込みが完了した後、該1回のデータ取得によって取得したデータに不要なデータが含まれている場合、該不要なデータのみが格納されている前記分割バッファの管理情報を、データが格納されていない状態に変更する、ことを特徴とする。
また、本発明の前記データ書き込み制御部は、前記データ取得部が1回のデータ取得によって取得したデータの内、少なくとも前記有効データ情報によって有効なデータであることが示されているデータを含む、前記分割バッファの記憶容量の単位のデータのみ、前記管理情報によってデータが格納されていないことが示されている前記分割バッファのいずれか1つの前記分割バッファに書き込むように制御する、ことを特徴とする。
また、本発明の前記データ書き込み制御部は、前記データ取得部が1回のデータ取得によって取得したデータの内、少なくとも前記有効データ情報によって有効なデータであることが示されているデータを含む、前記分割バッファの記憶容量の単位のデータを、前記分割バッファのいずれか1つの前記分割バッファに書き込むときに、前記複数の分割バッファの内、前記管理情報によってデータが格納されていないことが示されているいずれか1つの分割バッファにデータ書き込み制御信号を出力する、ことを特徴とする。
本発明によれば、分割したブロック毎に処理を行うデータ処理装置において、処理に必要なデータが、当該データを転送する際の転送の切れ目をまたいでいるような場合でも、データ処理装置に備えるバッファの記憶容量を増大させることなく、各ブロックの処理の間のロス時間を低減することができるという効果が得られる。
本発明の実施形態におけるデータ処理装置の概略構成を示したブロック図である。 本実施形態のデータ処理装置における処理の流れを説明する図である。 本実施形態のデータ処理装置に備えたバッファの構成例を説明する図である。 本実施形態のデータ処理装置に備えたバッファにデータを格納したときの一例を示した図である。 本実施形態のデータ処理装置に備えたバッファにデータを格納する動作の手順を示したフローチャートである。 本実施形態のデータ処理装置に備えたバッファに格納されたデータを読み出す動作の手順を示したフローチャートである。 本実施形態のデータ処理装置に備えたバッファの動作の一例を説明する図である。 本実施形態のデータ処理装置に備えたバッファの動作の一例を説明する図である。 本実施形態のデータ処理装置におけるブロック毎の処理タイミングの一例を示したタイミングチャートである。 従来のパイプライン処理におけるブロック分けの方法を説明する図である。 従来のパイプライン処理の処理タイミングの一例を説明する図である。 従来のパイプライン処理の処理タイミングの一例を説明する図である。 従来のデータ処理装置の概略構成の一例を示したブロック図である。 従来のデータ処理装置に備えたバッファにデータを格納するときの一例、およびブロック毎の処理タイミングの一例を示した図である。 従来のデータ処理装置の概略構成の別の一例を示したブロック図である。
以下、本発明の実施形態について、図面を参照して説明する。図1は、本実施形態におけるデータ処理装置の概略構成を示したブロック図である。図1に示したデータ処理装置100は、DMAインタフェース(I/F)10と、書き込み制御部20と、バッファ30と、状態管理部40と、有効データ判定部50と、読み出し制御部60と、を備えている。データ処理装置100は、従来のデータ処理装置と同様に、例えば、図10(a)に示したように1フレームの静止画像を複数のブロックに分割し、分割したブロック毎にブロック処理(画像処理)を行う。
より具体的には、共通のデータバスに接続されたDRAMなどの外部メモリ上に格納されているブロック処理に必要な画像データ(ブロック処理用データ)を、DMAインタフェース10がDMA転送(バースト転送)によって取得する。そして、DMAインタフェース10が取得したブロック処理用データを、書き込み制御部20が、状態管理部40による制御に応じてバッファ30に書き込む(格納する)。また、読み出し制御部60は、状態管理部40による制御に応じて、バッファ30に格納されたブロック処理用データを読み出し、ブロック処理を行った後に、例えば、パイプラインの次の画像処理部に出力する。
データ処理装置100と従来のデータ処理装置とを比較すると、データ処理装置100では、ブロック処理用データを記憶するバッファが1つのバッファ30に統合され、状態管理部40および有効データ判定部50が追加されている。なお、図1に示したデータ処理装置100においては、追加された状態管理部40との関係を明確にするため、従来のデータ処理装置に備えていたDMAインタフェースに相当する構成要素を、DMAインタフェース10および書き込み制御部20に分割して示している。そして、書き込み制御部20および従来のデータ処理装置に備えたバッファ読み出し回路に相当する読み出し制御部60は、状態管理部40から入力された情報に応じてバッファ30へのブロック処理用データの書き込み、およびバッファ30からのブロック処理用データの読み出しを制御する。
バッファ30は、例えば、SRAM(Static Random Access Memory)などで構成された、ブロック処理用データを一時記憶する記憶部である。バッファ30は、DMAインタフェース10が外部メモリから1回のDMA転送によって取得するブロック処理用データの量の2倍の大きさの記憶容量(バッファサイズ)となっている。すなわち、バッファ30は、構成は異なるが、図13に示した従来のデータ処理装置に搭載されたバッファと同様に、2回分のDMA転送によって取得するブロック処理用データを記憶することができる記憶容量を持ったバッファである。また、バッファ30は、予め定められた記憶容量毎に複数の領域に分割されており、分割された記憶領域(以下、「分割バッファ」という)毎に、ブロック処理用データの書き込みおよび読み出しが制御される。また、バッファ30は、複数の分割バッファを仮想的にリング状につなげたリングバッファの形式であるものとして、ブロック処理用データの書き込みおよび読み出しが制御される。
DMAインタフェース10は、外部メモリに記憶されているブロック処理用データを、DMA転送(バースト転送)によって共通のデータバスを介して取得する。そして、DMAインタフェース10は、取得したブロック処理用データを書き込み制御部20に出力する。
書き込み制御部20は、DMAインタフェース10から入力されたブロック処理用データを、バッファ30に書き込む(格納する)。より具体的には、書き込み制御部20がバッファ30にブロック処理用データを格納する際、まず、状態管理部40から入力される空きバッファ情報に基づいて、ブロック処理用データを書き込むバッファ30内の分割バッファを決定する。そして、決定した分割バッファに基づいて生成した書き込み信号によって、バッファ30内の対応する分割バッファにブロック処理用データを書き込む。また、書き込み制御部20は、ブロック処理用データの分割バッファへの書き込みが完了したとき、ブロック処理用データの格納が完了したことを表す通知と、ブロック処理用データを格納した分割バッファの情報とを、書き込み完了情報として状態管理部40に出力する。なお、状態管理部40から入力されるバッファ30の空きバッファ情報に基づいた書き込み制御部20によるブロック処理用データのバッファ30への書き込み(格納)動作に関する詳細な説明は、後述する。
読み出し制御部60は、バッファ30に格納されているブロック処理用データを読み出し、読み出したブロック処理用データに対して、分割したブロック毎のブロック処理を行う。より具体的には、読み出し制御部60がバッファ30からブロック処理用データを読み出す際、まず、状態管理部40から入力されるブロック処理に使用するための有効データがバッファに格納されている情報(以下、「有効バッファ情報」という)に基づいて、ブロック処理用データを読み出すバッファ30内の分割バッファを決定する。そして、決定した分割バッファに基づいて生成した読み出し制御信号によって、バッファ30内の対応する分割バッファからブロック処理用データを読み出す。そして、読み出し制御部60は、ブロック処理を行った後のブロック処理用データを、例えば、パイプラインの次の画像処理部など、データ処理装置100の外部に出力する。また、読み出し制御部60は、分割バッファからのブロック処理用データの読み出しが完了したとき、ブロック処理用データの読み出しが完了したことを表す通知と、ブロック処理用データを読み出した分割バッファの情報とを、読み出し完了情報として状態管理部40に出力する。なお、状態管理部40から入力されるバッファ30の有効バッファ情報に基づいた読み出し制御部60によるバッファ30からのブロック処理用データの読み出し動作に関する詳細な説明は、後述する。
有効データ判定部50は、DMAインタフェース10がDMA転送(バースト転送)によって取得したブロック処理用データが、ブロック処理に使用する有効なデータであるか、ブロック処理に使用しない無効なデータであるかを判定する。そして、ブロック処理に使用する有効なデータの領域を表す情報を、有効データ領域情報として状態管理部40に出力する。
状態管理部40は、書き込み制御部20から入力される書き込み完了情報、および読み出し制御部60から入力される読み出し完了情報に基づいて、バッファ30内のそれぞれの分割バッファにブロック処理用データが格納されているか否かの状態を管理する。より具体的には、書き込み制御部20によってブロック処理用データが格納された分割バッファを使用中(ブロック処理用データが格納されている)の状態とし、読み出し制御部60によってブロック処理用データが読み出された分割バッファを空き(ブロック処理用データが格納されていない)の状態とする。また、状態管理部40は、有効データ判定部50から入力される有効データ領域情報に基づいて、使用中の分割バッファの内、ブロック処理に使用しない無効なブロック処理用データが格納されている分割バッファを空きの状態に変更する。
状態管理部40は、空きの状態となっている分割バッファの情報を、空きバッファ情報として書き込み制御部20に出力する。この空きバッファ情報は、書き込み制御部20がブロック処理用データをバッファ30に書き込む際に、ブロック処理用データを書き込もうとしている分割バッファが空きの状態であるか否かの判断に用いられる。そして、書き込み制御部20は、ブロック処理用データを書き込もうとしている分割バッファが空きの状態である場合に、当該分割バッファがブロック処理用データを格納することができる分割バッファであると判断し、ブロック処理用データを書き込む分割バッファに決定する。
また、状態管理部40は、有効データ判定部50から入力される有効データ領域情報に基づいて、DMAインタフェース10によってDMA転送(バースト転送)されてくるブロック処理用データの内、バッファ30に格納すべき有効なブロック処理用データを判断するための有効データ情報を、空きバッファ情報に付加して書き込み制御部20に出力する。この有効データ情報は、DMAインタフェース10がバースト転送によって取得したブロック処理用データが、現在のブロック処理に使用する有効なデータであるか、ブロック処理に使用しない無効なデータであるかを、ブロック処理用データ毎に表した情報である。書き込み制御部20は、DMAインタフェース10から入力されたブロック処理用データの内、現在のブロック処理に使用する有効なデータを、空きの状態である分割バッファに格納する。
また、状態管理部40は、使用中の状態となっている分割バッファの情報を、有効バッファ情報として読み出し制御部60に出力する。この有効バッファ情報は、読み出し制御部60がバッファ30からブロック処理用データを読み出す際に、ブロック処理用データを読み出そうとしている分割バッファに有効なブロック処理用データが格納されているか否かの判断に用いられる。そして、読み出し制御部60は、ブロック処理用データを読み出そうとしている分割バッファに有効なブロック処理用データが格納されている場合に、当該分割バッファからブロック処理用データを読み出すことができる分割バッファであると判断し、ブロック処理用データを読み出す分割バッファに決定する。
ここで、本実施形態のデータ処理装置100におけるブロック処理の流れについて説明する。図2は、本実施形態のデータ処理装置100におけるブロック処理の流れを説明する図である。図2には、データ処理装置100が外部メモリ200からデータを取得してブロック処理したデータを出力するまでの処理の流れと、各段階で読み出しまたは書き込みされるデータの流れとを模式的に示している。
外部メモリ200には、横方向にデータの流れが連続したブロック処理用データが格納されている。DMAインタフェース10は、1回のバースト転送において、1バースト幅分のブロック処理用データを、外部メモリ200から取得する。また、DMAインタフェース10は、外部メモリ200から取得するブロック処理用データのライン数と同じ回数のバースト転送を行ってDMA転送を終了する。従って、DMAインタフェース10は、1回のDMA転送において、1バースト幅×ライン数分のブロック処理用データを外部メモリ200から取得する。なお、DMAインタフェース10が1回のバースト転送で取得する1バースト幅が、バースト境界の境界線となる。
書き込み制御部20は、DMAインタフェース10が取得したブロック処理用データを、外部メモリ200に格納されている形式と同様の形式で、バッファ30に格納する。その後、読み出し制御部60は、バッファ30に格納されているブロック処理用データを縦横変換、すなわち、縦方向にデータの流れが連続するように変換して読み出し、読み出したブロック処理用データに対してブロック処理を行って出力する。なお、ブロック処理用データの流れによっては、読み出し制御部60によるブロック処理用データの縦横変換は、必ずしも必要な処理ではない。
次に、本実施形態のデータ処理装置100に備えたバッファ30の構成について説明する。図3は、本実施形態のデータ処理装置100に備えたバッファ30の構成例を説明する図である。図3に示したバッファ30の構成例では、バッファ30の全ての記憶容量を、記憶領域1〜8の8つの分割バッファに分割した場合の一例を示している。バッファ30は、それぞれの分割バッファの単位で、書き込み制御部20によるブロック処理用データの書き込み、読み出し制御部60によるブロック処理用データの読み出し、および状態管理部40による状態の管理が行われる。なお、以下の説明においては、8つに分割したそれぞれの分割バッファ(記憶領域)を区別するため、それぞれの分割バッファに符号を付与し、分割バッファ1〜分割バッファ8とする。分割バッファ1〜分割バッファ8の記憶容量の総量は、図13に示した従来の構成のバッファAとバッファBとを合わせた記憶容量と同じ容量である。
上記に述べたように、バッファ30の記憶容量は、DMAインタフェース10が外部メモリ200から1回のDMA転送によって取得するブロック処理用データの量の2倍のバッファサイズである。そして、分割バッファ1〜分割バッファ8が仮想的にリング状につなげたリングバッファの形式であるものとして、ブロック処理用データの書き込みおよび読み出しが制御される。従って、DMAインタフェース10の1回のDMA転送によって、4つの分割バッファに格納されるブロック処理用データが取得される。
書き込み制御部20は、図2に示したように、横方向にデータの流れが連続したブロック処理用データを、連続する4つの分割バッファに格納する。従って、書き込み制御部20は、最初のラインのバースト転送によって取得されたブロック処理用データを、例えば、分割バッファ1→分割バッファ2→分割バッファ3→分割バッファ4というように、順次4つの分割バッファの最初のラインに対応した記憶領域に格納する。続いて、次のラインのバースト転送によって取得されたブロック処理用データを、再び、分割バッファ1→分割バッファ2→分割バッファ3→分割バッファ4というように、順次4つの分割バッファの2番目のラインに対応した記憶領域に格納する。このように、書き込み制御部20は、DMAインタフェース10がDMA転送によって取得した1バースト幅×ライン数分のブロック処理用データを、4つの分割バッファに順次格納する。
また、読み出し制御部60は、図2に示したように、バッファ30に格納されているブロック処理用データを縦横変換して、縦方向にデータの流れが連続するように読み出す。従って、読み出し制御部60は、最初に分割バッファ1に格納された1番目の縦の1ラインのブロック処理用データを読み出し、続いて、分割バッファ1に格納された2番目の縦の1ラインのブロック処理用データを読み出す。そして、分割バッファ1に格納された最後の縦の1ラインのブロック処理用データを読み出して、分割バッファ1に格納されている全てのブロック処理用データの読み出しが完了した後、引き続き、分割バッファ2に格納された1番目の縦の1ラインのブロック処理用データを読み出す。このように、読み出し制御部60は、分割バッファ毎にブロック処理用データを読み出し、4つの分割バッファに格納されている全てのブロック処理用データの読み出しが完了したときに、ブロック処理用データの読み出しを終了する。
次に、本実施形態のデータ処理装置100に備えた状態管理部40および有効データ判定部50による、書き込み制御部20および読み出し制御部60への情報の出力について説明する。図4は、本実施形態のデータ処理装置100に備えたバッファ30にブロック処理用データを格納したときの一例を示した図である。図4に示したブロック処理用データの格納例は、例えば、図10(a)に示したように1フレームの静止画像を複数のブロックに分割したブロック毎にブロック処理(画像処理)を行う場合において、1つのブロックに対応したブロック処理用データの量が、3回のDMA転送分あり、ブロック処理するために必要なブロック処理用データが、DMAインタフェース10がバースト転送する際のバースト境界をまたいでいる場合を示している。
DMAインタフェース10によるDMA転送は、バースト幅の単位でのデータ転送であり、1つのバースト幅に含まれる有効なブロック処理用データのみがDMA転送されるわけではない。そのため、ブロック処理用データがバースト境界をまたいでいない場合には、3回のDMA転送によって1つのブロックに対応した全てのブロック処理用データを取得することができるが、図4に示したブロック処理用データの格納例のように、ブロック処理用データがバースト境界をまたいでいる場合には、4回のDMA転送で全てのブロック処理用データを取得することになる。このため、最初のDMA転送と最後のDMA転送のときに、無効なブロック処理用データが含まれている可能性がある。図4に示したブロック処理用データの格納例では、1回目のDMA転送(DMA転送A)と4回目のDMA転送(DMA転送D)とにおいて、1バースト幅に満たない端数のブロック処理用データが取得される。これは、DMA転送AとDMA転送Dとにおいて、ブロック処理に使用しない無効なブロック処理用データが、バッファ30に格納されることを表している。
そこで、有効データ判定部50は、DMAインタフェース10がブロック処理用データを取得するときに行われるDMA転送の回数に基づいて、現在行われているDMA転送によって、ブロック処理に使用しない無効なブロック処理用データがバッファ30に格納される可能性があるか否かを判定する。より具体的には、DMAインタフェース10が実行しているDMA転送の回数をカウントし、カウントしたDMA転送の回数と、予め設定された今回処理するブロックにおけるDMA転送の回数とを比較する。そして、カウントしたDMA転送の回数が、1回目(例えば、カウント値=0)の場合、および予め設定されたDMA転送の回数と同じ回数である場合(例えば、カウント値=設定された回数−1)に、今回カウントしたDMA転送において、無効なブロック処理用データがバッファ30に格納される可能性があると判定する。これにより、例えば、図4に示したように、4回のDMA転送によって全てのブロック処理用データを取得する場合には、DMA転送A(最初のDMA転送)とDMA転送D(最後のDMA転送)のときに、無効なブロック処理用データがバッファ30に格納される可能性があると判定される。
そして、有効データ判定部50は、無効なブロック処理用データがバッファ30に格納される可能性があると判定したDMA転送において、それぞれのバースト幅毎に、ブロック処理に使用する有効なブロック処理用データの領域(以下、「有効データ領域」という)を算出する。有効データ領域は、ブロック処理用データの画像サイズ、ブロック処理の基準座標(例えば、ブロックの左上端の座標)、ブロックのサイズ、ブロック処理用データの格納フォーマットなどの値に基づいて算出される。例えば、図4に示した1ブロック目のブロック処理では、1つ目のバースト幅および4つ目のバースト幅において、一部(端数)のブロック処理用データのみが有効なデータであり、2つ目および3つ目のバースト幅では、全てのブロック処理用データが有効なデータである。有効データ判定部50は、それぞれのバースト幅内の有効データ領域を算出する。そして、有効データ判定部50は、無効なブロック処理用データがバッファ30に格納されると判定したDMA転送において算出した有効データ領域を、有効データ領域情報として状態管理部40に出力する。
そして、状態管理部40は、有効データ判定部50から入力された有効データ領域情報に基づいて、DMAインタフェース10がDMA転送によって取得したブロック処理用データが、ブロック処理に使用する有効なデータであるか、ブロック処理に使用しない無効なデータであるかを判断するための情報を、有効データ情報として書き込み制御部20に出力する。
なお、状態管理部40が書き込み制御部20に出力する有効データ情報は、ブロック処理用データ毎に、当該ブロック処理用データが有効なデータであるか無効なデータであるかを表す情報であるが、書き込み制御部20による分割バッファへの格納は、分割バッファの単位である。従って、書き込み制御部20は、分割バッファの単位で、DMAインタフェース10から入力されたブロック処理用データを格納するか否かを決定するため、分割バッファに格納されるブロック処理用データが全て無効な場合、当該分割バッファにはブロック処理用データが格納されないように制御する。そのため、分割バッファ内には、無効なブロック処理用データが一部含まれていることもあるが、分割バッファに格納された全てのブロック処理用データが無効なブロック処理用データとなってしまうことはない。
例えば、図4に示したブロック処理用データの格納例では、1ブロック目のDMA転送Aでは、1つ目の分割バッファの一部に無効なブロック処理用データが格納されている。また、1ブロック目のDMA転送Dでは、1つ目の分割バッファの一部に有効なブロック処理用データが格納されているが、2つ目〜4つ目までの分割バッファに無効なブロック処理用データが格納されることはなくなる。また、例えば、図4に示した2ブロック目のDMA転送Dでは、4つ目の分割バッファの一部に無効なブロック処理用データが格納されている。また、2ブロック目のDMA転送Aでは、4つ目の分割バッファの一部に有効なブロック処理用データが格納されているが、1つ目〜3つ目までの分割バッファに無効なブロック処理用データが格納されることはなくなる。
このように、分割バッファの単位でブロック処理用データの格納を管理することにより、図13に示した従来のデータ処理装置のように、バッファに格納されたブロック処理用データの多くが無効なブロック処理用データとなってしまうことを回避することができる。
なお、バッファ30の記憶領域を分割する分割バッファの単位を、図2に示した縦の1ラインの単位とした構成とすることもできる。この場合には、書き込み制御部20が状態管理部40から入力された空きバッファ情報に含まれる有効データ情報に基づいて、ブロック処理用データを分割バッファに格納することにより、有効なブロック処理用データのみを分割バッファに格納することができる。
上記に述べたように、本実施形態のデータ処理装置100では、外部メモリ200からバースト転送するブロック処理用データのバースト境界が、ブロック処理するブロックの境界と一致していない場合においても、DMAインタフェース10が取得した多くの無効なブロック処理用データをバッファ30に格納することなく、バッファ30の記憶領域を効率的に使用することができる。これにより、本実施形態のデータ処理装置100では、安易にバッファサイズを増大させることなく、データの処理を行うことができる。
ここで、本実施形態のデータ処理装置100に備えたバッファ30の管理方法について説明する。まず、バッファ30にブロック処理用データを格納する際のバッファ30の管理方法について説明する。図5は、本実施形態のデータ処理装置100に備えたバッファ30にブロック処理用データを格納する動作の手順を示したフローチャートである。
データ処理装置100におけるブロック処理用データの取得の動作が開始されると、まず、ステップS100において、状態管理部40は、バッファ30内に空きの状態の分割バッファがあるか否かを確認する。バッファ30内に空きの状態の分割バッファがない場合には、ステップS100を繰り返す。また、バッファ30内に空きの状態の分割バッファがある場合には、ステップS110において、有効データ判定部50は、DMAインタフェース10が取得したブロック処理用データがブロックの左端のデータであるか否かを判定する。
ステップS110における有効データ判定部50の判定の結果、DMAインタフェース10が取得するブロック処理用データがブロックの左端のデータである場合、有効データ判定部50は、有効データ領域を算出し、有効データ領域情報を状態管理部40に出力する。そして、状態管理部40は、有効データ判定部50から入力された有効データ領域情報に基づいて、DMAインタフェース10が取得したブロック処理用データが、有効なデータであるか無効なデータであるかを判断するための有効データ情報含む空きバッファ情報を書き込み制御部20に出力する。
続いて、ステップS200において、書き込み制御部20は、状態管理部40から入力された空きバッファ情報に含まれる有効データ情報に基づいて、DMAインタフェース10から入力されたブロック処理用データ内に、現在のブロック処理に使用しない無効なブロック処理用データがあるか否かを判定する。判定の結果、DMAインタフェース10から入力されたブロック処理用データ内に無効なブロック処理用データがある場合には、ステップS211において、書き込み制御部20は、状態管理部40から入力された空きバッファ情報に基づいて、有効なブロック処理用データを書き込むバッファ30内の分割バッファを決定する。そして、有効なブロック処理用データを、対応する空きの状態の分割バッファに格納する。また、書き込み制御部20は、有効なブロック処理用データの分割バッファへの書き込みが完了すると、書き込み完了情報を状態管理部40に出力する。
また、ステップS200における判定の結果、DMAインタフェース10から入力されたブロック処理用データ内に無効なブロック処理用データがない場合には、ステップS212において、書き込み制御部20は、状態管理部40から入力された空きバッファ情報に基づいて、入力された全てのブロック処理用データを書き込むバッファ30内の分割バッファを決定する。そして、全てのブロック処理用データを、空きの状態の分割バッファに格納する。また、書き込み制御部20は、全てのブロック処理用データの分割バッファへの書き込みが完了すると、書き込み完了情報を状態管理部40に出力する。
続いて、ステップS230において、状態管理部40は、書き込み制御部20から入力された書き込み完了情報に基づいて、バッファ30内の分割バッファの状態、すなわち、ブロック処理用データが格納された分割バッファの状態を更新する。そして、ステップS100に戻って、DMAインタフェース10が取得したブロック処理用データを格納する動作を継続する。
また、ステップS110における有効データ判定部50の判定の結果、DMAインタフェース10が取得するブロック処理用データがブロックの左端のデータでない場合、ステップS300において、書き込み制御部20は、状態管理部40から入力された空きバッファ情報に基づいて、入力された全てのブロック処理用データを書き込むバッファ30内の分割バッファを決定する。そして、全てのブロック処理用データを、空きの状態の分割バッファに格納する。また、書き込み制御部20は、全てのブロック処理用データの分割バッファへの書き込みが完了すると、書き込み完了情報を状態管理部40に出力する。
続いて、ステップS310において、有効データ判定部50は、DMAインタフェース10が取得したブロック処理用データがブロックの右端のデータであるか否かを判定する。DMAインタフェース10が取得するブロック処理用データがブロックの右端のデータでない場合には、ステップS340に進む。また、DMAインタフェース10が取得するブロック処理用データがブロックの右端のデータである場合には、有効データ判定部50は、有効データ領域を算出し、有効データ領域情報を状態管理部40に出力する。
続いて、ステップS320において、状態管理部40は、有効データ判定部50から入力された有効データ領域情報に基づいて、バッファ30内のそれぞれの分割バッファに、現在のブロック処理に使用しない不要(無効)なブロック処理用データが格納されているか否かを判定する。バッファ30内に不要なブロック処理用データが格納されていない場合には、ステップS340に進む。また、バッファ30内に不要なブロック処理用データが格納されている場合には、ステップS330において、状態管理部40は、不要なブロック処理用データが格納されている分割バッファを開放(空きの状態に変更)する。
続いて、ステップS340において、状態管理部40は、書き込み制御部20から入力された書き込み完了情報に基づいて、バッファ30内の分割バッファの状態、すなわち、ブロック処理用データが格納された分割バッファの状態を更新する。
続いて、ステップS350において、有効データ判定部50は、1フレーム分のブロック処理用データの取得が終了したか否かを確認する。1フレーム分のブロック処理用データの取得が終了していない場合には、ステップS100に戻って、DMAインタフェース10が取得したブロック処理用データを格納する動作を継続する。1フレーム分のブロック処理用データの取得が終了した場合には、バッファ30にブロック処理用データを格納する動作を終了する。
なお、図5に示したブロック処理用データをバッファ30に格納する動作の手順では、DMAインタフェース10が取得したブロック処理用データがブロックの右端のデータ(ステップ310がYES)であり、分割バッファに不要なブロック処理用データが格納されている(ステップ320がYES)場合に、ステップS330において、不要なブロック処理用データが格納されている分割バッファを開放する場合について説明した。しかし、DMAインタフェース10が取得したブロック処理用データがブロックの右端のデータである場合のバッファ30への格納動作は、一旦バッファ30にブロック処理用データを格納した後に、分割バッファを開放する方法に限定されるものではない。例えば、ステップS200と同様に、書き込み制御部20が、DMAインタフェース10から入力されたブロック処理用データ内に、現在のブロック処理に使用しない無効なブロック処理用データがあるか否かを判定する。そして、その判定の結果に基づいて、ステップS211と同様に、書き込み制御部20が、有効なブロック処理用データを書き込むバッファ30内の分割バッファを決定し、有効なブロック処理用データを、対応する空きの状態の分割バッファに格納する動作にすることもできる。
次に、バッファ30に格納されたブロック処理用データを読み出す際のバッファ30の管理方法について説明する。図6は、本実施形態のデータ処理装置100に備えたバッファ30に格納されたブロック処理用データを読み出す動作の手順を示したフローチャートである。
データ処理装置100におけるブロック処理の動作が開始されると、まず、ステップS400において、状態管理部40は、バッファ30内の分割バッファにブロック処理用データが格納されているか否かを確認する。バッファ30内の分割バッファにブロック処理用データが格納されてない場合には、ステップS400を繰り返す。また、バッファ30内の分割バッファにブロック処理用データが格納されている場合には、ステップS410において、読み出し制御部60は、縦の1ラインのブロック処理用データを読み出し、読み出したブロック処理用データに対してブロック処理を行った後、データ処理装置100の外部に出力する。また、読み出し制御部60は、ブロック処理用データを読み出しが完了すると、読み出し完了情報を状態管理部40に出力する。
続いて、ステップS420において、状態管理部40は、読み出し制御部60から入力された読み出し完了情報に基づいて、バッファ30内に空きの状態の分割バッファができたか否か、すなわち、分割バッファに格納されているブロック処理用データが全てブロック処理に使用されたか否かを確認する。バッファ30内に空きの状態の分割バッファができていない場合には、ステップS410に戻って、読み出し制御部60によるブロック処理用データを読み出しおよびブロック処理を継続する。また、バッファ30内に空きの状態の分割バッファができた場合には、ステップS430において、状態管理部40は、読み出し制御部60から入力された読み出し完了情報に基づいて、バッファ30内の分割バッファの状態、すなわち、ブロック処理用データが読み出された分割バッファの状態を更新する。
続いて、ステップS440において、状態管理部40は、1フレーム分のブロック処理用データに対するブロック処理が完了したか否かを確認する。1フレーム分のブロック処理用データに対するブロック処理が完了していない場合には、ステップS400に戻って、バッファ30に格納されているブロック処理用データに対するブロック処理を継続する。1フレーム分のブロック処理用データに対するブロック処理が完了した場合には、バッファ30に格納されているブロック処理用データに対するブロック処理の動作を終了する。
次に、本実施形態のデータ処理装置100に備えたバッファ30の動作について説明する。図7および図8は、本実施形態のデータ処理装置100に備えたバッファ30の動作の一例を説明する図である。なお、図7および図8に示したバッファ30の動作の説明においては、図4に示したブロック処理用データの格納例を参照して説明する。また、データ処理装置100に備えたバッファ30の構成は、図3に示したように、バッファ30の全ての記憶容量を8つの分割バッファに分割されているものとする。そして、DMAインタフェース10は、図4に示したように、1バースト幅が4つの分割バッファの幅であり、有効なブロック処理用データが、DMAインタフェース10がバースト転送する際のバースト境界をまたいでいるものとする。すなわち、図7および図8に示したバッファ30の動作は、DMAインタフェース10が、1回のバースト転送で、横方向にデータの流れが連続した4つの分割バッファ分のブロック処理用データを外部メモリ200から取得し、書き込み制御部20は、連続する4つの分割バッファにDMAインタフェース10から入力されたブロック処理用データを格納する場合の動作例である。
なお、図7および図8に示したバッファ30の動作の説明では、図4に示した1ブロック目のDMA転送Dおよび2ブロック目のDMA転送Aにおいて、有効なブロック処理用データが1つ、すなわち、縦の1ラインのみ有効であり、1ブロック目のDMA転送Aおよび2ブロック目のDMA転送Dにおいて、無効なブロック処理用データが1つ、すなわち、縦の1ラインのみ無効であるものとして説明する。
まず、データ処理装置100の動作が開始され、DMAインタフェース10が1ブロック目のDMA転送Aによって、ブロック処理用データを取得する。最初は、状態管理部40が把握している空きバッファ情報は、図7(a)に示したように、全ての分割バッファ(分割バッファ1〜分割バッファ8)が空きの状態である。
書き込み制御部20は、状態管理部40から入力される空きバッファ情報に基づいて、1ブロック目のDMA転送Aで取得したブロック処理用データを格納する分割バッファを、分割バッファ1〜分割バッファ4に決定する。そして、書き込み制御部20は、図7(b)に示したように、DMAインタフェース10のDMA転送Aによって取得したブロック処理用データを、分割バッファ1→分割バッファ2→分割バッファ3→分割バッファ4というように、順次4つの分割バッファに格納する(図5のステップS110〜ステップS212参照)。
なお、最初に取得したブロックの左端のブロック処理用データには、現在(1ブロック目)のブロック処理に使用しない無効なブロック処理用データが含まれている可能性がある。書き込み制御部20は、状態管理部40から入力された空きバッファ情報に含まれる有効データ情報に基づいて、DMAインタフェース10から入力された1ブロック目のブロック処理用データに含まれる有効なブロック処理用データを書き込むバッファ30内の分割バッファを決定する。ここでは、1ブロック目のDMA転送Aにおいて無効なブロック処理用データが1つであるため、1ブロック目のDMA転送Aで取得した全てのブロック処理用データが、分割バッファ1〜分割バッファ4に格納され、分割バッファ1に格納されているブロック処理用データの内、最初の縦の1ラインのみが無効なブロック処理用データである。
ブロック処理用データの分割バッファ1〜4への書き込みが完了したとき、書き込み制御部20は、書き込み完了情報を状態管理部40に出力する。これにより、状態管理部40は、図7(c)に示したように、分割バッファ1〜4の状態を使用中の状態、すなわち、分割バッファへの他のデータ書き込みが不可の状態にする。
読み出し制御部60は、分割バッファ1〜分割バッファ4にブロック処理用データが格納された後、状態管理部40から入力される有効バッファ情報に基づいて、ブロック処理用データを読み出す分割バッファを、分割バッファ1〜分割バッファ4に決定する。そして、図7(d)に示したように、分割バッファ1から順に、格納されているブロック処理用データを読み出し、読み出したブロック処理用データに対してブロック処理を行って出力する(図6のステップS400〜ステップS410参照)。なお、分割バッファ1に格納されている最初の縦の1ラインは無効なブロック処理用データであるため、読み出しおよびブロック処理を行わず、分割バッファ1に格納されている縦の2ライン目から、ブロック処理用データの読み出しおよびブロック処理を行う。
また、状態管理部40が把握している空きバッファ情報は、図7(c)に示したように、分割バッファ5〜分割バッファ8が空きの状態である。書き込み制御部20は、状態管理部40から入力される空きバッファ情報に基づいて、1ブロック目のDMA転送Bで取得したブロック処理用データを格納する分割バッファを、分割バッファ5〜分割バッファ8に決定する。そして、書き込み制御部20は、図7(d)に示したように、DMAインタフェース10のDMA転送Bによって取得したブロック処理用データを、分割バッファ5→分割バッファ6→分割バッファ7→分割バッファ8というように、順次4つの分割バッファに格納する。
なお、DMA転送Bによって取得したブロック処理用データは、ブロックの左端でも右端でもない。すなわち、DMA転送Bによって取得したブロック処理用データには、現在(1ブロック目)のブロック処理に使用しない無効なブロック処理用データが含まれている可能性はない。従って、書き込み制御部20は、DMA転送Bによって取得した全てのブロック処理用データを分割バッファ5〜分割バッファ8に格納する(図5のステップS110、およびステップS300〜ステップS340参照)。
ブロック処理用データの分割バッファ5〜8への書き込みが完了したとき、書き込み制御部20は、書き込み完了情報を状態管理部40に出力する。これにより、状態管理部40は、図7(e)に示したように、分割バッファ5〜8の状態を使用中の状態にする。状態管理部40が把握している空きバッファ情報は、図7(e)に示したように、全ての分割バッファ1〜分割バッファ8が使用中の状態である。これにより、DMAインタフェース10によるDMA転送Cは、待機の状態になる(図5のステップS100参照)。
読み出し制御部60は、1つの分割バッファの読み出しおよびブロック処理が完了する毎に、読み出し完了情報を状態管理部40に出力する(図6のステップS410〜ステップS430参照)。従って、読み出し制御部60は、分割バッファ1に格納されているブロック処理用データの読み出しおよびブロック処理が完了したとき、読み出し完了情報を状態管理部40に出力する。そして、読み出し制御部60は、図7(f)に示したように、状態管理部40から入力される有効バッファ情報に基づいて、引き続き、分割バッファ2に格納されているブロック処理用データの読み出しおよびブロック処理を継続する。
また、状態管理部40は、読み出し制御部60から入力された読み出し完了情報に基づいて、図7(g)に示したように、分割バッファ1の状態を空きの状態、すなわち、分割バッファへの他のデータ書き込みが可能の状態にする。
以降、読み出し制御部60は、分割バッファ2〜分割バッファ4に格納されているブロック処理用データを順次読み出し、ブロック処理を行う。また、読み出し制御部60は、1つの分割バッファの読み出しおよびブロック処理が完了する毎に、読み出し完了情報を状態管理部40に出力する(図7(h)参照)。そして、読み出し制御部60は、図7(j)に示したように、状態管理部40から入力される有効バッファ情報に基づいて、引き続き、分割バッファ5に格納されているブロック処理用データの読み出しおよびブロック処理を継続する。
また、状態管理部40は、読み出し制御部60から分割バッファ2〜分割バッファ4に格納されているブロック処理用データの読み出しおよびブロック処理が完了したことを表す読み出し完了情報が入力される毎に、対応する分割バッファの状態を順次空きの状態にする。そして、読み出し制御部60から分割バッファ4に対する読み出し完了情報が入力されたとき、状態管理部40によって、分割バッファ4の状態が空きの状態にされる。これにより、状態管理部40が把握している空きバッファ情報は、図7(i)に示したように、分割バッファ1〜分割バッファ4が空きの状態になる。すなわち、DMA転送Cで取得したブロック処理用データを格納するための記憶容量が空いた状態になる。これにより、DMAインタフェース10は、待機していたDMA転送Cを再開する。
書き込み制御部20は、状態管理部40から入力される空きバッファ情報に基づいて、1ブロック目のDMA転送Cで取得したブロック処理用データを格納する分割バッファを、分割バッファ1〜分割バッファ4に決定する。そして、書き込み制御部20は、図7(j)に示したように、DMAインタフェース10のDMA転送Cによって取得したブロック処理用データを、分割バッファ1→分割バッファ2→分割バッファ3→分割バッファ4というように、順次4つの分割バッファに格納する。
なお、DMA転送Cによって取得したブロック処理用データも、ブロックの左端でも右端でもないため、現在(1ブロック目)のブロック処理に使用しない無効なブロック処理用データが含まれている可能性はない。従って、書き込み制御部20は、DMA転送Cによって取得した全てのブロック処理用データを分割バッファ1〜分割バッファ4に格納する。
ブロック処理用データの分割バッファ1〜4への書き込みが完了したとき、書き込み制御部20は、書き込み完了情報を状態管理部40に出力する。これにより、状態管理部40は、図7(k)に示したように、分割バッファ1〜4の状態を使用中の状態にする。これにより、バッファ30内の全ての分割バッファ1〜分割バッファ8が使用中の状態となるため、DMAインタフェース10によるDMA転送Dは、待機の状態になる。
また、読み出し制御部60は、状態管理部40から入力される有効バッファ情報に基づいて、分割バッファ5〜分割バッファ8に格納されているブロック処理用データの読み出しおよびブロック処理を継続している。そして、読み出し制御部60は、1つの分割バッファの読み出しおよびブロック処理が完了する毎に、読み出し完了情報を状態管理部40に出力する(図7(l)参照)。
状態管理部40は、分割バッファ8に格納されているブロック処理用データの読み出しおよびブロック処理が完了したことを表す読み出し完了情報が、読み出し制御部60から入力されると、図8(m)に示したように、分割バッファ8の状態を空きの状態にする。これにより、状態管理部40が把握している空きバッファ情報は、分割バッファ5〜分割バッファ8が空きの状態になる(図8(m)参照)。
これにより、DMA転送Dで取得したブロック処理用データを格納するための記憶容量が空いた状態になるため、DMAインタフェース10は、待機していたDMA転送Dを再開する。書き込み制御部20は、状態管理部40から入力される空きバッファ情報に基づいて、1ブロック目のDMA転送Dで取得したブロック処理用データを格納する分割バッファを、分割バッファ5〜分割バッファ8に決定する。そして、書き込み制御部20は、図8(n)に示したように、DMAインタフェース10のDMA転送Dによって取得したブロック処理用データを、分割バッファ5→分割バッファ6→分割バッファ7→分割バッファ8というように、順次4つの分割バッファに格納する。
ブロック処理用データの分割バッファ5〜8への書き込みが完了したとき、書き込み制御部20は、書き込み完了情報を状態管理部40に出力する。これにより、状態管理部40は、図8(o)に示したように、分割バッファ5〜8の状態を使用中の状態にする。また、読み出し制御部60は、状態管理部40から入力される有効バッファ情報に基づいて、分割バッファ1に格納されているブロック処理用データの読み出しおよびブロック処理を引き続き継続している(図8(p)参照)。
なお、DMA転送Dによって取得したブロック処理用データは、ブロックの右端のブロック処理用データである。すなわち、DMA転送Dによって取得したブロックの右端のブロック処理用データには、現在(1ブロック目)のブロック処理に使用しない不要なブロック処理用データが含まれている可能性がある。ここでは、1ブロック目のDMA転送Dにおいて有効なブロック処理用データが1つであるため、分割バッファ5の最初の縦の1ラインのみが有効なブロック処理用データである。このため、状態管理部40は、図8(q)に示したように、有効データ判定部50から入力された有効データ領域情報に基づいて、不要なブロック処理用データが格納されている分割バッファ6〜分割バッファ8を開放、すなわち、分割バッファへの他のデータ書き込みが可能な空きの状態に変更する(図5のステップS310〜ステップS330参照)。
書き込み制御部20によるブロック処理用データの分割バッファ5〜8への書き込みが完了、または状態管理部40による分割バッファ6〜分割バッファ8の開放がされたとき、データ処理装置100のDMAインタフェース10およびバッファ書き込み回路20がリセットされ、次に処理する2ブロック目のブロック処理に必要なブロック処理用データを外部メモリ200からDMA転送するための準備が開始される。しかし、状態管理部40が把握している空きバッファ情報は、図8(q)に示したように、空きの状態になっている分割バッファが、分割バッファ6〜分割バッファ8のみである。従って、DMAインタフェース10による2ブロック目のDMA転送Aで取得したブロック処理用データを格納するための記憶容量、すなわち、4つ分の分割バッファは空きの状態となっていない。このため、DMAインタフェース10による2ブロック目のDMA転送Aは、待機の状態になる。
読み出し制御部60は、分割バッファ1に格納されているブロック処理用データの読み出しおよびブロック処理が完了したとき、読み出し完了情報を状態管理部40に出力する。そして、読み出し制御部60は、図8(r)に示したように、状態管理部40から入力される有効バッファ情報に基づいて、引き続き、分割バッファ2に格納されているブロック処理用データの読み出しおよびブロック処理を継続する。
また、状態管理部40は、読み出し制御部60から入力された読み出し完了情報に基づいて、図8(s)に示したように、分割バッファ1の状態を空きの状態にする。これにより、状態管理部40が把握している空きバッファ情報は、分割バッファ1および分割バッファ6〜分割バッファ8が空きの状態になる。すなわち、2ブロック目のDMA転送Aで取得したブロック処理用データを格納するための4つ分の分割バッファが空いた状態になる。そして、DMAインタフェース10は、待機していた2ブロック目のDMA転送Aを再開する。
書き込み制御部20は、状態管理部40から入力される空きバッファ情報に基づいて、2ブロック目のDMA転送Aで取得したブロック処理用データを格納する分割バッファを、分割バッファ6〜分割バッファ8および分割バッファ1に決定する。そして、書き込み制御部20は、DMAインタフェース10の2ブロック目のDMA転送Aによって取得したブロック処理用データを、分割バッファ6→分割バッファ7→分割バッファ8→分割バッファ1というように、順次4つの分割バッファに格納するように準備する。
しかし、2ブロック目のDMA転送Aによって取得するブロック処理用データは、ブロックの左端のブロック処理用データであり、2ブロック目のブロック処理に使用しない無効なブロック処理用データが含まれている可能性がある。書き込み制御部20は、状態管理部40から入力された空きバッファ情報に含まれる有効データ情報に基づいて、DMAインタフェース10から入力された2ブロック目のブロック処理用データに含まれる有効なブロック処理用データを書き込むバッファ30内の分割バッファを決定する。ここでは、2ブロック目のDMA転送Aにおいて有効なブロック処理用データが1つであるため、分割バッファ6の最初の縦の1ラインのみが有効なブロック処理用データである。このため、書き込み制御部20は、図8(t)に示したように、分割バッファ6に対応するブロック処理用データのみが格納されるように制御する。このように制御することによって、分割バッファ6〜分割バッファ8および分割バッファ1が空いている状況で、今までと同じように図4に示した2ブロック目のDMA転送Aを行ってしまったことにより、有効なブロック処理用データが、分割バッファ1に格納されてしまうことを回避する。
ブロック処理用データの分割バッファ6への書き込みが完了したとき、書き込み制御部20は、書き込み完了情報を状態管理部40に出力する。これにより、状態管理部40は、図8(u)に示したように、分割バッファ6の状態を使用中の状態にする。ここで、状態管理部40が把握している空きバッファ情報では、図8(u)に示したように、空きの状態になっている分割バッファ(分割バッファ7、分割バッファ8,および分割バッファ1)があることを示している。しかし、DMAインタフェース10による2ブロック目のDMA転送Bで取得したブロック処理用データを格納する4つ分の分割バッファは空きの状態になっていないため、DMAインタフェース10による2ブロック目のDMA転送Bは、待機の状態になる。
また、読み出し制御部60は、状態管理部40から入力される有効バッファ情報に基づいて、分割バッファ2〜分割バッファ4に格納されているブロック処理用データの読み出しおよびブロック処理を継続している。従って、読み出し制御部60は、分割バッファ2の読み出しおよびブロック処理が完了したとき、読み出し完了情報を状態管理部40に出力する。そして、そして、読み出し制御部60は、図8(v)に示したように、状態管理部40から入力される有効バッファ情報に基づいて、引き続き、分割バッファ3に格納されているブロック処理用データの読み出しおよびブロック処理を継続する。
状態管理部40は、読み出し制御部60から分割バッファ2に対する読み出し完了情報が入力されたとき、図8(w)に示したように、分割バッファ2の状態を空きの状態にする。これにより、分割バッファ1、分割バッファ2、分割バッファ7および分割バッファ8、すなわち、2ブロック目のDMA転送Bで取得したブロック処理用データを格納するための4つ分の分割バッファが空いた状態になる。そして、DMAインタフェース10は、待機していた2ブロック目のDMA転送Bを再開する。
書き込み制御部20は、状態管理部40から入力される空きバッファ情報に基づいて、2ブロック目のDMA転送Bで取得したブロック処理用データを格納する分割バッファを、分割バッファ1、分割バッファ2、分割バッファ7および分割バッファ8に決定する。そして、書き込み制御部20は、図8(x)に示したように、DMAインタフェース10の2ブロック目のDMA転送Bによって取得したブロック処理用データを、分割バッファ7→分割バッファ8→分割バッファ1→分割バッファ2というように、順次4つの分割バッファに格納する。
なお、2ブロック目のDMA転送Bによって取得したブロック処理用データは、ブロックの左端でも右端でもないため、2ブロック目のブロック処理に使用しない無効なブロック処理用データが含まれている可能性はない。従って、書き込み制御部20は、2ブロック目のDMA転送Bによって取得した全てのブロック処理用データを分割バッファ1、分割バッファ2、分割バッファ7および分割バッファ8に格納する。
ブロック処理用データの分割バッファ1、分割バッファ2、分割バッファ7および分割バッファ8への書き込みが完了したとき、書き込み制御部20は、書き込み完了情報を状態管理部40に出力する。これにより、状態管理部40は、図8(y)に示したように、分割バッファ1、分割バッファ2、分割バッファ7および分割バッファ8の状態を使用中の状態にする。これにより、バッファ30内の全ての分割バッファ1〜分割バッファ8が使用中の状態となるため、DMAインタフェース10による2ブロック目のDMA転送Cは、待機の状態になる。
また、図8(z)に示したように、読み出し制御部60は、状態管理部40から入力される有効バッファ情報に基づいて、分割バッファ3〜分割バッファ4に格納されているブロック処理用データの読み出しおよびブロック処理を継続している。
以降、同様に、DMAインタフェース10によって取得したブロック処理用データを格納する4つ分の分割バッファが空きの状態となる毎に、書き込み制御部20は、取得したブロック処理用データを、空きの状態となっている分割バッファに順次格納する。なお、上記に述べたように、書き込み制御部20は、ブロック処理用データが、処理するブロックの左端または右端である場合には、バッファ30内の分割バッファの単位で、ブロック処理用データを格納する分割バッファを制御する。そして、読み出し制御部60は、分割バッファに格納されているブロック処理用データを読み出し、本実施形態のデータ処理装置100の後段でブロック処理を行う。
上記に述べたように、本実施形態のデータ処理装置100では、バッファ30の全ての記憶容量を、予め定められた記憶容量毎に複数の分割バッファに分割し、DMAインタフェース10の1回のDMA転送によって取得するブロック処理用データに対応した数の分割バッファの状態が空きの状態となる毎に、取得したブロック処理用データを順次格納する。これにより、外部メモリ200からバースト転送するブロック処理用データのバースト境界が、ブロック処理するブロックの境界と一致していない場合においても、バッファ30に格納されたブロック処理用データの多くが無効なブロック処理用データとなってしまうことを回避することができる。これにより、本実施形態のデータ処理装置100では、安易にバッファサイズを増大させることなく、データの処理を行うことができる。
次に、本実施形態のデータ処理装置100における処理タイミングについて説明する。図9は、本実施形態のデータ処理装置100におけるブロック毎の処理タイミングの一例を示したタイミングチャートである。データ処理装置100では、読み出し制御部60が、バッファ30内の各分割バッファに格納されたブロック処理用データを順次読み出して、ブロック処理を行う。ここでは、図3に示したように、バッファ30の全ての記憶容量を8つの分割バッファに分割し、DMAインタフェース10が、図4に示したブロック処理用データの格納例のように、バースト境界をまたいでいるブロック処理用データを取得する場合におけるデータ処理装置100の処理のタイミングについて説明する。なお、以下の説明においては、図7および図8に示した、ブロック処理用データが仮想的にリング状につなげられた8つの分割バッファに格納されるバッファ30の動作例を参照して説明する。
まず、タイミングt1において、DMAインタフェース10は、1ブロック目の1回目のDMA転送(DMA転送A)によって、4つの分割バッファ分のブロック処理用データを取得する。そして、書き込み制御部20は、1ブロック目のDMA転送Aによって取得したブロック処理用データを、分割バッファ1〜分割バッファ4に格納する(図7(b)および図7(c)参照)。
書き込み制御部20による分割バッファ1〜4へのブロック処理用データの書き込みが完了すると、引き続き、DMAインタフェース10は、タイミングt2において、1ブロック目の2回目のDMA転送(DMA転送B)によって、4つの分割バッファ分のブロック処理用データを取得する。そして、書き込み制御部20は、1ブロック目のDMA転送Bによって取得したブロック処理用データを、分割バッファ5〜分割バッファ8に格納する(図7(d)参照)。
また、読み出し制御部60は、分割バッファ1〜分割バッファ4にブロック処理用データが格納された後のタイミングt2から、分割バッファ1〜分割バッファ4に格納されているDMA転送Aによって取得したブロック処理用データを順次読み出し、読み出したブロック処理用データに対してブロック処理を行って出力する(図7(d)〜図7(h)参照)。
その後、読み出し制御部60によって、DMA転送Aによって取得したブロック処理用データに対するブロック処理が完了すると、DMAインタフェース10は、タイミングt3において、1ブロック目の3回目のDMA転送(DMA転送C)によって、4つの分割バッファ分のブロック処理用データを取得する。そして、書き込み制御部20は、1ブロック目のDMA転送Cによって取得したブロック処理用データを、分割バッファ1〜分割バッファ4に格納する(図7(i)および図7(j)参照)。
また、読み出し制御部60は、引き続き、タイミングt3から、分割バッファ5〜分割バッファ8に格納されているDMA転送Bによって取得したブロック処理用データを順次読み出し、読み出したブロック処理用データに対してブロック処理を行って出力する(図7(j)〜図7(l)参照)。
その後、読み出し制御部60によって、DMA転送Bによって取得したブロック処理用データに対するブロック処理が完了すると、DMAインタフェース10は、タイミングt4において、1ブロック目の4回目のDMA転送(DMA転送D)によって、4つの分割バッファ分のブロック処理用データを取得する。そして、書き込み制御部20は、1ブロック目のDMA転送Dによって取得したブロック処理用データを、分割バッファ5〜分割バッファ8に格納する(図8(m)および図8(n)参照)。
DMA転送Dによって取得したブロック処理用データには、1ブロック目のブロック処理に不要なデータが含まれているため、状態管理部40は、不要なブロック処理用データが格納されている分割バッファ6〜分割バッファ8を開放する(図8(o)〜図8(q)参照)。
また、読み出し制御部60は、引き続き、タイミングt4から、分割バッファ1〜分割バッファ4に格納されているDMA転送Cによって取得したブロック処理用データを順次読み出し、読み出したブロック処理用データに対してブロック処理を行って出力する(図8(n)〜図8(z)参照)。
書き込み制御部20によるブロック処理用データの分割バッファ5〜8への書き込みが完了、または状態管理部40による分割バッファ6〜分割バッファ8の開放がされたとき、データ処理装置100のDMAインタフェース10およびバッファ書き込み回路20がリセットされ、次に処理する2ブロック目のブロック処理に必要なブロック処理用データを外部メモリ200からDMA転送するための準備が開始される。
その後、読み出し制御部60によって、分割バッファ1に格納されているDMA転送Cによって取得したブロック処理用データに対するブロック処理が完了すると、DMAインタフェース10は、タイミングt5において、2ブロック目の1回目のDMA転送(DMA転送A)によって、4つの分割バッファ分のブロック処理用データを取得する。
2ブロック目のDMA転送Aによって取得したブロック処理用データには、2ブロック目のブロック処理に無効なデータが含まれているため、書き込み制御部20は、2ブロック目のブロック処理に有効なブロック処理用データのみを分割バッファ6に格納する(図8(t)参照)。
その後、読み出し制御部60によって、分割バッファ2に格納されているDMA転送Cによって取得したブロック処理用データに対するブロック処理が完了すると、DMAインタフェース10は、タイミングt6において、2ブロック目の2回目のDMA転送(DMA転送B)によって、4つの分割バッファ分のブロック処理用データを取得する。そして、書き込み制御部20は、2ブロック目のDMA転送Bによって取得したブロック処理用データを、分割バッファ7〜分割バッファ8、および分割バッファ1〜分割バッファ2に格納する(図8(x)参照)。
その後、読み出し制御部60によって、DMA転送Dによって取得したブロック処理用データに対するブロック処理が完了すると、読み出し制御部60は、引き続き、タイミングt7から、分割バッファ6に格納されている2ブロック目のDMA転送Aによって取得したブロック処理用データを読み出し、読み出したブロック処理用データに対してブロック処理を行って出力する。以降、読み出し制御部60は、2ブロック目のDMA転送によって取得したブロック処理用データが格納されている分割バッファを順次読み出し、読み出したブロック処理用データに対してブロック処理を行って出力する。
上記に述べたように、本実施形態のデータ処理装置100では、現在処理しているブロックの最後のブロック処理用データをバッファ30に格納した後、不要なブロック処理用データが格納されている分割バッファを開放する。そして、開放した分割バッファが、次のブロックを処理するためにブロック処理用データを格納する分割バッファとして使用できる状態になる。これにより、本実施形態のデータ処理装置100では、次のブロック処理に使用するブロック処理用データを、事前にバッファ30に格納しておくことができる。このことにより、現在処理しているブロックの処理が終了次第、次のブロックの処理を開始することができ、読み出し制御部60がブロック処理の開始を待機しているロス時間をなくすことができる。
また、本実施形態のデータ処理装置100では、次のブロックの処理に使用する最初のブロック処理用データの内、分割バッファに格納されるブロック処理用データが、全てブロック処理に無効なデータとなる場合には、分割バッファにブロック処理用データを格納しない。これにより、比較的早い時間に、次のブロックを処理するための2回目のブロック処理用データの取得を行うことができる。これにより、ブロック処理が比較的早い時間に終了した場合でも、次のブロック処理に使用するブロック処理用データを、事前にバッファ30に格納しておくことができる。このことにより、現在処理しているブロック処理用データに対するブロック処理が完了次第、次のブロック処理用データに対するブロック処理を開始することができ、読み出し制御部60がブロック処理の開始を待機しているロス時間をなくすことができる。
また、本実施形態のデータ処理装置100では、それぞれの分割バッファに対する制御は、排他的に行われる。すなわち、同じ分割バッファに対して、書き込み制御部20によるブロック処理用データの書き込み(格納)動作と、読み出し制御部60によるブロック処理用データの読み出し動作とが、同時に行われることはない。このため、それぞれの分割バッファを、シングルポートのSRAMで構成することができ、バッファ30の回路規模の増加を極力抑えることができる。
上記に述べたとおり、本発明を実施するための形態によれば、データ処理装置に備えるバッファの記憶容量を、予め定められた記憶容量毎に複数の領域に分割し、分割したバッファ領域の単位で、処理に必要なデータの転送を制御する。そして、処理に必要なデータを転送する際の転送の切れ目(転送単位)に満たない端数のデータを取得した場合に、分割したバッファ領域に格納された全てのデータが処理に不要なデータとなってしまうことを回避する。これにより、端数のデータを格納するために、安易にバッファサイズを増大させることなく、データ処理装置に備えたバッファを効率的に使用して、データの処理を行うことができる。このことにより、データ処理装置の回路規模の増大を抑えることができる。
また、本発明を実施するための形態によれば、バッファ領域内の全てのデータが処理に不要なデータであるバッファ領域を、次の処理に必要なデータを格納するバッファ領域として使用する。これにより、処理に必要なデータが、当該データを転送する転送単位をまたいでおり、転送単位に満たない端数のデータの処理が速く終了してしまうことにより、次の処理の開始が待たされてしまうことによって発生するロス時間を低減することができる。このことにより、分割したブロック毎に処理を行う場合に、各ブロックの処理の間のロス時間を低減することができ、処理時間を短縮することが可能になる。なお、本発明を実施するための形態の構成は、内部の処理時間、すなわち、読み出し制御部60の処理時間に対して、データの転送、すなわち、DMAインタフェース10および書き込み制御部20によるバッファ30または分割バッファへのデータの書き込みが速いデータ処理装置において有効である。
なお、本実施形態においては、DMAインタフェース10が外部メモリ200からブロック処理用データを取得する入力DMAのデータ処理装置である場合について説明したが、本実施形態のバッファ30の構成および制御方法を適用することができるデータ処理装置は、本発明を実施するための形態に限定されるものではない。例えば、パイプラインの前段のデータ処理装置からDMA以外の方法で取得した画像データに基づいて、ローパスフィルタ処理、ノイズ低減フィルタ処理、画像リサイズ処理など、大きなフィルタ処理を行う様々なデータ処理装置にも適用することができる。例えば、ローパスフィルタの処理には、タップ数(フィルタサイズ)分のデータが必要となる。従来のように2つのバッファを備えた構成において、一方のバッファに格納したデータのみでは処理に必要なタップ数に満たない場合、ローパスフィルタの処理を行うことができないため、他方のバッファにデータが格納されるまで処理が待たされてしまうことにより、ロス時間が発生してしまう。本実施形態のような構成にすることによって、事前にローパスフィルタ処理に必要なデータをバッファ内に格納しておくことができるため、処理が待たされてしまうことによって発生するロス時間を低減することができる。
なお、本実施形態においては、ブロック処理用データの書き込み(格納)と読み出しとを、分割バッファの単位で管理する場合について説明したが、データ処理装置が取得するデータを管理する単位は、本発明を実施するための形態に限定されるものではない。例えば、データ処理装置が取得するデータの単位で、データの書き込み(格納)と読み出しとを管理する構成とすることもできる。この場合、例えば、データ処理装置100では、バッファ30を、縦の1ライン毎の分割バッファに分割し、書き込み制御部20は、状態管理部40から入力された空きバッファ情報に含まれる有効データ情報に基づいて、ブロック処理用データを格納する縦の1ライン毎の分割バッファを決定する。また、読み出し制御部60は、有効データ判定部50から入力された有効データ領域情報に基づいて、ブロック処理用データを読み出す縦の1ライン毎の分割バッファを決定する。このような構成とすることによって、ブロック処理用データの単位で書き込み(格納)と読み出しとを管理することができる。
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。
100・・・データ処理装置
200・・・外部メモリ
10・・・DMAインタフェース(データ取得部)
20・・・書き込み制御部(データ書き込み制御部)
30・・・バッファ(バッファ部)
40・・・状態管理部(バッファ状態管理部)
50・・・有効データ判定部(有効データ領域判定部)
60・・・読み出し制御部(データ読み出し制御部)

Claims (6)

  1. 予め定められたデータ取得単位毎にデータを取得するデータ取得部と、
    前記データ取得部が1つの前記データ取得単位で取得する量よりも少ない、予め定められた記憶容量である複数の分割バッファを具備し、該複数の分割バッファの記憶容量を合計した記憶容量が、前記データ取得部が2つの前記データ取得単位で取得する量以上であるバッファ部と、
    前記データ取得部が取得するデータの内、有効なデータの領域を算出し、前記データ取得部が取得したデータが有効なデータであるか否かを表す有効データ情報を出力する有効データ領域判定部と、
    前記バッファ部に備えた前記分割バッファ毎に、該分割バッファに前記データが格納されているか否かを管理すると共に、該管理している各分割バッファの管理情報を出力するバッファ状態管理部と、
    前記管理情報に基づいて選択された、データが格納されていない前記分割バッファに、前記データ取得部が1回のデータ取得によって取得したデータの内、少なくとも前記有効データ情報によって有効なデータであることが示されているデータを含む、前記分割バッファの記憶容量の単位のデータを書き込むデータ書き込み制御部と、
    前記管理情報に基づいて選択された、データが格納されている前記分割バッファから、前記有効データ情報によって有効なデータであることが示されているデータを読み出すデータ読み出し制御部と、
    を備える、
    ことを特徴とするデータ処理装置。
  2. 前記データ書き込み制御部は、
    前記バッファ部内の前記複数の分割バッファが、円環状に連結されているものと仮定し、前記データ取得部が1回のデータ取得によって取得したデータを、前記管理情報に基づいて順次選択した連続する前記分割バッファに、前記分割バッファの記憶容量の単位で順次書き込み、
    前記分割バッファへのデータの書き込みが完了する毎に、該データを書き込んだ前記分割バッファを表す情報と、該データの書き込みが完了したことを表す通知とを含む書き込み完了情報を出力し、
    前記バッファ状態管理部は、
    前記書き込み完了情報に基づいて、前記分割バッファの記憶容量の単位のデータが書き込まれた前記分割バッファの管理情報を、データが格納されている状態に変更する、
    ことを特徴とする請求項1に記載のデータ処理装置。
  3. 前記データ読み出し制御部は、
    前記バッファ部内の前記複数の分割バッファが、円環状に連結されているものと仮定し、前記管理情報に基づいて順次選択された前記分割バッファから、格納されているデータの読み出しが完了する毎に、該データを読み出した前記分割バッファを表す情報と、該データの読み出しが完了したことを表す通知とを含む読み出し完了情報を出力し、
    前記バッファ状態管理部は、
    前記読み出し完了情報に基づいて、前記データが読み出された前記分割バッファの管理情報を、データが格納されていない状態に変更する、
    ことを特徴とする請求項2に記載のデータ処理装置。
  4. 前記バッファ状態管理部は、
    前記データ書き込み制御部によって前記データ取得部が1回のデータ取得によって取得したデータの前記分割バッファへの書き込みが完了した後、該1回のデータ取得によって取得したデータに不要なデータが含まれている場合、該不要なデータのみが格納されている前記分割バッファの管理情報を、データが格納されていない状態に変更する、
    ことを特徴とする請求項3に記載のデータ処理装置。
  5. 前記データ書き込み制御部は、
    前記データ取得部が1回のデータ取得によって取得したデータの内、少なくとも前記有効データ情報によって有効なデータであることが示されているデータを含む、前記分割バッファの記憶容量の単位のデータのみ、前記管理情報によってデータが格納されていないことが示されている前記分割バッファのいずれか1つの前記分割バッファに書き込むように制御する、
    ことを特徴とする請求項4に記載のデータ処理装置。
  6. 前記データ書き込み制御部は、
    前記データ取得部が1回のデータ取得によって取得したデータの内、少なくとも前記有効データ情報によって有効なデータであることが示されているデータを含む、前記分割バッファの記憶容量の単位のデータを、前記分割バッファのいずれか1つの前記分割バッファに書き込むときに、前記複数の分割バッファの内、前記管理情報によってデータが格納されていないことが示されているいずれか1つの分割バッファにデータ書き込み制御信号を出力する、
    ことを特徴とする請求項5に記載のデータ処理装置。
JP2011024819A 2011-02-08 2011-02-08 データ処理装置 Active JP5738618B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011024819A JP5738618B2 (ja) 2011-02-08 2011-02-08 データ処理装置
US13/367,490 US9026697B2 (en) 2011-02-08 2012-02-07 Data processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011024819A JP5738618B2 (ja) 2011-02-08 2011-02-08 データ処理装置

Publications (2)

Publication Number Publication Date
JP2012164186A true JP2012164186A (ja) 2012-08-30
JP5738618B2 JP5738618B2 (ja) 2015-06-24

Family

ID=46601456

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011024819A Active JP5738618B2 (ja) 2011-02-08 2011-02-08 データ処理装置

Country Status (2)

Country Link
US (1) US9026697B2 (ja)
JP (1) JP5738618B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014174898A (ja) * 2013-03-12 2014-09-22 Pfu Ltd 画像データ処理装置、画像データ処理方法及び画像データ処理プログラム

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5993267B2 (ja) * 2012-10-04 2016-09-14 オリンパス株式会社 画像処理装置
US10310998B2 (en) * 2015-06-30 2019-06-04 Microsoft Technology Licensing, Llc Direct memory access with filtering
DE112016006516T5 (de) * 2016-02-29 2018-11-15 Olympus Corporation Bildverarbeitungsvorrichtung
CN110785734A (zh) * 2018-04-25 2020-02-11 深圳市大疆创新科技有限公司 数据处理方法和装置
KR20210012439A (ko) * 2019-07-25 2021-02-03 삼성전자주식회사 마스터 지능 소자 및 이의 제어 방법

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974516A (en) * 1996-10-18 1999-10-26 Samsung Electronics Co., Ltd. Byte-writable two-dimensional FIFO buffer having storage locations with fields indicating storage location availability and data ordering
JP2002140702A (ja) * 2000-11-06 2002-05-17 Kyocera Mita Corp 画像処理装置
US6809834B1 (en) * 1998-06-09 2004-10-26 Ricoh Company, Ltd. Image forming apparatus
JP2007226330A (ja) * 2006-02-21 2007-09-06 Ricoh Co Ltd 画像処理装置、画像処理方法、その方法をコンピュータに実行させるプログラム
JP2009265776A (ja) * 2008-04-22 2009-11-12 Sharp Corp 画像処理装置
JP2010283518A (ja) * 2009-06-03 2010-12-16 Sony Corp 画像処理装置及び画像処理方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3302531B2 (ja) 1995-06-08 2002-07-15 シャープ株式会社 画像処理装置のライン変換回路
JP3926374B2 (ja) * 2005-08-15 2007-06-06 株式会社ソニー・コンピュータエンタテインメント バッファ管理方法およびバッファ管理装置
US20070041050A1 (en) * 2005-08-17 2007-02-22 Bing-Yu Wang Memory management method and system
US7716396B1 (en) * 2007-02-09 2010-05-11 Juniper Networks, Inc. Multi-reader multi-writer circular buffer memory
JP5449791B2 (ja) 2009-02-02 2014-03-19 オリンパス株式会社 データ処理装置および画像処理装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974516A (en) * 1996-10-18 1999-10-26 Samsung Electronics Co., Ltd. Byte-writable two-dimensional FIFO buffer having storage locations with fields indicating storage location availability and data ordering
US6809834B1 (en) * 1998-06-09 2004-10-26 Ricoh Company, Ltd. Image forming apparatus
JP2002140702A (ja) * 2000-11-06 2002-05-17 Kyocera Mita Corp 画像処理装置
JP2007226330A (ja) * 2006-02-21 2007-09-06 Ricoh Co Ltd 画像処理装置、画像処理方法、その方法をコンピュータに実行させるプログラム
JP2009265776A (ja) * 2008-04-22 2009-11-12 Sharp Corp 画像処理装置
JP2010283518A (ja) * 2009-06-03 2010-12-16 Sony Corp 画像処理装置及び画像処理方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014174898A (ja) * 2013-03-12 2014-09-22 Pfu Ltd 画像データ処理装置、画像データ処理方法及び画像データ処理プログラム

Also Published As

Publication number Publication date
US20120203942A1 (en) 2012-08-09
US9026697B2 (en) 2015-05-05
JP5738618B2 (ja) 2015-06-24

Similar Documents

Publication Publication Date Title
JP6580380B2 (ja) 画像処理装置および画像処理方法
JP5784299B2 (ja) データ処理装置および画像処理装置
JP5738618B2 (ja) データ処理装置
US20180253641A1 (en) Arithmetic processing apparatus and control method therefor
JPWO2017149591A1 (ja) 画像処理装置
WO2017216840A1 (ja) メモリアクセス制御装置、画像処理装置、および撮像装置
JP5993267B2 (ja) 画像処理装置
JPWO2017179099A1 (ja) 画像処理装置
JP6674309B2 (ja) メモリ制御装置及びメモリ制御方法
JP5675278B2 (ja) データ処理装置および画像処理装置
JP6539509B2 (ja) データ転送装置およびデータ転送方法
JPWO2017212524A1 (ja) データ転送装置、画像処理装置、および撮像装置
US20100110213A1 (en) Image processing processor, image processing method, and imaging apparatus
JP6849702B2 (ja) メモリアクセス装置、画像処理装置、および撮像装置
JP5583563B2 (ja) データ処理装置
JP6580381B2 (ja) 画像処理装置および画像処理方法
JP6564625B2 (ja) データ転送装置およびデータ転送方法
JP7310536B2 (ja) 画像処理装置、画像処理方法及びプログラム
JP2007206924A (ja) 演算処理システム
JP2011180653A (ja) データ転送装置およびデータ転送方法
JP2005227479A (ja) 画像処理装置、画像処理方法及び画像処理方法をコンピュータに実行させるためのプログラム
CN112422765A (zh) 图像处理装置
JP2004326814A (ja) 画像処理装置及び画像処理システム
JP2011145938A (ja) Simd型プロセッサを備えたマイクロプロセッサとその処理方法
JP2008112283A (ja) 情報処理回路

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131125

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140815

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140924

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20141106

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150414

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150422

R151 Written notification of patent or utility model registration

Ref document number: 5738618

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250