(57)【要約】  遅延アドレス指定型データパスレジスタファイルは、マルチプロセッサ又はアレイ信号処理システムにおいてセルを構成するプログラマブルプロセッサで使用するため設計される。遅延アドレス指定可能型レジスタファイルは、特に、フィルタ更新待ち時間が可変である適応フィルタ、補間係数がプログラマブルであることを必要とする補間フィルタ、および、デシメーション係数がプログラマブルであることを必要とするデシメーションフィルタにおいて非常に有用である。プログラム可能性は効率的な方法で達成され、このタスクを実行するために要求されるサイクル数を削減する。単一のパラメータである「遅延限界」値は、立ち上げ時にプログラムされ、プロセッサのレジスタファイル内の内部遅延ラインを設定する。したがって、遅延したレジスタはどれでもランタイム中に遅延インデックスによって指定することによってアドレス指定可能である。遅延ラインは、処理ループが新しい反復を開始するとき、「遅延限界」を法として、一つずつロケーションを進める。【特許請求の範囲】
【請求項１】
第１のレジスタ（ＲＤ＿Ｘ）のセットと、
第２のレジスタ（ＲＩ＿Ｘ）のセットと、
を有し、
前記第１のレジスタのセットは、前記第２のレジスタのセットのアドレスを格納し、前記第２のレジスタのセットはデータを格納し、
前記第１のレジスタのセットのうちの二つ以上のレジスタは、先頭のレジスタが最後のレジスタの後に次の順序で収まるように、循環構造で連続して順序付けられる、
プロセッサ用のモジュロアドレッシング可能なデータパスレジスタファイル。
【請求項２】
循環構造のレジスタは、プロセッサのループが新しい反復を開始するたびに、ｋは整数であるとして、次式
ＲＤ＿Ｘ＝ＲＤ＿（Ｘ＋ｋ）（モジュロＭ）
に従ってそれらの内容を変更し、
モジュラスＭは、前記循環構造で使用される前記第１のレジスタのセットからのレジスタの個数に、ｋが非零の場合に｜ｋ｜を乗算し、ｋ＝０の場合に１を乗算したものに一致する、
請求項１に記載のレジスタファイル。
【請求項３】
ｋは、０、±１、±２、±３又は±４のうちの一つである、請求項２に記載のレジスタファイル。
【請求項４】
前記第１のレジスタのセットのＮ個のレジスタは０からＮ−１までの番号が付けられる、請求項３に記載のレジスタファイル。
【請求項５】
前記環状構造はＮ個のデータサンプルの系列を格納するため使用され、各データサンプルは前記系列中の前のサンプルから１サンプル周期分遅延する、請求項４に記載のレジスタファイル。
【請求項６】
前記パラメータＮは、プロセッサ動作の立ち上げ時にプログラム可能であり、サンプル周期の単位で表現したときに、サポートされている最大遅延よりも１だけ大きい、請求項５に記載のレジスタファイル。
【請求項７】
前記サンプルはＲＩ＿Ｘレジスタのセットに格納される、請求項６に記載のレジスタファイル。
【請求項８】
前記ＲＩ＿Ｘレジスタのセットは前記循環構造の前記ＲＤ＿Ｘレジスタによって指定される、請求項７に記載のレジスタファイル。
【請求項９】
前記サンプルは、前記ＲＩ＿Ｘレジスタのセットの連続したロケーションに格納される、請求項８に記載のレジスタファイル。
【請求項１０】
複数のセルを含み、
各セルは個別のプロセッサを具備し、
各セルは請求項６に記載のレジスタファイルを有し、
前記プロセッサは、前記ＲＤ＿Ｘレジスタをオペランドとしてもつ命令を実行可能である、
マルチプロセッサシステム。
【請求項１１】
各セルは当該セルに対するＮの値を設定するプログラム可能なパラメータを含む、請求項１０に記載のシステム。
【請求項１２】
第１のレジスタバンク（ＲＤ＿Ｘ）にモジュロアドレッシングを実行し、
プロセッサがデータを指定するレジスタを操作することにより第２のレジスタバンクのデータを操作できるようにする、
デジタル信号処理を最適化する方法。
【請求項１３】
前記第１のレジスタバンクのレジスタは、プロセッサのループが新しい反復を開始するたびに、ｋは整数であるとして、次式
ＲＤ＿Ｘ＝ＲＤ＿（Ｘ＋ｋ）（モジュロＭ）
に従ってそれらの内容を変更し、
モジュラスＭは、前記第２のレジスタバンクのデータを指定するため使用される前記第１のレジスタバンクのレジスタの個数に、ｋが非零の場合に｜ｋ｜を乗算し、ｋ＝０の場合に１を乗算した数に一致する、
請求項１２に記載の方法。
【請求項１４】
前記第１のレジスタバンク又は前記第２のレジスタバンクのいずれかの未使用レジスタは前記Ｍの値を格納する、請求項１３に記載の方法。
【請求項１５】
前記第１のレジスタバンクの専用レジスタは前記Ｍの値を格納する、請求項１４に記載の方法。
【請求項１６】
現在のデータサンプルおよび多数の前のデータサンプルを第１のレジスタバンクに格納し、
前記現在のサンプルに対する相対的な遅延を用いて前記現在のデータサンプルおよび前のデータサンプルにインデックスを付け、
前記第１のレジスタバンクに格納されている最も遅延したサンプルに新しいデータサンプルを上書きするため、サンプル周期ごとに、前記第１のレジスタバンクの内容を自動的に更新する、
デジタルフィルタリングを実施する方法。
【請求項１７】
前記第１のレジスタバンクの前記データサンプルのインデックス付けは、前記第１のレジスタバンクのレジスタのアドレスを記憶する第２のレジスタバンク（ＲＤ＿Ｘ）によって保持される、請求項１６に記載の方法。
【請求項１８】
前記第２のレジスタバンクは、プロセッサのループが新しい反復を開始するたびに、ｋは整数であるとして、次式
ＲＤ＿Ｘ＝ＲＤ＿（Ｘ＋ｋ）（モジュロＭ）
に従って、各サンプルの周期ごとに、自動的にインクリメントされ、
モジュラスＭは、前記第２のレジスタバンクのデータを指定するため使用される前記第１のレジスタバンクのレジスタの個数に、ｋが非零の場合に｜ｋ｜を乗算し、ｋ＝０の場合に１を乗算した数に一致する、
請求項１７に記載の方法。
【請求項１９】
現在のデータサンプルおよび多数の前のデータサンプルを含む第１のデータセットを第１のレジスタバンクに格納し、
現在のデータサンプルおよび多数の前のデータサンプルが各々に含まれている一つ以上の補助的なデータセットを補助的なレジスタバンクに格納し、
前記現在のサンプルに対する相対的な遅延を用いて前記現在のデータセットにインデックスを付け、
各レジスタバンクに格納されている最も遅延したサンプルに新しいデータサンプルを上書きするため、サンプル周期ごとに、前記第１のレジスタバンクおよび前記補助的なレジスタバンクのそれぞれの内容を自動的に更新する、
デジタルフィルタリングを実施する方法。
【請求項２０】
前記第１のレジスタバンクの前記データサンプルおよび前記補助的なレジスタバンクのそれぞれの前記データサンプルのインデックス付けは、前記第１のレジスタバンクのレジスタのアドレスおよび前記補助的なレジスタバンクのそれぞれのレジスタのアドレスを記憶するポインタレジスタバンク（ＲＤ＿Ｘ）によって保持される、請求項１９に記載の方法。
【請求項２１】
前記ポインタレジスタバンクは、プロセッサのループが新しい反復を開始するたびに、ｋは整数であるとして、次式
ＲＤ＿Ｘ＝ＲＤ＿（Ｘ＋ｋ）（モジュロＭ）
に従って、各サンプルの周期ごとに、自動的にインクリメントされ、
モジュラスＭは、前記第１のレジスタバンクのデータおよび前記補助的なレジスタバンクの各々のデータを指定するため使用される前記ポインタレジスタバンクのレジスタの個数に、ｋが非零の場合に｜ｋ｜を乗算し、ｋ＝０の場合に１を乗算した数に一致する、
請求項２０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願のクロスリファレンス）
本願は、２００１年１０月１日に出願された、発明の名称が”デジタル信号処理における効率的なコンボリューション計算用のプログラマブルアレイ（Programmable Array for Efficient Computation of Convolutions in Digital Signal Processing）”であり、出願人がKrishnamurthy VaidyanathanとGeoffrey Burnsである、米国特許出願第０９／９６８，１１９号の一部継続出願であり、その明細書は参照によりここに引用される。
【０００２】
本発明は、デジタル信号処理に係わり、特に、アレイ処理およびその他のマルチプロセッサシステムにおけるデータアクセスの最適化に関する。
【背景技術】
【０００３】
循環バッファは、メモリセグメントが剰余演算によりアドレスを変更した後にアドレス指定され得る、例えば、アナログ・デバイセズ社のＡＤＳＰ  ２１８１又はフィリップス社のＲＥＡＬ  ＤＳＰのようなデジタル信号プロセッサでよく見られる。このような場合、データは１サイクルでフェッチされ、レジスタに格納され、次のサイクルのオペランドとして使用される。このような例では、循環バッファはメモリに保持され、そこに記憶されたデータを処理するため、または、そこへ新しいデータを適切に書き込むため、メモリリード／ライト命令を使用しなければならない。このような命令は、計算オーバーヘッド、命令セットの複雑さ、および、メモリ操作によって必要とされる付加的な時間を増加させる。
【０００４】
このような従来の循環バッファの用途の他に、レジスタファイルの直接的なモジュロアドレッシング、又は、アレイプロセッサにおけるモジュロアドレッシングの使用を可能にする設計が存在することは知られていない。モジュロアドレッシングは、データ要素の系列を順次に連結することを容易にすることが可能になり、系列の終わりに達したときにその系列は先頭へラップアラウンドする。一例として、０からＮ−１までの番号が付けられたＮ個のデータ格納位置からなる循環バッファでは、システムは所定の位置Ｘからの次の格納位置がＸ＋１として定義されるように設定され、モジュロアドレッシングは、（Ｎ−１）＋１＝０（ｍｏｄ  Ｎ）を可能にし、これにより、ラッピング効果を実現する。或いは、循環メモリは、所与の位置Ｘからの次のメモリ位置がＸ−１として定義されるように構成され、このとき、０−１＝（Ｎ−１）（ｍｏｄ  Ｎ）であり、この場合も、ラッピング効果を実現する。
【０００５】
同時係属中の米国特許出願第０９／９６８，１１９号に開示されているような、マルチプロセッサ、或いは、高スループットの反復信号処理のため設計されたアレイプロセッサの状況で、個々のセルは、メモリアドレス指定能力が制限されるか、又は、メモリアドレス指定能力がない。このような場合、メモリ内で循環バッファを保持することは、取り扱いをさらに難しくするというよりも、絶対に不可能である。
【０００６】
したがって、このようなアレイプロセッサのセルにおける遅延ラインなどを容易化すること、すなわち、メモリ内の循環バッファの実現への等価物は、処理されている間にデータが格納されている実際のレジスタをモジュロアドレッシングする機能である。データパス命令においてモジュロアドレッシングを可能にする設計は知られていない。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従来技術におけるこれらの欠点を解決するためには、データパス命令内でレジスタをモジュロアドレッシングする方法および装置が必要である。このような方法は、プロセッサが実際のレジスタ自体における遅延ラインのようなデータの連続的な系列を保持することを可能にさせ、これにより、メモリハンドリング能力の必要性を除去する。
【課題を解決するための手段】
【０００８】
遅延アドレス指定型データパスレジスタファイルは、マルチプロセッサ又はアレイ信号処理システムのセルを構成するプログラマブルプロセッサで使用するため設計される。遅延アドレス指定型レジスタファイルは、特に、フィルタ更新待ち時間が可変である適応フィルタ、補間係数のプログラム可能性が要求される補間フィルタ、および、デシメーション係数のプログラム可能性が要求されるデシメーションフィルタにおいて非常に有用である。このプログラム可能性は効率的な様式で実現され、このタスクを実行するために要求されるサイクル数を削減する。単一のパラメータである「遅延限界」値は、立ち上げ時にプログラムされ、プロセッサのレジスタファイル内で内部遅延ラインを設定する。したがって、遅延したレジスタはどれでも、ランタイム中に遅延インデックスを指定することによってアドレス指定され得る。遅延ラインは、処理ループが新しい反復を開始したとき、「遅延限界」を法として、ロケーションが一つ前進する。
【０００９】
本発明の一つ以上の実施形態を詳述する前に、本発明は、その適用において、以下の説明に記載された、又は、添付図面に示された部品の構成および配置の細部に限定されないことに注意する必要がある。本発明は、他の実施形態を実現する能力を備え、様々な形態で実施し、又は、実行することができる。また、ここで使用されている語法および用語は説明を目的とするものであり、決して制限的に考慮されるべきではないことに注意する必要がある。
【発明を実施するための最良の形態】
【００１０】
コンボリューションは、様々のアプリケーション、特に、デジタルフィルタで見られる基本的な信号処理演算である。デジタルフィルタは、特に、上記の同時係属中の米国特許出願第０９／９６８，１１９号（「特許出願」）に記載されているマルチ・スタンダード・チャネル・デコーダ（ＭＳＣＤ）で使用されるリコンフィギュア適応フィルタアレイプロセッサのようなアレイ処理技術を用いてエレガントに実現することができる。リコンフィギュア・プロセッサアレイは、同一のプロセッサセルにより構成され、各プロセッサセルは、最近傍のプロセッサセルと通信する能力を備え、単一タスクを実行するために個別にプログラムすることができる。高いデータレートをサポートする必要があり、コストを圧迫するので、これらのセルは単純であり、かつ、効率的であるように制約される。セルの効率は、部分的には、効率的な命令セットの設計とその命令を実現する支援アーキテクチャとによって決まる。
【００１１】
本発明は、遅延アドレス指定型レジスタファイルの設計および対応した命令について説明する。このような命令は、例えば、アレイ処理における適応フィルタリングやマルチレートフィルタリングのような様々なフィルタリングアプリケーションで巧く使用される状態に置くことが可能である。遅延アドレス指定型データパスレジスタファイル設計は、任意のアレイベースのフィルタ設計に応用可能であり、上記特許出願に記載されている２次元アレイに限定されない。
【００１２】
本発明を具体的に説明するため、レジスタアドレス指定モードについて、いくらか、順番に説明する。ｘが０からＮ−１の値であり、Ｎがデータパスレジスタの総数であるとき、あるプロセッサがＲＩ＿ｘという名前のレジスタファイルセットをもつ場合を考える。また、このプロセッサは、典型的なＲＩＳＣに似た命令セットと、指定されたループを実行するシーケンシャルコントローラと、を含むことを仮定する。例えば、加算命令は、ＡＤＤ  ＳＲＣ１  ＳＲＣ２  ＤＳＴの形であり、ここで、ＳＲＣ１はソースオペランド１、ＳＲＣ２はソースオペランド２、ＤＳＴはデスティネーションレジスタを表す。全部で３個のオペランドがレジスタファイルから取り出される。通常、ＡＤＤ  ＲＩ＿０  ＲＩ＿１  ＲＩ＿２のような命令は、レジスタファイルのロケーション０のレジスタの内容をロケーション１の内容と加算し、その結果をロケーション２に格納するだけである。Ｃ言語の記法では、これは、ＲＩ［２］＝ＲＩ［０］＋ＲＩ［１］として記述される。これらの例では、全てのアドレス指定は、暗黙的でありスタティック（時間的に不変）である。
【００１３】
ポインタ変更型アドレス指定の機能は多少異なる。ポインタ変更型アドレス指定は、間接アドレス指定の形式である。補助的なレジスタセット、すなわち、ポインタレジスタセットが、対応したポインタレジスタセットの内容で、データパスレジスタのアドレスをマップするため保持される。ポインタレジスタセットをＲＤ＿ｘと呼ぶことにする。ＡＤＤ  ＲＩ＿０  ＲＩ＿１  ＲＩ＿２のような命令は、実際には、ＲＩ［ＲＤ［２］］＝ＲＩ［ＲＤ［０］］＋ＲＩ［ＲＤ［１］］を意味するように解釈される。したがって、命令のオペランドはデータレジスタであり、そのデータレジスタのアドレスはＲＤ＿ｘレジスタセットに格納されている。ポインタレジスタセットの内容がＲＤ＿ｘ＝ｘのような場合、ポインタ変更型アドレス指定の下での挙動は、前段落で説明した暗黙的アドレス指定の挙動と全く同一である。
【００１４】
本発明は、遅延インデックス型アドレス指定を利用する。遅延インデックス型アドレス指定は、ポインタ変更型アドレス指定の修正版である。それは、基本的に、ＲＤ（ポインタ）レジスタファイルの内容に関してある初期条件を含むレジスタファイルのポインタ変更型アドレス指定と、各データサイクルでのポインタの自動シフト用のメカニズムである。立ち上がり時に、ＲＤの内容は順次に増加し、すなわち、ＲＤ＿０＝０、ＲＤ＿１＝１、．．．、ＲＤ＿Ｎ＝Ｎらであり、以下同様に続く。したがって、処理ループがはじめから再開するとき、すなわち、プログラムカウンタが０になるときには常に、ポインタレジスタセットのレジスタの内容は、その次のレジスタへシフトされ、すなわち、（「次の」は、その後の、として定義され）ＲＤ＿ｘ（現在）＝ＲＤ＿（ｘ−１）（前）であり、先頭のレジスタの内容は最後に重なる。（「次の」が、その前の、として定義されるならば、等価的なシフトは、ＲＤ＿ｘ（現在）＝ＲＤ＿ｘ＋１（前）を用いて行われ、最後のレジスタの内容が先頭のレジスタに重なる）。
【００１５】
このことは、図１および２を参照して説明することができる。これらの図のそれぞれには、ＲＤ＿ｘ  １１０、２１０とＲＩ＿ｘ  １２０、２２０のレジスタセットが表されている。各レジスタバンクは、この例の目的のため、０から３のアドレスをもつ４個のレジスタを収容する。これらのレジスタのアドレス１５０、２５０は、各レジスタの（外側）側方に示されている。「次の」は、その後の、として定義され、シフトごとに、所与のＲＤ＿ｘレジスタの内容は後のレジスタへシフトされ、最後のレジスタの内容は先頭のレジスタに重なる。矢印は、ＲＤ＿ｘレジスタの内容がＲＩ＿ｘレジスタセット内で指示する場所を表す。図１において、ｔ＝ｎ  １０１、すなわち、立ち上がり時の条件は、左側に例示され、ここで、ＲＤ＿ｘ＝ｘである。ｔ＝ｎ＋１、１０２では、図１の右側に示されているように、ポインタレジスタＲＤ＿ｘの内容は、前述のように、ＲＤ＿ｘ（現在）＝ＲＤ＿（ｘ＿１）（前）となるようにシフトされる。この加算は、４を法として実行されるので、０−１＝３（ｍｏｄ  ４）であり、したがって、ＲＤ＿０に格納されるアドレスは、ｔ＝ｎ＋１において３である。図２は、時間的シーケンスを終了し、ｔ＝ｎ＋２  ２０１およびｔ＝ｎ＋３  ２０２のそれぞれに対するレジスタセットを示している。４の場合、レジスタセットｔ＝ｎ＋４は、ｔ＝ｎに一致することが分かる。このアドレス指定システムは、後述するように循環バッファを設置する。
【００１６】
ＲＤ＿ｘレジスタの内容はＲＩ＿ｘレジスタのアドレスである。ＲＩ＿ｘレジスタの内容はプロセッサによって処理されるデータである。一般的に、データはプロセッサに入り、プロセッサから出るので、データは時間的に変化する。容易にわかるように、プログラムカウンタがリセットすると毎回、新しいデータがＲＩ＿ｘレジスタセット１２０、２２０に入り、ＲＤ＿ｘレジスタ内のレジスタ数よりも１だけ小さい深さの遅延ラインがセットアップされる。図１から２の例では、深さ３の遅延ラインをセットアップすることが可能であり、プロセッサは、現在のデータ（通常、所与のサンプリングレートで獲得されたある種のアナログ値のサンプル）と、前の３個のデータ、又は、サンプルにアクセスすることができ、すなわち、プロセッサはデータサンプルＸｎ、Ｘｎ−１、Ｘｎ−２、およびＸｎ−３にアクセスすることができる。
【００１７】
図１Ａおよび２Ａは、それぞれ、図１および２に対応し、データレジスタセットＲＤ＿ｘの例示的な内容が付加されている点を除いて図１および２と同一である。ある時点におけるアスタリスク記号は、次の入力サンプル（すなわち、時点ｔ＝ｎにおけるサンプルＸｎ＋１、一般的に、時点ｔ＝ｋにおけるサンプルＸｋ＋１など）が書き込まれる場所を表す。新しいサンプルは、常に、レジスタセットに格納されている最も旧いサンプル、すなわち、最も遅延したサンプルに上書きされることがわかる。例示された遅延３の場合、新しいサンプルは、常に、現在のサンプルよりも３サンプル周期遅れているサンプルに上書きし、すなわち、ｔ＝ｎの場合、サンプルＸｎ＋１は、データサンプルＸｎ−３に上書きする。かくして、新しいサンプルは、常に、この例では、現在のサンプルを含むレジスタよりも一つ後のＲＩレジスタに、すなわち、ＲＤ＿（０−１）によって指定されたＲＩ＿ｘレジスタＲＩ［ＲＤ＿３］に書き込まれる。レジスタＲＩ［ＲＤ＿０］から、モジュロ４（すなわち、ＲＩ［ＲＤ＿（３＋１）］＝ＲＩ［ＲＤ＿０］）で、同時に一つずつ全てのデータレジスタを進むと、サンプルの遅延は増加することがわかる。このように、ＲＤ＿ｘレジスタは、要素が遅延によってインデックス付け（アドレス指定）される循環バッファを作る。図３は、深さ３の遅延バッファ用のこのような遅延インデックス型アドレス指定の説明図である。図３には、利用可能なＲＤ＿ｘレジスタの一部分しか示されていないが、深さがＲＤ＿ｘセット内の実際のレジスタ数に一致する可能性がある。ＲＤ＿ｘ内の４個のレジスタだけが遅延ラインのため利用されるので、ＲＩ＿ｘセットのレジスタ０−４だけが遅延ラインデータの格納に関与する。命令中のＲＤ＿０のオペランドは、遅延バッファ内の最新の値をもつレジスタを指定し、一方、ＲＤ＿３のオペランドは、遅延３の値、すなわち、ｘｎ−３を指定する。このようにして、ＲＤ＿ｘレジスタセットのアドレスは、実際は、遅延として解釈される。これらのＲＤ＿ｘレジスタがＲＩ＿ｘセット内で指定する場所は時間的に変化する。
【００１８】
図４は新しい状態の到達時におけるレジスタポインタの前進を示す。データパスレジスタファイルからのレジスタの部分集合上で循環バッファを実現するため、図３から４においてｒｌｉｍｉｔと称される遅延限界が導入され、ポインタレジスタシフトはモジュロ（ｒｌｉｍｉｔ＋１）で行われるので、各ＲＤ＿ｘレジスタの内容は１の減算（モジュロ（ｒｌｉｍｉｔ＋１））で変更される。このモジュラスが（ｒｌｉｍｉｔ＋１）である理由は、ｒｌｉｍｉｔがＲＩ＿ｘレジスタに格納された最大遅延であるが、遅延ライン内の実際のレジスタ数は、零遅延、すなわち、現在のサンプルＸｎを含めるために（ｒｌｉｍｉｔ＋１）であるからである。図３および図４では、ｒｌｉｍｉｔの値は３であるため、４つのレジスタが遅延ラインで利用される。
【００１９】
循環バッファ内の最新の３個のサンプルを保存するため、遅延が零の新しいサンプルは、レジスタＲＤ＿０によって指示された絶えず変化する（モジュロｒｌｉｍｉｔ＋１）ＲＩ＿ｘレジスタに書き込まれる。図３および４のシステムの場合、ＲＤ＿ｘレジスタの内容は、図１−２に示されるように時間的に循環し、図３は図２におけるｔ＝ｎ＋２  ２０１に対応し、図４は図２におけるｔ＝ｎ＋３  ２０２に対応する。
【００２０】
一般的に、遅延インデックス型ポインタレジスタは、現在データと、ある意味で現在データよりも前の多数のデータと、が入力されるフィルタ又はその他のデータ処理演算をプロセッサに実現させることを可能にする。データが時間的に相対的に変化するならば、時間的な遅延ラインを保持することが可能であり、ＦＩＲで一般的に要求されるような現在のサンプルおよび多数の前のサンプルにアクセスすることができる。遅延ラインに格納されるサンプル数は、このような場合、フィルタリング式中の遅延の数に１を加えた数に対応し、図３から４に示されたシステムに関して、（ｒｌｉｍｉｔ＋１）に対応する。プロセッサは、予めプログラミングされた変数ｒｌｉｍｉｔによって、遅延ライン内にあるデータサンプルの個数がわかり、この変数ｒｌｉｍｉｔは、データレジスタに格納される最大遅延を与える。インデックスレジスタは、モジュラー算術を使用して自動的にインクリメントされ、その結果、絶えず変化するデータ間で遅延関係を保持する。
【００２１】
代替的に、「遅延ライン」は、例えば、画像処理演算のように、時間的ではなく、空間的に変化する状況で実現することが可能であり、画像処理演算では、「前」は、画像内である方向によって規定されるような空間的な前方に相当する。
【００２２】
このような遅延インデックス型ポインタレジスタの有用性は、次に、以下の例によって説明される。
【００２３】
アプリケーション１：適応フィルタのエラー待ち時間の補償
遅延インデックス型データパスレジスタ（ＲＤ＿ｘ）は、適応ＦＩＲフィルタ用のタップ遅延ラインのプログラミングを簡単化するため使用できる。特に、最小平均二乗（ＬＭＳ）アルゴリズムを検討する。フィルタリング式は、
【数１】
2005513643.tif 000002
【００２４】
によって与えられ、ここで、ｘｎはフィルタ状態であり、ｃｎはフィルタ係数である。フィルタ係数は次式
【数２】
2005513643.tif 000003
【００２５】
に従って更新され、ここで、μは定数であり、
【数３】
2005513643.tif 000004
【００２６】
は、先行のフィルタ計算から計算された、フィルタ処理後の出力のエラーである。図５には、チャネル等化器に使用されたこのようなフィルタが示されている。実際に、所与のサンプル「Ｘｎ」が適応フィルタ５１０の入力に現れるときと、エラー
【数４】
2005513643.tif 000005
【００２７】
が計算され、適応ユニット５２０で利用できるようになるときとの間に、入力サンプル周期の数に関して測定可能である有限の待ち時間が存在する。このフィルタ更新待ち時間が１サンプル周期以上であるならば、更新の式は、Ｘｎ−ｄのような同等に遅延した状態値ｘを使用するため修正することが必要であり、ここで、ｄは適切な遅延である。
【００２８】
適応フィルタがアレイプロセッサ上に実現され、ＦＩＲの単一タップがアレイの一のセルにマップされた場合、フィルタ更新待ち時間は、新たに計算されたエラーがセルに到達したときと、フィルタタップ出力がセル内で計算されたときとの間の差であって、入力データサンプリング周期で測定された差である。遅延した状態を取り入れるため、セルは遅延バッファを必要とする。この遅延バッファは、前述のように既存の内部レジスタの部分集合から構成され、各要素は、ＲＩ［（ＲＤ＿０）］に記憶された、最も直前に到達したローカル状態ｄ＝０に対する相対的な遅延によってアドレス指定される。例えば、待ち時間を３とし、係数Ｃｎ＋がレジスタＲＩ＿５に格納され、エラーがＲＩ＿４に格納されているとすると、現在状態Ｘｎは、ＲＩ［ＲＤ＿０］に格納することができる。フィルタ更新式を実現するため、セルは、遅延限界をｒｌｉｍｉｔ＝３としてプログラムされ、更新式は、ＲＩ＿５＝ＲＩ＿５＋ＲＩ＿４＊ＲＩ［ＲＤ＿３］になる。遅延ラインのレジスタ内容は、データサンプル周期ごとに、自動的にシフトされるので、これ以上のデータの移動は不要である。
【００２９】
プロセッサは、ＲＩ［ＲＤ＿Ｘ］のようなＲＩ＿Ｘタイプの命令のオペランドを自動的に解釈するようにプログラムされる。したがって、ユーザは、ポインタレジスタのデータレジスタへのマッピングを全く関知する必要がない。その結果、以下の例では、命令は、
ＲＩ＿Ｘ  オペランド
という形で例示され、プロセッサはこれらをＲＩ［ＲＤ＿Ｘ］  オペランドへ自動的に変換するようにプログラムされていることがわかる。
【００３０】
アプリケーション２：プログラマブル補間フィルタの効率的な実現
補間フィルタはマルチレートフィルタであり、その出力レートは入力データレートの倍数である。頻繁に使用されるケースでは、この倍数は整数である。このような補間フィルタは、式（１）を実現するが、入力シーケンスｘは、実際には間に零が詰められた入力データである。例えば、補間倍数が３であるならば、入力データストリーム６０１は、フィルタ６０２を適用する前に、データサンプルの全てのペアの間に２個の零を挿入することにより修正される。３個のデータ値のうちの２個が零であるので、あらゆる時点で、フィルタタップの３分の１だけが非零出力を生成する。ポリフェーズフィルタは、零出力タップの導入を回避するため、この事実を利用する。これに関するより詳しい説明のためには、ＰｒｏａｋｉｓとＭａｎｏｌａｋｉｓ著の”デジタル信号処理入門（Introduction to Digital Signal Processing）”（マクミラン（ＭａｃＭｉｌｌａｎ）出版社、ニューヨーク、１９８８年）、ISBN:0-02-396810-9、pp.662-670とpp.667-668をそれぞれ参照せよ。
【００３１】
図６は、補間倍数３の補間フィルタとして使用されるポリフェーズフィルタの動作を示す図である。この場合、式（１）は、共通の入力をとり、出力が時間的に多重化される３個のフィルタとして実現される。フィルタタップのセルへのマッピングも同図に示されている。遅延限界レジスタｒｌｉｍｉｔは、例えば、２にするための専用命令を用いて、２になるようにプログラムされる。係数０、１および２は、それぞれ、ＲＩ＿０、ＲＩ＿１およびＲＩ＿２に格納される。このように、係数は、遅延アドレス指定される連続したレジスタに格納される。コントローラプログラムは、データサンプル周期ごとに、３回のループを実行する。セルの入力データがＲＩ＿３に格納されるとする。このとき、ＦＩＲタップは、命令ＲＩ＿４＝ＲＩ＿３＊ＲＩ＿２によってモデル化することができ、遅延アドレス指定が実施されるので、第１のプログラムサイクル中にＲＩ＿２は係数Ｃ０を有し、第２のサイクル中にＲＩ＿２は係数Ｃ１を有し、第３のサイクルでＲＩ＿２は係数Ｃ２を有する。これは、第１のサイクルでＨ１  ６０５を実現し、第２のサイクルでＨ２  ６０６を実現し、第３のサイクルでＨ３  ６０７を実現するため、アレイ全体が再構成されることと等価である。各プログラムサイクルにおけるフィルタ出力は、補間フィルタ出力に対応し、これにより、出力マルチプレクサを本質的に実現する。この状態は、フィルタ間で共有され、９タップフィルタおよび補間係数３に対し必要な状態は３状態だけであることに注意する必要がある。
【００３２】
アプリケーション３：プログラマブルデシメーションフィルタの効率的な実現
デシメーションフィルタは、ちょうど二重の補間フィルタである。このようなデシメーションフィルタは図７に示されている。デシメーション係数３  ７１０の場合、フィルタリング後の３個の出力サンプルのうちの２個は無視される。これは、無視されたフィルタ出力が最初の場所で計算されるべきではないことを意味する。この構造は、図６に示された補間器のフロー図を単に逆転することによって得ることができ、これにより、図７に示された構造が得られる。しかし、図６の補間構造とは異なり、状態は共有されない。システムに本来的に備わっている二つの出力遅延は、図７に７２０および７３０として示されている。独立した状態レジスタを保持するため、同じポインタレジスタＲＤ＿Ｘによってアドレス指定された第２の遅延アドレス指定型バッファが必要である。このようなシステムの例示的な実施形態が図８に示されている。二つの遅延アドレス指定型レジスタバッファは、ロックステップでアドレス指定され、係数と状態の対応したペアをフェッチする。
【００３３】
このことを例示するため、二つの遅延アドレス指定型レジスタバッファにＲＩ０＿Ｘ  ８１０およびＲＩ１＿Ｘ  ８２０と呼ぶ。係数はＲＩ０＿Ｘ  ８１０に格納され、特に、係数３のデシメーションの例では、上述のように、ＲＩ０＿０はＣ０であり、ＲＩ０＿１はＣ１であり、ＲＩ＿２はＣ２であるとする。入力データはＲＩ１＿Ｘ  ８２０に格納されることにする。特に、新しいデータサンプルはＲＩ１＿０に格納されるとすると、ＲＩ１＿０はＸｎであり、ＲＩ１＿１はＸｎ−１であり、ＲＩ１＿２はＸｎ−２である。パラメータｒｌｉｍｉｔは、上記の補間器の場合と同様に、２（モジュロ３）であるとし、遅延ラインを３個の連続した要素で構成する。一般的に、（ｒｌｉｍｉｔ＋１）は一つのセルで計算されるＦＩＲタップの個数である。ＲＩ１＿４＝ＲＩ０＿０＊ＲＩ１＿０のような命令は、ＦＩＲタップ計算をモデル化する。これは、実際に、３つの連続したサイクルでＣ２＊Ｘｎ−２、Ｃ１＊Ｘｎ−１、Ｃ０＊Ｘｎを実施し、時間多重化された出力を生成し、これらは、遅延７２０および７３０を用いて同期させられ、セルの外側で加算される。これは、（図７に関して）第１のサイクルでフィルタＨ３  ７７０を実行し、第２のサイクルでＨ２  ７６０を実行し、第３のサイクルでＨ１  ７５０を実行するように構成されたアレイ全体と等価である。最新のデータＸｎによって上書きされる前のＲＩ１＿０に置かれていた最も旧いデータＸｎ−３は、アレイ内の次のセルへ順送りされる。
【００３４】
本発明は種々の実施形態に関して詳細に説明されているが、様々な変形および変更は本発明の要旨を逸脱することなく当業者によって実行可能であることが認識されるべきである。例えば、一つ以上のデータレジスタバンクＲＩ＿Ｘは、同じＲＤ＿Ｘポインタレジスタバンクによってインデックス付けすることが可能であり、各データレジスタバンクはロックステップでアドレス指定される。その上、他の実施形態では、データレジスタバンクおよびポインタレジスタバンクは、それぞれ、データサンプルレートとは異なるレートでインクリメントすることができる。したがって、本発明の範囲は、添付の特許請求の範囲だけによって規定されることが意図されている。
【図面の簡単な説明】
【００３５】
【図１】ポインタ変更レジスタアドレッシングの説明図である。
【図１Ａ】図１のデータレジスタに例示的な内容が含まれている図である。
【図２】ポインタ変更レジスタアドレッシングの説明図である。
【図２Ａ】図２のデータレジスタに例示的な内容が含まれている図である。
【図３】本発明による遅延インデックス型レジスタセットの一例を示す図である。
【図４】一つずつシフトした図３のレジスタを示す図である。
【図５】等化器としての適応フィルタの典型的な構成図である。
【図６】補間フィルタのポリフェーズ実施形態を示す図である。
【図７】デシメーションフィルタを示す図である。
【図８】デシメーションフィルタ用の二重レジスタファイルを示す図である。
【図１】
2005513643.tif 000006
【図１Ａ】
2005513643.tif 000007
【図２】
2005513643.tif 000008
【図２Ａ】
2005513643.tif 000009
【図３】
2005513643.tif 000010
【図４】
2005513643.tif 000011
【図５】
2005513643.tif 000012
【図６】
2005513643.tif 000013
【図７】
2005513643.tif 000014
【図８】
2005513643.tif 000015
【国際調査報告】
2005513643.tif 000016
2005513643.tif 000017
2005513643.tif 000018