(57)【要約】【課題】マルチプロセッサ環境内のプロセッサ間の通信遅延を最小化し、ベクトル化が単一のプロセッサにもたらすものをマルチプロセッサにもたらす。それは、計算速度を速めるため従来用いられてきた通信の速度を速める類似のツール、即ち、壁時計時間に関してそれらの性能を増すことができるアーキテクチャについて最適な通信アルゴリズムをプログラミングする能力を与える。【解決手段】論理演算ユニット及び算術演算ユニットの通常の補足に加えて、各プロセッサは、トラフィックをネットワークと、近隣のプロセッサの中の同等のレジスタと直接通信するレジスタとの間で調整するプログラム可能な通信ユニットを含む。これらのレジスタに含まれる通信タスクが、ベクトル・ユニプロセッサ上での通信タスクと同様に実行される。アーキテクチャが均衡化され、そしてハードウエア／ソフトウエアの組み合わせが、任意の数のプロセッサに対してスケーラブルである。【選択図】図１
2007323656.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク・トポロジーと、
複数のプロセッサとを備え、
前記複数のプロセッサのそれぞれが、
整数ユニット、スカラ・ユニット、浮動小数点ユニット及びブール演算ユニットを含む通常のＣＰＵと、
ローカル・メモリと、
アドレス可能なＣレジスタと、
第１及び第２の多重ポート型ネットワーク・スイッチと、
プログラム可能な通信ユニットとを備え、
前記複数のプロセッサが、協調的タスク実行のため前記ネットワークの中で相互接続され、
前記通信ユニットが、１又はそれより多い設定を前記第１及び第２の多重ポート型ネットワーク・スイッチに与え、
前記通常のＣＰＵ、ローカル・メモリ、及び前記通信ユニットが、計算タスク及び通信タスクを与えるよう結合及び構成され、且つ前記複数のプロセッサのそれぞれのため、前記アドレス可能なＣレジスタを一時的データ格納のため利用する、マルチプロセッサ・システム。
【請求項２】
前記アドレス可能なＣレジスタが、一時データ及び常駐データの両方のためのデータ格納装置である請求項１記載のマルチプロセッサ・システム。
【請求項３】
前記第１の多重ポート型ネットワーク・スイッチが、データを前記アドレス可能なＣレジスタから前記ネットワークへ転送するよう構成可能なマルチプレクサであり、
前記第２の多重ポート型ネットワーク・スイッチが、データを前記ネットワークから前記アドレス可能なＣレジスタへ転送するよう構成可能なデマルチプレクサである
請求項１記載のマルチプロセッサ・システム。
【請求項４】
前記ネットワークが、ハイパーキューブ・ネットワークである積御３記載のマルチプロセッサ・システム。
【請求項５】
Ｐカウント個の前記複数のプロセッサが存在し、
前記デマルチプレクサ及び前記マルチプレクサは、それぞれ、前記ネットワークに対するＮ＝ｌｏｇ２Ｐ個のポートと、前記Ｃレジスタに対するＭ個のポートとを有し、
ここで、Ｍは、前記Ｃレジスタの中の場所の数である
請求項４記載のマルチプロセッサ・システム。
【請求項６】
大容量メモリを有し、
前記大容量メモリが、前記複数のプロセッサのそれぞれ内のローカル・メモリの和である
請求項３記載のマルチプロセッサ・システム。
【請求項７】
キャッシュを持たず、それによりキャッシュ・コヒーレンスが要求されない請求項６記載のマルチプロセッサ・システム。
【請求項８】
制御を前記ネットワークにわたって分配するブロードキャスト・トリーを更に備え、
前記ブロードキャスト・トリーが、各プロセッサから他の全てのプロセッサまで定義される
請求項３記載のマルチプロセッサ・システム。
【請求項９】
複数の通信ピンと、
複数の通信チャネルとを更に備え、
前記通信チャネルのそれぞれが、通信ピンの合計数をｌｏｇ２Ｐで除算した数に等しい前記通信ピンの倍数を利用する
請求項１記載のマルチプロセッサ・システム。
【請求項１０】
ネットワークの中で相互接続される複数のプロセッサの間に通信を与えるマルチプロセッサ・システムにおける方法であって、
前記複数のプロセッサのそれぞれにおいて、整数ユニット、スカラ・ユニット、浮動小数点ユニット及びブール演算ユニットを含む通常のＣＰＵと、ローカル・メモリと、アドレス可能なＣレジスタと、多重ポート型デマルチプレクサと、多重ポート型マルチプレクサと、プログラム可能な通信ユニットとを設けるステップと、
１又はそれより多い設定を前記マルチプレクサ及びデマルチプレクサに与えるよう前記通信ユニットを構成するステップと、
前記アドレス可能なＣレジスタをデータ格納のため利用するステップと、
計算及び通信を前記複数のプロセッサの間に与えるよう前記通常のＣＰＵ、ローカル・メモリ及び前記通信ユニットを構成することにより、データが前記複数のプロセッサの前記Ｃレジスタ間で転送されるステップと
を備える方法。
【請求項１１】
前記通信ユニットにより、１又はそれより多い通信命令の実行を前記デマルチプレクサ及びマルチプレクサの構成と相関させるステップを更に備える請求項１０記載の方法。
【請求項１２】
前記ローカル・メモリ、Ｃレジスタ及びＣＰＵの速度を前記ネットワークの速度に基づいて選択することにより前記ネットワークを均衡化させるステップを更に備える請求項１１記載の方法。
【請求項１３】
前記通信ユニットから受け取られた１組の通信命令に応答して、各通信サイクル中に新しいスイッチ構成を実現するよう前記マルチプレクサ及びデマルチプレクサのスイッチを構成するステップを更に備える請求項１０記載の方法。
【請求項１４】
前記の新しいスイッチ構成が、前記通信ユニットにより動的に決定される請求項１３記載の方法。
【請求項１５】
静的構成を１又はそれより多いデータ・テーブルから前記マルチプレクサ及びデマルチプレクサのスイッチにロードするステップを更に備える請求項１０記載の方法。
【請求項１６】
通信タスクが、１通信サイクル当たり１データの平均速度で並列に全ての宛先プロセッサに対して実行される請求項１０記載の方法。
【請求項１７】
前記ＣＰＵによる計算のため、又は近隣のプロセッサへ再送信のため、或いは前記ローカル・メモリに格納のため、前記Ｃレジスタのコンテンツを役立たせるステップを更に備える請求項１０記載の方法。
【請求項１８】
競合、デッドロック及びレジスタ・オーバーフローを含む未知の実行要因を排除することにより静的ではなく決定論的実行を与えるステップを更に備える請求項１０記載の方法。
【請求項１９】
非均質なネットワークを含むいずれのネットワーク内の前記プロセッサを可変数個のプロセッサ・ポートと接続するステップを更に備え、
前記通信ユニットが、前記ポートに対応するピンを定義するようプログラミングされる
請求項１０記載の方法。
【請求項２０】
前記通信ユニットが、プロセッサの数Ｐに比例してスケーリングするアルゴリズムを実行し、
前記アルゴリズムの性能に比例した前記マルチプロセッサ・システムの性能のスケーリングが存在する
請求項１０記載の方法。
【請求項２１】
複数の通信チャネル及び複数の通信ピンを設けるステップを更に備え、
前記通信チャネルのそれぞれが、通信ピンの合計数をｌｏｇ２Ｐで除算した数に等しい数の前記通信ピンを利用する
請求項１０記載の方法。
【請求項２２】
制御を、前記複数のプロセッサのそれぞれから前記複数のプロセッサの他の全てのプロセッサまで定義されるブロードキャスト・トリーを介して前記ネットワークにわたって分配するステップを更に備える請求項１０記載の方法。
【請求項２３】
複数のプロセッサ間で通信する方法であって、
前記複数のプロセッサのそれぞれの中に、ＣＰＵ、ローカル・メモリ、通信ユニット、Ｃレジスタ及び１又はそれより多いネットワーク・スイッチを設けるステップと、
前記複数のプロセッサのうちの１つのプロセッサに配置された第１のＣレジスタと、１又はそれより多い近隣のプロセッサに配置された１又はそれより多いＣレジスタとの間に前記１又はそれより多いネットワーク・スイッチを介した通信経路を設けるステップと、
命令を前記ＣＰＵと前記第１のＣレジスタとの間で通信するステップと、
スイッチの設定を前記通信ユニットから前記１又はそれより多いネットワーク・スイッチへ与えるステップと、
データを前記ローカル・メモリと前記第１のＣレジスタとの間で転送するステップと、
前記１又はそれより多いネットワーク・スイッチを利用して、データを前記第１のＣレジスタと前記１又はそれより多いＣレジスタとの間で通信するステップと
を備える方法。
【請求項２４】
データを前記第１のＣレジスタと近隣のプロセッサに配置された２又はそれより多いＣレジスタとの間で同時に通信するステップを更に備える請求項２３記載の方法。
【請求項２５】
相互接続され且つ通信機能を増強された複数のプロセッサを有するマルチプロセッサ装置であって、
前記複数の通信機能を増強されたプロセッサのそれぞれが、
計算タスクを実行する手段と、
データ・アイテムを保持する手段と、
近隣の増強されたプロセッサへの通信を調整する手段と、
通信データを選択的に指向させる手段とを備え、
計算タスクを実行する前記手段が、データを、前記データ・アイテムを保持する手段へ渡し、またそれから渡され、
前記調整する手段が、構成情報を前記通信データを選択的に指向させる手段へ与えて、データ・アイテムを前記データ・アイテムを保持する手段により近隣の増強されたプロセッサへ送信し、またそれから受信することを可能にする
マルチプロセッサ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願の相互参照］
本出願は、２００３年２月１２日に出願した特許仮出願シリアルＮｏ．１０／３６５，０８９の一部継続出願である。
【０００２】
［技術分野］
本発明は、汎用スーパーコンピュータ・アーキテクチャの分野に関し、特に、多数のマルチプロセッサ・システム、及びそのようなシステムのプロセッサ内及びそれらの間の両方においてデータを転送することに関する。
【背景技術】
【０００３】
計算することが出現して以来、メモリからデータにアクセスするのに要する時間は、計算処理時間に対して絶え間なく増大してきた。ベクトル・プロセッサは、計算を組み立てラインの要領で実行することにより、繰り返し計算に関してプロセッサとメモリとの間のロード／ストア時間を最小にするよう１９７０年代に開発された。１９８０年代の遅くに、マルチプロセッサ・アーキテクチャの出現により、プロセッサ速度及びローカル・メモリ・アクセスは、プロセッサ間の通信より著しく速くなり、プロセッサ間の通信が、合計計算時間を完全に占めた。
【０００４】
１９８０年代の遅く及び１９９０年代の間に、幾つかの会社が、新生のマイクロプロセッサのパワーを単一の「スーパーコンピュータ」に組み込むアイデアを促進するため設立された。Ｔｈｉｎｋｉｎｇ  Ｍａｃｈｉｎｅｓ  Ｉｎｃ．により作られたコネクション・マシン（ＣＭ）に特別の関心があった（Ｈｉｉｌｓの米国特許Ｎｏ．４，５９８，４００、Ｔｈｅｉｌ他の米国特許Ｎｏ．４，８０５，０９１及び米国特許Ｎｏ．４，８１４，９７３、Ｈｉｉｌｓの米国特許Ｎｏ．５，５３５，４０８、Ｈｉｉｌｓの米国特許Ｎｏ．５，５９０，２８３、及びＷａｄｅ他の米国特許Ｎｏ．６，２１９，７７５参照）。ＣＭは、スーパーコンピュータのフィージビリティ（実現可能性）を多数のプロセッサに基づいて実証したが、しかし以下で説明する「通信問題」と呼ばれるであろうものの犠牲になった。理論上では、ＣＭは、非常にすばらしい「ピーク」速度を有するが、しかし実際には、ＣＭは、計算時間対通信時間の比により測定されるような、単一のディジット効率より小さいディジット効率しか達成しないであろう。今まで、効率は、更に以下で説明するであろう多くの理由のため改善しなかった。主として、この効率の欠如は、通信速度がプロセッサ速度について行けなかったためである。Ｃｒａｙ  Ｉｎｃ．の技師長（ＣＴＯ）による高性能ワイヤ・ニューズレターの２００６年３月号における最近の引用：
「…しかし、それは広く認識されているように、科学計算がコモディティ・プラットフォームへ移行するとき、帯域幅及び待ち時間の両方に関する相互接続の性能は、アプリケーション性能全体についての制限要因になり、そして今日までボトルネックのままである。」（２００６年３月２４日、ＨＰＣｗｉｒｅでのＣｒａｙのＣＴＯのＳｔｅｖｅ  Ｓｃｏｔｔ）
を考えてみる。この記述は、Ｃｒａｙが「規格品」（ＣＯＴＳ）フレームワークの範囲を超えた特別目的のコンピュータを作ることへシフトすることを説明するためになされた。これは、その名前が汎用スーパーコンピューティングの同義的である会社による顕著なシフトである。それにも拘わらず、それは、通信「ボトルネック」の程度を考慮すると妥当なシフトである。
【０００５】
特定の問題に直面している既存のマルチプロセッサ・スーパーコンピュータ・システムに目を向けると、システムの一般的性質及び利用の理解を必要とする。マルチプロセッサ・システムは、多数の相互接続されたプロセッサから構成されている。最大且つ最も強力なシステムは、しばしば、スーパーコンピュータと呼ばれる。スーパーコンピュータは、天気予報のような最も計算を必要とするアプリケーションのため用いられる。これらのアプリケーションは、計算タスク全体の一部分を各プロセッサに割り当てることにより、相互接続されたプロセッサにわたって分配される。しかしながら、計算全体の一部分でさえも完了するためには、各プロセッサは、中間結果を他のプロセッサに通信しなければならない。プロセッサ間の通信は、多くの理由のためマルチプロセッサの性能に悪影響を及ぼす。詳細には、第１の問題が、２つのプロセッサ・システム間の通信においてさえ生じ、そこにおいては、性能は、プロセッサ間のオフチップ通信が一般的にオンプロセッサ計算より非常に遅いので悪影響を受ける。
【０００６】
第２の問題は、マルチプロセッサに参加するプロセッサの数が増大することに関連する。本質的に、全てのプロセッサを他の全てのプロセッサに直接に接続することは、急速に実際的でなくなる。そういうことで、いずれの２つ又はそれより多いプロセッサ間の通信は、中間のプロセッサを介してルーティングされそうであり、更にルート上のプロセッサの数に等しい少なくとも１つのファクターにより通信速度を低下させる。
【０００７】
第３の問題は、データが全てのプロセッサに並列にルーティングされて、そのためにそのようなスーパーコンピュータ・システムが設計されている並列計算をサポートしなければならないことに関連する。即ち、並列に計算するため、全てのプロセッサは、データを同時に受け取ることができなければならない。同時のデータ受け取りは、可能性のある競合又は他の送信による送信のブロッキング（阻止）の故に通信の更なる劣化に至る。
【０００８】
第４の問題は、資源に対するブロッキング及び他のそのような競合に関連する。ブロッキングを排除し、そしてさもなければ性能を最適化するため、送信をスケジューリングしなければならない。全体のシステム設計に依存して、送信スケジューリングは、追加の時間を要求し得る。システム・ソフトウエア及びプロトコルを利用して、リアルタイム送信を要求するスケジュールと、更に性能の全体的劣化に寄与するそのスケジュール及び宛先アドレスの復号を実行する。
【０００９】
第５の問題は、特定のマルチプロセッサ・システム内のプロセッサの単なる数と関連する。プロセッサの数が増大するにつれ、物理的システムの大きさは、対応して増大する。この物理的大きさの増大はまた、マルチプロセッサ内の信号距離及び送信時間を増大させる。
【００１０】
第６の問題は、アイドル回路（即ち、全ての使用可能な資源の過小の使用）をもたらすシステム不均衡と関連する。不均衡の例は、ローカル速度とグローバル速度との不一致、及び／又は通信速度と計算速度との不一致を含む。そのような不均衡の効果は、より遅い構成要素がそれらのタスクを完了するまで或る一定のシステム構成要素を遅延又はアイドリング状態にさせることである。
【００１１】
第７の問題は更に、プロセッサの数が増大するにつれてネットワークが複雑さになることと関連する。固定のオフチップ帯域幅は、増大する数のチャネル間で共用されねばならず、それにより個々のチャネル帯域幅を低減させる。
【００１２】
第８の問題は、キャッシュの使用と、その結果生じる共用メモリと関連したコヒーレンス通信とが、通信に専用されるマルチプロセッサの資源を実質的に増大させることができることである。
【００１３】
上記で説明した問題の見地から、なぜプロセッサの数の増大と共に性能が低減することになるかを理解することができる。追加のプロセッサ間の通信の増大は、計算時間の減少量より多い時間を要求する。そのような結果又は効果を生じるアーキテクチャ／計算は、スケーラビリティを欠くと言われる。
【００１４】
通信問題の大きさは、複数のプロセッサ・スーパーコンピュータで明らかであり、そこにおいては、通信が合計の計算時間の９０％又はそれより多い割合を消費しそうであり、その結果そのようなスーパーコンピュータの全体的計算性能の低下をもたらす。
【発明の開示】
【発明が解決しようとする課題】
【００１５】
そういうわけで、前述の問題に鑑みて、プロセッサ及びメモリ速度の増大にも拘わらず、マルチプロセッサ・システムの相対的に弱い性能に対処するためのシステム及び方法に対する必要性が存在する。特に、マルチプロセッサ環境内のプロセッサ間の通信遅延に対して解法を与える必要性が存在する。
【００１６】
マルチプロセッサ・システムの全体性能が個々の要素プロセッサの数に相対的に正比例して増大するスケーラブルなマルチプロセッサ・システムを提供する更なる必要性が存在する。要するに、前述したような通信問題の重大は、計算を改善するため何年もなされてきた努力に匹敵する回路及びソフトウエアの両方における努力に価値を与えるものである。実際は、マルチプロセッサの全ての計算タスクは、基底をなす通信タスクを有し、従って、「通信問題」に対する解法は、将来のマルチプロセッサ性能に広範囲の重大な影響を与えるであろう。我々が最終的に求める性能は、真に大量のプロセッサを有するマルチプロセッサの形式で具現されるであろう。
【課題を解決するための手段】
【００１７】
本発明は、通信時間を最小化し且つスケーラブルなハードウエア／ソフトウエア組み合わせを生成し、それにより最適な性能が数百万、数十億或いはそれを超えた数のプロセッサ・カウント数を有する汎用マルチプロセッサで実現されることができるシステム及び方法を指向している。本発明のシステム及び方法は、大量のマルチプロセッサ・システムに中に組み込まれている従来のプロセッサの中に見られる論理演算及び算術演算ユニットの従来の補足に加えてプログラム可能なオンプロセッサ通信ユニットを組み込む。本発明のシステム及び方法は、大量のマルチプロセッサ・システムに使用の通信を増強したプロセッサを提供する。
【００１８】
本発明は更に、本発明の特定の構成を示す添付図面を参照して説明される。しかしながら、添付図面に示される発明は単に例示としてのみ示されていることに注目されたい。以下に説明されそして図面に示される様々な構成要素及びそれら構成要素の組み合わせは、本発明の趣旨及び範囲内に依然ある構成を結果として生じるよう異なって構成及び編成されることができる。
【発明を実施するための最良の形態】
【００１９】
本発明は、大量のマルチプロセッサ・システムにおけるプロセッサ内及びそれらの間での通信を増強するシステム及び方法を指向している。本発明は、通信アルゴリズムをプログラミングすることを可能にするよう構成されているハードウエア及びソフトウエアを提供する。最適なアルゴリズム性能は、マルチプロセッサ壁時計時間（ｗａｌｌ  ｃｌｏｃｋ  ｔｉｍｅ）に関して増すことができる。本発明は、プロセッサの数が著しく増大するときでさえ、妥協しないスケーラブルな性能を与える。詳細には、本発明は、スカラ・レジスタ又はベクトル・レジスタに含まれる計算タスクを実行するようにＣレジスタに含まれる通信タスクを実行するプログラム可能な通信ユニットを含む増強されたプロセッサの生成に関係する。本発明の通信ユニットは、プロセッサのネットワークとＣレジスタとの間のトラフィックを調整する。Ｃレジスタは、近隣プロセッサの同等のレジスタと直接に通信する。プロセッサはまた、通信タスクの完了に直ちに続く計算タスク又は論理タスクを実行することができる従来のＣＰＵユニットを含む。
【００２０】
本発明は、添付図面及び１又はそれより多い例示的実施形態を参照して以下に説明される。本明細書における説明は単に例示を目的とし、本発明を特定の実施形態又は開示のステップ、手順又は構成要素に限定する、さもなければそれらに閉じ込める意図はまったくないことを理解すべきである。
【００２１】
図面に言及すると、図１には、好適なハイパーキューブ相互接続を有する例示的な１６個のプロセッサのマルチプロセッサ・システム１００が示されている。プロセッサは、１０１−１１６の参照番号が付されている。プロセッサ１０１−１１６の数は、単に説明のために選択されたのであり、本明細書で説明される概念及び本発明はまた、全体として、数百万、数十億或いはそれを超えた数のプロセッサを有する実施形態に適用可能であろう。プロセッサ１０１−１１６は、それぞれ、別々のチップ上にあることができるであろうが、またより確実には複数のプロセッサ１０１−１１６が単一のチップ上にあることができるであろう。この相互接続の方法に従って、いずれの１つのプロセッサから他のプロセッサへの多数の相互接続が存在する。相互接続は、図１において線により示されるワイヤにより双方向であることを仮定する。本発明の一実施形態において、各プロセッサ１０１−１１６は、近隣のプロセッサに相互接続するためのポートを有する。例えば、そして示されるように、プロセッサ１０１のポート１２１、１２２、１２３、１２４は、個々のプロセッサ１０２、１０３、１０５及び１０９に対する接続を与える。
【００２２】
本発明のマルチプロセッサ・ネットワークは、図１を類似の図に組み込むことにより、各プロセッサ１０１、１０２、１０３、１０４以下等々が１６個のプロセッサと置換されることにより、例えば２５６個のプロセッサに拡張されることができる。個々のチャネル１２１、１２２、１２３、１２４以下等々が、各プロセッサに対する合計８個の接続（ポート）のため図１のプロセッサに対して１つづつ接続される１６個のチャネルと置換される。プロセッサの数は更に、追加の組み込みにより反復的要領で増大されることができる。
【００２３】
一般的に、Ｐプロセッサ・ハイパーキューブは、１プロセッサ当たりｌｏｇ２Ｐ個の双方向接続を有する。ハイパーキューブ相互接続は、通常のものであり、周知である。Ｐプロセッサ・システムの最大（ピーク）速度は、個々のプロセッサの速度のＰ倍であるが、しかし先に示したように、マルチプロセッサ・ハイパーキューブ又は他の相互接続スキームの現在の実際性能は、典型的にはピークの１０％より小さい。
【００２４】
並列計算は、並列通信により支えなければならない。理想的には、これは、全てのプロセッサ１０１−１１６の間の直接接続により達成されるであろう。しかしながら、プロセッサの数Ｐが増大するに伴い、そのような接続は、製造するのに急速に実際的でなくなる。相互接続理論は、より少ない接続を用いた全て対全ての接続を最良にシミュレートする方法を与える。最も単純で最も普及しているものは、１次元、２次元及び３次元の網目状ネットワークである。本発明は、通信が個々のチャネルのレベルでプログラム可能であるハイパーキューブ・ネットワークに基づいている。これは、最適な通信アルゴリズムの実現を可能にし、そしてネットワーク競合、デッドロック及びレジスタ・オーバーフローの問題を排除する。
【００２５】
本発明に従って、通信タスクは、どのプロセッサからもその宛先プロセッサへ全ての通信サイクルで１データの平均レートで実行される。これは、たとえデータが中間のプロセッサを通ってその宛先に達しなければならない場合でもそのとおりである。個々のデータがその宛先に達するために数サイクルを要求するにも拘わらず、同じ時間で、他のデータもまた、それらの宛先に達し、従って、１通信サイクル当たり１の平均結果を達成する。換言すると、通信タスクは、並列／ベクトルのように実行される。
【００２６】
マルチプロセッサ環境の中の大部分の通信は、「直接」接続が全ての個々のプロセッサの間に存在しないので、中間のプロセッサを介してルーティングされなければならない。通信ルート及び送信タイミングの収集（ｃｏｌｌｅｃｔｉｏｎ）は、スケジュールと呼ばれる。スケジュールは、ネットワーク及び通信タスクの両方に依存する。スケジュールは、通信アルゴリズムにより与えられ、そして各ワイヤ又はチャネル上で各通信サイクルで送信されるべきであるデータを指定する。最適スケジュールは、高速フーリエ変換（ＦＦＴ）に対して要求される通信タスクのような通信タスクの最も共通なものに対して存在する。例えば、Ｓｗａｒｚｔｒａｕｂｅｒ，Ｐ．Ｎ．及びＨａｍｍｏｎｄ，Ｓ．Ｗ．「トーラス及びハイパーキューブ・マルチコンピュータについての最適ＦＦＴの比較（Ａ  Ｃｏｍｐａｒｉｓｏｎ  ｏｆ  Ｏｐｔｉｍａｌ  ＦＦＴ  ｏｎ  Ｔｏｒｕｓ  ａｎｄ  Ｈｙｐｅｒｃｕｂｅ  Ｍｕｌｔｉｃｏｍｐｕｔｅｒｓ）」（Ｐａｒａｌｅｌｌ  Ｃｏｍｐｕｔｉｎｇ、２７（２００１年）８４７−８５９頁）を参照されたい。
【００２７】
本発明は、通信の速度を速めるためのツール、即ち、アルゴリズムの最適な実行をサポートするアルゴリズム及びハードウエアを導入する。大きいクラスの通信タスクに対して、ルート又はスケジュールは、有効なデータが全てのプロセッサ１０１−１１６にどの通信サイクルでも平均して到達するように見つけられることができる。「有効な」データは、そのルートに沿った中間プロセッサではなくてその宛先に到達したデータを意味する。最適な通信アルゴリズムは、例えば、この節の後の方で説明されるであろう。
【００２８】
最初にハードウエア構成要素に向くと、本発明は、アルゴリズムのスケーラビリティをスケーラブルなハードウエア／ソフトウエア・マルチプロセッサに変換するため要求されるハードウエアを与える。即ち、ハードウエアは、アルゴリズム性能をハードウエアの「壁時計時間」に変換する。
【００２９】
図２Ａは、図１のプロセッサ１０１−１１６のいずれの１つに含まれる構成要素を示す。詳細には、図２に示されたプロセッサ１０１は、従来の算術演算ユニット及びブール演算ユニット（図示せず）を有するＣＰＵ２０４、並びにローカル・メモリ２０６を含む。ローカル・メモリ２０６は、マルチプロセッサ・システム１００の合計メモリに寄与する。換言すると、大容量のメモリ・サイズは、多数のプロセッサ１０１の利用により達成される。プロセッサ１０１が通信ユニット２０５、Ｃレジスタ２０１、ネットワークからレジスタへのデマルチプレクサ・スイッチ（「ネットワーク／レジスタ・デマルチプレクサ・スイッチ」とも記す。）２０２、及びレジスタからネットワークへのマルチプレクサ・スイッチ（「レジスタ／ネットワーク・マルチプレクサ・スイッチ」とも記す。）２０３を含むのは重要である。
【００３０】
通信ユニット２０５は、スイッチ２０２、２０３を必要に応じて設定することによりネットワーク・トラフィックを調整する。通信ユニット２０５は、スイッチ２０２、２０３を設定して、プロセッサ１０１の各通信サイクル中に新しい構成を実現するようプログラムされる。通信ユニット２０５により与えられるスイッチ設定の構成は、実行時に動的に計算され、又はローカル・メモリ２０６のようなデータ記憶装置からロードされる静的情報であり得る。Ｃレジスタ２０１に含まれる通信タスクを実行する。Ｃレジスタ２０１は、ネットワーク上の他のプロセッサ１０２、１０３、１０５及び１０９の中の近隣のＣレジスタにスイッチ２０２、２０３を介して直接に接続される。文脈的には、本発明のＣレジスタは、ベクトル・レジスタがベクトル計算に対して与えるものを通信に対して与える。
【００３１】
動作において、そして図２Ｂに示されるように、本発明における通信タスクは、ステップ２１０１に示されるように、ローカル・メモリ２０６からＣＰＵ２０４を介してＣレジスタ２０１へロードすることで始まる。プログラム可能な通信ユニット２０５は、ステップ２１２に示されるように、アルゴリズムをリアルタイムで実行して、スイッチ２０２、２０３に関する設定を決定するか、又は前に格納されている設定を取得するかのいずれかを行う。通信サイクルは、ステップ２１４において、通信ユニット２０５によるスイッチ２０２、２０３の設定を続ける。次いで、スイッチは、ステップ２１６において作動されて、Ｃレジスタ２０１からネットワーク上へのデータの送信を生じさせる。より詳細には、データは、近隣のプロセッサの類似のレジスタに送信される。それに続く送信は、スイッチ２０２、２０３の設定と同時である。サイクルが進行するにつれ、Ｃレジスタ２０１のコンテンツは、一時データから常駐データへ進展し、その時点でサイクルは終了する。ベクトル・レジスタと非常に似て、Ｃレジスタ２０１の長さは、出来るだけ長いように、好ましくはＰ、即ちマルチプロセッサ・システムで利用されるプロセッサの数より大きい値に選定される。また、ユニプロセッサのベクトル・レジスタのように、通信サイクルは、通信タスクを完了するため反復されねばならない。通信タスクの完了に続いて、Ｃレジスタ２０１は、スカラ計算又はベクトル計算のためＣＰＵ２０４に対して使用可能になる。
【００３２】
本発明の一実施形態において、基本的通信命令は、次の形式である。
ＴＲＲＣ  ＩＰ  ＲＣＡ  ＴＣＡ
ここで、ＴＲＲＣは送信／受信命令であり、ＩＰはｌｏｇ２Ｐ個のポートのうちの１つである。ＲＣＡは、受信されるデータのＣレジスタ・アドレスであり、そしてＴＣＡは、送信されるデータのＣレジスタ・アドレスである。通信ユニットは、最大ｌｏｇ２Ｐ個のこれらの命令を、各ポートＩＰに対して１つ実行しなければならず、そしてスイッチ２０２、２０３を各通信サイクルに対して設定しなければならない。Ｃレジスタ・アドレスＲＣＡ、ＴＣＡは、通信タスクに対する最適スケジュール（方法）から得られる。一実施形態において、スケジュール構成は、単一の通信サイクルの最適時間での一時データの再送信を可能にする。
【００３３】
一局面において、本発明のシステム及び方法は、オンプロセッサ（ｏｎ−ｐｒｏｃｅｓｓｏｒ）速度に対する遅いオフプロセッサ（ｏｆｆ−ｐｒｏｃｅｓｓｏｒ）通信の関係に対処する。詳細には、本発明は、上記で説明したように、データが計算のため使用可能になる前に生じるオフチップ送信の数を最小にする。データがユニプロセッサ環境において後続のベクトル処理のためメモリから抽出されるのと非常に似たように、データは、ネットワークから抽出される。イン・ルート（ｉｎ  ｒｏｕｔｅ）又は一時的データは、ネットワーク上を後続の通信サイクルで戻るよう送られる。動的設定に対してオンチップ・スイッチを設定するため、通信速度とプロセッサ速度との差を利用する。
【００３４】
別の局面において、本発明は、ネットワーク競合に対処する。プログラム可能な通信は、個々のワイヤ又はチャネルのレベルで与えられる。これはまた、デッドロック及びレジスタ・オーバーフローの問題を避け、そして待ち時間を「隠す（ｈｉｄｅ）」最適な通信アルゴリズムの実行を可能にする。
【００３５】
別の局面において、並列通信は、並列計算の支援で与えられる。それがアルゴリズム的に可能である場合、個々のワイヤのレベルでのプログラム可能な通信は、全てのプロセッサに対する並列通信を各通信サイクルについて保証する。
【００３６】
更に別の局面において、本発明は、ハードウエア・ルーティングと関連するネットワーク・オーバーヘッドの問題に対処する。低レベルのプログラム可能な通信の実現は、ヘッダ、プロトコル、及びハードウエア・ルータにより従来要求される通信オーバーヘッドを排除する。
【００３７】
更に別の局面において、本発明は、システムの均衡を与える。オフプロセッサ通信がシステムの最も遅い構成要素をそのままにしておくので、本発明は、オフプロセッサ・イベントの持続時間を利用して、オンチップの細粒度動的スイッチングを実行する。ＣＰＵの速度、及びローカル・メモリが、データをネットワークから検索する速度の或る倍数として選定される。従って、性能は、最終的に、個々のプロセッサの速度よりむしろプロセッサの数に依存する。
【００３８】
別の局面において、本発明は、マルチプロセッサにおける固定のピン・カウント数の問題に対処する。Ｐ個のプロセッサを有するマルチプロセッサのチャネル帯域幅は、１つのプロセッサの通信ピン数Ｌをｌｏｇ２Ｐで除算した値により決定される。最大性能は、単一のピンに対応する各チャネル及びＰ＝２Ｌ個のプロセッサを用いて達成される。現在のピン・カウント数は、２００８年には１０００個に達すると予想される。従って、最大性能は、ハイパーキューブ・チャネルが単一のピンに対応するならば達成されるであろうし、それは、Ｐ＝２１０００のプロセッサ・カウント数を提案する。しかしながら、そのような製造は、現在実施可能性がなく、従って、各チャネルは、複数のピンに対応するよう設計されている。最大性能がより大きい帯域幅を持つ一層少ないプロセッサではなくより小さい個々のチャネル帯域幅を持つ多くのプロセッサにより最終的に得られることに注目することは興味深い。（Ｓｗａｒｚｔｒａｕｂｅｒ，Ｐ．Ｎ．「通信マシン（Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｍａｃｈｉｎｅ）」（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｊｏｕｒｎａｌ  ｏｆ  Ｈｉｇｈ  Ｓｐｅｅｄ  Ｃｏｍｐｕｔｉｎｇ、１２（２００４年）、７５頁参照）。
【００３９】
更に別の局面において、本発明は、既存のシステムにおいてキャッシュ・コヒーレンシーを維持することにより誘発される余分な通信を排除する。この問題は、本発明のメモリがローカルでありそして極めて多数のプロセッサの結果として計算割合に類似する大量の割合に達するので排除される。ローカル・メモリはまた、大きい共用メモリと関連した多数のメモリ・バンクと関連する問題を排除する。並列計算に関する現実の理由は、「ローカリティ（局所性）」であると言われてきた。
【００４０】
更に別の局面において、本発明は、ハードウエア／ソフトウエアの組み合わせのスケーラビリティを与える。本明細書で説明されるアーキテクチャは、アルゴリズムに比例して拡大縮小するであろう。例えば、マルチプロセッサ通信アルゴリズムがプロセッサの数Ｐに比例して拡大縮小する場合、ハードウエア／ソフトウエア性能もＰに比例して増大するであろう。
【００４１】
我々は、ここで、本発明のアルゴリズム及びソフトウエアの構成要素に目を向けると、それは、ハイパーキューブ上で実行される「転置」又は「コーナ・ターニング（ｃｏｒｎｅｒ  ｔｕｒｎｉｎｇ）」通信タスクの一例により提示される。Ｐ個のプロセッサにわたり列状に分配される２次元Ｐ×Ｐアレイｘｉｊがあると仮定する。即ち、ｘｉｊは、全てのｉに関してプロセッサｊに配置される。共通の通信タスクは、アレイの行状に再分配され、それによりｘｉｊはここでは全てのｉに関してプロセッサｉに配置される。転置についての最適アルゴリズム又はスケジュールが、一例として示されるであろう。図３Ａに示されるように８個のプロセッサ（ｐ＝０から７）にわたり分配される８×８アレイｘｉｊの転置を考える。
【００４２】
図３Ｂは、転置の４つの通信サイクル３０６、３０７、３０８、３０９のそれぞれの間にランダムに選定されるプロセッサｐ＝５のコンテンツを示す。最も左のボックス３０１は、元のコンテンツ、即ち、図３Ａからの第５列に対応する。４つの通信サイクル３０６、３０７、３０８、３０９の後に、プロセッサｐ＝５の最も右のボックス３０５が、アレイの第５行を含む。類似の図形が、ｐ＝０からｐ＝７までについてプロセッサｐに配置された第ｐ列に関して表示されることができるであろう。図３Ｂの中の各ボックスをよく見ると、３つのエレメントが８個のプロセッサ・ハイパーキューブ・ネットワークの３つの近隣のプロセッサから受信されたエレメントに対応する各通信サイクル３０６−３０９で置き換えられることが分かる。各サイクルについて、置き換えられたエレメントはまた、近隣のプロセッサに送信される。
【００４３】
６４個のエレメントの合計は、４個のエレメントを単一のワイヤで送信するのに要する時間と同じ時間でハイパーキューブ・ネットワークを介してそれらの宛先にルーティングされる。一般的に、Ｐ２個のエレメントは、１通信サイクル当たり平均２Ｐ個のエレメントについてＰ／２サイクルでそれらの宛先に到着する。従って、本発明の通信システム及び方法は、任意のＰに関してＰに対して線形にスケーリングする。
【００４４】
本発明においては、プロセッサ１０１上の全構成要素の速度は、通信サイクルに基づいている。従って、Ｃレジスタ２０１、ローカル・メモリ２０６及びＣＰＵ２０４の構成要素を含む全システムの速度は、互いに関して均衡化される。マルチプロセッサ１００の性能は、現在の実施であるように、プロセッサ１０１−１１６の中央制御のために設計された個々のプロセッサの速度とは異なり、それが備える極めて多数のプロセッサ１０１−１１６に依存する。発明の名称が「マルチプルライン・マルチプロセッサ・システム（Ｍｕｌｔｉｐｌｅｌｉｅｎｅ  Ｍｕｌｔｉｐｒｏｃｅｓｓｏｒ  Ｓｙｓｔｅｍ）」である米国特許Ｎｏ．５，６８９，７２２のような従来技術のシステムは、プロセッサ対プロセッサ通信の効率的実現に焦点を当てているが、しかし各構成要素プロセッサのための通信構成要素、又は当該通信構成要素を均衡したスケーラブルなシステムの中に統合化することを教示していない。
【００４５】
マルチプロセッサ・システムにおける通信の従来の制御は、Ｅｍｂｅｒｓｏｎ（米国特許Ｎｏ．６，９５７，３１８）又はＨｉｌｌｓ（米国特許Ｎｏ．４，５９８，４００）において提示されるような個別のユニプロセッサによるものである。しかしながら、本発明の「マルチコンピュータ」の実施形態においては、分散型制御である。命令は、ネットワークを超えてハイパーキューブについて定義されることができるブロードキャスト・トリー（ｂｒｏａｄｃａｓｔ  ｔｒｅｅ）を介して、いずれの単一のプロセッサ１０１−１１６から他の全てのプロセッサ１０１−１１６へ分配される。そのような実施形態は、プロセッサ１０１−１１６を区切ってサブタスクについて働くことができるフレームワークを与える。この制御の方法は、ここで一般的に、テラ・グリッド（Ｔｅｒａ  Ｇｒｉｄ）、グローバル・グリッド（Ｇｌｏｂａｌ  Ｇｒｉｄ）上、又はより単純にウェブ（Ｗｅｂ）上の複数のコンピュータの文脈において受け入れられる。
【００４６】
本発明のマルチプロセッサ１００のハイパーキューブ・ネットワークは、増強されたプロセッサ間通信を並列に与え、そしてアルゴリズムの性能に比例して拡大縮小する性能を与える。それにも拘わらず、本発明は、複数のプロセッサのいずれのネットワークで構成され、そして実現されることができる。個々のワイヤ又はチャネルのレベルでの通信は、いずれのネットワーク・トポロジーの中に埋め込まれることができる一般化されたプロセッサを与える。例えば、図２Ａの４ポート型のプロセッサは、１６ノード・ハイパーキューブ、２次元メッシュ、又は１次元リングの中に埋め込まれることができる。後者のケースでは、チャネルの帯域幅は、それらがピンの数を２倍にすることができるであろうから、２倍になるであろう。それぞれのケースにおいて、通信ユニット２０６は、異なるネットワーク・トポロジーのため異なる最適なアルゴリズムに対応する異なるプログラムを実行するであろう。そのようなプロセッサはまた、通常の均質なネットワークの組み合わせとして構成される非均質のネットワークの中に埋め込まれることができる。ピンのセットＡは、ネットワーク上の近隣Ｂに対応するようプログラムされることができる。このようにして、プロセッサ１０１は、ＣＯＴＳネットワーク・アプリケーションについて汎用通信を与える。
【００４７】
上記の記述から、本発明は、明らかでありそして本方法及び装置に対して固有である他の利点と共に、前述した全ての目標及び目的を達成するよう十分に適合された発明であることが分かるであろう。或る一定の特徴及び副組み合わせが有用であり、そして他の特徴及び副組み合わせを参照することなしに採用され得ることが理解されるであろう。これは、特許請求の範囲により及びその範囲内に意図されるものである。本発明の多くの可能性のある実施形態が本発明の範囲から逸脱することなしに行い得るので、本明細書で説明し又は添付図面で示された全ての事項は例示でありそして限定ではないと解釈すべきであることが理解されるべきである。
【００４８】
上記で説明しそして図面に示された構成は、一例としてのみ提示され、そして本発明の概念及び原理を限定することを意図していない。本明細書で用いられているように、用語「有する」及び／又は「含む」及び他の含有を意味する用語は、要件ではなくむしろ含有を示す用語である。
【図面の簡単な説明】
【００４９】
【図１】図１は、本発明の一実施形態に従った１６個のプロセッサ・システムのためのハイパーキューブ・ネットワーク相互接続を示す。
【図２Ａ】図２Ａは、プログラム可能な通信ユニット、Ｃレジスタ、スイッチ、ローカル・メモリ及び通常の算術演算／ブール演算ＣＰＵユニットを有する本発明の例示的プロセッサの一部の構成要素のブロック図を示す。
【図２Ｂ】図２Ｂは、図２Ａのプロセッサにおける通信イベントに関する例示的論理フローを示す図である。
【図３Ａ】図３Ａは、８個のプロセッサ（ｐ＝０から７）にわたり分配される８×８アレイｘｉｊの転置を考えるための図である。
【図３Ｂ】図３Ｂは、図３Ａに示されるように、８個のプロセッサにわたり列状に分配される８×８アレイの転置の実行中におけるプロセッサｐ＝５のＣレジスタの進展を示す。
【符号の説明】
【００５０】
１０１−１１６  プロセッサ
１２１、１２２、１２３、１２４  ポート
２０１  Ｃレジスタ
２０２  ネットワーク／レジスタ・デマルチプレクサ・スイッチ
２０３  レジスタ／ネットワーク・マルチプレクサ・スイッチ
２０４  ＣＰＵ
２０５  通信ユニット
２０６  ローカル・メモリ
【図１】
2007323656.tif 000003
【図２Ａ】
2007323656.tif 000004
【図２Ｂ】
2007323656.tif 000005
【図３Ａ】
2007323656.tif 000006
【図３Ｂ】
2007323656.tif 000007
【外国語明細書】
2007323656000001.pdf