JP4263693B2 - 計算量的に効率的な数学エンジン - Google Patents

計算量的に効率的な数学エンジン Download PDF

Info

Publication number
JP4263693B2
JP4263693B2 JP2004539858A JP2004539858A JP4263693B2 JP 4263693 B2 JP4263693 B2 JP 4263693B2 JP 2004539858 A JP2004539858 A JP 2004539858A JP 2004539858 A JP2004539858 A JP 2004539858A JP 4263693 B2 JP4263693 B2 JP 4263693B2
Authority
JP
Japan
Prior art keywords
shift register
data
processor
input
output
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 - Fee Related
Application number
JP2004539858A
Other languages
English (en)
Other versions
JP2006500684A (ja
Inventor
エス.ブッヘート リアン
エス.ティマーマン チャイル
シェーン サプリー スティーブン
Original Assignee
インターデイジタル テクノロジー コーポレーション
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 インターデイジタル テクノロジー コーポレーション filed Critical インターデイジタル テクノロジー コーポレーション
Publication of JP2006500684A publication Critical patent/JP2006500684A/ja
Application granted granted Critical
Publication of JP4263693B2 publication Critical patent/JP4263693B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/015Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising having at least two separately controlled shifting levels, e.g. using shifting matrices
    • 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/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)
  • Measuring Fluid Pressure (AREA)
  • Electrical Control Of Air Or Fuel Supplied To Internal-Combustion Engine (AREA)
  • Ultra Sonic Daignosis Equipment (AREA)
  • Apparatus For Radiation Diagnosis (AREA)
  • Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
  • Control Of Electric Motors In General (AREA)

Description

