JP5516731B2 - プロセッサおよび演算方法 - Google Patents

プロセッサおよび演算方法 Download PDF

Info

Publication number
JP5516731B2
JP5516731B2 JP2012521513A JP2012521513A JP5516731B2 JP 5516731 B2 JP5516731 B2 JP 5516731B2 JP 2012521513 A JP2012521513 A JP 2012521513A JP 2012521513 A JP2012521513 A JP 2012521513A JP 5516731 B2 JP5516731 B2 JP 5516731B2
Authority
JP
Japan
Prior art keywords
shift
subtraction
data
addition
circuit
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.)
Active
Application number
JP2012521513A
Other languages
English (en)
Other versions
JPWO2011162310A1 (ja
Inventor
克敏 関
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2012521513A priority Critical patent/JP5516731B2/ja
Publication of JPWO2011162310A1 publication Critical patent/JPWO2011162310A1/ja
Application granted granted Critical
Publication of JP5516731B2 publication Critical patent/JP5516731B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/548Trigonometric functions; Co-ordinate transformations
    • 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
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5446Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation using crossaddition algorithms, e.g. CORDIC
    • 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

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)
  • Algebra (AREA)
  • Discrete Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)

Description

本発明は、CORDIC(COordinate Rotation DIgital Computer)演算を実行可能な演算回路を有するプロセッサおよびこれを用いた演算方法に関する。
初等関数(三角関数など)を演算するハードウェアに適用するアルゴリズムとして、CORDICアルゴリズムが知られている。CORDICアルゴリズムは、反復求解法である。当該CORDICアルゴリズムでは、関数は2次元平面におけるベクトル回転として捉え、予め決められた基本回転角分のベクトル回転を繰り返し計算することによって、その関数の真値が得られる。CORDICアルゴリズムでは、回転座標系として線形、円、双曲線のいずれかを選択し、シフト加減算とテーブル参照という単純な演算を繰り返し行うことによって、乗除算、三角関数演算、指数・対数演算、双曲関数演算等が実行される。CORDICアルゴリズムは、ディジタル信号処理の分野で広範に用いられている。
ここで、シフト加減算とは、シフト演算および加減算によって構成される演算のことをいう。
以下、CORDICアルゴリズムについて、詳細に説明する。
CORDICアルゴリズムにおいて、j番目に回転処理される演算式は、次に示すような数式(1)で表される。
Figure 0005516731
ここで、nは反復回数、αはマイクロ回転量である。また、σ∈{1,−1}は、回転方向パラメータである。
例えば、円座標において、ベクトル[x(0),y(0)]’を回転角θだけ回転したベクトル[x(n),y(n)]’は、数式(1)に基づき、数式(2)および数式(3)で表される。
Figure 0005516731
ここで、Knはスケーリング係数である。CORDICアルゴリズムに基づいた回転は、スケーリングを伴う擬似回転である。スケーリングを補正するために、数式(4)に示す処理(演算)を行う必要がある。
Figure 0005516731
また、CORDICアルゴリズムでは、数式(5)に示すように、回転角θは、基本回転による回転量αjの加算として表すことができる。
Figure 0005516731
また、CORDICアルゴリズムには、数式(6)に示す回転方向パラメータσjの決定方法として、Rotationモード(ローテンション(回転)モード)およびVectorモード(ベクターモード)の2つのモードがある。
Figure 0005516731
Rotationモードでは、目的角度θを初期角度z(0)として考え、初期ベクトル[x(0),y(0)]’をθ分回転する処理が行われる。Vectorモードでは、初期角度z(0)を0として考え、ベクトルをx軸まで回転した回転角度(z(n))と、初期ベクトルのノルム(x(n))とを求める処理が行われる。
CORDICアルゴリズムにおいては、回転処理は、基本回転をn回行う処理である。このために、当該回転処理では、最終の基本回転角αn−1未満の回転角度誤差が生じる虞がある。その誤差が生じた場合には、nビット精度で数式(7)が成り立つため、CORDICアルゴリズムでは、所要ビット精度と同じ段数(ステージ数)の反復処理を行う必要がある。
Figure 0005516731
このように、CORDICアルゴリズムの特徴は、乗除算、三角関数演算、指数・対数演算、双曲関数演算等を単一のアルゴリズムで実現できることである。この特徴を利用してディジタル信号を処理するプロセッサに関わる技術として、CORDIC演算回路を基本演算回路に採用した第1の関連技術が知られている(非特許文献1および非特許文献2参照)。
図7は、第1の関連技術を利用したプロセッサの構成を簡略的に示している。プロセッサ1000は、制御回路1001と、M個のCORDIC−Proccesing Element(以下、CORDIC−PEと記す)1002〜1002と、メモリ1003とを有する。なお、Mは正の整数である。
メモリ1003は、制御回路1001から受け取ったアドレスに基づき、CORDIC−PE1002〜1002に提供するデータ(入力データ)を読み出す処理、および、CORDIC−PE1002〜1002から出力されたデータ(演算結果)を書き込む処理を行う。
CORDIC−PE1002〜1002は、制御回路1001から受け取った演算モード制御信号に従って演算モードを切り替える。また、CORDIC−PE1002〜1002は、メモリ1003から受け取った入力データを利用して演算を行い、その演算結果をメモリ1003に返す。ここで、演算モードとは、CORDICアルゴリズムに基づいて行われる演算処理(乗除算、三角関数演算、指数・対数演算、双曲関数演算等)を指す。CORDIC−PE1002〜1002は、複数種の演算モードを実行できる。
ところで、ディジタル信号を処理する際に頻繁に利用される処理として、DFT(Discrete Fourier Transform)が挙げられる。N個の離散周期データを処理するNポイントDFTは、数式(8)で表される。
Figure 0005516731
ここで、N=N*N(“*”は乗算を表す)とすると、数式(8)は数式(9)に書き換えることができる。
Figure 0005516731
数式(9)によれば、NポイントDFTは、N個のNポイントDFTによる演算結果に、回
Figure 0005516731
各ステージでは、(N/Ri)個(なお、ここでの“/”は除算を表す)のRiポイントDFT、および、回転子を乗算する演算(回転子乗算)が行われる。なお、ここで、ステージとは、演算処理を複数の段階に分割したときの1つの段階を指す。各ステージで行うRポイントDFTを基数Rのバタフライ演算と呼称する。バタフライ演算の実現手法として、small−Nアルゴリズムが知られている(例えば、非特許文献3参照)。
以下に、図8〜図10を用いて、small−Nアルゴリズムを用いた基数2,3,5のバタフライ演算を説明する。
数式(8)および数式(9)に示されるように、ポイント数が2のべき乗のDFTは、図8に示す基数2のバタフライ演算と、回転子乗算とを行う演算である。回転子乗算は、CORDICの円座標系Rotationモードで処理できる。基数2のバタフライ演算は、数式(10)に示すように、π/4回転と、±√2のスケーリング処理に分解できる。
Figure 0005516731
√2のスケーリング処理を無視すると、π/4回転は、CORDICの円座標系Rotationモードで処理できる。符号反転の影響は、回転子乗算で余分にπ回転することにより、抑えることができる。√2スケーリングの影響は、全ステージを処理した後に、まとめてスケーリング補正処理を行えばよい。このスケーリング補正処理はCORDICの乗算モード(線形座標系Rotationモード)により行うことができる。従って、ポイント数が2のべき乗のDFTは、全てCORDICで処理できる。そのDFTの詳細な説明は、非特許文献1に示されている。
図9および図10に示すように、基数3および基数5のバタフライ演算は、それぞれ、基数2のバタフライ演算と同様な加減算処理と、係数乗算処理とで処理できる。同様に、任意の基数のバタフライ演算は、加減算処理と係数乗算処理で処理できる。係数乗算処理は、CORDICの乗算モードで処理できる。このため、任意の基数のバタフライ演算は、CORDICのみで処理できる。
このようなバタフライ演算を、上述の第1の関連技術を利用したプロセッサ(CORDIC−PEを基本演算回路に採用しているプロセッサ)によって行う場合には、2個の入力信号に対する加減算処理を1回行う度に、数式(1)に示した演算精度n回分のシフト加減算処理を伴うCORDIC処理を行う。このために、上記プロセッサにおいては、効率が悪いという問題がある。また、スケーリング補正処理が必要であるために、上記プロセッサの演算量が増大するという問題がある。
この問題を解決する基本演算回路として、CORDIC−PEに加え、バタフライ演算回路を具備した回路に関わる第2の関連技術が知られている(例えば、非特許文献4および非特許文献5参照)。
図11は、第2の関連技術を利用したプロセッサの構成を簡略的に示している。プロセッサ2000は、第1の関連技術を採用したプロセッサ1000と同様の構成に加え、バタフライ演算回路2002を有している。バタフライ演算回路2002は、制御回路1001からの基数切替制御信号に基づいて、指定された基数のバタフライ演算を実行する。なお、図11において、図7に示す構成部分と同様の構成部分には同一符号を付している。
Heyne,B.,Buecker,M.,and Goetze,J.:Implementation of a CORDIC Based FFT on a Reconfigurable Hardware Accelerator,in:3rd Karlsruhe Workshop on Software Radios,2004. M.Sima and M.McGuire,"Embedded Reconfigurable Solution for OFDM Detection over Fast Fading Radio Channels,"in Proc.the IEEE Workshop on Signal Processing Systems(SiPS 2007).Shanghai,China,Oct.2007,pp.13−18. S.Winograd,"On Computing the Discrete Fourier Transform",Proc.National Academy of Sciences,USA,73,1976,April,pp.1006−1006. Sarmiento,R.;de Armas,V.;Lopez,J.F.;Montiel−Nelson,J.A.;Nunez,A.;"A CORDIC processor for FFT computation and its implementation using gallium arsenide technology",Very Large Scale Integration(VLSI)Systems,IEEE Transactions on Volume:6,Issue:1,1998,Page(s):18−30 Despain,A.M.,″Fourier Transform Computers Using CORDIC Iterations″,Computers,IEEE Transactions on Volume:C−23,Issue10,1974,Page(s):993−1001
前記第1の関連技術を利用したプロセッサは、CORDIC演算回路を有する。このため、当該プロセッサは、バタフライ演算を実行する際に、前述したようなCORDIC演算を行う必要がある。そのCORDIC演算では、加減算処理を1回実行する際に、演算精度n回分のシフト加減算処理を伴う。このために、当該プロセッサは、効率が悪いという課題を有する。さらに、第1の関連技術を利用したプロセッサは、スケーリング補正処理を必要とする場合がある。この場合には、プロセッサの演算量が増大するため、当該プロセッサは、さらに効率が悪くなるという課題を有する。
前記第2の関連技術を利用したプロセッサは、CORDIC演算回路に加えてバタフライ演算回路を有する。このため、当該プロセッサは、DFT演算以外の処理時には、バタフライ演算回路をアイドル状態にしてしまうという課題を有する。
本発明は、上記したような課題を解決するために成された。すなわち、本発明の主な目的は、DFT演算以外の処理時にも基本演算回路の一部をアイドル状態にすることなく、DFT演算を効率的に実行できるプロセッサなどを提供することである。
本発明のプロセッサは、
CORDIC(COordinate Rotation DIgital Computer)演算を実行可能に接続された複数のシフト加減算手段を有し、1ステージ以上のシフト加減算処理を行うバタフライ演算の前記シフト加減算処理を、前記シフト加減算手段が実行する演算手段と、
外部から受け取った複数のデータに基づいてCORDIC演算またはバタフライ演算を実行することを前記演算手段に指示する制御手段と、
を備える。
本発明の演算方法においては、
CORDIC演算を実行可能に接続された複数のシフト加減算手段を有する演算手段を備えたプロセッサが、
外部から受け取った複数のデータに基づいて、1ステージ以上のシフト加減算処理を行うバタフライ演算の前記シフト加減算処理を、前記シフト加減算手段が実行する。
本発明は、DFT演算以外の処理時にも基本演算回路の一部をアイドル状態にすることなく、DFT演算を効率的に実行できるプロセッサを提供できる。
図1は、本発明に係るプロセッサの一実施形態を簡略的に示すブロック図である。
図2は、本発明に係る実施形態において、プロセッサが有するCORDIC兼バタフライ演算回路の一例を示すブロック図である。
図3は、本発明に係る実施形態において、CORDIC兼バタフライ演算回路が有するシフト加減算処理回路の一例を示す図である。
図4は、本発明に係る実施形態において、プロセッサが実行する基数2のバタフライ演算を説明する模式図である。
図5は、本発明に係る実施形態において、プロセッサが実行する基数3のバタフライ演算を説明する模式図である。
図6は、本発明に係るプロセッサのその他の実施形態を簡略的に示すブロック図である。
図7は、第1の関連技術を利用したプロセッサの構成を簡略的に示すブロック図である。
図8は、基数2のバタフライ演算を説明する模式図である。
図9は、基数3のバタフライ演算を説明する模式図である。
図10は、基数5のバタフライ演算を説明する模式図である。
図11は、第2の関連技術を利用したプロセッサの構成を簡略的に示すブロック図である。
以下に、本発明に係る実施形態を、図面を参照して説明する。
図1は、本発明に係るプロセッサの一実施形態を簡略的に示すブロック図である。プロセッサ10は、制御回路100と、CORDIC兼バタフライ演算回路(以下、演算回路と略して記す)200と、メモリ300とを有している。ここで、制御回路100およびメモリ300は、本発明における制御手段(制御部)に対応している。また、演算回路200は、本発明における演算手段(演算部)に対応している。
制御回路100は、メモリ300に向けて、演算する入力データのアドレス情報および演算結果を書き込むアドレス情報を出力する。
また、制御回路100は、演算回路200に向けて、演算モード制御信号を出力する。演算モード制御信号は、CORDIC演算モード(CORDIC演算を実行するモード)を示す情報と、バタフライ演算モード(バタフライ演算を実行するモード)を示す情報とのいずれかを含む信号である。ここで、演算モード制御信号が、バタフライ演算モードを示す情報を含んでいる場合には、当該演算モード制御信号は、バタフライ演算の基数を示す情報をも含んでいる。
メモリ300は、外部から受け取ったデータを記憶する。例えば、メモリ300は、CORDIC演算を行うベクトルデータ[x(0),y(0)]’および回転角z(0)を示すデータを記憶する。例えば、メモリ300は、バタフライ演算を行うN(N:整数)個の離散周期データを記憶する。その離散周期データは、複素数の形態である。メモリ300は、離散周期データとして、離散周期データの実数成分を示す実数成分データRe{x(0)},Re{x(1)},・・・Re{x(N)}、および、その離散周期データの虚数成分を示す虚数成分データIm{x(0)},Im{x(1)},・・・Im{x(N)}を記憶する。
メモリ300は、制御回路100から受け取ったアドレス情報に基づき、演算回路200に出力する3*M(M:並列数)個の入力データを読み出す。また、メモリ300は、制御回路100から受け取ったアドレス情報に基づき、演算回路200が出力した3*M個の演算結果を書き込む。
なお、Mは、演算回路200が並列に実行可能なCORDIC演算数を表す正の整数である。すなわち、3*Mは、演算回路200が有するシフト加減算回路(シフト加減算部(シフト加減算手段);以下、シフト回路とも略して記す)220(図2参照)に入力可能なデータ数に相当する。
なお、以下に説明する実施形態においては、並列数Mを2とする例について主に説明するが、本発明において演算部(演算回路200)が並列に実行可能なCORDIC演算数は2に限定されない。
演算回路200は、制御回路100から受け取った演算モード制御信号に基づき、CORDIC演算モードと、バタフライ演算モードとを選択的に切り替える。そして、演算回路200は、その切り替えた演算モードに基づいて、メモリ300から受け取った入力データを演算する。さらに、この演算結果をメモリ300に出力する。
また、演算回路200は、CORDIC演算モードでは、座標系を選択するとともに、Rotationモード(ローテンション(回転)モード)とVectoringモード(ベクターモード)を選択的に切り替える。そして、演算回路200は、その切り替えたRotationモードあるいはVectoringモードにより、乗除算、三角関数演算、指数・対数演算または双曲関数演算を実行する。なお、演算回路200は、並列数Mを2とした場合には、CORDIC演算を2並列に実行してもよい。
バタフライ演算モードでは、演算回路200は、基数を切り替えることにより、バタフライ演算を実行する。なお、演算回路200は、Mを2とした場合には、基数5までのバタフライ演算を実行できる。
図2は、演算回路200の構成の一例を示す。なお、この実施形態では、CORDIC演算精度は16ビットと仮定されているが、本発明における演算部のCORDIC演算精度は限定されない。
図2においては、演算回路200は、シフト加減算制御回路(シフト加減算制御部(シフト加減算制御手段);以下、シフト制御回路とも略して記す)210と、16個のシフト回路220〜22016(総称して、シフト回路220とも記す)とを有している。
シフト制御回路210は、制御回路100から受け取った演算モード制御信号に基づいて、シフト加減算制御信号をシフト回路220〜22016に供給する。このシフト加減算制御信号は、シフト回路220〜22016の動作を制御する信号である。つまり、各シフト回路220〜22016は、演算モードの種類に応じて当該演算モード毎に定められた動作をそれぞれ行う。その演算モード制御信号は、各シフト回路220〜22016に、演算モードに応じた動作を実行する指令となる情報を含んでいる。
具体的には、シフト回路220〜22016の演算モードをCORDIC演算モードとする場合には、シフト制御回路210は、シフト加減算制御信号に、ビットシフト量、座標系の種類、RotationモードとVectoringモードのうちの一方を示す情報などを含める。
シフト回路220〜22016の演算モードをバタフライ演算モードとする場合には、シフト制御回路210は、シフト加減算制御信号に次のような制御情報を含める。つまり、シフト加減算処理は、基数に応じた1以上のステージで実行される。そのステージに対応するシフト回路220が予め定められている。シフト加減算制御信号に含まれる制御情報は、シフト回路220に、対応するステージに応じた動作を制御する指令となる情報である。
例えば、基数が2のべき乗のバタフライ演算は、1ステージ以上の加減算処理で実行される。そこで、シフト回路220〜22016の演算モードを、2のべき乗の基数のバタフライ演算とする場合には、シフト制御回路210は、次のような制御情報を含むシフト加減算制御信号をシフト回路220に供給する。その制御情報は、ステージ毎に、加減算する入力データの組み合わせを基数に応じて知らせる情報である。
例えば、基数が2のべき乗でないバタフライ演算は、複数のステージで実行される。各ステージでは、加減算処理および係数乗算処理を含む処理を行う。その係数乗算処理は、シフト演算処理を繰り返す処理である。
シフト回路220〜22016の演算モードを、2のべき乗でない基数のバタフライ演算とする場合には、シフト制御回路210は、次の制御情報を含むシフト加減算制御信号を各シフト回路220に供給する。その制御情報は、基数に応じた係数乗算処理に利用されるビットシフト量である。
また、シフト制御回路210は、演算モード制御信号に基づいたバタフライ演算の基数を2倍した数が、シフト回路220に入力可能なデータの個数(3*M)よりも多い場合、次のように各シフト回路220を制御する。すなわち、各シフト回路220は、シフト制御回路210による制御によって、前述の実数成分データに対する各ステージのシフト加減算処理と、虚数成分データに対する各ステージのシフト加減算処理とを異なるサイクルで実行する。例えば、各シフト回路220は、実数成分データの処理を偶数サイクルで、虚数成分データの処理を基数サイクルで実行する。
バタフライ演算を構成する係数乗算処理において係数が虚数の場合には、シフト制御回路210は、次に示すような制御情報を含むシフト加減算制御信号を各シフト回路220に供給する。その制御情報は、係数乗算処理を実行するいずれかのシフト回路220に対して、虚数の係数を乗算する実数成分データと、虚数成分データとを入れ替える指示を示す情報である。
実数成分データを処理するサイクルが偶数サイクルに設定され、かつ、基数成分データを処理するサイクルが奇数サイクルに設定されている場合には、シフト制御回路210は、次に示すような制御情報を含むシフト加減算制御信号を各シフト回路220に供給する。その制御情報は、係数乗算処理を実行するいずれかのシフト回路220に対して、偶数サイクルで入力されて虚数の係数を乗算する実数成分データと、奇数サイクルで入力されて虚数の係数を乗算する虚数成分データとを入れ替える指示を示す情報である。
次に、シフト回路220の構成の一例について詳細に説明する。
図2に示すように、シフト回路220〜22016は、直列接続されている。各シフト回路220は、それぞれ、3*M個のシフト加減算入力データに基づいて、シフト加減算処理を実行し、その処理による3*M個のシフト加減算結果データを出力する。
この実施形態では、Mを2とする。この場合には、シフト回路220は、メモリ300から第1〜第6のシフト加減算入力データを受け取る。そして、シフト回路220は、第1〜第6のシフト加減算入力データに基づいてシフト加減算処理を行い、その処理による第1〜第6のシフト加減算結果データをシフト回路220に出力する。
シフト回路220〜22015は、それぞれ、受け取った第1〜第6のシフト加減算結果データをシフト加減算入力データとして、上記同様に、シフト加減算処理を行う。そして、シフト回路220〜22015は、それぞれ、第1〜第6のシフト加減算結果データを、次の順番のシフト回路220〜22016に出力する。
シフト回路22016は、シフト回路22015から受け取った第1〜第6のシフト加減算結果データをシフト加減算入力データとして、上記同様に、シフト加減算処理を行う。そして、シフト回路22016は、その処理による第1〜第6のシフト加減算結果データを、演算回路200の演算結果として、メモリ300に出力する。
図3は、シフト回路220の構成の一例を示す。図3において、シフト回路220は、クロスバ221と、6個のシフタ兼LUT(以下、S&Lとも略して記す)222〜222と、6個の加減算器223〜223と、2個の回転方向判定回路(以下、略して判定回路とも記す)224,224とを含んでいる。なお、LUTは、ルックアップテーブル(Look Up Table)の略である。また、S&L222〜222は、総称してS&L222とも記す。さらに、加減算器223〜223は、総称して加減算器223とも記す。さらに、判定回路224,224は、総称して判定回路224とも記す。
クロスバ221は、第1〜第6のシフト加減算入力データを受け取り、第1〜第6のクロスバ出力データを出力する。このとき、クロスバ221は、シフト加減算制御信号に基づき、第1〜第6のシフト加減算入力データのうち、指定されたデータを入れ替えて第1〜第6のクロスバ出力データとして出力する。
また、クロスバ221は、互いに異なるサイクルで入力した複数の入力データのうち、任意のデータを入れ替え、入れ替え後の前記入力データを、各サイクルの各クロスバ出力データとして出力することが可能である。例えば、クロスバ221は、偶数サイクルと奇数サイクルで入力した計12個の入力データのうち、シフト加減算制御信号で指定されたデータを入れ替え、入れ替え後の12個の入力データを、各サイクルの各クロスバ出力データとして出力する。
S&L222〜222は、第1〜第6のクロスバ出力データに対して、シフト加減算制御信号で指定された処理を行い、処理後のデータを、第1〜第6のS&L出力データとして、対応する加減算器223〜223に出力する。
また、S&L222は、CORDIC演算で用いるLUT(Look Up Table)を有している。LUTは、CORDIC演算で選択される座標系ごとに、シフト加減算処理の反復回数j(j=0,・・・,15)に対応するマイクロ回転量αjを示す情報を予め格納している。
S&L222の処理内容を、S&L222を例にして説明する。S&L222は、第1と第2のクロスバ出力データのうちの一方を選択し、選択したデータをビットシフトして加減算器223に出力する。
もしくは、S&L222は、数式(1)に示したzデータに対する処理を行う際は、シフト加減算制御信号で指定された座標系に対応するマイクロ回転量αjを内部のLUTから呼び出し、加減算器2231に出力する。
なお、S&L222は、シフト加減算制御信号に含まれる制御情報に基づいて、ビットシフト量およびLUTから呼び出すデータを決定する。
S&L222〜222も、S&L222と同様である。
判定回路224〜224は、CORDIC演算を実行する場合に、数式(6)に従って回転方向パラメータσjを求め、当該回転方向パラメータσjを示す情報を、加減算器223〜223に出力する。判定回路224は、シフト加減算制御信号に基づいて、RotationモードとVectoringモードのうちの一方を実行モードとして決定する。
加減算器223〜223は、シフト加減算制御信号に基づいて、第1〜第6のクロスバ出力データと、S&L222〜222から出力された出力データとに対して、加減算処理を行う。そして、加減算器223〜223は、その演算処理による結果を、第1〜第6のシフト加減算結果データとして、次の処理を行うシフト回路220に出力する。
以下に、プロセッサ10の動作例について説明する。この実施形態では、プロセッサ10がCORDIC演算を実行する動作、および、基数2、3、5のバタフライ演算を実行する動作について説明する。
<CORDIC演算に関する動作>
まず、CORDIC演算を行うプロセッサ10の動作について説明する。
ここでは、まず、メモリ300は、制御回路100によって指定されたアドレスに基づいて、ベクトルデータ[x(0),y(0)]’および回転角z(0)を表す3つのデータを読み出す。そして、メモリ300は、それらデータを演算回路200に出力する。
次に、シフト回路220〜22016が、数式(1)に示したシフト加減算処理による回転処理を順次実行する。
ここで、シフト回路220j+1(j=0,・・・,15)が行う処理について詳細に説明する。
まず、シフト回路220j+1のクロスバ221に、メモリ300またはシフト回路220jからのデータ{x(j),y(j),z(j)}が入力する。
次に、クロスバ221は、第1〜第3の入力データをそのまま第1〜第3のクロスバ出力データとして出力する。
次に、S&L222は、y成分に対応する第2のクロスバ出力データに対し、j+1ビット右シフトを行い、加減算器223に出力する。
また、S&L222は、x成分に対応する第1のクロスバ出力データに対し、j+1ビット右シフトを行い、加減算器223に出力する。
また、S&L222は、シフト加減算制御信号で指定されたCORDIC演算モードの座標系に基づいて、マイクロ回転量αjを示す情報を、内蔵しているLUTから呼び出し、加減算器223に出力する。
また、判定回路224は、シフト加減算制御信号で指定されたRotationモードまたはVectoringモードに基づいて、数式(6)に従って回転方向パラメータσjを求める。そして、判定回路224は、その回転方向パラメータσjを示す情報を、加減算器223〜223に出力する。
次に、加減算器223〜223は、それぞれ、S&L222〜222からの出力データ、クロスバ221からの出力データ、および、判定回路224からの出力データに基づいて、数式(1)に示した加減算処理を行う。これにより、加減算器223〜223は、データ{x(j+1),y(j+1),z(j+1)}を算出する。
そして、加減算器223は、シフト加減算制御信号で指定されたCORDIC演算モードの座標系に基づいて、上記処理による加算結果と減算結果のうちから、出力する一方を決定し、その決定した結果を出力する。
このようにして、シフト回路220〜22016は、回転処理を順次実行する。
そして、シフト回路22016は、演算結果であるデータ{x(16),y(16),z(16)}を演算回路200の出力データとして出力する。
次に、メモリ300は、制御回路100によって指定されたアドレスに基づいて、演算回路200の出力データを書き込む。
これにより、プロセッサ10は、CORDIC演算の動作を終了する。
なお、プロセッサ10において、上述の3個の入力データ{x(0),y(0),z(0)}に加え、他の3個の入力データ{x1(0),y1(0),z1(0)}を演算回路200に入力することにより、演算回路200は、CORDIC演算を2並列に実行可能である。
この場合には、シフト回路220は、上述の第1〜第3のシフト加減算入力データに加えて、第4〜第6のシフト加減算入力データを受け取る。シフト回路220〜22016は、第4〜第6のシフト加減算入力データに対する回転処理を、第1〜第3の入力データに対する回転処理と同様に実行する。
<基数2のバタフライ演算に関する動作>
次に、基数2のバタフライ演算に関わるプロセッサ10の動作について、図4の模式図を用いて説明する。
図4では、基数2のバタフライ演算を行う複素数データは、{x(0),x(1)}として表されている。また、演算結果は複素数{X(0),X(1)}として表されている。図4に示すように、基数2のバタフライ演算は、2つの複素数データに対する1ステージの加減算処理によって行う。図4は、シフト回路220が、その1ステージの加減算処理を実行することを示している。
基数2のバタフライ演算を行う場合には、制御回路100による制御に基づき、演算回路200のシフト回路220に、第1と第2のシフト加減算入力データとして、実数成分データ{Re{x(0)},Re{x(1)}}が入力する。また、第3と第4のシフト加減算入力データとして、シフト回路220に、虚数成分データ{Im{x(0)},Im{x(1)}}が入力する。
次に、制御回路100は、基数2のバタフライ演算に関わる情報を含む演算モード制御信号を、演算回路200に供給する。
演算回路200において、シフト制御回路210は、その演算モード制御信号に基づき、シフト回路220にシフト加減算制御信号を供給する。そのシフト加減算制御信号は、加減算処理を行う2つの実数成分データの組み合わせと、2つの虚数成分データの組み合わせとを示す制御情報を含んでいる。また、シフト制御回路210は、シフト回路220〜22016にシフト加減算制御信号を供給する。そのシフト加減算制御信号は、シフト加減算入力データをそのままシフト加減算結果データとして出力する指示情報を含んでいる。
以下に、シフト加減算制御信号に基づくシフト回路220の動作について説明する。
ここでは、シフト回路220のクロスバ221は、第1と第2のシフト加減算入力データをそのまま第1と第2のクロスバ出力データとして出力する。
次に、S&L222は、Re{x(1)}に対応する第2のクロスバ出力データを、シフト処理を行わずに加減算器223に出力する。また、S&L222は、Re{x(0)}成分に対応する第1のクロスバ出力データを、シフト処理を行わずに加減算器223に出力する。
次に、加減算器223〜223は、それぞれ、2つの実数成分データについて加算処理および減算処理を行い、その演算処理による結果を、第1と第2のシフト加減算結果データとして、出力する。
その後に、シフト回路220は、虚数成分である第3と第4のシフト加減算入力データについても、実数成分である第1と第2のシフト加減算入力データと同様に、S&L222,222および加減算器223,223を用いて加減算処理を実行する。そして、シフト回路220は、その演算処理による結果を第3と第4のシフト加減算結果データとして出力する。
その後、シフト回路220〜22016は、シフト回路220から出力される第1〜第4のシフト加減算結果データを、順次、そのまま出力する。つまり、シフト回路22016は、シフト回路220から出力される第1〜第4のシフト加減算結果データを、演算回路200の出力データとして出力する。
そして、メモリ300は、制御回路100によって指定されたアドレスに基づいて、演算回路200の出力データを書き込む。
これにより、プロセッサ10は、基数2のバタフライ演算の動作を終了する。
<基数3のバタフライ演算に関する動作>
次に、基数3のバタフライ演算を行うプロセッサ10の動作について、図5の模式図を用いて説明する。
ここで、図5において、基数3のバタフライ演算を行う複素数データは、{x(0),x(1),x(2)}として表されている。その基数3のバタフライ演算による結果は、複素数{X(0),X(1),X(2)}として表されている。図5に示すように、基数3のバタフライ演算は、第1加減算ステージ〜第4加減算ステージでの加減算処理と、係数乗算ステージでの係数乗算処理によって、実行される。また、係数乗算処理は、シフト加減算の繰り返しで実現されることが知られている。
図5においては、シフト回路220が、第1加減算ステージでの処理を実行する。シフト回路220が、第2加減算ステージでの処理を実行する。シフト回路220が、第3加減算ステージでの処理を実行する。シフト回路220が、第4加減算ステージでの処理を実行する。シフト回路220〜220が、係数乗算ステージでの処理を実行する。
基数3のバタフライ演算を行う場合には、まず、制御回路100による制御によって、演算回路200のシフト回路220に、第1〜第3のシフト加減算入力データとして、図5に示した{x(0),x(1),x(2)}の実数成分データ{Re{x(0)},Re{x(1)},Re{x(2)}}が入力する。また、第4〜第6のシフト加減算入力データとして、虚数成分データ{Im{x(0)},Im{x(1)},Im{x(2)}}が、シフト回路220に入力する。
制御回路100は、基数3のバタフライ演算を指示する演算モード制御信号を、演算回路200に供給する。
その後に、シフト制御回路210は、シフト回路220,220,220,220に、それぞれ、次のようなシフト加減算制御信号を供給する。そのシフト加減算制御信号は、それぞれ、第1〜第4加減算ステージにおいて加減算を行う入力データの組み合わせを示す情報を含んでいる。また、シフト制御回路210は、シフト回路220〜220に、次に示すようなシフト加減算制御信号を供給する。そのシフト加減算制御信号は、係数乗算ステージにおいて係数を乗算する入力データおよびビットシフト量を制御する情報を含んでいる。
なお、係数乗算ステージにおける係数が、図5に示す0.8660j(“j”は虚数単位を表す)のように虚数である場合には、シフト加減算制御信号は、係数乗算ステージを実行するシフト回路220〜220のいずれかに対して、虚数の係数を乗算する虚数成分データと実数成分データとを入れ替えるように指示する情報を含んでいる。
以下に、シフト加減算制御信号に基づくシフト回路220の動作について説明する。
(第1加減算ステージ)
まず、シフト回路220は、第1加減算ステージでの処理を実行する。
つまり、シフト回路220には、第1〜第3のシフト加減算入力データとして、{Re{x(0)},Re{x(1)},Re{x(2)}}が入力する。シフト回路220において、クロスバ221は、第1〜第3のシフト加減算入力データを並べ替え、第1〜第3のクロスバ出力データとして、{Re{x(1)},Re{x(2)},Re{x(0)}}を出力する。
その後に、シフト回路220において、S&L222,222および加減算器223,223は、第1〜第2のクロスバ出力データである{Re{x(1)},Re{x(2)}}に対して、基数2のバタフライ演算と同様の処理を行う。第3のクロスバ出力であるRe{x(0)}は、シフト回路220によってそのまま出力される。
シフト回路220には、第4〜第6の入力データとして、虚数成分データ{Im{x(0)},Im{x(1)},Im{x(2)}}が入力する。
シフト回路220において、クロスバ221、S&L222、加減算器223は、虚数成分データに対して、実数成分データと同様の処理を行う。
(第2加減算ステージ)
次に、シフト回路220は、シフト回路220から出力されたデータに、第2加減算ステージにおける処理を実行する。つまり、シフト回路220において、クロスバ221とS&L222と加減算器223により、上記データに、第2加減算ステージにおける加減算処理を実行する。
(係数乗算ステージ)
次に、シフト回路220〜220は、係数乗算ステージでの係数乗算処理を実行する。その係数乗算処理では、シフト加減算が繰り返し実行される。16ビット精度は、4ステージ(4段)のシフト加減算を行うことによって実現される。
例えば、図5における−0.8660jの係数乗算処理においては、数式(11)に示すシフト加減算が繰り返し実行される。
Figure 0005516731
−0.8660jの係数乗算処理に着目して説明を続ける。
この実施形態では、図5における係数1.0、係数−1.5、係数−0.8660jをそれぞれ乗算する各実数成分データが、第1〜第3のシフト加減算入力データとして、シフト回路220からシフト回路220に入力する。
さらに、図5における係数1.0、係数−1.5、係数−0.8660jをそれぞれ乗算する各虚数成分データが、第4〜第6の入力データとして、シフト回路220からシフト回路220に入力する。
次に、シフト回路220において、クロスバ221は、第3のシフト加減算入力データと、第6のシフト加減算入力データとを入れ替える。第3のシフト加減算入力データは、虚数の係数である−0.8660jを乗ずる実数成分に対応するデータである。第6のシフト加減算入力データは、虚数の係数である−0.8660jを乗ずる虚数成分に対応するデータである。
その後に、シフト回路220において、S&L222は、第3のクロスバ出力データを3ビット右シフト処理し、処理後のデータを加減算器223に出力する。
加減算器223は、S&L222から出力した上記データから、第3のクロスバ出力データを減算し、当該演算による結果をシフト回路220に出力する。
この実施形態では、シフト回路220において、クロスバ221により、前述したように、実数成分(第3のシフト加減算入力データ)と虚数成分(第6のシフト加減算入力データ)とが入れ替えられている。これにより、シフト回路220〜220においては、クロスバ221は、実数成分と虚数成分との入れ替えを行わない。
シフト回路220〜220で実行される−0.8660j係数乗算処理においては、S&L222および加減算器223によって、7ビットと9ビットと12ビットの各右シフト処理、および、減算処理が行われる。
同様に、シフト回路220〜220は、それぞれS&L222,222および加減算器223,223を用いて、係数1.0および係数−1.5についての乗算処理を実行する。
(第3〜第4の加減算ステージ)
次に、シフト回路220,220は、それぞれ、シフト回路220,220と同様に動作して、第3〜第4加減算ステージにおける加減算処理を実行する。
シフト回路220〜22016は、それぞれ、シフト回路220から出力した第1〜第6のシフト加減算結果データをそのまま出力する。つまり、シフト回路22016は、シフト回路220から出力した第1〜第6のシフト加減算結果データを、そのまま演算回路200の出力データとして出力する。
その後に、メモリ300は、制御回路100によって指定されるアドレスに基づいて、演算回路200の出力データを書き込む。
これにより、プロセッサ10は、基数3のバタフライ演算の動作を終了する。
<基数4と基数5の各バタフライ演算に関する動作>
次に、基数4と基数5の各バタフライ演算を行うプロセッサ10の動作について説明する。
基数4と基数5の各バタフライ演算を行う場合には、プロセッサ10は、複数サイクルでバタフライ演算を行う。このプロセッサ10の動作が、上述の基数3のバタフライ演算を行う動作とは異なる。
基数4のバタフライ演算を行う場合には、入力データの数は、実数成分を示すデータと、虚数成分を示すデータとを合わせると、8個である。基数5のバタフライ演算を行う場合には、入力データの数は、実数成分を示すデータと、虚数成分を示すデータとを合わせると、10個である。この実施形態では、演算回路200に入力可能な入力データの数は、3*M=6個である。このため、演算回路200は、基数4と基数5の各バタフライ演算を1サイクルだけでは処理できない。
このことから、シフト制御回路210は、基数4または基数5のバタフライ演算処理を、実数成分処理と虚数成分処理に分け、それぞれの処理を異なるサイクルで行う。例えば、演算回路200は、偶数サイクルで実数成分処理を行う。演算回路200は、奇数サイクルで虚数成分処理を行う。
また、係数乗算ステージで用いる係数が虚数の場合には、係数乗算ステージを処理するシフト回路220のいずれかのクロスバ221が、前述同様に、虚数の係数を乗算する実数成分データと虚数成分データとを入れ替える。その実数成分データは、偶数サイクルで入力したデータである。虚数成分データは、奇数サイクルで入力したデータである。
上記以外の点については、プロセッサ10は、基数4と基数5の各バタフライ演算を行う複数ステージにおけるシフト加減算処理を、上述の基数3のバタフライ演算と同様に行う。このことから、その重複する詳細な説明を省略する。
なお、この実施形態では、演算回路200に入力可能なデータの個数を6としている。これにより、プロセッサは、CORDIC演算を並列数2で実行可能である。また、プロセッサは、基数5までの任意の基数のバタフライ演算を処理可能である。これに対して、演算回路200に入力可能なデータの個数が増加し、かつ、シフト加減算回路(シフト回路)が時分割で複数の処理を行えば、プロセッサが実行できるCORDIC演算の並列数およびバタフライ演算の基数を増大できる。
以下に、この実施形態のプロセッサが得ることができる効果について述べる。
この実施形態のプロセッサは、DFT演算以外の処理を行う場合にも、基本演算回路の一部をアイドル状態にすることなく、DFT演算を効率的に処理できる。
その理由は、CORDIC演算を実行する複数のシフト加減算回路(シフト回路)が、それぞれ、バタフライ演算でのシフト加減算処理の各ステージを分担して実行するためである。このため、この実施形態のプロセッサは、バタフライ演算での加減算処理1回につき演算精度回数分の反復処理を伴うCORDIC演算を行う必要がない。
さらなる理由は、この実施形態のプロセッサは、CORDIC演算を行うシフト加減算回路(シフト回路)を用いてバタフライ演算を行う。このため、シフト加減算回路(シフト回路)と別個のバタフライ演算回路が必要でない。換言すれば、そのバタフライ演算回路は設けられない。したがって、バタフライ演算以外の処理を行うときにバタフライ演算回路がアイドル状態になるという事態が発生しない。
なお、この実施形態では、演算回路200は、シフト制御回路210を省略しても、所定の基数のバタフライ演算について、上記効果を奏することができる。
この場合には、予め定められた基数のバタフライ演算を行うシフト加減算処理の各ステージにおいて、加減算するデータの組み合わせは予め定まる。予め定められた基数のバタフライ演算を行うシフト加減算処理に、係数乗算処理が含まれる場合であっても、係数乗算処理を実現するシフト演算におけるビットシフト量も予め定まる。したがって、演算回路200がシフト制御回路210を有していない場合には、各シフト回路220は、バタフライ演算モードでは、予め定められた入力データを入れ替える動作およびビットシフトを行う動作を行えばよい。
また、この実施形態のプロセッサは、アプリケーションから要求される基数の種類に応じたバタフライ演算回路を予め備えることなく、任意の基数のバタフライ演算を効率的に処理できる。
これに対して、第2の関連技術を採用したプロセッサ(CORDIC演算回路に加えてバタフライ演算回路を備えているプロセッサ)では、アプリケーションから要求される基数の種類に応じたバタフライ演算回路を用意する必要がある。このために、プロセッサの効率が悪かった。この問題を、この実施形態のプロセッサは解決している。
つまり、この実施形態では、基数が2のべき乗のバタフライ演算を行う場合には、シフト制御回路(シフト加減算制御回路)が、各シフト回路(シフト加減算回路)に対して、基数に応じて加減算を行うデータの組み合わせを制御する。この制御により、アプリケーションから要求される2のべき乗の基数の種類に応じたバタフライ演算回路を備える必要が無くなる。
また、基数が2のべき乗でないバタフライ演算を行う場合には、シフト制御回路(シフト加減算制御回路)は、上記した加減算するデータの組み合わせを制御することに加えて、基数に応じた係数乗算処理を実行するシフト回路(シフト加減算回路)に対して、基数に応じたビットシフト量を制御する。これにより、アプリケーションから要求される2のべき乗でない基数の種類に応じたバタフライ演算回路を備える必要が無くなる。
さらに、基数の2倍が演算回路に入力可能なデータ数以上である場合にバタフライ演算を行う場合には、シフト制御回路(シフト加減算制御回路)は、バタフライ演算に関わるシフト加減算処理を行うシフト回路(シフト加減算回路)に、実数成分データに対する処理と、虚数成分データに対する処理とを、異なるサイクルで実行するように制御する。
上記のようなことにより、この実施形態では、上記問題(プロセッサの効率が悪化する問題)が解決される。
この実施形態のプロセッサは、基数が2のべき乗でないバタフライ演算であって虚数の係数乗算処理を含むバタフライ演算も、効率的に実行できる。この理由は、シフト制御回路(シフト加減算制御回路)が、係数乗算処理を実行するシフト回路(シフト加減算回路)に、虚数の係数を乗算する実数成分データと虚数成分データを入れ替える制御を行うからである。
なお、この発明は上述した実施形態に限定されるものではなく、様々な実施形態を採り得る。例えば、本発明に係るプロセッサは、図6に示される構成を採用してもよい。図6に示されるプロセッサ1は、演算部(演算手段)2と、制御部(制御手段)3とを有している。演算部2は、CORDIC(COordinate Rotation DIgital Computer)演算を実行可能に接続された複数のシフト加減算部(シフト加減算手段)を有する。前記シフト加減算部は、1ステージ以上のシフト加減算処理を行うバタフライ演算の前記シフト加減算処理をも実行する。制御部3は、外部から受け取った複数のデータに基づいて、CORDIC演算またはバタフライ演算を実行することを前記演算部2に指示する。このプロセッサ1においても、前記実施形態と同様に、DFT演算以外の処理時にも基本演算回路の一部をアイドル状態にすることなく、DFT演算を効率的に実行できる。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
なお、この出願は、2010年6月23日に出願された日本出願特願2010−142206を基礎とする優先権を主張し、その開示の全てをここに取り込む。
本発明は、CORDIC演算を行うプロセッサに有効である。
1,10 プロセッサ
2 演算部
3 制御部
100 制御回路
200 演算回路(CORDIC兼バタフライ演算回路)
210 シフト制御回路
220 シフト回路
221 クロスバ
222 S&L(シフタ兼LUT)
223 加減算器
224 回転方向判定回路
300 メモリ
1001 制御回路
1002 CORDIC−PE
1003 メモリ
2002 バタフライ演算回路

