JP5526641B2 - メモリコントローラ - Google Patents

メモリコントローラ Download PDF

Info

Publication number
JP5526641B2
JP5526641B2 JP2009180330A JP2009180330A JP5526641B2 JP 5526641 B2 JP5526641 B2 JP 5526641B2 JP 2009180330 A JP2009180330 A JP 2009180330A JP 2009180330 A JP2009180330 A JP 2009180330A JP 5526641 B2 JP5526641 B2 JP 5526641B2
Authority
JP
Japan
Prior art keywords
data
block
memory
map information
compressed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009180330A
Other languages
English (en)
Other versions
JP2011034370A (ja
Inventor
秀敏 松村
康 洲鎌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2009180330A priority Critical patent/JP5526641B2/ja
Publication of JP2011034370A publication Critical patent/JP2011034370A/ja
Application granted granted Critical
Publication of JP5526641B2 publication Critical patent/JP5526641B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Description

本発明は、メモリへのアクセスを制御するメモリコントローラに関する。
MPEGのエンコーダ・デコーダのフレームメモリは、デコード・エンコード処理機能を有するLSIに外付けされるか、または同一パッケージに封入されるSDRAM/DDR−SDRAM等で実現されるのが一般的である。
ハイビジョン放送、大容量光ディスクなどの普及により、動画像の符号化、復号においてHDTV画像(High Definition TV:1920x1080)を扱うことが一般的になってきている。今後、更に大画面のUHDTV画像(Ultra High Definition TV:7680x4320、3840x2160)を使用することが検討されており、MPEGのデコーダ・エンコーダの更なる処理性能向上が望まれている。同様に三次元グラフィックス描画処理においても表示デバイスの高解像度化、描画画像の高品位化により高品質の描画処理が求められている。このような傾向は、デコーダ・エンコーダ機能または三次元グラフィックス描画機能を有するLSIと外付けSDRAM間に要求される帯域も増大する事を意味する。この帯域を増加する手段としては、SDRAM素子数の増加、採用SDRAMのビット幅(LSIピン数)増加、クロック周波数の向上等が考えられるが、その結果として、システム全体の高価格化、消費電力の増大等が引き起こされるため、何らかの手段でSDRAMに対する要求帯域を削減する技術が求められている。この問題に対処する方法として、MPEGなどの画像の符号化・復号とは別に、SDRAMに画像データを圧縮して格納することが考えられる。画像データを圧縮して格納しておくと、画像データをSDRAMから読み出したり、SDRAMに格納する場合に転送するデータ量が減少するので、1回のアクセスで転送するデータ量を少なくすることができ、SDRAMに対する要求帯域を削減することができる。
従来技術としては、以下のような技術があった。例えば、復号結果画像を非可逆な手段(たとえば、間引き)で圧縮する技術や、可逆圧縮方式を用いて、フレームメモリ用の圧縮/展開を行なう技術などがある。
更には、可逆圧縮を用いており、参照対象となるI/Pピクチャに対しては、任意のブロックに対するアクセスが可能な手段を提供するものなどがあった。
したがって、動画像のデコード・エンコード処理または、三次元グラフィックス描画処理を行うLSIで使用するメモリコントローラは、以下のような機能を持つことが望ましい。
・メモリのデータの圧縮方法が可逆性を備える
・データへのアクセスがランダムアクセス性を備える
・保存・圧縮対象となる主データ以外に必要となる管理情報がなるべく小さい
・いかなるデータ、アクセスにおいてもメモリ使用量、メモリ帯域を非圧縮状態より低く抑えることができる。
特開2007−266970号公報 特開2008−227888号公報 特開平10−224805号公報 特開平11−234492号公報 特開平10−136179号公報
本発明の課題は、メモリに要求される帯域を削減することのできるメモリコントローラを提供することである。
本発明のメモリコントローラは、メモリへのアクセスを制御するメモリコントローラにおいて、入力データをブロックに分割し、圧縮する圧縮部と、該圧縮されたデータの該ブロックが、非圧縮の場合に比べ、データ量が少なくなった場合には、圧縮されたデータのブロックを、少なくならなかった場合には、非圧縮データのブロックを、該非圧縮のデータのブロックを格納可能なように、各領域ブロックに分割されたメモリの格納領域の先頭アドレスから、メモリに格納させる格納部と、該メモリに格納されたデータのブロックに対応して分割された格納領域に、データ量、データが圧縮データか非圧縮データかを示す情報からなるマップ情報を別途格納するマップ情報格納部とを備える。
開示の装置によれば、メモリに要求される帯域を削減することのできるメモリコントローラを提供することができる。
本実施形態に従ったメモリコントローラを示すブロック図である。 書き込み制御部による一つの書き込みリクエストの処理のフローである。 読み出し制御部による一つの読み出しリクエストの処理フローである。 本実施形態によるメモリコントローラをH.264のデコーダのメモリコントローラとして適用した例を示す図である。 本実施形態に従った書き込み処理および読み出し処理の動作を説明する図(その1)である。 本実施形態に従った書き込み処理および読み出し処理の動作を説明する図(その2)である。 本実施形態に従った書き込み処理および読み出し処理の動作を説明する図(その3)である。 上記実施形態のマップ情報メモリ、SDRAMのマップ情報のデータ構造を説明する図(その1)である。 上記実施形態のマップ情報メモリ、SDRAMのマップ情報のデータ構造を説明する図(その2)である。 上記実施形態のマップ情報メモリ、SDRAMのマップ情報のデータ構造を説明する図(その3)である。
本発明の実施形態に従ったメモリコントローラは、以下の構成を備える。
・メモリ内に確保される各領域ブロックがどの方式(2つ以上から選択可能。うちひとつは非圧縮、他は可逆圧縮)で記憶されたかどうか、及び、どの程度のデータサイズに圧縮できたかを示すマップ情報を保持する機能。ここで、メモリ内は、データを所定のデータサイズで分割したデータのブロックを格納する領域ブロックに分割されているとする。また、データサイズは、メモリへの書き込み時および読み出し時のメモリアクセスにおけるアクセス単位(ユニット)が何個分かで示す。ここで、メモリに格納されるデータの圧縮方法は限定しないこととする。各領域ブロックに格納されるデータが非圧縮と可逆圧縮の2通りあるのは、データの圧縮方法によっては、データに処理を行った場合、データ量が圧縮されず、かえって、増加する場合があることによる。データの圧縮処理を行って、実際に、データの量が圧縮された場合にのみ、データを圧縮された状態で格納し、データ量が圧縮されなかった場合には、非圧縮のデータを格納するようにすることを意図している。
・書き込み時、データのブロック毎に前記可逆圧縮方式で圧縮することにより、非圧縮時よりもデータ量が少ないデータとなるかどうかを判定し、少なくなるデータのブロックは、圧縮したデータを、メモリ内の領域ブロック内の定められた位置に書き込み、データ量が多くなるデータのブロックは、非圧縮のデータを領域ブロックにそのまま書き込み、ブロック毎の方式選択結果(どの方式を使ったか)及び圧縮後のデータサイズをマップ情報保持機能に送る書き込み機能。ここで、分割されたデータ(データのブロック)が、圧縮された場合には、圧縮されたデータを、メモリ内の領域ブロックの先頭から格納する。圧縮されたデータは、非圧縮のデータよりデータ量が少なくなっているので、領域ブロックには、圧縮されたデータが格納されている部分と、空き領域となっている部分とが生じる。次の分割されたデータを格納する場合には、前の領域ブロックの空き領域につめて格納するのではなく、次の領域ブロックの先頭から格納する。したがって、メモリ内は、圧縮されたデータが格納される場合には、圧縮データが格納されている部分と空き領域となっている部分が交互に生じる状態となる。なお、マップ情報は、マップ情報の内容により、データ量が大きくなってしまうことがある。マップ情報は、メモリの領域ブロックに対応して、データ領域が分割されたものとする。メモリ内のどの領域ブロックのデータを読み出すかに対応して、どのデータ領域からマップ情報を読み込んだら良いかが分かるようにする。以上のようにすると、マップ情報は、圧縮/非圧縮の別と、データ量の情報のみでよくなり、マップ情報のデータ量が少なくてすむ。
・読み出し時、マップ情報保持機能からアクセス対象となる領域を含むブロックのマップ情報を取り出し、非圧縮領域ブロックはブロック内の全データをそのまま、圧縮ブロックはブロック内の定められた位置(書き込み時に圧縮データを書き込んだ位置)及び定められたサイズのデータのみを読み出し、圧縮データから元のデータを復元する読み込み機能。
・前記の可逆圧縮方法は分割したデータ内の情報のみを用いた圧縮手法とする(隣接するデータの情報を用いないことで圧縮率は低下するが、格納後に読み出す際のランダムアクセス性に優れる)。
・以下の条件を備える事(いかなるアクセスに対しても無圧縮時より帯域を消費しないための条件)
・・メモリコントローラの制御対象となるメモリの最小アクセス単位(以下ユニットと記載)を複数個まとめたものをデータのブロックとする(これはビット幅×最小バースト長になる。たとえば16bit DDR2−SDRAMでは16×4=64bit)。
・・このメモリコントローラに対する1つの読み出し/書き込みリクエストは、1つ以上の領域ブロックへのアクセスになり、各領域ブロックへのアクセスはひとつ以上のユニットへのアクセスになる。全てのユニットに格納されているデータが無圧縮であった場合に、領域ブロックへのアクセスでアクセスされるユニット数の全アクセスリクエスト中での最小値をm(ここでは、1ブロックのサイズが一定ではなく、ブロックごとに異なる場合も考慮してこのように記載している。最小値mというのは、もっとも小さいブロックのユニット数である。1ブロックを構成するユニットの個数が一定の場合には、1ブロックのユニット数がmとなる)、ユニットのビット数をnビットすると、ブロックの圧縮結果はm×nビット以下(非圧縮時のデータサイズ以下)である事。この意味は、以下の通りである。読み出し/書き込みリクエストの単位をユニットと呼び、無圧縮の場合の領域ブロック内のデータを読むときのユニット数をmとし、ユニットのビット数をnビットとする。すると、無圧縮の場合の領域データの量は、m×nビットとなる。そして、圧縮結果のデータの量が、m×nビット以下となる場合には、圧縮結果が、無圧縮の場合よりもデータ量が小さくなっていることを意味する。mとnは、メモリコントローラの設計の際に決定されるので、m×nビットは予め分かる量である。したがって、圧縮結果が、予め分かるm×nビットよりも小さくなる場合には、データ量が小さくできたことになるので、圧縮結果のデータをメモリに格納するようにするというものである。この条件を満たすことで、メモリへのアクセスの帯域が絶対に増加しないということを確保する効果がある。
以上の構成によれば、保存するデータのブロック毎に可逆圧縮、非圧縮のいずれかを選択することが可能になる。つまり、可逆性を備えた圧縮を行い、メモリ帯域を低減させたメモリコントローラを提供できる。また、主データ以外に必要となる管理情報(マップ情報)は、もしただひとつの可逆圧縮方法しか用いず、圧縮後のデータサイズ情報を用いない場合は、圧縮後のデータサイズが一定となるのでデータサイズに関する情報を持つ必要が無くなり、圧縮か非圧縮かを示す1ビットとなる。したがって、1ピクチャで必要となるデータ量は1ピクチャ内のブロック数に等しくなる。これは従来技術で必要とされる追加情報(ポインタテーブル)よりも小さなものとなる。
また、圧縮時は、いかなる場合においてもメモリ上に占める各ブロックのデータ量は非圧縮時以下となるので、いかなるデータ、アクセスにおいてもメモリ使用量を非圧縮状態より低く抑えることができる。
また、分割されたデータの各ブロックは他のブロックの情報を用いずに圧縮されているために、1つのブロックにアクセスする場合に、他のブロックにアクセスする必要が無いので、各ブロックを個別にアクセスでき、画像内の任意の位置に対するアクセスを可能としている。
更に、データのブロックが非圧縮の時は必ず、1ブロックを構成するk個のユニットへのアクセスが発生する。また、圧縮される時は、k個以下のユニットへのアクセスとなる(k個よりも少ないユニットへのアクセスとすることが可能かは、圧縮方式、またはマップ情報の使用法に依存する)。つまり、いかなるデータ、アクセスにおいても、非圧縮時に比べデータ量が少なくなっているので、アクセス時のデータ転送量が減少し、メモリ帯域を非圧縮状態より低く抑えることができる。
図1は、本実施形態に従ったメモリコントローラを示すブロック図である。図2は、書き込み制御部による一つの書き込みリクエストの処理のフローであり、図3は、読み出し制御部による一つの読み出しリクエストの処理フローである。
本実施形態では、分割されたデータのブロック内のユニット数を元ブロックのユニット数より小さいユニットに圧縮しており、ブロックのデータが圧縮される場合は常にブロック内の先頭ユニットから記録している。
また、マップ情報は、メモリコントローラ内の独立したメモリ(マップ情報メモリ)に置かれているが、「ブロック毎の圧縮」の対象となる領域をメモリコントローラの制御対象となるメモリの一部とし、マップ情報自身をメモリ上に置くことも可能である。
更に、マップ情報として、本実施形態では圧縮、非圧縮の情報のほかに圧縮後のユニット数も保持しているが、マップ情報を小さくする為に圧縮、非圧縮の情報のみを保持する実施形態も考えられる。
また、本実施形態では、使用される可逆圧縮方法については規定していない。可逆で、自ブロックのデータ以外は参照しないで圧縮を行う方法であれば、どのような可逆圧縮方式でも用いる事ができる。
図1において、LSIの他の処理ブロックから入力されたデータは、メモリコントローラ10の書き込み部11を介して、メモリへ送られる。書き込み部11においては、入力されたデータを、圧縮処理部13において、圧縮する。非圧縮のデータと圧縮されたデータとは、セレクタ14に入力される。圧縮処理部13の圧縮の結果、データ量がどのくらいになったかの情報が書き込み制御部15に入力される。書き込み制御部15は、圧縮の結果、データ量が小さくなった場合には、セレクタ14に指示して、圧縮データをセレクタ14から出力させ、メモリに送る。圧縮の結果、データ量が小さくならなかった場合には、非圧縮のデータを、セレクタ14から出力させ、メモリに送る。データ量(ユニット数)の指示は、書き込み制御部15からメモリに出力される書き込み制御信号によって伝達される。書き込み制御部15は、マップ情報メモリ19に、データサイズ、データが圧縮データか非圧縮データかの情報などを格納する。
メモリからデータを読み出す場合には、メモリコントローラ10の読み出し部12を介して読み出す。読み出し部12では、マップ情報メモリから、データ量などを読み出し、読み出し制御信号により、読み出すデータの先頭アドレスとデータ量(ユニット数)を指定して読み出しを行う。そしてメモリから読み出されたデータを展開処理部17で展開する。展開されたデータと、読み出したそのままのデータとがセレクタ18に入力される。読み出し制御部16は、マップ情報メモリから、読み出したデータが圧縮されたものか、非圧縮のものかのデータを取得する。読み出したデータが、圧縮されたものである場合には、セレクタ18から、展開されたデータを出力させる。読み出したデータが、非圧縮のものである場合には、セレクタ18から非展開のデータを出力させる。セレクタ18から出力されたデータは、LSI内の他の処理ブロックに送られる。
なお、マップ情報メモリ内で、領域ブロックごとにマップ情報の格納領域を予め決めておき、対応する格納領域に、データ量と、圧縮/非圧縮情報のみを格納するようにする。このような場合、マップ情報メモリのどの領域のマップ情報を読むかということと、メモリのどの領域ブロックのデータにアクセスするかということが一対一に対応する。そして、マップ情報メモリの領域から、メモリの領域ブロックの先頭アドレスが分かるようにしておく。
図2の書き込みリクエスト処理においては、ステップS10において、処理対象データをブロックに分割する。ここで、ブロックの大きさは、メモリへのアクセス単位であるユニットの整数倍の大きさとする。ステップS11のループを、全ブロックについて処理が終わるまで繰り返す。ステップS12において、ブロックは圧縮可能か、すなわち、圧縮処理によってデータ量が減少するか否かを判断する。ステップS12の判断がYesの場合には、ステップS13において、ブロックの圧縮結果を、ブロック内の先頭ユニットからメモリに格納する。ブロックの先頭ユニットを書き込むメモリのアドレスは、ブロックが非圧縮であるとした場合に格納可能なようにメモリの格納領域を分割した領域の先頭アドレスである。ステップS14において、マップ情報メモリの、書き込んだブロック用の領域に、圧縮データである旨のビット(例えば、1を圧縮、0を非圧縮とする)と、圧縮後のユニット数を書き込む。なお、ここで、マップ情報メモリのビットを、例えば、01を1ユニットに圧縮、10をユニットに圧縮、00を非圧縮とすることにより、圧縮/非圧縮の別と、圧縮後のユニット数をいっぺんに表すことが出来る。
ステップS12の判断がNoの場合には、ステップS15において、非圧縮データのブロックを、メモリの分割領域である領域ブロックの全領域に書き込む。ステップS16において、マップ情報メモリの、書き込んだブロック用の領域に、0(非圧縮を示すビット)を書き込む。
図3の読み出しリクエスト処理においては、ステップS20において、読み出す対象のデータに対応する領域ブロックの位置を取得する。そして、ステップS21のループを、全ての領域ブロックについて処理し終わるまで繰り返す。ステップS22において、マップ情報メモリの、読み出し対象のブロックの領域に対応するビットの値が1か否か、すなわち、当該領域ブロックのデータが圧縮されたものか否かを判断する。ステップS22の判断がYesの場合には、ステップS23において、マップ情報メモリから圧縮後のユニット数を読み出す。なお、ここで、マップ情報メモリのビットを、例えば、01を1ユニットに圧縮、10を2ユニットに圧縮、00を非圧縮とする。ステップS24において、圧縮結果を領域ブロックの先頭ユニットから、圧縮後のユニットの数だけ順に読み出す。これは、読み出し制御部からの読み出し制御信号によって制御される。ステップS25において、圧縮結果を展開し、ブロック情報を再生する。ステップS22の判断がNoの場合には、ステップS26において、非圧縮データをメモリの領域ブロックの全領域から読み出す。
図4は、本実施形態によるメモリコントローラをH.264のデコーダのメモリコントローラとして適用した例を示す図である。
他の動画像符号化方式、またはエンコーダ、または三次元グラフィックス描画回路への適用でも基本的な構成は変わらない。
図4において、図1と同じ構成要素には同じ参照符号を付し、説明を省略する。
動画像復号部22は、動画像を復号したデータをメモリコントローラ10の書き込み部11を介して、SDRAM21に書き込んだり、SDRAM21から、動画像復号に必要な参照画を、読み出し部12を介して読み出したりする。また、読み出し部12の出力は、画像出力部23に送られて、出力画像とされることもある。
マップ情報管理部20は、書き込み用マップ情報メモリ、参照用マップ情報メモリ、出力用マップ情報メモリを備える。書き込み用マップ情報メモリは、フレームメモリに書き込まれるデータのデータ量や、データが圧縮データか非圧縮データかを示す情報をSDRAM21のマップ情報に書き込む。また、書き込まれたデータの一部のマップ情報のみを格納し出力マップ情報メモリ、または参照用マップ情報メモリに転送する場合もある。参照マップ情報メモリは、動画像復号において参照される画像のデータを特定し、SDRAM21内、または書き込み用マップ情報メモリから受け取った対応するブロックのマップ情報から、データ量や、データが圧縮されたデータか非圧縮のデータかを示す情報を取得する。出力用マップ情報メモリは、出力画像を得るためのデータを特定し、SDRAM21内、または書き込み用マップ情報メモリから受け取ったマップ情報から、データ量や、データが圧縮データか非圧縮データかを示す情報を取得する。H.264、MPEG−2などの動画像符号化方式に対応したエンコーダ、デコーダにおいてはフレームメモリに書き込んだデータが直後に参照および表示に用いられるとは限らないため、書き込み用マップ情報メモリはバッファとして動作し、メモリの内容はSDRAM21に書き込み後に破棄される。一方三次元グラフィックス描画回路においては、書き込んだデータが直後に表示および場合によっては参照にも用いられるため、書き込み用マップ情報の内容が出力用マップ情報メモリ及び必要であれば参照用マップ情報メモリに渡される。また、書き込み用マップ情報メモリと参照用マップ情報メモリの2つの機能を併せ持つキャッシュメモリ、または3つのメモリの機能を併せ持ったキャッシュメモリとして実装されることも考えられる。参照用マップ情報メモリと出力用マップ情報メモリが、マップ情報を参照して得たデータのデータ量(ユニット数)、データが圧縮データか非圧縮データかを示す情報は、読み出し制御部16に渡される。
図4では、本実施形態による「ブロック毎の圧縮」の対象となる領域をメモリコントローラの制御対象となるSDRAM21の一部(図中点線より下のフレームメモリが置かれている側)とし、マップ情報自身をSDRAM21上に置いている。この場合、マップ情報は圧縮対象となる復号結果画像データよりも十分に小さいので、1リクエスト毎に該当箇所のマップ情報をSDRAM21との間でやり取りするのではなく、ある程度のデータ量にまとめられてやり取りされることが望ましい。この要求は以下のように実現することができる。
デコーダ・エンコーダ機能において復号結果書き込み時・画像出力時のマップ情報の生成・参照は、画面の上方から規則的な順序で行われる。よって小容量の書き込み用マップ情報メモリ・出力用マップ情報メモリによってバッファリングされながらマップ情報は生成・参照される。
これに対してデコーダ・エンコーダ機能における画像参照アクセス及び三次元グラフィックス描画はランダムアクセス性を持つため、用いるべきマップ情報のSDRAMからの取り出し方については以下に述べるような手法が考えられる。
1.MPEG−2、VC−1等、またはH.264のエンコーダ等で参照画像の枚数が比較的少ない枚数に固定されている場合は、その枚数分の画像の全ブロックのマップ情報を保持する参照用マップ情報メモリをもち、1ピクチャ処理毎にこの参照用マップ情報メモリの内容を書き換える。
2.H.264のデコーダ等で参照画像となりうる画像が多く、全画像の枚数のマップ情報を保持するとメモリ量が多くなる場合は、1ピクチャ処理毎に、参照される可能性が高い(リファレンスインデックスが小さい)画像のマップ情報のみを取り出し、そうでないものは画像参照リクエスト毎にSDRAMから取り出す。
3.H.264では1ピクチャ処理中にリファレンスインデックスリストを切り替える事が可能である。よって、1、2に述べた参照用マップ情報メモリの内容の処理をスライス処理毎に行う。
4.規格、エンコーダ仕様、または運用規定でベクトルの水平方向の大きさが制限されている場合は、1,2で保持するマップ情報の容量は、現在処理中のマクロブロックから参照可能なブロックのマップ情報を保持可能なサイズであればよい。この場合、マクロブロックライン処理毎に新たに参照可能となるブロックのマップ情報をSDRAMから取り出して、参照不可能となったブロックのマップ情報が置かれていた場所に上書きする。
5.三次元グラフィックス描画では、アクセス対象が描画領域全てとなるため、描画領域の全ブロックのマップ情報を保持するマップ領域を持つか、SDRAMに全描画領域のマップ情報を保持し、SDRAM内のマップ領域はキャッシュとして描画領域の一部のみを保持する。
これらの方法を実施するためには、マップ情報管理部20はSDRAM上に置かれたフレームメモリの枚数と同枚数のピクチャに対応したマップ情報を管理する。この管理のために、デコーダ・エンコーダ機能においては現在、動画像復号部で処理中の画像、参照される画像、出力部で出力中の画像が、それぞれフレームメモリ中のどのピクチャであるかという情報を必要とする。この情報は動画像復号部から与えられる。三次元グラフィックス描画処理においては全て描画中のフレームに対する処理であるため、フレームを区別する為の情報は必要ない。
図5〜図7は、本実施形態に従った書き込み処理および読み出し処理の動作を説明する図である。
図6は、書き込み処理を説明する図であり、図7は、読み出し処理を説明する図である。図5に示されるように、図6、7においては、点線で囲まれたボックスをユニットとし、1ユニットはメモリアクセスに固有のnビットからなっているとする。また、実線のボックスは、ブロックを示すとし、ここでは、4つのユニットからなっているとする。また、右下がりの斜線で示される領域は、圧縮データを示し、交差する斜線で示される領域は、非圧縮データを示すものとする。
図6、7および以下の説明では、以下が成り立っているとする。
・どのようなリクエストでも、非圧縮状態で1ブロック中で最低2個のユニットへのアクセスが発生する(m=2)。非圧縮状態では、1ブロックが4ユニットで構成される。
・圧縮結果のデータはすべて2個のユニット以内に収まっている。
非圧縮状態で4ユニット分あったデータが、圧縮の結果2ユニット以下になる場合には、データの量が半分以下になっているので、1ブロックのデータを読み込む場合に必要となるデータの転送量が減少し、メモリ帯域が小さくてすむようになる。
図6に、書き込み部によって、1つの書き込みリクエストがどのように処理され、メモリ内容がどのように書き換えられるかを示す。また、図7では同様に読み込み部による1つの読み込みリクエストの処理の様子を示す。
図6の書き込みリクエスト処理について説明する。
(1)の太枠は、このリクエストをすべて非圧縮で書き込んだ場合に書き換えられるユニットの領域を示す。
(2)上段左端のブロックでは、ブロックは圧縮され、先頭から2ユニットの領域に圧縮データが書き込まれている。
(3)次に、上段中央のブロックには全ユニットに非圧縮データが書き込まれる。
(4)上段右端のブロックでは、ブロックは圧縮され、先頭から1ユニットの領域に圧縮データが書き込まれている。
(5)同様に残りのブロックについても書き込み処理が行われる。
以上のように、メモリの書き込み領域である領域ブロックは、データが圧縮されないとした場合に、データを分割して格納することができるように、メモリの格納領域を分割したものである。そして、データを分割したブロックが圧縮された場合には、対応する領域ブロックの先頭から格納し、圧縮データ分だけ、その領域ブロックに書き込む。当該ブロックが圧縮されたデータであるので、領域ブロックに格納しても全領域を占有せず、データが格納されている部分と、空き領域となっている部分とが生じる。次のブロックを格納する場合には、当該ブロックが圧縮されているかいないかにかかわらず、次の領域ブロックの先頭のアドレスから格納する。
図7の読み込みリクエスト処理について説明する。
(1)の太枠は、このリクエストで読み込むデータが全て非圧縮の場合に読み込まれるユニットの領域を示す。
(2)(1)の太枠内の上段左側のブロックでは、マップ情報から非圧縮であることが判り、必要なユニットa、bのみを読み出している。
(3)次に、(1)の太枠内の上段右側のブロックは、マップ情報から1ユニットに圧縮されたブロックであることが判る。そこでユニットcのデータの読み出し、展開を行い、その中からこの読み出しリクエストで必要とするユニットc−1、c−2に相当するデータのみを取り出す。
(4)、(5)についても、(1)、(2)と同様にブロックごとの読み出し処理を行う。
すなわち、(4)では、太枠内左下のブロックは、マップ情報からデータが2ユニットに圧縮されていることが分かるので、展開してから、ユニットd、eに相当するデータを取り出す。
(5)では、太枠内左下のブロックは、マップ情報からデータが非圧縮であることが分かるので、直接、ユニットf、gを読み出す。
以上の動作により、読み出しリクエスト対象の太枠内のデータが全て読み出される。
以上のようにして、書き込み、読み出しを行う。
図8〜図10は、上記実施形態のマップ情報メモリ、SDRAMのマップ情報のデータ構造を説明する図である。なお、図9では、参照用マップ情報メモリのみを示すが、書き込み用マップ情報メモリと、出力用マップ情報メモリも同様の構成であるので、特に図示しない。
・1ブロックは4ユニットから構成される
・非圧縮状態で、1ブロックへのどんなアクセスも2ユニット以下になることはない。
・ブロックの圧縮結果は2ユニットに収まるようになっている。(2ユニットに収まらなかった場合は非圧縮で書きこむ)
とした際の実施形態に対応している。
メモリ上のあるブロックに書き込まれるデータは以下の状態を取りうる。
非圧縮
2ユニットに圧縮される
1ユニットに圧縮される。
よって、各ブロックに対応するマップ情報は上記の3状態を表現できる2ビットから構成される。図1の場合で、メモリ上にはn個のブロックが存在するとすると、マップ情報メモリ内のデータの構成は図8のようになる。
メモリに書き込まれるデータはブロックに分割されるが、このブロックを格納するメモリ領域も領域ブロックに分割される。マップ情報メモリでは、図8に示されるように、マップ情報格納領域をブロックに分け、メモリ上の領域ブロックの数nと同じ数だけのマップ情報格納領域のブロックを用意する。メモリ上のどの領域ブロックにデータを書き込んだか、あるいは、どの領域ブロックからデータ読みに出すかにしたがって、どのブロックのマップ情報にアクセスしたらよいかが対応付けられている。1ブロックのマップ情報は、2ビットで、例えば、00が非圧縮、01が1ユニットに圧縮、10が2ユニットに圧縮されたデータであることを示す。
次に、図4のH.264デコーダへの適用例の場合のマップ情報メモリのデータ構造と、マップ情報管理部の動作を以下に示す。こちらの例でも、1ブロックが4ユニットからなり、非圧縮状態で、1ブロックへのどんなアクセスも2ユニット以下にならず、圧縮結果は、2ユニットに収まるとする。
SDRAM上のフレームメモリにはエンコーダ・デコーダ動作から規定される枚数(以下ではj枚とする)分の画像を保持するとする。また、1枚の画像はn個のブロックから構成さているとする。また、前述のように1ブロックは4ユニット、1ブロックのマップ情報は2ビットとする。よって画像一枚分のマップ情報はn個のマップ情報から構成されたn×2ビットのデータである。
書き込み用マップ情報メモリは1エントリを1ブロックのマップ情報(2ビット分)とするFIFOとし、SDRAMアクセスの観点から効率が良いとされる量のデータを保持するのに十分な情報量、x個のブロックに対するマップ情報をバッファリングしているとする。このxは一般にnよりも非常に小さい。書き込み用マップ情報メモリにはエンコード・デコード処理が進むごとにマップ情報がFIFO内に蓄積され、ある閾値を超えた時点でSDRAMに転送される。
画像出力用マップ情報メモリも同様に1エントリを1ブロックのマップ情報とするFIFOとし、y個のマップ情報をバッファリングしているとする。このyも一般にnよりも非常に小さい。
また、参照用マップ情報メモリでは、特に参照される可能性の高い2枚の参照画像に対応したマップ情報を保持するものとする。よって以下の図に示すように画面2枚分のマップ情報を保持するのに十分な容量、2×n×2ビットを保持する。
また、SDRAM上のマップ情報にはフレームメモリに保持されるj枚分のマップ情報を保持しているので、j×n×2ビット分である。
図9に示されるように、マップ情報は、参照画像1用マップ情報と参照画像2用マップ情報が存在する。それぞれのマップ情報は、メモリ上の領域ブロックに対応して、画面1枚分をブロックに分けている。図9では、画面1枚をn個のブロックに分けている。参照画像2用マップ情報も同様に、n個のブロックに分けられている。マップ情報の各ブロックは、メモリ上の各領域ブロックに対応しており、メモリ上のどの領域ブロックにアクセスするかに従って、マップ情報のどのブロックにアクセスしたらよいかが指定される。
このH.264デコーダは画像1枚のデコード処理を開始する前にその画像で最も参照される可能性が高い2枚の画像を選択し、これら2×n×2ビットの情報をSDRAMから読み出し、参照用マップ情報メモリに書き込む。その後、デコード処理を開始する。
メモリコントローラの読み出し部の読み出し制御部は、動画像復号部からのリクエストに応じて必要なマップ情報を取得しようとする。必要なマップ情報が参照用マップ情報メモリ上に存在する(動画像復号部が参照しようとしている画像が先ほど読み込んだマップ情報の2枚の画像のどちらかであった)場合にはそのデータを用いる。存在しない場合には、必要なマップ情報をSDRAMから読み込んで参照する。
図10に示されるように、SDRAMには、フレームメモリ中に格納されたj枚の画像に対応したj枚分のマップ情報が保持される。ここでは、画像バンク1用マップ情報から画像バンクj用マップ情報が設けられる。各マップ情報は、画面1枚のメモリ内のデータがいくつの領域ブロックに分けられているかに対応して、同じ数だけのブロックに分けられる。ここでは、画面1枚分の領域ブロックとマップ情報のブロックの数はnとしている。メモリ上のどの領域ブロックにアクセスするかにしたがって、マップ情報のどのブロックにアクセスしたらよいかが指定される。
なお、上記実施形態では、圧縮後のデータ量が2ユニット以下となるときをデータ量が少なくなるものとして説明したが、必ずしもこれに限定されず、圧縮後のデータ量が、1ビットでも少なくなれば、圧縮後のデータを領域ブロックに格納するようにしても良い。
10 メモリコントローラ
11 書き込み部
12 読み出し部
13 圧縮処理部
14、18 セレクタ
15 書き込み制御部
16 読み出し制御部
17 展開処理部
20 マップ情報管理部
21 SDRAM
22 動画復号部
23 画像出力部

Claims (5)

  1. メモリへのアクセスを制御するメモリコントローラにおいて、
    入力データをブロックに分割し、圧縮する圧縮部と、
    該圧縮されたデータの該ブロックが、非圧縮の場合に比べ、データ量が少なくなった場合には、圧縮されたデータのブロックを、少なくならなかった場合には、非圧縮データのブロックを、該非圧縮のデータのブロックを格納可能なように、各領域ブロックに分割されたメモリの格納領域の先頭アドレスから、メモリに格納させる格納部と、
    該メモリに格納されたデータのブロックに対応して分割された格納領域に、データ量、データが圧縮データか非圧縮データかを示す情報からなるマップ情報を別途格納するマップ情報格納部と、
    を備えることを特徴とするメモリコントローラ。
  2. 前記メモリから読み込んだ前記データのブロックを展開する展開部と、
    前記マップ情報を参照し、メモリから読み込んだデータのブロックが、圧縮されたデータである場合には、前記展開部によって展開されたデータを、非圧縮のデータの場合には、読み込んだデータそのままを選択して出力する出力部と、
    を更に備えることを特徴とする請求項1に記載のメモリコントローラ。
  3. 前記圧縮部は、前記データのブロック内のみを参照する可逆な圧縮方法を用いてデータのブロックを圧縮することを特徴とする請求項1に記載のメモリコントローラ。
  4. 前記データのブロックは、メモリへの最小アクセス単位の整数倍の大きさであることを特徴とする請求項1に記載のメモリコントローラ。
  5. メモリに対する1つの読み出し/書き込みアクセスリクエストは、1つ以上のデータのブロックへのアクセスからなり、各データのブロックへのアクセスはひとつ以上の前記最小アクセス単位へのアクセスとなり、全ての該最小アクセス単位に格納されているデータが無圧縮であった場合における該データのブロックへのアクセスでアクセスされる該最小アクセス単位数mとし、該最小アクセス単位のビット数をnビットとすると、該データのブロックの圧縮結果がm×nビット以下となった場合、圧縮によりデータ量が少なくなったと判断することを特徴とする請求項4に記載のメモリコントローラ。
JP2009180330A 2009-08-03 2009-08-03 メモリコントローラ Expired - Fee Related JP5526641B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009180330A JP5526641B2 (ja) 2009-08-03 2009-08-03 メモリコントローラ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009180330A JP5526641B2 (ja) 2009-08-03 2009-08-03 メモリコントローラ

Publications (2)

Publication Number Publication Date
JP2011034370A JP2011034370A (ja) 2011-02-17
JP5526641B2 true JP5526641B2 (ja) 2014-06-18

Family

ID=43763372

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009180330A Expired - Fee Related JP5526641B2 (ja) 2009-08-03 2009-08-03 メモリコントローラ

Country Status (1)

Country Link
JP (1) JP5526641B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013102958A1 (ja) * 2012-01-06 2013-07-11 三菱電機株式会社 メモリアクセス制御装置
JP5687639B2 (ja) * 2012-02-08 2015-03-18 株式会社東芝 コントローラ、データ記憶装置及びプログラム
WO2015128955A1 (ja) * 2014-02-26 2015-09-03 株式会社日立製作所 記憶デバイス、記憶デバイスを有する装置、及び記憶制御方法
JP6471012B2 (ja) * 2015-03-25 2019-02-13 株式会社メガチップス 半導体メモリ、記憶装置、上位装置、データ処理システム、データ書き込み装置、データ書き込みプログラム、制御プログラム及びデータ書き込み方法
JP7142562B2 (ja) * 2018-12-25 2022-09-27 ルネサスエレクトロニクス株式会社 半導体装置、および、データのアクセスを制御するための方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060271761A1 (en) * 2003-04-16 2006-11-30 Riemens Abraham K Data processing apparatus that uses compression or data stored in memory
US8001294B2 (en) * 2004-09-28 2011-08-16 Sony Computer Entertainment Inc. Methods and apparatus for providing a compressed network in a multi-processing system

Also Published As

Publication number Publication date
JP2011034370A (ja) 2011-02-17

Similar Documents

Publication Publication Date Title
US9509992B2 (en) Video image compression/decompression device
JP4991816B2 (ja) 画像処理装置
KR100606812B1 (ko) 비디오 디코딩 시스템
US9894371B2 (en) Video decoder memory bandwidth compression
JP2007529178A (ja) 拡張可能な圧縮を伴い且つ基準フレームデータを記憶して回収するためのバッファを有するビデオデコーダ
JP5526641B2 (ja) メモリコントローラ
CN102547283A (zh) 动态视频数据压缩
WO2007024413A2 (en) Transpose buffering for video processing
US20100061464A1 (en) Moving picture decoding apparatus and encoding apparatus
CN101594535A (zh) 图像处理装置
JP5194703B2 (ja) データ処理装置及び共有メモリのアクセス方法
JP6679290B2 (ja) 半導体装置
CA2185753C (en) Digital image decoding apparatus
US20120147023A1 (en) Caching apparatus and method for video motion estimation and compensation
US20050047510A1 (en) Data processing device for MPEG
US6940909B2 (en) Video decoding during I-frame decode at resolution change
US6687298B1 (en) Method and apparatus for expanding moving pictures by software
US20190095338A1 (en) Semiconductor device, data processing system, and semiconductor device control method
CN101847394B (zh) 用以解码及显示视讯文件的存储器映射方法及装置
US9990900B2 (en) Image processing device and method thereof
JP2004343553A (ja) 画像復号表示装置
JP4559785B2 (ja) 信号処理方法および信号処理装置
JPH04326654A (ja) 画像データ圧縮伸張装置
JP2004120027A (ja) 画像処理装置
JP2007288443A (ja) 画像データ復号装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120405

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130705

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130716

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130917

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140318

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140331

R150 Certificate of patent or registration of utility model

Ref document number: 5526641

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees