<第1の実施形態>
以下、本発明の第1の実施形態について、図面を参照して説明する。本第1の実施形態においては、例えば、静止画用カメラなどの画像処理装置を本発明のデータ処理装置とし、このデータ処理装置に本発明のデータ転送制御装置を適用した場合の一例について説明する。図1は、本第1の実施形態におけるデータ転送制御装置を適用した画像処理装置の概略構成を示したブロック図である。図1において、画像処理装置1は、イメージセンサ10と、画像転送部21および評価値生成部22を備えた前処理部20と、画像処理部30と、表示処理部40と、表示デバイス41と、カードインタフェース部50と、記録媒体51と、CPU60と、バスアービタ70と、DRAMインタフェース部71と、DRAM72とを備えている。
図1に示したように、画像処理装置1内の画像転送部21、評価値生成部22、画像処理部30、表示処理部40、カードインタフェース部50、およびCPU60のそれぞれは、本第1の実施形態のデータ転送制御装置100、データ転送制御装置200、またはデータ転送制御装置300によって共通バスであるデータバス80に接続されている。なお、本第1の実施形態のデータ転送制御装置100、データ転送制御装置200、およびデータ転送制御装置300は、データを入出力する方向が異なるのみで、データを入出力する際の考え方は、データ転送制御装置100、データ転送制御装置200、およびデータ転送制御装置300のそれぞれで同様である。
そして、データバス80に接続されたそれぞれの処理ブロックは、DMA要求などのDRAMへのアクセス要求を、データバス80を介してバスアービタ70に出力し、バスアービタ70に接続されたDRAMインタフェース部71によって制御されるDRAM72からのデータの読み出し、およびDRAM72へのデータの書き込みを行う。なお、データバス80には、各処理ブロックがDRAM72との間でDMAを行うための、DMA要求信号、DMA受け付け信号、読み出し/書き込み制御信号(RW制御信号)、アドレス、およびデータなどの信号が含まれている。
イメージセンサ10は、図示しないレンズによって結像された被写体の光学像を光電変換するCCD(Charge Copled Device:電荷結合素子)イメージセンサや、CMOS(Complementary Metal−Oxide Semiconductor:相補型金属酸化膜半導体)イメージセンサに代表されるイメージセンサである。
イメージセンサ10は、画素の信号を出力する出力チャンネルを2チャンネル備え、被写体光に応じた画像信号(以下、「入力画像データ」という)を、2ライン同時に前処理部20に出力するイメージセンサである。例えば、イメージセンサ10は、垂直方向(列方向)に隣接する2つの画素の信号を、奇数ラインおよび偶数ラインの入力画像データとして同時に、前処理部20に出力する。より具体的には、例えば、イメージセンサ10がベイヤー配列のイメージセンサである場合には、R画素とGr画素とが配置された奇数ラインのそれぞれの画素に対応する入力画像データを奇数ラインの入力画像データとして出力チャンネルCH1から、Gb画素とB画素とが配置された偶数ラインのそれぞれの画素に対応する入力画像データを偶数ラインの入力画像データとして出力チャンネルCH2から、それぞれ同時に前処理部20に出力する。
前処理部20は、イメージセンサ10から入力された入力画像データに、キズ補正やシェーディング補正などの前処理を施す処理ブロックである。前処理部20は、イメージセンサ10のそれぞれの出力チャンネルから入力された入力画像データ毎に、すなわち、奇数ラインの入力画像データと偶数ラインの入力画像データとを並列に、前処理を行う。
前処理部20に備えた画像転送部21は、前処理した結果の画像データ(以下、「前処理画像データ」という)を、DRAM72に転送する(書き込む)。このとき、画像転送部21は、奇数ラインの前処理画像データと偶数ラインの前処理画像データとをまとめて(束ねて)、1つの前処理画像データとしてDRAM72に転送する(書き込む)。
また、前処理部20に備えた評価値生成部22は、前処理した奇数ラインの前処理画像データと偶数ラインの前処理画像データとに基づいて、自動露出(Auto Exposure:AE)、自動焦点(Auto Focus:AF)、オートホワイトバランス(Auto White Balance:AWB)などの制御を行うための評価値を生成し、生成した評価値をDRAM72に転送する(書き込む)。
画像転送部21および評価値生成部22は、前処理画像データまたは評価値をDRAM72に転送する際に、DRAM72へのDMA要求信号をバスアービタ70に出力する。そして、画像転送部21および評価値生成部22は、DMA要求がバスアービタ70に受け付けられ、DMA受け付け信号が入力された後に、前処理画像データまたは評価値を、バスアービタ70およびDRAMインタフェース部71を介してDRAM72に出力する。
画像処理部30は、DRAM72に記憶している前処理画像データを取得し(読み出し)、ノイズ除去、YC変換処理、リサイズ処理、JPEG圧縮処理などの各種の画像処理を施して、表示用の画像データや記録用の画像データを生成する処理ブロックである。また、画像処理部30は、生成した表示用の画像データおよび記録用の画像データを、再びDRAM72に転送する(書き込む)処理ブロックでもある。
画像処理部30は、前処理画像データをDRAM72から取得する際に、DRAM72へのDMA要求信号をバスアービタ70に出力する。そして、画像処理部30は、DMA要求がバスアービタ70に受け付けられ、DMA受け付け信号が入力された後に、DRAMインタフェース部71およびバスアービタ70を介してDRAM72から前処理画像データを読み出す。
また、画像処理部30は、表示用の画像データおよび記録用の画像データを、DRAM72に転送する際に、DRAM72へのDMA要求信号をバスアービタ70に出力する。そして、画像処理部30は、DMA要求がバスアービタ70に受け付けられ、DMA受け付け信号が入力された後に、生成した表示用の画像データおよび記録用の画像データを、バスアービタ70およびDRAMインタフェース部71を介してDRAM72に出力する。
表示処理部40は、DRAM72に記憶している表示用の画像データを取得し(読み出し)、取得した表示用の画像データにOSD(On−Screen Display)表示用のデータを重畳する処理などの表示処理を施して表示デバイス41に出力する処理ブロックである。
表示処理部40は、表示用の画像データをDRAM72から取得する際に、DRAM72へのDMA要求信号をバスアービタ70に出力する。そして、表示処理部40は、DMA要求がバスアービタ70に受け付けられ、DMA受け付け信号が入力された後に、DRAMインタフェース部71およびバスアービタ70を介してDRAM72から表示用の画像データを読み出す。そして、読み出した表示用の画像データに表示処理を施した後、表示処理後の画像データを、表示デバイス41に出力する。
表示デバイス41は、TFT(薄膜トランジスター:Thin Film Transistor)液晶ディスプレイ(LCD:Liquid Crystal Display)や、有機EL(Electro Luminescence)ディスプレイなどの表示デバイスであり、表示処理部40から出力された表示処理後の画像データに応じた画像を表示する。
カードインタフェース部50は、DRAM72に記憶している記録用の画像データを取得し(読み出し)、記録媒体51に記録させる処理ブロックである。また、カードインタフェース部50は、記録媒体51に記録している画像データを読み出し、読み出した画像データを、DRAM72に転送する(書き込む)処理ブロックでもある。
カードインタフェース部50は、記録用の画像データをDRAM72から取得する際に、DRAM72へのDMA要求信号をバスアービタ70に出力する。そして、カードインタフェース部50は、DMA要求がバスアービタ70に受け付けられ、DMA受け付け信号が入力された後に、DRAMインタフェース部71およびバスアービタ70を介してDRAM72から記録用の画像データを読み出す。そして、読み出した記録用の画像データを記録媒体51に出力し、記録させる。
また、カードインタフェース部50は、記録媒体51から読み出した画像データを、DRAM72に転送する際に、DRAM72へのDMA要求信号を、バスアービタ70に出力する。そして、カードインタフェース部50は、DMA要求がバスアービタ70に受け付けられ、DMA受け付け信号が入力された後に、記録媒体51から読み出した画像データを、バスアービタ70およびDRAMインタフェース部71を介してDRAM72に出力する。
記録媒体51は、メモリカードなどの記録媒体であり、カードインタフェース部50から出力された記録用の画像データを記録する。また、カードインタフェース部50によって記録している画像データが読み出される。なお、図1においては、記録媒体51も画像処理装置1の構成要素としているが、記録媒体51は、画像処理装置1に着脱可能な構成である。
CPU60は、画像処理装置1の構成要素、すなわち、画像処理装置1全体を制御する処理ブロックである。CPU60が画像処理装置1のそれぞれの構成要素を制御する際にもDRAM72へのアクセスが行われる。ただし、CPU60がDRAM72から取得する(読み出す)データや、DRAM72に転送する(書き込む)データは、上述した処理ブロックにおける画像データのみではなく、画像処理装置1のそれぞれの構成要素の動作を設定するためのパラメータのデータも含まれる。
CPU60がDMAによってDRAM72からデータを取得する際には、DRAM72へのDMA要求信号をバスアービタ70に出力する。そして、CPU60は、DMA要求がバスアービタ70に受け付けられ、DMA受け付け信号が入力された後に、取得するデータをDRAMインタフェース部71およびバスアービタ70を介してDRAM72から読み出す。
また、CPU60がDMAによってDRAM72にデータを転送する際には、DRAM72へのDMA要求信号をバスアービタ70に出力する。そして、CPU60は、DMA要求がバスアービタ70に受け付けられ、DMA受け付け信号が入力された後に、転送するデータを、バスアービタ70およびDRAMインタフェース部71を介してDRAM72に出力する。
バスアービタ(共通バス調停部)70は、データバス80に接続されている画像処理装置1内の複数の処理ブロックからのDMA要求に応じて、DRAM72へのデータの転送(書き込み)、およびDRAM72からのデータの取得(読み出し)の調停を行う。
より具体的には、バスアービタ70は、それぞれの処理ブロックから入力されたDMA要求信号に応じて、バンクインターリーブや各処理ブロックの優先度に基づいて、各処理ブロックによるDRAM72へのアクセスの調停を行い、DMA要求を受け付ける処理ブロックを決定する。そして、決定した処理ブロックに、DMA受け付け信号を出力する。
その後、バスアービタ70は、決定した処理ブロックがDRAM72にデータを転送する際には、DRAM72にデータを書き込むことを表すRW制御信号、処理ブロックから入力されたDRAM72のアドレス、および転送するデータを、DRAMインタフェース部71に出力する。また、バスアービタ70は、決定した処理ブロックがDRAM72からデータを取得する際には、DRAM72からデータを読み出すことを表すRW制御信号、および処理ブロックから入力されたDRAM72のアドレスをDRAMインタフェース部71に出力する。その後、DRAMインタフェース部71から入力されたデータ、すなわち、DRAM72から取得したデータを、決定した処理ブロックに出力する。
DRAMインタフェース部71は、バスアービタ70から入力されたDRAM72の書き込みまたは読み出しを表すRW制御信号と、DRAM72のアドレスとに基づいて、DRAM72へのデータの書き込みまたはデータの読み出しの制御を行う。すなわち、バスアービタ70によって決定された処理ブロックからのDRAMアクセスに応じた、DRAM72へのデータの書き込みまたはDRAM72からのデータの読み出しを実行する。
より具体的には、DRAMインタフェース部71は、バスアービタ70から入力されたRW制御信号が、DRAM72への書き込みを表しているときには、バスアービタ70から入力されたデータを、DRAM72に出力する。また、バスアービタ70から入力されたRW制御信号が、DRAM72の読み出しを表しているときには、DRAM72から出力されたデータを、バスアービタ70に出力する。
DRAM72は、DRAMインタフェース部71によってアクセス制御され、画像処理装置1内のそれぞれの処理ブロックの処理過程における様々なデータを記憶するメモリである。
このように、画像処理装置1内の各処理ブロックは、それぞれの処理ブロックがDRAM72にアクセスする際に、バスアービタ70にDMA要求を出す。そして、バスアービタ70にDMA要求が受け付けられた後に、データバス80、バスアービタ70、およびDRAMインタフェース部71を介して、DRAM72へのデータ書き込み、またはDRAM72からのデータ読み出しを行う。
ここで、画像処理装置1内の各処理ブロックにおけるDRAM72へのアクセス方法について説明するため、図2を参照して画像処理装置1の動作の一例について説明する。画像処理装置1では、上述したように、イメージセンサ10が、奇数ラインの入力画像データと偶数ラインの入力画像データとを同時に前処理部20に出力する。そして、前処理部20は、入力された奇数ラインの入力画像データと偶数ラインの入力画像データとを並列に前処理を行う。このため、画像転送部21は、上述したように、奇数ラインの前処理画像データと偶数ラインの前処理画像データとを束ねて、1つの前処理画像データとしてDRAM72に転送する(書き込む)。
図2は、本第1の実施形態におけるデータ転送制御装置100を適用した画像処理装置1に備えた画像転送部21におけるDRAM72のバンクアクセスの一例を模式的に示した図である。図2(a)には、画像転送部21が奇数ラインの前処理画像データと偶数ラインの前処理画像データとを転送する(書き込む)際のDRAM72のバンクアクセスが、奇数ラインと偶数ラインとで同じ順番である場合のタイミングを示している。また、図2(b)には、画像転送部21が奇数ラインの前処理画像データと偶数ラインの前処理画像データとを転送する(書き込む)際のDRAM72のバンクアクセスが、奇数ラインと偶数ラインとで異なる順番である場合のタイミングを示している。
図2(a)に示したように、画像転送部21が転送する(書き込む)際の奇数ラインと偶数ラインとが、DRAM72のバンクに対して同じ順番でアクセスする場合には、DRAM72の同一のバンクに対する連続したアクセスは発生しない。より具体的には、画像転送部21が、DRAM72のそれぞれのバンクに対して、バンクA、バンクB、バンクC、バンクDの順番でアクセスして奇数ラインの前処理画像データを転送した(書き込んだ)後、バンクA、バンクB、バンクC、バンクDの順番でアクセスして偶数ラインの前処理画像データを転送する(書き込む)場合には、DRAM72の同一のバンクに対する連続したアクセスは発生しない。このため、DRAM72へのアクセス効率が低下してしまうことはない。
しかしながら、図2(b)に示したように、画像転送部21が転送する(書き込む)際の奇数ラインと偶数ラインとが、DRAM72のバンクに対して異なる順番でアクセスする場合には、DRAM72の同一のバンクに対する連続したアクセスが発生してしまう。より具体的には、画像転送部21が、DRAM72のそれぞれのバンクに対して、バンクA、バンクB、バンクC、バンクDの順番でアクセスして奇数ラインの前処理画像データを転送した(書き込んだ)後、バンクB、バンクC、バンクD、バンクAの順番でアクセスして偶数ラインの前処理画像データを転送する(書き込む)と、偶数ラインのバンクAへのアクセスと、次の奇数ラインのバンクAへのアクセスとが連続してしまう。このとき、DRAM72は、バンクAへの連続したアクセスを受け付けることができないため、この期間がロス時間となり、DRAM72へのアクセス効率が低下してしまう。
そこで、各処理ブロックに備えたデータ転送制御装置は、対応する処理ブロックがDRAM72にアクセスする際のバンクの順番を入れ替えることによって、DRAM72の同一のバンクに対する連続したアクセスを回避する。図3は、本第1の実施形態のデータ転送制御装置100の機能を説明する図である。図3には、イメージセンサ10が出力した入力画像データを前処理してDRAM72に転送する(書き込む)際に関係する前処理部20と画像転送部21内のデータ転送制御装置100の構成要素を示している。
図3に示したように、前処理部20は、イメージセンサ10から同時に入力された入力画像データに対してそれぞれ前処理を行う前処理ブロック201と前処理ブロック202とを備えている。前処理ブロック201と前処理ブロック202とは、同様の構成である。図3においては、前処理ブロック201がイメージセンサ10のから出力チャンネルCH1から出力された奇数ラインの入力画像データに対して前処理を行い、前処理ブロック202がイメージセンサ10のから出力チャンネルCH2から出力された偶数ラインの入力画像データに対して前処理を行う。この構成によって、前処理部20は、イメージセンサ10から同時に入力された奇数ラインの入力画像データと偶数ラインの入力画像データとに対して並列に前処理を行う。
図3に示したように、画像転送部21に備えたデータ転送制御装置100は、バンク入れ替え部110と、バンク入れ替え部120と、データ操作部130とを備えている。バンク入れ替え部110とバンク入れ替え部120とは、同様の構成である。図3においては、バンク入れ替え部110が前処理ブロック201から出力された奇数ラインの前処理画像データをDRAM72に転送する(書き込む)際のバンクへのアクセスの順番を入れ替え、バンク入れ替え部120が前処理ブロック202から出力された偶数ラインの前処理画像データをDRAM72に転送する(書き込む)際のバンクへのアクセスの順番を入れ替える。この構成によって、画像転送部21に備えたデータ転送制御装置100は、DRAM72のバンクに対する連続したアクセスを回避し、図2(b)に示したようなロス時間によるDRAM72へのアクセス効率の低下を抑える。
また、データ操作部130は、バンク入れ替え部110によってDRAM72のバンクへのアクセスの順番が入れ替えられた奇数ラインの前処理画像データと、バンク入れ替え部120によってDRAM72のバンクへのアクセスの順番が入れ替えられた偶数ラインの前処理画像データとを束ねて、DRAM72に転送する(書き込む)。このように、奇数ラインの前処理画像データと偶数ラインの前処理画像データとを束ねることによって、奇数ラインの前処理画像データと偶数ラインの前処理画像データとを別々にDRAM72に転送する(書き込む)構成よりも、バスアービタ70にDMA要求を出力するデータ転送制御装置の数を削減することができる。つまり、前処理画像データを別々に転送する(書き込む)構成では、奇数ラインの前処理画像データに対応したデータ転送制御装置と偶数ラインの前処理画像データに対応したデータ転送制御装置との2つのデータ転送制御装置を備える必要があるが、前処理画像データを束ねて転送する(書き込む)構成では、1つのデータ転送制御装置を備えるのみで、2つの前処理画像データを転送する(書き込む)ことができる。
ここで、画像転送部21に備えたデータ転送制御装置100によるバンクの入れ替え処理によって、DRAM72のバンクへのアクセスの順番を入れ替える動作の一例について説明する。図4は、本第1の実施形態のデータ転送制御装置100によるバンクの入れ替え処理によってDRAM72のバンクアクセスに起因するロス時間を回避する一例を模式的に示した図である。図4には、前処理ブロック201から入力されたバンクA、バンクB、バンクC、バンクDの順番でアクセスする奇数ラインの前処理画像データを転送した(書き込んだ)後、前処理ブロック202から入力されたバンクB、バンクC、バンクD、バンクAの順番でアクセスして偶数ラインの前処理画像データを転送する(書き込む)場合のタイミングを示している。
画像転送部21に備えたデータ転送制御装置100が、バンクA、バンクB、バンクC、バンクDの順番で奇数ラインの前処理画像データを転送した(書き込んだ)後、バンクB、バンクC、バンクD、バンクAの順番で偶数ラインの前処理画像データを転送する(書き込む)と、図2(b)に示したDRAM72のバンクアクセスと同様に、偶数ラインのバンクAに引き続き次の奇数ラインのバンクAにアクセスするときに、DRAM72の同一のバンクに対する連続したアクセスが発生してしまう。しかし、図4に示したDRAM72のバンクアクセスでは、画像転送部21に備えたデータ転送制御装置100内のバンク入れ替え部120が、偶数ラインの前処理画像データを転送する(書き込む)順番を入れ替える。つまり、バンク入れ替え部120が、偶数ラインの前処理画像データを転送する(書き込む)際にDRAM72のバンクにアクセスの順番を、バンク入れ替え部110が奇数ラインの前処理画像データを転送する(書き込む)際にDRAM72のバンクにアクセスの順番と同じ順番になるように入れ替える。これにより、画像転送部21は、バンクインターリーブによるDRAM72の同一のバンクに対する連続したアクセスを回避することができる。
より具体的には、図2(b)に示したDRAM72のバンクアクセスと同様に、前処理ブロック201から出力された奇数ラインの前処理画像データを転送する(書き込む)際にDRAM72のバンクにアクセスの順番を、バンク入れ替え部110では入れ替えずに、バンクA、バンクB、バンクC、バンクDの順番でアクセスして奇数ラインの前処理画像データを転送する(書き込む)。その後、前処理ブロック202から出力された偶数ラインの前処理画像データを転送する(書き込む)際にDRAM72のバンクにアクセスの順番を、バンク入れ替え部120が入れ替えずに、バンクB、バンクC、バンクD、バンクAの順番でアクセスして偶数ラインの前処理画像データを転送する(書き込む)と、図2(b)に示したDRAM72のバンクアクセスと同様に、偶数ラインのバンクAへのアクセスと、次の奇数ラインのバンクAへのアクセスとが連続してしまう。このとき、バンク入れ替え部120は、図4に示したように、偶数ラインの前処理画像データを転送する(書き込む)際にDRAM72のそれぞれのバンクにアクセスする順番を、バンク入れ替え部110と同様のバンクA、バンクB、バンクC、バンクDの順番に入れ替える。これにより、奇数ラインの前処理画像データと偶数ラインの前処理画像データとを交互に転送する(書き込む)ために、DRAM72のそれぞれのバンクへのアクセスを連続して行う場合でも、DRAM72の同一のバンクに対する連続したアクセスを回避することができる。
このように、画像転送部21に備えたデータ転送制御装置100内のバンク入れ替え部120は、DRAM72にアクセスする際のバンクの順番を、バンク入れ替え部110がDRAM72にアクセスする際のバンクの順番と同じ順番になるように入れ替える。これにより、画像転送部21に備えたデータ転送制御装置100がDRAM72にアクセスする際のバンクの順番が、データ転送制御装置100内の全てのバンク入れ替え部で同じになる。これにより、画像転送部21は、イメージセンサ10から同時に入力された奇数ラインの入力画像データと偶数ラインの入力画像データとに対して並列に前処理を行ったそれぞれの前処理画像データが前処理部20から入力された場合でも、バンクインターリーブによるDRAM72の同一のバンクに対する連続したアクセスが発生しなくなり、ロス時間によるDRAM72へのアクセス効率の低下を抑えることができる。
次に、画像転送部21に備えたデータ転送制御装置100のより詳細な構成について説明する。図5は、本第1の実施形態のデータ転送制御装置100の概略構成を示したブロック図である。図5に示したように、データ転送制御装置100は、バンク入れ替え部110と、バンク入れ替え部120と、データ操作部130とを備えている。また、バンク入れ替え部110は、パッキング部111と、バッファライト制御部112と、データバッファ113と、アドレスバッファ114と、バッファリード制御部115と、を備えている。また、バンク入れ替え部120は、パッキング部121と、バッファライト制御部122と、データバッファ123と、アドレスバッファ124と、バッファリード制御部125と、を備えている。また、データ操作部130は、優先度決定部131と、バスインタフェース部132とを備えている。
データ転送制御装置100は、奇数ラインの前処理画像データと偶数ラインの前処理画像データとを1つの前処理画像データに束ねて、データバス80を介してDRAM72に1つの前処理画像データを転送する(書き込む)ためのDMA要求信号を、データバス80を介してバスアービタ70に出力する。このとき、データ転送制御装置100は、DRAM72にアクセスするバンクの順番が、予め定めた順番で連続するように、DRAM72に転送する複数の奇数ラインの前処理画像データおよび複数の偶数ラインの前処理画像データをそれぞれまとめ、その後、まとめた奇数ラインの前処理画像データと偶数ラインの前処理画像データとのそれぞれを束ねてから、DMA要求信号をバスアービタ70に出力する。そして、データ転送制御装置100は、DMA要求がバスアービタ70に受け付けられ、DMA受け付け信号が入力された後に、束ねた1つの前処理画像データを、予め定めたバンクの順番で連続するように、データバス80を介してバスアービタ70に出力する。これにより、画像処理装置1では、データ転送制御装置100からのDMAに応じて、バスアービタ70およびDRAMインタフェース部71が動作し、データ転送制御装置100に指定されたDRAM72のアドレスに対応する記憶領域に、データ転送制御装置100から出力された1つの前処理画像データが書き込まれる。
以下の説明においては、データ転送制御装置100が前処理画像データを転送する先のDRAM72のアドレス空間が、4つのバンク(バンクA、バンクB、バンクC、およびバンクD)で構成されている場合について説明する。また、以下の説明においては、データ転送制御装置100による1回のDMAで、DRAM72の4つのバンクに対する連続したアクセスを2回連続して行うバンクインターリーブでのアクセスを、DMAの1回の転送単位とする場合について説明する。
バンク入れ替え部110とバンク入れ替え部120とのそれぞれは、対応する奇数ラインの前処理画像データまたは偶数ラインの前処理画像データをDRAM72に転送する(書き込む)際のバンクへのアクセスの順番を入れ替える。バンク入れ替え部110とバンク入れ替え部120とは、同様の構成である。以下の説明においては、代表して、奇数ラインの前処理画像データに対応したバンク入れ替え部110について説明する。
パッキング部111は、順次入力された奇数ラインの前処理画像データをデータバス80のバス幅に併せた単位にまとめて(パッキングして)、バッファライト制御部112に出力する。例えば、奇数ラインの前処理画像データが8ビットでデータバス80のバス幅が32ビットである場合には、順次入力された4つの奇数ラインの前処理画像データをパッキングして32ビットの奇数ラインの前処理画像データにし、パッキングした32ビットの奇数ラインの前処理画像データをバッファライト制御部112に出力する。このとき、パッキング部111が奇数ラインの前処理画像データをパッキングする方法は、順次入力された4つの奇数ラインの前処理画像データを、例えば、下位側のビットから詰めて32ビットの奇数ラインの前処理画像データにする方法や、例えば、上位側のビットから詰めて32ビットの奇数ラインの前処理画像データにする方法などが考えられる。また、例えば、CPU60が、不図示のパッキング順番レジスタに、奇数ラインの前処理画像データをパッキングする順番を設定し、設定された順番に基づいて、順次入力された4つの奇数ラインの前処理画像データを詰めて、32ビットの奇数ラインの前処理画像データにする方法も考えられる。
また、パッキング部111は、パッキングした奇数ラインの前処理画像データを転送するDRAM72のアドレスを生成し、生成したアドレスをバッファライト制御部112に出力する。このとき、パッキング部111がアドレスを生成する方法は、パッキングした32ビットの奇数ラインの前処理画像データを転送するバンクを、例えば、予め定めた昇順に指定するDRAM72の記憶領域のアドレスを生成する方法や、例えば、予め定めた降順に指定するDRAM72の記憶領域のアドレスを生成する方法などが考えられる。また、例えば、CPU60が、不図示のパッキング順番レジスタに、奇数ラインの前処理画像データを転送するバンクの順番を設定し、設定されたバンクの順番に基づいて、パッキングした32ビットの奇数ラインの前処理画像データを転送するバンクを指定するDRAM72の記憶領域のアドレスを生成する方法も考えられる。
バッファライト制御部112は、パッキング部111から入力されたパッキングした奇数ラインの前処理画像データを順次データバッファ113に、パッキング部111から入力されたアドレスを順次アドレスバッファ114に、それぞれ保存させる。そして、バッファライト制御部112は、1回のDMAによってDRAM72に転送する量の奇数ラインの前処理画像データおよびアドレスの、データバッファ113およびアドレスバッファ114のそれぞれへの保存が完了すると、データバッファ113およびアドレスバッファ114への奇数ラインの前処理画像データおよびアドレスの保存が完了したことを表す、すなわち、1回分のDMAの準備が整ったことを表すライト完了通知を、バッファリード制御部115に出力する。以下の説明においては、1回のDMAで転送する奇数ラインの前処理画像データおよびアドレスをまとめて、「1転送単位の奇数ラインデータ」という。
また、バッファライト制御部112は、バッファリード制御部115からデータバッファ113およびアドレスバッファ114のそれぞれに保存した1転送単位の奇数ラインデータの読み出しが完了したことを表すリード完了通知が入力されると、データバッファ113およびアドレスバッファ114の記憶領域に空きができたと判断し、次の1転送単位の奇数ラインデータの保存を開始する。
データバッファ(バッファ部)113は、バッファライト制御部112からの制御に応じて、バッファライト制御部112から順次入力された複数のパッキングした奇数ラインの前処理画像データを一時記憶(保存)する、例えば、SRAM(Static Random Access Memory)などで構成された記憶部である。データバッファ113は、DRAM72の対応するバンクに転送する複数の奇数ラインの前処理画像データを保存する記憶領域を、DRAM72が持つバンクの数分備えている。例えば、バッファライト制御部112から入力されたパッキングした32ビットの奇数ラインの前処理画像データを16個保存する記憶容量の記憶領域、すなわち、64バイトの記憶領域を、DRAM72が持つ4つのバンク分備えている。そして、データバッファ113は、バッファリード制御部115からの制御に応じて、それぞれの記憶領域に保存している奇数ラインの前処理画像データを、バッファリード制御部115に順次出力する。
図5に示したデータ転送制御装置100の構成では、4つの記憶領域を1組とした記憶領域群を、4つ備えた構成を示している。そして、データ転送制御装置100では、記憶領域群に記憶された全ての奇数ラインの前処理画像データを、1転送単位の奇数ラインデータに含まれる奇数ラインの前処理画像データとする。この構成によってデータ転送制御装置100は、DRAM72のそれぞれのバンクに16個の32ビットの奇数ラインの前処理画像データを4つのバンクに対して連続して転送するバースト転送を、4回行うことができる。ここで、それぞれの記憶領域内に記載した符号は、それぞれの記憶領域が対応するDRAM72のバンクを表している。
なお、本第1の実施形態のデータ転送制御装置100では、データバッファ113に奇数ラインの前処理画像データを書き込むタイミングと、データバッファ113から奇数ラインの前処理画像データを読み出すタイミングとに関しては、何ら限定しない。従って、データバッファ113は、データの書き込みタイミングとデータの読み出しタイミングとを異なるタイミングで制御することができるSRAMであってもよい。つまり、バッファライト制御部112の動作クロックとバッファリード制御部115の動作クロックとが異なることにより、データバッファ113に奇数ラインの前処理画像データを書き込むタイミングであるライトクロックと、データバッファ113からの奇数ラインの前処理画像データを読み出すタイミングであるリードクロックとが異なるクロックであってもよい。
アドレスバッファ(バッファ部)114は、バッファライト制御部112からの制御に応じて、バッファライト制御部112から入力されたDRAM72のアドレスを一時記憶(保存)する、データバッファ113と同様の構成の記憶部である。すなわち、アドレスバッファ114は、データバッファ113に保存している奇数ラインの前処理画像データを転送する(書き込む)先のDRAM72のバンクを指定するためのアドレスを保存する記憶部である。アドレスバッファ114は、データバッファ113における記憶領域のそれぞれに対応する記憶領域を、データバッファ113と同様の数だけ備えている。ただし、アドレスバッファ114の記憶領域の記憶容量は、データバッファ113における記憶領域と同じ記憶容量とは限らず、データバッファ113の記憶領域の保存した奇数ラインの前処理画像データをDRAM72に転送する際に指定するアドレスを保存するのに必要な記憶容量である。そして、アドレスバッファ114は、バッファリード制御部115からの制御に応じて、それぞれの記憶領域に保存しているアドレスを、バッファリード制御部115に順次出力する。
図5に示したデータ転送制御装置100の構成では、データバッファ113と同様に、4つの記憶領域を1組とした記憶領域群を、4つ備えている。そして、データ転送制御装置100では、記憶領域群に記憶された全ての奇数ラインの前処理画像データのアドレスを、1転送単位の奇数ラインデータに含まれるアドレスとする。この構成によってデータ転送制御装置100は、DRAM72のそれぞれのバンクに16個のパッキングした奇数ラインの前処理画像データを4つのバンクに対して連続して転送するバースト転送を、4回行うことができる。なお、図5に示したデータ転送制御装置100の構成では、アドレスバッファ114内のそれぞれの記憶領域、およびそれぞれの記憶領域が対応するDRAM72のバンクを表す符号を省略している。
なお、本第1の実施形態のデータ転送制御装置100では、アドレスバッファ114に奇数ラインの前処理画像データを書き込むタイミングと、アドレスバッファ114から奇数ラインの前処理画像データを読み出すタイミングとに関しても、何ら限定しない。また、データバッファ113とアドレスバッファ114とは、必ずしも個々のバッファで構成するものでなくても良く、同一のSRAM上の異なる記憶領域に、データバッファ領域と、アドレスバッファ領域を設ける構成であってもよい。
バッファリード制御部115は、バッファライト制御部112からライト完了通知が入力されると、データバッファ113およびアドレスバッファ114の記憶領域に1転送単位の奇数ラインデータの保存が完了したと判断する。そして、バッファリード制御部115は、データ操作部130内の優先度決定部131と連携して、データバッファ113に保存されているパッキングした奇数ラインの前処理画像データと、アドレスバッファ114に保存されているアドレスとを順次読み出す。そして、バッファリード制御部115は、読み出した奇数ラインの前処理画像データとアドレスとを、データ操作部130内の優先度決定部131に出力する。
また、バッファリード制御部115は、1回のDMAによってDRAM72に転送する量の奇数ラインの前処理画像データおよびアドレスを、データバッファ113およびアドレスバッファ114のそれぞれからの読み出しが完了すると、データバッファ113およびアドレスバッファ114からの奇数ラインの前処理画像データおよびアドレスの読み出し、すなわち、1転送単位の奇数ラインデータの読み出しが完了したことを表すリード完了通知を、バッファライト制御部112に出力する。これにより、バッファリード制御部115は、データバッファ113およびアドレスバッファ114の記憶領域に空きができたことを、バッファライト制御部112に通知する。
データ転送制御装置100では、偶数ラインの前処理画像データをDRAM72に転送する(書き込む)ための構成として、上述したバンク入れ替え部110と同様の構成のバンク入れ替え部120を備えている。つまり、バンク入れ替え部120に備えたパッキング部121、バッファライト制御部122、データバッファ123、アドレスバッファ124、およびバッファリード制御部125のそれぞれは、バンク入れ替え部110に備えたパッキング部111、バッファライト制御部112、データバッファ113、アドレスバッファ114、およびバッファリード制御部115のそれぞれと同様の構成および動作を行う。従って、バンク入れ替え部120に備えたパッキング部121、バッファライト制御部122、データバッファ123、アドレスバッファ124、およびバッファリード制御部125のそれぞれに関する詳細な説明は省略する。
ただし、バンク入れ替え部110のそれぞれの構成要素が奇数ラインの前処理画像データに対応していたのに対し、バンク入れ替え部120は、偶数ラインの前処理画像データに対応している。以下の説明においては、1回のDMAで転送する偶数ラインの前処理画像データおよびアドレスをまとめて、「1転送単位の偶数ラインデータ」という。
データ操作部130は、バンク入れ替え部110によってDRAM72のバンクへのアクセスの順番が入れ替えられた奇数ラインの前処理画像データと、バンク入れ替え部120によってDRAM72のバンクへのアクセスの順番が入れ替えられた偶数ラインの前処理画像データとを束ねて、DRAM72に転送する(書き込む)。つまり、バンク入れ替え部110から出力された1転送単位の奇数ラインデータとバンク入れ替え部120から出力された1転送単位の偶数ラインデータとを束ねて、DRAM72に転送する(書き込む)。
優先度決定部131は、予め定めた前処理画像データを転送する(書き込む)際の優先度に基づいて、バッファリード制御部115から入力された奇数ラインの前処理画像データおよびアドレスと、バッファリード制御部125から入力された偶数ラインの前処理画像データおよびアドレスとを、1つの前処理画像データおよびアドレスに束ねる。より具体的には、優先度決定部131は、奇数ラインの前処理画像データに引き続き、偶数ラインの前処理画像データを転送する(書き込む)ように、奇数ラインの前処理画像データおよびアドレスと偶数ラインの前処理画像データおよびアドレスとを、1つの前処理画像データおよびアドレスに束ねる。そして、束ねた前処理画像データおよびアドレスを、バスインタフェース部132に出力する。つまり、優先度決定部131は、1転送単位の奇数ラインデータと1転送単位の偶数ラインデータとを、DMAの1回の転送単位に束ねて、バスインタフェース部132に出力する。以下の説明においては、1回のDMAで転送する束ねた前処理画像データおよびアドレスをまとめて、「1転送単位のデータ」という。
なお、優先度決定部131が、1転送単位の奇数ラインデータと1転送単位の偶数ラインデータとを束ねる方法は、上述した方法に限定されるものではなく、例えば、偶数ラインの前処理画像データに引き続き、奇数ラインの前処理画像データを転送する(書き込む)ように、1転送単位の奇数ラインデータと1転送単位の偶数ラインデータとを、1転送単位のデータに束ねてもよい。また、例えば、データバッファ113およびアドレスバッファ114の記憶領域と、データバッファ123およびアドレスバッファ124の記憶領域とのそれぞれの空き状態に応じて、1転送単位のデータに束ねる1転送単位の奇数ラインデータと1転送単位の偶数ラインデータとを変更してもよい。
バスインタフェース部132は、画像処理装置1におけるDMAのプロトコルに基づいて、優先度決定部131から入力された1転送単位のデータを、バスアービタ70との間でのやり取り(インタフェース)する。より具体的には、バスインタフェース部132は、DRAM72にアクセスするためのDMA要求信号を、データバス80を介してバスアービタ70に出力する。そして、バスインタフェース部132は、DMA要求がバスアービタ70に受け付けられ、データバス80を介してDMA受け付け信号が入力された後に、優先度決定部131から入力された1転送単位のデータを、データバス80を介してバスアービタ70に出力する。
なお、図5に示したデータ転送制御装置100の構成では、データバッファ113およびアドレスバッファ114と、データバッファ123およびアドレスバッファ124とに、4回分のDMAを行うことができる記憶領域を備えているため、4回連続でバスアービタ70との間でDMAを行うことができる。
次に、データ転送制御装置100がバスアービタ70との間で行うDMA動作について説明する。まず、画像処理装置1内の各処理ブロックにおけるDRAM72へのアクセス方法について説明する。図6は、本第1の実施形態におけるデータ転送制御装置100を適用した画像処理装置1における画像データの転送方向とDRAM72のアクセスとの一例を模式的に示した図である。また、図7は、本第1の実施形態におけるデータ転送制御装置100を適用した画像処理装置1において画像データの転送方向が異なる場合に対応したDRAM72のアクセスの一例を模式的に示した図である。なお、図6および図7の説明では、説明を容易にするため、イメージセンサ10の出力チャンネルが1チャンネルである場合を示している。
画像処理装置1では、イメージセンサ10が画像を取り込む方向と、画像処理部30が画像処理を行う方向とが異なる場合がある。例えば、図6(a)に示したように、イメージセンサ10が画素をラスタスキャンして画像に対して水平方向(横方向)の入力画像データを順次出力することに応じて、前処理部20が画像に対して水平方向(横方向)に前処理画像データをDRAM72に転送する(書き込む)。そして、画像処理部30は、画像を予め定めた大きさのブロックに分割し、それぞれのブロックにおいて、垂直方向(縦方向)に前処理画像データをDRAM72から取得する(読み出す)場合がある。
このとき、DRAM72には、例えば、図6(b)に示したように、それぞれの前処理画像データが記憶されることが考えられる。図6(b)には、画像のそれぞれのラインにおいて左側から順番に昇順のアドレスが割り当てられ、画像の上側から順番に昇順のアドレスが割り当てられた前処理画像データが、DRAM72の対応するそれぞれのバンクの記憶領域に記憶されている状態を示している。
この場合、図6(c)に示したように、画像処理装置1内の画像転送部21に備えたデータ転送制御装置100は、画像に対して水平方向(横方向)にDRAM72の異なるバンクに対して連続してアクセスして、前処理画像データをDRAM72に転送する。また、図6(d)に示したように、画像処理装置1内の画像処理部30に備えたデータ転送制御装置200は、画像に対して垂直方向(縦方向)にDRAM72の同一のバンクに対して連続してアクセスして、前処理画像データをDRAM72から取得する。このため、上述したような理由によって、データ転送制御装置200によるDRAM72の同一のバンクに対する連続したアクセスに、多くのロス時間が発生してしまうことになる。
そこで、図7(a)に示したように、有効な画像データ(有効画像)の領域の右側に無効な画像データの領域(無効領域)を追加して考え、画像の水平方向(横方向)の幅を、有効画像における水平方向(横方向)の画像幅よりも大きくしたものとして制御する方法が考えられる。この方法によって、画像のそれぞれのラインにおいて割り当てられるアドレスの幅、すなわち、各ラインにおける最初のアドレスと最後のアドレスとの差を、有効画像のそれぞれのラインにおいて割り当てられるアドレスの幅よりも大きくして考えることができる。
そして、この無効領域の大きさ、すなわち、無効領域のアドレスの幅の設定を調節することによって、画像処理部30に備えたデータ転送制御装置200が垂直方向(縦方向)に前処理画像データを取得する際に連続してアクセスするDRAM72のバンクを、異なるバンクにすることができる。
より具体的には、無効領域の水平方向(横方向)の大きさをDRAM72のバンクと同じ大きさに設定した場合、図7(b)に示したように、2ライン目以降のバンクがそれぞれ1つずつずれて、有効画像において垂直方向(縦方向)に同じ位置の前処理画像データが、DRAM72の異なるバンクに記憶されている状態になる。この場合、図7(b)に示したように、画像転送部21に備えたデータ転送制御装置100は、画像に対して水平方向(横方向)にバンクA、バンクB、バンクC、バンクDの順番でDRAM72のそれぞれのバンクにアクセスし、画像処理部30に備えたデータ転送制御装置200は、画像に対して垂直方向(縦方向)にバンクA、バンクB、バンクC、バンクDの順番でDRAM72のそれぞれのバンクにアクセスすることになる。これにより、画像転送部21に備えたデータ転送制御装置100および画像処理部30に備えたデータ転送制御装置200のそれぞれで、DRAM72の同一のバンクに対する連続したアクセスを回避することができる。
また、無効領域の水平方向(横方向)の大きさをDRAM72の2つのバンクと同じ大きさに設定した場合、図7(c)に示したように、2ライン目以降のバンクがそれぞれ2つずつずれて、有効画像において垂直方向(縦方向)に同じ位置の前処理画像データが、DRAM72の異なる1つ飛びのバンクに記憶されている状態になる。この場合、図7(c)に示したように、画像転送部21に備えたデータ転送制御装置100は、画像に対して水平方向(横方向)にバンクA、バンクB、バンクC、バンクDの順番でDRAM72のそれぞれのバンクにアクセスし、画像処理部30に備えたデータ転送制御装置200は、画像に対して垂直方向(縦方向)にバンクA、バンクC、バンクA、バンクCの順番でDRAM72のそれぞれのバンクにアクセスすることになる。この場合でも、画像転送部21に備えたデータ転送制御装置100および画像処理部30に備えたデータ転送制御装置200のそれぞれで、DRAM72の同一のバンクに対する連続したアクセスを回避することができる。ただし、この場合のように、DRAM72の異なるバンクに対するアクセスを挟んだ場合でも、DRAMにおける同一のバンクに対する連続したアクセスを受け付けられない期間が終了していないこともあるため、DRAM72がアクセスを受け付けられない期間の残りの時間が、ロス時間になってしまう可能性はある。
また、無効領域の水平方向(横方向)の大きさをDRAM72の3つのバンクと同じ大きさに設定した場合、図7(d)に示したように、2ライン目以降のバンクがそれぞれ3つずつずれて、有効画像において垂直方向(縦方向)に同じ位置の前処理画像データが、DRAM72の異なる2つ飛びのバンクに記憶されている状態になる。この場合、図7(d)に示したように、画像転送部21に備えたデータ転送制御装置100は、画像に対して水平方向(横方向)にバンクA、バンクB、バンクC、バンクDの順番でDRAM72のそれぞれのバンクにアクセスし、画像処理部30に備えたデータ転送制御装置200は、画像に対して垂直方向(縦方向)にバンクA、バンクD、バンクC、バンクBの順番でDRAM72のそれぞれのバンクにアクセスすることになる。この場合でも、画像転送部21に備えたデータ転送制御装置100および画像処理部30に備えたデータ転送制御装置200のそれぞれで、DRAM72の同一のバンクに対する連続したアクセスを回避することができる。
このように、有効画像の領域の右側に無効領域を追加して考えることによって、DRAM72の同一のバンクに対する連続したアクセスを回避することができる。なお、図7(b)に示したDRAM72のアクセスの一例と、図7(d)に示したDRAM72のアクセスの一例とは、いずれも画像に対して水平方向(横方向)のバンクアクセスと画像に対して垂直方向(縦方向)のバンクアクセスとが効率良く行われると考えられる。しかし、画像処理装置1に備えた他の処理ブロックにおけるDRAM72へのバンクアクセスを考慮すると、図7(b)に示したDRAM72のアクセスの方が、より効率がよいと考えられる。これは、画像処理装置1に備えた他の処理ブロックも、バンクA、バンクB、バンクC、バンクDの順番でDRAM72のそれぞれのバンクにアクセスすると考えられるためである。つまり、図7(d)に示したように、垂直方向(縦方向)にバンクA、バンクD、バンクC、バンクBの順番でそれぞれのバンクにアクセスするよりも、他の処理ブロックと同様に、垂直方向(縦方向)にバンクA、バンクB、バンクC、バンクDの順番でそれぞれのバンクにアクセスする方が、画像処理装置1の全体で考えると、アクセス効率が高くなるからである。
しかし、上述したように、画像処理装置1に備えたイメージセンサ10は、画素の信号を出力する出力チャンネルを2チャンネル備え、入力画像データを、2ライン同時に前処理部20に出力する。そして、画像転送部21が、2ラインの前処理画像データを束ねてDRAM72に転送する(書き込む)。このような画像処理装置1の構成を考慮すると、有効画像の領域の右側に無効領域を追加して考える方法によっても、画像転送部21に備えたデータ転送制御装置100によるDRAM72の同一のバンクに対する連続したアクセスを全て回避することができるとは限らない。
例えば、図7(b)に示したように、無効領域の水平方向(横方向)の大きさをDRAM72のバンクと同じ大きさに設定した場合では、奇数ラインの前処理画像データの後に偶数ラインの前処理画像データを束ねて転送する(書き込む)と、次の奇数ラインの前処理画像データを転送する(書き込む)ときに、DRAM72の同一のバンクに対する連続したアクセスが発生してしまう。より具体的には、画像転送部21に備えたデータ転送制御装置100が、画像に対して水平方向(横方向)にバンクA、バンクB、バンクC、バンクDの順番でアクセスする奇数ラインの前処理画像データに引き続き、同じく画像に対して水平方向(横方向)にバンクB、バンクC、バンクD、バンクAの順番でアクセスして偶数ラインの前処理画像データを転送した(書き込んだ)後、次の奇数ラインの前処理画像データの転送(書き込み)を行うと、偶数ラインのバンクAへのアクセスと、次の奇数ラインのバンクAへのアクセスとが連続してしまう。
また、例えば、図7(b)に示したように、無効領域の水平方向(横方向)の大きさをDRAM72の2つのバンクと同じ大きさに設定した場合では、奇数ラインの前処理画像データと偶数ラインの前処理画像データとを束ねて転送しても(書き込んでも)、DRAM72の同一のバンクに対する連続したアクセスは発生しない。しかし、上述したように、DRAMにおける同一のバンクに対する連続したアクセスを受け付けられない期間が終了せず、DRAM72がアクセスを受け付けられない期間が残ってしまうことがある。より具体的には、画像転送部21に備えたデータ転送制御装置100が、画像に対して水平方向(横方向)にバンクA、バンクB、バンクC、バンクDの順番でアクセスする奇数ラインの前処理画像データに引き続き、同じく画像に対して水平方向(横方向)にバンクC、バンクD、バンクA、バンクBの順番でアクセスして偶数ラインの前処理画像データを転送する(書き込む)と、奇数ラインのバンクCへのアクセスと偶数ラインのバンクCへのアクセスとの間に奇数ラインのバンクDへのアクセスのみを挟んだアクセスとなる。同様に、奇数ラインのバンクDへのアクセスと偶数ラインのバンクDへのアクセスとの間や、偶数ラインのバンクAへのアクセスと次の奇数ラインのバンクAへのアクセスとの間や、偶数ラインのバンクBへのアクセスと次の奇数ラインのバンクBへのアクセスとの間も1つのバンクへのアクセスのみを挟んだアクセスとなる。
また、例えば、図7(d)に示したように、無効領域の水平方向(横方向)の大きさをDRAM72の3つのバンクと同じ大きさに設定した場合では、奇数ラインの前処理画像データの後に偶数ラインの前処理画像データを束ねて転送する(書き込む)と、この奇数ラインと偶数ラインとの間に、DRAM72の同一のバンクに対する連続したアクセスが発生してしまう。より具体的には、画像転送部21に備えたデータ転送制御装置100が、画像に対して水平方向(横方向)にバンクA、バンクB、バンクC、バンクDの順番でアクセスする奇数ラインの前処理画像データに引き続き、同じく画像に対して水平方向(横方向)にバンクD、バンクA、バンクB、バンクCの順番でアクセスして偶数ラインの前処理画像データの転送(書き込み)を行うと、奇数ラインのバンクDへのアクセスと偶数ラインのバンクDへのアクセスとが連続してしまう。
このため、画像処理装置1では、上述した画像に対する水平方向(横方向)と垂直方向(縦方向)とのDRAM72のバンクアクセスの他に、同じ水平方向(横方向)内でのバンクアクセスも考慮する必要がある。
次に、データ転送制御装置100において同じ水平方向(横方向)内でのバンクアクセスを考慮したDMA動作について説明する。なお、以下の説明においては、図7(b)に示した、無効領域の水平方向(横方向)の大きさをDRAM72のバンクと同じ大きさに設定した場合におけるDMA動作について説明する。
図8は、本第1の実施形態のデータ転送制御装置100におけるDRAM72のバンクアクセスに起因するロス時間の一例を模式的に示した図である。図8(a)には、イメージセンサ10の1ライン目と2ライン目とに対応した前処理画像データを、画像転送部21に備えたデータ転送制御装置100が束ねてDRAM72に転送する場合のタイミングを示している。また、図8(b)には、イメージセンサ10の3ライン目と4ライン目とに対応した前処理画像データを、画像転送部21に備えたデータ転送制御装置100が束ねてDRAM72に転送する場合のタイミングを示している。
上述したように、無効領域の水平方向(横方向)の大きさをDRAM72のバンクと同じ大きさに設定した場合では、奇数ラインの前処理画像データの後に偶数ラインの前処理画像データを束ねてDRAM72に転送する(書き込む)と、次の奇数ラインの前処理画像データを転送する(書き込む)ときに、DRAM72の同一のバンクに対する連続したアクセスが発生してしまう。これにより、画像転送部21におけるDRAM72へのアクセス効率が低下してしまう。
より具体的には、図8(a)に示したように、画像転送部21に備えたデータ転送制御装置100内のデータ操作部130は、バンクA、バンクB、バンクC、バンクDの順番でDRAM72のそれぞれのバンクにアクセスする1ライン目(奇数ライン)の前処理画像データに引き続き、バンクB、バンクC、バンクD、バンクAの順番でDRAM72のそれぞれのバンクにアクセスする2ライン目(偶数ライン)の前処理画像データを束ねる。そして、データ操作部130は、束ねた前処理画像データをDRAM72の対応するバンクに転送する。続いて、データ操作部130が、同じく束ねた次の前処理画像データをDRAM72の対応するバンクに転送しようとすると、最初に転送した束ねた前処理画像データにおけるバンクAのアクセスと、次に転送する束ねた前処理画像データにおけるバンクAのアクセスとが連続してしまう。このとき、DRAM72は、バンクAへの連続したアクセスを受け付けることができないため、この期間がロス時間となり、DRAM72へのアクセス効率が低下してしまう。
また、図8(b)に示したように、画像転送部21に備えたデータ転送制御装置100内のデータ操作部130は、バンクC、バンクD、バンクA、バンクBの順番でDRAM72のそれぞれのバンクにアクセスする3ライン目(奇数ライン)の前処理画像データに引き続き、バンクD、バンクA、バンクB、バンクCの順番でDRAM72のそれぞれのバンクにアクセスする4ライン目(偶数ライン)の前処理画像データを束ねる。そして、データ操作部130は、束ねた前処理画像データをDRAM72の対応するバンクに転送する。続いて、データ操作部130が、同じく束ねた次の前処理画像データをDRAM72の対応するバンクに転送しようとすると、最初に転送した束ねた前処理画像データにおけるバンクCのアクセスと、次に転送する束ねた前処理画像データにおけるバンクCのアクセスとが連続してしまう。このときも、DRAM72は、バンクCへの連続したアクセスを受け付けることができないため、この期間がロス時間となり、DRAM72へのアクセス効率が低下してしまう。
そこで、画像転送部21に備えたデータ転送制御装置100では、バンク入れ替え部110およびバンク入れ替え部120が、対応するラインの前処理画像データをDRAM72に転送する(書き込む)際にアクセスするバンクの順番を入れ替えることによって、DRAM72の同一のバンクに対する連続したアクセスを回避する。図9および図10は、本第1の実施形態のデータ転送制御装置100によるバンクの入れ替え処理によってDRAM72のバンクアクセスに起因するロス時間を回避する一例を模式的に示した図である。図9には、図8(a)に示したDRAM72のバンクアクセスと同様に、イメージセンサ10の1ライン目と2ライン目とに対応した前処理画像データを、画像転送部21に備えたデータ転送制御装置100が束ねてDRAM72に転送する場合のタイミングを示している。また、図10には、図8(b)に示したDRAM72のバンクアクセスと同様に、イメージセンサ10の3ライン目と4ライン目とに対応した前処理画像データを、画像転送部21に備えたデータ転送制御装置100が束ねてDRAM72に転送する場合のタイミングを示している。
図9および図10に示したように、無効領域の水平方向(横方向)の大きさをDRAM72のバンクと同じ大きさに設定した場合では、奇数ラインの前処理画像データの後に偶数ラインの前処理画像データを束ねてDRAM72に転送する(書き込む)と、図8に示したDRAM72のバンクアクセスと同様に、次の奇数ラインの前処理画像データを転送する(書き込む)ときに、DRAM72の同一のバンクに対する連続したアクセスが発生してしまう。しかし、図9および図10に示したように、画像転送部21に備えたデータ転送制御装置100内のバンク入れ替え部110およびバンク入れ替え部120が、それぞれのラインの前処理画像データをDRAM72に転送する(書き込む)際にアクセスするバンクの順番を入れ替える。これにより、画像転送部21は、バンクインターリーブによるDRAM72の同一のバンクに対する連続したアクセスを回避することができる。
より具体的には、図9に示したように、データ転送制御装置100には、図8(a)と同様に、バンクA、バンクB、バンクC、バンクDの順番でDRAM72のそれぞれのバンクにアクセスする1ライン目(奇数ライン)の前処理画像データと、バンクB、バンクC、バンクD、バンクAの順番でDRAM72のそれぞれのバンクにアクセスする2ライン目(偶数ライン)の前処理画像データとが入力される。このとき、データ転送制御装置100内のバンク入れ替え部110は、バンクA、バンクB、バンクC、バンクDの順番でDRAM72のそれぞれのバンクにアクセスする1ライン目(奇数ライン)の前処理画像データをそのまま、データ操作部130に出力する。また、データ転送制御装置100内のバンク入れ替え部120は、バンクB、バンクC、バンクD、バンクAの順番でDRAM72のそれぞれのバンクにアクセスする2ライン目(偶数ライン)の前処理画像データを、1ライン目(奇数ライン)の前処理画像データと同様にバンクA、バンクB、バンクC、バンクDの順番でDRAM72のそれぞれのバンクにアクセスするように入れ替えて、データ操作部130に出力する。そして、データ操作部130は、1ライン目(奇数ライン)の前処理画像データに引き続き、バンクの順番が入れ替えられた2ライン目(偶数ライン)の前処理画像データを束ねる。そして、データ操作部130は、束ねた前処理画像データをDRAM72の対応するバンクに転送する。これにより、データ操作部130が、同じく束ねた次の前処理画像データをDRAM72の対応するバンクに転送する場合でも、DRAM72の同一のバンクに対する連続したアクセスを回避することができる。
また、図10に示したように、データ転送制御装置100には、図8(b)と同様に、バンクC、バンクD、バンクA、バンクBの順番でDRAM72のそれぞれのバンクにアクセスする3ライン目(奇数ライン)の前処理画像データと、バンクD、バンクA、バンクB、バンクCの順番でDRAM72のそれぞれのバンクにアクセスする4ライン目(偶数ライン)の前処理画像データとが入力される。このとき、データ転送制御装置100内のバンク入れ替え部110は、バンクC、バンクD、バンクA、バンクBの順番でDRAM72のそれぞれのバンクにアクセスする3ライン目(奇数ライン)の前処理画像データを、1ライン目(奇数ライン)の前処理画像データと同様にバンクA、バンクB、バンクC、バンクDの順番でDRAM72のそれぞれのバンクにアクセスするように入れ替えて、データ操作部130に出力する。また、データ転送制御装置100内のバンク入れ替え部120は、バンクD、バンクA、バンクB、バンクCの順番でDRAM72のそれぞれのバンクにアクセスする4ライン目(偶数ライン)の前処理画像データを、1ライン目(奇数ライン)の前処理画像データと同様にバンクA、バンクB、バンクC、バンクDの順番でDRAM72のそれぞれのバンクにアクセスするように入れ替えて、データ操作部130に出力する。そして、データ操作部130は、バンクの順番が入れ替えられた3ライン目(奇数ライン)の前処理画像データに引き続き、バンクの順番が入れ替えられた4ライン目(偶数ライン)の前処理画像データを束ねる。そして、データ操作部130は、束ねた前処理画像データをDRAM72の対応するバンクに転送する。これにより、データ操作部130が、同じく束ねた次の前処理画像データをDRAM72の対応するバンクに転送する場合でも、DRAM72の同一のバンクに対する連続したアクセスを回避することができる。
このように、データ転送制御装置100では、それぞれのラインの前処理画像データをデータバッファ113またはデータバッファ123に保存する際に、それぞれのラインの前処理画像データをDRAM72に転送する(書き込む)際にアクセスするバンクの順番を入れ替えて保存する。そして、データ転送制御装置100では、データバッファ113またはデータバッファ123のそれぞれに保存された順番で、それぞれのラインの前処理画像データを読み出して、読み出したそれぞれのラインの前処理画像データを束ねた後に、束ねた前処理画像データをDMAによってDRAM72の対応するバンクに転送する。
上記に述べたように、本第1の実施形態のデータ転送制御装置100は、2ライン同時に入力された前処理画像データをデータバッファ113またはデータバッファ123に保存する際に、いずれか一方または両方の前処理画像データを保存する順番を変更することによって、それぞれのラインの前処理画像データをDRAM72に転送する(書き込む)際にアクセスするバンクの順番を入れ替える。これにより、データ転送制御装置100では、2ライン同時に入力された前処理画像データをDRAM72に転送する(書き込む)際にアクセスするバンクの順番を、全てのラインで同じ順番にすることができる。また、データ転送制御装置100は、バンクにアクセスする順番が入れ替えられたそれぞれのラインの前処理画像データを束ねた1つの前処理画像データを、DMAによる転送でデータバス80を介してバスアービタ70に出力する。これにより、データ転送制御装置100では、2ライン同時に入力された前処理画像データをDRAM72に転送する処理ブロックの数を増やすことなく、それぞれのラインの前処理画像データをDRAM72に転送する(書き込む)ことができる。このことにより、画像処理装置1内に複数のデータを同時に処理する処理ブロックを備えている場合でも、バンクインターリーブによるDRAM72の同一のバンクに対する連続したアクセスを回避し、ロス時間によるDRAM72へのアクセス効率の低下を抑え、DRAM72へのアクセス効率を高めることができる。
なお、本第1の実施形態では、図5に示したように、データ転送制御装置100に備えたデータバッファ113およびデータバッファ123内のそれぞれの記憶領域と、アドレスバッファ114およびアドレスバッファ124内のそれぞれの記憶領域とが対応するDRAM72のバンクを予め定めておき、つまり、対応するバンクを固定しておき、それぞれのバンクの前処理画像データおよびアドレスを、対応する記憶領域に保存する場合について説明した。このように、データバッファ113およびデータバッファ123内のそれぞれの記憶領域と、アドレスバッファ114およびアドレスバッファ124内のそれぞれの記憶領域とが対応するDRAM72のバンクを予め定めておくことによって、それぞれのバンクの前処理画像データがどのような順番でデータ転送制御装置100に入力された場合でも、保存した前処理画像データを同じバンクの順番でDRAM72に出力することができる(図9および図10参照)。
また、本第1の実施形態では、1転送単位の奇数ラインデータおよび1転送単位の偶数ラインデータに、バンクA、バンクB、バンクC、およびバンクDのそれぞれに対応する前処理画像データが必ず1つ含まれている場合について説明した。しかし、データ転送制御装置100に入力される前処理画像データは、必ずしも、バンクA、バンクB、バンクC、およびバンクDのそれぞれに対応する前処理画像データが1つ含まれているとは限らない。この場合には、データバッファ113およびデータバッファ123内のそれぞれの記憶領域と、アドレスバッファ114およびアドレスバッファ124内のそれぞれの記憶領域とに、異なるバンクに対応する前処理画像データを保存するなど、それぞれのバッファの記憶領域が対応するバンクを適宜変更することもできる。例えば、バンクA、バンクB、バンクA、バンクBの順番で入力された前処理画像データを、データバッファ113内の同じ記憶領域群に保存する場合を考える。この場合には、1つ目のバンクAの前処理画像データをバンクAに対応する記憶領域に、1つ目のバンクBの前処理画像データをバンクBに対応する記憶領域に、2つ目のバンクAの前処理画像データをバンクCに対応する記憶領域に、2つ目のバンクBの前処理画像データをバンクDに対応する記憶領域に、それぞれ保存するように変更することができる。
また、本第1の実施形態では、DMAの転送で出力する前処理画像データおよびアドレスを保存するデータバッファ113およびデータバッファ123の記憶領域と、アドレスバッファ114およびアドレスバッファ124の記憶領域とを変更する構成について説明した。つまり、データ転送制御装置100に備えたデータバッファ113およびデータバッファ123と、アドレスバッファ114およびアドレスバッファ124とに、それぞれのラインの前処理画像データとアドレスを保存するときに、DRAM72にアクセスするバンクの順番を入れ替える構成について説明した。しかし、DRAM72にアクセスするバンクの順番を入れ替える構成は、本第1の実施形態に示した構成に限定されるものではない。例えば、DMAの転送で出力する前処理画像データおよびアドレスを読み出すデータバッファ113およびデータバッファ123の記憶領域と、アドレスバッファ114およびアドレスバッファ124の記憶領域とを変更する構成にすることもできる。つまり、データ転送制御装置100では、データバッファ113またはデータバッファ123と、アドレスバッファ114またはアドレスバッファ124とに保存された前処理画像データおよびアドレスを読み出してDMAによって出力する際に、DRAM72にアクセスするバンクの順番を入れ替える構成にすることもできる。この場合、例えば、CPU60が、不図示のリード順番レジスタに、データバッファ113に保存された前処理画像データを読み出す順番を設定し、バッファリード制御部115が、不図示のリード順番レジスタに設定された前処理画像データを読み出す順番の情報に応じて、データバッファ113に保存された前処理画像データとアドレスバッファ114とに保存されたアドレスとの読み出しを制御する構成が考えられる。
また、本第1の実施形態では、同時に入力されるそれぞれのライン毎に、前処理画像データを保存する専用のデータバッファおよびアドレスバッファを備えた構成について説明した。つまり、奇数ラインの前処理画像データに対応するデータバッファ113およびアドレスバッファ114と、偶数ラインの前処理画像データに対応するデータバッファ123およびアドレスバッファ124とを備えた構成について説明した。しかし、それぞれのラインの前処理画像データおよびアドレスを保存する構成は、本第1の実施形態に示した構成に限定されるものではない。例えば、1つのデータバッファと1つのアドレスバッファとが、全てのラインの前処理画像データに対応する構成にすることもできる。
なお、本第1の実施形態では、データ転送制御装置100について説明したが、図1に示したデータ転送制御装置200およびデータ転送制御装置300も、データを入出力する方向が異なるのみで、データを入出力する際の考え方はデータ転送制御装置100と同様である。従って、本第1の実施形態のデータ転送制御装置200およびデータ転送制御装置300のそれぞれに関する詳細な説明は省略する。
<第2の実施形態>
次に、本発明の第2の実施形態のデータ転送制御装置について説明する。図11は、本第2の実施形態におけるデータ転送制御装置の概略構成を示したブロック図である。図11に示したデータ転送制御装置400は、第1の実施形態のデータ転送制御装置100の代わりに、画像処理装置1に適用される。図11において、データ転送制御装置400は、パッキング部111と、バッファライト制御部112と、パッキング部121と、バッファライト制御部122と、優先度決定部410と、データバッファ420と、アドレスバッファ430と、バッファリード制御部440と、バスインタフェース部450と、を備えている。
なお、図1に示した本第2の実施形態のデータ転送制御装置400のブロック図では、図5に示した第1の実施形態のデータ転送制御装置100と同様の構成要素に、同一の符号を付与して示している。以下の説明においては、第1の実施形態のデータ転送制御装置100と異なる構成要素の動作のみを説明し、第1の実施形態のデータ転送制御装置100と同様の構成要素の動作に関する詳細な説明は省略する。
データ転送制御装置400は、第1の実施形態のデータ転送制御装置100と同様に、奇数ラインの前処理画像データと偶数ラインの前処理画像データとを1つの前処理画像データに束ねて、データバス80を介してDRAM72に1つの前処理画像データを転送する(書き込む)ためのDMA要求信号を、データバス80を介してバスアービタ70に出力する。このとき、データ転送制御装置400は、第1の実施形態のデータ転送制御装置100と同様に、DRAM72にアクセスするバンクの順番が、予め定めた順番で連続するように、DRAM72に転送する複数の奇数ラインの前処理画像データおよび複数の偶数ラインの前処理画像データをそれぞれまとめ、その後、まとめた奇数ラインの前処理画像データと偶数ラインの前処理画像データとのそれぞれを束ねてから、DMA要求信号をバスアービタ70に出力する。そして、データ転送制御装置400は、第1の実施形態のデータ転送制御装置100と同様に、DMA要求がバスアービタ70に受け付けられ、DMA受け付け信号が入力された後に、束ねた1つの前処理画像データを、予め定めたバンクの順番で連続するように、データバス80を介してバスアービタ70に出力する。これにより、画像処理装置1でも、データ転送制御装置400からのDMAに応じて、バスアービタ70およびDRAMインタフェース部71が動作し、データ転送制御装置400に指定されたDRAM72のアドレスに対応する記憶領域に、データ転送制御装置400から出力された1つの前処理画像データが書き込まれる。
以下の説明においては、データ転送制御装置100と同様に、データ転送制御装置400が前処理画像データを転送する先のDRAM72のアドレス空間が、4つのバンク(バンクA、バンクB、バンクC、およびバンクD)で構成されている場合について説明する。また、以下の説明においては、データ転送制御装置100と同様に、データ転送制御装置400による1回のDMAで、DRAM72の4つのバンクに対する連続したアクセスを2回連続して行うバンクインターリーブでのアクセスを、DMAの1回の転送単位とする場合について説明する。
バッファライト制御部112は、パッキング部111から入力されたパッキングした奇数ラインの前処理画像データとアドレスとを、すなわち、1転送単位の奇数ラインデータを、順次優先度決定部410に出力する。そして、バッファライト制御部112は、1回のDMAによってDRAM72に転送する量の1転送単位の奇数ラインデータの、優先度決定部410への出力が完了すると、優先度決定部410への奇数ラインの1転送単位の奇数ラインデータの出力が完了したことを表す、すなわち、1回分のDMAの準備が整ったことを表すライト完了通知を、バッファリード制御部440に出力する。
また、バッファライト制御部112は、バッファリード制御部440からデータバッファ420およびアドレスバッファ430のそれぞれに保存した1転送単位の奇数ラインデータの読み出しが完了したことを表すリード完了通知が入力されると、データバッファ420およびアドレスバッファ430の記憶領域に空きができたと判断し、次の1転送単位の奇数ラインデータの優先度決定部410への出力を開始する。
バッファライト制御部122は、パッキング部121から入力されたパッキングした偶数ラインの前処理画像データとアドレスとを、すなわち、1転送単位の偶数ラインデータを、順次優先度決定部410に出力する。そして、バッファライト制御部122は、1回のDMAによってDRAM72に転送する量の1転送単位の偶数ラインデータの、優先度決定部410への出力が完了すると、優先度決定部410への偶数ラインの1転送単位の偶数ラインデータの出力が完了したことを表す、すなわち、1回分のDMAの準備が整ったことを表すライト完了通知を、バッファリード制御部440に出力する。
また、バッファライト制御部122は、バッファリード制御部440からデータバッファ420およびアドレスバッファ430のそれぞれに保存した1転送単位の偶数ラインデータの読み出しが完了したことを表すリード完了通知が入力されると、データバッファ420およびアドレスバッファ430の記憶領域に空きができたと判断し、次の1転送単位の偶数ラインデータの優先度決定部410への出力を開始する。
優先度決定部410は、予め定めた前処理画像データを転送する(書き込む)際の優先度に基づいて、バッファライト制御部112から入力された奇数ラインの前処理画像データと、バッファライト制御部122から入力された偶数ラインの前処理画像データとのそれぞれを、データバッファ420に保存させる。このとき、優先度決定部410は、データバッファ420に保存させる奇数ラインの前処理画像データまたは偶数ラインの前処理画像データのいずれか一方または両方を、奇数ラインの前処理画像データまたは偶数ラインの前処理画像データをDRAM72に転送する(書き込む)際のバンクへのアクセスの順番に応じて入れ替える。なお、優先度決定部410が奇数ラインの前処理画像データまたは偶数ラインの前処理画像データをDRAM72に転送する(書き込む)際にアクセスするバンクの順番を入れ替えるときの考え方は、第1の実施形態のデータ転送制御装置100と同様であるため、詳細な説明は省略する。
なお、優先度決定部410が奇数ラインの前処理画像データと偶数ラインの前処理画像データとをデータバッファ420に保存させる方法は、予め定めた前処理画像データを転送する(書き込む)際の優先度に基づいた異なるタイミングで、奇数ラインの前処理画像データと偶数ラインの前処理画像データとを、データバッファ420に保存させる方法が考えられる。
より具体的には、例えば、奇数ラインの前処理画像データが8ビットである場合、パッキング部111に奇数ラインの前処理画像データが1サイクルで入力されるとしても、パッキング部111が順次入力された4つの奇数ラインの前処理画像データをパッキングして32ビットの奇数ラインの前処理画像データの生成を完了するタイミングは、4サイクルに1回のタイミングである。同様に、パッキング部121が、パッキングした32ビットの偶数ラインの前処理画像データの生成を完了するタイミングも、4サイクルに1回のタイミングである。ここで、優先度決定部410が、1サイクルで奇数ラインの前処理画像データまたは偶数ラインの前処理画像データをデータバッファ420に保存することができるとすると、優先度決定部410には、奇数ラインの前処理画像データと偶数ラインの前処理画像データとのそれぞれに対して、4サイクルに3回の空き時間がある。優先度決定部410は、この空き時間を利用して、4サイクルの時間内に、奇数ラインの前処理画像データと偶数ラインの前処理画像データとの両方を、データバッファ420に保存する。つまり、優先度決定部410は、奇数ラインの前処理画像データと偶数ラインの前処理画像データとのそれぞれをデータバッファ420に保存するタイミングを、4サイクルの時間内でずらすことによって、4サイクルの時間内のいずれか2つのサイクルで、奇数ラインの前処理画像データと偶数ラインの前処理画像データとの両方を、データバッファ420に保存する。
また、優先度決定部410は、予め定めた前処理画像データを転送する(書き込む)際の優先度に基づいて、バッファライト制御部112から入力された奇数ラインの前処理画像データを転送するDRAM72のアドレスと、バッファライト制御部122から入力された偶数ラインの前処理画像データを転送するDRAM72のアドレスとのそれぞれを、アドレスバッファ430に保存させる。このとき、優先度決定部410が奇数ラインの前処理画像データを転送するDRAM72のアドレスと偶数ラインの前処理画像データを転送するDRAM72のアドレスとをアドレスバッファ430に保存させる方法も、奇数ラインの前処理画像データと偶数ラインの前処理画像データとをデータバッファ420に保存させる方法と同様に考えることができる。
データバッファ(バッファ部)420は、優先度決定部410からの制御に応じて、優先度決定部410から順次入力された複数のパッキングした奇数ラインの前処理画像データおよび偶数ラインの前処理画像データを一時記憶(保存)する、例えば、SRAMなどで構成された記憶部である。データバッファ420は、DRAM72の対応するバンクに転送する複数の奇数ラインの前処理画像データを保存する記憶領域と、複数の偶数ラインの前処理画像データを保存する記憶領域とを、DRAM72が持つバンクの数分備えている。例えば、優先度決定部410から入力されたパッキングした32ビットの奇数ラインの前処理画像データを16個保存する記憶容量の記憶領域と、優先度決定部410から入力されたパッキングした32ビットの偶数ラインの前処理画像データを16個保存する記憶容量の記憶領域とのそれぞれを、DRAM72が持つ4つのバンク分備えている。すなわち、データバッファ420は、奇数ラインの前処理画像データに対応した64バイトの記憶領域と、偶数ラインの前処理画像データに対応した64バイトの記憶領域とのそれぞれを、DRAM72が持つ4つのバンク分備えている。そして、データバッファ420は、バッファリード制御部440からの制御に応じて、それぞれの記憶領域に保存している奇数ラインの前処理画像データ、または偶数ラインの前処理画像データを、バッファリード制御部440に順次出力する。
図11に示したデータ転送制御装置400の構成では、4つの記憶領域を1組とした記憶領域群を、奇数ラインの前処理画像データと偶数ラインの前処理画像データとのそれぞれに対して4つずつ備えた構成を示している。そして、データ転送制御装置400では、記憶領域群に記憶された全ての奇数ラインの前処理画像データを、1転送単位の奇数ラインデータに含まれる奇数ラインの前処理画像データとする。また、データ転送制御装置400では、記憶領域群に記憶された全ての偶数ラインの前処理画像データを、1転送単位の偶数ラインデータに含まれる偶数ラインの前処理画像データとする。この構成によってデータ転送制御装置400は、DRAM72のそれぞれのバンクに16個の32ビットの奇数ラインの前処理画像データと、16個の32ビットの偶数ラインの前処理画像データとのそれぞれを、4つのバンクに対して連続して転送する2回のバースト転送を、4回行うことができる。ここで、それぞれの記憶領域内に記載した符号は、それぞれの記憶領域が対応するDRAM72のバンクを表している。
なお、本第2の実施形態のデータ転送制御装置400では、データバッファ420に奇数ラインの前処理画像データおよび偶数ラインの前処理画像データを書き込むタイミングと、データバッファ420から奇数ラインの前処理画像データおよび偶数ラインの前処理画像データを読み出すタイミングとに関しては、何ら限定しない。従って、データバッファ420は、データの書き込みタイミングとデータの読み出しタイミングとを異なるタイミングで制御することができるSRAMであってもよい。つまり、優先度決定部410の動作クロックとバッファリード制御部440の動作クロックとが異なることにより、データバッファ420に奇数ラインの前処理画像データおよび偶数ラインの前処理画像データを書き込むタイミングであるライトクロックと、データバッファ420からの奇数ラインの前処理画像データおよび偶数ラインの前処理画像データを読み出すタイミングであるリードクロックとが異なるクロックであってもよい。
アドレスバッファ(バッファ部)430は、優先度決定部410からの制御に応じて、優先度決定部410から入力されたDRAM72のアドレスを一時記憶(保存)する、データバッファ420と同様の構成の記憶部である。すなわち、アドレスバッファ430は、データバッファ420に保存している奇数ラインの前処理画像データおよび偶数ラインの前処理画像データを転送する(書き込む)先のDRAM72のバンクを指定するためのアドレスを保存する記憶部である。アドレスバッファ430は、データバッファ420における記憶領域のそれぞれに対応する記憶領域を、データバッファ420と同様の数だけ備えている。ただし、アドレスバッファ430の記憶領域の記憶容量は、データバッファ420における記憶領域と同じ記憶容量とは限らず、データバッファ420の記憶領域に保存した奇数ラインの前処理画像データおよび偶数ラインの前処理画像データをDRAM72に転送する際に指定するアドレスを保存するのに必要な記憶容量である。そして、アドレスバッファ430は、バッファリード制御部440からの制御に応じて、それぞれの記憶領域に保存しているアドレスを、バッファリード制御部440に順次出力する。
図11に示したデータ転送制御装置400の構成では、データバッファ420と同様に、4つの記憶領域を1組とした記憶領域群を、奇数ラインの前処理画像データと偶数ラインの前処理画像データとのそれぞれに対して4つずつ備えている。そして、データ転送制御装置400では、記憶領域群に記憶された全ての奇数ラインの前処理画像データのアドレスを、1転送単位の奇数ラインデータに含まれるアドレスとする。また、データ転送制御装置400では、記憶領域群に記憶された全ての偶数ラインの前処理画像データのアドレスを、1転送単位の偶数ラインデータに含まれるアドレスとする。この構成によってデータ転送制御装置400は、DRAM72のそれぞれのバンクに16個のパッキングした奇数ラインの前処理画像データと、16個のパッキングした偶数ラインの前処理画像データとを、4つのバンクに対して連続して転送する2回のバースト転送を、4回行うことができる。なお、図11に示したデータ転送制御装置400の構成では、アドレスバッファ430内のそれぞれの記憶領域、およびそれぞれの記憶領域が対応するDRAM72のバンクを表す符号を省略している。
なお、本第2の実施形態のデータ転送制御装置400では、アドレスバッファ430に奇数ラインの前処理画像データおよび偶数ラインの前処理画像データを書き込むタイミングと、アドレスバッファ430から奇数ラインの前処理画像データおよび偶数ラインの前処理画像データを読み出すタイミングとに関しても、何ら限定しない。また、データバッファ420とアドレスバッファ430とは、必ずしも個々のバッファで構成するものでなくても良く、同一のSRAM上の異なる記憶領域に、データバッファ領域と、アドレスバッファ領域を設ける構成であってもよい。
バッファリード制御部440は、バッファライト制御部112およびバッファライト制御部122の両方からライト完了通知が入力されると、データバッファ420およびアドレスバッファ430の記憶領域に1転送単位の奇数ラインデータおよび1転送単位の偶数ラインデータの保存が完了したと判断する。そして、バッファリード制御部440は、バスインタフェース部450と連携して、データバッファ420に保存されているパッキングした奇数ラインの前処理画像データおよびパッキングした偶数ラインの前処理画像データと、アドレスバッファ430に保存されている奇数ラインの前処理画像データを転送するDRAM72のアドレスおよび偶数ラインの前処理画像データを転送するDRAM72のアドレスとを順次読み出す。
そして、バッファリード制御部440は、読み出した奇数ラインの前処理画像データおよびアドレスと、偶数ラインの前処理画像データおよびアドレスとを、1つの前処理画像データおよびアドレスに束ねる。より具体的には、バッファリード制御部440は、奇数ラインの前処理画像データに引き続き、偶数ラインの前処理画像データを転送する(書き込む)ように、奇数ラインの前処理画像データおよびアドレスと偶数ラインの前処理画像データおよびアドレスとを、1つの前処理画像データおよびアドレスに束ねる。そして、束ねた前処理画像データおよびアドレスを、バスインタフェース部450に出力する。つまり、バッファリード制御部440は、1転送単位の奇数ラインデータと1転送単位の偶数ラインデータとを、DMAの1回の転送単位に束ねた1転送単位のデータを、バスインタフェース部450に出力する。
なお、バッファリード制御部440が、1転送単位の奇数ラインデータと1転送単位の偶数ラインデータとを束ねる方法は、上述した方法に限定されるものではなく、例えば、偶数ラインの前処理画像データに引き続き、奇数ラインの前処理画像データを転送する(書き込む)ように、1転送単位の奇数ラインデータと1転送単位の偶数ラインデータとを、1転送単位のデータに束ねてもよい。また、例えば、データバッファ420およびアドレスバッファ430の記憶領域の空き状態に応じて、1転送単位のデータに束ねる1転送単位の奇数ラインデータと1転送単位の偶数ラインデータとを変更してもよい。
また、バッファリード制御部440は、1回のDMAによってDRAM72に転送する量の奇数ラインの前処理画像データおよびアドレスを、データバッファ420およびアドレスバッファ430のそれぞれからの読み出しが完了すると、データバッファ420およびアドレスバッファ430からの奇数ラインの前処理画像データおよびアドレスの読み出し、すなわち、1転送単位の奇数ラインデータの読み出しが完了したことを表すリード完了通知を、バッファライト制御部112に出力する。これにより、バッファリード制御部440は、データバッファ420およびアドレスバッファ430の記憶領域に、奇数ラインの前処理画像データおよびアドレスを保存することができる空き領域ができたことを、バッファライト制御部112に通知する。
また、バッファリード制御部440は、1回のDMAによってDRAM72に転送する量の偶数ラインの前処理画像データおよびアドレスを、データバッファ420およびアドレスバッファ430のそれぞれからの読み出しが完了すると、データバッファ420およびアドレスバッファ430からの偶数ラインの前処理画像データおよびアドレスの読み出し、すなわち、1転送単位の偶数ラインデータの読み出しが完了したことを表すリード完了通知を、バッファライト制御部122に出力する。これにより、バッファリード制御部440は、データバッファ420およびアドレスバッファ430の記憶領域に、偶数ラインの前処理画像データおよびアドレスを保存することができる空き領域ができたことを、バッファライト制御部122に通知する。
バスインタフェース部450は、画像処理装置1におけるDMAのプロトコルに基づいて、バッファリード制御部440から入力された1転送単位のデータを、バスアービタ70との間でのやり取り(インタフェース)する。より具体的には、バスインタフェース部450は、DRAM72にアクセスするためのDMA要求信号を、データバス80を介してバスアービタ70に出力する。そして、バスインタフェース部450は、DMA要求がバスアービタ70に受け付けられ、データバス80を介してDMA受け付け信号が入力された後に、バッファリード制御部440から入力された1転送単位のデータを、データバス80を介してバスアービタ70に出力する。
なお、図11に示したデータ転送制御装置400の構成では、データバッファ420とアドレスバッファ430とが、4回分のDMAを行うことができる記憶領域を備えているため、4回連続でバスアービタ70との間でDMAを行うことができる。
このような構成によって、データ転送制御装置400では、優先度決定部410がそれぞれのラインの前処理画像データをデータバッファ420に保存する際に、それぞれのラインの前処理画像データをDRAM72に転送する(書き込む)際にアクセスするバンクの順番を入れ替えて保存する。そして、データ転送制御装置400では、バッファリード制御部440が、データバッファ420に保存された順番で、それぞれのラインの前処理画像データを読み出して、読み出したそれぞれのラインの前処理画像データを束ねた後に、束ねた前処理画像データをDMAによってDRAM72の対応するバンクに転送する。
なお、データ転送制御装置400によるバンクの入れ替え処理によって、DRAM72のバンクへのアクセスの順番を入れ替える動作は、第1の実施形態のデータ転送制御装置100におけるバンクの入れ替え処理によるDRAM72のバンクへのアクセスの順番を入れ替える動作と同様である(例えば、図4、図9および図10参照)ため、詳細な説明は省略する。
上記に述べたように、本第2の実施形態のデータ転送制御装置400は、2ライン同時に入力された前処理画像データをデータバッファ420に保存する際に、いずれか一方または両方の前処理画像データを保存する順番を変更することによって、それぞれのラインの前処理画像データをDRAM72に転送する(書き込む)際にアクセスするバンクの順番を入れ替える。これにより、データ転送制御装置400でも、第1の実施形態のデータ転送制御装置100と同様に、2ライン同時に入力された前処理画像データをDRAM72に転送する(書き込む)際にアクセスするバンクの順番を、全てのラインで同じ順番にすることができる。また、データ転送制御装置400は、バンクにアクセスする順番が入れ替えられたそれぞれのラインの前処理画像データを束ねた1つの前処理画像データを、DMAによる転送でデータバス80を介してバスアービタ70に出力する。これにより、データ転送制御装置400でも、第1の実施形態のデータ転送制御装置100と同様に、2ライン同時に入力された前処理画像データをDRAM72に転送する処理ブロックの数を増やすことなく、それぞれのラインの前処理画像データをDRAM72に転送する(書き込む)ことができる。このことにより、データ転送制御装置400を第1の実施形態のデータ転送制御装置100の代わりに適用した画像処理装置1内に複数のデータを同時に処理する処理ブロックを備えている場合でも、バンクインターリーブによるDRAM72の同一のバンクに対する連続したアクセスを回避し、ロス時間によるDRAM72へのアクセス効率の低下を抑え、DRAM72へのアクセス効率を高めることができる。
なお、本第2の実施形態では、DMAの転送で出力する前処理画像データおよびアドレスを保存するデータバッファ420の記憶領域と、アドレスバッファ430の記憶領域とを変更する構成について説明した。つまり、データ転送制御装置400に備えたデータバッファ420とアドレスバッファ430とに、それぞれのラインの前処理画像データとアドレスを保存するときに、優先度決定部410がDRAM72にアクセスするバンクの順番を入れ替える構成について説明した。しかし、DRAM72にアクセスするバンクの順番を入れ替える構成は、本第2の実施形態に示した構成に限定されるものではない。例えば、DMAの転送で出力する前処理画像データおよびアドレスを読み出すデータバッファ420の記憶領域と、アドレスバッファ430の記憶領域とを変更する構成にすることもできる。つまり、データ転送制御装置400では、データバッファ420とアドレスバッファ430とに保存された前処理画像データおよびアドレスを読み出してDMAによって出力する際に、バッファリード制御部440がDRAM72にアクセスするバンクの順番を入れ替える構成にすることもできる。この場合、例えば、CPU60が、不図示のリード順番レジスタに、データバッファ420に保存された前処理画像データを読み出す順番を設定し、バッファリード制御部440が、不図示のリード順番レジスタに設定された前処理画像データを読み出す順番の情報に応じて、データバッファ420に保存された前処理画像データとアドレスバッファ430とに保存されたアドレスとの読み出しを制御する構成が考えられる。
なお、本第2の実施形態では、第1の実施形態のデータ転送制御装置100の代わりに、データ転送制御装置400を画像処理装置1に適用した場合について説明したが、図1に示したデータ転送制御装置200およびデータ転送制御装置300の代わりに、データ転送制御装置400と同様の構成で、データを入出力する方向が異なるデータ転送制御装置を適用することもできる。
上記に述べたとおり、本発明を実施するための形態によれば、複数のデータを同時に出力する構成要素を備えた画像処理装置において、同時に入力された複数のデータを処理する処理ブロックに、本実施形態のデータ転送制御装置を適用する。そして、データ転送制御装置は、データ転送制御装置自体に備えたデータバッファおよびアドレスバッファのそれぞれにデータを保存する順番を変更することによって、1回分のDMAの転送でアクセスするDRAMのバンクの順番を、同時に入力された複数のデータ同士で同じ順番にする。これにより、本発明を実施するための形態のデータ転送制御装置を適用した画像処理装置において、同時に入力された複数のデータを処理する処理ブロックが処理後のデータを転送する際にアクセスするDRAMのバンクの順番を、それぞれの処理後のデータで同じにすることができる。このとき、データ転送制御装置は、本発明を実施するための形態のデータ転送制御装置を適用した画像処理装置に備えた他の処理ブロックがDRAMに対してアクセスするバンクの順番と同じ順番にする。これにより、本発明を実施するための形態のデータ転送制御装置を適用した画像処理装置に備えたそれぞれの処理ブロックがDRAMにアクセスする際のバンクの順番を、画像処理装置内の全ての処理ブロックで同じにすることができる。このことにより、本発明を実施するための形態のデータ転送制御装置を適用した画像処理装置に備えた他の処理ブロックが、並行してDRAMに対してアクセスした場合でも、バンクインターリーブによるDRAMへのアクセスにおいて同一のバンクに対する連続したアクセスが発生しなくなる。これにより、本発明を実施するための形態のデータ転送制御装置を適用した画像処理装置では、DRAMの同一のバンクに対する連続したアクセスに起因するロス時間によるDRAMへのアクセス効率の低下を抑えることができる。
また、本発明を実施するための形態によれば、本実施形態のデータ転送制御装置が、それぞれの処理後のデータをDRAMに転送する際に、バンクにアクセスする順番が入れ替えられたそれぞれのデータを1つに束ねて転送する。これにより、本発明を実施するための形態のデータ転送制御装置を適用した画像処理装置では、同時に入力された複数のデータをそれぞれ処理してDRAMに転送する処理ブロックの数を増やすことなく、複数の処理後のデータをDRAMに転送することができる。このことにより、本発明を実施するための形態のデータ転送制御装置を適用した画像処理装置に備えたそれぞれの処理ブロックが、並行してDRAMに対してアクセスする数を少なくすることができる。これにより、本発明を実施するための形態のデータ転送制御装置を適用した画像処理装置では、画像処理装置に備えたそれぞれの処理ブロックからのDRAMへのアクセス要求の調停を、容易にすることができる。そして、本発明を実施するための形態のデータ転送制御装置を適用した画像処理装置では、画像処理装置に備えたそれぞれの処理ブロックが並行してDRAMに対してアクセスした場合でも、バンクインターリーブによるDRAMの同一のバンクに対する連続したアクセスを回避し、DRAMへのアクセス効率を高めることができる。
なお、本実施形態においては、画像処理装置1に備えたイメージセンサ10が入力画像データを2ライン同時に前処理部20に出力する構成において、前処理画像データをDRAM72に転送する(書き込む)画像転送部21にデータ転送制御装置を備えた構成について説明した。そして、データ転送制御装置がそれぞれのラインの前処理画像データをDRAM72に転送する(書き込む)際にアクセスするバンクの順番を入れ替えた後に、それぞれのラインの前処理画像データを束ねてDRAM72に転送する(書き込む)動作について説明した。しかし、データ転送制御装置を備える処理ブロック、すなわち、複数のデータを並列に処理することによってそれぞれのデータに対する処理を高速化する処理ブロックは、本実施形態に示した構成に限定されるものではない。例えば、画像処理装置1では、画像処理部30や、表示処理部40を含め、その他の処理ブロックにおいても、処理の高速化が求められるため、これらの処理ブロックに、本実施形態のデータ転送制御装置を適用することもできる。
また、本実施形態のデータ転送制御装置は、処理の高速化を行う処理ブロックのみではなく、複数のデータを同時に処理する処理ブロックにも適用することができる。例えば、画像処理装置1では、DRAM72に記憶している複数枚の記録用の画像データを同時に取得し(読み出し)、取得した複数枚の記録用の画像データに対して処理を行う場合に、複数枚の記録用の画像データを同時に取得する(読み出す)構成として、本実施形態のデータ転送制御装置を画像処理部30に適用することができる。ここで、画像処理部30が複数枚の記録用の画像データに対して行う処理としては、例えば、同じ画角の明るい画像と暗い画像を合成して広ダイナミックレンジの画像を生成する処理や、複数枚の記録用の画像データ間の相関を演算する処理などが考えられる。また、例えば、画像処理装置1では、DRAM72に記憶している表示用の画像データとOSD表示用のデータとを同時に取得して(読み出して)表示処理を行う場合に、表示用の画像データとOSD表示用のデータとのそれぞれを同時に取得する(読み出す)構成として、本実施形態のデータ転送制御装置を表示処理部40に適用することもできる。また、例えば、画像処理装置1では、YC型式の画像データやRGB型式の画像データなど、異なる型式の画像データがDRAM72内の異なる記憶領域に記憶されている場合に、これらの異なる型式の画像データを同時に取得し(読み出し)、取得したそれぞれの型式の画像データに対して処理を行う場合に、異なる型式の画像データのそれぞれを同時に取得する(読み出す)構成として、本実施形態のデータ転送制御装置をいずれかの処理ブロックに適用することもできる。また、例えば、画像処理装置1では、相関がない複数枚の画像データがDRAM72内の異なる記憶領域に記憶されている場合に、これらの画像データのそれぞれを同時に取得する(読み出す)構成として、本実施形態のデータ転送制御装置をいずれかの処理ブロックに適用することもできる。
ここで、本実施形態のデータ転送制御装置を、画像処理装置1に備えた他の処理ブロックに適用した場合の一例について説明する。図12は、本第1の実施形態のデータ転送制御装置を適用した画像処理装置1におけるデータ転送方法の別の一例を説明する図である。図12には、画像処理部30に備えたデータ転送制御装置200が、DRAM72から2枚の記録用の画像データ内の異なる領域の画像データを同時に取得し(読み出し)取得した2つの領域の画像データに対して合成処理を行う場合の一例を示している。
図12(a)に示したように、画像P1と画像P2とが記録用の画像データとしてDRAM72に記憶されている場合、それぞれの画像の画像データが記憶されているバンクは、例えば、1ライン目では、画像に対して水平方向(横方向)にバンクA、バンクB、バンクC、バンクDの順番で並んでいる。しかし、合成処理において被写体の動きを考慮すると、画像P1と画像P2とのそれぞれで異なる領域の画像データを合成することが必要になる場合がある。つまり、2枚の画像内の被写体の動き量に応じて、図12(a)に示した画像P1内の領域R1の画像データと、画像P2内の領域R2の画像データとの合成が必要となる場合がある。
この場合、図12(a)を見てわかるように、領域R1と領域R2とでは、それぞれの領域におけるバンクの関係が異なっている。より具体的には、画像P1内の領域R1では、画像に対して水平方向(横方向)にバンクB、バンクC、バンクD、バンクAの順番で画像データが並んでいるのに対して、画像P2内の領域R2では、画像に対して水平方向(横方向)にバンクD、バンクA、バンクB、バンクCの順番で画像データが並んでいる。このバンクの関係は、合成する画像P1内の領域R1と画像P2内の領域R2とが変わる毎に異なってしまう。このように、バンクの関係が異なっている状態で、そのまま2枚の画像の画像データをDRAM72から取得する(読み出す)と、DRAM72の同一のバンクに対する連続したアクセスが発生し、DRAM72へのアクセス効率が低下してしまう。
そこで、画像処理部30に備えたデータ転送制御装置200は、図12(b)に示したように、DRAM72の同一のバンクに対する連続したアクセスを回避した画像データの取得(読み出し)を行う。図12(b)には、画像P2内の領域R2の画像データを取得する(読み出す)際のバンクの順番を、画像P1内の領域R1の画像データを取得する(読み出す)際のバンクの順番と同じ順番にした場合を示している。そして、データ転送制御装置200内のデータ操作部130が、取得した(読み出した)画像データを領域R1の画像データと領域R2の画像データとに振り分けた後、バンク入れ替え部110とバンク入れ替え部120とのそれぞれが、バンクの順番を入れ替えて、領域R1の画像データと領域R2の画像データとを合成する不図示の合成処理部に出力する。
より具体的には、振り分けられた領域R1の画像データのバンクの順番(バンクB、バンクC、バンクD、バンクAの順番)を、バンク入れ替え部110では入れ替えずに、バンクB、バンクC、バンクD、バンクAの順番のままで不図示の合成処理部に出力する。その後、振り分けられた領域R2の画像データのバンクの順番(バンクB、バンクC、バンクD、バンクAの順番)を、バンク入れ替え部120が入れ替えて、バンクD、バンクA、バンクB、バンクCの順番で不図示の合成処理部に出力する。これにより、不図示の合成処理部では、正しい順番で入力された領域R1の画像データと領域R2の画像データとの合成処理を行うことができる。
なお、画像処理装置1に備えた他の処理ブロックにおけるDRAM72へのバンクアクセスを考慮した場合、他の処理ブロックがDRAM72のそれぞれのバンクにアクセスする順番と同じ順番でアクセスした方が、DRAMへのアクセス効率が高いと考えられる。図12(c)には、画像P1内の領域R1の画像データと画像P2内の領域R2の画像データとのそれぞれを取得する(読み出す)際のバンクの順番を、画像処理装置1に備えた他の処理ブロックがDRAM72のそれぞれのバンクにアクセスすると考えられる、バンクA、バンクB、バンクC、バンクDの順番にした場合を示している。そして、図12(b)に示した一例と同様に、データ転送制御装置200内のデータ操作部130が、取得した(読み出した)画像データを領域R1の画像データと領域R2の画像データとに振り分けた後、バンク入れ替え部110とバンク入れ替え部120とのそれぞれが、バンクの順番を入れ替えて、領域R1の画像データと領域R2の画像データとを合成する不図示の合成処理部に出力する。
より具体的には、振り分けられた領域R1の画像データのバンクの順番(バンクA、バンクB、バンクC、バンクDの順番)を、バンク入れ替え部110が入れ替えて、バンクB、バンクC、バンクD、バンクAの順番で不図示の合成処理部に出力する。その後、振り分けられた領域R2の画像データのバンクの順番(バンクA、バンクB、バンクC、バンクDの順番)を、バンク入れ替え部120が入れ替えて、バンクD、バンクA、バンクB、バンクCの順番で不図示の合成処理部に出力する。これにより、図12(b)に示した一例と同様に、不図示の合成処理部では、正しい順番で入力された領域R1の画像データと領域R2の画像データとの合成処理を行うことができる。
また、本実施形態においては、画像処理装置1に備えたイメージセンサ10が入力画像データを2ライン同時に前処理部20に出力する場合ついて説明した。つまり、本実施形態のデータ転送制御装置が、2つのデータを並列に処理する処理ブロックに備えられ、2つのデータのそれぞれをDRAMに転送する(書き込む)際にアクセスするバンクを入れ替えて、その後、データを束ねてからDRAMに転送する(書き込む)場合について説明した。しかし、本実施形態のデータ転送制御装置が対応する同時に入力されるデータの数は、本実施形態に示した構成に限定されるものではなく、例えば、さらに多くのデータが同時に入力される処理ブロックに備えられる場合であっても、同様に、本発明のデータ転送制御装置の考え方を適用することができる。
また、本実施形態においては、画像処理装置1に備えたイメージセンサ10が画素をラスタスキャンして画像に対して水平方向(横方向)の入力画像データを2ライン同時に順次出力することに応じて、前処理部20が画像に対して水平方向(横方向)に2ライン分の前処理画像データをまとめてDRAM72に転送する(書き込む)場合について説明した。そして、画像処理部30は、画像を予め定めた大きさのブロックに分割し、それぞれのブロックにおいて、垂直方向(縦方向)に前処理画像データをDRAM72から取得する(読み出す)場合について説明した。しかし、データ転送制御装置を備える処理ブロック、すなわち、複数のデータを並列に処理することによってそれぞれのデータを転送する(書き込む)処理ブロックは、本実施形態に示した構成に限定されるものではない。例えば、複数のデータを並列に処理し、処理後のデータをまとめてDRAM72に転送する(書き込む)処理ブロックと、処理後のデータをDRAM72から取得する(読み出す)処理ブロックとが処理する方向が同じ方向である場合でも、これらの処理ブロックに、本実施形態のデータ転送制御装置を適用することができる。
また、本実施形態においては、データバッファおよびアドレスバッファが、データ転送制御装置に備えた、DRAM72にアクセスするバンクの順番を入れ替える専用のバッファである構成について説明した。つまり、データ転送制御装置200においては、データバッファ113およびアドレスバッファ114と、データバッファ123およびアドレスバッファ124とが、DRAM72にアクセスするバンクの順番を入れ替える専用のバッファであり、データ転送制御装置400においては、データバッファ420とアドレスバッファ430とが、DRAM72にアクセスするバンクの順番を入れ替える専用のバッファである構成について説明した。しかし、データバッファおよびアドレスバッファの構成は、本実施形態に示した構成に限定されるものではない。例えば、DMAの転送によってデータの出力を行う一般的な処理ブロックには、データバスの混雑によってデータの転送が待たされたときでも、データバスが空いたときに確実にデータを転送するための構成として、データを一時記憶(保存)するバッファを備えていると考えられる。また、例えば、DMAの転送によってデータの出力を行う一般的な処理ブロックには、データを処理する内部のクロックとデータバスにおけるクロックとが異なる場合に、これらのクロックの乗り換えを行うための構成として、データを一時記憶(保存)するバッファを備えていると考えられる。従って、すでに本実施形態のデータ転送制御装置におけるデータバッファおよびアドレスバッファと同様の構成を備えている処理ブロックに、本発明の考え方を適用する場合には、すでに備えているバッファを、本実施形態のデータ転送制御装置におけるデータバッファおよびアドレスバッファとして利用することもできる。この場合には、処理ブロックの回路規模を増大させることなく、DRAMへのアクセス効率を向上させることができる。これは、バスアービタ内でDRAMのバンクにアクセスする順番を入れ替えるためのバッファをバスアービタ内に搭載する従来の構成よりも有利であると考えられる。
また、本実施形態においては、データ転送制御装置100またはデータ転送制御装置400に備えたパッキング部111およびパッキング部121が、入力された画像データをパッキングすると共に、パッキングした画像データを転送するDRAM72のアドレスを生成する構成について説明した。しかし、DRAM72のアドレスを生成する構成は、本実施形態に示した構成に限定されるものではない。例えば、データ転送制御装置100において、バッファリード制御部115、バッファリード制御部125、優先度決定部131、またはバスインタフェース部132が、DRAM72のアドレスを生成する構成にすることもできる。この場合、データ転送制御装置100内にアドレスバッファ114およびアドレスバッファ124を備えない構成にすることもできる。
また、本実施形態においては、データ転送制御装置100またはデータ転送制御装置400が画像データを転送する先のDRAM72が、4つのバンク(バンクA、バンクB、バンクC、およびバンクD)で構成されている場合について説明したが、DRAMにおけるバンクの構成は、本実施形態に示した構成に限定されるものではない。例えば、8つのバンクで構成されるDRAMであっても、同様に考えることができる。
また、本実施形態においては、データ転送制御装置100またはデータ転送制御装置400による1回のDMAで、DRAM72の4つのバンクに対する連続したアクセスを2回連続して行うバンクインターリーブでのアクセスを、DMAの1回の転送単位とする場合について説明したが、1回のDMAでアクセスするバンクの数は、本実施形態に示した構成に限定されるものではない。例えば、1回のDMAで1つのバンクへのアクセスを、DMAの1回の転送単位とすることもできる。
なお、本実施形態においては、静止画用カメラなどの画像処理装置を本発明のデータ処理装置とし、この画像処理装置に本発明のデータ転送制御装置を適用した場合について説明した。しかし、本実施形態のデータ転送制御装置を適用することができるデータ処理装置のシステムは、本発明を実施するための形態に限定されるものではなく、データバスに接続された処理ブロックが、同時に入力された複数のデータを処理して、バンクインターリーブによって1つのDRAMの異なるバンクに順次アクセスするデータ処理装置のシステムであれば、どのようなシステムにも同様にデータ転送制御装置を適用することができる。
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。