説明

信号処理

【課題】信号を処理する方法を提供すること。
【解決手段】信号データ値および畳み込みフィルタ係数値を、畳み込み値を計算するために使用される一組のプロセッサ(cutil)中の対象プロセッサ(ct)にロードするためのプロセス。係数値はcutilにマッピング(150)される。データ値と係数値のインターリーブ(160)がctについて決定される。係数値がctにロードされ、データ値がctにロードされ、それによって畳み込み値の計算(170)に参加するようctを準備する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して信号処理に関する。
【背景技術】
【0002】
積分変換
多くの既存のシステムおよび新規のシステムは、基本となるシステムを記述する数学に基づいて適切にプログラムされた近代的デジタルプロセッサを使用して解析可能である。例えば、今日この種の解析は、電気回路、光学器械、機械的機構、およびその他の多くのシステムなどの、線形時不変システム(linear time-invariant systems)を解析するためにますます有用である。
【0003】
数学、およびこれを広範囲に用いる多くの分野、例えば今日の科学と工学のほとんどの部門において、用語「変換(transform)」は、ある種の方程式による解析技術のクラスを言及するために用いられる。変換の概念は、特定の関数が他の関数を引数として持つ関数空間の研究を主として扱う数学の関数解析(functional analysis branch of mathematics)の部門に由来する。このため変換は個々の方程式にも方程式のセット全体にも用いることができ、変換のプロセス(process of transformation)とは、ある定義域で表される元の方程式または複数の方程式を、他の別の定義域で表される他の1つまたは複数の方程式に1対1でマッピングすることである。
【0004】
変換を行う動機は、しばしば単純である。元の表現では解くのが難しいが、1つまたは複数の他の表現によればより簡単に解決可能である方程式は多い。このため変換が行われ、解が見出され、それから逆変換を行って、その解を元の定義域に戻してマッピングすることができる。積分変換の一般的な形態は次のように定義される。
【0005】
【数1】

【0006】
ここでK(α,t)は、しばしば変換の「積分核(integral kernel)」と呼ばれる。
【0007】
ラプラス変換
ラプラス変換は、方程式(1)で定義されるある種の変換のサブセットであり、しばしば特に有用である。システムへの入力またはシステムからの出力が単純な数学または関数で表現されているときに、ラプラス変換は、システムの挙動を簡単に解析できる代替の関数の記述を与えることができる。ラプラス変換の一般的な形態は次のように定義される。
【0008】
【数2】

【0009】
ここで方程式(1)から積分の境界および積分核は、a=0で、bは∞に置き換え、K(α,t)=e-stとして再定義されている。ラプラス変換のf(t)への適用は、sが十分に大きく、ある条件が満たされる場合のみ可能であるが、これらの条件は通常、f(t)が、実際に見出されるほぼ任意の有用な関数の関数形をとることができるほど十分に柔軟である。
【0010】
畳み込み定理(CONVOLUTION THEOREM)
ある関数、例えばF(s)が単一の既知の関数の変換ではなく、それぞれが、既知のf(t)またはg(t)の関数の変換結果である2つの関数の積として表せるのは、よくあることである。すなわち、
【0011】
【数3】

【0012】
である。ここでg(t)は、f(t)と同じ条件を満足しなければならない。F(s)、f(t)、およびg(t)のこの結び付きから、次の関係が成立する。
【0013】
【数4】

【0014】
これはしばしば「畳み込み(重積分)定理(convolution theorem)」と呼ばれる。
【0015】
畳み込み定理の数値近似
畳み込み定理の結果は変数が1つのみの積分変換となることが観察されている。そのため変数が1つのみの積分の数値近似の技術を適用することができる。
【0016】
積分表現(integral representation)とリーマン和による表現(Riemann sum representation)の間に次の等式が成り立つ。(ここで後者は、特にデジタル回路を用いて行われる数値近似の技術での使用に適切である。)
【0017】
【数5】

【0018】
ここでそれぞれのct-kおよびckはk番目のサブ・インターバルから任意に選択される。実際には、方程式(5)の等式の右項は、極めて小さなΔγを用い、選択された計算法およびΔγの値に応じて幾分の誤差があることを了解することによって、近似される。
【0019】
【数6】

