説明

改善された計算アーキテクチャ用パイプライン加速器、関連システム、並びに、方法

【課題】プロセッサに基づくマシンの意思決定を為す能力を、ハードウェアに組み込まれたパイプラインに基づくマシンのナンバークランチング速度と組み合わせることを可能とする新しい計算アーキテクチャを実現する。
【解決手段】パイプライン加速器44に組み込まれたパイプライン回路は、データを受信し、前記データをメモリにロードし、メモリからデータを検索し、検索されたデータを処理し、そして処理されたデータを外部ソースに提供するように動作できる。加えて、パイプライン回路は、受信されたデータを処理することもできる。パイプライン加速器がピア-ベクトル・マシン40の一部としてのプロセッサと結合されている場合、メモリはパイプライン回路とプロセッサが実行するアプリケーションとの間におけるデータの転送を補助する。

【発明の詳細な説明】
【技術分野】
【0001】
<優先権の請求>
この出願は、下記の特許文献1に対する優先権を請求するものである。
【特許文献1】米国仮出願第60/422,503号(2002年10月31日出願)
【0002】
<関連出願の相互参照>
この出願は、「改善された計算アーキテクチャ、関連システム、並びに、方法」と題された下記の特許文献2、「改善された計算アーキテクチャを有する計算マシン、関連システム、並びに、方法」と題された下記の特許文献3、「プログラマブル回路、関連計算マシン、並びに、方法」と題された下記の特許文献4、「多数パイプライン・ユニットを有するパイプライン加速器、関連計算マシン、並びに、方法」と題された下記の特許文献5と関連する。
【特許文献2】米国出願第10/684,102号
【特許文献3】米国出願第10/684,053号
【特許文献4】米国出願第10/684,057号
【特許文献5】米国出願第10/683,932号
【背景技術】
【0003】
比較的大量のデータを比較的短い期間で処理する通常の計算アーキテクチャは、処理負担を分担する多数の相互接続プロセッサを含む。処理負担を分担することによって、これら多数のプロセッサは、しばしば、所与のクロック周波数で単一プロセッサができるものよりよりも迅速にデータを処理できる。例えば、これらプロセッサの各々はデータの各部分を処理できるか、或は、処理アルゴリズムの各部分を実行できる。
【0004】
図1は、多数プロセッサ・アーキテクチャを有する従来の計算マシン10の概略ブロック図である。この計算マシン10は、マスター・プロセッサ12と、相互に通信すると共に該マスター・プロセッサとバス16を介して通信する共同プロセッサ141−14nと、遠隔装置(図1では不図示)から生データを受け取る入力ポート18と、該遠隔装置に処理データを提供する出力ポート20とを含む。また、計算マシン10はマスター・プロセッサ12に対するメモリ22と、共同プロセッサ141−14nに対する各メモリ241−24nと、マスター・プロセッサ及び共同プロセッサがバス16を介して共有するメモリ26とを含む。メモリ22はマスター・プロセッサ12に対するプログラム及び作業メモリの双方の役割を果たし、各メモリ241−24nは各共同メモリ141−14nに対するプログラム及び作業メモリの双方の役割を果たす。共有されたメモリ26は、マスター・プロセッサ12及び共同プロセッサ14がそれらの間でデータを転送すること、ポート18を介して遠隔装置からデータを転送すること、ポート20を介して遠隔装置にデータを転送することを可能としている。またマスター・プロセッサ12及び共同プロセッサ14は、マシン10が生データを処理する速度を制御する共通クロック信号を受け取る。
【0005】
一般に、計算マシン10は、マスター・プロセッサ12及び共同プロセッサ14の間で生データの処理を効果的に分割する。ソナー・アレイ等の遠隔ソース(図1では不図示)は、ポート18を介して、生データに対する先入れ先出し(FIFO)バッファ(不図示)として作用する共有メモリ26の1つの区分に生データをロードする。マスター・プロセッサ12はバス16を介してメモリ26から生データを検索して、マスター・プロセッサ及び共同プロセッサ14はその生データを処理して、バス16を介して必要に応じてデータをそれらの間に転送する。マスター・プロセッサ12はその処理データを共有メモリ26内に規定された別のFIFOバッファ(不図示)にロードし、遠隔ソースがポート20を介してこのFIFOからその処理データを検索する。
【0006】
演算例において、計算マシン10は生データに対するn+1個の各演算を順次実行することによって該生データを処理し、これら演算は一体的に高速フーリエ変換(FFT)等の処理アルゴリズムを構成する。より詳細には、マシン10はマスター・プロセッサ12及び共同プロセッサ14からのデータ-処理パイプラインを形成する。クロック信号の所与の周波数で、そうしたパイプラインはしばしばマシン10が単一プロセッサのみを有するマシンよりも高速に生データを処理することを可能としている。
【0007】
メモリ26内における生データFIFO(不図示)からの生データ検索後、マスター・プロセッサ12はその生データに対して三角関数等の第1番演算を実行する。この演算は第1番結果を生み出し、それをプロセッサ12がメモリ26内に規定された第1番結果FIFO(不図示)に記憶する。典型的には、プロセッサ12はメモリ22内に記憶されたプログラムを実行し、そのプログラムの制御の下で上述した動作を実行する。プロセッサ12はメモリ22を作業メモリとしても使用し得て、当該プロセッサが第1番演算の中間期間に生成するデータを一時的に記憶する。
【0008】
次に、メモリ26内における第1番結果FIFO(不図示)からの第1番結果検索後、共同プロセッサ141はその第1番結果に対して対数関数等の第2番演算を実行する。この第2番演算は第2番結果を生み出し、それを共同プロセッサ141がメモリ26内に規定された第2番結果FIFO(不図示)に記憶する。典型的には、共同プロセッサ141はメモリ241内に記憶されたプログラムを実行し、そのプログラムの制御の下で上述した動作を実行する。共同プロセッサ141はメモリ241を作業メモリとしても使用し得て、当該共同プロセッサが第2番演算の中間期間に生成するデータを一時的に記憶する。
【0009】
次に共同プロセッサ242−24nは、共同プロセッサ241に対して先に議論されたものと同様に、(第2番結果−第(n−1)番)結果に対して(第3番演算−第n番)演算を順次実行する。
【0010】
共同プロセッサ24nによって実行される第n番演算は最終結果、即ち処理データを生み出す。共同プロセッサ24nはその処理データをメモリ26内に規定された処理データFIFO(不図示)内にロードし、遠隔装置(図1では不図示)がこのFIFOからその処理データを検索する。
【0011】
マスター・プロセッサ12及び共同プロセッサ14は処理アルゴリズムの種々の演算を同時に実行するので、計算マシン10は、しばしば、種々の演算を順次実行する単一プロセッサを有する計算マシンよりも生データを高速に処理することができる。詳細には、単一プロセッサは、生データから成る先行集合に対する全(n+1)個の演算を実行するまで、生データから成る新しい集合を検索できない。しかし、以上に議論したパイプライン技術を用いて、マスター・プロセッサ12は第1演算だけを実行後に生データから成る新しい集合を検索できる。結果として、所与のクロック周波数でこのパイプライン技術は、単一プロセッサ・マシン(図1では不図示)と比較して約n+1倍だけマシン10が生データを処理する速度を増大することができる。
【0012】
代替的には、計算マシン10は、生データに対するFFT等の処理アルゴリズムの(n+1)例を同時に実行することによって該生データを並列して処理し得る。即ち、もしそのアルゴリズムが先行する例において先に記載されたような(n+1)個の順次演算を含めば、マスター・プロセッサ12及び共同プロセッサ14の各々は生データからそれぞれが成る各集合に対して、順次、全(n+1)個の演算を実行する。その結果として、所与のクロック周波数で、先のパイプライン技術と同様のこの並列処理技術は、単一プロセッサ・マシン(図1では不図示)と比較して約n+1倍だけマシン10が生データを処理する速度を増大することができる。
【0013】
残念ながら、計算マシン10は単一プロセッサ・計算マシン(図1では不図示)と比べてより迅速にデータを処理できるが、マシン10のデータ処理速度はしばしばプロセッサ・クロックの周波数より非常に小さい。詳細には、計算マシン10のデータ処理速度はマスター・プロセッサ12及び共同プロセッサ14がデータ処理するのに必要な時間によって制限される。簡略化のため、この速度制限の例はマスター・プロセッサ12と連携して議論されているが、この議論は共同プロセッサ14にも適用されることを理解して頂きたい。先に議論されたように、マスター・プロセッサ12は所望の方式でデータを操作すべくプロセッサを制御するプログラムを実行する。このプログラムはプロセッサ12が実行する複数の命令から成るシーケンスを含む。残念ながら、プロセッサ12は典型的には単一命令を実行するために多数のクロック・サイクルを必要とし、そしてしばしばデータの単一値を処理すべく多数の命令を実行しなければならない。例えば、プロセッサ12が第1データ値A(不図示)を第2データ値B(不図示)で乗算することを仮定する。第1クロック・サイクル中、プロセッサ12はメモリ22から乗算命令を検索する。第2及び第3クロック・サイクル中、プロセッサ12はメモリ26からA及びBをそれぞれ検索する。第4クロック・サイクル中、プロセッサ12はA及びBを乗算し、そして第5クロック・サイクル中に結果としての積をメモリ22或は26に記憶するか、或は、その結果としての積を遠隔装置(不図示)に提供する。これは最良ケースのシナリオであり、その理由は多くの場合にプロセッサ12はカウンタの初期化及び閉鎖等のオーバーヘッド・タスクに対して付加的なクロック・サイクルを必要とするからである。それ故に、よくてもプロセッサ12はA及びBを処理すべく5クロック・サイクルを必要とするか、或は、1データ値当たり平均2.5クロック・サイクルを必要とする。
【0014】
結果として、計算マシン10がデータを処理する速度は、しばしば、マスター・プロセッサ12及び共同プロセッサ14を駆動するクロックの周波数より非常に低い。例えば、もしプロセッサ12は1.0ギガヘルツ(GHz)でクロックされるが、1データ値当たり平均2.5クロック・サイクルを必要とすれば、効果的なデータ処理速度は(1.0GHz)/2.5=0.4GHzと同等である。この効果的なデータ処理速度は、しばしば、1秒当たり演算数の単位で特徴付けされる。それ故に、この例において、1.0GHzのクロック速度で、プロセッサ12は0.4ギガ演算数/秒(Gops)で使用限界が定められる。
【0015】
図2は、所与クロック周波数で且つしばしば該パイプラインがクロックされる速度と略同一速度で、プロセッサが可能であるよりは高速で典型的にはデータを処理できるハードウェアに組み込まれたデータ・パイプライン30のブロック線図である。パイプライン30は、プログラム命令を実行することなく、各データに対する各演算を各々が実行する演算子回路321−32nを含む。即ち、所望の演算は回路32内に「書き込み」が為されて、それがプログラム命令の必要性なしに自動的にその演算を具現化するように為す。プログラム命令の実行と関連されたオーバーヘッドを減ずることによって、パイプライン30は所与のクロック周波数でプロセッサが可能であるよりは単位秒当たりより多くの演算を典型的には実行する。
【0016】
例えば、パイプライン30は所与のクロック周波数でプロセッサが可能であるよりは高速で以下の数式1をしばしば解くことができる。
Y(xk)=(5xk+3)2xk
ここで、xkは複数の生データ値から成るシーケンスを表す。この例において、演算子回路321は5xkを計算する乗算器であり、回路322は5xk+3を計算する加算器であり、そして回路32n(n=3)は(5xk+3)2xkを計算する乗算器である。
【0017】
第1クロック・サイクルk=1中、回路321はデータ値x1を受け取って、それを5で乗じて、5x1を生成する。
【0018】
第2クロック・サイクルk=2中、回路322は回路321から5x1を受け取って、3を加えて、5x1+3を生成する。またこの第2クロック・サイクル中に回路321は5x2を生成する。
【0019】
第3クロック・サイクルk=3中、回路323は回路322から5x1+3を受け取って、2x1で乗じて(効果的としては、x1だけ5x1+3を左シフトする)、第1結果(5x1+3)2x1を生成する。またこの第3クロック・サイクル中に回路321は5x3を生成し、回路322は5x2+3を生成する。
【0020】
このようにしてパイプライン30は、全ての生データ値が処理されるまで、引き続く生データ値xkの処理を続行する。
【0021】
結果として、生データ値x1の受け取り後の2つのクロック・サイクルの遅延、即ち、この遅延はパイプライン30の待ち時間としばしば呼称され、パイプラインは結果(5x1+3)2x1を生成し、その後、1つの結果を生成する、即ち各クロック・サイクル毎に(5x2+3)2x2、(5x3+3)2x3、・・・、5xn+3)2xnを生成する。
【0022】
待ち時間を無視して、パイプライン30はこうしてクロック速度と同等のデータ処理速度を有する。比較して、マスター・プロセッサ12及び共同プロセッサ14(図1)が先の例におけるようにクロック速度の0.4倍であるデータ処理速度を有すると仮定すれば、パイプライン30は、所与のクロック速度で、計算マシン10(図1)よりも2.5倍高速でデータを処理できる。
【0023】
更に図2で参照されるように、設計者はフィールド-プログラマブル・ゲート・アレイ(FPGA)等のプログラマブル・ロジックIC(PLIC)にパイプライン30を具現化することを選ぶ可能性があり、その理由はPLICが特殊用途IC(ASIC)が為すよりも多くの設計及び変更の柔軟性を許容するからである。PLIC内にハードウェアに組み込まれた接続を構成するため、設計者はPLIC内に配置された相互接続構成レジスタを単に所定バイナリー状態に設定する。全てのこうしたバイナリー状態の組み合わせはしばしば「ファームウェア」と呼称される。典型的には、設計者はこのファームウェアをPLICと結合された不揮発性メモリ(図2では不図示)内にロードする。PLICを「ターンオン」すると、それはファームウェアをそのメモリから相互接続構成レジスタにダウンロードする。それ故に、PLICの機能を変更すべく、設計者は単にそのファームウェアを変更して、PLICがその変更されたファームウェアを相互接続構成レジスタにダウンロードすることを可能とする。ファームウェアを単に変更することによってPLICを変更する能力は、モデル作成段階中や「フィールド内」にパイプライン30をアップグレードするために特に有用である。
【0024】
残念ながら、ハードウェアに組み込まれたパイプライン30は重要な意思決定、特に入れ子意思決定を引き起こすアルゴリズムを実行すべき最良の選択でない可能性がある。プロセッサは、典型的には、入れ子意思決定命令(例えば、「もしAであれば、Bを為し、またもしCであれば、Dを為し、・・・、またnを為し等々」のように、入れ子条件命令)を、比肩する長さの演算命令(例えば、「A+B」)を実行できる程に高速に実行できる。しかしパイプライン30は、比較的単純な決定(例えば、「A>B?」)を効率的に為し得るが、典型的にはプロセッサができる程に効率的に入れ子決定(例えば、「もしAであれば、Bを為し、またもしCであれば、Dを為し、・・・またnを為す」)を為すことができない。この非効率性の1つの理由は、パイプライン30はほんの僅かなオンボード・メモリしか持たないことがあり、したがって外部作業/プログラム・メモリ(不図示)にアクセスすることを必要とすることがあるからである。そして、こうした入れ子決定を実行すべくパイプライン30を設計することができるが、必要とされる回路のサイズ及び複雑性はしばしばそうした設計を非現実的に為し、特にアルゴリズムが多数の種々の入れ子決定を含む場合でにそうである。
【0025】
結果として、プロセッサは典型的には重要な意思決定を必要とする用途において使用され、ハードウェアに組み込まれたパイプラインは殆ど意思決定が為されないか或は意思決定されない「ナンバークランチング(数値データ処理)」用途に典型的には限定される。
【0026】
更には、下記に議論されるように、典型的には、特にパイプライン30が多数のPLICを含む場合、図2のパイプライン等のハードウェアに組み込まれたパイプラインを設計/変更するよりも、図1の計算マシン10等のプロセッサに基づく計算マシンを設計/変更することが非常に易しい。
【0027】
プロセッサ及びそれらの周辺機器(例えば、メモリ)等の計算構成要素は、典型的には、プロセッサに基づく計算マシンを形成すべくそれら構成要素の相互接続を補助する工業規格通信インターフェースを含む。
【0028】
典型的には、規格通信インターフェースは2つの層、即ち、物理層及びサービス層を含む。
【0029】
物理層は、回路とこの回路のインターフェース及び動作パラメータを形成する対応回路相互接続とを含む。例えば、物理層はそれら構成要素を1つのバスに接続するピンと、それらのピンから受け取ったデータをラッチするバッファと、信号をそれらピンに駆動するドライバとを含む。動作パラメータは、ピンが受け取るデータ信号の許容可能電圧範囲と、データの書き込み及び読み取りのための信号タイミングと、動作の支援されたモード(例えば、バーストモード、ページモード)とを含む。従来の物理層はトランジスタ-トランジスタ論理(TTL)及びRAMBUSを含む。
【0030】
サービス層は、計算構成要素のデータ転送のためのプロトコルを含む。このプロトコルはデータのフォーマットと、構成要素によるフォーマット済みデータの送受信の方式とを含む。従来の通信プロトコルは、ファイル転送プロトコル(FTP)及び伝送制御プロトコル/インターネット・プロトコル(TCP/IP)を含む。
【0031】
結果として、製造業者やその他は工業規格通信インターフェースを有する計算構成要素を典型的には設定するので、そうした構成要素のインターフェースを典型的には設計できて、それを他の計算構成要素と比較的少ない労力で相互接続することができる。これは、計算マシンの他の部分の設計に設計者自信の時間を殆ど費やすことを可能として、各種構成要素を追加或は除去することによってそのマシンを変更することを可能としている。
【0032】
工業規格通信インターフェースを支援する計算構成要素を設計することは、設計ライブラリから既存の物理層を用いることによって設計時間を節約することを可能としている。これは、設計者が構成要素を既製の計算構成要素と容易にインターフェースすることを保証するものでもある。
【0033】
そして、共通した工業規格通信インターフェースを支援する計算構成要素を用いる計算マシンを設計することは、設計者がそれら構成要素を少しの時間及び労力で相互接続することを可能としている。それら構成要素は共通インターフェースを支援するので、設計者はそれらをシステム・バスを介して少しの設計労力で相互接続することができる。そして、その支援されたインターフェースは工業規格であるので、マシンを容易に変更することができる。例えば、システム設計が進化するに伴って種々の構成要素及び周辺機器をマシンに追加することができるか、或は、テクノロジーが進化するに伴って次世代の構成要素を追加/設計することが可能である。更には、構成要素が通常の工業規格サービス層を支援するので、計算マシンのソフトウェアに対応するプロトコルを具現化する既存のソフトウェア・モジュールを組み込むことができる。それ故に、インターフェース設計が本質的には既に整っているので少しの労力で構成要素をインターフェースでき、よって、マシンに所望の機能を実行させるマシンの各種部分(例えばソフトウェア)の設計に集中することができる。
【0034】
しかし残念ながら、図2のパイプライン30等のハードウェアに組み込まれたパイプラインを形成すべく、使用されるPLIC等の各種構成要素に対する既知の工業規格サービス層が全くない。
【0035】
結果として、多数のPLICを有するパイプラインを設計すべく、多大な時間を費やし、「ゼロから」種々のPLICの間の通信インターフェースのサービス層を設計し且つデバッグする多大な労力を行使する。典型的には、そうしたその場限りのサービス層は種々のPLIC間で転送されるデータのパラメータに依存する。同じように、プロセッサとインターフェースするパイプラインを設計すべく、ゼロからのパイプライン及びプロセッサの間の通信インターフェースのサービス層の設計及びデバッグに関して多大な時間を費やし且つ多大な労力を行使する必要がある。
【0036】
同様に、そうしたパイプラインをPLICを該パイプラインに追加することによって変更すべく、典型的には、その追加されたPLICと既存のPLICとの間の通信インターフェースのサービス層の設計及びデバッグに関して多大な時間を費やし且つ多大な労力を行使する。同じように、プロセッサを追加することによってパイプラインを変更すべく、或は、パイプラインを追加することによって計算マシンを変更すべく、パイプライン及びプロセッサの間の通信インターフェースのサービス層の設計及びデバッグに関して多大な時間を費やし且つ多大な労力を行使しなければならないであろう。
【0037】
結果として、図1及び図2で参照されるように、多数のPLICをインターフェースすることとプロセッサをパイプラインにインターフェースすることとの難しさのため、計算マシンを設計する際に多大な妥協を為すことがしばしば強いられる。例えば、プロセッサに基づく計算マシンでは、ナンバークランチング速度を、複雑な意思決定を為す能力に対する設計/変更の柔軟性と交換することを強いられる。逆に、ハードウェアに組み込まれたパイプラインに基づく計算マシンでは、複雑な意思決定を為す能力と設計/変更の柔軟性を、ナンバークランチング速度と交換することを強いられる。更には、多数のPLICをインターフェースすることに関する難しさのため、少数のPLICよりも多くのPLICを有するパイプラインに基づくマシンを設計することはしばしば実際的ではない。その結果、実際的なパイプラインに基づくマシンはしばしば制限された機能しか有さない。そして、プロセッサをPLICとインターフェースすることに関する難しさのため、プロセッサを1つのPLICより多くのPLICにインターフェースすることは実際的ではない。その結果、プロセッサ及びパイプラインを組み合わせることによって獲得される利益は最少となる。
【発明の開示】
【発明が解決しようとする課題】
【0038】
それ故に、プロセッサに基づくマシンの意思決定を為す能力を、ハードウェアに組み込まれたパイプラインに基づくマシンのナンバークランチング速度と組み合わせることを可能とする新しい計算アーキテクチャに対する要望が生じてきている。
【課題を解決するための手段】
【0039】
本発明の実施例に従えば、パイプライン加速器はメモリと該メモリと結合されたハードウェアに組み込まれたパイプライン回路とを含む。ハードウェアに組み込まれたパイプライン回路は、データを受信し、該データをメモリにロードし、該メモリからのそのデータを検索し、その検索データを処理して、その処理されたデータを外部ソースに提供するように動作できる。
【0040】
本発明の別の実施例に従えば、ハードウェアに組み込まれたパイプライン回路は、データを受信し、その受信されたデータを処理し、その処理されたデータをメモリにロードし、メモリからその処理されたデータを検索して、その検索された処理データを外部ソースに提供するように動作できる。
【0041】
パイプライン加速器がピア-ベクトル・マシンの一部としてのプロセッサと結合されている場合、メモリはハードウェアに組み込まれたパイプライン回路とプロセッサが実行するアプリケーションとの間でのデータの転送(単向性であろうが二方向性であろうが)を補助する。
【発明を実施するための最良の形態】
【0042】
図3は、本発明の一実施例に従ったピア-ベクトル・アーキテクチャを有する計算マシン40の概略ブロック線図である。ホストプロセッサ42に加えて、ピア-ベクトル・マシン40はパイプライン加速器44を含み、それがデータ処理の少なくとも一部を実行して、図1の計算マシン10における共同プロセッサ14の列と効果的に置き換わる。それ故に、ホストプロセッサ42及び加速器44(又は以下に議論されるようにそのユニット)はデータ・ベクトルを前後に転送できる「ピア」である。加速器44はプログラム命令を実行しないので、所与のクロック周波数で共同プロセッサの列ができるものよりも著しく高速にデータに対して数学的に集中的な演算を典型的には実行する。結果として、プロセッサ42の意思決定能力と加速器44のナンバークランチング能力とを組み合わせることによって、マシン40はマシン10等の従来の計算マシンと同一の能力を有するが、しばしばそれよりもデータをより高速に処理することができる。更には、以下に議論されるように、加速器44にホストプロセッサ42の通信インターフェースと互換性がある通信インターフェースを設けることが、特にプロセッサの通信インターフェースが工業規格である場合に、マシン40の設計及び変更を補助する。そして、加速器44が多数のパイプライン・ユニット(例えば、PLICに基づく回路)を含む場合、それら各ユニットに同一の通信インターフェースを設けることが、特にそれら通信インターフェースが工業規格インターフェースと互換性がある場合に、当該加速器の設計及び変更を補助する。更には、マシン40は以下に議論されると共に先行して引用された特許出願におけるような他の長所等をも提供し得る。
【0043】
更に図3で参照されるように、ホストプロセッサ42及びパイプライン加速器44に加えて、ピア-ベクトル・計算マシン40は、プロセッサ・メモリ46、インターフェース・メモリ48、バス50、ファームウェア・メモリ52、任意選択的な生データ入力ポート54、処理済みデータ出力ポート58、並びに、任意選択的なルータ61を含む。
【0044】
ホストプロセッサ42は処理ユニット62及びメッセージ・ハンドラー64を含み、プロセッサ・メモリ46は処理ユニット・メモリ66及びハンドラー・メモリ68を含み、そのそれぞれがプロセッサ・ユニット及びメッセージ・ハンドラーに対するプログラム及び作業の両メモリとして役立っている。プロセッサ・メモリ46は、加速器コンフィギュレーション・レジストリ70及びメッセージ・コンフィギュレーション・レジストリ72をも含み、それらが、ホストプロセッサ42が加速器44の機能を構成すると共に、該ホストプロセッサ42がメッセージ・ハンドラー64が送信及び受信するメッセージのフォーマットを構成することを可能とするそれぞれのコンフィギュレーション・データを記憶する。
【0045】
パイプライン加速器44は少なくとも1つのPLIC(不図示)上に配置され、プログラム命令を実行することなしに各データを処理するハードウェアに組み込まれたパイプライン741−74nを含む。ファームウェア・メモリ52は加速器44に対するコンフィギュレーション・ファームウェアを記憶する。もし加速器44が多数のPLIC上に配置されたら、それらPLIC及びそれらの各ファームウェア・メモリは多数パイプライン・ユニット内に配置され得る(図4)。加速器44及びパイプライン・ユニットは、以下に議論されると共に、先行して引用された「多数パイプライン・ユニットを有するパイプライン加速器、関連計算マシン、並びに、方法」と題された特許文献5に更に議論されている。代替的には、加速器44は少なくとも1つのASIC上に配置され得て、よって構成不可能な内部相互接続を有し得る。この代替例において、マシン40はファームウェア・メモリ52を省略し得る。更には、加速器44が多数パイプライン74を含んで示されているが、ただ1つのパイプラインを含み得る。加えて、図示されていないが、加速器44はディジタル信号プロセッサ(DSP)等の1つ或はそれ以上のプロセッサを含み得る。更には、図示されていないが、加速器44はデータ入力ポート及び/或はデータ出力ポートを含み得る。
【0046】
ピア-ベクトル・マシン40の一般動作は、先行して引用された「改善された計算アーキテクチャ、関連システム、並びに、方法」と題された特許文献2に議論されており、パイプライン加速器44の構造及び動作は図4乃至図9と連携された以下に議論されている。
【0047】
図4は、本発明の一実施例に従った図3のパイプライン加速器44の概略ブロック線図である。
【0048】
加速器44は1つ或はそれ以上のそうしたパイプライン・ユニット78を含み、それらの各々はPLIC或はASIC等のパイプライン回路80を含む。以下で更に議論されると共に先行して引用された「多数パイプライン・ユニットを有するパイプライン加速器、関連計算マシン、並びに、方法」と題された特許文献5にあるように、各パイプライン・ユニット78はホストプロセッサ42の「ピア」であると共に加速器44の他のパイプライン・ユニットの「ピア」である。即ち、各パイプライン・ユニット78はホストプロセッサ42或は他の任意のパイプライン・ユニットと直接通信できる。よって、このピア-ベクトル・アーキテクチャは、もしパイプライン・ユニット78の全てがマスターパイプライン・ユニット(不図示)或はホストプロセッサ42等の中央箇所を通じて通信した場合に生ずることとなるデータ「ボトルネック」を防止する。更には、これは、マシンに対する重大な変更なしに、ピアを追加するか或はピア-ベクトル・マシン40(図3)からピアを除去することを可能とする。
【0049】
パイプライン回路80は通信インターフェース82を含み、それが、ホストプロセッサ42(図3)等のピアと、通信シェル84を介したハードウェアに組み込まれたパイプライン741−74n(図3)コントローラ86、例外マネージャ88、並びに、コンフィギュレーション・マネージャ90等の、パイプライン回路の他の構成要素との間でデータを転送する。パイプライン回路80は工業規格バス・インターフェース91をも含み得る。代替的は、インターフェース91の機能は通信インターフェース82内に含まれ得る。
【0050】
パイプライン回路80の複数の構成要素を複数の個別モジュールとして設計することによって、そのパイプライン回路の設計をしばしば簡略化することができる。即ち、それら構成要素の各々を個別に設計及び試験することができ、次いでそれらを統合するものであり、それはソフトウェア或はプロセッサに基づく計算システム(図1のシステム10等)を設計する際に行われることと非常に似ている。加えて、これら構成要素、特に他のパイプライン設計においてたぶん頻繁に使用されるような通信インターフェース82等の構成要素を規定するハードウェア記述言語(HDL)をライブラリ(不図示)内に記憶でき、よって同一構成要素を使用する将来のパイプライン設計の設計及び試験の時間を低減する。即ち、ライブラリからHDLを使用することによって、設計者はスクラッチから先行して具現化された構成要素を再設計する必要性がなく、よって設計者の努力を先行して具現化されていない構成要素の設計に対して、或は、先行して具現化された構成要素の変更に対して集中できる。更には、ライブラリ内にパイプライン回路80或はパイプライン加速器44の多数バージョンを画成するHDLを記憶できて、既存の設計の中から精選及び選択できるように為す。
【0051】
通信インターフェース82はメッセージ・ハンドラー64(図3)によって認識されるフォーマットでデータを送受信し、よってピア-ベクトル・マシン40(図3)の設計及び変更を典型的には補助する。例えば、もしデータ・フォーマットが高速I/Oフォーマット等の工業規格であれば、ホストプロセッサ42及び加速器44の間にカスタムインターフェースを設計する必要がない。更には、パイプライン回路80に非バス・インターフェースの代わりにパイプライン・バス50を介してホストプロセッサ42(図3)等の他のピアと通信させることを可能にすることによって、パイプライン・ユニットが追加或は除去されるたびにゼロから非バス・インターフェースを再設計する代わりに、パイプライン・バスにそれらパイプライン・ユニット(又はそれらを保持する回路カード)を単に接続或は接続解除することによってパイプライン・ユニット78の数を変更できる。
【0052】
ハードウェアに組み込まれたパイプライン741−74nは、図3と連携されて先に議論されると共に、先行して引用された「改善された計算アーキテクチャ、関連システム、並びに、方法」と題された特許文献2に議論されているようにデータに対して各演算を実行し、通信シェル84はそれらパイプラインをパイプライン回路80の他の構成要素や該パイプライン回路外部の回路(以下に議論されるデータ・メモリ92等)とインターフェースする。
【0053】
コントローラ86はハードウェアに組み込まれたパイプライン741−74nを同期し、通信に応じて、即ち他のピアからの「事象」に応じて、それらが各データ演算を実行するシーケンスをモニタし且つ制御する。例えば、ホストプロセッサ42等のピアはパイプライン・バス50を介してパイプライン・ユニット78に事象を送信し得て、そのピアがデータから成るブロックをパイプライン・ユニットに送信し終えたことを示して、ハードウェアに組み込まれたパイプライン741−74nにそのデータの処理を始めさせる。データを含む事象は典型的にはメッセージと呼称され、データを含まない事象は典型的には「ドアベル」と呼称される。更には、図5と連携して以下に議論されるように、パイプライン・ユニット78も同期信号に応じてパイプライン741−74nを同期し得る。
【0054】
例外マネージャ88はハードウェアに組み込まれたパイプライン741−74n、通信インターフェース82、通信シェル84、コントローラ86、並びに、バス・インターフェース91の状況をモニタし、ホストプロセッサ42(図3)に例外を報告する。例えば、もし通信インターフェース82におけるバッファがオーバーフローすれば、例外マネージャ88はこれをホストプロセッサ42に報告する。例外マネージャはその例外を生んだ問題を修正するか或はその修正を試みることも可能である。例えば、オーバーフローしているバッファに対して例外マネージャ88は、直接的或は以下に議論されるようなコンフィギュレーション・マネージャ90を介して、そのバッファのサイズを増大し得る。
【0055】
コンフィギュレーション・マネージャ90はハードウェアに組み込まれたパイプライン741−74n、通信インターフェース82、通信シェル84、コントローラ86、例外マネージャ88、並びに、インターフェース91のソフト・コンフィギュレーションを、ホストプロセッサ42(図3)からのソフト-コンフィギュレーション・データに応じて設定し、これは先に引用された「改善された計算アーキテクチャ、関連システム、並びに、方法」と題された特許文献2に議論され、ハード・コンフィギュレーションはパイプライン回路80のトランジスタ及び回路ブロックのレベル上における実際のトポロジーを示し、ソフト・コンフィギュレーションはハード構成された構成要素の物理的パラメータ(例えば、データ幅、テーブル・サイズ)を示す。即ち、ソフト・コンフィギュレーション・データはプロセッサ(図4に不図示)のレジスタにロードされ得るプロセッサの動作モード(例えば、バースト-メモリ・モード)を設定するデータと同様である。例えばホストプロセッサ42は、コンフィギュレーション・マネージャ90に通信インターフェース82におけるキューの数及び各優先レベルを設定させるソフト-コンフィギュレーション・データを送信し得る。例外マネージャ88は、コンフィギュレーション・マネージャ90に、例えば、通信インターフェース82におけるオーバーフローしているバッファのサイズを増大させるソフト-コンフィギュレーション・データをも送信し得る。
【0056】
更に図4で参照されるように、パイプライン回路80に加えて、加速器44のパイプライン・ユニット78は、データ・メモリ92、任意選択的な通信バス94、並びに、パイプライン回路がPLICである場合におけるファームウェア・メモリ52(図3)を含む。
【0057】
データ・メモリ92は、ホストプロセッサ42(図3)等の別のピアとハードウェアに組み込まれたパイプライン741−74nとの間を流れているデータをバッファすると共に、ハードウェアに組み込まれたパイプラインに対する作業メモリでもある。通信インターフェース82はデータ・メモリ92をパイプライン・バス50(通信バス94ともしあれば工業規格インターフェース91とを介して)にインターフェースし、通信シェル84はデータ・メモリをハードウェアに組み込まれたパイプライン741−74nにインターフェースする。
【0058】
工業規格バス・インターフェース91は、通信インターフェース82から幾つかのインターフェース回路を効果的にオフロードすることによって、通信インターフェース82のサイズ及び複雑性を低減する従来のバス-インターフェース回路である。それ故に、もしパイプライン・バス50或はルータ61(図3)のパラメータを変更することを望めば、インターフェース91を変更するだけでよく、通信インターフェース82を変更する必要がない。代替的には、パイプライン回路80の外部であるIC(不図示)内にインターフェース91を配置し得る。パイプライン回路80からインターフェース91をオフロードすることは、例えばハードウェアに組み込まれたパイプライン741−74n及びコントローラ86の用途のパイプライン回路上のリソースを解放する。或は、先に議論されたように、バス・インターフェース91は通信インターフェース82の一部であり得る。
【0059】
パイプライン回路80がPLICである図3と連携されて先に議論されたように、ファームウェア・メモリ52はパイプライン回路のハード・コンフィギュレーションを設定するファームウェアを記憶する。このメモリ52はファームウェアを加速器44の構成中にパイプライン回路80にロードし、加速器の構成中或はその後に通信インターフェース82を介してホストプロセッサ42(図3)から変更されたファームウェアを受信し得る。ファームウェアのローディング及び受信は、先行して引用された「プログラマブル回路、関連計算マシン、並びに、方法」と題された特許文献4に更に議論されている。
【0060】
図4で更に参照されるように、パイプライン回路80、データ・メモリ92、並びに、ファームウェア・メモリ52は回路ボード或はカード98上に配置され得て、パーソナルコンピュータ(不図示)におけるドーターカードがマザーボードのスロットにプラグインされ得ることと非常に類似して、パイプライン-バス・コネクタ(不図示)にプラグインされ得る。図示されていないが、従来のIC、電力調整器等の構成要素、並びに、電力シーケンサも周知のようにカード98上に配置され得る。
【0061】
パイプライン・ユニット78の構造及び動作の更なる詳細は図5と連携されて以下に議論される。
【0062】
図5は、本発明の実施例に従った図4のパイプライン・ユニット78のブロック線図である。簡略化のため、ファームウェア・メモリ52は図5から省略されている。パイプライン回路80はマスターCLOCK信号を受信し、それが直接的或は間接的にパイプライン回路の以下に記載される構成要素を駆動する。パイプライン回路80は従来方式でマスターCLOCK信号から1つ或はそれ以上のスレーブCLOCK信号(不図示)を生成し得る。またパイプライン回路80は以下に議論されるように同期信号SYNCを受信し得る。
【0063】
データ・メモリ92は入力デュアル-ポート-スタティック-ランダム-アクセス・メモリ(DPSRAM)100、出力DPSRAM102、並びに、任意選択的な作業DPSRAM104を含む。
【0064】
入力DPSRAM100は、通信インターフェース82を介して、ホストプロセッサ42(図3)等のピアからデータを受信するための入力ポート106を含むと共に、通信シェル84を介してそのデータをハードウェアに組み込まれたパイプライン741−74nに提供するための出力ポート108を含む。一方がデータ入力のためであり且つ他方がデータ出力のためであるこれら2つのポートを有することは、DPSRAM100へのデータ転送/DPSRAM100からのデータ転送の速度及び効率を増大するが、その理由としては通信インターフェース82がDPSRAMにデータを書き込むことができる一方でパイプライン741−74nがそのDPSRAMからデータを読み取ることができるからである。更に、先に議論されたように、ホストプロセッサ42等のピアからデータをバッファすべくDPSRAM100を用いることは、そのピア及びパイプライン741−74nに相互に対して非同期的に動作させることを可能としている。即ちピアは、パイプライン741−74nが現行動作を完了するのを「待機」することなしに、データをパイプラインに送信できる。同様に、パイプライン741−74nはピアがデータ送信動作を完了するのを「待機」することなしにデータを検索できる。
【0065】
同じように、出力DPSRAM102は、通信シェル84を介して、ハードウェアに組み込まれたパイプライン741−74nからデータを受信するための入力ポート110を含むと共に、そのデータを通信インターフェース82を介してホストプロセッサ42(図3)等のピアに提供するための出力ポート112を含む。先に議論されたように、これら2つのデータ・ポート110(入力)及び112(出力)はDPSRAM102へのデータ転送/DPSRAM102からのデータ転送の速度及び効率を増大し、パイプライン741−74nからデータをバッファすべくDPSRAM102を用いることは、ピア及びパイプラインに相互に対して非同期的に動作させることを可能としている。即ち、パイプライン741−74nは、出力データ・ハンドラー126がそのピア或は別のピアにデータ転送を完了するのを「待機」することなしにピアにデータを発行できる。同様に、出力データ・ハンドラー126は、パイプライン741−74nがデータ発行動作を完了するのを「待機」することなしにデータをピアに転送できる。
【0066】
作業DPSRAM104は、通信シェル84を介して、ハードウェアに組み込まれたパイプライン741−74nからデータを受信するための入力ポート114を含むと共に、その通信シェルを介してそのデータをパイプラインに戻すための出力ポート116を含む。DPSRAM100から受信された入力データを処理している間に、パイプライン741−74nは部分的に処理された、即ち中間データをそのデータの処理を続行する前に一時的に記憶する必要があり得る。例えば、パイプライン741等の第1パイプラインはパイプライン742等の第2のパイプラインによる更なる処理のために中間データを生成し得て、よって、第1パイプラインは第2パイプラインがその中間データを検索するまでそれを一時的に記憶する必要があり得る。作業DPSRAM104はこの一時的記憶装置を提供する。先に議論されたように、2つのデータ・ポート114(入力)及び116(出力)はパイプライン741−74n及びDPSRAM104の間でのデータ転送の速度及び効率を増大する。更には別個の作業DPSRAM104を含むことは、DPSRAM100及び102にデータ入力バッファ及びデータ出力バッファ専用としてそれぞれ機能させることによってパイプライン回路80の速度及び効率を典型的には増大する。しかし、パイプライン回路80に対する僅かな変更によって、DPSRAM100及び102の両方或は片方が、DPSRAM104が省略された際に、そしてそれが存在したとしても、パイプライン741−74nに対する作業メモリでもあり得る。
【0067】
DPSRAM100,102,104はパイプライン回路80の外部であるとして記載されているが、それらDPSRAM若しくはそれと同等物の内の1つ或はそれ以上をそのパイプライン回路の内部とすることが可能である。
【0068】
更に図5で参照されるように、通信インターフェース82は、工業規格バス・アダプタ118、入力データ・ハンドラー120、入力データ及び入力事象キュー122及び124、出力データ・ハンドラー126、並びに、出力データ及び出力事象キュー128及び130を含む。それらのキュー122,124,128,130がそれぞれ単一キューとして示されているが、それらキューの内の1つ或はそれ以上は、例えば、それらキューに記憶された値の優先順位、或は、それら値が表す各データの優先順位による分離を可能とするサブ・キュー(不図示)を含み得る。
【0069】
工業規格バス・アダプタ118は、通信バス94を介して、パイプライン回路80及びパイプライン・バス50(図4)の間でのデータの転送を可能とする物理層を含む。それ故に、もしバス94のパラメータの変更が望まれたならば、アダプタ118だけを変更する必要があり、通信インターフェース82全体を変更する必要性はない。工業規格バス・インターフェース91がパイプライン・ユニット78から省略されている場合、アダプタ118をパイプライン・バス50及びパイプライン回路80の間での直接的なデータ転送を可能とするように変更し得る。この後者の具現化例において、変更アダプタ118はバス・インターフェース91の機能を含み、バス50のパラメータの変更が望まれたならばアダプタ118を変更することだけが必要である。
【0070】
入力データ・ハンドラー120は工業規格アダプタ118からデータを受信し、そのデータを入力ポート106を介してDPSRAM100にロードし、そのデータを指すポインタと対応するデータ識別子を生成してそれらを入力データ・キュー122に記憶する。もしそのデータがホストプロセッサ42(図3)等のピアからのメッセージのペイロードであれば、入力データ・ハンドラー120はそのデータをDPSRAM100にロードする前にメッセージからそれを抽出する。入力データ・ハンドラー120はインターフェース132を含み、それがDPSRAM100の入力ポート106にデータを書き込むが、それは図6と連携された以下に更に議論される。代替的には、入力データ・ハンドラー120は抽出ステップを省略できると共にメッセージ全体をDPSRAM100にロードできる。
【0071】
また入力データ・ハンドラー120は工業規格アダプタ118から事象を受信して、その事象を入力事象キュー124にロードする。
【0072】
更には、入力データ・ハンドラー120は有効マネージャ134を含み、それが受信されたデータ或は事象がパイプライン回路80に対して意図されているかを決定する。有効マネージャ134は、データ或は事象を含むメッセージのヘッダー(或はその一部)を分析することによって、データ或は事象のタイプを分析することによって、或は、データ或は事象の例証識別(即ちデータ/事象が意図されているハードウェアに組み込まれたパイプライン74)を分析することによって、先の決定を為し得る。もし入力データ・ハンドラー120がパイプライン回路80に対して意図されていないデータ或は事象を受信すれば、有効マネージャ134は入力データ・ハンドラーがその受信データ/事象をロードすることを禁止する。ピア-ベクトル・マシン40がルータ61(図3)を含んで、パイプライン・ユニット78が該パイプライン・ユニットに対して意図されているデータ/事象のみを受信するように為す場合、有効マネージャ134も入力データ・ハンドラー120に例外(誤って受信されたデータ/事象)やその例外を引き起こしたピアを識別する例外メッセージをホストプロセッサ42(図3)に送信させ得る。
【0073】
出力データ・ハンドラー126は出力データ・キュー128によって指されたDPSRAM102の複数箇所から処理データを検索し、それら処理データを工業規格バス・アダプタ118を介してホストプロセッサ42(図3)等の1つ或はそれ以上のピアに送信する。出力データ・ハンドラー126はインターフェース136を含み、それがポート112を介してDPSRAM102から処理データを読み取る。このインターフェース136は図7と連携されて以下に更に議論される。
【0074】
出力データ・ハンドラー126もパイプライン741−74nによって生成された事象を出力事象キュー130から検索し、工業規格バス・アダプタ118を介してホストプロセッサ42(図3)等の1つ或はそれ以上のピアにその検索された事象を送信する。
【0075】
更には、出力データ・ハンドラー126は加入マネージャ138を含み、それが処理データや事象に加入しているホストプロセッサ42(図3)等のピアのリストを含み、出力データ・ハンドラーはそのリストを用いてデータ/事象を正しいピアに送信する。もしピアがデータ/事象がメッセージのペイロードであることを好めば、出力データ・ハンドラー126は加入マネージャ138からピアのネットワーク或はバス-ポート・アドレスを検索し、アドレスを含むヘッダーを生成し、データ/事象及びヘッダーからメッセージを生成する。
【0076】
DPSRAM100及び102にデータを記憶し記憶されたデータを検索するための技術はポインタやデータ識別子の使用を含むが、他のデータ管理技術を具現化すべく入力及び出力データ・ハンドラー120及び126を変更することができる。そうしたデータ管理技術の従来例は、キー或はトークンを用いるポインタ、入力/出力制御(IOC)ブロック、並びに、スプーリングを含む。
【0077】
通信シェル84はハードウェアに組み込まれたパイプライン741−74nを出力データ・キュー128、コントローラ86、並びに、DPSRAM100,102,104にインターフェースする物理層を含む。このシェル84はインターフェース140及び142と任意選択的なインターフェース144及び146を含む。インターフェース140及び146はインターフェース136と同様であり得て、インターフェース140はポート108を介してDPSRAM100から入力データを読み取り、そしてインターフェース146はポート116を介してDPSRAM104から中間データを読み取る。インターフェース142及び144はインターフェース132と同様であり得て、インターフェース142はポート110を介してDPSRAM102に処理データを書き込み、そしてインターフェース144はポート114を介してDPSRAM104に中間データを書き込む。
【0078】
コントローラ86はシーケンス・マネージャ148及び同期インターフェース150を含み、該同期インターフェースは1つ或はそれ以上の同期信号SYNCを受信する。ホストプロセッサ42(図3)等のピア、或は、ピア-ベクトル・マシン40(図3)の外部の装置(不図示)は、SYNC信号を生成し得て、以下に議論されると共に、先行して引用された「多数パイプライン・ユニットを有するパイプライン加速器、関連計算マシン、並びに、方法」と題された特許文献5に議論されるように、それがシーケンス・マネージャ148をトリガーしてハードウェアに組み込まれたパイプライン741−74nを起動する。同期インターフェース150もSYNC信号を生成し得て、パイプライン回路80をトリガーするか或は別のピアをトリガーする。加えて、入力事象キュー124からの事象もシーケンス・マネージャ148をトリガーして、以下に議論されるように、ハードウェアに組み込まれたパイプライン741−74nを起動する。
【0079】
シーケンス・マネージャ148は通信シェル84を介してハードウェアに組み込まれたパイプライン741−74nをそれらの各動作を通じて順序付けする。典型的には、各パイプライン74は、事前処理、処理、並びに、事後処理の少なくとも3つの状態を有する。事前処理中、パイプライン74は、例えば、そのレジスタを初期化して、DPSRAM100から入力データを検索する。処理中、パイプライン74は、例えば、その検索されたデータに対して演算を為し、中間データをDPSRAM104に一時的に記憶し、DPSRAM104からその中間データを検索してから、その中間データに対して演算を為して結果データを生成する。事後処理中、パイプライン74は、例えば、その結果としてのデータをDPSRAM102にロードする。それ故に、シーケンス・マネージャ148はパイプライン741−74nの動作又は演算をモニタして、各パイプラインにその動作状態の各々をいつ始めるべきかを命令する。そして、パイプライン・タスクを先に記載したものとは異なるように各種動作状態の間に分配し得る。例えば、パイプライン74は事前処理状態中の代わりに処理状態中にDPSRAM100から入力データを検索し得る。
【0080】
更には、シーケンス・マネージャ148はハードウェアに組み込まれたパイプライン741−74n間で所定の内部動作同期を維持する。例えば、パイプライン741−74nの全てがDPSRAM100からデータを同時に検索することを回避すべく、第1パイプライン741が事前処理状態である一方で、第2パイプライン742が処理状態、第3パイプライン743が事後処理状態となるようにそれらパイプラインを同期させることが望ましい場合がある。1つのパイプライン74の状態が別のパイプラインの同時発生的に実行されている状態とは異なる数のクロック・サイクルを要求し得るので、パイプライン741−74nはもし自由に走らされると同期性を喪失し得る。結果として、特定時に、例えば多数のパイプライン74がDPSRAM100からデータを同時に検索しようとするような「ボトルネック」があり得る。同時性の喪失やその望ましくない結果を防止すべく、シーケンス・マネージャ148は、それらパイプラインの任意のものに対して次の動作状態に進めさせる前に、パイプライン74の全てに現行の動作状態を完了させる。それ故に、シーケンス・マネージャ148が現行の動作状態に対して振り分ける時間は、最も緩慢なパイプライン74にその状態を完了させるに充分な長さである。代替的には、ハードウェアに組み込まれたパイプライン741−74nの間で所定動作同期性を維持するための回路(不図示)はパイプライン自体内に含ませ得る。
【0081】
ハードウェアに組み込まれたパイプライン741−74nを順序づけすると共に内部的に同期化することに加えて、シーケンス・マネージャ148はパイプラインの動作を、1つ或はそれ以上のSYNC信号、或は、入力事象キュー124内の事象に応じて、ホストプロセッサ42(図3)等の他のピアの動作、及び他の外部装置の動作と同期する。
【0082】
典型的には、SYNC信号はタイムクリティカルな機能をトリガーするが著しいハードウェア・リソースを必要とし、比較して、典型的には事象は非タイムクリティカルな機能をトリガーするが著しくより少ないハードウェア・リソースを必要とする。先行して引用された「多数パイプライン・ユニットを有するパイプライン加速器、関連計算マシン、並びに、方法」と題された特許文献5に議論されているように、SYNC信号はピアからピアに直接的に経路指定されているので、例えば、パイプライン・バス50(図3)、入力データ・ハンドラー120、並びに、入力事象キュー124を通じてその道を作成しなければならない事象よりも迅速に機能をトリガーできる。しかし、それらが個別に経路指定されるので、SYNC信号は、ルーティング・ライン、バッファ、並びに、SYNCインターフェース150等のパイプライン回路80の専用回路を必要とする。逆に、それらが既存のデータ転送下部組織(例えば、パイプライン・バス50及び入力データ・ハンドラー120)を使用するので、事象は専用の入力事象キュー124のみを必要とする。結果として、設計者はタイムクリティカルな機能のほとんど全てをトリガーすべく事象を使用する傾向がある。
【0083】
以下は機能トリガーリングの一例である。ソナー・センサ要素(不図示)がパイプライン・ユニット78にデータから成るブロックを送信することを仮定すると、入力データ・ハンドラー120はこのデータをDPSRAM100に記憶し、パイプライン741はこのデータをそのDPSRAM100からDPSRAM104に転送し、そして、トリガーされると、パイプライン742はDPSRAM104からそのデータを検索して処理する。もしパイプライン742がそのデータに実行する処理がタイムクリティカルであれば、パイプライン741がDPSRAM104にデータ・ブロックの全体をローディングし終えるとすぐに、センサ要素はSYNCパルスを生成してパイプライン742をインターフェース150及びシーケンス・マネージャ148を介してトリガーする。パイプライン・ユニット78及びセンサがパイプライン741がいつ終了されるかを決定すべく利用できる数多くの従来技術がある。例えば、以下に議論されるように、シーケンス・マネージャ148は対応するSYNCパルス或は事象をセンサに提供し得る。代替的には、もしパイプライン742が実行する処理がタイムクリティカルでなければ、センサはパイプライン・バス50(図3)を介して事象をシーケンス・マネージャ148に送信し得る。
【0084】
シーケンス・マネージャ148もホストプロセッサ42(図3)等のピアにSYNCパルス或は事象を生成することによってハードウェアに組み込まれたパイプライン741−74nの動作に関する情報を提供し得る。シーケンス・マネージャ148はSYNCインターフェース150及び専用ライン(不図示)を介してSYNCパルスを送信し、出力事象キュー130及び出力データ・ハンドラー126を介して事象を送信する。先の例で参照されるように、ピアがパイプライン742からのデータ・ブロックを更に処理すると仮定する。シーケンス・マネージャ148は、SYNCパルス或は事象を介して、パイプライン742がデータから成るブロックをいつ処理し終えたかをそのピアに通知する。シーケンス・マネージャ148も、対応するSYNCパルス或は事象を生成して適切なピア(単数或は複数)に送信することによって、SYNCパルス或は事象の受領を確認し得る。
【0085】
更に図5で参照されるようにパイプライン・ユニット78の動作は本発明の実施例に従って議論される。
【0086】
データに対して、工業規格バス・インターフェース91はパイプライン・バス50(及び、もし有ればルータ61)からデータ信号(ホストプロセッサ42(図3)等のピアに起因する)を受信し、それら信号をヘッダー及びペイロードを各々が有するメッセージに変換する。
【0087】
次に、工業規格バス・アダプタ118はその工業規格バス・インターフェース91からのメッセージを入力データ・ハンドラー120と互換性があるフォーマットに変換する。
【0088】
次いで、入力データ・ハンドラー120はそのメッセージ・ヘッダを細かく調べて、各ヘッダーからデータ・ペイロードを記述する部分を抽出する。例えば、抽出されたヘッダー部分は、例えば、パイプライン・ユニット78のアドレス、ペイロード中のデータのタイプ、或は、そのデータが意図されているパイプライン781−78nを識別する例証識別子を含み得る。
【0089】
次に、有効マネージャ134はその抽出ヘッダー部分を分析し、そのデータがハードウェアに組み込まれたパイプライン741−74nの内の1つに意図されていることを確認し、インターフェース132はそのデータをポート106を介してDPSRAM100の箇所に書き込み、そして、入力データ・ハンドラー120はその箇所と対応するデータ識別子に対するポインタを入力データ・キュー122に記憶する。データ識別子はデータが意図されているパイプライン或は複数のパイプライン741−74nを識別するか、或は、シーケンス・マネージャ148に以下に議論されるようにその識別を行わせることを可能とする情報を含む。代替的には、キュー122は各パイプライン741−74nに対する各サブキュー(不図示)を含み得て、入力データ・ハンドラー120は意図されたパイプライン或は意図された複数のパイプラインのサブキュー或は複数のサブキュー内にポインタを記憶する。この代替例において、データ識別子は省略し得る。更には、もしデータがメッセージのペイロードであれば、入力データ・ハンドラー120はインターフェース132がDPSRAM100内にそのデータを記憶する前にメッセージからそのデータを抽出する。代替的には、先に議論されたように、インターフェース132はメッセージ全体をDPSRAM100内に記憶し得る。
【0090】
次いで、適時に、シーケンス・マネージャ148は入力データ・キュー122からポインタ及びデータ識別子を読み取って、そのデータ識別子から、データが意図されているパイプライン或は複数のパイプライン741−74nを決定し、そのポインタを通信シェル84を介してそのパイプライン或は複数のパイプラインに渡す。
【0091】
次に、データ受信パイプライン或は複数のデータ受信パイプライン741−74nはインターフェース140にポート108を介してDPSRAM100の指された箇所からデータを検索させる。
【0092】
次いで、データ受信パイプライン或は複数のデータ受信パイプライン741−74nは検索されたデータを処理し、インターフェース142はその処理されたデータをポート110を介してDPSRAM102のある箇所に書き込み、そして、通信シェル84は出力データ・キュー128にその処理されたデータを指すポインタとその処理されたデータに対するデータ識別子とをロードする。そのデータ識別子は、その処理データに加入しているホストプロセッサ42(図3)等の仕向先ピア或は複数の仕向先ピアを識別するか、加入マネージャ138に引き続き仕向先ピア或は複数の仕向先ピア(例えば、図3のホストプロセッサ42)を決定させることを可能とする情報(データ・タイプ等)を含む。代替的には、キュー128は各パイプライン741−74nに対する各サブキュー(不図示)を含み得て、通信シェル84は起因パイプライン或は複数の起因パイプラインのサブキュー或は複数のサブキューにポインタを記憶する。この代替例において、通信シェル84はデータ識別子のキュー128へのローディングを省略し得る。更には、もしパイプライン或は複数のパイプライン741−74nが検索されたデータを処理している間に中間データを生成すれば、インターフェース144はその中間データをポート114を介してDPSRAM104に書き込み、インターフェース146はポート116を介してそのDPSRAM104から中間データを検索する。
【0093】
次に、出力データ・ハンドラー126は出力データ・キュー128からポインタ及びデータ識別子を検索し、加入マネージャ138はその識別子からデータの仕向先ピア或は複数の仕向先ピア(たとえば、図3のホストプロセッサ42)を決定し、インターフェース136はポート112を介してDPSRAM102の指された箇所からデータを検索し、出力データ・ハンドラーはそのデータを工業規格バス・アダプタ118に送信する。もし仕向先ピアがメッセージのペイロードであるデータを必要とすれば、出力データ・ハンドラー126はそのメッセージを生成してそのメッセージをアダプタ118に送信する。例えば、データが多数の仕向先ピアを有して、パイプライン・バス50がメッセージ放送を支援すると仮定する。出力データ・ハンドラー126はその仕向先ピア全てのアドレスを含む単一ヘッダーを生成し、そのヘッダー及びデータを1つのメッセージとして組み合わせて、単一メッセージを仕向先ピアの全てに(アダプタ118及び工業規格バス・インターフェース91を介して)同時に送信する。代替的には、出力データ・ハンドラー126は各ヘッダー、よって各メッセージを各仕向先ピアに対して生成し、それらメッセージの各々を個別に送信する。
【0094】
次いで、工業規格バス・アダプタ118は出力データ・ハンドラー126からのデータをフォーマットして、工業規格バス・インターフェース91と互換性を持たせるように為す。
【0095】
次に、工業規格バス・インターフェース91は工業規格バス・アダプタ118からのデータをフォーマットして、パイプライン・バス50(図3)と互換性を持たせるように為す。
【0096】
随伴データを伴わない事象、即ちドアベルに対して、工業規格バス・インターフェース91はパイプライン・バス50から(もしあればルータ61からも)信号(図3のホストプロセッサ42等のピアに起因する)を受信し、その信号を事象を含むヘッダー(即ち、データ無しメッセージ)に変換する。
【0097】
次に、工業規格バス・アダプタ118は工業規格バス・インターフェース91からのヘッダーを入力データ・ハンドラー120と互換性があるフォーマットに変換する。
【0098】
次いで、入力データ・ハンドラー120はそのヘッダーから事象と事象の記述とを抽出する。例えば、記述は、例えば、パイプライン・ユニット78のアドレス、事象のタイプ、或は、その事象が意図されているパイプライン781−78nを識別する例証識別子を含み得る。
【0099】
次に、有効マネージャ134は事象記述を分析し、その事象がハードウェアに組み込まれたパイプライン741−74nの内の1つに意図されていることを確認して、入力データ・ハンドラー120はその事象とその記述とを入力事象・キュー124に記憶する。
【0100】
次いで、適時に、シーケンス・マネージャ148は入力事象キュー124からの事象及びその記述を読み取り、その事象に応じて、先に議論されたように、パイプライン741−74nの内の1つ或はそれ以上の動作をトリガーする。例えば、シーケンス・マネージャ148はパイプライン742をトリガーし得て、パイプライン741が先行してDPSRAM104に記憶したデータの処理を始める。
【0101】
事象を出力すべく、シーケンス・マネージャ148は事象とその事象の記述を生成し、それら事象及び記述を出力事象キュー130にロードする。事象記述は、もし2つ以上の可能性ある仕向先ピアが存在する場合にその仕向先ピア(単数或は複数)を識別する。例えば、先に議論されたように、事象は入力事象、入力データ或は入力事象のメッセージ、或は、SYNCパルスの受領及び具現化を確認し得る。
【0102】
次に、出力データ・ハンドラー126は事象とその記述を出力事象キュー130から検索し、加入マネージャ138はその事象記述から該事象の仕向先ピア或は複数の仕向先ピア(例えば、図3のホストプロセッサ42)を決定し、出力データ・ハンドラーは、先に議論されたように、その事象を工業規格バス・アダプタ118及び工業規格バス・インターフェース91を介して適切な仕向先ピア或は複数の適切な仕向先ピアに送信する。
【0103】
コンフィギュレーション・コマンドに対して、工業規格バス・アダプタ118は工業規格バス・インターフェース91を介してホストプロセッサ42(図3)からコマンドを受信し、そのコマンドをデータ無し事象(即ち、ドアベル)に対して先に議論されたものと同様の方式で入力データ・ハンドラー120に提供する。
【0104】
次に、有効マネージャ134はそのコマンドがパイプライン・ユニット78に対して意図されていることを確認し、入力データ・ハンドラー120はそのコマンドをコンフィギュレーション・マネージャ90にロードする。更に、入力データ・ハンドラー120或はコンフィギュレーション・マネージャ90の何れかもそのコマンドを出力データ・ハンドラー126に渡すことができ、それがパイプライン・ユニット78がコマンドを受信したことをそのコマンドを送信したピア(例えば、図3のホストプロセッサ42)に送信し戻すことによって確認する。この確認技術はしばしば「エコー」と呼称される。
【0105】
次いで、コンフィギュレーション・マネージャ90はそのコマンドを具現化する。例えば、コマンドはコンフィギュレーション・マネージャ90にデバッグ目的でパイプライン741−74nの内の1つをディスエーブルさせ得る。或は、コマンドはホストプロセッサ42(図3)等のピアに出力データ・ハンドラー126を介してコンフィギュレーション・マネージャ90からパイプライン回路80の現行コンフィギュレーションを読み取らせることができる。加えて、コンフィギュレーション・コマンドを使用し得て、例外マネージャ88によって認識される例外を規定することができる。
【0106】
例外に対して、パイプライン回路80の入力データ・キュー122等の構成要素は例外マネージャ88に向けて例外をトリガーする。一具現化例において、その構成要素は当該構成要素をモニタして、所定条件或は各種条件から成る組に応じてその例外をトリガーする例外トリガリング・アダプタ(不図示)を含む。例外トリガリング・アダプタは一度で設計され得てから例外を生成するパイプライン回路80の各構成要素の一部として含まれ得る普遍的回路であり得る。
【0107】
次に、例外トリガーに応じて、例外マネージャ88は例外識別子を生成する。例えば、その識別子は入力データ・キュー122がオーバーフローしたことを示し得る。更には、その識別子は、もし2つ以上の可能性ある仕向先ピアが存在する場合にその仕向先ピアを含み得る。
【0108】
次いで、出力データ・ハンドラー126は例外マネージャ88から例外識別子を検索し、その例外識別子を、先行して引用された「改善された計算アーキテクチャを有する計算マシン、関連システム、並びに、方法」と題された特許文献3で議論されたようにホストプロセッサ42(図3)に送信する。代替的には、もし多数の可能性ある仕向先ピアが存在すれば、例外識別子も仕向先情報を含むことができ、それから加入マネージャ138がその識別子の仕向先ピア或は複数の仕向先ピア(例えば、図3のホストプロセッサ42)を決定する。出力データ・ハンドラー126は、次いで、その識別子を、工業規格バス・アダプタ118及び工業規格バス・インターフェース91を介して、仕向先ピア或は複数の仕向先ピアに送信する。
【0109】
更に図5で参照されるように、パイプライン・ユニット78に対する代替実施例が存在する。例えば、DPSRAMを含むものとして説明されているが、データ・メモリ92はクワッド-データ-レート(QDR)SRAM等のメモリICの他のタイプを含み得る。
【0110】
図6は、本発明の実施例に従った図5のインターフェース142のブロック線図である。図5と連携して先に議論されたように、インターフェース142はハードウェアに組み込まれたパイプライン741−74nからDPSRAM102に処理データを書き込む。以下に議論されるように、インターフェース142の構造は、データ「ボトルネック」を低減又はなくし、パイプライン回路80(図5)がPLICである場合、PLICのローカル及びグローバルのルーティング・リソースを効率的に利用する。
【0111】
インターフェース142は書き込みチャネル1501−150nを含み、各ハードウェアに組み込まれたパイプライン741−74n(図5)に対して1つずつのチャネルとなっており、コントローラ152を含む。図示の簡略化の目的のため、チャネル1501が以下に議論され、他のチャネル1502−150nの動作及び構造が別段の説明がない限り同様であることを理解して頂きたい。
【0112】
チャネル1501は書き込みアドレス/データFIFO1541及びアドレス/データ・レジスタ1561を含む。
【0113】
FIFO1541は、パイプライン741がDPSRAM102に書き込むデータを記憶し、コントローラ152がレジスタ1561を介してDPSRAM102に実際にデータを書き込むことができるまで、パイプラインがデータを書き込むDPSRAM102内の箇所のアドレスを記憶する。それ故に、FIFO1541は、もしコントローラ152が先行するデータの書き込みを終了するまでに、パイプライン741がチャネル1501へのデータ書き込みを「待機」しなければならなかった場合に生じ得るデータ・ボトルネックを低減又はなくする。
【0114】
FIFO1541はバス1581を介してパイプライン741からデータを受信し、バス1601を介してデータが書き込まれることになる箇所のアドレスを受信し、そのデータ及びアドレスをバス1621及び1641を介してレジスタ1561に提供する。更には、FIFO1541はパイプライン741からライン1661上の書き込みFIFO信号(WRITE FIFO信号)を受信し、ライン1681を介してクロック信号(CLOCK信号)を受信し、そしてFIFO充満信号をライン1701上でパイプライン741に提供する。加えて、FIFO1541はライン1721を介してコントローラ152から読み取りFIFO信号を受信して、ライン1741を介してFIFO EMPTY信号(FIFO空信号)をコントローラに提供する。パイプライン回路80(図5)がPLICである場合、バス1581,1601,1621,1641及びライン1661,1681,1701,1721,1741は、好ましくはローカル・ルーティング・リソースを用いて形成される。典型的には、ローカル・ルーティング・リソースは、信号帰路長が一般により短く且つルーティングの具現化がより容易であるため、グローバル・ルーティング・リソースよりも好まれる。
【0115】
レジスタ1561は、バス1621及び1641を介して、FIFO1541から書き込まれるべきデータと、書き込み箇所のアドレスとをそれぞれ受信し、それらデータ及びアドレスをアドレス/データ・バス176を介してDPSRAM102(図5)のポート110に提供する。更には、レジスタ1561もデータ及びアドレスを、以下に議論されるように、アドレス/データ・バス1781を介してレジスタ1562−156nから受信する。加えて、レジスタ1561はライン180を介してコントローラ152からシフト/ロード信号(SHIFT/LOAD信号)を受信する。パイプライン回路80(図5)がPLICである場合、バス176は典型的にはグローバル・ルーティング・リソースを用いて形成され、バス1781−178n-1及びライン180は好ましくはローカル・ルーティング・リソースを用いて形成される。
【0116】
FIFO空信号の受信と読み取りFIFO及びシフト/ロード信号の生成に加えて、コントローラ152は書き込みDPSRAM信号(WRITE DPSRAM信号)をライン182を介してDPSRAM102(図5)のポート110に提供する。
【0117】
更に図6で参照されるように、インターフェース142の動作が議論される。
【0118】
先ず、FIFO1541はFIFOの現行状態(「充満」或は「非充満」)と対応する論理レベルまでFIFO充満信号を駆動する。
【0119】
次に、もしFIFO1541が充満していなく且つパイプライン741が書き込むべきデータを処理していれば、パイプラインはデータ及び対応するアドレスをバス1581及び1601までそれぞれ駆動し、書き込み信号をアサートし、よってデータ及びアドレスをFIFOにロードする。しかしながら、もしFIFO1541が充満していれば、パイプライン741はデータをロードする前にFIFOが非充満となるまで待機する。
【0120】
次いで、FIFO1541はFIFO空信号をFIFOの現行状態(「空」或は「非空」)と対応する論理レベルまで駆動する。
【0121】
次に、もしFIFO1541が非空であれば、コントローラ152は読み取りFIFO信号をアサートし、シフト/ロード信号をロード論理レベルまで駆動し、よってFIFOから最初にロードされたデータ及びアドレスをレジスタ1561にロードする。もしFIFO1541が空であれば、コントローラ152は読み取りFIFOをアサートしないが、他のFIFO1542−154nの内の任意のものが空でなければ、シフト・ロードをロード論理レベルまで駆動する。
【0122】
チャネル1502−150nは同様の方式で動作して、FIFO1542−154nに最初にロードされたデータがそれぞれレジスタ1562−156nにロードされるように為す。
【0123】
次いで、コントローラ152はシフト/ロード信号をシフト論理レベルまで駆動し、書き込みDPSRAM信号をアサートし、よってレジスタ1561−156nからアドレス/データ・バス176にデータ及びアドレスを順次シフトし、DPSRAM102の対応する箇所にデータをロードする。詳細には、第1シフト・サイクル中、レジスタ1561からのデータ及びアドレスはバス176にシフトされて、FIFO1541からのデータはDPSRAM102のアドレス指定された箇所にロードされるように為す。また第1シフト・サイクル中、レジスタ1562からのデータ及びアドレスはレジスタ1561にシフトされて、レジスタ1563(不図示)からのデータ及びアドレスはレジスタ1562にシフトされる、等々である。第2シフト・サイクル中、レジスタ1561からのデータ及びアドレスはバス176にシフトされて、FIFO1542からのデータはDPSRAM102のアドレス指定された箇所にロードされるように為す。また第2シフト・サイクル中、レジスタ1562からのデータ及びアドレスはレジスタ1561にシフトされ、レジスタ1563(不図示)からのデータ及びアドレスはレジスタ1562にシフトされる、等々である。n個のシフト・サイクルがあって、第n番目のシフト・サイクル中、レジスタ156nからのデータ及びアドレス(FIFO154nからのデータ及びアドレスである)はバス176にシフトされる。コントローラ152はシフト/ロード信号を脈動することによって、或は、レジスタ1561−156nと結合されているシフト・クロック信号(不図示)を生成することによってそれらシフト・サイクルを具現化し得る。更には、対応するFIFO1541−154nがコントローラ152がレジスタにロードした際に空であるので、レジスタ1561−156nの内の1つが特定のシフト動作中に空であれば、コントローラはその空レジスタを迂回し得て、よって、ヌル・データ及びヌル・アドレスのバス176へのシフトを回避することによってシフト動作を短縮する。
【0124】
図5及び図6で参照されるように、本発明の実施例に従えば、インターフェース144はインターフェース142と類似し、インターフェース132も該インターフェース132が1つの書き込みチャネル150のみを含むことを除いてインターフェース142と類似している。
【0125】
図7は、本発明の実施例に従った図5のインターフェース140のブロック線図である。図5と連携して先に議論されたように、インターフェース140はDPSRAM100から入力データを読み取って、そのデータをハードウェアに組み込まれた741−74nに転送する。以下に議論されるように、インターフェース140の構造はデータ「ボトルネック」を低減或はなくし、パイプライン回路80(図5)がPLICである場合、PLICのローカル及びグローバルのルーティング・リソースを効率的に利用する。
【0126】
インターフェース140は、各ハードウェアに組み込まれたパイプライン741−74n(図5)に対して1つずつのチャネルである読み取りチャネル1901−190nとコントローラ192とを含む。図示の簡略化のため、読み取りチャネル1901が以下に議論されているが、他の読み取りチャネル1902−190nの動作及び構造は別段の説明がない限り類似していることを理解していただきたい。
【0127】
チャネル1901はFIFO1941及びアドレス/識別子(ID)レジスタ1961を含む。以下に議論されるように、識別子は、データを受信すべくDPSRAM100の特定箇所からそのデータを読み取る要求を為すパイプライン741−74nを識別する。
【0128】
FIFO1941は2つのサブFIFO(不図示)を含み、一方がパイプライン741が入力データを読み取ることを望んでいるDPSRAM100内の箇所のアドレスを記憶し、他方がDPSRAM100から読み取られたデータを記憶する。それ故に、FIFO1941は、もしパイプライン741が、コントローラ192が先行するデータの読み取りを終了するまで、チャネル1901に読み取りアドレスを提供するために「待機」しなければならない場合、或は、コントローラが、コントローラが引き続くデータを読み取る前にパイプライン741が読み取りデータを検索するまで待機しなければならない場合に生じ得るボトルネックを低減或はなくする。
【0129】
FIFO1941はバス1981を介してパイプライン741から読み取りアドレスを受信し、そのアドレス及びIDをバス2001を介してレジスタ1961に提供する。IDはパイプライン741と対応して典型的には変化しないので、FIFO1941はそのIDを記憶し得て、そのIDをアドレスとつなぎ合わせる。代替的には、パイプライン741はIDをバス1981を介してFIFO1941に提供し得る。更には、FIFO1941はライン2021を介してパイプライン741から準備書き込みFIFO信号を受信し、ライン2041を介してCLOCK信号を受信し、(読み取りアドレスの)FIFO充満信号をライン2061を介してパイプラインに提供する。加えて、FIFO1941はライン2081を介してコントローラ192から書き込み/読み取りFIFO信号(WRITE/READ FIFO信号)を受信し、FIFO空信号をライン2101を介してコントローラに提供する。更には、FIFO1941はバス212を介してコントローラ192から読み取りデータ及び対応するIDを受信し、そのデータをバス2141を介してパイプライン741に提供する。パイプライン回路80(図5)がPLICである場合、バス1981,2001,2141及びライン2021,2041,2061,2081,2101は好ましくはローカル・ルーティング・リソースを用いて形成され、バス212は典型的にはグローバル・ルーティング・リソースを用いて形成される。
【0130】
レジスタ1961は読み取られるべき箇所のアドレスと対応するIDをバス2061を介してFIFO1941から受信し、そのアドレスをアドレス・バス216を介してDPSRAM100(図5)のポート108に提供して、そのIDをバス218を介してコントローラ192に提供する。更には、レジスタ1961も、以下に議論されるように、アドレス/IDバス2201を介してレジスタ1962−196nからアドレス及びIDを受信する。加えて、レジスタ1961はライン222を介してコントローラ192からシフト/ロード信号を受信する。パイプライン回路80(図5)がPLICである場合、バス216は典型的にはグローバル・ルーティング・リソースを用いて形成され、バス2201−220n-1及びライン222は好ましくはローカル・ルーティング・リソースを用いて形成される。
【0131】
FIFO空信号の受信、書き込み/読み取りFIFO及びシフト/ロード信号の生成、並びに、読み取りデータ及び対応するIDの提供に加えて、コントローラ192はバス224を介してDPSRAM100(図5)のポート108から読み取られたデータを受信し、読み取りDPSRAM信号(READ DPSRAM信号)をライン226上に生成するが、そのラインがこの信号をポート108と結合する。パイプライン回路80(図5)がPLICの場合、バス224及びライン226は典型的にはグローバル・ルーティング・リソースを用いて形成される。
【0132】
更に図7で参照されるように、インターフェース140の動作が議論されている。
【0133】
先ず、FIFO1941は、読み取りアドレスに対するFIFOの現行状態(「充満」或は「非充満」)と対応する論理レベルまでFIFO充満信号を駆動する。即ち、もしFIFO1941が読み取られるべきアドレスで充満していれば、FIFO充満の論理レベルを1つのレベルまで駆動し、もしFIFOが読み取りアドレスで充満していなければ、FIFO充満の論理レベルを別のレベルまで駆動する。
【0134】
次に、もしFIFO1941が読み取りアドレスで充満していなく且つパイプライン741がより多くの入力データを処理すべく準備がされると、パイプラインは読み取られるべきデータのアドレスをバス1981まで駆動し、読み取り/書き込みFIFO信号(READ/WRITE FIFO信号)を書き込みレベルまでアサートし、よってアドレスをFIFOにロードする。図5と連携して先に議論されたように、パイプライン741はシーケンス・マネージャ148を介して入力データ・キュー122からアドレスを得る。しかしながらFIFO1941が読み取りアドレスで充満していれば、パイプライン741は読み取りアドレスのローディング前にFIFOが充満しなくなるまで待機する。
【0135】
次いで、FIFO1941はFIFO空信号を読み取りアドレスに対するFIFOの現行状態(「空」或は「非空」)と対応する論理レベルまで駆動する。即ち、もしFIFO1941が少なくとも1つの読み取りアドレスでロードされれば、FIFO空の論理レベルを1つのレベルまで駆動し、もしFIFOが読み取りアドレス無しでロードされれば、FIFO空の論理レベルを別のレベルまで駆動する。
【0136】
次に、もしFIFO1941が空でなければ、コントローラ192は書き込み/読み取りFIFO信号を読み取り論理レベルまでアサートし、シフト/ロード信号をロード論理レベルまで駆動し、よってFIFOから最初にロードされたアドレスとIDをレジスタ1961にロードする。
【0137】
チャネル1902−190nは同様の方式で動作して、コントローラ192がFIFO1942−194nから最初にロードされたアドレスとIDをレジスタ1962−196nにそれぞれロードする。もしFIFO1942−194nの全てが空であれば、コントローラ192は前進の前にアドレスを受信すべくFIFOの内の少なくとも1つを待機する。
【0138】
次いで、コントローラ192はシフト/ロード信号をシフト論理レベルまで駆動し、読み取りDPSRAM信号をアサートしてレジスタ1961−196nからアドレス及びIDバス216及び218にアドレス及びIDを順次シフトして、バス224を介してDPSRAM100の対応する箇所からデータを順次読み取る。
【0139】
次に、コントローラ192は受信されたデータと対応するID(そのIDはFIFO1941−194nの各々にそれがデータの意図された受取人であるか否かを決定させる)をバス212まで駆動し、書き込み/読み取りFIFO信号を書き込みレベルまで駆動し、よってそのデータを各FIFO1941−194nに順次書き込む。
【0140】
次いで、ハードウェアに組み込まれたパイプライン741−74nはそれらの読み取り/書き込みFIFO信号を読み取りレベルまで順次アサートし、そのデータをバス2141−214nを介して順次読み取る。
【0141】
更に図7で参照されるように、それらのデータ読み取り演算子のより詳細な議論が提示される。
【0142】
第1シフト・サイクル中、コントローラ192はレジスタ1961からバス216及び218までアドレス及びIDをそれぞれシフトし、読み取りDPSRAMをアサートし、そうして、バス224を介してDPSRAM100の対応する箇所からデータを読み取り、バス218からIDを読み取る。次に、コントローラ192は書き込み/読み取りFIFO信号をライン2081上で書き込みレベルまで駆動し、受信されたデータとIDをバス212に駆動する。IDがFIFO1941からのIDであるので、FIFO1941はそのIDを認識し、よって書き込み/読み取りFIFO信号の書き込みレベルに応じてバス212からデータをロードする。残りのFIFO1942−194nは、バス212上のIDがそれらのIDと対応しないので、データをロードしない。次いで、パイプライン741は読み取り/書き込みFIFO信号をライン2021上で読み取りレベルまでアサートし、バス2141を介して読み取りデータを検索する。また、第1シフト・サイクル中、レジスタ1962からのアドレス及びIDはレジスタ1961にシフトされ、レジスタ1963(不図示)からのアドレス及びIDはレジスタ1962にシフトされ、等々である。代替的には、コントローラ192はIDを認識し、書き込み/読み取りFIFO信号だけをライン2081上で書き込みレベルまで駆動する。これはIDをFIFO1941−194nまで送信すべきコントローラ192に対する必要性をなくする。別の代替例において、書き込み/読み取りFIFO信号は読み取り信号のみであり、FIFO1941(他のFIFO1942−194nと共に)はバス212上のIDがFIFO1941のIDと符合する場合にバス212上にデータをロードする。これは書き込み信号を生成すべきコントローラ192の必要性をなくする。
【0143】
第2シフト・サイクル中、レジスタ1961からのアドレス及びIDはバス216及び218にシフトされて、コントローラ192がFIFO1942によって特定されるDPSRAM100の箇所からデータを読み取るように為す。次に、コントローラ192は書き込み/読み取りFIFO信号を書き込みレベルまで駆動し、受信されたデータとIDをバス212に駆動する。IDがFIFO1942からのIDであるので、FIFO1942はそのIDを認識し、そうしてバス212からデータをロードする。残りのFIFO1941及び1943−194nは、バス212上のIDがそれらのIDと対応しないのでデータをロードしない。次いで、パイプライン742はその読み取り/書き込みFIFO信号を読み取りレベルまでアサートし、バス2142を介して読み取りデータを検索する。また第2シフト・サイクル中、レジスタ1962からのアドレス及びIDはレジスタ1961にシフトされ、レジスタ1963(不図示)からのアドレス及びIDはレジスタ1962にシフトされ、等々である。
【0144】
これはn個のシフト・サイクルの間続行、即ち、レジスタ196n(FIFO194nからのアドレス及びID)からのアドレス及びIDがバス216及び218にそれぞれシフトされるまで続行する。コントローラ192はシフト/ロード信号を脈動することによって、或はレジスタ1961−196nと結合されたシフト・クロック信号(不図示)を生成することによってそれらシフト・サイクルを具現化し得る。更には、もし特定シフト・サイクル中にレジスタ1961−194nの内の1つが、その対応するFIFO1941−194nが空であるため空であれば、コントローラ192は空レジスタを迂回し、よってヌル・アドレスのバス216へのシフトを回避することによってシフト動作を短縮する。
【0145】
図5及び図6で参照されるように、本発明の実施例に従えば、インターフェース144はインターフェース140と類似し、インターフェース136も該インターフェース136が1つのみの読み取りチャネル190を含むことを除けばインターフェース140と類似し、よってID回路を全く含まない。
【0146】
図8は、本発明の別の実施例に従った図4のパイプライン・ユニット230の概略ブロック線図である。このパイプライン・ユニット230は、該パイプライン・ユニット230が多数のパイプライン回路80を含むことを除いて(ここでは2つのパイプライン回路80a及び80b)図4のパイプライン・ユニット78と類似している。パイプライン回路80の数を増大することは、典型的には、ハードウェアに組み込まれたパイプライン741−74nの数nに関する増大を可能とし、よってパイプライン・ユニット78と比較してパイプライン・ユニット230の機能に関する増大を可能とする。
【0147】
図8のパイプライン・ユニット230において、サービス構成要素、即ち、通信インターフェース82、コントローラ86、例外マネージャ88、コンフィギュレーション・マネージャ90、並びに、任意選択的な工業規格バス・インターフェース91はパイプライン回路80a上に配置され、パイプライン741−74n及び通信シェル84はパイプライン回路80b上に配置される。サービス構成要素及びパイプライン741−74nを別々のパイプライン回路上に位置決めすることによって、サービス構成要素及びパイプラインが同一のパイプライン回路上に位置決めされている場合に可能であるものよりも、より多くの数nのパイプライン及び/或はより複雑なパイプラインを含み得る。代替的には、パイプライン741−74nをインターフェース82にインターフェースする通信シェル84の部分とコントローラ86はパイプライン回路80a上に配置される。
【0148】
図9は、本発明の実施例に従った図8のパイプライン・ユニット230のパイプライン回路80a,80b及びデータ・メモリ92の概略ブロック線図である。図9のパイプライン構成要素が2つのパイプライン回路上に配置されていること以外、パイプライン回路80a及び80bとメモリ92の構造及び動作は、図5のパイプライン回路80及びメモリ92のものと同一である。
【0149】
先行する議論は当業者が本発明を作製し使用することを可能とすべく提示されている。種々実施例への様々な変更は当業者には容易に明かであろうし、ここでの包括的な原則は本発明の精神及び範囲から逸脱することなしに他の実施例及び適用例に適用され得る。よって、本発明は図示された実施例に限定されることが意図されておらず、ここに開示された原理及び特徴と一貫した最も広い範囲と一致されるべきものである。
【図面の簡単な説明】
【0150】
【図1】従来の多数プロセッサ・アーキテクチャを有する計算マシンのブロック線図。
【図2】従来のハードウェアに組み込まれたパイプラインのブロック線図。
【図3】本発明の実施例に従ったピア-ベクトル・アーキテクチャを有する計算マシンのブロック線図。
【図4】本発明の実施例に従った図3のパイプライン加速器のブロック線図。
【図5】本発明の実施例に従った図4のハードウェアに組み込まれたパイプライン回路とデータ・メモリとのブロック線図。
【図6】本発明の実施例に従った図5の通信シェルのメモリ書き込みインターフェースのブロック線図。
【図7】本発明の実施例に従った図5の通信シェルのメモリ読み取りインターフェースのブロック線図。
【図8】本発明の別の実施例に従った図3のパイプライン加速器のブロック線図。
【図9】本発明の実施例に従った図8のハードウェアに組み込まれたパイプライン回路とデータ・メモリとのブロック線図。
【符号の説明】
【0151】
10 計算マシン
14 共同プロセッサ
40 ピア-ベクトル・マシン
42 ホストプロセッサ
44 パイプライン加速器
46 プロセッサ・メモリ
48 インターフェース・メモリ
50 パイプライン・バス
52 ファームウェア・メモリ
54 生データ入力ポート
58 処理データ出力ポート
61 ルータ
62 処理ユニット
64 メッセージ・ハンドラー
66 処理ユニット・メモリ
68 ハンドラー・メモリ
70 加速器コンフィギュレーション・レジストリ
72 メッセージ・コンフィギュレーション・レジストリ
74 ハードウェアに組み込まれたパイプライン
78 パイプライン・ユニット
80 パイプライン回路
86 パイプライン・コントローラ
88 例外マネージャ
90 コンフィギュレーション・マネージャ
91 工業規格バス・インターフェース

