(57)【要約】本発明は、行列（マトリクス）要素にアクセスする方法に関し、行列の１個の行または１個の列において互いに隣接する２個の行列要素であって、それぞれに対応する相対アドレス（ａｒ、ａｃ）によって特定される該２個の行列要素へのアクセスを、第１ローカルアドレス（ａ’１）を用いて第１メモリブロック（Ｂp１）内における２個の行列要素のうち第１要素に対して行い、第２ローカルアドレス（ａ’２）を用いて第２メモリブロック（Ｂp２）内における前記２個の行列要素のうち第２要素に対して行うことを特徴とする。
2009517763.tif 000002
【特許請求の範囲】
【請求項１】
行列要素にアクセスする方法であって、行列の１個の行または１個の列において互いに隣接し、それぞれ相対アドレスによって特定される２個の行列要素へのアクセスを、第１ローカルアドレスを用いて第１メモリブロック内の前記要素の第１要素に対して行い、第２ローカルアドレスを用いて第２メモリブロック内の前記要素の第２要素に対して行うことを特徴とする方法。
【請求項２】
請求項１に記載の方法において、前記各行列要素用に、前記それぞれ対応するメモリブロックおよび／または前記それぞれに対応するローカルアドレスは、前記それぞれに対応する相対アドレスをインデックスとして用いてルックアップテーブルより決定することを特徴とする方法。
【請求項３】
請求項１に記載の方法において、前記各行列要素用に、前記それぞれに対応するメモリブロックは、それぞれに対応する相対アドレスのビットの第１サブグループより決定し、および／または前記それぞれに対応するローカルアドレスは、それぞれに対応する相対アドレスのビットの第２サブグループより決定することを特徴とする方法。
【請求項４】
請求項１に記載の方法において、前記各行列要素用に、前記それぞれに対応するメモリブロックおよび／または前記それぞれに対応するローカルアドレス（ａ’）を、前記それぞれに対応する相対アドレスより計算的に決定することを特徴とする方法。
【請求項５】
請求項３もしくは４に記載の方法において、それぞれに対応する相対アドレスのビットは、前記それぞれに対応するメモリブロックを取得するために、および／または前記それぞれに対応するローカルアドレスを取得するためにシフトおよび／または交換し、該ローカルアドレス（ａ’）が、相対アドレスよりも狭いアドレス空間となるようにすることを特徴とする方法。
【請求項６】
請求項５に記載の方法において、前記交換演算としてビット回転を行うことを特徴とする方法。
【請求項７】
請求項１〜６のうちいずれか一項に記載の方法において、メモリブロックの数を２の累乗とすることを特徴とする方法。
【請求項８】
請求項１〜７のうちいずれか一項に記載の方法において、メモリブロックを、互いに同時におよび独立的にアクセス可能に使用することを特徴とする方法。
【請求項９】
複数個のメモリブロックおよび前記メモリブロックに接続したメモリコントローラを備えた行列要素にアクセスするための構成であって、行列の行もしくは列が互いに隣接し、それぞれの相対アドレスにより特定される２個の行列要素の場合、前記メモリコントローラが第１ローカルアドレスを用いて第１メモリブロック内の前記要素の第１要素に対して第１サブアクセスを行い、第２ローカルアドレスを用いて第２メモリブロック内の前記要素の第２要素に対して第２サブアクセスを行うことを特徴とする構成。
【請求項１０】
請求項９に記載の構成において、各行列要素用に、前記メモリコントローラが、前記それぞれに対応するメモリブロックおよび／または前記それぞれに対応するローカルアドレスを、前記それぞれの相対アドレスを用いて決定することを特徴とする構成。
【請求項１１】
請求項９もしくは１０に記載の構成において、メモリブロックの数、行列の幅および行列の高さが２の累乗であることを特徴とするアレンジメント。
【請求項１２】
請求項９〜１１のうちいずれか一項に記載の構成において、前記第１のメモリブロックおよび前記第２のメモリブロックが互いに同時におよび独立的にアクセス可能であることを特徴とするアレンジメント。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ中の行列（マトリクス）要素、とくに汎用メモリ中の行列（マトリクス）要素へのアクセス方法および構成に関する。
【０００２】
本発明によると、アクセスとは、例えば読出しや書込みなどの記憶をも意味する。
【背景技術】
【０００３】
メモリにおける行列（マトリクス）の実装は、通常、幅Ｗを有する１個のメモリ素子を各行列要素に割り当てることによって行う。この行列は、Ｍ＊Ｎ個の要素を有する。Ｍは列数を、Ｎは行数を示す。この行列を記憶するメモリは明らかに、サイズがＭ＊Ｎ個の入力が必要であり、各入力の幅はＷである。実装のために、すべての列または行は、メモリのアドレス範囲内にマップされた一連の行列要素チェーンに連鎖させる。この行列は、例えばメモリチェーンの先頭に関連する相対アドレスによってアクセス可能である。行列（マトリクス）における列または行のどちらに連鎖されているかどうかによって、アドレスのインクリメント（増分）は、それぞれ列方向アクセスまたは行方向アクセスを提供する。連鎖された行を列方向にアクセスするために、相対アドレスの列数を各ステップにおいて増加させなくてはならない。逆もまた同様である。例えば行が連鎖されている場合、列ｍ行ｎの要素に対しては、ｍ＝０〜Ｍ−１、ｎ＝０〜Ｎ−１として、相対アドレスｎ＊Ｍ＋ｍを使用してアクセスすることができる。
【０００４】
このような行方向アクセスまたは列方向アクセスのコントロールロジックは、１度に１個の行列要素にのみアクセスする場合には、比較的単純なものである。いくつかの互いに隣接する要素に対して同時に読出しまたは書込みする場合には、少なくとも一方のアクセスタイプに関して帯域幅の損失が生じる。例えば行が連鎖されている場合を仮定すると、１個の行内において隣接する行列要素は、幅ｌ＊Ｗの単一のメモリセル内に位置することができる。この場合、行方向アクセスのために、ｌ個の要素は並列的に読出しまたは書込みすることができる。しかし、列方向アクセスのためには、要素は複数のメモリセルにまたがって分布し、そのため同時にアクセスすることができない。これは最も面積効率とコスト効率の良いシングルポートメモリを仮定している。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従って、本発明の目的は、行方向アクセスおよび列方向アクセスの双方において帯域幅を損失することなく複数の隣接する要素に同時にアクセスすることができるようにすることにより、行列要素に対してアクセスする方法および構成を得ることである。
【０００６】
問題点は、本発明の請求項１に記載の特徴を有する方法および請求項９に記載の特徴を有する構成によって解決される。
【０００７】
本発明の好適な実施形態は、それぞれの従属項において与えられる。
【０００８】
本発明によると、行列の１個の行または１個の列において互いに隣接し、それぞれがそれぞれの相対アドレスによって特定される２個の行列要素へのアクセスを、前記要素の第１メモリブロック内の第１要素に対しては、第１ローカルアドレスを用いて、前記要素の第２メモリブロック内の第２要素に対しては、第２ローカルアドレスを用いて実行する。従来技術と比較すると、本発明は行列要素の再配列をこれらが異なるメモリブロックへ書込まれる前、およびこれらメモリブロックから読出した後に効率的に行っており、これら行列要素が行または列において隣接していたとしても同じメモリブロックへ格納されている２個の隣接した行列要素がない。換言すると、行列において水平方向もしくは垂直方向に隣接する要素は異なるメモリブロックに分布している。本発明は、２個以上の所定数の隣接する行列要素にも、この所定数の隣接する行列要素が同一メモリブロックに格納されていなければ、即ちこの所定数と同数のメモリブロックが利用可能であれば、容易に拡張することができる。このようなアクセスは、行方向または列方向に行うことができる。これにより行列の複数の隣接する要素へのアクセスを、同時にかつ帯域幅を損失することなく行うことができるようになる。加えて、バス・トランザクション数は、本発明方法により最小化される。この両結果から、本発明による原則を使用してシステムの電力消費が減少する。例えば、モバイル製品のＤＶＢ規格用のシステムにおいて、バースト型無線伝送システムの電源が入っている時間および電源が入っている際の電力消費を最小化することで電力消費が抑えられる。
【０００９】
好適な実施形態において、行列の列数および行数は、それぞれ使用するメモリブロックの数の倍数である。さもなければ、行列境界へのアクセスは同時に全てのメモリの帯域幅は使用しないため平均帯域幅が減少する。例えば、サイズが１０＊１０の行列および４個のメモリにおいて、１個の行または列にアクセスする場合、１０／（４＊３）のメモリ帯域幅を使用した３つのアクセスが存在する。
【００１０】
第１の可能な実施形態においては、前記各行列要素のために、前記それぞれのメモリブロックおよび／または前記それぞれのローカルアドレスはルックアップテーブルより前記それぞれに対応する相対アドレスをインデックスとして使用して決定される。これはメモリブロックおよび／またはローカルアドレスを取得するための第１の方法であるが、ルックアップテーブル用に付加的なメモリが必要となる。
【００１１】
第２の可能な実施形態においては、前記各行列要素のために、前記それぞれに対応するメモリブロックは、それぞれに対応する相対アドレスのビットの第１サブグループより決定され、および／または前記それぞれに対応するローカルアドレスはそれぞれに対応する相対アドレスのビットの第２サブグループより決定される。これはメモリブロックおよび／またはローカルアドレスを高速に取得する方法でもある。ルックアップテーブルを必要とせず、それゆえ必要となるメモリが少なくなる。
【００１２】
第３の可能な実施形態においては、前記各行列要素のために、前記それぞれに対応するメモリブロックおよび／または前記それぞれに対応するローカルアドレスを、前記それぞれに対応するグローバル・リニア・アドレスより計算的に決定される。これはメモリブロックおよび／またはローカルアドレスを簡単に取得する方法である。ルックアップテーブル用のメモリは必要としない。
【００１３】
決定は、前記それぞれに対応するメモリブロックを取得するためおよび／または前記それぞれに対応するローカルアドレスを取得するために、前記それぞれの相対アドレスのビットを、シフトまたは交換することによって好適に実行することができ、このローカルアドレスは相対アドレスよりも狭いアドレス空間を有している。このようなビットシフトもしくは交換演算は、時間のかかる加算、減算、除算および乗算を行うことなく実施できる。
【００１４】
好適には、前記シフトもしくは交換演算としてビット回転を行う。この方法は、それぞれのメモリブロックおよび／またはそれぞれに対応するローカルアドレスを取得するのに１つの演算のみ必要となる。
【００１５】
これら３つの実施形態および上述のこれら強化策は、組み合わせることができることもちろんである。たとえば、メモリブロックを繰り返しパターンに基づいて相対アドレスに割り当てる場合、メモリブロックは、相対アドレスを計算的に繰り返しパターンのサイズまで減少させた後の繰り返しパターンと同一サイズを有する小さなルックアップテーブルを使用して決定することができる。ある可能性としては、ローカルアドレスは、ここでビットを回転させた後に相対アドレスのビットのサブグループより決定する。
【００１６】
好適には、メモリブロックの数は、２の累乗とする。ここでメモリブロックおよびローカルアドレスを決定するのに、いくつかの簡素化を使用することができる。互いに同時におよび独立的にアクセス可能なメモリブロックを使用することが必要となる。
【００１７】
本発明による構成は、複数個のメモリブロックおよび前記メモリブロックに接続したメモリコントローラを備えており、ここにおいて行列の行または列が互いに隣接しそれぞれ相対アドレスによって特定される２個の行列要素にアクセスする場合、メモリコントローラは第１のローカルアドレスを用いて第１メモリブロック内の前記要素の第１要素に対して第１サブアクセスを行い、第２ローカルアドレスを用いて異なる第２メモリブロック内の前記要素の第２要素に対して第２サブアクセスを行う。選択するパラメータに応じて、アドレス計算の結果を他のアドレスを決定するのに使用してもよい。例えば特定のアクセス用に、ローカルアドレスは各メモリにおいて同じであってもよい。
【００１８】
好適には、前記行列要素の各々用に、前記メモリコントローラは、前記それぞれに対応するメモリブロックおよび／または前記それぞれに対応するローカルアドレスを、前記それぞれに対応する相対アドレスを用いて決定する。
【００１９】
ある好適な実施形態において、メモリブロックの数、行列の幅および行列の高さは２の累乗である。ここでメモリブロックおよびローカルアドレスを決定する際にいくつかの簡素化を、高速メモリアクセスのために使用することができる。
【００２０】
必要とあれば、前記第１メモリブロックおよび第２メモリブロックは、互いに同時におよび独立的にアクセス可能とする。
【発明を実施するための最良の形態】
【００２１】
図１の構成Ａは、４個のメモリブロックＢｐ を備えており、Ｐ＝４でｐ＝０〜３であり、およびこれらメモリブロックをメモリコントローラＣに接続する。構成Ａは、８ビットサイズの（Ｍ＝１６）＊（Ｎ＝１６）＝２５６個の要素を有する行列（マトリクス）用に３２ビットの読み書き能力を提供する。構成Ａ、とくにメモリコントローラＣは、システムバスＳを経て中央処理装置Ｕに接続する。
【００２２】
行列はメモリコントローラＣによって、互いに隣接する４個の行列要素における任意のグループに対して、行ｒまたは列ｃが隣接するか否かに無関係に、各グループの各要素をそれぞれ異なる４個のメモリブロックＢｐ に記憶されるように、メモリブロックＢｐ 内に格納する。このことによりメモリコントローラＣへの単一のバス・リクエストＲによって４個の隣接する行列要素にアクセスすることができる。
【００２３】
ｍ＝０〜Ｍ−１、ｎ＝０〜Ｎ−１である行列要素（ｍ，ｎ）に中央処理装置Ｕからアクセスする場合、中央処理装置Ｕはプログラム化した命令（インストラクション）に基づいて、行方向アクセスの相対アドレスａｒ または列方向アクセスの相対アドレスａｃ を計算する。中央処理装置Ｕは、つぎに、システムバスＳを経てメモリコントローラＣにリクエストＲを送る。このリクエストＲは、例えば行方向または列方向への読出しまたは書込みモードなどのアクセスのタイプ、行方向アクセスのための相対アドレスａｒ または列方向アクセスのための相対アドレスａｃ 、および書込みリクエストの場合には書込む行列要素の値を含む。メモリコントローラＣがこのようなリクエストＲを受け取った場合、リクエストＲ内で特定したアクセスのタイプに従って、行列要素の書込みまたは読出しを行うメモリブロックＢｐ 番号を決定し、および決定したメモリブロックＢｐ 内の対応するメモリセルのローカルアドレスを決定するために、リクエストＲ内で特定した相対アドレスａｒ またはａｃ を使用する。
【００２４】
好適な実施形態において、アクセスのタイプ、すなわち行型または列型をより高次のアドレスラインによって決定する。行列は、このとき、２個の異なるベースアドレスにおいて開始する行アクセスもしくは列アクセスによって、中央処理装置のプログラマに対して可視化される。
【００２５】
一般的に、本発明は以下のステップを用いて実装することができる。すなわち、
ａ)  メモリ、とくに汎用メモリを、深さがＮ＊Ｍ／Ｐ、幅がＷであり独立的におよび同時にアクセス可能なＰ個のメモリブロックに組織化するステップ。アドレス生成ロジックを簡単にするために、パラメータＮ、ＭおよびＰは、２の累乗となるように選択する（より詳細には図３および４参照）。
ｂ）  例えば以下のように行列（マトリックス）とメモリ要素の関係を設定するステップ。すなわち、
各マトリックス要素に関連するメモリブロックＢｐ を、０からＰ−１まで、行ｒがｎ＝０、列ｃがｍ＝０であるｐ＝０から開始する、または行ｒがｎ＝１で列ｃがｍ＝１であるｐ＝１から開始するなどしてサイクルさせる。列ｍ＝０の行ｎ＝０〜Ｐ−１はメモリブロックＢｐ のｐ＝０〜Ｐ−１にそれぞれ割り当てられ、同様のことを列がすべて割り当てられるまで行ｎ＝ｉ＊Ｐ〜（ｉ＋１）＊Ｐ−１にも適用する。
列ｍ＝１の行はメモリブロックＢｐ のｐ＝１〜Ｐ−１およびｐ＝０の割り当てられるため、第２行ｎ＝１に関する関連付けは、ｐ＝０ではなくｐ＝１で開始することを除いて同じパターンで繰り返される。このサイクルは行方向および列方向の両方に適用する。もちろんメモリバッファＢｐ への割り当てには他の複数の可能性がある。例えば、単純にラウンドまたはランダムとしうる。必須条件となるのは、同じメモリブロックＢｐ にＰ個の隣接する行列要素が格納されないことである。
ｃ）  行列要素にアクセスするためにメモリコントローラＣにシャッフルロジックを実装するステップ。このことは、例えば、ルックアップテーブルによって、または行方向もしくは列方向のアクセス中に要素を回転させる、またはそれぞれに対応するメモリブロックＢｐ の番号ｐおよびさもなければそれぞれに対応するローカルアドレスａ’ を計算することにより行うことができる。
【００２６】
Ｐ個の隣接する行列要素は同一のメモリブロックＢｐ には格納されず、すべてのメモリブロックＢｐ はメモリコントローラＣから同時にアクセス可能であるため、メモリコントローラＣは帯域幅を損失することなく行列の行および列にアクセスできる。構成Ａにおけるバス・トランザクション数は最小化される。
【００２７】
図１の実施例においては、４個すべての水平方向もしくは垂直方向に隣接した行列要素は、構成Ａに対する単一の３２ビット・バス・リクエストＲによって同時にアクセスすることができる。例えば以下の相対アドレス、すなわち、
ａr1=８１, ａr2=ａr1+１=８２, ａr3=ａr1+２=８３, ａr4=ａr1+３=８４
を有する４つの水平方向に隣接した行列要素の場合、これらは中央処理装置Ｕによって行方向にリクエストされ、メモリコントローラＣが関連する第１、第２、第３および第４メモリブロックＢｐ１、Ｂｐ２、Ｂｐ３、Ｂｐ４および関連する第１、第２、第３および第４ローカルアドレスａ’１、ａ’２、ａ’３、ａ’４を関連する相対アドレスａｒ１、ａｒ２、ａｒ３、ａｒ４から決定する。結果、それぞれｐ＝２，３，０，１およびａ’＝２０，２０，２０，２１となる。
【００２８】
構成Ａがバースト型無線伝送システムにおいて使用される場合、電源が入っている時間および電源が入っている際の電力消費を最小化することで電力消費が抑えられる。
【００２９】
図２は、上述のようにＭ＝１６、Ｎ＝１６、Ｐ＝４である例の模式図である。これにはモバイル製品のＤＶＢ規格で使用されているようなＭ＝２５６、Ｎ＝１０２４といった数を適用することも容易である。行ｎ＝０，４，８，…の要素はメモリブロックＢｐ にｐ＝０，１，２，３，０，１，２，３，…によって関連付けられており、行ｎ=１，５，９，…の要素はメモリブロックＢｐ にｐ＝１，２，３，０，１，２，３，０，…によって関連付けられており、行ｎ＝２，６，１０，…の要素はメモリブロックＢｐ にｐ＝２，３，０，１，２，３，０，１，…によって関連付けられている。行および列要素の関連付けは各行および列によって、Ｐの行および列毎に周期的に変化する。
【００３０】
セクションＳ１は、行列におけるどの要素がどのメモリブロックＢｐ に格納されているかを示す。
【００３１】
セクションＳ２は、行列（マトリクス）における行方向にアクセスする処理装置によって特定される相対アドレスａｒ を示す。
【００３２】
セクションＳ３は、行列（マトリクス）における列方向にアクセスする処理装置によって特定される相対アドレスａｃ を示す。
【００３３】
セクションＳ４は、対応するメモリブロックＢｐ 内の行列要素を選択するのに使用するローカルアドレスａ’ を示す。明らかに、同じメモリブロックＢｐ および同じアドレスａ’ を同時に割り当てられた行列要素はない。行０における最初のＰ個の要素はローカルアドレスａ’ ＝０によってアクセスし、次のＰ個の要素はローカルアドレスａ’ ＝１によってアクセスする。行１における最初のＰ個の要素はローカルアドレスａ’ ＝４によってアクセスする。同様のルールが行方向および列方向へのアクセスにも適用されることもちろんである。
【００３４】
セクションＳ５はセクションＳ４と同様であるが、セクションＳ２に基づいて以下のように相対アドレスａｒをＰで割ることによって相対アドレスａｒからローカルアドレスａ’ を決定する点が異なる。
ａ’ ＝ａr DIV P
【００３５】
すなわち、この割り算は、関連するメモリバッファＢｐ 内のローカルアドレスａ’ を生成するためにメモリコントローラＣに与えた特定の相対アドレスａｒによって実行しなくてはならない。この割り算は、例えばａ’ ＝ａｒ SHR 2など、Ｐが２の累乗となる対応するビットシフトによって代替することもできる。ゆえにローカルアドレスａ’ は行方向アクセスモードにおけるａｒの上位６ビットのグループから決定される。
【００３６】
セクションＳ６はセクションＳ４およびＳ５と同様であるが、ａ’ がセクションＳ３の列方向アクセスのための相対アドレスａｃより計算される点で異なる。例えば、ｍ＝７、ｎ＝６である要素は、以下の列方向アクセスモードにおける相対アドレスで特定される。
ａc ＝７＊１６＋６＝１１８
ローカルアドレスａ’は、以下の式より決定され、
ａ’ ＝(ａc SHL 2) OR (ａc SHR 6)
当然メモリブロックＢｐ のアドレス空間、すなわち
ａ’ ＝(ａc SHL 2) OR (ａc SHR 6) AND 63
に狭める。
【００３７】
このシフト演算の組み合わせはそれぞれ、単一の回転演算
ａ’ ＝ａc ROTL 2およびａ’ ＝(ａc ROTL 2) AND 63によって表すことができる。この回転演算は相対アドレス空間のビット幅、すなわちこの実施例においては８ビットのビット幅を用いて行わなくてはならない。
【００３８】
行および列アクセスの双方を行うためのアドレス変換は高速で行うことができる。ローカルアドレスａ' を決定するのに加算や乗算を必要とせず、したがって、キャリーチェーンを回避でき、またクリティカルパスを短く保てることは注目に値する。このことは、Ｍ、ＮおよびＰが２の累乗である限り、有効である。
【００３９】
この実施例において、行ｎ＝０，４，８の第１要素はメモリブロックＢ０ に位置しており、行ｎ＝１，５，９の第１要素はメモリブロックＢ１に位置している。それゆえ、メモリブロックＢｐ のＰ個のインプットおよびアウトプットはそれぞれ、メモリコントローラＣのインプットおよびアウトプットデータを生成するために相対アドレスａｒ もしくはａｃ に基づいて回転させる必要がある。例えば、それぞれのメモリブロックＢp の番号Ｐは、ＭＯＤＰが適用可能であるならば、次式
ｐ＝((ａr/c MOD P)＋(ａr/c DIV P))
によって計算的に決定することができる。このルールは、行方向および列方向のアクセスリクエストＲに適用する。この実施例においてＰは２の累乗であるため、この計算は、高速ビット演算、すなわち、AND 3が適用可能であれば[AND 3 if applicable]、
ｐ＝((ａr/c AND 3)＋(ａr/c SHR 2))
を用いて行うことができる。このルールは、相対アドレスをセクションＳ１内におけるメモリブロックＢｐ の最小の繰り返しパターンへと減少することを意味する。当然ながら、このようなルールの代わりに、ルックアップテーブルを使用して、それぞれに対応するメモリブロックＢｐ の番号を決定することもできる。このようなルックアップテーブルは、まず相対アドレスを減少する場合に、最小の繰り返しパターンと同等に小さくすることができる。
【００４０】
図３および４はそれぞれ、図１に比べ簡素化した構成Ａ、およびそれに関連した模式図である。構成Ａは、２個のメモリブロックＢｐ を有しており、Ｐ＝２でｐ＝０〜１に番号付けし、これらメモリブロックをメモリコントローラＣに接続する。両メモリブロックＢｐ は、独立的にまた同時にアクセス可能である。構成Ａは、８ビットサイズの（Ｍ＝４）＊（Ｎ＝４）＝１６個の要素を有する行列用に３２ビットの読み書き能力を提供する。アレンジメントＡ、とくにメモリコントローラＣは、図１と同様の方法で、システムバスＳを経て中央処理装置Ｕに接続する。これは、本発明が提案するように、行方向および／または列方向のアクセスリクエストを実行する。
【００４１】
行列要素に割り当てられたメモリブロックＢｐ の番号ｐ＝０、ｐ＝１は、すべての行およびすべての列で交互に割り当てられる。それゆえ同一のメモリブロックＢｐ に、行もしくは列において隣接した２つの行列要素が格納されることはない。両メモリブロックＢＰ はメモリコントローラＣから同時にアクセスすることができる。メモリコントローラＣは帯域幅を損失することなく行列（マトリクス）の行および列へのアクセスを行う。構成Ａのバス・トランザクション数は最小化される。
【００４２】
行方向アクセスのために、ローカルアドレスａ’を、セクションＳ２に基づいたそれぞれに対応する相対アドレスａｒのビットのサブグループより決定することができる。
ａ’＝ａr SHR 1
【００４３】
列方向のアクセスモード用に、ローカルアドレスａ’を、セクションＳ３に基づいたそれぞれに対応する相対アドレスａcのビットのサブグループより決定することができる。
ａ’＝(ａc SHL 1) OR (ａc SHR 3)
【００４４】
このシフト演算の組み合わせは、４ビットアドレス空間における単一の回転演算
ａ’＝ａc ROTL 1
によって表すことができる。
【００４５】
それぞれのメモリブロックＢｐ の番号ｐは、行方向および列方向のアクセスリクエストＲ用に以下の式より決定することができる。
ｐ＝((ａr/c AND 1)＋(ａr/c SHR 1))
【００４６】
すべての計算およびビット演算は、メモリブロックＢｐ の３ビットアドレス空間に制限される。
【図面の簡単な説明】
【００４７】
【図１】本発明による構成のブロック図である。
【図２−１】行列（マトリクス）要素、関連するメモリブロックおよびローカルアドレスの対応関係を示す関係図である。
【図２−２】行列（マトリクス）要素、関連するメモリブロックおよびローカルアドレスの対応関係を示す関係図である。
【図２−３】行列（マトリクス）要素、関連するメモリブロックおよびローカルアドレスの対応関係を示す関係図である。
【図３】本発明による第２の構成のブロック図である。
【図４】図３に示す構成の行列（マトリクス）要素、関連するメモリブロックおよびローカルアドレスの対応関係を示す関係図である。
【符号の説明】
【００４８】
Ａ  構成
ａｒ    行方向アクセスのための相対アドレス
ａｃ    列方向アクセスのための相対アドレス
ａ’  ローカルアドレス
Ｂｐ    メモリブロック
Ｃ  メモリコントローラ
Ｍ  列数
ｍ  列
Ｎ  行数
ｎ  行
Ｐ  メモリブロック数
ｐ  メモリブロック番号
Ｒ  リクエスト
Ｓ  システムバス
Ｕ  中央処理装置
【図１】
2009517763.tif 000003
【図２−１】
2009517763.tif 000004
【図２−２】
2009517763.tif 000005
【図２−３】
2009517763.tif 000006
【図３】
2009517763.tif 000007
【図４】
2009517763.tif 000008
【国際調査報告】
2009517763.tif 000009
2009517763.tif 000010