【0020】
ここでmは、結果としての合計(resultant sum)で表すことができる正確さの次数(期待可能な精度の桁数でもある)を表し、およびΟは、従来の数学のコンテキストにおけるビッグオー記法(big-O notation)である。
【0021】
デジタル信号処理
先に述べたように、畳み込み(convolution)を使用することが利点となり得る変換には、重要な応用における既存および潜在的な用途がある。例えばデジタル信号処理(DSP:digital signal processing)は幅広く、ますます使われており、DSPのこの種の重要な用途の1つにデジタル・フィルタリングがある。数学的関数として表現可能な任意のフィルタリングがデジタル・フィルタの使用で実現でき、これは、近年のDSPの仕事のまさに出発点の1つである。例えば、信号からサンプル抽出されたデータ値に関するデジタル・フィルタリングは、信号の不要部分の除去や信号の必要部分の抽出を可能にする。
【0022】
有限インパルス応答(FIR:finite impulse response)および無限インパルス応答(IIR:infinite impulse response)は、今日、DSPの用途に使用される2つの主要なデジタル・フィルタであるが、その中ではFIRフィルタがより一般的である。
【0023】
FIRフィルタは、用いる上での優位性があると通常考えられているが、その理由は、内部フィードバック(これは例えば、IIRフィルタが無限にインパルスに応答する原因となる)を必要としないためである。その名称における「有限」という言葉からもFIRフィルタの別の利点が示唆される。この種のフィルタからのインパルスは最終的にゼロとなり、使用される逐次加算計算中のエラーが伝搬されることがない。すなわちエラー項が計算プロセス全体で一定に保たれる。これはIIRフィルタに対する明確な利点であり、IIRフィルタでは、例えば追加の逐次出力加算毎にエラーが潜在的に成長する可能性がある。
【0024】
残念ながら多くの用途において、デジタル・フィルタの大きな限界は、そのスピードが数値計算に用いられるプロセッサまたは複数のプロセッサのスピードによって制限されることである。例えば、高速のフィルタリング速度が必要な場合、これは、高価な、デジタル・フィルタを実装するのに必要なハードウェアを高価にしたり、あるいは単純に実装不可能にしたりする可能性がある。ほとんどすべての用途について、またほとんどの電子的システムに当てはまるが、用いられる速度が速くなればなるほど、電磁雑音の抑制および放熱などの、同時発生する現象に対応することも難しくなる。
【0025】
デジタル・フィルタリングの事例を越えて一般化すると、DSPは通常、少なくとも1つの処理される信号のサンプリングを前提にする。サンプリング速度は、ある特定の連続信号についての連続信号を、離散信号(discrete signal)に変換する、単位時間当たりのサンプル数として定義される。連続信号を離散信号に変換する理由は、変調、符号化、および量子化にかかわる用途など、数多くある。サンプル速度は、より一般的にはヘルツ(Hz)(測定における周波数の単位)で表され、これは波長(λ)(時間の単位で、λ=Hz-1および逆もまた同様)と等価である。
【0026】
連続信号が元の関数を復元しようとしてサンプルすることが可能な方法には、アンダー・サンプリング、ナイキスト速度サンプリング、およびオーバー・サンプリングの3つの方法がある。
【0027】
連続信号のアンダー・サンプリングは、元の信号から関連する情報のすべてを取得することが可能とは限らないために、しばしば最良の選択ではない。しかし元の信号の復元が重要でない場合は、アンダー・サンプリングによると格納されるデータが減り、サンプリング・プロセスを大幅に速めることができる。
【0028】
多くの場合、好ましいのはナイキスト速度サンプリングであり、その理由は、その後に特定の信号を正確に復元することを可能にするからである。このサンプリング周期(「ナイキスト速度」と称される)は、サンプリングする信号の帯域幅の2倍を超えていなければならず、この信号は、帯域制限される必要がある。つまり信号は、ある有限の周波数以上でゼロのフーリエ変換やパワー・スペクトラム密度を有することが確定された信号であることを意味する。
【0029】
オーバー・サンプリングは、3つのサンプリング法の中で最も非効率で無駄が多いが、元の信号の復元が常に可能し、スピードが重要でない場合は利点となり得る。
【0030】
サンプリングの重要性と、それがDSPおよびDSPを用いるシステムにしばしばどのような制約を及ぼすかについて、さらに述べる。
【0031】
並列アルゴリズム
計算機(DSPおよびその他の多くの用途に用いられる計算機)に関連するハードウェアの最近の構成上の変化が起こるまでは、すべてのコンピュータに実装されるアルゴリズムは、連続的にまたは逐次実行されるものと考えられていた。すなわち、1つの作業のみが任意の所与の時間に適時に実行可能であった。この考えから、連続したタスクをより短い時間で実行できるようにするためにますます高速のプロセッサを作製することになった。しかし先に述べたように、この種のプロセッサは、実現可能な処理パワーが現在限界に達しつつある。今日では、この限界は、ハードウェアの速度向上からアルゴリズムの速度向上に力点が移りつつある。
【0032】
アルゴリズムの速度向上の1つの手法は、並列処理の使用である。アルゴリズムの多くは、それが、今もなお、実行するためのハードウェアに制限されることがあるとはいえ、多くのアルゴリズムがそれ自体ある程度の並列化に極めて適している。別の他のアルゴリズムでは、すべての面で並列的に実行される場合、より速い速度が達成できる。この点に関連して、並列に達成可能なアルゴリズムの率(Tp)、連続的に達成可能なアルゴリズムの率(TS)、および使用可能な並列プロセッサの数(N)を与えたとき、並列計算で起こり得る最大速度上昇率(S)を決定するために、アムダールの法則がしばしば用いられる。アムダールの法則は次のように表すことができる。
【0033】
【数7】