【特許請求の範囲】
【請求項1】
パイプライン加速器であって、
メモリと、
複数のハードワイヤパイプライン回路であって各々が、前記メモリと結合されたホストプロセッサと少なくとも1つの他のハードワイヤパイプライン回路とに対して異なるクロック信号で作動し、各々が少なくとも1つのデータ処理ハードワイヤパイプラインを有し、各々がプログラムインストラクションを実行することなく作動する複数のハードワイヤパイプライン回路とを含み、
該ハードワイヤパイプライン回路は、
データ及び前記データの行く先を示す情報を有するヘッダーを含むメッセージを、前記データ及び前記情報を少なくとも1つの共通バスライン上にて受信することにより受信し、
前記データを前記メッセージから抽出し、
前記メモリに前記抽出データをローディングし、
前記メモリから前記抽出データを検索し、
行き先に対応する前記ハードワイヤパイプラインで前記検索データを処理し、
前記処理データを外部ソースに提供するように作動する、パイプライン加速器。
【請求項2】
前記メモリは第1集積回路上に配置され、
前記ハードワイヤパイプライン回路は第2集積回路上に配置されている、請求項1記載のパイプライン加速器。
【請求項3】
前記ハードワイヤパイプライン回路はフィールド-プログラマブル・ゲート・アレイ上に配置されている、請求項1記載のパイプライン加速器。
【請求項4】
パイプライン加速器は、
前記処理データをメモリにローディングし、
前記メモリから前記処理データを検索し、
前記検索処理データを外部ソースに提供することによって、
処前記理データを外部ソースに提供するように作動する、請求項1のパイプライン加速器。
【請求項5】
外部ソースはプロセッサを含み、
前記ハードワイヤパイプライン回路は前記プロセッサからデータを受信するように作動する、請求項1記載のパイプライン加速器。
【請求項6】
パイプライン加速器であって、
メモリと、
複数のハードワイヤパイプライン回路であって各々が、前記メモリと結合されたホストプロセッサと少なくとも1つの他のハードワイヤパイプライン回路とに対して異なるクロック信号で作動し、各々がハードワイヤパイプラインを有し、各々がプログラムインストラクションを実行せずに作動する複数のハードワイヤパイプライン回路とを含み、
該ハードワイヤパイプライン回路は、
データを受信し、
前記データをそれぞれの前記ハードワイヤパイプラインによって処理し、
前記処理データを前記メモリにローディングし、
前記メモリから前記処理データを検索し、
前記処理データの行き先を示す第1情報を含んだメッセージヘッダーを生成し、
前記処理データと前記ヘッダーとを含んだメッセージを生成し、
前記メッセージを外部ソースに提供するように作動する、パイプライン加速器。
【請求項7】
計算マシンであって、
少なくとも1つのソフトウェアアプリケーションを実行させるように作動するプロセッサと、
前記プロセッサと結合したパイプライン加速器とを含み、
前記パイプライン加速器は、
メモリと、
複数のハードワイヤパイプライン回路であって各々が、前記メモリと結合されたホストプロセッサと少なくとも1つの他のハードワイヤパイプライン回路とに対して異なるクロック信号で作動し、各々がハードワイヤパイプラインを有し、各々がプログラムインストラクションを実行せずに作動する複数のハードワイヤパイプライン回路とを含み、
該ハードワイヤパイプライン回路は、
前記プロセッサからデータを受信し、
前記受信データをそれぞれの前記ハードワイヤパイプラインによって処理し、
前記処理データを前記メモリにローディングし、
前記処理データのために、前記プロセッサで実行される行き先ソフトアプリケーションを示す情報を含んだメッセージヘッダーを生成し、
前記メモリから前記処理データを検索し、
前記検索データと前記メッセージヘッダーとを含むメッセージを生成し、
前記メッセージを前記プロセッサに提供するように作動する、計算マシン。
【請求項8】
方法であって、
複数のハードワイヤパイプライン回路のうち1つのハードワイヤパイプライン回路であって少なくとも他の1つのハードワイヤパイプライン回路に対して異なるクロック信号で作動する1つのハードワイヤパイプライン回路が、プログラムインストラクションを実行せずに、データと、該データの行き先を示す情報と、メッセージのサイズを示す情報とを含んだメッセージを受領するステップと、
前記1つのハードワイヤパイプライン回路が、プログラムインストラクションを実行せずに前記メッセージから前記データを抽出するステップと、
前記1つのハードワイヤパイプライン回路が、プログラムインストラクションを実行せずにメモリ内に前記抽出データをローディングするステップと、
前記1つのハードワイヤパイプライン回路が、プログラムインストラクションを実行せずに前記メモリから前記抽出データを検索するステップと、
前記データの行き先に対応する1つの前記ハードワイヤパイプライン回路に配置されたハードワイヤパイプラインが、プログラムインストラクションを実行せずに前記検索データを処理するステップと、
前記ハードワイヤパイプライン回路が、プログラムインストラクションを実行せずに前記処理データを外部ソースに提供するステップとを含む、方法。
【請求項9】
前記処理データを提供することは、
前記1つのハードワイヤパイプライン回路が前記処理データを前記メモリにローディングし、
前記1つのハードワイヤパイプライン回路が前記メモリから前記処理データを検索し、
前記1つのハードワイヤパイプライン回路が前記検索された処理データを外部ソースに提供する、請求項8記載の方法。
【請求項10】
方法であって、
複数のハードワイヤパイプライン回路のうち1つのハードワイヤパイプライン回路であってホストプロセッサと少なくとも1つの他のハードワイヤパイプライン回路とに対して異なるクロック信号で作動する1つのハードワイヤパイプライン回路が、プログラムインストラクションを実行することなくデータを処理するステップと、
前記ハードワイヤパイプライン回路が、プログラムインストラクションを実行せずに前記処理データをメモリにローディングするステップと、
前記ハードワイヤパイプライン回路が、プログラムインストラクションを実行せずに前記メモリから前記処理データを検索するステップと、
前記ハードワイヤパイプライン回路が、プログラムインストラクションを実行せずに前記処理データの行き先を示す第1情報を有するヘッダーを生成するステップと、
前記ハードワイヤパイプライン回路が、プログラムインストラクションを実行せずに前記ヘッダーと前記処理データからメッセージを形成するステップと、
前記ハードワイヤパイプライン回路が、プログラムインストラクションを実行せずに前記メッセージを単一のバスを介して外部ソースに提供するステップとを含む、方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2011−170868(P2011−170868A)
【公開日】平成23年9月1日(2011.9.1)
【国際特許分類】
【出願番号】特願2011−71988(P2011−71988)
【出願日】平成23年3月29日(2011.3.29)
【分割の表示】特願2005−502225(P2005−502225)の分割
【原出願日】平成15年10月31日(2003.10.31)
【出願人】(504242618)ロッキード マーティン コーポレーション (19)
【Fターム(参考)】