(57)【要約】      （修正有）【課題】プロセッサに基づくマシンの意思決定を為す能力を、ハードウェアに組み込まれたパイプラインに基づくマシンのナンバークランチング速度と組み合わせることを可能とする新しい計算アーキテクチャを提供する。【解決手段】ピア−ベクトル・マシン４０はホストプロセッサとハードウェアに組み込まれたパイプライン加速器４４とを含む。ホストプロセッサはプログラムに応じてホスト・データを生成し、パイプライン加速器はそのホスト・データからパイプライン・データを生成する。ピア−ベクトル・マシンはプロセッサ及びパイプライン加速器の両方を含むので、プロセッサだけ或は加速器だけを含むマシンよりもより効率的にデータを処理できる。例えば、数学的に集中的な演算を加速器にシフトすることによって、ピア−ベクトル・マシンは、所与のクロック周波数で、プロセッサだけのマシンがデータを処理できる速度を凌ぐ速度でデータを処理できる。【選択図】図３
2011154711.tif 000002
【特許請求の範囲】
【請求項１】
ピア−ベクトルマシンであって、
プロセッサクロックに応答してプログラムインストラクションを実行するように、また該プログラムインストラクションに応答して第１ホストデータを生成するように作動するホストプロセッサと、
前記ホストプロセッサと結合されており、前記プロセッサクロックと異なるパイプラインクロックに応答して作動し、
前記第１ホストデータを受信するように、またプログラムインストラクションを実行することなくハードワイヤパイプラインにより該第１ホストデータから第１パイプラインデータを生成するように作動するパイプライン加速器とを含む、ピア−ベクトルマシン。
【請求項２】
前記ホストプロセッサは、
第２データを受信し、
前記第２データから前記第１ホストデータを生成するように作動する、請求項１記載のピア−ベクトルマシン。
【請求項３】
前記ホストプロセッサは、
前記パイプライン加速器から前記第１パイプラインデータを受信し、
前記第１パイプラインデータを処理するように作動する、請求項１記載のピア−ベクトルマシン。
【請求項４】
前記ホストプロセッサは、
前記パイプライン加速器から前記第１パイプラインデータを受信し、
前記第１パイプラインデータから前記第１ホストデータを生成するように作動する、請求項１記載のピア−ベクトルマシン。
【請求項５】
前記ホストプロセッサと前記パイプライン加速器とに結合しており、第１メモリ区分を有するインターフェースメモリを含んでおり、
前記ホストプロセッサは、
前記第１メモリ区分に前記第１ホストデータを記憶させ、
前記第１ホストデータを前記第１メモリ区分から前記パイプライン加速器に提供するように作動する、請求項１記載のピア−ベクルマシン。
【請求項６】
前記ホストプロセッサと前記パイプライン加速器とに結合しており、第１メモリ区分と第２メモリ区分とを有するインターフェースメモリを含んでおり、
前記ホストプロセッサは、
前記第１メモリ区分に前記第１ホストデータを記憶させ、
前記第１メモリ区分から前記パイプライン加速器に前記第１ホストデータを提供し、
前記パイプライン加速器から前記第１パイプラインデータを受信し、
前記第２メモリ区分に前記第１パイプラインデータを記憶させ、
前記第２メモリ区分から前記ホストプロセッサまで前記第１パイプラインデータを検索し、
前記第１パイプラインデータを処理するように作動する、請求項１記載のピア−ベクトルマシン。
【請求項７】
前記ホストプロセッサは前記パイプライン加速器を構成するように作動する、請求項１記載のピア−ベクトルマシン。
【請求項８】
前記パイプライン加速器はプログラム可能論理集積回路を含んでいる、請求項１記載のピア−ベクトルマシン。
【請求項９】
ピア−ベクトルマシンであって、
パイプラインクロックに応答して、プログラムインストラクションを実行せずにハードワイヤパイプラインにより第１パイプラインデータを生成するように作動するパイプライン加速器と、
前記パイプライン加速器と結合されており、前記パイプラインクロックと異なるプロセッサクロックに応答して、プログラムインストラクションを実行するように作動し、該プログラムインストラクションに応じて第１パイプラインデータを受信するように、また該第１パイプラインデータから第１ホストデータを生成するように作動する前記ホストプロセッサとを含む、ピア−ベクトルマシン。
【請求項１０】
前記パイプライン加速器は、
第２データを受信し、
前記第２データから前記第１パイプラインデータを生成するように作動する、請求項９記載のピア−ベクトルマシン。
【請求項１１】
前記パイプライン加速器は、
前記ホストプロセッサから前記第１ホストデータを受信し、
前記第１ホストデータを処理するように作動する、請求項９記載のピア−ベクトルマシン。
【請求項１２】
前記パイプライン加速器は、
前記ホストプロセッサから前記第１ホストデータを受信し、
前記第１ホストデータから前記第１パイプラインデータを生成するように作動する、請求項９記載のピア−ベクトルマシン。
【請求項１３】
前記パイプライン加速器と前記ホストプロセッサとに結合しており、第１メモリ区分を有するインターフェースメモリを含んでおり、
前記ホストプロセッサは、
前記第１メモリ区分に前記パイプライン加速器からの前記第１パイプラインデータを記憶させ、
前記第１メモリ区分から前記第１パイプラインデータを検索するように作動する、請求項９記載のピア−ベクトルマシン。
【請求項１４】
前記パイプライン加速器と前記ホストプロセッサとに結合しており、第１メモリ区分と第２メモリ区分とを有するインターフェースメモリを含んでおり、
前記ホストプロセッサは、
前記第１メモリ区分に前記パイプライン加速器からの前記第１パイプラインデータを記憶させ、
前記第１メモリ区分から前記第１パイプラインデータを検索し、
前記第２メモリ区分に前記第１ホストデータを記憶させ、
前記第２メモリ区分から前記パイプライン加速器まで前記第１ホストデータを提供するように作動し、
前記パイプライン加速器は前記第２メモリ区分から受信した前記第１ホストデータを処理するように作動する、請求項９記載のピア−ベクトルマシン。
【請求項１５】
前記ホストプロセッサは前記パイプライン加速器を構成するように作動する、請求項９記載のピア−ベクトルマシン。
【請求項１６】
システムであって、
生データを生成するように作動する装置と、
前記装置と結合しており、プロセッサクロックに応答してプログラムインストラクションを実行するように作動し、前記プログラムインストラクションに応じて前記生データからホストデータを生成するように作動するホストプロセッサと、
前記ホストプロセッサと結合しており、前記プロセッサクロックと異なるパイプラインクロックに応答して前記ホストデータを受信するように、またプログラムインストラクションを実行せずに少なくとも一つのハードワイヤパイプラインにより前記ホストデータからパイプラインデータを生成するように作動するパイプライン加速器とを含む、システム。
【請求項１７】
システムであって、
生データを生成するように作動する装置と、
前記装置と結合しており、パイプラインクロックに応答して、プログラムインストラクションを実行せずに少なくとも一つのハードワイヤパイプラインにより前記生データからパイプラインデータを生成するように作動するパイプライン加速器と、
前記パイプライン加速器と結合しており、前記パイプラインクロックと異なるプロセッサクロックに応答して、プログラムインストラクションを実行するように、また前記プログラムインストラクションに応じて前記パイプラインデータを受信するように、前記パイプラインデータからホストデータを生成するように作動する前記ホストプロセッサとを含む、システム。
【請求項１８】
方法であって、
前記ホストプロセッサが、プロセッサクロックに応答してプログラムインストラクションを実行することにより第１ホストデータを生成するステップと、
パイプライン加速器が、前記プロセッサクロックと異なるパイプラインクロックに応答してプログラムインストラクションを実行せずに作動し、第１ホストデータから第１パイプラインデータを生成するステップとを含む、方法。
【請求項１９】
前記ホストプロセッサが生データを受信するステップを含んでおり、
前記第１ホストデータを生成するステップは前記生データから第１ホストデータを生成するステップを含む、請求項１８記載の方法。
【請求項２０】
前記第１ホストデータを生成するステップは、前記ホストプロセッサが前記第１パイプラインデータから前記第１ホストデータを生成するステップを含む、請求項１８記載の方法。
【請求項２１】
前記ホストプロセッサがプログラムインストラクションを実行することによって前記第１パイプラインデータから第２ホストデータを生成するステップを含む、請求項１８記載の方法。
【請求項２２】
前記ホストプロセッサがプログラムインストラクションを実行することによって前記パイプライン加速器を構成するステップを含む、請求項１８記載の方法。
【請求項２３】
方法であって、
パイプライン加速器が、パイプラインクロックに応答してプログラムインストラクションを実行せずに第１パイプラインデータを生成するステップと、
ホストプロセッサが、前記パイプラインクロックと異なるプロセッサクロックに応答し、またプログラムインストラクションを実行することによって前記第１パイプラインデータから第１ホストデータを生成するステップとを含む、方法。
【請求項２４】
前記パイプライン加速器が生データを受信するステップを含んでおり、
前記第１パイプラインデータを生成するステップは前記生データから前記第１パイプラインデータを生成するステップを含む、請求項２３記載の方法。
【請求項２５】
前記第１パイプラインデータを生成するステップは、前記パイプライン加速器が前記第１ホストデータから前記第１パイプラインデータを生成するステップを含む、請求項２３記載の方法。
【請求項２６】
前記パイプライン加速器が前記第１ホストデータから第２パイプラインデータを生成するステップを含む、請求項２３記載の方法。
【請求項２７】
前記ホストプロセッサがプログラムインストラクションを実行することにより前記パイプライン加速器を構成するステップを含む、請求項２３記載の方法。
【請求項２８】
ピア−ベクトルマシンであって、
プロセッサクロックに応答して、プログラムインストラクションを実行するように作動し、該プログラムインストラクションに応じて第１ホストデータを生成するように作動するホストプロセッサと、
前記ホストプロセッサと結合されており、前記プロセッサクロックと異なるパイプラインクロックに応答して、前記第１ホストデータを受信するように、またプログラムインストラクションに応じることなくハードワイヤパイプラインにより該第１ホストデータから第１パイプラインデータを生成するように作動するパイプライン加速器とを含む、ピア−ベクトルマシン。
【請求項２９】
ピア−ベクトルマシンであって、
パイプラインクロックに応答して、プログラムインストラクションを実行することなく、少なくとも一つのハードワイヤパイプラインにより第１パイプラインデータを生成するように動作するパイプライン加速器と、
該パイプライン加速器に結合されており、前記パイプラインクロックと異なるプロセッサクロックに応答して、プログラムインストラクションを実行するように動作し、前記プログラムインストラクションに応じて前記第１パイプラインデータを受信するように、前記プログラムインストラクションに応じて前記第１パイプラインデータから第１ホストデータを生成するように、別のプログラムインストラクションを受領することなく動作するホストプロセッサとを含むピア−ベクトルマシン。
【発明の詳細な説明】
【技術分野】
【０００１】
＜優先権の請求＞
この出願は、下記の特許文献１に対する優先権を請求するものであり、引用することでここに合体させる。
【特許文献１】米国仮出願第６０／４２２，５０３号（２００２年１０月３１日出願）
【０００２】
＜関連出願の相互参照＞
この出願は、「改善された計算アーキテクチャを有する計算マシン、関連システム、並びに、方法」と題された下記の特許文献２、「改善された計算アーキテクチャ用パイプライン加速器、関連システム、並びに、方法」と題された下記の特許文献３、「プログラマブル回路、関連計算マシン、並びに、方法」と題された下記の特許文献４、「多数パイプライン・ユニットを有するパイプライン加速器、関連計算マシン、並びに、方法」と題された下記の特許文献５と関連し、これら特許文献は全て２００３年１０月９日に出願され、共通の所有者を有し、引用することでここに合体させる。
【特許文献２】米国出願第１０／６８４，０５３号
【特許文献３】米国出願第１０／６８３，９２９号
【特許文献４】米国出願第１０／６８４，０５７号
【特許文献５】米国出願第１０／６８３，９３２号
【背景技術】
【０００３】
比較的大量のデータを比較的短い期間で処理する通常の計算アーキテクチャは、処理負担を分担する多数の相互接続プロセッサを含む。処理負担を分担することによって、これら多数のプロセッサは、しばしば、所与のクロック周波数で単一プロセッサができるものよりよりも迅速にデータを処理できる。例えば、これらプロセッサの各々はデータの各部分を処理できるか、或は、処理アルゴリズムの各部分を実行できる。
【０００４】
図１は、多数プロセッサ・アーキテクチャを有する従来の計算マシン１０の概略ブロック図である。この計算マシン１０は、マスター・プロセッサ１２と、相互に通信すると共に該マスター・プロセッサとバス１６を介して通信する共同プロセッサ１４1−１４nと、遠隔装置（図１では不図示）から生データを受け取る入力ポート１８と、該遠隔装置に処理データを提供する出力ポート２０とを含む。また、計算マシン１０はマスター・プロセッサ１２に対するメモリ２２と、共同プロセッサ１４1−１４nに対する各メモリ２４1−２４nと、マスター・プロセッサ及び共同プロセッサがバス１６を介して共有するメモリ２６とを含む。メモリ２２はマスター・プロセッサ１２に対するプログラム及び作業メモリの双方の役割を果たし、各メモリ２４1−２４nは各共同メモリ１４1−１４nに対するプログラム及び作業メモリの双方の役割を果たす。共有されたメモリ２６は、マスター・プロセッサ１２及び共同プロセッサ１４がそれらの間でデータを転送すること、ポート１８を介して遠隔装置からデータを転送すること、ポート２０を介して遠隔装置にデータを転送することを可能としている。またマスター・プロセッサ１２及び共同プロセッサ１４は、マシン１０が生データを処理する速度を制御する共通クロック信号を受け取る。
【０００５】
一般に、計算マシン１０は、マスター・プロセッサ１２及び共同プロセッサ１４の間で生データの処理を効果的に分割する。ソナー・アレイ（図５）等の遠隔ソース（図１では不図示）は、ポート１８を介して、生データに対する先入れ先出し（ＦＩＦＯ）バッファ（不図示）として作用する共有メモリ２６の１つの区分に生データをロードする。マスター・プロセッサ１２はバス１６を介してメモリ２６から生データを検索して、マスター・プロセッサ及び共同プロセッサ１４はその生データを処理して、バス１６を介して必要に応じてデータをそれらの間に転送する。マスター・プロセッサ１２はその処理データを共有メモリ２６内に規定された別のＦＩＦＯバッファ（不図示）にロードし、遠隔ソースがポート２０を介してこのＦＩＦＯからその処理データを検索する。
【０００６】
演算例において、計算マシン１０は生データに対するｎ＋１個の各演算を順次実行することによって該生データを処理し、これら演算は一体的に高速フーリエ変換（ＦＦＴ）等の処理アルゴリズムを構成する。より詳細には、マシン１０はマスター・プロセッサ１２及び共同プロセッサ１４からのデータ−処理パイプラインを形成する。クロック信号の所与の周波数で、そうしたパイプラインはしばしばマシン１０が単一プロセッサのみを有するマシンよりも高速に生データを処理することを可能としている。
【０００７】
メモリ２６内における生データＦＩＦＯ（不図示）からの生データ検索後、マスター・
プロセッサ１２はその生データに対して三角関数等の第１番演算を実行する。この演算は第１番結果を生み出し、それをプロセッサ１２がメモリ２６内に規定された第１番結果ＦＩＦＯ（不図示）に記憶する。典型的には、プロセッサ１２はメモリ２２内に記憶されたプログラムを実行し、そのプログラムの制御の下で上述した動作を実行する。プロセッサ１２はメモリ２２を作業メモリとしても使用し得て、当該プロセッサが第１番演算の中間期間に生成するデータを一時的に記憶する。
【０００８】
次に、メモリ２６内における第１番結果ＦＩＦＯ（不図示）からの第１番結果検索後、共同プロセッサ１４1はその第１番結果に対して対数関数等の第２番演算を実行する。この第２番演算は第２番結果を生み出し、それを共同プロセッサ１４1がメモリ２６内に規定された第２番結果ＦＩＦＯ（不図示）に記憶する。典型的には、共同プロセッサ１４1はメモリ２４1内に記憶されたプログラムを実行し、そのプログラムの制御の下で上述した動作を実行する。共同プロセッサ１４1はメモリ２４1を作業メモリとしても使用し得て、当該共同プロセッサが第２番演算の中間期間に生成するデータを一時的に記憶する。
【０００９】
次に共同プロセッサ２４2−２４nは、共同プロセッサ２４1に対して先に議論されたものと同様に、（第２番結果−第（ｎ−１）番）結果に対して（第３番演算−第ｎ番）演算を順次実行する。
【００１０】
共同プロセッサ２４nによって実行される第ｎ番演算は最終結果、即ち処理データを生み出す。共同プロセッサ２４nはその処理データをメモリ２６内に規定された処理データＦＩＦＯ（不図示）内にロードし、遠隔装置（図１では不図示）がこのＦＩＦＯからその処理データを検索する。
【００１１】
マスター・プロセッサ１２及び共同プロセッサ１４は処理アルゴリズムの種々の演算を同時に実行するので、計算マシン１０は、しばしば、種々の演算を順次実行する単一プロセッサを有する計算マシンよりも生データを高速に処理することができる。詳細には、単一プロセッサは、生データから成る先行集合に対する全（ｎ＋１）個の演算を実行するまで、生データから成る新しい集合を検索できない。しかし、以上に議論したパイプライン技術を用いて、マスター・プロセッサ１２は第１演算だけを実行後に生データから成る新しい集合を検索できる。結果として、所与のクロック周波数でこのパイプライン技術は、単一プロセッサ・マシン（図１では不図示）と比較して約ｎ＋１倍だけマシン１０が生データを処理する速度を増大することができる。
【００１２】
代替的には、計算マシン１０は、生データに対するＦＦＴ等の処理アルゴリズムの（ｎ＋１）例を同時に実行することによって該生データを並列して処理し得る。即ち、もしそのアルゴリズムが先行する例において先に記載されたような（ｎ＋１）個の順次演算を含めば、マスター・プロセッサ１２及び共同プロセッサ１４の各々は生データからそれぞれが成る各集合に対して、順次、全（ｎ＋１）個の演算を実行する。その結果として、所与のクロック周波数で、先のパイプライン技術と同様のこの並列処理技術は、単一プロセッサ・マシン（図１では不図示）と比較して約ｎ＋１倍だけマシン１０が生データを処理する速度を増大することができる。
【００１３】
残念ながら、計算マシン１０は単一プロセッサ・計算マシン（図１では不図示）と比べてより迅速にデータを処理できるが、マシン１０のデータ処理速度はしばしばプロセッサ・クロックの周波数より非常に小さい。詳細には、計算マシン１０のデータ処理速度はマスター・プロセッサ１２及び共同プロセッサ１４がデータ処理するのに必要な時間によって制限される。簡略化のため、この速度制限の例はマスター・プロセッサ１２と連携して議論されているが、この議論は共同プロセッサ１４にも適用されることを理解して頂きたい。先に議論されたように、マスター・プロセッサ１２は所望の方式でデータを操作すべくプロセッサを制御するプログラムを実行する。このプログラムはプロセッサ１２が実行する複数の命令から成るシーケンスを含む。残念ながら、プロセッサ１２は典型的には単一命令を実行するために多数のクロック・サイクルを必要とし、そしてしばしばデータの単一値を処理すべく多数の命令を実行しなければならない。例えば、プロセッサ１２が第１データ値Ａ（不図示）を第２データ値Ｂ（不図示）で乗算することを仮定する。第１クロック・サイクル中、プロセッサ１２はメモリ２２から乗算命令を検索する。第２及び第３クロック・サイクル中、プロセッサ１２はメモリ２６からＡ及びＢをそれぞれ検索する。第４クロック・サイクル中、プロセッサ１２はＡ及びＢを乗算し、そして第５クロック・サイクル中に結果としての積をメモリ２２或は２６に記憶するか、或は、その結果としての積を遠隔装置（不図示）に提供する。これは最良ケースのシナリオであり、その理由は多くの場合にプロセッサ１２はカウンタの初期化及び閉鎖等のオーバーヘッド・タスクに対して付加的なクロック・サイクルを必要とするからである。それ故に、よくてもプロセッサ１２はＡ及びＢを処理すべく５クロック・サイクルを必要とするか、或は、１データ値当たり平均２．５クロック・サイクルを必要とする。
【００１４】
結果として、計算マシン１０がデータを処理する速度は、しばしば、マスター・プロセッサ１２及び共同プロセッサ１４を駆動するクロックの周波数より非常に低い。例えば、もしプロセッサ１２は１．０ギガヘルツ（ＧＨｚ）でクロックされるが、１データ値当たり平均２．５クロック・サイクルを必要とすれば、効果的なデータ処理速度は（１．０ＧＨｚ）／２．５＝０．４ＧＨｚと同等である。この効果的なデータ処理速度は、しばしば、１秒当たり演算数の単位で特徴付けされる。それ故に、この例において、１．０ＧＨｚのクロック速度で、プロセッサ１２は０．４ギガ演算数／秒（Ｇｏｐｓ）で使用限界が定められる。
【００１５】
図２は、所与クロック周波数で且つしばしば該パイプラインがクロックされる速度と略同一速度で、プロセッサが可能であるよりは高速で典型的にはデータを処理できるハードウェアに組み込まれたデータ・パイプライン３０のブロック線図である。パイプライン３０は、プログラム命令を実行することなく、各データに対する各演算を各々が実行する演算子回路３２1−３２nを含む。即ち、所望の演算は回路３２内に「書き込み」が為されて、それがプログラム命令の必要性なしに自動的にその演算を具現化するように為す。プログラム命令の実行と関連されたオーバーヘッドを減ずることによって、パイプライン３０は所与のクロック周波数でプロセッサが可能であるよりは単位秒当たりより多くの演算を典型的には実行する。
【００１６】
例えば、パイプライン３０は所与のクロック周波数でプロセッサが可能であるよりは高速で以下の数式１をしばしば解くことができる。
Ｙ（ｘk）＝（５ｘk＋３）２xk
ここで、ｘkは複数の生データ値から成るシーケンスを表す。この例において、演算子回路３２1は５ｘkを計算する乗算器であり、回路３２2は５ｘk＋３を計算する加算器であり、そして回路３２n（ｎ＝３）は（５ｘk＋３）２xkを計算する乗算器である。
【００１７】
第１クロック・サイクルｋ＝１中、回路３２1はデータ値ｘ1を受け取って、それを５で乗じて、５ｘ1を生成する。
【００１８】
第２クロック・サイクルｋ＝２中、回路３２2は回路３２1から５ｘ1を受け取って、３を加えて、５ｘ1＋３を生成する。またこの第２クロック・サイクル中に回路３２1は５ｘ2を生成する。
【００１９】
第３クロック・サイクルｋ＝３中、回路３２3は回路３２2から５ｘ1＋３を受け取って、２x1で乗じて（効果としては、ｘ1だけ５ｘ1＋３を右シフトする）、第１結果（５ｘ1＋３）２x1を生成する。またこの第３クロック・サイクル中に回路３２1は５ｘ3を生成し、回路３２2は５ｘ2＋３を生成する。
【００２０】
このようにしてパイプライン３０は、全ての生データ値が処理されるまで、引き続く生データ値ｘkの処理を続行する。
【００２１】
結果として、生データ値ｘ1の受け取り後の２つのクロック・サイクルの遅延、即ち、この遅延はパイプライン３０の待ち時間としばしば呼称され、パイプラインは結果（５ｘ1＋３）２x1を生成し、その後、各クロック・サイクル毎に１つの結果を生成する。
【００２２】
待ち時間を無視して、パイプライン３０はこうしてクロック速度と同等のデータ処理速度を有する。比較して、マスター・プロセッサ１２及び共同プロセッサ１４（図１）が先の例におけるようにクロック速度の０．４倍であるデータ処理速度を有すると仮定すれば、パイプライン３０は、所与のクロック速度で、計算マシン１０（図１）よりも２．５倍高速でデータを処理できる。
【００２３】
更に図２で参照されるように、設計者はフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）等のプログラマブル・ロジックＩＣ（ＰＬＩＣ）にパイプライン３０を具現化することを選ぶ可能性があり、その理由はＰＬＩＣが特殊用途ＩＣ（ＡＳＩＣ）が為すよりも多くの設計及び変更の柔軟性を許容するからである。ＰＬＩＣ内にハードウェアに組み込まれた接続を構成するため、設計者はＰＬＩＣ内に配置された相互接続構成レジスタを単に所定バイナリー状態に設定する。全てのこうしたバイナリー状態の組み合わせはしばしば「ファームウェア」と呼称される。典型的には、設計者はこのファームウェアをＰＬＩＣと結合された不揮発性メモリ（図２では不図示）内にロードする。ＰＬＩＣを「ターンオン」すると、それはファームウェアをそのメモリから相互接続構成レジスタにダウンロードする。それ故に、ＰＬＩＣの機能を変更すべく、設計者は単にそのファームウェアを変更して、ＰＬＩＣがその変更されたファームウェアを相互接続構成レジスタにダウンロードすることを可能とする。ファームウェアを単に変更することによってＰＬＩＣを変更する能力は、モデル作成段階中や「フィールド内」にパイプライン３０をアップグレードするために特に有用である。
【００２４】
残念ながら、ハードウェアに組み込まれたパイプライン３０は、典型的には、全てのアルゴリズムを実行することができるわけではなく、特に、重要な意思決定を引き起こすアルゴリズムは実行できない。プロセッサは、典型的には、意思決定命令（例えば、「もしＡであれば、Ｂへ行き、またＣへ行く」のような、条件命令）を、比肩する長さの演算命令（例えば、「Ａ＋Ｂ」）を実行できる程に高速に実行できる。しかしパイプライン３０は、比較的単純な決定（例えば、「Ａ＞Ｂ？」）を為し得るが、典型的には比較的複雑な決定（例えば、「もしＡであれば、Ｂへ行き、またＣへ行く」）を実行することができない。そして、そうした複雑な決定を実行すべくパイプライン３０を設計できるが、必要とされる回路のサイズ及び複雑性はしばしばそうした設計を非現実的に為し、特にアルゴリズムが多数の種々の複雑な決定を含む場合にそうである。
【００２５】
結果として、プロセッサは典型的には重要な意思決定を必要とする用途において使用され、ハードウェアに組み込まれたパイプラインは殆ど意思決定が為されないか或は意思決定されない「ナンバークランチング（数値データ処理）」用途に典型的には限定される。
【００２６】
更には、下記に議論されるように、典型的には、特にパイプライン３０が多数のＰＬＩＣを含む場合、図２のパイプライン３０等のハードウェアに組み込まれたパイプラインを設計／変更するよりも、図１の計算マシン１０等のプロセッサに基づく計算マシンを設計／変更することが非常に易しい。
【００２７】
プロセッサ及びそれらの周辺機器（例えば、メモリ）等の計算構成要素は、典型的には、プロセッサに基づく計算マシンを形成すべくそれら構成要素の相互接続を補助する工業規格通信インターフェースを含む。
【００２８】
典型的には、規格通信インターフェースは２つの層、即ち、物理層及びサービス層を含む。
【００２９】
物理層は、回路とこの回路のインターフェース及び動作パラメータを形成する対応回路相互接続とを含む。例えば、物理層はそれら構成要素を１つのバスに接続するピンと、それらのピンから受け取ったデータをラッチするバッファと、信号をそれらピンに駆動するドライバとを含む。動作パラメータは、ピンが受け取るデータ信号の許容可能電圧範囲と、データの書き込み及び読み取りのための信号タイミングと、動作の支援されたモード（例えば、バーストモード、ページモード）とを含む。従来の物理層はトランジスタ−トランジスタ論理（ＴＴＬ）及びＲＡＭＢＵＳを含む。
【００３０】
サービス層は、計算構成要素のデータ転送のためのプロトコルを含む。このプロトコルはデータのフォーマットと、構成要素によるフォーマット済みデータの送受信の方式とを含む。従来の通信プロトコルは、ファイル転送プロトコル（ＦＴＰ）及びＴＣＰ／ＩＰ（拡張）を含む。
【００３１】
結果として、製造業者やその他は工業規格通信インターフェースを有する計算構成要素を典型的には設定するので、そうした構成要素のインターフェースを典型的には設計できて、それを他の計算構成要素と比較的少ない労力で相互接続することができる。これは、計算マシンの他の部分の設計に設計者自信の時間を殆ど費やすことを可能として、各種構成要素を追加或は除去することによってそのマシンを変更することを可能としている。
【００３２】
工業規格通信インターフェースを支援する計算構成要素を設計することは、設計ライブラリから既存の物理層を用いることによって設計時間を節約することを可能としている。これは、設計者が構成要素を既製の計算構成要素と容易にインターフェースすることを保証するものでもある。
【００３３】
そして、共通した工業規格通信インターフェースを支援する計算構成要素を用いる計算マシンを設計することは、設計者がそれら構成要素を少しの時間及び労力で相互接続することを可能としている。それら構成要素は共通インターフェースを支援するので、設計者はそれらをシステム・バスを介して少しの設計労力で相互接続することができる。そして、その支援されたインターフェースは工業規格であるので、マシンを容易に変更することができる。例えば、システム設計が進化するに伴って種々の構成要素及び周辺機器をマシンに追加することができるか、或は、テクノロジーが進化するに伴って次世代の構成要素を追加／設計することが可能である。更には、構成要素が通常の工業規格サービス層を支援するので、計算マシンのソフトウェアに対応するプロトコルを具現化する既存のソフトウェア・モジュールを組み込むことができる。それ故に、インターフェース設計が本質的には既に整っているので少しの労力で構成要素をインターフェースでき、よって、マシンに所望の機能を実行させるマシンの各種部分（例えばソフトウェア）の設計に集中することができる。
【００３４】
しかし残念ながら、図２のパイプライン３０等のハードウェアに組み込まれたパイプラインを形成すべく、使用されるＰＬＩＣ等の各種構成要素に対する既知の工業規格通信層が全くない。
【００３５】
結果として、多数のＰＬＩＣを有するパイプラインを設計すべく、多大な時間を費やし、「ゼロから」種々のＰＬＩＣの間の通信層を設計し且つデバッグする多大な労力を行使する。典型的には、そうしたその場限りのサービス層は種々のＰＬＩＣ間で転送されるデータのパラメータに依存する。同じように、プロセッサとインターフェースするパイプラインを設計すべく、ゼロからのパイプライン及びプロセッサの間の通信層の設計及びデバッグに関して多大な時間を費やし且つ多大な労力を行使する必要がある。
【００３６】
同様に、そうしたパイプラインをＰＬＩＣを該パイプラインに追加することによって変更すべく、典型的には、その追加されたＰＬＩＣと既存のＰＬＩＣとの間の通信層の設計及びデバッグに関して多大な時間を費やし且つ多大な労力を行使する。同じように、プロセッサを追加することによってパイプラインを変更すべく、或は、パイプラインを追加することによって計算マシンを変更すべく、パイプライン及びプロセッサの間の通信層の設計及びデバッグに関して多大な時間を費やし且つ多大な労力を行使しなければならいであろう。
【００３７】
結果として、図１及び図２で参照されるように、多数のＰＬＩＣをインターフェースすることとプロセッサをパイプラインにインターフェースすることとの難しさのため、計算マシンを設計する際に多大な妥協を為すことがしばしば強いられる。例えば、プロセッサに基づく計算マシンでは、ナンバークランチング速度を、複雑な意思決定を為す能力及び設計／変更の柔軟性と交換することを強いられる。逆に、ハードウェアに組み込まれたパイプラインに基づく計算マシンでは、複雑な意思決定を為す能力と設計／変更の柔軟性を、ナンバークランチング速度と交換することを強いられる。更には、多数のＰＬＩＣをインターフェースすることに関する難しさのため、少数のＰＬＩＣよりも多くのＰＬＩＣを有するパイプラインに基づくマシンを設計することはしばしば実際的ではない。その結果、実際的なパイプラインに基づくマシンはしばしば制限された機能しか有さない。そして、プロセッサをＰＬＩＣとインターフェースすることに関する難しさのため、プロセッサを１つのＰＬＩＣより多くのＰＬＩＣにインターフェースすることは実際的ではない。その結果、プロセッサ及びパイプラインを組み合わせることによって獲得される利益は最少となる。
【発明の開示】
【発明が解決しようとする課題】
【００３８】
それ故に、プロセッサに基づくマシンの意思決定を為す能力を、ハードウェアに組み込まれたパイプラインに基づくマシンのナンバークランチング速度と組み合わせることを可能とする新しい計算アーキテクチャに対する要望が生じてきている。
【課題を解決するための手段】
【００３９】
本発明の実施例において、ピア−ベクトル・マシンはホストプロセッサとハードウェアに組み込まれたパイプライン加速器とを含む。ホストプロセッサは、プログラムを実行し、そしてそのプログラムに応じてホスト・データを生成し、パイプライン加速器はそのホスト・データからパイプライン・データを生成する。
【００４０】
本発明の別の実施例に従えば、パイプライン加速器はパイプライン・データを生成し、ホストプロセッサはそのパイプライン・データからホスト・データを生成する。
【００４１】
ピア−ベクトル・マシンはプロセッサとハードウェアに組み込まれたパイプライン加速器との両方を含むので、しばしば、プロセッサだけ或はハードウェアに組み込まれたパイプラインだけを含む計算マシンよりもデータをより効率的に処理できる。例えば、加速器が数学的に集中的な演算を実行する一方で、ホストプロセッサが意思決定及び数学的に非集中的な演算を実行するようにピア−ベクトル・マシンを設計できる。数学的に集中的な演算を加速器にシフトすることによって、ピア−ベクトル・マシンは、しばしば、所与のクロック周波数でプロセッサだけのマシンがデータを処理する速度を凌ぐ速度でそのデータを処理できる。
【発明を実施するための最良の形態】
【００４２】
図３は、本発明の一実施例に従ったピア−ベクトル・アーキテクチャを有する計算マシン４０の概略ブロック線図である。ホストプロセッサ４２に加えて、ピア−ベクトル・マシン４０はパイプライン加速器４４を含み、それがデータ処理の少なくとも一部を実行して、図１の計算マシン１０における共同プロセッサ１４の列と効果的に置き換わる。それ故に、ホストプロセッサ４２及び加速器４４はデータ・ベクトルを前後に転送できる「ピア」である。加速器４４はプログラム命令を実行しないので、所与のクロック周波数で共同プロセッサの列ができるものよりも著しく高速にデータに対して数学的に集中的な演算を典型的には実行する。結果として、プロセッサ４２の意思決定能力と加速器４４のナンバークランチング能力とを組み合わせることによって、マシン４０はマシン１０等の従来の計算マシンと同一の能力を有するが、しばしばそれよりもデータをより高速に処理することができる。更には、先行して引用された「改善された計算アーキテクチャを有する計算マシン、関連システム、並びに、方法」と題された特許文献２や「改善された計算アーキテクチャ用パイプライン加速器、関連システム、並びに、方法」と題された特許文献３で議論されているように、加速器４４にホストプロセッサ４２と同一の通信層を設けることは、特にその通信層が工業規格である場合、マシン４０の設計及び変更を補助する。そして、加速器４４が多数の構成要素（例えばＰＬＩＣ）を含む場合、これら構成要素にこの同一の通信層を設けることは、特にその通信層が工業規格である場合、加速器の設計及び変更を補助する。更にはマシン４０も、以下に説明されると共に先行して引用された特許出願に説明されているように、他の長所等を提供し得る。
【００４３】
ホストプロセッサ４２及びパイプライン加速器４４に加えて、ピア−ベクトル計算マシン４０はプロセッサ・メモリ４６、インターフェース・メモリ４８、バス５０、ファームウェア・メモリ５２、任意選択的な生データ入力ポート５４，５６、処理データ出力ポート５８，６０、並びに、任意選択的なルータ６１を含む。
【００４４】
ホストプロセッサ４２は処理ユニット６２及びメッセージ・ハンドラー６４を含み、プロセッサ・メモリ４６は処理ユニット・メモリ６６及びハンドラー・メモリ６８を含み、それらがプロセッサ・ユニット及びメッセージ・ハンドラーに対するプログラム及び作業の両メモリとしてそれぞれ役立っている。プロセッサ・メモリ４６も加速器コンフィギュレーション・レジストリ７０及びメッセージ・コンフィギュレーション・レジストリ７２を含み、それらが、ホストプロセッサ４２に加速器４４の機能を構成させると共にメッセージ・ハンドラー６４が生成するメッセージの構造とを構成させる各コンフィギュレーション・データを記憶する。
【００４５】
パイプライン加速器４４は少なくとも１つのＰＬＩＣ（不図示）上に配置されると共にハードウェアに組み込まれたパイプライン７４1−７４nを含み、それらがプログラム命令を実行することなしに各データを処理する。ファームウェア・メモリ５２は加速器４４に対するコンフィギュレーション・ファームウェアを記憶する。もし加速器４４が多数のＰＬＩＣ上に配置されれば、それらＰＬＩＣ及びそれらの各ファームウェア・メモリは多数の回路ボード上、即ちドーターカード（不図示）上に配置され得る。加速器４４及びドーターカードは、先行して引用された「改善された計算アーキテクチャ用パイプライン加速器、関連システム、並びに、方法」と題された特許文献３や「多数パイプライン・ユニットを有するパイプライン加速器、関連計算マシン、並びに、方法」と題された特許文献５に更に議論されている。代替的には、加速器４４は少なくとも１つのＡＳＩＣ上に配置され得て、よって構成不可能である内部相互接続を有し得る。この代替例において、マシン４０はファームウェア・メモリ５２を省略し得る。更には、加速器４４が多数のパイプライン７４を含むようにも示されているが、単一のパイプラインだけを含んでもよい。
【００４６】
更に図３で参照されるように、ピア−ベクトル・マシン４０の動作は本発明の実施例に従って以下に議論される。
【００４７】
＜ピア−ベクトル・マシンの構成＞
ピア−ベクトル・マシン４０が先ず起動されると、処理ユニット６２はメッセージ・ハンドラー６４及びパイプライン加速器４４（加速器が構成可能である場合）を構成して、マシンが所望アルゴリズムを実行するように為す。詳細には処理ユニット６２は、以下で議論されるように、メモリ６６に記憶されると共に、処理ユニットにメッセージ・ハンドラー６４及び加速器４４を構成させるホスト・アプリケーション・プログラムを実行する。
【００４８】
メッセージ・ハンドラー６４を構成すべく、処理ユニット６２はレジストリ７２からメッセージ・フォーマット情報を検索し、そのフォーマット情報をメッセージ・ハンドラーに提供して、該メッセージ・ハンドラーはこの情報をメモリ６０に記憶する。マシン４０が以下に議論されるようにデータを処理すると、メッセージ・ハンドラー６４はそのフォーマット情報を用いて所望のフォーマットを有するデータ・メッセージを生成し解読する。一実施例において、フォーマット情報は拡張可能マークアップ言語（ＸＭＬ）で書かれるが、他の言語或はデータ・フォーマットでも書かれ得る。処理ユニット６２はピア−ベクトル・マシン４０が起動されるたびにメッセージ・ハンドラー６４を構成するので、単にレジストリ７２に記憶されたフォーマット情報を変更することによってメッセージ・フォーマットを変更することができる。代替的には、外部メッセージ・コンフィギュレーション・ライブラリ（不図示）が多数のメッセージ・フォーマットに対する情報を記憶し得て、そしてホスト・アプリケーションを設計及び／或は変更し得て、処理ユニット６２がライブラリの選択された部分からレジストリ７２を更新してから、更新されたレジストリからメッセージ・ハンドラー６４に所望フォーマット情報をダウンロードするように為す。メッセージ・フォーマットとメッセージを生成して解読することとは、以下に更に議論されると共に、先行して引用された「改善された計算アーキテクチャを有する計算マシン、関連システム、並びに、方法」と題された特許文献２に更に議論されている。
【００４９】
同様に、パイプライン加速器４４の相互接続レイアウトを構成すべく、処理ユニット６２はレジストリ７０からコンフィギュレーション・ファームウェアを検索し、そのファームウェアをメッセージ・ハンドラー６４及びバス５０を介してメモリ５２にダウンロードする。次いで加速器４４は、メモリ５２からその相互接続コンフィギュレーション・レジスタ（不図示）にファームウェアをダウンロードすることによってそれ自体を構成する。処理ユニット６２がピア−ベクトル・マシン４０が起動されるたびに加速器４４を構成するので、単にレジストリ７０に記憶されたファームウェアを変更することによって、加速器４４の相互接続レイアウト（そして、それ故その機能と）を変更することができる。代替的には、外部加速器コンフィギュレーション・ライブラリ（不図示）は加速器４４の多数のコンフィギュレーションに対するファームウェアを記憶し得て、そしてホスト・アプリケーションを設計及び／或は変更し得て、処理ユニット６２がライブラリの選択された部分からレジストリ７０を更新してから、更新されたレジストリからメモリ５２に所望ファームウェアをダウンロードするように為す。更には、外部ライブラリ或はレジストリ７０は加速器４４の種々の部分及び／或は機能を規定するファームウェア・モジュールを記憶し得る。それ故、加速器４４の設計及び／或は変更を補助するために、これらモジュールを使用し得る。加えて、処理ユニット６２はこれらモジュールを使用し得て、マシン４０がデータを処理している間に加速器４４を変更する。加速器４４の相互接続コンフィギュレーションとファームウェア・モジュールとは、先行して引用された「プログラマブル回路、関連計算マシン、並びに、方法」と題された特許文献４に更に議論されている。
【００５０】
処理ユニット６２も、ピア−ベクトル・マシン４０がデータを処理している間にパイプライン加速器４４を「ソフト構成」し得る。即ち、処理ユニット６２は、加速器の相互接続レイアウトを改変することなく、加速器４４の機能を構成し得る。そうしたソフト・コンフィギュレーションは、以下に更に議論されると共に、先行して引用された「改善された計算アーキテクチャ用パイプライン加速器、関連システム、並びに、方法」と題された特許文献３に更に議論されている。
【００５１】
＜ピア−ベクトル・マシンによるデータ処理＞
一般に、ピア−ベクトル・マシン４０はホストプロセッサ４２及びパイプライン加速器４４の間に生データの処理を効果的に分割する。例えば、ホストプロセッサ４２はそのデータと関係する意思決定演算の殆ど或は全てを実行し得て、加速器４４はそのデータに対する数学的に集中的な演算の殆ど或は全てを実行し得る。しかしながらマシン４０は任意の所望の方式でそのデータ処理を分割する。
＜ホストプロセッサの動作＞
一実施例において、ホストプロセッサ４２は、ソナー・アレイ（図５）等の遠隔装置から生データを受信し、その結果としての処理データをその遠隔装置に提供する。
【００５２】
ホストプロセッサ４２は、先ず、遠隔装置から入力ポート５４或はバス５０を介して生データを受信する。ピア−ベクトル・マシン４０はその受信された生データのバッファリングのためのＦＩＦＯ（不図示）を含み得る。
【００５３】
次に、処理ユニット６２はパイプライン加速器４４による処理のための生データを準備する。例えば、ユニット６２は、例えば、生データの何れを加速器４４に送信すべきか、或は、何れのシーケンスでその生データを送信すべきかを決定し得る。或は、ユニット６２は生データを処理し得て、加速器４４に送信するための中間データを生成する。生データの準備は、先行して引用された「改善された計算アーキテクチャを有する計算マシン、関連システム、並びに、方法」と題された特許文献２に更に議論されている。
【００５４】
生データを準備している間、処理ユニット５４は１つ或はそれ以上の「ソフト・コンフィギュレーション」コマンドを生成して、加速器４４の機能を変更もし得る。マシン４０が起動された際に加速器４４の相互接続レイアウトを構成するファームウェアとは異なり、ソフト・コンフィギュレーション・コマンドはその相互接続レイアウトを改変することなしに加速器の機能を制御する。例えば、ソフト・コンフィギュレーション・コマンドは、加速器４４が処理するデータ・ストリングのサイズ（例えば、３２ビット或は６４ビット）を制御し得る。加速器４４のソフト・コンフィギュレーションは、先行して引用された「改善された計算アーキテクチャ用パイプライン加速器、関連システム、並びに、方法」と題された特許文献３に更に議論されている。
【００５５】
次いで処理ユニット６２はその準備されたデータ及び／或はソフト・コンフィギュレーション・コマンド（単数或は複数）をインターフェース・メモリ４８の対応する箇所にロードし、それがユニット６２及び加速器４４の間のＦＩＦＯバッファとして作用する。
【００５６】
次に、メッセージ・ハンドラー６４はインターフェース・メモリ４８から準備されたデータ及び／或はソフトウェア・コマンド（単数或は複数）を検索して、データ及び／或はコマンド（単数或は複数）、並びに、関連情報を含むメッセージ・オブジェクトを生成する。典型的には加速器４４は、データ／コマンド（単数或は複数）及び関連情報（集合的には「情報」）、即ち、ａ）情報の意図された仕向先（例えば、パイプライン７４1）、ｂ）優先順位（例えば、加速器は先行して受信されるデータの前或は後にそのデータを処理すべきか）、ｃ）メッセージ・オブジェクトの長さ或は終端、並びに、ｄ）データの固有例（例えば、一千のセンサから成るアレイからのセンサ信号番号９）を記述する４つの識別子が必要である。この決定を補助すべく、メッセージ・ハンドラー６４は、先に議論されたように、所定のフォーマットを有するメッセージ・オブジェクトを生成する。準備されたデータ／ソフト・コンフィギュレーション・コマンド（単数或は複数）に加えて、メッセージ・オブジェクトは、典型的には、４つの先に記載した識別子を含むと共にオブジェクトが含む情報のタイプを記述する識別子（例えば、データ・コマンド）をも含み得るヘッダーと、データが処理されることになるアルゴリズムとを含む。この後者の識別子は、仕向先パイプライン７４が多数のアルゴリズムを具現化する場合に有用である。ハンドラー６４はインターフェース・メモリ４８からヘッダー情報を検索し得るか、準備されたデータ或はコマンド（単数或は複数）を検索するインターフェース・メモリ内の箇所に基づいてヘッダーを生成し得る。メッセージ・ヘッダーを解読することによって、ルータ６１及び／或は加速器４４はメッセージ・オブジェクト内の情報を所望の仕向先に送ることができ、その仕向先にその情報を所望の順序で処理させ得る。
【００５７】
メッセージ・オブジェクトを生成するための代替実施例が存在する。例えば、各メッセージ・オブジェクトがデータ或はソフト・コンフィギュレーション・コマンドの何れかを含むと説明されているが、単一のメッセージ・オブジェクトはデータと１つ或はそれ以上のコマンドとの両方を含み得る。更には、メッセージ・ハンドラー６４がインターフェース・メモリ４８からデータ及びコマンドを受信すると説明されているが、処理ユニット５４からデータ及びコマンドを直接的に受信し得る。
【００５８】
メッセージ・オブジェクトの生成は、先行して引用された「改善された計算アーキテクチャを有する計算マシン、関連システム、並びに、方法」と題された特許文献２に更に議論されている。
【００５９】
＜パイプライン加速器＞
パイプライン加速器４４はメッセージ・ハンドラー６４からメッセージ・オブジェクトを受信し解読して、そのオブジェクト内のデータ及び／或はコマンドを所望の仕向先に効果的に送る。この技術は、処理ユニット６２及びパイプライン７４によって具現化されたアルゴリズムの数が比較的小さい場合に特に有用であり、よってルータ６１は省略され得る。代替的には、処理ユニット６２或は番号パイプライン７４によって具現化されたアルゴリズムの数が比較的大きい場合、ルータ６１はメッセージ・ハンドラー６４からメッセージ・オブジェクトを受信し解読して、そのオブジェクト内のデータ及び／或はコマンドを加速器４４内の所望の仕向先に効果的に送る。
【００６０】
少数の処理ユニット・アルゴリズム及びパイプライン７４が存在する場合の一実施例において、各パイプラインは、同時に、メッセージ・オブジェクトを受信し、ヘッダーを分析して、それが意図されたメッセージの受取人であるか否かを決定する。もしメッセージ・オブジェクトが特定のパイプライン７４に意図されていれば、そのパイプラインはそのメッセージを解読し、回復されたデータ／コマンド（単数或は複数）を処理する。しかしながら、もしメッセージ・オブジェクトが特定のパイプライン７４に意図されていなければ、そのパイプラインはそのメッセージ・オブジェクトを無視する。例えば、メッセージ・オブジェクトがパイプライン７４1による処理のためのデータを含むと仮定する。それ故に、パイプライン７４1はメッセージ・ヘッダーを分析し、それがそのデータの意図された仕向先であることを決定し、メッセージからデータを回復し、その回復されたデータを処理する。逆に、パイプライン７４2−７４nの各々がメッセージ・ヘッダーを分析し、それがそのデータの意図された仕向先ではないことを決定し、よってそのデータの回復或は処理を為さない。もしメッセージ・オブジェクト内のデータが多数のパイプライン７４に意図されていれば、メッセージ・ハンドラー６４は同一データを含む各メッセージ・オブジェクトから成るシーケンスを、各仕向先パイプラインに対して１つのメッセージで、生成して送信する。代替的には、メッセージ・ハンドラー６４は、仕向先パイプラインの全てを識別するヘッダーを有する単一のメッセージ・オブジェクトを送信することによって、データを仕向先パイプライン７４の全てに同時に送信し得る。メッセージ・オブジェクトからデータ及びソフト・コンフィギュレーション・コマンドを回復することは、先行して引用された「改善された計算アーキテクチャ用パイプライン加速器、関連システム、並びに、方法」と題された特許文献３に更に議論されている。
【００６１】
多数の処理ユニット処理或はパイプライン７４が存在する場合の別の実施例において、各パイプラインはルータ６１からメッセージ・オブジェクトを受信する。ルータ６１がメッセージ・オブジェクトを目標パイプライン７４だけに理想的には送信すべきであるが、その目標パイプラインもヘッダーを分析して、それが意図されたメッセージの受取人であるか否かを決定する。そうした分析は潜在的なメッセージ・ルーチン・エラー、即ち例外を識別する。もしメッセージ・オブジェクトが目標パイプライン７４に意図されていれば、そのパイプラインはそのメッセージを解読し、回復されたデータ／コマンド（単数或は複数）を処理する。しかしながら、もしメッセージ・オブジェクトがその目標パイプライン７４に意図されていなければ、そのパイプラインはそのメッセージ・オブジェクトに対しての処理を無視して、更にルーチン例外が発生したことを示す新メッセージをホストプロセッサ４２に発し得る。ルーチン例外の取り扱いは、先行して引用された「改善された計算アーキテクチャを有する計算マシン、関連システム、並びに、方法」と題された特許文献２に議論されている。
【００６２】
次に、パイプライン加速器４４はメッセージ・オブジェクトから回復された入来データ及び／或はコマンドを処理する。
【００６３】
データに対して、仕向先パイプライン或は複数の仕向先パイプライン７４はデータに対する各演算或は複数演算を実行する。図２と連携して議論されたように、パイプライン７４はプログラム命令を実行しないので、しばしばデータをパイプライン・クロックの周波数と略同一である速度で処理できる。
【００６４】
第１実施例において、単一パイプライン７４は入来データを処理することによって結果としてのデータを生成する。
【００６５】
第２実施例において、多数のパイプライン７４は入来データを順次処理することによって結果としてのデータを生成する。例えば、パイプライン７４は入来データに対して第１演算を実行することによって第１中間データを生成し得る。次に、パイプライン７４2はその第１中間データに対して第２演算を実行することによって第２中間データを生成し得て、等々であり、そのチェーン中の最終パイプライン７４が結果データを生成するまで同様である。
【００６６】
第３実施例において、多数のパイプライン７４は入来データを並列して処理することによって結果としてのデータを生成する。例えば、パイプライン７４1は入来データから成る第１組に対して第１演算を実行することによって結果としてのデータから成る第１組を生成し得る。同時に、パイプライン７４2は入来データから成る第２組に対して第２演算を実行することによって結果としてのデータから成る第２組を生成し得て、等々である。
【００６７】
代替的には、先の３つの実施例の任意の組み合わせに従って、パイプライン７４は入来データから結果としてのデータを生成し得る。例えば、パイプライン７４1は入来データから成る第１組に対して第１演算を実行することによって結果としてのデータから成る第１組を生成し得る。同時に、パイプライン７４2及び７４nは入来データから成る第２組に対して第２及び第３の演算を順次実行することによって結果としてのデータから成る第２組を生成し得る。
【００６８】
先の実施例及び代替実施例の内の任意のものにおいて、単一のパイプライン７４は多数の演算を実行し得る。例えば、パイプライン７４1はデータを受信し得て、その受信データに対して第１演算を実行することによって第１中間データを生成し得て、その第１中間データを一時的に記憶し得て、その第１中間データに対して第２演算を実行することによって第２中間データを生成し得て、等々であり、結果データを生成するまで同様である。パイプライン７４1に第１演算実行から第２演算実行までスイッチさせる等々の多数の技術がある。そうした技術は、先行して引用された「改善された計算アーキテクチャ用パイプライン加速器、関連システム、並びに、方法」（代理人整理番号１９３４−１３−３）と題された特許文献３に議論されている。
【００６９】
ソフト・コンフィギュレーション・コマンドに対して、加速器４４はメッセージ・ヘッダーによって示される対応するソフト・コンフィギュレーション・レジスタ（単数或は複数）（不図示）におけるビットを設定する。先に議論されたように、これらビットを設定することは、典型的には、加速器４４の機能を変えるものであり、その相互接続レイアウトを変えることがない。これは、例えば、入力ピン或は出力ピンとしての外部ピンを設定する、或は、アドレス指定モードを選択することに対するプロセッサの制御レジスタにおけるビットを設定することと同様である。更には、ソフト・コンフィギュレーション・コマンドはデータを保持するためにレジスタ或はテーブル（レジスタのアレイ）を仕切ることができる。加速器４４によって実行される別のソフト・コンフィギュレーション・コマンド或は演算はデータをソフト構成されたレジスタ或はテーブルにロードし得る。加速器４４のソフト・コンフィギュレーションは、先行して引用された「改善された計算アーキテクチャ用パイプライン加速器、関連システム、並びに、方法」（代理人整理番号１９３４−１３−３）と題された特許文献３に更に議論されている。
【００７０】
次に、パイプライン加速器４４は結果としてのデータを、更なる処理のためにルータ６１を介して（或はもしそのルータが省略されていれば直接的に）、ホストプロセッサ４２に提供する。
【００７１】
代替的には、パイプライン加速器４４は結果としてのデータを、出力ポート６０を介して直接的に、或は、ルータ６１（もしあれば）、バス５０、ホストプロセッサ４２、並びに、出力ポート５８を介して間接的に、の何れかで、遠隔仕向先（図５）に提供する。結果として、この代替実施例において、加速器４４によって生成された結果としてのデータは最終処理データである。
【００７２】
加速器４４が結果としてのデータを（更なる処理のため或は遠隔装置まで通過させるため（図５））ホストプロセッサ４２に提供するときには、それはメッセージ・ハンドラー６４によって生成されたメッセージ・オブジェクトと同一のフォーマットを有するメッセージ・オブジェクトにおいてこのデータを送信する。メッセージ・ハンドラー６４によって生成されたメッセージ・オブジェクトと同じように、加速器４４によって生成されたメッセージ・オブジェクトは、例えば、結果としてのデータの仕向先及び優先順位を特定するヘッダーを含む。例えば、そのヘッダーはメッセージ・ハンドラー６４に、その結果としてのデータを遠隔装置までポート５８を介して通過させるように命令し得るか、或は、データの処理を制御することになるのは処理ユニット６２によって実行されるプログラムの何れの部分かを特定し得る。同一メッセージ・フォーマットを用いることによって、加速器４４はホストプロセッサ４２と同一のインターフェース層を有する。これは、特にインターフェース層が工業規格であればピア−ベクトル・マシン４０の設計及び変更を補助する。
【００７３】
パイプライン加速器４４及びパイプライン６６の構造及び動作は、先行して引用された「改善された計算アーキテクチャ用パイプライン加速器、関連システム、並びに、方法」（代理人整理番号１９３４−１３−３）と題された特許文献３に更に議論されている。
【００７４】
＜ホストプロセッサによるパイプライン加速器からの受信及び処理＞
加速器４４からメッセージ・オブジェクトを受信すると、メッセージ・ハンドラー６４は先ずそのメッセージ・ヘッダーを解読して、回復されたデータを指定された仕向先に送る。
【００７５】
もしそのヘッダーがデータがポート５８を介して遠隔装置（図５）に渡されることを示せば、メッセージ・ハンドラー６４はそのデータをポート５８に直接的に、又は、インターフェース・メモリ４８或は、別のメモリ内に形成されたポートＦＩＦＯバッファ（不図示）に、提供してから、そのバッファからポート５８に、向かわせる。多数のポート５８と多数の遠隔装置も意図されている。
【００７６】
しかしながら、もしヘッダーが処理ユニット６２がデータを更に処理することになっていることを示せば、メッセージ・ハンドラー６２はそのデータの処理を制御することになる処理ユニット・プログラムの部分と対応するインターフェース・メモリ４８の箇所に該データを記憶する。より詳細には、同一ヘッダーが処理ユニット５４によって実行されるプログラムの何れの部分（単数或は複数）がそのデータの処理を制御することになるのかを間接的に示す。結果として、メッセージ・ハンドラー６４はそのプログラム部分と対応しているインターフェース・メモリ４８の箇所（ＦＩＦＯ等）にそのデータを記憶する。
【００７７】
先に議論されたように、インターフェース・メモリ４８は加速器４４及び処理ユニット６２の間のバッファとして作用し、よって処理ユニットが加速器と同期されない際にデータの転送を可能としている。例えば、同期に関するこの欠如は、加速器４４が処理ユニット６２よりもデータを高速に処理する際に生じ得る。インターフェース・メモリ４８を用いることによって、加速器４４は処理ユニット６２のより遅い応答によって遅くさせられない。これは、割り込みの取り扱いに対する確定できない応答時間と関連する非効率というペナルティをも回避する。加速器４４の出力メッセージの処理ユニット６２による確定できない取り扱いは、ａ）バックアップされた出力メッセージに対する記憶及び取り扱い、或は、ｂ）バックアップされたメッセージが上書きされることを防止するためのパイプライン全体にわたるアイドリング制御、の何れかを提供させるように、設計者に強制することによって加速器の設計を不必要に複雑化することになる。それ故に、加速器４４及び処理ユニット６２の間のバッファとして作用するインターフェース・メモリ４８の使用は、ａ）加速器が設計に対してより容易、ｂ）加速器がより少ない下部組織を必要として、大きなＰＬＩＣアプリケーションを保持できる、ｃ）加速器が合理化され得て、出力データがより緩慢なプロセッサによって「ブロック」されないのでより高速に作動する等の幾つかの所望の結果を有する。
【００７８】
次いで、メッセージ・ハンドラー６４がインターフェース・メモリ４８に記憶したデータに対して、処理ユニット６２はそのインターフェース・メモリからそのデータを検索する。処理ユニット６２はインターフェース・メモリ４８にポーリングし得て、新データが特定箇所にいつ到達したかを決定するか、或は、メッセージ・ハンドラー６４は処理ユニットにデータの到達を通知する割り込み若しくは他の信号を生成し得る。一実施例において、処理ユニット６２がデータを検索する前、メッセージ・ハンドラー６４はそのデータを含むメッセージ・オブジェクトを生成する。より詳細には、メッセージ・オブジェクト内のデータを受信するために、処理ユニット６２によって実行されるプログラムを設計し得る。それ故にメッセージ・ハンドラー６４は、データだけを記憶する代わりに、インターフェース・メモリ４８内にメッセージ・オブジェクトを記憶し得る。しかし、メッセージ・オブジェクトは、典型的には、それが含有するデータよりも著しく大きなメモリ・スペースを専有する。結果として、メモリを節約すべく、メッセージ・ハンドラー６４はパイプライン加速器４４からのメッセージ・オブジェクトを解読し、そのデータをメモリ４８に記憶してから、処理ユニット６２がそのデータを受信する準備が為されるとメッセージ・オブジェクトを効果的に再生成する。次いで、処理ユニット６２はそのメッセージ・オブジェクトを解読し、メッセージ・ヘッダーにおいて識別されたプログラム部分の制御の下、そのデータを処理する。
【００７９】
次に、プロセッサ・ユニット６２はプログラムの仕向先部分の制御下で検索データを処理し、処理データを生成し、その処理データを該処理データの意図された仕向先と対応するインターフェース・メモリ４８の箇所に記憶する。
【００８０】
次いで、メッセージ・ハンドラー６４は処理データを検索し、それを指定された仕向先に提供する。処理データを検索すべく、メッセージ・ハンドラー６４はメモリ４８にポーリングし得て、データがいつ到達したかを決定するか、或は、処理ユニット６２はメッセージ・ハンドラーに割り込み或は他の信号でデータの到達を通知し得る。処理データをその意図された仕向先に提供すべく、メッセージ・ハンドラー６４はそのデータを含むメッセージ・オブジェクトを生成し得て、そのメッセージ・オブジェクトをデータの更なる処理のために加速器４４に送り戻す。或は、ハンドラー５６はデータをポート５８に送信し得るか、或は、処理ユニット６２による更なる処理のためにメモリ４８の別の箇所に送信し得る。
【００８１】
ホストプロセッサのパイプライン加速器４４からのデータの受信及び処理は、先行して引用された「改善された計算アーキテクチャを有する計算マシン、関連システム、並びに、方法」（代理人整理番号１９３４−１２−３）と題された特許文献２に更に議論されている。
【００８２】
＜ピア−ベクトル・マシンを用いての代替的データ処理技術＞
更に図３で参照されるように、ホストプロセッサ４４がデータを受信し処理してから、そのデータを更なる処理のためにパイプライン加速器４４に送信する先に記載された実施例に対する代替例が存在する。
【００８３】
一代替例において、ホストプロセッサ４４はデータの少なくとも幾つかに対する処理の全てを実行し、よってこのデータは更なる処理のためにパイプライン加速器４４に送信されない。
【００８４】
別の代替例において、パイプライン加速器４４はポート５６を介して遠隔装置（図５）から生データを直接的に受信し、その生データを処理する。加速器４４は、次いで、その処理データをポート６０を介して遠隔装置に直接的に送信し戻し得るか、或は、処理データを更なる処理のためにホストプロセッサ４２に送信し得る。後者の場合、加速器４４は先に議論されたようにそのデータをメッセージ・オブジェクト内にカプセル化し得る。
【００８５】
更に別の代替例において、加速器４４は、ハードウェアに組み込まれたパイプライン７４に加えて、ディジタル信号プロセッサ（ＤＳＰ）等の１つ或はそれ以上の命令実行プロセッサを含み得て、そのパイプラインのナンバークランチング能力を補足する。
【００８６】
＜ピア−ベクトル・マシンの具現化例＞
更に図３で参照されるように、一実施例において、パイプライン・バス５０は規格１３３ＭＨｚＰＣＩバスであり、パイプライン７４は１つ或はそれ以上の規格ＰＭＣカード上に含まれ、メモリ５２は各々が各ＰＭＣカード上に位置決めされている１つ或はそれ以上のフラッシュメモリである。
【００８７】
＜ピア−ベクトル・マシンの適用例＞
図４は、本発明の実施例に従った、図３のピア−ベクトル・マシン４０を組み入れるソナー・システム８０のブロック線図である。マシン４０に加えて、システム８０は、ソナー信号を受信し伝送するための変換要素８４1−８４nから成るアレイ８２、ディジタル−アナログ変換器（ＤＡＣ）８６1−８６n、アナログ−ディジタル変換器（ＡＤＣ）８８1−８８n、並びに、データ・インターフェース９０を含む。ソナー信号を生成し処理することがしばしば数学的に集中的な機能であるので、マシン４０はしばしばこれらの機能を、図３と連携されて先に議論されたように、従来の計算マシン（多数プロセッサ・マシン１０（図１）等）が所与のクロック周波数でできるものよりも、より迅速に且つ効率的に実行できる。
【００８８】
動作の送信モード中、アレイ８２はソナー信号を水（不図示）等の媒体に送信する。先ず、ピア−ベクトル・マシン４０はポート９２で受信した生信号データを、アレイ要素８４の各々に１つずつとなるように、ｎ個のディジタル信号に変換する。これら信号の大きさ及び位相はアレイ８２の伝送ビーム・パターンを指図する。次に、マシン４０はこれらディジタル信号をインターフェース９０に提供し、該インターフェースがそれら信号を各アナログ信号への変換のために各ＤＡＣ８６に提供する。例えばインターフェース９０はマシン４０からディジタル信号を順次受信するバッファとして作用し得て、それら信号の全ｎ個を受信しバッファするまでそれらを記憶してから、それら順次的な信号サンプルを各ＤＡＣ８６に同時に提供する。次いで、変換要素８４はそれらアナログ信号を各音波に変換して、相互に干渉させて、ソナー信号のビームを形成する。
【００８９】
動作の受信モード中、アレイ８２は媒体（不図示）からソナー信号を受信する。受信されたソナー信号は遠隔オブジェクトによって反射された伝送ソナー信号の部分と、環境及び遠隔オブジェクトによって放出された音響エネルギーとで構成されている。先ず、変換要素８４はソナー信号を構成する各音波を受信し、それら音波をｎ個のアナログ信号に変換し、それらアナログ信号をＡＤＣ８８に提供してｎ個の各ディジタル信号に変換する。次に、インターフェース９０はこれらディジタル信号をピア−ベクトル・マシン４０に処理のために提供する。例えば、インターフェース９０はＡＤＣ８８からディジタル信号を並列に受信するバッファとして作用し得て、それら信号をマシン４０に順次提供する。マシン４０がディジタル信号に実行する処理はアレイ８２の受信ビーム・パターンを指図する。フィルタリング、帯域シフト、スペクトル変換（例えば、フーリエ変換）、並びに、回旋等の付加的な処理ステップはそれらディジタル信号に適用される。次いでマシン４０は処理された信号データを、ポート９４を介して、位置決めされたオブジェクトを視認するための表示装置等の別の装置に提供する。
【００９０】
ソナー・システム８０と連携して議論されたが、ソナー・システム以外の各種システムもピア−ベクトル・マシン４０を組み入れることができる。
【００９１】
先行する議論は当業者が本発明を作製し使用することを可能とすべく提示されている。種々実施例への様々な変更は当業者には容易に明かであろうし、ここでの包括的な原則は本発明の精神及び範囲から逸脱することなしに他の実施例及び適用例に適用され得る。よって、本発明は図示された実施例に限定されることが意図されておらず、ここに開示された原理及び特徴と一貫した最も広い範囲と一致されるべきものである。
【図面の簡単な説明】
【００９２】
【図１】図１は、従来の多数プロセッサ・アーキテクチャを有する計算マシンのブロック線図である。
【図２】図２は、従来のハードウェアに組み込まれたパイプラインのブロック線図である。
【図３】図３は、本発明の実施例に従ったピア−ベクトル・アーキテクチャを有する計算マシンのブロック線図である。
【図４】図４は、本発明の実施例に従った図３のピア−ベクトル計算マシンを組み入れている電子システムの概略ブロック線図である。
【符号の説明】
【００９３】
１０    計算マシン
１４    共同プロセッサ
４０    ピア−ベクトル・マシン
４２    ホストプロセッサ
４４    パイプライン加速器
４６    プロセッサ・メモリ
４８    インターフェース・メモリ
５０    パイプライン・バス
５２    ファームウェア・メモリ
５４    生データ入力ポート
５８    処理データ出力ポート
６１    ルータ
６２    処理ユニット
６４    メッセージ・ハンドラー
６６    処理ユニット・メモリ
６８    ハンドラー・メモリ
７０    加速器コンフィギュレーション・レジストリ
７２    メッセージ・コンフィギュレーション・レジストリ
７４    ハードウェアに組み込まれたパイプライン
８０    ソナー・システム
８４    要素
８６    ディジタル−アナログ変換器
８８    アナログ−ディジタル変換器
９０    データ・インターフェース
【図１】
2011154711.tif 000003
【図２】
2011154711.tif 000004
【図３】
2011154711.tif 000005
【図４】
2011154711.tif 000006