(57)【特許請求の範囲】
【請求項１】
エラーについてコンピュータ・システムのあるノードから前記コンピュータ・システムの別のノードに送信される一連のデータ・パケットを検査する方法であって、前記データ・パケットのそれぞれが、チェック値を含み、
前記コンピュータ・システムの第１ノードから第２ノードへ前記データ・パケットを送信するステップと、
前記第１ノードによって前記第２ノードに送信された前記データ・パケットの前記チェック値の第１ｃｒｃを計算するとともに、該第１ｃｒｃを前記第１ノードに保存するステップと、
前記第２ノードによって前記第１ノードから受け入れられた前記データ・パケットの前記チェック値の第２ｃｒｃを計算するとともに、該第２ｃｒｃを前記第２ノードに保存するステップと、
前記第１ｃｒｃと前記第２ｃｒｃが一致するかどうかを判定するために、定義された時刻に前記第１ｃｒｃと前記第２ｃｒｃを比較するステップと
を含む方法。
【請求項２】
前記第２ｃｒｃを保存する前記ステップが、
前記第１ノードから前記データ・パケットを受信するステップと、
エラーについて前記受信されたデータ・パケットをテストするステップと、
エラーがない前記受信されたデータ・パケットだけを受け入れるステップと
を含む、請求項１に記載の方法。
【請求項３】
前記第２ｃｒｃを保存する前記ステップが、さらに、
前記第２ノード上にそれぞれ設けられた第２実行ＣＲＣモジュール内および第２ＣＲＣレジスタ内に前記第２ｃｒｃを保存するステップと、
前記データ・パケットの１つが受信される時に、前記受信された１つのデータ・パケットの前記チェック値だけ前記第２実行ＣＲＣモジュール内の前記第２ｃｒｃを増やすステップと、
前記受信された１つのデータ・パケットが、エラーなしである場合に、前記第２実行ＣＲＣモジュールから前記第２ＣＲＣレジスタに前記第２ｃｒｃをロードするステップと、
前記受信された１つのデータ・パケットが、エラーを有する場合に、前記第２ＣＲＣレジスタから前記第２実行ＣＲＣモジュールに前記第２ｃｒｃをロードするステップと
を含む、請求項２に記載の方法。
【請求項４】
前記送信するステップが、前記第１ノードで、前記データ・パケットが送信される前に、エラーについて前記データ・パケットのそれぞれをテストするステップを含み、
前記第１ｃｒｃを保存する前記ステップが、エラーがない前記テストされたデータ・パケットのみの前記チェック値だけ前記第１ｃｒｃを増やすステップを含む
請求項２に記載の方法。
【請求項５】
前記第１ｃｒｃを保存する前記ステップが、さらに、
前記第１ノード上にそれぞれ設けられた第１ＣＲＣレジスタ内および第１実行ＣＲＣモジュール内に前記第１ｃｒｃを保存するステップと、
前記データ・パケットの１つが前記第１ノードから送信される時に、前記１つのデータ・パケットの前記チェック値だけ前記第１実行ＣＲＣモジュール内の前記第１ｃｒｃを増やすステップと、
前記データ・パケットの前記１つがエラーなしである場合に、前記第１実行ＣＲＣモジュールの前記第１ｃｒｃ値を前記第１ＣＲＣレジスタにロードするステップと、
前記データ・パケットの前記１つがエラーを有する場合に、前記第１ＣＲＣレジスタの前記第１ｃｒｃ値を前記第１実行ＣＲＣモジュールにロードするステップと
を含む、請求項４に記載の方法。
【請求項６】
所定の時刻に前記第１ｃｒｃおよび前記第２ｃｒｃをリセットするステップをさらに含む、請求項１に記載の方法。
【請求項７】
エラーについてコンピュータ・システムのあるノードから前記コンピュータ・システムの別のノードに送信される一連のデータ・パケットを検査するシステムであって、前記データ・パケットのそれぞれが、チェック値を含み、
前記コンピュータ・システムの第１ノードから第２ノードへ前記データ・パケットを送信する手段と、
前記第１ノードによって前記第２ノードに送信された前記データ・パケットの前記チェック値の第１ｃｒｃを計算するとともに、該第１ｃｒｃを前記第１ノードに保存する手段と、
前記第２ノードによって前記第１ノードから受け入れられた前記データ・パケットの前記チェック値の第２ｃｒｃを計算するとともに、該第２ｃｒｃを前記第２ノードに保存する手段と、
前記第１ｃｒｃと前記第２ｃｒｃが一致するかどうかを判定するために、定義された時刻に前記第１ｃｒｃと前記第２ｃｒｃを比較する論理回路と
を含むシステム。
【請求項８】
前記第２ｃｒｃを保存する前記手段が、
前記第１ノードから前記データ・パケットを受信する手段と、
エラーについて前記受信されたデータ・パケットをテストする手段と、
エラーがない前記受信されたデータ・パケットだけを受け入れる手段と
を含む、請求項７に記載のシステム。
【請求項９】
前記第２ｃｒｃを保存する前記手段が、さらに、
前記第２ノード上に設けられ、前記第２ｃｒｃを保存する第２実行ＣＲＣモジュールと、
前記第２ノード上に設けられ、前記第２ｃｒｃを保存する第２ＣＲＣレジスタと、
前記データ・パケットの１つが受信される時に、前記受信された１つのデータ・パケットの前記チェック値だけ前記第２実行ＣＲＣモジュール内の前記第２ｃｒｃを増やす手段と、
前記受信された１つのデータ・パケットが、エラーなしである場合に、前記第２実行ＣＲＣ実行モジュールから前記第２ＣＲＣレジスタに前記第２ｃｒｃをロードし、前記受信された１つのデータ・パケットが、エラーを有する場合に、前記第２ＣＲＣレジスタから前記第２実行ＣＲＣモジュールに前記第２ｃｒｃをロードする制御論理ユニットと
を含む、請求項８に記載のシステム。
【請求項１０】
前記送信する手段が、前記第１ノードで、前記データ・パケットが送信される前に、エラーについて前記データ・パケットのそれぞれをテストする手段を含み、
前記第１ｃｒｃを保存する前記手段が、エラーがない前記テストされたデータ・パケットのみの前記チェック値だけ前記第１ｃｒｃを増やす手段を含む
請求項７に記載のシステム。
【請求項１１】
前記第１ｃｒｃを保存する前記手段が、さらに、
前記第１ノード上に設けられ、前記第１ｃｒｃを保存する第１ＣＲＣレジスタと、
前記第１ノード上に設けられ、前記第１ｃｒｃを保存する第１実行ＣＲＣモジュールと、
前記データ・パケットの１つが前記第１ノードから送信される時に、前記１つのデータ・パケットの前記チェック値だけ前記第１実行ＣＲＣモジュール内の前記第１ｃｒｃを増やす手段と、
前記データ・パケットの前記１つがエラーなしである場合に、前記第１実行ＣＲＣモジュールの前記第１ｃｒｃ値を前記第１ＣＲＣレジスタにロードし、前記データ・パケットの前記１つがエラーを有する場合に、前記第１ＣＲＣレジスタの前記第１ｃｒｃ値を前記第１実行ＣＲＣモジュールにロードする制御論理ユニットと
を含む、請求項１０に記載のシステム。
【請求項１２】
所定の時刻に前記第１ｃｒｃおよび前記第２ｃｒｃがリセットされる、請求項７に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、たとえば生命科学の分野での計算に適用される、分散メモリ・メッセージ受渡並列コンピュータの設計の分野およびシステム・ソフトウェアに関する。具体的には、本発明は、多数の並列アプリケーションによって使用されるグローバル通信をサポートするシステム・ソフトウェア・ライブラリに関する。
【背景技術】
【０００２】
米国仮出願番号６０／２７１，１２４、表題「A Massively ParallelSuperComputer」に、多数の計算ノードおよびより少数の入出力ノードからなるコンピュータが記載されている。これらのノードは、複数のネットワークによって接続される。具体的に言うと、整数最大値および整数最小値などの整数コンバイニング動作をサポートする二重機能ツリー・ネットワークである。
【０００３】
並列スーパーコンピュータには、プロセッサから別のプロセッサにメッセージの形で送られる、膨大な量のデータがある。これらのメッセージは、パリティ検査、ｃｒｃ検査などの標準的な技法によって破壊から保護されるが、これらの技法では、データのパリティまたはデータのｃｒｃが、あるプロセッサから別のプロセッサに送られるデータに含まれ、受取り側プロセッサによって計算され、比較される。しかし、比較を計算するのに使用される論理に障害がある場合、または、二重エラー障害がパリティ検出を免れるなどの場合には、いくつかのメッセージ・エラーが、検出されずに計算機を介して伝搬する場合がある。上で述べた米国仮出願番号６０／２７１，１２４に記載の計算機には、各マイクロ秒に２５６バイトを送る約１００００００個のリンクを有する約６４０００個のプロセッサがある。１０−１５に１つ程度の低いエラー率（極端に低いビット・エラー率である）であっても、１秒に１つのエラーが生じる。必要なものは、追加計算なしで、送信側と受信側の間でのデータ送信でエラーが発生しないことを保証する単純な手段である。
【特許文献１】米国仮出願番号６０／２７１，１２４
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明の目的は、並列スーパーコンピュータでの障害検出を改善することである。
【０００５】
本発明のもう１つの目的は、大量並列スーパーコンピュータのオーバーヘッドのない障害検出手順を提供することである。
【０００６】
本発明のもう１つの目的は、プロセッサの間で追加データを送るというペナルティをこうむらずに、並列スーパーコンピュータ内であるプロセッサから別のプロセッサに送られるデータの送信で発生する可能性があるエラーを検出する追加手段を提供することである。
【課題を解決するための手段】
【０００７】
上記および他の目的は、本発明を実施する障害分離技法によって達成される。一般に、本発明によれば、あるプロセッサから別のプロセッサに送られるすべてのデータと、あるプロセッサから別のプロセッサに受け取られるすべてのデータの、独立のｃｒｃ（巡回冗長検査）が保存される。各チェックポイントの終りに、ｃｒｃが比較される。ｃｒｃが一致しない場合には、エラーが発生している。ｃｒｃは、各チェックポイントでクリアされ、リスタートされる。
【０００８】
好ましい実施形態で、基本的な機能性は、所与のリンクを介して成功裡に送信されたすべてのパケット・データのＣＲＣを計算することである。このＣＲＣは、リンクの両端で行われ、これによって、正しく送信されたと思われるすべてのデータに対する独立の検査が可能になる。すべてのリンクが、このＣＲＣカバレッジを有し、このリンク・レベル検査で使用されるＣＲＣが、パケット転送プロトコルで使用されるＣＲＣと異なることが好ましい。この独立の検査に成功裡に合格する場合に、この独立の検査によって、データ・エラーが前の転送期間中に見逃された可能性が、事実上なくなる。
【０００９】
本発明のさらなる利益および長所は、本発明の好ましい実施形態を指定し、示す、添付図面に関して与えられる下の詳細な説明を検討することから明白になる。
【発明を実施するための最良の形態】
【００１０】
図１に、本発明を実施する大量並列コンピュータ・システム１０を示す。システム１０は、２１６＝６５５３６個のノード１２に基づくスケーラブル・ウルトラコンピュータ・コンピュータである。各ノード１２は、非常に単純であり、単一のＡＳＩＣおよび９個のＳＤＲＡＭ−ＤＤＲメモリ・チップからなる。ノードは、６つのネットワークを介して相互接続され、このネットワークの最高集合帯域幅は、６４×３２×３２物理３次元トーラスにノードをマッピングする最近傍リンクである。モードが、物理的に近いノードと、隣接するラックのノードと同一の帯域幅およびほぼ同一の待ち時間で通信するので、この相互接続に非対称性は事実上ない。これによって、単純なプログラミング・モデルが可能になる。ノードに動力を与えるＡＳＩＣは、システムオンアチップ（system-on-a-chip）技術に基づき、必要な機能性のすべてが組み込まれる。このＡＳＩＣには、ほとんどのＬ１キャッシュ・ミスでレジスタから９サイクル程度の極端に高帯域幅の４ＭＢの組込みＤＲＡＭも含まれる。ノード１２自体は、物理的に小さく、超高密度の処理が可能である。
【００１１】
図２は、システム１０の１つのノード１２のブロック図である。このノードには、２つの組込みコア２０および２２が含まれ、このコアのそれぞれは、２．８ＧＦのターゲット・ピーク性能を有する二重浮動小数点コアを有する。システム１０が、どのツリー・ノードでも短待ち時間で通信できるようにする仮想カットスルー経路指定をサポートすることが好ましい。また、メモリ・システムが、高帯域幅、短待ち時間のメモリ・アクセスおよびキャッシュ・アクセスのために設計されることが好ましい。ノード１２には、さらに、事前取出しバッファ２４および２６、ｅＤＲＡＭ３０、マルチポート式ＳＲＡＭバッファ３２、リンク・バッファ３４、インターフェース・モジュール３６、ＤＤＲユニット４０、およびｅＤＲＡＭの共用ディレクトリ４２が含まれる。
【００１２】
本発明の第２の側面によると、コンピュータ・システムが提供される。このコンピュータ・システムは、複数の処理装置を備えている。これら複数の処理装置の各々は、タスクを実行するように適合している。前記複数の処理装置の少なくとも２つは、エネルギー効率が異なる。スケジューラは、前記複数の処理装置の１つが実行する所定のタスクを、前記複数の処理装置にエネルギー効率が悪くなる部分順に前記所定のタスクの実行を受容するか拒絶するかどちらであるか問い合わせることを、前記所定のタスクのうちの１つを前記複数の処理装置のうちの１つが受容して実行し、前記所定のタスクを前記複数の処理装置のすべてが拒絶するまで続けることによりスケジューリングするように適合している。
【００１３】
さらに、物理的な計算機アーキテクチャは、図４の５２で表される３Ｄトーラスに最も密に結び付けられる。これは、エッジで「ラップ」される単純な３次元最近傍相互接続である。ＡＳＩＣの異なるラックの間に存在するものなどの飛行時間（time-of-flight）の差を除いて、すべての近傍が、等しい距離にあり、コードの書き込みおよび最適化が楽になる。最近傍リンクは、プロセッサ速度の４倍（各方向で２．８Ｇｂ／ｓ）を目標とする。したがって、各ノードが、４．２ＧＢ／ｓの集合帯域幅を有する６つの独立の両方向最近傍リンクをサポートする。たとえば、システム１０で、回路カードは、２×２×２サブキューブとして配線され、ラックごとに２つのミッドプレーンは、８×８×８サブキューブとして配線される。６４ｋ計算機全体は、６４×３２×３２トーラスである。
【００１４】
システム１０では、あるプロセッサから別のプロセッサへ送られるすべてのデータと、あるプロセッサから別のプロセッサへ受け取られるすべてのデータの、独立のｃｒｃが保存され、各チェックポイントの終りで、ｃｒｃが比較される。ｃｒｃが一致しない場合には、エラーが発生している。ｃｒｃは、各チェックポイントでクリアされ、リスタートされることが好ましい。
【００１５】
基本的な機能性は、所与のリンクを介して成功裡に送信されたすべてのパケット・データのＣＲＣを計算することである。このＣＲＣは、リンクの両端で行われ、これによって、正しく送信されたと思われるすべてのデータに対する独立の検査が可能になる。すべてのリンクが、このＣＲＣカバレッジを有し、このリンク・レベル検査で使用されるＣＲＣが、パケット転送プロトコルで使用されるＣＲＣと異なることが好ましい。この独立の検査に成功裡に合格する場合に、この独立の検査によって、データ・エラーが前の転送期間中に見逃された可能性が、事実上なくなる。この期間は、任意の長さの時間とすることができ、たとえば、少なくとも数分にすることができる。
【００１６】
この技法は、完全に別に行われるので、データ使用に関して、オーバーヘッドを必要としない。たとえば、リンク・レベルＣＲＣは、そのリンクがアクティブでない任意の時に、ＤＣＲを介して検査することができる。都合のよい時が、チェックポイント中である可能性が高い。データのサイズ、したがってＣＲＣのサイズは、ネットワーク・インターフェースのサイズによって決定される。トーラスの場合に、８ビット版を使用することができるが、ツリーの場合には、３２ビット版が適当である可能性がある。
【００１７】
好ましいリンク・レベルＣＲＣを、下で説明する。当初は、受信側ＣＲＣを、ツリー・ネットワークおよびトーラス構成の両方について同一とすることができ、このＣＲＣを、トーラス・アーキテクチャの送信側で使用することもできることに留意されたい。しかし、トーラスでは、再送信されない可能性があるパケットが送信されるので、トーラスの送信側リンク・レベルＣＲＣは、ツリーのＣＲＣとは異なる。
【００１８】
ツリー５０について、図５を参照すると、６０で示される送信側は、送信されるすべてのデータに基づくＣＲＣを累算する。再送信バッファから送信されるデータは、そのデータが既に実行ＣＲＣに含まれているので、含まれない。トークンおよび肯定応答は、ＣＲＣに含まれず、データ・パケットだけが含まれることに留意されたい。
【００１９】
図６に、ツリーの送信側リンク・レベルでのイベントのタイミングを示し、図７の表によって、この手順で使用される信号を識別する。
【００２０】
第２の手順が、ツリーではＣＲＣの受信側で使用され、トーラスでは送信側と受信側の両方のＣＲＣについて使用される。図８を参照して具体的に説明すると、受信側は、正しく受信されるすべてのデータに基づいてＣＲＣを累算する。これは、トーラスに関する送信側論理にも使用される。エラーなしと判定されるまで、このリンク・レベルＣＲＣにパケットを含めてはならないので、追加の特徴が使用される。受信されつつあり、潜在的に受け入れ可能なデータ・パケットである（「Valid」信号によって示される）可能性があるデータは、それを実行ＣＲＣモジュール６４にロードすることによって、実行ｃｒｃに含まれる。パケットの終りが見つかり、パケットがすべての保全性テストに合格する（packetaccept＝「１」）時に、実行ＣＲＣモジュール６４の出力が、受信側ＣＲＣレジスタ６６にキャプチャされる。これは、「Packet Accept」信号を介して示される。パケットが、エラーであることがわかるか、エラー回復プロトコルに起因して無視される場合には、実行ＣＲＣモジュール６４に、前に保存されたＣＲＣレジスタ６６の内容が事前ロードされる。この手順は、制御論理ユニット６８の制御下にあるが、これによって、ＣＲＣレジスタ６６に、リンクを介して受け入れられたすべてのデータのＣＲＣが含まれることが保証される。
【００２１】
入力信号のタイミング関係を、図９に示す。「受信されたバイト」を少なくとも１サイクルだけパイプライン化して、これらのタイミング要件を満たすことが好ましい可能性がある。図１０の表で、この手順で使用される信号を識別する。
【００２２】
本明細書で開示される発明が、上で述べた目的を満たすように十分に考慮されていることは明白であるが、当業者が多数の修正形態および実施形態を考案することができることを諒解されたい。添付の請求項が、本発明の真の趣旨および範囲に含まれるものとしてそのような修正形態および実施形態のすべてを含むことが意図されている。
【図面の簡単な説明】
【００２３】
【図１】本発明を実施する並列スーパーコンピュータの単純化された図である。
【図２】図１のスーパーコンピュータの処理ノードのブロック図である。
【図３】グローバル・コンバイニング・ツリーによって一緒に接続されたスーパーコンピュータのノードを示す図である。
【図４】トーラスの形で一緒に接続されたスーパーコンピュータのノードを示す図である。
【図５】ノード・リンクの送信側でチェック・サムを保存する回路および手順を示すブロック図である。
【図６】図５の回路で発生するさまざまなイベントの相対タイミングを示すタイミング図である。
【図７】図５の回路で使用される信号を識別する表である。
【図８】ｃｒｃを保存する第２の手順を示すブロック図である。
【図９】図８の回路で発生するさまざまなイベントの相対タイミングを示すタイミング図である。
【図１０】図８の回路で使用される信号を識別する表である。
【図１】
0003798750.tif 000002
【図２】
0003798750.tif 000003
【図３】
0003798750.tif 000004
【図４】
0003798750.tif 000005
【図５】
0003798750.tif 000006
【図６】
0003798750.tif 000007
【図７】
0003798750.tif 000008
【図８】
0003798750.tif 000009
【図９】
0003798750.tif 000010
【図１０】
0003798750.tif 000011