本発明は、複素乗算器アレイの出力を計算するために数学エンジンを利用することに関する。特に、本発明は、複数の数学計算を行うためにアクセス可能な計算量的に効率的な(computationally efficient)数学エンジンである。
最新のワイヤレス通信システムは、一般に、信号処理を行うのに膨大な量の数学計算を必要とする。このような計算は、一般に、プロセッサおよびASIC(application specific integrated circuit)によって行われる。
受信機用の標準のASIC設計では、多数のアルゴリズムをインプリメントし計算する必要があり、これらのアルゴリズムが、割り当てられた時間中に計算を完了するために、多数の並列乗算を必要とすることがしばしばある。これらのアルゴリズムは、典型的には、多数のマトリクス−マトリクス乗算およびマトリクス−ベクトル乗算と、多数のDFT(discrete Fourier transform)計算およびFFT(fast Fourier transform)計算とからなる。乗算器は、ASIC上で大きなスペースを占めるので、いくつかのアルゴリズムに対して同じ乗算器を適用できる解決策を考案することが望ましい。
様々な現在のワイヤレス技術、例えば、WCDMA、WTT、CDMA2000、802.1X、TDSCDMA、FDD、TDDをサポートするため、また、現時点では企図されていない他の将来のシステムアーキテクチャをサポートするため、ある共通の計算を用いることができる。共通に行われる1つのこのようなタイプの計算としては、内積乗算がある。内積計算は2つのマトリクスを演算する標準の機能である。例えば、内積計算は、チャネル推定およびデータ推定を行うのに必要となる。広帯域TDDシステムにおいては、このような計算として、素因数FFTの計算と、マトリクスとマトリクスとの乗算と、マトリクスとその複素共役転置マトリクスとの乗算と、マトリクスとベクトルとの乗算とを含めることができる。
一般に、いくつかの内積計算は、単一の通信装置によって行わなければならず、したがって、この通信装置は、必要とされる計算に対応できるだけの処理能力を有しなければならない。現在、それぞれのアルゴリズムは、そのアルゴリズム自体の数学的な機能をインプリメントするため、専用のハードウェアを使用している。ハードウェアを繰り返し使用して演算効率を最大にできるシステムを開発することが有利になろう。演算効率には、処理時間と、処理を行うためのシリコンチップの面積と、このシリコンチップが処理において必要とする電力とが含まれるが、これらに限定されるものではない。
本発明によれば、ハードウェアを効率的に利用するため、複数のタイプの数学計算を行う数学エンジンが提供される。本発明は、並列出力を有するメモリを含む。この並列出力を使用して、論理的に隣接した値を並列に選択的に出力される1つまたは複数の値を記憶する。この記憶された値の長さ、例えばベクトルの長さが、計算区域(computational section)の容量よりも大きい場合、このメモリは、全ベクトルに対する数学的な実行を完了できる論理シーケンスにおいて、このベクトルの一部(フォールド(fold)という。)を提供できるように、アドレスされる。
数学エンジンのオペレーションを制御するため、データを転送し、かつ適正な数学計算を行うことができるイネーブル信号を選択的に使用することによって、異なるアルゴリズムの結果が生成される。こうすると、異なるタイプの計算を行う数学エンジンの柔軟性が高まるという利点が得られ、かつ、信号プロセッサを設計する際に必要とされる半導体のスペースが小さくなる経済的なプロセッサ回路も得られる。
次に、図面を参照して本発明を説明する。これらの図面において、同じ参照符号は同一要素を示す。
本発明は、複数の異なる別々のアルゴリズムを処理する単一の数学エンジンに関する。この数学エンジンでは、これらすべてのアルゴリズムに対して同じハードウェアを使用することができる。乗算器は、ASIC上でかなりのスペースを必要とするが、本発明によれば、ASICに必要とされるスペースが小さくなる。本発明に係る数学エンジンは、ハードウェアの時間稼働率を高めることによって、必須の計算を行う上で極めて効率的でもある。この数学エンジンの効率は、入力マトリクスのサイズおよびPEの数によって決まる。
この数学エンジンは、一般に、少なくとも2つの入力と1つの出力とを有する。これらの入力は、直列入力および並列入力を含み、この並列入力の幅は、PE(processing element)の数と同じである。PEの数は、ベクトル全体、ベクトルの一部、またはマトリクスのベクトルになるように最適化することができる。これら並列入力および直列入力は、ともに、シフトレジスタまたは別のタイプの直列アクセスレジスタにロードして、異なるタイプの演算を行うことができる。この並列出力シフトレジスタは、並列出力を有し、かつ記憶したデータを迅速に出力できるメモリである。このシフトレジスタの並列出力は、PEの数によって幅が決まる論理的に隣接した値が、直列アクセスレジスタの機能を実施できるか、選択可能な出力を有する並列出力シフトレジスタの機能を実施できるか、あるいは、2次並列入力にアクセスできるようにマルチプレクシングされる。1次並列入力と、シフトレジスタの並列入力をマルチプレクシングしたものと、2次並列入力とは、複素乗算器および加算器ツリーへの入力となる。この加算器ツリーにより、この数学エンジンによって行われる計算の効率が高まる。こうすると、各演算ごとに、データをレジスタ内にできるだけ迅速に移動させることができ、かつ、この演算の内部ステップが効率よく行われるように、データを再構築することができる。
好ましい実施形態では、並列出力シフトレジスタは、論理的に隣接したデータ値からデータを出力し、この出力を使用して、選択的に並列出力する値が計算区域に記憶される。この記憶されるベクトルの長さが、計算区域の容量よりも大きい場合、並列出力シフトレジスタは、全ベクトルに対する数学的な実行を完了できるシーケンスにおいて、このベクトルの一部が提供されるようにアドレスされる。その結果、ほとんどすべてのクロックが、演算を行うためのデータを準備する複数のステップに費やされずに、計算に用いられる。この並列出力シフトレジスタを所与の長さの出力回路と結合させると、並列出力n−フォールドシフトレジスタになる。すなわち、このメモリの記憶領域(store)が、計算区域のデータ幅(すなわち、PEの数)のn倍になる。
加算器ツリーは、値をアキュムレータに供給し、このアキュムレータにより、多数の異なるマトリクス−マトリクス乗算およびマトリクス−ベクトル乗算を行うことができ、かつ、AAおよびA のような計算を効率よく行うことができる。
本発明によれば、この数学エンジンによって行われる内積計算には、チャネル推定およびデータ推定に必須の複数の異なるタイプの乗算、例えば、素因数FFTと、マトリクスとマトリクスとの乗算と、マトリクスと複素共役転置マトリクスとの乗算と、マトリクスとベクトルの乗算とが含まれるが、これらに限定されるものではない。
図1は、本発明に従って作製される数学エンジン30の概略ブロック図を示す。数学エンジン30には、PPDIS(primary parallel data input source、1次並列データ入力源)31と、デマルチプレクサ32と、n−フォールドシフトレジスタ33と、SDIS(serial data input source、直列データ入力源)34と、マルチプレクサ35と、SPDIS(secondary parallel data input source、2次並列データ入力源)36と、が含まれる。また、複数のアレイ要素(図に示す41〜44)からなる複素乗算器PEアレイ40と、複素加算器ツリー55と、複素アキュムレータ56も含まれる。複素アキュムレータ56には、初期条件入力マルチプレクサ58と、サマー(summer)57と、サマー出力レジスタ59とが含まれる。サマー出力レジスタ59から、蓄積された出力が得られる。PEアレイ40は、内積出力を含めて、並列複素乗算機能を提供する。
演算時において、PPDIS 31の出力は、Q個のロケーションを含む。SDIS 34は、シフトレジスタ33に複素受信チップシーケンス(complex received chip sequence)を提供する。SDIS 34からのこの出力を用いて、シフトレジスタ33を直列ロードする。シフトレジスタ33は、n個のフォールドを有し、各フォールドは、それぞれ複素値を含むQ個のロケーションを有する。さらに、シフトレジスタ33は、任意のフォールドに、PPDIS 31からのQ個のロケーションからの値をロードし、また、クロックごとに、X個のゼロのロケーションをシフトインすることができる。マルチプレクサ35は、シフトレジスタ33からの出力およびSPDIS 36からのQ個のロケーションの複素値を受け取る。
マルチプレクサ35からの出力は、複素乗算器アレイ40に提供される。複素乗算器アレイ40を使用して、複素加算器ツリー55に、対応する入力を提供する。複素加算器ツリー55は、Q入力複素加算器ツリーである。
加算器ツリー55は、その出力をアキュムレータ56に提供する。アキュムレータ56には、サマー57のところで、マルチプレクサ58を介して供給される初期条件が提供される。サマー57の出力結果は、出力レジスタ59にストアされる。
図1に示す本発明に係る数学エンジン30は、いくつかの異なるタイプの計算を行うことができるので、別々のプロセッサが不要になり、その結果、このような数学計算に必要とされるASICの実装面積が大幅に小さくなる。以下、WTDD通信システムにおける好ましい実施形態の3つの異なる応用例、1)自己相関マトリクス(AA)の生成と、2)白色化整合フィルタリング(A )と、3)Steinerアルゴリズムと、によって行われるチャネル推定を説明するが、応用例はこれらに限定されるものではない。ただし、本発明の趣旨および範囲から逸脱しない限り、他のアルゴリズムを実施できることは、当業者にとって当然のことである。
図2A〜図2Cおよび図3A〜図3Gを参照して、AA関数をインプリメントした本発明の実施形態を説明する。この実施形態では、本発明に係る図1の数学エンジンを利用してAA関数をインプリメントするプロセスを説明する。AA関数は、数学エンジンによって計算される関数の中で最も複雑なものの1つである。というのは、AA関数は、部分的に記憶されたマトリクスと、この同じ部分的に記憶されたマトリクスであって部分的に計算された結果のみで異なるやり方でアクセスされたマトリクスと、から計算されるからである。演算の順序は、これらのマトリクスの論理的な数列に基づくのではなく、これらのマトリクスが、数学エンジンの既存の機能にどの程度適合しているかに基づく。
図2Aは、マトリクスAと、マトリクスAと、マトリクスAAとを、簡単なフィールドマトリクス(field matrix)で表現したものである。A行ブロックのみをメモリに記憶させ、そして、マトリクスA全体およびマトリクスA全体は、記憶された行ブロックをアドレスするアドレシング関数として表される。この関数はデータにアクセスできる能力を有する。このデータをAマトリクスにおけるように使用するため、このデータの虚部が反転されている。得られたマトリクスAAは、圧縮して記憶され、マトリクスAおよびマトリクスAから構築されたもののように見える。
このAサブブロックは、単一のアクセスメモリ(図1のPPDIS 32)にしか記憶されないので、第1ステップは、このAメモリの内容を、シフトレジスタ33にコピーすることであり、また、そこで、第2および第3の行ブロックを表すようにこの内容を操作して、これらのブロックがこの計算で用いるデータウィンドウによってしか見えないようにすることができる。マトリクスAの幅は、SF(拡散率)+W(チャネル応答長)−1であり、20個のPEしかないので、各Aのワードには20個の値がある。フォールドと呼ぶ20個の値のチャンク(chunk)内にデータを移動させる(この場合には、例えば、SF+W−1=44であり、そのため、3つのフォールドがある)。図3A、図3B、および図3Cは、Aの最初の行をシフトレジスタにロードするところを示す最初の3つのクロックサイクルを示す。
図3Aでは、Aのブロックの第1行の第1フォールドを、シフトレジスタの第1フォールド記憶領域にロードする。図3Bでは、A行ブロックの第1行の第2フォールドを、シフトレジスタの第2フォールド記憶領域にロードする。図3Cでは、A行ブロックの第1行の第3フォールドを、シフトレジスタの第3フォールド記憶領域にロードする。
図2Bは、このマトリクスの計算される部分を強調して表示する。行全体を強調して表示しているが、計算では、このマトリクスの破線の内側の部分しか使用しない。図2Bは、マトリクスAの第1行と、マトリクスAの第1列とを乗算して、マトリクスAAの第1の値が得られるところを示す。
マトリクスAとマトリクスAとの行および列のブロックは、PEの数よりも大きいので(この実施形態では、行および列のサイズは44)、この計算は、一度に1フォールドずつ行われる(すなわち、3クロックで3フォールドが行われる)。行全体が終了するまで、フォールドの各部分が乗算され、(図1に示す)蓄積レジスタ59に蓄積される。終了した時点で、結果が数学エンジンの外部に記憶される。マトリクスAは、シフトレジスタの値によって表され、マトリクスAの値は、Aメモリにおいて、虚数値の逆関数で表される。これは、(図1に示す)複素乗算器アレイ40内で、これら虚数値の共役をとることによって行われる。
図3Dに、マトリクスAの第1行の第1フォールドと、マトリクスAの第1列の第1フォールドとの乗算を示す。この乗算の結果は、蓄積レジスタ59に記憶される。図3Eに、マトリクスAの第1行の第2フォールドと、マトリクスAの第1列の第2フォールドとの乗算を示す。この乗算の蓄積結果は、前の蓄積値に加算され、蓄積レジスタ59に記憶される。図3Fに、マトリクスAの第1行の第3フォールドと、マトリクスAの第1列の第3フォールドとの乗算を示す。この乗算の蓄積結果は、前の蓄積値に加算され、蓄積レジスタ59に記憶される。蓄積レジスタ59に記憶された値は、マトリクスAAの第1ロケーションを表し、さらなる処理のために外部に記憶される。この乗算には、各フォールドごとに1クロックで、合計3クロックかかるが、マトリクスAの第1行の第1フォールドと、マトリクスAの第2の有効な列の第1フォールドと、の乗算を示す図3Gには、第1クロックしか示していない。この乗算の結果は、蓄積レジスタ59に記憶される。このプロセスは3クロックの間続き、最終的に、蓄積された結果は、さらに処理するため、外部に記憶される。
図2Cからは、16個のゼロがどのようにシフトレジスタ33の左側からシフトインされ、その結果、マトリクスAの第2行ブロックが、この計算ウィンドウで用いられる入力ウィンドウを通して見られる、ことが分かる。このプロセスには1クロックしかかからず、残りの計算と並行して実行することができ、それによってかなりの時間が節約される。マトリクスAのサブブロックの第1行をこのようにシフトしたものには、計算ウィンドウで用いられる値の、Aのサブブロックのシフトされたサブブロックごとに、マトリクスAのサブブロックのすべての有効な列を乗算しなければならない。
の第1の有効な行のすべてのフォールドに、計算に用いられる入力ウィンドウに含まれるマトリクスAのサブブロックのすべての有効な列を乗算した後で、他の有効な行ごとに、この同じプロセス全体を実行する。このように順番が狂ったプロセスが実行されるので、Aのサブブロックのシフトされたサブブロック用にAの行をロードし直す必要がない。
次に、第2実施形態として、図4A〜図4Dおよび図5A〜図5Iを参照して、図1の数学エンジンによって行われるA 関数を説明する。A 関数は、マトリクスA全体と、受信したベクトル(r)との乗算である。マトリクスAは、全体として記憶されておらず、A行ブロックと呼ぶ比較的小さい部分しか実際に記憶されていない。実際には、マトリクスA中の他のすべての値は、A行ブロックの繰り返しか、またはゼロである。したがって、Aは、A行ブロックの複素アドレシング方式として記憶することができる。
例えば、広帯域TDDの3G(third generation)データバーストタイプ1または3の中には、全部で61個のA行ブロックがあり、バーストタイプ2のタイムスロットには全部で69個のA行ブロックがある。実際には、2つのベクトルrがあり、一方はデータフィールド1用のものであり、他方はデータフィールド2用のものである。簡単にするために、1つのベクトルrについてこの関数を説明する。ついで、第2のデータのセットのベクトルについてこのプロセスを繰り返す。
図4Aは、A のマトリクス乗算を示す図である。A行ブロックは、マトリクスA全体を通して繰り返され、残りはすべてゼロである。A行ブロックの行の、4つの行のうち2つは前の処理によって無効になっている。
関数を計算する第1ステップは、数学エンジンのシフトレジスタ33全体に、ベクトルrの値をあらかじめロードすることである。(図1に示す)シフトレジスタ33は、SDIS 34によって直列ロードされる。マトリクスAは、PPDIS 31で提供される。
の計算のステップ的なプロセスを開始するために、図4Bに、マトリクスAの第1行とベクトルrとの計算を示す。
ベクトルAの第1のSF+W−1の値だけがゼロでない値を含むので、この行の積の第1部分のみを計算する。PEは20個しかないので、複数のステップ(例えば、フォールド)で乗算を実行しなければならない。この実施形態では、Wが29なので、SF+W−1は44になる。SF+W−1をPEの数(20)で除算し、それを切り上げると、Aの行の有効な部分と、ベクトルrの有効な部分との全内積計算を行うには、全部で3つのフォールドまたは3つのクロックの乗算および蓄積を行う。図5A、図5B、および図5Cに示す最初の3つのクロックに、このマトリクスの行とベクトルの内積の最初の値を計算する段階的なプロセスを示す。
図5Aは、Aの第1行の第1フォールドに、ベクトルrの第1フォールドを乗算し、その結果を蓄積レジスタ59に記憶するところを示す。図5Bに、Aの第1行の第2フォールドに、ベクトルrの第2フォールドを乗算し、その結果を、現時点で蓄積レジスタ59内にある結果に加算するところを示す。図5Cに、Aの第1行の第3フォールドに、ベクトルrの第3フォールドを乗算し、その結果を、現時点で蓄積レジスタ59内にある結果に加算するところを示す。この時点で、得られた蓄積値は、第1のA 計算ポイントとして記憶される。
次のステップは、現時点で計算された記号(シンボル)を用いて、このA行ブロックの次の有効な行の計算を行うステップである。これは、図4Cに示すように、ベクトルrの同じ部分にAの新しい行を乗算するというものである。このベクトルrは、同一にできるが、Aメモリでは、Aの異なる行にアクセスする。図5D、図5E、および図5Fに、この場合も、3つのクロックを示す。これらの図は、3つのすべてのフォールドの乗算/蓄積を示している。図5Dは、Aの第3行の第1フォールドに、ベクトルrの第1フォールドを乗算し、その結果を蓄積レジスタ59に記憶する例を示す。図5Eは、Aの第3行の第2フォールドに、ベクトルrの第2フォールドを乗算し、その結果を、現時点で蓄積レジスタ59内にある結果に加算する例を示す。図5Fは、Aの第3行の第3フォールドに、ベクトルrの第3フォールドを乗算し、その結果を、現時点で蓄積レジスタ59にある結果に加算する例を示す。この時点で、得られた蓄積値は、第2のA 計算ポイントとして記憶される。
次のステップは、このベクトルrを用いて、Aの第2行ブロックの計算を開始するステップである。このステップでは、Aの第2行サブブロックの有効な各行にベクトルrが乗算される。Aのサブブロックが乗算されるベクトルrは、異なる。というのは、次の行には、後側から、16個の値のみがシフトインされているからである。図4Dに、計算に関与する部分を強調して表示する。
記憶されたA行ブロックは移動しないので、このベクトルrのうち、新しいA行ブロックの行が乗算される部分を、アラインし直す(re-align)ため、このベクトルrをシフトしなければならない。これは、シフトレジスタ33に、16個のクロックで16個の新しい値をシフトインし、ベクトルrの最初の複数の値を切り捨てる、ことにより行われる。このプロセスにおける最初の2つのクロックを、図5Gおよび図5Hに示すが、残りのクロックについては推測できるであろう。その後、第1のA行ブロックについて用いたのと同じプロセスを開始するが、この繰り返しオペレーションの最初のクロックを、第1のA行ブロックの最初のクロックと比較して示す。
図5Gは、シフトレジスタにおいて、ベクトルrの第1の値が右側からシフトインされ、このシフトレジスタに入れられた1番目の値が失われる例を示す。図5Hは、ベクトルrの第2の値がこのシフトレジスタにシフトインされ、このレジスタに入れられた2番目の値が失われる例を示す。図5Iは、A の第1行ブロックの第1の計算の場合とまったく同様に、Aの第1行に、新たにシフトインされたベクトルrの第1フォールドが乗算され、その結果が蓄積レジスタ59に記憶される例を示す。このプロセスは、Aの各行ブロックごとに、Aの各行ブロックの有効行のフォールドについて、継続する。
第3の実施形態を説明する。図1の数学エンジンによって行われるSteinerアルゴリズムを、図6A〜図6Dを参照して説明する。これらの図は、この数学エンジンを使用して、456ポイントSteinerについて3ポイントDFTを行うプロセスを示す。図6A〜図6Cは第1のDFTを計算する例を示すが、各図においてクロックは異なる。図に示すように、このDFTのうちの最初の3つのアドレスは、既にメモリに直列にロードされており、そのため、これら3つのアドレスには、PPDIS 31(図1)を介して同時に並列にアクセスすることができる。このDFTのために用いられる回転因子(Twiddle Factors)は、SPDIS 36(図1)を介して入力される。
これら3つのクロックでは、それぞれ、アドレス0、アドレス152、およびアドレス304における第1のDFT入力には、DFTのこのポイントに固有な回転因子の3つのセットの1つが、乗算される。これら3つの計算結果は、図1の数学エンジン外に送られる。
図6Aにおいて、回転因子セット1の3つのポイントに、DFT 1の3つのポイントが乗算され、その結果が外部に記憶される。第2のDFTの第1ポイントがメモリの次の行にロードされる。図6Bにおいては、回転因子セット2の3つのポイントに、DFT 1の3つのポイントを乗算し、この乗算結果を外部に記憶する。第2のDFTの第2ポイントをメモリの次の行にロードする。図6Cにおいては、回転因子セット3の3つのポイントに、DFT 1の3つのポイントを乗算し、この乗算結果を外部に記憶する。第2のDFTの第3ポイントをこのメモリの次の行にロードする。
図6Dは、次のDFTの第1ポイントが、回転因子セット1と計算され、回転因子セット2及び3との計算が後続のクロックにおいて行われる例を示す。64ポイントDFTについての計算は、わずかに異なる方法で行われる。すなわち、この方法においては、DFTセットと回転因子セットとの乗算が、連続した4つのクロックにおいて行われ、この乗算結果が蓄積され、その後、記憶される。
図6Dにおいては、回転因子セット1の3つのポイントに、DFT 2の3つのポイントが乗算され、この乗算結果が外部に記憶される。第3のDFTの第1ポイントがメモリの次の行にロードされる。この乗算が、3ポイントDFTについて、それぞれ、3つの回転因子セットすべてについて、継続される。他のDFTについても同様である。すなわち、8ポイントDFTは8つの回転因子セットについて行われ、19ポイントDFTが19個の回転因子セットについて行われ、64ポイントDFTが64個の回転因子セットについて行われる。
図7A〜図7Cを参照すると、本発明に係る数学エンジンの入力を選択的にイネーブルにすると、この数学エンジンが、AA、A 、および、Steiner関数をパフォームできることができる、ことが分かる。図7Aに示すように、AA関数については、AA演算において、システム応答マトリクス(A)を提供するため、PPDIS入力のみが使用され、このシステム応答マトリクスに、その複素共役転置マトリクスの値が乗算される。このシフトレジスタの並列ロード機能を用いると、この複素乗算器アレイにはその入力の1つの共役をとる能力があるので、必須のフォールドの個数によって、x個のクロックサイクルにおいて(ただし、1≦x≦n、nはフォールドの最大個数)各ポイントが計算される。
図7Bを参照すると、A 関数については、PPDISにより、システム応答マトリクス(A)が提供される。さらに、直列入力を利用して、受信したベクトル(r)のデータフィールドがA 演算に提供される。あるタイムスロットについて、このシステム応答マトリクス(A)に、受信したベクトルrのデータフィールドが乗算される。このシフトレジスタの直列ロード機能を用いて、このデータフィールドがシフトレジスタにロードされ、システム応答マトリクスが1次並列入力に提供される。得られるベクトルの各要素は、必須のフォールドの個数によって、x個のクロックサイクルにおいて(ただし、1≦x≦n、nはフォールドの最大個数)計算される。
図7Cに示すように、Steinerオペレーション(FFT)については、PPDISにより、FFT入力データセットが提供され、SPDISにより、FFT回転因子が提供される。mポイントFFTにおけるFFTオペレーションにおいて、PPDISによってこのデータセットの適正なm個のポイントが複素乗算器アレイに供給され、SPDISによって適正なFFT回転因子が供給される。
本発明に係る数学エンジンを示すブロック図である。 システム応答マトリクス(A)とその複素共役転置マトリクス(A)とを乗算して、自己相関マトリクス(AA)を計算する説明図である。 システム応答マトリクス(A)とその複素共役転置マトリクス(A)とを乗算して、自己相関マトリクス(AA)を計算する説明図である。 システム応答マトリクス(A)とその複素共役転置マトリクス(A)とを乗算して、自己相関マトリクス(AA)を計算する説明図である。 A関数に必須の計算を行う図1の数学エンジンを示す図である。 A関数に必須の計算を行う図1の数学エンジンを示す図である。 A関数に必須の計算を行う図1の数学エンジンを示す図である。 A関数に必須の計算を行う図1の数学エンジンを示す図である。 A関数に必須の計算を行う図1の数学エンジンを示す図である。 A関数に必須の計算を行う図1の数学エンジンを示す図である。 A関数に必須の計算を行う図1の数学エンジンを示す図である。 マトリクスAと受信信号ベクトル(r)との乗算を示す図である。 マトリクスAと受信信号ベクトル(r)との乗算を示す図である。 マトリクスAと受信信号ベクトル(r)との乗算を示す図である。 マトリクスAと受信信号ベクトル(r)との乗算を示す図である。 関数に必須の計算を行う図1の数学エンジンを示す図である。 関数に必須の計算を行う図1の数学エンジンを示す図である。 関数に必須の計算を行う図1の数学エンジンを示す図である。 関数に必須の計算を行う図1の数学エンジンを示す図である。 関数に必須の計算を行う図1の数学エンジンを示す図である。 関数に必須の計算を行う図1の数学エンジンを示す図である。 関数に必須の計算を行う図1の数学エンジンを示す図である。 関数に必須の計算を行う図1の数学エンジンを示す図である。 関数に必須の計算を行う図1の数学エンジンを示す図である。 DFTに必須の計算を行う図1の数学エンジンを示す図である。 DFTに必須の計算を行う図1の数学エンジンを示す図である。 DFTに必須の計算を行う図1の数学エンジンを示す図である。 DFTに必須の計算を行う図1の数学エンジンを示す図である。 入力源の選択的使用を示す図である。 入力源の選択的使用を示す図である。 入力源の選択的使用を示す図である。

Claims (18)

  1. 並列出力を有するシフトレジスタと、
    前記シフトレジスタから出力されたデータを並列に処理する複数の乗算器、及び前記乗算器の各々から出力された処理されたデータを加算する加算器ツリーを有するプロセッサであって、前記乗算器の数によって決まる処理容量が、前記シフトレジスタ処理容量よりも小さいプロセッサと、
    前記シフトレジスタが前記並列出力から選択的にデータを出力し、前記プロセッサの処理容量に適合するように制御する手段と
    を備えたことを特徴とする演算装置。
  2. 前記シフトレジスタから出力されたデータを選択的に受け取り、前記プロセッサの乗算器に選択的に入力するマルチプレクサをさらに備えたことを特徴とする請求項1に記載の演算装置。
  3. 直列入力及び並列入力を有する前記シフトレジスタは、前記シフトレジスタの直列入力及び並列入力を選択的に有効にするイネーブル回路をさらに備えたことを特徴とする請求項1又は2に記載の演算装置。
  4. 前記シフトレジスタ及び前記プロセッサの乗算器と関連付けられた第1の入力メモリと、
    実行される演算のタイプに基づき、前記第1の入力メモリから前記シフトレジスタ及び前記プロセッサの乗算器に選択的に入力可能にする選択回路と
    さらに備えたことを特徴とする請求項1乃至3のいずれかに記載の演算装置。
  5. 前記選択回路によって前記実行される演算のタイプに基づき前記プロセッサの乗算器に選択的に入力可能にされた第2の入力メモリをさらに備えたことを特徴とする請求項4に記載の演算装置。
  6. 前記シフトレジスタは、少なくとも1つの入力メモリからデータを受け取る選択可能なメモリと、前記シフトレジスタが複数のフォールドを介して選択可能な出力を提供するように制御する手段とを備え、前記フォールドが、それぞれ、前記プロセッサの処理容量に適合する容量を有し、前記選択可能なメモリ内に少なくとも1つの異なるロケーションを含むことを特徴とする請求項1乃至5のいずれかに記載の演算装置。
  7. 前記実行される演算のタイプに基づき、前記加算器ツリーからの各出力を受け取り、かつ選択的に蓄積するアキュムレーション回路をさらに備えたことを特徴とする請求項1乃至6のいずれかに記載の演算装置。
  8. 実部及び虚部を含む複素値データを受け取るメモリと、
    複素関数に関する演算因子を記憶する記憶領域と、
    前記メモリ又は前記記憶領域を介して前記シフトレジスタからの入力を選択的に受け取るマルチプレクサと、
    前記加算器ツリーから出力を受け取り、蓄積された複素出力を供給するアキュムレータ回路と
    をさらに備え、前記プロセッサが、前記メモリによって記憶された、選択されたビット位置からのデータと前記マルチプレクサからのデータ出力を処理するように複数の前記乗算器から構成されていることを特徴とする請求項1に記載の演算装置。
  9. 前記記憶領域は、DFT(discrete Fourier transform)を行うため回転因子を演算因子として供給し、前記マルチプレクサは、前記回転因子を使用するとき、その入力を前記記憶領域から受け取ることを特徴とする請求項8に記載の演算装置。
  10. 前記プロセッサは、実部と虚部を含む複素値データを処理するように構成されたことを特徴とする請求項1乃至9のいずれかに記載の演算装置。
  11. 無線通信信号の処理を容易にする請求項1乃至10のいずれかに記載された演算装置を備えたことを特徴とする通信装置。
  12. 並列出力を有するシフトレジスタと、加算器ツリーと複数の乗算器とを有し、前記乗算器の数によって処理容量が決まり、前記シフトレジスタよりも処理容量が小さいプロセッサと、を備えた演算装置に実装可能な方法であって、
    前記プロセッサが前記シフトレジスタにおいて処理されたデータを受信するステップと、
    前記プロセッサの処理容量と適合するようにデータを選択的に出力させる前記シフトレジスタを制御するステップと、
    前記プロセッサの乗算器が前記シフトレジスタから出力されたデータを並列に処理するステップと、
    前記加算器ツリーが前記乗算器から出力されたデータを加算するステップと
    を有することを特徴とするデータ処理方法。
  13. 前記演算装置がマルチプレクサをさらに備え、マルチプレクサによって、前記シフトレジスタからの出力データを選択的に受け取り、前記シフトレジスタから前記乗算器にデータを選択的に供給させるステップをさらに有することを特徴とする請求項12に記載のデータ処理方法。
  14. 前記シフトレジスタは直列入力と並列入力を有し、実行されるデータ処理の演算のタイプに基づき、前記シフトレジスタの直列入力と並列入力とを選択するステップをさらに有することを特徴とする請求項12又は13に記載のデータ処理方法。
  15. 前記演算装置が前記シフトレジスタと前記プロセッサの乗算器とに関連付けられた第1の入力メモリをさらに備え、実行されるデータ処理の演算のタイプに基づき、前記第1の入力メモリから前記シフトレジスタと前記プロセッサの乗算器とに選択的にデータを入力するステップをさらに有することを特徴とする請求項12乃至14のいずれかに記載のデータ処理方法。
  16. 前記演算装置が前記プロセッサに関連付けられた第2の入力メモリをさらに備え、実行されるデータ処理の演算のタイプに基づいて、前記第2の入力メモリから前記プロセッサに選択的にデータを入力するステップをさらに有することを特徴とする請求項15に記載のデータ処理方法。
  17. 処理されるデータは、実部と虚部を含む複素値データであることを特徴とする請求項12乃至16に記載のデータ処理方法。
  18. 無線通信信号の処理を容易にするように通信装置に実装可能なことを特徴とする請求項12乃至17に記載のデータ処理方法。
JP2004539858A 2002-09-24 2003-09-24 計算量的に効率的な数学エンジン Expired - Fee Related JP4263693B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US41316402P 2002-09-24 2002-09-24
PCT/US2003/030089 WO2004029793A1 (en) 2002-09-24 2003-09-24 Computationally efficient mathematical engine

Publications (2)

Publication Number Publication Date
JP2006500684A JP2006500684A (ja) 2006-01-05
JP4263693B2 true JP4263693B2 (ja) 2009-05-13

Family

ID=32043214

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004539858A Expired - Fee Related JP4263693B2 (ja) 2002-09-24 2003-09-24 計算量的に効率的な数学エンジン

Country Status (11)

Country Link
US (2) US7430577B2 (ja)
EP (2) EP2146278A1 (ja)
JP (1) JP4263693B2 (ja)
KR (3) KR20050099641A (ja)
CN (1) CN1685309B (ja)
AT (1) ATE456086T1 (ja)
AU (1) AU2003270874A1 (ja)
CA (1) CA2499929A1 (ja)
DE (1) DE60331088D1 (ja)
NO (1) NO20051806L (ja)
WO (1) WO2004029793A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060149804A1 (en) * 2004-11-30 2006-07-06 International Business Machines Corporation Multiply-sum dot product instruction with mask and splat
KR20070075946A (ko) * 2006-01-17 2007-07-24 장영범 저전력 고속 푸리에 변환 방법 및 장치와, 이를 이용한통신 단말기
US20080071851A1 (en) * 2006-09-20 2008-03-20 Ronen Zohar Instruction and logic for performing a dot-product operation
US9495724B2 (en) * 2006-10-31 2016-11-15 International Business Machines Corporation Single precision vector permute immediate with “word” vector write mask
US8332452B2 (en) * 2006-10-31 2012-12-11 International Business Machines Corporation Single precision vector dot product with “word” vector write mask
US8175853B2 (en) * 2008-03-28 2012-05-08 International Business Machines Corporation Systems and methods for a combined matrix-vector and matrix transpose vector multiply for a block-sparse matrix
US8626815B1 (en) * 2008-07-14 2014-01-07 Altera Corporation Configuring a programmable integrated circuit device to perform matrix multiplication
CN101847093B (zh) * 2010-04-28 2013-09-04 中国科学院自动化研究所 具有可重构低功耗数据交织网络的数字信号处理器
CN102707931A (zh) * 2012-05-09 2012-10-03 刘大可 一种基于并行数据通道的数字信号处理器
US9503747B2 (en) * 2015-01-28 2016-11-22 Intel Corporation Threshold filtering of compressed domain data using steering vector
WO2017131711A1 (en) 2016-01-28 2017-08-03 Hewlett Packard Enterprise Development Lp Memristor crossbar array for performing a fourier transformation
US10089110B2 (en) * 2016-07-02 2018-10-02 Intel Corporation Systems, apparatuses, and methods for cumulative product
WO2019023910A1 (zh) * 2017-07-31 2019-02-07 深圳市大疆创新科技有限公司 数据处理方法和设备
US10754649B2 (en) 2018-07-24 2020-08-25 Apple Inc. Computation engine that operates in matrix and vector modes
US20220197975A1 (en) * 2020-12-23 2022-06-23 Intel Corporation Apparatus and method for conjugate transpose and multiply

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3535694A (en) * 1968-01-15 1970-10-20 Ibm Information transposing system
JPS58207177A (ja) 1982-05-28 1983-12-02 Nec Corp 演算装置
US4811210A (en) * 1985-11-27 1989-03-07 Texas Instruments Incorporated A plurality of optical crossbar switches and exchange switches for parallel processor computer
JPH0734228B2 (ja) 1987-02-23 1995-04-12 株式会社東芝 複合類似度法によるパタ−ン認識装置
JPH07113886B2 (ja) * 1987-05-11 1995-12-06 株式会社日立製作所 演算回路
US5268856A (en) * 1988-06-06 1993-12-07 Applied Intelligent Systems, Inc. Bit serial floating point parallel processing system and method
US5050119A (en) * 1989-10-06 1991-09-17 North American Philips Corporation Optimized sparse transversal filter
US5179531A (en) * 1990-04-27 1993-01-12 Pioneer Electronic Corporation Accelerated digital signal processor
US5301340A (en) * 1990-10-31 1994-04-05 International Business Machines Corporation IC chips including ALUs and identical register files whereby a number of ALUs directly and concurrently write results to every register file per cycle
US5487089A (en) * 1992-02-17 1996-01-23 Matsushita Electric Industrial Co., Ltd. Nyquist filter for digital modulation
JP3413940B2 (ja) 1994-03-29 2003-06-09 ソニー株式会社 演算回路
US5909572A (en) 1996-12-02 1999-06-01 Compaq Computer Corp. System and method for conditionally moving an operand from a source register to a destination register
EP1526720A3 (en) * 1997-01-20 2005-05-11 Matsushita Electric Industrial Co., Ltd. Digital camera with interchangeable displays
US6401194B1 (en) * 1997-01-28 2002-06-04 Samsung Electronics Co., Ltd. Execution unit for processing a data stream independently and in parallel
US5974435A (en) * 1997-08-28 1999-10-26 Malleable Technologies, Inc. Reconfigurable arithmetic datapath
US6317770B1 (en) * 1997-08-30 2001-11-13 Lg Electronics Inc. High speed digital signal processor
JP3765171B2 (ja) * 1997-10-07 2006-04-12 ヤマハ株式会社 音声符号化復号方式
DE69927075T2 (de) * 1998-02-04 2006-06-14 Texas Instruments Inc Rekonfigurierbarer Koprozessor mit mehreren Multiplizier-Akkumulier-Einheiten
US6334176B1 (en) 1998-04-17 2001-12-25 Motorola, Inc. Method and apparatus for generating an alignment control vector
JP3287305B2 (ja) 1998-04-23 2002-06-04 日本電気株式会社 積和演算装置
US6839728B2 (en) 1998-10-09 2005-01-04 Pts Corporation Efficient complex multiplication and fast fourier transform (FFT) implementation on the manarray architecture
US6366937B1 (en) 1999-03-11 2002-04-02 Hitachi America Ltd. System and method for performing a fast fourier transform using a matrix-vector multiply instruction
US6526430B1 (en) 1999-10-04 2003-02-25 Texas Instruments Incorporated Reconfigurable SIMD coprocessor architecture for sum of absolute differences and symmetric filtering (scalable MAC engine for image processing)
JP3338043B2 (ja) 2000-11-02 2002-10-28 株式会社ソニー・コンピュータエンタテインメント 並列演算装置、エンタテインメント装置、演算処理方法、コンピュータプログラム、半導体デバイス
US6922716B2 (en) * 2001-07-13 2005-07-26 Motorola, Inc. Method and apparatus for vector processing

