JP2005189970A - 多次元配列アクセス方法、多次元配列アクセス装置、メモリ制御装置、およびフーリエ変換装置 - Google Patents
多次元配列アクセス方法、多次元配列アクセス装置、メモリ制御装置、およびフーリエ変換装置 Download PDFInfo
- Publication number
- JP2005189970A JP2005189970A JP2003427649A JP2003427649A JP2005189970A JP 2005189970 A JP2005189970 A JP 2005189970A JP 2003427649 A JP2003427649 A JP 2003427649A JP 2003427649 A JP2003427649 A JP 2003427649A JP 2005189970 A JP2005189970 A JP 2005189970A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- fourier transform
- address
- scan line
- data
- 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.)
- Pending
Links
Images
Landscapes
- Complex Calculations (AREA)
Abstract
【課題】大規模な多次元配列データに対しても高速にフーリエ変換を実行すること。
【解決手段】本発明は、ダイナミック型のメモリデバイスを使用したメモリシステム上に格納された多次元配列データにアクセスする方法であって、多次元配列データのうち少なくとも二次元以上のインデクスの下位ビットを、メモリデバイスのページ内アドレスを表すカラムアドレスに均等に割り振ってメモリアドレスを生成する。
【選択図】 図2
【解決手段】本発明は、ダイナミック型のメモリデバイスを使用したメモリシステム上に格納された多次元配列データにアクセスする方法であって、多次元配列データのうち少なくとも二次元以上のインデクスの下位ビットを、メモリデバイスのページ内アドレスを表すカラムアドレスに均等に割り振ってメモリアドレスを生成する。
【選択図】 図2
Description
本発明は、多次元配列アクセス方法、多次元配列アクセス装置、メモリ制御装置、およびフーリエ変換装置に係り、更に詳しくは、コンピュータによって実行される科学技術計算等で用いられる大規模な多次元配列データに対してアクセスする方法と装置、該アクセス時においてメモリを制御する装置、および該アクセスする方法を適用してフーリエ変換を施す装置に関する。
科学技術計算は自然界の三次元空間を解析空間とし、空間周波数によって解析することによって一般的に行われている。
特に量子力学では、電子の波動関数を三次元空間上の平面波を基底関数として記述する解法が良く用いられる。この場合、1000原子程度の系の電子状態を解析するのに2563個のデータを必要とする。これは1データを複素数の倍精度浮動小数点数を用いて表す256Mバイトのメモリサイズとなる。高速フーリエ変換(以下、「FFT」と称する。)は定義通りに計算する離散フーリエ変換の手法と比較して、演算回数がN2からNlog2Nへと激減するため、非常に広く採用されている手法である。このような高速フーリエ変換に関する公知資料としては、下記非特許文献1が詳しい。
しかし、多次元配列データの場合には、各スキャン方向に対して、最低一度ずつフーリエ変換する必要があり、多次元配列データに対するメモリアクセスが処理時間を律速してしまい、演算回数を減少した効果が充分に発揮されないことが多い。
一般的にPCなどの汎用コンピュータなどの主記憶をはじめとして、ある程度大容量のメモリシステムは、SDRAM(シンクロナスDRAM)のようなビット単価の安く、実装効率の優れたダイナミック型RAM(DRAM)が使用されている。
DRAM型メモリの特徴は、デバイス全体が二次元構造を採っていて、アドレスの上位をロウ(Row)アドレスとして与え、同一のロウアドレスのデータを全て読み出してメモリデバイス内部のバッファに格納し、次に下位アドレスをカラム(Column)アドレスとして与えるとバッファ上の所望のアドレスにアクセスできる。従って、上位アドレスが変化せず下位アドレスのみが変化するような場合には、新たにロウアドレスを与える必要がなく、カラムアドレスのみ与えればよいので高速にアクセスできる。
しかしながら、前回のアクセスと上位アドレスが異なる場合には、新たにロウアドレスを与えてロウデータを読み出す必要が生ずるため、アクセス時間が極端に増大してしまう。
一般的に、PCのような汎用コンピュータのメモリシステム等は、このようなDRAM型デバイスの特徴を充分考慮し、例えばメモリシステムとキャッシュメモリ間のデータ転送などメモリデバイスに対して連続アドレスにアクセスされるように設計されている。
ところが、多次元配列として定義されたデータは各次元のインデクスを用い、例えば三次元配列インデックス(Iz、Iy、Ix)は、下記のような一次元配列のインデクス
一次元インデックス=Nx*Ny*Iz+Nz*Iy+Ix
ここで、Nx、Ny、Nz:X軸、Y軸、Z軸方向に関する配列サイズ
Ix、Iy、Iz:X軸、Y軸、Z軸方向に関する配列インデックス
に一旦展開され、生成した一次元インデックスを用いてメモリアドレスが生成される。
一次元インデックス=Nx*Ny*Iz+Nz*Iy+Ix
ここで、Nx、Ny、Nz:X軸、Y軸、Z軸方向に関する配列サイズ
Ix、Iy、Iz:X軸、Y軸、Z軸方向に関する配列インデックス
に一旦展開され、生成した一次元インデックスを用いてメモリアドレスが生成される。
従って、メモリ上の配置が一次元インデックスと一致するため、X軸に沿ってスキャンする、すなわち、IzやIyを固定してIxをインクリメントないしはデクリメントして連続アクセスする場合には高速にアクセスできる。
ところが、Y軸やZ軸に沿ってスキャンする場合には、例えばY軸に関してスキャンする場合、Y軸に沿って隣に位置するデータがIyが1つ異なるだけでNx離れた場所に配置されている。そのため、ストライドNxが大きいとメモリの同一ロウアドレスに存在しないので、メモリアクセスの効率が著しく低下し、しいては本来システムが備えている能力が充分に発揮されないという非常に好ましくない結果をもたらしてしまう。
さらにZ軸の場合にはストライドがNx*Nyとなり、さらにこの傾向は顕著である。実際、科学技術計算における配列データのサイズNi(i=x、y、z、・・・)は多くの場合、メモリのページサイズを遙かに超えるために高速処理の大きな障壁となっている。実際、メモリのページサイズは高々数100Kバイト程度である一方、配列データ全体のサイズが数100Mバイトを超えるような場合も珍しくないため、このような負の効果の影響は非常に大きいものとなっている。
PCのような汎用コンピュータの場合にはキャッシュメモリを具備している。これにより、キャッシュメモリに取り込まれたデータに対してフーリエ変換を施すことが可能となるため、キャッシュメモリのヒット率を改善するために様々な手段を講じることも可能である。しかしながら、キャッシュメモリのラインサイズやウェイ数などの構成に大きく依存してしまうため、一般的な解決策とはなり難い。
また、キャッシュメモリのサイズは高々数Mバイトであり、キャッシュメモリのサイズを遥かに超えるようなサイズの多次元配列データに対してフーリエ変換を施す場合には、結局のところ何度かキャッシュメモリと主記憶との間でストライドの大きな連続データの転送が引き起こされるため、多次元配列データを処理する際の根本的な解決策にはなりえない。
また、ベクトル型スーパーコンピュータでは、フーリエ変換を施すスキャン方向がメモリに対して連続並びになるように、データを並び替えてスキャン軸の置換を施してからフーリエ変換を行い、演算修了後に再度逆置換を施し、データ並びを元に戻すという手法が採られることもある。しかしながら、このようにデータ置換を行うことは本来必要な演算ではなく、あくまで前処理・後処理であって、本来余分な処理である。このようなデータ置換によるオーバーヘッドはデータサイズの増大と供に著しく増大する。
なお、ソフトウェアによる多次元配列データに対するアクセスへの対処としては、PCなどの比較的小規模のコンピュータでは、キャッシュメモリのヒット率を上げるように、データアクセス順などが工夫されている。また、スーパーコンピュータのような大型計算機では、スキャン軸のトランスフォーム(転置)を適時実施してアクセスしやすい方向にデータ並びを揃えて行われている。
http://momonga.t.u-tokyo.ac.jp/~ooura/fftman/index.html(特に「1.2 Cooley-Tukey 型 FFT」)
http://momonga.t.u-tokyo.ac.jp/~ooura/fftman/index.html(特に「1.2 Cooley-Tukey 型 FFT」)
上述したように、多次元配列データはメモリ上では一次元配列として配置されるため、多次元配列では1つの次元以外は概念上隣に位置するデータがメモリ上に連続的に配置することができない。
従って、多次元配列データにアクセスする場合、隣のデータに対して連続アクセスしても、必ずしもメモリに対する連続アクセスにならず、メモリアクセスの効率が著しく下がってしまい、演算回路が高速になっても、その性能が充分に発揮できず、処理速度向上の妨げになっている。特に大規模な多次元フーリエ変換は各方向に対して一回ずつデータをスキャンする必要があるので、個々のスキャン方向に対するメモリアクセス速度が大きく異なってしまい、その傾向が顕著となる。
本発明はこのような事情に鑑みてなされたものであり、その第1の目的は、多次元配列データに対してフーリエ変換を行う場合、スキャンする方向に依存することなく、一定速度でメモリにアクセスできるようにし、もって、大規模な多次元配列データに対しても高速なフーリエ変換を可能とする多次元配列アクセス方法および装置を提供することにある。
また、その第2の目的は、上記多次元配列アクセス方法を適用してメモリにアクセスする場合に、メモリに連続的にアドレスを与えるようにすることによって、データアクセスに切れ目がないようにするメモリ制御装置を提供することにある。
更に、その第3の目的は、上記多次元配列アクセス方法を適用することによって、大規模な多次元配列データに対しても高速にフーリエ変換を行うことが可能なフーリエ変換装置を提供することにある。
上記の目的を達成するために、本発明では、以下のような手段を講じる。
すなわち、請求項1の発明の多次元配列アクセス方法は、ダイナミック型のメモリデバイスを使用したメモリシステム上に格納された多次元配列データにアクセスする方法であって、多次元配列データのうち少なくとも二次元以上のインデクスの下位ビットを、メモリデバイスのページ内アドレスを表すカラムアドレスに均等に割り振ってメモリアドレスを生成する。
請求項2の発明は、請求項1の発明の多次元配列アクセス方法において、カラムアドレスに割り振り可能なように下位ビットを決定し、インデクスにおけるこの下位ビット以外のビットである上位ビットを、ロウアドレスに割り振ってメモリアドレスを生成する。
請求項3の発明の多次元配列アクセス装置は、ダイナミック型のメモリデバイスを使用したメモリシステム上に格納された多次元配列データにアクセスする装置であって、多次元配列データのうち少なくとも二次元以上のインデクスの下位ビットを、メモリデバイスのページ内アドレスを表すカラムアドレスに均等に割り振ってメモリアドレスを生成する。
請求項4の発明は、請求項3の発明の多次元配列アクセス装置において、カラムアドレスに割り振り可能なように下位ビットを決定し、インデクスにおけるこの下位ビット以外のビットである上位ビットを、ロウアドレスに割り振ってメモリアドレスを生成する。
請求項5の発明のメモリ制御装置は、請求項3または請求項4の発明の多次元配列アクセス装置によって生成されたメモリアドレスを用いて、着目している次元以外のインデクスを固定し、着目している次元の配列のインデクスのみを変化させて多次元配列データからなる一次元スキャンラインを取り出し、同一ページにアクセスする場合、多次元配列データへのアクセスが連続的になるように、カラムアドレスを連続的に与える。
請求項6の発明のフーリエ変換装置は、請求項3または請求項4に記載の多次元配列アクセス装置と、請求項5に記載のメモリ制御装置と、請求項5の発明のメモリ制御装置によって取り出された一次元スキャンラインを、フーリエ変換に必要なスキャンラインとして格納する格納手段と、格納手段に格納されたスキャンラインに基づいてフーリエ変換演算を行う演算手段とを備えている。
請求項7の発明は、請求項6の発明のフーリエ変換装置において、格納手段に格納されたスキャンラインを読み出し、この読み出したスキャンラインを演算手段に出力するとともに、演算手段から演算結果を取り込み、この取り込んだ演算結果を格納手段に書き込む2つのバッファメモリを更に備えている。そして、一方のバッファメモリが、演算装置へのスキャンラインの出力、または演算装置からの演算結果の取り込みを行っている間に、他方のバッファメモリが、格納手段からのスキャンラインの読み出し、または格納手段への演算結果の書き込みを行う。
請求項8の発明は、請求項7の発明のフーリエ変換装置において、スキャンラインを読み出したバッファメモリのアドレスのビット順を上下反転させるプリビット反転手段と、演算装置から演算結果を取り込んだバッファメモリのアドレスのビット順を上下反転させるポストビット反転手段とのうちの何れか1つを更に備えている。
請求項9の発明は、請求項6乃至8のうち何れか1項の発明のフーリエ変換装置において、フーリエ変換演算に必要な回転因子を記憶したデータテーブルを更に備えている。そして、演算手段は、データテーブルに記憶された回転因子を用いてフーリエ変換演算を行う。
請求項10の発明は、請求項6乃至9のうち何れか1項の発明のフーリエ変換装置において、スキャン方向に対応したカウントアップの順番を定義し、定義結果に基づいてメモリアドレス生成装置が下位ビットをカラムアドレスに均等に割り振ってメモリアドレスを生成するように多次元配列アクセス装置を制御するコントローラを更に備えている。
本発明は、上述したような手段によって、同一のロウアドレスのデータに最も高速にアクセスできるというダイナミック型のメモリデバイスの特性を最大限に活用し、多次元配列データに対してフーリエ変換を施すデータをメモリから取り出す場合、各次元の配列インデクスに対して適切なスクランブルを施してメモリアドレスを生成することができる。
更には、格納手段と演算手段との間に2つのバッファメモリを備え、演算手段の稼働率を高めたり、ビット反転手段を備えることによって、FFTアルゴリズムに伴うアドレスビット順の反転などを行っている。
これによって、スキャン方向に依らず一定のアクセス速度でメモリにアクセスすることが可能となる。
本発明の多次元配列アクセス方法および装置によれば、多次元配列データに対してフーリエ変換を行う場合、スキャンする方向に依存することなく、一定速度でメモリにアクセスすることが可能となる。
また、本発明のメモリ制御装置によれば、上記多次元配列アクセス方法を適用してメモリにアクセスする場合に、メモリに連続的にアドレスを与えることができ、データアクセスに切れ目がないようにすることが可能となる。
更に、本発明のフーリエ変換装置は、このような多次元アクセス方法を適用しているので、大規模な多次元配列データに対しても高速にフーリエ変換を行うことが可能となる。
以下に、本発明を実施するための最良の形態について図面を参照しながら説明する。
本発明の実施例を図1から図6を用いて説明する。
図1は、本実施例に係るフーリエ変換装置の構成例を示す機能ブロック図である。
すなわち、本実施例に係るフーリエ変換装置10は、マクロシーケンスコントローラ12と、インデクスレジスタ14と、アドレススクランブラ16と、メモリ制御装置18と、メモリモジュール20と、フーリエ変換演算器22と、ビットリバーサルアドレスジェネレータ24とを備えている。ここで、アドレススクランブラ16は、本発明における多次元アクセス方法を適用した多次元配列アクセス装置に該当する。また、メモリ制御装置18は、本発明におけるメモリ制御装置に該当する。
このような構成をなすフーリエ変換装置10において、データサイズは三次元、すなわちX軸,Y軸,Z軸のそれぞれに対して256個(8ビット)、すなわち合計2563個の複素数からなる三次元データに対する三次元FFTを行う場合を例に説明する。なお、図中に示す「/n」(nは整数)は、転送されるデータのビット数を示す。たとえば、「/8」は、8ビットのデータが転送されることを示している。
マクロシーケンスコントローラ12は、三次元データのスキャン方向を決定し、このスキャン方向に対応したカウントアップの順番を定義する。例えば、スキャン方向をX軸→Y軸→Z軸の順とする。なお、この順番は任意に定義でき、Y軸→Z軸→X軸の順としたり、Z軸→X軸→Y軸の順とすることも可能である。さて、スキャン方向をX軸→Y軸→Z軸とした場合、一次元FFTを行うために、X軸、Y軸、およびZ軸に沿ってスキャンラインを取り出す。そして、このように定義した定義結果を、インデクスレジスタ14に出力する。
インデクスレジスタ14は、マクロシーケンスコントローラ12から出力された定義結果に基づいてスキャンラインを決定する。定義結果が、X軸→Y軸→Z軸の順とされている場合には、まず、Y軸とZ軸とを固定し、X軸のデータのみをスキャンする。そして、Y軸とZ軸とを固定した状態でX軸の全てのインデクス(0〜255まで)のデータスキャンを終えると、Y軸のインデクスをインクリメントし、また同様にY軸とZ軸とを固定した状態でX軸のデータのみをスキャンする。このようにしてZ軸を固定した状態におけるY軸の全てのインデクスについてもデータスキャンを終えると、Z軸のインデクスをインクリメントし、同様にしてデータをスキャンして行く。これによってスキャンラインを決定する。図2(a)は、定義結果が、X軸→Y軸→Z軸の順とされた場合におけるインデクスレジスタ14の構成例を示す概念図である。図中に示すR/Iは、実数Rか虚数Iかを示す識別子である。図2(a)に示すように、インデクスレジスタ14はそれぞれ8ビットからなるX軸インデクス、Y軸インデクス、およびZ軸インデクスと、1ビットの前記識別子との合計25ビットからなる。
アドレススクランブラ16は、図2(a)に示すような各次元軸のインデクスをもとにスクランブルを施し、一次元インデクスを生成する。スクランブルの方法は、図2に示すように、X、Y、Z各軸のインデクスの下位ビットを均等にカラムアドレスに割り振り、余った上位ビットをロウアドレスに割り振って、図2(b)に示すようなメモリアドレスを生成する。
図2に示す例は、カラムアドレスとして10ビットを備えている例である。10ビットのカラムアドレスにX,Y,Z各軸のインデクスを割り振ることが可能なビット数は3であるので、この場合下位ビット(0,1,2)は3となり、残りの5ビット(3,4,5,6,7)が上位ビットとなる。
メモリ制御装置18は、アドレススクランブラ16によって生成されたメモリアドレスを用いて、着目している次元以外のインデクスを固定し、着目している次元の配列のインデクスのみを変化させて一次元スキャンラインを取り出し、同一ページにアクセスする場合、多次元配列データへのアクセスが連続的になるように、カラムアドレスを連続的に与える。
メモリモジュール20は、メモリ制御装置18によって取り出された一次元スキャンラインを、フーリエ変換に必要なスキャンラインとして格納する。本実施例の場合、データ1個につき実数部と虚数部それぞれ8バイトであるので、計16バイトのサイズとなる。したがって、2563個の複素数データを格納するには、全体では256Mバイトのメモリ容量となる。従って、16バイトのサイズメモリデバイスとしてSDRMを用いた256Mバイトのメモリモジュールを使用する。
フーリエ変換演算器22は、FFT演算部25と、フーリエ変換回転因子テーブル格納部26と、バッファメモリ部28とを備えている。
更にバッファメモリ部28は、バッファメモリUとバッファメモリVとからなる2つのバッファメモリを備えており、メモリモジュール20に格納されたスキャンラインを読み出し、この読み出したスキャンラインをライトポート29を介してFFT演算部25に出力する。また、FFT演算部25によってなされたフーリエ変換演算の演算結果をリードポート30を介して取り込み、この取り込んだ演算結果をメモリモジュール20に書き込む。
そして、図3に示すように、フェーズUでは、バッファメモリUが、FFT演算部25へのスキャンラインの出力a、およびFFT演算部25からの演算結果の取り込みbを行っている間に、バッファメモリVが、メモリモジュール20からのスキャンラインの読み出しc、およびメモリモジュール20への演算結果の書き込みdを行う。一方、フェーズVでは、その逆に、バッファメモリVが、FFT演算部25へのスキャンラインの出力e、およびFFT演算部25からの演算結果の取り込みfを行っている間に、バッファメモリUが、メモリモジュール20からのスキャンラインの読み出しg、およびメモリモジュール20への演算結果の書き込みhを行う。
このように、一方のバッファメモリがFFT演算部25とのデータ授受を行っている場合には、他方のバッファメモリはメモリモジュール20とのデータ授受を行うようにすることによって、図4のタイミングチャートに示すように、メモリモジュール20とバッファメモリ部28間のデータ転送と、FFT演算部25によるフーリエ変換演算とを並行して実行できるようにしている。
図4においてRはバッファメモリによるメモリモジュール20からのスキャンラインの読み出し、Wはバッファメモリからメモリモジュール20への演算結果の書き込みを示す。また、UおよびVはバッファメモリUおよびバッファメモリVを示す。更に、EはFFT演算部25によるフーリエ変換演算を示す。したがって、RUは、バッファメモリUによるスキャンラインの読み出しを示し、EUは、バッファメモリUからのスキャンラインに基づくフーリエ変換演算を示している。
バッファメモリ部28は、メモリモジュール20との間では64ビットのデータ転送を行う。また、FFT演算部25は一回のフーリエ変換演算においてデータを2個必要とし、データを2個生成する。従って、FFT演算部25に見合う速度でデータを供給するため、2つのライトポート29と、2つのリードポート30と、それらおのおのに対応した4つの図示しないポートメモリを備えている。
FFT演算部25は、図4のタイミングチャートのiに示すように、バッファメモリUおよびバッファメモリVから出力されたおのおののスキャンラインに基づくフーリエ変換演算EUおよびEVと、図中jに示すような演算結果のバッファメモリ28への返信とを行う。なお、フーリエ変換演算を行う場合には、フーリエ変換回転因子が必要となる。フーリエ変換回転因子は、テーブルデータとしてフーリエ変換回転因子テーブル格納部26に格納されており、FFT演算部25は、フーリエ変換演算を行う場合には、フーリエ変換回転因子テーブル格納部26に格納されたテーブルデータの値を読み出して行う。
フーリエ変換演算のアルゴリズムとしては、例えばCooley-Tukeyのような公知のアルゴリズムを使用する。もちろん、これに限定されることはなく、他のアルゴリズムに基づくものであっても適用可能である。
ところで、例えば、非特許文献1に記載されているように、フーリエ変換演算がなされた演算結果は、データの反転処理が必要なことが知られている。そこで、本実施例に係るフーリエ変換演算10では、ビットリバーサルアドレスジェネレータ24を備えている。
ビットリバーサルアドレスジェネレータ24は、スキャンラインを読み出したバッファメモリ部28のアドレスのビット順を上下反転させるか、またはFFT演算部25からの演算結果を取り込んだバッファメモリ部28のアドレスのビット順を上下反転させる。すなわち、前者は、フーリエ変換演算前に反転処理を行う場合であり、後者は、フーリエ変換演算後に反転処理を行う場合である。フーリエ変換の演算前あるいは演算後の何れのタイミングで反転処理を行っても良い。
次に、以上のように構成した本実施例に係るフーリエ変換装置の動作について、図5および図6に示すフローチャートを用いて説明する。
本実施例に係るフーリエ変換装置10によって三次元配列データのフーリエ変換を行う場合には、マクロシーケンスコントローラ12によって、三次元データのスキャン方向が決定される(S1)。そして、このスキャン方向に対応したカウントアップの順番が定義される(S2)。定義された定義結果は、マクロシーケンスコントローラ12からインデクスレジスタ14へと出力される。ここでは、X軸、Y軸、Z軸の順にスキャンするものとする。
次に、インデクスレジスタ14では、マクロシーケンスコントローラ12から出力された定義結果に基づいてスキャンラインが決定され、データスキャンが行われる(S3)。
ステップS3でなされたデータスキャンに基づいて、アドレススクランブラ16によって、図2(a)に示すような各次元軸のインデクスをもとにスクランブルが施され、図2(b)に示すようなメモリアドレスが生成される(S4)。具体的なスクランブルの方法としては、図2に示すように、X、Y、Z各軸のインデクスの下位ビットが均等にカラムアドレスに割り振られ、更に余った上位ビットがロウアドレスに割り振られることによってなされる。
メモリ制御装置18では、ステップS4で生成されたメモリアドレスを用いて、着目している次元以外のインデクスが固定される一方、着目している次元の配列のインデクスのみが変化されることによって一次元スキャンラインが取り出される。更に、同一ページにアクセスする場合には、多次元配列データへのアクセスが連続的になるように、カラムアドレスが連続的に与えられる(S5)。
ステップS5においてメモリ制御装置18によって取り出された一次元スキャンラインは、メモリモジュール20に格納される(S6)。
ステップS6においてメモリモジュール20に格納されたスキャンラインは、バッファメモリ部28によって読み出され、更にライトポート29を介してバッファメモリ部28からFFT演算部25に出力される(S7)。
するとFFT演算部25では、ステップS7で出力されたスキャンラインと、フーリエ変換回転因子テーブル格納部26に格納されたテーブルデータとを用いて、フーリエ変換演算が行われ(S8)、この演算結果がリードポート30を介してバッファメモリ部28へと戻される(S9)。このようにしてバッファメモリ部28に戻された演算結果は、メモリモジュール20に書き込まれる(S10)。
なお、本実施例に係るフーリエ変換装置10では、バッファメモリ部28は、2つのバッファメモリ、すなわちバッファメモリUとバッファメモリVとが備えられており、図3に示すように、フェーズUでは、バッファメモリUからFFT演算部25へのスキャンラインの出力a、およびFFT演算部25からの演算結果の取り込みbが行われる間に、バッファメモリVではメモリモジュール20からのスキャンラインの読み出しc、およびメモリモジュール20への演算結果の書き込みdが行われる。また、フェーズVでは、その逆に、バッファメモリVではFFT演算部25へのスキャンラインの出力e、およびFFT演算部25からの演算結果の取り込みfが行われる間に、バッファメモリUではメモリモジュール20からのスキャンラインの読み出しg、およびメモリモジュール20への演算結果の書き込みhが行われる。
このように、一方のバッファメモリがFFT演算部25とのデータ授受を行っている場合には、他方のバッファメモリはメモリモジュール20とのデータ授受が行われる。すなわち図4のタイミングチャートに示すように、メモリモジュール20とバッファメモリ部28間のデータ転送と、FFT演算部25によるフーリエ変換演算とが並行して実行されるので、FFT演算部25が効果的に利用され、処理の高速化が図られる。
なお、フーリエ変換演算がなされた演算結果は、データの反転処理が必要となる。そこで本実施例では、ビットリバーサルアドレスジェネレータ24によって、バッファメモリ部28のアドレスのビット順がフーリエ変換演算前か、あるいはフーリエ変換演算後のタイミングにおいて上下反転されることによってなされている。
次に、Y軸のインデクスがインクリメントされ(S11)、ステップS5からステップS10までの処理が行われる。そして、Y軸の全てのインデクスに対してステップS5からステップS10までの処理が行われた場合(S12:Yes)には、更にZ軸のインデクスがインクリメントされ(S13)、ステップS5からステップS12までの処理が行われる。そして、Z軸のインデクスに対してステップS5からステップS12までの処理が行われた場合(S14:Yes)には処理を完了する。
上述したような処理を、スキャン軸を変えてY軸とZ軸についても行えば、三次元フーリエ変換演算が完了する。
上述したように、本実施例に係るフーリエ変換装置においては、上記のような作用により、同一のロウアドレスのデータに最も高速にアクセスできるというダイナミック型のメモリデバイスの特性を最大限に活用して、多次元配列データに対してフーリエ変換を行う場合、フーリエ変換を施すデータをメモリから取り出す際に、各次元の配列インデクスに対して適切なスクランブルを施してメモリアドレスを生成することができる。これによって、スキャン方向に依存することなく一定のアクセス速度でメモリにアクセスすることが可能となる。
メモリアクセス速度が全体処理を律速する場合には、本実施例に係るフーリエ変換装置は、上述したようなスクランブルを実施しない場合と比較して、X軸スキャンによるフーリエ変換演算ではほぼ同一の性能、Y軸スキャンとZ軸スキャンによるフーリエ変換演算では、1個のデータアクセスに対して6サイクル以上必要であるから、下式に示すように、少なくとも4倍以上の性能向上を図ることが可能となる。
(1+6+6)/(1+1+1)=4.67
上記実施例では、3次元配列データのフーリエ変換を例に説明したが、4次元配列以上のデータのフーリエ変換に適用することも可能であることは言うまでもない。
(1+6+6)/(1+1+1)=4.67
上記実施例では、3次元配列データのフーリエ変換を例に説明したが、4次元配列以上のデータのフーリエ変換に適用することも可能であることは言うまでもない。
以上、本発明を実施するための最良の形態について、添付図面を参照しながら説明したが、本発明はかかる構成に限定されない。特許請求の範囲の発明された技術的思想の範疇において、本発明の多次元配列アクセス方法、多次元配列アクセス装置、メモリ制御装置をフーリエ変換以外の計算、例えば行列計算や多次元ウェーブレット変換計算に適用するなど、当業者であれば、各種の変更例及び修正例に想到し得るものであり、それら変更例及び修正例についても本発明の技術的範囲に属するものと了解される。
10…フーリエ変換装置、12…マクロシーケンスコントローラ、14…インデクスレジスタ、16…アドレススクランブラ、18…メモリ制御装置、20…メモリモジュール、22…フーリエ変換演算器、24…ビットリバーサルアドレスジェネレータ、25…FFT演算部、26…フーリエ変換回転因子テーブル格納部、28…バッファメモリ部、29…ライトポート、30…リードポート
Claims (10)
- ダイナミック型のメモリデバイスを使用したメモリシステム上に格納された多次元配列データにアクセスする方法であって、
前記多次元配列データのうち少なくとも二次元以上のインデクスの下位ビットを、前記メモリデバイスのページ内アドレスを表すカラムアドレスに均等に割り振ってメモリアドレスを生成する多次元配列アクセス方法。 - 請求項1に記載の多次元配列アクセス方法において、
前記カラムアドレスに割り振り可能なように前記下位ビットを決定し、前記インデクスにおけるこの下位ビット以外のビットである上位ビットを、ロウアドレスに割り振ってメモリアドレスを生成する多次元配列アクセス方法。 - ダイナミック型のメモリデバイスを使用したメモリシステム上に格納された多次元配列データにアクセスする装置であって、
前記多次元配列データのうち少なくとも二次元以上のインデクスの下位ビットを、前記メモリデバイスのページ内アドレスを表すカラムアドレスに均等に割り振ってメモリアドレスを生成する多次元配列アクセス装置。 - 請求項3に記載の多次元配列アクセス装置において、
前記カラムアドレスに割り振り可能なように前記下位ビットを決定し、前記インデクスにおけるこの下位ビット以外のビットである上位ビットを、ロウアドレスに割り振ってメモリアドレスを生成する多次元配列アクセス装置。 - 請求項3または請求項4に記載の多次元配列アクセス装置によって生成されたメモリアドレスを用いて、着目している次元以外のインデクスを固定し、着目している次元の配列のインデクスのみを変化させて前記多次元配列データからなる一次元スキャンラインを取り出し、同一ページにアクセスする場合、前記多次元配列データへのアクセスが連続的になるように、前記カラムアドレスを連続的に与えるようにしたメモリ制御装置。
- 請求項3または請求項4に記載の多次元配列アクセス装置と、
請求項5に記載のメモリ制御装置と、
請求項5に記載のメモリ制御装置によって取り出された一次元スキャンラインを、フーリエ変換に必要なスキャンラインとして格納する格納手段と、
前記格納手段に格納されたスキャンラインに基づいてフーリエ変換演算を行う演算手段と
を備えたフーリエ変換装置。 - 請求項6に記載のフーリエ変換装置において、
前記格納手段に格納されたスキャンラインを読み出し、この読み出したスキャンラインを前記演算手段に出力するとともに、前記演算手段から演算結果を取り込み、この取り込んだ演算結果を前記格納手段に書き込む2つのバッファメモリを更に備え、
一方のバッファメモリが、前記演算装置へのスキャンラインの出力、または前記演算装置からの演算結果の取り込みを行っている間に、他方のバッファメモリが、前記格納手段からのスキャンラインの読み出し、または前記格納手段への演算結果の書き込みを行うようにしたフーリエ変換装置。 - 請求項7に記載のフーリエ変換装置において、
前記スキャンラインを読み出したバッファメモリのアドレスのビット順を上下反転させるプリビット反転手段と、
前記演算装置から演算結果を取り込んだバッファメモリのアドレスのビット順を上下反転させるポストビット反転手段と
のうちの何れか1つを更に備えたフーリエ変換装置。 - 請求項6乃至8のうち何れか1項に記載のフーリエ変換装置において、
前記フーリエ変換演算に必要な回転因子を記憶したデータテーブルを更に備え、
前記演算手段は、前記データテーブルに記憶された回転因子を用いて前記フーリエ変換演算を行うようにしたフーリエ変換装置。 - 請求項6乃至9のうち何れか1項に記載のフーリエ変換装置において、
スキャン方向に対応したカウントアップの順番を定義し、定義結果に基づいて前記メモリアドレス生成装置が前記下位ビットを前記カラムアドレスに均等に割り振ってメモリアドレスを生成するように前記多次元配列アクセス装置を制御するコントローラを更に備えたフーリエ変換装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003427649A JP2005189970A (ja) | 2003-12-24 | 2003-12-24 | 多次元配列アクセス方法、多次元配列アクセス装置、メモリ制御装置、およびフーリエ変換装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003427649A JP2005189970A (ja) | 2003-12-24 | 2003-12-24 | 多次元配列アクセス方法、多次元配列アクセス装置、メモリ制御装置、およびフーリエ変換装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005189970A true JP2005189970A (ja) | 2005-07-14 |
Family
ID=34786863
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003427649A Pending JP2005189970A (ja) | 2003-12-24 | 2003-12-24 | 多次元配列アクセス方法、多次元配列アクセス装置、メモリ制御装置、およびフーリエ変換装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005189970A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009289256A (ja) * | 2008-05-01 | 2009-12-10 | Univ Of Aizu | アレイプロセッサ |
US10210136B2 (en) | 2016-03-14 | 2019-02-19 | Fujitsu Limited | Parallel computer and FFT operation method |
CN110647719A (zh) * | 2019-09-20 | 2020-01-03 | 西安电子科技大学 | 基于fpga的三维fft计算装置 |
EP4411552A1 (en) * | 2023-01-31 | 2024-08-07 | Avago Technologies International Sales Pte. Limited | Systems and methods for address scrambling |
-
2003
- 2003-12-24 JP JP2003427649A patent/JP2005189970A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009289256A (ja) * | 2008-05-01 | 2009-12-10 | Univ Of Aizu | アレイプロセッサ |
US10210136B2 (en) | 2016-03-14 | 2019-02-19 | Fujitsu Limited | Parallel computer and FFT operation method |
CN110647719A (zh) * | 2019-09-20 | 2020-01-03 | 西安电子科技大学 | 基于fpga的三维fft计算装置 |
EP4411552A1 (en) * | 2023-01-31 | 2024-08-07 | Avago Technologies International Sales Pte. Limited | Systems and methods for address scrambling |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4064380B2 (ja) | 演算処理装置およびその制御方法 | |
JP3599352B2 (ja) | フレキシブルなn−ウェイ・メモリ・インターリーブ方式 | |
Funasaka et al. | Fast LZW compression using a GPU | |
WO2018179044A1 (ja) | キャッシュメモリおよびその制御方法 | |
JP2005189970A (ja) | 多次元配列アクセス方法、多次元配列アクセス装置、メモリ制御装置、およびフーリエ変換装置 | |
US20150006604A1 (en) | Method and apparatus for performing a fft computation | |
CN109710309B (zh) | 减少存储体冲突的方法 | |
JP2814860B2 (ja) | 画像拡大縮小装置 | |
CN109614149B (zh) | 对称矩阵的上三角部分存储装置和并行读取方法 | |
KR100895715B1 (ko) | 메모리 관리 유닛, 메모리 관리 유닛을 포함하는 시스템 및어드레스 변환 방법 | |
Shingel | Interpolation in special orthogonal groups | |
CN110018847B (zh) | 可配置寄存器及基于可配置寄存器的数据存取方法 | |
CN109635236B (zh) | 对称矩阵的下三角部分存储装置和并行读取方法 | |
CN102622318B (zh) | 一种存储器控制电路及其控制的向量数据寻址方法 | |
CN113724127A (zh) | 一种图像矩阵卷积的实现方法、计算设备及储存介质 | |
CN110337637B (zh) | 数据处理方法和设备 | |
TWI254246B (en) | Computational circuit for generating a predicted address value and method thereof | |
JP3417473B2 (ja) | メモリアクセスシステム | |
WO2019232159A1 (en) | Modulus calculation that leverages computer architecture and/or operand clustering | |
JP2020160828A (ja) | 2次元画像をアフィン変換するための画像データ処理装置 | |
Lin et al. | A rotate-tiling image compositing method for sort-last parallel volume rendering systems on distributed memory multicomputers | |
KR0119725B1 (ko) | 선형변환 방법을 이용한 영상처리용 병렬기억장치 | |
JPS6151268A (ja) | デ−タ処理装置 | |
Chu et al. | AttentionRC: A Novel Approach to Improve Locality Sensitive Hashing Attention on Dual-Addressing Memory | |
JP4150888B2 (ja) | アドレス変換装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Effective date: 20061225 Free format text: JAPANESE INTERMEDIATE CODE: A621 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080507 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080930 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090210 |