Claims (4)

  1. 外部から受け取った、複素数の実数成分を表す実数成分データおよび前記複素数の虚数成分を表す虚数成分データを含む複数のデータに基づいて、CORDIC(COordinate Rotation DIgital Computer)アルゴリズムにより実行可能な演算を実行可能に接続され1ステージ以上のシフト加減算処理を行うバタフライ演算の前記シフト加減算処理を実行する複数のシフト加減算手段と、
    前記バタフライ演算の基数を表す情報に基づいて、前記シフト加減算処理において加減算するデータの組み合わせを制御する情報を、前記シフト加減算手段に対して供給し、
    前記シフト加減算処理に係数乗算処理が含まれる場合には、前記基数を表す情報に基づいて、前記係数乗算処理を実行するシフト加減算手段に対して、係数を乗算するデータに対するビットシフト量を表す情報をさらに供給し、前記係数乗算処理における前記係数が虚数である場合には、該係数乗算処理を実行する前記シフト加減算手段に対して、虚数である前記係数を乗算する実数成分データと虚数成分データとの入れ替えを制御する情報をさらに供給するシフト加減算制御手段と、
    を有する演算手段と、
    前記CORDICアルゴリズムにより実行可能な演算またはバタフライ演算を実行することを前記演算手段に指示し、前記バタフライ演算を実行することを前記演算手段に指示する場合には、前記バタフライ演算の基数を表す情報を前記演算手段に供給する制御手段と、
    を備えるプロセッサ。
  2. 記シフト加減算制御手段は、前記バタフライ演算の基数の2倍が前記シフト加減算手段に入力可能なデータ数よりも多い場合には、前記実数成分データに対する前記シフト加減算処理と、前記虚数成分データに対する前記シフト加減算処理とを、互いに異なるサイクルにおいて制御する
    請求項に記載のプロセッサ。
  3. 外部から受け取った、複素数の実数成分を表す実数成分データおよび前記複素数の虚数成分を表す虚数成分データを含む複数のデータに基づいて、CORDICアルゴリズムにより実行可能な演算を実行可能に接続され1ステージ以上のシフト加減算処理を行うバタフライ演算の前記シフト加減算処理を実行する複数のシフト加減算手段を備えるプロセッサによって、
    前記バタフライ演算の基数を表す情報に基づいて、前記シフト加減算処理において加減算するデータの組み合わせを制御する情報を、前記シフト加減算手段に対して供給し、
    前記シフト加減算処理に係数乗算処理が含まれる場合には、前記基数を表す情報に基づいて、前記係数乗算処理を実行するシフト加減算手段に対して、係数を乗算するデータに対するビットシフト量を表す情報をさらに供給し、前記係数乗算処理における前記係数が虚数である場合には、該係数乗算処理を実行する前記シフト加減算手段に対して、虚数である前記係数を乗算する実数成分データと虚数成分データとの入れ替えを制御する情報をさらに供給する、
    演算方法。
  4. 前記バタフライ演算の基数の2倍が前記シフト加減算手段に入力可能なデータ数よりも多い場合には、前記実数成分データに対する前記シフト加減算処理と、前記虚数成分データに対する前記シフト加減算処理とを、互いに異なるサイクルにおいて制御する
    請求項に記載の演算方法。
