(57)【特許請求の範囲】
【請求項１】
メモリへのアクセスを制御するメモリコントローラにおいて、
入力データをブロックに分割し、圧縮する圧縮部と、
該圧縮されたデータの該ブロックが、非圧縮の場合に比べ、データ量が少なくなった場合には、圧縮されたデータのブロックを、少なくならなかった場合には、非圧縮データのブロックを、該非圧縮のデータのブロックを格納可能なように、各領域ブロックに分割されたメモリの格納領域の先頭アドレスから、メモリに格納させる格納部と、
該メモリに格納されたデータのブロックに対応して分割された格納領域に、データ量、データが圧縮データか非圧縮データかを示す情報からなるマップ情報を別途格納するマップ情報格納部と、
を備えることを特徴とするメモリコントローラ。
【請求項２】
前記メモリから読み込んだ前記データのブロックを展開する展開部と、
前記マップ情報を参照し、メモリから読み込んだデータのブロックが、圧縮されたデータである場合には、前記展開部によって展開されたデータを、非圧縮のデータの場合には、読み込んだデータそのままを選択して出力する出力部と、
を更に備えることを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記圧縮部は、前記データのブロック内のみを参照する可逆な圧縮方法を用いてデータのブロックを圧縮することを特徴とする請求項１に記載のメモリコントローラ。
【請求項４】
前記データのブロックは、メモリへの最小アクセス単位の整数倍の大きさであることを特徴とする請求項１に記載のメモリコントローラ。
【請求項５】
メモリに対する１つの読み出し／書き込みアクセスリクエストは、１つ以上のデータのブロックへのアクセスからなり、各データのブロックへのアクセスはひとつ以上の前記最小アクセス単位へのアクセスとなり、全ての該最小アクセス単位に格納されているデータが無圧縮であった場合における該データのブロックへのアクセスでアクセスされる該最小アクセス単位数をmとし、該最小アクセス単位のビット数をnビットとすると、該データのブロックの圧縮結果がm×nビット以下となった場合に、圧縮によりデータ量が少なくなったと判断することを特徴とする請求項４に記載のメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリへのアクセスを制御するメモリコントローラに関する。
【背景技術】
【０００２】
ＭＰＥＧのエンコーダ・デコーダのフレームメモリは、デコード・エンコード処理機能を有するＬＳＩに外付けされるか、または同一パッケージに封入されるＳＤＲＡＭ／ＤＤＲ−ＳＤＲＡＭ等で実現されるのが一般的である。
【０００３】
ハイビジョン放送、大容量光ディスクなどの普及により、動画像の符号化、復号においてＨＤＴＶ画像(High Definition TV：1920x1080)を扱うことが一般的になってきている。今後、更に大画面のＵＨＤＴＶ画像(Ultra High Definition TV：7680x4320、3840x2160)を使用することが検討されており、ＭＰＥＧのデコーダ・エンコーダの更なる処理性能向上が望まれている。同様に三次元グラフィックス描画処理においても表示デバイスの高解像度化、描画画像の高品位化により高品質の描画処理が求められている。このような傾向は、デコーダ・エンコーダ機能または三次元グラフィックス描画機能を有するＬＳＩと外付けＳＤＲＡＭ間に要求される帯域も増大する事を意味する。この帯域を増加する手段としては、ＳＤＲＡＭ素子数の増加、採用ＳＤＲＡＭのビット幅(ＬＳＩピン数)増加、クロック周波数の向上等が考えられるが、その結果として、システム全体の高価格化、消費電力の増大等が引き起こされるため、何らかの手段でＳＤＲＡＭに対する要求帯域を削減する技術が求められている。この問題に対処する方法として、ＭＰＥＧなどの画像の符号化・復号とは別に、ＳＤＲＡＭに画像データを圧縮して格納することが考えられる。画像データを圧縮して格納しておくと、画像データをＳＤＲＡＭから読み出したり、ＳＤＲＡＭに格納する場合に転送するデータ量が減少するので、１回のアクセスで転送するデータ量を少なくすることができ、ＳＤＲＡＭに対する要求帯域を削減することができる。
【０００４】
従来技術としては、以下のような技術があった。例えば、復号結果画像を非可逆な手段（たとえば、間引き）で圧縮する技術や、可逆圧縮方式を用いて、フレームメモリ用の圧縮／展開を行なう技術などがある。
【０００５】
更には、可逆圧縮を用いており、参照対象となるＩ／Ｐピクチャに対しては、任意のブロックに対するアクセスが可能な手段を提供するものなどがあった。
したがって、動画像のデコード・エンコード処理または、三次元グラフィックス描画処理を行うＬＳＩで使用するメモリコントローラは、以下のような機能を持つことが望ましい。
・メモリのデータの圧縮方法が可逆性を備える
・データへのアクセスがランダムアクセス性を備える
・保存・圧縮対象となる主データ以外に必要となる管理情報がなるべく小さい
・いかなるデータ、アクセスにおいてもメモリ使用量、メモリ帯域を非圧縮状態より低く抑えることができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−２６６９７０号公報
【特許文献２】特開２００８−２２７８８８号公報
【特許文献３】特開平１０−２２４８０５号公報
【特許文献４】特開平１１−２３４４９２号公報
【特許文献５】特開平１０−１３６１７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の課題は、メモリに要求される帯域を削減することのできるメモリコントローラを提供することである。
【課題を解決するための手段】
【０００８】
本発明のメモリコントローラは、メモリへのアクセスを制御するメモリコントローラにおいて、入力データをブロックに分割し、圧縮する圧縮部と、該圧縮されたデータの該ブロックが、非圧縮の場合に比べ、データ量が少なくなった場合には、圧縮されたデータのブロックを、少なくならなかった場合には、非圧縮データのブロックを、該非圧縮のデータのブロックを格納可能なように、各領域ブロックに分割されたメモリの格納領域の先頭アドレスから、メモリに格納させる格納部と、該メモリに格納されたデータのブロックに対応して分割された格納領域に、データ量、データが圧縮データか非圧縮データかを示す情報からなるマップ情報を別途格納するマップ情報格納部とを備える。
【発明の効果】
【０００９】
開示の装置によれば、メモリに要求される帯域を削減することのできるメモリコントローラを提供することができる。
【図面の簡単な説明】
【００１０】
【図１】本実施形態に従ったメモリコントローラを示すブロック図である。
【図２】書き込み制御部による一つの書き込みリクエストの処理のフローである。
【図３】読み出し制御部による一つの読み出しリクエストの処理フローである。
【図４】本実施形態によるメモリコントローラをH.264のデコーダのメモリコントローラとして適用した例を示す図である。
【図５】本実施形態に従った書き込み処理および読み出し処理の動作を説明する図（その１）である。
【図６】本実施形態に従った書き込み処理および読み出し処理の動作を説明する図（その２）である。
【図７】本実施形態に従った書き込み処理および読み出し処理の動作を説明する図（その３）である。
【図８】上記実施形態のマップ情報メモリ、ＳＤＲＡＭのマップ情報のデータ構造を説明する図（その１）である。
【図９】上記実施形態のマップ情報メモリ、ＳＤＲＡＭのマップ情報のデータ構造を説明する図（その２）である。
【図１０】上記実施形態のマップ情報メモリ、ＳＤＲＡＭのマップ情報のデータ構造を説明する図（その３）である。
【発明を実施するための形態】
【００１１】
本発明の実施形態に従ったメモリコントローラは、以下の構成を備える。
・メモリ内に確保される各領域ブロックがどの方式（２つ以上から選択可能。うちひとつは非圧縮、他は可逆圧縮）で記憶されたかどうか、及び、どの程度のデータサイズに圧縮できたかを示すマップ情報を保持する機能。ここで、メモリ内は、データを所定のデータサイズで分割したデータのブロックを格納する領域ブロックに分割されているとする。また、データサイズは、メモリへの書き込み時および読み出し時のメモリアクセスにおけるアクセス単位（ユニット）が何個分かで示す。ここで、メモリに格納されるデータの圧縮方法は限定しないこととする。各領域ブロックに格納されるデータが非圧縮と可逆圧縮の２通りあるのは、データの圧縮方法によっては、データに処理を行った場合、データ量が圧縮されず、かえって、増加する場合があることによる。データの圧縮処理を行って、実際に、データの量が圧縮された場合にのみ、データを圧縮された状態で格納し、データ量が圧縮されなかった場合には、非圧縮のデータを格納するようにすることを意図している。
【００１２】
・書き込み時、データのブロック毎に前記可逆圧縮方式で圧縮することにより、非圧縮時よりもデータ量が少ないデータとなるかどうかを判定し、少なくなるデータのブロックは、圧縮したデータを、メモリ内の領域ブロック内の定められた位置に書き込み、データ量が多くなるデータのブロックは、非圧縮のデータを領域ブロックにそのまま書き込み、ブロック毎の方式選択結果（どの方式を使ったか）及び圧縮後のデータサイズをマップ情報保持機能に送る書き込み機能。ここで、分割されたデータ（データのブロック）が、圧縮された場合には、圧縮されたデータを、メモリ内の領域ブロックの先頭から格納する。圧縮されたデータは、非圧縮のデータよりデータ量が少なくなっているので、領域ブロックには、圧縮されたデータが格納されている部分と、空き領域となっている部分とが生じる。次の分割されたデータを格納する場合には、前の領域ブロックの空き領域につめて格納するのではなく、次の領域ブロックの先頭から格納する。したがって、メモリ内は、圧縮されたデータが格納される場合には、圧縮データが格納されている部分と空き領域となっている部分が交互に生じる状態となる。なお、マップ情報は、マップ情報の内容により、データ量が大きくなってしまうことがある。マップ情報は、メモリの領域ブロックに対応して、データ領域が分割されたものとする。メモリ内のどの領域ブロックのデータを読み出すかに対応して、どのデータ領域からマップ情報を読み込んだら良いかが分かるようにする。以上のようにすると、マップ情報は、圧縮／非圧縮の別と、データ量の情報のみでよくなり、マップ情報のデータ量が少なくてすむ。
【００１３】
・読み出し時、マップ情報保持機能からアクセス対象となる領域を含むブロックのマップ情報を取り出し、非圧縮領域ブロックはブロック内の全データをそのまま、圧縮ブロックはブロック内の定められた位置（書き込み時に圧縮データを書き込んだ位置）及び定められたサイズのデータのみを読み出し、圧縮データから元のデータを復元する読み込み機能。
【００１４】
・前記の可逆圧縮方法は分割したデータ内の情報のみを用いた圧縮手法とする（隣接するデータの情報を用いないことで圧縮率は低下するが、格納後に読み出す際のランダムアクセス性に優れる）。
【００１５】
・以下の条件を備える事（いかなるアクセスに対しても無圧縮時より帯域を消費しないための条件）
・・メモリコントローラの制御対象となるメモリの最小アクセス単位（以下ユニットと記載）を複数個まとめたものをデータのブロックとする（これはビット幅×最小バースト長になる。たとえば16bit ＤＤＲ２−ＳＤＲＡＭでは16×4=64bit）。
・・このメモリコントローラに対する１つの読み出し／書き込みリクエストは、１つ以上の領域ブロックへのアクセスになり、各領域ブロックへのアクセスはひとつ以上のユニットへのアクセスになる。全てのユニットに格納されているデータが無圧縮であった場合に、領域ブロックへのアクセスでアクセスされるユニット数の全アクセスリクエスト中での最小値をm（ここでは、１ブロックのサイズが一定ではなく、ブロックごとに異なる場合も考慮してこのように記載している。最小値ｍというのは、もっとも小さいブロックのユニット数である。１ブロックを構成するユニットの個数が一定の場合には、１ブロックのユニット数がｍとなる）、ユニットのビット数をnビットすると、ブロックの圧縮結果はm×nビット以下（非圧縮時のデータサイズ以下）である事。この意味は、以下の通りである。読み出し／書き込みリクエストの単位をユニットと呼び、無圧縮の場合の領域ブロック内のデータを読むときのユニット数をｍとし、ユニットのビット数をｎビットとする。すると、無圧縮の場合の領域データの量は、ｍ×ｎビットとなる。そして、圧縮結果のデータの量が、ｍ×ｎビット以下となる場合には、圧縮結果が、無圧縮の場合よりもデータ量が小さくなっていることを意味する。ｍとｎは、メモリコントローラの設計の際に決定されるので、ｍ×ｎビットは予め分かる量である。したがって、圧縮結果が、予め分かるｍ×ｎビットよりも小さくなる場合には、データ量が小さくできたことになるので、圧縮結果のデータをメモリに格納するようにするというものである。この条件を満たすことで、メモリへのアクセスの帯域が絶対に増加しないということを確保する効果がある。
【００１６】
以上の構成によれば、保存するデータのブロック毎に可逆圧縮、非圧縮のいずれかを選択することが可能になる。つまり、可逆性を備えた圧縮を行い、メモリ帯域を低減させたメモリコントローラを提供できる。また、主データ以外に必要となる管理情報（マップ情報）は、もしただひとつの可逆圧縮方法しか用いず、圧縮後のデータサイズ情報を用いない場合は、圧縮後のデータサイズが一定となるのでデータサイズに関する情報を持つ必要が無くなり、圧縮か非圧縮かを示す１ビットとなる。したがって、１ピクチャで必要となるデータ量は１ピクチャ内のブロック数に等しくなる。これは従来技術で必要とされる追加情報(ポインタテーブル)よりも小さなものとなる。
【００１７】
また、圧縮時は、いかなる場合においてもメモリ上に占める各ブロックのデータ量は非圧縮時以下となるので、いかなるデータ、アクセスにおいてもメモリ使用量を非圧縮状態より低く抑えることができる。
【００１８】
また、分割されたデータの各ブロックは他のブロックの情報を用いずに圧縮されているために、１つのブロックにアクセスする場合に、他のブロックにアクセスする必要が無いので、各ブロックを個別にアクセスでき、画像内の任意の位置に対するアクセスを可能としている。
【００１９】
更に、データのブロックが非圧縮の時は必ず、１ブロックを構成するｋ個のユニットへのアクセスが発生する。また、圧縮される時は、ｋ個以下のユニットへのアクセスとなる（ｋ個よりも少ないユニットへのアクセスとすることが可能かは、圧縮方式、またはマップ情報の使用法に依存する）。つまり、いかなるデータ、アクセスにおいても、非圧縮時に比べデータ量が少なくなっているので、アクセス時のデータ転送量が減少し、メモリ帯域を非圧縮状態より低く抑えることができる。
【００２０】
図１は、本実施形態に従ったメモリコントローラを示すブロック図である。図２は、書き込み制御部による一つの書き込みリクエストの処理のフローであり、図３は、読み出し制御部による一つの読み出しリクエストの処理フローである。
【００２１】
本実施形態では、分割されたデータのブロック内のユニット数を元ブロックのユニット数より小さいユニットに圧縮しており、ブロックのデータが圧縮される場合は常にブロック内の先頭ユニットから記録している。
【００２２】
また、マップ情報は、メモリコントローラ内の独立したメモリ（マップ情報メモリ）に置かれているが、「ブロック毎の圧縮」の対象となる領域をメモリコントローラの制御対象となるメモリの一部とし、マップ情報自身をメモリ上に置くことも可能である。
【００２３】
更に、マップ情報として、本実施形態では圧縮、非圧縮の情報のほかに圧縮後のユニット数も保持しているが、マップ情報を小さくする為に圧縮、非圧縮の情報のみを保持する実施形態も考えられる。
【００２４】
また、本実施形態では、使用される可逆圧縮方法については規定していない。可逆で、自ブロックのデータ以外は参照しないで圧縮を行う方法であれば、どのような可逆圧縮方式でも用いる事ができる。
【００２５】
図１において、ＬＳＩの他の処理ブロックから入力されたデータは、メモリコントローラ１０の書き込み部１１を介して、メモリへ送られる。書き込み部１１においては、入力されたデータを、圧縮処理部１３において、圧縮する。非圧縮のデータと圧縮されたデータとは、セレクタ１４に入力される。圧縮処理部１３の圧縮の結果、データ量がどのくらいになったかの情報が書き込み制御部１５に入力される。書き込み制御部１５は、圧縮の結果、データ量が小さくなった場合には、セレクタ１４に指示して、圧縮データをセレクタ１４から出力させ、メモリに送る。圧縮の結果、データ量が小さくならなかった場合には、非圧縮のデータを、セレクタ１４から出力させ、メモリに送る。データ量（ユニット数）の指示は、書き込み制御部１５からメモリに出力される書き込み制御信号によって伝達される。書き込み制御部１５は、マップ情報メモリ１９に、データサイズ、データが圧縮データか非圧縮データかの情報などを格納する。
【００２６】
メモリからデータを読み出す場合には、メモリコントローラ１０の読み出し部１２を介して読み出す。読み出し部１２では、マップ情報メモリから、データ量などを読み出し、読み出し制御信号により、読み出すデータの先頭アドレスとデータ量（ユニット数）を指定して読み出しを行う。そしてメモリから読み出されたデータを展開処理部１７で展開する。展開されたデータと、読み出したそのままのデータとがセレクタ１８に入力される。読み出し制御部１６は、マップ情報メモリから、読み出したデータが圧縮されたものか、非圧縮のものかのデータを取得する。読み出したデータが、圧縮されたものである場合には、セレクタ１８から、展開されたデータを出力させる。読み出したデータが、非圧縮のものである場合には、セレクタ１８から非展開のデータを出力させる。セレクタ１８から出力されたデータは、ＬＳＩ内の他の処理ブロックに送られる。
【００２７】
なお、マップ情報メモリ内で、領域ブロックごとにマップ情報の格納領域を予め決めておき、対応する格納領域に、データ量と、圧縮／非圧縮情報のみを格納するようにする。このような場合、マップ情報メモリのどの領域のマップ情報を読むかということと、メモリのどの領域ブロックのデータにアクセスするかということが一対一に対応する。そして、マップ情報メモリの領域から、メモリの領域ブロックの先頭アドレスが分かるようにしておく。
【００２８】
図２の書き込みリクエスト処理においては、ステップＳ１０において、処理対象データをブロックに分割する。ここで、ブロックの大きさは、メモリへのアクセス単位であるユニットの整数倍の大きさとする。ステップＳ１１のループを、全ブロックについて処理が終わるまで繰り返す。ステップＳ１２において、ブロックは圧縮可能か、すなわち、圧縮処理によってデータ量が減少するか否かを判断する。ステップＳ１２の判断がＹｅｓの場合には、ステップＳ１３において、ブロックの圧縮結果を、ブロック内の先頭ユニットからメモリに格納する。ブロックの先頭ユニットを書き込むメモリのアドレスは、ブロックが非圧縮であるとした場合に格納可能なようにメモリの格納領域を分割した領域の先頭アドレスである。ステップＳ１４において、マップ情報メモリの、書き込んだブロック用の領域に、圧縮データである旨のビット（例えば、１を圧縮、０を非圧縮とする）と、圧縮後のユニット数を書き込む。なお、ここで、マップ情報メモリのビットを、例えば、０１を１ユニットに圧縮、１０を２ユニットに圧縮、００を非圧縮とすることにより、圧縮／非圧縮の別と、圧縮後のユニット数をいっぺんに表すことが出来る。
【００２９】
ステップＳ１２の判断がＮｏの場合には、ステップＳ１５において、非圧縮データのブロックを、メモリの分割領域である領域ブロックの全領域に書き込む。ステップＳ１６において、マップ情報メモリの、書き込んだブロック用の領域に、０（非圧縮を示すビット）を書き込む。
【００３０】
図３の読み出しリクエスト処理においては、ステップＳ２０において、読み出す対象のデータに対応する領域ブロックの位置を取得する。そして、ステップＳ２１のループを、全ての領域ブロックについて処理し終わるまで繰り返す。ステップＳ２２において、マップ情報メモリの、読み出し対象のブロックの領域に対応するビットの値が１か否か、すなわち、当該領域ブロックのデータが圧縮されたものか否かを判断する。ステップＳ２２の判断がＹｅｓの場合には、ステップＳ２３において、マップ情報メモリから圧縮後のユニット数を読み出す。なお、ここで、マップ情報メモリのビットを、例えば、０１を１ユニットに圧縮、１０を２ユニットに圧縮、００を非圧縮とする。ステップＳ２４において、圧縮結果を領域ブロックの先頭ユニットから、圧縮後のユニットの数だけ順に読み出す。これは、読み出し制御部からの読み出し制御信号によって制御される。ステップＳ２５において、圧縮結果を展開し、ブロック情報を再生する。ステップＳ２２の判断がＮｏの場合には、ステップＳ２６において、非圧縮データをメモリの領域ブロックの全領域から読み出す。
【００３１】
図４は、本実施形態によるメモリコントローラをH.264のデコーダのメモリコントローラとして適用した例を示す図である。
他の動画像符号化方式、またはエンコーダ、または三次元グラフィックス描画回路への適用でも基本的な構成は変わらない。
【００３２】
図４において、図１と同じ構成要素には同じ参照符号を付し、説明を省略する。
動画像復号部２２は、動画像を復号したデータをメモリコントローラ１０の書き込み部１１を介して、ＳＤＲＡＭ２１に書き込んだり、ＳＤＲＡＭ２１から、動画像復号に必要な参照画を、読み出し部１２を介して読み出したりする。また、読み出し部１２の出力は、画像出力部２３に送られて、出力画像とされることもある。
【００３３】
マップ情報管理部２０は、書き込み用マップ情報メモリ、参照用マップ情報メモリ、出力用マップ情報メモリを備える。書き込み用マップ情報メモリは、フレームメモリに書き込まれるデータのデータ量や、データが圧縮データか非圧縮データかを示す情報をＳＤＲＡＭ２１のマップ情報に書き込む。また、書き込まれたデータの一部のマップ情報のみを格納し出力用マップ情報メモリ、または参照用マップ情報メモリに転送する場合もある。参照マップ情報メモリは、動画像復号において参照される画像のデータを特定し、ＳＤＲＡＭ２１内、または書き込み用マップ情報メモリから受け取った対応するブロックのマップ情報から、データ量や、データが圧縮されたデータか非圧縮のデータかを示す情報を取得する。出力用マップ情報メモリは、出力画像を得るためのデータを特定し、ＳＤＲＡＭ２１内、または書き込み用マップ情報メモリから受け取ったマップ情報から、データ量や、データが圧縮データか非圧縮データかを示す情報を取得する。H.264、ＭＰＥＧ−２などの動画像符号化方式に対応したエンコーダ、デコーダにおいてはフレームメモリに書き込んだデータが直後に参照および表示に用いられるとは限らないため、書き込み用マップ情報メモリはバッファとして動作し、メモリの内容はＳＤＲＡＭ２１に書き込み後に破棄される。一方三次元グラフィックス描画回路においては、書き込んだデータが直後に表示および場合によっては参照にも用いられるため、書き込み用マップ情報の内容が出力用マップ情報メモリ及び必要であれば参照用マップ情報メモリに渡される。また、書き込み用マップ情報メモリと参照用マップ情報メモリの２つの機能を併せ持つキャッシュメモリ、または３つのメモリの機能を併せ持ったキャッシュメモリとして実装されることも考えられる。参照用マップ情報メモリと出力用マップ情報メモリが、マップ情報を参照して得たデータのデータ量（ユニット数）、データが圧縮データか非圧縮データかを示す情報は、読み出し制御部１６に渡される。
【００３４】
図４では、本実施形態による「ブロック毎の圧縮」の対象となる領域をメモリコントローラの制御対象となるＳＤＲＡＭ２１の一部（図中点線より下のフレームメモリが置かれている側）とし、マップ情報自身をＳＤＲＡＭ２１上に置いている。この場合、マップ情報は圧縮対象となる復号結果画像データよりも十分に小さいので、１リクエスト毎に該当箇所のマップ情報をＳＤＲＡＭ２１との間でやり取りするのではなく、ある程度のデータ量にまとめられてやり取りされることが望ましい。この要求は以下のように実現することができる。
【００３５】
デコーダ・エンコーダ機能において復号結果書き込み時・画像出力時のマップ情報の生成・参照は、画面の上方から規則的な順序で行われる。よって小容量の書き込み用マップ情報メモリ・出力用マップ情報メモリによってバッファリングされながらマップ情報は生成・参照される。
【００３６】
これに対してデコーダ・エンコーダ機能における画像参照アクセス及び三次元グラフィックス描画はランダムアクセス性を持つため、用いるべきマップ情報のＳＤＲＡＭからの取り出し方については以下に述べるような手法が考えられる。
１．ＭＰＥＧ−２、VC−1等、またはH.264のエンコーダ等で参照画像の枚数が比較的少ない枚数に固定されている場合は、その枚数分の画像の全ブロックのマップ情報を保持する参照用マップ情報メモリをもち、１ピクチャ処理毎にこの参照用マップ情報メモリの内容を書き換える。
２．H.264のデコーダ等で参照画像となりうる画像が多く、全画像の枚数のマップ情報を保持するとメモリ量が多くなる場合は、１ピクチャ処理毎に、参照される可能性が高い（リファレンスインデックスが小さい）画像のマップ情報のみを取り出し、そうでないものは画像参照リクエスト毎にＳＤＲＡＭから取り出す。
３．H.264では1ピクチャ処理中にリファレンスインデックスリストを切り替える事が可能である。よって、１、２に述べた参照用マップ情報メモリの内容の処理をスライス処理毎に行う。
４．規格、エンコーダ仕様、または運用規定でベクトルの水平方向の大きさが制限されている場合は、１，２で保持するマップ情報の容量は、現在処理中のマクロブロックから参照可能なブロックのマップ情報を保持可能なサイズであればよい。この場合、マクロブロックライン処理毎に新たに参照可能となるブロックのマップ情報をＳＤＲＡＭから取り出して、参照不可能となったブロックのマップ情報が置かれていた場所に上書きする。
５．三次元グラフィックス描画では、アクセス対象が描画領域全てとなるため、描画領域の全ブロックのマップ情報を保持するマップ領域を持つか、ＳＤＲＡＭに全描画領域のマップ情報を保持し、ＳＤＲＡＭ内のマップ領域はキャッシュとして描画領域の一部のみを保持する。
【００３７】
これらの方法を実施するためには、マップ情報管理部２０はＳＤＲＡＭ上に置かれたフレームメモリの枚数と同枚数のピクチャに対応したマップ情報を管理する。この管理のために、デコーダ・エンコーダ機能においては現在、動画像復号部で処理中の画像、参照される画像、出力部で出力中の画像が、それぞれフレームメモリ中のどのピクチャであるかという情報を必要とする。この情報は動画像復号部から与えられる。三次元グラフィックス描画処理においては全て描画中のフレームに対する処理であるため、フレームを区別する為の情報は必要ない。
【００３８】
図５〜図７は、本実施形態に従った書き込み処理および読み出し処理の動作を説明する図である。
図６は、書き込み処理を説明する図であり、図７は、読み出し処理を説明する図である。図５に示されるように、図６、７においては、点線で囲まれたボックスをユニットとし、１ユニットはメモリアクセスに固有のｎビットからなっているとする。また、実線のボックスは、ブロックを示すとし、ここでは、４つのユニットからなっているとする。また、右下がりの斜線で示される領域は、圧縮データを示し、交差する斜線で示される領域は、非圧縮データを示すものとする。
【００３９】
図６、７および以下の説明では、以下が成り立っているとする。
・どのようなリクエストでも、非圧縮状態で1ブロック中で最低2個のユニットへのアクセスが発生する（ｍ＝２）。非圧縮状態では、１ブロックが４ユニットで構成される。
・圧縮結果のデータはすべて2個のユニット以内に収まっている。
【００４０】
非圧縮状態で４ユニット分あったデータが、圧縮の結果２ユニット以下になる場合には、データの量が半分以下になっているので、１ブロックのデータを読み込む場合に必要となるデータの転送量が減少し、メモリ帯域が小さくてすむようになる。
【００４１】
図６に、書き込み部によって、１つの書き込みリクエストがどのように処理され、メモリ内容がどのように書き換えられるかを示す。また、図７では同様に読み込み部による１つの読み込みリクエストの処理の様子を示す。
【００４２】
図６の書き込みリクエスト処理について説明する。
（１）の太枠は、このリクエストをすべて非圧縮で書き込んだ場合に書き換えられるユニットの領域を示す。
（２）上段左端のブロックでは、ブロックは圧縮され、先頭から２ユニットの領域に圧縮データが書き込まれている。
（３）次に、上段中央のブロックには全ユニットに非圧縮データが書き込まれる。
（４）上段右端のブロックでは、ブロックは圧縮され、先頭から１ユニットの領域に圧縮データが書き込まれている。
（５）同様に残りのブロックについても書き込み処理が行われる。
【００４３】
以上のように、メモリの書き込み領域である領域ブロックは、データが圧縮されないとした場合に、データを分割して格納することができるように、メモリの格納領域を分割したものである。そして、データを分割したブロックが圧縮された場合には、対応する領域ブロックの先頭から格納し、圧縮データ分だけ、その領域ブロックに書き込む。当該ブロックが圧縮されたデータであるので、領域ブロックに格納しても全領域を占有せず、データが格納されている部分と、空き領域となっている部分とが生じる。次のブロックを格納する場合には、当該ブロックが圧縮されているかいないかにかかわらず、次の領域ブロックの先頭のアドレスから格納する。
【００４４】
図７の読み込みリクエスト処理について説明する。
（１）の太枠は、このリクエストで読み込むデータが全て非圧縮の場合に読み込まれるユニットの領域を示す。
（２）（１）の太枠内の上段左側のブロックでは、マップ情報から非圧縮であることが判り、必要なユニットａ、ｂのみを読み出している。
（３）次に、（１）の太枠内の上段右側のブロックは、マップ情報から１ユニットに圧縮されたブロックであることが判る。そこでユニットｃのデータの読み出し、展開を行い、その中からこの読み出しリクエストで必要とするユニットｃ−１、ｃ−２に相当するデータのみを取り出す。
（４）、（５）についても、（１）、（２）と同様にブロックごとの読み出し処理を行う。
【００４５】
すなわち、（４）では、太枠内左下のブロックは、マップ情報からデータが２ユニットに圧縮されていることが分かるので、展開してから、ユニットｄ、ｅに相当するデータを取り出す。
（５）では、太枠内左下のブロックは、マップ情報からデータが非圧縮であることが分かるので、直接、ユニットｆ、ｇを読み出す。
【００４６】
以上の動作により、読み出しリクエスト対象の太枠内のデータが全て読み出される。
以上のようにして、書き込み、読み出しを行う。
【００４７】
図８〜図１０は、上記実施形態のマップ情報メモリ、ＳＤＲＡＭのマップ情報のデータ構造を説明する図である。なお、図９では、参照用マップ情報メモリのみを示すが、書き込み用マップ情報メモリと、出力用マップ情報メモリも同様の構成であるので、特に図示しない。
・１ブロックは４ユニットから構成される
・非圧縮状態で、１ブロックへのどんなアクセスも２ユニット以下になることはない。
・ブロックの圧縮結果は２ユニットに収まるようになっている。（２ユニットに収まらなかった場合は非圧縮で書きこむ）
とした際の実施形態に対応している。
【００４８】
メモリ上のあるブロックに書き込まれるデータは以下の状態を取りうる。
非圧縮
２ユニットに圧縮される
１ユニットに圧縮される。
【００４９】
よって、各ブロックに対応するマップ情報は上記の３状態を表現できる２ビットから構成される。図１の場合で、メモリ上にはｎ個のブロックが存在するとすると、マップ情報メモリ内のデータの構成は図８のようになる。
【００５０】
メモリに書き込まれるデータはブロックに分割されるが、このブロックを格納するメモリ領域も領域ブロックに分割される。マップ情報メモリでは、図８に示されるように、マップ情報格納領域をブロックに分け、メモリ上の領域ブロックの数ｎと同じ数だけのマップ情報格納領域のブロックを用意する。メモリ上のどの領域ブロックにデータを書き込んだか、あるいは、どの領域ブロックからデータ読みに出すかにしたがって、どのブロックのマップ情報にアクセスしたらよいかが対応付けられている。１ブロックのマップ情報は、２ビットで、例えば、００が非圧縮、０１が１ユニットに圧縮、１０が２ユニットに圧縮されたデータであることを示す。
【００５１】
次に、図４のH.264デコーダへの適用例の場合のマップ情報メモリのデータ構造と、マップ情報管理部の動作を以下に示す。こちらの例でも、１ブロックが４ユニットからなり、非圧縮状態で、１ブロックへのどんなアクセスも２ユニット以下にならず、圧縮結果は、２ユニットに収まるとする。
【００５２】
ＳＤＲＡＭ上のフレームメモリにはエンコーダ・デコーダ動作から規定される枚数（以下ではｊ枚とする）分の画像を保持するとする。また、１枚の画像はｎ個のブロックから構成さているとする。また、前述のように１ブロックは４ユニット、１ブロックのマップ情報は２ビットとする。よって画像一枚分のマップ情報はｎ個のマップ情報から構成されたｎ×２ビットのデータである。
【００５３】
書き込み用マップ情報メモリは１エントリを１ブロックのマップ情報（２ビット分）とするＦＩＦＯとし、ＳＤＲＡＭアクセスの観点から効率が良いとされる量のデータを保持するのに十分な情報量、ｘ個のブロックに対するマップ情報をバッファリングしているとする。このｘは一般にｎよりも非常に小さい。書き込み用マップ情報メモリにはエンコード・デコード処理が進むごとにマップ情報がＦＩＦＯ内に蓄積され、ある閾値を超えた時点でＳＤＲＡＭに転送される。
【００５４】
画像出力用マップ情報メモリも同様に１エントリを１ブロックのマップ情報とするＦＩＦＯとし、ｙ個のマップ情報をバッファリングしているとする。このｙも一般にｎよりも非常に小さい。
【００５５】
また、参照用マップ情報メモリでは、特に参照される可能性の高い２枚の参照画像に対応したマップ情報を保持するものとする。よって以下の図に示すように画面２枚分のマップ情報を保持するのに十分な容量、２×ｎ×２ビットを保持する。
また、ＳＤＲＡＭ上のマップ情報にはフレームメモリに保持されるｊ枚分のマップ情報を保持しているので、ｊ×ｎ×２ビット分である。
【００５６】
図９に示されるように、マップ情報は、参照画像１用マップ情報と参照画像２用マップ情報が存在する。それぞれのマップ情報は、メモリ上の領域ブロックに対応して、画面１枚分をブロックに分けている。図９では、画面１枚をｎ個のブロックに分けている。参照画像２用マップ情報も同様に、ｎ個のブロックに分けられている。マップ情報の各ブロックは、メモリ上の各領域ブロックに対応しており、メモリ上のどの領域ブロックにアクセスするかに従って、マップ情報のどのブロックにアクセスしたらよいかが指定される。
【００５７】
このＨ．２６４デコーダは画像１枚のデコード処理を開始する前にその画像で最も参照される可能性が高い２枚の画像を選択し、これら２×ｎ×２ビットの情報をＳＤＲＡＭから読み出し、参照用マップ情報メモリに書き込む。その後、デコード処理を開始する。
【００５８】
メモリコントローラの読み出し部の読み出し制御部は、動画像復号部からのリクエストに応じて必要なマップ情報を取得しようとする。必要なマップ情報が参照用マップ情報メモリ上に存在する（動画像復号部が参照しようとしている画像が先ほど読み込んだマップ情報の２枚の画像のどちらかであった）場合にはそのデータを用いる。存在しない場合には、必要なマップ情報をＳＤＲＡＭから読み込んで参照する。
【００５９】
図１０に示されるように、ＳＤＲＡＭには、フレームメモリ中に格納されたｊ枚の画像に対応したｊ枚分のマップ情報が保持される。ここでは、画像バンク１用マップ情報から画像バンクｊ用マップ情報が設けられる。各マップ情報は、画面１枚のメモリ内のデータがいくつの領域ブロックに分けられているかに対応して、同じ数だけのブロックに分けられる。ここでは、画面１枚分の領域ブロックとマップ情報のブロックの数はｎとしている。メモリ上のどの領域ブロックにアクセスするかにしたがって、マップ情報のどのブロックにアクセスしたらよいかが指定される。
【００６０】
なお、上記実施形態では、圧縮後のデータ量が２ユニット以下となるときをデータ量が少なくなるものとして説明したが、必ずしもこれに限定されず、圧縮後のデータ量が、１ビットでも少なくなれば、圧縮後のデータを領域ブロックに格納するようにしても良い。
【符号の説明】
【００６１】
１０      メモリコントローラ
１１      書き込み部
１２      読み出し部
１３      圧縮処理部
１４、１８      セレクタ
１５      書き込み制御部
１６      読み出し制御部
１７      展開処理部
２０      マップ情報管理部
２１      ＳＤＲＡＭ
２２      動画復号部
２３      画像出力部
【図１】
0005526641.tif 000002
【図２】
0005526641.tif 000003
【図３】
0005526641.tif 000004
【図４】
0005526641.tif 000005
【図８】
0005526641.tif 000006
【図９】
0005526641.tif 000007
【図１０】
0005526641.tif 000008
【図５】
0005526641.tif 000009
【図６】
0005526641.tif 000010
【図７】
0005526641.tif 000011