(57)【要約】システムおよび方法は、複数のレーンを有する通信リンクと、フェイルオーバー動作中の連続サービスのために、故障レーンが除去されている間に、全てのレーンをオンラインで保つ帯域内リアルタイム物理層プロトコルとを提供する。レーン状態は、物理層受信機においてリアルタイムで監視され、リンクエラー率、レーンあたりのエラー性能、および他のチャネル測定基準が把握される。レーン故障が確立される場合、遠隔ポートとの単一往復要求／確認プロトコル交換がフェイルオーバーを完成させる。故障レーンが容認可能な性能レベルを満たす場合、往復交換中にオンラインのままとなり、途切れないリンクサービスをもたらす。レーンは、信頼性、可用性、および電力消費目標を満たすように、サービスに参入され、またはサービスから取り出され得る。
2017518552.tif 000002
【特許請求の範囲】
【請求項１】
共有計算を行うように協働する複数のコンピュータデバイスを備える、高性能コンピュータシステムであって、各コンピュータデバイスは、
前記共有計算の一部を行うための１つまたはそれを上回るコンピューティングプロセッサと、
前記１つまたはそれを上回るコンピューティングプロセッサに連結される、制御回路であって、前記制御回路は、
接続された制御回路と前記共有計算に関するデータを通信するための通信リンクであって、前記通信リンクは、複数のデータレーンを有し、各データレーンは、データを前記接続された制御回路に伝送するための伝送機と、前記接続された制御回路からデータを受信するための受信機とを有する、通信リンクと、
前記複数のデータレーンの集合的動作を制御するためのマイクロコントローラと
を有する、制御回路と
を備え、
前記マイクロコントローラは、
所与のデータレーン内の受信機によるデータの受信と関連付けられるエラー測定基準を計算することと、
前記エラー測定基準が閾値試験で不合格になることに応答して、前記複数のデータレーンの中の少なくとも１つの他のデータレーンを使用して、前記通信リンクが途切れなく前記接続された制御回路とデータを通信し続けている間に、サービスから前記所与のデータレーンを除去することと
を行うように構成される、コンピュータシステム。
【請求項２】
前記通信リンクは、４つのデータレーンを有する、請求項１に記載のコンピュータシステム。
【請求項３】
前記エラー測定基準は、信号品質、リンクビットエラー率、またはアイダイアグラムのスコアを含む、請求項１に記載のコンピュータシステム。
【請求項４】
前記マイクロコントローラはさらに、フェイルオーバー要求を前記接続された制御回路に伝送するように構成される、請求項１に記載のコンピュータシステム。
【請求項５】
前記マイクロコントローラはさらに、
タイムアウトプロセスを開始することと、
前記マイクロコントローラが前記接続された制御回路から前記フェイルオーバー要求の確認を受信することに先立って、前記タイムアウトプロセスが完了するときに、（ａ）前記フェイルオーバー要求を再試行するか、または（ｂ）前記所与のデータレーンを使用してデータを伝送することを中止するかのいずれかを行うことと
を行うように構成される、請求項４に記載のコンピュータシステム。
【請求項６】
前記マイクロコントローラは、どのデータレーンが稼働中であるかに基づいて複数のフェイルオーバーモードから選択されるフェイルオーバーモードに従って、データを伝送および受信するように構成され、各そのような故障モードは、データ形式と関連付けられ、さらに、前記マイクロコントローラは、動作フェイルオーバーモードと関連付けられる前記データ形式を使用して、前記接続された制御回路とデータを通信するように前記通信リンクを構成する、請求項１に記載のコンピュータシステム。
【請求項７】
レーン逆転マルチプレクサをさらに備える、請求項１に記載のコンピュータシステム。
【請求項８】
前記レーン逆転マルチプレクサは、ハードウェア相互接続構成の関数として前記マイクロコントローラによって構成される、請求項７に記載のコンピュータシステム。
【請求項９】
前記マイクロコントローラはさらに、前記エラー測定基準が前記閾値試験で不合格になることに応答して、所与のレーンの電源を切るように構成される、請求項１に記載のコンピュータシステム。
【請求項１０】
接続された回路とデータを通信するための通信リンクを制御する方法であって、前記通信リンクは、複数のデータレーンを有し、各データレーンは、データを前記接続された回路に伝送するための伝送機と、前記接続された回路からデータを受信するための受信機とを有し、前記方法は、
所与のデータレーン内の受信機によるデータの受信と関連付けられるエラー測定基準を計算するステップと、
前記エラー測定基準が閾値試験で不合格になることに応答して、前記複数のデータレーンの中の少なくとも１つの他のデータレーンを使用して、前記通信リンクが途切れなく前記接続された制御回路とデータを通信し続けている間に、サービスから前記所与のデータレーンを除去するステップと
を含む、方法。
【請求項１１】
前記通信リンクは、４つのデータレーンを有する、請求項１０に記載の方法。
【請求項１２】
前記エラー測定基準は、信号品質、リンクビットエラー率、またはアイダイアグラムのスコアを含む、請求項１０に記載の方法。
【請求項１３】
フェイルオーバー要求を前記接続された制御回路に伝送するステップをさらに含む、請求項１０に記載の方法。
【請求項１４】
タイムアウトプロセスを開始するステップと、
前記接続された制御回路から前記フェイルオーバー要求の確認を受信することに先立って、前記タイムアウトプロセスが完了するときに、（ａ）前記フェイルオーバー要求を再試行するか、または（ｂ）前記所与のデータレーンを使用してデータを伝送することを中止するかのいずれかを行うステップと
をさらに含む、請求項１３に記載の方法。
【請求項１５】
どのデータレーンが稼働中であるかに基づいて複数のフェイルオーバーモードから選択されるフェイルオーバーモードに従って、データを伝送および受信するステップであって、各そのような故障モードは、データ形式と関連付けられる、ステップと、
動作フェイルオーバーモードと関連付けられる前記データ形式を使用して、前記接続された制御回路とデータを通信するように前記通信リンクを構成するステップと
をさらに含む、請求項１０に記載の方法。
【請求項１６】
レーン逆転マルチプレクサを使用して、前記複数のレーンの物理的伝送または受信の順序を逆転するステップをさらに含む、請求項１０に記載の方法。
【請求項１７】
ハードウェア相互接続構成の関数として、前記複数のレーンの前記順序を逆転するように前記レーン逆転マルチプレクサを構成するステップをさらに含む、請求項１６に記載の方法。
【請求項１８】
前記エラー測定基準が前記閾値試験で不合格になることに応答して、所与のレーンの電源を切るステップをさらに含む、請求項１０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステム内の多重通信に関し、より具体的には、中断なくリンク上で通信を継続しながら通信リンクの一部を使用するように、部分フェイルオーバーを行うことに関する。
【背景技術】
【０００２】
高性能コンピュータ（ＨＰＣ）システムは、共有計算を解くように相互と通信する多くのコンピューティングノードを有する、大規模分散型システムを含む。ノードの間の接続は、多くの場合、最大速度またはビットレートでデータレーンと並行してデータのビット（すなわち、１および０）を伝送する、高速シリアル相互接続から形成される。高速シリアル相互接続の長期信頼性は、伝送速度が増加するにつれて課題を抱えている。具体的には、ビットレートが増加すると、基礎的物理媒体によって引き起こされる信号損失の対応する増加がある。本信号損失は、より高い費用の材料を使用して、回路の複雑性を増加させ、信号をアクティブに繰り返す（またはノードの間の物理的距離を縮小する）ことによって、管理される。これらの軽減ツールの全ては、最大限のサービス時間または可用性を用いて、高い平均偽パケット容認時間（ＭＴＴＦＰＡ）を達成しようとする。
【０００３】
レーンフェイルオーバーは、そのエラー率が容認不可能な性能またはＭＴＴＦＰＡをもたらすレベルにある、もしくは接近している場合に、サービスから故障レーンを除去する、シリアルリンク特徴である。多くの従来技術のフェイルオーバープロシージャ中に、全てのレーンが、サービスから除去される一方で、通信リンクは、故障レーンを回避して、縮小した幅に再初期化する。本間隔中に、フェイルオーバー通信リンクに向かって指向される全てのネットワークトラフィックが、再ルーティング（代替経路が存在する場合）またはバッファリングされる。再ルーティングおよびバッファリングは両方とも、ネットワーク混雑、低減した性能、およびおそらくシステム故障にさえも寄与する。
【発明の概要】
【課題を解決するための手段】
【０００４】
したがって、上記の不利点に対処するために、我々は、フェイルオーバー動作中の連続サービスのために、故障レーンが除去されている間に、全てのレーンをオンラインで保つ帯域内またはリアルタイム物理層プロトコルを提供する。レーン状態が、物理層受信機においてリアルタイムで監視され、リンクエラー率、レーンあたりのエラー性能、および他のチャネル測定基準が把握される。レーン故障が確立される場合、遠隔ポートとの単一往復要求／確認プロトコル交換がフェイルオーバーを完成させる。故障レーンが容認可能な性能レベルを満たす場合、往復交換中にオンラインのままとなり、途切れないリンクサービスをもたらす。故障レーンが容認不可能な性能レベルにある場合、リンクは、偽パケット容認の機会を排除するように、往復交換中に一時停止する。プロトコル交換は、同時に両方の方向でフェイルオーバー動作をサポートする。
【０００５】
故障レーンが回復する、またはオフラインで修復される場合、動作中に連続サービスを伴って、帯域内プロトコルを使用してサービスに戻される。実際に、プロトコルは、条件が変化するにつれて、フェイルオーバー状態の間の全ての遷移をサポートする。例えば、４つのレーンリンクが、最初に、２つのレーンにフェイルオーバーする。後に、別のレーンが劣化し、リンクが１つのレーンにフェイルオーバーする。全て、以前に議論されたような故障の重大性に応じて、最小限またはゼロのダウンタイムを伴って帯域内で行われる。
【０００６】
プロトコルはまた、物理層電力状態の間で帯域内遷移を行うためにも使用される。低電力状態への途切れない遷移は、より少ないレーンへの帯域内通信フェイルオーバーを強制し、次いで、オフラインレーンを無効にすることを伴う。通常電力状態に戻るシームレスな遷移は、オフラインレーンを有効にし、ＰＬＬロック、均等化、フレーミング、およびオンラインレーンとの整合を提供し、次いで、全幅への帯域内通信フェイルオーバーを強制することを伴う。全てのオフライン動作は、常にデータフローを中断することなく、帯域外で行われる。レーン整合マーカが、整合を促進するように全てのレーン（オンラインおよびオフライン）上で周期的に伝送される。
【０００７】
本発明の第１の実施形態では、共有計算を行うように協働する複数のコンピュータデバイスを備える、高性能コンピュータシステムが提供される。各コンピュータデバイスは、共有計算の一部を行うための１つまたはそれを上回るコンピューティングプロセッサと、１つまたはそれを上回るコンピューティングプロセッサに連結される制御回路とを備える。制御回路は、通信リンクと、マイクロコントローラとを有する。通信リンクは、接続された制御回路と共有計算に関するデータを通信するために使用され、通信リンクは、各データレーンが、データを接続された制御回路に伝送するための伝送機と、接続された制御回路からデータを受信するための受信機とを有する、複数のデータレーンを有する。マイクロコントローラは、複数のデータレーンの集合的動作を制御するために使用される。マイクロコントローラは、所与のデータレーン内の受信機によるデータの受信と関連付けられるエラー測定基準を計算するように構成される。マイクロコントローラはまた、エラー測定基準が閾値試験で不合格になることに応答して、複数のデータレーンの中の少なくとも１つの他のデータレーンを使用して、通信リンクが途切れなく接続された制御回路とデータを通信し続けている間に、サービスから所与のデータレーンを除去するように構成される。
【０００８】
基本システムの種々の修正が、考慮される。通信リンクは、４つのデータレーンを有してもよい。エラー測定基準は、信号品質、リンクビットエラー率、またはアイダイアグラムのスコアであってもよい。マイクロコントローラは、フェイルオーバー要求を接続された制御回路に伝送するように構成されてもよく、その場合、これはさらに、タイムアウトプロセスを開始するように、およびマイクロコントローラが接続された制御回路からフェイルオーバー要求の確認を受信することに先立って、タイムアウトプロセスが完了するときに、（ａ）フェイルオーバー要求を再試行するか、または（ｂ）所与のデータレーンを使用してデータを伝送することを中止するかのいずれかを行うように構成されてもよい。代替として、または加えて、マイクロコントローラは、どのデータレーンが稼働中であるかに基づいて複数のフェイルオーバーモードから選択されるフェイルオーバーモードに従って、データを伝送および受信するように構成されてもよく、各そのような故障モードは、データ形式と関連付けられ、さらに、マイクロコントローラは、動作フェイルオーバーモードと関連付けられるデータ形式を使用して、接続された制御回路とデータを通信するように通信リンクを構成する。本システムはまた、レーン逆転マルチプレクサを有してもよく、レーン逆転マルチプレクサは、ハードウェア相互接続構成の関数としてマイクロコントローラによって構成されてもよい。マイクロコントローラはさらに、エラー測定基準が閾値試験で不合格になることに応答して、所与のレーンの電源を切るように構成されてもよい。これらの機能を果たすための方法も開示される。
【図面の簡単な説明】
【０００９】
実施形態の前述の特徴は、添付図面を参照して解釈される、以下の発明を実施するための形態を参照することによって、より容易に理解されるであろう。
【００１０】
【図１】図１は、本発明の一実施形態による、ＨＰＣシステムの論理図を概略的に示す。
【図２】図２は、図１のＨＰＣシステムの物理図を概略的に示す。
【図３】図３は、図１のＨＰＣシステムのブレードシャーシの詳細を概略的に示す。
【図４】図４は、ＡＳＩＣ間接続３５０、３５２のさらなる詳細を概略的に示す。
【図５Ａ】図５Ａは、４レーンモードを使用して伝送されているデータのフレームを概略的に示す。
【図５Ｂ】図５Ｂは、フェイルオーバー後に２レーンモードを使用して伝送されているデータのフレームを概略的に示す。
【図５Ｃ】図５Ｃは、第２のフェイルオーバー後に１レーンモードを使用して伝送されているデータのフレームを概略的に示す。
【図６】図６は、フェイルオーバー動作を行う際に使用されるプロセスを示すフローチャートである。
【図７】図７は、４レーンモードと２レーンモードとの間の遷移を使用して伝送されているデータのフレームを概略的に示す。
【図８】図８は、通信リンクのいくつかのレーンの１つの方向での通常動作を描写する。
【図９Ａ】図９Ａ−９Ｆは、本発明の種々の実施形態による、レーン逆転を使用する図８のレーンの動作を描写する。
【図９Ｂ】図９Ａ−９Ｆは、本発明の種々の実施形態による、レーン逆転を使用する図８のレーンの動作を描写する。
【図９Ｃ】図９Ａ−９Ｆは、本発明の種々の実施形態による、レーン逆転を使用する図８のレーンの動作を描写する。
【図９Ｄ】図９Ａ−９Ｆは、本発明の種々の実施形態による、レーン逆転を使用する図８のレーンの動作を描写する。
【図９Ｅ】図９Ａ−９Ｆは、本発明の種々の実施形態による、レーン逆転を使用する図８のレーンの動作を描写する。
【図９Ｆ】図９Ａ−９Ｆは、本発明の種々の実施形態による、レーン逆転を使用する図８のレーンの動作を描写する。
【発明を実施するための形態】
【００１１】
（システムアーキテクチャ）
図１は、本発明の例証的実施形態とともに使用され得る、例示的高性能コンピュータシステム１００の論理図を概略的に示す。具体的には、当業者によって公知であるように、「高性能コンピュータシステム」または「ＨＰＣシステム」は、プロセッサが共通メモリアドレス空間を直接使用して遠隔データにアクセスし得るように、ハードウェア相互接続を使用して緊密に連結される複数のモジュール式コンピューティングリソースを有する、コンピュータシステムである。
【００１２】
ＨＰＣシステム１００は、計算リソースを提供するためのいくつかの論理的コンピューティングパーティション１２０、１３０、１４０、１５０、１６０、１７０と、複数のパーティション１２０−１７０を管理するためのシステムコンソール１１０とを含む。ＨＰＣシステム内の「コンピューティングパーティション」（または「パーティション」）は、単一のオペレーティングシステムインスタンスを実行し、共通メモリアドレス空間を有する、計算リソースの管理割付である。パーティション１２０−１７０は、論理通信ネットワーク１８０を使用してシステムコンソール１１０と通信してもよい。計算を行うことを所望する科学者または技術者等のシステムユーザは、これらのリソースを割り付けて管理するためにシステムコンソール１１０を使用するシステムオペレータから、計算リソースを要求し得る。パーティションへの計算リソースの割付は、以下で説明される。ＨＰＣシステム１００は、以下でさらに詳細に説明されるように管理上割り当てられる、任意の数のコンピューティングパーティションを有してもよく、多くの場合、利用可能なコンピューティングリソースの全てを包含する１つだけのパーティションを有する。したがって、本図は、本発明の範囲を限定すると見なされるべきではない。
【００１３】
パーティション１６０等の各コンピューティングパーティションは、論理的には、デスクトップコンピュータと類似する単一のコンピュータデバイスであるかのように見なされ得る。したがって、パーティション１６０は、当技術分野でともに使用されるため基本入出力システム（「ＢＩＯＳ」）１９２を使用する、単一のオペレーティングシステム（「ＯＳ」）インスタンス１９１、および１人またはそれを上回るシステムユーザ用のアプリケーションソフトウェア１９３を含む、ソフトウェアを実行してもよい。
【００１４】
したがって、同様に図１に示されるように、コンピューティングパーティションは、１つまたはそれを上回るプロセッサ１９４、揮発性メモリ１９５、不揮発性記憶装置１９６、および入出力（「Ｉ／Ｏ」）デバイス１９７（例えば、ネットワークカード、ビデオディスプレイデバイス、キーボード、および同等物）を含む、システムオペレータによってそれに割り付けられた種々のハードウェアを有する。しかしながら、図１の実施形態のようなＨＰＣシステムでは、各コンピューティングパーティションは、典型的なデスクトップコンピュータよりも多量の処理能力およびメモリを有する。ＯＳソフトウェアは、例えば、Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ（Ｒｅｄｍｏｎｄ，  Ｗａｓｈｉｎｇｔｏｎ）によるＷｉｎｄｏｗｓ（登録商標）オペレーティングシステム、またはＬｉｎｕｘ（登録商標）オペレーティングシステムを含んでもよい。また、ＢＩＯＳは、Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ（Ｓａｎｔａ  Ｃｌａｒａ，  Ｃａｌｉｆｏｒｎｉａ）等のハードウェア製造業者によってファームウェアとして提供されてもよいが、典型的には、以下でさらに詳細に説明されるように、高性能コンピューティングをサポートするようにＨＰＣシステム設計者の必要性に従ってカスタマイズされる。
【００１５】
そのシステム管理役割の一部として、システムコンソール１１０は、コンピューティングパーティション１２０−１７０およびシステムオペレータまたは他のコンピュータシステムの計算能力の間のインターフェースの役割を果たす。その目的で、システムコンソール１１０は、システムオペレータの代わりに、とりわけ、１）ハードウェアを起動すること、２）システムコンピューティングリソースをコンピューティングパーティションに分割すること、３）パーティションを初期化すること、４）各パーティションの健全性およびその中で生成される任意のハードウェアまたはソフトウェアエラーを監視すること、５）オペレーティングシステムおよびアプリケーションソフトウェアを種々のパーティションに分配すること、６）オペレーティングシステムおよびソフトウェアを実行させること、７）その中のパーティションまたはソフトウェアの状態をバックアップすること、８）アプリケーションソフトウェアをシャットダウンすること、および９）コンピューティングパーティションまたはＨＰＣシステム１００全体をシャットダウンすることを可能にする、ＨＰＣシステムハードウェアおよびソフトウェアへのコマンドを発行する。これらの特定の機能は、「システム動作」と題された以下の節でさらに詳細に説明される。
【００１６】
図２は、図１の実施形態による高性能コンピュータシステム１００の物理図を概略的に示す。図１のＨＰＣシステム１００を備えるハードウェアは、鎖線によって囲繞される。ＨＰＣシステム１００は、ユーザアクセスを促進するように、企業データネットワーク２１０に接続される。
【００１７】
ＨＰＣシステム１００は、システムコンソール１１０の機能を果たすシステム管理ノード（「ＳＭＮ」）２２０を含む。管理ノード２２０は、企業またはＨＰＣシステム設計者のいずれかによって提供される、デスクトップコンピュータ、サーバコンピュータ、または他の類似コンピュータデバイスとして実装されてもよく、ＨＰＣシステム１００を制御するために必要なソフトウェア（すなわち、システムコンソールソフトウェア）を含む。
【００１８】
ＨＰＣシステム１００は、企業ローカルエリアネットワーク（「ＬＡＮ」）、仮想プライベートネットワーク（「ＶＰＮ」）、インターネット、または同等物、もしくはこれらのネットワークの組み合わせ等の当技術分野で公知の任意のデータネットワークを含み得る、データネットワーク２１０を使用してアクセス可能である。これらのネットワークのうちのいずれかは、数人のユーザが、遠隔で、および／または同時に、ＨＰＣシステムリソースにアクセスすることを可能にし得る。例えば、管理ノード２２０は、Ｗｉｎｄｏｗｓ（登録商標）リモートデスクトップサービスまたはＵｎｉｘ（登録商標）セキュアシェル等の当技術分野で公知のツールを使用して、遠隔ログインを介して企業コンピュータ２３０によってアクセスされてもよい。企業がそうしたい場合、ＨＰＣシステム１００へのアクセスが、遠隔コンピュータ２４０に提供されてもよい。遠隔コンピュータ２４０は、上記のように管理ノード２２０へのログインを介して、または当業者に公知であるようなゲートウェイもしくはプロキシシステムを使用して、ＨＰＣシステムにアクセスしてもよい。
【００１９】
ＨＰＣシステム１００のハードウェアコンピューティングリソース（例えば、図１に示されるプロセッサ、メモリ、不揮発性記憶装置、およびＩ／Ｏデバイス）は、管理されてコンピューティングパーティションの中へ割り付けられる、図２に示されるブレードシャーシ２５２、２５４、２５６、２５８等の１つまたはそれを上回る「ブレードシャーシ」によって、集合的に提供される。ブレードシャーシは、「ブレード」と呼ばれる複数の積重可能モジュール式電子回路基板の間の高速データ通信を収納し、それに給電し、およびそれを提供するように構成される、電子シャーシである。各ブレードは、独立型コンピュータサーバの役割を果たすために十分なコンピュータハードウェアを含む。ブレードシャーシのモジュール式設計は、ブレードが最小限のケーブル敷設および垂直空間を用いて電力およびデータ線に接続されることを可能にする。
【００２０】
したがって、各ブレードシャーシ、例えば、ブレードシャーシ２５２は、ブレードシャーシ２５２内のシステム機能を管理するためのシャーシ管理コントローラ２６０（「シャーシコントローラ」または「ＣＭＣ」とも称される）と、コンピューティングリソースを提供するためのいくつかのブレード２６２、２６４、２６６とを有する。各ブレード、例えば、ブレード２６２は、そのハードウェアコンピューティングリソースをＨＰＣシステム１００の集合的全リソースに与える。システム管理ノード２２０が、シャーシコントローラ２６０等のシャーシコントローラを使用して、ＨＰＣシステム１００全体のハードウェアコンピューティングリソースを管理する一方で、各シャーシコントローラは、順に、そのブレードシャーシ内のブレードのみのためのリソースを管理する。シャーシコントローラ２６０は、以下でさらに詳細に説明される、ローカル管理バス２６８を用いて、ブレードシャーシ２５２の内側のブレード２６２−２６６に物理的および電気的に連結される。他のブレードシャーシ２５４−２５８内のハードウェアも同様に構成される。
【００２１】
シャーシコントローラは、管理接続２７０を使用して相互と通信する。管理接続２７０は、例えば、Ｅｔｈｅｒｎｅｔ（登録商標）通信プロトコルを実行する高速ＬＡＮ、または他のデータバスであってもよい。対照的に、ブレードは、コンピューティング接続２８０を使用して相互と通信する。その目的で、コンピューティング接続２８０は、例証的に、Ｓｉｌｉｃｏｎ  Ｇｒａｐｈｉｃｓ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｒｐ．（Ｆｒｅｍｏｎｔ，  Ｃａｌｉｆｏｒｎｉａ）によって開発されたＮＵＭＡＬＩＮＫ等の高帯域幅低遅延システム相互接続を有する。
【００２２】
シャーシコントローラ２６０は、システムハードウェア管理機能をＨＰＣシステムの残りの部分に提供する。例えば、シャーシコントローラ２６０は、ＳＭＮ２２０からシステム起動コマンドを受信し、ローカル管理バス２６８を使用して、ブレード２６２−２６６のそれぞれへの起動コマンドを発行することによって応答してもよい。同様に、シャーシコントローラ２６０は、ブレード２６２−２６６のうちの１つまたはそれを上回るものからハードウェアエラーデータを受信し、他のシャーシコントローラによって記憶されたエラーデータと組み合わせて、以降の分析のために本情報を記憶してもよい。図２に示されるもの等のいくつかの実施形態では、ＳＭＮ２２０または企業コンピュータ２３０は、ＨＰＣシステム１００を制御するシステム管理コマンドを処理し、これらのコマンドを他のシャーシコントローラに転送する、単一のマスタシャーシコントローラ２６０へのアクセスを提供される。しかしながら、他の実施形態では、ＳＭＮ２２０は、管理接続２７０に直接連結され、コマンドを各シャーシコントローラに個別に発行する。当業者は、同一のタイプの機能性を可能にする、これらの設計の変形例を考慮し得るが、明確にするために、これらの設計のみが提示される。
【００２３】
ブレードシャーシ２５２、そのブレード２６２−２６６のコンピュータハードウェア、およびローカル管理バス２６８は、当技術分野で公知であるように提供されてもよい。しかしながら、シャーシコントローラ２６０は、ＨＰＣシステム設計者によって提供されるハードウェア、ファームウェア、またはソフトウェアを使用して、実装されてもよい。各ブレードは、独立型コンピュータサーバの技術分野で公知である、ある程度の量のプロセッサ、揮発性メモリ、不揮発性記憶装置、およびＩ／ＯデバイスをＨＰＣシステム１００に提供する。しかしながら、各ブレードはまた、「システム動作」と題された節でさらに詳細に以下で説明されるように、これらのコンピューティングリソースがともにグループ化され、コンピューティングパーティションとして集合的に取り扱われることを可能にするハードウェア、ファームウェア、および／またはソフトウェアも有する。
【００２４】
図２は、４つのシャーシおよび各シャーシ内の３つのブレードを有する、ＨＰＣシステム１００を示すが、これらの図は、本発明の範囲を限定しないことを理解されたい。ＨＰＣシステムは、数１０個のシャーシおよび数１００個のブレードを有してもよく、実際に、ＨＰＣシステムは、多くの場合、非常に大量の緊密に連結されたコンピューティングリソースを提供するため望ましい。
【００２５】
図３は、さらに詳細に単一のブレードシャーシ２５２を概略的に図示する。本図では、直接的な説明に関連しない部品は省略されている。シャーシコントローラ２６０は、システム管理ノード２２０および管理接続２７０へのその接続を伴って示されている。シャーシコントローラ２６０は、シャーシ管理データを記憶するためのシャーシデータ記憶部３０２を提供されてもよい。いくつかの実施形態では、シャーシデータ記憶部３０２は、揮発性ランダムアクセスメモリ（「ＲＡＭ」）であり、その場合、たとえコンピューティングパーティションのうちの１つまたはそれを上回るものが（例えば、ＯＳクラッシュにより）故障した、もしくはブレードが誤動作したとしても、電力がブレードシャーシ２５２に印加される限り、シャーシデータ記憶部３０２内の各データは、ＳＭＮ２２０によってアクセス可能である。他の実施形態では、シャーシデータ記憶部３０２は、ハードディスクドライブ（「ＨＤＤ」）またはソリッドステードドライブ（「ＳＳＤ」）等の不揮発性記憶装置である。これらの実施形態では、シャーシデータ記憶部３０２内のデータは、ＨＰＣシステムが電源を切られて再起動された後にアクセス可能である。
【００２６】
図３は、議論目的でブレード２６２および２６４の具体的実装の関連部分を示す。ブレード２６２は、シャーシレベルでシャーシコントローラによって果たされる機能に類似する様式において、ブレードレベルでシステム管理機能を実行する、ブレード管理コントローラ３１０（「ブレードコントローラ」または「ＢＭＣ」とも呼ばれる）を含む。シャーシコントローラおよびブレードコントローラの動作についてのさらなる詳細に関して、以下の「システム動作」と題された節を参照されたい。ブレードコントローラ３１０は、シャーシコントローラ２６０との通信を可能にするように、ＨＰＣシステム設計者によって設計されるカスタムハードウェアとして実装されてもよい。加えて、ブレードコントローラ３１０は、各自のＲＡＭ３１６にその管理機能を実行させてもよい。シャーシコントローラ２６０は、図３および前の図に示されるように、ローカル管理バス２６８を使用して各ブレードのブレードコントローラと通信する。
【００２７】
ブレード２６２はまた、ＲＡＭ３２４、３２６に接続される１つまたはそれを上回るプロセッサ３２０、３２２も含む。ブレード２６２は、代替として、当技術分野で公知であるように、複数のプロセッサが単一のバス上のＲＡＭの共通セットにアクセスし得るように構成されてもよい。また、プロセッサ３２０、３２２は、当技術分野で公知であるように、任意の数の中央処理装置（「ＣＰＵ」）またはコアを含んでもよいことを理解されたい。ブレード２６２内のプロセッサ３２０、３２２は、Ｉ／Ｏデバイス３３２と通信するデータバス、不揮発性記憶装置３３４と通信するデータバス、および独立型コンピュータシステムで一般的に見出される他のバス等の他のアイテムに接続される。（明確にするために、図３は、プロセッサ３２０からいくつかのデバイスへの接続のみを示す。）プロセッサ３２０、３２２は、例えば、Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎによって製造されたＩｎｔｅｌ（Ｒ）Ｃｏｒｅ（ＴＭ）プロセッサであってもよい。Ｉ／Ｏバスは、例えば、ＰＣＩまたはＰＣＩ  Ｅｘｐｒｅｓｓ（「ＰＣＩｅ」）バスであってもよい。記憶装置バスは、例えば、ＳＡＴＡ、ＳＣＳＩ、またはＦｉｂｒｅ  Ｃｈａｎｎｅｌバスであってもよい。他のバス規格、プロセッサタイプ、およびプロセッサ製造業者が、本発明の例証的実施形態に従って使用されてもよいことが理解されるであろう。
【００２８】
各ブレード（例えば、ブレード２６２および２６４）は、その機能性の大部分を制御する、特定用途向け集積回路３４０（「ＡＳＩＣ」、「ハブチップ」、または「ハブＡＳＩＣ」とも称される）を含む。より具体的には、プロセッサ３２０、３２２、ＲＡＭ３２４、３２６、および他のデバイス３３２、３３４をともに論理的に接続し、管理されたマルチプロセッサコヒーレント共有分散型メモリＨＰＣシステムを形成するために、プロセッサ３２０、３２２は、ハブＡＳＩＣ３４０に電気的に接続される。したがって、ハブＡＳＩＣ３４０は、ＳＭＮ２２０、シャーシコントローラ２６０、およびブレードコントローラ３１０によって生成されるＨＰＣシステム管理機能と、ブレード２６２のコンピューティングリソースとの間のインターフェースを提供する。
【００２９】
本接続では、ハブＡＳＩＣ３４０は、集積回路の間で信号を渡すためのフィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）３４２または類似プログラマブルデバイスを介して、ブレードコントローラ３１０と接続する。具体的には、信号が、シャーシコントローラ２６０によって発行されるコマンドに応答して、ブレードコントローラ３１０の出力ピン上で生成される。これらの信号は、ＦＰＧＡ３４２によって、ハブＡＳＩＣ３４０のある入力ピンのためのコマンドに変換され、その逆も同様である。例えば、シャーシコントローラ２６０からブレードコントローラ３１０によって受信される「電源オン」信号は、とりわけ、「電源オン」電圧をハブＡＳＩＣ３４０上のあるピンに提供することを必要とし、ＦＰＧＡ３４２が本タスクを促進する。
【００３０】
ＦＰＧＡ３４２のフィールドプログラマブル性質は、ブレードコントローラ３１０とＡＳＩＣ３４０との間のインターフェースが製造後に再プログラム可能であることを可能にする。したがって、例えば、ブレードコントローラ３１０およびＡＳＩＣ３４０は、ある一般的機能を有するように設計されてもよく、ＦＰＧＡ３４２は、有利なこととして、用途特異的な方法でこれらの機能の使用をプログラムするために使用されてもよい。ブレードコントローラ３１０とＡＳＩＣ３４０との間の通信インターフェースはまた、ハードウェア設計エラーがいずれか一方のモジュールで発見された場合に更新されてもよく、新しいハードウェアが加工されることを要求することなく、迅速なシステム修復を可能にする。
【００３１】
また、コンピューティングリソースとシステム管理との間のインターフェースとしてのその役割に関連して、ハブＡＳＩＣ３４０は、高速プロセッサ相互接続３４４を介してプロセッサ３２０、３２２に接続される。一実施形態では、プロセッサ３２０、３２２は、本目的でＩｎｔｅｌ（Ｒ）ＱｕｉｃｋＰａｔｈ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（「ＱＰＩ」）を提供するＩｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎによって製造され、ハブＡＳＩＣ３４０は、ＱＰＩを使用してプロセッサ３２０、３２２と通信するためのモジュールを含む。他の実施形態は、他のプロセッサ相互接続構成を使用してもよい。
【００３２】
各ブレード２６内のハブチップ３４０はまた、高帯域幅低遅延データ通信のために、他のブレードへの接続も提供する。したがって、ハブチップ３４０は、異なるブレードシャーシを接続するコンピューティング接続２８０への通信リンク３５０を含む。本通信リンク３５０は、例えば、ネットワーキングケーブルを使用して実装されてもよい。ハブＡＳＩＣ３４０はまた、同一のブレードシャーシ２５２内の他のブレードへの接続も含む。ブレード２６２のハブＡＳＩＣ３４０は、シャーシコンピューティング接続３５２を介してブレード２６４のハブＡＳＩＣ３４０に接続する。シャーシコンピューティング接続３５２は、ネットワーキングケーブルを使用するのではなく、ブレードシャーシ２５２のバックプレーン上のデータバスとして実装されてもよく、有利なこととして、高性能計算タスクのために必要とされるブレードの間の非常に高速のデータ通信を可能にする。シャーシ間コンピューティング接続２８０およびシャーシ内コンピューティング接続３５２の両方の上のデータ通信は、ＮＵＭＡＬＩＮＫプロトコルまたは類似プロトコルを使用して実装されてもよい。
（システム動作）
【００３３】
システム管理コマンドは、概して、ＳＭＮ２２０から、管理接続２７０を通ってブレードシャーシ（およびそれらのシャーシコントローラ）へ、次いで、ブレード（およびそれらのブレードコントローラ）へ、最終的に、システムコンピュータハードウェアを使用してコマンドを実装するハブＡＳＩＣＳへ伝搬する。
【００３４】
具体的な実施例として、ＨＰＣシステムの電源を入れるプロセスを考慮されたい。本発明の例示的実施形態によると、ＨＰＣシステム１００は、システムオペレータがＳＭＮ２２０から「電源オン」コマンドを発行するときに給電される。ＳＭＮ２２０は、ブレードシャーシ２５２内のシャーシコントローラ２６０等のそれらのそれぞれのシャーシコントローラを介して、本コマンドをブレードシャーシ２５２−２５８のそれぞれに伝搬する。各シャーシコントローラは、順に、ブレード２６２のブレードコントローラ３１０等のそれらのそれぞれのブレードコントローラを介して、そのブレードシャーシ内のそれぞれのブレードのうちのそれぞれに「電源オン」コマンドを発行する。ブレードコントローラ３１０は、ハブチップ３４０のピンのうちの１つの上で、それが初期化することを可能にする信号を提供する、ＦＰＧＡ３４２を使用して、「電源オン」コマンドをその対応するハブチップ３４０に発行する。他のコマンドも同様に伝搬する。
【００３５】
いったんＨＰＣシステムが電源を入れられると、そのコンピューティングリソースは、コンピューティングパーティションに分割されてもよい。各コンピューティングパーティションに割り付けられるコンピューティングリソースの数量は、管理上の決定である。例えば、企業が、完成させるいくつかのプロジェクトを有してもよく、各プロジェクトは、ある量のコンピューティングリソースを必要とすると予測される。異なるプロジェクトが、処理能力、メモリ、およびＩ／Ｏデバイス使用の異なる割合を有してもよく、異なるブレードが、インストールされた異なる数量のリソースを有してもよい。ＨＰＣシステム管理者は、ＨＰＣシステム１００のコンピューティングリソースを区分化するときに、これらを考慮する。コンピューティングリソースを区分化することは、各ブレードのＲＡＭ３１６をプログラムすることによって達成されてもよい。例えば、ＳＭＮ２２０は、システム構成ファイルを読み取った後に、適切なブレードプログラミングコマンドを発行してもよい。
【００３６】
ＨＰＣシステム１００の集合的ハードウェアコンピューティングリソースは、任意の管理上の必要性に従って、コンピューティングパーティションに分割されてもよい。したがって、例えば、単一のコンピューティングパーティションは、１つのブレードシャーシ２５２のブレードのうちのいくつかまたは全て、複数のブレードシャーシ２５２および２５４のブレードの全て、１つのブレードシャーシ２５２のブレードのうちのいくつかおよびブレードシャーシ２５４のブレードの全てのコンピューティングリソース、ＨＰＣシステム１００全体のコンピューティングリソースの全て、ならびに類似の組み合わせを含んでもよい。ハードウェアコンピューティングリソースは、静的に区分化されてもよく、その場合、ＨＰＣシステム１００全体の再起動が、ハードウェアを再び割り付けするために必要とされる。代替として、かつ優先的に、ハードウェアコンピューティングリソースは、ＨＰＣシステム１００が電源を入れられている間に動的に区分化される。このように、割り付けられていないリソースが、他のパーティションの動作を中断することなく、パーティションに割り当てられてもよい。
【００３７】
いったんＨＰＣシステム１００が適切に区分化されると、各パーティションは、独立型コンピュータシステムの役割を果たすと見なされ得ることに留意されたい。したがって、２つまたはそれを上回るパーティションが、ＨＰＣシステム１００の内側で論理的計算グループを形成するように組み合わせられてもよい。そのようなグループ化は、例えば、特定の計算タスクが、単一のオペレーティングシステムが制御できるよりも多くのプロセッサまたはメモリを割り付けられる場合に、必要であり得る。例えば、単一のオペレーティングシステムが６４個だけのプロセッサを制御することができるが、特定の計算タスクが２５６個のプロセッサの複合能力を必要とする場合には、４つのパーティションが、そのようなグループ内でタスクに割り付けられてもよい。本グループ化は、各コンピューティングパーティション上に同一のソフトウェアをインストールすること、およびパーティションにＶＰＮを提供すること等の当技術分野で公知の技法を使用して、達成されてもよい。
【００３８】
いったん少なくとも１つのパーティションが作成されると、パーティションが起動されてもよく、そのコンピューティングリソースが初期化されてもよい。パーティション１６０等の各コンピューティングパーティションは、単一のＯＳ１９１および単一のＢＩＯＳ１９２を有すると論理的に見なされてもよい。当技術分野で公知であるように、ＢＩＯＳは、利用可能なハードウェアを電気的に探査し、ＯＳが起動することができるように公知の状態に初期化する、命令の集合であり、典型的には、各物理的サーバ上のファームウェアチップ内で提供される。しかしながら、単一の論理的コンピューティングパーティション１６０は、いくつかのブレードまたはいくつかのブレードシャーシにさえ跨っていてもよい。ブレードの内側のプロセッサ３２０または３２２は、特定のパーティションへのその割付を強調するように、「コンピューティングノード」または単純に「ノード」と称されてもよい。物理的ブレードは、複数のプロセッサ３２０、３２２およびメモリ３２４、３２６を有する場合、１つより多くのコンピューティングノードを備えてもよいことが理解されるであろう。
【００３９】
本発明の実施形態に従ってパーティションを起動することは、在庫から購入されるブレードシャーシにいくつかの修正が行われることを要求する。具体的には、各ブレード内のＢＩＯＳは、同一のブレードまたはブレードシャーシ内のものだけではなく、同一のコンピューティングパーティション内の他のハードウェアリソースを判定するように修正される。起動コマンドがＳＭＮ２２０によって発行された後、ハブＡＳＩＣ３４０は、最終的に、ＢＩＯＳ命令を使用して起動プロセスを開始するように、適切な信号をプロセッサ３２０に提供する。ＢＩＯＳ命令は、順に、ハブＡＳＩＣ３４０から、パーティション内の識別（ノード）番号、ノード相互接続トポロジ、パーティション内の他のノードの中に存在するデバイスのリスト、パーティション内の全てのノードによって使用されるマスタクロック信号等のパーティション情報を取得する。本情報を装備すると、プロセッサ３２０は、１）Ｉ／Ｏデバイス３３２および不揮発性記憶装置３３４を初期化すること等の非ＨＰＣ特異的ステップと、さらには、２）ローカルハードウェアクロックをマスタクロック信号に同期化すること、所与のノード内のＨＰＣ特化ハードウェアを初期化すること、パーティション内の他のどのノードがそのＲＡＭにアクセスし得たかについての情報を含むメモリディレクトリを管理すること、およびパーティション全体の物理的メモリマップを作成すること等のＨＰＣ特異的ステップとを含む、ブレード２６２を初期化するために必要とされるあらゆるステップを講じてもよい。
【００４０】
本時点で、各物理的ＢＩＯＳは、パーティションの各自の表示を有し、各ノード内のコンピューティングリソースの全ては、ＯＳがロードするために作成される。次いで、ＢＩＯＳは、マルチプロセッサシステムの技術分野で公知の技法に従って、ＯＳイメージを読み取ってそれを実行する。ＢＩＯＳは、たとえハードウェア自体が複数のブレードシャーシおよびブレードの間で散乱されたとしても、単一の非常に大型のコンピュータデバイスの中に全て存在した場合のようにパーティションハードウェアの表示をＯＳに提示する。このように、単一のＯＳインスタンス自体が、そのパーティションに割り当てられるブレードシャーシおよびブレードのうちのいくつか、または好ましくは全てにわたって、拡散する。異なるオペレーティングシステムが、種々のパーティション上にインストールされてもよい。例えば、パーティションが作成された直後に、ＯＳイメージが存在しない場合、ＯＳイメージは、パーティション起動前に、当技術分野で公知のプロセスを使用してインストールされてもよい。
【００４１】
いったんＯＳが安全に実行されると、そのパーティションは、単一の論理コンピュータデバイスとして操作されてもよい。所望の計算を実行するためのソフトウェアが、ＨＰＣシステムオペレータによって種々のパーティションにインストールされてもよい。次いで、ユーザが、ＳＭＮ２２０にログインしてもよい。ＳＭＮ２２０からそれらのそれぞれのパーティションへのアクセスは、例えば、ログイン証明書に基づくボリュームマウンティングおよびディレクトリ許可を使用して制御されてもよい。システムオペレータは、各パーティションの健全性を監視し、ハードウェアまたはソフトウェアエラーが検出されたときに是正ステップを講じてもよい。長期実行アプリケーションプログラムの現在の状態は、システムまたはアプリケーションクラッシュの場合に作業を失うことから保護するように、周期的に、もしくはシステムオペレータまたはアプリケーションユーザのコマンドに応じてのいずれかで、不揮発性記憶装置に保存されてもよい。システムオペレータまたはシステムユーザは、アプリケーションソフトウェアをシャットダウンするコマンドを発行してもよい。ＨＰＣパーティションの他の動作が、当業者に公知であり得る。管理上必要とされるとき、システムオペレータは、コンピューティングパーティションを完全にシャットダウンし、パーティション内のコンピューティングリソースを再び割り付け、または割り付けを解除し、もしくはＨＰＣシステム１００全体の電源を切ってもよい。
（ＡＳＩＣ間通信）
【００４２】
図４は、ＡＳＩＣ間通信リンク３５０、３５２のさらなる詳細を概略的に示す。ＡＳＩＣ４１０、４２０は、マルチレーンＡＳＩＣ間通信リンク３５０または３５２によって接続される（４つのレーンが描写されている）。各ＡＳＩＣ４１０、４２０は、リンク層（それぞれ、４１１、４２１）と、物理層（それぞれ、４１２、４２２）とを有するものとして示される。ＡＳＩＣ４１０、４２０の他の関連部分は、明確にするために省略されている。物理層４１２、４２２は、それぞれのノードアクセスを、ノードを接続する物理媒体（例えば、ケーブル敷設またはバックプレーン回路）に提供する。リンク層４１１、４２１は、ノードの固定ハードウェアアドレスを定義し、これらのハードウェアアドレスを使用してＡＳＩＣ４１０、４２０の間でデータを渡すための論理リンクを確立する、１つまたはそれを上回るネットワーキングプロトコル（例えば、Ｅｔｈｅｒｎｅｔ（登録商標）またはＮＵＭＡＬＩＮＫ）を提供する。
【００４３】
通信リンク３５０、３５２は、４つの双方向通信レーン、すなわち、レーン０からレーン３を有するものとして描写される。本発明は、４つのレーンの使用に限定されないことを理解されたい。任意の実施形態で使用されるレーンの数は、最小帯域幅要件、最大待ち時間要件、リンクエラー率、データ再伝送オーバーヘッド、所与の数のレーンを有する物理的コネクタの商業的可用性、および類似要因を含む、いくつかの要因の関数である。各そのようなレーンは、伝送機および受信機を使用して、ＡＳＩＣ４１０とＡＳＩＣ４２０との間の双方向通信を提供する。例えば、レーン０を使用する双方向通信は、２つの双方向チャネル、すなわち、それぞれ、伝送機４１３および受信機４２４を使用してＡＳＩＣ４１０からＡＳＩＣ４２０に送信するもの、ならびに、それぞれ、伝送機４２３および受信機４１４を使用してＡＳＩＣ４２０からＡＳＩＣ４１０にデータを送信するものによって可能にされる。他のレーンも同様に構築される。
【００４４】
エージェントＡ４１６およびエージェントＢ４２６は、リアルタイムで通信リンク３５０、３５２を管理するために、それらのそれぞれのノードコントローラＡＳＩＣ４１０、４２０上に常駐する、ハードウェアおよびファームウェアサービスである。各エージェント４１６、４２６は、必要リアルタイム性能を達成するために、組み込みマイクロコントローラを使用する。マイクロコントローラは、例えば、より小型のＡＳＩＣまたはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）であってもよい。メモリマップドレジスタ（ＭＭＲ）４１５、４２５は、リアルタイム性能が必要とされないときに使用される、ソフトウェア管理用のゲートウェイである。
【００４５】
ここで、上記のようなＮＵＭＡＬＩＮＫを参照して、通信リンク３５０、３５２の動作を説明する。ＡＳＩＣ４１０からＡＳＩＣ４２０への通信のためのメッセージが、最初に形成される。これに関連して、「メッセージ」は、より高レベルの機能の間のデータ転送の単位である。メッセージは、例えば、ＡＳＩＣ４１０と関連付けられるノード内のプロセッサから受信される計算データ、ＡＳＩＣ４１０の別の部分の中の回路によって生成されるシステム保守データ、ＡＳＩＣ４１０がルーティング仲介の役割を果たしている別のノードからのデータ、またはより高レベルのプロトコルへの意味を有する他のそのようなデータを含んでもよい。ＮＵＭＡＬＩＮＫでは、メッセージは、ヘッドビットによってマークされる１２８ビットヘッダと、ゼロまたはそれを上回る付加的パケットと、テールビットでマークされるパケットを伴う終端とを含む。
【００４６】
１２８ビットＮＵＭＡＬＩＮＫメッセージは、「フリット」の中へ各パケットを配置する、リンク層４１１内で受信される。これに関連して、「フリット」は、データフロー制御を提供する、リンク層プロトコルにおける伝送の単位である（したがって、フリットは「フロー制御単位」である）。ＮＵＭＡＬＩＮＫリンクでは、各フリットは、８ビット制御および１６ビット巡回冗長検査（ＣＲＣ）とともに１２８ビットパケットから成る。１５２ビットフリットは、以下で説明されるようにそれを４つの「フィット」に分割する、物理層４１２に渡され、これらのフィットは、物理的通信リンク３５０、３５２上で伝送される。
【００４７】
データの伝送は、２つのＡＳＩＣ４１０、４２０の間で同期化される、クロック信号を使用して起こる。各クロックサイクルで、ＡＳＩＣ４１０の物理層４１２内の伝送機はそれぞれ、通信リンク３５０、３５２内のその関連レーンを使用して、データのフィットをＡＳＩＣ４２０の物理層４２２内の対応する受信機に伝送する。合致した受信機が、同期化クロックを使用して、本データを受信する。
【００４８】
いったんフィットが受信されると、物理層４２２は、それらをフリットに再構築するリンク層４２１にそれらを渡す。本段階で、ＣＲＣがチェックされ、リンクエラーがある場合、エラーフリットがＡＳＩＣ４１０に返される。エラーがない場合、フリットは、さらなる処理のためにＡＳＩＣ４２０の上位層プロトコルに返される。
（帯域内フェイルオーバー）
【００４９】
ハードウェア／ファームウェアエージェント４１６、４２６は、各物理層受信機においてリンクエラー率および信号の損失を継続的に監視し、各受信機においてアイダイアグラムを生成してスコア化し、エラーインジケータに基づいて他のレーンを監視する。したがって、エージェントＡ４１６は、受信機４１４を含む、ＡＳＩＣ４１０の物理層４１２内の受信機を監視し、各受信機のエラー測定基準を計算する。エラー率または他の測定基準が所与の受信機についてその閾値試験で不合格になるとき、それぞれのエージェント４１６、４２６は、どのレーンが故障しているかを判定し、本明細書に説明される帯域内フェイルオーバープロトコルを使用して、サービスからそれを除去する。全てのレーンフェイルオーバー動作は、リンクの受信端から開始される。
【００５０】
本発明の種々の実施形態によると、フェイルオーバー動作は、有利なこととして、リンクをシャットダウンすることを必要としない。したがって、それらは、種々の理由で使用されてもよい。具体的には、フェイルオーバーは、レーン上のエラー率が高いときに使用されてもよい。フェイルオーバーはまた、そのようにすることが望ましいときに電力を節約するために使用されてもよい。フェイルオーバーはまた、リンクの信頼性および可用性を向上させるために使用されてもよい。また、有利なこととして、フェイルオーバー条件に遭遇したとき、使用時にレーンと関連付けられてない伝送機および受信機は、電源を切られてもよい。
【００５１】
各エージェント４１６、４２６は、少なくとも３つのプログラマブルレジスタを利用する。「現在のローカル」レジスタは、ローカル伝送機によって現在使用されている特定のフェイルオーバー構成を示すために使用される。「保留中のローカル」レジスタは、保留中、要求された、または処理中のフェイルオーバー状態を保持する。フェイルオーバーが完了した後、「現在のローカル」および「保留中のローカル」レジスタは、同等である。「遠隔」レジスタは、他のＡＳＩＣから受信されるフェイルオーバー構成を本ＡＳＩＣに割り当てるために使用される。各レジスタは、データを反対側に伝送し、そこからデータを受信するために、どのレーンが使用されるべきであるかを符号化する値を記憶する。
【００５２】
好ましい実施形態は、７つの一意のレーンフェイルオーバー構成を含む。これらは、（１）いかなるフェイルオーバーも必要とされないときに使用される、デフォルトの４つのレーン、（２）上位一対のレーン、すなわち、レーン２およびレーン３、（３）下位一対のレーン、すなわち、レーン０およびレーン１、ならびに（４−７）個別に４つのレーンのうちのいずれか１つである。両方向での任意の組み合わせがサポートされ、フェイルオーバーアクションは、両方向で同時に起こり得る。したがって、好ましい実施形態は、１〜７の数を示すように３つのビットを有するレジスタを含む。
【００５３】
代替実施形態は、レーンが使用された場合に各ビットが設定され（１に等しい）、レーンが使用されなかった場合に消去される（０に等しい）、４つのビットを有するレジスタを使用してもよい。上記のレジスタ符号化を使用して、最も融通性のある実施形態は、Ｎがレーンの数に等しい、Ｎ個のビットを有するレジスタを使用するが、これはまた、実装する最も複雑な実施形態である。他の実施形態は、他の数およびタイプのレジスタを使用してもよい。
【００５４】
図５Ａ−５Ｃは、好ましい実施形態において、各フェイルオーバーモードのための４つの物理レーンを横断して、どのようにして伝送されたデータフレームまたはフリットがフォーマットされるかを示す。水平次元は、時間であり、垂直次元は、レーン番号である。各データフレーム５１１−５１５は、Ａ、Ｂ、Ｃ、Ｄと標識された４つの物理層伝送単位（「フィット」）から成る。各図は、５つのデータフレームおよび１つの物理層メッセージを示す。
【００５５】
本発明の実施形態は、伝送機および受信機が両方とも同一のフェイルオーバー構成を使用していることを確実にするために、ハンドシェイクプロトコルを使用してもよい。各要求または確認は、４つ全てのレーン上で同時に送信される、符号化された物理層メッセージであり、各レーンは、同一のメッセージＭ５２０を搬送する。各要求または確認は、１回、または複数の連続コピーとして送信されることができる。これは、信頼性を向上させる、空間的および時間的ポーリング技法を可能にする。
【００５６】
図５Ａに示される４レーンモードでは、各フレーム５１１−５１５の転送単位Ａ、Ｂ、Ｃ、Ｄが、１つの時間周期（例えば、いくつかのクロックサイクル）で４つのレーンを横断して伝送される。４つ全てのレーンが伝送のために利用可能であるため、各フレームの４つのフィットＡ、Ｂ、Ｃ、Ｄはそれぞれ、別個のレーン上で伝送される。本構成は、最大利用可能帯域幅を使用する。
【００５７】
図５Ｂに示される半値幅モードでは、２つだけのレーンが伝送のために利用可能である。本一対のレーンは、レーン０およびレーン１、またはレーン２およびレーン３のいずれかである。したがって、フィットＡ、Ｂ、Ｃ、Ｄは、両方の一対のレーン上で伝送される。図に示すように、第１のフレーム５１１のフィットＡは、レーン０およびレーン２上で伝送され、フレーム５１１のフィットＢは、同時にレーン１およびレーン３上で伝送される。このようにして、両方のフィットは、どの一対のレーンがアクティブであるかにかかわらず、受信ＡＳＩＣによって受信される。次に、フレーム５１１のフィットＣが、レーン０およびレーン２上で伝送される一方で、フィットＤは、同時にレーン１およびレーン３上で伝送される。フィットＣ、Ｄが受信された後、受信ＡＳＩＣは、フレーム５１１を再構築するように全てのフィットをともに組み立てる。本プロセスは、残りのフレーム５１２−５１５について継続される。本構成は、各フレームを送信するために２つの時間周期を要するが、１つだけのハンドシェイクメッセージＭ５２０が伝送されるため、最大利用可能帯域幅の約半分を使用する。
【００５８】
図５Ｃに示される４分の１帯域幅モードでは、フレーム５１１−５１５が、４つの時間周期にわたって４つ全てのレーンを横断して冗長的に伝送される。したがって、どのレーンがアクティブであろうと、フィットＡは、第１の時間周期後に、フィットＢは、第２の時間周期後に、フィットＣは、第３の時間周期後に、フィットＤは、第４の時間周期後に受信されるであろう。これは、各フレーム５１１−５１５に当てはまる。本構成は、最大利用可能帯域幅の約４分の１を使用する。これらの実施例では、物理層メッセージＭ５２０は、単一の時間周期に及ぶ。向上した信頼性のために、これは、複数の時間周期に及んでもよい。これは、常にデータフレームの間に挿入される。
【００５９】
図６は、例示的フェイルオーバー動作を行う際に使用されるプロセスを示すフローチャートである。本実施例では、通信リンク３５０、３５２は、ＡＳＩＣ４１０によって検出されるエラーにより、４つのレーンから２つのレーン（レーン２およびレーン３）にフェイルオーバーする。
【００６０】
プロセス６１０では、エージェントＡ４１６が、レーン１内の不良な信号品質を検出し、リンクが２つのレーンにフェイルオーバーするべきであることを判定する。プロセス６１２では、エージェントＡ４１６が、その「ローカル」レジスタを、不良な品質を有するレーンを含まない上位レーンペア｛２，３｝にプログラムする。プロセス６１４では、次のフレーム境界において、エージェントＡ４１６が、データストリームに２レーンフェイルオーバー要求Ｍ５２０を挿入する。エージェントＡ４１６は、確認（ＡＣＫ）がエージェントＢ４２６から受信されるまで、それが４レーンモードで受信するデータを処理し続ける。エージェントＡ４１６は、検出されたレーンエラーの重大性が高い場合、データ処理を一時停止してもよい。プロセス６１６では、エージェントＡ４１６が、タイムアウトカウンタを始動し、エージェントＢ４２６が要求を確認することを待機する。タイマがＡＣＫを受信することに先立って満了する場合、エージェントＡ４１６は、好ましくは、（矢印６１８によって示されるように）要求を再試行する、または別個のハンドシェイクメッセージ（図示せず）を使用してダウンリンクを宣言することができる。
【００６１】
プロセス６２０では、エージェントＢ４２６が、２レーンフェイルオーバー要求を受信し、それを処理する。これは、メッセージＭ５２０が上位レーンペア｛２，３｝にフェイルオーバーする要求であることを判定する。したがって、プロセス６２２では、エージェントＢ４２６が、その「遠隔」レジスタを上位レーンペア｛２，３｝にプログラムする。次のフレーム境界において、プロセス６２４では、エージェントＢが、シリアルデータストリームに確認メッセージを挿入する。ＡＣＫの直後の全てのデータは、プロセス６２６に示されるように、２レーンモードで送信される。
【００６２】
その一方で、プロセス６３０では、エージェントＡ４１６が、ＡＣＫを受信し、タイムアウトカウンタを無効にする。エージェントＡ４１６は、ＡＣＫ一時停止サイクル中に４レーンから２レーンモードに再構成する。確認データの直後に、処理は、プロセス６３２において、２レーンモード｛２，３｝でデータを受信するように構成されるＡＳＩＣ４１０を用いて継続する。ステップ６１６で示されるように、エージェントＡのタイマが満了した場合、要求が再試行されることができる。再試行は、物理層レーン状態が変更する場合、元の要求と異なり得る。
【００６３】
図７は、図６に関連して説明されるように、４レーンモードと２レーンモードとの間の遷移中にＡＳＩＣ４２０から伝送されているデータのフレームを概略的に示す。プロセス６１０では、ＡＳＩＣ４１０（図示せず）のエージェントＡ４１６が、レーン１上の伝送ＡＳＩＣ４２０から受信される低品質信号を検出する。次いで、エージェントＡ４１６は、プロセス６１２において、その「ローカル」レジスタをプログラムし、プロセス６１４において、２レーンフェイルオーバーメッセージを送信する。図７に関して、本メッセージを受信することに先立って、ＡＳＩＣ４２０は、フレーム５１１、５１２をＡＳＩＣ４１０に伝送した。しかしながら、プロセス６２０における本メッセージの受信時に、ＡＳＩＣ４２０は、レーン２および３のみが遠隔ＡＳＩＣ４１０に依然として容認可能であることを示すように、プロセス６２２において、その「遠隔」レジスタをプログラムする。プロセス６２４では、４レーンモードでフレーム５１２を伝送した後、次のフレーム境界において、ＡＳＩＣ４２０は、４つ全てのレーン上でＡＣＫメッセージＭ５２０を送信する。次いで、プロセス６２６では、ＡＳＩＣ４２０は、２レーンフェイルオーバーデータ形式に従って（帯域幅の半分において）、残りのフレーム５１３−５１５をＡＳＩＣ４１０に途切れなく伝送し続ける。したがって、ＡＣＫメッセージＭ５２０は、４レーンおよび２レーンモードの間の遷移点をマークする。
（フェイルオーバーおよびレーン逆転）
【００６４】
図８は、通信リンク３５０、３５２のいくつかのレーンの１つの方向での通常動作を描写する。これは、０、１、２、３と番号付けされた４つの論理レーンを横断して伝送される４つのフィット｛Ａ，Ｂ，Ｃ，Ｄ｝で作製される、単一のデータフレームまたはフリットを示す。したがって、例えば、伝送ＡＳＩＣは、論理レーン０上でフィットＡ、論理レーン１上でフィットＢ、論理レーン２上でフィットＣ、および論理レーン３上でフィットＤを送信する。図８はまた、伝送ＡＳＩＣ４１０および受信ＡＳＩＣ４２０の両方のための論理・物理レーンマッピングも示す。本図では、物理レーン番号は、論理レーン番号に整合し、つまり、論理レーン０上で送信されるデータは、通信リンク３５０または３５２内の物理レーン０上で伝送される。
【００６５】
構成要素の間、ならびにケーブル３５０およびバックプレーン３５２を横断する高速接続の設計を容易にするために、レーン逆転が許容される。例えば、いくつかの通信ボードは、種々の設計制約により、ワイヤを交差することなく、信号をそれらの通常のピンにルーティングすることができない。本状況では、物理的コネクタが、ケーブル３５０またはバックプレーン３５２との物理的連結のためのそれらの予期される場所にとどまってもよいが、信号は、通常の順序の逆でハードウェアにおいてピンにルーティングされる。そのような「レーン逆転」は、構成要素の物理的ハードウェア設計によって固定される。種々のケーブル３５０およびバックプレーン３５２は、レーン逆転ハードウェアも含んでもよい。したがって、各通信リンクの受信端における起こり得るレーン逆転に対処することが必要となる。図９Ａは、伝送機と通信リンク３５０、３５２との間の物理的接続においてレーン逆転を用いて送信されている、図８と同一のデータを示す。したがって、フィットＡは、論理レーン０および物理レーン０上で伝送されるが、本レーンは、受信ＡＳＩＣ４２０によって物理レーン３上で受信されるように逆転される。他のフィットも同様に逆転される。
【００６６】
本レーン逆転を補償するために、受信機は、以下でさらに詳細に説明されるように、受信後に物理・論理レーンマッピングを逆転する、レーン逆転マルチプレクサ（ＭＵＸ）を含む。これは、受信機が逆転されたデータフレームを回収することを可能にする。レーン逆転の検出を可能にするために、各物理レーンは、一意の論理レーンＩＤを伝送し、したがって、受信ＡＳＩＣ４２０は、示されるように、物理レーン３上で受信されるフィットＡが、実際には、論理レーン０上で送信されたことを判定することができる。
【００６７】
図９Ｂは、受信機のハードウェアにおける補正されていないレーン逆転を伴って１レーン（４分の１帯域幅）フェイルオーバーモードで動作する、通信リンクを示す。個々の物理的構成要素は、明確にするために標識される。４つの伝送機９１０が、各物理レーンに１つずつ提供される。接続９２０、例えば、ケーブル３５０またはバックプレーン３５２上のピンも、４つのレーンを有する。これらのレーンは、物理レーン９３０として論理的に示される。受信機側に物理レーン９３０と４つの受信機９５０との間の類似接続９４０がある。
【００６８】
図９Ｂから分かり得るように、データのレーンは、受信機において逆の順序で受信される。したがって、マルチプレクサ９６０が、レーンの順序を補正するために使用される。補正された構成は、レーンをそれらの元の順序に（再）逆転するようにプログラムされる受信機ＭＵＸ９６０を示す、図９Ｃに示される。受信機におけるレーン逆転ＭＵＸ９６０のプログラミングは、レーン逆転がハードウェア構成によって判定されるため、「セットアンドフォーゲット」動作である。
【００６９】
レーン逆転は、有利なこととして、上記で説明されるフェイルオーバープロトコルと併せて利用されてもよい。リンクが１レーン（４分の１帯域幅）フェイルオーバーモードで動作しているため、各フィットＡ、Ｂ、Ｃ、Ｄは、順次、各レーン上で伝送される。したがって、受信ＡＳＩＣは、データを受信する最良の物理レーンを自由に選定することができる。（受信機９５０における）物理レーン０が、その優れた信号品質により、選定されると仮定されたい。対応する物理的受信機０ハードウェアが（例えば、電力を節約するために）使用不可能であるが、受信機３が使用可能である場合、受信ＡＳＩＣは、図９Ｃに示されるように、レーン逆転を開始する場合、依然として論理レーン０上でデータを送信および受信してもよい。上記のように、１レーンフェイルオーバー状態になったとき、１つだけの物理および論理伝送機レーンが有効にされる。図９Ｃの実施例では、物理的受信機０、１、および２は、（物理的受信機３を動作するままにして）低電力状態で無効にされ、物理的伝送機１、２、および３もまた、（物理的受信機０を動作するままにして）低電力状態で無効にされる。
【００７０】
図９Ｄは、レーン逆転を伴わない２レーンフェイルオーバーモードの実施例を示す。図９Ｅは、受信機側にレーン逆転を伴う２レーンフェイルオーバーモードを示す。図９Ｆは、伝送機および受信機側の両方にレーン逆転を伴う２レーンフェイルオーバーモードを示す。（これら３つの図では、受信機マルチプレクサ９６０は明確にするために省略されている。）これらの実施例の全てでは、レーンのうちの２つが電源を切られ、受信ＡＳＩＣ４２０は、データを受信するレーンを自由に選定することができる。例えば、図９Ｅで、物理レーン２および３が、受信ＡＳＩＣ４２０において優れた信号品質を有すると仮定されたい。レーンが逆転されるため、物理レーン２（それぞれ、３）は、論理レーン１（それぞれ、０）にマップする。したがって、論理レーン０および１は、データフレームを送信および受信するために使用される。伝送ＡＳＩＣ４１０が、伝送機および受信機２ならびに３の電源を切る一方で、受信ＡＳＩＣ４２０は、伝送機および受信機０ならびに１の電源を切る。
（一般的実装）
【００７１】
上記で説明される本発明の実施形態は、例示的にすぎないことを意図しており、多数の変形例および修正が、当業者に明白となるであろう。全てのそのような変形例および修正は、任意の添付の請求項で定義されるように、本発明の範囲内であることを意図している。
【図１】
2017518552.tif 000003
【図２】
2017518552.tif 000004
【図３】
2017518552.tif 000005
【図４】
2017518552.tif 000006
【図５Ａ】
2017518552.tif 000007
【図５Ｂ】
2017518552.tif 000008
【図５Ｃ】
2017518552.tif 000009
【図６】
2017518552.tif 000010
【図７】
2017518552.tif 000011
【図８】
2017518552.tif 000012
【図９Ａ】
2017518552.tif 000013
【図９Ｂ】
2017518552.tif 000014
【図９Ｃ】
2017518552.tif 000015
【図９Ｄ】
2017518552.tif 000016
【図９Ｅ】
2017518552.tif 000017
【図９Ｆ】
2017518552.tif 000018
【国際調査報告】
2017518552.tif 000019
2017518552.tif 000020
2017518552.tif 000021
2017518552.tif 000022