(57)【特許請求の範囲】
【請求項１】
各素子あたりＭ／Ｎビット幅で入出力するＭビットの記憶領域をＮ個備えたメモリ素子を、Ｎ素子並列に備えたメモリ群と、
データの書き込み時に前記メモリ群へ送られてくる前記データの順序を変換して書き込みを行う書き込み制御部と、
前記メモリ群の各メモリ素子のそれぞれの記憶領域に書き込まれたＭビット単位の前記データを前記各記憶領域から読み出す制御を行う読み出し制御部と、を備え、
Ｍビット幅でＭビットのデータをＮ個単位で順次取り扱うメモリ方法であって、
前記書き込み制御部は、
前記メモリ群の各メモリ素子を並べる方向を第一方向、各メモリ素子内でＮ個の記憶領域の並び方向を第二方向とした場合に、第二方向に並んだ状態で読み出される際のＮ個のデータがそれぞれ別なメモリ素子に書き込まれるように、Ｍビット単位でＮ個連続して与えられるデータを、別なメモリ素子の第二方向に同じ位置の記憶領域の範囲内で並べ替えるよう制御し、
前記読み出し制御部は、
前記メモリ群の各メモリ素子のそれぞれの記憶領域に書き込まれたＭビット単位の前記データを、第一方向にＮ個単位で並んだ状態となるように前記各メモリ素子の同じ記憶領域の位置から読み出すか、あるいは、第二方向にＮ個単位で並んだ状態となるように前記各メモリ素子の異なる記憶領域の位置から読み出す、いずれかの制御を行う、
ことを特徴とするメモリ方法。
【請求項２】
Ｍビット幅でＭビットのデータをＮ個単位で順次取り扱うメモリ装置であって、
各素子あたりＭ／Ｎビット幅で入出力するＭビットの記憶領域をＮ個備えたメモリ素子を、Ｎ素子並列に備えたメモリ群と、
前記メモリ群の各メモリ素子を並べる方向を第一方向、各メモリ素子内でＮ個の記憶領域の並び方向を第二方向とした場合に、第二方向に並んだ状態で読み出される際のＮ個のデータがそれぞれ別なメモリ素子に書き込まれるように、Ｍビット単位でＮ個連続して与えられるデータを、別なメモリ素子の第二方向に同じ位置の記憶領域の範囲内で並べ替えるように、前記データの書き込み時に前記メモリ群へ送られてくる前記データの順序を変換して書き込みを行う書き込み制御部と、
前記メモリ群の各メモリ素子のそれぞれの記憶領域に書き込まれたＭビット単位の前記データを、第一方向にＮ個単位で並んだ状態となるように前記各メモリ素子の同じ記憶領域の位置から読み出すか、あるいは、第二方向にＮ個単位で並んだ状態となるように前記各メモリ素子の異なる記憶領域の位置から読み出す、いずれかの制御を行う読み出し制御部と、
を有することを特徴とするメモリ装置。
【請求項３】
前記Ｍビットのデータの前記Ｎ個毎とＮサイクル毎とについて、折り返しの判定を行う折り返し判定部を備え、
前記書き込み制御部は、前記折り返し判定部における折り返し判定結果を受けて、前記書き込みの制御を行う、
ことを特徴とする請求項２記載のメモリ装置。
【請求項４】
前記書き込み制御部は、
前記Ｍビットのデータの前記Ｎ個毎とＮサイクル毎を示す折り返しの判定信号を外部から受けて、前記書き込みの制御を行う、
ことを特徴とする請求項２記載のメモリ装置。
【請求項５】
前記読み出し制御部は、
前記データが第一方向にＮ個並んだ状態で読み出すか、前記データが第二方向にＮ個並んだ状態で読み出すかの方向信号を外部から受けて、前記読み出しの制御を行う、
ことを特徴とする請求項２乃至請求項４のいずれか一項に記載のメモリ装置。
【請求項６】
前記読み出し制御部は、
読み出した前記データを利用する外部機器に応じて、前記データが第一方向にＮ個並んだ状態で読み出すか、前記データが第二方向にＮ個並んだ状態で読み出すかの方向を判定し、前記読み出しの制御を行う、
ことを特徴とする請求項２乃至請求項４のいずれか一項に記載のメモリ装置。
【請求項７】
前記書き込み制御部は、
前記Ｎ個単位の前記データが、１〜Ｎの何番目であるか、１〜Ｎサイクルの何サイクル目であるかに応じて、前記メモリ群のいずれのメモリ素子へ書き込みを行うかの制御を行う、
ことを特徴とする請求項２乃至請求項６のいずれか一項に記載のメモリ装置。
【請求項８】
前記１サイクルあたりＮ個の前記データは、
外部のメモリにおいて連続するアドレスのデータがプリフェッチされて読み出されることで生成される、
ことを特徴とする請求項２乃至請求項７のいずれか一項に記載のメモリ装置。
【請求項９】
前記書き込み制御部は、
外部から順次与えられるＮ個の前記データを、前記メモリ群の各メモリ素子内のＮ個の記憶領域に割り振ることにより、時間情報を空間情報に変換する、
ことを特徴とする請求項２乃至請求項８のいずれか一項に記載のメモリ装置。
【請求項１０】
前記メモリはＤＤＲ ＳＤＲＡＭである、
ことを特徴とする請求項２乃至請求項９のいずれか一項に記載のメモリ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの並び方を変換可能なメモリ方法およびメモリ装置に関する。
【背景技術】
【０００２】
メモリアクセスにおいて、縦方向と横方向の読みを同様の速度で読み出したいという要求がある。たとえば、メモリに格納されている画像データについて、通常の画像形成を行う場合には横方向に読み出し、画像を９０度回転させた状態で画像形成を行う場合には縦方向に読み出す。
【０００３】
この場合、通常メモリのアクセスは横方向（アドレスの連続する方向）に読み書きする場合に最適化されているため、縦方向に読み書きする場合に効率悪化が起きる問題点がある。
【０００４】
たとえば、図７のように、画像１画素分のデータが８ビットであり、３２ビット幅でアクセスが可能である場合を考える。なお、この場合、図８のようにメモリコントローラとメモリとが３２ビットのバスで接続されている状態である。
【０００５】
この場合、メモリ上でアドレスの連続する横方向に読み書きする場合は、図９（ａ）のように、４画素同時にアクセすることが可能である。
しかし、縦方向に読み書きする場合には、図９（ｂ）のように、３２ビット（４画素）のうちの１ビット（１画素）しか有効でなく、バス幅の１／４しか有効活用出来ていないことになる。この場合、４倍の時間が掛かることになる。
【０００６】
この問題に対する改良として、以下の先行技術（特許文献１，２）を紹介する。
この場合、Ｍビット×Ｎのデータバスでデータアクセスが可能な場合、図１０のように、データバスのＭビット毎に、Ｍビット×Ｎサイクル分のメモリを接続する。ここでは、具体例として、８ビット×４のデータバスでデータアクセスが可能な場合、図１０のように、データバスの８ビット毎に、８ビット×４サイクル分のメモリを接続する。
【０００７】
ここでは、画像に対するアドレスの付け方は通常通りにしておき、実際のメモリへの割り付けで、入れ替えパターン＃0〜入れ替えパターン＃3の４通りに入れ替え（スワップ）している。
【０００８】
ここでは、図１０〜図１２の各部に付したハッチングの向きが、１５０度、１２０度、６０度、３０度の４通りになっており、同じハッチングの向きのデータが、同じハッチングの向きのメモリに割り付けられることを意味している。
【０００９】
すなわち、縦方向にアクセスする単位に分割されたメモリ素子を利用する。そしてアドレスをそれぞれのメモリ素子で割り振り、各サイクルで、それぞれのアドレスを変えることで対応する（図１１参照）。
【００１０】
この場合アドレス振り方を１〜４サイクルのそれぞれで変えることにより、縦方向と横方向と両方の方向で連続するアドレスが別の記憶領域に割り付けられるように工夫する。
このようにすることで、通常の横方向の読み出しの場合（図１２（ａ））にも、また、縦方向の読み出し場合（図１２（ｂ））にも、バス幅をフルに活用することが出来るようになる。
【特許文献１】特開平５−５４１３２号
【特許文献２】特開昭６３−９８６９４号
【発明の開示】
【発明が解決しようとする課題】
【００１１】
ここで、メモリのバス幅と同じまたはその倍数のデータを一度に読み書きする場合を考える。ここでは、メモリとしてＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）を想定して話を進める。
【００１２】
ＳＤＲＡＭのアクセスは、ロウアドレス，カラムアドレス，バンクという概念が存在する。
そしてロウアドレスとバンクが同じものをページという概念で扱う。同一ページは、アドレスを切り替えながら高速にアクセスすることが可能である。
【００１３】
このことから、縦方向のアドレスを同一ページに割り付けることで、横方向にも縦方向にも高速にアクセスすることが出来る。これはメモリの通常の利用方法である。
以上のような従来技術により、横方向にも縦方向にも同じ効率でアクセすることが出来るメモリシステムが構築出来る。
【００１４】
しかし近年メモリを高速化するために、メモリ内部でデータをプリフェッチする構成のものが普及している。
これは、ＤＤＲ ＳＤＲＡＭ(Double-Data-Rate Synchronous Dynamic Random Access Memory)と呼ばれるメモリである。
【００１５】
クロック信号の立ち上がり/立ち下がりのそれぞれでデータをやり取りし、理論上は同一クロックで動作するＳＤＲＡＭの２倍のデータ転送速度を得られる（２ワードのプリフェッチ機能）。同様に、４ワードのプリフェッチを行うＤＤＲ２ ＳＤＲＡＭと呼ばれるメモリも存在している。
【００１６】
すなわち、ＤＤＲの場合は連続する２つのデータをプリフェッチし、ＤＤＲ２では連続する４つのデータをプリフェッチしている。このような構成のため、プリフェッチしたデータはひとかたまりのデータとして扱われる。
【００１７】
このため、１画素（例えば、１画素＝８ビット）単位でアクセスしたくてもメモリは４画素をひとかたまりとするため、画素をまとめてアクセスする場合に有利だが、個別にアクセスする場合に効率が低下してしまう。
【００１８】
この場合のブロック図を図１３に示し、読み出されるデータを図１４に示す。図１４（ａ）は図７において横方向に連続するデータの順番（横方向）に読み出す場合である。一方、図１４（ｂ）は図７において縦方向に相当する順序で読み出したい場合である。この場合には、連続してプリフェッチで読み出される４つのデータのうち、１つしか有効に用いることができない。すなわち、効率が１／４に低下していることを意味する。
【００１９】
すなわち、上述した特許文献の先行技術ではアクセス単位（１画素＝８ビット）単位で素子を分割することで効率化していたが、これは空間的な分割には有効であるものの、プリフェッチにより連続して読み出されるデータについての時間方向の分割には全く有効ではない（図１４（ｂ））。
【００２０】
本出願はこの観点から、内部でデータをプリフェッチするタイプの複数のデータを連続して扱うメモリを用いた場合において、通常の横方向でも、縦方向でも、共に効率を落とすことなく、アクセスすることが可能なメモリ方法およびメモリ装置を実現することを目的とする。
【課題を解決するための手段】
【００２１】
すなわち、課題を解決する手段としての本発明は以下に説明するようなものである。
【００２３】
（１）請求項１記載の発明は、各素子あたりＭ／Ｎビット幅で入出力するＭビットの記憶領域をＮ個備えたメモリ素子を、Ｎ素子並列に備えたメモリ群と、データの書き込み時に前記メモリ群へ送られてくる前記データの順序を変換して書き込みを行う書き込み制御部と、前記メモリ群の各メモリ素子のそれぞれの記憶領域に書き込まれたＭビット単位の前記データを前記各記憶領域から読み出す制御を行う読み出し制御部と、を備え、Ｍビット幅でＭビットのデータをＮ個単位で順次取り扱うメモリ方法であって、前記書き込み制御部は、前記メモリ群の各メモリ素子を並べる方向を第一方向、各メモリ素子内でＮ個の記憶領域の並び方向を第二方向とした場合に、第二方向に並んだ状態で読み出される際のＮ個のデータがそれぞれ別なメモリ素子に書き込まれるように、Ｍビット単位でＮ個連続して与えられるデータを、別なメモリ素子の第二方向に同じ位置の記憶領域の範囲内で並べ替えるよう制御し、前記読み出し制御部は、前記メモリ群の各メモリ素子のそれぞれの記憶領域に書き込まれたＭビット単位の前記データを、第一方向にＮ個単位で並んだ状態となるように前記各メモリ素子の同じ記憶領域の位置から読み出すか、あるいは、第二方向にＮ個単位で並んだ状態となるように前記各メモリ素子の異なる記憶領域の位置から読み出す、いずれかの制御を行う、ことを特徴とするメモリ方法である。
【００２４】
（２）請求項２記載の発明は、Ｍビット幅でＭビットのデータをＮ個単位で順次取り扱うメモリ装置であって、各素子あたりＭ／Ｎビット幅で入出力するＭビットの記憶領域をＮ個備えたメモリ素子を、Ｎ素子並列に備えたメモリ群と、前記メモリ群の各メモリ素子を並べる方向を第一方向、各メモリ素子内でＮ個の記憶領域の並び方向を第二方向とした場合に、第二方向に並んだ状態で読み出される際のＮ個のデータがそれぞれ別なメモリ素子に書き込まれるように、Ｍビット単位でＮ個連続して与えられるデータを、別なメモリ素子の第二方向に同じ位置の記憶領域の範囲内で並べ替えるように、前記データの書き込み時に前記メモリ群へ送られてくる前記データの順序を変換して書き込みを行う書き込み制御部と、前記メモリ群の各メモリ素子のそれぞれの記憶領域に書き込まれたＭビット単位の前記データを、第一方向にＮ個単位で並んだ状態となるように前記各メモリ素子の同じ記憶領域の位置から読み出すか、あるいは、第二方向にＮ個単位で並んだ状態となるように前記各メモリ素子の異なる記憶領域の位置から読み出す、いずれかの制御を行う読み出し制御部と、を有することを特徴とするメモリ装置である。
【００２５】
（３）請求項３記載の発明は、前記Ｍビットのデータの前記Ｎ個毎とＮサイクル毎とについて、折り返しの判定を行う折り返し判定部を備え、前記書き込み制御部は、前記折り返し判定部における折り返し判定結果を受けて、前記書き込みの制御を行う、ことを特徴とする請求項２記載のメモリ装置である。
【００２６】
（４）請求項４記載の発明は、前記書き込み制御部は、前記Ｍビットのデータの前記Ｎ個毎とＮサイクル毎を示す折り返しの判定信号を外部から受けて、前記書き込みの制御を行う、ことを特徴とする請求項２記載のメモリ装置である。
【００２７】
（５）請求項５記載の発明は、前記読み出し制御部は、前記データが第一方向にＮ個並んだ状態で読み出すか、前記データが第二方向にＮ個並んだ状態で読み出すかの方向信号を外部から受けて、前記読み出しの制御を行う、ことを特徴とする請求項２乃至請求項４のいずれか一項に記載のメモリ装置である。
【００２８】
（６）請求項６記載の発明は、前記読み出し制御部は、読み出した前記データを利用する外部機器に応じて、前記データが第一方向にＮ個並んだ状態で読み出すか、前記データが第二方向にＮ個並んだ状態で読み出すかの方向を判定し、前記読み出しの制御を行う、ことを特徴とする請求項２乃至請求項４のいずれか一項に記載のメモリ装置である。
【００２９】
（７）請求項７記載の発明は、前記書き込み制御部は、前記Ｎ個単位の前記データが、１〜Ｎの何番目であるか、１〜Ｎサイクルの何サイクル目であるかに応じて、前記メモリ群のいずれのメモリ素子へ書き込みを行うかの制御を行う、ことを特徴とする請求項２乃至請求項６のいずれか一項に記載のメモリ装置である。
【００３０】
（８）請求項８記載の発明は、前記１サイクルあたりＮ個の前記データは、外部のメモリにおいて連続するアドレスのデータがプリフェッチされて読み出されることで生成される、ことを特徴とする請求項２乃至請求項７のいずれか一項に記載のメモリ装置である。
【００３１】
（９）請求項９記載の発明は、前記書き込み制御部は、外部から順次与えられるＮ個の前記データを、前記メモリ群の各メモリ素子内のＮ個の記憶領域に割り振ることにより、時間情報を空間情報に変換する、ことを特徴とする請求項２乃至請求項８のいずれか一項に記載のメモリ装置である。
【００３２】
（１０）請求項１０記載の発明は、前記メモリはＤＤＲ ＳＤＲＡＭである、ことを特徴とする請求項２乃至請求項９のいずれか一項に記載のメモリ装置である。
【発明の効果】
【００３３】
本発明は、連続するアドレスのデータを一つのかたまりとして扱う際に、連続するアドレスの一つのかたまりのデータの時間方向の広がりを、メモリ上の空間方向の広がりに変換して書き込み、該空間方向の広がりにおいてデータを分割する。これにより、画像データの縦方向、横の読み出しが可能になる。さらに、画像をブロック単位で分割して扱う用途で、縦方向のブロックに対しての処理も可能になる。
【００３４】
本発明では、Ｍビット幅でＭビットのデータをプリフェッチなどによりＮ個単位で順次取り扱う際に、前記メモリ群の各メモリ素子を並べる方向を第一方向、各メモリ素子内でＮ個の記憶領域の並び方向を第二方向とした場合に、第二方向に並んだ状態で読み出される際のＮ個のデータがそれぞれ別なメモリ素子に書き込まれるように、Ｍビット単位でＮ個連続して与えられるデータを、別なメモリ素子の第二方向に同じ位置の記憶領域の範囲内で並べ替えるように、書き込み制御部が制御し、メモリ群の各メモリ素子のそれぞれの記憶領域に書き込まれたＭビット単位のデータを、第一方向にＮ個単位で並んだ状態で各メモリ素子から読み出すか、あるいは、第二方向にＮ個単位で並んだ状態で各メモリ素子から読み出す、いずれかの制御を読み出し制御部が行うことで、メモリに書き込んだデータを第一方向（横方向）および第二方向（垂直方向）にも、データ幅を有効に使って並列に読み出せる。
【００３５】
すなわち、時間方向にＮ個の連続したデータをメモリ上で空間方向に展開し、該空間方向に展開されたＭビット・Ｎ個のデータを所定の順序で書き込んでおくことで、横方向でも縦方向でもＮ個並列に無駄なく読み出すことが可能になる。
【００３６】
この結果、画像回転時の処理時間は、データをＮ個プリフェッチするメモリアクセスの場合に、従来技術に較べて１／Ｎに短縮することが可能になる。すなわち、内部でデータをプリフェッチするタイプのメモリを用いて、連続するアドレスを複数をまとめて扱うメモリにおいて、横方向、縦方向共に効率を落とすことなく、アクセスすることが可能になる。
【発明を実施するための最良の形態】
【００３７】
以下、図面を参照して本発明を実施するための最良の形態（実施形態）を詳細に説明する。ここでは、本実施形態のメモリアクセス装置１００の第１の実施形態の電気的な構成を、図１に基づいて詳細に説明する。なお、この実施形態では、メモリアクセス装置１００の基本的な構成要件を中心に説明する。したがって、メモリアクセス装置として一般的であり、周知となっている構成要件については省略している。
【００３８】
なお、このメモリアクセス装置１００は、請求項におけるメモリ装置、あるいは、メモリ方法を実施する装置に該当するものである。
また、このメモリアクセス装置１００は、請求項における、メモリへの書き込みの制御を行う書き込み制御部と、読み出しの制御を行う読み出し制御部との機能を有するものである。
【００３９】
〔第一の実施形態〕
メモリシステム例として、今までの説明と同様に、画像データの１画素がＭ（＝８）ビットであり、画像の横幅が３２ビット（＝４画素）の場合を考える。
【００４０】
そして、この実施形態では、ＤＤＲ２タイプのＤＤＲ ＳＤＲＡＭを想定しており、４画素をひとかたまりとして扱うため、横幅方向は一つのメモリでアクセスを行い、４サイクルかけてアクセスする。
【００４１】
なお、従来の説明ではデータの横方向は空間的に広がっていたが、ＤＤＲ ＳＤＲＡＭ等を用いた手法では、時間方向に広がりが出来ている。
ここで、メモリ素子は、アドレスが連続した横方向のデータ（０，１，２，３，、４，５，６，７、８，９，１０，１１、１２，１３，１４，１５…）を連続して取得するため、縦方向（０，４，８，１２、１，５，８，１３、２，６，１０，１４、３，７，１１，１５…）にアクセスする場合は、１／４の時間しか有効にならず、残りの３／４の時間が無駄になるという従来と同様の問題が起きる（図１３、図１４）。
【００４２】
すなわち、縦方向のアクセスをする場合は、４つ連続してアクセスするうちの、１つのデータしか活用出来ない（図１４（ｂ））ため、１／４しか有効活用出来ない。従来手法と違うのは、従来の無駄が空間方向なのに対して、ＤＤＲ ＳＤＲＡＭ等を用いた場合の無駄が時間方向なことである。
【００４３】
このため本実施形態では、ＤＤＲ ＳＤＲＡＭ等の特性を考え、時間方向の無駄を無くす改善を提案する。すなわち、この実施形態では、時間方向の広がりを空間方向の広がりに変換し、この空間方向の広がりの上で並び替えを行って、横アクセス・縦アクセスを迅速に実行することが出来れば、従来と同様に分割することが可能になる。
【００４４】
まず、ここでは、図１、図３のように、Ｍビット幅でＭビットのデータをＮ個単位で順次取り扱うメモリアクセス装置１００を想定する。
なお、この実施形態では、従来例の説明と同様に、Ｍ＝８、Ｎ＝４を具体例とする。
【００４５】
そして、この実施形態では、図３（ａ）のような時間方向にＮ個ずつ連続したＭビットのデータに対して、各素子あたりＭ／Ｎビット（＝２ビット）幅で入出力するＭビットの記憶領域をＮ個備えたメモリ素子（２００ａ〜２００ｄ）を、Ｎ素子並列に備えたメモリ群を用いることで、一つのメモリ素子で扱うビット幅を狭くすることで、時間方向の広がりを、横（第一方向）と縦（第二方向）との空間方向の広がりに変換する（図３（ａ）、（ｂ））。
【００４６】
そして、従来のビット幅と時間方向の広がりをかけたものを、ここでは、狭くしたビット幅と空間方向の広がりに変換し、１つのメモリ素子がアクセス単位となるようにする。
このようにすることで、ＤＤＲ ＳＤＲＡＭ等のプリフェッチの特性を活用したまま、時間方向の広がりを空間方向の広がりに置き換えて、データの並べ替えが可能になる。
【００４７】
図３（ｂ）に示す具体例の場合は、２ビット幅×４ｃｙｃｌｅ＝８ビット（１画素）である。
次に、このような時間−空間変換を実現するためのメモリアクセス装置１００について、図１のブロック図と、図２のフローチャートと、図３以降の説明図を参照して説明する。
【００４８】
なお、この実施形態でも、画像に対するアドレスの付け方は、図１０と同様に通常通りにしておき、実際のメモリへの割り付けで、入れ替えパターン＃0〜入れ替えパターン＃3の４通りに入れ替え（スワップ）する。
【００４９】
本実施形態でも、図１０〜図１２の各部に付したハッチングの向きの、１５０度、１２０度、６０度、３０度の４通りと同様に、同じハッチングの向きのデータが、同じハッチングの向きのメモリに割り付けられるように制御する。
【００５０】
このメモリアクセス装置１００は、ユーザーロジック３００とメモリ２００（上述のメモリ素子２００ａ〜２００ｄからなるメモリ群）の間に配置されるものである。なお、ここで各メモリ素子２００ａ〜２００ｄは、メモリ２００の各ウェイであり、ここではway_0〜way_3である。
【００５１】
メモリアクセス装置１００は、コマンド分割部１１０，縦横判別部１２０，入れ替えパターン判別部１３０，制御信号・アドレス生成部１４０を備えて構成されている。また、このメモリアクセス装置１００は、請求項における、メモリへの書き込みの制御を行う書き込み制御部と、読み出しの制御を行う読み出し制御部との機能を有するものである。
【００５２】
また、このメモリアクセス装置１００は、連続するアドレスの一つのかたまりのデータの時間方向の広がりを、メモリ上の空間方向の広がりに変換して書き込み、該空間方向の広がりにおいてデータを分割する機能を有する。
【００５３】
ここで、縦横判別部１２０は、ユーザロジック３００からのメモリ２００内のデータへのアクセスが縦方向なのか、横方向なのかを判別する。
なお、この縦／横判別は、ユーザロジック３００から識別信号などで明示的に示されても良いし、アクセするデータのアドレス範囲などでの識別してもよい。また、ユーザロジック３００が複数存在している場合には、ユーザロジック毎で縦／横判別しても良い。
【００５４】
コマンド分割部１１０は、メモリ２００における予め定められた一回のアクセス単位に応じて、ユーザロジック３００からのアクセスを分割する。たとえば、ユーザロジック３００からは、access_bit×α倍という単位でのアクセスが発行される。ここで、メモリの横幅が８ビットの場合は、８ビット×４サイクル等と決まっているので、access_bit＝８ビットとすると、ユーザロジック３００から８ビット×１６サイクルというアクセスが来た場合には、４サイクル毎の４つのコマンドに分割する。
【００５５】
入れ替えパターン判別部１３０では、以上のようにしてコマンドが分割されたら、分割されたコマンドのアドレスと、折り返しアドレスturn_addの値から、メモリ２００の各記憶領域にデータを入れる際の入れ替えパターンを決定する。
【００５６】
なお、この入れ替えパターン判別は、ユーザロジック３００側で実行し、ユーザロジック３００側からメモリアクセス装置１００に与える方式であっても良い。
なお、この入れ替えパターンによるデータの入れ替え（順序の変更）としては、メモリ２００の各メモリ素子を並べる方向を第一方向、各メモリ素子内でＮ個の記憶領域の並び方向を第二方向とした場合に、第二方向に並んだ状態で読み出される際のＮ個のデータがそれぞれ別なメモリ素子に書き込まれるように、Ｍビット単位でＮ個連続して与えられるデータを、別なメモリ素子の第二方向に同じ位置の記憶領域の範囲内で並べ替えるように、Ｎサイクル単位で、データの書き込み時にメモリ２００へ送られてくるデータの順序を変換して書き込みを行うことである。
【００５７】
制御信号・アドレス生成部１４０では、メモリ２００の各ウェイ（way_0〜way_3）対応に制御信号を生成する。ここでは、メモリ２００のそれぞれのway のアドレスだけでなく、書き込みを制御する信号を生成する必要がある。
【００５８】
制御信号・アドレス生成部１４０は、横方向のアクセスの場合は、各way で同一のアドレスを生成し、縦方向のアクセスの場合は、それぞれの縦方向に対応するアドレスを生成する。
【００５９】
従来の空間方向の広がりだけの場合は、各メモリ素子毎に書き込むか書き込まないかを示す信号を生成するだけで良かったが本手法では、空間的な広がり方向だけではなく、時間方向にも制御する必要がある。そこで、制御信号・アドレス生成部１４０は、この時間方向に制御する信号をそれぞれのメモリ素子毎に生成する。
【００６０】
また、制御信号・アドレス生成部１４０が発生する制御信号は、完全にメモリ素子毎に別々に生成しても良いが、共通化して使用出来る部分に関しては、共通化しても良い。共通化出来る信号としては、
・リクエストの制御，
・アドレス上位，
がある。また、制御信号・アドレス生成部１４０が発生する信号で、共通化出来ないものとしては、
・書き込みの制御，
・データ，
がある。
【００６１】
以上のように構成したメモリアクセス装置１００において、図３（ａ）のような時間方向にＮ個ずつ連続したＭビットのデータに対して、各素子あたりＭ／Ｎビット（＝２ビット）幅で入出力するＭビットの記憶領域をＮ個備えたメモリ素子（２００ａ〜２００ｄ）を、Ｎ素子並列に備えたメモリ群を用いることで、一つのメモリ素子で扱うビット幅を狭くすることで、時間方向の広がりを空間方向の広がりに変換する（図２ステップＳ２０１）。
【００６２】
ここで、メモリ２００の各群（各メモリ素子）を並べる方向を第一方向（横方向）、各メモリ素子内でＮ個の記憶領域の並び方向を第二方向（縦方向）とした場合に、第二方向に並んだ状態で読み出される際のＮ個のデータ（図４の二点鎖線で囲まれたＮ個ずつのデータ、すなわち、当初の並びのデータを９０度回転させた状態のＮ個ずつのデータ）がそれぞれ別なメモリ素子に書き込まれるように、Ｍビット単位でＮ個連続して与えられるデータを、別なメモリ素子の第二方向に同じ位置の記憶領域の範囲内（図４の一点鎖線で囲まれたＮ個ずつのグループ）で並べ替えるように、Ｎサイクル単位で制御し、データの書き込み時にメモリ２００へ送られてくるデータの順序を変換して書き込みを行う（図２ステップＳ２０２、図３（ｂ））。この場合、入れ替えパターン判別部１３０が、以上のような順序変換に対応するＮ種類のパターンを決定することで、データの順序の変換がなされる。
【００６３】
すなわち、図４の二点鎖線で囲まれたＮ個ずつのデータ（縦方向の読み出しの際のデータのまとまり）がそれぞれ別なメモリ素子に書き込まれるように、Ｍビット単位でＮ個連続して与えられるデータを、図４の一点鎖線で囲まれたＮ個ずつのグループの範囲内で並べ替えた場合、図４（ｂ）の状態となる。
【００６４】
これにより、時間方向の広がりが空間方向の広がりに変換され、かつ、横（第一方向）・縦（第二方向）いずれの読み出しも、メモリのバス幅を有効に使って、並列に実行できる状態になる。
【００６５】
このようにデータの書き込みを行った後に、ユーザロジック３００から横方向の読み出しの要求があった場合、制御信号・アドレス生成部１４０は横方向読み出しに対応して、図６（ａ）のように各メモリ素子のアドレスを同じにして、各wayからの読み出しを指示する。
【００６６】
これにより、図５（ａ）のように、横方向の読み出しパターンに応じて読み出される。本実施形態でも、図１０〜図１２の各部に付したハッチングの向きの、１５０度、１２０度、６０度、３０度の４通りと同様に、同じハッチングの向きのデータが、同じハッチングの向きのメモリに割り付けられ、読み出されるように制御する。この結果、既に説明した図１２（ａ）と同様になる（図２ステップＳ２０３（第一方向）、ステップＳ２０４Ａ）。
【００６７】
一方、以上のようにデータの書き込みを行った後に、ユーザロジック３００から縦方向の読み出しの要求があった場合、制御信号・アドレス生成部１４０は縦方向読み出しに対応して、図６（ｂ）のように各メモリ素子のアドレス入れ替えパターンに応じて変更し、各wayからの読み出しを指示する（図２ステップＳ２０３（第二方向）、ステップＳ２０４Ｂ）。
【００６８】
これにより、図５（ｂ）のように、縦方向の読み出しパターンに応じて読み出される。すなわち、この実施形態でも、図１０〜図１２の各部に付したハッチングの向きの、１５０度、１２０度、６０度、３０度の４通りと同様に、同じハッチングの向きのデータが、同じハッチングの向きのメモリに割り付けられ、読み出されるように制御する。この結果、図７や図１１を縦方向に読み出した状態となり、読み出し結果は図１２（ｂ）と同様になる。
【００６９】
以上説明したように、メモリ２００に書き込んだデータを第一方向（横方向）および第二方向（垂直方向）にも、データ幅を有効に使って並列に読み出せる。
すなわち、時間方向にＮ個の連続したデータをメモリ上で空間方向に展開し、該空間方向に展開されたＭビット・Ｎ個のデータを所定の順序で書き込んでおくことで、横方向でも縦方向でもＮ個並列に無駄なく読み出すことが可能になる。
【００７０】
この結果、画像回転時の処理時間は、データをＮ個プリフェッチするメモリアクセスの場合に、従来技術に較べて１／Ｎに短縮することが可能になる。すなわち、内部でデータをプリフェッチするタイプのメモリを用いて、連続するアドレスを複数をまとめて扱うメモリにおいて、横方向、縦方向共に効率を落とすことなく、アクセスすることが可能になる。
【００７１】
以上説明したように、以上の実施形態では、連続するアドレスのデータを一つのかたまりとして扱う際に、連続するアドレスの一つのかたまりのデータの時間方向の広がりを、メモリ上の空間方向の広がりに変換して書き込み、該空間方向の広がりにおいてデータを分割することにより、画像データの縦方向、横の読み出しが可能になり、さらに、画像をブロック単位で分割して扱う用途で、縦方向のブロックに対しての処理も可能になる。
【００７２】
〔その他の実施形態（１）〕
以上の実施形態で説明したメモリアクセス以外のデータ形式、ビット幅、アクセス数など、各種の変形が可能であり、これ以外の数値であっても良好な結果を得ることが可能である。
【００７３】
〔その他の実施形態（２）〕
以上の実施形態では、書き込み制御と読み出し制御とを一連の動作として説明してきたが、書き込み制御の部分のみ、書き込み制御がなされた状態における読み出し制御の部分の一方のみを実行する方法や装置も、本発明の一実施形態である。
【００７４】
〔付記〕
以下に記載する各付記のメモリ方法とメモリ装置も、本実施形態の一態様である。
〔付記１〕
連続するアドレスのデータを一つのかたまりとして扱うメモリ方法であって、
連続するアドレスの一つのかたまりのデータの時間方向の広がりを、メモリ上の空間方向の広がりに変換して書き込む、
ことを特徴とするメモリ方法。
【００７５】
〔付記２〕
連続するアドレスのデータを一つのかたまりとして扱うメモリ装置であって、
連続するアドレスの一つのかたまりのデータの時間方向の広がりを、メモリ上の空間方向の広がりに変換して書き込む、
ことを特徴とするメモリ装置。
【００７６】
〔付記３〕
各素子あたりＭ／Ｎビット幅で入出力するＭビットの記憶領域をＮ個備えたメモリ素子を、Ｎ素子並列に備えたメモリ群と、
前記データの書き込み時に前記メモリ群へ送られてくる前記データの順序を変換して書き込みを行う書き込み制御部と、を備え、
Ｍビット幅でＭビットのデータをＮ個単位で順次取り扱うメモリ方法であって、
前記書き込み制御部は、
前記メモリ群の各メモリ素子を並べる方向を第一方向、各メモリ素子内でＮ個の記憶領域の並び方向を第二方向とした場合に、第二方向に並んだ状態で読み出される際のＮ個のデータがそれぞれ別なメモリ素子に書き込まれるように、Ｍビット単位でＮ個連続して与えられるデータを、別なメモリ素子の第二方向に同じ位置の記憶領域の範囲内で並べ替えるよう制御する、
ことを特徴とするメモリ方法。
【００７７】
〔付記４〕
Ｍビット幅でＭビットのデータをＮ個単位で順次取り扱うメモリ装置であって、
前記各素子あたりＭ／Ｎビット幅で入出力するＭビットの記憶領域をＮ個備えたメモリ素子を、Ｎ素子並列に備えたメモリ群と、
前記メモリ群の各メモリ素子を並べる方向を第一方向、各メモリ素子内でＮ個の記憶領域の並び方向を第二方向とした場合に、第二方向に並んだ状態で読み出される際のＮ個のデータがそれぞれ別なメモリ素子に書き込まれるように、Ｍビット単位でＮ個連続して与えられるデータを、別なメモリ素子の第二方向に同じ位置の記憶領域の範囲内で並べ替えるように、前記データの書き込み時に前記メモリ群へ送られてくる前記データの順序を変換して書き込みを行う書き込み制御部と、
を有することを特徴とするメモリ装置。
【００７８】
〔付記５〕
前記Ｍビットのデータの前記Ｎ個毎とＮサイクル毎とについて、折り返しの判定を行う折り返し判定部を備え、
前記書き込み制御部は、前記折り返し判定部における折り返し判定結果を受けて、前記書き込みの制御を行う、
ことを特徴とする付記４記載のメモリ装置。
【００７９】
〔付記６〕
前記書き込み制御部は、
前記Ｍビットのデータの前記Ｎ個毎とＮサイクル毎を示す折り返しの判定信号を外部から受けて、前記書き込みの制御を行う、
ことを特徴とする付記４記載のメモリ装置。
【００８０】
〔付記７〕
前記メモリ群の各メモリ素子のそれぞれの記憶領域に書き込まれたＭビット単位の前記データを、第一方向にＮ個単位で並んだ状態となるように前記各メモリ素子の同じ記憶領域の位置から読み出すか、あるいは、第二方向にＮ個単位で並んだ状態となるように前記各メモリ素子の異なる記憶領域の位置から読み出す、いずれかの制御を行う読み出し制御部を更に備え、
前記読み出し制御部は、
前記データが第一方向にＮ個並んだ状態で読み出すか、前記データが第二方向にＮ個並んだ状態で読み出すかの方向信号を外部から受けて、前記読み出しの制御を行う、
ことを特徴とする付記４乃至付記６のいずれか一項に記載のメモリ装置。
【００８１】
〔付記８〕
前記メモリ群の各メモリ素子のそれぞれの記憶領域に書き込まれたＭビット単位の前記データを、第一方向にＮ個単位で並んだ状態となるように前記各メモリ素子の同じ記憶領域の位置から読み出すか、あるいは、第二方向にＮ個単位で並んだ状態となるように前記各メモリ素子の異なる記憶領域の位置から読み出す、いずれかの制御を行う読み出し制御部を更に備え、
前記読み出し制御部は、
読み出した前記データを利用する外部機器に応じて、前記データが第一方向にＮ個並んだ状態で読み出すか、前記データが第二方向にＮ個並んだ状態で読み出すかの方向を判定し、前記読み出しの制御を行う、
ことを特徴とする付記４乃至付記６のいずれか一項に記載のメモリ装置。
【００８２】
〔付記９〕
前記書き込み制御部は、
前記Ｎ個単位の前記データが、１〜Ｎの何番目であるか、１〜Ｎサイクルの何サイクル目であるかに応じて、前記メモリ群のいずれのメモリ素子へ書き込みを行うかの制御を行う、
ことを特徴とする付記４乃至付記８のいずれか一項に記載のメモリ装置。
【００８３】
〔付記１０〕
前記１サイクルあたりＮ個の前記データは、
外部のメモリにおいて連続するアドレスのデータがプリフェッチされて読み出されることで生成される、
ことを特徴とする付記４乃至付記９のいずれか一項に記載のメモリ装置。
【００８４】
〔付記１１〕
前記書き込み制御部は、
外部から順次与えられるＮ個の前記データを、前記メモリ群の各メモリ素子内のＮ個の記憶領域に割り振ることにより、時間情報を空間情報に変換する、
ことを特徴とする付記４乃至付記１０のいずれか一項に記載のメモリ装置。
【００８５】
〔付記１２〕
前記メモリはＤＤＲ ＳＤＲＡＭである、
ことを特徴とする付記４乃至付記１１のいずれか一項に記載のメモリ装置。
【図面の簡単な説明】
【００８６】
【図１】本発明の実施形態のメモリアクセス装置の構成を示す説明図である。
【図２】本発明の実施形態のメモリアクセス装置の動作を示すフローチャートである。
【図３】本発明の実施形態のメモリアクセス装置の動作を示す説明図である。
【図４】本発明の実施形態のメモリアクセス装置の動作を示す説明図である。
【図５】本発明の実施形態のメモリアクセス装置の動作を示す説明図である。
【図６】本発明の実施形態のメモリアクセス装置の動作状態を説明する説明図である。
【図７】メモリアクセスの様子を説明する説明図である。
【図８】メモリアクセス装置の構成を説明する説明図である。
【図９】メモリアクセスの様子を説明する説明図である。
【図１０】メモリアクセス装置の構成を説明する説明図である。
【図１１】メモリアクセスの様子を説明する説明図である。
【図１２】メモリアクセスの様子を説明する説明図である。
【図１３】メモリアクセス装置の構成を説明する説明図である。
【図１４】メモリアクセスの様子を説明する説明図である。
【符号の説明】
【００８７】
１００  メモリアクセス装置
１１０  コマンド分割部
１２０  縦横判定部
１３０  入れ替えパターン判別部
１４０  制御信号・アドレス生成部
２００  メモリ
３００  ユーザロジック
【図１】
0005298625.tif 000002
【図２】
0005298625.tif 000003
【図３】
0005298625.tif 000004
【図４】
0005298625.tif 000005
【図５】
0005298625.tif 000006
【図６】
0005298625.tif 000007
【図７】
0005298625.tif 000008
【図８】
0005298625.tif 000009
【図９】
0005298625.tif 000010
【図１０】
0005298625.tif 000011
【図１１】
0005298625.tif 000012
【図１２】
0005298625.tif 000013
【図１３】
0005298625.tif 000014
【図１４】
0005298625.tif 000015