JP2580501B2 - 並列デ−タ処理装置 - Google Patents
並列デ−タ処理装置Info
- Publication number
- JP2580501B2 JP2580501B2 JP61137313A JP13731386A JP2580501B2 JP 2580501 B2 JP2580501 B2 JP 2580501B2 JP 61137313 A JP61137313 A JP 61137313A JP 13731386 A JP13731386 A JP 13731386A JP 2580501 B2 JP2580501 B2 JP 2580501B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- column
- row
- butterfly operation
- elements
- 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.)
- Expired - Lifetime
Links
Landscapes
- Multi Processors (AREA)
- Complex Calculations (AREA)
Description
【発明の詳細な説明】 〔産業上の利用分野〕 この発明は、高速フーリエ変換を高速に実行するため
に、該変換のバタフライ演算を並列に実行する並列デー
タ処理装置に関するものである。
に、該変換のバタフライ演算を並列に実行する並列デー
タ処理装置に関するものである。
まず、この発明における高速フーリエ変換について簡
単に説明する。高速フーリエ変換とは、次に示す離散的
フーリエ変換式 を高速に求めるもので、サンプル値f(k)と回転子W
nkの乗算および、そのΣに対する加減算回数を大幅に減
少させたものである。
単に説明する。高速フーリエ変換とは、次に示す離散的
フーリエ変換式 を高速に求めるもので、サンプル値f(k)と回転子W
nkの乗算および、そのΣに対する加減算回数を大幅に減
少させたものである。
この高速フーリエ変換のアルゴリズムは種々提案され
ているが、本発明においては以後に示すインプレイス型
と呼ばれるものを使用する。ここでは便宜上、高速フー
リエ変換の基本となるバタフライ演算の記述を第3図の
ように行う。この第3図の記述方法により を表わすものとする。この記述方法を使用すると、本発
明で用いるアルゴリズムは第4図に示す様になる。ただ
し、この図は、16ポイントの高速フーリエ変換を表わ
す。このアルゴリズムの特徴は、入力されたサンプルデ
ータが順に2のべき乗ポイントだけ離れたデータとバタ
フライ演算を行い、その結果を元の2つのデータと同じ
位置に格納する点である。また、高速フーリエ変換後の
データをf(i)とすると、これらはiを後に述べるビ
ットリバース処理を施した順に並ぶ。以後では、説明を
簡単にするために、16ポイントの高速フーリエ変換につ
いて説明するが、ポイント数が増加しても(ただしポイ
ント数は2のべき乗)同様に扱える。また、説明上、第
4図に示す様に各バタフライ演算を左から順に、第1ス
テージ14,第2ステージ15,第3ステージ16,第4ステー
ジ17と名付ける。ちなみに、nポイント(nは2のべき
乗)の高速フーリエ変換は、第1og2nステージまで存在
する。また、nポイントの高速フーリエ変換において、
第1ステージでは、各データがn/2ポイント離れたデー
タとの間でバタフライ演算を行う。第2ステージは、デ
ータを連続したn/2ポイントずつの2つのブロックに分
離し、各ブロック内でn/4ポイント離れたデータとの間
でバタフライ演算を行う。以下同様であり、第1ステー
ジでは、データを連続したn/2i-1ポイントずつの2i-1個
のブロックに分離し、各ブロック内でn/2iポイント離れ
たデータとの間でバタフライ演算を行うことになる。
ているが、本発明においては以後に示すインプレイス型
と呼ばれるものを使用する。ここでは便宜上、高速フー
リエ変換の基本となるバタフライ演算の記述を第3図の
ように行う。この第3図の記述方法により を表わすものとする。この記述方法を使用すると、本発
明で用いるアルゴリズムは第4図に示す様になる。ただ
し、この図は、16ポイントの高速フーリエ変換を表わ
す。このアルゴリズムの特徴は、入力されたサンプルデ
ータが順に2のべき乗ポイントだけ離れたデータとバタ
フライ演算を行い、その結果を元の2つのデータと同じ
位置に格納する点である。また、高速フーリエ変換後の
データをf(i)とすると、これらはiを後に述べるビ
ットリバース処理を施した順に並ぶ。以後では、説明を
簡単にするために、16ポイントの高速フーリエ変換につ
いて説明するが、ポイント数が増加しても(ただしポイ
ント数は2のべき乗)同様に扱える。また、説明上、第
4図に示す様に各バタフライ演算を左から順に、第1ス
テージ14,第2ステージ15,第3ステージ16,第4ステー
ジ17と名付ける。ちなみに、nポイント(nは2のべき
乗)の高速フーリエ変換は、第1og2nステージまで存在
する。また、nポイントの高速フーリエ変換において、
第1ステージでは、各データがn/2ポイント離れたデー
タとの間でバタフライ演算を行う。第2ステージは、デ
ータを連続したn/2ポイントずつの2つのブロックに分
離し、各ブロック内でn/4ポイント離れたデータとの間
でバタフライ演算を行う。以下同様であり、第1ステー
ジでは、データを連続したn/2i-1ポイントずつの2i-1個
のブロックに分離し、各ブロック内でn/2iポイント離れ
たデータとの間でバタフライ演算を行うことになる。
さて、従来は、この高速フーリエ変換を凡用計算機を
用いて逐次的に行うか、第28図に示す加算器47,減算器4
8,乗算器49を組み合わせたバタフライ演算器46を繰り返
して使用するか、複数個のバタフライ演算器46を使用し
て実現していた。
用いて逐次的に行うか、第28図に示す加算器47,減算器4
8,乗算器49を組み合わせたバタフライ演算器46を繰り返
して使用するか、複数個のバタフライ演算器46を使用し
て実現していた。
次に動作について説明する。ここでは、第4図の16ポ
イントの高速フーリエ変換を行う場合を考える。1つの
バタフライ演算器46のみを使用する場合には、まず第1
ステージ14の個々の8組のペア(f(0)とf(8),f
(1)とf(9)など)とその対応する回転子WKを順に
バタフライ演算器46に入力する。以下、各演算結果を使
用して第2,3,4ステージのバタフライ演算を各々順に行
う。各ステージごとに8回のバタフライ演算を行えばよ
いため、全体で32回のバタフライ演算を行うことにより
処理は終了する。Nポイントの高速フーリエ変換の場合
には、 (但しNは2のべき乗)回のバタフライ演算を行えばよ
いことになる。ただし、バタフライ演算器46へ入力する
ためのデータをメモリから読み出したり、演算結果をメ
モリに書き込むためのアドレス計算は毎回必要となる。
イントの高速フーリエ変換を行う場合を考える。1つの
バタフライ演算器46のみを使用する場合には、まず第1
ステージ14の個々の8組のペア(f(0)とf(8),f
(1)とf(9)など)とその対応する回転子WKを順に
バタフライ演算器46に入力する。以下、各演算結果を使
用して第2,3,4ステージのバタフライ演算を各々順に行
う。各ステージごとに8回のバタフライ演算を行えばよ
いため、全体で32回のバタフライ演算を行うことにより
処理は終了する。Nポイントの高速フーリエ変換の場合
には、 (但しNは2のべき乗)回のバタフライ演算を行えばよ
いことになる。ただし、バタフライ演算器46へ入力する
ためのデータをメモリから読み出したり、演算結果をメ
モリに書き込むためのアドレス計算は毎回必要となる。
更に高速化を考えた場合には、同一ステージ内のバタ
フライ演算を並列して行う方法があげられる。例えば、
第4図においては、8個のバタフライ演算器46を用意す
る。8個のバタフライ演算器46を1回使用することによ
り各ステージの処理は一度に終了する。そのため、全体
としてステージの数だけバタフライ演算器46を使用する
ことにより、高速のフーリエ変換が行える。ちなみに、
Nポイントの高速フーリエ変換の場合には、N/2個のバ
タフライ演算器46を用意して1og2N回(但しNは2のべ
き乗)使用することにより、処理が終了する。ただし、
先に示した各データに対するアドレス計算に加えて、全
データを毎回メモリから読み出したり、メモリに書き込
む処理は必要となる。
フライ演算を並列して行う方法があげられる。例えば、
第4図においては、8個のバタフライ演算器46を用意す
る。8個のバタフライ演算器46を1回使用することによ
り各ステージの処理は一度に終了する。そのため、全体
としてステージの数だけバタフライ演算器46を使用する
ことにより、高速のフーリエ変換が行える。ちなみに、
Nポイントの高速フーリエ変換の場合には、N/2個のバ
タフライ演算器46を用意して1og2N回(但しNは2のべ
き乗)使用することにより、処理が終了する。ただし、
先に示した各データに対するアドレス計算に加えて、全
データを毎回メモリから読み出したり、メモリに書き込
む処理は必要となる。
以上述べた、複数個のバタフライ演算器46を使用する
方式では、実際的には次に示す点から高速な処理が可能
ではない。
方式では、実際的には次に示す点から高速な処理が可能
ではない。
1)処理対象であるサンプル値f(k)の数が非常に多
い場合、最も高速に高速フーリエ変換を行うには多数の
バタフライ演算器46が必要となり、実現的ではない。そ
のため、実際には小数のバタフライを演算器46を繰り返
し使用することになる。
い場合、最も高速に高速フーリエ変換を行うには多数の
バタフライ演算器46が必要となり、実現的ではない。そ
のため、実際には小数のバタフライを演算器46を繰り返
し使用することになる。
2)各ステージでバタフライ演算器46の数だけ並列に実
行できるが、各バタフライ演算器46に入力するデータお
よび出力するデータは通常メモリに格納されており、各
データごとにアドレス計算が必要となる。このアドレス
計算およびメモリからのロード,ストアは逐次的に行わ
ざるを得ず、演算器の並列性が生かしきれない。
行できるが、各バタフライ演算器46に入力するデータお
よび出力するデータは通常メモリに格納されており、各
データごとにアドレス計算が必要となる。このアドレス
計算およびメモリからのロード,ストアは逐次的に行わ
ざるを得ず、演算器の並列性が生かしきれない。
従来のバタフライ演算器46を用いた方式では、高速フ
ーリエ変換の処理アルゴリズムによらず上記の欠点が存
在するため、必ずしも高速な処理が望めないという問題
点があった。
ーリエ変換の処理アルゴリズムによらず上記の欠点が存
在するため、必ずしも高速な処理が望めないという問題
点があった。
この発明は上記のような問題点を解消するためになさ
れたもので、高速に高速フーリエ変換を実行することが
できる並列データ処理装置を得ることを目的とする。
れたもので、高速に高速フーリエ変換を実行することが
できる並列データ処理装置を得ることを目的とする。
この発明に係る並列データ処理装置は、加減算および
乗算機能を有する演算手段と記憶手段と与えられた命令
の実行を制御する実行制御手段とを夫々有するN×N
(Nは2のべき乗)の基本演算要素が、互いに隣接する
要素間でデータを転送するためのデータ転送ラインと外
部からのデータを要素間を順次経由して入力するととも
に外部にデータを出力するためのデータ入出力ラインと
要素の行単位あるいは列単位に同一の値を外部から与え
るためのブロードキャストラインとにより2次元格子状
に相互接続された演算アレイと、上記2次元格子状に接
続された各基本演算要素内に1つの処理対象データある
いは複数個の処理対象データを対応させ、これらのデー
タに対し行単位および列単位に順に2のべき乗だけ離れ
た要素間でデータを転送するとともに各々の要素内での
加減算,乗算を制御する制御手段とを備えたものであ
る。
乗算機能を有する演算手段と記憶手段と与えられた命令
の実行を制御する実行制御手段とを夫々有するN×N
(Nは2のべき乗)の基本演算要素が、互いに隣接する
要素間でデータを転送するためのデータ転送ラインと外
部からのデータを要素間を順次経由して入力するととも
に外部にデータを出力するためのデータ入出力ラインと
要素の行単位あるいは列単位に同一の値を外部から与え
るためのブロードキャストラインとにより2次元格子状
に相互接続された演算アレイと、上記2次元格子状に接
続された各基本演算要素内に1つの処理対象データある
いは複数個の処理対象データを対応させ、これらのデー
タに対し行単位および列単位に順に2のべき乗だけ離れ
た要素間でデータを転送するとともに各々の要素内での
加減算,乗算を制御する制御手段とを備えたものであ
る。
また、この発明の別発明は、上記演算アレイと、上記
2次元格子状に接続された各基本演算要素内に1つの処
理対象データあるいは複数個の処理対象データを対応さ
せ、これらのデータに対し行単位および列単位に順に2
のべき乗だけ離れた要素間でデータを転送するとともに
各々の要素内での加減算,乗算を制御し、かつ上記演算
の終了後に各要素内のデータを所定の行単位および列単
位に入れ換え処理する制御手段とを備えたものである。
2次元格子状に接続された各基本演算要素内に1つの処
理対象データあるいは複数個の処理対象データを対応さ
せ、これらのデータに対し行単位および列単位に順に2
のべき乗だけ離れた要素間でデータを転送するとともに
各々の要素内での加減算,乗算を制御し、かつ上記演算
の終了後に各要素内のデータを所定の行単位および列単
位に入れ換え処理する制御手段とを備えたものである。
この発明における並列データ処理装置では、高速フー
リエ変換におけるバタフライ演算で必要となるデータ
が、基本演算要素間で並列に転送され、各要素において
バタフライ演算が同時に並列して行えるため、従来のメ
モリアドレス計算,メモリ競合の問題を解消でき、高速
に高速フーリエ変換が実行できる。
リエ変換におけるバタフライ演算で必要となるデータ
が、基本演算要素間で並列に転送され、各要素において
バタフライ演算が同時に並列して行えるため、従来のメ
モリアドレス計算,メモリ競合の問題を解消でき、高速
に高速フーリエ変換が実行できる。
また、この発明の別発明においては、上記演算後、所
定の行単位および列単位に入れ換え処理を繰り返すこと
により、高速フーリエ変換のビットリバース処理を実現
することができるので、更に、高速に高速フーリエ変換
が実行できる。
定の行単位および列単位に入れ換え処理を繰り返すこと
により、高速フーリエ変換のビットリバース処理を実現
することができるので、更に、高速に高速フーリエ変換
が実行できる。
以下、この発明の一実施例を図について説明する。第
1図において、1はこの発明における並列データ処理装
置を構成する基本演算要素(以下PEと記す)、2はPE1
内のデータを格納する記憶手段としてメモリ、3は各PE
1において加算,減算,乗算を実行する演算手段として
のALU、4は各PE1内での演算命令等を修飾するための実
行制御手段としての制御フラグ、5,6,7,8は各々北,
東,西,南方向(図中上,右,左,下方向)に存在する
PE1とのデータ転送に使用するデータ転送ライン、9,10
は各々、後述する演算アレイの行単位,列単位に、外部
より送られ同一の値を各PE1に転送するためのブロード
キャストライン、11,12は外部から各PE1を順に経由して
データの入力を行う時、あるいは外部へ同様にしてデー
タを出力する時に使用するデータ入出力ラインである。
1図において、1はこの発明における並列データ処理装
置を構成する基本演算要素(以下PEと記す)、2はPE1
内のデータを格納する記憶手段としてメモリ、3は各PE
1において加算,減算,乗算を実行する演算手段として
のALU、4は各PE1内での演算命令等を修飾するための実
行制御手段としての制御フラグ、5,6,7,8は各々北,
東,西,南方向(図中上,右,左,下方向)に存在する
PE1とのデータ転送に使用するデータ転送ライン、9,10
は各々、後述する演算アレイの行単位,列単位に、外部
より送られ同一の値を各PE1に転送するためのブロード
キャストライン、11,12は外部から各PE1を順に経由して
データの入力を行う時、あるいは外部へ同様にしてデー
タを出力する時に使用するデータ入出力ラインである。
第2図は、本発明の一実施例であり、13aは第1図に
示したPE1を上記各ラインを介して2次元格子状に4×
4個すなわちN×N(Nは2のべき乗)個組み合わせた
場合の演算アレイ、13bは上記演算アレイ13aにおける各
PE1間のデータの転送および各PE1内での演算の実行を制
御するマイクロプロセッサ等からなる制御手段である。
示したPE1を上記各ラインを介して2次元格子状に4×
4個すなわちN×N(Nは2のべき乗)個組み合わせた
場合の演算アレイ、13bは上記演算アレイ13aにおける各
PE1間のデータの転送および各PE1内での演算の実行を制
御するマイクロプロセッサ等からなる制御手段である。
以下、本発明における実施例の作用、動作の詳細な説
明を行う。簡単のため、256ポイントに対する高速フー
リエ変換を、16×16個すなわちN×N(Nは2のべき
乗)個のPEから構成される並列データ処理装置により実
行する場合を例にとって説明する。
明を行う。簡単のため、256ポイントに対する高速フー
リエ変換を、16×16個すなわちN×N(Nは2のべき
乗)個のPEから構成される並列データ処理装置により実
行する場合を例にとって説明する。
なお、以下の説明のために使用する記号を定義する。
ここでは、 により表わされる高速フーリエ変換を扱う。f(i)が
入力データ,F(i)が出力データである。また、第5図
に16×16個のPEから構成される並列データ処理装置の表
記例18を示す。並列データ処理装置を構成するPEを各行
単位に、順に上から第0行,第1行,…,第15行と呼
び、各列単位に順に左から第0列,第1列,…,第15列
と呼ぶ。また、特定のPEを示す場合には、第i行第j列
のPEをPE(i,j)と呼ぶことにする。また第i−j行
(列)のPEという表現で第i行(列)から第j行(列)
までのPEを表わす。
入力データ,F(i)が出力データである。また、第5図
に16×16個のPEから構成される並列データ処理装置の表
記例18を示す。並列データ処理装置を構成するPEを各行
単位に、順に上から第0行,第1行,…,第15行と呼
び、各列単位に順に左から第0列,第1列,…,第15列
と呼ぶ。また、特定のPEを示す場合には、第i行第j列
のPEをPE(i,j)と呼ぶことにする。また第i−j行
(列)のPEという表現で第i行(列)から第j行(列)
までのPEを表わす。
まず並列データ処理装置へのデータ入力方法について
述べる。対象とするデータ数は256個であり、PEの数も2
56個であるため1PEに1個のデータを対応させる。具体
的には第6図19に示す様になる。すなわち、PE(0,0)
にf(0)を格納し、以下列方向に順に格納する。PE
(15,0)にf(15)が格納された後、第2列のPEに同様
に順に格納していく。以下同様であり、最後のf(25
5)はPE(15,15)に格納される。換言すると、PE(i,
j)に収められるデータはf(i+16j)である。逆に、
f(χ) (χ=〔χ7χ6χ5χ4χ3χ2χ
1χ0〕,〔 〕は2進数表現を表わす)はi=〔χ3
χ2χ1χ0〕,j=〔χ7χ6χ5χ4〕なるPE(i,
j),すなわち第i行第j列のPEに格納される。
述べる。対象とするデータ数は256個であり、PEの数も2
56個であるため1PEに1個のデータを対応させる。具体
的には第6図19に示す様になる。すなわち、PE(0,0)
にf(0)を格納し、以下列方向に順に格納する。PE
(15,0)にf(15)が格納された後、第2列のPEに同様
に順に格納していく。以下同様であり、最後のf(25
5)はPE(15,15)に格納される。換言すると、PE(i,
j)に収められるデータはf(i+16j)である。逆に、
f(χ) (χ=〔χ7χ6χ5χ4χ3χ2χ
1χ0〕,〔 〕は2進数表現を表わす)はi=〔χ3
χ2χ1χ0〕,j=〔χ7χ6χ5χ4〕なるPE(i,
j),すなわち第i行第j列のPEに格納される。
データの入力後、先に第4図の16ポイントの高速フー
リエ変換の列で示した様に各ステージごとにバタフライ
演算を行う。この第4図で示した様に、256ポイントの
高速フーリエ変換の第1ステージでは、各々128ポイン
ト離れたデータどうしのバタフライ演算を行えばよい。
リエ変換の列で示した様に各ステージごとにバタフライ
演算を行う。この第4図で示した様に、256ポイントの
高速フーリエ変換の第1ステージでは、各々128ポイン
ト離れたデータどうしのバタフライ演算を行えばよい。
今、第6図に示す様に各PEに入力されたデータで考え
る。すると、128ポイント離れた2つのデータは、各々
同一の行のPE内に存在し、かつ、その各々のPEはちょう
ど8PE分離れている。これはPE(i,j)内のデータがf
(i+16j)となる点からも明らかである。言い換えれ
ば、並列データ処理装置内の2次元データを第7列と第
8列の境目で左右に2分割し、その一方を片方の上に一
致する様にずらした時、各対応するデータがバタフライ
演算を行うデータのペアとなっている。そのため、第7
図(b)に示す様に、データ20を並列データ処理装置21
上で西方向(図では左方向)へ8PE分移動し、並列デー
タ処理装置21の第0−7列のPEがその移動されたデータ
を取り込むことにより、これらのPE内に対応するデータ
どうしが格納されることになる。(なお、左半分のPEだ
けがデータを取り込める操作は、第1図PE(1)内の制
御フラグ4の制御による。)ここで述べたデータの移動
の具体的な処理結果を示すと第8図22となる。
る。すると、128ポイント離れた2つのデータは、各々
同一の行のPE内に存在し、かつ、その各々のPEはちょう
ど8PE分離れている。これはPE(i,j)内のデータがf
(i+16j)となる点からも明らかである。言い換えれ
ば、並列データ処理装置内の2次元データを第7列と第
8列の境目で左右に2分割し、その一方を片方の上に一
致する様にずらした時、各対応するデータがバタフライ
演算を行うデータのペアとなっている。そのため、第7
図(b)に示す様に、データ20を並列データ処理装置21
上で西方向(図では左方向)へ8PE分移動し、並列デー
タ処理装置21の第0−7列のPEがその移動されたデータ
を取り込むことにより、これらのPE内に対応するデータ
どうしが格納されることになる。(なお、左半分のPEだ
けがデータを取り込める操作は、第1図PE(1)内の制
御フラグ4の制御による。)ここで述べたデータの移動
の具体的な処理結果を示すと第8図22となる。
第8図の結果を用いて、並列データ処理装置の第0〜
7列のPEだけでバタフライ演算を行えば第1ステージの
処理は終了する。ところが、これでは全PEの稼動率は1/
2となゐ、効率が悪い。そこで、次の様にする。
7列のPEだけでバタフライ演算を行えば第1ステージの
処理は終了する。ところが、これでは全PEの稼動率は1/
2となゐ、効率が悪い。そこで、次の様にする。
もともとバタフライ演算は2つの同一データの和と差
を求めるものであるため、この和を第0−7列のPEで、
差を残りの第8−15列のPEで同時に求めることにする。
そのため、まず、第8−15列のPEにも同一のデータを格
納する必要がある。第8−15列のPEには既にf(128)
〜f(255)のデータが入力されているため、今度は第
0−7例の各PE内のデータを第8−15列のPEに移動す
る。これを第7図(c)に示す。データ20を8PE分右方
向へシフトし、並列データ処理装置21の第8−15列のPE
だけが、制御プラグの制御のもとシフトされたデータを
取り込む。ここに述べたデータ移動の具体的な処理結果
を示すと第9図23となる。
を求めるものであるため、この和を第0−7列のPEで、
差を残りの第8−15列のPEで同時に求めることにする。
そのため、まず、第8−15列のPEにも同一のデータを格
納する必要がある。第8−15列のPEには既にf(128)
〜f(255)のデータが入力されているため、今度は第
0−7例の各PE内のデータを第8−15列のPEに移動す
る。これを第7図(c)に示す。データ20を8PE分右方
向へシフトし、並列データ処理装置21の第8−15列のPE
だけが、制御プラグの制御のもとシフトされたデータを
取り込む。ここに述べたデータ移動の具体的な処理結果
を示すと第9図23となる。
以上の様に、並列データ処理装置内でデータのシフト
を終えた後は、並列データ処理装置の第0−7列のすべ
てのPEで加算を、第8−15列のすべてのPEで減算を同時
に行う。PEにより行う演算を制御するのは各PE内の制御
フラグによる。すなわち、各PEの存在する位置により、
加算か減算かを決定し制御フラグで操作する。
を終えた後は、並列データ処理装置の第0−7列のすべ
てのPEで加算を、第8−15列のすべてのPEで減算を同時
に行う。PEにより行う演算を制御するのは各PE内の制御
フラグによる。すなわち、各PEの存在する位置により、
加算か減算かを決定し制御フラグで操作する。
加算および減算の処理が終了した後は、バタフライ演
算の項で示した様に、減算した値に回転子をかけ合わせ
る処理が必要である。減算した値は、第8−15列のPEに
格納されているため、これらのPEに対応する回転子を入
力し、積を求める。
算の項で示した様に、減算した値に回転子をかけ合わせ
る処理が必要である。減算した値は、第8−15列のPEに
格納されているため、これらのPEに対応する回転子を入
力し、積を求める。
結果のデータの格納先は、f(i)とf(i+128)
(0<i<127)のバタフライ演算では加算値がf
(i),減算かつ回転子との乗算値がf(i+128)の
位置であるが、上記の方法では加算をf(i)の位置の
PEで、減算かつ乗算をf(i+128)の位置のPEで行っ
ているため結果のデータを入れ換える必要はない。
(0<i<127)のバタフライ演算では加算値がf
(i),減算かつ回転子との乗算値がf(i+128)の
位置であるが、上記の方法では加算をf(i)の位置の
PEで、減算かつ乗算をf(i+128)の位置のPEで行っ
ているため結果のデータを入れ換える必要はない。
さて、以上で第1ステージに対する処理は終了した。
次に、第2ステージの処理に移るわけであるが、同様の
手法に基づいて行うことができる。
次に、第2ステージの処理に移るわけであるが、同様の
手法に基づいて行うことができる。
すなわち第2ステージでは、256ポイントのデータを
前半と後半の128ポイントずつのブロックに分け、各ブ
ロック内では64ポイント離れたデータどうしでバタフラ
イ演算を行えばよい。並列データ処理装置内で考える
と、第0−3列のPEと第4−7列のPE,第8−11列のRE
と第12−15列のPEどうしで対応するPEがバタフライ演算
を行うデータのペアを保持している。今、第1ステージ
の処理前のデータ配置を第10図(a)で示す様に表わ
す。すなわち、斜線を施した部分が存在するPEと白ぬき
の部分に存在するPEどうしでデータの交換を行い、斜線
部で加算を白ぬき部で減算および乗算を行った。同様の
記述を用いると、第2ステージは第10図の(b)に示す
ようになる。すなわち、並列データ処理装置を第0−7
列のPNと第8−15列のPEで夫々等分し、各ブロック内で
第1ステージと同様の処理を行えばよい。すなわち第0
−3列のPEと第4−7列のPE間でデータの交換を行い、
第0−3列のPEで加算,第4−7列のPEで減算および乗
算を行う。第8−11列のPEと第12−15列のPEとの間の処
理も同じである。
前半と後半の128ポイントずつのブロックに分け、各ブ
ロック内では64ポイント離れたデータどうしでバタフラ
イ演算を行えばよい。並列データ処理装置内で考える
と、第0−3列のPEと第4−7列のPE,第8−11列のRE
と第12−15列のPEどうしで対応するPEがバタフライ演算
を行うデータのペアを保持している。今、第1ステージ
の処理前のデータ配置を第10図(a)で示す様に表わ
す。すなわち、斜線を施した部分が存在するPEと白ぬき
の部分に存在するPEどうしでデータの交換を行い、斜線
部で加算を白ぬき部で減算および乗算を行った。同様の
記述を用いると、第2ステージは第10図の(b)に示す
ようになる。すなわち、並列データ処理装置を第0−7
列のPNと第8−15列のPEで夫々等分し、各ブロック内で
第1ステージと同様の処理を行えばよい。すなわち第0
−3列のPEと第4−7列のPE間でデータの交換を行い、
第0−3列のPEで加算,第4−7列のPEで減算および乗
算を行う。第8−11列のPEと第12−15列のPEとの間の処
理も同じである。
以下、第3ステージ,第4ステージでの処理も各々第
10図(c),(d)に示す様に並列データ処理装置内の
データを列方向に4分割,8分割し、各ブロック内で第1
ステージと同様の処理を施すことにより各ステージでの
バタフライ演算が行える。
10図(c),(d)に示す様に並列データ処理装置内の
データを列方向に4分割,8分割し、各ブロック内で第1
ステージと同様の処理を施すことにより各ステージでの
バタフライ演算が行える。
さて、第4ステージの場合は、各ブロックが2列のPE
から成り立っており、この2列のPE内に存在するデータ
間でバタフライ演算が行われる。この時の2つのデータ
は16ポイント離れている。
から成り立っており、この2列のPE内に存在するデータ
間でバタフライ演算が行われる。この時の2つのデータ
は16ポイント離れている。
この次の第5ステージを考えた場合、これ以上列単位
のブロック分割は行えない。バタフライ演算を行う2つ
のデータは8ポイント離れていることになる。すなわ
ち、第6図からもわかる様に、第5ステージ以降のバタ
フライ演算を考えた場合、対応するデータどうしは、今
度は行方向に2分割,4分割して対応していく。例えば第
5ステージの対応を先の第10図の要領で表わせば第11図
(a)となる。
のブロック分割は行えない。バタフライ演算を行う2つ
のデータは8ポイント離れていることになる。すなわ
ち、第6図からもわかる様に、第5ステージ以降のバタ
フライ演算を考えた場合、対応するデータどうしは、今
度は行方向に2分割,4分割して対応していく。例えば第
5ステージの対応を先の第10図の要領で表わせば第11図
(a)となる。
すなわち、第7図と同様に、第12図で示す様にデータ
24を並列データ処理装置25上で北方向(図中上方向)へ
転送し、第0−7行のPEでデータを取り込み、次にデー
タ24を南方向(図中下方向)へ転送し、第8−15行のPE
でデータを取り込むことによりバタフライ演算を行うべ
きデータが各PEにそろえられる。今、第4ステージの処
理が終了した各データをf′(i)(0<i<255)で
表わすと、第12図(a)の処理後の各PE内データは第13
図26、第12図(b)の処理後の各PE内のデータは、第14
図27となる。この後、第0−7行のPEで加算を,第8−
15行のPEで減算および乗算を行うことにより第5ステー
ジの処理は終了する。
24を並列データ処理装置25上で北方向(図中上方向)へ
転送し、第0−7行のPEでデータを取り込み、次にデー
タ24を南方向(図中下方向)へ転送し、第8−15行のPE
でデータを取り込むことによりバタフライ演算を行うべ
きデータが各PEにそろえられる。今、第4ステージの処
理が終了した各データをf′(i)(0<i<255)で
表わすと、第12図(a)の処理後の各PE内データは第13
図26、第12図(b)の処理後の各PE内のデータは、第14
図27となる。この後、第0−7行のPEで加算を,第8−
15行のPEで減算および乗算を行うことにより第5ステー
ジの処理は終了する。
以下、第6ステージ,第7ステージ,第8ステージは
各々第2ステージ,第3ステージ,第4ステージの列方
向に行っていた処理を行方向に変更しただけで、まった
く同様の処理を行えばよい。これらを第10図(b),
(c),(d)と同じく、各々、第11図(b),
(c),(d)に示す。最後の第8ステージ,すなわち
第11図(d)は1ポイントだけ離れたデータどうしのバ
タフライ演算であり、この処理により全バタフライ演算
は終了する。
各々第2ステージ,第3ステージ,第4ステージの列方
向に行っていた処理を行方向に変更しただけで、まった
く同様の処理を行えばよい。これらを第10図(b),
(c),(d)と同じく、各々、第11図(b),
(c),(d)に示す。最後の第8ステージ,すなわち
第11図(d)は1ポイントだけ離れたデータどうしのバ
タフライ演算であり、この処理により全バタフライ演算
は終了する。
さて、これまでに示した第1ステージ〜第8ステージ
の処理により、高速フーリエ変換におけるバタフライ演
算は終了するが、第4図の16ポイントの高速フーリエ変
換の例で示した様に、得られる値F(i)はiに対して
昇べきの順ではなく、iを後に述べるビットリバース処
理した順に並んでいる。そのため、次には、この順序を
並べ変える操作が必要となる。この処理は、外部のメモ
リ上で行うこともできるが、データの数だけの処理時間
がかかるため、この並列データ処理装置上で行うことに
する。
の処理により、高速フーリエ変換におけるバタフライ演
算は終了するが、第4図の16ポイントの高速フーリエ変
換の例で示した様に、得られる値F(i)はiに対して
昇べきの順ではなく、iを後に述べるビットリバース処
理した順に並んでいる。そのため、次には、この順序を
並べ変える操作が必要となる。この処理は、外部のメモ
リ上で行うこともできるが、データの数だけの処理時間
がかかるため、この並列データ処理装置上で行うことに
する。
まずは、このビットリバース処理を第4図と同様に16
ポイントのビットリバース処理を用いて説明する。
ポイントのビットリバース処理を用いて説明する。
第15図を用いる。今、f(0)からf(15)までの16
個の値が与えられたとする。これらの値の各インデック
ス値0〜15を2進数で表わす。これを〔a3a2a1a0〕(以
後、文章中,図中において〔χ〕はχが2進数表現であ
ることを示す〕とすると、この各ビットを〔a0a1a2a3〕
と、前後で全体を入れ換えることをビットリバースと呼
ぶ。一般には、〔bnbn-1…b1b0〕を〔b0b1…bn-1bn〕と
変換する処理を示す。
個の値が与えられたとする。これらの値の各インデック
ス値0〜15を2進数で表わす。これを〔a3a2a1a0〕(以
後、文章中,図中において〔χ〕はχが2進数表現であ
ることを示す〕とすると、この各ビットを〔a0a1a2a3〕
と、前後で全体を入れ換えることをビットリバースと呼
ぶ。一般には、〔bnbn-1…b1b0〕を〔b0b1…bn-1bn〕と
変換する処理を示す。
ビットリバース処理とは、先に述べた16ポイントの例
ではf(0)からf(15)の値を各インデックス値のビ
ットリバースした値をインデックスとするfの値と入れ
換えることである。f(0)からf(15)に対してビッ
トリバース処理を施した例を第15図28に示す。
ではf(0)からf(15)の値を各インデックス値のビ
ットリバースした値をインデックスとするfの値と入れ
換えることである。f(0)からf(15)に対してビッ
トリバース処理を施した例を第15図28に示す。
ある値にビットリバース処理したものにもう1度ビッ
トリバース処理を行うと、もとの値に戻る。すなわち、
第15図においてビットリバース処理が施された値をもと
として、もう1度ビットリバース処理を行うともとのf
(0)〜f(15)に戻る。すなわち、先に示したバタフ
ライ演算の結果、各PE内にはデータがビットリバース処
理を施した順に格納されているため、ここにビットリバ
ース処理を施すことにより、もとの昇順に戻ることにな
る。
トリバース処理を行うと、もとの値に戻る。すなわち、
第15図においてビットリバース処理が施された値をもと
として、もう1度ビットリバース処理を行うともとのf
(0)〜f(15)に戻る。すなわち、先に示したバタフ
ライ演算の結果、各PE内にはデータがビットリバース処
理を施した順に格納されているため、ここにビットリバ
ース処理を施すことにより、もとの昇順に戻ることにな
る。
第16図29にバタフライ演算後の各PE内に存在するf
(j)の値を示す。各々、最初のサンプルデータf
(i)をiについてビットリバースした値jをインデッ
クスとした値となっている。
(j)の値を示す。各々、最初のサンプルデータf
(i)をiについてビットリバースした値jをインデッ
クスとした値となっている。
さて、第16図29バタフライ演算の結果を昇順に並べ直
すわけであるが、ここでは、もとの第6図19に示す列方
向に昇順ではなく、第17図30に示す行方向に昇順となる
様に並べ直すものとする。すなわち、第6図19ではPE
(i,j)にf(i+16j)が格納されていたが、出力時に
は、第17図30に示す様にF(16i+j)が格納されてい
ればよい。換言すると、入力時の第6図19では、f
(χ) (χ=〔χ7χ6χ5χ4χ3χ2χ
1χ0〕)はi=〔χ3χ2χ1χ0〕,j=〔χ7χ6
χ5χ4〕なるPE(i,j),すなわち第i行第j列のPE
に格納されたが、出力時の第17図30では、F(χ)
(χ=〔χ7χ6χ5χ4χ3χ2χ1χ0〕)はPE
(i,j)に格納すればよいことになる(行列で言えば入
力データのインデックス値の転置行列したものが出力デ
ータのインデックス値となる)。
すわけであるが、ここでは、もとの第6図19に示す列方
向に昇順ではなく、第17図30に示す行方向に昇順となる
様に並べ直すものとする。すなわち、第6図19ではPE
(i,j)にf(i+16j)が格納されていたが、出力時に
は、第17図30に示す様にF(16i+j)が格納されてい
ればよい。換言すると、入力時の第6図19では、f
(χ) (χ=〔χ7χ6χ5χ4χ3χ2χ
1χ0〕)はi=〔χ3χ2χ1χ0〕,j=〔χ7χ6
χ5χ4〕なるPE(i,j),すなわち第i行第j列のPE
に格納されたが、出力時の第17図30では、F(χ)
(χ=〔χ7χ6χ5χ4χ3χ2χ1χ0〕)はPE
(i,j)に格納すればよいことになる(行列で言えば入
力データのインデックス値の転置行列したものが出力デ
ータのインデックス値となる)。
次に、このビットリバース処理の説明を行う。第18図
を使用する。最初に、各PEは第6図19に示した列方向の
順にデータを格納している。この後、バタフライ演算に
よるビットリバース処理のためデータがどのように移動
するかを考察する。インデックスが〔a7a6a5a4a3a2a
1a0〕であるポイントAに着目する。1PEに1つのデータ
が格納され、PEが縦に16個、横に16個ずつ存在する並列
データ処理装置のため、ポイントAが〔a7a6a5a4a3a2a1
a0〕で表わされるならば、Aを含む1行のPE32には、そ
のインデックスの2進数表示による下位4ビットが〔a2
a1a0〕であるデータが格納されている。言い換えると、
“x"を0か1の値をとる任意の値として、Aを含む1行
のPE32には、そのインデックスが〔xxxxa3a2a1a0〕であ
る値が格納されている。この1行のラインの値のビット
リバース処理を施すと〔a0a1a2a3xxxx〕となり、第18図
33に示すライン33になる。つまり、1行のラインはビッ
トリバース処理により1例のラインに変換される。さ
て、先に、そのインデックスが、〔χ7χ6χ5χ4χ
3χ2χ1χ0〕である値は、出力時には、i=〔χ7
χ6χ5χ4〕,j=〔χ2χ3χ4χ0〕なるPE(i,
j)に格納すればよかった。すると、Aを含む1行のPE3
2はそのインデックスが〔xxxxa3a2a1a0〕のため、最終
的にはj=〔a3a2a1a0〕なるPE(i,j),すなわち第〔a
3a2a1a0〕列のPE34に格納されればよい。
を使用する。最初に、各PEは第6図19に示した列方向の
順にデータを格納している。この後、バタフライ演算に
よるビットリバース処理のためデータがどのように移動
するかを考察する。インデックスが〔a7a6a5a4a3a2a
1a0〕であるポイントAに着目する。1PEに1つのデータ
が格納され、PEが縦に16個、横に16個ずつ存在する並列
データ処理装置のため、ポイントAが〔a7a6a5a4a3a2a1
a0〕で表わされるならば、Aを含む1行のPE32には、そ
のインデックスの2進数表示による下位4ビットが〔a2
a1a0〕であるデータが格納されている。言い換えると、
“x"を0か1の値をとる任意の値として、Aを含む1行
のPE32には、そのインデックスが〔xxxxa3a2a1a0〕であ
る値が格納されている。この1行のラインの値のビット
リバース処理を施すと〔a0a1a2a3xxxx〕となり、第18図
33に示すライン33になる。つまり、1行のラインはビッ
トリバース処理により1例のラインに変換される。さ
て、先に、そのインデックスが、〔χ7χ6χ5χ4χ
3χ2χ1χ0〕である値は、出力時には、i=〔χ7
χ6χ5χ4〕,j=〔χ2χ3χ4χ0〕なるPE(i,
j)に格納すればよかった。すると、Aを含む1行のPE3
2はそのインデックスが〔xxxxa3a2a1a0〕のため、最終
的にはj=〔a3a2a1a0〕なるPE(i,j),すなわち第〔a
3a2a1a0〕列のPE34に格納されればよい。
上記のビットリバース処理ではAを含む1行のPE32は
〔a0a1a2a3xxxx〕,すなわち、第〔a0a1a2a3〕列のPE33
に移された。よって、第〔a0a1a2a3〕列のPE33を第〔a3
a2a1a0〕列のPEに移動する処理が必要となる。
〔a0a1a2a3xxxx〕,すなわち、第〔a0a1a2a3〕列のPE33
に移された。よって、第〔a0a1a2a3〕列のPE33を第〔a3
a2a1a0〕列のPEに移動する処理が必要となる。
ところで、第〔a3a2a1a0〕列のPEの値も同じ理由から
第〔a0a1a2a3〕のPEに移動することになる。
第〔a0a1a2a3〕のPEに移動することになる。
これらをまとめると、第〔a3a2a1a0〕列のPEと第〔a0
a1a2a3〕列のPEを入れ換えればよいことになる。この列
の入れ換えは次の手順で行う。
a1a2a3〕列のPEを入れ換えればよいことになる。この列
の入れ換えは次の手順で行う。
第〔a3a2a1a0〕列のPEと第〔a0a2a1a3〕列のPEを入れ
換える。
換える。
第〔a0a2a1a3〕列のPEと第〔a0a1a2a3〕列のPEを入れ
換える。
換える。
すなわち、まず最上位ビットと最下位ビットを交換し
た列との入れ換えを行い、次に最上位から2ビット目と
最下位から2ビット目を交換した列との入れ換えを行
う。もし、よりビット数が長い場合には同様の処理を中
央のビットまで行う。
た列との入れ換えを行い、次に最上位から2ビット目と
最下位から2ビット目を交換した列との入れ換えを行
う。もし、よりビット数が長い場合には同様の処理を中
央のビットまで行う。
さて、の処理の具体的手法を説明する。〔a3a2a
1a0〕と〔a0a2a1a3〕は、そのa0とa3の値により、第19
図に示す様になる。つまり、a0=a3=0,1の時は同じ値
を示すので入れ換えの必要はない。a0=0,a3=1(a0=
1,a3=0)の場合は、各々の列が7の差を持つので、7P
E列分離れたPEを入れ換えることになる。具体的な〔a3a
2a1a0〕の値で示すと第20図となる。
1a0〕と〔a0a2a1a3〕は、そのa0とa3の値により、第19
図に示す様になる。つまり、a0=a3=0,1の時は同じ値
を示すので入れ換えの必要はない。a0=0,a3=1(a0=
1,a3=0)の場合は、各々の列が7の差を持つので、7P
E列分離れたPEを入れ換えることになる。具体的な〔a3a
2a1a0〕の値で示すと第20図となる。
この処理は、並列データ処理装置上で容易に実現でき
る。すなわち、第21図(b)に示す様にデータ35を並列
データ処理装置上36で、7PE分右方向へシフトし該当す
る各PE(第8列,第10列,第12列,第14列)がそのデー
タをとりこむ。次に逆方向へ7PE分データ35をシフト
し、該当する各PE(第1列,第3列,第5列,第7列)
でデータをとりこむ。これにより7PE列離れたPE間での
入れ換えが終了する。
る。すなわち、第21図(b)に示す様にデータ35を並列
データ処理装置上36で、7PE分右方向へシフトし該当す
る各PE(第8列,第10列,第12列,第14列)がそのデー
タをとりこむ。次に逆方向へ7PE分データ35をシフト
し、該当する各PE(第1列,第3列,第5列,第7列)
でデータをとりこむ。これにより7PE列離れたPE間での
入れ換えが終了する。
次にの処理について説明する。この処理もとまっ
たく同様に行える。すなわち第〔a0a2a1a3〕列と第〔a0
a1a2a3〕列の入れ換えは、と同じ考え方で、a1=0,a2
=1(a1=1,a2=0)の場合のみ2PE列分離れたPEと入
れ換えを行えばよい。第20図と同様に第22図に示す。並
列データ処理装置上での処理も、同様に、第21図
(d),(e)に示すように2PE列分ずらして行う。
たく同様に行える。すなわち第〔a0a2a1a3〕列と第〔a0
a1a2a3〕列の入れ換えは、と同じ考え方で、a1=0,a2
=1(a1=1,a2=0)の場合のみ2PE列分離れたPEと入
れ換えを行えばよい。第20図と同様に第22図に示す。並
列データ処理装置上での処理も、同様に、第21図
(d),(e)に示すように2PE列分ずらして行う。
以上示した処理を行うことにより、列方向のビットリ
バース処理は終了する。
バース処理は終了する。
ところで、この列方向のデータの入れ換えを行った
時、行方向について調べてみると、同一行の値は必ず同
一行に移動している。つまり、列方向の入れ換えの際に
は、行方向に関しては何な影響も及ぼしていない。これ
は、行方向の入れ換えについても同じことが言える。す
なわち、行方向のPE間のデータ入れ換えと列方向のPE間
のデータ入れ換えは、まったく独立に行うことができ
る。よって、列方向のビットリバース処理後、行方向の
ビットリバース処理を行えば全体のビットリバース処理
が行える。
時、行方向について調べてみると、同一行の値は必ず同
一行に移動している。つまり、列方向の入れ換えの際に
は、行方向に関しては何な影響も及ぼしていない。これ
は、行方向の入れ換えについても同じことが言える。す
なわち、行方向のPE間のデータ入れ換えと列方向のPE間
のデータ入れ換えは、まったく独立に行うことができ
る。よって、列方向のビットリバース処理後、行方向の
ビットリバース処理を行えば全体のビットリバース処理
が行える。
行方向のビットリバース処理については、行と列が異
なるだけで列方向のビットリバース処理とまったく同じ
である。そのため、第21図と同様に、第23図に示す様に
7PE行だけ該当する行のPE内データを入れ換え(第23図
(a)(b)、2PE行だけ該当する行のPE内データを入
れ換えればよい(第23図(c)(d))。
なるだけで列方向のビットリバース処理とまったく同じ
である。そのため、第21図と同様に、第23図に示す様に
7PE行だけ該当する行のPE内データを入れ換え(第23図
(a)(b)、2PE行だけ該当する行のPE内データを入
れ換えればよい(第23図(c)(d))。
本発明における各PE内のインデックス値の変遷を16×
16個から成るPEの例で示す。第24図に256個のデータを
入力した時点のインデックスを示す。
16個から成るPEの例で示す。第24図に256個のデータを
入力した時点のインデックスを示す。
このデータにバタフライ演算を施すことにより、第25
図に示すビットリバースのデータが各PEに格納される。
その後、ビットリバース処理を施すことにより第26図が
得られる。
図に示すビットリバースのデータが各PEに格納される。
その後、ビットリバース処理を施すことにより第26図が
得られる。
以上は、256ポイントのデータのビットリバース処理
を、16×16PEから成る並列データ処理装置で行う場合を
例示したが、これは一般のビットリバース処理について
もあてはまる。
を、16×16PEから成る並列データ処理装置で行う場合を
例示したが、これは一般のビットリバース処理について
もあてはまる。
今、22iポイントのデータのビットリバース処理を2i
×2iPEから成る並列データ処理装置で行う場合を示す。
先の例と同様に、任意の行のデータのインデックスを
〔xxx…xai-1ai-2…a0〕と表わすと、そのビットリバー
ス処理後は〔a0…ai-2ai-1x…xxx〕で表わされる列のデ
ータに移される。この列が格納されるべき列のインデッ
クスは〔ai-2ai-1…a0x…xxx〕である。また、逆に〔a
i-1ai-1…a0xx…xxx〕の例も〔a0…ai-2ai-1xx…x〕の
列に移動される。すなわち第〔ai-1ai-2…a0〕列と第
〔a0…ai-2ai-1〕列を入れ換える処理が要る。このため
には順に 第〔ai-1ai-2…a0〕列と第〔a0ai-2…a1ai-1〕列とを
入れ換える。
×2iPEから成る並列データ処理装置で行う場合を示す。
先の例と同様に、任意の行のデータのインデックスを
〔xxx…xai-1ai-2…a0〕と表わすと、そのビットリバー
ス処理後は〔a0…ai-2ai-1x…xxx〕で表わされる列のデ
ータに移される。この列が格納されるべき列のインデッ
クスは〔ai-2ai-1…a0x…xxx〕である。また、逆に〔a
i-1ai-1…a0xx…xxx〕の例も〔a0…ai-2ai-1xx…x〕の
列に移動される。すなわち第〔ai-1ai-2…a0〕列と第
〔a0…ai-2ai-1〕列を入れ換える処理が要る。このため
には順に 第〔ai-1ai-2…a0〕列と第〔a0ai-2…a1ai-1〕列とを
入れ換える。
第〔a0 ai-2…a1 ai-1〕列を第〔a0a1ai-3…a2ai-2a
i-1〕列とを入れ換える。
i-1〕列とを入れ換える。
以下同様 と、順に上位ビットと下位ビットを交換した列の入れ換
えを行えばよい。この時、最下位ビットを第0ビット目
として、最下位から第mビット目と第nビット目を交換
した列の入れ換えは、その第ビット目と第nビット目が
どちらも0あるいはどちらも1でない値の列について2m
−2n(m>n)だけ離れた列間で入れ換えを行えばよ
い。列方向について、i/2回(iが奇数の時は(i−
1)/2回)の列間の入れ換えにより列方向の処理は終了
する。行方向についてもまったく同様に扱える。すなわ
ち、これにより一般のデータに対しても本発明における
ビットリバース処理が使用できることがわかった。
えを行えばよい。この時、最下位ビットを第0ビット目
として、最下位から第mビット目と第nビット目を交換
した列の入れ換えは、その第ビット目と第nビット目が
どちらも0あるいはどちらも1でない値の列について2m
−2n(m>n)だけ離れた列間で入れ換えを行えばよ
い。列方向について、i/2回(iが奇数の時は(i−
1)/2回)の列間の入れ換えにより列方向の処理は終了
する。行方向についてもまったく同様に扱える。すなわ
ち、これにより一般のデータに対しても本発明における
ビットリバース処理が使用できることがわかった。
なお、上記実施例では、高速フーリエ変換を行うデー
タ数と並列データ処理装置のPE数が等しい場合を扱っ
た。しかしながら本発明における並列データ処理装置
は、必ずしもこの事を限定するものではない。つまり、
並列データ処理装置のPEよりも、処理対象であるデータ
数が少なくても,また多くても同様に扱うことができ
る。
タ数と並列データ処理装置のPE数が等しい場合を扱っ
た。しかしながら本発明における並列データ処理装置
は、必ずしもこの事を限定するものではない。つまり、
並列データ処理装置のPEよりも、処理対象であるデータ
数が少なくても,また多くても同様に扱うことができ
る。
並列データ処理装置のPE数よりもデータ数が少ない場
合には、本発明と同様に1PEに1データを対応させ、対
応しないPEは制御プラグにより演算を行わないことによ
り、本発明と同様に扱える。
合には、本発明と同様に1PEに1データを対応させ、対
応しないPEは制御プラグにより演算を行わないことによ
り、本発明と同様に扱える。
並列データ処理装置のPE数よりもデータ数が多い場合
には、次に示す様に1PEに複数のデータを対応させる。
例として、4×4個のPEで64ポイントデータを扱う場合
を考察する。
には、次に示す様に1PEに複数のデータを対応させる。
例として、4×4個のPEで64ポイントデータを扱う場合
を考察する。
第27図にこの例を示す。64ポイントをf(0)からf
(63)で表わす。16PEで64ポイントデータを扱うため、
1PEには4ポイントのデータを格納する。すなわち、全
体で4枚のデータプレーンが存在する。第27図(a)に
この4枚のプレーンを示す。第27図(b)は4枚のプレ
ーンを広げたものであり、この広げたプレーン上、すな
わち仮想的な8×8PE上で本発明と同様に64ポイントの
データを格納する。このプレーンの左上42が第1プレー
ン,左下43が第2プレーン,右上44が第3プレーン,右
下45が第4プレーンに対応する。PE単位に眺めると、例
えば左上端のRE(0,0)には、f(0),f(4),f(3
2),f(36)の4個のデータが格納される。処理は各プ
レーンごとに本発明における方式を使用することによ
り、同様に扱うことができる。
(63)で表わす。16PEで64ポイントデータを扱うため、
1PEには4ポイントのデータを格納する。すなわち、全
体で4枚のデータプレーンが存在する。第27図(a)に
この4枚のプレーンを示す。第27図(b)は4枚のプレ
ーンを広げたものであり、この広げたプレーン上、すな
わち仮想的な8×8PE上で本発明と同様に64ポイントの
データを格納する。このプレーンの左上42が第1プレー
ン,左下43が第2プレーン,右上44が第3プレーン,右
下45が第4プレーンに対応する。PE単位に眺めると、例
えば左上端のRE(0,0)には、f(0),f(4),f(3
2),f(36)の4個のデータが格納される。処理は各プ
レーンごとに本発明における方式を使用することによ
り、同様に扱うことができる。
以上のように、この発明によれば複数個の同一型の基
本演算要素(PE)を2次元格子状に相互に接続し、これ
らのPEを行単位あるいは列単位に同時に動作させ、並列
に転送,演算等のデータ処理を行うことにより、高速フ
ーリエ変換を高速に実行することができる並列のデータ
処理装置が得られるという効果がある。
本演算要素(PE)を2次元格子状に相互に接続し、これ
らのPEを行単位あるいは列単位に同時に動作させ、並列
に転送,演算等のデータ処理を行うことにより、高速フ
ーリエ変換を高速に実行することができる並列のデータ
処理装置が得られるという効果がある。
また、この発明の別発明によれば、上記2次元アレイ
を用いて高速フーリエ変換のビットリバース処理も合わ
せて行うようにしたので、該変換を更に高速に実行する
ことができる並列データ処理装置が得られるという効果
がある。
を用いて高速フーリエ変換のビットリバース処理も合わ
せて行うようにしたので、該変換を更に高速に実行する
ことができる並列データ処理装置が得られるという効果
がある。
第1図は、この発明の一実施例による基本演算要素(P
E)の内部構成図、第2図はこの発明の一実施例による
4×4PEから構成される並列データ処理装置例を示す
図、第3図は第4図の高速フーリエ変換例におけるバタ
フライ演算の記法図、第4図は16ポイント高速フーリエ
変換のアルゴリズム例を示す図、第5図は16×16PEから
成る並列データ処理装置を構成する各PEの表記法を示す
図、第6図は並列データ処理装置へのデータ入力方法を
示す図、第7図は並列データ処理装置上での列単位のデ
ータシフト法を示す図、第8図は第7図(b)の処理後
の具体的なデータ配置を示す図、第9図は第7図(c)
の処理後の具体的なデータを示す図、第10図は高速フー
リエ変換の第1,第2,第3,第4ステージ各々でのデータ分
割の方法を示す図、第11図は同じく第5,第6,第7,第8ス
テージ各々でのデータ分割の方法を示す図、第12図は並
列データ処理装置上での行単位データシフト法を示す
図、第13図は12図(a)の処理後の具体的なデータ配置
を示す図、第14図は第12図(b)の処理後の具体的なデ
ータ配置を示す図、第15図はビットリバースの例を示す
図表、第16図は並列データ処理装置上のバタフライ演算
後のデータ配置を示す図、第17図は並列ダータ処理装置
上の出力時のデータ配置を示す図、第18図は行方向デー
タのビットリバース処理法を示す図、第19図はデータイ
ンデックスの値(a0,a3)による処理の相違を示す図
表、第20図は第19図の具体例を示す図表、第21図は並列
データ処理装置上でのビットリバース処理における列単
位のデータシフト方法を示す図、第22図はデータインデ
ックスの値(a1,a2)によるデータの入れ換えの具体例
を示す図表、第23図は並列データ処理装置上でのビット
リバース処理における行単位のデータシフト方法を示す
図、第24図は16×16PEから成る並列データ処理装置上で
の256個のデータの入力例を各データのインデックス値
で示した図、第25図は第24図の例においてバタフライ演
算が終了した後のデータのインデックスを示した図、第
26図は第25図のデータのビットリバース処理後のデータ
の並びを示した図、第27図は並列データ処理装置のPE数
よりもデータの数が多い場合の各PEへのデータ割付け方
法を示す図、第28図は従来の高速フーリエ変換における
バタフライ演算を行うための演算器の構成図である。1
は基本演算要素(PE)、2はメモリ(記憶手段)、3は
ALU(演算手段)、4は制御フラグ(実行制御手段)、
5,6,7,8はデータ転送ライン、9,10はブロードキャスト
ライン、11はデータ入力ライン、12はデータ出力ライ
ン、13aは演算アレイ、13bは制御手段。 なお、図中、同一符号は同一、又は相当部分を示す。
E)の内部構成図、第2図はこの発明の一実施例による
4×4PEから構成される並列データ処理装置例を示す
図、第3図は第4図の高速フーリエ変換例におけるバタ
フライ演算の記法図、第4図は16ポイント高速フーリエ
変換のアルゴリズム例を示す図、第5図は16×16PEから
成る並列データ処理装置を構成する各PEの表記法を示す
図、第6図は並列データ処理装置へのデータ入力方法を
示す図、第7図は並列データ処理装置上での列単位のデ
ータシフト法を示す図、第8図は第7図(b)の処理後
の具体的なデータ配置を示す図、第9図は第7図(c)
の処理後の具体的なデータを示す図、第10図は高速フー
リエ変換の第1,第2,第3,第4ステージ各々でのデータ分
割の方法を示す図、第11図は同じく第5,第6,第7,第8ス
テージ各々でのデータ分割の方法を示す図、第12図は並
列データ処理装置上での行単位データシフト法を示す
図、第13図は12図(a)の処理後の具体的なデータ配置
を示す図、第14図は第12図(b)の処理後の具体的なデ
ータ配置を示す図、第15図はビットリバースの例を示す
図表、第16図は並列データ処理装置上のバタフライ演算
後のデータ配置を示す図、第17図は並列ダータ処理装置
上の出力時のデータ配置を示す図、第18図は行方向デー
タのビットリバース処理法を示す図、第19図はデータイ
ンデックスの値(a0,a3)による処理の相違を示す図
表、第20図は第19図の具体例を示す図表、第21図は並列
データ処理装置上でのビットリバース処理における列単
位のデータシフト方法を示す図、第22図はデータインデ
ックスの値(a1,a2)によるデータの入れ換えの具体例
を示す図表、第23図は並列データ処理装置上でのビット
リバース処理における行単位のデータシフト方法を示す
図、第24図は16×16PEから成る並列データ処理装置上で
の256個のデータの入力例を各データのインデックス値
で示した図、第25図は第24図の例においてバタフライ演
算が終了した後のデータのインデックスを示した図、第
26図は第25図のデータのビットリバース処理後のデータ
の並びを示した図、第27図は並列データ処理装置のPE数
よりもデータの数が多い場合の各PEへのデータ割付け方
法を示す図、第28図は従来の高速フーリエ変換における
バタフライ演算を行うための演算器の構成図である。1
は基本演算要素(PE)、2はメモリ(記憶手段)、3は
ALU(演算手段)、4は制御フラグ(実行制御手段)、
5,6,7,8はデータ転送ライン、9,10はブロードキャスト
ライン、11はデータ入力ライン、12はデータ出力ライ
ン、13aは演算アレイ、13bは制御手段。 なお、図中、同一符号は同一、又は相当部分を示す。
Claims (2)
- 【請求項1】2データの加算機能と該データの減速及び
乗算の機能とを有する演算手段,記憶手段,与えられた
命令の実行を制御する実行制御手段,を夫々有するN×
N(N=2n)の基本演算要素が、互いに隣接する要素間
でデータを転送するためのデータ転送ラインと外部から
のデータを要素間を順次経由して入力するとともに外部
にデータを出力するためのデータ入出力ラインと要素の
行単位あるいは列単位に同一の値を外部から与えるため
のブロードキャストラインとにより2次元格子状に相互
接続された演算アレイと、上記N×Nの基本演算要素に
格納された2次元データを列(行)方向に均等にN/2づ
つにブロック分割し、その一方のデータブロックを他方
のデータブロックにまた他方のデータブロックを一方の
データブロックに一致するようにずらすバタフライ演算
をし、次に、上記演算によるデータを、さらに、列
(行)方向に順次N/4,N/8,・・・と分割して得たデータ
ブロックに対し同様にして合計n/2回のバタフライ演算
を行い、次いで、行(列)方向のデータブロックに対
し、上記列(行)方向におけるバタフライ演算の処理と
同様にして、バタフライ演算の処理をn/2回行うように
制御する制御手段とを備え、 上記各演算を繰り返すことにより、所定のアルゴリズム
による高速フーリエ変換のバタフライ演算を並列に実行
することを特徴とする並列データ処理装置。 - 【請求項2】2データの加算機能と該データの減速及び
乗算の機能とを有する演算手段,記憶手段,与えられた
命令の実行を制御する実行制御手段,を夫々有するN×
N(N=2n)の基本演算要素が、互いに隣接する要素間
でデータを転送するためのデータ転送ラインと外部から
のデータを要素間を順次経由して入力するとともに外部
にデータを出力するためのデータ入出力ラインと要素の
行単位あるいは列単位に同一の値を外部から与えるため
のブロードキャストラインとにより2次元格子状に相互
接続された演算アレイと、上記N×Nの基本演算要素に
格納された2次元データを列(行)方向に均等にN/2づ
つにブロック分割し、その一方のデータブロックを他方
のデータブロックにまた他方のデータブロックを一方の
データブロックに一致するようにずらすバタフライ演算
をし、次に、上記演算によるデータを、さらに、列
(行)方向に順次N/4,N/8,・・・と分割して得たデータ
ブロックに対し同様にして合計n/2回のバタフライ演算
を行い、次いで、行(列)方向のデータブロックに対
し、上記列(行)方向におけるバタフライ演算の処理と
同様にして、バタフライ演算の処理をn/2回行うように
制御し、かつ、上記各演算の終了後に、任意の行(列)
のインデックスを(a0 xxxai xxan-i-1 xxxan-1)とす
ると、その内部にある全データを、行(列)のインデッ
クスが(a0 xxxan-i-1 xxai xxxan-1)である行(列)
内の全データと入れ換える処理を、iがOから まで繰り返し行う制御手段とを備え、 上記各演算を繰り返すことにより、所定のアルゴリズ
ムによる高速フーリエ変換のバタフライ演算を並列に実
行するとともに、上記入れ換え処理を繰り返すことによ
り、高速フーリエ変換のビットリバース処理を実現する
ことを特徴とする並列データ処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP61137313A JP2580501B2 (ja) | 1986-06-14 | 1986-06-14 | 並列デ−タ処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP61137313A JP2580501B2 (ja) | 1986-06-14 | 1986-06-14 | 並列デ−タ処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPS62295174A JPS62295174A (ja) | 1987-12-22 |
JP2580501B2 true JP2580501B2 (ja) | 1997-02-12 |
Family
ID=15195767
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP61137313A Expired - Lifetime JP2580501B2 (ja) | 1986-06-14 | 1986-06-14 | 並列デ−タ処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2580501B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3675537B2 (ja) * | 1995-11-29 | 2005-07-27 | 富士通株式会社 | 高速フーリエ変換を行うメモリ分散型並列計算機およびその方法 |
US6970196B1 (en) * | 1999-03-16 | 2005-11-29 | Hamamatsu Photonics K.K. | High-speed vision sensor with image processing function |
-
1986
- 1986-06-14 JP JP61137313A patent/JP2580501B2/ja not_active Expired - Lifetime
Non-Patent Citations (1)
Title |
---|
加藤満左夫外1共著、「並列処理計算機」昭和51年6月25日発行、オーム社、第60頁、第61頁、第153頁〜162頁 |
Also Published As
Publication number | Publication date |
---|---|
JPS62295174A (ja) | 1987-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Fishburn et al. | Quotient networks | |
JP3639323B2 (ja) | メモリ分散型並列計算機による連立1次方程式計算処理方法および計算機 | |
US7337205B2 (en) | Matrix multiplication in a vector processing system | |
JP5689282B2 (ja) | 行列をsimdマルチコア・プロセッサ・アーキテクチャ上で転置するためのコンピュータ実装方法、コンピュータ可読ストレージ媒体及びシステム | |
US4821224A (en) | Method and apparatus for processing multi-dimensional data to obtain a Fourier transform | |
US5331585A (en) | Orthogonal transformation processor for compressing information | |
JPH04313157A (ja) | 演算処理装置 | |
US5751616A (en) | Memory-distributed parallel computer and method for fast fourier transformation | |
JPH0233191B2 (ja) | ||
Scherson | Orthogonal graphs for the construction of a class of interconnection networks | |
JPH11203272A (ja) | 高速フーリエ変換処理装置、高速フーリエ変換処理システムおよび高速フーリエ変換処理方法 | |
JP2580501B2 (ja) | 並列デ−タ処理装置 | |
JPH04280368A (ja) | Dctマトリクス演算回路 | |
JP2814860B2 (ja) | 画像拡大縮小装置 | |
KR0139699B1 (ko) | 이산 코사인 변환장치 | |
KR101547366B1 (ko) | 병렬 프로세서용 어드레싱 디바이스 | |
US6438568B1 (en) | Method and apparatus for optimizing conversion of input data to output data | |
Alnuweiri | A new class of optimal bounded-degree VLSI sorting networks | |
JP3860545B2 (ja) | 画像処理装置及び画像処理方法 | |
JPH03262076A (ja) | 並列データ処理装置 | |
JP3839504B2 (ja) | フーリエ変換装置 | |
JP2824976B2 (ja) | 2次元配列データ回転装置 | |
JPH07271762A (ja) | 高速実フーリエ変換装置 | |
Bowden | Kron's method of tearing on a transputer array | |
JPH0743698B2 (ja) | 並列デ−タ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
EXPY | Cancellation because of completion of term |