JP2012521513A 2010-06-23 2011-06-16 プロセッサおよび演算方法 Active JP5516731B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012521513A JP5516731B2 (ja) 2010-06-23 2011-06-16 プロセッサおよび演算方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2010142206 2010-06-23
JP2010142206 2010-06-23
JP2012521513A JP5516731B2 (ja) 2010-06-23 2011-06-16 プロセッサおよび演算方法
PCT/JP2011/064324 WO2011162310A1 (ja) 2010-06-23 2011-06-16 プロセッサおよび演算方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2013254168A Division JP5733379B2 (ja) 2010-06-23 2013-12-09 プロセッサおよび演算方法

Publications (2)

Publication Number Publication Date
JPWO2011162310A1 JPWO2011162310A1 (ja) 2013-08-22
JP5516731B2 true JP5516731B2 (ja) 2014-06-11

Family

ID=45371486

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2012521513A Active JP5516731B2 (ja) 2010-06-23 2011-06-16 プロセッサおよび演算方法
JP2013254168A Expired - Fee Related JP5733379B2 (ja) 2010-06-23 2013-12-09 プロセッサおよび演算方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2013254168A Expired - Fee Related JP5733379B2 (ja) 2010-06-23 2013-12-09 プロセッサおよび演算方法

Country Status (3)

