(57)【要約】【課題】圧縮動画像をマクロブロック単位で動き補償を行う際に、処理効率を高めつつ、回路規模の増大を抑制する。【解決手段】読出対象領域特定部１２４は、マクロブロックに対する動き補償処理のための参照領域を含む参照画像が記憶された外部メモリから参照領域の画素データを読み出す際の読出対象領域を特定し、読出対象領域分割部１２４はこの読出対象領域を複数の分割領域に分割する。制御部１３０は、読出対象領域が特定した読出対象領域の読出要求をメモリコントローラ１８０に出力すると共に、前回までの読出しによりバッファメモリ１４０に格納されたデータを分割領域毎に管理する。そして、読出対象領域特定部が特定した今回の読出対象領域の各分割領域のうちの、バッファメモリ１４０にその画素データが格納されていない分割領域のみについて読出要求をメモリコントローラ１９０に出力する。【選択図】図８
2008271292.tif 000002
【特許請求の範囲】
【請求項１】
圧縮動画像の復号に際してマクロブロック単位で順次動き補償処理を行う動き補償装置であって、
バッファメモリと、
参照画像が記憶された外部メモリからデータの読出しを行い、読み出したデータを前記バッファメモリに格納する読出部と、
前記参照画像上の読出対象領域であって、前記マクロブロックに対する前記動き補償処理のための参照領域の画素データを前記外部メモリから読み出す際の前記読出対象領域を特定する読出対象領域特定部と、
該読出対象領域特定部が特定した前記読出対象領域を複数の分割領域に分割する読出対象領域分割部と、
前記読出対象領域特定部が特定した読出対象領域の読出しを前記読出部に行わせると共に、前記読出部の前回までの読出しにより前記バッファメモリに格納された画素データを前記分割領域毎に管理する制御部であって、前記読出対象領域特定部が特定した今回の読出対象領域の各分割領域のうちの、前記バッファメモリにその画素データが格納されていない分割領域の画素データの読出しのみを前記読出部に行わせる制御部とを備えることを特徴とする動き補償装置。
【請求項２】
前記読出対象領域特定部は、前記参照領域を含む前記参照領域より大きい領域を該参照領域の読出対象領域として特定することを特徴とする請求項１に記載の動き補償装置。
【請求項３】
現在復号中のマクロブロックの動きベクトルを復号する動きベクトル復号部をさらに備え、
前記読出対象領域特定部は、前記動きベクトル復号部により得られた前記動きベクトルが示す前記参照領域に対応する前記読出対象領域を特定するものであることを特徴とする請求項１または２に記載の動き補償装置。
【請求項４】
現在復号中のマクロブロックの動きベクトルを復号する動きベクトル復号部と、
前記動きベクトルが示す前記参照領域の次の参照領域を予測する予測部とをさらに備え、
前記読出対象領域特定部は、前記予測部が予測した前記次の参照領域に対応する前記読出対象領域を特定するものであることを特徴とする請求項１または２に記載の動き補償装置。
【請求項５】
前記制御部は、
前記バッファメモリに格納されている各前記分割領域の画素データ毎に、該分割領域が含まれる前記参照画像の先頭アドレスと、該分割領域が前記参照画像上における位置を示す位置情報とを管理情報として管理情報保持部と、
該管理情報保持部が保持した前記管理情報に基づいて前記読出部による読出しの制御を行う読出制御部とを備えることを特徴とする請求項１から５のいずれか１項に記載の動き補償装置。
【請求項６】
前記管理情報保持部は、前記分割領域の大きさを示すサイズ情報も前記管理情報として保持することを特徴とする請求項５に記載の動き補償装置。
【請求項７】
前記バッファメモリは、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）であることを特徴とする請求項１から６のいずれか１項に記載の動き補償装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動き補償より具体的には圧縮動画像の復号時にマクロブロック単位で動き補償をする技術に関する。
【背景技術】
【０００２】
近年、動画像を圧縮して情報量を削減する方法として種々の動画像圧縮技術が規格化されており、その代表的なものとしてＭＰＥＧ−４、Ｈ．２６４／ＭＰＥＧ−４  ＡＶＣ（ＭＰＥＧ−４  Ｐａｒｔ１０  Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ）、ＶＣ−１などのＭＰＥＧ技術がある。
【０００３】
これらの技術では、動画像信号の時間冗長性を軽減するために動き補償（ＭＣ：Ｍｏｔｉｏｎ  Ｃｏｍｐｅｎｓａｔｉｏｎ）処理が行われている。
【０００４】
特許文献１は、動き補償処理をする際に、現在復号中のマクロブロックの次に復号されるマクロブロックの参照領域を予測し、予測した参照領域を含む該参照領域より大きい領域の画素データを主記憶手段から読み出してキャッシュメモリに格納する手法を開示している。この手法は、現在復号中のマクロブロックの復号中に、次に復号されるマクロブロックの参照領域を予測して該参照領域の画素データをキャッシュメモリに格納しているので、予測が正しければ、次に復号されるマクロブロックの復号時に参照領域の画素データをキャッシュメモリから動き補償演算に提供することができるため、高速な動き補償処理ができる。また、予測した参照領域を含む該参照領域よりも大きい領域の画素データを主記憶手段から読み出してキャッシュメモリに格納するので、予測がずれた場合でもそのずれを吸収できる可能性が高い。
【０００５】
また、特許文献２に記載されたように、水平走査方向（横方向）のマクロブロック単位で順次処理を行う動き補償処理では、復号中のマクロブロックの参照領域の画素データは直前に動き補償処理をしたマクロブロックの参照領域の画素データの次のアドレスになる可能性が高い。ところで、この参照領域の画素データの主記憶手段における開始アドレスは、ランダムに発生し、アドレスのオフセットは一律ではない。一般に、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｒｏｙ）などの主記憶手段やメモリバスなどのスループット性能は、シングルアクセスに比べ、バーストアクセスの方が優れており、主記憶手段のコントローラやバスプロトコルは、バースト転送をより高速に実現するように実装されている。従って、復号中のマクロブロックの参照領域の画素データを主記憶手段から読み出す際に、次に復号するマクロブロックの参照領域の画素データまたはその一部を読み出している可能性が高い。特許文献２は、このような事情に基づき、現在の参照領域の画素データを読み出す際に、余分の画素データまで読出してキャッシュメモリに格納する手法を提案している。この手法によれば、次のマクロブロックに対して動き補償処理を行う際に、このマクロブロックの参照領域の一部の画素データが既にキャッシュメモリに格納されている場合、この一部の画素データをキャッシュメモリから供給することができるため、参領域の画素データの読み出す時間を短縮することができる（特許文献２の「００５０」〜「００５１」を参照）。
【０００６】
このように、圧縮動画像に対してマクロブロック単位で動き補償を処理する際に、現在復号中のマクロブロックの参照領域を含む該参照領域より大きい領域の画素データか、現在復号中のマクロブロックの次に復号するマクロブロックの参照領域を予測して該参照領域を含む該参照領域より大きい領域の画素データをキャッシュメモリに格納することによって、次に復号するマクロブロックの参照領域の画素データの一部がキャッシュメモリに格納されている（キャッシュヒット）場合に、この一部の画素データをキャッシュメモリから出力することにより動き補償処理の効率向上を図っている。
【０００７】
通常のキャッシュメモリは、データをラインと呼ぶある程度まとまった管理単位で管理するものであり、１つのラインは、データとそのアドレス、フラグなど属性情報のセットで構成される。キャッシュメモリは、ライン単位アドレスの下位ビットであるエントリアドレスによりラインを特定し、各ラインには、ライン単位アドレスの上位ビットが、タグと呼ばれるバッファに格納されている。また、１つのライン分のデータが該ラインに格納されたときに、該ラインのタグがセットされて該ラインにデータが格納されたことを示す。
【０００８】
データのアクセス要求があった際に、キャッシュメモリは、アクセスアドレスに含まれるエントリアドレスにより可能性のあるラインを特定し、特定したラインのタグと、アクセスアドレスの上位ビットとを比較することによってキャッシュのヒットを検出する。具体的には、アクセスアドレスの上位ビットと一致するタグがセットされていれば、キャッシュヒットとして該タグのラインから、アクセス要求されたデータを出力する。
【特許文献１】特開２００６−２７９３３０号公報
【特許文献２】特開２００３−２９６７２４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ここで、図１３を参照して、通常のキャッシュメモリのラインサイズと、動き補償処理時に必要とする参照領域の画素データ（以下参照データという）のサイズと、主記憶手段から読み出したデータ（以下読出データという）のサイズについて考える。
【００１０】
図１３は通常のキャッシュメモリ１の模式図である。図１３において、Ａ１−Ａ２−Ａ７−Ａ６や、Ａ６−Ａ７−Ａ１２−Ａ１１などにより示す太線矩形はそれぞれ１つのラインに該当し、キャッシュメモリ１は複数のこのようなラインにより構成されている。１ラインは、２のべき乗のビット数のサイズを有する。
【００１１】
各太線矩形内の細線により囲まれる小さい矩形（例えばＢ１１−Ｂ１２−Ｂ２２−Ｂ２１）は、主記憶手段からデータを読み出してキャッシュメモリに格納する際の格納単位のデータを示し、図１３の例では、１つのラインは、４つの格納単位のデータの大きさを有する。なお、この格納単位の大きさは例えば圧縮動画像を復号するＬＳＩの内部バスがクロック信号のサイクル毎に転送するデータのサイズ（ビット幅）である。
【００１２】
図１３において、Ｃ１−Ｃ２−Ｃ３−Ｃ４により示される矩形は、動き補償処理時の参照データを示す。この参照データは、主記憶手段から読み出されて、そのアドレスに対応するラインに格納される。
【００１３】
前述したように、参照データを主記憶手段から読み出す際に、参照領域を含む参照領域より大きい領域の画素データの読出しが行われている。そのため、Ｃ１−Ｃ２−Ｃ３−Ｃ４の参照データの読出時に、この参照データのみならず、例えばＢ１３−Ｂ１４−Ｂ４２−Ｂ４１の点線矩形が示す部分のデータ（読出データ）が読み出されてキャッシュメモリ１に格納されることになる。
【００１４】
ところで、通常のキャッシュメモリはライン単位でデータを管理し、ライン内に１ライン分のデータが格納されたときに該ラインのタグをセットする。したがって、図１３に示す例の場合、Ｂ１３−Ｂ１４−Ｂ４２−Ｂ４１が示す点線矩形内にデータが格納されているが、Ａ８−Ａ９−Ａ１４−Ａ１３が示すラインのタグのみはセットされる。Ａ２−Ａ３−Ａ８−Ａ７が示すラインと、Ａ１−Ａ３−Ａ８−Ａ７、Ａ７−Ａ８−Ａ１３−Ａ１２、Ａ１２−Ａ１３−Ａ１８−Ａ１７、Ａ３−Ａ４−Ａ９−Ａ８、Ａ１３−Ａ１４−Ａ１９−Ａ１８、Ａ４−Ａ５−Ａ１０−Ａ９、Ａ９−Ａ１０−Ａ１５−Ａ１４、Ａ１４−Ａ１５−Ａ２０−Ａ１９が示す各ライン内に、一部のデータしか格納されていないため、それらのタグがセットされない。
【００１５】
そのため、マクロブロックの復号時に、このマクロブロックの動き補償処理のための参照データの一部が、例えば図１３に示すＢ３１−Ｂ３２−Ｂ４２−Ｂ４１が示す矩形のデータである場合でも、これらのデータが属するラインのタグがセットされていないため、キャッシュミスとして、主記憶手段からこれらのデータの読出しが再度行われる。
【００１６】
キャッシュのヒット率を高めるために、キャッシュメモリのラインサイズを小さくすることが考えられる。しかし、キャッシュメモリのラインサイズを小さくすると、タグの容量が大きくなり、キャッシュメモリの制御回路が複雑化し回路規模が大きくなるという問題がある。一方、ラインサイズを大きくすると、キャッシュのヒット率が低下し、それに起因してシステム全体の処理効率も低下する。
【課題を解決するための手段】
【００１７】
本発明の一つの態様は、圧縮動画像の復号に際してマクロブロック単位で順次動き補償処理を行う動き補償装置である。この動き補償装置は、バッファメモリと、読出部と、読出対象領域特定部と、読出対象領域分割部と、制御部を備える。
【００１８】
読出部は、参照画像が記憶された外部メモリからデータの読出しを行い、読み出したデータをバッファメモリに格納する。
【００１９】
読出対象領域特定部は、マクロブロックに対する動き補償処理のための参照領域を含む参照画像が記憶された外部メモリから参照領域の画素データを読み出す際の読出対象領域を特定し、読出対象領域分割部はこの読出対象領域を複数の分割領域に分割する。
【００２０】
制御部は、読出対象領域特定部が特定した読出対象領域の読出しを読出部に行わせると共に、読出部の前回までの読出しによりバッファメモリに格納されたデータを分割領域毎に管理する。そして、読出対象領域が特定した今回の読出対象領域の各分割領域のうちの、バッファメモリにその画素データが格納されていない分割領域の画素データの読出しのみを読出部に行わせる。
【００２１】
なお、上記態様の動き補償装置を、方法や、装置、システムに置き換えて表現したものも、本発明の態様としては有効である。
【発明の効果】
【００２２】
本発明の技術によれば、圧縮動画像をマクロブロック単位で動き補償を行う際に、処理効率を高めつつ、回路規模の増大を抑制することができる。
【発明を実施するための最良の形態】
【００２３】
以下、図面を参照して本発明の実施の形態について説明する。
図１は、本発明の実施の形態となる復号装置１００を示す。例として復号装置１００はＭＰＥＧ−４に準拠したものであり、可変長符号復号部１１２と、逆量子化部１１４と、逆離散コサイン変換部１１６と、動き補償処理部１２０と、加算部１７０と、フィルタ処理部１７２と、メモリコントローラ１８０と、外部メモリ１９０を有する。なお、復号装置１００は動画像の輝度成分と色差成分について復号するが、以下において、「データ」を「輝度成分のデータ」として用い、輝度成分のみについて説明する。色差成分については、データサイズが異なるだけで、処理シーケンスは同じであるため、同様の方式で処理される。
【００２４】
可変長符号復号部１１２は、ＭＰＥＧ−４の圧縮動画データＳ０に対して可変長符号の復号を行って量子化係数と動きベクトルを得る。この処理は、水平走査順にマクロブロック単位で行われる。
【００２５】
逆量子化部１１４は、可変長符号復号部１１２が得た量子化係数を逆量子化し、変換係数を得る。逆離散コサイン変換部１１６は、逆量子化部１１４が得た変換係数に対して逆離散コサイン変換を行って動き予測残差を得る。
【００２６】
動き補償処理部１２０は、可変長符号復号部１１２が得た動きベクトルに基づいて、該動きベクトルが示す参照領域の画素データである参照データ（その詳細について後述する）に対して動き補償演算を行って動き予測データを得る。
【００２７】
加算部１７０は、逆離散コサイン変換部１１６が得た動き予測残差と、動き補償処理部１２０が得た動き予測データとを加算して加算データを得る。
【００２８】
フィルタ処理部１７２は、加算部１７０が得た加算データをフィルタリングし、復号済みのデータ（復号データＳ１）を得る。
【００２９】
メモリコントローラ１８０は、フィルタ処理部１７２が得た復号データＳ１を外部メモリ１９０に格納させると共に、動き補償処理部１２０から読出要求があった際に、該読出要求に応じたデータ（読出データ）を外部メモリ１９０から読み出して動き補償処理部１２０に備えられた後述のキャッシュメモリに出力する。
【００３０】
復号装置１００を詳細に説明する前に、まず、外部メモリとしてよく用いられるＳＤＲＡＭを例にして、圧縮動画像を復号する際に復号済みのデータを外部メモリに格納する態様および外部メモリからデータを読み出す態様について説明する。
【００３１】
図２は、ＳＤＲＡＭの構成を示す。ＳＤＲＡＭは、複数のバンクから構成され、各バンクは、さらに複数のカラムより構成される。１つのカラムは、１２８バイトや２５６バイト、５１２バイトなどの容量を有する。前述したように、ＳＤＲＡＭにアクセスする際に、バーストアクセスのほうが優れているため、ＳＤＲＡＭの制御部やメモリバスプロトコルは、バースト転送をより高速に実現するように実装されている。また、同じカラム内のデータへのアクセスであれば、バースト転送開始の位置がランダムでも転送効率が悪くならないことと、アクセスが連続した場合、連続したアクセスが異なるバンクに対してなされるものであれば転送効率が悪くならないことも知られている。
【００３２】
このような事情から、ＳＤＲＡＭで構成されたフレームバッファに動画像を格納する際に、一般的に、動画像のフレームの水平走査方向順に画素単位に格納するのではなく、フレームを複数の矩形ブロック（以下格納ブロックという）に分け、１つの格納ブロック内のデータが１つのカラムに格納されるように、かつ、相隣する格納ブロックが異なるバンクに格納されるようにしている。図３は、そのイメージを示す。
【００３３】
図３に示すように、１つのフレームは、格納ブロック１、格納ブロック２、・・・などの複数の格納ブロックを有する。格納ブロックと、フレームバッファ内のカラムは１対１に対応し、各格納ブロック内のデータは、それぞれが対応するカラムに格納される。図中括弧の中は、その格納ブロックが格納されるバンクの番号であり、隣接する格納ブロックは、異なるバンクの中に格納されるようになっている。
【００３４】
動画像のフレームは、図３に示す態様でフレームバッファに格納される。フレームバッファからデータを読み出す際に、バンク番号、バンク内のカラム番号、カラム内の位置（ローアドレス）を指定する。
【００３５】
また、フレームバッファへのデータの格納およびフレームバッファからデータの読出しは、アクセス単位（１サイクルでやり取りするデータの量）で行われるので、各カラム内に格納されるデータのサイズは、アクセス単位の整数倍になる。
【００３６】
ここでフレームバッファへアクセスする際のアクセス単位について考える。前述したように、ＳＤＲＡＭとのデータ転送はバースト転送が用いられ、バースト転送の単位（ビット幅）は例えば８ビットや１６ビットなどである。また、近年、ＳＤＲＡＭではＤＤＲ−ＳＤＲＡＭ（Ｄｏｕｂｌｅ−Ｄａｔａ−Ｒａｔｅ  ＳＤＲＡＭ）が主流になっている。図４の左側に示すように、ＤＤＲ−ＳＤＲＡＭのメモリバスバスプロトコルは、高速なクロック信号の立ち上がりと立ち下がりの両エッジにそれぞれ同期してデータをやり取りする。このプロトコルをそのままＬＳＩで用いることが困難であるため、ＤＤＲ−ＳＤＲＡＭとデータのやり取りをＬＳＩは、図４の右側に示すように、ビット幅とクロック周波数の変換を行い、クロック信号の周波数を下げると共にデータのビット幅を増やして、クロック信号の立ち上がりエッジのみに同期してＬＳＩの内部バスにデータを転送する。そのため、ＬＳＩからＤＤＲ−ＳＤＲＡＭへのアクセス単位は、バースト転送の単位より大きい。
【００３７】
すなわち、ＤＤＲ−ＳＤＲＡＭで構成されたフレームバッファでは、動画像のフレームは格納ブロック毎に対応するカラムに格納され、かつ、隣接する格納ブロックとそれぞれ対応するカラムは、異なるバンク内にある。フレームバッファへアクセスする際のアクセス単位は、ＳＤＲＡＭのバースト転送より大きく、各カラムにはアクセス単位の整数倍のデータが格納される。
【００３８】
以上の説明を踏まえて、図１に示す実施の形態の復号装置１００におけるメモリコントローラ１８０と外部メモリ１９０を説明する。
【００３９】
外部メモリ１９０は、ＤＤＲ−ＳＤＲＡＭにより構成されたフレームバッファである。フィルタ処理部１７２は、復号データＳ１を得てメモリコントローラ１８０に出力し、メモリコントローラ１８０は、復号データＳ１を外部メモリ１９０に格納する。
【００４０】
本実施の形態において、例として、外部メモリ１９０の各カラムのサイズは１６バイト×１６バイト（２５６バイト）であり、メモリコントローラ１８０が外部メモリ１９０へアクセスする際のアクセス単位は６４ビット（８バイト）である。また、復号データＳ１の１画素が８ビットであり、外部メモリ１９０への１アクセス単位は、水平走査方向の連続した８画素分のデータである。そのため、本実施の形態において、復号データＳ１は、図５に示す格納ブロック単位（１６画素×１６画素）で外部メモリ１９０に格納され、外部メモリ１９０内における１つのカラムに、１つの格納ブロックのデータが格納される。
【００４１】
また、本実施の形態において、各格納ブロックへのアドレスの割り当ては、水平８画素単位でなされている。図６は、アドレスの割り当て順の例を示す。図中矢印が示すように、格納ブロック内において、左上の８画素（図中０で表す）→左下の８画素→右上の８画素右下の８画素（図中３１で表す）の順でアドレスが割り当てられている。
【００４２】
このようなアドレスの割り当ては、フレーム内において、左上の格納ブロックから水平走査順に各格納ブロックに対してなされる。図７は、４格納ブロック×４格納ブロックのフレームのアドレスの割り当て例を示しており、図示のように、左上の格納ブロックから水平走査方向の順で格納ブロック毎に３２個のアドレスが割り当てられている。これらのアドレスの上位ビットは、バンク番号の指定や、格納ブロックがフレームにおける位置を示すことができる。図７から分かるように、アドレスの割り当ては、フレームの左上の８画素からスタートし、水平走査順に行われているので、格納ブロックがフレームにおける位置はフレームの先頭（左上端）との相対位置であり、左上の８画素のアドレスは、他の各８画素のベースアドレスとなる。
【００４３】
次いで復号装置１００の動き補償処理部１２０を説明する。
図８は、動き補償処理部１２０を示す。動き補償処理部１２０は、水平走査方向順にマクロブロック単位で動き補償を行うものであり、参照領域特定部１２２と、読出対象領域特定部１２４と、読出対象領域分割部１２６と、制御部１３０と、バッファメモリ１４０と、出力部１５０と、動き補償演算部１６０を備える。なお、図８において、様々な処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、ＣＰＵ、メモリ、その他のＬＳＩで構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【００４４】
参照領域特定部１２２は、可変長符号復号部１１２が得た復号中のマクロブロックの動きベクトルを入力し、この動きベクトルが示す領域を参照領域として特定する。マクロブロックのサイズおよび参照領域のサイズが規格によって異なり、本実施の形態において、マクロブロックのサイズは８画素×８画素であり、参照領域のサイズは１３画素×１３画素である。
【００４５】
参照領域は既に復号済みのフレーム（以下参照フレームという）上の領域であり、そのデータはフレームバッファとして機能する外部メモリ１９０に格納されている。読出対象領域特定部１２４は、参照領域特定部１２２が特定した参照領域に基づいて、外部メモリ１９０からデータを読み出す領域（読出対象領域）を特定する。図９を参照して参照領域と読出対象領域の関係を説明する。
【００４６】
前述したように、外部メモリ１９０へのアクセスが水平走査方向に並ぶ８画素単位であるので、１３画素×１３画素の参照領域のデータを外部メモリ１９０から読み出すために、この参照領域を含む１６画素×１３画素か２４画素×１３画素の読出対象領域のデータを読み出すことになる。図９において、点線枠が示す１３画素×１３画素の領域が参照領域であり、図９の左部分と右部分は１６画素×１３画素を読み出す場合と２４画素×１３画素を読み出す場合をそれぞれ示す。読出対象領域特定部１２４は、参照領域特定部１２２が特定した１３画素×１３画素の参照領域に基づいて、図９に示す１６画素×１３画素または２４画素×１３画素の読出対象領域を特定する。
【００４７】
すなわち、復号中のマクロブロックに対して動き補償をするための参照領域のデータを読み出すために、実際に読み出す領域（読出対象領域）はこの参照領域を含み参照領域より大きい。
【００４８】
読出対象領域分割部１２６は、読出対象領域特定部１２４が特定した読出対象領域を複数の分割領域に分割する。本実施の形態において、読出対象領域分割部１２６は、読出対象領域に対して、水平方向において、アクセス単位と同じ大きさの８画素単位に分割する。図１０に示すように、１６画素×１３画素の読出対象領域は８画素×１３画素の２つの分割領域に分割され、２４画素×１３画素の読出対象領域は８画素×１３画素の３つの分割領域に分割される。
【００４９】
読出対象領域分割部１２６は、このようにして読出対象領域を分割し、各分割領域のサイズ情報と位置情報、およびベースアドレスを読出対象情報として制御部１３０に出力する。サイズ情報は分割領域の大きさ（図１０の例では８画素×１３画素）である。位置情報は、分割領域が参照フレーム上における位置を示すものであり、参照フレームの左上端を基準とする。ベースアドレスは、参照フレームの先頭アドレスであり、本実施の形態においては、参照フレームの左上の８画素のアドレスとなる。
【００５０】
制御部１３０は管理情報バッファ１３２と読出制御部１３４を備え、読出制御部１３４は、読出対象領域分割部１２６からの読出対象情報と、管理情報バッファ１３２に記憶された管理情報とに基づいて外部メモリ１９０からのデータの読出しを制御する。なお、管理情報は、バッファメモリ１４０にその画素データが格納されている分割領域の読出対象情報である。
【００５１】
ここでまず、管理情報バッファ１３２に管理情報が記憶されていない場合について説明する。この場合、復号中のマクロブロックは、それが属するフレームの各マクロブロックのうちの最初に復号されるマクロブロックすなわち該フレームの左上端のマクロブロックである。
【００５２】
読出制御部１３４は、読出対象領域分割部１２６からの読出対象情報が示す各分割領域の読出要求をメモリコントローラ１８０に出力すると共に、これらの分割領域の読出対象情報を管理情報として管理情報バッファ１３２に格納させる。
【００５３】
メモリコントローラ１８０は、読出部として機能し、読出制御部１３４からの読出要求を受信すると、該当する分割領域の画素データを外部メモリ１９０から読み出してバッファメモリ１４０に出力する。なお、メモリコントローラ１８０は、外部メモリ１９０が出力するデータのビット幅に対してビット幅変換と周波数変換を行う機能が実装されている。
【００５４】
バッファメモリ１４０は、メモリコントローラ１８０が読み出したデータ（読出データ）を格納する。この読出データは、参照領域特定部１２２が特定した参照領域のデータを含む１６画素×１３画素または２４画素×１３画素の読出対象領域の画素データである。
【００５５】
出力部１５０は、制御部１３０の管理情報バッファ１３２に格納された管理情報に基づいて、参照領域特定部１２２が特定した１３画素×１３画素の参照領域の画素データ（参照データ）がバッファメモリ１４０に格納されているか否かを確認する。このとき、キャッシュメモリに格納された各分割領域の管理情報が既に管理情報バッファ１３２に格納されているので、出力部１５０は、参照データをバッファメモリ１４０から読み出して動き補償演算部１６０に出力する。
【００５６】
動き補償演算部１６０は、出力部１５０からの参照データを用いて動き補償演算を行い、復号中のマクロブロックの動き予測データを得る。
【００５７】
次いで管理情報バッファ１３２に管理情報が記憶されている場合について説明する。上記の説明から分かるように、管理情報バッファ１３２に格納された管理情報は、外部メモリ１９０からそのデータが読み出されバッファメモリ１４０に格納された各分割領域の管理情報である。
【００５８】
ここで、復号中のマクロブロックの読出対象領域とその後に復号するマクロブロックの読出対象領域の関係について考える。マクロブロックの参照領域はその動きベクトルにより示されるが、隣接するマクロブロックは同じ動きベクトルを有する確率が高い。また、隣接するマクロブロックの動きベクトルが異なる場合でも、２つの動きベクトルが指す参照領域間の差は整数個の画素に満たさないことが多い。さらに、本実施の形態において、参照領域より大きい領域を読出対象領域に特定しているので、隣接するマクロブロックの読出対象領域の大部分は高い確率で重なる。
【００５９】
復号中のマクロブロックの次に復号するマクロブロックは、復号中のマクロブロックと同一の水平方向走査ラインに位置している場合、この復号中のマクロブロックと水平方向に隣接する。また、復号中のマクロブロックの次に復号するマクロブロックは、復号中のマクロブロックの水平方向走査ラインの１つ下の水平方向走査ラインに位置する場合には、復号中のマクロブロックの水平方向走査ラインに位置する各マクロブロックの復号が既に完了している。そのため、次に復号するマクロブロックは、復号中のマクロブロックの水平方向走査ラインに位置する既に復号が完了しているマクロブロックと垂直方向に隣接する。
【００６０】
すなわち、動き補償演算のために外部メモリ１９０から読み出してバッファメモリ１４０に格納された読出データには、復号中のマクロブロックの後に復号するマクロブロックの読出データの少なくとも一部を含むことが多い。
【００６１】
読出制御部１３４は、管理情報バッファ１３２に管理情報が記憶されている場合に、読出対象領域分割部１２６からの読出対象情報と、管理情報バッファ１３２に記憶された管理情報とを比較する。読出制御部１３４は、読出対象領域分割部１２６からの読出対象情報が示す分割領域のうちの、管理情報バッファ１３２にその管理情報が格納されていない分割領域に対してのみ、読出要求をメモリコントローラ１８０に出力する。また、読出制御部１３４は、読出要求をした分割領域の読出対象情報を管理情報として管理情報バッファ１３２に格納させる。
【００６２】
なお、読出対象領域分割部１２６からの読出対象情報が示す分割領域のうちの、管理情報バッファ１３２にその管理情報が格納されている分割領域の画素データは、前に復号したマクロブロックの動き補償演算のために既に外部メモリ１９０から読み出されてバッファメモリ１４０に格納されている。
【００６３】
メモリコントローラ１８０、バッファメモリ１４０、出力部１５０、動き補償演算部１６０のこの後の処理は、前述した１つ目のマクロブロックのときと同じである。
【００６４】
本実施の形態において、バッファメモリ１４０は、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）メモリである。管理情報バッファ１３２もＦＩＦＯメモリであり、バッファメモリ１４０が格納できる分割領域の分の管理情報を記憶する容量を有する。バッファメモリ１４０にその画素データが格納された分割領域の管理情報は管理情報バッファ１３２に格納されており、バッファメモリ１４０が分割領域の画素データを破棄する際に、管理情報バッファ１３２もこの分割領域の管理情報を破棄する。
【００６５】
図１１は、図８に示す動き補償処理部１２０における処理の流れを示すフローチャートである。参照領域特定部１２２は、復号中のマクロブロックの動きベクトルが示す１３画素×１３画素の参照領域を特定し（Ｓ１０）、読出対象領域特定部１２４は、参照領域特定部が特定した参照領域に応じて、該参照領域を含む１６画素×１３画素または２４画素×１３画素の読出対象領域を特定する（Ｓ２０）。読出対象領域分割部１２６は、読出対象領域特定部１２４が特定した読出対象領域を８画素×１３画素の分割領域に分割すると共に、これらの分割領域が位置する参照フレームのベースアドレス、および各分割領域が参照フレームにおける位置を示す位置情報とサイズ情報を読出対象情報として制御部１３０に出力する（Ｓ３０）。
【００６６】
制御部１３０の読出制御部１３４は、読出対象領域分割部１２６から出力された各分割領域の読出対象情報と、管理情報バッファ１３２に分割領域毎に格納された管理情報とを比較し、読出対象情報が示す分割領域のうちの、その管理情報が管理情報バッファ１３２に格納されていない分割領域についてのみ読出要求をメモリコントローラ１８０に出力する（Ｓ４０、Ｓ５０：Ｎｏ、Ｓ６０）。また、ステップＳ６０において、読出制御部１３４は、読出要求をした分割領域の読出対象情報を、該分割領域の管理情報として管理情報バッファ１３２に出力して格納させる。
【００６７】
メモリコントローラ１８０は、読出制御部１３４からの読出要求に応じて外部メモリ１９０から当該分割領域の画素データを読み出して読出データをバッファメモリ１４０に格納する（Ｓ７０、Ｓ８０）。
【００６８】
すなわち、復号中のマクロブロックの読出領域の各分割領域のうちの、その画素データがバッファメモリ１４０に格納されていない分割領域の画素データは外部メモリ１９０から読み出されてバッファメモリ１４０に格納される。復号中のマクロブロックの読出領域の各分割領域のうちの、その画素データが既にバッファメモリ１４０に格納されている分割領域の画素データについては、外部メモリ１９０からの読出しがなされない。
【００６９】
これにより、復号中のマクロブロックの参照領域を含む読出対象領域の画素データがバッファメモリ１４０に格納され、管理情報バッファ１３２にはそれらの管理情報が格納される。そのため、出力部１５０は、管理情報バッファ１３２を参照して読出対象領域の画素データがバッファメモリ１４０に格納されていることを知ることができる。出力部１５０は、参照領域特定部１２２が特定した１３画素×１３画素の参照領域の画素データのアドレスを特定し、特定したアドレスから参照データを読み出して動き補償演算部１６０に出力する（Ｓ９０、Ｓ１００）。
【００７０】
動き補償演算部１６０は、出力部１５０からの参照データを用いて動き補償演算を行って動き予測データを得、この動き予測データを加算部１７０に出力する（Ｓ１１０）。これをもって、復号中のマクロブロックの動き補償処理が完了する。
【００７１】
図１２は、復号装置１００のバッファメモリ１４０における参照領域の画素データおよび読出対象領域の画素データの格納態様と管理態様を示す。なお、図１３に示す従来のキャッシュメモリ１と比較しやすいために、参照領域の画素データ、読出対象領域の画素データを示す枠に対して同じ符号で表示する。
【００７２】
図１２に示すように、バッファメモリ１４０において、画素データが格納単位で格納される。この格納単位は、動き補償処理部１２０の内部バス上を転送されるデータのビット幅であり、外部メモリ１９０へのアクセス単位と同一である。本実施の形態においてこの格納単位は６４ビットの８画素分となる。図１２に示す例では、参照領域の画素データは、Ｃ１−Ｃ２−Ｃ３−Ｃ４の点線枠で示す１３画素×１３画素のデータであり、読出対象領域の画素データは、Ｂ１３−Ｂ１４−Ｂ４２−Ｂ４１で示す２４画素×１３画素のデータである。
【００７３】
制御部１３０は、読出対象領域を８画素×１３画素の分割領域に分割して得た分割領域毎にバッファメモリ１４０に格納されたデータを管理している。図１２に示すように、Ｂ１３−Ｂ１４−Ｂ４２−Ｂ４１で示す読出対象領域の画素データは、Ｂ１３−Ｂ１４−Ｄ２−Ｄ１、Ｄ１−Ｄ２−Ｄ３−Ｄ４、Ｄ４−Ｄ３−Ｂ４２−Ｂ４１の３つの分割領域の画素データに分割されている。制御部１３０の管理情報バッファ１３２は、これらの分割領域毎に管理情報を保持している。
【００７４】
従来のキャッシュメモリは、データが外部メモリに記憶されたアドレスそのものを用いてライン単位でデータを管理するので、ラインサイズは２のべき乗ビット数であり、ライン内にラインサイズ分のデータが格納されてはじめてこのライン内のデータが利用できる。そのため、図１３に示す例のように、Ｂ３１−Ｂ３２−Ｂ４２−Ｂ４１が示すデータが格納されている場合でも、これらのデータが属するラインのタグがセットされないため、キャッシュミスとして、主記憶手段からこれらのデータの読出しが再度行われる。
【００７５】
それに対して、本実施の形態では、バッファメモリ１４０に格納されたデータを分割領域単位で管理し、管理情報として分割領域の位置情報を用いることによって、参照フレーム上の任意の位置（アドレス）からの画素データを管理することができる。そのため、バッファメモリ１４０に画素データが格納されている分割領域であれば、管理情報バッファ１３２にはその管理情報が保持されており、バッファメモリ１４０から出力可能であり、動き補償処理の効率を高めることができる。
【００７６】
また、本実施の形態において、分割領域のサイズ情報も管理情報に用いる。こうすることによって、データを分割領域のサイズで管理することができ、動き補償演算に参照データを供給するための、外部メモリからの読出しを必要最小限に抑えることができる。さらに、バッファメモリ１４０の容量も分割領域のサイズで管理することができるので、参照領域乃至読出対象領域の大きさが可変である場合や参照データのサイズが２のべき乗ビット数ではない場合においても、読出データを詰めて格納することができ効率的にバッファメモリを利用することができる。すなわち、格納されたデータの再利用に際して、小さなバッファメモリ容量で従来のキャッシュメモリと同様な再利用効果を得ることができる。
【００７７】
また、Ｈ．２６４やＶＣ−１の規格に準拠した動画像の場合、マクロブロックのサイズは４画素×４画素や４画素×８画素などの小さいサイズになり、参照領域のサイズ、読出対象領域のサイズも小さくなる場合がある。このような場合においても、参照領域のサイズに応じた読出対象領域を分割して得た分割領域単位でバッファメモリに格納されたデータを管理することができるので、バッファメモリに格納されたデータの再利用における本発明の技術の効果をより発揮することができる。
【００７８】
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、さまざまな変更、増減を加えてもよい。これらの変更、増減が加えられた変形例も本発明の範囲にあることは当業者に理解されるところである。
【００７９】
例えば、本実施の形態の復号装置１００において、分割領域の大きさが固定した８画素×１３画素である。Ｈ．２６４やＶＣ−１などの場合は、マクロブロックのサイズが可変であるため、参照領域のサイズ、読出対象領域のサイズも可変である。このような場合においても、外部メモリからの読出データの読出しおよびバッファメモリに格納されたデータの管理に本発明の技術を適用することができる。
【００８０】
また、本実施の形態の復号装置１００は、復号中のマクロブロックの動き補償演算処理のために読み出した読出データをバッファメモリに蓄積しておき、時系列に後に処理されるマクロブロックの動き補償演算処理の際に、バッファメモリに蓄積されたデータを再利用する形態に本発明の技術を適用したものである。本発明は、特許文献１に記載されたような、現在のマクロブロックの復号時に次の参照領域を予測し、予測した参照領域の画素データを外部メモリから読み出してキャッシュメモリに格納する形態の復号装置にも本発明の技術を適用することができる。この場合、予測された参照領域について読出対象領域を特定すればよい。
【００８１】
また、本実施の形態の復号装置１００は、外部メモリ１９０の構造上の理由から参照領域より大きい読出対象領域の画素データを外部メモリ１９０から読み出しているが、たとえば特許文献２に記載されたように、キャッシュメモリのヒット率を高めるために意図的に参照領域を含む参照領域より大きい領域の画素データを読み出す形態の復号装置にも、本発明の技術を適用することができる。
【図面の簡単な説明】
【００８２】
【図１】本発明の実施の形態にかかる復号装置を示す図である。
【図２】図１に示す復号装置における外部メモリを説明するための図である。
【図３】フレームが外部メモリに格納される態様を示す図である。
【図４】外部メモリへアクセスする際のアクセス単位を説明するための図である。
【図５】外部メモリの１カラムに格納される格納ブロックのデータを示す図である。
【図６】格納ブロック内のデータに対するアドレスの割当てを説明するための図である。
【図７】１フレームのデータのアドレスの割当て例を示す図である。
【図８】図１に示す復号装置における動き補償処理部を示す図である。
【図９】参照領域と読出対象領域の関係を示す図である。
【図１０】読出対象領域の分割を説明するための図である。
【図１１】図８に示す動き補償処理部における処理の流れを示すフローチャートである。
【図１２】図８に示す動き補償処理部のバッファメモリにおけるデータの格納態様および管理態様を示す図である。
【図１３】動き補償処理に従来のキャッシュメモリを利用する場合の問題点を説明するための図である。
【符号の説明】
【００８３】
１００  復号装置
１１２  可変長符号復号部
１１４  逆量子化部
１１６  逆離散コサイン変換部
１２０  動き補償処理部
１２２  参照領域特定部
１２４  読出対象領域特定部
１２６  読出対象領域分割部
１３０  制御部
１３２  管理情報バッファ
１３４  読出制御部
１４０  バッファメモリ
１５０  出力部
１６０  動き補償演算部
１７０  加算部
１７２  フィルタ処理部
１８０  メモリコントローラ
１９０  外部メモリ
【図１】
2008271292.tif 000003
【図２】
2008271292.tif 000004
【図３】
2008271292.tif 000005
【図４】
2008271292.tif 000006
【図５】
2008271292.tif 000007
【図６】
2008271292.tif 000008
【図７】
2008271292.tif 000009
【図８】
2008271292.tif 000010
【図９】
2008271292.tif 000011
【図１０】
2008271292.tif 000012
【図１１】
2008271292.tif 000013
【図１２】
2008271292.tif 000014
【図１３】
2008271292.tif 000015