(57)【特許請求の範囲】
【請求項１】
Ｎ１＋Ｎ２−１個の入力サンプルで構成されたベクトルを有する１つまたは複数のベクトル畳み込みソフトウェア命令に応答して、入力信号とフィルタのインパルス応答との間の畳み込みを実行するためにベクトル・プロセッサによって実行される方法であって、
少なくとも前記Ｎ１＋Ｎ２−１個の入力サンプルで構成されるベクトルを取得することと、
それぞれの時間シフトされたバージョンがＮ１個のサンプルを含む、前記ベクトルのＮ２個の時間シフトされたバージョンを取得することと、
前記ベクトルのＮ２個の時間シフトされたバージョンに対して並列に、前記ベクトルの前記時間シフトされたバージョンの重み付けされた和を、Ｎ１個の係数のベクトルにより実行することと、
前記重み付けされた和のそれぞれに対して１つの出力値を含む出力ベクトルを生成することと、を含み、
前記フィルタのインパルス応答は複数の係数を用いて表され、ベクトル畳み込み関数ユニットによってサポートされる係数の個数はフィルタにおける係数の個数よりも少なく、前記方法は、より大きなフィルタのより小さな塊を反復的に処理するステップを更に含み、それぞれの反復の出力は前記より大きなフィルタのすべてが処理されるまでそれぞれの塊に対して累積される、
方法。
【請求項２】
前記ベクトルは複数の実数または複素数の入力サンプルを含み、前記フィルタのインパルス応答は実数または複素数である複数の係数を用いて表される、請求項１に記載の方法。
【請求項３】
前記フィルタのインパルス応答は複数の係数を用いて表され、前記係数は前記係数のすべてのビットが処理されるまで複数回の反復を用いて減少されたビット数で処理され、それぞれの反復の出力は前記係数のすべてのビットが処理されるまでシフトされ累積される、請求項１に記載の方法。
【請求項４】
Ｎ１＋Ｎ２−１個の入力サンプルで構成されたベクトルを有する１つまたは複数のベクトル畳み込みソフトウェア命令に応答して、入力信号とフィルタのインパルス応答との間の畳み込みを実行するベクトル・プロセッサであって、
メモリと、
前記メモリに結合されている少なくとも１つのハードウェア・デバイスであって、
少なくとも前記Ｎ１＋Ｎ２−１個の入力サンプルで構成されるベクトルを取得し、
それぞれの時間シフトされたバージョンがＮ１個のサンプルを含む、前記ベクトルのＮ２個の時間シフトされたバージョンを取得し、
前記ベクトルのＮ２個の時間シフトされたバージョンに対して並列に、前記ベクトルの前記時間シフトされたバージョンの重み付けされた和を、Ｎ１個の係数のベクトルにより実行し、
前記重み付けされた和のそれぞれに対して１つの出力値を含む出力ベクトルを生成する、ように動作するハードウェア・デバイスと、を備え、
前記フィルタのインパルス応答は複数の係数を用いて表され、ベクトル畳み込み関数ユニットによってサポートされる係数の個数はフィルタにおける係数の個数よりも少なく、より大きなフィルタのより小さな塊が反復的に処理され、それぞれの反復の出力は前記より大きなフィルタのすべてが処理されるまでそれぞれの塊に対して累積される、
ベクトル・プロセッサ。
【請求項５】
前記ベクトルは複数の実数または複素数の入力サンプルを含み、前記フィルタのインパルス応答は実数または複素数である複数の係数を用いて表される、請求項４に記載のベクトル・プロセッサ。
【請求項６】
前記フィルタのインパルス応答は複数の係数を用いて表され、前記係数は前記係数のすべてのビットが処理されるまで複数回の反復を用いて減少されたビット数で処理され、それぞれの反復の出力は前記係数のすべてのビットが処理されるまでシフトされ累積される、請求項４に記載のベクトル・プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１１年１０月２７日に出願され、「Ｓｏｆｔｗａｒｅ  Ｄｉｇｉｔａｌ  Ｆｒｏｎｔ  Ｅｎｄ  （ＳｏｆｔＤＦＥ）  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｉｎｇ  ａｎｄ  Ｄｉｇｉｔａｌ  Ｒａｄｉｏ」と題する米国仮特許出願第６１／５５２，２４２号の優先権を主張するものである。なお、この米国仮特許出願は、参照により本明細書に組み入れられる。本出願は、２０１０年８月３日に出願され、「Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｐｒｏｖｉｄｉｎｇ  Ｍｅｍｏｒｙ  Ｂａｎｄｗｉｄｔｈ  Ｅｆｆｉｃｉｅｎｔ  Ｃｏｒｒｅｌａｔｉｏｎ  Ａｃｃｅｌｅｒａｔｉｏｎ」と題する米国特許出願第１２／８４９，１４２号の関連出願である。この米国特許出願は、参照により本明細書に組み入れられる。
【０００２】
本発明は、デジタル処理技術に関するものであり、更に詳しくは、ベクトル畳み込みのための技術に関する。
【背景技術】
【０００３】
ベクトル・プロセッサは、ベクトル（すなわち、データの１次元的配列）に対して作用する命令を含む命令セットを実装する。他方で、スカラ・デジタル信号プロセッサ（ＤＳＰ）は、単独のデータ項目に対して作用する命令を有する。ベクトル・プロセッサは、特定の作業負荷に対して、より優れた性能を与える。
【０００４】
ＤＳＰおよびベクトル・プロセッサなどのデジタル・プロセッサは、加算、乗算、積和（multiply-accumulate）演算（ＭＡＣ）、およびシフト累積（shift-accumulate）演算など、数学的に集約的な処理アプリケーションに要求されるソフトウェア演算を実行するための特定のハードウェアを組み入れる場合がしばしばある。例えば、積和アーキテクチャは、多くの共通のデータ処理演算が、２つの数の相互の乗算、その結果として得られる値の別の値への加算、および結果の累積を含むことを認識している。そのような基本的な演算は、特定の高速な乗算器および累算器を利用して効率的に実行可能である。
【０００５】
しかし、既存のＤＳＰおよびベクトル・プロセッサは、インパルス応答を有するフィルタによる入力信号のベクトル畳み込みをサポートする特定の命令を提供しない。ところが、プロセッサにおけるベクトル畳み込み演算に対する必要性は、ますます増加している。例えば、ＦＩＲフィルタ領域では、畳み込みが、入力波形信号とフィルタのインパルス応答とを、適用されたタイムラグ（遅延）の関数として処理する。畳み込みプロセッサは、典型的には、時間シフトされた入力信号とフィルタのインパルス応答とを受け取り、それらを処理して、それぞれの時間シフトされたバージョン（それぞれのタイムラグ）に対して１つの出力値を生成する。このような畳み込みの計算は、例えば、ＦＩＲフィルタの応用例において、広範に用いることが可能である。長さがＬでありタイムラグの数がＷである入力シーケンスに対して、要求される計算量（computation complexity）はＯ（Ｌ＊Ｗ）である。大量の計算が要求されるために、多くの応用例において畳み込みの計算を加速することが強く望まれている。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
したがって、ベクトル・プロセッサなど、ベクトル畳み込み関数をサポートする命令セットを有するデジタル・プロセッサに対する必要性が存在する。
【課題を解決するための手段】
【０００７】
一般に、ベクトル畳み込み関数を含む命令セットを有するベクトル・プロセッサが提供される。本発明のある態様によると、開示されているベクトル・プロセッサは、入力信号とフィルタのインパルス応答との間の畳み込み関数を、少なくともＮ１＋Ｎ２−１個の入力サンプルで構成されるベクトルを取得することと、それぞれの時間シフトされたバージョンがＮ１個のサンプルを含む、ベクトルのＮ２個の時間シフトされたバージョン（シフトがゼロであるバージョンを含む）を取得することと、ベクトルの時間シフトされたバージョンの重み付けされた和を、Ｎ１個の係数のベクトルにより実行することと、重み付けされた和のそれぞれに対して１つの出力値を含む出力ベクトルを生成することと、により実行する。ベクトル・プロセッサは、例えば、Ｎ１＋Ｎ２−１個の入力サンプルで構成されたベクトルを有する１つまたは複数のベクトル畳み込みソフトウェア命令に応答して、この方法を実行する。
【０００８】
ベクトルは複数の実数または複素数の入力サンプルを含むことがあり、フィルタのインパルス応答は実数または複素数である複数の係数を用いて表されることがある。複数の係数はそれらの係数のすべてのビットが処理されるまで複数回の反復を用いて減少されたビット数で処理されることがありうるし、それぞれの反復の出力は係数のすべてのビットが処理されるまでシフトされ累積される。
【０００９】
別の実施形態では、畳み込みによってサポートされる係数の個数が処理されるフィルタにおける係数の個数よりも少ないときには、より大きなフィルタのより小さな塊は反復的に処理され、それぞれの反復の出力はより大きなフィルタのすべてが処理されるまでそれぞれの塊に対して累積される。
【００１０】
本発明の更なる特徴および効果だけでなく、本発明のより完全な理解が、以下の詳細な説明と図面とを参照することにより、得られるであろう。
【図面の簡単な説明】
【００１１】
【図１】本発明の特徴を組み入れた例示的なベクトル・プロセッサの概略的なブロック図である。
【図２】本発明の特徴を組み入れた複素ベクトル畳み込み関数を示す図である。
【図３】本発明の実施形態に従ってベクトル入力を処理しベクトル出力を生成する例示的なベクトル・ベースのデジタル・プロセッサの概略的なブロック図である。
【発明を実施するための形態】
【００１２】
本発明の態様は、ベクトル畳み込み関数をサポートするベクトル・プロセッサを提供する。畳み込み命令は、典型的には、時間シフトされた入力信号とフィルタのインパルス応答とを受け取り、それらを処理して、それぞれの時間シフトされたバージョンに対してある１つの出力値を有するベクトルを生成する。初等的なＭＡＣ演算は、複素数または実数である入力と係数とを用いたものでありうる。よって、入力サンプルと係数とは両方とも、実数および／または虚数でありうる。開示されている特定のベクトル畳み込み命令は、例えば、チャネル・フィルタ、ＲＦイコライザ、ＩＱインバランス補正、およびデジタル・プレディストーション（ＤＰＤ）パラメータ評価のための畳み込みを、デジタル・フロントエンド信号処理において実装するのに、用いることができる。本明細書で用いられている用語「ベクトル・プロセッサ」とは、プログラム・コードにおけるベクトル・データに対してベクトル命令を実行するプロセッサである。
【００１３】
本発明は、例えば、バンドセット、基地局、およびその他のネットワーク要素において適用することができる。
【００１４】
図１は、本発明の特徴を組み入れた例示的なベクトル・プロセッサ１００の概略的なブロック図である。図１に示されているように、例示的なベクトル・プロセッサ１００は、以下で更に論じられるベクトル畳み込み関数のための１つまたは複数の関数ユニット１１０を含む。
【００１５】
一般に、ベクトル畳み込み関数に対応する予め定義された命令キーワードとその関数のための適切なオペランド（すなわち、入力サンプル）とを含むソフトウェア・コードをベクトル・プロセッサ１００が処理している場合には、命令デコーダは、ベクトル畳み込み命令を処理することを要求される適切なベクトル畳み込み関数ユニット（複数可）１１０をトリガしなければならない。なお、ベクトル畳み込み関数ユニット１１０は、複数の命令によって共有されることがありうる。
【００１６】
一般に、本発明の態様は、従来型のベクトル・プロセッサを、ベクトル畳み込み関数をサポートする強化された命令セットを提供するように、拡張する。本発明の態様によるベクトル・プロセッサ１００は、実数または複素数の入力を有する入力ベクトルを受け取り、その入力に複素ベクトル畳み込み関数を適用して、それぞれの時間シフトに対してある出力値を有するベクトルを生成する。
【００１７】
開示されているベクトル・プロセッサ１００は、図３との関係で後述されるように、並列的に処理される複数の実数または複素数であるスカラ数によってそれぞれが構成されている１つまたは複数のベクトル入力を処理するベクトル・アーキテクチャを有する。
【００１８】
図２との関係で更に後述されるように、入力サンプルの個数がＮ１＋Ｎ２−１であり、出力サンプルの個数がＮ２である場合には、畳み込み命令は、例えば１サイクルにおいて１〜４ビットのＮ１ｘＮ２回の畳み込み演算を実行する。更に、畳み込みのための係数がベクトル畳み込み関数ユニットの係数ビットよりも多くのビットを有する場合には、出力結果は、反復的に得ることができる。例えば、畳み込みが２ビットの係数によって実装され、１２ビットが必要とされる場合であれば、最終的な結果を得るために、６回の反復が必要になる。入力に６４のサンプルがあり（６３個が使われ）、３２の係数がレジスタに記憶され、３２の出力が計算されると仮定すると、この命令は、２ビットの係数と３２ビットの複素数データ（１６ビットの実数＋１６ビットの虚数）とが乗算された１０２４回のＭＡＣ演算を１サイクルで実行し、３２ビットの複素数データ（１６ビットの実数＋１６ビットの虚数）と２４ビットの複素数係数（１２ビットの実数＋１６ビットの虚数）とが乗算された複素数演算を６サイクルで実行する。この性能は、汎用のＤＳＰの性能よりも、数オーダの大きさだけ優れている。
【００１９】
図２は、本発明の特徴を組み入れたベクトル畳み込み関数２００を示す。一般に、ベクトル畳み込み関数２００は、Ｎビットの複素数データ（Ｎ／２ビットの実数およびＮ／２ビットの虚数）と複素数の対蹠的（antipodal）データ（例えば、係数）との畳み込みを計算する。ベクトル畳み込み関数２００は、典型的には、Ｎ１＋Ｎ２−１のサンプルの入力ベクトルを受け取り、入力ベクトル２１０  Ｎ１（軸２３０に沿って）のＮ１のサンプルの時間シフトされたバージョン２２０と係数とを処理して、それぞれの時間シフトされたバージョン（それぞれのタイム・ラグ）に対して、ＦＩＲ出力値２２５を生成する。出力ベクトル２６０は、Ｎ２の出力値から構成される。
【００２０】
図２の例示的な実施形態においては、入力ベクトル２１０は、実数または複素数のデータ（例えば、３２ビットの実数および３２ビットの虚数）のＮ１＋Ｎ２−１のサンプルと、係数との畳み込みがなされるＮ１のサンプル（１６ビットの実数および１６ビットの虚数）を有するＮ２個のその時間シフトされたバージョン２２０とを含む。係数は、それぞれが、バイナリ値（例えば、または２ビット、４ビットなど）でありうる。
【００２１】
開示されているベクトル畳み込み関数（ｖｅｃ＿ｃｏｎｖ（））は、ベクトル畳み込み関数２００の中のＦＩＲフィルタを加速する。ただし、ベクトル畳み込み関数２００における係数は、例えば、（２ビット、４ビットなどの）バイナリ値である。更に、この演算は、係数に対して１８ビットなどの十分なビット数を用いることにより、更に加速して、１サイクルで実行することが可能である。一般に、それぞれの時間シフトされた演算は、シフトされた入力値２２０と係数とのＦＩＲフィルタリングを含む。
【００２２】
２ビットの値を用いる例示的な畳み込みに対して、ＦＩＲフィルタ／畳み込み演算は、次のように書くことができる。
【数１】
0006526415.tif 000002
ただし、これらの２つの数式において、次の通りである。
【数２】
0006526415.tif 000003
ただし、これらの数式において、ｈ（ｋ）は係数を示し、ｘ（ｎ−ｋ）は時間シフトされた入力値を示す。多相フィルタの場合には、係数ｈｋは、フィルタのそれぞれの相に対して変化しうる。
【００２３】
インパルス応答ｈを有するフィルタによる入力信号ｘの畳み込みは、次のように書くことができる。
【数３】
0006526415.tif 000004
【００２４】
入力信号ｘと入力信号ｙとの相関または相互相関は、次のように書くことができる（ただし、信号ｘおよび／または信号ｙは、パイロット信号またはＣＤＭＡバイナリ／バイポーダル（bipodal）コードなどの、既知の基準信号でありうる）。
【数４】
0006526415.tif 000005
【００２５】
係数の１２ビット表現との例示的な畳み込みに対しては、ＦＩＲフィルタ出力を計算するために６回の反復が存在する（２ビット値の６倍）。
【００２６】
図３は、本発明の実施形態に従って、１つまたは複数の複素数を同時に処理する例示的なベクトル・ベースのデジタル・プロセッサ３００の概略的なブロック図である。一般に、図３のベクトル・ベースの実装例は、異なるプロセスを同時に実行することにより、スカラ型の実装例と比較して、計算量を、または、アルゴリズムを実装するのに必要なサイクル数を、減少させる。したがって、ベクトル・ベースのデジタル・プロセッサ３００は、ベクトル畳み込みのための関数ユニット３１０を含む。
【００２７】
一般に、ベクトル・ベースのデジタル・プロセッサ３００は、入力ベクトルｘを処理して、出力ベクトルｙ（ｎ）を生成する。Ｎ１＝３２およびＮ２＝３７に対する例示的なベクトル・ベースのデジタル・プロセッサ３００は、次のように表すことができる。
（ｙ１，ｙ２，．．．，ｙ３７）＝ｖｅｃ＿ｃｏｒ３２ｘ３７（ｘ１，ｘ２，．．．，ｘ６８）
【００２８】
結論
以上で、本発明の例示的な実施形態についてデジタル・プロセッサの内部にあるデジタル論理ブロックとメモリ・テーブルとの関係で説明してきたが、当業者には明らかであるように、様々な機能を、デジタル領域において、ソフトウェア・プログラムにおける処理ステップとして、回路素子もしくはステート・マシンによるハードウェアにおいて、またはソフトウェアとハードウェアとの両方の組み合わせにおいて、実装することができる。そのようなソフトウェアは、例えば、デジタル信号プロセッサ、特定用途向け集積回路、またはマイクロコントローラにおいて、用いることができる。そのようなハードウェアおよびソフトウェアは、集積回路の内部において実装された回路の中で実現することができる。
【００２９】
このように、本発明の機能は、方法およびそのような方法を実現させる装置という形式で、実施できる。本発明の１つまたは複数の態様は、例えば、記憶媒体に格納されている場合もそうでない場合もありうるが、マシンにロードされるおよび／またはマシンによって実行されるプログラム・コードという形式で、実現することが可能である。ただし、このプログラム・コードがプロセッサなどのマシンにロードされ実行されると、そのマシンは、本発明を実現させる装置になる。このプログラム・コードのセグメントは、汎用のプロセッサ上で実装されると、プロセッサと組み合わされて、特定のロジック回路と同様に動作するデバイスを提供する。本発明は、また、集積回路、デジタル・プロセッサ、マイクロプロセッサ、およびマイクロコントローラの内の１つまたは複数として実装されることも、ありうる。
【００３０】
本明細書で示され説明された実施形態および変形例は単に本発明の原理を解説しているだけであり、当業者であれば本発明の範囲および精神から逸脱せずに様々な修正を行いうるということを、理解すべきである。
【図１】
0006526415.tif 000006
【図２】
0006526415.tif 000007
【図３】
0006526415.tif 000008