(57)【特許請求の範囲】
【請求項１】
分散並列処理システムを形成するように編成された複数の隣接するノード間で時刻（ＴＯＤ）イベントを同期させる方法であって、各ノードがＴＯＤインクリメンタを含み、
（ａ）各ノード内の前記ＴＯＤインクリメンタを、当該ＴＯＤインクリメンタに結合され且つ所定の周波数で動作する当該各ノード内の局所発信器から局所的に増分するステップと、
（ｂ）前記複数のノードのうち選択された１つのノードとの通信リンクを有する中央コントローラから、前記通信リンクを介して前記１つのノードにＴＯＤ設定パケットを送信し、当該パケット内の初期ＴＯＤ値を前記１つのノードに設定することにより、前記１つのノードをマスタ・ノードとして指定するステップと、
（ｃ）前記マスタ・ノード内のレジスタが前記所定の周波数の所定のサイクル数をカウントしたことに応答して、前記マスタ・ノード内で生成されたＴＯＤブロードキャスト・パケットを、前記マスタ・ノード内の前記ＴＯＤインクリメンタに基づき、送信パスを介して前記マスタ・ノードに隣接するノードにブロードキャストするステップと、
（ｄ）前記隣接するノードの各々において、前記マスタ・ノードから前記ＴＯＤブロードキャスト・パケットを受信したことに応答して、前記受信したＴＯＤブロードキャスト・パケット内の更新用のＴＯＤ値を当該各ノード内の前記ＴＯＤインクリメンタの値と比較し、前記更新用のＴＯＤ値が前記ＴＯＤインクリメンタの値より大きい場合は、前記ＴＯＤインクリメンタの値を前記更新用のＴＯＤ値に等しく更新し、前記更新用のＴＯＤ値が前記ＴＯＤインクリメンタの値より小さい場合は、前記ＴＯＤインクリメンタの値が前記更新用のＴＯＤ値に達するまで、前記ＴＯＤインクリメンタを前記所定の周波数よりも低い周波数のサイクルで増分するステップとを含む方法。
【請求項２】
前記隣接するノードの各々が、前記受信したＴＯＤブロードキャスト・パケットを当該各ノードから少なくとも１つの他のノードに再送信するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記ステップ（ｄ）が、前記隣接するノードの各々と前記マスタ・ノードとを接続する送信パスの遅延を計算し、当該計算された遅延に基づき、前記受信したＴＯＤブロードキャスト・パケット内の前記更新用のＴＯＤ値を調整するステップをさらに含む、請求項１に記載の方法。
【請求項４】
前記ステップ（ｃ）が、シーケンスＩＤ番号を前記ＴＯＤブロードキャスト・パケットに挿入するステップをさらに含む、請求項１に記載の方法。
【請求項５】
前記ステップ（ｃ）が、ブロードキャスト中の誤りを検出するためのチェックサムを前記ＴＯＤブロードキャスト・パケットに挿入するステップをさらに含む、請求項１に記載の方法。
【請求項６】
分散並列処理システムを形成するように編成された複数の隣接するノード間で時刻（ＴＯＤ）イベントを同期させる装置であって、各ノードがＴＯＤインクリメンタを含み、
前記複数のノードの各々にそれぞれ設けられ、前記各ノード内の前記ＴＯＤインクリメンタを局所的に増分するように当該ＴＯＤインクリメンタに結合され且つ所定の周波数で動作する少なくとも１つの局所発信器と、
前記複数のノードのうち選択された１つのノードとの通信リンクを介して前記１つのノードにＴＯＤ設定パケットを送信し、当該パケット内の初期ＴＯＤ値を前記１つのノードに設定することにより、前記１つのノードをマスタ・ノードとして構成する中央コントローラとを備え、
前記マスタ・ノードが、
前記マスタ・ノードに隣接するノードにブロードキャストすべきＴＯＤ更新用のＴＯＤブロードキャスト・パケットを生成する手段と、
前記所定の周波数の所定のサイクル数をカウントするレジスタと、
前記レジスタに応答して、前記ＴＯＤブロードキャスト・パケットを、前記マスタ・ノード内の前記ＴＯＤインクリメンタに基づき、送信パスを介して前記隣接するノードにブロードキャストする手段とを有し、
前記隣接するノードの各々が、
前記マスタ・ノードから前記ＴＯＤブロードキャスト・パケットを受信する手段と、
前記受信したＴＯＤブロードキャスト・パケット内の更新用のＴＯＤ値を当該各ノード内の前記ＴＯＤインクリメンタの値と比較する手段と、
前記更新用のＴＯＤ値が前記ＴＯＤインクリメンタの値より大きい場合は、前記ＴＯＤインクリメンタの値を前記更新用のＴＯＤ値に等しく更新する手段と、
前記更新用のＴＯＤ値が前記ＴＯＤインクリメンタの値より小さい場合は、前記ＴＯＤインクリメンタの値が前記更新用のＴＯＤ値に達するまで、前記ＴＯＤインクリメンタを前記所定の周波数よりも低い周波数のサイクルで増分する手段とを有する、装置。
【請求項７】
前記隣接するノードの各々が、前記受信したＴＯＤブロードキャスト・パケットを当該各ノードから少なくとも１つの他のノードに再送信する手段を有する、請求項６に記載の装置。
【請求項８】
前記隣接するノードの各々が、当該各ノードと前記マスタ・ノードとを接続する送信パスの遅延を計算し、当該計算された遅延に基づき、前記受信したＴＯＤブロードキャスト・パケット内の前記更新用のＴＯＤ値を調整する手段を有する、請求項６に記載の装置。
【請求項９】
前記ＴＯＤブロードキャスト・パケットがシーケンスＩＤ番号を含む、請求項６に記載の装置。
【請求項１０】
前記ＴＯＤブロードキャスト・パケットが、ブロードキャスト中の誤りを検出するチェックサムを含む、請求項６に記載の装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ノード間で時刻（ＴＯＤ）イベントを同期させるために単一のＴＯＤインクリメンタに対する必要がある、分散並列処理システムのための方法および装置に関する。
【０００２】
【従来の技術】
分散処理システム上で発生するＴＯＤイベントを正確に同期させるには、異なる２つのノード上で同時に読取られるＴＯＤ間の差が、その両ノード間のメッセージに対する最小待ち時間より小さくなければならず、継続的に増加していなければならない。今日これは、単一の中央ＴＯＤリポジトリを有するか、または全てのノードにその値が伝達される単一のクロック（システム発信器）から全システムを稼働させることによってなされる。中央ＴＯＤリポジトリの方式では、全てのノードがこの単一ノードに問い合せる必要があり、結果としてこれらの全ての問い合せが直列化され、アプリケーションを並列化することによって達成しようと意図した高速化を減少させるので、処理のボトルネックになる欠点がある。システム全体にその値が伝達される単一のシステム発信器を使用する方式には、ノード間で特定のリンクの稼働が必要になるという欠点があり、そうでなければシステムが故障する。大規模な分散システム上では、これらのリンクを、誤って引き抜かれる可能性のあるケーブルにする必要があるので、実際の懸念が存在する。
【０００３】
【発明が解決しようとする課題】
本発明は、ハードウェアおよびソフトウェアの実現体により、前記公知技術の欠点を克服する。この実現体は、各ノードが、自分の局所発信器から自分のＴＯＤを増分し、更新を行うためのＴＯＤブロードキャスト・パケットを周期的に送信することによってそれらのＴＯＤを最小待ち時間以内に保つことを可能にする。本質的に本発明は、より大きな最大差を有するか、またはＴＯＤを同期的に作動させるためにクロックの値を配布することを必要としていた従来技術による解決とは反対に、クロックの値を配布する必要がなく、最大差が最小待ち時間より小さくなるように、分散システム全体の各ノードにＴＯＤインクリメンタを提供する。本発明を用いることにより、全てのノードにＴＯＤブロードキャスト・パケットが配布され、それにより単一の集中化されたＴＯＤソースの必要がなくなる。また、本発明によれば、（単一のシステム発信器を使用する方式のように）特定のケーブルが稼働中である必要もなくなる。「ＴＯＤマスタ・チップ」（以下「ＴＯＤマスタ」という）から各隣接ノードへのパスがある限り、ＴＯＤは許容誤差以内に保たれる。
【０００４】
【課題を解決するための手段】
本発明は、受信したＴＯＤブロードキャスト・パケットに基づいて各ノードが自分のＴＯＤを正確に更新するとともに、ＴＯＤブロードキャスト・パケットを自分の全ての隣接ノードに配布するために、ハードウェアおよびソフトウェアの形式で実現されるスイッチ設計を利用する。本発明の方法および装置は、「ＴＯＤマスタ」として指定されたスイッチに接続されたケーブルの遅延を計算する機能、およびＴＯＤブロードキャスト・パケットを受信し、計算されたケーブル遅延に基づき、そのＴＯＤ値を調整する機能を含む。本発明は、各ノードのＴＯＤを、値を減分することなく受信したＴＯＤブロードキャスト・パケット内のＴＯＤ値に調整する機能、およびＴＯＤブロードキャスト・パケットを各ノードの全ての隣接ノードに送信する機能をさらに含む。最後に述べた機能は、隣接ノードが特定のＴＯＤブロードキャスト・パケットを既に受信したかどうかを検出するために用いられ、その場合、受信したＴＯＤブロードキャスト・パケットは廃棄される（フィードバック・ループを終了する）。
【０００５】
本発明の方法および装置において、新たに受信したＴＯＤブロードキャスト・パケット内のＴＯＤ値が各ノードのＴＯＤインクリメンタの値より大きいとき、ＴＯＤの調整は、受信したＴＯＤブロードキャスト・パケット内のＴＯＤ値の単純なロードとすることができる。しかし、ＴＯＤインクリメンタの値が受信したＴＯＤブロードキャスト・パケット内のＴＯＤ値より大きい場合には、ＴＯＤインクリメンタの値は、その差がなくなるまで、保持されるか、より遅い速度で増分されなければならない。（本発明による設計において、ＴＯＤインクリメンタの値は、通常のスピードで増分されている受信したＴＯＤ値に一致するまでは、端数値、例えば半分のスピードで増分される。）
【０００６】
システムの見地から見ると、本発明は、「ＴＯＤマスタ」になるべき単一のスイッチまたはノードを選択する機能と共に実現される。この「ＴＯＤマスタ」は、自分の全ての隣接ノードに対し、ＴＯＤブロードキャスト・パケットを周期的に送信する。ＴＯＤブロードキャスト・パケットは、現在のＴＯＤ値および（フィードバック・ループを検出するために使用される）シーケンスＩＤを保持する。また、ＴＯＤブロードキャスト・パケットは、これが通常のデータ・パケットではなくＴＯＤブロードキャスト・パケットであることを示すフラグ、および当該パケット内の誤りを検出するためのチェックサムも保持することができる。システムの信頼性のために、「ＴＯＤマスタ」を監視し、そのチップが故障したときにその機能を引き継ぐバックアップを提供することができる。
【０００７】
【発明の実施の形態】
＜分散コンピューティング環境＞
次に図面をより詳細に参照すると、この中で幾つかの図を通して、同じ番号は同じ部分を指す。図１は、複数のネットワーク・アタプタ１０４を介して互いに結合された複数のノード１０２を含む分散コンピューティング環境１００のブロック図である。各ノード１０２は、自分自身のオペレーティング・システム・イメージ１０８、システム・メモリ・バス１１８上のメモリ１１０およびプロセッサ１０６を有する独立したコンピュータであり、システム入出力バス１１６は、入出力アタプタ１１２とネットワーク・アタプタ１０４を結合する。各ネットワーク・アタプタ１０４は、ネットワーク・スイッチ１２０を介して互いにリンクされる。
【０００８】
一例において、分散コンピューティング環境１００は、１つ以上のプロセッサ１０６を有するＮ個のノード１０２を含む。各ノード１０２は、ＡＩＸ（ＩＢＭ版のＵＮＩＸオペレーティング・システム）を実行するＲＩＳＣ／６０００コンピュータとすることができる。ノード１０２の幾つかまたは全ては、異なるタイプのコンピュータおよび／または異なるオペレーティング・システム１０８を含むことができる。
【０００９】
図２は、本発明による、図１の分散コンピューティング環境１００の幾つかのノード１０２の拡大図を示す。一実施形態では、本発明の機構を組み込んだグループ・サービス２０６が分散コンピューティング環境１００の複数のノード１０２間に分散配置される。一例において、１つ以上のノード１０２内に、グループ・サービス・デーモン（図示せず）が配置される。グループ・サービス・デーモンを、集合的にグループ・サービス２０６と呼ぶ。
【００１０】
グループ・サービス２０６は、例えばプロセス・グループの複数のプロセス間の通信および同期を容易にし、例えば分散回復同期機構の提供を含む様々な状況において用いられる。グループ・サービス２０６の機構の使用を希望するアプリケーション・プロセス２０２は、グループ・サービス・デーモンに結合される。詳細には、このアプリケーション・プロセス２０２は、グループ・サービス２０６に関連付けられたコード（例えばライブラリ・コード）の少なくとも一部を自分自身のコード中にリンクすることによって、グループ・サービス２０６に結合される。一実施形態に従えば、アプリケーション・プロセス２０２は、アプリケーション・プログラミング・インタフェース（ＡＰＩ）２０４を介して本発明の機構を用いる。詳細には、ＡＰＩ２０４は、アプリケーション・プロセス２０２が本発明の機構を使用するためのインタフェースを提供する。
【００１１】
図３は、図１の分散コンピューティング環境１００が１２８ウェイのプロセッサから構成される場合の、分散システム３００の一実施形態の略図を示す。分散システム３００は、諸ノード３０２（この実施形態ではワークステーション）から成り、ネットワーク・スイッチ１２０を介して接続される。ネットワーク・スイッチ１２０は、２種類のスイッチ、すなわち、ノード・スイッチ・ボード（ＮＳＢ）３０４および中間スイッチ・ボード（ＩＳＢ）３０６から成る。ＮＳＢ３０４とＩＳＢ３０６の間の相違は、ＩＳＢ３０６が単にスイッチだけを接続するのに対して、ＮＳＢ３０４は、スイッチとノードの両方を接続することである。ＮＳＢ３０４およびＩＳＢ３０６は同一であり、単に異なるコンポーネントに接続するに過ぎない。
【００１２】
＜スイッチ・ボードおよびＴＯＤハードウェア＞
図４は、単一のスイッチ・ボード３０４を示す。スイッチ・ボード３０４は、互いに接続され且つ１から８のラベルを付けられた、８つのスイッチ・チップ４０２から成る。図５は、通常のスイッチ・チップ４０２のメイン・データ・パス５０２〜５０４を示すが、図５は、本明細書に述べる本発明を処理する如何なる接続または論理回路も含まない。図６は、本発明に必要な追加の接続およびブロックを示す。かかる追加の論理回路には、ＴＯＤ論理回路６０２およびサービス論理回路６０４が含まれる。ＴＯＤ論理回路６０２は図７に示され、以下により詳細に述べる。サービス論理回路６０４は、電源投入時にＴＯＤマスタ内のＴＯＤレジスタ７０２を初期化するのに必要な任意の論理回路から成る。また、図６は、全てのレシーバ６０６からＴＯＤ論理回路６０２への接続、およびＴＯＤ論理回路６０２から全てのセンダ６１２への接続も示す。これらの接続は、ＴＯＤブロードキャスト・パケットを受信するレシーバ６０６がそのＴＯＤブロードキャスト・パケットをＴＯＤ論理回路６０２に伝達すること、およびＴＯＤ論理回路６０２がそのＴＯＤブロードキャスト・パケットを全てのセンダ６１２から送信することを可能にするために必要とされる。他の実施形態では、センダ６１２がレシーバ６０６からＴＯＤブロードキャスト・パケットを直接受信できることに留意されたい。
【００１３】
電源投入時にシステム管理者は、あるスイッチ・チップ４０２またはノード３０２を「ＴＯＤマスタ」として選択する。また、システム管理者は、「ＴＯＤマスタ」内のＴＯＤ値を初期化する。次いで、「ＴＯＤマスタ」は、「メタサイクル」毎にＴＯＤブロードキャスト・パケットを自動的に生成する。システム内の残りのスイッチ・チップ４０２は、これらのＴＯＤブロードキャスト・パケットを受信するときに、以下に述べるようにそれぞれのＴＯＤ値を更新する。
【００１４】
図７において、基本的なＴＯＤ論理回路６０２は、２つの主要レジスタ：ＴＯＤレジスタ７０２およびＴＯＤブロードキャスト・レジスタ７０６から成る。ＴＯＤブロードキャスト・レジスタ７０６は、ＴＯＤマスタからＴＯＤを更新する際に、ＴＯＤが決して減分されないことを保証するために必要とされる。すなわち、要件によれば、ＴＯＤは常に増加していなければならない。殆どの場合、ＴＯＤブロードキャスト・レジスタ７０６は、ＴＯＤレジスタ７０２を７５ＭＨｚサイクル毎にロードするために使用される。実際には、インクリメンタ７１６を用いてＴＯＤブロードキャスト・レジスタ７０６の値を増分することが行われる。しかし、ＴＯＤレジスタ７０２は、それ自体にフィードバックすること（７１８）、半分のスピードで増分すること（７１７）、ＴＯＤ設定パケットまたはＴＯＤマスタの何れかからロードすること（７２４または７２６）が可能でなければならない。同様に、ＴＯＤブロードキャスト・レジスタ７０６は、前述のように、増分すること（７３０）、それ自体にフィードバックすること（７２８）、更新およびロードを取ることが可能でなければならない。
【００１５】
ブロードキャストおよびＴＯＤ設定検出論理回路７０８は、ＴＯＤマスタからのＴＯＤブロードキャスト・パケットか、またはＴＯＤ設定パケットの何れかからの受信ＴＯＤ値があるかどうかを判定する。ＴＯＤブロードキャスト・パケットを受信中である場合、そのＴＯＤ値は、ＳＶＣバス７２２を介してレシーバ６０６から来る。ＴＯＤ設定パケットを受信中である場合、そのＴＯＤ値は、ＳＶＣリング７１２から来る。
【００１６】
７５ＭＨｚエッジ検出論理回路７０４は、所定のＴＯＤ周波数で動作することを参照しながら以下にさらに述べるが、与えられた例では、この周波数は７５ＭＨｚであり、ＴＯＤの増分をゲート制御するために使用される。
【００１７】
マスタ・ブロードキャスト生成論理回路７１０は、以下にさらに説明するように、ＴＯＤレジスタ７０２を見て、一定のＴＯＤサイクル数毎に、バス７２９上のＴＯＤブロードキャスト・パケットの伝達を起動する。与えられた例では、このメタサイクルは（ビット１６がフリップするときの）６５５３６  ＴＯＤサイクルに等しい。伝達の詳細は既に与えられた。これはＴＯＤマスタ上でのみ行われる。
【００１８】
＜ＴＯＤプロセス・フロー＞
当業者には知られているが、各ノード３０２内では、バスが複数のスイッチ・チップ４０２またはアタプタを相互接続する。図８および図９の流れ図を参照すると、ソフトウェアの実現体（スイッチ初期化コード）により、ステップＳ１では、１つのスイッチ・チップ４０２またはアタプタが、「ＴＯＤマスタ」として選択される。ＴＯＤマスタが選択された後に、ハードウェアは、（ステップＳ２およびＳ４で、中央コントローラから通信されたＴＯＤ設定パケットを介して）ＴＯＤが設定されるのを待機する。ステップＳ６では、ＴＯＤマスタが、全てのスイッチ・チップ４０２およびアタプタにＴＯＤを自動的に伝達する。
【００１９】
伝達段階中に、ハードウェアは、ケーブルおよび中間スイッチ内の遅延に対して、ＴＯＤを自動的に調整する。従って、ＴＯＤ伝達の最後に、システム内の全てのＴＯＤは、互いに数サイクル以内になるはずである（正確性は、スイッチ・ボード３０４当たり約３サイクルのはずである）。また、全てのスイッチ・ボード３０４上の非同期クロックを処理するために、「ＴＯＤマスタ」は、ステップＳ２２で、以下に「メタサイクル」と呼ぶＸ回のＴＯＤサイクル毎、例えば８７２マイクロ秒に対応する６５５３６  ＴＯＤサイクル毎に、ＴＯＤを伝達するはずである。ＴＯＤサイクルは、Ｙ周波数、例えばサイクル当たり１３．３ｎｓに対応する７５ＭＨｚで動作する。与えられた例では、これは、ＴＯＤのビット１６（ビット０、最下位ビット）がフリップする毎に伝達が発生することを意味する。この「メタサイクル」に基づくＴＯＤの伝達は、発信器の許容誤差を調整し、ＴＯＤを互いに近くに保つはずである。また、「ＴＯＤマスタ」は、ＴＯＤ設定パケットの受信に続いて、自分のＴＯＤを直ちに伝達する。メタサイクルが完了するまで、流れはステップＳ４にループ・バックし、伝達は発生しない。ソフトウェアは、ＲＡＭ、ＲＯＭまたは３．５インチ・ディスケット、ＣＤ  ＲＯＭなど何らかのコンピュータ可読媒体に実施され、これは、当業者に知られている方法を用いてＴＯＤ論理回路６０２にロードされる。
【００２０】
ステップＳ１で、ソフトウェアが「ＴＯＤマスタ」を選択できるようにするために、初期化パケットに１ビット追加される。このビットが初期化パケット内で設定されるとき、「ＴＯＤマスタ」は、ＴＯＤの最上位ビットが設定されるまでは、その初期化パケットに対して活動しない。ＴＯＤの最上位ビットは、有効ビットと定義される。あるチップがＴＯＤマスタとして選択されると、そのＴＯＤが設定されなければならない。ステップＳ２で、これはＴＯＤ設定パケットでなされる。
【００２１】
ソフトウェアは、ただ１つのチップを「ＴＯＤマスタ」として定義しなければならない。複数のチップが自分をＴＯＤマスタであると考える場合、その２つのチップが残りのチップを更新しようと互いに戦い、その結果、システム全体で異なるＴＯＤをもたらすだろう。もし、ＴＯＤの伝達中に、あるＴＯＤマスタが、自分が最も最近送ったのと異なるシーケンスＩＤを有するＴＯＤブロードキャスト・パケットを受信すれば、そのチップは、無効ＴＯＤ伝達誤りのフラグをたてるはずである。
【００２２】
ステップＳ２で、ソフトウェアは、ＴＯＤ設定パケットを「ＴＯＤマスタ」に送信することにより、その中のＴＯＤの最上位ビットを設定する。あるスイッチ・チップ４０２に、それが「ＴＯＤマスタ」であると告げる前記ビットは、電源投入リセットが起こるときはいつもリセットされる。また、ソフトウェアは、そのビットをオフにした新たな初期化パケットをそのチップに送信することにより、そのビットをリセットすることができる。ステップＳ４から明らかなように、ＴＯＤの伝達は、ＴＯＤマスタのＴＯＤが有効とマークされる場合にのみ起こる。ステップＳ６に示すように、ＴＯＤの伝達は、前述の与えられた例では、６５５３５  ＴＯＤサイクル（８７２ｕｓ）毎に起こり、それが起こると、「ＴＯＤマスタ」は、その全てのセンダ６１２、例えば８個のセンダ６１２にＴＯＤを送信するように知らせることにより、そのＴＯＤをシステム全体に伝達する。センダ６１２にかかる通知のための信号が送られると、ステップＳ７で、それらのセンダは、ＴＯＤを取り込み、データ・フローに割込みをかけ、ステップＳ８で、ＴＯＤ制御ワードに続いてＴＯＤを保持する２ワードを送信し、次いで通常の動作を継続する。しかし、前記のとおり、ＴＯＤの伝達は、ステップＳ２においてＴＯＤマスタのＴＯＤが有効とマークされる場合にのみ起こる。
【００２３】
ＴＯＤ制御ワードは、それがＴＯＤ制御ワードであることを示す１バイト、１バイトのシーケンスＩＤ、更新制御ビット、および８ビットのＥＣＣを保持している。シーケンスＩＤは、それぞれのＴＯＤが伝達した後に増分され、ＴＯＤブロードキャスト・パケットのフィードバック・ループを消去するために用いられる。更新制御ビットは、たとえ２つのＴＯＤに著しい差があっても、受信チップのＴＯＤをこの値に更新すべきであることを示すために用いられる。８ビットのＥＣＣは、ＴＯＤ値の６４ビット上のＥＣＣ（６４ビット・マルチキャスト・ノード・マスク上で用いられるのと同じＥＣＣアルゴリズム）である。ＥＣＣが不正であれば、このＴＯＤブロードキャスト・パケットは無視される。
【００２４】
ステップＳ９で、「ＴＯＤマスタ」の隣のチップは、それらのレシーバ６０６の１つ、例えば８個の受信ポート上でＴＯＤ制御キャラクタを受信する。レシーバ６０６のポートがＴＯＤ制御キャラクタを受信すると、ステップＳ１０で、ＴＯＤ論理回路６０２に信号を送り、その論理回路にシーケンスＩＤを与える。ステップＳ１１で、ＴＯＤ論理回路６０２は、比較器７１３を用いて、そのシーケンスＩＤと最終シーケンスＩＤレジスタを比較する。ステップＳ１２で、これらのシーケンスＩＤが同一であると判定される場合、ＴＯＤ制御キャラクタは無視される（このチップはこのＴＯＤ更新を既に受信している）。他方、ステップＳ１２で、これらのシーケンスＩＤが異なっていると判定される場合、ステップＳ１４で、新たなシーケンスＩＤが最終シーケンスＩＤレジスタに格納され、ステップＳ１５で、この新たなＴＯＤがケーブル遅延を調整するために更新され、ステップＳ１９で、ＴＯＤレジスタ７０２を変更するために更新後ＴＯＤが使用され、ステップＳ２０で、更新後ＴＯＤを送信するように全ての送信ポートに信号が送られる。
【００２５】
ステップＳ１６で、更新制御ビットが設定されていると判定される場合、またはステップＳ１７で、受信したＴＯＤ値が現在のＴＯＤ値より大きいと判定される場合、更新後ＴＯＤをＴＯＤレジスタ７０２に書き込むことによって、ＴＯＤレジスタ７０２が更新される。他方、受信したＴＯＤ値が現在のＴＯＤ値より小さく、且つ更新制御ビットがオフである場合、ステップＳ１８で、その差が調整されるまで、１／２サイクル・インクリメンタ７１７を用いて１つおきのＴＯＤサイクル（２６．６ｎｓ）毎に現在のＴＯＤ値が増分される。この機能は、ＴＯＤ値が継続的に増加する（決して減少しない）ことを保証する。ステップＳ２１において、ＴＯＤレジスタ７０２がＴＯＤブロードキャスト・レジスタ７０６に等しいかどうかの判定が行われる。
【００２６】
送信論理回路は、ポートの受信側から、それが受信した最終シーケンスＩＤを受信する。中央ＴＯＤ論理回路６０２内の最終シーケンスＩＤレジスタが、当該ポートが受信した最終シーケンスＩＤと異なる場合、センダ６１２は、ＴＯＤ論理回路６０２から信号が送られると、センダ６１２は、ＴＯＤ制御キャラクタだけを送信する。この制限は、システム内のＴＯＤ制御キャラクタの数を可能な限り迅速に減少させるために必要である。しかし、レシーバ６０６が冗長なＴＯＤ制御キャラクタを廃棄するので、たとえセンダ６１２が同じＴＯＤ制御キャラクタを受信しながらＴＯＤ制御キャラクタを送信しても、この設計は依然として機能する。
【００２７】
ＴＯＤマスタにおいてＴＯＤ設定パケットを受信した後にＴＯＤ伝達が行われる場合、ＴＯＤロード命令が実行される（更新ビットが設定される）。この場合、ＴＯＤが現在のＴＯＤ値より大きいことはテストされない。伝達されたＴＯＤは、その値に関係なくロードされる。
【００２８】
本発明は、初期化状態（Ｐｉｎｇ状態）を使用して、スイッチ間のケーブル遅延を計算する。すなわち、Ｐｉｎｇ制御キャラクタを送信し、Ｐｏｎｇキャラクタ応答を受信する前のＴＯＤサイクルの数（この例ではＴＯＤ周波数は７５ＭＨｚ）をカウントするように設計されている。次いで、この遅延を２で割って、ケーブル遅延を得る（この遅延はケーブルおよび全てのチップ待ち時間を含む）。２での除算は、カウントを右に１ビットだけシフトすることによって達成される（従って、正確性はおよそプラス・マイナス１サイクルである）。これに基づけば、この設計の最悪状況下のＴＯＤの不正確性は、「ＴＯＤマスタ」からスイッチ・ボードを移る毎にプラス・マイナス３サイクルである。
【００２９】
ＴＯＤは、２つの理由、すなわちケーブル遅延およびセンダ６１２内におけるＥＤＣサイクルとの衝突のために、伝達中に調整される。センダ６１２とレシーバ６０６の間のケーブルにおいて様々な遅延があるので、ＴＯＤはレシーバ６０６に到着するときに修正される。ＴＯＤにケーブル遅延が加えられ、その結果、そのＴＯＤがサービス論理回路６０４に到着するときに遙かに正確になる。ＴＯＤが転送を要求しているときにＥＤＣが送信中であるためにセンダ６１２がＴＯＤを転送できない場合、センダ６１２は、ＴＯＤが遅延されなければならない全てのサイクルに対してＴＯＤを増分する。これにより、ＴＯＤがサービス論理回路６０４に到着するときのＴＯＤの正確性が改善する。
【００３０】
全てのスイッチ・ボード３０４は、２つの７５ＭＨｚの発信器を有する（スイッチ・チップ４０２の内部では、これを２で除して３７．５ＭＨｚの発信器を作り出す）。この発信器は、スイッチ・チップ４０２に対し、それらのＴＯＤレジスタ７０２をいつ増分するかの信号を送るために用いられる。各スイッチ・チップ４０２は、結果としての３７．５ＭＨｚクロック上で遷移を探す。入力は、１２５ＭＨｚクロックから同期読み出しされる２つのラッチ（図示せず）を介して走行する。出力上で遷移が見られるとき、センダ６１２、レシーバ６０６、および中央ＴＯＤ論理回路６０２の全てには、それらのＴＯＤ値を増分するよう信号が送られる。レシーバ６０６は、この信号を用いて、Ｐｉｎｇ状態においてリンクのタイミングを合わせるときにカウンタをゲート制御するとともに、当該レシーバが中央待ち行列にチャンクを書き出すのにビジーであるために遅延するＴＯＤを増分する。センダ６１２は、この信号を用いて、ＥＤＣが送信中であるために遅延するＴＯＤを増分する。
【００３１】
スイッチ・チップ４０２は、当該ボード上の全ての単一点の障害を回避するために、２つの７５ＭＨｚクロックを備える。もし、あるスイッチ・チップ４０２が、その「プライマリ」７５ＭＨｚ発信器がトグルしていないことを検出する場合、そのスイッチ・チップは、バック・アップ入力に切り換える。従って、ボードが障害を起こすには、両方の７５ＭＨｚ発信器が障害を起こさなければならない。これらの発信器は、再励振のために２つの異なるチップを経由され、当該ボードの半分は、そのプライマリとして１つの発信器を使用し、当該ボードの他の半分は、他方の発信器を使用する。
【００３２】
高位のＴＯＤワードの最上位ビットは、ＴＯＤのための有効ビットとして使用される。ＴＯＤが有効と見なされるためには、そのビットがオンでなければならない。従って、ＴＯＤが有効であるためには、ＴＯＤ設定パケットがハイの最上位ビットを有しなければならない。もし、ＴＯＤマスタにおいてＴＯＤが有効でなければ、そのＴＯＤは伝達されない。ＴＯＤを無効化する理由は、以下の通りである。
１．ＴＯＤレジスタ７０２上でパリティ誤りがある。
ａ）それがブロードキャスト上だけのパリティ誤りの場合、ＴＯＤブロードキャスト・レジスタ７０６およびＴＯＤレジスタ７０２の両方が無効化される。
ｂ）それがＴＯＤレジスタ７０２上だけのパリティ誤りの場合、ＴＯＤレジスタ７０２は無効化されるがＴＯＤブロードキャスト・レジスタ７０６は無効化されない。むしろ、ＴＯＤレジスタ７０２をロードし、従ってＴＯＤパリティ誤りから回復するためにそれを使用することができる。
２．８個の連続する「メタサイクル」の間に、スレーブＴＯＤチップがブロードキャスト更新を受信しない場合、そのＴＯＤは無効化される。なぜなら、そのＴＯＤがシステムの残りと同期が取れていることを保証できないからである。「メタサイクル」は、一定のサイクル数から成る。与えられた例では、この一定の数が６５５３５  ＴＯＤサイクルである。与えられた例のＴＯＤサイクルは１３．３ｎｓ（７５ＭＨｚ）である。
【図面の簡単な説明】
【図１】分散コンピューティング環境のブロック図である。
【図２】図１の分散コンピューティング環境の幾つかのノードの拡大図である。
【図３】図１の分散コンピューティング環境が１２８ウェイのプロセッサから構成される場合の、分散システムの実施形態を示す略図である。
【図４】図３の分散システムのスイッチ・ボードの略図である。
【図５】本発明による（サービス論理回路を含まない）スイッチ・チップの略図である。
【図６】本発明による、新規なＴＯＤ論理回路とサービス論理回路の接続を示すスイッチ・チップの略図である。
【図７】ＴＯＤマスタの最高レベルの制御論理回路を示す略図である。
【図８】本発明の方法および装置の本質的側面を示す流れ図である。
【図９】本発明の方法および装置の本質的側面を示す流れ図である。
【符号の説明】
１０２  ノード１
１０４  ネットワーク・アダプタ
１０６  プロセッサ
１０８  ＡＩＸ全体イメージ
１１０  メモリ
１１２  入出力アダプタ
１１４  チャネル・コントローラ
１１６  システム入出力バス
１２０  ネットワーク・スイッチ
【図１】
0003600533.tif 000002
【図２】
0003600533.tif 000003
【図３】
0003600533.tif 000004
【図４】
0003600533.tif 000005
【図５】
0003600533.tif 000006
【図６】
0003600533.tif 000007
【図７】
0003600533.tif 000008
【図８】
0003600533.tif 000009
【図９】
0003600533.tif 000010