Country Link
US (1) US9021003B2 (ja)
JP (2) JP5516731B2 (ja)
WO (1) WO2011162310A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011162310A1 (ja) * 2010-06-23 2011-12-29 日本電気株式会社 プロセッサおよび演算方法
JP6335661B2 (ja) * 2014-06-04 2018-05-30 キヤノン株式会社 演算装置およびその制御方法
FR3087908B1 (fr) * 2018-10-24 2021-08-06 St Microelectronics Grenoble 2 Microcontroleur capable d'executer de facon acceleree un traitement parametrable
CN111753249B (zh) * 2020-06-30 2023-09-19 成都博宇利华科技有限公司 一种基于fpga芯片计算信号频谱的方法及系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3766370A (en) * 1971-05-14 1973-10-16 Hewlett Packard Co Elementary floating point cordic function processor and shifter
JP3095348B2 (ja) * 1996-02-16 2000-10-03 松下電器産業株式会社 データ圧縮伸長装置における離散余弦変換及び逆離散余弦変換装置
US7031992B2 (en) * 2000-09-08 2006-04-18 Quartics, Inc. Hardware function generator support in a DSP
US7082451B2 (en) * 2002-09-09 2006-07-25 Freescale Semiconductor, Inc. Reconfigurable vector-FFT/IFFT, vector-multiplier/divider
DE102005045519A1 (de) * 2005-09-23 2007-03-29 Newlogic Technologies Ag Verfahren und Vorrichtung zur FFT Berechnung
US20070266070A1 (en) * 2006-05-12 2007-11-15 Chung Hua University Split-radix FFT/IFFT processor
US8572152B2 (en) 2008-03-06 2013-10-29 Nec Corporation CORDIC computation circuit and method
US20100082722A1 (en) * 2008-09-26 2010-04-01 Sinnokrot Mohanned O Methods and Apparatuses for Detection and Estimation with Fast Fourier Transform (FFT) in Orthogonal Frequency Division Multiplexing (OFDM) Communication Systems
WO2011162310A1 (ja) * 2010-06-23 2011-12-29 日本電気株式会社 プロセッサおよび演算方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6013052771; J. TAKALA et al.: 'Butterfly Unit Supporting Radix-4 and Radix-2 FFT' Proceedings of International Workshop on Spectral Methods and Multirate Signal Processing , 20050620, pp.47-53 *

