(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6526415
(24)【登録日】2019年5月17日
(45)【発行日】2019年6月5日
(54)【発明の名称】ベクトル・プロセッサおよび方法
(51)【国際特許分類】
G06F 17/16 20060101AFI20190527BHJP
G06F 17/10 20060101ALI20190527BHJP
H03H 17/02 20060101ALI20190527BHJP
【FI】
G06F17/16 F
G06F17/10 A
H03H17/02 681H
【請求項の数】6
【全頁数】9
(21)【出願番号】特願2014-539058(P2014-539058)
(86)(22)【出願日】2012年10月26日
(65)【公表番号】特表2015-502597(P2015-502597A)
(43)【公表日】2015年1月22日
(86)【国際出願番号】US2012062182
(87)【国際公開番号】WO2013063440
(87)【国際公開日】20130502
【審査請求日】2015年6月10日
【審判番号】不服2017-11725(P2017-11725/J1)
【審判請求日】2017年8月4日
(31)【優先権主張番号】61/552,242
(32)【優先日】2011年10月27日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】アザデット,カメラン
(72)【発明者】
【氏名】ユ,メンリン
(72)【発明者】
【氏名】オスマー,ジョセフ,エッチ.
(72)【発明者】
【氏名】ウィリアムズ,ジョセフ
(72)【発明者】
【氏名】モリーナ,アルベルト
【合議体】
【審判長】
仲間 晃
【審判官】
辻本 泰隆
【審判官】
山崎 慎一
(56)【参考文献】
【文献】
特表平11−505640(JP,A)
【文献】
特開平10−222476(JP,A)
【文献】
特表2004−514374(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F17/10-17/18
(57)【特許請求の範囲】
【請求項1】
N1+N2−1個の入力サンプルで構成されたベクトルを有する1つまたは複数のベクトル畳み込みソフトウェア命令に応答して、入力信号とフィルタのインパルス応答との間の畳み込みを実行するためにベクトル・プロセッサによって実行される方法であって、
少なくとも前記N1+N2−1個の入力サンプルで構成されるベクトルを取得することと、
それぞれの時間シフトされたバージョンがN1個のサンプルを含む、前記ベクトルのN2個の時間シフトされたバージョンを取得することと、
前記ベクトルのN2個の時間シフトされたバージョンに対して並列に、前記ベクトルの前記時間シフトされたバージョンの重み付けされた和を、N1個の係数のベクトルにより実行することと、
前記重み付けされた和のそれぞれに対して1つの出力値を含む出力ベクトルを生成することと、を含み、
前記フィルタのインパルス応答は複数の係数を用いて表され、ベクトル畳み込み関数ユニットによってサポートされる係数の個数はフィルタにおける係数の個数よりも少なく、前記方法は、より大きなフィルタのより小さな塊を反復的に処理するステップを更に含み、それぞれの反復の出力は前記より大きなフィルタのすべてが処理されるまでそれぞれの塊に対して累積される、
方法。
【請求項2】
前記ベクトルは複数の実数または複素数の入力サンプルを含み、前記フィルタのインパルス応答は実数または複素数である複数の係数を用いて表される、請求項1に記載の方法。
【請求項3】
前記フィルタのインパルス応答は複数の係数を用いて表され、前記係数は前記係数のすべてのビットが処理されるまで複数回の反復を用いて減少されたビット数で処理され、それぞれの反復の出力は前記係数のすべてのビットが処理されるまでシフトされ累積される、請求項1に記載の方法。
【請求項4】
N1+N2−1個の入力サンプルで構成されたベクトルを有する1つまたは複数のベクトル畳み込みソフトウェア命令に応答して、入力信号とフィルタのインパルス応答との間の畳み込みを実行するベクトル・プロセッサであって、
メモリと、
前記メモリに結合されている少なくとも1つのハードウェア・デバイスであって、
少なくとも前記N1+N2−1個の入力サンプルで構成されるベクトルを取得し、
それぞれの時間シフトされたバージョンがN1個のサンプルを含む、前記ベクトルのN2個の時間シフトされたバージョンを取得し、
前記ベクトルのN2個の時間シフトされたバージョンに対して並列に、前記ベクトルの前記時間シフトされたバージョンの重み付けされた和を、N1個の係数のベクトルにより実行し、
前記重み付けされた和のそれぞれに対して1つの出力値を含む出力ベクトルを生成する、ように動作するハードウェア・デバイスと、を備え、
前記フィルタのインパルス応答は複数の係数を用いて表され、ベクトル畳み込み関数ユニットによってサポートされる係数の個数はフィルタにおける係数の個数よりも少なく、より大きなフィルタのより小さな塊が反復的に処理され、それぞれの反復の出力は前記より大きなフィルタのすべてが処理されるまでそれぞれの塊に対して累積される、
ベクトル・プロセッサ。
【請求項5】
前記ベクトルは複数の実数または複素数の入力サンプルを含み、前記フィルタのインパルス応答は実数または複素数である複数の係数を用いて表される、請求項4に記載のベクトル・プロセッサ。
【請求項6】
前記フィルタのインパルス応答は複数の係数を用いて表され、前記係数は前記係数のすべてのビットが処理されるまで複数回の反復を用いて減少されたビット数で処理され、それぞれの反復の出力は前記係数のすべてのビットが処理されるまでシフトされ累積される、請求項4に記載のベクトル・プロセッサ。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2011年10月27日に出願され、「Software Digital Front End (SoftDFE) Signal Processing and Digital Radio」と題する米国仮特許出願第61/552,242号の優先権を主張するものである。なお、この米国仮特許出願は、参照により本明細書に組み入れられる。本出願は、2010年8月3日に出願され、「System and Method for Providing Memory Bandwidth Efficient Correlation Acceleration」と題する米国特許出願第12/849,142号の関連出願である。この米国特許出願は、参照により本明細書に組み入れられる。
【0002】
本発明は、デジタル処理技術に関するものであり、更に詳しくは、ベクトル畳み込みのための技術に関する。
【背景技術】
【0003】
ベクトル・プロセッサは、ベクトル(すなわち、データの1次元的配列)に対して作用する命令を含む命令セットを実装する。他方で、スカラ・デジタル信号プロセッサ(DSP)は、単独のデータ項目に対して作用する命令を有する。ベクトル・プロセッサは、特定の作業負荷に対して、より優れた性能を与える。
【0004】
DSPおよびベクトル・プロセッサなどのデジタル・プロセッサは、加算、乗算、積和(multiply-accumulate)演算(MAC)、およびシフト累積(shift-accumulate)演算など、数学的に集約的な処理アプリケーションに要求されるソフトウェア演算を実行するための特定のハードウェアを組み入れる場合がしばしばある。例えば、積和アーキテクチャは、多くの共通のデータ処理演算が、2つの数の相互の乗算、その結果として得られる値の別の値への加算、および結果の累積を含むことを認識している。そのような基本的な演算は、特定の高速な乗算器および累算器を利用して効率的に実行可能である。
【0005】
しかし、既存のDSPおよびベクトル・プロセッサは、インパルス応答を有するフィルタによる入力信号のベクトル畳み込みをサポートする特定の命令を提供しない。ところが、プロセッサにおけるベクトル畳み込み演算に対する必要性は、ますます増加している。例えば、FIRフィルタ領域では、畳み込みが、入力波形信号とフィルタのインパルス応答とを、適用されたタイムラグ(遅延)の関数として処理する。畳み込みプロセッサは、典型的には、時間シフトされた入力信号とフィルタのインパルス応答とを受け取り、それらを処理して、それぞれの時間シフトされたバージョン(それぞれのタイムラグ)に対して1つの出力値を生成する。このような畳み込みの計算は、例えば、FIRフィルタの応用例において、広範に用いることが可能である。長さがLでありタイムラグの数がWである入力シーケンスに対して、要求される計算量(computation complexity)はO(L*W)である。大量の計算が要求されるために、多くの応用例において畳み込みの計算を加速することが強く望まれている。
【発明の概要】
【発明が解決しようとする課題】
【0006】
したがって、ベクトル・プロセッサなど、ベクトル畳み込み関数をサポートする命令セットを有するデジタル・プロセッサに対する必要性が存在する。
【課題を解決するための手段】
【0007】
一般に、ベクトル畳み込み関数を含む命令セットを有するベクトル・プロセッサが提供される。本発明のある態様によると、開示されているベクトル・プロセッサは、入力信号とフィルタのインパルス応答との間の畳み込み関数を、少なくともN1+N2−1個の入力サンプルで構成されるベクトルを取得することと、それぞれの時間シフトされたバージョンがN1個のサンプルを含む、ベクトルのN2個の時間シフトされたバージョン(シフトがゼロであるバージョンを含む)を取得することと、ベクトルの時間シフトされたバージョンの重み付けされた和を、N1個の係数のベクトルにより実行することと、重み付けされた和のそれぞれに対して1つの出力値を含む出力ベクトルを生成することと、により実行する。ベクトル・プロセッサは、例えば、N1+N2−1個の入力サンプルで構成されたベクトルを有する1つまたは複数のベクトル畳み込みソフトウェア命令に応答して、この方法を実行する。
【0008】
ベクトルは複数の実数または複素数の入力サンプルを含むことがあり、フィルタのインパルス応答は実数または複素数である複数の係数を用いて表されることがある。複数の係数はそれらの係数のすべてのビットが処理されるまで複数回の反復を用いて減少されたビット数で処理されることがありうるし、それぞれの反復の出力は係数のすべてのビットが処理されるまでシフトされ累積される。
【0009】
別の実施形態では、畳み込みによってサポートされる係数の個数が処理されるフィルタにおける係数の個数よりも少ないときには、より大きなフィルタのより小さな塊は反復的に処理され、それぞれの反復の出力はより大きなフィルタのすべてが処理されるまでそれぞれの塊に対して累積される。
【0010】
本発明の更なる特徴および効果だけでなく、本発明のより完全な理解が、以下の詳細な説明と図面とを参照することにより、得られるであろう。
【図面の簡単な説明】
【0011】
【
図1】本発明の特徴を組み入れた例示的なベクトル・プロセッサの概略的なブロック図である。
【
図2】本発明の特徴を組み入れた複素ベクトル畳み込み関数を示す図である。
【
図3】本発明の実施形態に従ってベクトル入力を処理しベクトル出力を生成する例示的なベクトル・ベースのデジタル・プロセッサの概略的なブロック図である。
【発明を実施するための形態】
【0012】
本発明の態様は、ベクトル畳み込み関数をサポートするベクトル・プロセッサを提供する。畳み込み命令は、典型的には、時間シフトされた入力信号とフィルタのインパルス応答とを受け取り、それらを処理して、それぞれの時間シフトされたバージョンに対してある1つの出力値を有するベクトルを生成する。初等的なMAC演算は、複素数または実数である入力と係数とを用いたものでありうる。よって、入力サンプルと係数とは両方とも、実数および/または虚数でありうる。開示されている特定のベクトル畳み込み命令は、例えば、チャネル・フィルタ、RFイコライザ、IQインバランス補正、およびデジタル・プレディストーション(DPD)パラメータ評価のための畳み込みを、デジタル・フロントエンド信号処理において実装するのに、用いることができる。本明細書で用いられている用語「ベクトル・プロセッサ」とは、プログラム・コードにおけるベクトル・データに対してベクトル命令を実行するプロセッサである。
【0013】
本発明は、例えば、バンドセット、基地局、およびその他のネットワーク要素において適用することができる。
【0014】
図1は、本発明の特徴を組み入れた例示的なベクトル・プロセッサ100の概略的なブロック図である。
図1に示されているように、例示的なベクトル・プロセッサ100は、以下で更に論じられるベクトル畳み込み関数のための1つまたは複数の関数ユニット110を含む。
【0015】
一般に、ベクトル畳み込み関数に対応する予め定義された命令キーワードとその関数のための適切なオペランド(すなわち、入力サンプル)とを含むソフトウェア・コードをベクトル・プロセッサ100が処理している場合には、命令デコーダは、ベクトル畳み込み命令を処理することを要求される適切なベクトル畳み込み関数ユニット(複数可)110をトリガしなければならない。なお、ベクトル畳み込み関数ユニット110は、複数の命令によって共有されることがありうる。
【0016】
一般に、本発明の態様は、従来型のベクトル・プロセッサを、ベクトル畳み込み関数をサポートする強化された命令セットを提供するように、拡張する。本発明の態様によるベクトル・プロセッサ100は、実数または複素数の入力を有する入力ベクトルを受け取り、その入力に複素ベクトル畳み込み関数を適用して、それぞれの時間シフトに対してある出力値を有するベクトルを生成する。
【0017】
開示されているベクトル・プロセッサ100は、
図3との関係で後述されるように、並列的に処理される複数の実数または複素数であるスカラ数によってそれぞれが構成されている1つまたは複数のベクトル入力を処理するベクトル・アーキテクチャを有する。
【0018】
図2との関係で更に後述されるように、入力サンプルの個数がN1+N2−1であり、出力サンプルの個数がN2である場合には、畳み込み命令は、例えば1サイクルにおいて1〜4ビットのN1xN2回の畳み込み演算を実行する。更に、畳み込みのための係数がベクトル畳み込み関数ユニットの係数ビットよりも多くのビットを有する場合には、出力結果は、反復的に得ることができる。例えば、畳み込みが2ビットの係数によって実装され、12ビットが必要とされる場合であれば、最終的な結果を得るために、6回の反復が必要になる。入力に64のサンプルがあり(63個が使われ)、32の係数がレジスタに記憶され、32の出力が計算されると仮定すると、この命令は、2ビットの係数と32ビットの複素数データ(16ビットの実数+16ビットの虚数)とが乗算された1024回のMAC演算を1サイクルで実行し、32ビットの複素数データ(16ビットの実数+16ビットの虚数)と24ビットの複素数係数(12ビットの実数+16ビットの虚数)とが乗算された複素数演算を6サイクルで実行する。この性能は、汎用のDSPの性能よりも、数オーダの大きさだけ優れている。
【0019】
図2は、本発明の特徴を組み入れたベクトル畳み込み関数200を示す。一般に、ベクトル畳み込み関数200は、Nビットの複素数データ(N/2ビットの実数およびN/2ビットの虚数)と複素数の対蹠的(antipodal)データ(例えば、係数)との畳み込みを計算する。ベクトル畳み込み関数200は、典型的には、N1+N2−1のサンプルの入力ベクトルを受け取り、入力ベクトル210 N1(軸230に沿って)のN1のサンプルの時間シフトされたバージョン220と係数とを処理して、それぞれの時間シフトされたバージョン(それぞれのタイム・ラグ)に対して、FIR出力値225を生成する。出力ベクトル260は、N2の出力値から構成される。
【0020】
図2の例示的な実施形態においては、入力ベクトル210は、実数または複素数のデータ(例えば、32ビットの実数および32ビットの虚数)のN1+N2−1のサンプルと、係数との畳み込みがなされるN1のサンプル(16ビットの実数および16ビットの虚数)を有するN2個のその時間シフトされたバージョン220とを含む。係数は、それぞれが、バイナリ値(例えば、または2ビット、4ビットなど)でありうる。
【0021】
開示されているベクトル畳み込み関数(vec_conv())は、ベクトル畳み込み関数200の中のFIRフィルタを加速する。ただし、ベクトル畳み込み関数200における係数は、例えば、(2ビット、4ビットなどの)バイナリ値である。更に、この演算は、係数に対して18ビットなどの十分なビット数を用いることにより、更に加速して、1サイクルで実行することが可能である。一般に、それぞれの時間シフトされた演算は、シフトされた入力値220と係数とのFIRフィルタリングを含む。
【0022】
2ビットの値を用いる例示的な畳み込みに対して、FIRフィルタ/畳み込み演算は、次のように書くことができる。
【数1】
ただし、これらの2つの数式において、次の通りである。
【数2】
ただし、これらの数式において、h(k)は係数を示し、x(n−k)は時間シフトされた入力値を示す。多相フィルタの場合には、係数h
kは、フィルタのそれぞれの相に対して変化しうる。
【0023】
インパルス応答hを有するフィルタによる入力信号xの畳み込みは、次のように書くことができる。
【数3】
【0024】
入力信号xと入力信号yとの相関または相互相関は、次のように書くことができる(ただし、信号xおよび/または信号yは、パイロット信号またはCDMAバイナリ/バイポーダル(bipodal)コードなどの、既知の基準信号でありうる)。
【数4】
【0025】
係数の12ビット表現との例示的な畳み込みに対しては、FIRフィルタ出力を計算するために6回の反復が存在する(2ビット値の6倍)。
【0026】
図3は、本発明の実施形態に従って、1つまたは複数の複素数を同時に処理する例示的なベクトル・ベースのデジタル・プロセッサ300の概略的なブロック図である。一般に、
図3のベクトル・ベースの実装例は、異なるプロセスを同時に実行することにより、スカラ型の実装例と比較して、計算量を、または、アルゴリズムを実装するのに必要なサイクル数を、減少させる。したがって、ベクトル・ベースのデジタル・プロセッサ300は、ベクトル畳み込みのための関数ユニット310を含む。
【0027】
一般に、ベクトル・ベースのデジタル・プロセッサ300は、入力ベクトルxを処理して、出力ベクトルy(n)を生成する。N1=32およびN2=37に対する例示的なベクトル・ベースのデジタル・プロセッサ300は、次のように表すことができる。
(y1,y2,...,y37)=vec_cor32x37(x1,x2,...,x68)
【0028】
結論
以上で、本発明の例示的な実施形態についてデジタル・プロセッサの内部にあるデジタル論理ブロックとメモリ・テーブルとの関係で説明してきたが、当業者には明らかであるように、様々な機能を、デジタル領域において、ソフトウェア・プログラムにおける処理ステップとして、回路素子もしくはステート・マシンによるハードウェアにおいて、またはソフトウェアとハードウェアとの両方の組み合わせにおいて、実装することができる。そのようなソフトウェアは、例えば、デジタル信号プロセッサ、特定用途向け集積回路、またはマイクロコントローラにおいて、用いることができる。そのようなハードウェアおよびソフトウェアは、集積回路の内部において実装された回路の中で実現することができる。
【0029】
このように、本発明の機能は、方法およびそのような方法を実現させる装置という形式で、実施できる。本発明の1つまたは複数の態様は、例えば、記憶媒体に格納されている場合もそうでない場合もありうるが、マシンにロードされるおよび/またはマシンによって実行されるプログラム・コードという形式で、実現することが可能である。ただし、このプログラム・コードがプロセッサなどのマシンにロードされ実行されると、そのマシンは、本発明を実現させる装置になる。このプログラム・コードのセグメントは、汎用のプロセッサ上で実装されると、プロセッサと組み合わされて、特定のロジック回路と同様に動作するデバイスを提供する。本発明は、また、集積回路、デジタル・プロセッサ、マイクロプロセッサ、およびマイクロコントローラの内の1つまたは複数として実装されることも、ありうる。
【0030】
本明細書で示され説明された実施形態および変形例は単に本発明の原理を解説しているだけであり、当業者であれば本発明の範囲および精神から逸脱せずに様々な修正を行いうるということを、理解すべきである。