(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、モジュールコアのそれぞれに専用のDMACを設ける構成では、多くのDMACが存在することでチップ面積の増大を招いてしまう。
【0006】
また、DRAMに対するアクセスをマクロブロック単位で行うと、メモリアクセスの効率が低い。例えば8ビットYUV422の4×4画素のマクロブロックでは1ラインが8バイトしかないので、わずか8バイトの読み出しでDRAMのROWアドレスを切り替えなければならない。また、マクロブロックの1ラインずつ読み出し要求を発行すると、多くの要求発行によってバス帯域の消費が大きくなってしまう。これらの点は書き込みについても同様である。
【0007】
本発明は、DMACの個数抑制、バス帯域の効率化、等を実現可能な技術を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明の第1の態様に係る画像処理装置は、それぞれが所定の画像処理を実行するモジュールコアを含んだ複数の画像処理モジュール部と、前記複数の画像処理モジュール部が
直接接続されており前記複数の画像処理モジュール部によ
るメモリアクセスを調停するモジュールアービタ部と、前記モジュールアービタ部
に直接接続されているとともに、前記メモリアクセスの対象となるメモリが直接接続されているバス
に直接接続されており
、前記モジュールアービタ部による調停結果に
従って、前記メモリアクセス
に係るデータを前記メモリから前記バスを介して読み出して前記調停結果に係る画像処理モジュールに供給することと、前記メモリアクセスに係るデータを前記調停結果に係る画像処理モジュールから取得して前記メモリに前記バスを介して書き込むことと、のうちの少なくとも一方を実行するDMAC(Direct Memory Access controller)部とを含む。
【0009】
本発明の第2の態様に係る画像処理装置は、上記の第1の態様に係る画像処理装置であって、前記メモリアクセスは、前記モジュールコアで処理する入力画像データを、前記バスに接続された画像供給元メモリから読み出すための読み出し要求を含み、前記モジュールアービタ部は、前記複数の画像処理モジュール
部が発行する前記読み出し要求を調停する読み出しアービタを含み、前記DMAC部は、前記調停結果に従って前記入力画像データをバースト転送を利用して転送する読み出しDMACを含み、前記モジュールコアは、前記入力画像データを所定サイズの入力ブロック単位で受け付け、前記複数の画像処理モジュール
部のそれぞれは、前記画像供給元メモリから読み出したデータを格納するための読み出しバッファと、前記画像供給元メモリから前記読み出しバッファへのデータ転送を管理する読み出し管理部と、前記読み出しバッファ内の格納データを前記入力ブロック単位で前記モジュールコアへ供給するコア入力管理部とを有する、読み出しインターフェース回路を更に含み、前記読み出し管理部は、前記読み出しバッファに複数の入力ブロックが格納されるように前記入力画像データの読み出しを管理すると共に、前記入力画像データがバースト転送されるように前記画像供給元メモリ上の読み出し対象領域を所定の読み出し条件に従って決定する。
【0010】
本発明の第3の態様に係る画像処理装置は、上記の第2の態様に係る画像処理装置であって、前記入力画像データは、それぞれが画素ラインまたは画素ライン群に対応する複数の入力画像データ列を含み、前記入力ブロックは、前記複数の入力画像データ列のうちのN個(Nは2以上の整数)の入力画像データ列を対象にして設定され、前記読み出しバッファは、前記入力ブロックが設定された前記N個の入力画像データ列がそれぞれ入力されるN個の読み出しラインFIFO部を含み、前記所定の読み出し条件は、前記N個の入力画像データ列を循環的に選択する旨の循環選択条件と、入力画像データ列の先頭の側から順に前記読み出し対象領域を設定する旨の列内順序条件と、各入力画像データ列に対する前記読み出し対象領域の設定は、選択される度に1回とする旨の回数条件とを含む。
【0011】
本発明の第4の態様に係る画像処理装置は、上記の第2の態様に係る画像処理装置であって、前記入力画像データは、それぞれが画素ラインまたは画素ライン群に対応する複数の入力画像データ列を含み、前記入力ブロックは、前記複数の入力画像データ列のうちの1個の入力画像データ列を対象にして設定され、前記読み出しバッファは、前記入力ブロックが設定された前記1個の入力画像データ列が入力される1個の読み出しラインFIFO部を含み、前記所定の読み出し条件は、入力画像データ列の先頭の側から順に前記読み出し対象領域を設定する旨の列内順序条件を含む。
【0012】
本発明の第5の態様に係る画像処理装置は、上記の第2ないし第4の態様のうちのいずれか1つに係る画像処理装置であって、前記所定の読み出し条件は、前記読み出し対象領域の終了アドレスを前記画像供給元メモリのアドレスアライメント境界に合わせる旨の読み出しアライメント条件を含む。
【0013】
本発明の第6の態様に係る画像処理装置は、上記の第5の態様に係る画像処理装置であって、
前記入力画像データは、それぞれが画素ラインまたは画素ライン群に対応する複数の入力画像データ列を含み、前記所定の読み出し条件は、前記読み出し対象領域が前記入力画像データ列の始端を含む場合、前記読み出し対象領域のデータ量が前記バスのバス幅の倍数になるように前記読み出し対象領域の開始アドレスを設定する旨の読み出しサイズ条件を含む。
【0014】
本発明の第7の態様に係る画像処理装置は、上記の第6の態様に係る画像処理装置であって、前記所定の読み出し条件は、前記入力画像データ列中の未読み出し部分が1回のバースト転送で設定可能な最大転送量を超過している場合、且つ、その超過量が前記読み出しサイズ条件の下で設定された前記開始アドレスと前記入力画像データ列の先頭アドレスとの差分よりも大きい場合、前記読み出し対象領域の終了アドレスを前記バースト転送の前記最大転送量に合わせて設定する旨の第1の終了アドレス条件と、前記超過量が前記差分以下である場合、前記読み出し対象領域の前記終了アドレスを前記入力画像データ列の終端アドレスに設定する旨の第2の終了アドレス条件とを含む。
【0015】
本発明の第8の態様に係る画像処理装置は、上記の第2ないし第7の態様のうちのいずれか1つに係る画像処理装置であって、
前記入力画像データは、それぞれが画素ラインまたは画素ライン群に対応する複数の入力画像データ列を含み、前記所定の読み出し条件は、前記入力画像データ列中の未読み出し部分が
1回のバースト転送で設定可能な最大転送量以下である場合、前記読み出し対象領域の終了アドレスを前記入力画像データ列の終端アドレスに設定する旨の第3の終了アドレス条件を含む。
【0016】
本発明の第9の態様に係る画像処理装置は、上記の第2ないし第8の態様のうちのいずれか1つに係る画像処理装置であって、前記読み出しバッファは、
1回のバースト転送で設定可能な最大転送量の1倍よりも大きく且つ2倍よりも小さい容量を有した読み出しラインFIFO部を少なくとも1つ含み、前記読み出し管理部は、前記読み出しラインFIFO部内において前記モジュールコアに対する供給済みデータが前記最大転送量以上になった場合、前記供給済みデータに替えて前記画像供給元メモリから読み出した新しいデータを前記読み出しラインFIFO部に格納する。
【0017】
本発明の第10の態様に係る画像処理装置は、上記の第1ないし第9の態様のうちのいずれか1つに係る画像処理装置であって、前記メモリアクセスは、前記モジュールコアから出力されるコア出力データを、前記バスに接続された画像格納先メモリへ書き込むための書き込み要求を含み、前記モジュールアービタ部は、前記複数の画像処理モジュール
部が発行する前記書き込み要求を調停する書き込みアービタを含み、前記DMAC部は、前記調停結果に従って前記コア出力データをバースト転送を利用して転送する書き込みDMACを含み、前記複数の画像処理モジュール
部のそれぞれは、前記コア出力データを格納するための書き込みバッファと、前記コア出力データの前記書き込みバッファへの入力を管理するコア出力管理部と、前記書き込みバッファ内の格納データの前記画像格納先メモリへの転送を管理する書き込み管理部とを有する、書き込みインターフェース回路を更に含み、前記書き込みバッファは、1回のバースト転送で設定可能な最大転送量よりも大きい容量を有した書き込みラインFIFO(First In First Out)部を少なくとも1つ含み、前記書き込み管理部は、前記書き込みラインFIFO部ごとに、前記書き込みラインFIFO部内のデータのうちで前記バースト転送の対象にする書き込み対象データと、前記画像格納先メモリ上の書き込み先領域とを、所定の書き込み条件に従って決定する。
【0018】
本発明の第11の態様に係る画像処理装置は、上記の第10の態様に係る画像処理装置であって、前記所定の書き込み条件は、前記書き込み対象データを前記バースト転送の前記最大転送量に設定する旨の書き込みサイズ条件と、前記書き込み先領域を前記画像格納先メモリのアドレスアライメント境界に合わせる旨の書き込みアライメント条件とのうちの少なくとも一方を含む。
【0019】
本発明の第12の態様に係る画像処理装置は、上記の第10または第11の態様に係る画像処理装置であって、前記所定の書き込み条件は、前記モジュールコアから出力される出力画像の画素ラインまたは画素ライン群の終端に対応する前記コア出力データまでの範囲で以て前記書き込み対象データを区切ると共に、その区切られた範囲に対応して前記書き込み先領域を設定する旨のライン終端条件を含む。
【0020】
本発明の第13の態様に係る画像処理装置は、上記の第10ないし第12の態様のうちのいずれか1つに係る画像処理装置であって、前記書き込みラインFIFO部は、前記バースト転送の前記最大転送量の1倍よりも大きく且つ2倍よりも小さい容量を有し、前記書き込み管理部は、前記書き込みラインFIFO部内において前記画像格納先メモリに対する転送済みデータが前記最大転送量以上になった場合、前記転送済みデータに替えて新しいコア出力データを前記書き込みラインFIFO部に格納する。
【発明の効果】
【0021】
上記の第1ないし第13の態様によれば、複数の画像処理モジュール部がDMAC部を共用する。このため、画像処理モジュール部のそれぞれに対してDMACを設けた構成に比べて、DMAC部の数が削減される。それにより、チップ面積を削減可能である。その結果、装置の小型化、省電力化等を図ることができる。
【0022】
上記の第2ないし第13の態様によれば、複数回分の入力ブロックを事前にバッファに読み出しておき、且つ、その読み出しにバースト転送を利用する。したがって、モジュールコアで必要となる度に入力ブロックを読み出す構成に比べて、各画像処理モジュール部による読み出し要求の頻度を抑制可能である。それにより、バス帯域を効率良く利用できる。
【0023】
また、上記の第2ないし第13の態様によれば、各画像処理モジュール部による読み出し要求の頻度抑制に伴って、読み出しアービタに、既存のいわゆるバスアービタ(バスに接続され当該バスの使用権を調停するアービタ)で行われる帯域調整を行わせる必要性が低くなる。したがって、読み出しアービタにはバスアービタに比べて簡易なアルゴリズムを採用可能であり、その結果、読み出しアービタを小規模に構成可能である。
【0024】
上記の第3ないし第13の態様によれば、N個の入力画像データ列が部分的且つ並行的に読み出され、又、そのような読み出しがN個の入力画像データ列の先頭側から順に進行する。このため、一の入力画像データ列を先頭から終端まで読み出しその後に他の入力画像データ列の読み出しを開始する場合に比べて、モジュールコアへのデータ供給に遅延を生じにくい。すなわち、後者の場合、例えば最も先頭側に設定された入力ブロックをモジュールコアに供給するのに要する時間は、N個の入力画像データ列全体を読み出す時間にほぼ等しい。これに対し、上記の部分的且つ並行的な読み出しによれば、N個の入力画像データ列全体の読み出しを待たなくても、最も先端側の入力ブロックをモジュールコアに供給し終えることができる。また、上記の部分的且つ並行的な読み出しによれば、読み出しバッファの容量を小さくできる。
【0025】
上記の第5ないし第13の態様によれば、読み出し対象領域が画像供給元メモリのアドレスアライメント境界を跨ぐ場合に比べて、画像供給元メモリを効率良く動作させることが可能である。それにより、データ転送効率の向上、省電力化等に資する。
【0026】
上記の第6ないし第13の態様によれば、特に読み出し対象領域が入力画像データ列の始端を含む場合に、入力画像データにとって有意なデータを受信ビット列内において後ろ詰めにすることができる。換言すれば、読み出し対象領域の開始アドレスの調整は、不要なデータを受信ビット列中に含ませることになるが、そのような不要データを意図的に、受信ビット列の前方に配置することができる。したがって、バッファへ読み出した入力画像データ中に不要データが割り込むのを回避できる。このため、上記不要データの管理および除去が容易になる。具体的には、モジュールコアへのデータ供給の際、バッファの出力データのうちで読み出し開始アドレスの調整量に応じた先頭データを無視すれば済む。
【0027】
上記の第7ないし第13の態様によれば、1回の読み出し要求で以て、転送可能な最大データ量を確保可能である。このため、読み出し要求の回数増加が抑制されることで、データ転送を効率的に行うことができる。また、データ転送の効率化に伴って読み出し要求の頻度が抑制されるので、読み出しアービタの処理負荷を低減可能である。
【0028】
また、上記の第7ないし第13の態様によれば、入力画像データ列中の未読み出し部分がバースト転送の最大転送量を超過している場合、且つ、その超過量が上記読み出しサイズ条件の下で設定された開始アドレスと入力画像データ列の先頭アドレスとの差分以下である場合には、読み出し対象領域の終了アドレスを入力画像データ列の終端アドレスに設定する。これにより、各入力画像データ列について読み出し要求の回数が揃う。このため、かかる点からも、読み出し要求の頻度の抑制、読み出しアービタの処理負荷の低減を図ることができる。
【0029】
上記の第8ないし第13の態様によれば、入力画像データ列の終端側部分の読み出しについて、不要な転送動作を抑制できる。したがって、バス帯域を効率良く利用できる。
【0030】
上記の第9ないし第13の態様によれば、読み出しバッファの容量を小さくできる。それにより、チップ面積の削減、装置の小型化、省電力化等を図ることができる。
【0031】
上記の第10ないし第13の態様によれば、複数個の出力ブロックをバッファに蓄積しておき、且つ、それらを纏めて画像格納先メモリへバースト転送させる。したがって、モジュールコアから出力ブロックが出力される度にその出力ブロックを画像格納先メモリへ転送する構成に比べて、各画像処理モジュール部による書き込み要求の頻度を抑制可能である。それにより、バス帯域を効率良く利用できる。
【0032】
また、上記の第10ないし第13の態様によれば、各画像処理モジュール部による書き込み要求の頻度抑制に伴って、書き込みアービタに、既存のいわゆるバスアービタ(バスに接続され当該バスの使用権を調停するアービタ)で行われる帯域調整を行わせる必要性が低くなる。したがって、書き込みアービタにはバスアービタに比べて簡易なアルゴリズムを採用可能であり、その結果、書き込みアービタを小規模に構成可能である。
【0033】
上記の第11ないし第13の態様によれば、書き込みサイズ条件により、1回の書き込み要求で以て最大データ量を書き込み可能である。このため、データ転送を効率的に行うことができる。また、データ転送の効率化に伴って書き込み要求の頻度が抑制されるので、書き込みアービタの処理負荷を低減可能である。また、書き込みアライメント条件により、書き込み先領域が画像格納先メモリのアドレスアライメント境界を跨ぐ場合に比べて、画格納先メモリを効率良く動作させることが可能である。それにより、データ転送効率の向上、省電力化等に資する。
【0034】
上記の第12ないし第13の態様によれば、ライン終端側部分の書き込みについて、不要な転送動作を抑制できる。したがって、バス帯域を効率良く利用できる。
【0035】
上記の第13の態様によれば、書き込みバッファの容量を小さくできる。それにより、チップ面積の削減、装置の小型化、省電力化等を図ることができる。
【0036】
本発明の目的、特徴、局面、および利点は、以下の詳細な説明と添付図面とによって、より明白となる。
【発明を実施するための形態】
【0038】
<全体構成>
図1に、実施の形態に係る画像処理装置1のブロック図を例示する。
図1の例によれば、画像処理装置1は、複数の画像処理モジュール部2と、モジュールアービタ部3と、DMAC(Direct Memory Access Controller)部4と、バス10と、メモリ11と、CPU12とを含んでいる。なお、ここでは3つの画像処理モジュール部2を例示するが、この例に限定されるものではない。また、3つの処理モジュール部2を区別する場合、符号2a,2b,2cを用いることにする。かかる表記法は他の要素についても用いる場合がある。
【0039】
画像処理モジュール部2aは、モジュールコア5aと、読み出し用の画像処理インターフェース回路である読み出しインターフェース(I/F)回路6Raと、書き込み用の画像処理インターフェース回路である書き込みインターフェース(I/F)回路6Waとを含んでいる。同様に、画像処理モジュール部2b,2cは、モジュールコア5b,5cと、読み出しI/F回路6Rb,6Rcと、書き込みI/F回路6Wb,6Wcとをそれぞれ含んでいる。また、モジュールアービタ部3は、読み出しアービタ3Rと、書き込みアービタ3Wとを含んでいる。また、DMAC部4は、読み出しDMAC4Rと、書き込みDMAC4Wとを含んでいる。
【0040】
図1に示すように、モジュールコア5aは読み出しI/F回路6Raに接続され、同様にモジュールコア5b,5cは読み出しI/F回路6Rb,6Rcにそれぞれ接続されている。3つの読み出しI/F回路6Ra,6Rb,6Rcはいずれも読み出しアービタ3Rに接続されている。読み出しアービタ3Rは読み出しDMAC4Rに接続され、読み出しDMAC4Rはバス10に接続されている。
【0041】
また、モジュールコア5aは書き込みI/F回路6Waに接続され、同様にモジュールコア5b,5cは書き込みI/F回路6Wb,6Wcにそれぞれ接続されている。3つの書き込みI/F回路6Wa,6Wb,6Wcはいずれも書き込みアービタ3Wに接続されている。書き込みアービタ3Wは書き込みDMAC4Wに接続され、書き込みDMAC4Wはバス10に接続されている。
【0042】
すなわち、3つの画像処理モジュール部2a,2b,2cがモジュールアービタ部3に接続され、モジュールアービタ部3はDMAC部4に接続され、DMAC部4はバス10に接続されている。この場合、DMAC部4はモジュールアービタ部3とバス10との間に接続されている。
【0043】
モジュールコア5は、入力画像データに対して所定の画像処理(例えば圧縮、伸長、アフィン変換、各種補正等)を実行し、処理後のデータを出力画像データとして出力する。換言すれば、モジュールコア5は、所定の画像処理によって、入力画像データから出力画像データを生成する。
【0044】
モジュールコア5は、入力画像データを所定サイズの入力ブロック単位で受け付け、受け付けた入力ブロックに対して画像処理を実行し、処理済みデータをコア出力データとして出力する。なお、コア出力データを、入力ブロックに対応させて、出力ブロックとも称することにする。なお、入力ブロックは1つのデータ列で構成される場合もあれば、複数のデータ列の集合体として構成される場合もある。出力ブロックについても同様である。
【0045】
モジュールコア5a,5b,5cの画像処理内容は互いに異なっていてもよいし、あるいはモジュールコア5a,5b,5cのうちの2つ以上が同じ種類または同じ内容の画像処理を行うコアであってもよい。なお、モジュールコア5として、既存のモジュールコア、例えばいわゆるIP(Intellectual Property)コアとして提供されるモジュールコアを利用可能である。
【0046】
読み出しI/F回路6Rは、モジュールコア5で処理する入力画像データをメモリ11から読み出し、その入力画像データを入力ブロック単位でモジュールコア5へ供給するための読み出し処理を行う。また、書き込みI/F回路6Wは、モジュールコア5から出力ブロックを受け取り、それらの出力ブロックを出力画像データとしてメモリ11へ書き込むための書き込み処理を行う。
【0047】
モジュールアービタ部3は、画像処理モジュール部2a,2b,2cがメモリ11に対してアクセスするのを調停する。
【0048】
具体的には、読み出しアービタ3Rは、3つの読み出しI/F回路6Rから、メモリ11に対する読み出し要求を受け付け、それらを所定の調停方式に従って調停し、調停によって選択された読み出し要求を読み出しDMAC4Rへ引き渡す。なお、読み出し要求には、メモリ11上の読み出し対象領域を特定するための情報が付随する。
【0049】
また、書き込みアービタ3Wは、3つの書き込みI/F回路6Wから、メモリ11に対する書き込み要求を受け付け、それらを所定の調停方式に従って調停し、調停によって選択された書き込み要求を書き込みDMAC4Wへ引き渡す。なお、書き込み要求には、書き込み対象データと、メモリ11上の書き込み先領域を特定するための情報とが付随する。
【0050】
以下では、読み出し対象領域を開始アドレスおよび終了アドレスで特定する場合を例示し、書き込み先領域についても同様に例示する。但し、この例に限定されるものではない。例えば開始アドレスおよびその領域長さによって、読み出し対象領域および書き込み先領域を特定することも可能である。
【0051】
アービタ3R,3Wによる調停方式として、ここでは、ラウンドロビン方式を例示する。ラウンドロビン方式では、画像処理モジュール部2a,2b,2cのメモリアクセス要求(RQa,RQb,RQcと表記することにする)間に複数種類の優先順位付けが予め準備される。そして、いずれか1つの優先順位付けに基づいて調停を行ったならば、使用する優先順位付けを切り替える。
【0052】
より具体的には、例えば(i)RQa>RQb>RQc、(ii)RQb>RQc>RQa、(iii)RQc>RQa>RQbという3種類の優先順位付けが予め準備される。なお、例えばRQa>RQbはRQaの方がRQbよりも優先順位が高いことを表すものとする。上記(i)の優先順位付けが有効である状態において、RQa,RQcが競合したとする。この場合、上記(i)に従って、優先順位の高いRQaが選択される。そして、選択されたRQaが最下位に規定されている優先順位付け、すなわち上記(ii)が次の調停において有効とされる。
【0053】
アービタ3R,3Wに他の調停方式を採用してもよい。但し、ラウンドロビン方式は簡易なアルゴリズムの一例であり、そのためアービタ3R,3Wを小規模に構成可能である。
【0054】
DMAC部4は、モジュールアービタ部3による調停結果に係るメモリアクセスを実行する。
【0055】
具体的には、読み出しDMAC4Rは、所定のバス仕様(換言すればバスプロトコル)に準拠したバスインターフェース(I/F)を有している。読み出しDMAC4Rは、当該バスI/Fを、読み出しアービタ3Rから引き渡された読み出し要求に従って制御する。それにより、読み出し要求で指定された、メモリ11の読み出し対象領域から、データが読み出される。読み出しDMAC4Rは、読み出したデータを、その読み出し要求を発行した読み出しI/F回路6Rへ転送する。
【0056】
また、書き込みDMAC4Wも同様にバスI/Fを有しており、書き込みDMAC4Wは当該バスI/Fを、書き込みアービタ3Wから引き渡された書き込み要求に従って制御する。より具体的には、書き込みDMAC4Wは、書き込み要求に係る書き込み対象データが、書き込み要求で指定された書き込み先領域に格納されるように、バスI/Fを制御する。
【0057】
ここでは、説明のため、DMAC4R,4WのバスI/FがAXI(Advanced eXtensible Interface)に準拠している場合を例示する。但し、この例に限定されるものではない。AXIによれば、バースト転送が可能である。AXIの転送制御情報は、バースト長、バーストサイズ、等を含む。具体的には、バースト長は1回のバースト転送で行うデータ転送の回数であり、仕様上は基本的に1〜16回のいずれかを設定可能である。また、バーストサイズは1回のバースト転送中の各データ転送における最大転送量であり、仕様上は1,2,4,8,16,32,64,128バイトのいずれかを設定可能である。
【0058】
バス10は例えば、データバス、アドレスバス、制御バス等を含んでいる。ここではデータバスが128ビット幅である場合を例示する。この場合、設定可能な最大バーストサイズは16バイト(128ビット)である。なお、AXIではバスをチャネルと称する場合がある。
【0059】
メモリ11は、画像処理モジュール部2へ入力する画像データ、画像処理モジュール部2から出力された画像データ、等を格納する。このため、メモリ11は、入力画像データを供給する画像供給元メモリとして機能すると共に、出力画像データを格納する画像格納先メモリとしても機能する。なお、画像供給元メモリと画像格納先メモリとを別々の部品で構成してもよい。
【0060】
ここでは、メモリ11がDRAM(Dynamic Random Access Memory)である場合を例示し、以下ではメモリ11をDRAM11とも称する。また、DRAM11が32バイトでアラインされている場合、換言すればDRAM11が32バイト境界を有する場合を例示する。但し、これらの例に限定されるものではない。
【0061】
CPU12は、画像処理装置1の全体的な制御を行う。例えば、CPU12は、画像処理モジュール部2に対して、画像処理の実行の指示、および、その実行に必要な情報の提供を行う。
【0062】
なお、バス10に、他のモジュール、例えば外部接続用(外部記憶媒体用、表示装置用等)のインターフェースを提供するモジュールが接続されていてもよい。
【0063】
また、画像処理装置1は1チップに集積された画像集積回路として提供可能であるが、その例に限定されるものではない。また、画像処理装置1は種々に変形可能である。例えば、CPU12を画像処理装置1内から省き、外部のCPUを画像処理装置1に接続するように変形可能である。また、CPU12の替わりにあるいはCPU12と共に、メモリ11とバス10の一方または両方を画像処理装置1内から省いてもよい。
【0064】
画像処理装置1によれば、3つの画像処理モジュール部2a,2b,2cがDMAC部4を共用する。このため、画像処理モジュール部2a,2b,2cのそれぞれに対してDMAC部4を設けた構成に比べて、DMAC部4の数が削減される。それにより、チップ面積を削減可能である。その結果、装置の小型化、省電力化等を図ることができる。
【0065】
<画像等の説明>
画像処理装置1をより具体的に例示する前に、画像等を説明する。
図2には四角形の画像Gを例示しており、説明を分かりやすくするために当該四角形の直交する2辺を水平方向(換言すれば横方向)Hおよび垂直方向(換言すれば縦方向)Vにそれぞれ対応させている。画像Gは
図2の例とは違えて縦長であってもよい。なお、画像Gの水平方向HがDRAM11のROWライン方向に対応するものとする。
【0066】
図2に示すように、画像Gは画素PXの集合体として把握される。
図2では、画素PXが水平方向Hおよび垂直方向Vのいずれにも整列している。すなわち、マトリクス状に画素PXが配置されている。
【0067】
ここで、水平方向Hに並んだ画素PXの群を画素ラインPLと称することにする。この場合、画像Gにおいて、それぞれの画素ラインPLは水平方向Hに延在しており、複数の画素ラインPLが垂直方向Vに並んでいる。また、画像Gにおいて、画素ラインPLは同じ長さを有し(すなわち画素数が同じ)を有し、画素ラインPLの始端(ここでは左端とする)の位置が揃っており、終端(ここでは右端とする)の位置も揃っている。
【0068】
図3および
図4に示すように、画像Gに対して、画素PXの群であるマクロブロックMBが設定される。ここでは、
図4の例では、マクロブロックMBが水平方向Hに連続する8画素×垂直方向Vに連続する8画素で構成されている。但し、マクロブロックMBのサイズはこの例に限定されるものではない。例えばH.264では、16×16、16×8、8×16、8×4、4×8、4×4からマクロブロックサイズを選択可能である。
【0069】
図3に示すように、マクロブロックMBは、画像Gの左上隅を起点(換言すれば原点)にして互いに隣接するように設定される。これにより、画像Gに対してマトリクス状にマクロブロックMBが設定される。
【0070】
ここで、マクロブロックMB内において水平方向Hに並んだ画素PXの群、換言すれば画素ラインPLのうちでマクロブロックMB内に存在する部分を、ブロック内画素ラインML(
図4参照)と称することにする。また、水平方向Hに並んだマクロブロックMBの群をブロックラインBL(
図3参照)と称することにする。
【0071】
なお、説明を簡単にするため、画像Gの幅(水平方向Hに沿ったサイズ)および高さ(垂直方向Vに沿ったサイズ)は、マクロブロックMBのそれらの倍数である場合を例示する。すなわち、マクロブロックMBが幅8画素×高さ8画素のサイズを有するとの例示において、画像Gの水平方向Hおよび垂直方向Vの画素数はいずれも8の倍数であるとする。
【0072】
なお、水平方向Hと垂直方向Vの一方または両方において画像Gの画素数が8の倍数でない場合、画像GをマクロブロックMB単位で分割すると、マクロブロックMBのサイズに満たない小画像が生じる。そのような小画像は、例えば、ダミーデータのパディングによってマクロブロックMBのサイズに拡大して画像処理に供される。
【0073】
上記のように画像Gが画素PXの集合体として把握される場合、画像Gのデータは画素PXごとの画像データ(すなわち画素データ)の集合体として管理可能である。
【0074】
これに対し、画素データが他の所定形式のデータに変換され、そのような変換後のデータによって画像データが構成される場合がある。例えば圧縮処理が施された画像データが挙げられる。
【0075】
圧縮処理は画素に対して(換言すれば画素データに対して)設定されたマクロブロックMB単位で行われ、各マクロブロックMBについてストリームデータ(換言すればシーケンシャルデータ)が生成される。このため、圧縮等が施された画像データは、そのようなストリームデータの集合体として把握され、例えば
図3において各マクロブロックMBをストリームデータに見立てた構成として把握される。
【0076】
ここで、画像データが画素データで構成されている場合、水平方向Hに並んだ画素データから成るデータ列は、1本の画素ラインPLに対応する。また、画像データが所定のストリームデータで構成されている場合、水平方向Hに並んだストリームデータから成るデータ列は、所定本数(マクロブロックMBに含まれていた本数)の画素ラインPL、すなわち画素ラインPLの群に対応する。
【0077】
<複数ラインモードと1ラインモード>
ここで、モジュールコア5の入力ブロックがマクロブロックMBである場合、すなわち入力ブロックが複数の画素ラインPLに対して設定されることにより複数のデータ列(それぞれが画素ラインPLに対応する)を含む場合を、複数ラインモードと称することにする。
【0078】
一方、モジュールコア5の入力ブロックが所定のストリームデータである場合、すなわち入力ブロックが1つのデータ列で構成される場合を、1ラインモードと称することにする。
【0079】
モジュールコア5の出力ブロックについても同様に、複数ラインモードおよび1ラインモードが定義される。
【0080】
以下に読み出しI/F回路6Rおよび書き込みI/F回路6Wの具体例を説明するが、主に、モジュールコア5の入力と出力の両方が複数ラインモードである場合を例に挙げる。例えば画素値の補正、画像のリサイズ等の処理がこれにあたる。入力が複数ラインモードであり且つ出力が1ラインモードの場合(例えば圧縮処理)と、入力が1ラインモードであり且つ出力が複数ラインモードの場合(例えば伸長処理)についても、以下の説明から十分に理解される。
【0081】
<読み出しI/F回路6R>
図5に、読み出しI/F回路6Rのブロック図を例示する。
図5の例によれば、読み出しI/F回路6Rは、コア側入出力部100と、読み出しバッファ110と、読み出し管理部130と、コア入力管理部150とを含んでいる。
【0082】
<コア側入力部100>
コア側入出力部100は、読み出しI/F回路6Rの動作クロックが読み出しアービタ3Rのそれと同期している一方、モジュールコア5の動作クロックとは非同期であるとの例に応じて、設けられている。このため、読み出しI/F回路6Rの動作クロックがモジュールコア5のそれと同期している場合には、コア側入出力部100は省略可能である。図
5の例によれば、コア側入出力部100は、入力用の非同期FIFO(First In First Out)部101と、出力用の非同期FIFO部102とを含んでいる。
【0083】
<読み出しバッファ110>
読み出しバッファ110は、DRAM11から読み出したデータを一時的に格納するのに利用される。
図6の例では、読み出しバッファ110は8個の読み出しラインFIFO部111を有している。8個の読み出しラインFIFO部111は、マクロブロックMB(すなわち入力ブロック)が設定された8本の画素ラインPLにそれぞれ割り当てられている。具体的には、i=0〜7として、マクロブロックMB内で上から数えて第i番目の画素ラインPLのデータは、第i番目の読み出しラインFIFO部111に格納される。
【0084】
ここで、ラインFIFO部111の個数は、マクロブロックMBが設定される画素ラインPLの本数と同数またはそれ以上である。例えば16個のラインFIFO部111を設ければ、最大16本の画素ラインPLに対応可能であり、そのうちの所定の8個のラインFIFO部111を使って例えば8本の画素ラインPL分のマクロブロックMBに対応可能である。また、1ラインモードの場合も同様である。
【0085】
各ラインFIFO部111は、32個の格納領域112を有している。ラインFIFO部111の1個あたりの格納領域112の個数は、1回のバースト転送で設定可能なデータ転送の最大回数(AXIでは16回)のZ倍に選定されている。ここではZ=2であるが、これに限定されるものではない(後述する)。
【0086】
また、1個の格納領域112の容量は、基本的には、データバス幅(換言すれば、ハードウェア設計上、設定可能な最大バーストサイズ)と同じ16バイト(128ビット)に選定されている。この場合、1つのラインFIFO部111は最大で、バースト転送2回分のデータを格納可能である。なお、後述の例では、1個の格納領域112の容量が132ビット(=128ビット+4ビット)に拡張される。
【0087】
ここで、8ビットYUV422の場合、8画素分の画像データ量、すなわちブロック内画素ラインML分の1本分の画像データ量は、16バイトである。したがって、1個の格納領域112にブロック内画素ラインMLの1本分のデータを格納可能であり、8個の格納領域112(第0〜7番目のラインFIFO部111のそれぞれにおいて1個の格納領域112を使用)に、マクロブロックMBの1個分のデータを格納可能である。つまり、読み出しバッファ110の全体で32個のマクロブロックMBのデータを格納可能である。
【0088】
ここでは、読み出しバッファ110が2つのSRAM(Static Random Access Memory)113,114で構成される場合、すなわちダブルバッファ構成を採用する場合を例示する。但し、読み出しバッファ110を1つのSRAMまたは3つ以上のSRAMで構成することも可能であるし、又、SRAM以外のメモリを利用することも可能である。
【0089】
SRAM113,114の1つのアドレスに1つの格納領域112が割り当てられており、このため1つのアドレスに16バイトのデータを格納可能である。1アドレス分のデータは一括で読み書きされる。この場合、SRAM113,114のワード長は16バイトである。
【0090】
また、各ラインFIFO部111は、SRAM113中の16個の格納領域112(これらのアドレスは連続している)と、SRAM114中の16個の格納領域112(SRAM113中の上記16個の格納領域112と同じアドレスが用意されている)とによって、構成されている。SRAM113中の上記16個の格納領域112に対する書き込みはアドレスが小さい方から順番に且つ循環的に行われ、読み出しも同様である。これによりFIFOが実現される。SRAM114中の上記16個の格納領域112についても同様である。
【0091】
SRAM113に対するアクセスと、SRAM114に対するアクセスとは、独立に実行可能である。このため、例えば、SRAM113,114のうちの一方のSRAMに対して書き込みを行いつつ、他方のSRAMに対して読み出しを行うことが可能である。なお、同じSRAMに対してアクセスが衝突した場合、例えば書き込みを優先させ読み出しを1サイクル待たせればよい。
【0092】
図7には、SRAM113,114を交互に切り替えながらデータを書き込む例を示している。すなわち、0番目のデータD0をSRAM113に書き込み、1番目のデータD1をSRAM114に書き込み、2番目のデータD2をSRAM113に書き込み、3番目のデータD3をSRAM114に書き込む。これによれば、例えば、SRAM114にデータD1を書き込みつつ、SRAM113からデータD0を読み出すことが可能である。
【0093】
もちろん、SRAM113の16個の格納領域112に連続的に書き込み、その後、書き込み先をSRAM114に切り替えることも可能である。
【0094】
<読み出し管理部130>
読み出し管理部130は、DRAM11メモリから読み出しバッファ110へのデータ転送を管理する。
図5の例によれば、読み出し管理部130は、アドレス変換部131と、同期FIFO部132,133と、終了判定部134とを含んでいる。
【0095】
アドレス変換部131は、入力画像データの読み出しに必要な情報(以下、読み出し基本情報と称する)をモジュールコア5から非同期FIFO部101を介して取得する。読み出し基本情報は、例えば、DRAM11において入力画像データが格納されている領域の開始アドレスおよび終了アドレス、マクロブロックMB(すなわちモジュールコア5の入力ブロック)のサイズ、画像水平方向HにおけるマクロブロックMBの個数、等である。
【0096】
アドレス変換部131は、取得した読み出し基本情報に基づいて、DRAM11上の読み出し対象領域(より具体的には、その領域の開始アドレスおよび終了アドレス)を決定する。この際、読み出し対象領域は、入力画像データが読み出しバッファ110へバースト転送されるように、所定の読み出し条件に従って決定される。その決定手法については後に詳述する。
【0097】
アドレス変換部131は、読み出し対象領域の開始アドレスおよび終了アドレスを、読み出し要求と共に、読み出しアービタ3Rへ入力する。その後、読み出しDMAC4Rが、読み出しアービタ3Rを介して取得した、読み出し対象領域の開始アドレスおよび終了アドレスに基づいて、その読み出し対象領域のデータをDRAM11から読み出しアービタ3Rを介して読み出しバッファ110へ、バースト転送する。
【0098】
また、アドレス変換部131は、各回の読み出し要求について、読み出しバッファ110に対する書き込み制御を発行する。かかる書き込み制御は、同期FIFO部132に入力され、対応する読み出し要求に係るデータを読み出しバッファ110に格納する際に利用される。これにより、例えばマクロブロックMB内の第i番目の画素ラインPLのデータを、対応する第i番目のラインFIFO部111に格納することが可能になる。
【0099】
また、アドレス変換部131は、各回の読み出し要求について、読み出し対象領域のデータサイズを、同期FIFO部133へ入力する。かかるデータサイズは、終了判定部134において、各回の読み出し要求に係る読み出しの終了を検出するのに利用される。具体的には、終了判定部134は、DRAM11から読み出しアービタ3Rを介して読み出しバッファ110へ入力されるデータのバイト数をカウントしており、そのカウント値が同期FIFO部133に入力されたデータサイズと一致したことを以て、所望の読み出し対象領域の読み出しが終了したと判断し、その通知を読み出しアービタ3Rへ入力する。
【0100】
また、アドレス変換部131が、決定した読み出し対象領域の終了アドレスが入力画像データの終了アドレスに到達したと判断した場合、その判断結果を同期FIFO部133へ入力する。終了判定部134は、その判断結果を同期FIFO部133から取得したことを以て、入力画像データ全体について読み出しが終了することを知り、その通知を読み出しアービタ3Rへ入力する。
【0101】
<コア入力管理部150>
コア入力管理部150は、読み出しバッファ110内の格納データを入力ブロック単位(ここではマクロブロック単位)で、モジュールコア5へ供給する。
図5の例によれば、コア入力管理部150は、アドレス計算部151と、フォーマット変換部152とを含んでいる。
【0102】
アドレス計算部151は、モジュールコア5から上記読み出し基本情報を取得し、当該基本情報に基づいて読み出しバッファ110からのデータ読み出しを制御する。具体的には、第0番目〜第7番目のラインFIFO部111を循環的に選択しつつ、選択したラインFIFO部111からブロック内画素ラインMLの1個分のバイト数のデータが読み出されるように、読み出しバッファ110内のアドレスを指定する。
【0103】
ラインFIFO部111の各格納領域112は、基本的には、読み出し操作が1回行われれば、その格納データを破棄または上書きすることが可能になる。但し、所望のデータが2つの格納領域112に跨る場合があり、そのような場合に備える必要がある。具体的には、所望データの後ろ側部分を格納している格納領域112は、まだ読み出されていないデータの一部も一緒に保持している可能性がある。このため、例えば、格納領域112内のデータのうちで読み出し済みの部分だけを削除するようにすればよい。
【0104】
フォーマット変換部152は、読み出しバッファ110から読み出したデータを、モジュールコア5の入力に適した所定のフォーマットに変換する。例えば、読み出しバッファ110から出力される128ビットのデータを所定のビット幅に切り分ける処理が行われる。フォーマット変換部152からの出力データが、非同期FIFO部102を介してモジュールコア5へ供給される。
【0105】
<読み出しI/F回路6Rによる効果>
読み出しI/F回路6Rによれば、複数回分の入力ブロックを事前に読み出しバッファ110に読み出しておき、それらの入力ブロックを順次、モジュールコア5へ供給する。しかも、入力ブロックの読み出しにバースト転送が利用されるように、DRAM11の読み出し対象領域を決定する。したがって、モジュールコア5で必要となる度に入力ブロックを読み出す構成に比べて、各画像処理モジュール部2による読み出し要求の頻度を抑制可能である。それにより、バス帯域を効率良く利用できる。
【0106】
また、各画像処理モジュール部2による読み出し要求の頻度抑制に伴って、読み出しアービタ3Rに、既存のいわゆるバスアービタ(バスに接続され当該バスの使用権を調停するアービタ)で行われる帯域調整を行わせる必要性が低くなる。したがって、読み出しアービタ3Rにはバスアービタに比べて簡易なアルゴリズムを採用可能であり、その結果、読み出しアービタ3Rを小規模に構成可能である。
【0107】
<読み出しI/F回路6Rによるデータの読み出し>
図8に、読み出しI/F回路6RがDRAM11からデータを読み出す様子を模式的に示す。
図8および
図9に例示するように、読み出しI/F回路6Rは、マクロブロックMBの群であるブロックラインBLを対象にして、読み出しを行う。
【0108】
具体的には、ブロックラインBL中の各画素ラインPLを始端(ここでは左端)から終端(ここでは右端)へ向けて、バースト転送を繰り返す。特に、
図8に対応する
図9に示すように、上から数えて第0番目の画素ラインPLの始端からバースト転送を行い、次は第1番目の画素ラインPLの始端からバースト転送を行う。その後、第2番目〜第7番目の画素ラインPLを順番に選択し、各画素ラインPLの始端からバースト転送する。そして、第0番目の画素ラインPLに戻り、読み出しが済んでいない部分の先頭からバースト転送を行う。次に、第1番目の画素ラインPLのうちで読み出しが済んでいない部分の先頭からバースト転送を行う。以下同様にして、ブロックラインBL全体について読み出しを行う。
【0109】
なお、
図8では3回のバースト転送によって1本の画素ラインPL分の画素データの読み出しが完了する場合を例示しているが、この例に限定されるものではない。
【0110】
この際、1回のバースト転送は、基本的に、設定可能な最大の転送量に設定される。画像処理装置1の場合、16バイト(128ビット)のバーストサイズおよび16回のバースト長で以て、最大256バイトのデータ転送が可能である。
【0111】
各回のバースト転送の対象、すなわちDRAM11における読み出し対象領域は、上記のように読み出し管理部130(より具体的にはアドレス変換部131)によって設定される。この際、読み出し管理部130は、次のような読み出し条件に従うことによって、
図8および
図9に例示した読み出しを行う。
【0112】
すなわち、ブロックラインBL内の8本の画素ラインPLに対応する8個の入力画像データ列を循環的に選択する旨の条件(循環選択条件)と、上記入力画像データ列の先頭の側から順に読み出し対象領域を設定する旨の条件(列内順序条件)と、各入力画像データ列に対する読み出し対象領域の設定は、選択される度に1回とする旨の条件(回数条件)とに従って、読み出し管理部130は読み出し対象領域を順次、決定していく。
【0113】
図8および
図9に例示した読み出し手法によれば、8本の画素ラインPLに対応する8個の入力画像データ列が部分的且つ並行的に読み出され、又、そのような読み出しが8個の入力画像データ列の先頭側から順に進行する。
【0114】
このため、一の画素ラインPLを先頭から終端まで読み出しその後に他の画素ラインPLの読み出しを開始する場合に比べて、モジュールコア5へのデータ供給に遅延を生じにくい。すなわち、後者の場合、例えば最も先頭側に設定されたマクロブロックMBをモジュールコア5に供給するのに要する時間は、8本の画素ラインPL全体、すなわちブロックラインBL全体を読み出す時間にほぼ等しい。
【0115】
これに対し、
図8および
図9の示した部分的且つ並行的な読み出しによれば、8本の画素ラインPL全体の読み出しを待たなくても、最も先端側のマクロブロックMBをモジュールコア5に供給し終えることができる。
【0116】
また、そのような部分的且つ並行的な読み出しによれば、読み出しバッファ110の容量を小さくできる。
【0117】
ここで、読み出し対象領域の設定に際し、DRAM11のアドレスアライメントに配慮するのが好ましい。DRAM11の動作を効率化できるからである。この点に関する読み出し条件として、読み出し対象領域の終了アドレスをDRAM11のアドレスアライメント境界(ここでは32バイト境界)に合わせる旨の条件(読み出しアライメント条件)が採用される。
【0118】
かかる読み出しアライメント条件によれば、或る開始アドレスが与えられた場合、終了アドレスは{(開始アドレス&
〜0x1f)+255バイト}によって算出可能である。
【0119】
読み出しアライメント条件の採用により、読み出し対象領域がDRAM11のアドレスアライメント境界を跨ぐ場合に比べて、DRAM11を効率良く動作させることが可能である。それにより、データ転送効率の向上、省電力化等に資する。
【0120】
ところで、読み出しアライメント条件によって読み出し対象領域の終了アドレスを調整すると、
図10に示すように画素ラインPLの最初のバースト転送および最後のバースト転送では、読み出し対象領域が256バイトよりも短くなる場合がある。そのような場合は、例えば、読み出しDMAC4Rによってバースト長の設定が調整される。
【0121】
また、読み出し対象領域が短くなった結果、読み出し対象領域がバス幅(ここでは128ビット)の倍数にならない場合が生じうる。読み出しI/F回路6Rはバス10からバス幅単位でデータを受信する点に鑑みると、読み出し対象領域がバス幅の倍数でない場合、
図11に示すように、読み出し対象領域として意図していない不要データも一緒にバス10から拾うことになる。特にそのような不要データは受信ビット列の末端部分に含まれることになるので、そのまま読み出しバッファ110へ入力すると、
図11に示すように、次の読み出し対象領域のデータとの間に不要データが割り込むことになる。コア入力管理部150(より具体的にはアドレス計算部151)がそのような不要データをモジュールコア5へ供給しないようにすればよいが、そのためには不要データの位置とサイズを管理する必要があり煩雑である。
【0122】
そこで、読み出し管理部130は、読み出し対象領域が画素ラインPLの始端を含む場合、読み出し対象領域のデータ量がバス幅の倍数になるように読み出し対象領域の開始アドレスを設定する旨の条件(読み出しサイズ条件)を利用する。これによれば、
図12に示すように、不要データを受信ビット列内において前詰めすることができる。換言すれば、入力画像データにとって有意なデータを受信ビット列内において後ろ詰めにすることができる。すなわち、読み出し対象領域の開始アドレスの調整は、不要なデータを受信ビット列中に含ませることになるが、そのような不要データを意図的に、受信ビット列の前方に配置することができる。
【0123】
したがって、
図12に示すように、1本の画素ラインPLに対応するデータ列中に不要データが割り込むのを回避できる。このため、不要データの管理および除去が容易になる。具体的には、コア入力管理部150が、各画素ラインPLに対応するデータ列のうちで、読み出し開始アドレスの調整量に応じた先頭データを無視すれば済む。なお、上記調整量は、読み出しアライメント条件に従って上記の
〜0x1fによってマスクされた量、換言すれば読み出しアライメント条件を適用する前の開始アドレスの下位5ビットで与えられる。
【0124】
より具体的には、ラインFIFO部111の格納領域112に、読み出したデータを格納するための128ビットの前に、読み出し開始アドレスの調整量を格納するための4ビットを設ける。コア入力管理部150では、アドレス計算部151またはフォーマット変換部152が、各格納領域112の先頭4ビットを参照することで、不要データの有無と、不要データのサイズ(すなわち、続く128ビットのうちでモジュールコア5へ供給しないデータ量)とを判別可能である。
【0125】
なお、
図12に示すように、画素ラインPLの終端側においても、読み出し対象領域が短くなった結果、読み出し対象領域がバス幅の倍数にならない場合が生じうる。但し、画素ラインPLの終端側については、受信ビット列の末端部分に不要データが存在しても特に問題にならない。なぜならば、例えばモジュールコア5への供給データ量が画素ラインPLの1本分に到達した段階で、その格納領域112から出力される後続ビットは無視すればよく、その結果、不要データを自動的に除去することが可能になるからである。
【0126】
次に、読み出し対象領域の終了アドレスの設定に関連した条件(終了アドレス条件)を説明する。読み出し対象領域の終了アドレスは、基本的には、開始アドレス+255バイトに設定される。但し、上記のように、読み出しアライメント条件の下では、DRAM11のアドレスアライメント境界に配慮して、終了アドレスは{(開始アドレス&
〜0x1f)+255バイト}で与えられる。
【0127】
また、画素ラインPL中の未読み出し部分がバースト転送の最大転送量(ここでは256バイト)以下である場合、読み出し対象領域の終了アドレスを画素ラインPLの終端アドレスに設定する。すなわち、
図8および
図9では画素ラインPLの最後の読み出し対象領域も上記最大転送量に相当する例を図示しているが、特に最後の読み出し対象領域が上記最大転送量よりも小さい場合には、その読み出し対象領域のサイズに合わせて終了アドレスを設定すればよい。これによれば、画素ラインPLの終端側部分の読み出しについて、不要な転送動作を抑制できる。したがって、バス帯域を効率良く利用できる。
【0128】
これに対し、画素ラインPLの未読み出し部分が1回のバースト転送で設定可能な最大転送量よりも大きい場合であっても、読み出し対象領域の終了アドレスを画素ラインPLの終端アドレスに設定するのが好ましい場合がある。具体的には、
図10に示すように、画素ラインPLの最後の読み出し対象領域が小さい場合、その小さい領域を読み出すために読み出し要求を発行するのは効率が悪い。特に、そのような小さい領域が多く存在する場合には、効率低下は大きくなる。
【0129】
そこで、画素ラインPL中の未読み出し部分が1回のバースト転送で設定可能な最大転送量を超過している場合、且つ、その超過量が上記読み出しサイズ条件の下で設定された開始アドレスと画素ラインPLの先頭アドレスとの差分よりも大きい場合には、上記の基本的な終了アドレス条件と同様に、読み出し対象領域の終了アドレスを上記最大転送量に合わせて設定する。なお、上記差分は、読み出しアライメント条件下における開始アドレスの上記調整量にあたる。
【0130】
これによれば、1回の読み出し要求で以て、転送可能な最大データ量を確保可能である。このため、読み出し要求の回数増加が抑制されることで、データ転送を効率的に行うことができる。また、データ転送の効率化に伴って読み出し要求の頻度が抑制されるので、読み出しアービタの処理負荷を低減可能である。
【0131】
これに対し、上記超過量が上記差分以下である場合、読み出し対象領域の終了アドレスを画素ラインPLの終端アドレスに設定する。これによれば、
図13に示すように、上記のような小さい領域が生じるのを回避できる。また、この場合、バースト転送可能な最大データ量に加え、上記の小さい領域のデータも、1回の読み出し要求で以て確保可能である。また、
図13に示すように、各画素ラインPLについて読み出し要求の回数が揃うことになる。その結果、読み出し要求の回数増加が抑制されることで、データ転送を効率的に行うことができる。また、データ転送の効率化に伴って読み出し要求の頻度が抑制されるので、読み出しアービタの処理負荷を低減可能である。
【0132】
なお、上記超過量が上記差分以下である場合の終了アドレス条件によれば、1回のバースト転送で設定可能なデータ量を超えて、読み出し要求を行うことになる。このような場合でも、読み出しDMAC4Rによって2回以上のバースト転送に分割される。一方、読み出したデータを格納するためには、ラインFIFO部111において17個以上の格納領域112が受け入れ可能になっている必要がある。このため、かかる終了アドレス条件は、ラインFIFO部111の空き具合の確認と共に、利用すればよい。
【0133】
<書き込みI/F回路6W>
図14に、書き込みI/F回路6Wのブロック図を例示する。
図14の例によれば、書き込みI/F回路6Wは、コア側入出力部200と、書き込みバッファ210と、書き込み管理部230と、コア出力管理部250とを含んでいる。
【0134】
<コア側入力部200>
コア側入出力部200は、読み出しI/F回路6Rのコア側入出力部100(
図5参照)と同様の目的で設けられている。
図14の例によれば、コア側入出力部200は、入力用に非同期FIFO部201,202および非同期パルス部203を含んでいる。
【0135】
<書き込みバッファ210>
書き込みバッファ210は、モジュールコア5から出力されるコア出力データ(換言すれば出力ブロック)を一時的に格納するのに利用される。ここでは書き込みバッファ210が、読み出しI/F回路6Rの読み出しバッファ110と同様に、8個の書き込みラインFIFO部が2つのSRAMで構成されている場合を例示する。この場合、読み出しバッファ110と同様に、8個の書き込みラインFIFO部は、出力ブロックに含まれる8本の画素ラインPLにそれぞれ割り当てられている。
【0136】
ここでは、出力ブロックに含まれる画素ラインPLの本数が、入力ブロックが設定される画素ラインPLの本数と同じである場合を例示するが、例えばモジュールコア5が画像を垂直方向Vに縮小するリサイズ処理を行う場合、出力ブロックに対応する画素ラインPLの本数は、入力ブロックに対応する画素ラインPLの本数よりも少ない。逆に、画像を垂直方向Vに拡大するリサイズ処理では、出力ブロックに対応する画素ラインPLの本数は、入力ブロックに対応する画素ラインPLの本数よりも多い。
【0137】
<コア出力管理部250>
コア出力管理部250は、コア出力データの書き込みバッファ210への入力を管理する。
図14の例によれば、コア出力管理部250は、アドレス計算部251と、フォーマット変換部252とを含んでいる。
【0138】
コア出力データは、モジュールコア5から非同期FIFO部202を介してフォーマット変換部252へ入力される。フォーマット変換部252は、所定のフォーマットで構成されたコア出力データを、書き込みバッファ210の入力に適したフォーマットに変換する。例えば、コア出力データのビット列を、書き込みバッファ210の1ワード(128ビット)単位に変換する。
【0139】
アドレス計算部251は、フォーマット変換部252の出力データを書き込みバッファ210のどのアドレスに格納するのかについて制御する。具体的には、アドレス計算部251は、出力画像データをDRAM11へ書き込むために必要な情報(以下、書き込み基本情報と称する)をモジュールコア5から非同期FIFO部201を介して取得する。書き込み基本情報は、例えば、DRAM11において出力画像データの格納先領域の開始アドレスおよび終了アドレス、モジュールコア5の出力ブロック(換言すれば出力側におけるマクロブロックMB)のサイズ、画像水平方向Hにおける出力ブロックの個数、等である。
【0140】
なお、画像水平方向Hにおける出力ブロックの個数の情報は画素ラインPLの終端位置の指標となるが、例えばモジュールコア5が、画素ラインPLの終端のデータを出力する際に、その通知を非同期パルス部203を介してアドレス計算部251へ出力してもよい。
【0141】
<書き込み管理部230>
書き込み管理部230は、書き込みバッファ210内の格納データのDRAM11への転送を管理する。
図14の例によれば、書き込み管理部230は、アドレス変換部231と、同期FIFO部232,233と、終了判定部234とを含んでいる。
【0142】
アドレス変換部231は、モジュールコア5から上記書き込み基本情報を取得する。上記のように、画像水平方向Hにおける出力ブロックの個数の情報の代わりに、例えばモジュールコア5が画素ラインPLの終端のデータを出力する際に発行する通知を、非同期パルス部203を介して取得してもよい。
【0143】
そして、アドレス変換部231は、取得した基本情報に基づいて、書き込みバッファ210からのデータ読み出しを制御する。具体的には、アドレス変換部231は、
図15に示すように書き込みラインFIFO部に格納された各回の出力ブロックのデータを、
図16に示すようにバースト転送のために纏める。また、アドレス変換部231は、そのように纏められた書き込み対象データの格納先である、DRAM11上の書き込み先領域の開始アドレスおよび終了アドレスを設定する。
【0144】
書き込み対象データおよび書き込み先領域は、書き込み要求と共に、書き込みアービタ3Wへ入力される。その後、書き込みDMAC4Wが、書き込みアービタ3Wを介して取得した書き込み先領域へ、書き込み対象データをバースト転送する。
【0145】
書き込み管理部23
0は、書き込み対象データおよび書き込み先領域を、書き込みラインFIFO部ごとに決定し、その決定は所定の書き込み条件に従って行われる。書き込み条件については後述する。
【0146】
また、アドレス変換部231は、各回の書き込み要求について、書き込みバッファ210に対する読み出し制御を発行する。かかる読み出し制御は、同期FIFO部232に入力され、書き込み対象データを書き込みバッファ210から取り出す際に利用される。
【0147】
また、アドレス変換部231は、各回の書き込み要求について、書き込み先領域のデータサイズを、同期FIFO部233へ入力する。かかるデータサイズは、終了判定部234において、各回の書き込み要求に係る書き込みの終了を検出するのに利用される。具体的には、終了判定部234は、書き込みバッファ210から書き込みアービタ3Wを介してDRAM11へ転送されるデータのバイト数をカウントしており、そのカウント値が同期FIFO部233に入力されたデータサイズと一致したことを以て、所望の書き込み対象データの書き込みが終了したと判断し、その通知を書き込みアービタ3Wへ入力する。
【0148】
また、アドレス変換部231が、出力画像データの全てのデータについて書き込み要求を発行したと判断した場合、その判断結果を同期FIFO部233へ入力する。終了判定部234は、その判断結果を同期FIFO部233から取得したことを以て、出力画像データ全体について書き込みが終了することを知り、その通知を書き込みアービタ3Wへ入力する。
【0149】
<書き込みI/F回路6Wによる効果>
書き込みI/F回路6Wによれば、複数個の出力ブロックを書き込みバッファ210に蓄積しておき、且つ、それらを纏めてDRAM11へバースト転送させる。したがって、モジュールコア5から出力ブロックが出力される度にその出力ブロックをDRAM11へ転送する構成に比べて、各画像処理モジュール部2による書き込み要求の頻度を抑制可能である。それにより、バス帯域を効率良く利用できる。
【0150】
また、各画像処理モジュール部2による書き込み要求の頻度抑制に伴って、書き込みアービタ3Wに、既存のいわゆるバスアービタで行われる帯域調整を行わせる必要性が低くなる。したがって、書き込みアービタ3Wにはバスアービタに比べて簡易なアルゴリズムを採用可能であり、その結果、書き込みアービタ3Wを小規模に構成可能である。
【0151】
<書き込みI/F回路6Wによるデータの書き込み>
書き込みI/F回路6Wでは、書き込みラインFIFO部ごとに未書き込みデータ(DRAM11への書き込みが済んでいないデータ)の蓄積量が所定閾値を超えたか否かを監視し、未書き込みデータの蓄積量が所定閾値を超えた時点で、その未書き込みデータを書き込み対象データに選定して書き込み要求を発行する。
【0152】
上記所定閾値は、基本的には、1回のバースト転送で設定可能な最大転送量である。すなわち、書き込み対象データを上記最大転送量に設定する旨の条件(書き込みサイズ条件)が適用される。かかる書き込みサイズ条件によれば、データ転送を効率的に行うことができる。また、データ転送の効率化に伴って書き込み要求の頻度が抑制されるので、書き込みアービタ3Wの処理負荷を低減可能である。
【0153】
但し、未書き込みデータが、モジュールコア5から出力される出力画像において画素ラインの終端に到達した場合には、その終端に対応するコア出力データまでの範囲で以て書き込み対象データを区切り、その区切られた範囲(換言すれば、その書き込み対象データのサイズ)に応じた書き込み先領域を設定するのが好ましい(ライン終端条件)。これによれば、ライン終端側部分の書き込みについて、不要な転送動作を抑制できる。したがって、バス帯域を効率良く利用できる。
【0154】
また、読み出しI/F回路6Rと同様に、DRAM11のアドレスアライメントに配慮するのが好ましい。具体的には、DRAM11中の書き込み先領域をDRAM11のアドレスアライメント境界に合わせる旨の条件(書き込みアライメント条件)が採用される。書き込みアライメント条件によれば、書き込み先領域がDRAM11のアドレスアライメント境界を跨ぐ場合に比べて、DRAM11を効率良く動作させることが可能である。それにより、データ転送効率の向上、省電力化等に資する。
【0155】
<変形例1>
さて、上記では、各ラインFIFO部111において、格納領域112の個数が、1回のバースト転送で設定可能なデータ転送の最大回数(AXIでは16回)の2倍である場合を例示した。しかし、この例に限定されるものではない。
【0156】
具体的には、各ラインFIFO部111の格納領域112の個数は、1回のバースト転送で設定可能なデータ転送の最大回数(AXIでは16回)の1倍よりも多く且つ2倍よりも少なくてもよい。なお、この場合、各ラインFIFO部111の容量は、1回のバースト転送で設定可能な最大転送量の1倍よりも大きく且つ2倍よりも小さい。
【0157】
そのような設計であっても、各ラインFIFO部111内において、モジュールコア5に対する供給済みデータがバースト転送の上記最大転送量以上になったことを以て、その供給済みデータに替えてDRAM11から読み出した新しいデータをラインFIFO部111に格納すればよい。この例によれば、読み出しバッファ110の容量を小さくできる。その結果、チップ面積の削減、装置の小型化、省電力化等を図ることができる。
【0158】
かかる変形は書き込みバッファ210に対しても適用可能である。
【0159】
<変形例2>
上記では、マクロブロックMBが8本の画素ラインPLに対して設定され、読み出しバッファ110が8個のラインFIFO部111で構成され、バースト長が16回である場合を例示した。これに対し、例えばマクロブロックMBが16本の画素ラインPLに対応する場合、各ラインFIFO部111を2分割して利用することにより、16個のラインFIFO部111を用意することが可能である。但し、この場合、バースト長は最大8回に制限される。このような手法によれば、読み出しバッファ110の容量を増加させることなく、各種サイズのマクロブロックMBに柔軟に対応することができる。
【0160】
かかる変形は書き込みバッファ210に対しても適用可能である。
【0161】
<変形例3>
上記では1つの画像データを処理対象とする場合を例示した。これに対し、複数の画像データを切り替えながら並列的に処理することも可能である。例えば、Y、U、Vの成分ごとの画像データを切り替えながら、画像上で同じ位置に設定された共通のマクロブロックMBを並列的に処理する例が挙げられる。
【0162】
<変形例4>
本発明は詳細に説明されたが、上記した説明は、すべての局面において、例示であって、本発明がそれに限定されるものではない。例示されていない無数の変形例が、本発明の範囲から外れることなく想定され得るものと解される。