【0034】
アルゴリズムの大きな部分を高速化する方が、アルゴリズムの小さな部分を大きく高速化するよりも良いということが幅広く受け入れられ、概してそのような命題を支持するように考えられている。この理由は方程式(7)中において、また収穫逓減の法則を適用することにより。理解できる。
【0035】
整数プログラミング
線形計画法(LP:linear programming)の基本の把握は、整数プログラミング(IP:integer programming)の理解に役立ち、これは、以下述べる理由のために取りこまれた。LPの問題は、線形な目的関数を有する最適化の問題である。この種の問題は、例えばネットワークのフローの用途などでしばしば発生する。
【0036】
LP問題は、今日の計算に関するリソースが与えられるとしばしば容易に解決可能である。しかし、この顕著な例外は、LPが、変数の値を整数値のみに限定するという制約があること、すなわち、LP問題が整数プログラミング(IP:integer programming)問題であることである。LP問題を解決するための技術は、IP問題に、同じ形では適用できないことがしばしばであり、多くの場合これらの技術は、IP問題のすべてに適用できるわけではない。そのためにIP問題は、より解決が難しくなる。
【0037】
さらに問題が、LP問題ではなくIP問題として取り扱われる場合、IP問題としてその問題を解くのに必要な計算機能力は、LP問題としてその問題を解くのに必要な計算機能力と比べて、指数的に増加する。そのために40以上の変数を持つIP問題は、その問題中の変数の数を効果的に最も少なくするのに利用可能な何らかのIP問題の構造(structure)が存在しない限り、今日利用可能な計算機能力では解くのは不可能だとほとんどの研究者が考えている。このためにIP問題の解を開発するのに費やされる時間のほとんどは、問題の構造を利用する方法を見つけて、変数の数を減らし、適時のコンピュータの解決策を可能にすることに向けられている。しかし、それゆえに最適化問題を、LP問題を超えたIP問題と分類することには大きなトレードオフがある。IP問題は所与の状況をより現実的にモデル化できるかもしれないが、IP問題に存在するそれは、あるため解決不能の方程式のセットに行き着く可能性がある。対照的にLP問題は、潜在的な状況のモデル化するためのIP問題の対応物よりも現実性が薄いことが多いが、通常は解決可能であり、速やかに解決することができる。
【発明の開示】
【発明が解決しようとする課題】
【0038】
そのために、信号を処理するために、例えば特にDSPに使用される数値畳み込み計算を実行するために用いるシステムを改善することで、これらの用途および関連するタスクを、より高速でより経済的に、かつ基本のシステムや周辺システムを損なう影響を減らしつつ実行することが可能となるであろう。
【課題を解決するための手段】
【0039】
本発明の一態様は、複数の信号データ値および複数の係数値を、畳み込み値を計算するための使用される一組のプロセッサ(cutil)の1つである対象プロセッサ(ct)に、ロードするプロセスである。複数の係数値はcutilにマッピングされる。その後ct中の複数のデータ値と複数の係数値のインターリーブが決定される。ctに前記複数の係数値がロードされ、ctに前記複数のデータ値がロードされ、それによって、信号データ値の処理に参加するようctを準備させる。ある例では、複数の係数値は、畳み込みフィルタの複数の係数値であり、このプロセスは、複数のフィルタ係数値および複数のデータ値の畳み込みを計算する。
【0040】
本発明の他の態様は、例えば複数の信号データ値、および畳み込みフィルタ係数値とすることができる複数の係数値に基づいて畳み込みを計算する、信号を処理するシステムである。使用される複数のプロセッサからなる一組のプロセッサ(cutil)が与えられ、ここでは、各プロセッサは、順番に、所与の時点で対象プロセッサ(ct)と見なすことができる。ロジックが、複数の係数値をcutilにマッピングする。あるロジックがct中の複数のデータ値と複数の係数値のインターリーブを決定する。あるロジックがct中の複数の係数値をロードする。またロジックがct中の複数のデータ値をロードする。これは、ctが、その信号処理に、例えば畳み込み値の計算に参加するように準備させる。
【0041】
本発明はまた、コンピュータのアレイ上で実行すると、そのアレイに発明の一態様のプロセスを実施することを引き起こすコンピュータ・プログラムを提供する。このコンピュータのアレイは、単一の半導体のダイ上に存在するとすることができる。プログラムは、例えば、記録媒体、電気信号とすることができる信号、またはメモリ・デバイスなどの、キャリア上に存在することができる。
【0042】
本発明のこれらのおよび他の目的および利点は、本明細書に記載され図面中の各図に示された、本発明を実施する現在知られた最良の形態と好ましい実施形態の産業上の利用可能性の記載を読むことにより、当業者には明瞭になろう。
【発明を実施するための最良の形態】
【0043】
本発明の目的および利点は、以下の詳細説明、ならびに添付図面の各図から明らかになるであろう。添付図面の各図においては、類似の参照符号が、類似または同様の要素またはステップを表すために用いられている。
【0044】
本発明の好ましい実施形態は、複数のコンピュータ・プロセッサにより、実行される畳み込み計算のシステムである。本明細書において様々な図に示されるように、特に図1a〜bに示されるように、本発明の好ましい実施形態を、一般参照符号100で示す。
【0045】
図1a〜bは、本発明による畳み込み計算システム(convolution calculation system)(CCS100)がどのようにセットアップ演算、通常作業演算(formal work operations)、および要約した演算(wrap-up operations)を実行できるかについて、概略を模式的に示すブロック図である。
【0046】
図1aに示すように、ホスト・プロセッサ112を用いて、信号データ値および畳み込み係数フィルタ値を、ターゲット・アレイ114中の複数のプロセッサ、コア、またはノードにマッピングし、信号データ値および係数フィルタ値に基づいてインターリーブのターゲット・アレイ114へのロードを開始し、処理結果をターゲット・アレイ114から受け取る。
【0047】
ホスト・プロセッサ112は、図1aに示されるような単一の個別システムであることができる。しかし当業者は、以下を理解すれば、ホスト・プロセッサ112は複数の個別システムであることも可能であることをさらに理解しよう。さらに、説明するように、ホスト・プロセッサ112はターゲット・アレイ114の一部とすることもできる。しかし、通常、ホスト・プロセッサ112は、通常のパーソナル・コンピュータ(PC)またはワークステーションである。
【0048】
ターゲット・アレイ114もまた多くの形態をとり得るが、具体的にはカリフォルニア州クパチーノ所在のIntellasys Corp.のSEAforth(TM)製品などの、マルチ・コアまたはマルチ・ノード、単一ダイの集積回路デバイスとすることができる。
【0049】
図1bは、CCS100の作業の主要なステージを示す。マッピング・ステージ150で、畳み込みデジタル・フィルタ値が、ターゲット・アレイ114の使用可能なプロセッサ、コア、またはノードに、これらをより効果的に用いるように、マッピングされる。次いで、インターリーブ・ステージ160で、インターリーブが、ターゲット・アレイ114のプロセッサ、コア、またはノードに効率的に係数をロードするよう構築される。計算ステージ170で、畳み込みを実行する。(ハイブリッドのFIRの例が、以に示される。)勿論、信号データ値のロードおよび処理結果のアンロードもまた行われるが、これらは図1bにおいてステージとして示されない。
【0050】
図2(背景技術)は、ターゲット・アレイ114に使用されているSEAforth24Aデバイスの主な細部を全体的に示す線図である。畳み込み計算の準備、およびその後の実際の使用にかかわるこの態様に、焦点を当てるために、図2において、多くの、重要でない周辺の構成要素は省略されたり、概略的に示されたりしている。しかし当業者は、実際の実施形態の作動ではこの種の要素が存在し、これらは、通常その性質についてはまったく通常通りであることを理解しよう。
【0051】
図2のシステムは、アレイ114と、入力デバイス161と、出力デバイス221とを備える。入力デバイス161は、処理される信号から、畳み込みが実行されることになる入力データの値を与える。この入力データ値は処理される信号のサンプルである。出力デバイス221は処理されたデータ値をアレイ114から受け取る。
【0052】
図2で理解されるように、SEAforth24Aのデバイスは、データ・バス18を介して互いに通信する24個のコア(集合的にはコア16、個別的にはコア16a〜x)を備える。(本明細書では用語「コア」が用いられているが、SEAforth24Aのようなデバイス中のプロセッサについて述べるときには用語「ノード」も同様に適切であり、用語「プロセッサ」も一般的に正しい。)
必ずしも必要ではないが、一般的に、1つのコア16(例えば図2のコア16a)が、データ入力タスクの処理専用にされ、別のコア16(図2のコア16x)がデータ出力タスクの処理専用にされる。したがって本明細書にある24個のコア16中22個が、畳み込み計算に通常にかかわる作業の実行に使用可能である。一方、1個のコア16がデータの入力と出力の両方の専用にされることも可能である、複数のコア16が他のタスク専用にされることも可能である。例えばホスト・プロセッサ112が、1つまたは複数のコア16内に実装されることも可能である。
【0053】
本発明のCCS100は、畳み込みの性質と、ターゲット・アレイ114で畳み込みを効率的に実行するために何をしなければならないかの性質、とに起因して、計算ステージ170を実行する前の入力に大きく依存している。これらの入力と用語について下に一般的に述べる。
【0054】
用語集
概して、cは、ターゲット・アレイ114中の複数のコア16を表す変数であり、
total=ターゲット・アレイ114中に存在するコア16の総数(例えば図2中の例では24)、
avail=畳み込み計算の実行のためのマッピングに使用可能なコア16の数(例えば図2中の例では22)、
util=複数のフィルタ値のマッピングに使用されるコア16の数(すなわちマッピング・ステージ150が決定しようとする値)、および
t=所与の時点における、考察対象の、cutilから選ばれる対象コア16。
【0055】
一般的に、nはデジタル畳み込みフィルタ値の量を表す変数であり、
actual=ctにマッピングされたフィルタ値の実数、
est=cutilの一部であるコア16のそれぞれにマッピングされたフィルタ値の予測数;
taps=所与のコア16に実際にマッピングされたフィルタ値(「タップ」)(すなわちマッピング・ステージ150が決定しようとするcutil毎に1個の、複数の値からなる集合)の数、および
max=任意の特定のコア16に対する、複数の信号データ値(または係数フィルタ値)のうちの最大マッピング値(すなわちnmaxはntapsの集合の要素であり、具体的には最大値を有する要素である。)
以下が定義される。
Sは、サンプル速度、
Lは、積分核の時間窓の長さ、
tは、ターゲット・アレイ114の2つの数を乗じるために必要な時間、および
Aは、データ値およびフィルタ値の格納に使用される、コア16中のメモリの使用可能なワード。
【0056】
cに関する簡潔な関係式が次のように論理的に導かれる。例えば、0<cutil≦cavail≦ctotalであることは容易に分かり、このすべてが整数値である。次いで0<cutil<cavail≦ctotalの事例は、最適値ではないかもしれないが、それにもかかわらず現実世界の用途では起こる可能性がある。つまり、フィルタ値が何もマッピングされておらず、そのために畳み込み計算の通常プロセス(formal process)にも使用されない1つまたは複数のコアを備えた方が、より効率的である場合が、よくある。
【0057】
同様に、nに関する関係式もまた次のように論理的に導かれる。例えば、0≠ntotalおよび0<ntaps≦nest≦ntotalであることが分かり、ここでntapsとntotalは整数値となる。(そしてnestも整数値となるよう制限することになる。)次いで、ntaps=ntotalの場合(すなわち全フィルタ値が、唯一のコアにマップされる場合)が認識されるべきである。本発明のCCS100は、最も効率的な解である事例を網羅するが、CCS100の利点はntaps<ntotalがより最適な解である事例において具体的に実現される。やはり、事実上、既に説明した点を繰り返すと、一部のコアについて0=ntapsである現実社会の用途に、直面することになる。
【0058】
定義された値に関する簡潔な関係もまた述べることができる。本明細書ではSの値を変数として扱っている。すなわち単位時間当たりでより多くのまたはより少ないサンプルが集められてよい。本明細書ではLの値を変数として扱っていない。tの値は、ターゲット・アレイ114のハードウェアで指定される最小値を元来有するため、固定される。(そして効率的なプログラミングがなされて、最小値が実現されていると推定する。)Aの値は減らすことはできるが増やすことはできない。これは、データまたはフィルタ値の格納にRAMおよびROMのいずれかが使用される場合、RAMおよびROM中の使用可能なワード数によってメモリのワード数が制限されるためである。しかしAのすべて用いなければならないという要件はない。
【0059】
図3は、本発明のCCS100のマッピング・ステージ150の例示的実施形態がどのように実行され得るかを示すフローチャートである。ステップ330でマッピング・ステージ150が開始する。次いで、一組の入力がホスト・プロセッサ112に与えられる。特に、ステップ332でサンプル速度(S)が与えられる。ステップ334で、積分核の時間窓の長さ(すなわち持続時間)(L)が与えられる。ステップ336で、ターゲット・アレイ114の2つの数を乗じるために必要な時間(t)が与えられる。およびステップ338で、任意の特定のコア16に対する信号データ値(または係数フィルタ値)の最大マッピング値(nmax)が与えられる。
【0060】
ステップ340で、ステップ332〜336の入力が有効か否かが決定される。これらの入力が任意の点で無効の場合は、ステップ342が続き、マッピング・ステージ150を中止するかを決定する。中止すると決定されれば、ステップ344が続き、マッピング・ステージ150は停止する。一方、中止しないと決定されれば、マッピング・ステージ150は図示のようにステップ330に復帰する。
【0061】
さらにステップ340での他の選択肢を述べると、入力が一括して有効と見なされると、ステップ346が続き、並列畳み込みアルゴリズムの実行に使用されるコア16の数(cutil)が計算される。
【0062】
まずntapsが計算される。
【0063】
(8) ntaps=S*t、
次いでnmaxが決定される。ユーザが与える入力(ステップ338)であっても計算で算出されてもよい。
【0064】
【数8】

