(57)【要約】  複素指数関数を備えた命令セットを有するデジタル・プロセッサが提供される。このデジタル・プロセッサは、入力値ｘに関して複素指数関数を評価することを、入力として入力値ｘを有する複素指数ソフトウェア命令を獲得すること、その複素指数ソフトウェア命令に応答して、複数の複素指数ソフトウェア命令を実装する少なくとも１つの複素指数関数ユニットを呼び出して、入力値ｘにその複素指数関数を適用すること、および入力値ｘの複素指数に対応する出力を生成することによって行う。入力値ｘに関して複素指数関数は、所与の範囲を保つように入力値をラップすること、ルックアップ・テーブルを用いて粗い近似角度を計算すること、０からθまでの角度を得るようにその粗い近似角度をスケール変更すること、および多項式近似を用いて細かい補正値を計算することによって評価され得る。
2014532926.tif 000002
【特許請求の範囲】
【請求項１】
入力値ｘに関して複素指数関数を評価するためにデジタル・プロセッサによって実行される方法であって、
入力として前記入力値ｘを有する１つまたは複数の複素指数ソフトウェア命令を獲得するステップと、
前記複素指数ソフトウェア命令のうちの少なくとも１つに応答して、以下のステップ、すなわち、
前記１つまたは複数の複素指数ソフトウェア命令を実装する少なくとも１つの複素指数関数ユニットを呼び出して、前記入力値ｘに前記複素指数関数を適用するステップ、および
前記入力値ｘの前記複素指数に対応する出力を生成するステップを実行するステップと
を備える方法。
【請求項２】
前記複素指数関数内で角度を累算し、引数の複素指数および現在の累算値のうちの１つまたは複数を戻すステップをさらに備える請求項１に記載の方法。
【請求項３】
入力値ｘに関して複素指数関数を評価するためにデジタル・プロセッサによって実行される方法であって、
所与の範囲を保つように前記入力値をラップするステップと、
前記入力値の最上位のいくつかのビット（ＭＳＢ）を使用してルックアップ・テーブルを用いて粗い近似角度を計算するステップと、
０からθまでの角度を得るように前記粗い近似角度をスケール変更するステップと、
多項式近似を用いて細かい補正値を計算するステップと
を備える方法。
【請求項４】
対称特性を用いて前記ルックアップ・テーブルのサイズを縮小するステップをさらに備える請求項３に記載の方法。
【請求項５】
入力値ｘに関して複素指数関数を評価するデジタル・プロセッサであって、
メモリと、
前記メモリに結合され、
入力として前記入力値ｘを有する１つまたは複数の複素指数ソフトウェア命令を獲得し、前記複素指数ソフトウェア命令のうちの少なくとも１つに応答して、
前記１つまたは複数の複素指数ソフトウェア命令を実装する少なくとも１つの複素指数関数ユニットを呼び出して、前記入力値ｘに前記複素指数関数を適用すること、および
前記入力値ｘの前記複素指数に対応する出力を生成することを実行するように動作する少なくとも１つのハードウェア・デバイスと
を備えるデジタル・プロセッサ。
【請求項６】
前記少なくとも１つのハードウェア・デバイスは、前記複素指数関数内で角度を累算し、引数の複素指数および現在の累算値のうちの１つまたは複数を戻すようにさらに構成される請求項５に記載のデジタル・プロセッサ。
【請求項７】
前記少なくとも１つのハードウェア・デバイスは、入力信号に前記複素指数関数の引数の指数部を掛けるようにさらに構成される請求項５に記載のデジタル・プロセッサ。
【請求項８】
入力値ｘに関して複素指数関数を評価するデジタル・プロセッサであって、
メモリと、
前記メモリに結合され、
所与の範囲を保つように前記入力値をラップし、
前記入力値の最上位のいくつかのビット（ＭＳＢ）を使用してルックアップ・テーブルを用いて粗い近似角度を計算し、
０からθまでの角度を得るように前記粗い近似角度をスケール変更し、
多項式近似を用いて細かい補正値を計算するように動作する少なくとも１つのハードウェア・デバイスと
を備えるデジタル・プロセッサ。
【請求項９】
前記多項式近似は、テイラー級数と３次近似のうちの１つまたは複数を備える請求項８に記載のデジタル・プロセッサ。
【請求項１０】
前記少なくとも１つのハードウェア・デバイスは、対称特性を用いて前記ルックアップ・テーブルのサイズを縮小するようにさらに構成される請求項８に記載のデジタル・プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、参照により本明細書に組み込まれている「Ｓｏｆｔｗａｒｅ  Ｄｉｇｉｔａｌ  Ｆｒｏｎｔ  Ｅｎｄ（ＳｏｆｔＤＦＥ）  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｉｎｇ  ａｎｄ  Ｄｉｇｉｔａｌ  Ｒａｄｉｏ」という名称の２０１１年１０月２７日に出願した米国仮特許出願第６１／５５２，２４２号の優先権を主張するものである。
【０００２】
本出願は、参照により本明細書に組み込まれている、いずれも２００８年１１月２８日に出願した「Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ  Ｈａｖｉｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  ｗｉｔｈ  Ｏｎｅ  ｏｒ  Ｍｏｒｅ  Ｎｏｎ−Ｌｉｎｅａｒ  Ｃｏｍｐｌｅｘ  Ｆｕｎｃｔｉｏｎｓ」という名称の米国特許出願第１２／３２４，９２６号、および「Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ  Ｈａｖｉｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｗｉｔｈ  Ａｎ  Ｅｘｐｏｎｅｎｔｉａｌ  Ｆｕｎｃｔｉｏｎ  Ｕｓｉｎｇ  Ｒｅｄｕｃｅｄ  Ｌｏｏｋ−Ｕｐ  Ｔａｂｌｅ」という名称の米国特許出願第１２／３６２，８７９号と関係する。
【０００３】
本発明は、デジタル処理技法に関し、より詳細には、複素指数関数のデジタル処理のための技法に関する。
【背景技術】
【０００４】
デジタル・シグナル・プロセッサ（ＤＳＰ）は、デジタル処理のために利用される専用プロセッサである。信号は、しばしば、アナログ形態から、デジタルで操作されるデジタル形態に変換され、その後、さらなる処理のために再びアナログ形態に変換される。デジタル信号処理アルゴリズムは、通常、データのセットに対して多数の数学演算が迅速に、効率的に実行されることを要求する。
【０００５】
このため、ＤＳＰは、しばしば、加算、乗算、乗算累算（ＭＡＣ）、およびシフト累算などの数学を多用する処理アプリケーションのために、しばしば、要求されるソフトウェア動作を実行する専用のハードウェアを組み込む。例えば、乗算累算アーキテクチャは、多くの一般的な処理操作が、２つの数を掛け合わせ、もたらされた値を別の値に足し、その後、その結果を累算することを含むことを認識する。そのような基本操作は、専用の高速の乗算器および累算器を利用して効率的に実行され得る。
【０００６】
ベクトル・プロセッサは、ベクトル（すなわち、データの１次元アレイ）を操作する命令を含む命令セットを実装する。他方、スカラＤＳＰは、単一のデータ項目を操作する命令を有する。ベクトル・プロセッサは、いくつかの作業負荷に対して向上したパフォーマンスを提供する。
【０００７】
しかし、ＤＳＰおよびベクトル・プロセッサは、一般に、複素指数関数をサポートする専用の命令を備えない。しかし、ますます、プロセッサにおける複素指数演算の必要性が存在する。例えば、第１の複素数に第２の複素数が掛けられる場合に、複素指数演算が必要とされる。複素指数関数は、周期信号の基礎をもたらすとともに、線型時不変信号（ｌｉｎｅａｒ，ｔｉｍｅ−ｉｎｖａｒｉａｎｔ  ｓｉｇｎａｌｓ）を特徴付けることができるので、重要である。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
したがって、複素指数関数をサポートする命令セットを有するＤＳＰおよびベクトル・プロセッサなどのデジタル・プロセッサの必要性が存在する。
【課題を解決するための手段】
【０００９】
全般的に、複素指数関数を備える命令セットを有するデジタル・プロセッサが提供される。本発明の一態様によれば、開示されるデジタル・プロセッサは、入力値ｘに関して複素指数関数を評価することを、入力として入力値ｘを有する１つまたは複数の複素指数ソフトウェア命令を獲得すること、およびそれらの複素指数ソフトウェア命令のうちの少なくとも１つに応答して、以下のステップ、すなわち、その１つまたは複数の複素指数ソフトウェア命令を実装する少なくとも１つの複素指数関数ユニットを呼び出して、入力値ｘにその複素指数関数を適用するステップ、および入力値ｘの複素指数に対応する出力を生成するステップを実行することによって行う。
【００１０】
本発明の別の態様によれば、開示されるデジタル・プロセッサは、入力値ｘに関して複素指数関数を、所与の範囲を保つように入力値をラップすること、入力値の最上位のいくつかのビット（ＭＳＢ）を使用してルックアップ・テーブルを用いて粗い近似角度を計算すること、０からθまでの角度を得るようにその粗い近似角度をスケール変更すること、および多項式近似を用いて細かい補正値を計算することによって評価する。この多項式近似は、例えば、３次近似などのテイラー級数を備える。
【００１１】
このデジタル・プロセッサは、プログラム・コードからソフトウェア命令を実行し、例えば、ベクトル・プロセッサまたはスカラ・プロセッサであることが可能である。一変形形態において、対称特性が、ルックアップ・テーブルのサイズを縮小するのに用いられる。さらに、角度は、オプションとして、複素指数関数内で累算されることが可能であり、引数および／または現在の累算値の複素指数が戻されることが可能である。別の変形形態において、入力信号に複素指数関数の引数の指数部が掛けられる。
【００１２】
本発明、ならびに本発明のさらなる特徴および利点のより完全な理解が、後段の詳細な説明、および添付の図面を参照することで得られよう。
【図面の簡単な説明】
【００１３】
【図１】本発明の特徴を組み込んだ例示的なデジタル・プロセッサを示す概略ブロック図である。
【図２】本発明の特徴を組み込んだ複素指数関数計算プロセスの例示的な実施を示す流れ図である。
【図３】ルックアップ・テーブルを用いた複素指数の粗い推定の計算を示す図である。
【図４】本発明の実施形態による１つまたは複数の実数を同時に処理する例示的なベクトル・ベースのデジタル・プロセッサを示す概略ブロック図である。
【発明を実施するための形態】
【００１４】
本発明の態様が、２段階の粗い推定と細かい推定のアプローチを使用する複素指数関数をサポートするデジタル・プロセッサを提供する。一般に、１つまたは複数のルックアップ・テーブルが、ｅｘｐ（ｊ＊２＊π＊ｘ）などの、複素指数関数の計算の少なくとも一部分の粗い推定値を格納する。本発明のさらなる態様は、後段でさらに説明されるとおり、入力値のダイナミックレンジが限定される場合に、テイラー級数近似がその複素指数関数の細かい補正を計算するのに用いられ得ることを認識する。
【００１５】
本明細書で使用される「デジタル・プロセッサ」という用語は、ＤＳＰまたはベクトル・プロセッサなどの、プログラム・コードの中の命令を実行するプロセッサであるものとする。開示される複素指数関数は、スカラ入力またはベクトル入力であるｘの値に関して適用され得ることにさらに留意されたい。
【００１６】
本発明は、ハンドセット、基地局、または他のネットワーク要素において適用され得る。
【００１７】
図１は、本発明の特徴を組み込んだ例示的なデジタル・プロセッサ１００の概略ブロック図である。例示的なデジタル・プロセッサ１００は、ＤＳＰとして、またはベクトル・プロセッサとして実装され得る。図１に示されるとおり、例示的なデジタル・プロセッサ１００は、複素指数関数のための１つまたは複数の関数ユニット１１０を含む。さらに、デジタル・プロセッサ１００は、図３に関連して後段でさらに説明されるとおり、その複素指数関数の粗い推定を計算するための値を格納する１つまたは複数のルックアップ・テーブル１２０を備える。
【００１８】
一般に、デジタル・プロセッサ１００が、複素指数関数、およびその関数に関する任意の適切なオペランドに対応する事前定義された命令キーワードを含むソフトウェア・コードを処理している場合、命令デコーダは、その命令を処理するのに要求される適切な複素指数関数ユニット１１０をトリガしなければならない。複素指数関数ユニット１１０は、複数の命令によって共有され得ることに留意されたい。
【００１９】
一般に、本発明の態様は、１つまたは複数のルックアップ・テーブルを用いて複素指数関数をサポートする強化された命令セットをもたらすように従来のデジタル・プロセッサを拡張する。本発明の態様によるデジタル・プロセッサ１００は、入力として少なくとも１つの実数を受け取り、その入力に複素指数関数を適用し、出力値を生成する。
【００２０】
開示されるデジタル・プロセッサ１００は、一度に１つずつ数値を処理する、図１に示されるスカラ・アーキテクチャ、または１つもしくは複数の数値を同時に処理する、図４に関連して後段で説明される、ベクトル・アーキテクチャを有することが可能である。ベクトル・ベースのデジタル・プロセッサ実装形態の場合、入力数値は、並行に処理される複数のスカラ数値から成るベクトルである。
【００２１】
開示される複素指数関数は、例えば、ベースバンド信号のデジタル・アップコンバージョンまたはデジタル変調のために、さらに高速フーリエ変換（ＦＦＴ）アルゴリズムなどの、２つの数値の乗算を要求する他の信号処理のために使用され得る。
【００２２】
図２は、ｅｘｐ（ｊ＊２＊π＊ｘ）を計算する本発明の特徴を組み込んだ複素指数関数計算プロセス２００の例示的な実施を説明する流れ図である。一般に、例示的な複素指数関数計算プロセス２００は、粗い推定が最初に獲得され、その後、細かい推定を使用して補正される２段階アプローチを実施する。
【００２３】
図２に示されるとおり、例示的な複素指数関数計算プロセス２００は、ステップ２１０中に、例えば、モジュロ演算を使用して、２＊π＊ｘ入力値を範囲［０，２＊π］に入れるように最初にラップし、または、代替として、範囲［０，１］に入れるようにｘをラップする。その後、複素指数関数計算プロセス２００は、ステップ２２０中に、図３に関連して後段で説明されるとおり、ｘの最上位の４ビット（ＭＳＢ）を使用して４ビット・ルックアップ・テーブル１２０を用いて粗い近似角度を計算する。
【００２４】
ステップ２３０中、複素指数関数計算プロセス２００は、θが小さい値である、０からθまでの角度を得るようにステップ２２０の角度結果をスケール変更する。最後に、ステップ２４０中、複素指数関数計算プロセス２００は、後段でさらに説明されるとおり、テイラー級数を用いて細かい補正ｅｘｐ（ｊ＊２π＊ε）値を計算する。２次テイラー級数展開（ｑｕａｄｒａｔｉｃ  Ｔａｙｌｏｒ  Ｓｅｒｉｅｓ  ｅｘｐａｎｓｉｏｎ）が、２Ｋテーブルと比較して十分な精度を与えることが判明している。
【００２５】
数学的に、複素指数関数計算プロセス２００によって実行される操作は、以下のとおり表現され得る。すなわち、
２π・ｘ←２π・ｘｍｏｄ［２π］  （１）
ｘ＝ｘ０＋ε  （２）
【００２６】
式（２）における最初の項は、０から１５／１６までの範囲内の値をもたらし、式（２）における２番目の項は、１／１６未満の値をもたらす。式（２）は、以下のとおり表現され得る。すなわち、
ｅｘｐ（ｊ２π・ｘ）＝ｅｘｐ（ｊ２π・ｘ０）・ｅｘｐ（ｊ２π・ε）  （３）
【００２７】
式（３）における最初の項は、図３に関連して後段でさらに説明される、ルックアップ・テーブル１２０から獲得された粗い位相推定である。式（３）における２番目の項は、テイラー級数展開を用いて計算された残留位相（ｒｅｓｉｄｕａｌ  ｐｈａｓｅ）、つまり、細かい補正値をもたらす。
【００２８】
図３は、ルックアップ・テーブルを用いた複素指数の粗い位相推定の計算を示す。図３に示されるとおり、ＭＳＢの４つが、円形図３００を用いて角度に変換され、この４つのビット値は、ルックアップ・テーブル１２０の中の１つのエントリ３１０を識別する。
【００２９】
複素指数関数の多項式近似
本発明の態様は、複素指数関数の細かい補正がテイラー級数を用いて近似され得ることを認識する。このため、複素指数関数、ｅｘｐ（ｊ＊２＊π＊ｘ）は、以下のとおり表現され得る。すなわち、
【数１】
2014532926.tif 000003
【００３０】
さらに、本発明は、３次近似（すなわち、テイラー級数におけるｘ３までを含む）または２次近似（すなわち、テイラー級数におけるｘ４までを含む）が、通常、十分な精度をもたらすことを認識する。以下のテーブルが、２Ｋルックアップ・テーブルとの比較で、３次近似および２次近似に関する例示的な誤差を示す。
【００３１】
【表１】
2014532926.tif 000004
【００３２】
図４は、本発明の実施形態による１つまたは複数の数値を同時に処理する例示的なベクトル・ベースのデジタル・プロセッサ４００の概略ブロック図である。一般に、図４のベクトル・ベースの実装形態は、異なるプロセスを並行して実行することにより、図１のスカラ実装形態と比べてＭＩＰＳの数値（毎秒の命令数）を増加させる。このため、ベクトル・ベースのデジタル・プロセッサ４００は、複素指数関数のための複数の関数ユニット３１０−１乃至３１０−Ｎを含む。例えば、デュアル・デジタル・プロセッサ４００が、独立した２つの複素指数関数演算を並行して実行することができる２つの関数ユニット３１０−１および３１０−２を含む。
【００３３】
一般に、ベクトル・ベースのデジタル・プロセッサ４００は、入力ｘのベクトルを処理して、出力のベクトル、ｅｘｐ（ｊ・２π・ｘ）を生成する。例示的なベクトル・ベースのデジタル・プロセッサ４００は、以下のとおり実装される１６方向ベクトル（１６−ｗａｙ  ｖｅｃｔｏｒ）プロセッサｅｘｐｊ命令に関して示される。すなわち、
ｖｅｃ＿ｅｘｐｊ（ｘ１，ｘ２，．．．，ｘ１６）、０から１までのｘ［ｋ］の範囲
【００３４】
一変形形態において、ルックアップ・テーブルのサイズが、対称性を利用することによって縮小され得る。例えば、正弦波は上下に振動し、したがって、上下の対称性が、ルックアップ・テーブルを半分に（０からπ／２まで）縮小するのに活用されることが可能であり、または１／４対称性（ｑｕａｒｔｅｒ  ｓｙｍｍｔｅｔｒｙ）（０からπ／４まで）を使用してさえ。さらに別の変形形態において、複素指数関数は、関数内で角度を累算することが可能である（すなわち、関数が、決まった量で、入力データに適用される角度のインクリメントを実行することもする、または角度量が関数呼び出しと一緒に渡される）。角度累算を伴う複素指数関数は、指数部の引数（ｔｈｅ  ａｒｇｕｍｅｎｔ  ｏｆ  ｔｈｅ  ｅｘｐｏｎｅｎｔｉａｌ）、および現在の累算という２つの結果を戻すことが可能である。
【００３５】
別の変形形態において、開示される複素指数（ｊ−Θ）関数は、入力信号ｘに引数の指数部ｊ−Θを掛ける変調のために使用されることも可能である。この操作は、オプションとして、引数の指数部が計算され、その結果に入力信号ｘが掛けられるように複素指数命令（または複素乗算累算（ＣＭＡＣ）ユニット）によって実行されることも可能である。
【００３６】
結論
本発明の例示的な実施形態は、デジタル・プロセッサ内部のデジタル論理ブロックおよびメモリ・テーブルに関連して説明されてきたが、当業者には明白なとおり、様々な機能は、ソフトウェア・プログラムにおいて、回路要素もしくは状態マシンによるハードウェアにおいて、またはソフトウェアとハードウェアの両方の組み合わせにおいて、処理ステップとしてデジタル領域で実装されることが可能である。そのようなソフトウェアは、例えば、デジタル・シグナル・プロセッサにおいて、特定用途向け集積回路において、またはマイクロコントローラにおいて使用されることが可能である。そのようなハードウェアおよびソフトウェアは、集積回路内に実装された回路内部で実現されることが可能である。
【００３７】
このため、本発明の機能は、方法、およびそれらの方法を実施するための装置の形態で実現されることが可能である。本発明の１つまたは複数の態様は、例えば、記憶媒体に格納されるか、マシンにロードされ、さらに／またはマシンによって実行されるかにかかわらず、プログラム・コードの形態で実現されることが可能であり、このプログラム・コードが、プロセッサなどのマシンにロードされて、マシンによって実行されると、そのマシンが、本発明を実施するための装置となる。汎用プロセッサ上に実装されると、これらのプログラム・コード・セグメントはプロセッサと一緒になって、特定の論理回路と同様に動作するデバイスをもたらす。また、本発明は、集積回路、デジタル・プロセッサ、マイクロプロセッサ、およびマイクロコントローラのうちの１つまたは複数として実現されることも可能である。
【００３８】
本明細書で示され、説明される実施形態および変形形態は、本発明の原理を例示するに過ぎないこと、および本発明の範囲および趣旨を逸脱することなく、様々な変形が当業者によって実施され得ることを理解されたい。
【図１】
2014532926.tif 000005
【図２】
2014532926.tif 000006
【図３】
2014532926.tif 000007
【図４】
2014532926.tif 000008
【国際調査報告】
2014532926.tif 000009
2014532926.tif 000010