(57)【要約】【課題】演算回路を効率的に利用可能な演算装置を実現する。【解決手段】縦続接続した複数の演算ユニットを有する演算装置において、各演算ユニットは、回転演算を行う回転モードまたは回転角を算出するベクタモードの何れかで動作する演算器と、演算器がベクタモードで動作する際に出力される回転方向情報を保持する保持手段と、を有する。演算器は、回転モードで動作する際、前段の演算ユニットから入力されたデータに対して保持手段に保持された回転方向情報に基づいて回転演算を行う。【選択図】図２
2015230561.tif 000002
【特許請求の範囲】
【請求項１】
縦続接続した複数の演算ユニットを有する演算装置であって、
各演算ユニットは、
回転演算を行う回転モードまたは回転角を算出するベクタモードの何れかで動作する演算器と、
前記演算器が前記ベクタモードで動作する際に出力される回転方向情報を保持する保持手段と、
を有し、
前記演算器は、前記回転モードで動作する際、前段の演算ユニットから入力されたデータに対して前記保持手段に保持された回転方向情報に基づいて回転演算を行う
ことを特徴とする演算装置。
【請求項２】
前記演算ユニットは、前段の演算ユニットから入力された回転角に基づいて後段の演算ユニットに出力する回転角を算出する角度演算手段を更に有する
ことを特徴とする請求項１に記載の演算装置。
【請求項３】
前記演算装置はｎ個（ｎは２以上の整数）の演算ユニットを有し、
ｉ番目（ｉはｎ以下の自然数）の演算ユニットにおいて、
前記角度演算手段は、前記演算器に含まれる１つの演算パスを利用して構成され、該角度演算手段は、ａｒｃｔａｎ（２−ｉ）と（ｉ−１）番目の演算ユニットから入力された回転角とに基づいて（ｉ＋１）番目の演算ユニットに出力する回転角を算出する
ことを特徴とする請求項２に記載の演算装置。
【請求項４】
前記演算ユニット毎の前記保持手段に保持された回転方向情報をビット連結して出力する出力手段を更に有する
ことを特徴とする請求項１乃至３の何れか一項に記載の演算装置。
【請求項５】
前記出力手段は、各演算ユニットにおいて、
前段の演算ユニットから入力された回転方向情報と前記保持手段に保持された回転方向情報とをビット連結して後段の演算ユニットに出力する
ことを特徴とする請求項４に記載の演算装置。
【請求項６】
前記演算器は、複数の回転演算方法を実行可能に構成されており、該複数の回転演算方法の回転角が整数比の関係にある
ことを特徴とする請求項１乃至４の何れか一項に記載の演算装置。
【請求項７】
前記演算器は、前記回転モードと前記ベクタモードとでそれぞれ異なる回転演算方法を実行可能である
ことを特徴とする請求項６に記載の演算装置。
【請求項８】
前記演算器は、ダブルローテーション型ＣＯＲＤＩＣ演算器として構成され、ａｒｃｔａｎ（２−ｉ）の演算を行うシングル型演算と、２・ａｒｃｔａｎ（２−ｉ）の演算を行うダブル型演算と、を実行可能に構成されており、
前記ダブルローテーション型ＣＯＲＤＩＣ演算器は、（ｉ−１）番目の演算ユニットから入力された前記モード信号に応じて前記シングル型演算及び前記ダブル型演算の何れかで時分割動作するように構成され、
前記ベクタモードでの前記シングル型演算と前記回転モードでの前記ダブル型演算とを組み合わせることにより、偏角の２倍の回転演算を行い、前記ベクタモードでの前記ダブル型演算と前記回転モードでの前記シングル型演算とを組み合わせることにより、偏角の１／２倍の回転演算を行う、よう構成されている
ことを特徴とする請求項７に記載の演算装置。
【請求項９】
前記保持手段は、前記ベクタモードの動作により第１のデータに対して出力される第１の回転方向情報と第２のデータに対して出力される第２の回転方向情報とを保持するよう構成されており、
前記演算器は、前記回転モードで動作する際、前記第１の回転方向情報と前記第２の回転方向情報とに基づいて回転演算を行う
ことを特徴とする請求項８に記載の演算装置。
【請求項１０】
前記ダブルローテーション型ＣＯＲＤＩＣ演算器は、前記第１の回転方向情報と前記第２の回転方向情報とを出力した際のベクタモードでの動作が前記シングル型演算であったか前記ダブル型演算であったか否かに基づいて、前記第１の回転方向情報に対する重みと前記第２の回転方向情報に対する重みとを決定し、該決定された重みを用いて回転演算を行う
ことを特徴とする請求項９に記載の演算装置。
【請求項１１】
縦続接続した複数の演算ユニットを有する演算装置であって、
各演算ユニットは、
正規化モードまたは除算モードの何れかで動作する演算器と、
前記演算器が前記正規化モードで動作する際に出力される加減算判定情報を保持する保持手段と、
を有し、
前記演算器は、前記除算モードで動作する際、前段の演算ユニットから入力されたデータに対して前記保持手段に保持された加減算判定情報に基づいて除算演算を行う
ことを特徴とする演算装置。
【請求項１２】
前記演算ユニットは、前記保持手段に保持された回転方向情報を後段の演算ユニットに提供するための転送手段を更に有し、
前記転送手段は、前段の演算ユニットから入力された加減算判定情報と前記保持手段に保持された加減算判定情報とをビット連結して後段の演算ユニットに出力する加減算判定情報を生成する
ことを特徴とする請求項１１に記載の演算装置。
【請求項１３】
縦続接続した複数の演算ユニットを有する演算装置の制御方法であって、
各演算ユニットは、回転演算を行う回転モードまたは回転角を算出するベクタモードの何れかで動作する演算器を有しており、
前記演算器を前記ベクタモードで動作させ、出力される回転方向情報をレジスタに保持する保持工程と、
前記演算器を前記回転モードで動作させ、前段の演算ユニットから入力されたデータに対して前記レジスタに保持された回転方向情報に基づいて回転演算を行う回転演算工程と、
を含むことを特徴とする演算装置の制御方法。
【請求項１４】
縦続接続した複数の演算ユニットを有する演算装置の制御方法であって、
各演算ユニットは、正規化モードまたは除算モードの何れかで動作する演算器を有しており、
前記演算器を前記正規化モードで動作させ、出力される加減算判定情報をレジスタに保持する保持工程と、
前記演算器を前記除算モードで動作させ、前段の演算ユニットから入力されたデータに対して前記レジスタに保持された加減算判定情報に基づいて除算演算を行う除算演算工程と、
を含むことを特徴とする演算装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル信号処理に基づく演算装置に関するものである。
【背景技術】
【０００２】
複素平面上での複素データの座標回転や、２次元平面上での２次元座標データの座標回転を、ビットシフトと加減算のみで実現する「ＣＯＲＤＩＣ（COordinate Rotation DIgital Computer）」と呼ばれる演算アルゴリズムが非特許文献１に開示されている。また、近年、信号処理の高度化により、信号の多次元化が進み、多次元連立方程式を解いて最適解等を求める処理を、リアルタイムで行う要求が出てきた。そのため、演算精度や処理性能が高い演算装置が要求されている。
【０００３】
例えば、上述のＣＯＲＤＩＣを用いる場合、２０ビット以上の演算で２０段以上のパイプライン構成のＣＯＲＤＩＣを何十個も必要となることがある。ただし、高い周波数で安定に動作させる必要があるため、より回路規模の小さいコンパクトなＣＯＲＤＩＣが要求されている。
【０００４】
そこで、非特許文献２及び特許文献１には、ＣＯＲＤＩＣにおいて、座標回転演算を効率的かつ低遅延に処理可能とする技術が開示されている。更に、ダブルローテーションＣＯＲＤＩＣと呼ばれる改良技術が非特許文献３に開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３２８３５０４号公報
【非特許文献】
【０００６】
【非特許文献１】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
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、実際の演算内容を考慮すると、上述した従来のＣＯＲＤＩＣ構成の演算装置におけるベクタモード演算性能は冗長であると考えられる。
【０００８】
すなわち、行列の線形代数処理においては、２次元座標データの偏角を検出するベクタモードの演算に対し、検出した偏角に基き座標データを回転する回転モードの演算の数が圧倒的に多い。一方、上述の従来技術で開示されている演算装置におけるＣＯＲＤＩＣでは、偏角を検出するベクタモード演算性能と、検出した偏角に基づき座標データを回転する回転モード演算性能とが同等である。すなわち、偏角を検出するベクタモード演算性能が冗長になっており、演算リソースが有効利用されていないと考えられる。
【０００９】
本発明は上述の問題点に鑑みなされたものであり、演算回路を効率的に利用可能とし回路規模の小さい演算装置を実現することを目的としている。
【課題を解決するための手段】
【００１０】
上述の問題点を解決するため、本発明に係る演算装置は以下の構成を備える。すなわち、縦続接続した複数の演算ユニットを有する演算装置において、各演算ユニットは、回転演算を行う回転モードまたは回転角を算出するベクタモードの何れかで動作する演算器と、前記演算器が前記ベクタモードで動作する際に出力される回転方向情報を保持する保持手段と、を有し、前記演算器は、前記回転モードで動作する際、前段の演算ユニットから入力されたデータに対して前記保持手段に保持された回転方向情報に基づいて回転演算を行う。
【００１１】
又は、縦続接続した複数の演算ユニットを有する演算装置において、各演算ユニットは、正規化モードまたは除算モードの何れかで動作する演算器と、前記演算器が前記正規化モードで動作する際に出力される加減算判定情報を保持する保持手段と、を有し、前記演算器は、前記除算モードで動作する際、前段の演算ユニットから入力されたデータに対して前記保持手段に保持された加減算判定情報に基づいて除算演算を行う。
【発明の効果】
【００１２】
本発明によれば、演算回路を効率的に利用可能とし回路規模の小さい演算装置を実現することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】パイプライン構成のＣＯＲＤＩＣを説明する図である。
【図２】第１実施形態に係る演算装置の構成を示す図である。
【図３】第１実施形態に係る演算装置の他の構成を示す図である。
【図４】変形例１における演算ユニットの構成を示す図である。
【図５】回転倍率の設定の例を示す図である。
【図６】変形例２における演算ユニットの構成を示す図である。
【図７】回転方向情報の入出力間の対応、及び、無回転を表す制御信号の関係を表している。
【図８】第２実施形態に係る演算装置の構成を示す図である。
【図９】第３実施形態に係る演算装置の構成を示す図である。
【図１０】第３実施形態に係る演算装置の他の構成を示す図である。
【図１１】第４実施形態に係る演算装置の構成を示す図である。
【図１２】正規化モード及び除算モードにおける計算の例を示す図である。
【図１３】第５実施形態に係る演算装置の構成を示す図である。
【発明を実施するための形態】
【００１４】
以下に、図面を参照して、この発明の好適な実施の形態を詳しく説明する。なお、以下の実施の形態はあくまで例示であり、本発明の範囲を限定する趣旨のものではない。
【００１５】
（第１実施形態）
本発明に係る演算装置の第１実施形態として、ＣＯＲＤＩＣアルゴリズムを利用する演算装置を例に挙げて以下に説明する。特に、以下の説明においては、同一の演算ユニットをｎ個（ｎは２以上の整数）縦続接続したパイプライン構成の演算装置について説明する。
【００１６】
＜ＣＯＲＤＩＣアルゴリズム＞
まず、ＣＯＲＤＩＣアルゴリズムについて簡単に説明する。ＣＯＲＤＩＣは、ａｒｃｔａｎ（２−ｎ）（ｎ＝０，１，２，３・・・）なる角度系列の回転をビットシフトと加減算のみで繰り返し行い、２次元座標（２次元ベクトル）を回転させ所望の角度に収束させるものである。なお、ＣＯＲＤＩＣの動作モードには、ベクタモードと回転モードの２種類があり、時分割動作するように構成される。ベクタモードは２次元座標を極座標に変換し、２次元座標の原点からの距離（絶対値）と偏角を出力する。一方、回転モードでは、ベクタモードで得られた偏角や当該偏角を用いて演算して出した角度などを回転角として入力し、他の入力座標データを当該回転角だけ回転した座標データを出力する。どちらのモードにおいても角度系列の回転を繰り返し行う。
【００１７】
ベクタモードから回転モードへ送る情報は、一般的に度（degree）やラジアン（radian）で表した偏角である。ベクタモードで偏角を出力する際、各座標回転演算に対応する角度に変換し、それらを、回転方向に応じて加減算した累算結果を出力している。なお、偏角は人間にとって分かり易い表現であるが、そのままでは座標回転演算に使うことができない。そのため、回転モードでは当該偏角をベクタモード時の回転方向を表す情報に戻して、座標回転演算の制御に用いている。
【００１８】
図１は、非特許文献２で利用される従来のパイプライン構成のＣＯＲＤＩＣ演算器を説明する図である。図１（ａ）に示すように、従来のパイプライン構成のＣＯＲＤＩＣ演算器においては、ベクタモードのパイプラインと回転モードのパイプライン２つのパイプラインが配置される。当該２つのパイプラインの間で、回転方向を表す２値情報が、ベクタモードの演算ユニットから対応する回転モードの演算ユニットへ送られている。
【００１９】
図１（ｂ）にパイプラインのｉ番目の演算ユニットの回路構成を示す。ｉは、一般には、ｎ以下の自然数であるが、ここではｉ＝０，１，２，３・・・ｎ−１とする。図において、入力データｘｉ’，ｙｉ’は、ベクタモードで動作する演算ユニットに対して入力される座標データである。ベクタモードで動作する演算ユニットは、当該データを受けて２つのシフト回路と２つの加減算器でベクタモードの演算を行う。また、入力データｘｉ，ｙｉは、回転モードで動作する演算ユニットに対して入力されるデータである。回転モードで動作する演算ユニットは、当該データを受けて２つのシフト回路と２つの加減算器で回転モードの演算を行う。
【００２０】
このとき、座標回転の方向はｙｉ’データの符号ｓｉｇｎ（ｙｉ’）で決まる。すなわち、座標データ（ｘｉ’，ｙｉ’）が第１象限または第４象限にあると仮定すると、ｓｉｇｎ（ｙｉ’）＝０なら右回転、ｓｉｇｎ（ｙｉ’）＝１なら左回転となる回転演算を行う。そして、同一方向の回転演算を回転用データｘｉ，ｙｉにも適用する。
【００２１】
例えば、回転用データｘｉ，ｙｉを右回転して、ｘｉ＋１，ｙｉ＋１を得る演算は、次のようになる。
【００２２】
ｘｉ＋１＝ｘｉ＋（２−ｉ）・ｙｉ
ｙｉ＋１＝ｙｉ−（２−ｉ）・ｘｉ      ・・・（１）
【００２３】
左辺のデータは次段（すなわち（ｉ＋１）段目）の演算ユニットの入力データとなる。右辺の（２−ｉ）を乗算したデータは乗算対象データであるｘｉ，ｙｉをｉビット右シフトする回路を介して得られる。一方、左回転する時は右辺における加算を減算に、減算を加算に切り換えて演算する。
【００２４】
なお、上述の回転演算においては、簡易な演算を特徴としているため正規化されておらず、演算の度にデータが√（１＋２−２ｉ）だけ拡大してしまう。演算の段数に応じトータルの拡大倍率が決まるため、全回転演算を終えたところで、所定の係数を乗ずるなどして補正している。この補正は一般的にスケーリング補正と呼ばれている。
【００２５】
＜装置構成＞
ベクタモードと回転モードで処理が完結する場合（すなわち偏角を外部で必要としない場合）、回転方向の情報をベクタモードで偏角に変換し、回転モードでまた元の回転方向情報に戻す処理は冗長な処理である。そのため、回転方向情報を直接送ることにより、座標回転演算を効率的に行える上、偏角への変換・逆変換が不要になる分、低遅延の処理が可能になることが期待できる。
【００２６】
図２は、第１実施形態に係る演算装置の構成を示す図である。演算ユニット２０１は、パイプラインを構成するｉ段目（ｉ＝０，１，２，３・・・）の演算ユニットの構成を表している。演算ユニット２０１の前段には、前段側の演算ユニット群２０２ａ、後段には、後段側の演算ユニット群２０２ｂが配置されている。各演算ユニットの構成は演算ユニット２０１と同様の構成である。図２においては、７段の演算ユニットを例示しているが、２段以上の任意の段数で構成可能である。
【００２７】
演算ユニット２０１の構成について説明する。同演算ユニットにおいて、ビットシフト器２０３は、入力されるｙ座標データをｉビット右シフトするビットシフト器である。また、ビットシフト器２０４は、入力されるｘ座標データをｉビット右シフトするビットシフト器である。更に、加減算器２０５は入力ｘ座標データにビットシフト器２０３の出力を加減算する加減算器である。加減算器２０６は入力ｙ座標データにビットシフト器２０４の出力を加減算する加減算器である。
【００２８】
レジスタ２０７は、加減算器２０５の出力である回転後のｘ座標値を１サイクル保持するレジスタである。レジスタ２０８は、加減算器２０６の出力である回転後のｙ座標値を１サイクル保持するレジスタである。
【００２９】
以上の６つの素子は、通常のＣＯＲＤＩＣでも必須となる構成要素である。これらの素子を用いて上述の数式（１）の座標回転演算を行い、その結果をレジスタ２０７、２０８で保持する。
【００３０】
次に、第１実施形態に係る装置において新たに必要となる構成要素を説明する。レジスタ２１０は、回転方向情報を保持するための１ビットのレジスタである。セレクタ２１１は、入力ｙ座標値の符号（ｓｉｇｎ（ｙ））とレジスタ２１０で保持した回転方向情報との一方を選択するセレクタである。
【００３１】
信号線２１２は、演算ユニットで回転処理中の座標データの処理モードがベクタモードか回転モードであるかを表す１ビットのモード情報を配信する信号線である。遅延器２１３は、モード情報を１サイクル遅延させる遅延器である。
【００３２】
＜装置の動作＞
以下では、演算ユニット２０１のベクタモードと回転モードの動作について説明する。具体的な動作として、ベクタモード１サイクルに続き回転モードで６サイクル処理する例を紹介する。
【００３３】
上述のように、動作モードを変更するための制御信号としてモード情報を使用する。例えば、ベクタモードとしてモード情報“１”を１サイクル、続いて回転モードとしてモード情報“０”を６サイクル、初段の演算ユニットに入力する。すなわち、モード情報“１”と同期してベクタ演算用の座標データを１つ、それに続けて、モード情報“０”と同期して回転演算用の座標データを６つを座標データとして順次入力する。
【００３４】
各演算ユニットは、モード情報“１”が入力されるとベクタモードで動作する。ベクタモードでは従来と同様、ｓｉｇｎ（ｙ）に基づいて加減算器２０５，２０６の演算を制御するよう、セレクタ２１１は、ｓｉｇｎ（ｙ）を選択する。その際、セレクタ２１１の出力を、回転方向情報を保持するためのレジスタ２１０にも取り込む。パイプライン全体で保持される回転方向情報を統合した回転演算は、ベクタ演算用の座標データの偏角に対応したものになる。
【００３５】
各演算ユニットは、モード情報“０”が入力されると回転モードで動作する。回転モードでは、セレクタ２１１はレジスタ２１０に保持した回転方向情報を選択し、当該回転方向情報に基づいて座標データを回転処理する。モード情報が“０”の間、回転方向情報は保持され続けるので、連続して入力される６つの座標データに対して同一の回転演算が施される。
【００３６】
回転モードにおいて、座標データとして（１，０）を入力すると、当該座標データはパイプライン全体でベクタモードで検出偏角θだけ回転され、（ｓｉｎ（θ），ｃｏｓ（θ））が回転結果として出力される。この時、（１，０）にＣＯＲＤＩＣ特有のスケーリング補正係数をあらかじめ乗じた値を入力することも可能である。出力される回転結果の値は、ベクタモードで処理した座標データの単位方向ベクトルを表し、乗算器を使った２次元回転処理等に利用することができる。ただし、同じ回転方向情報で正弦や余弦の値を何度も演算する意味は無く、１回演算すれば十分である。よって、（１，０）の座標データを入力するのは１サイクルのみでよい。
【００３７】
＜回転角θを演算するパイプラインの追加＞
ベクタモードや回転モード、それに正弦・余弦演算機能があれば、種々の処理に対応できる。ただし、座標データの偏角の値を知ることはできない。そこで、偏角を知るために回転角θを演算するパイプラインを付け加えれるとよい。
【００３８】
図３は、第１実施形態に係る演算装置の他の構成を示す図である。図２の構成に対し、回転角θを演算するパイプラインを付け加えた構成に相当する。各演算ユニットは３０１に示した構成になる。演算ユニット３０１に追加された加減算器３１１で、回転方向に応じ角度系列を加減算し、レジスタ３１３で１サイクル保持して、次段の演算ユニットへ出力する。
【００３９】
当該演算ユニットにおいては、従来のＣＯＲＤＩＣにおける動作と同様に、入力する回転角θに基づき入力座標データを回転する時、当該回転角から回転方向情報を逐次生成する。そして、生成した回転方向情報に基づき演算ユニットの加減算を制御する。
【００４０】
具体的には、図３において追加したパイプラインは従来の角度演算パスとほぼ同じである。そのため、入力回転角から回転方向情報を逐次生成するには、追加した演算パスのデータの符号、すなわちｓｉｇｎ（θｉ）をセレクタ２１１で選択できるようにするだけでよい。
【００４１】
選択したｓｉｇｎ（θｉ）をレジスタ２１０にて保持するように構成すれば、ｓｉｇｎ（θｉ）を入力座標データの回転演算に利用することができる。具体的には、ｓｉｇｎ（ｙｉ）の場合と同様にレジスタ２１０への配線を１本加えるだけであるため、図示は省略する。回転演算の回転角が同一である間は、レジスタ２１０に保持した情報を利用可能である。そのため、回転演算の回転角が同一である間は、パイプラインへの回転角の入力を休止することができる。
【００４２】
最後に、図１（ａ）に示した２つのパイプラインＣＯＲＤＩＣの内、上段のパイプラインＣＯＲＤＩＣを図２のパイプラインＣＯＲＤＩＣへ置換えた場合の処理について説明する。図２のパイプラインＣＯＲＤＩＣには図１（ａ）の下段のパイプラインへ出力する回転方向情報を明示していないが、これまでの説明からセレクタ２１１の出力を下段へ出力すればよいことが分かる。ここでは、１つの偏角に基づいて９個の座標データを回転する場合について説明する。
【００４３】
１サイクル目では、上段でベクタ演算、下段で回転演算を行い、２サイクル〜５サイクル目では、上段と下段の両方で回転演算を行うようモード等を設定する。つまり、５サイクル期間でパイプラインＣＯＲＤＩＣへデータ入力を行う。その結果、パイプライン段数に相当するサイクル後の５サイクル期間で、入力座標データを回転した座標データがパイプラインから出力される。
【００４４】
以上説明したとおり第１実施形態によれば、パイプライン型ＣＯＲＤＩＣを構成する演算ユニット毎に、ベクタモードで生成した回転方向情報をレジスタに保持するよう構成する。そして、保持した回転方向情報に基づいて座標データの回転演算を行う。
【００４５】
当該構成により、１つのパイプラインＣＯＲＤＩＣで、ベクタモードと回転モードの両方を処理することができる。そのため、ベクタモードで検出した偏角で複数の座標データを回転する処理を、低コストな回路で効率よく処理することができる。具体的には、従来に比較し、ほぼ同等の処理性能を半分の回路規模で実現することが可能となる。
【００４６】
（変形例１）
変形例１として、非特許文献３に開示されているダブルローテーション型ＣＯＲＤＩＣを元とした構成について説明する。
【００４７】
＜ダブルローテーション型ＣＯＲＤＩＣ＞
ダブルローテーション型ＣＯＲＤＩＣは、θ／２回転を２回行う事によりθ回転を実現する構成である。その場合、ある条件下で無回転を実現することが可能となる。そのため、各ステージの回転は３つの回転角（＋θ，０，−θ）の中から選択する事ができ演算精度の向上に寄与する。また、スケーリンング補正に用いる係数が従来よりも簡易なものとなるという利点もある。
【００４８】
例えば、回転用データｘｉ，ｙｉを右回転して、ｘｉ＋１，ｙｉ＋１を得る演算は、次のようになる。
【００４９】
ｘｉ＋１＝（１−２−２ｉ）・ｘｉ＋（２−（ｉ−１））・ｙｉ
ｙｉ＋１＝（１−２−２ｉ）・ｙｉ−（２−（ｉ−１））・ｘｉ      ・・・（２）
【００５０】
左辺のデータは次段の演算ユニットの入力データとなる。また、右辺の（２−ｉ）を乗算したデータは乗算対象データであるｘｉ，ｙｉをｉビット右シフトする回路を介して得られる。一方、左回転する時は右辺における加算を減算に、減算を加算に切り換えて演算する。
【００５１】
上述の演算におけるデータの拡大倍率は（１＋２−２ｉ）であり、この拡大はビットシフトと加算のみで実現できる。そのため、無回転の場合は上述の数式（２）式の替わりに、次のスケーリング演算を行う。
【００５２】
ｘｉ＋１＝（１＋２−２ｉ）・ｘｉ
ｙｉ＋１＝（１＋２−２ｉ）・ｙｉ      ・・・（３）
【００５３】
このようなスケーリング演算を行うことにより、最後に行うスケーリング補正は、各段の演算が回転か無回転であるかを気にすること無く、一律でよくなる。
【００５４】
無回転を除いたダブルローテーションＣＯＲＤＩＣの角度系列は２・ａｒｃｔａｎ（２−ｉ）（ｉ＝０，１，２，３・・・）であり、図１に説明したＣＯＲＤＩＣの角度系列の２倍の関係にある。
【００５５】
＜装置構成＞
図４は、変形例１における演算ユニットの構成を示す図である。図４に示す演算ユニット４０１は、図２に示す演算ユニット２０１の構成を置き換えたものに相当する。パイプラインＣＯＲＤＩＣを構成する全ての演算ユニットは演算ユニット４０１と同一構成のものを使用する。
【００５６】
演算ユニット４０１は、回転方向情報を保持するレジスタ２１０を有する点に特徴がある。また、角度系列の異なる２種類の回転演算を実行可能に構成され、それをベクタモードと回転モードで切り替える点に特徴がある。
【００５７】
ここで、２つの回転演算のうち、一方の回転演算は数式（１）に示す一般のＣＯＲＤＩＣ演算に基づき、もう一方の回転演算は数式（２）式に示すダブルローテーション型ＣＯＲＤＩＣ演算器に基づいている。すなわち、２つの回転演算のうち、一方は角度系列がａｒｃｔａｎ（２−ｉ）、もう一方の回転演算は角度系列が２・ａｒｃｔａｎ（２−ｉ）であり、後者は前者のちょうど２倍の大きさの関係にある。この関係により、ベクタ入力座標の偏角の１／２倍と２倍の回転処理を実現できる。以降では、数式（１）の演算を「シングル型演算」、数式（２）の演算を「ダブル型演算」と呼ぶことにする。
【００５８】
具体的には、図４において追加された構成要素は、ダブル型演算を実行できるよう、シングル型演算を行う図２の演算ユニット２０１に追加した構成要素である。これらの構成要素について簡単に説明する。
【００５９】
演算制御部４０２は、シングル型演算とダブル型演算とを切り替える制御信号Ｄｏｕｂｌｅを生成する演算制御部である。セレクタ４０３〜４０６は、制御信号Ｄｏｕｂｌｅに基づいて２つの入力の一方を選択するセレクタである。
【００６０】
ビットシフト回路４０７〜４１０は、数式（２）の演算に必要となる項を生成するビットシフト回路である。減算器４１１〜４１２は、入力された値を減算する減算器である。
【００６１】
シングル型演算を行う場合、演算制御部４０２は制御信号Ｄｏｕｂｌｅ＝０を出力し、制御信号の接続先である４つのセレクタ４０３〜４０６は図面上の下側の入力信号を選択する。これにより、セレクタ４０３と４０４は各々“０”を選択して、減算器４１１と４１２に入力し、減算器４１１と４１２はもう一方の入力であるｘｉとｙｉをそのまま出力する。一方、セレクタ４０５と４０６は、各々ｉビットシフト回路２０３と２０４の出力を選択して加減算器２０５と２０６へ送る。よって、図２における演算ユニット２０１と同一の演算すなわちシングル型演算が行われる。
【００６２】
ダブル型演算を行う場合、演算制御部４０２は制御信号Ｄｏｕｂｌｅ＝１を出力し、制御信号の接続先である４つのセレクタ４０３〜４０６は図面上の上側の入力信号を選択する。これにより、セレクタ４０３と４０４は各々、２ｉビットシフト回路の出力を選択し、セレクタ４０５と４０６は各々、（ｉ−１）ビットシフト回路の出力を選択する。その結果、減算器２０５は（１−２−２ｉ）・ｘｉ、減算器２０６は（１−２−２ｉ）・ｙｉを出力する。そして、当該減算結果に対し、ｓｉｇｎ（ｙｉ）に基づき（ｉ−１）ビットシフト回路の出力を加減算する。この加減演算は数式（２）の演算と同じである。
【００６３】
このように、演算制御部４０２が出力する制御信号Ｄｏｕｂｌｅにより、シングル型演算とダブル型演算を切り替え可能である。また、同一のｉに対する両者の回転角の比は正確に１：２（整数比）であり、この比がそのまま各演算ユニットにおける２種類の回転演算の回転角の比となる。
【００６４】
２種類の回転演算を実行できても、ベクタモードと回転モードが同一の回転演算で動作する場合、一般的なＣＯＲＤＩＣと機能的に同じであり、ベクタモードで検出した座標データの偏角の分だけ、他の座標データを回転処理することになる。
【００６５】
＜装置の動作＞
上述の構成により実現される特徴的な機能は、ベクタ入力座標の偏角の１／２倍と２倍の回転処理である。この機能を実現するには、ベクタモードと回転モード間で、２種類の回転演算を切り替える必要がある。具体的には、ベクタモードでシングル型演算を行った場合は、回転モードでダブル型演算を行い、ベクタモードでダブル型演算を行った場合は、回転モードでシングル型演算を行う。これにより、前者は偏角の２倍の回転、後者は偏角の１／２倍の回転を実現できる。
【００６６】
前述のように各演算ユニットにおける回転角の比が２倍である。そのため、シングル型演算を行った時に保持する２値の回転方向情報を｛−１、＋１｝と解釈すると、ダブル型演算を行った時に保持する２値の回転方向情報は正確に｛−２、＋２｝と解釈できる。この場合の大きさの違いは、回転角の大きさに対応する重みである。
【００６７】
よって、シングル型演算で保持した回転方向情報をダブル型演算に用いることは、保持した回転方向情報の重みを２倍したことに相当する。逆の場合は、回転方向情報の重みを１／２倍したことに相当する。これが、ベクタ入力座標の偏角の２倍や１／２倍の回転を実現できる理由である。なお、ベクタモードと回転モードが同一の回転演算で動作する場合、回転方向情報の重みが保たれるため、偏角の等倍の回転となる。
【００６８】
図５は、ベクタモード及び回転モードにおける演算種別の組み合わせに対する座標回転倍率を示す図である。図５（ａ）は、演算種別として上述のシングル型及びダブル型の演算を用いる際の例を示している。
【００６９】
ところで、上述の説明では、各演算ユニットにおける２種類の回転演算の回転角の比が２倍であるため、実現できる回転機能はベクタ入力座標の偏角の２倍と１／２倍になっている。同様に、回転角の比がシングル型演算の３倍ある演算機能を設け、第３の回転演算として切り替えられると、ダブル型演算に対して３／２倍の大きさになる。よって、３種類の演算を切り替えることにより実現できる回転処理が大幅に増え、ベクタ入力座標の偏角の３倍、３／２倍、２／３倍、１／３倍の回転も行うことが可能になる。
【００７０】
図５（ｂ）は、演算種別として更に３倍型の演算を用いる際の例を示している。ここで「３倍型演算」とは、回転角の角度系列がシングル型演算の３倍の演算を示している。なお、同様に「４倍型演算」、「５倍型演算」を追加し利用するよう構成することも可能である。
【００７１】
（変形例２）
変形例２として、より複雑な回転機能を実現できるようにした構成について説明する。具体的には、１つの演算ユニットで複数の回転方向情報を保持できる構成とし、当該複数の回転方向情報の間でビット間演算を行い、演算ユニット毎にビット間演算結果で回転方向を制御する。
【００７２】
すなわち、変形例１では、１つのベクタ座標データから回転方向情報を生成・保持し、保持した回転方向情報に基づいて、それ以降に入力する回転用座標データを回転処理するものであった。それに対し、変形例２では、複数の回転方向情報は、複数のベクタ座標データから生成する。
【００７３】
特に、変形例２では、ダブルローテーション型ＣＯＲＤＩＣの１つの特徴である無回転演算を回転モード時に利用する。これは、２つの回転方向情報が互いに逆方向であり、それを加算合成するようなビット間演算を行った場合、回転が相殺して無回転を意味する演算結果になることがあるからである。
【００７４】
＜装置構成＞
図６は、変形例２における演算ユニットの構成を示す図である。演算ユニット５０１においては、図４に示した変形例１の演算ユニット４０１に対し、新たな構成要素が追加されている。
【００７５】
無回転演算を利用するため、回転モードの演算では基本的にダブル型演算を実行する。そのため、演算制御部５０２は、２つのモード信号の両方が回転モードであれば、制御信号Ｄｏｕｂｌｅとして“１”を出力するような論理回路にする。その他のモードでは後述する演算機能に応じて、制御信号Ｄｏｕｂｌｅの値を定める。
【００７６】
変形例２においては、第１のベクタ座標データと第２のベクタ座標データを逐次入力し、第１のベクタ座標データの回転方向情報をレジスタ２１０で、第２のベクタ座標データの回転方向情報をレジスタ５１０に保持する。後者の回転方向情報を保持するための制御信号として、モード信号を配信する信号線５１２を追加している。
【００７７】
信号線５１２により配信されるモード信号は、信号線２１２により配信されるモード信号と同様、１サイクル遅延器で遅延され次段の演算ユニットに送られる。
【００７８】
なお、回転方向情報を取り込む際の演算モードがシングル型演算であるかダブル型演算であるかに依存して、回転方向情報の重みが変わってくる。例えば、シングル型演算である場合、回転方向情報の重みは｛−１，＋１｝になり、ダブル型演算である場合、重みは｛−２，＋２｝になる。このように重みは変わっても、実際の１ビット信号は［０，１］として保持される。
【００７９】
ビット間演算部５１５は、２つの回転方向情報の重みを加減算して、結果が｛−２，０，＋２｝となるように、加重付きの加減算を行う演算器である。結果が３状態になるため、２ビット信号で例えば［００，１０，０１］と表現する。よって単純なビットの加減算にはならないため、ここでは“ビット間演算”と表現している。ビット間演算結果は、セレクタ５１１で選択され、加減算器や他のセレクタの制御に用いられる。
【００８０】
ここでは、演算回路の制御を見通しよくするため、無回転演算を行うための制御信号Ｎｏｎを設けている。２ビット信号の上位１ビットが制御信号Ｎｏｎに対応する。ベクタモードでは制御信号Ｎｏｎを“０”に固定するため、ｓｉｇｎ（ｙｉ）にＮｏｎ＝０を付加しセレクタ５１１に入力している。
【００８１】
回転モードにおいて２つの重みを加算もしくは加重加算する場合には、２つの回転方向情報の排他的論理和で生成する。２つの回転方向情報が不一致の時、回転方向が逆方向となり相殺して無回転になるからである。減算もしくは加重減算の場合は、２つの回転方向情報が一致する時、回転が相殺して無回転になるため、２つの回転方向情報の一致論理で制御信号Ｎｏｎを生成する。
【００８２】
図７は、回転方向情報の入出力間の対応、及び、無回転を表す制御信号の関係を表している。ここでは、重み付きで表現した回転方向情報の入出力間の対応と、無回転を表す制御信号Ｎｏｎの関係を表している。
【００８３】
図７（ａ）は、２つの重みを単純に加算した結果、図７（ｂ）は、入力“１”の重みから入力“２”の重みを減算した結果であり、図７（ｃ）は、２つの重みの単純平均した結果である。また、図７（ｄ）は、入力“１”，“２”に対し“１”と“１／２”で加重して加算した結果であり、図７（ｅ）は、入力“１”，“２”に対し“１／２”と“１”で加重して加算した結果である。これらへの対応は、上記入力をベクタ化する際の演算の種類（シングル型、ダブル型）によって決定される。
【００８４】
入力に対する加重を１にするには入力座標データをシングル型演算でベクタ化し、加重を１／２にするには入力座標データをダブル型演算でベクタ化する。それを制御するのが演算制御部５０２で生成する制御信号Ｄｏｕｂｌｅである。
【００８５】
図７のいずれの関係においても、加減算結果が±０の時、無回転を表す制御信号Ｎｏｎを“１”としている。つまり、制御信号Ｎｏｎによって、新たに追加した２つのセレクタ５０３、５０４と加減算器５０５、５０６を制御している。
【００８６】
制御信号Ｎｏｎ＝１の時、セレクタ５０３、５０４は上段側の入力“０”を選択し、回転行列の非対角要素を“０”にした演算、すなわち、回転角がゼロの演算を行う。また、加減算器５０５、５０６は加算モードとなり、数式（３）に基づきｘｉ，ｙｉのスケーリング演算を行い、回転演算をした時のスケーリングと一致させている。
【００８７】
＜装置の動作＞
図７（ｅ）に対応した回転機能を実現する処理の例について説明する。ここでは、演算ユニット５０１をＭ段縦属接続したパイプラインＣＯＲＤＩＣに対し、第１サイクルで第１のベクタ座標データを入力し、第２サイクルで第２のベクタ座標データを入力する。パイプラインＣＯＲＤＩＣは第１の座標データに対しダブル型演算でベクタ化を行い、第２の座標データに対しシングル型演算でベクタ化を行う。
【００８８】
第１のベクタ座標データの偏角をθ１、第２のベクタ座標データの偏角をθ２とすると、図７（ｅ）の入出力対応により、座標回転角は（θ１／２）＋θ２となる。この座標回転は、第３サイクル以降に回転モードで入力される座標データ群に適用される。
【００８９】
座標データ群は第３サイクルから間断なく連続的に入力すれば最高性能で処理することが可能であるが、全てのデータを必ずしも連続的に入力する必要はなく、途中にダミーデータを入力しても構わない。
【００９０】
第２のベクタ座標データを入力してからＭサイクル後に、座標データの極座標絶対値がパイプラインＣＯＲＤＩＣから出力される。そして、次のサイクルから、（θ１／２）＋θ２だけ回転された座標データもしくはダミーデータが入力順に回転処理されて出力される。
【００９１】
次に入力するベクタ座標データは、新たな第１サイクルとして入力し、上に説明した処理を繰り返す。この時、演算制御部５０２の設定を変え、入出力対応を図７（ｅ）から図７（ａ）〜（ｄ）に変更することが可能である。但し、パイプラインＣＯＲＤＩＣを最高性能で使うには、設定を変更する制御信号は、不図示の遅延回路によって１サイクル遅延して次段の演算ユニットへ送る必要がある。言い換えれば、制御信号と座標データを同期して次段の演算ユニットへ転送する必要がある。
【００９２】
新たな合成回転角で座標データを回転する際、基本は２つのベクタ座標データを入力するが、前の偏角の一方を再利用できる場合もある。この場合は、再利用で出来ない方の偏角を新たに入力する座標データの偏角に更新するだけでよく、入力する座標データは１つだけでよい。
【００９３】
（変形例３）
変形例３として、新たな回転機能を実現可能とする構成について説明する。具体的には、演算ユニットの構成は演算ユニット５０１と同じであるが、ビット間演算部５１５において、２入力の一方を選択する機能を追加している。これにより、１つのパイプラインＣＯＲＤＩＣで、ベクタモードと回転モードの両方を処理可能としている。
【００９４】
第１のベクタ座標データと第２のベクタ座標データは同一の座標データを入力する。よって、座標データの偏角は同じでありθ１＝θ２＝２ψとする。但し、第１のベクタ座標データはシングル型演算でベクタ化を行い、第２の座標データに対しダブル型演算でベクタ化を行う。
【００９５】
このようにして、レジスタ２１０，５１０に回転方向情報を取り込み、それを保持したまま、ビット間演算部５１５の機能を切り替えて、種々の回転機能を実現する。実現できる回転機能は、以下に示すように、ψ，２ψ，３ψ，４ψの４種類になる。
【００９６】
・ダブル型演算のベクタ化で保持した偏角θ２＝２ψに基づいて、シングル型演算で座標回転を行った場合、回転角は偏角の半分のψとなる。
・保持した偏角θ２＝２ψに基づいて、ダブル型演算で座標回転を行った場合、回転角は偏角と同じ２ψとなる。
・図７（ｄ）に示すビット間演算を行い、ダブル型演算で座標回転を行った場合、回転角は合成角θ１＋（θ２／２）＝３ψとなる。
・シングル型演算のベクタ化で保持した偏角θ１＝２ψに基づいて、ダブル型演算で座標回転を行った場合、回転角は偏角の２倍の４ψとなる。
【００９７】
上述の例では、同じ偏角θ１＝θ２＝２ψを有する座標データを、異なる演算によるベクタ化で取り込んだ。もし、２つの偏角が異なり、その比が単純な関係であれば、同じベクタ化演算を用いて偏角を取り込み、この関係を利用して上述した処理に類似した回転機能を実現することが可能である。
【００９８】
このように、回転方向情報するためのレジスタ２１０、５１０を設けることにより、１つのパイプラインＣＯＲＤＩＣで、ベクタモードと回転モードの両方を処理することができる。また、１演算ユニット毎に複数の回転方向情報を保持し、これらの複数の回転方向情報間でビット間演算を行うことにより、２つの角度を加重合成した角度の回転も実現できる。これらの処理は遅延の大きな偏角の算出を行わないため低遅延で処理でき、且つ、パイプラインＣＯＲＤＩＣ１つで処理できるため、低コストな回路を実現できる。
【００９９】
（第２実施形態）
第２実施形態では、上述の図３に示す構成の冗長部分を削減する構成について説明する。すなわち、正弦や余弦の計算と同様、同じ回転方向情報で回転角を何度も演算する意味は無く、１回演算すれば十分である。つまり、回転角θを演算するパイプラインを有する図３の構成には冗長な部分が存在する。
【０１００】
＜装置構成＞
図８は、第２実施形態に係る演算装置の構成を示す図である。演算ユニット８０１の構成は、図２に示す構成におけるｙ座標の回転演算の構成が変更されたものである。
【０１０１】
演算ユニット８０１の回転モードのｙ座標演算パスにおいては、ｘ座標演算パスからくるｘ座標のシフトデータを、ａｒｃｔａｎ（２−ｉ）なる角度の数値データに切り替える。具体的には、セレクタ８０５にて当該切り換えを行うことにより、ｙ座標演算パスで回転角を演算できるようにする。
【０１０２】
この、角度データに切り換え動作を「回転角演算モード」と呼ぶことにする。なお、角度データを数値表現する単位は何でもよく、例えばラジアン（radian）、度（degree）などの単位で演算すればよい。
【０１０３】
また、図８においては、セレクタ８０５の制御信号を省略しているが、パイプライン中の座標データの移動と同期して切り換える必要がある。ただし、モード情報と同様、各演算ユニットで１サイクル遅延させて次段の演算ユニットに制御信号を送る必要がある。
【０１０４】
このようにｙ座標演算パスに回転角の演算機能を組み込んだ構成では、当然ベクタモードの動作と回転角の演算を同時行うことが出来ない。そのため、一旦、ベクタモードで座標データの偏角を回転方向情報として保持し、ベクタモードを「回転角演算モード」に切り換えて、保持した回転方向情報に基づき回転角を算出する。
【０１０５】
ベクタモードを「回転角演算モード」に切り換えるタイミングは、レジスタ２１０で回転方向情報を保持している間、すなわち回転モードの間であれば、先頭でも最後でもどちらでもよい。
【０１０６】
以下に、共通する回転方向情報に関する一連の処理の２つの例を挙げる。
【０１０７】
１つは、「１サイクルのベクタモード」で始まり、「回転角演算モードに１サイクル」、「正弦・余弦演算に１サイクル」、「Ｋ個の座標データの回転にＫサイクル」を順に処理する処理である（合計（Ｋ＋３）サイクル）。
【０１０８】
もう１つは、「１サイクルのベクタモード」で始まり、「Ｋ個の座標データの回転にＫサイクル」、「回転角演算モードに１サイクル」を順に処理する処理である（合計（Ｋ＋２）サイクル）。
【０１０９】
なお、回転角演算機能はｙ座標演算パスでなくｘ座標演算パス側に付加した構成も考えられる。さらに、回転角演算機能をｙ座標演算パスとｘ座標演算パスの両方に付加し、各々単位の異なる角度を算出することも考えられる。
【０１１０】
なお、第２実施形態におけるＣＯＲＤＩＣ演算を行うパイプラインにおいては、動作モードは座標データと共に１サイクル毎に下流の演算ユニット伝搬していく。すなわち全部の演算ユニットが同一のモードで動作するとは限らない。よって、上述の「○○モードに１サイクル」という表現は、複数段ある演算ユニットの中のある演算ユニット、例えば初段の演算ユニットに着目した時の動作を表しているおり、パイプライン全体の動作を表しているわけではない。
【０１１１】
（変形例３）
変形例３では、第２実施例と同一の構成において、制御の仕方を変えることにより別の機能を実現する例について説明する。
【０１１２】
上述の第２実施形態では、回転モードにおけるｙ座標演算パスの演算機能を回転角の演算に切り換えた。一方、変形例３においては、ベクタモードの制御の元でｙ座標演算パスの演算機能を回転角の演算に切り換える。通常のベクタモードではｙ座標値の符号によって回転方向が決まるが、上述の制御状態では、ｙ座標演算パスの演算対象である回転角の符号によって回転方向が決まる。
【０１１３】
よって、図８の構成において、判定制御をベクタモードのままで、ｙ座標演算パスの演算機能を回転角の演算機能に切り換えると、入力した回転角を０度（ｘ軸）に向かせるための回転方向情報に逐次的に展開することができる。そして、回転方向情報をレジスタ２１０に取り込むことが可能になる。このように動作するモードを「回転角展開モード」と呼ぶことにする。
【０１１４】
上述の第２実施形態と同様に、共通する回転方向情報に関する一連の処理の例を２つ挙げる。
【０１１５】
１つは、「１サイクルの回転角展開モード」で始まり、「正弦・余弦演算に１サイクル」、「Ｌ個の座標データの回転にＬサイクル」を順に処理する処理である（合計（Ｌ＋２）サイクル）。
【０１１６】
もう１つは、「１サイクルの回転角展開モード」で始まり、「Ｌ個の座標データの回転にＬサイクル」を順に処理する処理である（合計（Ｌ＋１）サイクル）。
【０１１７】
（第３実施形態）
第３実施形態では、保持情報を直接出力し、回転方向情報を直接入力することができる演算装置について説明する。
【０１１８】
上述の第１及び第２実施形態においては、レジスタ２１０に保持する回転方向情報は、ベクタモードで座標データから生成し、角分解モードで回転角などから生成していた。ただし、ベクタモードや回転角分解モードで生成した回転方向情報は、新たな回転方向情報が生成されると、置き換えられて消滅してしまう。すなわち、回転方向情報が再利用できるのは、次の新たな回転方向情報を生成するまでの間である。
【０１１９】
回転方向情報を消滅させずに残す方法の１つは、回転方向情報を回転角に変換してパイプラインから出力し、パイプラインの外部で回転角を保持することである。この時、第２実施形態で示した構成で回転角に変換することが可能である。回転角がパイプラインに入力されると、角分解モードで再び回転方向情報に変換されてレジスタ２１０に保持される。しかしながら、回転方向情報のまま出力し、それをまた入力できるようにする方が合理的であると考えられる。
【０１２０】
＜装置構成＞
図９は、第３実施形態に係る演算装置の構成を示す図である。図９（ａ）に示す構成では、前段の演算ユニットから受け取る回転方向情報を１ビット左シフトした後、当該演算ユニットの回転方向情報を最下位ビットに挿入する。これにより、回転方向情報を下位ビット方向へ順次連結し、連結情報として後段の演算ユニットに転送する。つまり、回転方向情報を（ｉ＋１）番目以降の演算ユニットに提供する。
【０１２１】
演算ユニット毎に１ビットの回転方向情報を連結するため、パイプラインの最終段から出力する連結情報のビット数は、演算ユニットの個数（すなわちパイプラインの段数）に等しい。
【０１２２】
回転方向情報を１ビット左シフトするのはビットシフト器９０５である。回転方向情報を最下位ビットに挿入するのはビット挿入器９０６である。挿入後の連結情報は、レジスタ９０７にて１サイクル期間保持される。
【０１２３】
一旦出力した連結情報を入力する時は、当該連結情報の最上位ビットを取り出しセレクタ９１１で選択しレジスタ２１０に保持する。また、当該連結情報を１ビット左へシフトして次段の演算ユニットへ送る。
【０１２４】
図９（ａ）は、図３の構成と同様、ｘ座標やｙ座標の演算パスとは別に、回転方向情報を連結するパイプラインパスを設けた構成である。これにより、連結情報の入力と当該連結情報に基づく座標回転を同時処理することができる。さらに、入力した連結情報を１ビットずつ各演算ユニットで保持する際に、直前までレジスタ２１０に保持していた回転方向情報を、上段側から順次連結して出力することが可能である。つまり、連結情報の入力処理と出力処理を同時に行うことができる。
【０１２５】
また、第２実施形態（図８）における構成と同様に、図９（ａ）における回転方向情報の連結パスをｙ座標演算パスと共通化して図９（ｂ）に示す構成にすることもできる。演算ユニット９２１においては、ｙ座標を計算する加減算器２０６とその結果を１サイクル保持するレジスタ２０８の間にセレクタ９２５を設け、連結情報と切り換える。この構成により、回転方向情報の連結パスをｙ座標演算パスと共通化している。
【０１２６】
ところで、この場合、連結パスが減少する。そのため、座標データの回転と連結情報の入出力を同時に処理できなくなるため性能の低下が予想される。ただし、１サイクル後には座標回転を行うことができるため、性能の低下は僅かである。
【０１２７】
図１０は、第３実施形態に係る演算装置の他の構成を示す図である。図９（ａ）にて設けた回転方向情報を連結するパイプラインパスを、図８の構成に追加した構成に相当する。演算ユニット１００１は、図８の演算ユニット８０１に対して、ビットシフト器９０５、ビット挿入器９０６、レジスタ９０７を追加した構成になっている。
【０１２８】
当該構成によれば、レジスタ２１０に保持した回転方向情報は、座標データの回転に利用できる他に、正弦・余弦の組、偏角または連結情報としても出力できる。また、出力した連結情報をそのまま入力してレジスタ２１０に取り込める。そのため、出力した偏角等を用いて算出した角度を入力した場合は、入力後に回転方向情報へ展開してレジスタ２１０に取り込める。そして、正弦・余弦やベクタ用入力座標データから回転方向情報を生成しレジスタ２１０に取り込むことができる。簡単に言えば、保持した回転方向情報は４種類の形態で出力でき、保持する情報を４種類の形態で入力できる構成になっている。
【０１２９】
（第４実施形態）
＜正規化除算装置＞
画像処理や検索エンジン，信号処理などの分野における問題は、連立一次方程式や固有問題を解くことに帰着される場合が多い。また、非線形な方程式の問題においても、問題を単純化し連立一次方程式の形に変形する場合も多くある。そのため、近年の画像処理，信号処理において連立一次方程式は数値計算の主な演算の一つとなっている。
【０１３０】
連立一次方程式の有名な解法としてガウスの消去法やガウス・ジョルダンの消去法などが挙げられる。これらの手法は、連立一次方程式を行列表現した際の行や列を操作しながら、係数行列を上三角行列や単位行列などに変形して解を求めていく手法であるが、最終的な解を求める際に対角要素を「１」に変形する必要がある。そのため、何らかの手段を用いて対角要素を「１」に正規化し、正規化前の対角要素値に応じて他の要素を除算する必要がある。
【０１３１】
例えば、特開平８−１３７８３４号公報には、ＣＯＲＤＩＣと類似の構成を用いて正規化除算を実現する例が開示されている。具体的には、図１（ａ）と同等の構成を用いて、ベクトル（Ｘ，Ｙ，Ｚ）の各要素をＬ２ノルム（Ｘ２＋Ｙ２＋Ｚ２）１／２で除算を行う構成が示されている。この構成は、行列に対する正規化除算処理にも応用可能なものである。
【０１３２】
このとき、ＣＯＲＤＩＣにおける回転方向情報は、正規化除算における加減算の判定情報と対応づける事ができる。また、対角要素を「１」に正規化して加減算判定情報を保持するモードを「正規化モード」と定義した場合、ＣＯＲＤＩＣのベクタモードに対応させることができる。同様に、同一の行の他の要素を前記加減算判定情報に基づいて正規化前の対角要素の値で除算するモードを「除算モード」と定義した場合、ＣＯＲＤＩＣの回転モードに対応させることができる。
【０１３３】
例えば、対象となる行列の対角要素を「１」に正規化し、同一の行の他の要素を対角要素値で除算するための演算手順は次のようになる。まず、正規化モードにて行列の対角要素（ｘｄ）を入力１へ、ゼロを入力２へ与え、該要素値を「１」に正規化する加減算判定情報を保持する。その後、除算モードへ変更し、同一行の他の要素（ｘｓ，ｓ＝１，２，３，・・・）を順次入力１へ、ゼロを入力２へ与える。処理段数Ｎの演算後の出力は、対角要素の正規化値「１」に続き、他の要素ｙｓ＝ｘｓ／ｘｄ（ｓ＝１，２，３，・・・）が出力されることになる。
【０１３４】
入力１：ｘ０＝ｘｄ，  入力２：ｙ０＝０
ｆｏｒ  ｉ＝０  ｔｏ  Ｎ−１  ｓｔｅｐ  １
ｉｆ  ｙｉ≧１  ｔｈｅｎ
ｘｉ＋１＝ｘｉ
ｙｉ＋１＝ｙｉ−（２−（ｉ＋１））・ｘｉ
ｅｌｓｅ
ｘｉ＋１＝ｘｉ
ｙｉ＋１＝ｙｉ＋（２−（ｉ＋１））・ｘｉ
出力：ｙＮ＝１          ・・・（４）
【０１３５】
＜装置構成＞
図１１は、第４実施形態に係る演算装置の構成を示す図である。演算ユニット１１０１は、パイプラインを構成するｉ段目（ｉ＝０，１，２，３・・・）の演算ユニットの構成を表している。演算ユニット１１０１の前段には、前段側の演算ユニット群１１０２ａ、後段には、後段側の演算ユニット群１１０２ｂが配置されている。各演算ユニットの構成は演算ユニット１１０１と同様の構成である。
【０１３６】
演算ユニット１１０１の構成について説明する。同演算ユニットにおいて、ビットシフト器１１０４は、入力されるｘ座標データｘｉをｉビット右シフトするビットシフト器である。加減算器１１０６は入力ｙ座標データｙｉにビットシフト器１１０４の出力を加減算する加減算器である。レジスタ１１０７は、ｘｉを１サイクル保持するレジスタであり、レジスタ１１０８は加減算器１１０６の出力データを１サイクル保持するレジスタである。これらの構成要素を用いて数式（４）の正規化演算を行い、その結果をレジスタ１１０８で保持する。
【０１３７】
次に、第４実施形態に係る装置において新たに必要となる構成要素を説明する。レジスタ１１１０は、加減算判定情報を保持する１ビットのレジスタである。セレクタ１１１１は、入力されたデータｙｉに応じて判定される加減算判定情報とレジスタ１１１０で保持した加減算判定情報との一方を選択するセレクタである。
【０１３８】
信号線１１１２は、演算ユニットで処理中のデータの処理モードが正規化モードか除算モードであるかを表す１ビットのモード情報を配信するための信号線である。遅延器１１１３は、モード情報を１サイクル遅延させる遅延器である。比較器１１１４は、入力されたデータｙｉと正規化値“１”とを比較し、加減算判定情報を出力する比較器である。
【０１３９】
＜装置の動作＞
上述の構成要素を中心に正規化モードと除算モードの動作について説明する。具体的な動作として、正規化モード１サイクルに続き除算モードで６サイクル処理する例を紹介する。
【０１４０】
動作モードを変更するための制御信号としてモード情報を使用する。例えば、正規化モードとしてモード情報“１”を１サイクル、続いて除算モードとしてモード情報“０”を６サイクル、初段の演算ユニットに入力する。すなわち、モード情報“１”と同期して正規化用対角要素データを１つ、それに続けて、モード情報“０”と同期して同一の行の他の要素データを６つを、データｘ０として順次入力する。この時、データｙ０へは“０”を順次入力する。ｎ段パイプライン処理後、データｙｎに正規化された値“１”が出力される。
【０１４１】
各演算ユニットはモード情報“１”が入力されると正規化モードとして動作する。正規化モードでは、比較器１１１４の出力に基づいて加減算器１１０５，１１０６の演算を制御するよう、セレクタ１１１１は、比較器１１１４の出力を選択する。その際、セレクタ１１１１の出力を、加減算判定情報を保持するためのレジスタ１１１０にも取り込む。パイプライン全体で保持される加減算判定情報を統合した正規化演算は、対角要素データの値による除算に対応したものになる。
【０１４２】
各演算ユニットは、モード情報“０”が入力されると除算モードで動作する。除算モードでは、セレクタ１１１１はレジスタ１１１０に保持した加減算判定情報を選択し、当該加減算判定情報に基づいて入力データを加減算処理する。モード情報が“０”の間、加減算判定情報は保持され続けるので、連続して入力される６つの入力データに対して同一の加減算処理が施される。ｎ段パイプライン処理後、正規化前の対角要素値で除算された値がデータｙｎとして出力される。
【０１４３】
図１２は、正規化モード及び除算モードにおける計算の例を示す図である。図１２（ａ）は、正規化モードにおける計算例を示しており、図１２（ｂ）は、除算モードにおける計算例を示している。
【０１４４】
ここではパイプライン段数を「１０」としている。正規化モードでは、図１２（ａ）のようにデータｙ１０においては、正規化された「１」が出力されている事が確認できる。また除算モードでは、正規化モードで設定された加減算判定情報を用いて計算を行っており、データｙ１０においては、正規化前の要素にて除算された値が出力されている事が確認できる。
【０１４５】
以上説明したとおり第４実施形態によれば、演算ユニット毎に、正規化モードで生成した加減算判定情報をレジスタに保持するよう構成する。そして、保持した加減算判定情報に基づいて除算演算を行う。
【０１４６】
当該構成により、１つのパイプラインで、正規化モードと除算モードの両方を処理することができる。そのため、除算処理を、低コストな回路で効率よく処理することができる。具体的には、従来に比較し、ほぼ同等の処理性能を半分の回路規模で実現することが可能となる。
【０１４７】
（第５実施形態）
第５実施形態では、保持情報を直接出力し、加減算判定情報を直接入力することが可能な演算装置について説明する。
【０１４８】
正規化モードで生成した加減算判定情報は、当該加減算判定情報を次に生成するまでの間、保持手段に保持され続け、データの除算に利用される。しかしながら、新たな加減算判定情報が生成されると、それで置き換えられて消滅してしまう。
【０１４９】
そこで、加減算判定情報のまま出力し、それを再入力できるようにする。具体的には、加減算判定情報を出力する際には、当該加減算判定情報を演算ユニット毎にビット連結してパイプラインから出力し、パイプラインの外部で当該加減算判定情報のビット列を保持させる。そして、当該加減算判定情報のビット列を入力する際には、該加減算判定情報ビット列を演算ユニット毎にビット抽出して保持手段に保持される。
【０１５０】
＜装置構成＞
図１３は、第５実施形態に係る演算装置の構成を示す図である。図１３における構成では、前段演算ユニットから受け取る加減算判定情報を１ビット左シフトした後、当該演算ユニットの加減算判定情報を最下位ビットに挿入することにより加減算判定情報を下位ビット方向へ順次連結し、連結情報として出力する。演算ユニット毎に１ビットの加減算判定情報を連結するため、パイプラインの最終段から出力する連結情報のビット数は演算ユニットの個数（すなわちパイプラインの段数）に等しい。
【０１５１】
加減算判定情報を１ビット左シフトするのはビットシフト器１３０５である。加減算判定情報を最下位ビットに挿入するのはビット挿入器１３０６である。挿入後の連結情報は、レジスタ１３０７にて１サイクル期間保持される。
【０１５２】
一旦出力した連結情報を入力する時は、当該連結情報の最上位ビットを取り出しセレクタ１３１１で選択し保持手段に保持する。また、当該連結情報を１ビット左へシフトして次段の演算ユニットへ送る。
【０１５３】
図１３に示す構成においては、入力データｘｉや入力データｙｉの演算パスとは別に、加減算判定情報を連結するパイプラインパスを設けた。
【０１５４】
当該構成により、連結情報の入力と、連結情報に基づく正規化除算演算と、を同時処理することができる。さらに、入力した連結情報を１ビットずつ各演算ユニットで保持する際に、直前まで保持手段に保持していた加減算判定情報を、上段側から順次連結して出力することが可能となる。つまり、連結情報の入力処理と出力処理を同時に行うことができる。
【符号の説明】
【０１５５】
２０１  演算ユニット；  ２０３，２０４  ビットシフト器；  ２０５，２０６  加減算器；  ２０７，２０８  レジスタ；  ２１１  セレクタ；  ２１０  １ビットレジスタ；  ２１３  遅延器
【図１】
2015230561.tif 000003
【図２】
2015230561.tif 000004
【図３】
2015230561.tif 000005
【図４】
2015230561.tif 000006
【図５】
2015230561.tif 000007
【図６】
2015230561.tif 000008
【図７】
2015230561.tif 000009
【図８】
2015230561.tif 000010
【図９】
2015230561.tif 000011
【図１０】
2015230561.tif 000012
【図１１】
2015230561.tif 000013
【図１２】
2015230561.tif 000014
【図１３】
2015230561.tif 000015