【0065】
次いでノード毎のタップの予測数(nest)が計算される。
【0066】
(10) nest=min(ntaps,nmax)、
次いで、ここでノード毎のタップの数(nest)が既知であるため、これらのタップがマッピングされることが可能なコアの数(cutil)が計算される。
【0067】
【数9】

【0068】
ここでcutilはcutil≦cavail≦ctotalとの要件を満たす必要があることに留意されたい。この要件が満たされない場合は、Lの値および/またはnestの値をLの値を減らすこと、および/またはnestの値を増やすことによって改変してよい。Lを改変することはユーザ入力によりなされる。一方、nestの変更はプログラムに基づいてなされることができる。nestの値はntapsおよびnmaxの関数であり、これらは両方減らすことができる。このことは、nmaxの場合は、RAM/ROM中で使用可能なワードの総数(A)未満の数を使用することにより可能であり、ntapsの場合は(S≧tの関係を保ちながら)Sおよびtの一方または両方を減らすことにより可能である。
【0069】
図3についてさらに述べると、ステップ348でcutilが整数値であるかが決定される。つまり、方程式(11)に剰余が生じなかったかということである。
【0070】
剰余がない場合は、タップのコア16に対する均一なマッピングが可能であり、これを用いることにより最適の効率が得られる。この場合ステップ350が続き、nestの値がcutilのすべてに使用される。次いでステップ352が続き、cutil中のそれぞれのコア16に対してインターリーブ・ベクトルがマッピングされる。(インターリーブ・ベクトルについては、いずれ説明する。)ステップ354で通常畳み込み計算(formal convolution calculation)をすすめることができる。
【0071】
今述べたようにすすめると、ステップ352からステップ354は明らかに一般的事例に対する稀な例外であり、Lおよびnestの除法が負ではない整数の結果をもたらす場合である。ステップ348に剰余がある場合、タップのコア16に対する不均一なマッピングが必要になる。ステップ356でこれが実行され、ここでまず可能な最も均一なマッピングを試みる。マッピングの不均一性の性質から、3つ以上でなくとも、少なくとも2つの異なるnactualの値が必要となるだろう。
【0072】
ステップ356で、発明者にとり好ましい初期の手法はnactualの値をコア16のcutil−1に使用し、異なるマッピングをcutil中の(c番目)の他のコア16で使用することである。次いでc番目コアはマッピングmactualを有し、これは以下で示される。
(12) mactual=L−nest(cutil−1)、
ここでmactual<nactualである。残念ながら、初期の手法もこの型のマッピングを使用するある用途には非効率的である可能性がある。(留意すべきことだが、本明細書に述べる手法は指針を与えるにすぎない。その理由は、このような整数プログラミング(IP)問題の性質が解を整数の処理結果に制限し、使用可能な解法を大きく制限するためである。)
畳み込み方法はcutil中のコア16に制限されている、という事実により、これらのみが通常計算(formal calculation)中に使用されることになるので、cutil中のそれぞれのコア16に対するマッピングが可能な限り均一に近いことは必須である。コア16間の、接近した均一性は、これらのコア16のスリープ時間を、コア16毎の最大タップ数未満に制限する。
【0073】
ここでマッピングを考える他のやり方は、アムダールの法則に従い、たとえ最速部分の性能が低下する可能性があっても最も遅い部分の性能を向上させることである。不均一なマッピングがここで要求されるとすれば、マッピング・プロセス中にnestの値が1より大きい値となることを期待するのは合理的である。例えばL=99およびnest=24とすれば、cutil=5である。この事例は、Lおよびnestが除されたときに剰余が出る。上述した第1の方法を用いると、この場合のマッピングは24、24、24、24、および3となるだろう。しかしながら今述べた方法を用いれば、より望ましいマッピングは20、20、20、20、および19となるだろう。(勿論、同じ全体の処理結果をもたらす他のマッピングが4つ存在する。例えば、19、20、20、20、および20))この種の事例では、コア16を最適にマッピングする包括的なアルゴリズムの概要を説明するのは非常に困難であり、したがって、ここでの骨子は、Lおよびnestの除法が処理結果がゼロではない剰余をもたらしても、このマッピングにおいてある程度の効率性を保持するのはなお可能であり、cutil中のコア16のnestの値が可能な限り均一に近いときに、この効率性は最大化されるということである。
【0074】
ステップ356の後、ステップ358が続き、cutil中の各コア16に対してインターリーブ・ベクトル(インターリーブ・ベクトルについては、いずれ説明する。)がマッピングされ、ステップ354で通常畳み込み計算をすすめてよい。
【0075】
総括すると、マッピング・ステージ150はここで完了し、それぞれのコア16に対する複数のタップの実数の値は既知であり、CCS100全体の次段階、つまりインターリーブ・ステージ160でのインターリーブ・ベクトルの決定を実行することができる。図3は、インターリーブ・ステージ160はステップ352またはステップ358で表されており、インターリーブ・ベクトルはcutil中のコア16に対して(すなわち通常畳み込み計算(formal convolution calculations)に使用されるそれぞれのコアに対して)マッピングされ、ステップ354は計算ステージ170である。
【0076】
簡潔にいえば、インターリーブ・ステージ160での目標は、計算ステージ170で畳み込みを実行するために、サンプリングされた信号データ値(履歴値としても知られる)と畳み込みデジタル・フィルタ係数との間のインターリーブを使用して設定を行うことである。信号データ値および畳み込みデジタル・フィルタ係数値がベクトルで表されていると仮定すると、それら2つの間のインターリーブは、元の畳み込みデジタル・フィルタ係数値の2倍の大きさのベクトルを生じる。インターリーブ・ベクトルがこの大きさになる理由は、長さが分からずまたは決定されていないデータが連続的にフィードされるという畳み込みの性質によるものである。最終的なインターリーブ・ベクトルは畳み込みデジタル・フィルタ係数値ベクトルの2倍の長さであるが、最終的なインターリーブ・ベクトルは、1列目が空で、次いで2列目に第1の畳み込みデジタル・フィルタ係数が後続し、次に空列を後続し、次の4列目に第2の畳み込みデジタル・フィルタ係数値を後続するように配列される。このことが、すべての畳み込みデジタル・フィルタ係数値が挿入され同じ数の空列ができるまで繰り返される。これらの空スペースは最終的に、任意の通常畳み込み計算が行われる前にインターリーブが実行される際に信号データ値で満たされる。
【0077】
ステップ352で、インターリーブ・ベクトルがcutil中のそれぞれのコア16にマッピングされる形は連続的である。使用される第1のコア16は、第1の2*nactual個のインターリーブ・ベクトルのエントリのマッピングを有し、使用される第2のコア16は次の2*nactual個のインターリーブ・ベクトルのエントリのマッピングを有することになる。同様に、それぞれの追加のcutil中のコア16は次の2*nactual個のインターリーブ・ベクトルのエントリのマッピングを有することになる。最後のこの種のコア16のマッピング後、インターリーブ・ベクトルはまだ幾つかのデータ値が空であるが、それぞれのコア16は受け取る値の長さが均一のマッピングを有するはずである。インターリーブ・ステージ160はここで完了し、ステップ354で計算ステージ170中の畳み込みを行う準備が整う。
【0078】
ところで、ステップ358の機能は、ステップ352の機能と同様だが、ただしcutil中のそれぞれのコア16にマッピングされる量は必ずしも同量ではないために、ここではインターリーブ・ベクトル・マッピングは、それほど単純明快ではない。冒頭から開始して、インターリーブ・ベクトルは、第1の畳み込みノードについて計算されたタップ数の2倍となる複数の値を受け取る。次いで第1のコアのマッピングが終了する時点から続けて、インターリーブ・ベクトルは、第2の畳み込みノードについて計算されたタップ数の2倍に等しい複数の値を受け取る。以降も同様である。すべてのマッピング終了後も、インターリーブ・ベクトルは幾つかのデータ値が空のままであるべきである。これでステップ358が行うステップは終了し、インターリーブ・ステージ160は完了し、ステップ354で計算ステージ170中の畳み込みを行う準備が整う。
【0079】
ステップ348における決定からのどの経路も、畳み込みシーケンス(すなわちcutil中のそれぞれのコア16用の)中のそれぞれの特定のノードについてある程度のタップ数になる。ステップ354で、畳み込みプロセスで使用されるすべてのコア16は、インターリーブ・ベクトルからの適切な長さの値でマッピングされるが、畳み込みに割り当てられるコア16の第1、第2、第3などの記述は、ターゲット・アレイ114のダイ上の幾何学的配置に関して曖昧である。第1ノード、第2ノードなどと呼ばれるノードの配置は、畳み込みシーケンス中の第1のノードが他のノードを使用せずに外部入力デバイス(図2)に対するアクセスを有し、第2の畳み込みノードに対する直接アクセスを有することを必要とし、そのため第1の畳み込みノードがチップの周辺に配置されなければならないように、限定を受ける。直接アクセスとは、限定されないが、2つのノードが第3のノードを使用せずに通信できること、あるいは直接アクセスを有する2つのノードが同じデータ・バス18を共有することを示す。畳み込みシーケンスのc番目のノードは他のノードを使用せずに外部出力デバイスに対するアクセスを有し、c−1番目のノードに対する直接アクセスを有しなければならない。第2のノードからc−1番目のノードまでは、それぞれのノードが畳み込みシーケンス中で前のノードと次のノードに対する直接アクセスを有しなければならないという同じ特性を共に持つ。cのある値については、ターゲット・アレイ114に有効な配置を同等にもたらす、第1、第2からc番目のコアについて多くの可能な構成があることを当業者は理解するだろう。ここから、マッピング・ステージ150およびインターリーブ・ステージ160があり、計算ステージ170で、畳み込み値を実行する準備が整う。
【0080】
図4は、本発明のCCS100のインターリーブ・ステージ160がどのように動作可能かの事例を示すチャートである。ここで信号データ値についての信号ベクトル460と畳み込みデジタル・フィルタ係数値についての係数ベクトル470は、インターリーブされて、インターリーブ・ベクトル480を生成する。係数ベクトル470の長さのみが(図3のステップ334から)既知であり、信号データが実際は固定された長さを持たなくてよいが、信号ベクトル460の長さは係数ベクトル470の長さに適合されている。信号ベクトル460のエレメント462、464、466、および468は、第1、第2、第3、および最後の信号データ値に対応する。エレメント466および468の間に位置する領域、エレメント482は、図4に与えられた、文字通りの4つの値より多くの信号データ値用の場所を残す。同様に、係数ベクトル470のエレメント472、474、476、および478は第1、第2、第3、および最後の畳み込みデジタル・フィルタ係数値に対応し、およびエレメント476および478の間に位置する領域、エレメント484は、図4に与えられた、文字通りの4つの値以上の畳み込みデジタル・フィルタ係数値用の場所を残す。インターリーブは、処理結果のインターリーブ・ベクトル480がまずトップ・エレメント462を信号ベクトル460から受信し、次いでトップ・エレメント472を係数ベクトル470から受信し、このようにして信号データ値およびフィルタ係数値を最後の係数値478がインターリーブ・ベクトル480に移動するまで受信し続けるというように、実行される。勿論エレメント486でのインターリーブは、エレメント482および484に見出される任意の値もまた含めるべきである。
【0081】
ここで、畳み込みに使用されることになるコア16、およびこれらのコア16に対するマッピングが均一または不均一であるかは既知である。さらに、全数のタップと空データ値のインターリーブの決定が実行されている。インターリーブのコアに対するマッピングを、マッピングが均一な場合と不均一な場合の両方について以下に説明する。以下の2つの部分で参照されているのは第1、第2、...c−1番目、およびc番目ノードであるが、この参照は、コア16の配置を示すものではない。むしろ第1コア、第2コアなどと呼ばれているコア16の配置は、畳み込みシーケンス中の第1のノードは、外部入力デバイスに対するアクセスを有し、第2の畳み込みノードに対する直接アクセスを有することを必要とする、ように限定を受ける。SEAforth24Aのようなデバイスの事例では、これは第1の畳み込みノードがチップ周辺に位置することを意味する。畳み込みシーケンスのc番目ノードは外部入力デバイスに対するアクセスを有すると共に、c−1番目のノードに対する直接アクセスを有しなければならず、そのために第1の畳み込みノードのように周辺に位置しなければならない。ここで直接アクセスとは、2つのノードが第3のノードを使用せずに通信できることを意味する。第2のノードからc−1番目までのノードは、それぞれのノードが畳み込みシーケンス中で前のノードと次のノードに対して直接アクセスを有しなければならないという同じ特性を共に持つ。
【0082】
コア16に対するインターリーブの均一マッピングは、2つのインターリーブのうちのより簡単な方である。この場合は、第1の畳み込みノードはインターリーブ・ベクトルの最初の2*nactual個のエレメントを含み、第2の畳み込みノードはインターリーブ・ベクトルの次の2*nactual個のエレメントを含む、などとなる。インターリーブの手順が完了すると、すべてのコア16は、まったく同じ長さのマッピングを収容し、インターリーブ・ベクトルは空であるものとする。
【0083】
ここでは、不均一マッピングについて2つの小事例を述べる。第1の小事例はnactual、mactualおよびcutil、の値が十分に定義されているときのマッピングである。第1の畳み込みノードは、インターリーブ・ベクトルの第1の2*nactual個のエレメントを備える。第2の畳み込みノードは、次のインターリーブ・ベクトルの2*nactual個のエレメントを備える。以後同様である。このインターリーブ・ベクトルのマッピングは、最初のc−1個のノードについて同じように続き、ここでそれぞれの追加のノードがインターリーブ・ベクトルでの次の2*nactual個のエレメントを受け取る。c番目のノードは2*mactual個のマッピングを受け取り、これは他のインターリーブ・ベクトルとまったく等しくなければならない。再びすべてのマッピングが終了すると、インターリーブ・ベクトルは空になるものとする。
【0084】
第2の小事例は、一般的なマッピング・ガイドラインのみが与えられている場合のマッピングである。これは、均一マッピングに極力近いことが所望される場合のことであるが、多くの場合マッピングされるcutil中のコア16のnactualについて少なくとも2つの異なる値が存在することに留意されたい。nactualの値が十分定義された後でも、同じ全体的なマッピングをもたらす多くのマッピングがなお存在する。そのため、明白なインターリーブマッピングは可能ではなく、やはりガイドラインに従うことができるのみである。第1の畳み込みノードから始めると、このノードはインターリーブ・ベクトルから、この特定ノードについてタップ実数の2倍を受信する。第2の畳み込みノードは、インターリーブ・ベクトルからの第1のノードのマッピングが終了したところから取られたインターリーブ・ベクトルから、この特定ノードについてタップ実数の2倍を受信する。同様に、cutil中のそれぞれの追加のコア16は、先のものが終了した場所のインターリーブ・ベクトルから受信し、マッピングはこの特定ノードについてのタップ実数の2倍となる。
【0085】
図5は、本発明のCCS100の計算ステージ170の間の図2のターゲット・アレイ114からの特定の畳み込み計算ノード(cutil中のコア16)の詳細な線図である。ここでエレメント502〜520は、図4のインターリーブ・ベクトル472から取られたインターリーブのエントリを格納するメモリ領域を表す。図5のコア16に対する5つの信号データ値および5つの畳み込みデジタル・フィルタ係数値のこのマッピングは単に行われる可能性のあるマッピングの一例にすぎず、これより大きくまたは小さいマッピングもまたこの特定のコア16に対して使用可能である。
【0086】
図5のコア16において、エレメント502、506、510、514、および518はそれぞれコア16を介してわたされる信号データ値に対応し、エレメント504、508、512、516、および520は、それぞれ畳み込みプロセスの間に動かないという意味で固定されている畳み込みデジタル・フィルタ係数値に対応する。
【0087】
図5のコア16を通して畳み込みの1回のパスの間に、その結果得られた合計(resultant sum)が生成される。まずエレメント502と504の第1の積が、エレメント522にわたされる。次いでエレメント506と508の積がエレメント524にわたされ、ここでエレメント524は、この積をエレメント522中の値と一体化する。同様に、エレメント510と512の積がエレメント526にわたされ、エレメント526は、この積をエレメント524中の値と一体化する。同様にして、値がエレメント528および530に到達する。エレメント530が持つ値とエレメント518が持つ値は、このコア16から別のコア16にわたされる2つの値のみである。信号データ値およびフィルタ係数値を乗算し、この積を、先行する部分的な積和が存在すればこれに加算するこのプロセスは、畳み込みに使用される特定のコア16内部に存在するすべての信号データとフィルタ係数の対について繰り返される。
【0088】
ハイブリッドFIR畳み込みの例
以下は、cutil中のコア16のすべてが適切なタップ数でマッピングされ、連続するコア16間に必要な通信が行えるように配置されている適切なターゲット・アレイ114で実行される畳み込みの方法を説明する。用語「ビン」はコア16の1つにおける、信号データ値または畳み込みデジタル・フィルタ係数値のいずれかの位置を意味する。
1.初期化
1a.「n」個のデータ・サンプルのビンが「0」の数値を受け取る。
2.第1の部分合計p0を計算する。
2a.第1の部分合計p0の計算前に、第1のデータ・サンプルd0は、すべての既存のデータ・サンプルを次の使用可能なデータビン中に「プッシュする」態様で、データ・サンプル・ビンb0中に置かれる。
2al.まず、最後のデータ・サンプル・ビンbnに見つかったデータ・サンプルが最後のデータ・サンプル・ビンからプッシュされ、実質的に捨てられる。
2a2.次いでデータ・サンプル・ビンbn-1に見つかった値がデータ・サンプル・ビンbnに、プッシュされる。
2a3.同様にしてデータ・サンプル・ビンbn-2に見つかった値がデータ・サンプル・ビンbn-1に、プッシュされる。
2a4.データを次の使用可能なデータ・サンプル・ビンにプッシュするこのプロセスは、データ・サンプル・ビンb0が一切データを含まなくなるまで実行され、終了する。(何らデータを含まないデータ・サンプル・ビンは、値「0」を含むデータ・サンプル・ビンと同じではない。)
2a5.この時点で、第1のデータ・サンプルd0は、残りのデータビンに追加の変更を一切加えることなく、データ・サンプル・ビンb0にプッシュされる。
2b.次いで、積が、フィルタ係数ビンc0およびデータ・サンプル・ビンb0に見出された値を被乗数として使用して算出され、これを積a0とする。
2c.この処理結果の積を、フィルタ係数ビンc1およびデータ・サンプル・ビンb1に見出される値として定義される複数の被乗数の乗算として定義された第2の積に加算し、この結果第2の積a1が得られる。
2d.先の積を新しい積に加算するこのプロセスは、積an-1が最後の積に加算されるまで繰り返され、anを示すことになる。
2e.値anは、畳み込みのうちの第1の合計p0に対して等価であると考えられる。
3.第2の部分合計p1を算出する。
3a.ステップ2a1〜2a4を繰り返すプロセスを通して第2のデータ・サンプル値d1を第1のデータ・サンプル・ビンb0に置く。
3b.ステップ2b〜2dを繰り返すことにより、第2の部分合計p1を算出する。
4.部分合計の剰余を計算する。(本アルゴリズムは、無限の量の時間の間データを受け取り、そのために停止条件が要求されない畳み込みのアルゴリズムを記述する。)
4a.ステップ2a1〜2a4を繰り返すプロセスを通じて次のデータ・サンプルを第1のデータ・サンプル・ビンb0中に「プッシュする」ステップを繰り返す。
4b.ステップ2b〜2dを繰り返すことにより新しい部分合計を計算する。
【0089】
ノード間のデータの伝送は、上記に記載されておらず、畳み込みを実行すること、フィルタの直接的表現を使用することのみが記載されている。代わりにフィルタが導関数表現(derivative representation)で表されている場合は、畳み込みを実行するのに以下の変更が必要である。
【0090】
既存のステップ
3b.ステップ2b〜2dを繰り返すことにより第2の部分合計p1を算出する。
4b.ステップ2b〜2dを繰り返すことにより新しい部分合計を算出する。
上記を次と置換する。
3b.ステップ2b〜2dを繰り返し、ステップ2b〜2dからのこの値p1を先に計算された部分合計p0に加算することにより、第2の部分合計s1を計算する。
4b.ステップ2b〜2dを繰り返し、ステップ2b〜2dからのこの値を先に計算された部分合計に加算することにより、新しい部分合計を計算する。
【0091】
図6A−Bは、実質的に今述べたのと同じやり方のハイブリッドFIR畳み込みを実行するためのForthコード600の2ページの表である。
【0092】
要約すると、本発明は特に2つの原理を採用している。第1の原理は、アルゴリズムのうち、大きい方の部分を高速化した方が、小さい方の部分を大幅に高速化するより良いという原理である。第2の原理は、畳み込みアルゴリズムは、連続的および並列的エレメントの両方を有するということを認識し、受け入れることである。畳み込み値は、連続的な、すべての部分が次々計算される形で計算することができる。一方、これとは対極的に、すべての部分を同時にすなわち並列に計算することができる。または中間の手法を使用することもでき、この場合、一部を連続的に計算し一部を並列で計算する。CCS100は、一定量の連続的処理を保ちながらも、並列計算を実行する能力を提供し、これにより、使用される畳み込みアルゴリズムを実際に高速化することもなく、また、使用されるハードウェアの処理能力を増大させることもなく、畳み込みの速度を大幅に向上させることができる。
【0093】
本発明の実施形態は、図2のシステム上で実行させると、上述したように、信号データ値および畳み込み係数値をアレイ114にマッピングするコンピュータ・プログラムを提供する。
【0094】
本発明の実施形態は、図2のシステム上で実行させると、図6Aおよび6Bについて上述したように、信号データ値および畳み込み係数値を畳み込み計算するコンピュータ・プログラムを与える。
【0095】
さらに、畳み込み計算は、本発明の例にすぎず、CCS100はまた、連続的および並列的エレメントの両方を有する任意のタイプのアルゴリズムの性能を増大させる現実的手法も与えることも、今や理解されるべきである。
【0096】
様々な実施形態を上に述べたが、これらは例としてのみ提示されたものであり、本発明の幅と範囲は上に述べた例示的実施形態のいずれにも限定されるものではないことが理解されるべきである。
【図面の簡単な説明】
【0097】
【図1a】本発明による畳み込み計算システムがセットアップ演算、通常作業演算、および要約した演算をどのように実行するかの概観を模式的に示すブロック図である。
【図1b】本発明による畳み込み計算システムがセットアップ演算、通常作業演算、および要約演算をどのように実行するかの概観を模式的に示すブロック図である。
【図2】(背景技術)図1aにターゲット・アレイとして使用されているSEAforth24Aデバイスの主要な詳細を全体的に示す線図である。
【図3】図1bのマッピング・ステージの例示的実施形態がどのように実行されるかを示すフローチャートである。
【図4】図1bのインターリーブ・ステージがどのように作動するかの事例を示すチャートである。
【図5】図1bの計算ステージの間の図2のターゲット・アレイからの特定の畳み込み計算ノードの詳細な線図である。
【図6A】ハイブリッドFIR畳み込みを実行するためのForthコードの2ページのリストである。
【図6B】ハイブリッドFIR畳み込みを実行するためのForthコードの2ページのリストである。
【符号の説明】
【0098】
100 本発明の好ましい実施形態
112 ホスト・プロセッサ
114 ターゲット・アレイ
16 コア
18 データ・バス
161 入力デバイス
221 出力デバイス
330 開始ステップ
332 (S)の入力
334 (L)の入力
336 (t)の入力
338 (nmax)の入力
340 入力が有効か?
342 マッピングの中止?
344 マッピングの停止
346 (cutil)の計算
348 cutilが整数値であるか?
350 nestの値をcutilのすべてに使用
352 cutil中の各コア16に対してインターリーブ・ベクトルをマッピングする
354 通常畳み込み計算をすすめる
356 例えば、nactualの値をコア16のcutil−1に使用し、異なるマッピングをcutil中の(c番目)の他のコア16で使用する
358 cutil中の各コア16に対してインターリーブ・ベクトルを、不均一にマッピングする
460 信号ベクトル
462−468 信号ベクトルのエレメント
470 係数ベクトル
472−478 係数ベクトルのエレメント
480 インターリーブ・ベクトル
482 信号ベクトルのエレメント
486 係数ベクトルのエレメント
502−520 インターリーブのエントリを格納するメモリ領域
502、506、510、514、518 信号データ値の領域
504、508、512、516、520 畳み込みデジタル・フィルタ係数値の領域
522 積
524−530 部分的な積合計
600 Forthコード

