JP6335661B2 - 演算装置およびその制御方法 - Google Patents

演算装置およびその制御方法 Download PDF

Info

Publication number
JP6335661B2
JP6335661B2 JP2014116196A JP2014116196A JP6335661B2 JP 6335661 B2 JP6335661 B2 JP 6335661B2 JP 2014116196 A JP2014116196 A JP 2014116196A JP 2014116196 A JP2014116196 A JP 2014116196A JP 6335661 B2 JP6335661 B2 JP 6335661B2
Authority
JP
Japan
Prior art keywords
rotation
calculation
mode
arithmetic unit
direction information
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
JP2014116196A
Other languages
English (en)
Other versions
JP2015230561A (ja
JP2015230561A5 (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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2014116196A priority Critical patent/JP6335661B2/ja
Priority to US14/729,410 priority patent/US9959094B2/en
Publication of JP2015230561A publication Critical patent/JP2015230561A/ja
Publication of JP2015230561A5 publication Critical patent/JP2015230561A5/ja
Application granted granted Critical
Publication of JP6335661B2 publication Critical patent/JP6335661B2/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/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/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/386Special constructional features
    • G06F2207/3884Pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (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)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)

Description

本発明は、デジタル信号処理に基づく演算装置に関するものである。
複素平面上での複素データの座標回転や、2次元平面上での2次元座標データの座標回転を、ビットシフトと加減算のみで実現する「CORDIC(COordinate Rotation DIgital Computer)」と呼ばれる演算アルゴリズムが非特許文献1に開示されている。また、近年、信号処理の高度化により、信号の多次元化が進み、多次元連立方程式を解いて最適解等を求める処理を、リアルタイムで行う要求が出てきた。そのため、演算精度や処理性能が高い演算装置が要求されている。
例えば、上述のCORDICを用いる場合、20ビット以上の演算で20段以上のパイプライン構成のCORDICを何十個も必要となることがある。ただし、高い周波数で安定に動作させる必要があるため、より回路規模の小さいコンパクトなCORDICが要求されている。
そこで、非特許文献2及び特許文献1には、CORDICにおいて、座標回転演算を効率的かつ低遅延に処理可能とする技術が開示されている。更に、ダブルローテーションCORDICと呼ばれる改良技術が非特許文献3に開示されている。
特許第3283504号公報
J. E. Volder. "The CORDIC trigonometric computing technique", IRE Transactions on Electronic Computers, EC-8:330-334, 1959 Qiang Gao, Louise Crockett and Robert Stewart. "COARSE ANGLE ROTATION MODE CORDIC BASED SINGLE PROCESSING ELEMENT QR-RLS PROCESSOR", 17th European Signal Processing Conference(EUSIPCO 2009)Glasgow, Scotland, August 4-28,2009 N. Takagi, T. Asada, and S. Yajima, "Redundant CORDIC methods with a constant scale factor for sine and cosine computation", IEEE Trans. Computers, vol.40, no.9, pp.989-995, Sept.1991
ところで、実際の演算内容を考慮すると、上述した従来のCORDIC構成の演算装置におけるベクタモード演算性能は冗長であると考えられる。
すなわち、行列の線形代数処理においては、2次元座標データの偏角を検出するベクタモードの演算に対し、検出した偏角に基き座標データを回転する回転モードの演算の数が圧倒的に多い。一方、上述の従来技術で開示されている演算装置におけるCORDICでは、偏角を検出するベクタモード演算性能と、検出した偏角に基づき座標データを回転する回転モード演算性能とが同等である。すなわち、偏角を検出するベクタモード演算性能が冗長になっており、演算リソースが有効利用されていないと考えられる。
本発明は上述の問題点に鑑みなされたものであり、演算回路を効率的に利用可能とし回路規模の小さい演算装置を実現することを目的としている。
上述の問題点を解決するため、本発明に係る演算装置は以下の構成を備える。すなわち、縦続接続したn個(nは2以上の整数)の演算ユニットを有する演算装置において、各演算ユニットは、回転演算を行う回転モードまたは回転角を算出するベクタモードの何れかで動作する演算器と、前記演算器が前記ベクタモードで動作する際に出力される回転方向情報を保持する保持手段と、前段の演算ユニットから入力された回転角に基づいて後段の演算ユニットに出力する回転角を算出する角度演算手段と、を有し、前記演算器は、前記回転モードで動作する際、前段の演算ユニットから入力されたデータに対して前記保持手段に保持された回転方向情報に基づいて回転演算を行い、i番目(iはn以下の自然数)の演算ユニットにおいて、前記角度演算手段は、前記演算器に含まれる1つの演算パスを利用して構成され、該角度演算手段は、arctan(2 −i )と(i−1)番目の演算ユニットから入力された回転角とに基づいて(i+1)番目の演算ユニットに出力する回転角を算出する
本発明によれば、演算回路を効率的に利用可能とし回路規模の小さい演算装置を実現することが可能となる。
パイプライン構成のCORDICを説明する図である。 第1実施形態に係る演算装置の構成を示す図である。 第1実施形態に係る演算装置の他の構成を示す図である。 変形例1における演算ユニットの構成を示す図である。 回転倍率の設定の例を示す図である。 変形例2における演算ユニットの構成を示す図である。 回転方向情報の入出力間の対応、及び、無回転を表す制御信号の関係を表している。 第2実施形態に係る演算装置の構成を示す図である。 第3実施形態に係る演算装置の構成を示す図である。 第3実施形態に係る演算装置の他の構成を示す図である。 第4実施形態に係る演算装置の構成を示す図である。 正規化モード及び除算モードにおける計算の例を示す図である。 第5実施形態に係る演算装置の構成を示す図である。
以下に、図面を参照して、この発明の好適な実施の形態を詳しく説明する。なお、以下の実施の形態はあくまで例示であり、本発明の範囲を限定する趣旨のものではない。
(第1実施形態)
本発明に係る演算装置の第1実施形態として、CORDICアルゴリズムを利用する演算装置を例に挙げて以下に説明する。特に、以下の説明においては、同一の演算ユニットをn個(nは2以上の整数)縦続接続したパイプライン構成の演算装置について説明する。
<CORDICアルゴリズム>
まず、CORDICアルゴリズムについて簡単に説明する。CORDICは、arctan(2−n)(n=0,1,2,3・・・)なる角度系列の回転をビットシフトと加減算のみで繰り返し行い、2次元座標(2次元ベクトル)を回転させ所望の角度に収束させるものである。なお、CORDICの動作モードには、ベクタモードと回転モードの2種類があり、時分割動作するように構成される。ベクタモードは2次元座標を極座標に変換し、2次元座標の原点からの距離(絶対値)と偏角を出力する。一方、回転モードでは、ベクタモードで得られた偏角や当該偏角を用いて演算して出した角度などを回転角として入力し、他の入力座標データを当該回転角だけ回転した座標データを出力する。どちらのモードにおいても角度系列の回転を繰り返し行う。
ベクタモードから回転モードへ送る情報は、一般的に度(degree)やラジアン(radian)で表した偏角である。ベクタモードで偏角を出力する際、各座標回転演算に対応する角度に変換し、それらを、回転方向に応じて加減算した累算結果を出力している。なお、偏角は人間にとって分かり易い表現であるが、そのままでは座標回転演算に使うことができない。そのため、回転モードでは当該偏角をベクタモード時の回転方向を表す情報に戻して、座標回転演算の制御に用いている。
図1は、非特許文献2で利用される従来のパイプライン構成のCORDIC演算器を説明する図である。図1(a)に示すように、従来のパイプライン構成のCORDIC演算器においては、ベクタモードのパイプラインと回転モードのパイプライン2つのパイプラインが配置される。当該2つのパイプラインの間で、回転方向を表す2値情報が、ベクタモードの演算ユニットから対応する回転モードの演算ユニットへ送られている。
図1(b)にパイプラインのi番目の演算ユニットの回路構成を示す。iは、一般には、n以下の自然数であるが、ここではi=0,1,2,3・・・n−1とする。図において、入力データx’,y’は、ベクタモードで動作する演算ユニットに対して入力される座標データである。ベクタモードで動作する演算ユニットは、当該データを受けて2つのシフト回路と2つの加減算器でベクタモードの演算を行う。また、入力データx,yは、回転モードで動作する演算ユニットに対して入力されるデータである。回転モードで動作する演算ユニットは、当該データを受けて2つのシフト回路と2つの加減算器で回転モードの演算を行う。
このとき、座標回転の方向はy’データの符号sign(y’)で決まる。すなわち、座標データ(x’,y’)が第1象限または第4象限にあると仮定すると、sign(y’)=0なら右回転、sign(y’)=1なら左回転となる回転演算を行う。そして、同一方向の回転演算を回転用データx,yにも適用する。
例えば、回転用データx,yを右回転して、xi+1,yi+1を得る演算は、次のようになる。
i+1=x+(2−i)・y
i+1=y−(2−i)・x ・・・(1)
左辺のデータは次段(すなわち(i+1)段目)の演算ユニットの入力データとなる。右辺の(2−i)を乗算したデータは乗算対象データであるx,yをiビット右シフトする回路を介して得られる。一方、左回転する時は右辺における加算を減算に、減算を加算に切り換えて演算する。
なお、上述の回転演算においては、簡易な演算を特徴としているため正規化されておらず、演算の度にデータが√(1+2−2i)だけ拡大してしまう。演算の段数に応じトータルの拡大倍率が決まるため、全回転演算を終えたところで、所定の係数を乗ずるなどして補正している。この補正は一般的にスケーリング補正と呼ばれている。
<装置構成>
ベクタモードと回転モードで処理が完結する場合(すなわち偏角を外部で必要としない場合)、回転方向の情報をベクタモードで偏角に変換し、回転モードでまた元の回転方向情報に戻す処理は冗長な処理である。そのため、回転方向情報を直接送ることにより、座標回転演算を効率的に行える上、偏角への変換・逆変換が不要になる分、低遅延の処理が可能になることが期待できる。
図2は、第1実施形態に係る演算装置の構成を示す図である。演算ユニット201は、パイプラインを構成するi段目(i=0,1,2,3・・・)の演算ユニットの構成を表している。演算ユニット201の前段には、前段側の演算ユニット群202a、後段には、後段側の演算ユニット群202bが配置されている。各演算ユニットの構成は演算ユニット201と同様の構成である。図2においては、7段の演算ユニットを例示しているが、2段以上の任意の段数で構成可能である。
演算ユニット201の構成について説明する。同演算ユニットにおいて、ビットシフト器203は、入力されるy座標データをiビット右シフトするビットシフト器である。また、ビットシフト器204は、入力されるx座標データをiビット右シフトするビットシフト器である。更に、加減算器205は入力x座標データにビットシフト器203の出力を加減算する加減算器である。加減算器206は入力y座標データにビットシフト器204の出力を加減算する加減算器である。
レジスタ207は、加減算器205の出力である回転後のx座標値を1サイクル保持するレジスタである。レジスタ208は、加減算器206の出力である回転後のy座標値を1サイクル保持するレジスタである。
以上の6つの素子は、通常のCORDICでも必須となる構成要素である。これらの素子を用いて上述の数式(1)の座標回転演算を行い、その結果をレジスタ207、208で保持する。
次に、第1実施形態に係る装置において新たに必要となる構成要素を説明する。レジスタ210は、回転方向情報を保持するための1ビットのレジスタである。セレクタ211は、入力y座標値の符号(sign(y))とレジスタ210で保持した回転方向情報との一方を選択するセレクタである。
信号線212は、演算ユニットで回転処理中の座標データの処理モードがベクタモードか回転モードであるかを表す1ビットのモード情報を配信する信号線である。遅延器213は、モード情報を1サイクル遅延させる遅延器である。
<装置の動作>
以下では、演算ユニット201のベクタモードと回転モードの動作について説明する。具体的な動作として、ベクタモード1サイクルに続き回転モードで6サイクル処理する例を紹介する。
上述のように、動作モードを変更するための制御信号としてモード情報を使用する。例えば、ベクタモードとしてモード情報“1”を1サイクル、続いて回転モードとしてモード情報“0”を6サイクル、初段の演算ユニットに入力する。すなわち、モード情報“1”と同期してベクタ演算用の座標データを1つ、それに続けて、モード情報“0”と同期して回転演算用の座標データを6つを座標データとして順次入力する。
各演算ユニットは、モード情報“1”が入力されるとベクタモードで動作する。ベクタモードでは従来と同様、sign(y)に基づいて加減算器205,206の演算を制御するよう、セレクタ211は、sign(y)を選択する。その際、セレクタ211の出力を、回転方向情報を保持するためのレジスタ210にも取り込む。パイプライン全体で保持される回転方向情報を統合した回転演算は、ベクタ演算用の座標データの偏角に対応したものになる。
各演算ユニットは、モード情報“0”が入力されると回転モードで動作する。回転モードでは、セレクタ211はレジスタ210に保持した回転方向情報を選択し、当該回転方向情報に基づいて座標データを回転処理する。モード情報が“0”の間、回転方向情報は保持され続けるので、連続して入力される6つの座標データに対して同一の回転演算が施される。
回転モードにおいて、座標データとして(1,0)を入力すると、当該座標データはパイプライン全体でベクタモードで検出偏角θだけ回転され、(sin(θ),cos(θ))が回転結果として出力される。この時、(1,0)にCORDIC特有のスケーリング補正係数をあらかじめ乗じた値を入力することも可能である。出力される回転結果の値は、ベクタモードで処理した座標データの単位方向ベクトルを表し、乗算器を使った2次元回転処理等に利用することができる。ただし、同じ回転方向情報で正弦や余弦の値を何度も演算する意味は無く、1回演算すれば十分である。よって、(1,0)の座標データを入力するのは1サイクルのみでよい。
<回転角θを演算するパイプラインの追加>
ベクタモードや回転モード、それに正弦・余弦演算機能があれば、種々の処理に対応できる。ただし、座標データの偏角の値を知ることはできない。そこで、偏角を知るために回転角θを演算するパイプラインを付け加えれるとよい。
図3は、第1実施形態に係る演算装置の他の構成を示す図である。図2の構成に対し、回転角θを演算するパイプラインを付け加えた構成に相当する。各演算ユニットは301に示した構成になる。演算ユニット301に追加された加減算器311で、回転方向に応じ角度系列を加減算し、レジスタ313で1サイクル保持して、次段の演算ユニットへ出力する。
当該演算ユニットにおいては、従来のCORDICにおける動作と同様に、入力する回転角θに基づき入力座標データを回転する時、当該回転角から回転方向情報を逐次生成する。そして、生成した回転方向情報に基づき演算ユニットの加減算を制御する。
具体的には、図3において追加したパイプラインは従来の角度演算パスとほぼ同じである。そのため、入力回転角から回転方向情報を逐次生成するには、追加した演算パスのデータの符号、すなわちsign(θ)をセレクタ211で選択できるようにするだけでよい。
選択したsign(θ)をレジスタ210にて保持するように構成すれば、sign(θ)を入力座標データの回転演算に利用することができる。具体的には、sign(y)の場合と同様にレジスタ210への配線を1本加えるだけであるため、図示は省略する。回転演算の回転角が同一である間は、レジスタ210に保持した情報を利用可能である。そのため、回転演算の回転角が同一である間は、パイプラインへの回転角の入力を休止することができる。
最後に、図1(a)に示した2つのパイプラインCORDICの内、上段のパイプラインCORDICを図2のパイプラインCORDICへ置換えた場合の処理について説明する。図2のパイプラインCORDICには図1(a)の下段のパイプラインへ出力する回転方向情報を明示していないが、これまでの説明からセレクタ211の出力を下段へ出力すればよいことが分かる。ここでは、1つの偏角に基づいて9個の座標データを回転する場合について説明する。
1サイクル目では、上段でベクタ演算、下段で回転演算を行い、2サイクル〜5サイクル目では、上段と下段の両方で回転演算を行うようモード等を設定する。つまり、5サイクル期間でパイプラインCORDICへデータ入力を行う。その結果、パイプライン段数に相当するサイクル後の5サイクル期間で、入力座標データを回転した座標データがパイプラインから出力される。
以上説明したとおり第1実施形態によれば、パイプライン型CORDICを構成する演算ユニット毎に、ベクタモードで生成した回転方向情報をレジスタに保持するよう構成する。そして、保持した回転方向情報に基づいて座標データの回転演算を行う。
当該構成により、1つのパイプラインCORDICで、ベクタモードと回転モードの両方を処理することができる。そのため、ベクタモードで検出した偏角で複数の座標データを回転する処理を、低コストな回路で効率よく処理することができる。具体的には、従来に比較し、ほぼ同等の処理性能を半分の回路規模で実現することが可能となる。
(変形例1)
変形例1として、非特許文献3に開示されているダブルローテーション型CORDICを元とした構成について説明する。
<ダブルローテーション型CORDIC>
ダブルローテーション型CORDICは、θ/2回転を2回行う事によりθ回転を実現する構成である。その場合、ある条件下で無回転を実現することが可能となる。そのため、各ステージの回転は3つの回転角(+θ,0,−θ)の中から選択する事ができ演算精度の向上に寄与する。また、スケーリンング補正に用いる係数が従来よりも簡易なものとなるという利点もある。
例えば、回転用データx,yを右回転して、xi+1,yi+1を得る演算は、次のようになる。
i+1=(1−2−2i)・x+(2−(i−1))・y
i+1=(1−2−2i)・y−(2−(i−1))・x ・・・(2)
左辺のデータは次段の演算ユニットの入力データとなる。また、右辺の(2−i)を乗算したデータは乗算対象データであるx,yをiビット右シフトする回路を介して得られる。一方、左回転する時は右辺における加算を減算に、減算を加算に切り換えて演算する。
上述の演算におけるデータの拡大倍率は(1+2−2i)であり、この拡大はビットシフトと加算のみで実現できる。そのため、無回転の場合は上述の数式(2)式の替わりに、次のスケーリング演算を行う。
i+1=(1+2−2i)・x
i+1=(1+2−2i)・y ・・・(3)
このようなスケーリング演算を行うことにより、最後に行うスケーリング補正は、各段の演算が回転か無回転であるかを気にすること無く、一律でよくなる。
無回転を除いたダブルローテーションCORDICの角度系列は2・arctan(2−i)(i=0,1,2,3・・・)であり、図1に説明したCORDICの角度系列の2倍の関係にある。
<装置構成>
図4は、変形例1における演算ユニットの構成を示す図である。図4に示す演算ユニット401は、図2に示す演算ユニット201の構成を置き換えたものに相当する。パイプラインCORDICを構成する全ての演算ユニットは演算ユニット401と同一構成のものを使用する。
演算ユニット401は、回転方向情報を保持するレジスタ210を有する点に特徴がある。また、角度系列の異なる2種類の回転演算を実行可能に構成され、それをベクタモードと回転モードで切り替える点に特徴がある。
ここで、2つの回転演算のうち、一方の回転演算は数式(1)に示す一般のCORDIC演算に基づき、もう一方の回転演算は数式(2)式に示すダブルローテーション型CORDIC演算器に基づいている。すなわち、2つの回転演算のうち、一方は角度系列がarctan(2−i)、もう一方の回転演算は角度系列が2・arctan(2−i)であり、後者は前者のちょうど2倍の大きさの関係にある。この関係により、ベクタ入力座標の偏角の1/2倍と2倍の回転処理を実現できる。以降では、数式(1)の演算を「シングル型演算」、数式(2)の演算を「ダブル型演算」と呼ぶことにする。
具体的には、図4において追加された構成要素は、ダブル型演算を実行できるよう、シングル型演算を行う図2の演算ユニット201に追加した構成要素である。これらの構成要素について簡単に説明する。
演算制御部402は、シングル型演算とダブル型演算とを切り替える制御信号Doubleを生成する演算制御部である。セレクタ403〜406は、制御信号Doubleに基づいて2つの入力の一方を選択するセレクタである。
ビットシフト回路407〜410は、数式(2)の演算に必要となる項を生成するビットシフト回路である。減算器411〜412は、入力された値を減算する減算器である。
シングル型演算を行う場合、演算制御部402は制御信号Double=0を出力し、制御信号の接続先である4つのセレクタ403〜406は図面上の下側の入力信号を選択する。これにより、セレクタ403と404は各々“0”を選択して、減算器411と412に入力し、減算器411と412はもう一方の入力であるxとyをそのまま出力する。一方、セレクタ405と406は、各々iビットシフト回路203と204の出力を選択して加減算器205と206へ送る。よって、図2における演算ユニット201と同一の演算すなわちシングル型演算が行われる。
ダブル型演算を行う場合、演算制御部402は制御信号Double=1を出力し、制御信号の接続先である4つのセレクタ403〜406は図面上の上側の入力信号を選択する。これにより、セレクタ403と404は各々、2iビットシフト回路の出力を選択し、セレクタ405と406は各々、(i−1)ビットシフト回路の出力を選択する。その結果、減算器205は(1−2−2i)・x、減算器206は(1−2−2i)・yを出力する。そして、当該減算結果に対し、sign(y)に基づき(i−1)ビットシフト回路の出力を加減算する。この加減演算は数式(2)の演算と同じである。
このように、演算制御部402が出力する制御信号Doubleにより、シングル型演算とダブル型演算を切り替え可能である。また、同一のiに対する両者の回転角の比は正確に1:2(整数比)であり、この比がそのまま各演算ユニットにおける2種類の回転演算の回転角の比となる。
2種類の回転演算を実行できても、ベクタモードと回転モードが同一の回転演算で動作する場合、一般的なCORDICと機能的に同じであり、ベクタモードで検出した座標データの偏角の分だけ、他の座標データを回転処理することになる。
<装置の動作>
上述の構成により実現される特徴的な機能は、ベクタ入力座標の偏角の1/2倍と2倍の回転処理である。この機能を実現するには、ベクタモードと回転モード間で、2種類の回転演算を切り替える必要がある。具体的には、ベクタモードでシングル型演算を行った場合は、回転モードでダブル型演算を行い、ベクタモードでダブル型演算を行った場合は、回転モードでシングル型演算を行う。これにより、前者は偏角の2倍の回転、後者は偏角の1/2倍の回転を実現できる。
前述のように各演算ユニットにおける回転角の比が2倍である。そのため、シングル型演算を行った時に保持する2値の回転方向情報を{−1、+1}と解釈すると、ダブル型演算を行った時に保持する2値の回転方向情報は正確に{−2、+2}と解釈できる。この場合の大きさの違いは、回転角の大きさに対応する重みである。
よって、シングル型演算で保持した回転方向情報をダブル型演算に用いることは、保持した回転方向情報の重みを2倍したことに相当する。逆の場合は、回転方向情報の重みを1/2倍したことに相当する。これが、ベクタ入力座標の偏角の2倍や1/2倍の回転を実現できる理由である。なお、ベクタモードと回転モードが同一の回転演算で動作する場合、回転方向情報の重みが保たれるため、偏角の等倍の回転となる。
図5は、ベクタモード及び回転モードにおける演算種別の組み合わせに対する座標回転倍率を示す図である。図5(a)は、演算種別として上述のシングル型及びダブル型の演算を用いる際の例を示している。
ところで、上述の説明では、各演算ユニットにおける2種類の回転演算の回転角の比が2倍であるため、実現できる回転機能はベクタ入力座標の偏角の2倍と1/2倍になっている。同様に、回転角の比がシングル型演算の3倍ある演算機能を設け、第3の回転演算として切り替えられると、ダブル型演算に対して3/2倍の大きさになる。よって、3種類の演算を切り替えることにより実現できる回転処理が大幅に増え、ベクタ入力座標の偏角の3倍、3/2倍、2/3倍、1/3倍の回転も行うことが可能になる。
図5(b)は、演算種別として更に3倍型の演算を用いる際の例を示している。ここで「3倍型演算」とは、回転角の角度系列がシングル型演算の3倍の演算を示している。なお、同様に「4倍型演算」、「5倍型演算」を追加し利用するよう構成することも可能である。
(変形例2)
変形例2として、より複雑な回転機能を実現できるようにした構成について説明する。具体的には、1つの演算ユニットで複数の回転方向情報を保持できる構成とし、当該複数の回転方向情報の間でビット間演算を行い、演算ユニット毎にビット間演算結果で回転方向を制御する。
すなわち、変形例1では、1つのベクタ座標データから回転方向情報を生成・保持し、保持した回転方向情報に基づいて、それ以降に入力する回転用座標データを回転処理するものであった。それに対し、変形例2では、複数の回転方向情報は、複数のベクタ座標データから生成する。
特に、変形例2では、ダブルローテーション型CORDICの1つの特徴である無回転演算を回転モード時に利用する。これは、2つの回転方向情報が互いに逆方向であり、それを加算合成するようなビット間演算を行った場合、回転が相殺して無回転を意味する演算結果になることがあるからである。
<装置構成>
図6は、変形例2における演算ユニットの構成を示す図である。演算ユニット501においては、図4に示した変形例1の演算ユニット401に対し、新たな構成要素が追加されている。
無回転演算を利用するため、回転モードの演算では基本的にダブル型演算を実行する。そのため、演算制御部502は、2つのモード信号の両方が回転モードであれば、制御信号Doubleとして“1”を出力するような論理回路にする。その他のモードでは後述する演算機能に応じて、制御信号Doubleの値を定める。
変形例2においては、第1のベクタ座標データと第2のベクタ座標データを逐次入力し、第1のベクタ座標データの回転方向情報をレジスタ210で、第2のベクタ座標データの回転方向情報をレジスタ510に保持する。後者の回転方向情報を保持するための制御信号として、モード信号を配信する信号線512を追加している。
信号線512により配信されるモード信号は、信号線212により配信されるモード信号と同様、1サイクル遅延器で遅延され次段の演算ユニットに送られる。
なお、回転方向情報を取り込む際の演算モードがシングル型演算であるかダブル型演算であるかに依存して、回転方向情報の重みが変わってくる。例えば、シングル型演算である場合、回転方向情報の重みは{−1,+1}になり、ダブル型演算である場合、重みは{−2,+2}になる。このように重みは変わっても、実際の1ビット信号は[0,1]として保持される。
ビット間演算部515は、2つの回転方向情報の重みを加減算して、結果が{−2,0,+2}となるように、加重付きの加減算を行う演算器である。結果が3状態になるため、2ビット信号で例えば[00,10,01]と表現する。よって単純なビットの加減算にはならないため、ここでは“ビット間演算”と表現している。ビット間演算結果は、セレクタ511で選択され、加減算器や他のセレクタの制御に用いられる。
ここでは、演算回路の制御を見通しよくするため、無回転演算を行うための制御信号Nonを設けている。2ビット信号の上位1ビットが制御信号Nonに対応する。ベクタモードでは制御信号Nonを“0”に固定するため、sign(y)にNon=0を付加しセレクタ511に入力している。
回転モードにおいて2つの重みを加算もしくは加重加算する場合には、2つの回転方向情報の排他的論理和で生成する。2つの回転方向情報が不一致の時、回転方向が逆方向となり相殺して無回転になるからである。減算もしくは加重減算の場合は、2つの回転方向情報が一致する時、回転が相殺して無回転になるため、2つの回転方向情報の一致論理で制御信号Nonを生成する。
図7は、回転方向情報の入出力間の対応、及び、無回転を表す制御信号の関係を表している。ここでは、重み付きで表現した回転方向情報の入出力間の対応と、無回転を表す制御信号Nonの関係を表している。
図7(a)は、2つの重みを単純に加算した結果、図7(b)は、入力“1”の重みから入力“2”の重みを減算した結果であり、図7(c)は、2つの重みの単純平均した結果である。また、図7(d)は、入力“1”,“2”に対し“1”と“1/2”で加重して加算した結果であり、図7(e)は、入力“1”,“2”に対し“1/2”と“1”で加重して加算した結果である。これらへの対応は、上記入力をベクタ化する際の演算の種類(シングル型、ダブル型)によって決定される。
入力に対する加重を1にするには入力座標データをシングル型演算でベクタ化し、加重を1/2にするには入力座標データをダブル型演算でベクタ化する。それを制御するのが演算制御部502で生成する制御信号Doubleである。
図7のいずれの関係においても、加減算結果が±0の時、無回転を表す制御信号Nonを“1”としている。つまり、制御信号Nonによって、新たに追加した2つのセレクタ503、504と加減算器505、506を制御している。
制御信号Non=1の時、セレクタ503、504は上段側の入力“0”を選択し、回転行列の非対角要素を“0”にした演算、すなわち、回転角がゼロの演算を行う。また、加減算器505、506は加算モードとなり、数式(3)に基づきx,yのスケーリング演算を行い、回転演算をした時のスケーリングと一致させている。
<装置の動作>
図7(e)に対応した回転機能を実現する処理の例について説明する。ここでは、演算ユニット501をM段縦属接続したパイプラインCORDICに対し、第1サイクルで第1のベクタ座標データを入力し、第2サイクルで第2のベクタ座標データを入力する。パイプラインCORDICは第1の座標データに対しダブル型演算でベクタ化を行い、第2の座標データに対しシングル型演算でベクタ化を行う。
第1のベクタ座標データの偏角をθ、第2のベクタ座標データの偏角をθとすると、図7(e)の入出力対応により、座標回転角は(θ/2)+θとなる。この座標回転は、第3サイクル以降に回転モードで入力される座標データ群に適用される。
座標データ群は第3サイクルから間断なく連続的に入力すれば最高性能で処理することが可能であるが、全てのデータを必ずしも連続的に入力する必要はなく、途中にダミーデータを入力しても構わない。
第2のベクタ座標データを入力してからMサイクル後に、座標データの極座標絶対値がパイプラインCORDICから出力される。そして、次のサイクルから、(θ/2)+θだけ回転された座標データもしくはダミーデータが入力順に回転処理されて出力される。
次に入力するベクタ座標データは、新たな第1サイクルとして入力し、上に説明した処理を繰り返す。この時、演算制御部502の設定を変え、入出力対応を図7(e)から図7(a)〜(d)に変更することが可能である。但し、パイプラインCORDICを最高性能で使うには、設定を変更する制御信号は、不図示の遅延回路によって1サイクル遅延して次段の演算ユニットへ送る必要がある。言い換えれば、制御信号と座標データを同期して次段の演算ユニットへ転送する必要がある。
新たな合成回転角で座標データを回転する際、基本は2つのベクタ座標データを入力するが、前の偏角の一方を再利用できる場合もある。この場合は、再利用で出来ない方の偏角を新たに入力する座標データの偏角に更新するだけでよく、入力する座標データは1つだけでよい。
(変形例3)
変形例3として、新たな回転機能を実現可能とする構成について説明する。具体的には、演算ユニットの構成は演算ユニット501と同じであるが、ビット間演算部515において、2入力の一方を選択する機能を追加している。これにより、1つのパイプラインCORDICで、ベクタモードと回転モードの両方を処理可能としている。
第1のベクタ座標データと第2のベクタ座標データは同一の座標データを入力する。よって、座標データの偏角は同じでありθ=θ=2ψとする。但し、第1のベクタ座標データはシングル型演算でベクタ化を行い、第2の座標データに対しダブル型演算でベクタ化を行う。
このようにして、レジスタ210,510に回転方向情報を取り込み、それを保持したまま、ビット間演算部515の機能を切り替えて、種々の回転機能を実現する。実現できる回転機能は、以下に示すように、ψ,2ψ,3ψ,4ψの4種類になる。
・ダブル型演算のベクタ化で保持した偏角θ=2ψに基づいて、シングル型演算で座標回転を行った場合、回転角は偏角の半分のψとなる。
・保持した偏角θ=2ψに基づいて、ダブル型演算で座標回転を行った場合、回転角は偏角と同じ2ψとなる。
・図7(d)に示すビット間演算を行い、ダブル型演算で座標回転を行った場合、回転角は合成角θ+(θ/2)=3ψとなる。
・シングル型演算のベクタ化で保持した偏角θ=2ψに基づいて、ダブル型演算で座標回転を行った場合、回転角は偏角の2倍の4ψとなる。
上述の例では、同じ偏角θ=θ=2ψを有する座標データを、異なる演算によるベクタ化で取り込んだ。もし、2つの偏角が異なり、その比が単純な関係であれば、同じベクタ化演算を用いて偏角を取り込み、この関係を利用して上述した処理に類似した回転機能を実現することが可能である。
このように、回転方向情報するためのレジスタ210、510を設けることにより、1つのパイプラインCORDICで、ベクタモードと回転モードの両方を処理することができる。また、1演算ユニット毎に複数の回転方向情報を保持し、これらの複数の回転方向情報間でビット間演算を行うことにより、2つの角度を加重合成した角度の回転も実現できる。これらの処理は遅延の大きな偏角の算出を行わないため低遅延で処理でき、且つ、パイプラインCORDIC1つで処理できるため、低コストな回路を実現できる。
(第2実施形態)
第2実施形態では、上述の図3に示す構成の冗長部分を削減する構成について説明する。すなわち、正弦や余弦の計算と同様、同じ回転方向情報で回転角を何度も演算する意味は無く、1回演算すれば十分である。つまり、回転角θを演算するパイプラインを有する図3の構成には冗長な部分が存在する。
<装置構成>
図8は、第2実施形態に係る演算装置の構成を示す図である。演算ユニット801の構成は、図2に示す構成におけるy座標の回転演算の構成が変更されたものである。
演算ユニット801の回転モードのy座標演算パスにおいては、x座標演算パスからくるx座標のシフトデータを、arctan(2−i)なる角度の数値データに切り替える。具体的には、セレクタ805にて当該切り換えを行うことにより、y座標演算パスで回転角を演算できるようにする。
この、角度データに切り換え動作を「回転角演算モード」と呼ぶことにする。なお、角度データを数値表現する単位は何でもよく、例えばラジアン(radian)、度(degree)などの単位で演算すればよい。
また、図8においては、セレクタ805の制御信号を省略しているが、パイプライン中の座標データの移動と同期して切り換える必要がある。ただし、モード情報と同様、各演算ユニットで1サイクル遅延させて次段の演算ユニットに制御信号を送る必要がある。
このようにy座標演算パスに回転角の演算機能を組み込んだ構成では、当然ベクタモードの動作と回転角の演算を同時行うことが出来ない。そのため、一旦、ベクタモードで座標データの偏角を回転方向情報として保持し、ベクタモードを「回転角演算モード」に切り換えて、保持した回転方向情報に基づき回転角を算出する。
ベクタモードを「回転角演算モード」に切り換えるタイミングは、レジスタ210で回転方向情報を保持している間、すなわち回転モードの間であれば、先頭でも最後でもどちらでもよい。
以下に、共通する回転方向情報に関する一連の処理の2つの例を挙げる。
1つは、「1サイクルのベクタモード」で始まり、「回転角演算モードに1サイクル」、「正弦・余弦演算に1サイクル」、「K個の座標データの回転にKサイクル」を順に処理する処理である(合計(K+3)サイクル)。
もう1つは、「1サイクルのベクタモード」で始まり、「K個の座標データの回転にKサイクル」、「回転角演算モードに1サイクル」を順に処理する処理である(合計(K+2)サイクル)。
なお、回転角演算機能はy座標演算パスでなくx座標演算パス側に付加した構成も考えられる。さらに、回転角演算機能をy座標演算パスとx座標演算パスの両方に付加し、各々単位の異なる角度を算出することも考えられる。
なお、第2実施形態におけるCORDIC演算を行うパイプラインにおいては、動作モードは座標データと共に1サイクル毎に下流の演算ユニット伝搬していく。すなわち全部の演算ユニットが同一のモードで動作するとは限らない。よって、上述の「○○モードに1サイクル」という表現は、複数段ある演算ユニットの中のある演算ユニット、例えば初段の演算ユニットに着目した時の動作を表しているおり、パイプライン全体の動作を表しているわけではない。
(変形例3)
変形例3では、第2実施例と同一の構成において、制御の仕方を変えることにより別の機能を実現する例について説明する。
上述の第2実施形態では、回転モードにおけるy座標演算パスの演算機能を回転角の演算に切り換えた。一方、変形例3においては、ベクタモードの制御の元でy座標演算パスの演算機能を回転角の演算に切り換える。通常のベクタモードではy座標値の符号によって回転方向が決まるが、上述の制御状態では、y座標演算パスの演算対象である回転角の符号によって回転方向が決まる。
よって、図8の構成において、判定制御をベクタモードのままで、y座標演算パスの演算機能を回転角の演算機能に切り換えると、入力した回転角を0度(x軸)に向かせるための回転方向情報に逐次的に展開することができる。そして、回転方向情報をレジスタ210に取り込むことが可能になる。このように動作するモードを「回転角展開モード」と呼ぶことにする。
上述の第2実施形態と同様に、共通する回転方向情報に関する一連の処理の例を2つ挙げる。
1つは、「1サイクルの回転角展開モード」で始まり、「正弦・余弦演算に1サイクル」、「L個の座標データの回転にLサイクル」を順に処理する処理である(合計(L+2)サイクル)。
もう1つは、「1サイクルの回転角展開モード」で始まり、「L個の座標データの回転にLサイクル」を順に処理する処理である(合計(L+1)サイクル)。
(第3実施形態)
第3実施形態では、保持情報を直接出力し、回転方向情報を直接入力することができる演算装置について説明する。
上述の第1及び第2実施形態においては、レジスタ210に保持する回転方向情報は、ベクタモードで座標データから生成し、角分解モードで回転角などから生成していた。ただし、ベクタモードや回転角分解モードで生成した回転方向情報は、新たな回転方向情報が生成されると、置き換えられて消滅してしまう。すなわち、回転方向情報が再利用できるのは、次の新たな回転方向情報を生成するまでの間である。
回転方向情報を消滅させずに残す方法の1つは、回転方向情報を回転角に変換してパイプラインから出力し、パイプラインの外部で回転角を保持することである。この時、第2実施形態で示した構成で回転角に変換することが可能である。回転角がパイプラインに入力されると、角分解モードで再び回転方向情報に変換されてレジスタ210に保持される。しかしながら、回転方向情報のまま出力し、それをまた入力できるようにする方が合理的であると考えられる。
<装置構成>
図9は、第3実施形態に係る演算装置の構成を示す図である。図9(a)に示す構成では、前段の演算ユニットから受け取る回転方向情報を1ビット左シフトした後、当該演算ユニットの回転方向情報を最下位ビットに挿入する。これにより、回転方向情報を下位ビット方向へ順次連結し、連結情報として後段の演算ユニットに転送する。つまり、回転方向情報を(i+1)番目以降の演算ユニットに提供する。
演算ユニット毎に1ビットの回転方向情報を連結するため、パイプラインの最終段から出力する連結情報のビット数は、演算ユニットの個数(すなわちパイプラインの段数)に等しい。
回転方向情報を1ビット左シフトするのはビットシフト器905である。回転方向情報を最下位ビットに挿入するのはビット挿入器906である。挿入後の連結情報は、レジスタ907にて1サイクル期間保持される。
一旦出力した連結情報を入力する時は、当該連結情報の最上位ビットを取り出しセレクタ911で選択しレジスタ210に保持する。また、当該連結情報を1ビット左へシフトして次段の演算ユニットへ送る。
図9(a)は、図3の構成と同様、x座標やy座標の演算パスとは別に、回転方向情報を連結するパイプラインパスを設けた構成である。これにより、連結情報の入力と当該連結情報に基づく座標回転を同時処理することができる。さらに、入力した連結情報を1ビットずつ各演算ユニットで保持する際に、直前までレジスタ210に保持していた回転方向情報を、上段側から順次連結して出力することが可能である。つまり、連結情報の入力処理と出力処理を同時に行うことができる。
また、第2実施形態(図8)における構成と同様に、図9(a)における回転方向情報の連結パスをy座標演算パスと共通化して図9(b)に示す構成にすることもできる。演算ユニット921においては、y座標を計算する加減算器206とその結果を1サイクル保持するレジスタ208の間にセレクタ925を設け、連結情報と切り換える。この構成により、回転方向情報の連結パスをy座標演算パスと共通化している。
ところで、この場合、連結パスが減少する。そのため、座標データの回転と連結情報の入出力を同時に処理できなくなるため性能の低下が予想される。ただし、1サイクル後には座標回転を行うことができるため、性能の低下は僅かである。
図10は、第3実施形態に係る演算装置の他の構成を示す図である。図9(a)にて設けた回転方向情報を連結するパイプラインパスを、図8の構成に追加した構成に相当する。演算ユニット1001は、図8の演算ユニット801に対して、ビットシフト器905、ビット挿入器906、レジスタ907を追加した構成になっている。
当該構成によれば、レジスタ210に保持した回転方向情報は、座標データの回転に利用できる他に、正弦・余弦の組、偏角または連結情報としても出力できる。また、出力した連結情報をそのまま入力してレジスタ210に取り込める。そのため、出力した偏角等を用いて算出した角度を入力した場合は、入力後に回転方向情報へ展開してレジスタ210に取り込める。そして、正弦・余弦やベクタ用入力座標データから回転方向情報を生成しレジスタ210に取り込むことができる。簡単に言えば、保持した回転方向情報は4種類の形態で出力でき、保持する情報を4種類の形態で入力できる構成になっている。
(第4実施形態)
<正規化除算装置>
画像処理や検索エンジン,信号処理などの分野における問題は、連立一次方程式や固有問題を解くことに帰着される場合が多い。また、非線形な方程式の問題においても、問題を単純化し連立一次方程式の形に変形する場合も多くある。そのため、近年の画像処理,信号処理において連立一次方程式は数値計算の主な演算の一つとなっている。
連立一次方程式の有名な解法としてガウスの消去法やガウス・ジョルダンの消去法などが挙げられる。これらの手法は、連立一次方程式を行列表現した際の行や列を操作しながら、係数行列を上三角行列や単位行列などに変形して解を求めていく手法であるが、最終的な解を求める際に対角要素を「1」に変形する必要がある。そのため、何らかの手段を用いて対角要素を「1」に正規化し、正規化前の対角要素値に応じて他の要素を除算する必要がある。
例えば、特開平8−137834号公報には、CORDICと類似の構成を用いて正規化除算を実現する例が開示されている。具体的には、図1(a)と同等の構成を用いて、ベクトル(X,Y,Z)の各要素をL2ノルム(X+Y+Z1/2で除算を行う構成が示されている。この構成は、行列に対する正規化除算処理にも応用可能なものである。
このとき、CORDICにおける回転方向情報は、正規化除算における加減算の判定情報と対応づける事ができる。また、対角要素を「1」に正規化して加減算判定情報を保持するモードを「正規化モード」と定義した場合、CORDICのベクタモードに対応させることができる。同様に、同一の行の他の要素を前記加減算判定情報に基づいて正規化前の対角要素の値で除算するモードを「除算モード」と定義した場合、CORDICの回転モードに対応させることができる。
例えば、対象となる行列の対角要素を「1」に正規化し、同一の行の他の要素を対角要素値で除算するための演算手順は次のようになる。まず、正規化モードにて行列の対角要素(x)を入力1へ、ゼロを入力2へ与え、該要素値を「1」に正規化する加減算判定情報を保持する。その後、除算モードへ変更し、同一行の他の要素(x,s=1,2,3,・・・)を順次入力1へ、ゼロを入力2へ与える。処理段数Nの演算後の出力は、対角要素の正規化値「1」に続き、他の要素y=x/x(s=1,2,3,・・・)が出力されることになる。
入力1:x=x, 入力2:y=0
for i=0 to N−1 step 1
if y≧1 then
i+1=x
i+1=y−(2−(i+1))・x
else
i+1=x
i+1=y+(2−(i+1))・x
出力:y=1 ・・・(4)
<装置構成>
図11は、第4実施形態に係る演算装置の構成を示す図である。演算ユニット1101は、パイプラインを構成するi段目(i=0,1,2,3・・・)の演算ユニットの構成を表している。演算ユニット1101の前段には、前段側の演算ユニット群1102a、後段には、後段側の演算ユニット群1102bが配置されている。各演算ユニットの構成は演算ユニット1101と同様の構成である。
演算ユニット1101の構成について説明する。同演算ユニットにおいて、ビットシフト器1104は、入力されるx座標データxをiビット右シフトするビットシフト器である。加減算器1106は入力y座標データyにビットシフト器1104の出力を加減算する加減算器である。レジスタ1107は、xを1サイクル保持するレジスタであり、レジスタ1108は加減算器1106の出力データを1サイクル保持するレジスタである。これらの構成要素を用いて数式(4)の正規化演算を行い、その結果をレジスタ1108で保持する。
次に、第4実施形態に係る装置において新たに必要となる構成要素を説明する。レジスタ1110は、加減算判定情報を保持する1ビットのレジスタである。セレクタ1111は、入力されたデータyに応じて判定される加減算判定情報とレジスタ1110で保持した加減算判定情報との一方を選択するセレクタである。
信号線1112は、演算ユニットで処理中のデータの処理モードが正規化モードか除算モードであるかを表す1ビットのモード情報を配信するための信号線である。遅延器1113は、モード情報を1サイクル遅延させる遅延器である。比較器1114は、入力されたデータyと正規化値“1”とを比較し、加減算判定情報を出力する比較器である。
<装置の動作>
上述の構成要素を中心に正規化モードと除算モードの動作について説明する。具体的な動作として、正規化モード1サイクルに続き除算モードで6サイクル処理する例を紹介する。
動作モードを変更するための制御信号としてモード情報を使用する。例えば、正規化モードとしてモード情報“1”を1サイクル、続いて除算モードとしてモード情報“0”を6サイクル、初段の演算ユニットに入力する。すなわち、モード情報“1”と同期して正規化用対角要素データを1つ、それに続けて、モード情報“0”と同期して同一の行の他の要素データを6つを、データxとして順次入力する。この時、データyへは“0”を順次入力する。n段パイプライン処理後、データyに正規化された値“1”が出力される。
各演算ユニットはモード情報“1”が入力されると正規化モードとして動作する。正規化モードでは、比較器1114の出力に基づいて加減算器1105,1106の演算を制御するよう、セレクタ1111は、比較器1114の出力を選択する。その際、セレクタ1111の出力を、加減算判定情報を保持するためのレジスタ1110にも取り込む。パイプライン全体で保持される加減算判定情報を統合した正規化演算は、対角要素データの値による除算に対応したものになる。
各演算ユニットは、モード情報“0”が入力されると除算モードで動作する。除算モードでは、セレクタ1111はレジスタ1110に保持した加減算判定情報を選択し、当該加減算判定情報に基づいて入力データを加減算処理する。モード情報が“0”の間、加減算判定情報は保持され続けるので、連続して入力される6つの入力データに対して同一の加減算処理が施される。n段パイプライン処理後、正規化前の対角要素値で除算された値がデータyとして出力される。
図12は、正規化モード及び除算モードにおける計算の例を示す図である。図12(a)は、正規化モードにおける計算例を示しており、図12(b)は、除算モードにおける計算例を示している。
ここではパイプライン段数を「10」としている。正規化モードでは、図12(a)のようにデータy10においては、正規化された「1」が出力されている事が確認できる。また除算モードでは、正規化モードで設定された加減算判定情報を用いて計算を行っており、データy10においては、正規化前の要素にて除算された値が出力されている事が確認できる。
以上説明したとおり第4実施形態によれば、演算ユニット毎に、正規化モードで生成した加減算判定情報をレジスタに保持するよう構成する。そして、保持した加減算判定情報に基づいて除算演算を行う。
当該構成により、1つのパイプラインで、正規化モードと除算モードの両方を処理することができる。そのため、除算処理を、低コストな回路で効率よく処理することができる。具体的には、従来に比較し、ほぼ同等の処理性能を半分の回路規模で実現することが可能となる。
(第5実施形態)
第5実施形態では、保持情報を直接出力し、加減算判定情報を直接入力することが可能な演算装置について説明する。
正規化モードで生成した加減算判定情報は、当該加減算判定情報を次に生成するまでの間、保持手段に保持され続け、データの除算に利用される。しかしながら、新たな加減算判定情報が生成されると、それで置き換えられて消滅してしまう。
そこで、加減算判定情報のまま出力し、それを再入力できるようにする。具体的には、加減算判定情報を出力する際には、当該加減算判定情報を演算ユニット毎にビット連結してパイプラインから出力し、パイプラインの外部で当該加減算判定情報のビット列を保持させる。そして、当該加減算判定情報のビット列を入力する際には、該加減算判定情報ビット列を演算ユニット毎にビット抽出して保持手段に保持される。
<装置構成>
図13は、第5実施形態に係る演算装置の構成を示す図である。図13における構成では、前段演算ユニットから受け取る加減算判定情報を1ビット左シフトした後、当該演算ユニットの加減算判定情報を最下位ビットに挿入することにより加減算判定情報を下位ビット方向へ順次連結し、連結情報として出力する。演算ユニット毎に1ビットの加減算判定情報を連結するため、パイプラインの最終段から出力する連結情報のビット数は演算ユニットの個数(すなわちパイプラインの段数)に等しい。
加減算判定情報を1ビット左シフトするのはビットシフト器1305である。加減算判定情報を最下位ビットに挿入するのはビット挿入器1306である。挿入後の連結情報は、レジスタ1307にて1サイクル期間保持される。
一旦出力した連結情報を入力する時は、当該連結情報の最上位ビットを取り出しセレクタ1311で選択し保持手段に保持する。また、当該連結情報を1ビット左へシフトして次段の演算ユニットへ送る。
図13に示す構成においては、入力データxや入力データyの演算パスとは別に、加減算判定情報を連結するパイプラインパスを設けた。
当該構成により、連結情報の入力と、連結情報に基づく正規化除算演算と、を同時処理することができる。さらに、入力した連結情報を1ビットずつ各演算ユニットで保持する際に、直前まで保持手段に保持していた加減算判定情報を、上段側から順次連結して出力することが可能となる。つまり、連結情報の入力処理と出力処理を同時に行うことができる。
201 演算ユニット; 203,204 ビットシフト器; 205,206 加減算器; 207,208 レジスタ; 211 セレクタ; 210 1ビットレジスタ; 213 遅延器

Claims (9)

  1. 縦続接続したn個(nは2以上の整数)の演算ユニットを有する演算装置であって、
    各演算ユニットは、
    回転演算を行う回転モードまたは回転角を算出するベクタモードの何れかで動作する演算器と、
    前記演算器が前記ベクタモードで動作する際に出力される回転方向情報を保持する保持手段と、
    前段の演算ユニットから入力された回転角に基づいて後段の演算ユニットに出力する回転角を算出する角度演算手段と、
    を有し、
    前記演算器は、前記回転モードで動作する際、前段の演算ユニットから入力されたデータに対して前記保持手段に保持された回転方向情報に基づいて回転演算を行い、
    i番目(iはn以下の自然数)の演算ユニットにおいて、
    前記角度演算手段は、前記演算器に含まれる1つの演算パスを利用して構成され、該角度演算手段は、arctan(2 −i )と(i−1)番目の演算ユニットから入力された回転角とに基づいて(i+1)番目の演算ユニットに出力する回転角を算出する
    ことを特徴とする演算装置。
  2. 前記演算ユニット毎の前記保持手段に保持された回転方向情報をビット連結して出力する出力手段を更に有する
    ことを特徴とする請求項に記載の演算装置。
  3. 前記出力手段は、各演算ユニットにおいて、
    前段の演算ユニットから入力された回転方向情報と前記保持手段に保持された回転方向情報とをビット連結して後段の演算ユニットに出力する
    ことを特徴とする請求項に記載の演算装置。
  4. 前記演算器は、複数の回転演算方法を実行可能に構成されており、該複数の回転演算方法の回転角が整数比の関係にある
    ことを特徴とする請求項1又は3に記載の演算装置。
  5. 前記演算器は、前記回転モードと前記ベクタモードとでそれぞれ異なる回転演算方法を実行可能である
    ことを特徴とする請求項に記載の演算装置。
  6. 前記演算器は、ダブルローテーション型CORDIC演算器として構成され、arctan(2−i)の演算を行うシングル型演算と、2・arctan(2−i)の演算を行うダブル型演算と、を実行可能に構成されており、
    前記ダブルローテーション型CORDIC演算器は、(i−1)番目の演算ユニットから入力されたモード信号に応じて前記シングル型演算及び前記ダブル型演算の何れかで時分割動作するように構成され、
    前記ベクタモードでの前記シングル型演算と前記回転モードでの前記ダブル型演算とを組み合わせることにより、偏角の2倍の回転演算を行い、前記ベクタモードでの前記ダブル型演算と前記回転モードでの前記シングル型演算とを組み合わせることにより、偏角の1/2倍の回転演算を行う、よう構成されている
    ことを特徴とする請求項に記載の演算装置。
  7. 前記保持手段は、前記ベクタモードの動作により第1のデータに対して出力される第1の回転方向情報と第2のデータに対して出力される第2の回転方向情報とを保持するよう構成されており、
    前記演算器は、前記回転モードで動作する際、前記第1の回転方向情報と前記第2の回転方向情報とに基づいて回転演算を行う
    ことを特徴とする請求項に記載の演算装置。
  8. 前記ダブルローテーション型CORDIC演算器は、前記第1の回転方向情報と前記第2の回転方向情報とを出力した際のベクタモードでの動作が前記シングル型演算であったか前記ダブル型演算であったか否かに基づいて、前記第1の回転方向情報に対する重みと前記第2の回転方向情報に対する重みとを決定し、該決定された重みを用いて回転演算を行う
    ことを特徴とする請求項に記載の演算装置。
  9. 縦続接続したn個(nは2以上の整数)の演算ユニットを有する演算装置の制御方法であって、
    各演算ユニットは、回転演算を行う回転モードまたは回転角を算出するベクタモードの何れかで動作する演算器を有しており、
    前記演算器を前記ベクタモードで動作させ、出力される回転方向情報をレジスタに保持する保持工程と、
    前段の演算ユニットから入力された回転角に基づいて後段の演算ユニットに出力する回転角を算出する角度演算工程と、
    前記演算器を前記回転モードで動作させ、前段の演算ユニットから入力されたデータに対して前記レジスタに保持された回転方向情報に基づいて回転演算を行う回転演算工程と、
    を含み、
    i番目(iはn以下の自然数)の演算ユニットにおいて、
    前記角度演算工程は、前記演算器に含まれる1つの演算パスを利用して実行され、該角度演算工程では、arctan(2 −i )と(i−1)番目の演算ユニットから入力された回転角とに基づいて(i+1)番目の演算ユニットに出力する回転角を算出する
    ことを特徴とする演算装置の制御方法。
JP2014116196A 2014-06-04 2014-06-04 演算装置およびその制御方法 Active JP6335661B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014116196A JP6335661B2 (ja) 2014-06-04 2014-06-04 演算装置およびその制御方法
US14/729,410 US9959094B2 (en) 2014-06-04 2015-06-03 Arithmetic apparatus and control method of the same using cordic algorithm

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014116196A JP6335661B2 (ja) 2014-06-04 2014-06-04 演算装置およびその制御方法

Publications (3)

Publication Number Publication Date
JP2015230561A JP2015230561A (ja) 2015-12-21
JP2015230561A5 JP2015230561A5 (ja) 2017-07-20
JP6335661B2 true JP6335661B2 (ja) 2018-05-30

Family

ID=54769621

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014116196A Active JP6335661B2 (ja) 2014-06-04 2014-06-04 演算装置およびその制御方法

Country Status (2)

Country Link
US (1) US9959094B2 (ja)
JP (1) JP6335661B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6581359B2 (ja) 2015-01-07 2019-09-25 キヤノン株式会社 情報処理装置及びその制御方法及びプログラム及び記憶媒体、並びに、ビデオカメラ
JP6750857B2 (ja) * 2016-06-14 2020-09-02 キヤノン株式会社 座標データ回転演算装置及び座標データ回転演算方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4896287A (en) 1988-05-31 1990-01-23 General Electric Company Cordic complex multiplier
EP0365226A3 (en) * 1988-10-17 1991-02-20 Raytheon Company Cordic apparatus and method for approximating the magnitude and phase of a complex number
WO2009110560A1 (ja) * 2008-03-06 2009-09-11 日本電気株式会社 Cordic演算回路及び方法
JP2009281883A (ja) * 2008-05-22 2009-12-03 Toshiba Mach Co Ltd 速度検出装置およびサーボモータ
US8332451B2 (en) * 2008-11-27 2012-12-11 Redpine Signals, Inc. Programmable CORDIC Processor
WO2011162310A1 (ja) * 2010-06-23 2011-12-29 日本電気株式会社 プロセッサおよび演算方法
US8775493B2 (en) * 2011-04-13 2014-07-08 Lsi Corporation Double-step CORDIC processing for conventional signed arithmetic with decision postponing

Also Published As

Publication number Publication date
US20150355885A1 (en) 2015-12-10
JP2015230561A (ja) 2015-12-21
US9959094B2 (en) 2018-05-01

Similar Documents

Publication Publication Date Title
CN109358900B (zh) 支持离散数据表示的人工神经网络正向运算装置和方法
CN110188870B (zh) 用于执行人工神经网络自学习运算的装置和方法
Shukla et al. Low latency hybrid CORDIC algorithm
US11150872B2 (en) Computational units for element approximation
US20210157550A1 (en) Computational Units for Batch Normalization
CN108897716B (zh) 通过存储器读写操作来缩减计算量的数据处理装置及方法
WO2017177442A1 (zh) 支持离散数据表示的人工神经网络正向运算装置和方法
US11922133B2 (en) Processor and method for processing mask data
Chinnathambi et al. FPGA implementation of fast and area efficient CORDIC algorithm
JP6335661B2 (ja) 演算装置およびその制御方法
CN112783469A (zh) 一种用于执行浮点指数运算的方法及装置
US20050131975A1 (en) Function arithmetic method and function arithmetic circuit
US8549056B2 (en) Apparatus and program for arctangent calculation
JP5229314B2 (ja) Cordic演算回路及び方法
US7047269B2 (en) Cordic method and architecture applied in vector rotation
WO2017177446A1 (zh) 支持离散数据表示的人工神经网络反向训练装置和方法
JP3003467B2 (ja) 演算装置
US20070198811A1 (en) Data-driven information processor performing operations between data sets included in data packet
JP6428488B2 (ja) 加減算器及び加減算器の制御方法
CN109634556B (zh) 一种乘累加器及累加输出方法
Kuchukov et al. The application of modular arithmetic for matrix calculations
JP2017123057A (ja) 座標演算装置及び座標演算方法
US11231908B2 (en) Random number generation device and random number generation method
TWI444889B (zh) 複數除法器及其相關方法
JP2018092325A (ja) 演算処理装置

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170605

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170605

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180126

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180323

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180501

R151 Written notification of patent or utility model registration

Ref document number: 6335661

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151