(57)【要約】メモリコントローラは，Ｎビットのデータを，Ｋビット（例えばＫ＝８）をデータ単位とするメモリに記憶する。メモリコントローラは，Ｎビットのデータを，ＫビットとＮ−Ｋビット（例えばＮ−Ｋ＝Ｎ−８）に分割し，Ｌ個のデータについて，Ｌ個のＫビットデータをＬ個のデータ単位としてメモリに記憶し，パッキングしたＬ個のＮ−ＫビットデータをＭ個（Ｍ＝Ｌ×（Ｎ−Ｋ）／Ｋ）のデータ単位としてメモリに記憶する。
2009116115.tif 000002
【特許請求の範囲】
【請求項１】
Ｋビットをデータ単位とするメモリを制御するメモリコントローラにおいて，
Ｋビットの倍数でないＮビットのデータをＫビットとＮ−Ｋビットに分割し，Ｌ個の前記データについて，Ｌ個のＫビットデータをＬ個のデータ単位に配置し，Ｌ個のＮ−ＫビットデータをパッキングしてＭ個（Ｍ＝Ｌ×（Ｎ−Ｋ）／Ｋ）のデータ単位に配置するデータマッピング部と，
前記Ｌ個のＫビットデータをＬ個のデータ単位として前記メモリにアクセス制御し，前記パッキングしたＬ個のＮ−ＫビットデータをＭ個のデータ単位として前記メモリにアクセス制御するアクセス制御部とを有するメモリコントローラ。
【請求項２】
請求項１において，
前記アクセス制御部は，前記Ｌ個のＫビットデータと前記パッキングしたＬ個のＮ−Ｋビットデータとを，前記メモリ内の連続したＬ＋Ｍ個のデータ単位の領域内に記憶するメモリコントローラ。
【請求項３】
請求項１において，
前記アクセス制御部は，前記Ｌ個のＫビットデータと前記パッキングしたＬ個のＮ−Ｋビットデータとを，前記Ｌ個のＫビットデータの中央に前記パッキングしたＬ個のＮ−Ｋビットデータを配置して，前記メモリ内の連続したＬ＋Ｍ個のデータ単位の領域内に記憶するメモリコントローラ。
【請求項４】
請求項１において，
前記アクセス制御部は，前記Ｌ個のＫビットデータと前記パッキングしたＬ個のＮ−Ｋビットデータとを，前記Ｌ個のＫビットデータの前または後に，前記パッキングしたＬ個のＮ−Ｋビットデータを配置して，前記メモリ内の連続したデータ単位の領域内に順番に記憶するメモリコントローラ。
【請求項５】
請求項１において，
前記アクセス制御部は，前記Ｌ個のＫビットデータと前記パッキングしたＬ個のＮ−Ｋビットデータとを，前記Ｌ個のＫビットデータの中に前記パッキングしたＬ個のＮ−Ｋビットデータを分散して配置して，前記メモリ内の連続したＬ＋Ｍ個のデータ単位の領域内に記憶するメモリコントローラ。
【請求項６】
請求項２〜５のいずれかにおいて，
前記メモリは，前記メモリコントローラから供給されるアドレスにより選択されるメモリ単位領域を複数有し，
前記Ｌ個のＫビットデータのビット長が前記メモリ単位領域のビット長の倍数であるメモリコントローラ。
【請求項７】
請求項２〜５のいずれかにおいて，
前記メモリは，前記メモリコントローラから供給されるアドレスにより選択されるメモリ単位領域を複数有し，
前記Ｌ個のＫビットデータのビット長が前記メモリ単位領域のビット長の倍数であり，
前記パッキングしたＬ個のＮ−Ｋビットデータのビット長が前記メモリ単位領域のビット長の倍数であるメモリコントローラ。
【請求項８】
請求項１において，
前記データマッピング部は，ライト動作において，上位システムから供給される前記Ｎビットのデータを，前記Ｌ個のＫビットデータと前記パッキングしたＬ個のＮ−Ｋビットデータとに配置し，リード動作において，前記メモリから供給される前記Ｌ個のＫビットデータと前記パッキングしたＬ個のＮ−Ｋビットデータとを，Ｌ個のＫビットデータに再配置するメモリコントローラ。
【請求項９】
請求項１において，
前記アクセス制御部は，上位システムからのＮビットアクセス要求に応答して，前記Ｌ個のＫビットデータと前記パッキングしたＬ個のＮ−Ｋビットデータとを前記メモリに書き込みまたは前記メモリから読み出し，前記上位システムからのＫビットアクセス要求に応答して，前記Ｌ個のＫビットデータを前記メモリに書き込みまたは前記メモリから読み出すメモリコントローラ。
【請求項１０】
Ｋビットをデータ単位とすると共に，供給アドレスにより選択されるメモリ単位領域を複数有するメモリを制御するメモリコントローラにおいて，
Ｋビットの倍数でないＮビットのデータをＫビットとＮ−Ｋビットに分割し，Ｌ個の前記データについて，Ｌ個のＫビットデータをＬ個のデータ単位に配置し，Ｌ個のＮ−ＫビットデータをパッキングしてＭ個（Ｍ＝Ｌ×（Ｎ−Ｋ）／Ｋ）のデータ単位に配置するデータマッピング部と，
前記Ｌ個のＫビットデータをＬ個のデータ単位として前記メモリにアクセス制御し，前記パッキングしたＬ個のＮ−ＫビットデータをＭ個のデータ単位として前記メモリにアクセス制御するアクセス制御部とを有し，
前記Ｌ個のＫビットデータのビット長が前記メモリ単位領域のビット長の倍数であり，
前記アクセス制御部は，前記Ｌ個のＫビットデータと前記パッキングしたＬ個のＮ−Ｋビットデータとを，前記Ｌ個のＫビットデータの中央に前記パッキングしたＬ個のＮ−Ｋビットデータを配置して，前記メモリ内の連続したＬ＋Ｍ個のデータ単位の領域内に記憶するメモリコントローラ。
【請求項１１】
請求項１０において，
前記アクセス制御部は，前記上位システムからのアクセス要求に応答して，動作コマンドとアドレスと前記メモリ単位領域内のアクセスを開始するデータ単位の位置情報とを前記メモリに供給し，前記メモリ内の前記アドレスにより選択されるメモリ単位領域内の前記位置情報に対応するデータ単位から始まる前記メモリ単位領域のビット長のデータをアクセス制御するメモリコントローラ。
【請求項１２】
Ｋビットをデータ単位とすると共に，供給アドレスにより選択されるメモリ単位領域を複数有するメモリを制御するメモリコントローラにおいて，
前記Ｋビットの倍数でないＮビットのデータを上位システムから供給され，前記ＮビットのデータをＫビットとＮ−Ｋビットに分割し，Ｌ個のデータについて，Ｌ個のＫビットデータをＬ個のデータ単位に配置し，Ｌ個のＮ−ＫビットデータをパッキングしてＭ個（Ｍ＝Ｌ×（Ｎ−Ｋ）／Ｋ）のデータ単位に配置するデータマッピング部と，
前記Ｌ個のＫビットデータをＬ個のデータ単位として前記メモリにアクセス制御し，前記パッキングしたＬ個のＮ−ＫビットデータをＭ個のデータ単位として前記メモリにアクセス制御するアクセス制御部とを有し，
前記Ｌ個のＫビットデータのビット長及び前記パッキングしたＬ個のＮ−Ｋビットデータのビット長が共に前記メモリ単位領域のビット長の倍数であり，
前記アクセス制御部は，前記Ｌ個のＫビットデータと前記パッキングしたＬ個のＮ−Ｋビットデータとを，前記Ｌ個のＫビットデータの前または後に前記パッキングしたＬ個のＮ−Ｋビットデータを配置して，前記メモリ内の連続したＬ＋Ｍ個のデータ単位の領域内に記憶するメモリコントローラ。
【請求項１３】
請求項１２において，
前記アクセス制御部は，上位システムからのアクセス要求に応答して，動作コマンドとアドレスとを前記メモリに供給し，前記メモリ内の前記アドレスにより選択されるメモリ単位領域内のデータをアクセス制御するメモリコントローラ。
【請求項１４】
請求項１に記載のメモリコントローラと，
前記Ｋビットをデータ単位とするメモリとを有するメモリシステム。
【請求項１５】
請求項１０または１２に記載のメモリコントローラと，
前記Ｋビットをデータ単位とすると共に，前記メモリ単位領域を複数有するメモリとを有するメモリシステム。
【請求項１６】
請求項１１に記載のメモリコントローラと，
前記Ｋビットをデータ単位とすると共に，前記メモリ単位領域を複数有するメモリとを有し，
前記メモリは，前記動作コマンドとアドレスと位置情報とに応答して，前記アドレスにより選択されるメモリ単位領域内の前記位置情報に対応するデータ単位から始まる前記メモリ単位領域のビット長のデータを書き込みまたは読み出すメモリシステム。
【請求項１７】
請求項１，１０，１２のいずれかにおいて，
前記Ｋビットは，８ビットであるメモリコントローラ。
【請求項１８】
請求項１４，１５，１６のいずれかにおいて，
前記Ｋビットは，８ビットであるメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，メモリコントローラ及びそれを使用したメモリシステムに関し，特に，データ単位のビット長（Ｋビット，例えば８ビット）の倍数でないビット長（Ｎビット，例えば１０ビットや１２ビット）のデータを処理するメモリコントローラ及びそれを使用したメモリシステムに関する。
【背景技術】
【０００２】
二次元配置された画素からなる画像のデータは，複数ビットの画素データの集合である。画素データは，輝度信号Ｙと色差信号Ｃｂ，Ｃｒで構成される場合や，ＲＧＢ階調信号で構成される場合などがある。各信号は，一般的には８ビット（１バイト）で構成される。【０００３】
一方，画像データを記憶するメモリ，例えばＳＤＲＡＭのような汎用メモリは，８ビット（１バイト）をデータ単位としてその内部回路が構成される。そのため，汎用メモリのデータバス幅はデータ単位のビット長である８の倍数，８ビット，１６ビット，３２ビット，６４ビットである。つまり，汎用メモリは，メモリコントローラから供給されるアドレスに応答して，上記のデータバス幅のビット長のデータを入出力する。このようにアドレスにより選択されるビット長のデータを格納する領域をメモリ単位領域と称する。したがって，メモリ単位領域は，メモリのデータバス幅のビット数に対応し，８ビット（１バイト）の倍数である。また，データバス幅つまりメモリ単位領域のビット数は，１ワードのビット長に対応する。【０００４】
近年において，画素データは，高画質化に伴い，１０ビット，１２ビットなど８ビットを越えるビット長を有する。このような高画質の画素データは，ビット長が８ビットの倍数でないため，汎用メモリへのアクセス効率に支障を招く。例えば，１０ビットの画素データは，４つの画素データを５バイト（８×５＝４０ビット）のデータとして取り扱う必要があり，１ワードのビット長つまりデータバス幅が３２ビットの場合は，メモリに５回アクセスして，１６の画素データを５ワードのデータとして入出力する必要がある。【０００５】
特許文献１には，単位データのビット長が８の倍数でない１０ビットや１２ビットのデータをメモリに格納する場合，第２のメモリを使用すること，または１つのメモリ内に１０ビットまたは１２ビットのデータを順次詰めて格納することが記載されている。そのために，メモリアクセス回路内に複数のバッファレジスタを設け，複数のバッファレジスタに格納された入力データを適宜選択して，メモリのデータバス幅に対応させている。【０００６】
特許文献２には，１０ビットの画像データを上位８ビットと下位２ビットに分割し，上位８ビットはそのまま磁気テープに記録し，下位２ビットは４サンプルをパッキングして８ビットとし，誤り訂正パリティを付加して磁気テープに記録することが記載されている。これにより誤り修正された画質を改善することができると説明されている。
【特許文献１】特開２００５−３２０３５号公報
【特許文献２】特開平７−１０５６３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
画素データのビット長がデータ単位のビット長（８ビット）を越えそのビット長の倍数でないＮビットの場合，データ処理は，各データをＮビットで処理する場合と，各データの上位８ビットで処理する場合とが混在する。このように画素データのビット長と，メモリのデータ単位及びデータバス幅と，が整合していない場合，上記の２種類の処理に対応するメモリアクセスの効率を高めることは困難である。【０００８】
特許文献１に示唆されるとおり，２つのメモリチップを使用して，上位８ビットを第１のメモリチップに，下位２ビットを第２のメモリチップに記録し，アクセス対象のビット長に応じて，第１のメモリチップのみをアクセスするか，第１，第２のメモリチップをアクセスするかを切り換えればよい。しかし，２つのメモリチップを使用することは，画像処理システムの規模が大きくなり好ましくない。【０００９】
そこで，本発明の目的は，データ単位のビット長（例えば８ビット）の倍数でないビット長を有するデータを汎用メモリに効率的に記憶するメモリコントローラを提供することにある。【００１０】
さらに，本発明の目的は，データ単位のビット長（例えば８ビット）の倍数でないビット長を有するデータを汎用メモリに効率的に記憶するメモリシステムを提供することにある。
【課題を解決するための手段】
【００１１】
第１の側面によれば，メモリコントローラは，Ｎビットのデータを，Ｋビット（例えばＫ＝８）をデータ単位とするメモリに記憶する。メモリコントローラは，Ｎビットのデータを，ＫビットとＮ−Ｋビット（例えばＮ−Ｋ＝Ｎ−８）に分割し，Ｌ個のデータについて，Ｌ個のＫビットデータをＬ個のデータ単位としてメモリに記憶し，パッキングしたＬ個のＮ−ＫビットデータをＭ個（Ｍ＝Ｌ×（Ｎ−Ｋ）／Ｋ）のデータ単位としてメモリに記憶する。【００１２】
メモリコントローラは，Ｌ個のＫビットデータと，パッキングしたＬ個のＮ−Ｋビットデータとを，メモリ内の連続したＬ＋Ｍ個のデータ単位の領域内に記憶する。または，メモリコントローラは，Ｌ個のＫビットデータの中央に前記パッキングしたＬ個のＮ−Ｋビットデータを配置して，メモリ内の連続したＬ＋Ｍ個のデータ単位の領域内に記憶する。または，メモリコントローラは，Ｌ個のＫビットデータの間に，つまりＬ個のＫビットデータの前または後に，前記パッキングしたＬ個のＮ−Ｋビットデータを配置して，メモリ内の連続したデータ単位の領域内に順番に記憶する。【００１３】
第１の側面によれば，メモリコントローラは，Ｌ個のＮビットデータを少ないアクセス回数でメモリに書き込みまたは読み出しできる。さらに，メモリコントローラは，Ｌ個のＫビットデータを少ないアクセス回数でメモリに書き込み又は読み出しできる。【００１４】
第１の好ましい態様によれば，メモリコントローラは，Ｎビットのデータを，８ビット（１バイト）をデータ単位とするメモリに記憶する。メモリコントローラは，Ｎビットのデータを，８ビットとＮ−８ビットに分割し，Ｌ個のデータについて，Ｌ個の８ビットデータをＬ個のデータ単位としてメモリに記憶し，パッキングしたＬ個のＮ−８ビットデータをＭ個（Ｍ＝Ｌ×（Ｎ−８）／８）のデータ単位としてメモリに記憶する。そして，Ｌ個の８ビットデータのビット長（８×Ｌビット）が，メモリ単位領域のビット長の倍数になる。また，前記パッキングしたＬ個のＮ−８ビットデータのビット長（（Ｎ−８）×Ｌビット）も，メモリ単位領域のビット長の倍数になる。【００１５】
メモリコントローラは，Ｌ個の８ビットデータと，前記パッキングしたＬ個のＮ−８ビットデータとを，メモリ内の連続したＬ＋Ｍ個のデータ単位の領域内に記憶する。そして，Ｌ個の８ビットデータのビット長（８×Ｌビット）が，メモリ単位領域のビット長の倍数になり，また，前記パッキングしたＬ個のＮ−８ビットデータのビット長（（Ｎ−８）×Ｌビット）も，メモリ単位領域のビット長の倍数になる。よって，メモリコントローラは，Ｌ個の８ビットデータと，前記パッキングしたＬ個のＮ−８ビットデータとを，メモリ内の連続したメモリ単位領域に記憶する。【００１６】
第１の好ましい態様では，メモリコントローラは，Ｌ個の８ビットデータを少ないアクセス回数でメモリに書き込みまたは読み出しできる。また，前記パッキングしたＬ個のＮ−８ビットデータを少ないアクセス回数でまとめてメモリに書き込みまたは読み出しができる。【００１７】
第２の好ましい態様によれば，メモリコントローラは，Ｎビットのデータを，８ビット（１バイト）をデータ単位とするメモリに記憶する。メモリコントローラは，Ｎビットのデータを，８ビットとＮ−８ビットに分割し，Ｌ個のデータについて，Ｌ個の８ビットデータをＬ個のデータ単位としてメモリに記憶し，パッキングしたＬ個のＮ−８ビットデータをＭ個（Ｍ＝Ｌ×（Ｎ−８）／８）のデータ単位としてメモリに記憶する。そして，Ｌ個の８ビットデータのビット長（８×Ｌビット）が，メモリ単位領域のビット長の倍数になる。また，Ｍ＝１が望ましい。【００１８】
メモリコントローラは，Ｌ個の８ビットデータと，前記パッキングしたＬ個のＮ−８ビットデータとを，メモリ内の連続したＬ＋Ｍ個のデータ単位の領域内に記憶する。たとえば，Ｌ／２個の８ビットデータと，前記パッキングしたＬ個のＮ−８ビットデータと，Ｌ／２個の８ビットデータとが，メモリ内の連続したＬ＋Ｍ個のデータ単位の領域内に順番に且つ繰り返して記憶される。または，Ｌ個の８ビットデータと，前記パッキングしたＬ個のＮ−８ビットデータとが，メモリ内の連続したＬ＋Ｍ個のデータ単位の領域内に順番に且つ繰り返して記憶される。【００１９】
第２の好ましい態様では，メモリコントローラは，Ｌ個のＮビットデータを少ないアクセス回数で無駄なくメモリに書き込みまたは読み出しできる。さらに，Ｌ個の８ビットデータを少ないアクセス回数でメモリに書き込みまたは読み出しできる。【００２０】
第２の側面によれば，メモリシステムは，上記第１の側面のメモリコントローラと，Ｋビットをデータ単位とするメモリとを有する。【００２１】
好ましい態様によれば，メモリは，メモリコントローラからのメモリアクセスに応答して，アドレスに基づいて選択されるメモリ単位領域に対してデータの書き込みと読み出しを行う。１つのメモリ単位領域は，所定数のデータ単位を格納する。そして，好ましくは，メモリは，メモリコントローラからの１回のメモリアクセスに応答して，隣接するメモリ単位領域内の所定数のデータ単位のデータを書き込み及び読み出す。
【発明の効果】
【００２２】
本発明によれば，データ単位のビット長（例えば８ビット）の倍数でないビット長を有するデータを汎用メモリに効率的に記憶することができる。
【図面の簡単な説明】
【００２３】
【図１】本実施の形態における画像メモリのメモリマップを示す図である。
【図２】メモリのバイトバウンダリ機能を示す図である。
【図３】画素データの第１のメモリマップを示す図である。
【図４】図３の第１のメモリマップにおけるアクセス効率を示す図である。
【図５】画素データの第２のメモリマップを示す図である。
【図６】図５の第２のメモリマップにおけるアクセス効率を示す図である。
【図７】本実施の形態におけるメモリマップを示す図である。
【図８】図７（ａ）の第３のメモリマップにおけるアクセス効率を示す図である。
【図９】図７（ｂ）の第４のメモリマップにおけるアクセス効率を示す図である。
【図１０】本実施の形態におけるメモリマップを示す図である。
【図１１】図１０（ａ）の第５のメモリマップにおけるアクセス効率を示す図である。
【図１２】図１０（ｂ）の第６のメモリマップにおけるアクセス効率を示す図である。
【図１３】第５，第６のメモリマップについて異なる読み出しサイズでのアクセス効率の比較を示す図である。
【図１４】第１のメモリマップにおいてバイトバウンダリアクセスを使用した場合のアクセス効率を示す図である。
【図１５】第２のメモリマップにおいてバイトバウンダリアクセスを使用した場合のアクセス効率を示す図である。
【図１６】第４のメモリマップの変型例を示す図である。
【図１７】第６のメモリマップの変型例を示す図である。
【図１８】本実施の形態におけるメモリシステムの構成図である。
【図１９】本実施の形態におけるメモリコントローラの構成図である。
【図２０】メモリコントローラの座標変換部とアクセス制御部の処理を示すフローチャート図である。
【図２１】フレーム画像とメモリの二次元アドレスとの関係を示す図である。
【図２２】フレーム画像ＦＬの画素とメモリＭＥＭのバイト領域との対応を示す図である。
【図２３】図１０（ａ）に示した第５のメモリマップ１２−５の場合におけるフレーム画像ＦＬの画素とメモリＭＥＭのバイト領域との対応を示す図である。
【図２４】バイトバウンダリ機能を有するメモリの例を示す図である。
【図２５】図２４の動作を説明する図である。
【図２６】矩形アクセス領域２２とページ内メモリマップとの関係を示す。
【図２７】１０ビットリード動作を示す図である。
【図２８】１０ビットライト動作を示す図である。
【図２９】８ビットリード動作を示す図である。
【図３０】ＭＰＥＧエンコーダとデコーダの構成図である。
【符号の説明】
【００２４】
Ｍｕｎｉｔ：メモリ単位領域            ＰＤ：Ｎビットのデータ
【発明を実施するための最良の形態】
【００２５】
以下，図面にしたがって本発明の実施の形態について説明する。但し，本発明の技術的範囲はこれらの実施の形態に限定されず，特許請求の範囲に記載された事項とその均等物まで及ぶものである。【００２６】
［メモリマップとメモリのバイトバウンダリ機能の概要］
図１は，本実施の形態における画像メモリのメモリマップを示す図である。図１において，表示デバイス１０を含む画像処理システムにおける画像データは，画像メモリ１５内に記憶される。画像データは，各画素の輝度信号Ｙと色差信号Ｃｂ，Ｃｒや，各画素のＲＧＢ階調信号などのデータで構成され，各データはＫビット，例えば８ビット（１バイト）のデータで構成される。【００２７】
一方，画像メモリ１５は，一般的にＳＤＲＡＭなどの半導体基板上に集積回路が形成された大容量且つ高速の汎用半導体メモリ装置からなる。このような画像メモリ１５は，複数のバンクＢａｎｋ０〜３（図１では４つのバンク）で構成され，各バンクＢａｎｋ０は複数のブロックＢＬＫ−０を有し，各ブロックは複数のワード線ＷＬとビット線ＢＬとその交差位置のメモリセルＭＣとを有する。メモリセルは，図示しないがワード線にゲートが接続されたＭＯＳトランジスタとトランジスタに接続されたキャパシタとで構成される。そして，図１の例では，４つのバンクはバンクアドレスＢＡ０−ＢＡ３に対応付けられ，ワード線はロウアドレスＲＡ０−ＲＡ７に対応付けられ，ビット線はコラムアドレスＣＡ０−ＣＡ１２７に対応付けられる。バンクアドレスＢＡとロウアドレスＲＡの組み合わせであるバンク内のワード線が選択され，コラムアドレスＣＡによりビット線が選択される。バンクアドレスＢＡ，ロウアドレスＲＡ，コラムアドレスＣＡにより，４バイトＢＹ０−３のデータがアクセスされる。１バイトは８ビットで構成されるので，１回のアクセスで４バイト，つまり４×８＝３２ビットのデータがメモリの入出力端子に関連付けられて，読み出しまたは書き込みが行われる。【００２８】
一般に，データ単位のビット長は８ビット（１バイト）であり，上記の例では，１回のアクセスで４つのデータ単位が入出力される。１回のアクセスで４バイトデータを入出力することで，画像メモリに対して単位時間に処理できる画素数を意味する帯域幅を大きくすることができる。【００２９】
画像データに対するメモリマップ１２によれば，バンクアドレスＢＡとロウアドレスＲＡにより特定されるページ領域１４が行列に配置される。そして，１つのページ領域１４は，拡大領域１４Ｅに示されるとおり，コラムアドレスＣＡ０−１２７で特定される１２８のメモリ単位領域を有し，各メモリ単位領域は４バイトＢＹ０−３（３２ビット）のデータを記憶する。この４バイトＢＹ０−３のデータが，メモリの入出力端子ＤＱ０−７，ＤＱ８−１５，ＤＱ１６−２３，ＤＱ２４−３１の，合計３２の入出力端子を経由して入出力される。この各バイトの８ビットデータが画素の信号データに対応する。また，３２ビットの入出力端子ＤＱがメモリのデータバスに接続される。【００３０】
つまり，データバス幅は３２ビットであり，コラムアドレスＣＡで選択されるメモリ単位領域（４バイト）のビット長と同じである。さらに，メモリ単位領域には，４バイトのデータ，つまり４つのデータ単位が記憶される。なお，ページ領域１４内のメモリ単位領域の数は，上記１２８個以外の任意の数にすることができる。【００３１】
上記のメモリマップ１２は，複数バンク構成のＳＤＲＡＭなどの画像メモリ１５を高速動作させるのに適している。ＳＤＲＡＭは，バンクアドレスＢＡとロウアドレスＲＡと共に与えられるアクティブコマンドに応答して，選択されたバンク内の選択されたワード線を駆動し，メモリセルのデータをビット線に読み出し，ビット線に対応付けられたセンスアンプを活性化してビット線電位を増幅するアクティブ動作を行う。その後，ＳＤＲＡＭは，コラムアドレスＣＡと共に与えられるリードコマンドに応答して，選択されたビット線からデータを読み出すリード動作を行う。あるいは，ＳＤＲＡＭは，アクティブ動作後に，コラムアドレスＣＡと書き込みデータと共に与えられるライトコマンドに応答して，選択されたビット線に書き込みデータを書き込むライト動作を行う。リード動作またはライト動作の後にプリチャージコマンドによるプリチャージ動作が行われ，再度，アクティブ動作，リードまたはライト動作になる。このように，ＳＤＲＡＭでは，各バンクが独立してアクティブ動作，リード動作，ライト動作を行うことができる。【００３２】
図１のメモリマップ１２によれば，上下左右に隣接するページ領域１４には異なるバンクアドレスＢＡ０−３が対応付けられる。すなわち，メモリマップ１２の奇数行にはバンクアドレスＢＡ０，１が交互に配置され，偶数行にはバンクアドレスＢＡ２，３が交互に配置される。さらに，メモリマップ１２のラスタ方向（行方向）に，ロウアドレスＲＡ０−７が２つずつ繰り返しながらインクリメントされ，メモリマップ１２の各行は，４つのロウアドレスＲＡ０−３，ＲＡ４−７で折り返されている。【００３３】
図２は，メモリのバイトバウンダリ機能を示す図である。図２では，ページ領域１４（ＢＡ＝０，ＲＡ＝０）内の矩形領域２２を効率的にアクセスするために，図示しないメモリコントローラは，リードコマンドＲＤと共に，バンクアドレスＢＡ，コラムアドレスＣＡと，スタートバイト情報ＳＢとを発行する。それに応答して，メモリは，矩形領域２２内の４バイトのデータＢＹ０−３を入出力端子ＤＱに同時に出力する。ライトコマンドＷＴの場合も同様の動作が行われる。【００３４】
メモリは，バンクアドレスＢＡ＝０，ロウアドレスＲＡ＝０とアクティブコマンドＡＣＴに応答して，ページ領域１４をアクティブ状態にする。そして，最初のリードコマンドＲＤと共に供給されるコラムアドレスＣＡ＝０とスタートバイト情報ＳＢ＝２に応答して，コラムアドレスＣＡ＝０，１の隣接するメモリ単位領域のデータのうち，ＣＡ＝０内のバイトデータＢＹ２，３と，ＣＡ＝１内のバイトデータＢＹ０，１とを，バイトデータＢＹ０−４として入出力端子ＤＱに出力する。次のリードコマンドＲＤと共に供給されるコラムアドレスＣＡ＝４とスタートバイト情報ＳＢ＝２に応答して，コラムアドレスＣＡ＝４，５の隣接するメモリ単位領域のデータのうち，ＣＡ＝４内のバイトデータＢＹ２，３と，ＣＡ＝５内のバイトデータＢＹ０，１とを，バイトデータＢＹ０−４として入出力端子ＤＱに出力する。その後の２つのリードコマンドＲＤに対しても，同様に隣接するメモリ単位領域からスタートバイト情報ＳＢ＝２に応じた組み合わせの４バイトのデータを選択し，入出力端子ＤＱに出力する。【００３５】
このように，バイトバウンダリ機能によれば，メモリは，１回のリードコマンドによるアクセスに応答して，隣接するメモリ単位領域から任意の組み合わせの４バイト（４つのデータ単位）のデータを選択して，３２ビットの入出力端子ＤＱに出力することができる。書き込みにおいても同様に，メモリはバイトバウンダリ機能により，１回のライトコマンドによるアクセスに応答して，隣接するメモリ単位領域から任意の組み合わせの４バイト（４つのデータ単位）の領域を選択して，書き込みデータを書き込むことができる。【００３６】
［画素データのメモリマップとアクセス効率］
次に，画像データを構成する画素データのメモリマップを複数示して，それぞれのアクセス効率について説明する。前提として，画素データのビット長は１０ビット（Ｎ＝１０），メモリのデータ単位のビット長は８ビット（１バイト）（Ｋ＝８），供給アドレスで選択可能なメモリ単位領域Munit（図１，２の１４）は，４バイト，つまり４つのデータ単位を有し，４×８＝３２ビットのデータを格納する。【００３７】
図３は，画素データの第１のメモリマップを示す図である。図３（Ａ）に示されるとおり，画像ＩＭＧは，二次元に配置された複数の画素からなり，各画素データＰＤ（Pixel Data）は１０ビットのビット長を有する。この画像ＩＭＧをラスタスキャンすると，１０ビットの画素データＰＤ０，ＰＤ１，ＰＤ２，ＰＤ３，ＰＤ４〜を順次取り出すことができる。上位のプロセッサは，このような画素データＰＤ０〜ＰＤ４を，メモリコントローラを介してメモリ内に書き込みまたはメモリから読み出す。【００３８】
図３（Ｂ）のメモリマップ１２−１によれば，それぞれ１０ビットの画素データＰＤ０〜ＰＤ３１を，４バイトのメモリ単位領域Munit内に連続して配置している。図３（Ｂ）のメモリマップ１２−１は，メモリ単位領域Munitを垂直方向に１次元に並べている。つまり，図１，２に示した二次元配置されるメモリ単位領域を１次元に並べている。そして，メモリマップ１２−１の左側にはバイトアドレス０，４，８，１２〜が示されている。このバイトアドレスは，メモリ単位領域Munit内の４つのバイト領域（データ単位）に対して与えられるアドレスであり，メモリに与えられるコラムアドレスＣＡとは異なる。図１，２のページ領域１４に示したとおり，コラムアドレスＣＡ０，ＣＡ１，ＣＡ２，ＣＡ３に対応するメモリ単位領域内には，それぞれ４つのバイト領域（データ単位）が含まれている。よって，図３（Ｂ）中のバイトアドレス０，４，８，１２〜は，コラムアドレスＣＡ０，ＣＡ１，ＣＡ２，ＣＡ３〜にそれぞれ対応する。【００３９】
メモリマップ１２−１では，１０ビットの画素データＰＤ０〜ＰＤ３１を，４バイトのメモリ単位領域Munitに連続的に配置しているので，画素データＰＤ０は２つのバイト領域内に８ビットと２ビットに分けて格納され，画素データＰＤ１は２つのバイト領域内に６ビットと４ビットとに分けて格納され，画素データＰＤ２は２つのバイト領域内に４ビットと６ビットに分けて格納される。そして，画素データＰＤ３は２つのバイト領域内に，且つ２つのメモリ単位領域Munit内に２ビット／８ビットに分けて格納される。同様に，画素データＰＤ６，９，１２がワード跨ぎになり２つのメモリ単位領域Munit内に，それぞれ４／６ビット，６／４ビット，８／２ビットに分けて格納される。そして，１６画素の画素データＰＤ０〜１５（１０ビット×１６画素＝１６０ビット）が，５つのメモリ単位領域Munit（５ワード領域）内に格納される。この１６画素の画素データが５つのメモリ単位領域Munit内に繰り返し格納される。【００４０】
図４は，図３の第１のメモリマップにおけるアクセス効率を示す図である。図４（Ａ）は，１０ビットの画素データを読み出し開始位置をＰＤ０から１画素ずつずらして８画素の画素データを読み出す場合のバイトアドレスを示している。それぞれの読み出し開始画素の位置に対応して，アクセスすべきバイトアドレスが示されている。前述のとおり，バイトアドレスはコラムアドレスＣＡに対応するアドレス「０，４，８，１２」でしか与えられない。図４（Ｂ）は，８ビットの画素データを同様に読み出す場合のバイトアドレスを示している。【００４１】
図４（Ａ）の10bitアクセスでは，画素データPD0から8画素のデータPD0−PD7を読み出す場合，３つのバイトアドレス「0，４，8」による読み出しが必要である。画素データPD1から８画素のデータを読み出す場合も同じである。さらに，画素データPD2から8画素のデータPD2-PD9を読み出す場合，４つのバイトアドレス「0，4，8，12」による読み出しが必要になる。画素データPD3から８画素データを読み出す場合も同じである。【００４２】
図４（Ｂ）の８bitアクセスでも，図４（Ａ）の１０bitアクセスと同じバイトアドレスによる読み出しが必要である。このように，第１のメモリマップ１２−１では，8bitアクセスを１０bitアクセスと同じように行わなければならず，８bitアクセスを効率的に行うことはできない。【００４３】
図５は，画素データの第２のメモリマップを示す図である。図５（Ａ）に示されるとおり，各画素データＰＤ（Pixel Data）は１０ビットのビット長を有する。画像をラスタスキャンすると，１０ビットの画素データをＰＤ０，ＰＤ１，ＰＤ３，ＰＤ４と順次取り出すことができる。そして，各画素データＰＤ０〜ＰＤ４は，上位８ビットと下位２ビットとに分離され，上位８ビットはメモリ１に，下位２ビットはメモリ２にそれぞれ分けて格納される。【００４４】
図５（Ｂ）のメモリマップ１２−２によれば，画素データＰＤ０〜ＰＤ３９の上位８ビットのデータが，メモリ１内のメモリ単位領域Munit内の各バイト領域に連続して格納され，下位２ビットのデータが，メモリ２内に連続して格納される。メモリ１では１つのメモリ単位領域Munit内に４画素の上位８ビットのデータが格納され，メモリ２では１つのメモリ単位領域Munit内に１６画素の下位２ビット（１６×２＝３２ビット）のデータが格納される。【００４５】
図６は，図５の第２のメモリマップにおけるアクセス効率を示す図である。図６（Ａ）は，１０ビットの画素データを読み出し開始位置をＰＤ０から１画素ずつずらして８画素の画素データを読み出す場合のバイトアドレスを示している。【００４６】
図６（Ａ）の１０ビットアクセスにおいて，画素データPD0から8画素データPD0-PD7を読み出す場合，Memory1の「0，４」の2アドレスとMemory2のアドレス「0」の読み出しが必要となる。画素データPD2から8画素データPD2−PD9を読み出す場合，Memory1の「0，4，8」の3アドレスと，Memory2のアドレス「0」の読み出しが必要となる。画素データPD1,PD3から８画素データを読み出す場合も同じである。図６（Ａ）中の太枠はMemory2のバイトアドレスを示している。【００４７】
図６（Ｂ）の８ビットアクセスの場合は，Memory2の読み出しは不要となるので，図６（Ａ）の太枠に示したMemory2のアドレスによるアクセスが不要になる。【００４８】
第２のメモリマップ１２−２では，10bitのアクセスも，8bitのアクセスもアクセス回数を少なくすることができる。しかし，２つのメモリチップを使用しているために，実装コストが高くなる。つまり，２つのメモリチップを使用することはコストダウン，実装面積の観点から避けるべきである。【００４９】
［本実施の形態におけるメモリマップ］
図７は，本実施の形態におけるメモリマップを示す図である。図７（ａ）には第３のメモリマップ１２−３が，図７（ｂ）には第４のメモリマップ１２−４がそれぞれ示されている。いずれも，隣接する水平１６画素の画素データPD0-15,PD16-31を１つの単位（10bit×16＝160bit）として，５つのメモリ単位領域Munit（＝ワード領域word）に繰り返し割り当てる。【００５０】
図７（ａ）に示した第３のメモリマップ１２−３では，１６画素の画素データPD0-PD15をそれぞれ上位の８ビットと下位の２ビットに分離し，5つのwordのうち，最初の4つのwordに16画素データPD0-PD15の上位8bitデータを割り当て、最後の1つのwordに16画素データの下位2bitデータをパッキングして割り当てている。すなわち，１６画素データPD0-PD15の上位８ビットデータと，パッキングした下位２ビットデータとが，交互に，連続してメモリ単位領域Munit内に割り当てられる。【００５１】
図７（ｂ）に示した第４のメモリマップ１２−４では，5つのwordのうち，最初の2つのwordに８画素データPD0-PD7の上位8bitデータを，次の1つのwordに16画素データPD0-PD15の下位2bitデータを，その後の2つのwordに８画素データPD8-PD15の上位8bitデータをそれぞれ割り当てている。すなわち，１６画素データPD0-PD15のうち，８画素データの上位８ビットデータの間にパッキングした１６画素データの下位２ビットデータが挟まれて，且つ繰り返し割り当てられる。【００５２】
図７に示した第３及び第４のメモリマップは，第１の好ましい態様である。このメモリマップによれば，メモリコントローラは，Ｎビット（Ｎ＝１０）のデータを，８ビット（１バイト）をデータ単位とするメモリに記憶する。メモリコントローラは，Ｎビットのデータを，８ビットとＮ−８（１０−８＝２）ビットに分割し，Ｌ個（Ｌ＝１６）のデータについて，Ｌ個の８ビットデータをＬ個のデータ単位としてメモリに記憶し，パッキングしたＬ個のＮ−８ビットデータをＭ個（Ｍ＝Ｌ×（Ｎ−８）／８＝１６×（１０−８）／８＝４個）のデータ単位としてメモリに記憶する。そして，Ｌ個の８ビットデータのビット長（８×Ｌビット＝１２８ビット）が，メモリ単位領域のビット長（３２ビット）の倍数（４倍，３２×４＝１２８ビット）になる。また，パッキングしたＬ個のＮ−８ビットデータのビット長（（Ｎ−８）×Ｌビット＝３２ビット）も，メモリ単位領域のビット長（３２ビット）の倍数（１倍）になる。【００５３】
図８は，図７（ａ）の第３のメモリマップ１２−３におけるアクセス効率を示す図である。前述と同様に，第３のメモリマップ１２−３において，水平読み出し開始位置を1画素ずつずらして8画素データを読み出す場合それぞれについて，アクセスすべきバイトアドレスが示されている。図８(a)は，10bitデータを読み出す場合，図８(b)は上位8bitデータを読み出す場合である。【００５４】
図８（ａ）の10bitデータのアクセスで画素データPD0から8画素データPD0-PD7を読み出す場合，アクセスされるバイトアドレスは，上位8bitデータが格納されているアドレス「0，４」と，下位2bitデータが格納されているアドレス「16」の3アドレスである。画素データPD2から8画素データPD2-PD9を読み出す場合，アクセスされるアドレスは，上位8bitデータが格納されているアドレス「0，4，8」と，下位2bitデータが格納されているアドレス「16」の4アドレスである。以下同様である。【００５５】
8bitデータを読み出しの場合は，下位2bitデータのアクセスは不要となるので，図８（ａ）の下位２bitデータアクセスの太枠を除いた図８（ｂ）のようになる。第３のメモリマップ１２−３では，1個のメモリのみにデータを記憶させているが，図６の第２のメモリマップ１２−２と同等のメモリアクセス回数となっており，メモリアクセス効率を保ったまま，実装コストの削減を実現している。【００５６】
図９は，図７（ｂ）の第４のメモリマップ１２−４におけるアクセス効率を示す図である。第４のメモリマップ１２−４では，下位２ビットデータをパッキングした１ワードのデータが，４ワード分の上位８ビットデータの中央にマッピングされる。よって，図９（ａ）の１０ビットデータのアクセスでは，太枠で示した下位２ビットデータのアクセス位置が，図８とは異なっている。それ以外は，図８と同じである。よって，第３，第４のメモリマップのアクセス効率は同等である。【００５７】
第３，第４のメモリマップ１２−３，１２−４では，１６画素分の上位8bitデータと，１６画素分の下位2bitデータを，共にメモリ単位領域Munitのビット長の倍数，つまりワード領域Wordのビット長（３２ビット）の倍数になるようにマッピングされる。よって，10bitデータのアクセスをする場合に，複数回のメモリ単位領域Munitにアクセスすることで，無駄なくデータの書き込みと読み出しを行うことができる。よって，より高いメモリアクセス効率を実現できる。【００５８】
さらに，第３，第４のメモリマップでは，８ビットデータとパッキングした２ビットデータとが，メモリ単位領域のビット長の倍数になるようにマッピングされるので，メモリが１回のアクセスに応答してコラムアドレスＣＡで選択可能なメモリ単位領域の４バイト，３２ビットのデータを入出力する場合に有利である。【００５９】
次に，メモリが，バイトバウンダリ機能を有し，１回のアクセスでメモリ単位領域内の任意の位置のメモリ単位（バイト領域）から４バイト，３２ビットのデータを入出力できる場合に有利なメモリマップについて説明する。【００６０】
図１０は，本実施の形態におけるメモリマップを示す図である。図１０（ａ）には第５のメモリマップ１２−５が，図１０（ｂ）には第６のメモリマップ１２−６がそれぞれ示されている。いずれも，隣接する水平４画素の画素データPD0-3,PD4-7を１つの単位（10bit×4＝40bit）として，５つのバイト領域に繰り返し割り当てる。【００６１】
図１０(a)の第５のメモリマップ１２−５によれば，連続する5つのByteのうち，最初の4Byteに4画素データPD0-PD3の上位8bitデータを，最後の1Byteに4画素データPD0-PD3の下位2bitデータを割り当てる。次の４画素データPD4-PD7，PD8-PD11についても同様である。つまり，４バイトの上位８ビットデータと，１バイトにパッキングされた下位２ビットデータとが，交互にそして連続してメモリのバイト領域に割り当てられる。【００６２】
図１０(b)の第６のメモリマップ１２−６によれば，連続する5つのByteのうち，最初の2Byteに左側2画素データPD0,PD1の上位8bitデータ，次の1つのByteに4画素データPD0-PD3のパッキングされた下位2bitデータ，その後の2つのByteに右側2画素データPD2，PD3の上位8bitデータを割り当てる。次の４画素データPD4-PD7，PD8-PD11についても同様である。つまり，４バイトの上位８ビットデータの中央に，１バイトにパッキングされた下位２ビットデータが割り当てられる。【００６３】
図１０(a)，(b)のどちらのメモリマップでも，4画素データをそれぞれ5byteを1単位としてメモリに割り当てられるため，メモリ単位領域Munit（ワード領域word）内における下位2bitデータが割り当てられるByte位置は1Byteずつ移動し，5つのワード領域wordで元の位置に戻る。【００６４】
図１０に示した第５及び第６のメモリマップは，第２の好ましい態様である。このメモリマップによれば，メモリコントローラは，Ｎビット（Ｎ＝１０）のデータを，８ビット（１バイト）をデータ単位とするメモリに記憶する。メモリコントローラは，Ｎビットのデータを，８ビットとＮ−８ビット（１０−８＝２ビット）に分割し，Ｌ個（Ｌ＝４）のデータについて，Ｌ個の８ビットデータをＬ個のデータ単位としてメモリに記憶し，パッキングしたＬ個のＮ−８ビットデータをＭ個（Ｍ＝Ｌ×（Ｎ−８）／８＝４×（１０−８）／８＝１個）のデータ単位としてメモリに記憶する。そして，Ｌ個の８ビットデータのビット長（８×Ｌビット＝３２ビット）が，メモリ単位領域のビット長（３２ビット）の倍数（＝１）になる。また，Ｍ＝１である。【００６５】
図１１は，図１０（ａ）の第５のメモリマップ１２−５におけるアクセス効率を示す図である。前述と同様に，第５のメモリマップ１２−５において，水平読み出し開始位置を1画素ずつずらして，8画素データを読み出す場合のバイトアドレスが示されている。図１１(a)は，10bitデータを読み出す場合，図１１(b)は上位8bitデータを読み出す場合である。【００６６】
ここで留意すべき点は，図２で説明したバイトバウンダリアクセスが可能なメモリを前提にしていることである。バイトバウンダリアクセスでは，コラムアドレスＣＡに加えてスタートバイト情報ＳＢを与えることで，メモリは，メモリ単位領域Munit内の任意のバイト領域からメモリ単位領域のビット長の１ワードデータを入出力することができる。つまり，コラムアドレスＣＡとスタートバイト情報ＳＢとの組み合わせにより，読み出し開始バイトアドレスを指定できる。したがって，図１１では，アクセスされるバイトアドレスは，「０，４，８，１２〜」ではなく，任意のバイトアドレスになっている。【００６７】
図１１（ａ）の10bitデータアクセスでは，画素データPD0から8画素データPD0-PD7を読み出す場合，バイトアドレスは，「０，４，８」の3アドレスである。画素データPD1から8画素データPD1-PD8を読み出す場合，バイトアドレスは，「１，５，９，１３」の４アドレスである。これらのバイトアドレスの指定は，コラムアドレスＣＡを「０，４，８，１２」，スタートバイトＳＢ＝１にすることで行われる。バイトアドレス「１」に対してPD1-PD3の８ビットデータとPD0-PD3の２ビットデータとが読み出され，バイトアドレス「５」に対してPD4-PD7の８ビットデータが読み出され，バイトアドレス「９」に対してPD4-PD7の２ビットデータとPD8-PD10の８ビットデータとが読み出され，バイトアドレス「１３」に対してPD11の８ビットデータとPD8−PD11の２ビットデータとPD12,PD13の８ビットデータとが読み出される。画素データPD2から8画素データを読み出す場合，バイトアドレスは，「2，6，10，14」の4アドレスである。これらのバイトアドレスの指定は，コラムアドレスＣＡを「０，４，８，１２」，スタートバイトＳＢ＝２にすることで行われる。同様に，画素データPD3から８画素データPD3-PD10を読み出す場合は，バイトアドレスは「3,7,11」である。以下同様に理解できる。【００６８】
一方，図１１（ｂ）の8bitデータアクセスの場合は，パッキングされた下位2bitデータのバイト領域を読み出す必要はない。よって，バイトアドレスは，上位8bitデータが連続した4Byteを読み出すアドレスになる。例えば，画素PD0から8画素データPD0-PD7を読み出す場合，バイトアドレスは「0，5」の2アドレスだけでよい。ただし，読み出し開始位置が4の倍数でない場合は，3つのwordの読み出しが必要となる。例えば，画素データPD2から8画素データPD2-PD9を読み出す場合，バイトアドレスは「0，5，10」の3アドレスになる。つまり８ビットアクセスの場合，読み出し開始位置が4の倍数に制限され場合は，全て２アドレスによるアクセスで無駄なく読み出しができる。【００６９】
図１２は，図１０（ｂ）の第６のメモリマップ１２−６におけるアクセス効率を示す図である。前述と同様に，第６のメモリマップ１２−６において，水平読み出し開始位置を1画素ずつずらして，8画素データを読み出す場合のバイトアドレスが示されている。図１２(a)は，10bitデータを読み出す場合，図１２(b)は上位8bitデータを読み出す場合である。【００７０】
図１２（ａ）の10bitデータアクセスでは，画素データPD0から8画素データPD0-PD7を読み出す場合，バイトアドレスは「0，４，８」の3アドレスとなる。画素PD2から8画素データPD2-PD9を読み出す場合，バイトアドレスは「2，6，10」の3アドレスとなる。この場合は，コラムアドレスＣＡ０，１，２，スタートバイトＳＢ＝２になる。以下同様に，全て３回のアクセスで８画素の１０ビットデータを読み出すことができる。この理由は，４画素データのうち，パッキングされた４画素の２ビットデータが左右の２画素の８ビットデータの間に（または４画素の９ビットデータの中央に）マッピングされているので，第５のメモリマップ１２−５のように４回のアクセスが必要になることがないからである。よって，第６のメモリマップは，１０ビットアクセスにおいて，従前の第１〜第５のメモリマップのなかで最もアクセス効率が高い。【００７１】
図１２（ｂ）の８ビットデータアクセスの場合は，パッキングされた下位２ビットデータのバイト領域を読み出す必要がなく，３回のアクセスまたは２回のアクセスで読み出すことができる。このアクセス効率は，図１１（ｂ）の第５のメモリマップと同等である。そして，読み出し開始位置を４ｎ＋２（ｎ＝０，１，２〜）に制限することで，読み出し開始位置をＰＤ２，６，１０，１４にして全て２アドレスでアクセスでき，図１１（ｂ）と同様にアクセス効率が高くなる。【００７２】
図１３は，第５，第６のメモリマップについて異なる読み出しサイズでのアクセス効率の比較を示す図である。１０ビットデータアクセスの場合の比較である。横軸は，３２通りの読み出しサイズ（１画素〜３２画素）を示す。一方，縦軸は，各読み出しサイズ１−３２で３２通りの画素開始位置について，第５のメモリマップと第６のメモリマップのアクセス回数の比較を示す。具体的には，第６のメモリマップが第５のメモリマップに対して，１ワード増加，１ワード削減，変化なしの比率が示されている。【００７３】
この実験結果によれば，３２通りの読み出しサイズ×３２通りの画素開始位置，つまり３２×３２＝１０２４パターンのうち，1word削減が262パターン，1word増加が16パターンとなっている。よって，１０ビットアクセスでは，第６のメモリマップ１２−６のほうが第５のメモリマップ１２−５よりもアクセス回数（word数）を削減できることを示している。８ビットアクセスの場合は，前述のとおり同等である。【００７４】
図１４は，第１のメモリマップにおいてバイトバウンダリアクセスを使用した場合のアクセス効率を示す図である。この場合も，開始画素PD0〜PD15から８画素データを読み出す場合のアクセスされるバイトアドレスを示している。図１４（Ａ）の１０ビットアクセスも，図１４（ｂ）の８ビットアクセスも，共に，３回のアクセスが必要になる。つまり，８ビットアクセスにおいて，第６のメモリマップ１２−６よりアクセス効率が低下する。【００７５】
図１５は，第２のメモリマップにおいてバイトバウンダリアクセスを使用した場合のアクセス効率を示す図である。この場合も，開始画素PD0〜PD15から８画素データを読み出す場合のアクセスされるバイトアドレスを示している。図１５（Ａ）の１０ビットアクセスでは全て３回のアクセスが必要であり，図１５（ｂ）の８ビットアクセスでは全て２回のアクセスになる。最もアクセス効率は高い。しかし，第２のメモリマップは２つのメモリを使用するので，コストアップ，面積アップになり好ましくない。【００７６】
図７（ｂ）の第４のメモリマップ１２−４では，パッキングされるＬ画素分の下位のＮ−８ビットデータのビット長（（Ｎ−８）×Ｌ）が，メモリ単位領域Munitのビット長（３２ビット）の倍数（１倍）になっている。よって，８ビットデータをアクセスする場合，端数のN-8ビットデータのメモリ単位領域を飛ばしてアクセスすることができ，アクセス効率が上がる。【００７７】
図１６は，第４のメモリマップの変型例を示す図である。（ａ）はＮ＝９ビット，Ｌ＝３２画素，Ｍ＝１wordの例，（ｂ）はＮ＝１１ビット，Ｌ＝３２画素，Ｍ＝３wordの例，（ｃ）はＮ＝１２ビット，Ｌ＝８画素，Ｍ＝１wordの例である。いずれも，Ｌ画素分の上位８ビットデータがメモリ単位領域のデータ長（３２ビット）の倍数に，Ｌ画素分の下位Ｎ−８ビットデータもメモリ単位領域のデータ長の倍数になっている。【００７８】
（ａ）の例では，パッキングされた３２画素分の下位１ビットデータが１つのメモリ単位領域（１word）に配置され，３２画素分の上位８ビットデータの中央の位置に配置されている。【００７９】
（ｂ）の例では，パッキングされたＬ画素分の下位３ビットデータが３つのメモリ単位領域（３word）に配置され，Ｌ画素分の上位８ビットデータの中に２ワードおきに分散して配置されている。【００８０】
（ｃ）の例では，パッキングされた８画素分の下位４ビットデータが１つのメモリ単位領域（１word）に配置され，８画素分の上位８ビットデータの中央の位置に配置されている。【００８１】
図１０（ｂ）の第６のメモリマップ１２−６では，パッキングされるＬ画素分の下位のＮ−８ビットデータのビット長（（Ｎ−８）×Ｌ）が，データ単位のビット長（８ビット）の倍数（１倍）になっている。よって，８ビットデータをアクセスする場合，バイトバウンダリアクセスにより端数のN-8ビットデータのデータ単位領域（バイト領域）を飛ばしてアクセスすることができ，アクセス効率が上がる。さらに，Ｌ画素分の上位８ビットデータのビット長（８×Ｌ）を，メモリ単位領域のビット長，つまりデータバス幅（３２ビット）の倍数（１倍）にしている。よって，８ビットデータをアクセスする場合，アクセス回数を最小限にすることができる。また，Ｌ／２画素の８ビットデータの間にパッキングされた下位のＮ−１ビットデータを配置することで，図１３で示したとおり，１０ビットアクセスのアクセス効率を高くすることができる。【００８２】
図１７は，第６のメモリマップの変型例を示す図である。（ａ）はＮ＝９ビット，Ｌ＝８画素，Ｍ＝１バイトの例，（ｂ）はＮ＝１１ビット，Ｌ＝８画素，Ｍ＝３バイトの例，（ｃ）はＮ＝１２ビット，Ｌ＝４画素，Ｍ＝２バイトの例である。いずれも，Ｌ画素分の上位８ビットデータがデータ単位であるバイト領域のデータ長（８ビット）の倍数に，Ｌ画素分の下位Ｎ−８ビットデータもデータ単位であるバイト領域のデータ長の倍数になっている。【００８３】
（ａ）の例では，パッキングされた８画素分の下位１ビットデータが１byteに配置され，８画素分の上位８ビットデータ（例えばPD0-7）の中央の位置に配置されている。【００８４】
（ｂ）の例では，パッキングされた８画素分の下位３ビットデータが３byteに配置され，８画素分の上位８ビットデータ（例えばPD0-7）の中央の位置に配置されている。【００８５】
（ｃ）の例では，パッキングされた４画素分の下位４ビットデータが４byteに配置され，４画素分の上位８ビットデータ（例えばPD0-3）の中央の位置に配置されている。【００８６】
［本実施の形態におけるメモリコントローラとメモリシステム］
上記のメモリマップのうち，第６のメモリマップ１２−６を例にしてメモリコントローラとメモリシステムについて説明する。メモリマップ１２−６は，図１０（ｂ）に示されたものである。それによれば，１０ビットの画素データについて，４画素分の８ビットデータを４バイト領域に，パッキングされた４画素分の２ビットデータを１バイト領域に，それぞれ割り当て，４バイト領域の８ビットデータの中央に，パッキングされた２ビットデータを割り当てている。【００８７】
また，メモリはＳＤＲＡＭが使用される。このメモリは，複数バンク，例えば４バンクを有し，ロウアドレスＲＡにより選択されるページ領域は２Ｋ（＝２０４８）ｂｙｔｅ，コラムアドレスＣＡにより選択されるワード領域（メモリ単位領域Munit）は４バイト（＝３２ビット）である。よって，２Ｋｂｙｔｅのページ領域は５１２のワード領域を有する。【００８８】
図１８は，本実施の形態におけるメモリシステムの構成図である。メモリシステムは，上位の画像プロセッサなどからアクセス要求REQを供給され，アクセス要求に対応したコマンドCOMとアドレスＡＤＤを生成するメモリコントローラ８０と，メモリコントローラによりアクセス制御されるメモリチップ８６とを有する。メモリコントローラ８０とメモリ８６との間で，書き込みデータまたは読み出しデータDQが入出力される。【００８９】
メモリコントローラ８０は，上位のプロセッサからのアクセス要求REQを調停する調停部８１と，受け付けられたアクセス要求REQのパラメータに含まれるアクセス対象領域の画像の座標（X,Y）から，メモリマップに基づくメモリ内でのアドレス（X',Y）に変換する座標変換部８２と，アクセス要求REQに対応するアドレスＡＤＤとコマンドＣＯＭを生成するアクセス制御部８３と，メモリマップに基づいて１０ビットの画素データＰＤをメモリ内のデータ単位（バイトデータ）に配置し，逆にメモリから出力されるデータ単位（バイトデータ）のデータを１０ビットまたは８ビットの画素データに再配置するデータマッピング部８４とを有する。【００９０】
メモリチップ８６は，それぞれメモリアレイＭＡと入出力回路９３を有する４つのメモリバンク９２と，ロウアドレスを制御するロウ制御部８７と，リフレッシュ制御部８９と，コラムアドレスを制御するコラム制御部９０とを有する。コラム制御部９０はバイトバウンダリ制御を行うバイトバウンダリ制御部９１を有する。メモリチップ８６は，バイトバウンダリ制御部９１を除いて汎用ＳＤＲＡＭである。【００９１】
なお，バイトバウンダリ機能については，例えば，特願２００６−３４５４１５号の明細書に詳述されている。特願２００６−３４５４１５号の開示内容が本明細書に引用文献により取り込まれる。【００９２】
図１９は，本実施の形態におけるメモリコントローラ８０の構成図である。メモリコントローラ８０は，図１８で示したとおり，リクエストパラメータRPと共にアクセスリクエストREQを入力する調停部８１，座標変換部８２，アクセス制御部８３，データマッピング部８４を有する。データマッピング８４の構成については後述する。【００９３】
図２０は，メモリコントローラの座標変換部とアクセス制御部の処理を示すフローチャート図である。図２０には，１０ビットアクセスと８ビットアクセスについて示されている。以下，１０ビットアクセスを例にしてメモリコントローラの動作を説明する。【００９４】
メモリコントローラは，２次元の矩形アクセス要求ＲＥＱを取得すると，リクエストパラメータとしてフレーム画像内における矩形領域の左上座標（Ｘ，Ｙ）と，縦横サイズ（Xsize,Ysize）とを取得する（Ｓ１０）。座標変換部８２は，このリクエストパラメータからメモリ内の二次元アドレス（X',Y）に座標変換する（Ｓ１２，Ｓ１４，Ｓ１６）。さらに，アクセス制御部８３は，メモリアドレスとコマンドを生成する（Ｓ１８）。なお，矩形アクセス要求ＲＥＱから１０ビットアクセスか８ビットアクセスかが区別可能になっている。【００９５】
図２１は，フレーム画像とメモリの二次元アドレスとの関係を示す図である。図中，フレーム画像ＦＬが１９２０×１０８８ピクセルで構成され，メモリＭＥＭが３８page×３４pageで構成される。各ページ領域Pageは，水平方向に６４byte，垂直方向に３２lineで構成される。そして，フレーム画像ＦＬでの矩形領域ＲＥＣがメモリＭＥＭでの矩形領域ＲＥＣ’に割り当てられている。【００９６】
汎用メモリのメモリコントローラは，矩形アクセス要求時にリクエストパラメータとして矩形領域ＲＥＣ’の左上座標と縦横サイズを供給され，それに対応するメモリのアドレスを生成する。しかし，本実施の形態では，１０ビットデータを第６のメモリマップに基づいて８ビットデータとパッキングした２ビットデータとにマッピングしている。そこで，図２１に示すとおり，フレーム画像ＦＬでの座標系(X,Y)からメモリＭＥＭの二次元アドレス（X',Y）に座標変換する必要がある。【００９７】
図２０のフローチャートに示されるとおり，座標変換部８２は，フレーム画像ＦＬ上での水平アクセス開始座標Ｘ１＝Ｘ，終了座標Ｘ２＝Ｘ＋Xsizeを求める（Ｓ１２）。さらに，座標変換部８２は，これらの座標Ｘ１，Ｘ２を，メモリＭＥＭでの座標Ｘ１’，Ｘ２’に変換する（Ｓ１４）。この変換式は，図２０の工程Ｓ１４に示される通りである。【００９８】
図２２は，フレーム画像ＦＬの画素とメモリＭＥＭのバイト領域との対応を示す図である。図１０（ｂ）に示した第６のメモリマップ１２−６では，１０ビットの画素データについて，４画素分の８ビットデータを４バイト領域に，パッキングされた４画素分の２ビットデータを１バイト領域にそれぞれ割り当て，４バイト領域の８ビットデータの中央にパッキングされた２ビットデータを割り当てている。よって，図２２に示されるとおり，フレーム画像ＦＬでの４画素が，メモリＭＥＭのバイト領域では，４バイトの８ビットデータと１バイトの２ビットデータとに割り当てられ，座標Ｘ’は，座標Ｘから５／４倍に拡張される。さらに，図２２に示されるとおり，座標Ｘ１＝１５の１０ビットデータをアクセスするためには，Ｘ１＝１５を５／４倍に拡張したＸ１’＝１９から−２バイト戻ったＸ１’＝１７のバイト領域からアクセスする必要がある。一方で，座標Ｘ２＝２０の１０ビットデータをアクセスするためには，Ｘ２＝２０を５／４倍に拡張したＸ２’＝２５から＋２バイト進んだＸ２’＝２７のバイト領域までアクセスする必要がある。【００９９】
図２２のＸ１’，Ｘ２’を求める変換式は，図２０の工程Ｓ１４と同じであり，上記の考え方に基づいている。なお，この変換式において％は余りを示し，除算／は小数点以下が切り捨てられる。【０１００】
さらに，座標変換部８２は，メモリ上の水平アドレスＸ１’，Ｘ２’から，メモリの二次元アドレスにおける矩形領域ＲＥＣ’に対する左上座標（X1',Y）と縦横サイズ(X2'-X1'+1,Ysize)を演算する（Ｓ１６）。【０１０１】
図２３は，図１０（ａ）に示した第５のメモリマップ１２−５の場合におけるフレーム画像ＦＬの画素とメモリＭＥＭのバイト領域との対応を示す図である。第５のメモリマップの場合は，４画素分の８ビットデータとパッキングされた４画素分の２ビットデータとを交互に配置している。よって，アクセス開始座標Ｘ１’はＸ１を５／４倍に拡張すればよい。一方，アクセス終了座標Ｘ２’はＸ２を５／４倍に拡張しさらにそれに対応する２ビットデータのバイト領域までアクセスする必要がある。よって，図２３に示される演算式によりＸ１’，Ｘ２’が求められる。【０１０２】
最後に，アクセス制御部８３は，矩形アクセスのパラメータの左上座標(X1',Y)と縦横サイズ（X2'-X1'+1,Ysize）とから，アドレスとコマンドを生成する（Ｓ１８）。図２１には，これらのパラメータからバイトアドレスを求める演算式Ｓ１８Ｅが示されている。メモリＭＥＭの構成によれば，各ページ領域Pageが水平方向に64byte，垂直方向に32line，で2048byteを有し，メモリMEM全体は水平方向に38page，垂直方向に34pageで構成される。よって，アドレス空間内のバイトアドレスByte_addressは，演算式Ｓ１８Ｅにより求められる。【０１０３】
ベースオフセットBaseOffsetはメモリMEMの左上のバイトアドレスを意味する。今仮に，アドレス（X1',Y）のバイトアドレスByte_addressを求めるとすると，アドレス（X1',Y）は左上から２番目のページ領域内の位置するので，演算式S18Eの２項目の（Y/32）*38*2048は０，３項目の（X'/64）*2048はX1'/64=1であるので2048，４項目の（Y%32）*64は（Y%32）=０故０，５項目の（X'%64）はX1'-64である。よって，Byte_address＝BaseOffset+2048+X1'-64になる。【０１０４】
アクセス制御部８３は，このようにして求めたバイトアドレスから，メモリのバンクアドレスBA,ロウアドレスRA,コラムアドレスCA,スタートバイトSBを求めることができる。【０１０５】
図２０の８ビットアクセスの場合は，矩形アクセスリクエストと共にパラメータとして左上座標（X,Y）と縦横サイズ（Xsize,Ysize）を取得する（Ｓ２０）。但し，ここではX=4i-2,Xsize=4j (ただしi,jは整数)の制約がある。この場合は，座標変換部８２は，水平アドレスＸ１’を図示した演算式で求める（Ｓ２２）。そして，アクセス制御部８３が，８ビットデータのみをアクセスするアドレスを算出し（Ｓ２４），メモリアドレスとコマンドを発行する（Ｓ２６）。【０１０６】
［バイトバウンダリ機能を有するメモリ］
具体的な矩形アクセス動作を説明する前に，バイトバウンダリ機能を有するメモリの一例を示す。バイトバウンダリ機能を有するメモリについては，前述のとおり，特願２００６−３４５４１５号に詳述されている。【０１０７】
図２４は，バイトバウンダリ機能を有するメモリの例を示す図である。また，図２５は，図２４の動作を説明する図である。【０１０８】
図２４において，アドレス信号Ａはマルチプル方式で入力され，ロウアドレスＲＡはロウアドレスバッファ９４Ｒに，コラムアドレスＣＡはコラムアドレスバッファ９４Ｃにそれぞれラッチされる。ロウ制御部８７は，選択されたメモリバンク９２のロウデコーダ２２３にロウアドレスＲＡを供給する。また，コラムバッファ９４Ｃ内のコラムアドレスＣＡも，選択されたメモリバンク内のコラムデコーダ２２２に供給される。【０１０９】
メモリバンク９２では，メモリアレイが４つのメモリブロックであるバイト領域Ｂｙｔｅ０−３に分割されている。各バイト領域は，メモリセルアレイ２２４と，第２アンプ２２５と，１対のデータラッチ２２６，２２７と，データバススイッチ２２８とを有し，１回のアクセスで１バイト（８ビット）のデータを入出力する。そして，４つのバイト領域から合計で３２ビット（４バイト）のデータが入出力バスＩ／Ｏｂｕｓに入出力される。入出力バスＩ／Ｏｂｕｓは３２ビットの入出力端子ＤＱ０−３１にバッファを介して接続される。なお，図２４には，１つのメモリバンク９２のみ示され，残りの３つのメモリバンクは省略されている。【０１１０】
コラム制御部９０は，コラムデコーダ２２２の動作タイミングを制御するコラムタイミングコントローラ２２０と，データラッチ回路２２６，２２７とデータバススイッチ２２８を制御するデータラッチセレクタ２２１とを有する。データラッチセレクタ２２１は，コラムアドレスＣＡとスタートバイトＳＢとに応じて，各バイト領域Ｂｙｔｅ０−３内のデータラッチ回路２２６，２２７とデータバススイッチ２２８とを制御する。【０１１１】
図２５に示されるとおり，ロウアドレスＲＡ０のページ領域内において，コラムアドレスＣＡ０の２バイト目からコラムアドレスＣＡ１の１バイト目までの４バイトデータをアクセスするものと仮定する。よって，スタートバイトＳＢ＝１である。【０１１２】
図２５のメモリチップ８６には，メモリ空間と入出力端子ＤＱとの関係が示されている。図２５では，コラムアドレスＣＡにより一度に選択されるメモリ単位領域の４バイトデータをＱ００〜Ｑ１５で示している。つまり，コラムアドレスＣＡ０により４バイトデータＱ００−０３が選択され，コラムアドレスＣＡ１により４バイトデータＱ０４−０７が選択される。【０１１３】
図２５の右側にはタイミングチャートが示されている。まず，アクティブコマンドＡＣＴと共に，図示しないバンクアドレスと共にロウアドレスＲＡ０が与えられ，対応するバンク内のワード線が駆動されセンスアンプが活性化される。その後，リードコマンドＲＤと共にコラムアドレスＣＡ０とスタートバイト信号ＳＢ＝１が与えられる。これに応答して，選択されたメモリバンク９２内のコラムデコーダ２２２は，コラムアドレスＣＡ０に対応する内部デコード信号２２２Ｄと，ＣＡ０を＋１インクリメントしたＣＡ１に対応する内部デコード信号２２２Ｄとを時分割で４つのバイト領域Ｂｙｔｅ０−３に出力し，各バイト領域では，ＣＡ０とＣＡ１に対応する２組の１バイトデータをデータラッチ回路２２６，２２７にキャッシュする。そして，データバススイッチ２２８は，各バイト領域でのＣＡ０とＳＢ１の組み合わせに応じて選択される１バイトデータをいずれかのデータラッチ回路２２６，２２７から入出力バスＩ／Ｏｂｕｓに出力する。つまり，ＣＡ０のデータＱ０１，Ｑ０２，Ｑ０３と，ＣＡ１のデータＱ０４とが入出力バスＩ／Ｏｂｕｓに出力される。ライト動作のときは，入出力バスからいずれかのデータラッチ回路に１バイトのデータが入力される。【０１１４】
すなわち，コラムデコーダは1回のアクセスで各バイト領域で１バイト分のコラム線（ビット線）を選択する。リード動作では，各バイト領域のメモリセルアレイ２２４から１バイト分のデータが選択され第２アンプ２２５で増幅されデータラッチ回路２２６，２２７にキャッシュされる。このとき、各バイト領域では，同じコラムアドレスＣＡにマッピングされたメモリセルにアクセスする。コラムアドレスで選択できるメモリ単位領域（４バイトのワード領域）の境界をまたぐバイトバウンダリアクセスを実現する為、コラムデコーダ２２２は1回目のアクセス終了後に再度コラム線の選択を行う。このコラム線のアドレスは前回のアドレスＣＡ０より1番地進行したＣＡ１である。メモリセルアレイ２２４から読み出された１バイトのデータは第２アンプで増幅され、1回目のアクセスとは異なるデータラッチ回路２２７にキャッシュされる。【０１１５】
したがって，データラッチ回路２２６，２２７には1回のアクセスで入出力端子DQが必要とする４バイトの２倍の８バイト分のデータが存在する為,データバススイッチ２２８は，各バイト領域のデータラッチ回路にキャッシュされた２バイト分のデータから半分の１バイト分のデータを選択し，入出力バスＩ／Ｏｂｕｓに転送する。データラッチセレクタ２２１は，コラムアドレスＣＡ０とスタートバイト信号ＳＢ＝１に応じて，各バイト領域内のデータラッチ回路２２６，２２７へのキャッシュ動作と，データバススイッチ２２８でのスイッチ動作とを制御する。これにより，各バイト領域から異なるコラムアドレスＣＡ０，ＣＡ１に対応するバイトデータを入出力バスＩ／Ｏｂｕｓに転送することができる。【０１１６】
その結果，図２５に示されるとおり，入出力バスＩ／Ｏｂｕｓを経由して，入出力端子ＤＱには，４バイトのデータＱ０４，Ｑ０１，Ｑ０２，Ｑ０３がそれぞれ転送される。このように，第２アンプ２２５，データラッチ回路２２６，２２７，データバススイッチ２２８で，入出力ユニット９３が構成される。【０１１７】
［矩形アクセスの動作］
次に具体的な矩形アクセスのメモリコントローラとメモリの動作について説明する。【０１１８】
図２６は，矩形アクセス領域２２とページ内メモリマップとの関係を示す図である。バンクアドレスＢＡｍとロウアドレスＲＡｎとにより特定されるページ領域Page内には，コラムアドレスCA0-CA511により選択される５１１のメモリ単位領域（ワード領域）が割り当てられている。そして，拡大された矩形領域２２に，フレーム画像の座標（X,Y）と，メモリでの二次元アドレス（X',Y）との関係が示されている。【０１１９】
いま仮に，フレーム画像の左上座標（X,Y）=(1,0)，矩形サイズ(8,4)の１０ビットデータをアクセスする場合を考える。この場合は，矩形アクセス領域２２は，フレーム画像上の座標（X,Y）では座標(1,0)〜(8,0)，(1,1)〜(8,1)，(1,2)〜(8,2)，(1,3)〜(8,3)を含むのに対して，メモリ上の二次元アドレス（X’,Y）では，アドレス(1,0)〜(12,0)，(1,1)〜(12,1)，(1,2)〜(12,2)，(1,3)〜(12,3)を含む。メモリ内のX'=2,7,12に，パッキングされた２ビットデータが格納されているからである。つまり，X=8の画素データにアクセスするためにはそれの２ビットデータ（X'=12）までアクセスする必要があるため，アクセス開始アドレスX1’=1，終了アドレスX2’=12になる。【０１２０】
そこで，図１９のメモリコントローラのデータマッピング部８４も参照しながら，上記の矩形領域２２のメモリアクセスについて，１０ビットのリード，ライト動作と，８ビットのリード動作とを順に説明する。【０１２１】
図２７は，１０ビットデータのリード動作を示す図である。キャスレイテンシが２の例である。まず，メモリコントローラは，時間ｔ０でアクティブコマンドＡＣＴと共にバンクアドレスＢＡ０とロウアドレスＲＡ０を発行する。それにより，図２６のページ領域Ｐａｇｅのワード線が駆動されセンスアンプが記憶データを増幅する。【０１２２】
次に，メモリの二次元アドレス(1,0)から４バイトデータを出力するために，メモリコントローラは，時間ｔ２に，リードコマンドＲＤと共にコラムアドレスＣＡ０，スタートバイトＳＢ１を発行する。キャスレイテンシCL=2経過後の時間ｔ４に，メモリ８６は，画素(1,0)の８ビットデータと，画素0/1/2/3の２ビットデータと，画素(2,0),(3,0)の８ビットデータとを３２ビットのデータ端子ＤＱに出力する。また，メモリコントローラ内のアクセス制御部８３は，端数データの位置選択信号PosSelect＝１をセレクト制御部８４１に出力する。そして，時間ｔ５に，メモリが出力した３２ビットのデータが，メモリコントローラ８０内のフリップフロップFF-R0に格納される。【０１２３】
端数データ位置選択信号PosSelectは，アクセス制御部８３がメモリマップにしたがってアドレス算出時に求める。また，アクセス制御部８３は，アクセスリクエストREQを受信したときに，アクセス矩形のサイズ情報SIZEと，１０ビットアクセスか８ビットアクセスかを示す信号K/Nとを，セレクト制御部８４１に出力する。【０１２４】
時間ｔ３に，メモリコントローラは，リードコマンドＲＤと共にコラムアドレスＣＡ１，スタートバイトＳＢ１を発行する。これにより，メモリの二次元アドレス(5,0)から４バイトデータがアクセスされる。CL=2経過後の時間ｔ５に，メモリ８６は，画素(4,0),(5,0)の８ビットデータと，画素4/5/6/7の２ビットデータと，画素(6,0)の８ビットデータとを３２ビットのデータ端子ＤＱに出力する。また，メモリコントローラ内のアクセス制御部８３は，端数データの位置選択信号PosSelect＝２をセレクト制御部８４１に出力する。そして，時間ｔ６に，メモリが出力した３２ビットのデータが，メモリコントローラ８０内のもう一つのフリップフロップFF-R1に格納される。【０１２５】
そして，時間ｔ７に，メモリコントローラ内のリード用セレクタSEL-Rが，セレクト制御部８４１の制御により，２つのフリップフロップFF-R0,FF-R1内に格納されているデータから各画素の８ビットデータと２ビットデータとを選択し，画素(1,0),(2,0),(3,0),(4,0)の１０ビットデータをフリップフロップFF-R2に格納する。これにより，メモリが出力したデータ単位のデータが１０ビットデータに再配置される。そして，メモリコントローラは，リードバッファ８４２を介して，これら４画素の１０ビットデータを出力する。【０１２６】
同様にして，時間ｔ４に，メモリ内の二次元アドレス(9,0)から４バイトデータへのアクセスのために，メモリコントローラは，リードコマンドRDと共にコラムアドレスＣＡ２，スタートバイトＳＢ＝１を発行する。CL=2経過後の時間ｔ６に，メモリ８６は，画素(7,0),(8,0),(9,0)の８ビットデータと，画素8/9/10/11の２ビットデータを３２ビットのデータ端子ＤＱに出力する。また，メモリコントローラ内のアクセス制御部８３は，端数データの位置選択信号PosSelect＝3をセレクト制御部８４１に出力する。そして，時間ｔ７に，メモリが出力した３２ビットのデータが，メモリコントローラ８０内のフリップフロップFF-R0に格納される。【０１２７】
そして，時間ｔ８に，メモリコントローラ内のリード用セレクタSEL-Rが，セレクト制御部８４１の制御により，画素(5,0),(6,0),(7,0),(8,0)の１０ビットデータをフリップフロップFF-R2に格納する。そして，リードバッファ８４２を介してこれら４画素の１０ビットデータを出力する。【０１２８】
２行目以降の１０ビットアクセスも同様にして行われる。このように，第６のメモリマップによりデータをマッピングするとともに，バイトバウンダリ機能を有するメモリを使用すれば，３回のリードコマンドの発行により，８画素の１０ビットデータをアクセスすることができ，アクセス効率が高い。そして，メモリコントローラ８０内のデータマッピング部８４が，メモリから読み出される８ビットデータと２ビットデータとを並べ替えて再配置し，各画素の１０ビットデータを出力する。つまり，矩形領域２２の８×４画素の１０ビットデータを読み出すのに，１２回のリードコマンドＲＤを発行すればよい。【０１２９】
図２８は，１０ビットライト動作を示す図である。ここでは，ライトアクセスされる矩形領域は，左上座標(0,0)で矩形サイズ16x2であり，１０ビットデータが書き込まれる。この場合，二次元アドレス(0,0),(4,0),(8,0),(12,0),(16,0),(0,1),(4,1),(8,1),(12,1),(16,1)からそれぞれ４バイトデータを書き込むことになり，それに対応するコラムアドレスはCA0,1,2,3,4,16,17,18,19,20になる。また，バイトバウンダリ機能は必要なく，スタートバイトＳＢ０になる。【０１３０】
時間ｔ０で，メモリコントローラはバンクアドレスＢＡ０，ロウアドレスＲＡ０と共にアクティブコマンドＡＣＴを発行する。そして，時間ｔ１に，メモリコントローラは，ライトバッファ８４３内に格納されている画素(0,0)〜(3,0)の１０ビットデータをフリップフロップFF-W0に格納する。この時，アクセス制御部８３は端数データ位置選択信号PosSelect=2を出力する。また，時間ｔ２に，メモリコントローラは，ライトバッファ８４３内に格納されている画素(4,0)〜(7,0)の１０ビットデータをもう一つのフリップフロップFF-W1に格納する。この時，アクセス制御部８３は端数データ位置選択信号PosSelect=3を出力する。【０１３１】
時間ｔ２に，メモリコントローラ内のセレクタSEL-Wは，サイズ情報SIZEと端数データ選択信号PosSelect＝２とメモリマップとに基づいて，フリップフロップFF-W0,FF-W1内のデータから画素(0,0),(1,0)の８ビットデータと画素0/1/2/3の２ビットデータと画素(2,0)の８ビットデータとを，この順番にフリップフロップFF-W2に格納する。同時に，アクセス制御部８３は，コラムアドレスＣＡ０とスタートバイトＳＢ０とをライトコマンドＷＲと共にメモリに発行する。これにより，メモリ内の二次元アドレス(0,0)〜(3,0)の４バイト領域に，フリップフロップFF-W2内の３２ビットデータが書き込まれる。【０１３２】
以下同様にして，メモリコントローラは，上位のプロセッサから供給される１０ビットデータを８ビットデータと２ビットデータとに分離し，メモリマップに基づいて８ビットデータと２ビットデータとを３２ビットずつ配列し，ライトコマンドＲＤと共にメモリに出力する。【０１３３】
上記の場合，左上座標(0,0)で矩形サイズ16x2の矩形アクセスが，１０回のライトコマンドＲＤによるアクセスで行われる。【０１３４】
次に，８ビットデータのアクセス動作について説明する。図２０の右側のフローチャートで説明したとおり，８ビットデータアクセスリクエストのリクエストパラメータは，水平アクセス開始座標Ｘ＝4i-2（iは整数）＝２，６，１０〜，水平サイズは4j（jは整数）＝４，８，１２〜に制限されている。このように制限することで，図２６のメモリマップから明らかなとおり，アクセス対象の８ビットデータは必ず４バイト連続して格納された８ビットデータになる。【０１３５】
そして，座標変換部８２が，メモリマップに応じて，メモリ上の水平アドレス座標X1’を，X1’=5*((X-2)/4)+3により求める。上記の制限により，アドレスX1’は必ず連続した4画素の8ビットデータの先頭アドレスを指しており，水平4画素の８ビットデータのアクセスに対して水平アドレスは5byteずつ更新される。したがって，水平開始アドレスX1’から，1word(4Byte)のデータ読み出しごとにアドレスを5byte進めることで，8ビットデータのみアクセスすることができる。【０１３６】
図２９は，８ビットリード動作を示す図である。ここでは，矩形の左上座標(2,0)で矩形サイズ16x2の8ビットデータアクセスをする。メモリコントローラは，バンクアクティブコマンドＡＣＴを発行し，続けてリードコマンドＲＤを発行する。本メモリマップでは，メモリ上の２次元アドレス(3,0)，(8,0)，(13,0)，(18,0)，(3,1)，(8,1)，(13,1)，(18,1)から各４バイトのデータをアクセスする必要があり，これらに対するコラムアドレスＣＡは，それぞれCA0，2，3，4，16，18，19，20となる。また，バイトバウンダリ機能により８ビットデータのみをアクセスするので，スタートバイトSBは，SB=3，0，1，2，3，0，1，2となる。このリードコマンド発行に対して，メモリから８ビットデータがリードデータとして出力される。【０１３７】
たとえば，メモリコントローラは，時間ｔ０でアクティブコマンドACTを発行し，時間ｔ２でリードコマンドRDと共にコラムアドレスCA0,スタートバイトSB=3を発行する。CASレイテンシCL=2後の時間ｔ４で，メモリが画素(2,0),(3,0)(4,0)(5,0)の８ビットデータ，合計３２ビットを出力する。メモリコントローラは，時間ｔ５でこれらの８ビットデータをフリップフロップFF-R0に格納し，時間ｔ６でフリップフロップFF-R2に格納し，リードバッファ８４２を介して出力する。つまり，８ビットデータの場合は，端数の２ビットデータと再配列する必要がないので，データマッピング部８４は，単に３２ビットの８ビットデータをパイプライン的に転送するだけでよい。よって，フリップフロップFF-R1は使用されない。【０１３８】
８ビットライト動作では，上記のリード動作と同様に，メモリコントローラが，コラムアドレスCAとスタートバイトSBとがライトコマンドWRと共に発行し，３２ビットからなる４画素の８ビットデータをメモリに書き込む。【０１３９】
以上の通り，本実施の形態におけるメモリコントローラは，１０ビットデータアクセスか８ビットデータアクセスかに応じて，そして，アクセスパラメータに応じて，メモリマップに基づいてメモリにアクセスすることができる。【０１４０】
本実施の形態では，汎用メモリのデータ単位の８ビットの倍数とは異なるビット長のデータを，メモリマップに基づいて汎用メモリ内に配置することで，アクセス効率を高めている。そこで，例えば１０ビットの画素データを，１０ビットでアクセスしたり上位８ビットでアクセスしたりする例を以下に説明する。【０１４１】
図３０は，ＭＰＥＧエンコーダとデコーダの構成図である。一般的なMPEGエンコーダにおいて，フレームメモリへのアクセスは，現画像読み出しと，動きベクトル探索(Motion
Estimation)用参照画像読み出しと，Inter予測用参照画像読み出しと，ローカルデコード画像書き込みとに大別される。【０１４２】
ここで，MPEGエンコーダのInter予測のエンコード処理の流れについて説明する。エンコード処理は，マクロブロックと呼ばれる縦16画素x横16画素の単位で行われる。まず，入力画像Vinが画像入力部１００を介して原画像InPとしてメモリ８６に記憶される。そして，動きベクトル探索部１０１は，現画像InPと動きベクトル探索用参照画RefPをメモリから読み出し，動きベクトルMVを算出する。動きベクトル探索は，参照画像の探索領域内から，現画像に最も似ている画像をブロックマッチングによって探索するのが一般的である。【０１４３】
次に，求められた動きベクトルMVに応じて，Inter予測部１０２は，Inter予測画生成に必要な参照画RefPを読み出し，Inter予測画IprePを生成する。生成されたInter予測画IprePと現画像InPの差分を算出し，離散コサイン変換(DCT)，量子化(Q)，可変長符号(VLC)化処理を行って，符号化データEoutを生成する。一方で，量子化後のデータは，逆量子化(IQ)，逆離散コサイン変換(IDCT)，動き補償処理(Inter予測画IprePとの加算)によって，ローカルデコード画像LdecPが生成され，後の参照画像としてメモリ８６に格納される。符号化データEoutは動きベクトルMVと共に出力される。【０１４４】
エンコード処理において行われる上記の4種類のメモリアクセスのうち，現画像読み出しと，Inter予測用参照画像読み出しと，ローカルデコード画像書き込みについては，演算精度が規格で決められているので，画素あたり10ビットデータでアクセスする必要がある。一方，動きベクトル探索用参照画像読み出しのアクセスは，動きベクトルを算出するために使用されるものであり，その演算精度は特に規定されておらず，エンコーダ依存である。また，動きベクトル探索用の参照画アクセスは一般的にアクセス量が大きいため，MPEGエンコーダにおけるアクセス量の多くを占める。そこで，このアクセスを上位8ビットデータのアクセスとすれば，エンコーダのアクセス量を削減することができる。同時に，動きベクトル探索を画素データの上位8ビットデータで行うことにより，ブロックマッチング用演算器の回路規模も削減することができる。【０１４５】
次に，MPEGデコーダのInter予測のデコード処理の流れについて説明する。デコード処理は，マクロブロックと呼ばれる縦16画素x横16画素の単位で行われる。まず，符号化データEinを入力し，可変長復号(VLD)処理を行い，動きベクトルMVとDCT係数データを抽出する。動きベクトルMVは，Inter予測画生成部１０４に入力する。Inter予測画生成部１０４は，予測画生成に必要な参照画RefPをメモリ８６から読み出しInter予測画IprePを生成する。一方，DCT係数の方は，逆量子化(IQ)，逆離散コサイン変換(IDCT)，動き補償処理(Inter予測画との加算)が行われ，デコード画像DecPが生成される。生成されたデコード画像DecPはメモリ８６に格納され，後の参照画RefPあるいは表示画像OutVとして使用される。【０１４６】
デコード処理においては，演算精度が決められているため，画素の全bit，１０ビットが必要となる。一方，表示画像OutVに関しては，表示するディスプレイの出力レンジに制限される場合がある。出力レンジが8bit精度しか持たない場合は，下位2bitは不要になる場合がある。そこで，本実施の形態により，MPEGデコード処理に関しては10ビットデータのアクセス，表示に関しては上位8ビットデータのアクセスとすることができる。【０１４７】
また，ディスプレイの出力レンジが10bitの場合においても，上位8ビットデータの読み出しを使用してもよい。例えば，デコード画像の高画質化の目的で，前後の画像間の動き検出処理など画像の特徴量を算出する場合に，メモリアクセス量，演算器削減の目的で，上位8ビットデータのアクセスを行う方式も考えられる。このような場合に，表示用のアクセスは10bit/画素で行い，特徴量算出のための前後の画像アクセスは8bit/画素で行うことができる。
【産業上の利用可能性】
【０１４８】
本実施の形態におけるメモリマップ方式を適用することで，メモリのデータ単位のビット長（８ビット）に整合しないビット幅の画素データについて，画素データの全ビットアクセスと，画素データの部分(8bit)アクセスの両方で，アクセス効率を高め，アクセスサイクル数を最小限にすることができる。特に，MPEGデコーダやエンコーダの参照画アクセスのように，矩形アクセスが多く発生する装置に適用すると有用である。
【図３】
2009116115.tif 000003
【図４】
2009116115.tif 000004
【図５】
2009116115.tif 000005
【図６】
2009116115.tif 000006
【図７】
2009116115.tif 000007
【図８】
2009116115.tif 000008
【図９】
2009116115.tif 000009
【図１０】
2009116115.tif 000010
【図１１】
2009116115.tif 000011
【図１２】
2009116115.tif 000012
【図１４】
2009116115.tif 000013
【図１５】
2009116115.tif 000014
【図１６】
2009116115.tif 000015
【図１７】
2009116115.tif 000016
【図１８】
2009116115.tif 000017
【図１９】
2009116115.tif 000018
【図２０】
2009116115.tif 000019
【図２１】
2009116115.tif 000020
【図２２】
2009116115.tif 000021
【図２３】
2009116115.tif 000022
【図２４】
2009116115.tif 000023
【図２５】
2009116115.tif 000024
【図２６】
2009116115.tif 000025
【図２７】
2009116115.tif 000026
【図２８】
2009116115.tif 000027
【図２９】
2009116115.tif 000028
【図３０】
2009116115.tif 000029
【図１】
2009116115.tif 000030
【図２】
2009116115.tif 000031
【図１３】
2009116115.tif 000032
【手続補正書】
【提出日】平成22年5月31日(2010.5.31)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
Ｋビットをデータ単位とするメモリを制御するメモリコントローラにおいて，
前記Ｋビットの倍数でないＮビットのデータを上位システムから供給され，前記ＮビットのデータをＫビットとＮ−Ｋビットに分割し，Ｌ個のデータについて，Ｌ個のＫビットデータをＬ個のデータ単位に配置し，Ｌ個のＮ−ＫビットデータをパッキングしてＭ個（Ｍ＝Ｌ×（Ｎ−Ｋ）／Ｋ）のデータ単位に配置するデータマッピング部と，
前記Ｌ個のＫビットデータをＬ個のデータ単位として前記メモリにアクセス制御し，前記パッキングしたＬ個のＮ−ＫビットデータをＭ個のデータ単位として前記メモリにアクセス制御するアクセス制御部とを有し，
前記アクセス制御部は，前記Ｌ個のＫビットデータと前記パッキングしたＬ個のＮ−Ｋビットデータとを，前記メモリ内の連続したＬ＋Ｍ個のデータ単位の領域内に記憶するメモリコントローラ。
【請求項２】
請求項１において，
前記アクセス制御部は，前記Ｌ個のＫビットデータと前記パッキングしたＬ個のＮ−Ｋビットデータとを，前記Ｌ個のＫビットデータの中央に前記パッキングしたＬ個のＮ−Ｋビットデータを配置して，前記メモリ内の連続したＬ＋Ｍ個のデータ単位の領域内に記憶するメモリコントローラ。
【請求項３】
請求項１において，
前記アクセス制御部は，前記Ｌ個のＫビットデータと前記パッキングしたＬ個のＮ−Ｋビットデータとを，前記Ｌ個のＫビットデータの前または後に，前記パッキングしたＬ個のＮ−Ｋビットデータを配置して，前記メモリ内の連続したデータ単位の領域内に順番に記憶するメモリコントローラ。
【請求項４】
請求項１において，
前記アクセス制御部は，前記Ｌ個のＫビットデータと前記パッキングしたＬ個のＮ−Ｋビットデータとを，前記Ｌ個のＫビットデータの中に前記パッキングしたＬ個のＮ−Ｋビットデータを分散して配置して，前記メモリ内の連続したＬ＋Ｍ個のデータ単位の領域内に記憶するメモリコントローラ。
【請求項５】
請求項１〜４のいずれかにおいて，
前記メモリは，前記メモリコントローラから供給されるアドレスにより選択されるメモリ単位領域を複数有し，
前記Ｌ個のＫビットデータのビット長が前記メモリ単位領域のビット長の倍数であるメモリコントローラ。
【請求項６】
請求項１〜４のいずれかにおいて，
前記Ｌ個のＫビットデータのビット長が前記メモリ単位領域のビット長の倍数であり，かつ，
前記パッキングしたＬ個のＮ−Ｋビットデータのビット長が前記メモリ単位領域のビット長の倍数であるメモリコントローラ。
【請求項７】
請求項１において，
前記データマッピング部は，ライト動作において，前記上位システムから供給される前記Ｎビットのデータを，前記Ｌ個のＫビットデータと前記パッキングしたＬ個のＮ−Ｋビットデータとに配置し，リード動作において，前記メモリから供給される前記Ｌ個のＫビットデータと前記パッキングしたＬ個のＮ−Ｋビットデータとを，Ｌ個のＫビットデータに再配置するメモリコントローラ。
【請求項８】
請求項１において，
前記アクセス制御部は，前記上位システムからのＮビットアクセス要求に応答して，前記Ｌ個のＫビットデータと前記パッキングしたＬ個のＮ−Ｋビットデータとを前記メモリに書き込みまたは前記メモリから読み出し，前記上位システムからのＫビットアクセス要求に応答して，前記Ｌ個のＫビットデータを前記メモリに書き込みまたは前記メモリから読み出すメモリコントローラ。
【請求項９】
請求項１に記載のメモリコントローラと，
前記Ｋビットをデータ単位とするメモリとを有するメモリシステム。
【国際調査報告】
2009116115.tif 000033
2009116115.tif 000034
2009116115.tif 000035
2009116115.tif 000036