【特許請求の範囲】
【請求項1】
複数の信号データ値および複数の畳み込みフィルタ係数値を、畳み込み値を計算するための使用される複数のプロセッサからなる一組のプロセッサ(cutil)の1つである対象プロセッサ(ct)にロードするプロセスであって、
前記複数の係数値を前記cutilにマッピングすること、
前記ct中の前記複数のデータ値と複数の係数値のインターリーブを決定すること、
前記ctに前記複数の係数値をロードすること、および
前記ctに前記複数のデータ値をロードし、それによって前記畳み込み値の計算に参加するよう前記ctに準備させること
を含むことを特徴とするプロセス。
【請求項2】
actualが前記ctにマッピングされたフィルタ値の実数、nestが前記cutilのそれぞれにマッピングされたフィルタ値の予測数であるとして、前記マッピングすることは、すべての前記cutilにわたって最も均一なマッピングを提供する前記nestを、前記nactualとなるように選択することを含むことを特徴とする請求項1に記載のプロセス。
【請求項3】
tapsが前記ctにマッピングされたフィルタタップの数であり、nmaxが前記ctにマッピングされた係数値の最大数であり、Sが前記複数の信号データ値のサンプル速度を表し、tが前記ct中の2つの数を乗じるための時間を表し、Aが前記ct中の前記サンプルおよび係数値の格納に使用可能なメモリを表し、Lが畳み込みについての積分核の時間窓を表すとして、
taps=S*tを決定すること、
max=A/2を決定すること、
est=min(ntaps,nmax)を決定すること、および
util=L/nestを決定すること
をさらに含むことを特徴とする請求項2に記載のプロセス。
【請求項4】
utilが非整数値であるように決定された場合、nestを変更して、どれが前記最も均一なマッピングを提供するか見つけることをさらに含むことを特徴とする請求項3に記載のプロセス。
【請求項5】
前記決定することは、前記ctについての2*nactual個のエレメントを含むインターリーブ・ベクトルを構築することを含むことを特徴とする請求項1乃至4のいずれかに記載のプロセス。
【請求項6】
前記決定することは、前記cutilのそれぞれについて、それぞれ、2*nactual個のエレメントを含むインターリーブ・ベクトルを構築することを含むことを特徴とする請求項1乃至5のいずれかに記載のプロセス。
【請求項7】
前記畳み込みは、デジタル信号処理の過程の前記データ値に対するフィルタリング動作の一部であることを特徴とする請求項1乃至6のいずれかに記載のプロセス。
【請求項8】
複数の信号データ値および複数の畳み込みフィルタ係数値に基づき畳み込み値を計算するシステムであって、
使用される複数のプロセッサ(cutil)からなり、それぞれが順番に所与の時点で対象プロセッサ(ct)として見なすことが可能な一組のプロセッサと、
前記複数の係数値をcutilにマッピングするロジックと、
前記ct中の前記複数のデータ値と前記複数の係数値のインターリーブを決定するロジックと、
前記ctに前記複数の係数値をロードするロジックと、および
前記ctに前記複数のデータ値をロードし、それにより畳み込み値の計算に参加するよう前記ctに準備させるロジックと
を備えることを特徴とするシステム。
【請求項9】
actualが前記ctにマッピングされたフィルタ値の実数、nestが前記cutilのそれぞれにマッピングされたフィルタ値の予測数であるとして、前記マッピングを行うロジックは、さらにすべての前記cutilにわたって最も均一なマッピングを提供する前記nestを前記nactualとなるよう選択することを特徴とする請求項8に記載のシステム。
【請求項10】
tapsが前記ctにマッピングされたフィルタタップの数であり、nmaxが前記ctにマッピングされた係数値の最大数であり、Sが前記複数の信号データ値のサンプル速度を表し、tが前記ct中の2つの数を乗じるための時間を表し、Aが前記ct中の前記サンプルおよび係数値の格納に使用可能なメモリを表し、Lが畳み込みについての積分核の時間窓を表すとして、前記マッピングを行うロジックはさらに、
taps=S*tを決定し、
max=A/2を決定し、
est=min(ntaps,nmax)を決定し、および
util=L/nestを決定する
ことを特徴とする請求項9に記載のシステム。
【請求項11】
前記マッピングを行うロジックは、さらに、cutilが非整数値である場合、nestを変更して、どれが前記最も均一なマッピングを提供するか見つけることを特徴とする請求項10に記載のシステム。
【請求項12】
前記決定するロジックはさらに、前記ctについての2*nactual個のエレメントを含むインターリーブ・ベクトルを構築することを特徴とする請求項8、9、10または11に記載のシステム。
【請求項13】
前記決定するロジックはさらに、前記cutilのそれぞれについて、それぞれ、2*nactual個のエレメントを含むインターリーブ・ベクトルを構築することを特徴とする請求項8、9、10、11または12に記載のシステム。
【請求項14】
前記cutilは、単一のダイまたはモジュール内のすべてのコアであることを特徴とする請求項8、9、10、11、12または13に記載のシステム。
【請求項15】
前記cutilは、単一のダイまたはモジュール内の、より大きな複数のコンピュータ化されたプロセッサ(ctotal)のサブセットであることを特徴とする請求項14に記載のシステム。
【請求項16】
前記畳み込み値を計算する前記cutilから分離したホスト・システムをさらに備え、少なくともマッピングする前記ロジックおよび決定する前記ロジックは前記ホスト・システム内にあることを特徴とする請求項8乃至15のいずれか一項に記載のシステム。
【請求項17】
前記畳み込みは、デジタル信号プロセッサ内における複数のデータ値に関するフィルタ動作の一部であることを特徴とする請求項8乃至16のいずれか一項に記載のシステム。
【請求項18】
請求項1乃至6のいずれか一項に記載のプロセスに従って、信号から前記信号を表すデータ値を取り出すこと、および前記データ値を処理することを備えることを特徴とする信号を処理する方法。
【請求項19】
信号から前記信号を表すデータ値を取り出す手段と、請求項8乃至17のいずれか一項に記載のシステムに従ってデータ値を処理するシステムとを備えることを特徴とする信号プロセッサ。
【請求項20】
コンピュータのアレイで実行させると、アレイに請求項1乃至7および請求項18のいずれか一項に記載のプロセスを実施させることを特徴とするコンピュータ・プログラム。
【請求項21】
請求項20記載のプログラムを備えることを特徴とするキャリア。
【請求項22】
信号、記憶媒体またはメモリ・デバイスであることを特徴とする請求項21記載のキャリア。

【図1a】
image rotate

【図1b】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6A】
image rotate

【図6B】
image rotate


【公開番号】特開2009−37590(P2009−37590A)
【公開日】平成21年2月19日(2009.2.19)
【国際特許分類】
【外国語出願】
【出願番号】特願2008−98919(P2008−98919)
【出願日】平成20年4月7日(2008.4.7)
【出願人】(507101543)テクノロジー プロパティーズ リミテッド (12)
【Fターム(参考)】