Also Published As

Publication number Publication date
US8112467B2 (en) 2012-02-07
US20080307205A1 (en) 2008-12-11
AU2003270874A1 (en) 2004-04-19
NO20051806L (no) 2005-06-08
JP2006500684A (ja) 2006-01-05
EP1546863B1 (en) 2010-01-20
ATE456086T1 (de) 2010-02-15
WO2004029793A1 (en) 2004-04-08
NO20051806D0 (no) 2005-04-13
EP2146278A1 (en) 2010-01-20
EP1546863A1 (en) 2005-06-29
KR100708270B1 (ko) 2007-04-17
CN1685309A (zh) 2005-10-19
KR20050061477A (ko) 2005-06-22
US7430577B2 (en) 2008-09-30
KR20090046939A (ko) 2009-05-11
EP1546863A4 (en) 2006-04-19
DE60331088D1 (de) 2010-03-11
US20040230632A1 (en) 2004-11-18
CA2499929A1 (en) 2004-04-08
CN1685309B (zh) 2010-08-11
KR20050099641A (ko) 2005-10-14

Similar Documents

Publication Publication Date Title
US8112467B2 (en) Computationally efficient mathematical engine
US7870176B2 (en) Method of and apparatus for implementing fast orthogonal transforms of variable size
US7720897B2 (en) Optimized discrete fourier transform method and apparatus using prime factor algorithm
KR100522262B1 (ko) 선형 변환을 효과적으로 수행하기 위한 방법 및 장치
KR101162649B1 (ko) 가변적 크기의 고속 직교 변환을 구현하기 위한 방법 및장치
EP0997828A2 (en) Signal processing distributed arithmetic architecture
EP0710915B1 (en) Fast fourier transform dedicated processor
JP2010016830A (ja) Dft計算で使用されるマルチ基数バタフライを計算する計算方法
JP5486226B2 (ja) ルリタニアマッピングを用いるpfaアルゴリズムに従って種々のサイズのdftを計算する装置及び方法
JP2010016831A (ja) 種々のサイズを有するdftを計算する装置
US6532484B1 (en) Parallel system and method for performing fast fourier transform
Du Pont et al. Hardware Acceleration of the Prime-Factor and Rader NTT for BGV Fully Homomorphic Encryption
KR100954843B1 (ko) 센서 모트에서의 블록 인덱싱 기반의 타원 곡선 암호 연산 방법, 그 장치 및 이를 기록한 기록 매체
Murphy Acceleration of the inversion of triangular Toeplitz matrices and polynomial division
JP2005216124A (ja) 行列演算装置
Sizonenko et al. Software implementation of parallel matrix computations for linear recurrent sequence and numerical methods for estimating its efficiency
CN113918876A (zh) 反卷积计算的方法、硬件加速器、设备及可读存储介质
WO1997024673A1 (en) Memory bypass method and system in a computing element in a computational array
Rice FAST DISCRETE FOURIER TRANSFORMIS AND CONVOLUTIONS GG GGGG GGLLLLL
CA2451167A1 (en) Pipelined fft processor with memory address interleaving

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070802

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070821

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080516

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080818

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090116

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090212

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120220

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120220

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130220

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130220

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140220

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees