JP2000285105A - 行列ベクトル乗算命令を用いて高速フーリエ変換を実行するための方法及びシステム - Google Patents

行列ベクトル乗算命令を用いて高速フーリエ変換を実行するための方法及びシステム

Info

Publication number
JP2000285105A
JP2000285105A JP2000067393A JP2000067393A JP2000285105A JP 2000285105 A JP2000285105 A JP 2000285105A JP 2000067393 A JP2000067393 A JP 2000067393A JP 2000067393 A JP2000067393 A JP 2000067393A JP 2000285105 A JP2000285105 A JP 2000285105A
Authority
JP
Japan
Prior art keywords
registers
matrix
vector multiplication
instruction
storing
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
Application number
JP2000067393A
Other languages
English (en)
Inventor
Shuridofa Abadohani
シュリドフア アバドハニ
Saha Arindamu
サハ アリンダム
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JP2000285105A publication Critical patent/JP2000285105A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations

Abstract

(57)【要約】 【課題】 プロセッサ占有時間及び計算時間の全時間を
低減してFFT演算を実行する方法及びシステムを提供
する。 【解決手段】 行列ベクトル乗算命令を用いてプロセッ
サにおいて高速フーリエ変換用のバタフライ演算を実施
するシステム及び方法である。前記バタフライ演算に対
する第1組の入力はr1+ji1及びr2+ji2と定
義され、回転因子WnはWn=e-j2π/N=cos(2
π/N)−jsin(2π/N)=a+jbと定義され
る。バタフライ演算は第1組のレジスタにr1、i1、
r2及びi2を格納し、前記回転因子を行列レジスタに
格納する。行列レジスタと前記第1組のレジスタとの間
で第1の行列ベクトル乗算命令が実行される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は一般的にはマイクロ
プロセッサシステムにおいて高速フーリエ変換演算を実
施することに関し、より詳細には行列ベクトル乗算命令
を用いて高速フーリエ変換を実行するためのシステム及
び方法に関する。
【0002】
【従来の技術】フーリエ変換は、繰返しパターンの連続
波形を解析するために用いる数学的手段である。詳細に
は、フーリエ変換は基本的には、波形をシヌソイド関数
に分解することにより波形を解析することに基づくもの
である。シヌソイド関数は、所与の周波数において繰り
返す「波状」パターンを有する。
【0003】デジタル系では、デジタル波形は連続して
はいないが、一組のサンプル或いは点により表される。
高速フーリエ変換(FFT)と呼ばれる技術を用いて、
繰返しパターンのデジタル波形を解析する。FFTをx
iで表される入力サンプル或いは点に適用して、Xiで
表される一組の出力点を生成する。FFTは、所定数の
計算を必要とし、長時間プロセッサを占有する。基数2
のFFTでは、全複素乗算・加算数はNlog2Nであ
る。ただしNは波形におけるサンプル或いは点の数であ
る。例えば1,024点からなる波形の解析は約10,
000回の複素加算・乗算を使用する。
【0004】
【発明が解決しようとする課題】そこで、プロセッサ占
有時間及び計算時間の全時間を低減してFFT演算を実
行する方法及びシステムを提供することが望まれる。
【0005】本発明の目的は、高速フーリエ変換を実行
するための改良された装置及び方法であって、計算時間
を削減する装置及び方法を提供することである。
【0006】本発明の別の目的は、行列ベクトル乗算命
令を用いて、高速フーリエ変換を実行するための改良さ
れた装置及び方法を提供することである。
【0007】同様に、本発明の他の目的は、行列ベクト
ル乗算命令を用いて計算時間を低減する離散コサイン逆
変換を実行するための新しい方法及び装置を提供するこ
とである。
【0008】
【課題を解決するための手段】本発明の上記した目的及
び利点、並びに他の目的及び利点は、プロセッサ内でF
TRV命令と呼ばれる行列ベクトル乗算命令を利用して
FFT演算を実行することにより実現される。FFT演
算のために、FFTの入力データ及び係数はそれぞれベ
クトルレジスタ及び行列レジスタにおいて再配列され、
かつそこに格納される。その後、FTRV命令を用い
て、FFTのバタフライ演算を実行する。
【0009】より詳細には、プロセッサは、高速フーリ
エ変換演算のためにバタフライ演算を実行する。バタフ
ライ演算では、第1の入力の組がr1+ji1及びr2
+ji2と定義され、さらにWnと表される回転因子
(twiddle factor)は、Wn=e-j2π/N=cos(2
π/N)−jsin(2π/N)=a+jbと定義され
る。第1組のレジスタはr1、i1、r2及びi2を格
納し、行列レジスタは回転因子を格納する。行列ベクト
ル乗算演算が行列レジスタと第1組のレジスタとの間で
実行される。
【0010】
【発明の実施の形態】本発明の他の特徴及び利点は、本
発明の開示内容を検討すれば当業者には明らかになるで
あろう。本発明の好ましい実施例について、図面を参照
しつつ以下にさらに詳細に証明する。
【0011】図1は、本発明に用いるのに適したプロセ
ッサ10及びメモリ16のブロック図である。この例で
は、プロセッサ10は、200MHzのクロック速度を
有する2ウエイスーパースカラ汎用マイクロプロセッサ
である。しかしながら、本発明の適用範囲は、このプロ
セス及びこの特定種類のプロセッサに限定されない。
【0012】プロセッサ10は、実行ユニット14に命
令及びデータを供給するキャッシュ12を備える。キャ
ッシュ12は、外部メモリ16から命令及びデータを引
き出す。別の実施例では、メモリ16はプロセッサ10
と同じチップ上に存在する。実行ユニット14は変換ベ
クトルハードウエア18を備えており、変換ベクトルハ
ードウエア18を用いて行列ベクトル乗算命令(FTR
V)20を実現する。
【0013】図2は、FTRV命令とともに用いられる
図1の変換ベクトルハードウエア18のレジスタを示
す。4×4行列の場合の一組の係数が行列レジスタXF
0−XF15に格納される。4つの4×1ベクトルの場
合の一組の係数がベクトルレジスタF0−F15に格納
される。ベクトルレジスタは、4つの4×1ベクトル、
F0−F3、F4−F7、F8−F11及びF12−F
15を形成するために、以下のようにグループ化され
る。FTRV命令は、行列レジスタに格納された係数と
4×1ベクトルの指定された1つとを掛け算し、その結
果を指定された4×1ベクトルレジスタに格納する。F
TRV演算の結果が以下に示される。4×4行列レシ゛スタ 指定されたヘ゛クトルレシ゛スタ 結果のヘ゛クトルレシ゛スタ xf0 xf4 xf8 xf12 F0 xf0×F0+xf4×F1+xf8×F2+xf12×F3 xf1 xf5 xf9 xf13 × F1 = xf1×F0+xf5×F1+xf9×F2+xf13×F3 xf2 xf6 xf10 xf14 F2 xf2×F0+xf6×F1+xf10×F2+xf14×F3 xf3 xf7 xf11 xf15 F3 xf3×F0+xf7×F1+xf11×F2+xf15×F3 行列レジスタ及びベクトルレジスタは、単精度浮動小数
点値を格納する。FTRV命令は16回の浮動小数点乗
算及び12回の浮動小数点加算を実行し、4サイクル毎
に発行されることができ、7サイクルの待ち時間を有す
る。
【0014】図3は、行列ベクトル乗算命令を実行する
ために用いられる図1の変換ベクトルバードウエア18
の詳細図である。ベクトルレジスタF0−F15がグル
ープ化され、各グループはマルチプレクサ22、24に
接続される。また行列レジスタxf0−xf15もグル
ープ化され、各グループはマルチプレクサ26、28に
接続される。ベクトルレジスタ及び行列レジスタからの
マルチプレクサ22−28は対をなし、乗算整列シフタ
32−38に入力する。乗算整列シフタ32−38の出
力は加算器42により和をとられる。正規化−丸め処理
器44は、必要に応じて加算器42の出力を正規化し、
別のマルチプレクサ46が正規化された出力を、入力デ
ータを供給するベクトルレジスタの1つに発送する。例
えば、FTRV F0命令の場合、レジスタF0はxf
0×F0+xf4×F1+xf8×F2+xf12×F
3を含むことになろう。パイプライン制御される際に、
変換ベクトルハードウエアは、クロックサイクル毎に4
回の浮動小数点乗算・加算を実行する。
【0015】定義により、離散フーリエ変換(DFT)
は、k=0からN−1の場合に以下のように決定され
る。
【0016】
【数1】 ただしWN=e-j2π/Nである。
【0017】DFTはN2回の複素乗算及びN2回の複素
加算を必要とする。FFT演算はDFTをより効率的に
計算する方法である。計算効率を改善するために、FF
TはDFTを、入力点の対間でバタフライ演算と呼ばれ
る一連の演算に数学的に還元する。バタフライはFFT
の主要な演算である。
【0018】しかしながら、行列ベクトル乗算命令は3
Dグラフィクス用に設計されたものであり、行列ベクト
ル乗算命令と比べて、バタフライ演算では乗算及び加算
の数及び順序を変える必要があるため、FFTに直接用
いることができない。本発明の注目すべき態様は、行列
ベクトル乗算命令(FTRV)及び関連するハードウエ
アを用いて、FFTのためのクーリー−テューキーアル
ゴリズム及び特にFFTの「バタフライ」演算を実施す
ることである。
【0019】図4は、FTRVを使用するコンピュータ
システム及びメモリ格納手順を示す。プロセッサ10
は、FTRV命令を使用するFFT手順50を格納する
メモリ16に接続する。またプロセッサ10はディスプ
レイ54、キーボード56及びマウス58にも接続す
る。
【0020】図5は、本発明の行列ベクトル乗算命令を
用いる周波数FFT演算の8点デシメーションの3つの
ステージのフロー図である。入力点はx0−x7で表さ
れ、一方出力点はX0−X7で表される。
【0021】図5では、入力点の対間の交差した矢印
は、各バタフライ演算の場合の入力点のペアリング(対
の形成)を表す。FFTは一連のステージにおいて実行
され、各ステージは一連のバタフライ演算を適用して、
次のステージにより用いられる一連の出力を生成する。
各ステージは同数のバタフライ演算を実行する。全FF
Tは、実行されるFFTのタイプにより確定されるパタ
ーンのバタフライを組み合わせることにより実行され
る。
【0022】基数2のFFTのバタフライ演算は、4回
の乗算と6回の加算/減算とを含む。用語「基数2」
は、入力点が各ステージにおいてどのように分割される
かを表す。基数2FFTは入力サンプルを2つのセット
に分割し、そのセットは、サブセットが2つの入力点を
持つようになるまで、2つ以上のサブセットに繰返し分
割される。
【0023】ステージ1では、バタフライ演算のための
入力点は番号通りに対をなしていないが、一方ステージ
3の出力点は数字の順番通りに並んでいることに注目さ
れたい。
【0024】DFTの計算では、上記DFT式において
j2π/Nに等しい、多数のWNがFFT演算の係数にな
る。多数のWNは回転因子と呼ばれ、各バタフライ演算
に対する回転因子(W0、W1、W2及びW3)が向きの矢
印の隣に示される。ステージ1では、各入力点対は異な
る回転因子を用いる。例えばステージ1では、バタフラ
イ演算は、回転因子W0を用いて点x0及びx4上で実行
される。
【0025】ステージ2では、ステージ1の出力点が対
をなし、2つの回転因子W0及びW2がバタフライ演算に
用いられる。ステージ3では、出力点は対をなし、1つ
の回転因子W0が全てのバタフライ演算に用いられる。
また図5は、各ステージのための回転因子の数も示す。
【0026】上記のように、入力点x0−x7は複素数で
ある。複素数は実数部及び虚数部を有し、表記a+jb
を用いて表され、ここでaは実数部であり、jbは虚数
部である。係数「a」及び「b」は実数であり、jは虚
数である。複素加算・乗算は、複素数を乗算及び加算す
ることを表す。FFTは周波数(DIF)FFTのデシ
メーションか、或いは時間(DIT)FFTのデシメー
ションかのいずれかであることができる。
【0027】図6は本発明のバタフライ演算のフロー図
である。ステップ62では、回転因子及び他の値が行列
レジスタにロード及び格納される。ステップ64は、ベ
クトルレジスタのグループの少なくとも1つに入力点に
対する値を格納する。ステップ66では、行列ベクトル
乗算(FTRV)命令が実行される。周波数の基数2F
FTのデシメーションに対するバタフライ演算は以下の
ように定義される。2つの入力点がr1+j i1及び
r2+j i2と定義される。バタフライ演算に対する
回転因子は、形式Wn=e-j2π/N=cos(2π/
N)−jsin(2π/N)を有し、a+j bと定義
される。ただしb=−sin(2π/N)である。バタ
フライ演算の出力は以下の関係を適用することにより生
成される。 (r1+r2)+j(i1+i2) ((r1−r2)a−(i1−i2)b)+j((r1
−r2)b+(i1−i2)a)) FTRV命令を用いて、上記の基数2のDIFバタフラ
イ演算を実行するために、4×4行列及びベクトルレジ
スタは以下の値をロードされ、かつ格納する。 4×4行列 入力ベクトルレジスタ 結果のベクトルレジスタ 1 0 1 0 r1(F0) r1+r2 (F0) 0 1 0 1 × i1(F1) = i1+i2 (F1) a -b -a b r2(F2) (r1-r2)a-(i1-i2)b (F2) b a -b -a i2(F3) (r1-r2)b+(i1-i2)a (F3) 特定のベクトルレジスタが係数の隣の括弧内に示され
る。
【0028】回転因子Wは係数a、b、−a、−bを含
み、4×4行列レジスタの下側2行に格納される。上記
4×4行列の値及び係数は、図2に示されるのと同じフ
ォーマットで行列レジスタに格納される。例えば、xf
0は1を格納し、xf4は0を格納し、xf1は0を格
納し、xf2はaを格納し、xf15は−aを格納す
る。ベクトルレジスタでは、F0はr1を格納し、F1
はi1を格納し、F2はr2を格納し、F3はi2を格
納する。その後FTRV F0命令がレジスタF0−F
3上で実行される。FTRV F0命令を実行した後、
その結果がベクトルレジスタF0−F3に格納される。
例えば、F0がr1+r2を格納し、F1はi1+i2
を格納し、F2は(r1−r2)a−(i1−i2)b
を格納し、F3は(r1−r2)b+(i1−i2)a
を格納する。結果として、基数2のFFTに対する全バ
タフライ演算は、1つの行列ベクトル乗算(FTRV)
命令を用いて実行される。
【0029】別の実施例では、ベクトルレジスタF4−
F7がそれぞれr1、i1、r2及びi2を格納し、F
TRV F4命令が実行される。同様に、ベクトルレジ
スタF8−F11及びF12−F15はそれぞれFTR
V F8命令及びFTRV F12命令とともに用いるこ
とができる。
【0030】基数2のDIT FFTバタフライ演算
は、4×4行列レジスタ及びベクトルレジスタを初期化
し、以下に示すようなベクトルレジスタにおける結果を
生成することにより実行される。 4×4行列 入力ベクトルレジスタ 結果のベクトルレジスタ 1 0 a -b r1 r1+r2 0 1 b a × i1 = i1+i2 1 0 -a b r2 (r1-r2)a-(i1-i2)b 0 1 -b -a i2 (r1-r2)b+(i1-i2)a 回転因子Wは4×4行列レジスタの右側2つの列に格納
される。
【0031】回転因子Wの係数は、メモリの回転因子テ
ーブルにおいて予め計算され、そこに格納される。理想
的には、回転因子テーブルは各回転因子Wを2つの浮動
小数点数a及びbとして格納することが好ましい。しか
しながら、実際には、DIFFFTの場合に下側2行、
DIT FFTの場合に右側2列の全8個の係数値を格
納する。ソフトウエアパイプライン処理 FTRV命令は4サイクル毎に実行することができる。
4サイクル中に、実行ユニットは、FTRV命令と並列
に、ベクトルレジスタの2回の倍精度ロード及び2回の
倍精度格納を実行することができる。FTRV命令は7
サイクルの待ち時間を有するため、ソフトウエアパイプ
ライン処理を用いて、バタフライ演算毎に4サイクルの
ピークスループットを達成する。ソフトウエアパイプラ
イン処理のための疑似コードが以下に示される。ソフト
ウエアパイプライン処理を説明するために、第3のFT
RV命令「FTRV F8」を詳細に記述することにす
る。FTRV F0命令の実行は、FTRV F8命令を
実行する前に終了していることに注意されたい。「FT
RV F8」と並列に、FTRV F0命令の結果は、そ
れぞれアドレス0及びアドレス0+1にF0及びF1の
値を格納する「Dblst address0,F0」のようなダブルス
トア命令を用いてメモリに格納される。「Dbl Id addre
ss n,F0」のようなダブルロード命令は、アドレスn及
びアドレスn+1に格納される値をF0及びF1にそれ
ぞれロードする。簡単にするために、以下の疑似コード
は、アドレスが実際には規定されるであろうがアドレス
を規定していないものとする。 バタフライ演算をパイプライン処理するための疑似コード Innermost Loop{ FTRV F0 in parallel with Dbl st F8 Dbl st F10 Dbl ld F8 Dbl ld F10 FTRV F4 in parallel with Dbl st F12 Dbl st F14 Dbl ld F12 Dbl ld F14 FTRV F8 in parallel with Dbl st F0 Dbl st F2 Dbl ld F0 Dbl ld F2 FTRV F12 in parallel with Dbl st F4 Dbl st F6 Dbl ld F4 Dbl ld F6 } 上記「Innermost Loop」を実行し始める前に、命令を実
行して、上記のようにベクトルレジスタF0−F7及び
行列レジスタを初期化する。「Innermost Loop」の実
行を終了した後、さらに追加の命令を用いて、メモリに
F8−F15の値を格納する。さらに、ループカウンタ
をデクリメントし、ループカウンタの値に対して「Inne
rmost Loop」の始めに分岐する他の命令が、ダブルロー
ド及びダブルストア命令と並列に実行される。
【0032】結果として、ロード及びストア演算ととも
にバタフライ演算を実行するために用いられるFTRV
命令をパイプライン処理することにより、FFTの実行
速度がさらに速くなる。 バタフライ演算のグループ化 行列レジスタがロードされる回数を削減するために同じ
回転因子を用いる入力についてバタフライ演算を実行す
ることにより、FFTの速度はさらに改善される。基数
2のFFTはlog2Nのステージを有し、各ステージ
はN/2のバタフライ演算を有する。DIF FFTの
場合、全てではないが、第1のステージでは、回転因子
は2回以上用いられる(図4を参照されたい)。回転因
子はステージ1、2、3、…、log2Nにおいてそれ
ぞれ1、2、4、…、N/2回用いられる。スループッ
トを改善するために、バタフライ演算は各ステージにお
いて共にグループ化され、既にロードされている回転因
子を再利用する。以下に疑似コードを示す。 同じ回転因子を利用するバタフライ演算をグループ化するための疑似コード For (i=1 to Number of Stages){ For (j=1 to Number of Twiddle Factors in Stage i){ load new twiddle factor for (k=1 to Number of same twiddle factor butterflies in stage i){ execute same twiddle factor butterfly /*1つのFTRV命令を実行す る } } } 図7は上記疑似コードのフロー図である。ステップ72
はi及びj、すなわちステージカウンタ及び回転因子カ
ウンタをそれぞれ1に初期化する。ステップ74は行列
レジスタに定数を格納する。ステップ76は行列レジス
タに新しい回転因子を格納する。ステップ78では、最
も内側のループに対するカウンタkが1に初期化され
る。ステップ80は、レジスタのグループの1つに入力
点に対する値を格納する。ステップ82では、FTRV
命令を用いてバタフライ演算が実行される。ステップ8
4は、そのステージの同じ回転因子を用いて、kがバタ
フライの数以下(バタフライの数よりも小さいかあるい
は同じ)であるかを判定する。バタフライ数以下である
場合には、ステップ86でkをインクリメントし、ステ
ップ80に進む。バタフライ数より大きい場合には、ス
テップ88で、j、すなわち回転因子カウンタが、ステ
ージiの回転因子数以下であるかを判定する。回転因子
数以下である場合には、ステップ90でjをインクリメ
ントし、ステップ46に進む。回転因子数より大きい場
合には、ステップ92で、iがステージ数以下であるか
を判定する。ステージ数以下である場合には、ステップ
94でiをインクリメントし、jを1に設定し、ステッ
プ96に進み、次のステージのためのバタフライを実行
する。ステージ数より大きい場合には、その手順を終了
する。
【0033】FFT演算の速度をさらに改善するため
に、FTRV命令はステージ3以上ではパイプライン処
理される。図7では、same twiddle factor butterfly
を実行する最も内側のループは、各FTRV命令が終了
するまで待機し、FTRV命令をパイプライン処理しな
い。ステージ1及び2は、同じ回転因子を用いる1つ及
び2つのバタフライのみを有するため、ステージ1及び
2では個別の手順が実行される。ステージ3以上では、
以下の疑似コードがFTRV命令をパイプライン処理す
る。 パイプライン処理のための疑似コード Do Butterflies for stage 1, Do butterflies for stage 2, For (i=3 to Number of Stages){ for (j=1 to Number of Twiddle Factors in Stage i){ load new twiddle factor for (k=1 to Number of same twiddle factor butterflies in stage i){ execute same twiddle factor butterfly execute same twiddle factor butterfly execute same twiddle factor butterfly execute same twiddle factor butterfly } } } 図8はステージ3以上の場合に上記した疑似コードに示
されるFFT演算の実施例のフロー図である。ステップ
102では、ステージカウンタiは3に初期化され、回
転因子カウンタjは1に初期化される。ステップ104
では、行列レジスタに一定値、0及び1が格納される。
ステップ106では、same twiddle factorカウンタk
が0に初期化される。ステップ108では、ベクトルレ
ジスタF0−F15は適切な係数r1、i1、r2及び
i2をロードされ、新しい回転因子が行列レジスタにロ
ードされる。ブロック110−116はストア及びロー
ド命令(110b及び116b)と並列にFTRV命令
(110a−116a)を実行し、バタフライの実行を
パイプライン処理する。ステップ118は、kがそのス
テージの同じ回転因子バタフライの数以下であるかを判
定する。バタフライ数以下である場合には、ステップ1
20においてkがインクリメントされ、ステップ110
に進む。バタフライ数より大きい場合には、ステップ1
22において、ステップ114及び116のFTRV
F8及びFTRV F12命令の結果がそれぞれメモリ
に格納される。ステップ124は、jがステージiの回
転因子の数より小さいかを判定する。小さい場合には、
ステップ126においてjがインクリメントされ、ステ
ップ106に進む。回転因子数より大きい場合には、ス
テップ128において、ステージの数以下であるかを判
定される。ステージ数以下である場合には、ステージ1
30においてiがインクリメントされ、jが1に設定さ
れ、ステップ106に進む。ステージ数より大きい場合
にはその手順は終了される。
【0034】結果として、上記のようにバタフライ演算
をパイプライン処理し、グループ化することにより、F
FT演算の速度が速くなる。
【0035】別の実施例では、スループットをさらに高
めるために、ステージ間で回転因子が再利用される。バ
タフライ演算は、あるステージの最後のバタフライ演算
に対する回転因子が次のステージの最初のバタフライ演
算に利用されるように順序付けされる。
【0036】プロセッサアーキテクチャでは、常に分岐
が行われるものと予測されており、分岐には1サイクル
しかかからない。さらに分岐命令は、分岐が余分なサイ
クルを使用しないように別の命令と対をなしている場合
が多い。こうしてステージ1及び2の場合のバタフライ
に対する最も内側のループの「branch not taken」のイ
ンスタンスの数を削減することができる。ステージ1で
は、通常最も内側のループは呼出し毎に一回実行される
ため、以下に示される疑似コードは最も内側のループを
取り除き、本発明のFFT実施の速度を改善する。 ステージ1の疑似コード for (j=1 to Number of Twiddle Factor in Stage 1){ load new twiddle factor execute same twiddle factor butterfly } 上記「for」ループは、N/2回実行され、ステージ1
のN/2バタフライ演算を実行するであろう。ステージ
2の場合、各回転因子が2回用いられるため、同様のバ
ージョンループを以下の疑似コードに示されるように用
いることができる。 ステージ2の疑似コード for (j=1 to Number of Twiddle Factor in Stage 2){ load new twiddle factor execute same twiddle factor butterfly execute same twiddle factor butterfly } 上記「for」ループはN/4回実行され、ステージ1の
N/2バタフライ演算を実行するであろう。入力点の配列 FFT演算を実行する速度をさらに高めるために、入力
点はビット反転される。入力点及び出力点の配列を再配
列することはビット反転と呼ばれる。ビット反転は、F
FTを開始する前に入力点において、或いはFFTを終
了した後に出力点において行うことができる。レジスタ
R0はメモリからロードするための入力点のアドレスを
格納する。プロセッサは、レジスタをロードするための
インクリメント後アドレス指定方式を有する。それゆえ
レジスタR0をインクリメントするために、さらに命令
或いはサイクルを必要としない。ビット反転を使用する
DIF FFTの場合、同じ回転因子を用いる連続した
バタフライ演算に対する入力点は、連続したメモリアド
レスに格納される。それゆえアドレスレジスタR0は、
次の組の入力点を格納する次のアドレスを指定するため
に事後にインクリメントされる。対照的に、入力点が線
形に順序付けされていた場合には、個別の加算命令によ
って、ステージ間で変化するオフセット値を加えること
によりアドレスレジスタがインクリメントされる必要が
あろう。さらに、ビット反転を用いる場合、回転因子は
予め計算され、ビット反転シーケンスの回転因子テーブ
ルに格納される。それゆえ回転因子も、アドレスレジス
タを事後にインクリメントすることにより順次アクセス
される。
【0037】ビット反転は予め計算されたビット反転テ
ーブルを用いて行われる。一実施例では、Reverse Bit
[i]と呼ばれるサイズNのビット反転テーブルは、各
指標iに対して、ビット反転された配列のiの値を示
す。そのようなテーブルを用いる場合の疑似コードが以
下に示される。 ビット反転テーブルの第1の実施例に対する疑似コード #define SWAP (a, b, tmp) tmp=(a); (a=b); (b)=tmp; for (i=0; I<N; i++){ j=Reverse Bit[i]; if (i<j){ SWAP (Data Array[i], Data Array[j], tmp); SWAP (Data Array[i+1], Data Array[j+1], tmp) } } 第2の実施例では、ビット反転テーブルのサイズは削減
される。この実施例では、ビット反転テーブルは、Bit
Rev Pairs[i]と呼ばれ、順序付けされた対(i,br
i)を格納する。ただし、briはビットを反転したi
の値である。言い換えると、入力点iはメモリの入力点
briと交換されるであろう。しかしながら、ある点は
交換或いは再順序付けされる必要はなく、交換は対間で
一回だけ実行されるべきである。それゆえ8データ点F
FTの場合、このビット反転テーブルは(1,4)、
(3,6)及び(0,0)を含むであろう。最後のエン
トリ(0,0)は、テーブル指示子の最後として用いら
れる。それゆえ第1の実施例のビット反転テーブルは8
個の値を格納するが、第2の実施例のビット反転テーブ
ルは6個の値を格納し、それにより低い保管容量しか使
用しない。第2の実施例のビット反転テーブルを用いる
疑似コードが以下に示される。 ビット反転テーブルを用いる疑似コード /* これはビット反転テーブルを定義する*/ Struct{ unsigned short i; /*i*/ unsigned short bri; /*ビット反転i*/ } Bit Rev Pairs[FFT SIZE/2]; /*これはビット反転テーブルであ る*/ for (i=0; ((i<N/2)&(Bit Rev Pairs[i].i |=0; i++); i++){ j= Bit Rev Pairs[i].i; k= Bit Rev Pairs[i].bri; SWAP (Data Array[j].bri, Data Array[k].bri, tmp); SWAP (Data Array[j].i, Data Array[k].i, tmp); 回転因子のプリフェッチ(先取り) 好適な実施例では、プロセッサは、回転因子の8個の値
をキャッシュメモリにロードするために用いられるプリ
フェッチ命令を有する。回転因子が行列レジスタにロー
ドされる度に、背景(バックグラウンド)においてプリ
フェッチ命令が実行され、次の8個の回転因子値をプリ
フェッチする。キャッシュの各キャッシュラインは、回
転因子の全8個の値を格納するのに十分な32バイトを
格納する。利点 FTRV命令を用いていない初期バージョンのFFTは
バタフライ当たり10サイクルを用いており、このため
1,024点FFTのバタフライに対して約10×N×
logN=51,200サイクルを必要とする。さらに
初期バージョンは、上記ビット反転テーブルの第1の実
施例を用いていたのであり、後にこの第1の実施例は、
全56,200サイクルについて約5,000サイクル
を加えていた。対照的に、パイプライン処理及び第2の
ビット反転実施例とともにFTRV命令を用いる本発明
のFFTは、初期バージョンより約36%速くなるもの
と推定される。
【0038】本発明の他の特徴及び利点は、本発明の開
示内容を検討する当業者には明らかとなろう。それゆえ
本発明の範囲は特許請求の範囲によってのみ画定される
べきである。
【0039】
【発明の効果】上記のように本発明に従えば、プロセッ
サを長時間占有することなく、より速くFFT演算を実
行することが可能である。
【図面の簡単な説明】
【図1】プロセッサ及びメモリのブロック図である。
【図2】行列ベクトル乗算命令に関連して用いられる図
1の変換ベクトルハードウエアのレジスタを示す図であ
る。
【図3】行列ベクトル乗算命令を実行するために用いら
れる図1の変換ベクトルハードウエアの詳細図である。
【図4】行列ベクトル乗算命令を使用するコンピュータ
システム及びメモリ格納手順を示す図である。
【図5】行列ベクトル乗算命令を用いてバタフライ演算
を実行する周波数高速フーリエ変換における8点デシメ
ーションの3つのステージを示す図である。
【図6】行列ベクトル乗算命令を用いるバタフライ演算
のフロー図である。
【図7】行列ベクトル乗算命令を用いてバタフライ演算
を実行するFFT手順のフロー図である。
【図8】行列ベクトル乗算命令を用いてバタフライ演算
を実行するFFTの別の実施例のフロー図である。
【符号の説明】
10 プロセッサ 12 キャッシュ 14 実行ユニット 16 メモリ 18 変換ベクトルハードウエア 20 行列ベクトル乗算命令(FTRV) 22、24、26、 28、46 マルチプレクサ 32、34、36、 38 乗算整列シフタ 42 加算器 44 正規化−丸め処理器 50 FFT手順 54 ディスプレイ 56 キーボード 58 マウス

Claims (16)

    【特許請求の範囲】
  1. 【請求項1】 プロセッサにおいて高速フーリエ変換演
    算用のバタフライ演算を実施するための方法であって、
    前記バタフライ演算に対する第1組の入力がr1+ji
    1及びr2+ji2であり、回転因子WnがWn=e
    -j2π/N=cos(2π/N)−jsin(2π/N)
    =a+jbと表され、前記バタフライ演算が第1組のレ
    ジスタにr1、i1、r2及びi2を格納するステップ
    と、 前記回転因子を行列レジスタに格納するステップと、 前記行列レジスタと前記第1組のレジスタとの間で第1
    の行列ベクトル乗算演算を実行するステップとを有する
    ことを特徴とする方法。
  2. 【請求項2】 第2のバタフライ演算に対する第2組の
    入力がr3+ji3及びr4+ji4であり、 前記第1の行列ベクトル乗算演算を実行する間に、第2
    組のレジスタにr3、i3、r4及びi4を格納するス
    テップと、 前記行列レジスタと前記第2組のレジスタとの間で第2
    の行列ベクトル乗算演算を実行するステップとをさらに
    有することを特徴とする請求項1に記載の方法。
  3. 【請求項3】 前記第2の行列ベクトル乗算演算を実行
    する間に、前記第1の行列ベクトル乗算演算の出力をメ
    モリに格納するステップをさらに有することを特徴とす
    る請求項2に記載の方法。
  4. 【請求項4】 前記行列ベクトル乗算演算の出力をメモ
    リに格納するステップと、 前記格納された行列ベクトル乗算演算の出力を再順序付
    けするステップとをさらに有することを特徴とする請求
    項1に記載の方法。
  5. 【請求項5】 前記格納された出力が第1の位置に関連
    し、前記再順序付けするステップがビット反転テーブル
    を用いて前記格納された出力を再順序付けし、前記ビッ
    ト反転テーブルが前記第1の位置と前記格納された出力
    の順序付けされた位置とを含むことを特徴とする請求項
    4に記載の方法。
  6. 【請求項6】 周波数FFTのデシメーションにおい
    て、前記行列ベクトル乗算演算がプロセッサにより実行
    され、前記行列レジスタがn×n行列を形成し、前記第
    1の組のレジスタが、レジスタのグループに構成された
    m×1行列を形成する第2組のレジスタのサブセットで
    あり、前記各グループがn個のレジスタを有し、前記第
    1組のレジスタが1つのグループであり、前記行列ベク
    トル乗算演算により、n×n行列のレジスタの値が、レ
    ジスタの前記グループの指定された1つに対して乗算さ
    れた行列になり、前記行列ベクトル乗算の結果がレジス
    タの前記グループの前記指定された1つに格納され、 前記第1組のレジスタにr1、i1、r2及びi2を格
    納する前記ステップが前記値を、 r1 i1 r2 i2 として格納し、 前記回転因子を格納する前記ステップが前記回転因子
    を、 1 0 1 0 0 1 0 1 a −b −a b b a −b −a として格納し、 レジスタの前記グループの前記指定された1つに関して
    前記行列ベクトル乗算命令を実行する前記ステップによ
    り、 r1+r2 i1+i2 (r1−r2)a−(i1−i2)b (r1−r2)b+(i1−i2)a が前記第1組のレジスタに格納されることを特徴とする
    請求項1に記載の方法。
  7. 【請求項7】 時間バタフライ演算のデシメーションに
    おいて、前記行列ベクトル乗算演算がプロセッサにより
    実行され、前記行列レジスタがn×n行列を形成し、前
    記第1の組のレジスタが、レジスタのグループに構成さ
    れたm×1行列を形成する第2組のレジスタのサブセッ
    トであり、前記各グループがn個のレジスタを有し、前
    記第1組のレジスタが1つのグループであり、前記行列
    ベクトル乗算命令により、n×n行列のレジスタの値
    が、レジスタの前記グループの指定された1つに対して
    行列乗算され、前記行列ベクトル乗算の結果がレジスタ
    の前記グループの前記指定された1つに格納され、 前記第1組のレジスタにr1、i1、r2及びi2を格
    納する前記ステップが前記値を、 r1 i1 r2 i2 として格納し、 前記行列レジスタに係数を格納する前記ステップが前記
    値を、 1 0 a −b 0 1 b a 1 0 −a b 0 1 −b −a として格納し、 前記行列ベクトル乗算命令を実行する前記ステップによ
    り、 r1+(r2a−i2b) i1+(r2b+i2a) r1−(r2a−i2b) i1−(r2b+i2a) がレジスタの前記グループの前記指定された1つに格納
    されることを特徴とする請求項1に記載の方法。
  8. 【請求項8】 プロセッサにおいて、複数の連続入力を
    含む高速フーリエ変換演算用のバタフライ演算を実施す
    るための方法であって、前記バタフライ演算に対する第
    1組の入力がr1+ji1及びr2+ji2であり、回
    転因子WnがWn=e-j2π/N=cos(2π/N)−
    jsin(2π/N)=a+jbと表され、前記バタフ
    ライ演算が、 r1+ji1及びr2+ji2を含む前記第1組の入力
    が連続した入力にならないように前記入力をペアリング
    するステップと、 第1組のレジスタにr1、i1、r2及びi2を格納す
    るステップと、 前記回転因子を行列レジスタに格納するステップと、 前記行列レジスタと前記第1組のレジスタとの間で行列
    ベクトル乗算演算を実行するステップとを有することを
    特徴とする方法。
  9. 【請求項9】 プロセッサにおいて高速フーリエ変換演
    算用のバタフライ演算を実行するためのシステムであっ
    て、前記バタフライ演算に対する入力がr1+ji1及
    びr2+ji2であり、回転因子WnがWn=e-j2π
    /N=cos(2π/N)−jsin(2π/N)=a+
    jbと表され、 r1、i1、r2及びi2を格納するための第1組のレ
    ジスタと、 前記回転因子を格納するための行列レジスタと、 前記行列レジスタと前記第1組のレジスタとの間で行列
    ベクトル乗算演算を実行するための実行ユニットとを備
    えることを特徴とするシステム。
  10. 【請求項10】 前記行列レジスタがn×n行列を形成
    し、 レジスタのグループに構成されるm×1行列を形成する
    第2組のレジスタであって、レジスタの前記各グループ
    がn個のレジスタを有し、前記第1組のレジスタが1つ
    のグループを形成する、該第2組のレジスタをさらに備
    え、 前記実行ユニットにより前記n×n行列のレジスタの値
    がレジスタの前記グループの指定された1つに対して行
    列乗算され、前記行列ベクトル乗算の結果がレジスタの
    前記グループの前記指定された1つに格納され、 バタフライ演算を実行する一組の命令を格納するメモリ
    をさらに備え、前記命令が、 レジスタの前記グループの前記指定された1つに値を、 r1 i1 r2 i2 として格納する命令と、 n×n行列を形成する前記第1組のレジスタに係数を、 1 0 1 0 0 1 0 1 a −b −a b b a −b −a として格納する命令と、 レジスタの前記グループの前記指定された1つに関して
    前記行列ベクトル乗算命令を実行して、 r1+r2 i1+i2 (r1−r2)a−(i1−i2)b (r1−r2)b+(i1−i2)a をレジスタの前記グループの前記指定された1つに格納
    する命令とを有することを特徴とする請求項9に記載の
    システム。
  11. 【請求項11】 レジスタの前記グループの別の1つに
    他の値をロードする命令と、 レジスタの前記グループの異なる指定された1つに関し
    て第2の行列ベクトル乗算を実行することにより、 r1+r2 i1+i2 (r1−r2)a−(i1−i2)b (r1−r2)b+(i1−i2)a をレジスタの前記グループの前記指定された1つに格納
    する命令とをさらに含むことを特徴とする請求項10に
    記載のシステム。
  12. 【請求項12】 前記第1の行列ベクトル乗算を実行す
    る前記命令が、レジスタの前記グループの別の1つに他
    の値をロードする命令と並列に実行されることを特徴と
    する請求項11に記載のシステム。
  13. 【請求項13】 コンピュータシステムとともに使用す
    るためのコンピュータプログラム製品であって、前記コ
    ンピュータプログラム製品がコンピュータ読取り可能な
    記憶媒体と、その中に内蔵されたコンピュータプログラ
    ム機構とを備え、また前記コンピュータプログラム製品
    がプロセッサにおいて高速フーリエ変換演算用のバタフ
    ライ演算を実施するためのものであり、前記バタフライ
    演算に対する第1組の入力がr1+ji1及びr2+j
    i2であり、回転因子WnがWn=e-j2π/N=cos
    (2π/N)−jsin(2π/N)=a+jbと表さ
    れ、 前記コンピュータプログラム機構が前記記憶媒体に格納
    され、一連の命令を含むプログラムを含み、 前記命令が、 第1組のレジスタにr1、i1、r2及びi2を格納す
    る命令と、 前記回転因子を行列レジスタに格納する命令と、 前記行列レジスタと前記第1組のレジスタとの間で第1
    の行列ベクトル乗算演算を実行する命令とを有すること
    を特徴とするコンピュータプログラム製品。
  14. 【請求項14】 第2のバタフライ演算に対する第2組
    の入力がr3+ji3及びr4+ji4であり、 前記第1の行列ベクトル乗算演算を実行する間に、第2
    組のレジスタにr3、i3、r4及びi4を格納する命
    令と、 前記行列レジスタと前記第2組のレジスタとの間で第2
    の行列ベクトル乗算演算を実行する命令とをさらに含む
    ことを特徴とする請求項13に記載のコンピュータプロ
    グラム製品。
  15. 【請求項15】 前記第2の行列ベクトル乗算演算を実
    行する間に、前記第1の行列ベクトル乗算演算の出力を
    メモリに格納する命令をさらに含むことを特徴とする請
    求項14に記載のコンピュータプログラム製品。
  16. 【請求項16】 前記行列ベクトル乗算演算の出力をメ
    モリに格納する命令と、 前記格納された行列ベクトル乗算演算の出力を再順序付
    けする命令とをさらに含むことを特徴とする請求項13
    に記載のコンピュータプログラム製品。
JP2000067393A 1999-03-11 2000-03-10 行列ベクトル乗算命令を用いて高速フーリエ変換を実行するための方法及びシステム Pending JP2000285105A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/267,899 US6366937B1 (en) 1999-03-11 1999-03-11 System and method for performing a fast fourier transform using a matrix-vector multiply instruction
US09/267.899 1999-03-11

Publications (1)

Publication Number Publication Date
JP2000285105A true JP2000285105A (ja) 2000-10-13

Family

ID=23020612

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000067393A Pending JP2000285105A (ja) 1999-03-11 2000-03-10 行列ベクトル乗算命令を用いて高速フーリエ変換を実行するための方法及びシステム

Country Status (2)

Country Link
US (1) US6366937B1 (ja)
JP (1) JP2000285105A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8521414B2 (en) 2007-03-30 2013-08-27 Honda Motor Co., Ltd. Vehicle safety driving apparatus
JP2016045703A (ja) * 2014-08-22 2016-04-04 富士通株式会社 処理装置、処理装置の処理方法及びプログラム

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6625630B1 (en) * 2000-06-05 2003-09-23 Dsp Group Ltd. Two cycle FFT
US7010558B2 (en) * 2001-04-19 2006-03-07 Arc International Data processor with enhanced instruction execution and method
US6898691B2 (en) * 2001-06-06 2005-05-24 Intrinsity, Inc. Rearranging data between vector and matrix forms in a SIMD matrix processor
US7047268B2 (en) * 2002-03-15 2006-05-16 Texas Instruments Incorporated Address generators for mapping arrays in bit reversed order
CN1685309B (zh) 2002-09-24 2010-08-11 美商内数位科技公司 计算上高效数学引擎
US7454452B2 (en) * 2003-03-25 2008-11-18 Texas Instruments Incorporated Fast fourier transform operation with reduced cache penalty
TW200602902A (en) * 2004-07-12 2006-01-16 Benq Corp Method of calculating FFT
US7680124B2 (en) * 2004-07-30 2010-03-16 Agere Systems Inc. Frame mapping scheduler for scheduling data blocks using a mapping table and a weight table
MX2007002071A (es) * 2004-08-18 2007-04-24 Nielsen Media Res Inc Metodos y aparatos para generar firmas.
US7609599B2 (en) * 2006-02-17 2009-10-27 Mediatek Inc. Method of identifying a type of an optical disc and the device therefor
KR100836624B1 (ko) * 2006-12-08 2008-06-10 한국전자통신연구원 가변 고속 푸리에 변환 장치 및 그 방법
US7675847B2 (en) 2007-07-10 2010-03-09 Wipro Limited Hardware implementation of a programmable FFT based on a half length FFT core
US20090198976A1 (en) * 2008-02-06 2009-08-06 Austel Vernon R Method and structure for high-performance matrix multiplication in the presence of several architectural obstacles
WO2009099550A1 (en) 2008-02-07 2009-08-13 Cardiac Pacemakers, Inc. Wireless tissue electrostimulation
US8386552B2 (en) * 2008-09-17 2013-02-26 Freescale Semiconductor, Inc. Fourier transform processing and twiddle factor generation
US10617514B2 (en) 2010-12-22 2020-04-14 W. L. Gore & Associates, Inc. Biased endoluminal device
CN103488614A (zh) * 2013-09-22 2014-01-01 浙江大学 数字信号处理中的变换的方法和装置
CN106776474B (zh) * 2016-11-21 2019-04-16 江苏宏云技术有限公司 矢量处理器实现fft的系统及其数据交换、地址生成方法
CN110234296B (zh) 2017-01-31 2022-08-12 W.L.戈尔及同仁股份有限公司 预应变的支架元件
WO2018170400A1 (en) * 2017-03-16 2018-09-20 Jaber Technology Holdings Us Inc. Apparatus and methods of providing an efficient radix-r fast fourier transform
US20190073337A1 (en) * 2017-09-05 2019-03-07 Mediatek Singapore Pte. Ltd. Apparatuses capable of providing composite instructions in the instruction set architecture of a processor
US10795677B2 (en) 2017-09-29 2020-10-06 Intel Corporation Systems, apparatuses, and methods for multiplication, negation, and accumulation of vector packed signed values
US10514924B2 (en) 2017-09-29 2019-12-24 Intel Corporation Apparatus and method for performing dual signed and unsigned multiplication of packed data elements
US10534838B2 (en) 2017-09-29 2020-01-14 Intel Corporation Bit matrix multiplication
US11256504B2 (en) 2017-09-29 2022-02-22 Intel Corporation Apparatus and method for complex by complex conjugate multiplication
US10802826B2 (en) 2017-09-29 2020-10-13 Intel Corporation Apparatus and method for performing dual signed and unsigned multiplication of packed data elements
US20190102195A1 (en) * 2017-09-29 2019-04-04 Intel Corporation Apparatus and method for performing transforms of packed complex data having real and imaginary components
US11243765B2 (en) * 2017-09-29 2022-02-08 Intel Corporation Apparatus and method for scaling pre-scaled results of complex multiply-accumulate operations on packed real and imaginary data elements
US10795676B2 (en) 2017-09-29 2020-10-06 Intel Corporation Apparatus and method for multiplication and accumulation of complex and real packed data elements
US10664277B2 (en) 2017-09-29 2020-05-26 Intel Corporation Systems, apparatuses and methods for dual complex by complex conjugate multiply of signed words
US11074073B2 (en) 2017-09-29 2021-07-27 Intel Corporation Apparatus and method for multiply, add/subtract, and accumulate of packed data elements
US10552154B2 (en) 2017-09-29 2020-02-04 Intel Corporation Apparatus and method for multiplication and accumulation of complex and real packed data elements
US20200371793A1 (en) * 2019-05-24 2020-11-26 Texas Instruments Incorporated Vector store using bit-reversed order
CN112434255B (zh) * 2020-12-03 2023-12-08 成都海光微电子技术有限公司 向量-矩阵运算和数据处理方法、乘法器和处理器芯片

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4275452A (en) * 1979-11-08 1981-06-23 Rockwell International Corporation Simplified fast fourier transform butterfly arithmetic unit
FR2568036B1 (fr) * 1984-07-20 1989-06-02 Thomson Csf Circuit de calcul
US4689762A (en) * 1984-09-10 1987-08-25 Sanders Associates, Inc. Dynamically configurable fast Fourier transform butterfly circuit
US5371696A (en) * 1992-12-24 1994-12-06 Sundararajan; Duraisamy Computational structures for the fast Fourier transform analyzers

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8521414B2 (en) 2007-03-30 2013-08-27 Honda Motor Co., Ltd. Vehicle safety driving apparatus
JP2016045703A (ja) * 2014-08-22 2016-04-04 富士通株式会社 処理装置、処理装置の処理方法及びプログラム

Also Published As

Publication number Publication date
US6366937B1 (en) 2002-04-02

Similar Documents

Publication Publication Date Title
JP2000285105A (ja) 行列ベクトル乗算命令を用いて高速フーリエ変換を実行するための方法及びシステム
US7836116B1 (en) Fast fourier transforms and related transforms using cooperative thread arrays
US7640284B1 (en) Bit reversal methods for a parallel processor
US7424594B2 (en) Efficient complex multiplication and fast fourier transform (FFT) implementation on the ManArray architecture
JP5689282B2 (ja) 行列をsimdマルチコア・プロセッサ・アーキテクチャ上で転置するためのコンピュータ実装方法、コンピュータ可読ストレージ媒体及びシステム
US8255446B2 (en) Apparatus and method for performing rearrangement and arithmetic operations on data
US20070106718A1 (en) Fast fourier transform on a single-instruction-stream, multiple-data-stream processor
EP0983557B1 (en) Data processing device for executing in parallel additions and subtractions on packed data
GB2444811A (en) Apparatus and method for performing reordering and arithmetic operations on data in a SIMD processor.
Slade The fast fourier transform in hardware: A tutorial based on an FPGA implementation
Ploskas et al. GPU accelerated pivoting rules for the simplex algorithm
US7437395B2 (en) FFT operating apparatus of programmable processors and operation method thereof
Jiang et al. Twiddle-factor-based FFT algorithm with reduced memory access
Kratz et al. A microprogrammed approach to signal processing
JP2006313518A (ja) 多次元高速フーリエ変換
US7774397B2 (en) FFT/IFFT processor
EP1426872A2 (en) Linear scalable FFT/IFFT computation in a multi-processor system
EP1447752A2 (en) Method and system for multi-processor FFT/IFFT with minimum inter-processor data communication
Emeliyanenko A complete modular resultant algorithm targeted for realization on graphics hardware
Zheng Encrypted cloud using GPUs
JP3709291B2 (ja) 高速複素フーリエ変換方法及び装置
JP7343473B2 (ja) レジスタベースの複素数処理
JP2000231552A (ja) 高速フーリエ変換方法
Yu et al. Efficient Utilization of Vector Registers to Improve FFT Performance on SIMD Microprocessors
Aziz et al. High performance 2D parallel block-filtering system for real-time imaging applications using the Sharc ADSP21060