(57)【要約】      （修正有）【課題】超高速広帯域ネットワークによって相互接続された複数の計算モジュールを含む高稼働率環境においてアプリケーションを同期的に実行する。【解決手段】少なくとも、一次及び２次の２つの実行パーティションと、監視パーティションと、を含む複数のパーティション内に複数のモジュールを構成するステップ２０００と、一次実行パーティションによって処理された入出力が監視パーティションを介して二次実行パーティションに送信し、各実行パーティションでアプリケーションを実行するステップ２１００と、マイクロプロセッサのコンテキスト変化を利用することで実行を同期させるステップ２２００と、破局的なエラー信号を監視パーティションに送信するステップ２３００と、劣化モードに対して切り替えることで、単一のパーティションで継続される実行を継続するステップ２５００を有する。【選択図】図２
2016027470.tif 000002
【特許請求の範囲】
【請求項１】
超高速広帯域ネットワークによって相互接続された複数の計算モジュールを含む高稼働率環境においてアプリケーションを同期的に実行する方法であって、
−少なくとも、
数と特性が同一である複数のノードを含む、一次実行パーティションおよび二次実行パーティションである、２つの実行パーティションと、
少なくとも１つのモジュールを含む監視パーティションと、
を含む複数のパーティション内に複数のモジュールを構成するステップ（２０００）と、
−各実行パーティションで前記アプリケーションを実行する実行ステップであって、
前記一次実行パーティションで処理された入出力が、前記一次実行パーティションと前記二次実行パーティションとの間の分散トランザクションとしてそれらの入出力のログをとる前記監視パーティションを介して前記二次パーティションに送信される実行ステップ（２１００）と、
−マイクロプロセッサのコンテキスト変化を番号付けることによって、前記一次実行パーティションおよび前記二次実行パーティションの実行を同期させる同期ステップであって、
前記一次実行パーティションおよび前記二次実行パーティションにおける最新のコンテキスト数の間の違いに対応する時間のずれが所定の値よりも低くなければならない、同期ステップ（２２００）と、
−破局的なエラー信号を前記監視パーティションに送信する送信ステップであって、前記信号は実行中のパーティションのモジュールの障害の特徴を示している、送信ステップ（２３００）と、
−いわゆる劣化モードに対して切り替えることによって実行を継続する継続ステップであって、前記実行は単一のパーティションで続けられ、前記一次実行パーティションの障害の場合には、前記二次実行パーティションが新しい一次実行パーティションになるような変更動作（２４００）を行う、継続ステップ（２５００）と、
を有することを特徴とする方法。
【請求項２】
マイクロプロセッサのコンテキスト変化を強制し、これにより同期を実行する（２２００）ために、割り込みが所定の周波数で強制されることを特徴とする、請求項１に記載の同期実行方法。
【請求項３】
前記所定の周波数は、約２０Ｈｚであり、非同期は従って５０ｍｓに抑制されていることを特徴とする請求項２に記載の方法。
【請求項４】
前記アプリケーションは、ハイパーバイザによって仮想化されていることを特徴とする請求項１から３のいずれか一項に記載の方法。
【請求項５】
前記仮想マシンは単一のプロセッサ・コアで実行されており、前記仮想マシンは、前記一次実行パーティションおよび前記二次実行パーティションで同一であることを特徴とする請求項４に記載の方法。
【請求項６】
複数のパーティション内に前記複数のモジュールを構成するステップ（２０００）は、前記環境のサービスの停止なしに動的に行われることを特徴とする請求項１から５のいずれか一項に記載の方法。
【請求項７】
環境の見かけの不稼働率は、前記一次実行パーティションおよび前記二次実行パーティションにおけるアプリケーションの実行の間の非同期に等しく、不稼働率は従って、実行の同期化（２２００）によって制約されていることを特徴とする、請求項１から６のいずれか一項に記載の方法。
【請求項８】
請求項１から７のいずれか一項に記載の方法を実行する命令コードに対応するファイルを含んでいるデジタル記憶装置。
【請求項９】
請求項１から７のいずれか一項に記載の方法を実施する装置。
【請求項１０】
フレームに挿入された前記複数のモジュールを含む請求項８または９に記載の装置であって、モジュールの底板は、前記底板に取り付けられた挿入ガイドを含み、
これらのガイドは、
最終的なガイド動作、および前記底板のコネクタの保護を確保する第１のタイプと、
初期的なガイド動作を確保するために円錐状に終端した円筒形状を有する第２のタイプとの、２つのタイプであり、
各ガイドは、前記フレームに対応する手段を有することを特徴とする装置。
【請求項１１】
前記第１のタイプは、円錐状に終端した円筒形状を有し、その長さは、前記第２のタイプの長さよりも約１センチメートル短いことを特徴とする、請求項１０に記載の装置。
【請求項１２】
前記第１のタイプは、円錐状に終端した円筒形状と協働することができる凹状部分であることを特徴とする、請求項１０に記載の装置。
【請求項１３】
前記第２のタイプの少なくとも１つのガイドは、前記底板に堅固に取り付けられていることを特徴とする、請求項１０から１２のいずれか一項に記載の装置。
【請求項１４】
前記第１のタイプの少なくとも１つのガイドは、前記底板にゆるやかに取り付けられていることを特徴とする、請求項１１から１３のいずれか一項に記載の装置。
【請求項１５】
前記第１のタイプのガイドと協働する少なくとも１つの円筒状のガイドは、前記フレームにゆるやかに取り付けられていることを特徴とする、請求項１２または１３に記載の装置。
【請求項１６】
前記底板は、前記第１のタイプのガイドを４個と、前記第２のタイプのガイドを２個含むことを特徴とする、請求項１０から１５のいずれか一項に記載の装置。
【請求項１７】
前記ガイドは、前記底板の対称軸に関して対称的に分布していることを特徴とする、請求項１０から１６のいずれか一項に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の目的は、高稼働率環境においてアプリケーションを同期的に実行する方法および装置を提供することである。本発明の目的は主に環境における障害許容力を向上させることである。障害許容力（resilience）は、多数の障害を乗り切るための、および、システムがサービスの中断を引き起こすことなく修復されることができるための、システムの能力として定義される。
【０００２】
本発明の分野は、一般に情報処理または通信システムの分野であり、より詳細には、高稼働率サーバを用いるコンピュータ生産システムの分野である。
【背景技術】
【０００３】
公知のコンピュータシステムは、全てが、ランダムな瞬間でそれらの一般的な動作に影響するハードウエアまたはソフトウエアに基づいた障害を被る。それらのシステムの一つが、生命および資産の安全に関する重要な機能を管理するとき、障害の存在下における電子システムの挙動は、ユーザに感知される全体的な信頼性の決定的要因になる。この挙動は、そのシステムの障害許容力クラスで定義する。それは、そのシステムを設計する際の技術的な選択に完全に依存している。なぜならば、それは、常に相当なコストを意味するハードウエアレベルでの冗長性に基づいているからである。障害許容力クラスは、従って、コストの最小化と稼働率の最大化との間のトレードオフの結果である。
【０００４】
いくつかのタイプの解決策が、ハードウエアの観点から障害許容力要求に最も適合するように開発されてきている。ハードウエア部品故障の４つのクラスおよびソフトウエア部品障害の３つのクラスは、コンピュータの動作に影響を与えるイベントの重要な例として受け取ることができる。
【０００５】
調べられるハードウエア部品の４つのクラスは、メモリ、入出力回路、電源および冷却部品、およびプロセッサである。
【０００６】
メモリ
メモリは、部品の中でも生の信頼性が最も劣っている。なぜならば、メモリ素子の超微細化のために、製造上の欠陥およびそれらの環境に影響を与える種々の端緒の外乱に対して非常に影響を受けやすくなっているからである。幸運にも、それらの問題に対して、受け入れ可能な動作信頼性をメモリが提供することができることを目的とした誤り訂正符号などのような多数の手段が、長い間に渡って研究されてきている。
【０００７】
入出力
入出力障害は、２つのシステムの間で交換されるプロトコルまたはデータパケットで検出される１または２以上のエラーによって特徴づけられる。それらのエラーの大部分は、伝送の（ノイズなどの）電磁気的環境に基づいており、問題は入出力トランザクションの再試行によって解決される。リンクが回路のハードウエア（ケーブル、コネクタ、レーザなど）の故障によって物理的に中断される場合には、その障害許容力は、通常は、代替のデータ通路が双方のシステムの間で直接的であるか、コンピュータネットワークを通じて伝えられるかに関わらず、代替のデータ通路を提供する入出力冗長チャネルによって供給される。
【０００８】
電源および冷却部品
高稼働率システムにおいては、電源供給部およびファンまたは液圧ポンプ（hydraulic pumps）は常に冗長である。従って、それらの部品の故障は、ユーザアプリケーションには影響しない。修理は、電源または冷却部品の活線挿抜（hot swap）によってなされる。
【０００９】
他方、ＰＯＬ「負荷点（Point Of Load）」とも呼ばれる、最低レベルを有する電源は、電力をプロセッサ、メモリまたは入出力回路に直接的に供給するが、一般的には冗長でなく、コスト、全体的なスペースおよび性能上の理由でマザーボードにはんだ付けされる。これらのタイプの部品の停止（hang-up）は、従ってそれらに直接的に取り付けられている機能性部品にとって致命的である。ＰＯＬ故障は、従って機能性部品の故障と同じにされる。
【００１０】
プロセッサ
プロセッサの障害は複合的な起源を有しており、説明することが求められるので、プロセッサは別個のクラスにある。
【００１１】
これらの重要なシステムのプロセッサは、一般的にマルチコア・アーキテクチュアでサポートされているので、この仮説が想定される。
【００１２】
プロセッサの障害許容力を確保するために、もう一度ハードウエアの冗長性が用いられる。ここでハードウエアは、実行中のシステムソフトウエアおよびアプリケーションに対する直接的なサポートである。アプリケーション・プロセッサの二重化は、ユーザと相互作用するフォアグラウンド・プロセッサを同期化する必要性を引き起こし、バックグラウンド・プロセッサは、障害が発生した瞬間に臨機応変にフォアグラウンド・プロセッサを置換する。
【００１３】
先行技術においては、および、ごく簡単なプロセッサに対する解決策は、同一基板でまたは同一集積回路での、計算機能を３倍にして、入出力共通バスおよびメモリの状態に基づいた結果を比較する回路を付加することである。それらのバス幅は、１２８データビットおよび３２アドレスビットになりうる。典型的には１ｎｓと１０ｎｓとの間であるマシンサイクルの尺度に対して、好ましい状態は、３つのプロセッサのうちの少なくとも２つのプロセッサが存在するという多数決原理に基づく首尾一貫性を与える比較回路を与えることである。フォアグラウンド・プロセッサでエラーが検出されるとすぐに、または、比較回路がこのプロセッサのバスが他の２つのバスとは異なったと示唆されるとすぐに、フォアグラウンド・プロセッサが停止され、実行は第１のバックグラウンド・プロセッサ上で続けられる。バックグラウンド・プロセッサの起こり得る障害は延期されて、プロセッサ基板が交換されるまで経路を低下モードにさせる。この基板の交換はサービスの停止を示唆するので、アプリケーションは、原則的には一次システムといかなる共通のハードウエア素子を有しない等価なバックアップシステム上に、予め移動されておかなければならない。この復旧時間は、移動される情報の量が膨大であれば、サービスの稼働率に劇的に影響を与える。もし、この制約を免除することが望まれれば、３つの個別のプロセッサ基板は同じキャビネットまたは同じフレームに供給されなければならない。しかしながら、不幸にも結果を比較する回路は、電気または光の信号という制約された伝播手段により、非常に迅速に性能限界を引き起こす。従ってこのモードは、そのソケットの外部のバスの状態を比較する機能を組み込んでいない標準のマルチコアソケットの実装を考慮すれば、とりわけ高価であると共に効果は不十分である。
【００１４】
従って先行技術においては、高い稼働率課題への解決策は、重大な性能の低下なしにはプロセッサそれ自体の障害を防御していない。
【００１５】
信頼性問題に基づいたソフトウエア部品の３つのクラスは、ハイパーバイザおよびオペレーティングシステムのクリティカルセクション、入出力ドライバおよびハードウエアに搭載されたファームウエアの欠陥、および、アプリケーションの欠陥である。
【００１６】
クリティカルセクション
クリティカルリソースは、ソフトウエアのロックアウトによって保護された実行可能なデータまたは命令のセットである。クリティカルセクションは、実行中のコアがクリティカルリソースを使用するために再分類する一連の命令である。２以上のコアによる同じクリティカルセクションの同時実行から保護するためのソフトウエア・ロックアウトがキャシュメモリのプロセッサおよびコントローラの特別のハードウエア装置を実行する「テスト・アンド・セット」タイプの特別な命令を使用することは良く知られている。クリティカルセクションの出力で、問題となる実行中のコアで動作しているプロセスは、ソフトウエア・ロックアウトをいわゆるオープン状態に置き換えることによってクリティカルリソースを開放しなければならない。
【００１７】
複数のコアを有して同じメモリを共有する、ＳＭＰ「対称型マルチプロセッシング（Symmetric MultiProcessing）」とも呼ばれる対称なマルチプロセッサ・タイプのシステム上で動作するマルチタスク・プログラムにおいては、クリティカルリソースの間違った管理によってデッドロックを作り出すことはよく見られる。幸いなことにオペレーティングシステムは集中的なテストのおかげで、それらのデッドロックが広範囲にわたって除かれているが、ユーザアプリケーションは、そのような問題によってしばしば影響される。従って、オペレーティングシステムは、ユーザのデッドロックによってブロックされたリソースを予め空にすることで解放すること、および誤ったプロセスの動作を一時停止することができなければならない。しかしながら、もし、ハイパーバイザがそれ自身でそのようなデッドロックを作り出せば、それをブロック解除することができるソフトウエア・プロセスはなく、および、そのような欠陥はユーザデータに影響を与えることができるハードウエア故障と同様である。
【００１８】
入出力ドライバおよびファームウエア
入出力ドライバおよびファームウエアは、それらのハードウエアとの密接な関わりおよびそれらのリアルタイム性能を目指す高い最適化によって特徴付けられる。ハードウエアの進化のそれぞれは、ソフトウエアが電子基板において固体状態で基板に取り付けられていなければ、このソフトウエアのアップデートを要求することができるが、欠陥状況は、非常にまれな条件下でしか起こらないので、ファームウエアまたはドライバを旧式のバージョンで動作させることは良く見られる。
【００１９】
アプリケーションの欠陥
オペレーティングシステム、即ちＯＳによって管理されるアプリケーションは、このＯＳのプロシージャに従っており、もし、それらがプロセッサ・コアのパワーの１００％を使って結局デッドロックになれば、通常、強制終了される。システムのクリティカルリソースをブロックしない別の欠陥は、結果の正確さに影響を与えるアプリケーションの論理エラーに対応するものであるが、これは本発明に関連していない。
【００２０】
ハイパーバイザがシステムに存在していれば、それは「スーパーＯＳ」として動作し、このハイパーバイザの下で動作する１または複数のＯＳはゲストＯＳと呼ばれ、ハードウエアから、または互いに、分離されている。この場合、ゲストＯＳはサブ−ＯＳアプリケーションと類似していると言うことができる。特に、ハイパーバイザは、「強制終了（killing）」（事実、プロセスは強制終了）、再設定、または、そのアプリケーション・プログラムの全ＯＳをシステムから、ネットワークリソースを通して別に動かすことができる。移行（migration）とも呼ばれる移動時間は、もちろん、このネットワークの帯域幅に依存している。
【００２１】
本明細書による開示の明瞭さのために、ソフトウエアに基づいた障害は、たとえ、それらが主要な障害原因であることができても、広範囲に渡って議論しない。これらのソフトウエア障害の修復は、新しいソフトウエアまたはファームウエアのバージョンをインストールすることに基づいている。通常、システムがよく設計されておれば、ハードウエアにおける物理的介入なしに、それらのインストールを遠隔的に行うことができる。ソフトウエア障害がダイレクト・アクセスを暗示するまれな事例は、他のソフトウエアまたはファームウエアをアップデートするために用いられるコードにおける、ブートストラップ・ファームウエアの欠陥による障害である。それは一般的には、いわゆる工場出荷バージョンおよびいわゆるユーザ・バージョンである、ダブルコードバージョンによって処理される。維持進化が続く唯一のバージョンはユーザ・バージョンである。工場出荷バージョンは書き込み保護されており、従って、いつでもシステム構成を復元することができる。従って、これらは、ブーストラップ・メモリそれ自身の故障は残り、引き続く解析において取り扱われる事例の一部である。
【発明の概要】
【発明が解決しようとする課題】
【００２２】
本発明の一つの目的は、特に、まさに説明した問題を解決することにある。事実、本発明はサーバの不稼働時間を最小化することを目的とする。
【課題を解決するための手段】
【００２３】
そのために、本発明は、超高速広帯域ネットワークによって相互接続された複数の計算モジュールを含む高稼働率環境においてアプリケーションを同期的に実行する方法を提供する。本発明は、以下のステップを有することを特徴とする。
−少なくとも以下を含む複数のパーティション内に複数のモジュールを構成するステップと、
○  数と特性とが同一である複数のノードを含む、一次実行パーティションおよび二次実行パーティションである、２つの実行パーティションと、
○  少なくとも１つのモジュールを含む監視パーティションと、を含む。
−各実行パーティションでアプリケーションを実行するステップと、
なお、一次実行パーティションで処理された入出力が、一次実行パーティションと二次実行パーティションとの間の分散トランザクションとしてそれらの入出力のログをとる監視パーティションを介して二次パーティションに送信される。
−マイクロプロセッサのコンテキスト変化を番号付けることによって、一次実行パーティションおよび二次実行パーティションの実行を同期させるステップと、
なお、一次および二次の実行パーティションにおける最新のコンテキスト数の間の違いに対応する時間のずれが所定の値よりも低くなければならない。
−破局的なエラー信号を監視パーティションに送信する送信ステップと、
なお、前記信号は、実行中のパーティションのモジュールの障害の特徴を示している。
−いわゆる劣化モードに対して切り替えることによって、実行を継続するステップと、を有しており、
なお、実行は、単一のパーティションで続けられ、一次実行パーティションの障害の場合には、二次実行パーティションが新しい一次実行パーティションになるような変更動作を行う。
【００２４】
本発明による方法は、前述の段落に述べた主要ステップに加えて、以下の１または２以上の特徴を有することができる。
−マイクロプロセッサのコンテキスト変化を強制し、これにより同期を実行するために、割り込みが所定の周波数で強制される。
−所定の周波数は、約２０Ｈｚであり、非同期は従って５０ｍｓに抑制されている。
−アプリケーションは、ハイパーバイザによって仮想化されている。
−仮想マシンは単一のプロセッサ・コアで実行されており、仮想マシンは一次実行パーティションおよび二次実行パーティションで同一である。
−複数のパーティション内に複数のモジュールを構成するステップは、環境のサービスの停止なしに動的に行われる。
−環境の見かけの不稼働率（unavailability）は、一次および二次パーティションにおけるアプリケーションの実行の間の非同期に等しく、不稼働率は従って、実行の同期化によって制約されている。
【００２５】
その上、本発明は、本発明による方法を実行する命令コードに対応するファイルを含んでいるデジタル記憶装置を提供する。
【００２６】
本発明は、また、本発明による方法を実施する装置を提供する。
【００２７】
本発明は、また、本発明による方法を実施し、以下の特徴の可能な組み合わせを含む装置を提供する。
−装置は、モジュールの底板が、底板に取り付けられた挿入ガイドを含み、これらの挿入ガイドは、次の２つのタイプである、フレームに挿入された複数のモジュールを含む。
○  第１のタイプは、最終的なガイド動作および底板のコネクタの保護を確保する。
○  第２のタイプは、初期的なガイド動作を確保するために、円錐状に終端した円筒形状を有する。
各ガイドは、フレームに対応する手段を有する。
−第１のタイプは、円錐状に終端した円筒形状を有し、その長さは、第２のタイプの長さよりも約１センチメートル短い。
−第１のタイプは、円錐状に終端した円筒形状と協働することができる凹状部分である。
−第２のタイプの少なくとも１つのガイドは、底板に堅固に取り付けられている。
−第１のタイプの少なくとも１つのガイドは、底板にゆるやかに取り付けられている。
−第１のタイプのガイドと協働する少なくとも１つの円筒状のガイドは、フレームにゆるやかに取り付けられている。
−底板は、第１のタイプのガイドを４つと、第２のタイプのガイドを２つ含んでいる。
−ガイドは、底板の対称軸に関して対称的に分布している。
【００２８】
本発明およびその種々のアプリケーションは、引き続く説明を読み、添付図面を検討することにより、よりよく理解されるであろう。
【００２９】
図の説明は、示唆するために示しており、本発明を限定するためには用いていない。
【図面の簡単な説明】
【００３０】
【図１】本発明によって実施される方法を可能にする論理アーキテクチュアを説明する図である。
【図２】本発明による方法の種々のステップを示す図である。
【図３】本発明を実施する装置の要素を示す図である。
【図４】モジュール側に浮動部を有するコネクタブロックを示す図である。
【図５】フレーム側に浮動部を有する本発明の１実施形態の図である。
【発明を実施するための形態】
【００３１】
図１は、本発明による方法を実施することができる例示的な論理アーキテクチュアを示す。公知のハードウエアアーキテクチュア上でこの仮想アーキテクチュアをハードウエア化する（hardwaring）モードについては後述する。
【００３２】
図１は、２つの同一のパーティション（partition）を示し、これらは、それぞれがハイパーバイザＨおよび仮想マシンＶＭを含む第１パーティションＡ、および第２パーティションＢである。
【００３３】
仮想化エンジンとも呼ばれるハイパーバイザは、仮想マシン、ハードウエアアーキテクチュアのためにエミュレートする命令コードのセットである。最も知られているものとしてＫＶＭ、パイパーＶ、および、ＣＭＷａｒｅを挙げることができる。
【００３４】
ＶＭと呼ばれる仮想マシンは、主に、ハイパーバイザによって仮想化されなければならないリソース（マイクロプロセッサ、ディスク、入出力周辺機器など）を記述している構成ファイルから構成されている。
【００３５】
加えて、パーティションＡおよびＢのそれぞれは記憶手段Ｍを含んでおり、そこに本発明によるハイパーバイザに対応する命令コード、および仮想マシン（構成、状態、特にプロセッサ、仮想ディスクなどの状態）に対応するファイルが記録されている。
【００３６】
図１は、第１パーティションＡのハイパーバイザＨ＿Ａ１を介して第１パーティションＡに接続されている入出力周辺機器Ｉ／Ｏを示す。パーティションＡおよびＢは同一であるので、図１は、入出力周辺機器Ｉ／Ｏが第２パーティションのハイパーバイザＨ＿Ｂ１を介して第２パーティションＢに接続されることができることを示す。この可能性は、後述される環境下で確立される潜在的接続である。
【００３７】
実行パーティションの２つの仮想マシンの１つが、例えば構成ファイルで他のミラー（mirror）として定義されている。我々の例においては、ミラーと考えられるのは、二次パーティションである。
【００３８】
図１は、また、仮想マシンＶＭ＿Ｃ１および記憶手段Ｍ＿Ｃを含む第３パーティションＣを示す。第３パーティションＣの仮想マシンＶＭ＿Ｃ１は、第１パーティションＡの入出力（inputs-outputs）をファイルにログをとって、それらを第２パーティションＢに送信する。加えて、第３パーティションＣの仮想マシンＶＭ＿Ｃ１は、これらの仮想マシンを同期させるために、第２パーティションのハイパーバイザＨ＿Ｂ１と第１パーティションのハイパーバイザＨ＿Ａ１との、コンテキスト変化の数（図１におけるＣｄＣ）を追跡する。
【００３９】
本発明による好ましい実施形態によれば、起動時において同期された仮想マシンを保証するために、仮想マシンを起動させる前に第２パーティションの仮想マシンは、第１パーティションの仮想マシンをコピーすることによって得られている。
【００４０】
アクションがハードウエアまたは仮想デバイスに割り当てられた場合、このアクションは、実際には、装置のメモリに記録された命令コードによって制御される装置のマイクロプロセッサによって行われる。アクションがアプリケーションに割り当てられれば、このアクションは、実際には、アプリケーションに対応する命令コードが記録されているメモリを有する装置のマイクロプロセッサによって行われる。
【００４１】
図２は、本発明による方法のステップを示す。特に、図２は複数のモジュールを、少なくとも以下を含む複数のパーティションの中に構成するステップ２０００を示す。
−一次実行パーティションおよび二次実行パーティションである、数および特性が同一の複数のノードを含む２つの実行パーティション。
我々の実施例においては、一次実行パーティションは第１パーティションＡであり、二次実行パーティションは第２パーティションＢである。
−少なくとも１つのモジュールを含む監視パーティション。
我々の実施例においては、監視パーティションは第３パーティションＣである。
【００４２】
１実施形態においては、各実行パーティションにおいて、実行すべきアプリケーションがインストールされているマシンにハイパーバイザおよび仮想マシンがインストールされている。
【００４３】
構成ステップ２０００に続くステップ２１００の際に、同じアプリケーションが一次実行パーティションＡおよび二次実行パーティションＢで実行される。これは実行ステップである。一次実行パーティションＡによって処理された入出力は、一次実行パーティションＡと二次実行パーティションとの間の分散トランザクションとしてこれらの入出力のログをとる監視パーティションＣを介して二次実行パーティションＢに送信される。
【００４４】
このトランザクションは、動作がパーティションＡおよびＢの双方で適切に終了されている場合のみ有効にされるので、分散と呼ばれる。
【００４５】
同期ステップ２２００は、監視パーティションＣによって行われるマイクロプロセッサのコンテキスト変化を数える手段によって、一次パーティションＡおよび二次パーティションＢの間の実行の同期を保証する。一次実行パーティションＡと二次実行パーティションＢとの間の最新のコンテキスト数の差に相当する時間オフセットは、例えば５０ｍｓのような所定の値よりも小さく保たれていなければならない。１代替手段においては、このずれ（deviation）は、例えばコンテキスト変化数の差によって見積もられる。この場合、実際には時間差ではなく、イベントがここではコンテキスト変化であるイベントの数の差、すなわち、同一のシーケンスを表す２つのシーケンスに属しているイベントの数の差である。
【００４６】
実行および同期ステップは並列に実行される、すなわち同時に実行される。
【００４７】
それぞれのコンテキスト変化で、例えば、第１パーティションのハイパーバイザは、ミラー仮想マシンが実行中の進捗状況をチェックする。かりに、高すぎるずれ、すなわち、我々の実施例では５０ｍｓよりも大きいずれがあることが分かれば、そのとき、第１パーティションのハイパーバイザはコンテキスト変化を終了する前、すなわち、第１パーティションの仮想マシンがその実行を続けることができる前に、時間稼ぎのために決定を遅らせる（temporizes）。
【００４８】
時間間隔を確保するために、少なくとも１つのコンテキスト変化が所定の頻度で行われることが保証される。我々の実施例においては、ハードウエア割り込みが５０ｍｓごとに強制される。そのような割り込みはコンテキスト変化を引き起こし、これにより、ミラー実行との間の高すぎるずれが起きるのを防ぐ手段が実際に実装されていることを保証する。
【００４９】
実行中のパーティションのモジュールにおいて障害が検出されると、監視パーティションＣへの破局的なエラー信号の送信ステップ２３００が生じる。それらは、障害がどこで生じているかに応じて以下の２つの場合がある。
−一次実行パーティションＡ（図２の２３１０）で障害が生じている場合：変更ステップ２４００が動作される場合であり、二次実行パーティションＢが新しい一次実行パーティションになって、その後、実行を続けるステップ２５００になる。
−二次実行パーティションＢ（図２の２３２０）で障害が生じている場合：実行を続けるステップ２５００が直接的に行われる場合である。
【００５０】
本発明によるこの方法は、高い稼働率を有する装置の障害許容力を向上させることができる。本発明の実施を可能にする高い稼働率を有する装置は後述する。
【００５１】
本発明を実施するためのハードウエアアーキテクチュアは、例えば、それぞれのモジュールが他の全てのモジュールと接続されている８個のモジュールを有するシステムであり、これは、「全対全（all-to-all）」トポロジーと呼ばれる。異なるモジュールの間に複数のパスを提供するという条件で、他のトポロジーも用いることができる。モジュールのこの数は例として与えられており、２から数十まで変えることができる。
【００５２】
各モジュールの各相互接続ポートは、従って、各リンクが８個の双方向チャネルを含む７個の高速リンクによってサポートされていなければならない。もし、各リンクが１４Ｇｂ／秒で動作すれば、システムのどの２つのモジュールの間においてもその帯域幅は、１４×８＝１１２Ｇｂ／秒である。この周波数は例として与えられており、コネクタおよびケーブルに課せられた技術的限界に至るまで、顕著に比例して変えることができる。
【００５３】
各モジュールは、それらのマザーボードに配線された高速バスによって局所的に接続された２つのソケットをサポートしている。この配置は、あるソケットまたはメモリの障害をサポートするためにモジュールが動的に再構成されることを可能にする。前述の障害のタイプはまれに発生する突発故障であるが、これが何に続いて発生するのか、への注意が必要である。例えば電源故障は、少なくとも１つのハードウエア部品の信頼性が劣化しつつあることを示唆するエラー信号の発生が十分長い期間に先行した後で発生する。これらのエラー信号の適切な管理が障害許容力の観点から良い性能を達成するために必要不可欠である。これらの２ソケット（bi-socket）のボードは、相互接続モジュールを有するインターフェースで高速コネクタを備えており、これらのコネクタに接続される全ての電子回路は、活線挿抜（hot plugging）動作をサポートすることができる。これは、クラスターにおけるモジュールの挿入または取り外しは、このクラスターの他のモジュールの動作を妨げることなく行われるということを意味する。特に、電源が与えられていないモジュールの相互接続モジュールのケーブルへの接続は、７つの別の２ソケットのボードで動作している別のスイッチを妨害してはならない。加えて、それぞれの２ソケットのボードは、電源のオン／オフ、温度および電圧の監視、またはモジュール・クラスターの動的再構成をも、管理することのようなサーバの非常に低い機能を可能にするＢＭＣ（ベースボード管理コントローラ（Baseboard Management Controller））と呼ばれるオンボードのマイクロコントローラをサポートしている。
【００５４】
再構成インターフェース
マルチモジュールシステムの自動構成／再構成を支援するために、８個のポートを有する、ＭＳＭ（管理スイッチモジュール）と呼ばれるイーサネット（登録商標）スイッチが、相互接続モジュールに組み込まれている。このスイッチは、２つの５ポートスイッチ、４つのダウンリンク、およびアップリンクのポートが回路基板の配線（track）に接続されている１つのアップリンクから構成することができる。この実施形態は、複数のベースボード管理コントローラ（ＢＭＣｓ）がそれらの対話手段の全体を失う件数を制約することによって相互接続モジュールの障害許容力をさらに改善する。
【００５５】
複数のベースボード管理コントローラへのこのプライベート・イーサネット（登録商標）ネットワークに関連して、相互接続モジュールの補助装置は、その識別子からそのＩＰアドレスを計算することができる識別子を各ベースボード管理コントローラに割り当てることを可能にする。事実、各ベースボード管理コントローラは、その近隣のものとは異なるアドレスを有してこのネットワーク上のそのＩＰ接続を起動することができなければならない。小さなＦＰＧＡに基づいたこの補助装置は、初期化の際に、相互接続モジュールに対してモジュールのそれぞれの物理的配置を特定するポート番号（３ビットの識別子）を送信することを各ベースボード管理コントローラに許可する。これらの３ビットから、各ベースボード管理コントローラは、その近隣に接続する前に、自身のＩＰアドレスを完成する。ベースボード管理コントローラとＭＳＭスイッチとの間のサブネットワークは完全にプライベートであるので、ＩＰアドレスの最上位２９桁を各モジュールに対して同一にすることができる、ということが注記される。
【００５６】
電源供給の故障に関して良好な障害許容力を確保するために、各モジュールは、ＰＳＵ「電源供給ユニット」とも呼ばれるＡＣ−ＤＣコンバータを少なくとも２つ組み込んでおり、それぞれの２ソケットのボードの入力で通常１２Ｖで配線（rail）を通して電力を供給している。電源供給ユニットは２つの独立したＡＣネットワークに接続されることができ、それらのネットワークのうちの１つが故障しても、システムの動作を保証することができる。同様に、ＭＳＭモジュールは、それぞれ独立的に電源が供給されており、電源がＯＮになった各モジュールは、そのイーサネット（登録商標）−ＭＳＭリンクを介して１２Ｖで電流を送る。これらの異なる電流は、１２Ｖ入力とイーサネット（登録商標）スイッチおよび再構成ＦＰＧＡの回路のＰＯＬとの間に設置されているダイオードスイッチによって合計される。
【００５７】
同期インターフェース
本発明の別の構成要素は、同期クロックのネットワークである。相互接続モジュールのサブネットワークは、異なるモジュールのプロセッサの間にほとんど完全な同期システムを構築するために、全てのモジュールの全てのＦＰＧＡを全対全に接続する。ＦＰＧＡの論理は、初期化または再構成の際に、クロックのネットワークを、論理パーティションの数に応じた数のクロックサブネットワークがパーティションされることを可能にする。それぞれのクロックサブネットワークにおいて、通常、起動ロジックを含んでいるプロセッサであるマスタープロセッサは、そのクロックをそのパーティションに属する全てのプロセッサに分配する。ＦＰＧＡは、パーティションが唯一のクロックを受信するように各論理パーティションを分離する。このクロックは矩形波信号であり、その周波数は例えば２５Ｍｈｚのように数メガヘルツである。この信号は、好ましくは、相互接続モジュールのケーブルによって誘導されることができるどんな位相ノイズをも除去するために各モジュールの入力でＰＬＬ回路によって濾過されることができる。再起動の際に、各モジュールは、そのパーティションのクロックによって駆動されるカウンタを起動する。このクロックはそのパーティションのプロセッサにとって共通であり、プロセッサのそれぞれは、そのモジュールに任意の時点で発生したどんなイベントでもタイムスタンプすることができる同期時間基準を有しているので、複数のイベントのタイミングをそれらのそれぞれの順番に対して不明確さなしに再構成することができる。
【００５８】
典型的なアプリケーションは、計算モジュールの帯域外のインターフェースの一部である「破局的なエラー（Catastrophic Error）」のための、破局的なエラー信号ＣＡＴＥＲＲの管理である。これは、計算タスクのために使われるものではなく、モジュール管理のために使用されるネットワークである。これらの通信は、従ってモジュール性能には何も影響を与えない。これらの信号は、パーティション内で前述したクロックと同様に分配される。ＣＡＲＥＲＲ信号がモジュール内でトリガされると、通常、非常に迅速に、数マイクロ秒またはそれ未満で、同様なイベントが１または２以上の隣接するモジュールで引き起こされる。各モジュールにおけるＣＡＴＥＲＲイベントのタイムスタンプは、ベースボード管理コントローラがそれらの測定値を交換すること、および何が問題の源か、を読み出すことを可能にし、および従ってベースボード管理コントローラによって障害の生じているモジュールの診断および正確な場所の特定を容易にする。
【００５９】
インフラストラクチュアについての所見
インフラストラクチュアは、モジュールの間に物理的なリンクを提供する全てのハードウエア部品によって定義される。このインフラストラクチュアの信頼性を保証するために、平均故障間隔であるＭＴＢＦがモジュールのマザーボードのＭＴＢＦよりも桁違いに大きい受動部品を最大限使用することが好ましい。従って、このインフラストラクチュアによって引き起こされる故障の数は、システムの稼働率の評価に際して無視することができる。前述したシステムにおいては、インフラストラクチュアは、バックプレーンとも呼ばれる相互接続モジュールによって構成されており、ＸＱＰＩインターフェースとも呼ばれる高速リンクのインターフェースを８個のモジュールの間に分配しており、および、８個のモジュールとＭＳＭスイッチとの間にローカルおよび帯域外のイーサネット（登録商標）インターフェースを分配している。
【００６０】
バックプレーンは、今日では１４Ｇｂ／秒の超高速信号を、数年後にはそれよりさらに超高速の信号をサポートしなければならないので、従来の回路基板実装を保ち続けることはできない。事実、例えば、パナソニック株式会社から提供されるMegtron6のような高重力材料を使用しても、相互に最も物理的に離れているモジュールの間のリンクのためのこのデータ周波数で挿入損失は２０ｄＢを越える。バックプレーンの他の欠点は、機械的な信頼性に関する。所定の重量の固体モジュールおよびフレームの製造の許容差およびキャビネットにおけるそのガイド要素、そのようなバックプレーンの機械的な剛性が、非常に大きな機械的応力をＸＱＰＩインターフェースの高速コネクタに及ぼす。これらの応力は、このインフラストラクチュアの機械的故障の原因である。
【００６１】
この問題を避けるために、本発明のマルチモジュールシステムのバックプレーンは、高速接触における応力の影響なしに、ｘ方向およびｙ方向における１ｍｍまでの機械的なずれを許容する、浮動取付（float mounting）コネクタアセンブリで終端された銅ケーブルでのリンクを使用している。さらに、単位長さ当たりの挿入損失は、従来の印刷回路板材料に比べて約十倍小さく、コネクタとビアの数は最小限にまで減少されている。それらの要素は、インフラストラクチュアの信頼性の向上、および従ってシステムの目的である高い稼働率を伴っている。
【００６２】
浮動的な面は、例えばガイドの使用によって得られる。
【００６３】
図３は、計算モジュール３０１０がこのモジュールの部品に取り付けられる長方形の固い底板（bottom plate）３０２０を含んでいることを示しており、それ（底板）は、バックプレーンまたはバックプレーン・バスを含んでいるフレーム３０３０の、オスまたはメスのコネクタ３０５０に接続されることができるモジュールのオスまたはメスのコネクタ３０４０を含んでいる。フレーム３０３０は、実施形態を説明するためにここで部分的に表されている。モジュールがオス・コネクタを含めば、そのとき、フレームはメス・コネクタを含み、逆もまた同様であることは当業者にとっては明らかである。
【００６４】
１代替手段においては、底板３０２０は印刷配線板の端部である。
【００６５】
モジュールの底板の一部を示しているのみである図３は、底板が、フレームコネクタが面している側で以下を含んでいることを示す。
−モジュールコネクタ３０４０の片側に設置されている第１ガイド３０６０および第２ガイド３０７０、ガイドのこの配置は、コネクタが少なくとも機械的に保護されることを可能にする。第１のタイプの第１ガイドおよび第２ガイドは、実質的に同じ長さを有し、そして以下である。
○  円筒状に形作られている。
○  底板に取り付けられている。
○  それらの自由端で円錐状で終端している。
○  少なくとも１センチメートル、しかし５センチメートル未満である数センチメートルの長さである。
−第２のタイプの第３ガイド３０８０は、以下である。
○  第１ガイドと同様な形状をしている。
○  実質的に第１ガイドより長い、その値は約１センチメートルであり、実際には１センチメートルである。
○  底板によって形成された長方形の長軸の中心上に、第１および第２ガイドから数センチメートル離れて配置されている。
【００６６】
図３は、また、フレーム３０３０が第１、第２、第３ガイドに対応する穴を含んでいることを示している。
【００６７】
図示しないが、底板は、第３ガイドのような第４ガイドを少なくとも１つ含んでいる。この第４ガイドは、底板によって形成された長方形の短軸に対して第３ガイドに対称である。
【００６８】
長方形の長軸は短辺の垂直二等分線に垂直である。長方形の短軸は長辺の垂直二等分線である。
【００６９】
１代替手段によれば、第１および第２ガイドは、また、短軸に対してそれらの対称要素を有しており、その場合には、底板は６つのガイドを含んでいる。これらの軸は、底板の幾何学的な対称軸である。通常、これらの軸はまた、質量の対称軸に対応し、すなわち、装置の質量が均一に分散しているいずれかの側の軸である。もしそうでなければ、質量の軸は、ガイドを分散するように用いることができる。
【００７０】
底板が含むガイドの数と同数の、ガイドと協働できる穴をフレームが含むことは明らかである。
【００７１】
このガイド配置は、モジュールの最初の位置決めまたは初期ガイドを、第３ガイドおよびその対称的な要素を使用しているフレームに対して作ることを可能にし、それは最初のガイドレベルを提供する。この最初のレベルはフレームに対する配置である。その後、挿入を続けることにより、最終的には、第１および第２のガイドおよびそれらの対称的な要素が用いられ、コネクタを保護しながら、第２、最終ガイドを提供する。
【００７２】
本発明の１代替手段においては、ガイドは底板に堅く結合される。
【００７３】
ガイドの円錐状の末端がいくらかのクリアランスを許容するので、浮動的な装置が存在すると言うことができる。
【００７４】
この浮動的な面（floating aspect）はフレームが動作している間に、モジュールを改良された方法で交換することを可能にする。この浮動的な面はまた、その重量が数十キログラムを超えて、地面またはキャビネットの地盤のレベルから２メートル離れて設置されることができるモジュールを挿入する際の劣化リスクを最小化する。
【００７５】
この浮動的な面は、活線挿抜の独立性を確実にし、また、モジュールを挿入する際の劣化リスクを最小化することによって、動作中の設備の取り外しを確実にすることができる。従って、この浮動的な面は、本発明によって、アプリケーションの実行が委譲された後に障害が生じているモジュールの、別のパーティションへの交換を改善する。しかし、この浮動的な面は、簡単な据え付けのためにアプリケーションのミラーリングの状況以外でも興味深い。
【００７６】
本発明の別の代替手段においては、第１ガイド３０６０および第３ガイドは、底板に浮動的に取り付けられている。例えば、図４は、底板３０２０が第３ガイドに対向する面に、底板に垂直な以下の２つの部分を含むことを示す。
−第１コネクタ支持部４０１０。
−第２コネクタ支持部４０２０。
【００７７】
第１コネクタ支持部および第２コネクタ支持部は平行であって、ショルダーボルトがそれらを通過することを可能にする少なくとも１つの穴４０１５を含んでいる。コネクタ支持部の少なくとも１つ穴４０１５の直径は、穴を通過するように用いられているショルダーボルト４０３０のショルダー４０３５の直径よりわずかに大きい。従って、一度、それが取り付けられれば、ショルダーと穴の直径の違いのおかげで、ボルトは、穴にゆったりと合う。この直径の差は、１ｍｍから２ｍｍの範囲である。
【００７８】
図４は、また、コネクタブロック４０４０がコネクタ支持部の間をスライドできることを示す。このコネクタブロックは以下が取り付けられている基部（base）を含む。
−第２ガイド３０７０。
−モジュールコネクタ３０４０。
【００７９】
コネクタブロックはまた、第１ウォール４０５０および第２平行ウォール４０６０を含んでおり、一度コネクタブロックが定位置にされれば、これらのウォールは支持部に対して平行である。
【００８０】
図４は、また、コネクタブロックのウォールは、ショルダーボルト４０３０のねじ山に適合するねじ山を獲得しているねじ穴を含んでいることを示す。ショルダーボルトが一度ねじ込まれれば、コネクタブロックは底板に対して浮いている。この代替手段は、浮動的な面をさらに改善する。この浮くことは、穴とショルダーとの間の直径差に依存している。
【００８１】
１実施形態においては、各支持部は４つのショルダーボルトに対して４つの穴を含む。ウォールは、その後、４つの対応するねじ穴を含む。４つの穴は正方形に分散されている。
【００８２】
１実施形態においては、各支持部は３つのショルダー・ボルタに対して３つの穴を含む。この場合においては、ウォールは、３つの対応するねじ穴を含む。３つの穴は二等辺三角形または正三角形に分散されている。
【００８３】
１実施形態においては、各支持部は２つのショルダーボルトに対して２つの穴を含む。この場合においては、ウォールは、２つの対応するねじ穴を含む。
【００８４】
本発明の別の代替手段である図５は、ここでマザーボード５０１０と同化できるモジュール５０１０を示す。マザーボード５０１０の底板５０２０は、マザーボード５０１０の端部５０２０である。
【００８５】
図５は、ボード５０１０の底板５０２０がコネクタ５０４０を含んでおり、このコネクタ５０４０の両側に以下が見いだされることを示す。
−円筒形状のリセスを有する長方形平行六面体の形状であり、その円筒の軸がマザーボード５０１０の底板５０２０に垂直である、第１ガイド部分５０６０。
−第１ガイド部分と同一の第２ガイド部分５０７０。
【００８６】
１代替手段においては、底板側部上の円筒の開口は、円筒状のガイドを改善された方法で誘導することを可能にする切頭開口（truncated aperture）を有している。
【００８７】
図５はまた、マザーボードの底板がモジュールの底板のガイド３０８０と同様なガイド５０８０を含むことを示す。
【００８８】
図５は、また、フレーム５０３０が図４に述べられたようなコネクタブロックの上に取り付けられていることを示す。図５については、同一の機能に対しては図４で維持されているものと同一であることが言及できる。
【００８９】
従って、フレーム５０３０は、一度、マザーボードが所定の位置におかれれば、マザーボードに面している面に向かい合っている表面で、マザーボードに対して垂直な２つの部分を含む。
−第１コネクタ支持部４０１０。
−第２コネクタ支持部４０２０。
【００９０】
第１コネクタ支持部および第２コネクタ支持部は平行であり、ショルダーボルトがそれらを通過することができる穴４０１５を少なくとも１つ含んでいる。コネクタ支持部の少なくとも１つの穴４０１５の直径は、穴を通過するように用いられているショルダーボルト４０３０のショルダー４０３５の直径よりわずかに大きい。従って、一度、それが取り付けられれば、ショルダーと穴の間の直径の違いのおかげで、ボルトは、穴にゆったりと合う。この直径の差は、１ｍｍから２ｍｍの範囲である。
【００９１】
このように提供されるフレームは、従って、それ（フレーム）に関して浮動しているコネクタブロックを受容することができる。
【００９２】
図３から５は、モジュールとフレームとの間の浮動的な接続に対する複数の実施形態を示している。
【００９３】
いくつかの能動素子を含んでいる本発明のＭＳＭスイッチは、インフラストラクチュアの一部である。すでに理解されているように、その電源は強度に冗長である。加えて、約２〜３ワットの非常に低い消費電力、及び少数の部品が、数百万時間のＭＴＢＦをＭＳＭモジュールに対して予測することを可能にする。最終的に、ＭＳＭスイッチの動作は、モジュールの８個のベースボード管理コントローラによって監視され、これにより、かりにＭＳＭの故障が検出されれば、このモジュールの活線挿抜が、マルチモジュールシステムの動作を中断することはない。モジュールの物理的な交換が、通常の期限内で起こる限り、そのシステムの稼働率の比率におけるＭＳＭ（管理スイッチモジュール）の影響は無視しうると言うことができる。
【００９４】
本発明によって用いられる種々のソフトウエア部品の記述を今から説明する。
【００９５】
オクト・モジュール（Octo-module）構成
前述の８モジュール構成は、パーティションの各プロセッサが別なパーティションにおける冗長なプロセッサである、１＋１の冗長システムをサポートすることを意図していると考えられる。この構成は、説明するためには最も簡単であるが、セキュリティーのためには、パーティションの各プロセッサが、２または３の別なパーティションにそれぞれ存在している２または３の冗長なプロセッサをそれぞれ有している、１＋２、または１＋３の冗長性構成を用いることができる。
【００９６】
複数のパーティション内への複数のモジュールの構成ステップ（Ｅ１）の際に、３つのモジュールがパーティションＡ、つまりフォアグラウンドパーティションに属しているとみなされる。その結果として、バックグラウンドパーティションであるパーティションＢは、また３個のモジュールを有して作られている。８モジュール構成の２つの残っているモジュールは、パーティションＡおよびＢの実行中のログをサポートしているモジュールの１つであり、監視パーティションであるパーティションＣに影響されている。パーティションＣの第２モジュールは、要求されている稼働率の比率に応じて別の故障しているモジュールを一時的に交換することができる。
【００９７】
パーティションＣは、オプション的に重要でないアプリケーションを以下の条件付きで実行することができる。この条件とは、これらのアプリケーションの優先順位がパーティションＡおよびＢで実行されるアプリケーションに対して高い稼働率機能を保証しているソフトウエア・モジュールの優先順位よりも、大きく下回るように定義されているという条件である。
【００９８】
重要なアプリケーションの負荷は、この場合、インストールされた処理パワーの、すなわち全体性能の高さ上における３つのモジュールである、３７．５％を示す。
【００９９】
４モジュール構成に対しては、パーティションＡおよびパーティションＢは、それぞれ１つのモジュールを含んでおり、パーティションＣはそれらの２つを含んでいる。この場合、重要なアプリケーションの負荷は、インストールされた処理パワーの２５％を示すのみである。
【０１００】
アーキテクチュアの作動
本発明は、シングルコア上で動作するＯＳのみを使用している。事実、マルチコア・プロセッサ上で動作するＯＳのコアを製造することができるにもかかわらず、本発明におけるそのようなコアの実装は、プロセス同期化の解決できない問題を引き起こすかもしれない。このことは、物理的なプロセッサが、シングルコア・プロセッサであることを意味しない。マルチコア・プロセッサの使用は、唯一のコアのみを受容する所定のＯＳによるハイパーバイザ層によって保証された物理的リソースの割り当てによって制約されるのみである。他方、同じコアが複数の個別のＯＳに属しているとみなされることは、なにも妨げない。後者の場合、性能または応答時間のみが影響を受けることができる。以下の説明においては単純なルールが想定される。これは、１コアが１ＯＳに等しく、勿論、各ＯＳ下では、ユーザは彼らが望む限り多くのアプリケーションを同時に実行するができるというものである。それらのアプリケーションによって生成される計算負荷は、通常、ＯＳのコアのスケジューラによって多重化される。負荷が高くなればなるほど、性能はより低くなる。
【０１０１】
複数のプロセスの実行を確保するために、各ＯＳは、プロセスレディキューを生成する。このキューの最初のプロセスのみが、プロセッサを受信し、従って、いわゆる実行中のサブ状態である。プロセス実行がＰ操作（P-Op）と呼ばれるブロック型の同期セマフォを満足するとき、プロセスレディキューを残し、そして、別のプロセスまたは入出力割込みマネージャが、同じセマフォ上でＶ操作（V-Op）タイプの操作によってそれをブロック解除するようになるまで待ち状態へ転換する。このとき、プロセスは、ＯＳおよびその構成に基づく優先度ルールに応じて、再びプロセスレディキューに挿入される。いわゆる「挿入優先度」モードの待ち行列があることがここで仮定される。この点は、問題になっているキューが複数のサブ・リストから作られており、優先度レベルごとに１つのザブ・リストがあり、サブ・リストはそれらの優先度の関数としてそれらの中でチエーン化されて分類されていること、を意味する。優先度による挿入は、新しい要素が、この新しい要素の優先度に関連するサブ・リストの最後に挿入されることを意味する。もし、このサブ・リストが存在しなければ、新しい入力は、存在し最高の優先度を有している最初のサブ・リストの最後に挿入されるか、または問題になっているサブ・リストが存在しないときは、そのリストのトップで行われる。通常、コアによって行われるこの操作タイプは、ディスパッチ操作または縮めてディスパッチとも呼ばれている。
【０１０２】
プロセスのそのような同期コアを有するコアは今日では標準となっており、コアでの実行が、プロセスを同期させるためにＯＳにおける単一の、モジュールによって実行されるディスパッチ操作によって分離された一連の命令の連続から構成されている。もし２つの同一のＯＳが、同じプロセス（同一コード、同一データ、同一構成のプロセッサ上）で実行中であれば、ディスパッチ操作のときに同期されていることによって並列に実行されており、双方のＯＳの状態および従って双方のＯＳの出力で得られる結果は、論理的観点から厳密に一致する。しかしながら、物理的観点からの実行は、論理的観点からの実行とは異なることができる。
【０１０３】
物理的観点からの実行
以下においては、パーティションＡおよびパーティションＢで並列に実行中の２つのコアのスケジューラが、完全な同期を維持したままであることができるという方法が述べられる。
【０１０４】
プログラムが従来のコンピュータで実行されているとき、このプログラムの数学的な意味における論理は、決定論的に実行されなければならない。このことは、同一のプログラムで同一のデータセットを用いる２つの連続的な実行は、常に厳密に同じ結果を導くことをプログラマーが期待することを意味する。実際にはそれはみせかけである。なぜならば、バックグラウンドにおいて２つの論理の実行の間に、種々のイベントがプログラムの中間で結び合わされることができるので、その実行タイミングを完全に修正するからである。起こり得ることができる主なイベントは以下である：割り込み、別のタスクまたは「スレッド（thread）」にプロセッサを割り当てるディスパッチ、Ｖ操作ウェイク・アップに続く、より高い優先度を有しているスレッド、中央メモリを読みだす際の、または入出力バスでデータ転送の際の、回復可能なエラー。このリストは包括的ではない。どのような場合においても、管理操作（スケージューリング、エラー、など）は、そのタイミングに関するもの以外は検討されているプログラムでは見えない。従って、記述の最上質の時間成分を追加することによってプログラムの物理的観点からの実行概念を導入するのは、実行タイミングである。もし、配慮がされなければ、１つのＯＳのもとで並列に起動している数個のプログラムの実行が行われる順番は全く保証されない。従って、パーティションＡで実行中のプログラムと、パーティションＢで実行中の同じプログラムとの間で、それらが同じクロック開始時間に開始されていても、非常に大きな時間オフセットがすぐにできることが生じ得る。本発明は、マルチモジュールシステムにおけるスレッドの同期ポイントの適切な組織が、２つのパーティションの間の物理的な実行が、例えば５０ｍｓのような予め定められた時間間隔で同期を維持することができることを保証することができることを示す。割り込みに続いて、通常、スレッドが起動することができるので、および、この起動はＯＳコアのディスパッチャーを介して行われるので、タイマー・ハードウエアによって生成された人為的に誘導された割り込みにより、パーティションＡとパーティションＢとの間の非同期化を拘束することができる。このタイマーは、通常、チップセットのリソースから利用でき、ハイパーバイザは、非同期が５０ｍｓを超えないことを望んでおれば、例えば２０Ｈｚである所定の周波数でディスパッチを生成するようにそれ（そのリソース）を初期化することができる。今日のプロセッサにおいては、コンテキスト変化時間は、約１μｓであることを思い出さなければならない。この特性のおかげで、ディスパッチを５０ｍｓごとに強いることは性能に目に見える影響を与えない。それは、スレッドが５または１０μｓの範囲内で同期されるように意図されているものとは、完全に異なる。
【０１０５】
２つの仮想マシンの間の同期
同じパーティションＡまたはＢにおいて実行している複数の仮想マシンの場合を区別するために、２つの仮想マシンの１つがＡで別の１つがＢで実行しているとき、後者の状況は、「ノンコヒーレント仮想マシン」と呼ばれる。これは、ＡおよびＢのメモリはＸＱＰＩモジュール間インターフェースのためにコヒーレントではないことを思い出すためである。
【０１０６】
本発明によって提供される利点をよりよく理解するために、本発明によるシステムのいくつかの突然の障害の場合および協調性反応に焦点を当てることが興味深い。
【０１０７】
ＶＲＭ「電圧調整モジュール」コンバータは、プロセッサまたはＤＲＡＭメモリのＰＯＬ（負荷点）コンバータである。そのようなＶＲＭが故障すれば、関連付けられた回路は、数マイクロ秒後にそれらの活動を停止する。なぜならば、電圧存在検出器は、少なくとも電力良好（PWRGOOD）信号を切り替えて、それにより、論理停止およびCATERR 信号の立ち上がりを引き起こす。CATERR 信号は、パーティション内の全てのモジュールへ相互接続モジュールによって送信される。受信においては、CATERRは、全ての接続されたプロセッサおよびメンテナンスプロセッサをブロックし、ベースボード管理コントローラが故障を管理する手順を開始する。
【０１０８】
同期機能を有している全てのトランザクションの停止が５０ｍｓ以内に検出される。パーティションＢは、この同期点までそれらのスレッドを実行して終了する。その後、パーティションＡの障害が同期機能によって通知されるので、後者（パーティションＢ）は、それらの実行を続けるために、それらのスレッドを可能にするＶ操作シミュレーションによってパーティションＢのスレッドを解放する。
【０１０９】
メモリにおける致命的エラーは、かなり頻繁に起こるエラーのタイプである。なぜならば中央メモリを構成するトランジスタの数は、プロセッサおよびキャシュのトランジスタの数より、２ケタ上回ることができるからである。インテルの技術においては、それらのエラーの管理アーキテクチュアは、ＭＣＡ（機械点検アーキテクチュア(Machine Check Architecture)）と呼ばれる。もし、メモリセルが最終的に０または１に接続されていれば、このエラーはいわゆるハードタイプのエラーである。セルのコンテンツが変更されているが、このセルの動作が習得されたままであるときは、いわゆるソフト・タイプのエラーである。
【０１１０】
ＭＣＡアーキテクチュアにおいて、メモリにおける致命的エラーは、ＯＳまたはハイパーバイザの「クラッシュダンプ」メモリ以外の代替品に繋がる。再起動（reboot）は、非常に長く、通常、数分ほどかかる。
【０１１１】
本発明の使用によって、クラッシュダンプ機能は、パーティションＡとパーティションＢとの間の変更を５０ｍｓで可能にする変更機能によって進められる。
【０１１２】
メモリにおいては、多数の致命的エラーが、ハードタイプエラーでなく、実行変更に続くソフトタイプエラーであるので、パーティションＡを再起動させ、その後、パーティションＣの同期機能を実際に再起動させることができるまで、徐々にＯＳおよびアプリケーションをパーティションＢからパーティションＡへ移行させることができる。一度、この段階になれば、システムは、１＋１の冗長になり、それは完全に対称的なので、パーティションＡを一次モードのなかに再び変更することは必要ではない。パーティションＢが一次パーティションになっている状態で十分であり、パーティションＡは、ミラーパーティションになっている。
【０１１３】
ＸＱＰＩバスの帯域幅は大きいので最新技術のもとでは１０Ｇｂ／秒を超えているが、１Ｔｂの中央メモリを移動させるのは、機械的に少なくとも１０００Ｇ÷１０Ｇ＝１００秒かかる。この転送は、好ましくは、パーティションＣに属するソフトウエア・モジュールによって駆動される。このシステムが十分な冗長性がない際における、時間の大きさのオーダであるが、５０ｍｓ以内のサービス再開が可能である。致命的な故障率はその後、この１００秒の間隔の間のおける第２の致命的エラーの確率に関連する。例えば、１０18の読み出しビット当たり１の致命故障率を導く技術を仮定すれば、１０００Ｇｂ／秒のメモリの読み出しにおけるシステムにおける２つの故障の間の平均間隔は約１０6秒である。すなわち、ほぼ３００時間である。実際には、メモリの読み出しプロセスは従来のランダム変数の定常状態特性を有してはいないので、読者はこのタイプの統計学に注意深くなければならない。致命的なメモリエラーは、ＯＳまたは個別のアプリケーションによって非常に頻繁にアクセスされる、単一の故障セルに起因している合計であることができる。前述の仮説にこれを考慮した観点からは、平均では、致命エラーは１０6秒ごとに生じ、システムの致命故障率は、第２の致命エラーが１００秒で起こる確率によって与えられる。即ち、１／１０，０００になる。これによりＭＴＢＦは約３百万時間、または約３４０年である。この故障率が高すぎると判断されれば、冗長性の構想を１＋２または１＋３に変えること、すなわち、３つ以上のマシンを同期させることを確保することが必要である。
【０１１４】
記憶装置におけるエラーの原因は非常に多いので、ディスクの入出力での致命エラーは、また、完全に頻繁なタイプのエラーである。
【０１１５】
本発明によるシステムの記憶サブシステムは、パーティションＡに接続されているディスクに書き込むいかなるファイルもパーティションＢに接続されているディスクのミラーファイルを有しているということを意味している、レイド（ＲＡＩＤ）１モードが想定されている。
【０１１６】
この分野における致命的エラーは、任意の故障によってインコヒーレントに上書きされているコンテンツを有するディスクブロックに起因することができる。エラーは、このブロックを読み出す際にコードを訂正する間違ったエラーによって検出され、このエラーは、故障ディスクのチャネルに対応するＰＣＩバスの入出力マネージャに報告される。
【０１１７】
この場合、ファイル全体が、このディスクに入出力をさせようとしているプログラムにアクセスできないので、通常は、ＯＳがそのアプリケーションを停止状態に変更することによって終わらせる。ミラープログラムがエラー通知を直接的に受けていないので、なぜなら、それは、パーティションＢで実行中であるので、同期機能は、しばらくたった後で同期Ｖ操作をシュミュレートして、それをミラープログラムに渡すことでファイルの回復を開始することができる。
【０１１８】
このホット再開を可能にするアルゴリズムは知られており、市場の全てのレイド（ＲＡＩＤ）コントローラで用いられている。ここで、レイドコントローラのファームウエア機能は、パーティションＣで実行される１または２以上のソフトウエア機能によって交換される。これらの機能をファイルシステムの完全性を確保するイベントのログに実装する。
【０１１９】
本発明の利点を再度述べれば、プログラムが５０ｍｓ以内でその通常の活動を再開することを保証することができることである。
【図１】
2016027470.tif 000003
【図２】
2016027470.tif 000004
【図３】
2016027470.tif 000005
【図４】
2016027470.tif 000006
【図５】
2016027470.tif 000007
【外国語明細書】
2016027470000001.pdf
2016027470000002.pdf
2016027470000003.pdf
2016027470000004.pdf