特許第6189848号(P6189848)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インテル・コーポレーションの特許一覧

<>
  • 特許6189848-方法およびデジタル・プロセッサ 図000004
  • 特許6189848-方法およびデジタル・プロセッサ 図000005
  • 特許6189848-方法およびデジタル・プロセッサ 図000006
  • 特許6189848-方法およびデジタル・プロセッサ 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6189848
(24)【登録日】2017年8月10日
(45)【発行日】2017年8月30日
(54)【発明の名称】方法およびデジタル・プロセッサ
(51)【国際特許分類】
   G06F 17/16 20060101AFI20170821BHJP
   G06F 9/38 20060101ALI20170821BHJP
【FI】
   G06F17/16 N
   G06F17/16 F
   G06F9/38 370C
【請求項の数】8
【全頁数】11
(21)【出願番号】特願2014-539061(P2014-539061)
(86)(22)【出願日】2012年10月26日
(65)【公表番号】特表2014-532926(P2014-532926A)
(43)【公表日】2014年12月8日
(86)【国際出願番号】US2012062191
(87)【国際公開番号】WO2013063447
(87)【国際公開日】20130502
【審査請求日】2015年6月10日
(31)【優先権主張番号】61/552,242
(32)【優先日】2011年10月27日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】アザデット,カメラン
(72)【発明者】
【氏名】モリーナ,アルベルト
(72)【発明者】
【氏名】オスマー,ジョセフ,エッチ.
(72)【発明者】
【氏名】ヴェンカタラガヴァン,パラカラン
(72)【発明者】
【氏名】ユ,メンリン
(72)【発明者】
【氏名】ウィリアムズ,ジョセフ
【審査官】 井上 宏一
(56)【参考文献】
【文献】 特開2000−200261(JP,A)
【文献】 特表2002−525908(JP,A)
【文献】 特開平 2−170274(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/16
G06F 9/38
(57)【特許請求の範囲】
【請求項1】
入力値xに関して複素指数関数を評価するためにデジタル・プロセッサによって実行される方法であって、
入力として前記入力値xを有する1つまたは複数の複素指数ソフトウェア命令を獲得するステップと、
前記1つまたは複数の複素指数ソフトウェア命令のうちの少なくとも1つに応答して、
前記1つまたは複数の複素指数ソフトウェア命令を実装する少なくとも1つの複素指数関数ユニットを呼び出して、前記入力値xを前記複素指数関数に代入して演算するステップと、
前記入力値xの前記複素指数関数の演算結果に対応する出力を生成するステップと、
を備え、
前記演算するステップは、
所与の範囲を保つように前記入力値をラップするステップと、
前記入力値の最上位の複数のビット(MSB)を使用してルックアップ・テーブルを用いて粗い近似角度を計算するステップと、
多項式近似を用いて細かい補正値を計算するステップと、を有する
方法。
【請求項2】
0からθまでの角度を得るように前記粗い近似角度をスケール変更するステップを備える請求項に記載の方法。
【請求項3】
対称特性を用いて前記ルックアップ・テーブルのサイズを縮小するステップをさらに備える請求項1または2に記載の方法。
【請求項4】
入力値xに関して複素指数関数を評価するデジタル・プロセッサであって、
メモリと、
前記メモリに結合され、
入力として前記入力値xを有する1つまたは複数の複素指数ソフトウェア命令を獲得し、
前記1つまたは複数の複素指数ソフトウェア命令のうちの少なくとも1つに応答して、
前記1つまたは複数の複素指数ソフトウェア命令を実装する少なくとも1つの複素指数関数ユニットを呼び出して、前記入力値xを前記複素指数関数に代入して演算すること、および
前記入力値xの前記複素指数関数の演算結果に対応する出力を生成することを実行するように動作する少なくとも1つのハードウェア・デバイスと
を備え、
前記ハードウェア・デバイスは、
所与の範囲を保つように前記入力値をラップし、
前記入力値の最上位の複数のビット(MSB)を使用してルックアップ・テーブルを用いて粗い近似角度を計算し、
多項式近似を用いて細かい補正値を計算することによって、前記演算を行う
デジタル・プロセッサ。
【請求項5】
前記少なくとも1つのハードウェア・デバイスは、前記入力値xの前記複素指数関数の前記演算結果に、さらなる入力値を掛けるようにさらに構成される請求項に記載のデジタル・プロセッサ。
【請求項6】
前記ハードウェア・デバイスは、0からθまでの角度を得るように前記粗い近似角度をスケール変更する
請求項4または5に記載のデジタル・プロセッサ。
【請求項7】
前記多項式近似は、テイラー級数と3次近似のうちの1つまたは複数を備える請求項からのいずれか1項に記載のデジタル・プロセッサ。
【請求項8】
前記少なくとも1つのハードウェア・デバイスは、対称特性を用いて前記ルックアップ・テーブルのサイズを縮小するようにさらに構成される請求項からのいずれか1項に記載のデジタル・プロセッサ。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、参照により本明細書に組み込まれている「Software Digital Front End(SoftDFE) Signal Processing and Digital Radio」という名称の2011年10月27日に出願した米国仮特許出願第61/552,242号の優先権を主張するものである。
【0002】
本出願は、参照により本明細書に組み込まれている、いずれも2008年11月28日に出願した「Digital Signal Processor Having Instruction Set with One or More Non−Linear Complex Functions」という名称の米国特許出願第12/324,926号、および「Digital Signal Processor Having Instruction Set With An Exponential Function Using Reduced Look−Up Table」という名称の米国特許出願第12/362,879号と関係する。
【0003】
本発明は、デジタル処理技法に関し、より詳細には、複素指数関数のデジタル処理のための技法に関する。
【背景技術】
【0004】
デジタル・シグナル・プロセッサ(DSP)は、デジタル処理のために利用される専用プロセッサである。信号は、しばしば、アナログ形態から、デジタルで操作されるデジタル形態に変換され、その後、さらなる処理のために再びアナログ形態に変換される。デジタル信号処理アルゴリズムは、通常、データのセットに対して多数の数学演算が迅速に、効率的に実行されることを要求する。
【0005】
このため、DSPは、しばしば、加算、乗算、乗算累算(MAC)、およびシフト累算などの数学を多用する処理アプリケーションのために、しばしば、要求されるソフトウェア動作を実行する専用のハードウェアを組み込む。例えば、乗算累算アーキテクチャは、多くの一般的な処理操作が、2つの数を掛け合わせ、もたらされた値を別の値に足し、その後、その結果を累算することを含むことを認識する。そのような基本操作は、専用の高速の乗算器および累算器を利用して効率的に実行され得る。
【0006】
ベクトル・プロセッサは、ベクトル(すなわち、データの1次元アレイ)を操作する命令を含む命令セットを実装する。他方、スカラDSPは、単一のデータ項目を操作する命令を有する。ベクトル・プロセッサは、いくつかの作業負荷に対して向上したパフォーマンスを提供する。
【0007】
しかし、DSPおよびベクトル・プロセッサは、一般に、複素指数関数をサポートする専用の命令を備えない。しかし、ますます、プロセッサにおける複素指数演算の必要性が存在する。例えば、第1の複素数に第2の複素数が掛けられる場合に、複素指数演算が必要とされる。複素指数関数は、周期信号の基礎をもたらすとともに、線型時不変信号(linear,time−invariant signals)を特徴付けることができるので、重要である。
【発明の概要】
【発明が解決しようとする課題】
【0008】
したがって、複素指数関数をサポートする命令セットを有するDSPおよびベクトル・プロセッサなどのデジタル・プロセッサの必要性が存在する。
【課題を解決するための手段】
【0009】
全般的に、複素指数関数を備える命令セットを有するデジタル・プロセッサが提供される。本発明の一態様によれば、開示されるデジタル・プロセッサは、入力値xに関して複素指数関数を評価することを、入力として入力値xを有する1つまたは複数の複素指数ソフトウェア命令を獲得すること、およびそれらの複素指数ソフトウェア命令のうちの少なくとも1つに応答して、以下のステップ、すなわち、その1つまたは複数の複素指数ソフトウェア命令を実装する少なくとも1つの複素指数関数ユニットを呼び出して、入力値xにその複素指数関数を適用するステップ、および入力値xの複素指数に対応する出力を生成するステップを実行することによって行う。
【0010】
本発明の別の態様によれば、開示されるデジタル・プロセッサは、入力値xに関して複素指数関数を、所与の範囲を保つように入力値をラップすること、入力値の最上位のいくつかのビット(MSB)を使用してルックアップ・テーブルを用いて粗い近似角度を計算すること、0からθまでの角度を得るようにその粗い近似角度をスケール変更すること、および多項式近似を用いて細かい補正値を計算することによって評価する。この多項式近似は、例えば、3次近似などのテイラー級数を備える。
【0011】
このデジタル・プロセッサは、プログラム・コードからソフトウェア命令を実行し、例えば、ベクトル・プロセッサまたはスカラ・プロセッサであることが可能である。一変形形態において、対称特性が、ルックアップ・テーブルのサイズを縮小するのに用いられる。さらに、角度は、オプションとして、複素指数関数内で累算されることが可能であり、引数および/または現在の累算値の複素指数が戻されることが可能である。別の変形形態において、入力信号に複素指数関数の引数の指数部が掛けられる。
【0012】
本発明、ならびに本発明のさらなる特徴および利点のより完全な理解が、後段の詳細な説明、および添付の図面を参照することで得られよう。
【図面の簡単な説明】
【0013】
図1】本発明の特徴を組み込んだ例示的なデジタル・プロセッサを示す概略ブロック図である。
図2】本発明の特徴を組み込んだ複素指数関数計算プロセスの例示的な実施を示す流れ図である。
図3】ルックアップ・テーブルを用いた複素指数の粗い推定の計算を示す図である。
図4】本発明の実施形態による1つまたは複数の実数を同時に処理する例示的なベクトル・ベースのデジタル・プロセッサを示す概略ブロック図である。
【発明を実施するための形態】
【0014】
本発明の態様が、2段階の粗い推定と細かい推定のアプローチを使用する複素指数関数をサポートするデジタル・プロセッサを提供する。一般に、1つまたは複数のルックアップ・テーブルが、exp(jπx)などの、複素指数関数の計算の少なくとも一部分の粗い推定値を格納する。本発明のさらなる態様は、後段でさらに説明されるとおり、入力値のダイナミックレンジが限定される場合に、テイラー級数近似がその複素指数関数の細かい補正を計算するのに用いられ得ることを認識する。
【0015】
本明細書で使用される「デジタル・プロセッサ」という用語は、DSPまたはベクトル・プロセッサなどの、プログラム・コードの中の命令を実行するプロセッサであるものとする。開示される複素指数関数は、スカラ入力またはベクトル入力であるxの値に関して適用され得ることにさらに留意されたい。
【0016】
本発明は、ハンドセット、基地局、または他のネットワーク要素において適用され得る。
【0017】
図1は、本発明の特徴を組み込んだ例示的なデジタル・プロセッサ100の概略ブロック図である。例示的なデジタル・プロセッサ100は、DSPとして、またはベクトル・プロセッサとして実装され得る。図1に示されるとおり、例示的なデジタル・プロセッサ100は、複素指数関数のための1つまたは複数の関数ユニット110を含む。さらに、デジタル・プロセッサ100は、図3に関連して後段でさらに説明されるとおり、その複素指数関数の粗い推定を計算するための値を格納する1つまたは複数のルックアップ・テーブル120を備える。
【0018】
一般に、デジタル・プロセッサ100が、複素指数関数、およびその関数に関する任意の適切なオペランドに対応する事前定義された命令キーワードを含むソフトウェア・コードを処理している場合、命令デコーダは、その命令を処理するのに要求される適切な複素指数関数ユニット110をトリガしなければならない。複素指数関数ユニット110は、複数の命令によって共有され得ることに留意されたい。
【0019】
一般に、本発明の態様は、1つまたは複数のルックアップ・テーブルを用いて複素指数関数をサポートする強化された命令セットをもたらすように従来のデジタル・プロセッサを拡張する。本発明の態様によるデジタル・プロセッサ100は、入力として少なくとも1つの実数を受け取り、その入力に複素指数関数を適用し、出力値を生成する。
【0020】
開示されるデジタル・プロセッサ100は、一度に1つずつ数値を処理する、図1に示されるスカラ・アーキテクチャ、または1つもしくは複数の数値を同時に処理する、図4に関連して後段で説明される、ベクトル・アーキテクチャを有することが可能である。ベクトル・ベースのデジタル・プロセッサ実装形態の場合、入力数値は、並行に処理される複数のスカラ数値から成るベクトルである。
【0021】
開示される複素指数関数は、例えば、ベースバンド信号のデジタル・アップコンバージョンまたはデジタル変調のために、さらに高速フーリエ変換(FFT)アルゴリズムなどの、2つの数値の乗算を要求する他の信号処理のために使用され得る。
【0022】
図2は、exp(jπx)を計算する本発明の特徴を組み込んだ複素指数関数計算プロセス200の例示的な実施を説明する流れ図である。一般に、例示的な複素指数関数計算プロセス200は、粗い推定が最初に獲得され、その後、細かい推定を使用して補正される2段階アプローチを実施する。
【0023】
図2に示されるとおり、例示的な複素指数関数計算プロセス200は、ステップ210中に、例えば、モジュロ演算を使用して、2πx入力値を範囲[0,2π]に入れるように最初にラップし、または、代替として、範囲[0,1]に入れるようにxをラップする。その後、複素指数関数計算プロセス200は、ステップ220中に、図3に関連して後段で説明されるとおり、xの最上位の4ビット(MSB)を使用して4ビット・ルックアップ・テーブル120を用いて粗い近似角度を計算する。
【0024】
ステップ230中、複素指数関数計算プロセス200は、θが小さい値である、0からθまでの角度を得るようにステップ220の角度結果をスケール変更する。最後に、ステップ240中、複素指数関数計算プロセス200は、後段でさらに説明されるとおり、テイラー級数を用いて細かい補正exp(j2πε)値を計算する。2次テイラー級数展開(quadratic Taylor Series expansion)が、2Kテーブルと比較して十分な精度を与えることが判明している。
【0025】
数学的に、複素指数関数計算プロセス200によって実行される操作は、以下のとおり表現され得る。すなわち、
2π・x←2π・xmod[2π] (1)
x=x+ε (2)
【0026】
式(2)における最初の項は、0から15/16までの範囲内の値をもたらし、式(2)における2番目の項は、1/16未満の値をもたらす。式(2)は、以下のとおり表現され得る。すなわち、
exp(j2π・x)=exp(j2π・x)・exp(j2π・ε) (3)
【0027】
式(3)における最初の項は、図3に関連して後段でさらに説明される、ルックアップ・テーブル120から獲得された粗い位相推定である。式(3)における2番目の項は、テイラー級数展開を用いて計算された残留位相(residual phase)、つまり、細かい補正値をもたらす。
【0028】
図3は、ルックアップ・テーブルを用いた複素指数の粗い位相推定の計算を示す。図3に示されるとおり、MSBの4つが、円形図300を用いて角度に変換され、この4つのビット値は、ルックアップ・テーブル120の中の1つのエントリ310を識別する。
【0029】
複素指数関数の多項式近似
本発明の態様は、複素指数関数の細かい補正がテイラー級数を用いて近似され得ることを認識する。このため、複素指数関数、exp(jπx)は、以下のとおり表現され得る。すなわち、
【数1】
【0030】
さらに、本発明は、3次近似(すなわち、テイラー級数におけるxまでを含む)または2次近似(すなわち、テイラー級数におけるxまでを含む)が、通常、十分な精度をもたらすことを認識する。以下のテーブルが、2Kルックアップ・テーブルとの比較で、3次近似および2次近似に関する例示的な誤差を示す。
【0031】
【表1】
【0032】
図4は、本発明の実施形態による1つまたは複数の数値を同時に処理する例示的なベクトル・ベースのデジタル・プロセッサ400の概略ブロック図である。一般に、図4のベクトル・ベースの実装形態は、異なるプロセスを並行して実行することにより、図1のスカラ実装形態と比べてMIPSの数値(毎秒の命令数)を増加させる。このため、ベクトル・ベースのデジタル・プロセッサ400は、複素指数関数のための複数の関数ユニット310−1乃至310−Nを含む。例えば、デュアル・デジタル・プロセッサ400が、独立した2つの複素指数関数演算を並行して実行することができる2つの関数ユニット310−1および310−2を含む。
【0033】
一般に、ベクトル・ベースのデジタル・プロセッサ400は、入力xのベクトルを処理して、出力のベクトル、exp(j・2π・x)を生成する。例示的なベクトル・ベースのデジタル・プロセッサ400は、以下のとおり実装される16方向ベクトル(16−way vector)プロセッサexpj命令に関して示される。すなわち、
vec_expj(x1,x2,...,x16)、0から1までのx[k]の範囲
【0034】
一変形形態において、ルックアップ・テーブルのサイズが、対称性を利用することによって縮小され得る。例えば、正弦波は上下に振動し、したがって、上下の対称性が、ルックアップ・テーブルを半分に(0からπ/2まで)縮小するのに活用されることが可能であり、または1/4対称性(quarter symmtetry)(0からπ/4まで)を使用してさえ。さらに別の変形形態において、複素指数関数は、関数内で角度を累算することが可能である(すなわち、関数が、決まった量で、入力データに適用される角度のインクリメントを実行することもする、または角度量が関数呼び出しと一緒に渡される)。角度累算を伴う複素指数関数は、指数部の引数(the argument of the exponential)、および現在の累算という2つの結果を戻すことが可能である。
【0035】
別の変形形態において、開示される複素指数(j−Θ)関数は、入力信号xに引数の指数部j−Θを掛ける変調のために使用されることも可能である。この操作は、オプションとして、引数の指数部が計算され、その結果に入力信号xが掛けられるように複素指数命令(または複素乗算累算(CMAC)ユニット)によって実行されることも可能である。
【0036】
結論
本発明の例示的な実施形態は、デジタル・プロセッサ内部のデジタル論理ブロックおよびメモリ・テーブルに関連して説明されてきたが、当業者には明白なとおり、様々な機能は、ソフトウェア・プログラムにおいて、回路要素もしくは状態マシンによるハードウェアにおいて、またはソフトウェアとハードウェアの両方の組み合わせにおいて、処理ステップとしてデジタル領域で実装されることが可能である。そのようなソフトウェアは、例えば、デジタル・シグナル・プロセッサにおいて、特定用途向け集積回路において、またはマイクロコントローラにおいて使用されることが可能である。そのようなハードウェアおよびソフトウェアは、集積回路内に実装された回路内部で実現されることが可能である。
【0037】
このため、本発明の機能は、方法、およびそれらの方法を実施するための装置の形態で実現されることが可能である。本発明の1つまたは複数の態様は、例えば、記憶媒体に格納されるか、マシンにロードされ、さらに/またはマシンによって実行されるかにかかわらず、プログラム・コードの形態で実現されることが可能であり、このプログラム・コードが、プロセッサなどのマシンにロードされて、マシンによって実行されると、そのマシンが、本発明を実施するための装置となる。汎用プロセッサ上に実装されると、これらのプログラム・コード・セグメントはプロセッサと一緒になって、特定の論理回路と同様に動作するデバイスをもたらす。また、本発明は、集積回路、デジタル・プロセッサ、マイクロプロセッサ、およびマイクロコントローラのうちの1つまたは複数として実現されることも可能である。
【0038】
本明細書で示され、説明される実施形態および変形形態は、本発明の原理を例示するに過ぎないこと、および本発明の範囲および趣旨を逸脱することなく、様々な変形が当業者によって実施され得ることを理解されたい。
本実施形態の例を下記の各項目として示す。
[項目1]
入力値xに関して複素指数関数を評価するためにデジタル・プロセッサによって実行される方法であって、
入力として前記入力値xを有する1つまたは複数の複素指数ソフトウェア命令を獲得するステップと、
前記複素指数ソフトウェア命令のうちの少なくとも1つに応答して、以下のステップ、すなわち、
前記1つまたは複数の複素指数ソフトウェア命令を実装する少なくとも1つの複素指数関数ユニットを呼び出して、前記入力値xに前記複素指数関数を適用するステップ、および
前記入力値xの前記複素指数に対応する出力を生成するステップを実行するステップと
を備える方法。
[項目2]
前記複素指数関数内で角度を累算し、引数の複素指数および現在の累算値のうちの1つまたは複数を戻すステップをさらに備える項目1に記載の方法。
[項目3]
入力値xに関して複素指数関数を評価するためにデジタル・プロセッサによって実行される方法であって、
所与の範囲を保つように前記入力値をラップするステップと、
前記入力値の最上位のいくつかのビット(MSB)を使用してルックアップ・テーブルを用いて粗い近似角度を計算するステップと、
0からθまでの角度を得るように前記粗い近似角度をスケール変更するステップと、
多項式近似を用いて細かい補正値を計算するステップと
を備える方法。
[項目4]
対称特性を用いて前記ルックアップ・テーブルのサイズを縮小するステップをさらに備える項目3に記載の方法。
[項目5]
入力値xに関して複素指数関数を評価するデジタル・プロセッサであって、
メモリと、
前記メモリに結合され、
入力として前記入力値xを有する1つまたは複数の複素指数ソフトウェア命令を獲得し、前記複素指数ソフトウェア命令のうちの少なくとも1つに応答して、
前記1つまたは複数の複素指数ソフトウェア命令を実装する少なくとも1つの複素指数関数ユニットを呼び出して、前記入力値xに前記複素指数関数を適用すること、および
前記入力値xの前記複素指数に対応する出力を生成することを実行するように動作する少なくとも1つのハードウェア・デバイスと
を備えるデジタル・プロセッサ。
[項目6]
前記少なくとも1つのハードウェア・デバイスは、前記複素指数関数内で角度を累算し、引数の複素指数および現在の累算値のうちの1つまたは複数を戻すようにさらに構成される項目5に記載のデジタル・プロセッサ。
[項目7]
前記少なくとも1つのハードウェア・デバイスは、入力信号に前記複素指数関数の引数の指数部を掛けるようにさらに構成される項目5に記載のデジタル・プロセッサ。
[項目8]
入力値xに関して複素指数関数を評価するデジタル・プロセッサであって、
メモリと、
前記メモリに結合され、 所与の範囲を保つように前記入力値をラップし、
前記入力値の最上位のいくつかのビット(MSB)を使用してルックアップ・テーブルを用いて粗い近似角度を計算し、
0からθまでの角度を得るように前記粗い近似角度をスケール変更し、
多項式近似を用いて細かい補正値を計算するように動作する少なくとも1つのハードウェア・デバイスと
を備えるデジタル・プロセッサ。
[項目9]
前記多項式近似は、テイラー級数と3次近似のうちの1つまたは複数を備える項目8に記載のデジタル・プロセッサ。
[項目10]
前記少なくとも1つのハードウェア・デバイスは、対称特性を用いて前記ルックアップ・テーブルのサイズを縮小するようにさらに構成される項目8に記載のデジタル・プロセッサ。
図1
図2
図3
図4