Also Published As

Publication number Publication date
JPWO2011162310A1 (ja) 2013-08-22
JP2014099181A (ja) 2014-05-29
US9021003B2 (en) 2015-04-28
WO2011162310A1 (ja) 2011-12-29
US20130097214A1 (en) 2013-04-18
JP5733379B2 (ja) 2015-06-10

Similar Documents

Publication Publication Date Title
Paul et al. A fast hardware approach for approximate, efficient logarithm and antilogarithm computations
KR101173405B1 (ko) 부스 곱셈 방법들 및 시스템들을 위한 전력-효율적인 부호 확장
CN107305484B (zh) 一种非线性函数运算装置及方法
Kumar FPGA implementation of the trigonometric functions using the CORDIC algorithm
EP1769334A1 (en) Complex logarithmic alu
JP5733379B2 (ja) プロセッサおよび演算方法
US8069200B2 (en) Apparatus and method for implementing floating point additive and shift operations
CN108733349B (zh) 一种基于定点数的三角函数运算电路
Garrido et al. Efficient memoryless CORDIC for FFT computation
Lakshmi et al. VLSI architecture for low latency radix-4 CORDIC
JP5229314B2 (ja) Cordic演算回路及び方法
Shiri A novel implementation of CORDIC algorithm based on dynamic microrotation generation
Javeed et al. Design and performance comparison of modular multipliers implemented on FPGA platform
US20190171419A1 (en) Arithmetic processing device and control method of arithmetic processing device
El-Motaz et al. A cordic-friendly FFT architecture
Li et al. A Portable DSP Coprocessor Design Using RISC-V Packed-SIMD Instructions
JP2010067251A (ja) 許容誤差内の整数除算回路
CN110506255B (zh) 节能型可变功率加法器及其使用方法
Vinh et al. FPGA Implementation of Trigonometric Function Using Loop-Optimized Radix-4 CORDIC
Deng et al. A low latency High-throughput Elementary Function Generator based on Enhanced double rotation CORDIC
KR100668674B1 (ko) 고속 푸리에 변환 장치 및 고속 푸리에 변환 방법
US20030074383A1 (en) Shared multiplication in signal processing transforms
US20240231759A9 (en) System and method to accelerate microprocessor operations
Lin et al. A low-error and ROM-free logarithmic arithmetic unit for embedded 3D graphics applications
JP3095348B2 (ja) データ圧縮伸長装置における離散余弦変換及び逆離散余弦変換装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131029

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131209

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: 20140304

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140317

R150 Certificate of patent or registration of utility model

Ref document number: 5516731

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150