以下、図面を用いて本発明の実施形態を説明する。但し、本発明の技術的範囲はこれらの実施形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
図1は、一実施形態におけるメモリコントローラの例を示している。例えば、メモリコントローラは、DRAM等の半導体メモリに読み出しアクセスもしくは書き込みアクセスするために、アクセスコスト計算部、メモリマップ選択部、パラメータ変換部およびアクセス制御部を有している。アクセスコスト計算部は、DRAMにアクセスするために必要なアクセス情報を受ける。アクセス情報は、メモリコントローラに供給されるアクセス要求AREQに含まれる。アクセスコスト計算部は、読み出しアクセスおよび書き込みアクセスの少なくともいずれかに必要なサイクル数をアクセスコストとして複数のメモリマップMAP(この例では、MAP1−3)毎に計算する。アクセスコスト計算部は、メモリマップMAP毎に求めたアクセスコストACSTを出力する。
メモリマップ選択部は、メモリマップMAP1−3の中からアクセスコストが最も低いメモリマップMAPを選択する。パラメータ変換部は、メモリマップ選択部が選択したメモリマップMAPに基づいて、アクセスアドレスを変換し、アクセスパラメータAPRMの一部として出力する。アクセスアドレスは、メモリコントローラに供給されるアクセス要求AREQに含まれる。例えば、パラメータ変換部は、過去のフレームに対して計算されたアクセスコストに基づいて選択されたメモリマップMAPを使用して、現在のフレームデータをアクセスするためにアクセスアドレスを変換する。あるいは、パラメータ変換部は、将来発生するフレームに対して予め計算されたアクセスコストに基づいて選択されたメモリマップMAPを使用して、対応するフレームデータをアクセスするためにアクセスアドレスを変換する。
アクセス制御部は、変換されたアクセスアドレスに基づいてDRAMにアクセスするための制御信号CNTを生成する。制御信号CNTは、コマンドCOM、バンクアドレスBA、ロウアドレスRA、コラムアドレスCAなどのDRAMにアクセス動作(リード動作またはライト動作)を実行させるための情報を含む。DRAMは、リードアクセスされるとき、リードデータをデータ端子DQから出力する。DRAMは、ライトアクセスされるとき、ライトデータをデータ端子DQで受ける。
以上より、ライトデータは、最もアクセス効率が高いメモリマップを用いてDRAMに書き込むことができる。リードデータも、最もアクセス効率が高いメモリマップを用いてDRAMから読み出すことができる。このように、アクセスコストの低いメモリマップを用いてDRAMにアクセスすることで、DRAMのアクセス効率を向上できる。
図2は、別の実施形態における画像処理システムSYSの例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。例えば、図2に示した画像処理システムSYSは、デジタルビデオカメラの一部を示している。なお、画像処理システムSYSは、画像データの符号化機能および画像データの復号機能の少なくともいずれかを実現するために、携帯電話、デジタルスチルカメラ、ビデオレコーダ、ビデオプレーヤなどに適用されてもよい。ここで、画像データは、1フレーム(1画面)を表示するためのデータ、または1フレーム内に含まれる複数のマクロブロックのデータを示す。動画像は、複数フレームの画像データを順次に再生することで生成される。
画像処理システムSYSは、例えば、メモリコントローラ100、動画像処理部200、カメラモジュール300、DRAM400および蓄積部500を有する。メモリコントローラ100は、調停部10、アクセスコスト計算部12、アクセスコスト保存メモリ14、メモリマップ選択部16、メモリマップ保存メモリ18、パラメータ変換部20、アクセス制御部22、入力切替部24、出力切替部28および書き込みバッファ26を有する。
動画像処理部200は、符号化処理回路210および復号処理回路240を有する。符号化処理回路210は、カメラモジュール300で撮影されDRAM400に保持されている画像データを、マクロブロック単位でDRAM400のデータ端子DQからリードデータRDD0として読み出す。符号化処理回路210は、H.264やMPEG−2(Moving Picture Experts Group-2)などの圧縮符号化規格にしたがって圧縮符号化処理を行い、ビットストリームを生成する。符号化処理回路210は、1マクロブロックの圧縮符号化が完了したら、次のマクロブロックの画像データをDRAM400から読み出し、圧縮符号化を行う。以降、符号化処理回路210は、フレームに含まれるすべてのマクロブロックに対して圧縮符号化を行う。生成されたビットストリームは、ライトデータWRD0として入力切替部24を介してDRAM400に書き込まれる。なお、ビットストリームは、蓄積部500に書き込まれてもよい。入力切替部24は、調停部10が調停信号ARBS0を出力しているときに、ライトデータWRD0を選択し、書き込みバッファ26に出力する。入力切替部24は、調停部10が調停信号ARBS1を出力しているときに、ライトデータWRD1を選択し、書き込みバッファ26に出力する。
動画像処理部200は、1マクロブロックの圧縮符号化処理毎に、メモリコントローラ100に複数のアクセス要求AREQ0を出力する。例えば、圧縮符号化対象フレームのマクロブロックの読み出しのためのリードアクセスが行われ、図12に示す動き補償部226、動き検出部228が使用する参照画像のリードアクセスが行われる。また、デブロッキングフィルタ部222が出力する再構成画像のライトアクセスが行われる。動画像処理部200は、1フレームの画像データの処理を開始するときに、メモリコントローラ100にフレーム同期信号SYSCを出力する。
カメラモジュール300は、動画像を撮影する撮像素子を含む。カメラモジュール300は、撮影した動画像のデータWRD1をDRAM400に書き込むために入力切替部24に出力する。また、カメラモジュール300は、DRAM400内の画像データRDD1を出力切替部28を介して受け、液晶ディスプレイLCD等の表示デバイスに表示する。蓄積部500は、DVDメディアやブルーレイメディアなどの記録ディスクと、ディスクドライブ装置を含む。あるいは、蓄積部500は、ハードディスクドライブ装置またはフラッシュメモリである。復号処理回路240は、DRAM400あるいは蓄積部500内のビットストリームを復号し、画像データを生成する。
メモリコントローラ100は、動画像処理部200およびカメラモジュール300からのアクセス要求AREQ0−1に応じてDRAM400にアクセスするためのアクセス制御信号CNTを生成する。アクセス要求AREQ0は、リードライト種別RW0、アクセス座標XY0、アクセスサイズSIZE0(横方向サイズXSIZEおよび縦方向サイズYSIZE)、アクセスフレーム番号FNO0を含む。アクセス要求AREQ1は、リードライト種別RW1、アクセス座標XY1、アクセスサイズSIZE1(横方向サイズXSIZEおよび縦方向サイズYSIZE)、アクセスフレーム番号FNO1を含む。
アクセス要求AREQ0を受けた調停部10は、アクセス要求AREQ0の受け付けを示す調停信号ARBS0を動画像処理部200に出力する。但し、調停部10は、カメラモジュール300からのアクセス要求AREQ1に応答する処理を実施しているとき、調停信号ARBS0の出力を、アクセス要求AREQ1に応答する処理が完了するまで保留する。同様に、アクセス要求AREQ1を受けた調停部10は、アクセス要求AREQ1の受け付けを示す調停信号ARBS1をカメラモジュール300に出力する。但し、調停部10は、動画像処理部200からのアクセス要求AREQ0に応答する処理を実施しているとき、調停信号ARBS1の出力を、アクセス要求AREQ0に応答する処理が完了するまで保留する。調停部10は、アクセス要求AREQ0またはAREQ1に含まれる情報をアクセスパラメータAPRM0としてアクセスコスト計算部12およびパラメータ変換部20に出力する。
パラメータ変換部20は、アクセスパラメータAPRM0に含まれるアクセスフレーム番号FNO(FNO0またはFNO1)に対応するメモリマップを示すマップ情報MINFをメモリマップ保存メモリ18から読み出す。パラメータ変換部20は、アクセスパラメータAPRM0に含まれるアクセス座標XY(XY0またはXY1)を、読み出したマップ情報MINFに対応するアクセス座標XY’に変換する。パラメータ変換部20は、変換したアクセス座標XY’をアクセスサイズSIZE(SIZE0またはSIZE1)およびアクセスフレーム番号FNOとともにアクセスパラメータAPRM1としてアクセス制御部22に出力する。これにより、DRAM400は、動画像処理部200およびカメラモジュール300から出力されるアクセス座標XYではなく、パラメータ変換部20により変換されたアクセス座標XY’を用いてアクセスされる。
アクセス制御部22は、パラメータ変換部20からのアクセス座標XY’、リードライト種別RW(RW0またはRW1)、アクセスサイズSIZE0(またはSIZE1)およびアクセスフレーム番号FNO0(またはFNO1)基づいて、アクセス制御信号CNTをDRAM400に出力する。制御信号CNTは、コマンドCOM、バンクアドレスBA、ロウアドレスRA、コラムアドレスCAなどのDRAM400にアクセス動作(ライト動作またはリード動作)を実行させるための情報を含む。
アクセスパラメータARRM1に含まれるリードライト種別RWがリード動作を示す場合、DRAM400内のアクセスフレーム番号FNOに対応する領域から画像データが読み出される。例えば、画像データは、矩形アクセスによりアクセス座標XY’とアクセスサイズSIZE0(またはSIZE1)で指定される矩形領域が読み出され、あるいは、水平アクセスによりフレーム単位で読み出される。読み出された画像データは、リードデータRDDとして出力切替部28に供給される。出力切替部28は、アクセス要求AREQ0に対応してリードデータRDD0を動画像処理部200に出力し、アクセス要求AREQ1に対応してリードデータRDD1をカメラモジュール300に出力する。
一方、アクセスパラメータARRM1に含まれるリードライト種別RWがライト動作を示す場合、書き込みバッファ26は、入力切替部24を介して受けるライトデータWRD(WRD0またはWRD1)を一時保存する。書き込みバッファ26は、保存している書き込みデータWRDを複数の書き込みアクセス毎に生成される制御信号CNTに同期して、ライトデータWRDとしてDRAM400のデータ端子DQに出力する。ライトデータWRDは、次に読み出されるまでにDRAM400に書き込まれていればよい。このため、書き込みバッファ26によりDRAM400への書き込みアクセス頻度を下げることで、アクセス効率が向上する。
一般に、DRAM400等の画像メモリを使用する画像処理システムでは、フレームメモリとしても動作する画像メモリの転送レートは、画面表示動作に必要な表示装置への書き込みレートよりも速く設定される。これにより、水平アクセスにより画像メモリから読み出された画像データを画面に表示している間に、矩形アクセスにより新しいフレームデータを読み書きできる。したがって、フレームデータの作成とフレームデータの出力とをとぎれることなく行うことができる。このように、実際の画像処理システムでは水平アクセスと矩形アクセスとは混在する。
アクセスコスト計算部12は、アクセス要求AREQのパラメータに含まれる矩形アクセス領域のアクセス座標XYとアクセスサイズSIZEを受ける。アクセスコスト計算部12は、予め設定されている複数のメモリマップMAPj(例えば、j=1、2、3、4;図8から図11に示すMAP1−4)をそれぞれ用いて、DRAM400にアクセスしたときのアクセスコストを計算する。具体的には、アクセスコスト計算部12は、1フレームを符号化処理、または、復号処理するために必要なデータをDRAM400から読み出すときに必要なアクセスコスト、および書き込むときに必要なアクセスコストの合計値Nj(j=1、2、3、4)を、メモリマップMAP1−4毎に計算する。
特に限定されないが、アクセスコストは、DRAM400のアクセスに必要なクロックサイクル数である。例えば、アクセスコストは、アクティブコマンドの回数やリード/ライトコマンドの回数に基づいて計算してもよい。アクセスコスト計算部12は、メモリマップMAP1−4毎に計算したアクセスコストの合計値N1−4を、フレーム番号FNOに対応させてアクセスコスト保存メモリ14に書き込む。アクセスコスト計算部12の具体的な動作の例は、図19から図21で説明する。
メモリマップ選択部16は、フレーム番号FNO0に対応してアクセスコスト保存メモリ14に保持されているアクセスコストの合計値N1−4を読み出す。メモリマップ選択部16は、合計値N1−4に基づいて最小のアクセスコストが得られるメモリマップMAP(MAP1−4のいずれか)を示すマップ情報MINFを、次に処理を行うフレームのメモリマップMAPとして、メモリマップ保存メモリ18に書き込む。
なお、この実施形態では、アクセスコスト計算部12は、処理対象のフレームのアクセスパラメータAPRM0に基づいてアクセスコストを計算する。このため、求められたアクセスコストに基づいて選択されたメモリマップMAPは、処理対象のフレームのアクセスには使用されない。選択されたメモリマップMAPは、将来の処理対象のフレームのアクセスに使用される。換言すれば、アクセスコスト計算部12は、過去の処理フレームに対してアクセスコストを計算する。そのために、メモリマップ選択部16は、選択したメモリマップMAPを将来の処理対象のフレーム番号に対応させてメモリマップ保存メモリ18に書き込む。
図3は、図2に示したDRAM400の内部構成の例を示している。例えば、DRAM400は、クロックに同期して動作するSDRAMであり、半導体基板上に集積回路が形成された大容量且つ高速の半導体メモリである。DRAM400は、システムLSI等に搭載されるマクロ(IP)として設計されてもよく、パッケージに封入された半導体メモリ装置として設計されてもよい。DRAM400は、複数のバンクBK(図3では4つのバンクBK0−3)を有している。各バンクBK0−3は、複数のブロックBLKを有し、各ブロックBLKは複数のワード線WLとビット線BLとその交差位置に配置されたメモリセルMCとを有する。メモリセルMCは、ワード線WLにゲートが接続されたMOSトランジスタと、MOSトランジスタに接続されたキャパシタとを有する。
図3の例では、4つのバンクBK0−3はバンクアドレスBA(BA0−BA3)に対応付けられる。ワード線WLはロウアドレスRA(RA0−RA7)に対応付けられ、ビット線BLはコラムアドレスCA(CA0−CA127)に対応付けられる。バンクアドレスBAによりバンクBK0−3のいずれかが選択される。ロウアドレスRAにより、選択されたバンクBK内のワード線WLのいずれかが選択される。コラムアドレスCAにより、選択されたバンクBK内のビット線が選択される。
バンクアドレスBA、ロウアドレスRA、コラムアドレスCAにより、1回のリードコマンドまたは1回のライトコマンドにより、4バイトBY0−3のデータがアクセスされる。1バイトは8ビットであるので、1回のアクセスで4バイト、つまり4×8=32ビットのデータが、DRAM400のデータ入出力端子DQに関連付けられて、読み出され、あるいは書き込まれる。すなわち、この例では、DRAM400のデータ端子DQは32ビットである。
図2に示した画像処理システムSYSにおける表示画像データは、フレーム毎にDRAM400内に記憶される。表示画像データは、各画素の輝度信号Yと色差信号Cb、Crや、各画素のRGB階調信号などのデータで構成され、各信号は例えば8ビット(1バイト)のデータを含む。このように、1画素の情報量が1バイト(8ビット)のとき、一度のアクセスで4画素のデータを入力または出力できる。これにより、DRAM400に対する帯域幅を大きくすることができる。ここで、帯域幅は、単位時間に読み出し、もしくは書き込みできる画素数を意味する
図3に示すメモリマップでは、バンクアドレスBAとロウアドレスRAにより特定されるページ領域PAGEが行列状に配置される。そして、1つのページ領域PAGEは、コラムアドレスCA0−127で特定される128個のメモリ単位領域を有する。各メモリ単位領域は4バイトBY0−3のデータを記憶する。この4バイトBY0−3のデータが、DRAM400の32ビットのデータ入出力端子DQ0−7、DQ8−15、DQ16−23、DQ24−31を経由して入力または出力される。各バイトの8ビットデータは画素の信号データに対応する。
図3に示したメモリマップは、複数のバンクBKを有するDRAM400などの画像メモリを高速動作させるのに適している。DRAM400は、バンクアドレスBAとロウアドレスRAとともに与えられるアクティブコマンドACTに応答して、選択されたバンクBK内の選択されたワード線WLを駆動する。そして、DRAM400は、メモリセルMC内のデータをビット線BL上に読み出し、ビット線BLに対応付けられたセンスアンプを活性化してビット線電位を増幅するアクティブ動作を行う。その後、コラムアドレスCAと共に与えられるリードコマンドに応答して、選択されたビット線BLからデータを読み出すリード動作を行う。あるいは、DRAMは、アクティブ動作後に、コラムアドレスCAとライトデータと共に与えられるライトコマンドに応答して、選択されたビット線BLにライトデータを書き込むライト動作を行う。リード動作またはライト動作の後にプリチャージコマンドによるプリチャージ動作が行われ、再度、アクティブ動作、リード動作またはライト動作が行われる。このように、DRAM400では、各バンクが独立してアクティブ動作、リード動作、ライト動作を行うことができる。
図3のメモリマップによれば、上下左右に隣接するページ領域PAGEには異なるバンクアドレスBA0−3が対応付けられる。すなわち、メモリマップの奇数行にはバンクアドレスBA0−1が交互に配置され、偶数行にはバンクアドレスBA2−3が交互に配置される。さらに、メモリマップのラスタ方向(行方向;図の横方向)に、ロウアドレスRA0−7が2つずつ繰り返しながらインクリメントされる。メモリマップの各行は、4つのロウアドレスRA0−3、RA4−7で折り返されている。
このようにフレーム画像上のページ領域PAGEは、DRAM400上において、同一バンクBKのページ領域PGAEがロウ方向とコラム方向のいずれにも隣接しないように割り当てられる。このようなメモリマッピングを採用することで、水平アクセスでは、2つのバンクBKで同時にアクティブ動作とリード動作またはライト動作とを実行させながらアクセスすることができ、アクセス効率を高めることができる。ここで、水平アクセスは、DRAM400等の画像メモリへの代表的なアクセスであり、ページ領域PAGEを行方向に移動して選択するアクセスである。また、垂直方向にアクセスする場合も同様にアクセス効率を高めることができる。なお、図3から図7に示すメモリマップは、DRAM400の動作を分かりやすく説明するための一例であり、実施形態の動作を説明する図8−11に示すメモリマップとは異なる。
図4は、図3に示したDRAM400の水平アクセスの例を示している。水平アクセスは、映像のフレーム画像の入力時および出力時に多く発生するアクセスであり、画像を左上から右下に向けて水平方向(図4の横方向)にアクセスするラスタスキャンに相当する。水平アクセスでは、水平方向にスキャンされるので、隣接するバンクを同時にアクティブさせながら効率的にメモリアクセスを行うことができる。
例えば、図4に黒い太枠で示したメモリ領域のアクセスは、いずれもコラムアドレスCAで選択されるメモリ単位領域(4バイト領域)の境界を越えるアクセスである。前述したとおり、バンクアドレスBAとロウアドレスRAで特定されるページ領域PAGE内は、コラムアドレスCA0−127で選択される複数のメモリ単位領域に区分され、1つのコラムアドレスCAにより4バイトBY0−3のデータが同時にアクセスされる。そのため、水平アクセスでは比較的無駄なくアクセスが行われる。
具体的には、黒い太枠で示したメモリ領域をアクセスする場合、まず、メモリコントローラ100は、ページ領域BA2/RA5を指定するアクティブコマンドACTを発行する。次に、メモリコントローラ100は、4つのリードコマンドRDをコラムアドレスCA0−3とともに発行する。そして、コラムアドレスCA0−3にそれぞれ対応する4バイトデータBY0−3が連続して入力または出力される。この場合、黒い太枠で示したメモリ領域は、コラムアドレスCA0のバイトBY2−3からコラムアドレスCA3のバイトBY0−1までを含む。このため、コラムアドレスCA0に対応する4バイトの入出力データDQのうち、バイトBY0−1のデータは必要ない。コラムアドレスCA3に対応する4バイトの入出力データDQのうち、バイトBY2−3のデータも必要ない。よって、有効出力データは、12バイト/16バイトである。
図5は、図3に示したDRAM400の矩形アクセスの例を示している。矩形アクセスは、MPEG2やH.264などの画像の符号化処理と復号処理で多く発生するアクセスで、任意の縦横比の矩形領域内を左上から右下に向けてアクセスする動作に相当する。矩形領域は、MPEG2やH.264の動きベクトル検出対象のマクロブロック領域や参照領域などに対応する。
例えば、図5に黒い太枠で示した矩形領域は、いずれもコラムアドレスCAで選択されるメモリ単位領域(4バイト領域)の境界に沿っている。黒い太枠で示したメモリ領域をアクセスする場合、まず、メモリコントローラ100は、ページ領域BA2/RA5を指定するアクティブコマンドACTを発行する。次に、メモリコントローラ100は、4つのリードコマンドRDをコラムアドレスCA6、7、10、11とともに発行する。そして、コラムアドレスCA6、7、10、11にそれぞれ対応する4バイトデータBY0−3が連続して入力または出力される。図5では、アクセスした領域のデータが全て入力または出力されるため、有効出力データは、16バイト/16バイトである。
このように、矩形アクセスでは、アクセスされる矩形領域の位置を、単一のバンクBKを越えないように設定し、更にバンクBK内のページ領域PAGEを超えないようにすることで、効率的なメモリアクセスを行うことができる。これは、バンクアドレスBAとロウアドレスRAとを指定する1回のアクティブ動作で矩形領域内のデータをアクセスできるためである。
図6は、図3に示したDRAM400の矩形アクセスの別の例を示している。例えば、図6に黒い太枠で示した矩形領域のアクセスは、いずれもコラムアドレスCAで選択されるメモリ単位領域(4バイト領域)の境界を越えるアクセスである。黒い太枠で示したメモリ領域をアクセスする場合、まず、メモリコントローラ100は、ページ領域BA2/RA5を指定するアクティブコマンドACTを発行する。次に、メモリコントローラ100は、6つのリードコマンドRDをコラムアドレスCA0、1、4、5、8、9とともに発行する。そして、コラムアドレスCA0、1、4、5、8、9にそれぞれ対応する4バイトデータBY0−3が連続して入力または出力される。
しかし、黒い太枠で示した矩形領域は、コラムアドレスCAで選択されるメモリ単位領域(4バイト領域)の境界と一致せず、且つ4バイト領域の境界を越えている。このため、各4バイトデータBY0−3のうちの半分は必要のないデータである。つまり、有効出力データは、12バイト/24バイトである。図6は、1つのページ領域PAGEを矩形アクセスするときのワーストケースを示している。
このように、同じバイト数のデータであっても、矩形アクセスと水平アクセスでは、アクセス効率が異なる場合がある。具体的には、図6の矩形アクセスでは、6回のリードコマンドRDにより24バイトのデータを入力または出力する必要がある。これに対して、図4の水平アクセスでは、4回のリードコマンドRDにより16バイトのデータを入力または出力すれば良い。したがって、1つのコラムアドレスCAで選択される4バイト領域(メモリ単位領域)の境界を越える矩形領域のアクセスでは、実効的な帯域幅が低下する。
図7は、図5に示したDRAMの矩形アクセスの別の例を示している。矩形アクセスは、任意の矩形領域に対するアクセスであるため、矩形領域が隣接するページ領域PAGEの境界を越える場合がある。例えば、図7に黒い太枠で示した矩形領域のアクセスでは、矩形領域は4つの隣接するページ領域BA3/RA2、BA2/RA3、BA1/RA6、BA0/RA7にまたがる16バイト領域である。
黒い太枠で示したメモリ領域をアクセスする場合、まず、メモリコントローラ100は、ページ領域BA3/RA2、BA2/RA3、BA1/RA6、BA0/RA7についての4回のアクティブコマンドACTを発行する。次に、メモリコントローラ100は、コラムアドレスCA127(BA3)、CA124(BA2)、CA3(BA1)、CA0(BA0)についての4回のリードコマンドRDを発行する。そして、コラムアドレスCA127、124、3、0にそれぞれ対応する4バイトデータBY0−3が連続して入力または出力される。このように、アクセスする矩形領域が隣接するページ領域PAGEを含む場合、異なるバンクBKをアクティブ動作させるために、複数回のアクティブコマンドACTを発行しなければならない。よって、単位時間当たりにアクセスできるデータ量が減り、実効的な帯域幅が狭くなる。
なお、図7に黒い太枠で示した矩形領域が、コラムアドレスCAで選択されるメモリ単位領域(4バイト領域)の途中で区画される場合、図6に示したように、4バイトデータBY0−3の少なくともいずれかは不要なデータになる。この場合、より一層、実効的な帯域の低下を招く。このように、バンクBKをまたぐ矩形アクセスや、矩形領域がデータの入出力単位であるメモリ単位領域をまたぐ矩形アクセスは、画像メモリのアクセス効率の低下を招く。この実施形態では、現状の矩形アクセスを分析し、その後の矩形アクセスにおいて、アクセス効率が低下しないようなメモリマップを選択し、選択したメモリマップにしたがって画像データをDRAM400に書き込む。これにより、画像処理システムSYSにおけるDRAM400のアクセス効率を向上できる。
図8は、図2に示したメモリマップ選択部16により選択されるメモリマップの例を示している。図中に太枠で示すメモリマップMAP1は、1画面を表示するための1フレームの画素データを保持する領域を示し、かつ各画素に割り当てられるアドレスとの関係を示している。図8に示すメモリマップMAP1では、例えば、バンクアドレスBA2およびロウアドレスRA495で指定されるページPAGEには、フレームのx座標が0から63、y座標が1072から1087までの画素データが保持される。さらに、このページPAGEのコラムアドレスCA240で指定される領域には、x座標が0から3、y座標が1087で指定される4バイトBY0−3の画素データが保持される。図8中の小さい斜線枠は、アクセス座標XY0((X、Y)=(62、16))、アクセスサイズSIZE((XSIZE、YSIZE)=(8、2))のアクセス領域の例を示す。この場合、左右に隣接するページPAGEをまたぐアクセスとなる。
図9は、図2に示したメモリマップ選択部16により選択されるメモリマップの別の例を示している。図中に太枠で示すメモリマップMAP2は、1フレームの画素データを保持する領域を示し、かつ各画素に割り当てられるアドレスとの関係を示している。図9に示すメモリマップMAP2は、メモリマップMAP1と比較して、各画素の格納位置がx方向に+32ずれたマッピングとなっている。フレームFLの左端の画素を保持するページ領域PAGEは、x座標が0から31までの32列分の画素データを右側半分のコラムであるCAn(n=16m+8、16m+9、16m+10、・・・、16m+15。ただしm=0、1、2、・・・、15)を使用して保持する。残りの左側半分のコラムでは画素データを保持せず空き領域とする。同様に、フレームの右端の画素を保持するページ領域PAGEは、x座標が1888から1919までの32列分の画素データを左側半分のコラムであるCAn(n=16m、16m+1、16m+2、・・・、16m+7。ただしm=0、1、2、・・・、15)を使用して保持する。残りの右側半分のコラムでは画素データを保持せず空き領域とする。図9中の小さい斜線枠は、アクセス座標XY0((X、Y)=(62、16))、アクセスサイズSIZE((XSIZE、YSIZE)=(8、2))のアクセス領域の例を示す。この場合、1つのページPAGE内でアクセスが完了する。
図10は、図2に示したメモリマップ選択部16により選択されるメモリマップの別の例を示している。図中に太枠で示すメモリマップMAP3は、1フレームの画素データを保持する領域を示し、かつ各画素に割り当てられるアドレスとの関係を示している。図10に示すメモリマップMAP3は、メモリマップMAP1と比較して、各画素の格納位置がy方向に+8ずれたマッピングとなっている。フレームFLの上端の画素を保持するページ領域PAGEは、y座標が0から7までの8行分の画素データを下側半分のコラムであるCAn(n=128、129、130、・・・、255)を使用して保持する。残りの上側半分のコラムでは画素データを保持せず空き領域とする。同様に、フレームの下端の画素を保持するページは、y座標が1080から1087までの8行分の画素データを上側半分のコラムであるCAn(n=0、1、2、・・・、127)を使用して保持する。残りの下側半分のコラムでは画素データを保持せず空き領域とする。
図11は、図2に示したメモリマップ選択部16により選択されるメモリマップの別の例を示している。図中に太枠で示すメモリマップMAP4は、1フレームの画素データを保持する領域を示し、かつ各画素に割り当てられるアドレスとの関係を示している。図11に示すメモリマップMAP4では、バンクアドレスBA2、ロウアドレスRA480で指定されるページPAGEには、フレームのx座標が0から31、y座標が1056から1087までの画素データが保持される。さらに、このページPAGEのコラムアドレスCA248で指定される領域にはx座標が0から3、y座標が1087で指定される4バイトBY0−3の画素データが保持される。
図12は、図2に示した動画像処理部200内の符号化処理回路210の例を示している。符号化処理回路210は、誤差画像生成部212、直交変換・量子化部214、エントロピー符号化部216、逆量子化・逆直交変換部218、再構成画像生成部220、デブロッキングフィルタ部222、画面内予測部224、動き補償部226、動き検出部228および切替部230を有している。この例では、符号化処理回路210は、H.264での動画像符号化処理を行うが、MPEG−2等での動画像符号化処理を行ってもよい。符号化処理回路210は、圧縮処理対象画像を例えば、水平方向16画素、垂直方向16画素からなるマクロブロックごとに、動き検出、動き補償、画面内予測、誤差画像生成、直交変換・量子化、逆量子化・逆直交変換、再構成画像生成、デブロッキング用のフィルタリング、エントロピー符号化を行い、画像データを圧縮符号化したビットストリームを生成する。
動き検出部228は、符号化処理が完了しているフレームの画像データを参照画像として用いて、処理対象のマクロブロック(現画像)が参照画像内のどの位置に対応するかを検出し動きベクトルとして算出する。動き補償部226は、対象のマクロブロック(現画像)に対応する参照画像内のマクロブロックと動きベクトルとから画面間(フレーム間)での予測画像を生成する。
画面内予測部224は、処理対象のマクロブロックを含むフレームにおいて、すでに符号化処理が完了している隣接するマクロブロックの画像データを用いて、処理対象のマクロブロックの画面内での予測画像を生成する。なお、H.264/AVCによる圧縮符号化では、各マクロブロックの予測画像の生成方式として、画面内予測方式と画面間予測方式のいずれかが選択できる。切替部230は、動き補償部226が動作するときに画面間の予測画像を選択し、画面内予測部224が動作するときに画面内の予測画像を選択する。切替部230は、選択した予測画像を誤差画像生成部212および再構成画像生成部220に出力する。
誤差画像生成部212は、処理対象のマクロブロック(原画像)と予測画像の差分をとり、誤差画像を生成する。直交変換・量子化部214は、誤差画像を直交変換した後に量子化処理を行い、量子化された変換係数を求める。エントロピー符号化部216は、情報量が圧縮された画像情報であるビットストリームを生成するために、量子化された変換係数を符号化処理する。
逆量子化・逆直交変換部218は、量子化された変換係数を逆量子化して、逆直交変換し、誤差画像を復元する。再構成画像生成部220は、復元された誤差画像と誤差画像計算部212で用いた予測画像とから、再構成画像を生成する。デブロッキングフィルタ部222は、直交変換・量子化部214と逆量子化・逆直交変換部218での処理によって再構成画像に生じたブロック歪みを減少させる処理を行う。ブロック歪みが減少された再構成画像は、対象フレームの画像データとしてフレームメモリ(DRAM400)に書き込まれる。なお、実際には、参照画像のDRAM400からの読み出しおよび再構成画像のDRAM400への書き込みは、メモリコントローラ100を介して行われる。
保存された画像データは、次のフレームの符号化処理に参照画像として使用される。特に限定されないが、DRAM400は、フレームメモリとしても機能する。すなわち、DRAM400は、所定数のフレーム(例えば、15フレーム)の画像データを保持するフレーム画像領域を有する。フレーム画像領域は、図2に示したアクセスコスト計算部12により、アクセス効率の高いメモリマップを選択するために、フレーム毎にアクセスコストが計算される。
図13は、図2に示した動画像処理部200内の復号処理回路240の例を示している。復号処理回路240は、エントロピー復号部242、逆量子化・逆直交変換部244、再構成画像生成部246、デブロッキングフィルタ部248、動き補償部250、画面内予測部252および切替部254を有している。動画像の復号処理は、符号化処理と同様にマクロブロック単位で行われる。1つのマクロブロックの復号では、エントロピー復号、逆量子化・逆直交変換、誤差画像生成、動き補償、画面内予測、デブロッキング用のフィルタリングを行い、ビットストリームから再構成画像が生成される。
動き補償部250は、エントロピー復号部242により伸張復号された動き予測情報(動きベクトル)とマクロブロックタイプを受ける。動き補償部250は、動きベクトルで指定される座標をアクセス座標とし、マクロブロックタイプで指定されるブロックサイズをアクセスサイズとするアクセス要求をフレームメモリ(DRAM400)に発行し、処理対象のマクロブロックの予測画像を生成するために必要な参照画像をフレームメモリから受ける。そして、動き補償部250は、受け取った参照画像から画面間の予測画像を生成する。
画面内予測部252は、エントロピー復号部242により伸張復号された画面内予測情報を受ける。画面内予測部252は、処理対象のマクロブロックを含むフレームにおいて、すでに復号処理が完了している隣接するマクロブロックの画像データを受け取る。そして、画面内予測部252は、画面内予測情報と受け取った画像データから画面内の予測画像を生成する。
切替部254は、処理対象のマクロブロックの符号化処理が画面内予測方式と画面間予測方式のいずれによって行われたかの情報をエントロピー復号部242から受ける。これ等情報は、ビットストリームに含まれる。画面内予測方式で符号化されているとき、切替部254は、画面内予測部252からの画面内の予測画像を選択する。画面間予測方式で符号化されているとき、切替部254は、動き補償部250からの画面間の予測画像を選択する。切替部254は、選択した予測画像を再構成画像生成部246に出力する。
エントロピー復号部242は、情報量が圧縮された画像情報であるビットストリームを復号処理し、量子化された変換係数を生成する。逆量子化・逆直交変換部244、再構成画像生成部246およびデブロッキングフィルタ部248の動作は、図12に示した逆量子化・逆直交変換部218、再構成画像生成部220およびデブロッキングフィルタ部222の動作と同じである。デブロッキングフィルタ処理がなされた再構成画像は、フレームメモリ(DRAM400)に書き込まれる。再構成画像は、以降のフレームの復号処理において画面間の予測画像を生成するための参照画像として読み出される。なお、実際には、DRAM400へのアクセス要求は、図2に示したメモリコントローラ100を介して行われる。参照画像のDRAM400からの読み出しおよび再構成画像のDRAM400への書き込みも、メモリコントローラ100を介して行われる。
図14は、図2に示した画像処理システムSYSによる動画像の撮影、再生動作の例を示している。黒い太枠は、各フレームFL(FLt、FLt+1など)において、H.264やMPEG2などの動画像の処理に必要な時間を示している。例えば、30フレーム/秒毎の動画像を処理対象としている場合では、各フレームFLは1/30秒(ほぼ0.033秒)で処理を完了しなければならない。動画の撮影時、カメラモジュールは、1/30秒毎にシャッターSHTを駆動する。
この例では、撮影時の符号化処理は、処理に必要なメモリアクセスの実効的な帯域が十分確保されているおり、すべてのフレームが1/30秒以内に完了している。符号化された画像データ(ビットストリーム)は、例えば、蓄積メディアSMに書き込まれる。画像データを蓄積メディアSMから読み出し、動画を再生するときの復号処理も、1/30秒以内に完了している。このため、動画を表示装置に表示する表示処理において、全てのフレームが順次に再生される。
図15は、図2に示した画像処理システムSYSによる動画像の撮影、再生動作の別の例を示している。この例では、撮影時の符号化処理において、フレームFLt+1で実効的な帯域が不足する。帯域不足から、符号化処理は1/30秒で完了しない。このため、フレームFLt+1の処理は、本来はフレームFLt+2の処理が行われているべき時間に継続して行われる。この場合、フレームFLt+2の符号化処理はスキップされる。符号化され、フレームFLt+2が欠落した画像データ(ビットストリーム)は、例えば、蓄積メディアSMに書き込まれる。
動画を再生するための復号処理では、フレームFLt+2の画像データが蓄積メディアSM内に存在しない。このため、復号処理では、本来フレームFLt+2を復号処理する時間には何も処理を行わない。動画を表示装置に表示する表示処理では、フレームFL+1が2回再生される。表示再生時間は、フレームFLt+1のみ本来の1/30秒から2/30秒となり、視聴していて違和感が生ずる画像となる。
図16は、図2に示した画像処理システムSYSによる動画像の撮影、再生動作の別の例を示している。この例では、動画を再生するための復号処理において、フレームFLt+1で実効的な帯域が不足する。帯域不足から、復号処理は1/30秒で完了しない。このため、フレームFLt+1の処理は、本来はフレームFLt+2の処理が行われているべき時間に継続して行われる。この場合、フレームFLt+2以降の復号処理は、順次に遅れる。
動画を表示装置に表示する表示処理では、フレームFLtの表示が完了したときに、フレームFL+1の復号処理が完了していない。このため、フレームFLtが2回再生される。この結果、図15と同様に、表示再生時間は、フレームFLtのみ本来の1/30秒から2/30秒となり、視聴していて違和感が生ずる画像となる。
図17は、図12に示した符号化処理回路210による動きベクトルの検出の例を示している。動画像の符号化処理において、フレームメモリ(DRAM400)との間で最も帯域が必要となるのは動き検出である。動きベクトルの検出では、先ず、参照フレーム中に参照領域を設定する。参照フレームは、既に符号化処理が完了しているフレームの中から自由に設定できる。次に、参照領域の中で処理対象マクロブロックと最も類似している矩形領域を検出する。処理対象マクロブロックの左上の画素から見た検出した矩形領域の左上画素の相対座標が動きベクトルとなる。類似度判定をするために参照領域の画像データが必要となるため、フレームメモリに格納されている参照フレームへの読み出しアクセスが発生する。
例えば、フレームメモリのアクセス頻度を下げるために、参照領域は、フレームメモリから動き検出部228内に設けられる参照領域用のメモリに取り込まれた後、処理対象のマクロブロックとの類似度を判定の計算のために参照される。図17に示した処理は、処理対象フレームFLt内の全てのマクロブロックについて順次に行われる。
例えば、H.264のLevel4.0では、動き検出で出力するベクトルとしてx方向は−2048から+2047.75まで、y方向は−512から+511.75まで符号化可能である。符号化処理した画像の画質の点からは、上述の範囲のすべての座標で類似度を判定し、もっとも類似度の高い座標を算出するのが望ましい。しかし、動き検出処理の演算量、フレームメモリから参照領域をリードするために必要な帯域の点から、フレームメモリからリードする参照領域を制限し、制限した領域の中でもっとも類似した座標を算出する方法が一般的である。
図18は、図13に示した復号処理回路240の動作の例を示している。図18は、エントロピー復号部242で復元された動きベクトルと参照領域のリードアクセスとの関係を示している。参照領域のリードアクセスのサイズは(16画素、16画素)、アクセス座標は動きベクトルが指し示す点(MVx、MVy)となる。ここで、参照領域のメモリマップとメモリアクセスの関係が、図5に示したように同一のページPAGE内となるときに効率的にアクセスできる。参照領域のメモリマップとメモリアクセスの関係が、図6や図7に示したように、ページPAGEの境界やバンクBKの境界をまたぐ場合は、非効率的なアクセスとなる。
図19は、図2に示した画像処理システムSYSの動作の例を示している。この例は、カメラモジュール300により撮影された動画のH.264等による符号化処理を示している。時間T1−T4は、各フレームの処理時間を示している。
例えば、カメラモジュール300は、1フレームの処理時間T1の間に、フレームFLt+s(sは2以上の整数)の画像データ(原画像)をメモリコントローラ100を介してDRAM400に書き込む。処理時間T1の間に、動画像処理部200は、フレームFLt+1のマクロブロックを、符号化するためにDRAM400から読み出す。また、動画像処理部200は、動きベクトルを検出するために、1つ前のフレームFLtの参照画像をDRAM400から読み出す。そして、動画像処理部200は、デブロッキングフィルタ部222が生成した再構成画像をフレームFLt+1の対応するマクロブロックの再構成画像としてDRAM400に書き込む。
ここで、フレームFLtの画像データは、予め指定されたメモリマップMAP(例えば、MAP1)を用いてカメラモジュールがDRAM400に書き込んでいる。一方、アクセスコスト計算部12は、フレームFLtがメモリマップMAP1、MAP2、MAP3、MAP4のそれぞれで保持されていたと仮定した場合のリードサイクル数Nj(j=0、1、2、3)を計算し、アクセスコスト保存メモリ14に書き込む。
メモリマップ選択部16は、Nj(j=0、1、2、3)の値の中で最も小さい値を持つものを判定し、そのメモリマップMAP(この例では、MAP3)を示すマップ情報MINFを、将来のフレームFLt+2がアクセスされるときのメモリマップMAPとしてメモリマップ保存メモリ18に書き込む。パラメータ変換部20は、アクセスするフレームに対応してメモリマップ保存メモリ18で指定されるメモリマップMAPに基づいてアクセス要求AREQに含まれるアクセス座標XYを、実際にDRAM400にアクセスするためのアクセス座標XY’に変換する。
処理時間T2では、フレームFLt+2のマクロブロックが符号化される。FLt+2の原画像データは、あらかじめ指定されたメモリマップMAP(例えば、MAP1)を用いてカメラモジュールがDRAM400に書き込んでいるため、このメモリマップMAPを用いて読み出す。符号化処理後の再構成画像の書き込みは、予め計算されたアクセスコストが最も小さいメモリマップMAP3を用いて行われる。そして、上述と同様に、参照画像として読み出されるフレームFLt+1について、最もアクセスコストが低いメモリマップMAP(この例では、MAP1)が求められる。メモリマップ選択部16は、メモリマップMAP1を示すマップ情報MINFを、処理時間T3でフレームFLt+3の再構成画像が書き込みアクセスされるとき、および処理時間T4で参照画像として読み出しアクセスされるときのメモリマップMAPとしてメモリマップ保存メモリ18に書き込む。これにより、処理時間T3では、フレームFLt+2およびFLt+3を、最もアクセスコストの小さいメモリマップMAPでアクセスできる。以降のフレーム処理でも同様に、最もアクセスコストの小さいメモリマップMAPでアクセスできる。
なお、アクセスコスト計算部12は、読み出しアクセスのコストだけでなく、書き込みアクセスのコストを計算してもよい。具体的には、アクセスコスト計算部12は、再構成画像を書き込むフレームFLについて、アクセスコストを計算し、アクセスコスト保存メモリ14に書き込んでもよい。すなわち、処理時間T1において、フレームFLt+1の再構成画像書き込みのためのアクセスコストを計算してもよい。この場合、メモリマップ選択部16は、処理時間T2において、フレームFLt+1の読み出しアクセスのアクセスコストと書き込みアクセスのアクセスコストの平均値が最も小さいメモリマップMAPを選択する。選択されたメモリマップMAPは、フレームFLt+3をアクセスするときのメモリマップとして使用される。あるいは、アクセスコスト計算部12は、書き込みアクセスのコストのみを計算してもよい。
図8および図9に示したメモリマップMAP1−2の斜線枠のアクセスでは、アクセスに必要なサイクル数は次のようになる。図8では、メモリコントローラ100がBA=2、RA=0のアクティブコマンドおよびBA=3、RA=0をDRAM400に出力してから、最後のコラムアドレスCAへのアクセスが完了するまでのn1サイクルである。図9では、メモリコントローラ100がBA=3、RA=0のアクティブコマンドをDRAM400に出力してから、最後のコラムアドレスCAへのアクセスが完了するまでのn2サイクルである。
アクセスコスト計算部12は、メモリマップMAP1〜2でのアクセスサイクル数n1〜2を計算する。同様に、アクセスコスト計算部12は、メモリマップMAP3〜4でのアクセスサイクル数n3〜n4を計算する。算出された各メモリマップMAP1〜4でのアクセスサイクル数n1〜n4は、1フレームFLの処理で発生したすべてのアクセス要求に対して累積加算される。動画像処理部200が1フレームFLの処理を行う間に調停部10にm回のアクセス要求を送信し、i番目のアクセス要求をメモリマップMAP1〜4に対して行った場合のアクセスサイクル数をそれぞれn1(i)、n2(i)、n3(i)、n4(i)とする。メモリマップMAPjでの1フレームの処理で発生したすべてのアクセス要求に必要なサイクル数の合計値NjはNj=nj(1)+nj(2)+・・・+nj(m)となる。ただし、j=1、2、3、4である。
なお、図13に示した復号処理回路240による復号処理においても、上述と同様に、将来アクセスされるフレームFLについて、アクセスコストが最も小さいメモリマップMAPを指定できる。復号処理時の画像処理システムSYSの動作は、カメラモジュール300の処理がないことと、マクロブロック読み出しがないことを除き、図19と同じである。例えば、フレームFLt+1のビットストリームを復号するとき、1つ前のフレームFLtの参照画像をDRAM400から読み出す。そして、復号されたフレームFLt+1の再構成画像がマクロブロック単位でDRAM400に書き込まれる。アクセスコスト計算部12およびメモリマップ選択部16の動作は、符号化処理時と同じである。
図20は、図2に示したメモリマップ保存メモリ18の状態変化の例を示している。最初の状態において、動画像処理部200がフレームFLt+1を処理している間、フレームFLtのリードアクセスとフレームFLt+1へのライトアクセスが発生する。このため、メモリマップ保存メモリ18には、フレームFLtとフレームFLt+1の2フレーム分のメモリマップMAP1、4を示す情報が保存されている。フレームFLt+1の処理が完了すると、それ以降の処理でフレームFLtへのアクセスが発生しないので、メモリマップ選択部16はフレームFLtのメモリマップが保存されている領域に、フレームFLt+2のメモリマップMAP3を示す情報を上書きする。
上記手順によると、フレームFLt+2のメモリマップMAP3は、フレームFLt+1で発生するフレームFLtのリードアクセスに必要なサイクルが最小となるように選択される。このため、動画像処理部200がフレームFLt+2を処理する際に発生するメモリアクセスのサイクル数が最小になるメモリマップを選択することを保証できない。しかし、動画像の処理においては、時間的に近いフレーム間では画像の特徴の相関が高いことが期待できる。したがって、処理の過程で発生するメモリアクセスも非常に似ていることが期待できる。すなわち、フレームFLt+1の処理で発生するメモリアクセスの特徴は、フレームFLt+2の処理で発生するメモリアクセスの特徴およびフレームFLt+3の処理で発生するメモリアクセスの特徴と類似する。このため、本実施形態においてアクセスサイクル数削減の効果は損なわれない。
図21は、図2に示した画像処理システムSYSの動作タイミングの例を示している。図21では、動画の撮影時の符号化処理時の動作を示している。各フレームの処理を始める前に、動画像処理部200は、アクセスコスト計算部12内に保持されているアクセスコストをリセットするために、同期信号SYNCを出力する(RESET)。カメラモジュール300は、1フレームの処理期間に、撮影した1フレーム分の画像データを、メモリコントローラを介してm回に分けてDRAM400へ書き込む(WR1−WRm)。動画像処理部200は、撮影された画像からストリームデータを生成するために、マクロブロックの符号化処理を行う(CODE1−CODEp)。
調停部10は、カメラモジュール300からのアクセスと動画像処理部200からのアクセスを調停する。アクセスコスト計算部12は、パラメータ変換部20からのアクセスパラメータAPRM0に応じて、メモリマップMAP1−4を使用したときのアクセスコストをマクロブロック毎に求め、アクセスコストを累積加算する(CALC)。パラメータ変換部20は、アクセスパラメータAPRM0に含まれるアクセスフレーム番号FLに基づいて、対応するメモリマップMAPの種類をメモリマップ保存メモリ18から読み出す。パラメータ変換部20は、アクセスパラメータAPRM0を、読み出したメモリマップMAPの種類に応じてアクセスパラメータAPRM1に変換し(PCNV)、アクセス制御部22に出力する。
次のフレームの処理の最初では、アクセスコスト計算部12は、同期信号SYNCに応答して、前のフレームのアクセスコストをメモリマップMAP毎にアクセスコスト保存メモリ14に出力する(COST)。メモリマップ選択部16は、アクセスコスト保存メモリ14に書き込まれたアクセスコストのうち、最小のコストを示すメモリマップMAPを示すマップ情報MINFを選択する。メモリマップ選択部16は、選択したマップ情報MINFをメモリマップ保存部18に書き込む。これにより、DRAM400のアクセス効率を向上できる。
なお、符号化処理において、すべてのフレームで同一のメモリマップを使用する従来では、メモリアクセスに必要なサイクル数は、すべてのマクロブロックが参照領域としてアライメントがずれた位置を要求した場合に最大(Cworst0)となる。ここで、”アライメントのずれ”は、アクセス領域がメモリ単位領域(4バイト領域)の境界をまたぐ場合、またはアクセス領域がページ領域PAGEの境界をまたぐ場合を意味する。
一方、2種類のメモリマップMAP1−2を切り替えて使用する場合、メモリマップMAP1においてすべてのマクロブロックでアライメントがずれている場合、メモリマップMAP2を選択することで回避される。メモリマップMAP2においてすべてのマクロブロックでアライメントがずれている場合、メモリマップMAP1を選択することで回避される。このため、メモリマップMAP1−2の両方において、半分のマクロブロックで要求する参照領域のアライメントがずれた場合に、アクセスサイクル数が最大となる。
したがって、2種類のメモリマップMAP1−2を使用する場合、メモリアクセスの最悪のサイクル数は(Cworst1+Cbest2)/2、もしくは、(Cbest1+Cworst2)/2となる。ここで、Cworst1は、メモリマップMAP1での最悪のアクセスサイクル数である。Cworst2は、メモリマップMAP2での最悪のアクセスサイクル数である。Cbest1は、メモリマップMAP1でアライメントが合っている場合のアクセスサイクル数である。Cbest2は、メモリマップMAP2でアライメントが合っている場合のアクセスサイクル数である。例えば、Cbest2がCworst1の半分であり、仮にCbest2=50サイクル、Cworst1=100サイクルとする。このとき、メモリアクセスの最悪のサイクル数((Cworst1+Cbest2)/2)は、75サイクルになる。すなわち、本実施形態の適用により、アクセスサイクル数を25%削減することができる。4つのメモリマップMAP1−4を選択的に使用することで、アクセスサイクル数をさらに削減できる。
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。さらに、動画像を構成する各フレームに対応してメモリマップMAP1−4毎にアクセスコストを計算することで、フレーム単位に最適なアクセス効率を得ることができる。さらに、マクロブロック毎にアクセスコストを計算し、累積加算することで、細かいブロック毎に符号化処理または復号処理が行われる場合にも、アクセス効率の高いメモリマップMAPを平均的に求めることができる。
フレーム間での相関が高い動画像の符号化処理または復号処理において、計算したアクセスコストを、将来発生するフレームのメモリマップの選択に使用することで、DRAM400のアクセス効率を向上できる。これにより、画像処理システムSYSの性能を向上できる。具体的には、アクセス効率を向上することで、符号化処理時間および復号処理時間を短縮でき、図15および図16に示した不具合を防止できる。あるいは、アクセス効率を向上することで、低速の画像メモリを採用できる。この結果、消費電力を削減でき、かつシステムコストを削減できる。
このように、アクセスサイズやアクセス座標が適応的に変更される画像処理において、アクセス効率を高め、アクセスサイクル数を最小限にすることができる。特に、MPEGやH.264の符号化処理、復号処理のように、矩形アクセスが多く発生する装置に適用すると有用である。また、上述したように、最悪の条件下でも必ず25%のアクセスサイクル数の削減を保証できる。
図22は、別の実施形態における画像処理システムSYSの例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態の画像処理システムSYSは、図2のメモリコントローラ100の代わりにメモリコントローラ100Aを有している。メモリコントローラ100Aは、図2のアクセスコスト計算部12の代わりにアクセスコスト計算部12Aを有している。さらに、画像処理システムSYSは、前処理部600を有している。画像処理システムSYSのその他の構成は、図2と同じである。
前処理部600は、動画像処理部200による符号化処理に先立って、カメラモジュール300で撮影された原画像および参照画像を、ローパスフィルタによる高周波成分の除去と、サブサンプリングによって、もしくはローパスフィルタを用いずサブサンプリングのみによって縮小画像をそれぞれ生成する。ここで、原画像は、ある時刻に撮影された画像であり、参照画像は、ある時刻より前に撮影された画像の一部である。例えば、横1920画素、縦1088画素からなる符号化対象画像を縦1/4、横1/4の縮小率で縮小する場合、縮小画像は、横480画素、縦272画素である。縮小画像において、マクロブロックを構成する画素数は、横4画素、縦4画素となる。縮小画像の縮小率は、縦横1/4以外でもよい。
前処理部600は、縮小した原画像と縮小した参照画像の間で動き検出を行い、縮小動きベクトルを求める。この例では、元々の画像の解像度に対して、縮小率をx方向1/4、y方向1/4とする。このため、縮小画像での動きベクトル検出により、元々の画像での動き検出処理の対象となる参照領域をx方向7画素(縮小動きベクトルのx成分を中心とした±3の範囲)、y方向7画素(縮小動きベクトルのy成分を中心とした±3の範囲)まで限定することができる。このように動きベクトルの検出を階層的に行うことにより、広い参照領域で動きベクトルを探索しつつも、演算量と帯域の大幅な削減が可能となる。なお、縮小画像のマクロブロックの動き検出処理は、扱う画素数が異なることを除き、図17と同じである。
さらに、前処理部600は、検出した縮小動きベクトルに基づいて、動画像処理部200での将来のフレーム処理において発生するアクセスパラメータAPRM0に対応するアクセスパターン情報APINFを生成し、アクセスコスト計算部12Aに出力する。アクセスパターン情報APINFは、アクセスパラメータAPRM0と同様に、リードライト種別RW1、アクセス座標XY1、アクセスサイズSIZE1、アクセスフレーム番号FNO1を含む。
アクセスコスト計算部12Aは、入力されたアクセスパターン情報APINFに基づいて、メモリマップMAP1−4でのアクセスサイクル数を計算し、その合計値N1−4をアクセスコスト保存メモリ14に書き込む。メモリマップ選択部16およびメモリマップ保存部18の動作は、図2と同じである。
この後、動画像処理部200は、縮小動きベクトルが既に求められたフレームFLの画像データを符号化するために、処理対象のマクロブロックおよび対応する参照画像をDRAM400から読み出す。具体的には、動画像処理部200は、DRAM400からマクロブロックおよび参照画像を読み出すために、アクセス要求AREQ0をメモリコントローラ100に出力する。調停部10は、アクセス要求AREQ0をアクセスパラメータAPRM0として出力する。
パラメータ変換部20は、アクセスパラメータAPRM0に含まれるアクセスフレーム番号FNO0に対応するメモリマップMAPを示すマップ情報MINFをメモリマップ保存メモリ18から読み出す。パラメータ変換部20は、アクセスパラメータAPRM0に含まれるアクセス座標XY0を、読み出したマップ情報MINFに対応するアクセス座標XY’に変換する。アクセス制御部22は、変換されたアクセス座標XY’に基づいて、DRAM400にアクセスする。そして、動画像処理部200は、処理対象のマクロブロックの動きベクトルを求める。ここで、動きベクトルの検出は、図23に示すように、縮小画像を用いて算出した縮小動きベクトルに対応する座標の周辺にのみ限定して行う。
図23は、図22に示した動画像処理部200の動作の例を示している。例えば、符号化処理部210は、縮小画像での縮小動きベクトルの検出結果に基づいて、参照領域をDRAM400から読み出し、実際の動きベクトルを検出する。この例では、縮小動きベクトルに対応する擬似動きベクトルは、縮小動きベクトルを4倍することで生成される。図22に示した画像処理システムSYSでは、動画像処理部200が動きベクトルを検出する前に、前処理部600により縮小動きベクトルが検出される。このため、処理対象のマクロブロックの動きベクトルを求めるために必要な参照領域のサイズは、図17に比べて大幅に小さい。
図23に示した動き検出では、擬似動きベクトルに対応する参照画像(図の破線枠)を中心とし、x方向で−3から+3まで、y方向で−3から+3までの画像データが必要である。このため、参照領域をDRAM400から読み出すために、アクセスサイズSIZE(22、22)、アクセス座標XY(MVx−3、MVy−3)のメモリアクセスが必要となる。ここで、座標(MVx、MVy)は、擬似動きベクトルが指し示す点である。参照領域のメモリマップと上記メモリアクセスの関係が、図5に示すように同一のページPAGE内になるとき、効率的にアクセスできる。参照画像のメモリマップと上記メモリアクセスの関係が、図6や図7に示すように、ページPAGEの境界やバンクBKの境界をまたぐ場合は、非効率的なアクセスとなる。
図24は、図22に示したシステムSYSの動作の例を示している。この例は、カメラモジュール300により撮影された動画のH.264等による符号化処理を示している。時間T1−T4は、各フレームの処理時間を示している。カメラモジュール300、動画像処理部200およびメモリマップ選択部16の動作については、図19と同じであるため、詳細な説明は省略する。
この例では、前処理部600は、検出した縮小動きベクトルに基づいて、将来、符号化処理を行うときに発生するメモリアクセスのパターンを解析する。アクセスコスト計算部12Aは、解析されたアクセスパターンに基づいて、メモリマップMAP1−4毎に、将来生成されるフレームのデータの読み出しに必要なアクセスサイクル数を計算し、アクセスコスト保存メモリ14に書き込む。アクセスコスト保存メモリ14の動作は、図19と同じである。
この後、動画像処理部200は、符号化処理を行うとき、アクセス要求AREQ0(ライトアクセス要求とリードアクセス要求)を調停部10に供給する。調停部10は、これ等アクセス要求AREQ0をアクセスパラメータAPRM0としてパラメータ変換部20に出力する。パラメータ変換部20は、アクセスコストの最も低いメモリマップMAPを用いて、アクセスパラメータAPRM0をアクセスパラメータAPRM1に変換する。そして、アクセス制御部22は、変換されたアクセスパラメータAPRM1を用いて、DRAM400にアクセスする。
アクセスパターン解析は、符号化処理されるフレームより2フレーム以上先のフレームに対して行う。例えば、動画像処理部200がフレームFLt+1のマクロブロックを読み出し符号化処理している処理時間T1では、前処理部600はフレームFLt+3の縮小動きベクトル検出を行い、アクセスパターン情報APINFをアクセスコスト計算部12Aへ通知する。アクセスコスト計算部12Aは、将来、フレームFLt+3を符号化処理する際に発生するフレームFLt+2へのリードアクセスのサイクル数を計算し、アクセスコスト保存メモリ14に書き込む。メモリマップ選択部16は、アクセスコスト保存メモリ14に保存されているフレームFLt+2のリードアクセスのサイクル数の合計値をMAP1−4のそれぞれに対して計算し、サイクル数が最小となるメモリマップMAPをメモリマップ保存メモリ18に書き込む。処理時間T2では、動画像処理部200においてフレームFLt+2が符号化処理され、フレームFLt+2の再構成画像がDRAM400に書き込まれるが、処理時間T1においてメモリマップ選択部16がメモリマップ保存メモリ18に書き込んだメモリマップMAPを用いて書き込まれる。処理時間T3ではフレームFLt+3の符号化処理において、フレームFLt+2を参照画像として読み出すが、フレームFLt+2の再構成画像は処理時間T3で発生する読み出しアクセスのサイクル数が最小となるメモリマップMAPで書き込まれているため、アクセスに必要なサイクル数が削減されることになる。
なお、アクセスコスト計算部12Aは、読み出しアクセスのコストだけでなく、書き込みアクセスのコストを計算してもよい。具体的には、アクセスコスト計算部12Aは、再構成画像を書き込むフレームFLについて、アクセスコストを計算し、アクセスコスト保存メモリ14に書き込んでもよい。すなわち、処理時間T1において、処理時間T2で発生するフレームFLt+2の再構成画像を書き込むアクセスコストを計算してもよい。この場合、メモリマップ選択部16は、処理時間T2におけるフレームFLt+2の再構成画像の書き込みアクセスのアクセスコストと処理時間T3におけるフレームFLt+2の参照画像の読み出しアクセスのアクセスコストの平均値が最も小さいメモリマップMAPを選択する。選択されたメモリマップMAPは、処理時間T2において、フレームFLt+2の再構成画像を書き込みアクセスするときのメモリマップとして使用される。再構成画像の書き込みはマクロブロック単位で行われるので、アクセスサイズSIZEは(16,16)、アクセス座標XYは(16m,16n)となる。ただし、(m=0,1,2,3,・・・、n=0,1,2,3,・・・)である。
図25は、図22に示した画像処理システムSYSの動作タイミングの例を示している。カメラモジュール300および動画像処理部200の動作は図21と同様であるので、説明を省略する。
前処理部600は、1マクロブロックごとに縮小動きベクトルの検出を行う(DETV)。縮小動きベクトルの検出で得られた擬似動きベクトルから、アクセスパターン情報APINFを計算し、アクセスコスト計算部12Aへ出力する。具体的には、参照領域の読み出しであるため、リードライト種別RW1はリードアクセスである。図23に示したように、アクセス座標XY1は、検出された縮小動きベクトルを(MVx、MVy)とすると、(MVx−3、MVy−3)である。アクセスサイズSIZE1は(22、22)、アクセスフレーム番号FNO1は、”(縮小動きベクトルの検出対象のフレーム番号)−1”である。例えば、縮小動きベクトルの検出の処理対象フレームがフレームFLtの場合、アクセスフレーム番号FNO1は”t−1”となる。アクセスコスト計算部12Aは、前処理部600から入力されるアクセスパターン情報APINFを用いてアクセスコストを計算することを除き、アクセスコスト計算部12と同様に動作する。
この実施形態では、フレームFLtの再構成画像の書き込みで使用されるメモリマップMAPを直接にフレームFLtに対して発生するメモリアクセスの情報を用いて判定、選択しているため、上述した実施形態よりも、より正確にアクセスサイクル数が最小となるメモリマップMAPを選択することができる。具体的には、H.264等による符号化処理において、前処理として縮小画像での縮小動きベクトルを検出し、縮小動きベクトルに基づいてアクセスパターン情報APINFを生成する。フレームの符号化処理で発生する参照領域のリードアクセスのアクセスサイズとアクセス座標は、縮小画像での動きベクトルによって正確に知ることができるので、各フレームの符号化処理において発生するリードアクセスのサイクル数を正確に見積もることができる。
H.264等による復号処理に適用した場合も、符号化処理と同様に図25に示すタイミングでメモリマップが選択される。H.264等の復号処理では、図13を用いて説明した各処理の内、エントロピー復号部242で行っている処理を前処理部600で行う処理とする。エントロピー復号部242はストリームデータをエントロピー復号し、アクセスパターン情報APINFとして動きベクトルとマクロブロックタイプを生成する。フレームの復号処理で発生する参照画像のリードアクセスのアクセスサイズSIZE1とアクセス座標XY1は、動きベクトルとマクロブロックタイプによって正確に知ることができる。このため、各フレームの復号処理において発生するリードアクセスのサイクル数を正確に見積もることができる。例えば、動画像処理部200がフレームFLt+1の復号処理を行っている処理時間T1では、前処理部600はフレームFLt+3のエントロピー復号処理を行い、アクセスパターン情報APINFをアクセスコスト計算部12Aへ通知する。アクセスコスト計算部12Aは、将来、フレームFLt+3を復号処理する際に発生するフレームFLt+2へのリードアクセスのサイクル数を計算し、アクセスコスト保存メモリ14に書き込む。メモリマップ選択部16は、アクセスコスト保存メモリ14に保存されているフレームFLt+2のリードアクセスのサイクル数の合計値をMAP1−4のそれぞれに対して計算し、サイクル数が最小となるメモリマップMAPをメモリマップ保存メモリ18に書き込む。処理時間T2では、動画像処理部200においてフレームFLt+2が復号処理され、フレームFLt+2の再構成画像がDRAM400に書き込まれるが、処理時間T1においてメモリマップ選択部16がメモリマップ保存メモリ18に書き込んだメモリマップMAPを用いて書き込まれる。処理時間T3ではフレームFLt+3の復号処理において、フレームFLt+2を参照画像として読み出すが、フレームFLt+2の再構成画像は処理時間T3で発生する読み出しアクセスのサイクル数が最小となるメモリマップMAPで書き込まれているため、アクセスに必要なサイクル数が削減されることになる。
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。さらに、縮小画像を用いて符号化処理を行う画像処理システムにおいて、DRAM400のアクセス効率を向上でき、画像処理システムの性能を向上できる。
なお、上述した実施形態は、メモリコントローラ100がDRAM400をアクセスする例について述べた。しかし、例えば、メモリコントローラ100は、SRAM、擬似SRAM、フラッシュメモリおよび強誘電体メモリ等の他の半導体メモリをアクセスしてもよい。
上述した実施形態は、画像データを符号化または復号する扱う画像処理システムについて述べた。しかし、上述した実施形態により符号化されるデータおよび復号されるデータは、ブロック単位で時系列に扱われるデータであれば、画像データでなくてもよい。
図12に示した符号化処理回路210は、メモリマップ選択部16が選択したメモリマップMAPの種類を示すマップ情報MINFをビットストリーム中に書き込むメモリマップ種類書き込み部を有していてもよい。この場合、図13に示した復号処理回路240は、ビットストリーム中に書き込まれたメモリマップMAPの種類を示すマップ情報MINFを読み出すメモリマップ種類読み込み部を有していてもよい。このとき、メモリマップ保存メモリ18は、メモリマップ種類読み込み部が読み出したメモリマップMAPの種類を保存する。パラメータ変換部20は、メモリマップ保存メモリ18に保存されているメモリマップMAPに基づいてアクセスアドレスを変換する。
上述した実施形態は、図26および図27に示す画像処理システムに適用されてもよい。図26および図27に示すメモリコントローラは、図2に示したメモリコントローラ100または図22に示したメモリコントローラ100Aの機能を有している。
図26はデジタル画像データを圧縮符号化し、記録・保存するデジタルビデオカメラを示している。カメラで撮影されたデジタルの入力画像データはメモリコントローラを介してDRAMに蓄積される。符号化処理部ではメモリコントローラを介してDRAMに蓄積されたデジタル画像データを読み出し、MPEG−2やH.264などの国際標準規格に従って符号化処理を行い、デジタル画像データの圧縮データとしてビットストリームを生成する。生成されたビットストリームは、SDカード、ハードディスクドライブ、DVD−Rなど、蓄積メディアに書き込み、保存される。符号化処理の過程で発生し、後続の画像データの符号化処理で参照する必要がある再構成画像はメモリコントローラを介してDRAMに対して書き込まれ、後続の画像データの符号化処理時にと読み出される。
図27は圧縮符号化されたビットストリームを伸張復号し、デジタル画像データを再生・表示するデジタル画像データ再生装置を示している。SDカード、ハードディスクドライブ、DVDなど、蓄積メディアに書き込み、保存されているビットストリームが復号処理部に入力される。復号処理部では、MPEG−2やH.264など、ビットストリームが符号化された規格に従って復号処理を行い、デジタル画像データである再構成画像を復元、生成する。生成された再構成画像はメモリコントローラを介してDRAMに蓄積される。DRAMに格納されている復元済みの再構成画像は、後続のビットストリームの復元処理に必要なため、メモリコントローラを介して復号処理部から読み出される。また、再生表示のためディスプレイ、テレビモニタなどの表示装置もメモリコントローラを介してDRAMから再構成画像を読み出す。
以上の実施形態において説明した発明を整理して、付記として開示する。
(付記1)
半導体メモリに読み出しアクセスもしくは書き込みアクセスするメモリコントローラであって、
読み出しアクセスおよび書き込みアクセスの少なくともいずれかに必要なサイクル数をアクセスコストとして複数のメモリマップ毎に計算するアクセスコスト計算部と、
前記メモリマップの中からアクセスコストが最も低いメモリマップを選択するメモリマップ選択部と、
前記メモリマップ選択部が選択したメモリマップに基づいて、アクセスアドレスを変換するパラメータ変換部と、
変換されたアクセスアドレスに基づいて前記半導体メモリにアクセスするための制御信号を生成するアクセス制御部と、
を備えていることを特徴とするメモリコントローラ。
(付記2)
付記1記載のメモリコントローラにおいて、
前記半導体メモリは、1画面を表示するためのフレーム毎に画像データを保持し、
前記アクセスコスト計算部は、処理対象のフレームをアクセスするときのアクセスコストを、前記複数のメモリマップ毎に計算し、
前記メモリマップ選択部は、処理対象のフレームより先に処理が行われるフレームに対して前記アクセスコスト計算部が計算したアクセスコストに基づいて、処理対象のフレームのアクセスに使用する前記メモリマップのいずれかを選択すること
を特徴とするメモリコントローラ。
(付記3)
付記1記載のメモリコントローラにおいて、
前記半導体メモリは、1画面を表示するためのフレーム毎に画像データを保持し、
前記アクセスコスト計算部は、処理対象のフレームより後に処理が行われるフレームの前記半導体メモリへのアクセスに関するアクセスパターン情報を受け、前記アクセスパターン情報に基づいて読み出しアクセスおよび書き込みアクセスの少なくともいずれかに必要なサイクル数をアクセスコストとして前記メモリマップ毎に計算し、
前記メモリマップ選択部は、前記アクセスコスト計算部が計算したアクセスコストに基づいて、対応する処理対象のフレームのアクセスに使用する前記メモリマップのいずれかを選択すること
を特徴とするメモリコントローラ。
(付記4)
付記3記載のメモリコントローラにおいて、
縮小画像における動きベクトルに基づいて前記アクセスパターン情報を生成する前処理部を備えていることを特徴とするメモリコントローラ。
(付記5)
付記3または付記4記載のメモリコントローラにおいて、
前記前処理部は、前記動きベクトルとマクロブロックタイプに基づいて前記アクセスパターン情報を生成することを特徴とするメモリコントローラ。
(付記6)
付記2ないし付記5のいずれか1項記載のメモリコントローラにおいて、
前記アクセスコスト計算部は、前記フレームにそれぞれ対応して、前記メモリマップ毎に前記アクセスコストを計算し、
前記メモリマップ選択部は、前記フレーム毎に前記メモリマップの中からアクセスコストが最も低いメモリマップを選択すること
を特徴とするメモリコントローラ。
(付記7)
付記2ないし付記6のいずれか1項記載のメモリコントローラにおいて、
前記アクセスコスト計算部は、前記複数のメモリマップに対して、前記各フレームを複数に分割したブロック毎に前記アクセスコストを計算するとともに、前記フレーム毎に前記アクセスコストを累積し、
前記メモリマップ選択部は、前記アクセスコストの累積値が最も小さいメモリブロックを選択すること
を特徴とするメモリコントローラ。
(付記8)
付記1ないし付記7のいずれか1項記載のメモリコントローラにおいて、
書き込みアクセス時の書き込みデータを一時保存する書き込みバッファを有し、複数の書き込みアクセスごとに前記半導体メモリに書き込みアクセスを行うこと
を特徴とするメモリコントローラ。
(付記9)
付記2ないし付記8のいずれか1項記載のメモリコントローラと、
画像データを符号化する符号化処理回路と
を備えていることを特徴とする画像処理システム。
(付記10)
付記9記載の画像処理システムにおいて、
前記符号化処理回路は、前記メモリマップ選択部が選択したメモリマップの種類をビットストリーム中に書き込むメモリマップ種類書き込み部を備えていることを特徴とする画像処理システム。
(付記11)
付記10記載の画像処理システムにおいて、
圧縮符号化された画像データを復号する復号処理回路を備え、
前記復号処理回路は、前記ビットストリーム中に書き込まれたメモリマップの種類を読み出すメモリマップ種類読み込み部を備え、
前記メモリコントローラは、メモリマップ種類読み込み部が読み出したメモリマップの種類を保存するメモリマップ保存メモリを備え、
前記パラメータ変換部は、メモリマップ保存メモリに保存されているメモリマップに基づいてアクセスアドレスを変換すること
を特徴とする画像処理システム。
(付記12)
付記2ないし付記8のいずれか1項記載のメモリコントローラと、
圧縮符号化された画像データを復号する復号処理回路と
を備えていることを特徴とする画像処理システム。
(付記13)
半導体メモリに読み出しアクセスもしくは書き込みアクセスするためのメモリアクセスの制御方法であって、
読み出しアクセスおよび書き込みアクセスの少なくともいずれかに必要なサイクル数をアクセスコストとして複数のメモリマップ毎に計算し、
前記メモリマップの中からアクセスコストが最も低いメモリマップを選択し、
選択したメモリマップに基づいて、アクセスアドレスを変換し、
変換されたアクセスアドレスに基づいて前記半導体メモリにアクセスするための制御信号を生成すること
を特徴とするメモリアクセスの制御方法。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。