(57)【要約】ＦＴサーバシステムにおいてアクティブからスタンバイメモリにメモリを転送する方法。方法は、ＢＩＯＳを使用してメモリの一部を予約することと、ＦＴカーネルモードドライバをロードし、初期化することと、セカンドレベルアドレス変換テーブルＳＬＡＴを含むＦＴ仮想マシンマネージャを予約メモリにロードし、初期化することとを含む。方法は、予約メモリの中のＦＴＶＭＭのＳＬＡＴを使用してメモリアクセスを追跡することと、現在のゲストのＳＬＡＴを追跡し、ＳＬＡＴへのハイパーバイザの書き込みを傍受することによってＬ２ゲストメモリアクセスを追跡することとを含む。方法は、Ｄビットを収集し、プロセッサのキャッシュされたＳＬＡＴ変換エントリを無効にし、アクティブメモリから第２のサブシステムのメモリにダーティにされたページをコピーすることによって、ブラウンアウト状態に入ることを含む。
2020526843.tif 000002
【特許請求の範囲】
【請求項１】
ＦＴ（フォールトトレラント）サーバシステムにおいてアクティブからスタンバイメモリにメモリを転送する方法であって、前記方法は、
前記ＦＴサーバシステムのＢＩＯＳを使用して、メモリの一部を予約するステップと、
ＦＴカーネルモードドライバをメモリにロードし、初期化するステップと、
セカンドレベルアドレステーブル（ＳＬＡＴ）を含むＦＴ仮想マシンマネージャ（ＦＴＶＭＭ）を前記予約されたメモリの一部にロードし、初期化し、前記ＦＴＶＭＭにおける全てのプロセッサを同期化するステップと、
予約メモリの中の前記ＦＴＶＭＭのＳＬＡＴを使用して、ＯＳ（オペレーティングシステム）、ドライバ、ソフトウェア、およびハイパーバイザのメモリアクセスを追跡するステップと、
ゲストに関連付けられた前記ＳＬＡＴの全てのページを追跡し、前記ＳＬＡＴを構成するメモリページへのハイパーバイザ書き込みを傍受することによって、ゲストＶＭ（仮想マシン）メモリアクセスを追跡するステップと、
ブラウンアウト状態レベル０に入るステップであって、前記ステップは、前記ＳＬＡＴ内のダーティビット（Ｄビット）を記録し、前記ＦＴサーバにおける全てのソフトウェアによるメモリ書き込みを追跡しながら、完全メモリコピーを実行することによる、ステップと、
前記ＦＴＶＭＭ  ＳＬＡＴおよび各ゲストの現在のＳＬＡＴにおけるＤビットの全てを消去するステップと、
全てのＤビットを追跡する段階１−４のブラウンアウト状態に入るステップであって、前記ステップは、
前記Ｄビットを収集することと、
前記ＦＴＶＭＭ  ＳＬＡＴおよび各現在のゲストのＳＬＡＴに関して、全てのプロセッサのキャッシュされた変換を無効にすることと、
前記アクティブメモリから第２のサブシステムメモリに修正されたメモリページのデータをコピーすることと
による、ステップと、
ブラックアウト状態に入るステップであって、前記ステップは、プロセッサ＃０を除く、前記ＦＴＶＭＭ内の全てのプロセッサを一時停止させ、プロセッサ＃０に関して前記ＦＴドライバにおける割り込みを無効にすることによる、ステップと、
アクティブからミラーメモリに収集されたデータをコピーするステップと、
スタックおよび揮発性ページを含む最近ダーティにされたページの最終の組を収集するステップと、
ＦＰＧＡ（フィールドプログラマブルゲートアレイ）を使用して、前記最終ページの組を前記ミラーメモリに転送するステップと、
前記ＦＴサーバＦＰＧＡおよびファームウェアＳＭＭ（システム管理モジュール）を使用して、ミラーリングされた実行の状態に入るステップと、
前記ＦＴＶＭＭを終了させ、アンロードすることによって、動作のブラックアウト部分を完了するステップと、
制御を前記ＦＴカーネルモードドライバに返すステップと、
通常ＦＴシステム動作を再開するステップと
を含む、方法。
【請求項２】
ＦＴＶＭＭコードは、通常ＦＴシステム動作の再開後、予約メモリの中に留まる、請求項１に記載の方法。
【請求項３】
前記予約メモリは、前記ＦＴサーバにおける最大既存物理メモリアドレスを含むそれ以下に位置している１／４ギガバイト〜２．２５ギガバイトの連続した物理メモリのメモリ領域である、請求項１に記載の方法。
【請求項４】
前記アクティブメモリからデータを移動させることは、ＦＰＧＡを使用する、請求項１に記載の方法。
【請求項５】
前記ＦＴカーネルモードドライバへの制御の返還は、前記ＦＴカーネルモードドライバがＶＭＥＸＩＴイベントを発生させることによる、請求項１に記載の方法。
【請求項６】
前記ＦＴカーネルモードドライバは、現在のゲストＶＭＣＳを現在かつアクティブにするためのオペランドとして前記現在のゲストＶＭＣＳ（ＶＭ制御構造）を有するＶＭＰＴＲＬＤ（仮想マシンポインタロード）命令を実施することによって、各プロセッサ上の通常ゲストＶＭ動作の条件に戻る、請求項１に記載の方法。
【請求項７】
前記Ｄビットの収集は、前記ＳＬＡＴから周期的に実施されるか、または、ページ修正ロギング（ＰＭＬ）を使用して連続的に実施される、請求項１に記載の方法。
【請求項８】
ＦＴ（フォールトトレラント）サーバシステムにおいてアクティブからスタンバイメモリにメモリを転送する方法であって、前記方法は、
ブート時に前記ＦＴサーバシステムのＢＩＯＳを使用して、メモリの一部を予約するステップと、
ＦＴカーネルモードドライバをロードし、初期化するステップと、
ＳＬＡＴを含むＦＴ仮想マシンマネージャ（ＦＴＶＭＭ）を前記予約されたメモリの一部にロードし、初期化し、前記ＦＴＶＭＭにおける全てのプロセッサを同期化するステップと、
予約メモリの中の前記ＳＬＡＴを使用して、メモリアクセスを追跡するステップと、
ブラウンアウト状態レベル０に入るステップであって、前記ステップは、前記ＳＬＡＴ内のダーティビット（Ｄビット）を記録しながら、完全メモリコピーを実行することによる、ステップと、
前記ＳＬＡＴ内のＤビットの全てを消去するステップと、
全てのＤビットを追跡する段階１−４のブラウンアウト状態に入るステップであって、前記ステップは、
前記Ｄビットを収集することと、
ＳＬＡＴに関して全てのプロセッサのキャッシュされた変換を無効にすることと、
前記アクティブメモリから第２のサブシステムメモリに修正されたメモリページのデータをコピーすることと
による、ステップと、
ブラックアウト状態に入るステップであって、前記ステップは、プロセッサ＃０を除く、前記ＦＴＶＭＭ内の全てのプロセッサを一時停止させ、プロセッサ＃０に関して前記ＦＴドライバにおける割り込みを無効にすることによる、ステップと、
アクティブからミラーメモリに収集されたデータをコピーするステップと、
最近ダーティにされたページの最終の組を収集するステップと、
ＦＰＧＡ（フィールドプログラマブルゲートアレイ）を使用して、前記最終ページの組を前記ミラーメモリに転送するステップと、
前記ＦＴサーバＦＰＧＡおよびファームウェアＳＭＭを使用し、ミラーリングされた実行の状態に入るステップと、
前記ＦＴＶＭＭをアンロードし、ＦＴカーネルモードドライバに抜け出すことにより、前記ＦＴＶＭＭの動作を終えるステップと
を含む、方法。
【請求項９】
前記ＦＴＶＭＭ内の全てのプロセッサの同期化は、ＦＴＶＭＭコードに全てのプロセッサ上でハイパーバイザとして実行させる、請求項８に記載の方法。
【請求項１０】
前記ＦＴＶＭＭは、予約メモリの中の前記ＳＬＡＴを使用して、メモリアクセスを追跡する、請求項８に記載の方法。
【請求項１１】
前記スタンバイメモリへのシステムメモリの前記完全メモリコピーは、前記ＦＴドライバによって実施される、請求項８に記載の方法。
【請求項１２】
前記アクティブメモリから前記第２のサブシステムメモリに前記修正されたメモリページのデータをコピーすることは、前記ＦＴＶＭＭが、前記ＦＴドライバによる前記完全メモリコピー中にダーティにされた全てのページのコピーを取得することで始まる、請求項１１に記載の方法。
【請求項１３】
前記ＦＴＶＭＭは、ダーティページビットマップを前記ＦＴドライバに提供する、請求項１２に記載の方法。
【請求項１４】
前記ＦＴドライバへの前記ダーティページビットマップの提供は、前記ＦＴドライバによるダーティページデータの前のコピー中にダーティにされた任意のページに関して起こる、請求項１３に記載の方法。
【請求項１５】
前記ＳＭＭは、メモリからプロセッサ状態を復元することによって、前記ミラーリングされた実行の状態に入る、請求項８に記載の方法。
【請求項１６】
前記ＳＭＭは、プロセッサ状態が復元された後、前記ＦＴドライバに戻り、ミラーリングされた実行に入ることを完了する、請求項１５に記載の方法。
【請求項１７】
前記Ｄビットの収集は、前記ＳＬＡＴから周期的に実施されるか、または、ＰＭＬを使用して連続的に実施される、請求項８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本願は、その内容全体が参照することによってその全体として本明細書に組み込まれる、２０１７年７月１１日に出願された米国特許出願第１５／６４６，７６９号の優先権および利益を主張する。
【０００２】
（発明の分野）
本発明は、概して、フォールトトレラントコンピューティングの分野に関し、より具体的には、フォールトトレラントサーバにおけるメモリミラーリングに関する。
【背景技術】
【０００３】
フォールトトレラントサーバ（「ＦＴサーバ」）は、冗長ハードウェアおよびソフトウェアを伴うコンピュータシステムであり、冗長ハードウェアおよびソフトウェアは、現在アクティブなサーバサブシステムが故障することを許し、重複または冗長サーバサブシステムにおけるデータの継続的処理を依然として可能にする。そのようなＦＴサーバは、ハードウェアコンポーネントが故障したときの機能的サーバ故障の可能性を低減させるために、第２の非アクティブサーバサブシステムにおいてオペレーティングシステム状態の重複またはミラーリングされた現在のイメージを維持しなければならず、そのイメージは、現在アクティブなサーバサブシステムの全てのプロセッサ、レジスタ、キャッシュ、およびメモリ状態を含まなければならない。そのようなＦＴサーバでは、ハードウェアコンポーネント故障が第１のまたはアクティブなサーバサブシステムにおいて起こったときに中断を伴わずに、または最小限の中断で第２のそれまで非アクティブであったサーバサブシステムを使用して動作を継続するために、第１のまたは現在アクティブなサーバサブシステムメモリは、その第２のまたは現在非アクティブなサーバサブシステムにおける物理的に別個のミラーリングされた物理メモリシステムの中にコピーおよび更新されなければならない。そのようなＦＴサーバでは、２つのサーバサブシステムのメモリコンテンツおよびプロセッサ状態が同一にされた後、２つのサブシステムは、ハードウェア故障または一過性のハードウェアエラーが起こらない限り、２つのサブシステム上で同一のメモリコンテンツを生成する並行した同一の様式で、それらの全ての処理動作を実行し続けなければならない。本議論では、語句「ＦＴサーバ」および「サーバ」は、同義的に使用される。
【０００４】
より詳細には、そのような冗長またはミラーリングされた物理的ＦＴサーバ（「ミラーリングされたシステム」とも称される）は、一実施形態では、典型的には、ミラーリングされたプロセッサおよびメモリユニットと称され得る２つの物理的に別個であるが論理的に同一のサーバサブシステムモジュールを含む。この構成では、ＦＴサーバコンピュータシステムは、同一のメモリデータと、同一のプロセッサおよびクロッキング状態とを含む２つの物理的に別個の処理ユニットから成る。そのようなＦＴサーバが最初に始動またはブートされるとき、または、モジュールが除去または交換されるとき、システムは、１つのみのＦＴサーバサブシステムが機能する非冗長モードで一時的に実行されるであろう。誤動作するユニットが一過性のハードウェアエラー後に稼働するように戻されると、または誤動作するユニットが交換されると、ＦＴサーバは、機能しているＦＴサーバサブシステムの現在のプロセッサおよびメモリ状態を修理されたＦＴサーバサブシステムの新しいまたは初期化されていないモジュールにコピーするためのハードウェアおよびソフトウェア機構を使用することによって、高信頼性フォールトトレラント状態に再び移行するであろう。そして、ＦＴサーバは、２つのモジュールが外部環境から同一のＩＯデバイス入力を受信するミラーリングされた実行の状態に入り、２つのモジュールは、独力で同一のプロセッサ、メモリ、およびシステムハードウェアクロック状態を生成し続ける。ミラーリングされたサブシステムは、「ロックステップ」で動作するとして説明されることができる。ミラーリングされた実行の状態にある間、ＦＴサーバは、ハードウェアフィールドプログラマブルゲートアレイ（ＦＰＧＡ）コンポーネント内の論理を使用することによって、いずれのミラーリングされたサブシステムにおいても、ハードウェアエラーまたは他の状態差を検出し、かつ他のサブシステムが正常に動作し続け得るように、故障するサブシステムを分離する。ミラーリングされた実行の状態にある間、ＦＰＧＡは、２つのサブシステムが外部環境から同一のＩＯデバイス入力を受信するように、システムメモリへの全てのＩＯダイレクトメモリアクセス（ＤＭＡ）書き込みが両方のサブシステム上で同じタイミングで並行して起こるようにする。
【０００５】
ミラーリングされた状態を作成するために、現在のシステムメモリコンテンツ全体は、新しいモジュールにコピーされなければならない。システムメモリは、（ＦＴサーバ上にインストールされたオペレーティングシステムまたは「ＯＳ」；サーバ上にインストールされたサービスおよびアプリケーション；仮想マシンおよび任意の仮想マシン（ＶＭ）ゲストを制御するようにインストールされた場合、オペレーティングシステムの共通使用ハイパーバイザ；およびこれらの仮想マシンゲストのゲストオペレーティングシステムおよびプログラム等の）現在起動しているプログラムおよび作業負荷によって、常に書き込まれ、修正されている。アクティブシステムメモリへのこれらの変更は、「ダーティページ」と称され、メモリの変更のみ（すなわち、システムメモリ全体を新しいメモリモジュールの中にコピーする初期段階中および後に起こる、メモリの変更）をコピーすることによって、フォールトトレラントのミラーリングされたメモリ状態を作成することができるように、選択的メモリミラーリングハードウェアおよびソフトウェア機構によって検出されなければならない。（初期完全コピーが完了した後に）メモリの変更のみをコピーすることによって、アクティブメモリ全体のコピーは、アクティブサーバサブシステムのメモリの全てのコピーを完了するためのシステム作業負荷の一時中断に付随して起こるであろう過剰な遅延または一時的サーバ停止を導入することなく、維持される。
【０００６】
ＦＴサーバおよびそのコンポーネントのネイティブオペレーティングシステムは、好適なメモリミラーリングインターフェースまたはＡＰＩを提供しないこともある。これは、Ｗｉｎｄｏｗｓ（登録商標）  Ｈｙｐｅｒ−Ｖ、ＶＭＷａｒｅ  ＥＳＸ、またはＬｉｎｕｘ（登録商標）  ＫＶＭ等のハイパーバイザがＦＴサーバ内で有効にされたとき、特に当てはまる。必要とされるものは、好適なメモリミラーリングインターフェースを提供しないオペレーティングシステムに関して、ダーティページを決定するための方法である。
【０００７】
本発明は、この必要性に対処する。
【発明の概要】
【課題を解決するための手段】
【０００８】
一側面では、本発明は、ＦＴサーバシステムにおいて１つのメモリサブシステムから別のメモリサブシステムにメモリを転送する方法に関する。一実施形態では、方法は、ＦＴサーバシステムのＢＩＯＳを使用して、メモリの一部を予約するステップと、システムの管理者がハイパーバイザおよびゲスト仮想マシン（ＶＭ）動作を有効にした場合、ＦＴサーバ、ＦＴサーバＯＳをブートし、ハイパーバイザを始動するステップと、カーネルモードＦＴドライバをメモリにロードし、初期化するステップと、続いて、セカンドレベルアドレス変換テーブル（ＳＬＡＴ）（または、種々の製造業者、すなわち、Ｉｎｔｅｌによって拡張ページテーブル［ＥＰＴ］、ＡＭＤによって高速仮想化インデキシング［ＲＶＩ］とも称される）を含むマイクロ仮想マシンマネージャ（マイクロＶＭＭ）を予約されたメモリの一部にロードし、初期化し、全てのプロセッサに、本明細書ではＦＴＶＭＭモジュールと称される仮想マシンマネージャ（ＶＭＭ）のゲストとしてそれらのプログラムを実行させるステップとを含む。別の実施形態では、方法は、予約メモリの中のＦＴＶＭＭのＳＬＡＴ（ＳＬＡＴ  Ｌ０と称される）を使用して、ＯＳ、およびゲストＬ２を除く全てのソフトウェアコンポーネントによるメモリアクセスを追跡するステップと、ハイパーバイザのＳＬＡＴ（ＳＬＡＴ  Ｌ２と称される）を使用することによって、かつＳＬＡＴ  Ｌ２へのハイパーバイザ（ハイパーバイザＬ１と称される）の書き込みを傍受することによって、ゲストＬ２によるメモリアクセスを追跡するステップとを含む。用語「Ｌ０」、「Ｌ１」、および「Ｌ２」は、明確にするために使用され、添付図面を指し得、必ずしも仮想化状態のための任意の命名法に準拠するわけではない。さらに別の実施形態では、方法は、最初に、ＦＴサーバ内の現在アクティブなＳＬＡＴテーブルの全ての有効化されたページテーブルエントリ（ＰＤＰＴＥ  １ＧＢページ、ＰＤＥ  ２ＭＢページ、およびＰＴＥ  ４ＫＢページ等）の中のダーティビット（Ｄビット）（各ページテーブルエントリのＤビット９）を消去し、次いで、Ｄビットを監視し、蓄積して、メモリの新たにダーティにされたページを追跡することによって、現在実行しているソフトウェアによって修正されたメモリページを記録しながら、第２のサブシステムの中への全てのシステムメモリの完全メモリコピーを実施することによって、ブラウンアウト状態レベル０に入るステップを含む。
【０００９】
なおもさらに別の実施形態では、方法は、先行段階に説明されるように追跡されたＤビットを表すダーティページビットマップを取得すること、前の段落のステップを繰り返して、現在のメモリコピー動作中に発生するであろう新しいＤビットを追跡し始めること、および第２のサブシステムの対応するメモリ場所の中にダーティページビットマップによって表されるメモリページをコピーすることの複数の反復を実施することによって、全てのＤビットを追跡するレベル１−４のブラウンアウト状態に入ることを含む。一実施形態では、方法は、プロセッサ＃０を除く、ＦＴＶＭＭ内のＦＴサーバの全てのプロセッサを一時停止させ、プロセッサ＃０に関してＦＴドライバにおける割り込みを無効にすることによって、ブラックアウト状態に入ることと、アクティブサブシステムから第２のサブシステムの中、最近ダーティにされたページのビットマップによって表されるメモリページをコピーすることと、ダーティページの最終の組を含む最終ブラックアウトメモリ範囲リストを生成することとを含む。別の実施形態では、方法は、ＦＰＧＡおよびＦＴサーバファームウェアによって収集されるプロセスを使用して、最終ページの組をミラーメモリに転送することと、ＦＴＶＭＭを完了および終了することによって、動作のブラックアウト部分を完了することとを含む。なおもさらに別の実施形態では、方法は、制御をＦＴドライバに返すことと、通常ＦＴシステム動作を再開することとを含む。
【００１０】
一実施形態では、ＦＴＶＭＭコードは、通常ＦＴシステム動作の再開後に予約メモリの中に留まる。別の実施形態では、予約メモリは、メモリの上位１／４ＧＢ〜２．２５ＧＢ（ギガバイト）である。さらに別の実施形態では、アクティブメモリからデータを移動させることは、ＦＰＧＡおよび高速ハードウェアダイレクトメモリアクセス（ＤＭＡ）エンジンを使用する。なおもさらに別の実施形態では、制御をＦＴドライバに返す動作のうちの１つは、ＦＴＶＭＭがＦＴドライバのコンテキストへのＶＭＬＡＵＮＣＨ命令を実行すること、およびＦＴドライバがＦＴドライバの同一のプログラムコードへのＶＭＥＸＩＴを引き起こす命令を実行することによるものである。ＶＭＣＳ、ＶＭＣＡＬＬ、ＶＭＥＸＩＴ、ＶＭＬＡＵＮＣＨ、ＶＭＲＥＳＵＭＥ、ＶＭＣＬＥＡＲ、ＶＭＸＯＮ、ＶＭＷＲＩＴＥ、ＶＭＲＥＡＤ、ＶＭＰＴＲＬＤ、およびＶＭＰＴＲＳＴ等のハードウェア仮想化のためのＩｎｔｅｌプロセッサ命令およびオブジェクトを説明する用語はまた、用語「ＶＭＣＢ」、「ＶＭＭＣＡＬＬ」、「＃ＶＭＥＸＩＴ」、「ＶＭＲＵＮ」、「ＶＭＬＯＡＤ」、および「ＶＭＳＡＶＥ」等のＡｍｅｒｉｃａｎ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓおよびその他によって製造されるプロセッサのための機能的類似または同等用語を表すことも意図していることを理解されたい。
【図面の簡単な説明】
【００１１】
本発明の構造および機能は、付随する図面と併せて本明細書の説明から最良に理解されることができる。図は、必ずしも一定の縮尺ではなく、代わりに、概して、例証的原理を強調している。図は、全ての側面で例証的と見なされるものであり、その範囲が請求項のみによって定義される、本発明を限定することを意図していない。
【００１２】
【図１】図１は、本発明を利用するシステムの実施形態の略図である。
【００１３】
【図２Ａ】図２Ａ−２Ｃは、ミラーリングの種々の段階中のＯＳ、ハイパーバイザ、ゲストＶＭ、ＦＴ仮想マシンマネージャ（ＦＴＶＭＭ）、およびＦＴサーバ内の他の層のオペレーティングソフトウェアおよび実行状態の実施形態の略図である。
【図２Ｂ】図２Ａ−２Ｃは、ミラーリングの種々の段階中のＯＳ、ハイパーバイザ、ゲストＶＭ、ＦＴ仮想マシンマネージャ（ＦＴＶＭＭ）、およびＦＴサーバ内の他の層のオペレーティングソフトウェアおよび実行状態の実施形態の略図である。
【図２Ｃ】図２Ａ−２Ｃは、ミラーリングの種々の段階中のＯＳ、ハイパーバイザ、ゲストＶＭ、ＦＴ仮想マシンマネージャ（ＦＴＶＭＭ）、およびＦＴサーバ内の他の層のオペレーティングソフトウェアおよび実行状態の実施形態の略図である。
【００１４】
【図３Ａ】図３Ａ−３Ｘは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。
【図３Ｂ】図３Ａ−３Ｘは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。
【図３Ｃ】図３Ａ−３Ｘは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。
【図３Ｄ】図３Ａ−３Ｘは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。
【図３Ｅ】図３Ａ−３Ｘは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。
【図３Ｆ】図３Ａ−３Ｘは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。
【図３Ｇ】図３Ａ−３Ｘは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。
【図３Ｈ】図３Ａ−３Ｘは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。
【図３Ｉ】図３Ａ−３Ｘは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。
【図３Ｊ】図３Ａ−３Ｘは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。
【図３Ｋ】図３Ａ−３Ｘは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。
【図３Ｌ】図３Ａ−３Ｘは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。
【図３Ｍ】図３Ａ−３Ｘは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。
【図３Ｎ】図３Ａ−３Ｘは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。
【図３Ｏ】図３Ａ−３Ｘは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。
【図３Ｐ】図３Ａ−３Ｘは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。
【図３Ｑ】図３Ａ−３Ｘは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。
【図３Ｒ】図３Ａ−３Ｘは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。
【図３Ｓ】図３Ａ−３Ｘは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。
【図３Ｔ】図３Ａ−３Ｘは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。
【図３Ｕ】図３Ａ−３Ｘは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。
【図３Ｖ】図３Ａ−３Ｘは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。
【図３Ｗ】図３Ａ−３Ｘは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。
【図３Ｘ】図３Ａ−３Ｘは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。
【発明を実施するための形態】
【００１５】
要するに、図１を参照すると、ＦＴサーバ１０の実施形態のブロック図が描写されている。本実施形態では、ＦＴサーバは、２つの同一の物理的プロセッサまたはサーバサブシステム１４および１８を含む。両方のプロセッササブシステムは、同時に動作することができ、同一のプロセスが、同じデータに働き掛ける。一方のプロセッササブシステム１４は、便宜上、現在アクティブなプロセッササブシステム、または第１のプロセッササブシステムと称され、出力データをユーザに提供する。両方のサブシステムが、同じデータを同時に処理しているが、データを処理している他方のプロセッササブシステム１８は、便宜上、第２のサブシステム、現在アクティブではないサブシステム、またはミラーサブシステムと称される。両方のシステムが同等であり、高信頼性のミラーリングされた実行の状態で動作しているとき、同じプログラムを同時に実行していることに留意されたい。
【００１６】
各プロセッササブシステムは、ＣＰＵ２２、２２’と、メモリ２６、２６’と、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）３０、３０’と、入力／出力（Ｉ／Ｏ）モジュール３４、３４’とを含む。一実施形態では、２つの物理的プロセッササブシステム１４および１８は、同じバックプレーン３８上に常駐し、バックプレーン３８を使用して互いに通信する。ＦＰＧＡ３０、３０’は、現在アクティブなメモリ２６からミラーメモリ２６’へのデータの転送（矢印Ａ、Ａ’、およびＡ”）を調整し、それによって、ＦＴドライバは、両方の（現在アクティブおよびミラーリングされた）サブシステム１４、１８内で同一のメモリコンテンツを作成できる。Ｉ／Ｏモジュール３４、３４’は、２つのサブシステム１４および１８が、ネットワークインターフェース（ＮＩ）４６を通してディスク記憶装置４２およびネットワーク等の外界と通信することを可能にする。
【００１７】
本議論は、２つのプロセッササブシステムを伴う実施形態の観点からであるが、３つ以上のプロセッササブシステムが、ＦＴサーバシステムで使用されることができる。複数のプロセッササブシステム、例えば、３プロセッサ（例えば、Ａ、Ｂ、Ｃ）サブシステムＦＴサーバの場合、３つのプロセッササブシステムのミラーリングは、２つのステップで実施される。第１のプロセッササブシステムＡおよびＢが、ミラーリングされ、次いで、結果として生じるミラーリングされたＡ、Ｂプロセッササブシステムが、Ｃプロセッササブシステムにミラーリングされる等。
【００１８】
上記のように、サーバのネイティブオペレーティングシステムは、特に仮想マシン（ＶＭ）システムが使用されるとき、アクティブメモリ２６からミラーメモリ２６’にダーティページをコピーするための好適なインターフェースを提供しないこともある。例えば、Ｉｎｔｅｌ  ＨａｓｗｅｌｌおよびＢｒｏａｄｗｅｌｌプロセッサ（Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ（ＳａｎｔａＣｌａｒａ，ＣＡ  ＵＳＡ））等のいくつかの物理的プロセッサは、複数の仮想オペレーティングシステムがシステム実行の多くの側面の完全制御を伴って同じ物理的プロセッサを同時に共有することを可能にするＶＭＸルート動作を含むハードウェア仮想化能力の組を提供する。仮想マシンの各々は、ホストハイパーバイザの制御下で、それら自身のオペレーティングシステムを有する。そのようなシステムは、これらの仮想マシンによって使用されるメモリのためにダーティページを検出およびコピーするためのインターフェースを提供しないこともある。
【００１９】
より詳細には、図２Ａ−２Ｃは、種々の動作を受けるときのＦＴサーバの状態を層状ソフトウェア図として描写する。図２Ａを参照すると、通常のミラーリングされていない動作では、ＦＴサーバシステム内の層は、ＦＰＧＡ３０を含むハードウェア層１００と、システムユニバーサルエクステンシブルファームウェアインターフェース（ＵＥＦＩ）ＢＩＯＳ１０８を含むサーバファームウェア層１０４と、ゼロに初期化されるゼロ層の予約メモリ領域１１２とを含む。
【００２０】
ゼロ層の予約メモリ１１２は、ブート時にＢＩＯＳ１０８によって予約される。ＦＴサーバシステムのメモリの殆どは、オペレーティングシステムおよびソフトウェアによる使用のために利用可能であるが、予約メモリ１１２は、そうではない。予約メモリ領域１１２のサイズは、ＦＴＶＭＭと、ＳＬＡＴテーブルとのための十分な空間を提供し、ＳＬＡＴテーブルは、４ＫＢ（４キロバイト）ページ粒度と、全てのシステムメモリの１対１のマッピングとで構成される。一実施形態では、４レベルＳＬＡＴテーブルは、ダーティビットおよびアクセスされたビット設定を伴うメモリマップを提供し、ダーティビットおよびアクセスされたビット設定は、オペレーティングシステムカーネルおよび他のソフトウェアによって修正される全てのメモリページを識別するであろう。４レベルＳＬＡＴは、４キロバイト粒度を伴うメモリの各ワードをアドレスするために十分な粒度を提供するために十分であるが、他のページサイズおよびマッピングも可能である。
【００２１】
次の層（Ｌ１）１２０は、ＦＴカーネルモードドライバ１２２を含むＦＴサーバサブシステムのためのオペレーティングシステムおよびドライバと、共通に使用されるハイパーバイザホスト１２４とを含む。
【００２２】
最後の層（Ｌ２）１３０は、プロセス、アプリケーション、およびその他１３４等の通常動作時にＶＭＣＳ仮想化構造によって制御されない仮想化されていないサーバソフトウェアコンポーネントを含み、それは、任意の仮想マシンゲスト（ＶＭ）１３８、１３８’を含む。仮想化されていないソフトウェアコンポーネント１３４は、ＦＴ管理層１３６を含む。各仮想マシンゲスト（ＶＭ）は、ＶＭゲストオペレーティングシステム（ＶＭＯＳ）１４２、１４２’と、ＶＭに関連付けられるＳＬＡＴテーブル（ＳＬＡＴ  Ｌ２）１４６、１４６’とを含む。各ＶＭ１３８、１３８’の中、そのＶＭに配分される仮想プロセッサ０−Ｎの各々のために１つずつ、ＶＭに関連付けられた１つ以上の仮想マシン制御構造（ＶＭＣＳ−Ｎ、概して、１５０、１５０’）も含まれる。示される略図では、仮想プロセッサＶＭＣＳは、ＶＭＣＳ０〜ＶＭＣＳ−Ｎと標識される。各ＶＭＣＳは、ゲスト物理アドレスをシステム物理アドレスに変換するマッピングを提供可能なＳＬＡＴテーブルポインタ（Ｉｎｔｅｌ拡張ページテーブルポインタＥＰＴＰ等）を有効にするための制御フィールドを含む。
【００２３】
ここで図２Ｂを参照すると、ミラーリングの開始時、ＦＴサーバは、ミラーリングされていないモードで動作している。ＦＴ管理層１３６は、ＦＴカーネルモードドライバ（ＦＴドライバ）１２２に、ミラーリングされた実行に入るためのコマンドを処理することを始めさせる。ＦＴカーネルモードドライバ１２２は、ＦＴ仮想マシンモニタ（ＦＴＶＭＭ）コード１８０、ＦＴＶＭＭデータ１８４、ＳＬＡＴ  Ｌ０  １８８、およびＶＭＣＳ−Ｌ０アレイ１９２のプログラムおよびデータコードを予約メモリ領域にロードすること、または書き込むことを行う。
【００２４】
ＦＴドライバは、各プロセッサのためのＶＭＣＳ  Ｌ０を初期化し、ＦＴＶＭＭがインストールされ、ハイパーバイザとして実行するようにし、それによって、ハイパーバイザのプログラムコードは、ＦＴサーバ内で起こる全ＶＭＥＸＩＴイベント（すなわち、ゲストＬ２からゲストを制御するハイパーバイザの中へ実行を転送するプロセッサ機構）によって直接実行される。ＦＴＶＭＭは、ＦＴＶＭＭがインストールされておらずアクティブではないかのように全ＶＭＥＸＩＴを処理し、ＯＳ１、ＯＳ２、ＯＳ共通使用ハイパーバイザＬ１、およびゲストＬ２が、機能的に正常な様式でそれらの処理を継続するであろうような様式で、ＶＭＥＸＩＴを引き起こしたイベントの通常の取り扱いをエミュレートする。
【００２５】
この時点で、メモリコンテンツの転送は、「ブラウンアウト（ｂｒｏｗｎｏｕｔ）」および「ブラックアウト（ｂｌａｃｋｏｕｔ）」と称される２つの条件下で行われる。ミラーリング、ブラウンアウト、およびブラックアウトは、初期ＦＴサーバ後の数分以内に定常状態動作が達成されると、または、プロセッササブシステムが起動ＦＴサーバ上のハードウェアエラー後に稼働するように戻される度に行われ得る。ブラウンアウト段階中、通常システム作業負荷は、処理され、プロセッサは、算出を行い、アクティブメモリにアクセスしてそれを修正し続ける。ブラウンアウト中に（メモリを第２のサブシステムにコピーしている間に）メモリ書き込みによって引き起こされるダーティページは、追跡され、次のブラウンアウトまたはブラックアウト段階でコピーされる。ＦＴＶＭＭは、各段階で修正されたメモリページを識別するためのダーティページビットマップを提供する。ブラウンアウト段階０では、新たにダーティにされたページを追跡しながら、全てのメモリが、コピーされる。ブラウンアウト段階１および以降では、前の段階中のダーティにされたページのみが、コピーされる。ブラックアウトでは、１つを除く全てのプロセッサが、一時停止され、割り込みが、無効にされる。いかなるシステム作業負荷も、ブラックアウト中に処理されない。前の（ブラウンアウト）段階からのダーティにされたページは、コピーされ、最終的な修正されたページ範囲リストが、作成される。そして、残りのダーティページおよびアクティブプロセッサ状態は、ミラーメモリにコピーされる。これが完了すると、ＦＴドライバは、システム管理割り込みを生成し、全てのプロセッサは、ファームウェアＵＥＦＩ  ＢＩＯＳおよびファームウェアＳＭＭモジュール内で実行され、ファームウェアＵＥＦＩ  ＢＩＯＳおよびファームウェアＳＭＭモジュールは、ＦＰＧＡを使用してウォームリセットを生成し、ミラーリングされた実行の状態に入る。ファームウェアＳＭＭは、ＦＴドライバに対して再開を実施し、ＦＴドライバは、ブラックアウト段階を完了し、ＦＴＶＭＭをアンロードし、一時停止されたプロセッサを解放し、割り込みを有効にし、ミラーリングされた実行のための要求のその取り扱いを完了する。
【００２６】
ここで図２Ｃを参照して、ミラーリングプロセスが完了すると、予約メモリ１１２の中のＦＴＶＭＭコード１８０は、アンロードされ、もはや実行されなくなる。ＦＴサーバは、依然として、ミラーリングされた実行モードで動作している。ＦＴＶＭＭデータ１８４、ＳＬＡＴ１８８、およびＶＭＣＳ１９２は、使用されず、予約メモリは、アイドルであり、次のエラー状態を待っている。
【００２７】
より詳細には、ミラーリングメモリのためのステップを示す例示的システム表現が、図３Ａ−３Ｘに示される。種々のステップおよび関連特徴が、図３Ａ−３Ｘに示される。ステップの組み合わせおよび一部を含む種々のステップが、種々の実施形態で使用されることができる。ステップ１−２２の議論が、以下に続き、図３Ａから始まって、図３Ｘまで、かつそれを含んで継続し、ステップ１−２２および関連付けられる詳細は、以下の通りである。
【００２８】
（ステップ１−ＦＴサーバ電源オンおよびリセット）
ＦＴサーバシステムは、電源をオンにされ、ハードウェアリセットを実施する。
【００２９】
（ステップ２−ＦＴサーバファームウェアがメモリを構成する）
ＦＴサーバＵＥＦＩおよびＢＩＯＳファームウェアは、システムメモリの全てを検出し、オペレーティングシステムによって使用され得るメモリのエリアを定義するためのメモリ構成テーブルの組を作成する。
【００３０】
（ステップ３−ＦＴサーバファームウェアが予約メモリ領域を作成する）
ＵＥＦＩ  ＢＩＯＳは、ＦＴＶＭＭによる使用のためにシステムメモリの最上部における領域を予約する。このメモリ領域は、オペレーティングシステムによる使用のために利用可能ではない予約システムメモリのタイプとして、メモリ構成テーブルの中で定義される。予約メモリのこの領域は、本明細書では「予約メモリ領域」と称される。ＵＥＦＩ  ＢＩＯＳは、全てゼロから成るデータパターンを予約メモリ領域に書き込む。予約メモリ領域のサイズは、（Ｉｎｔｅｌプロセッサ用の完全にデータ投入された４レベルＳＬＡＴテーブル等の）完全にデータ投入された４レベルＳＬＡＴテーブルを含むために十分な空間を含み、ＳＬＡＴテーブルは、４キロバイトページサイズ粒度を伴うＦＴサーバの物理メモリの全てをマップするように構成される。これは、全てのシステムメモリの１／５１２より多くを要求する。１テラバイトのサイズの物理メモリを伴うＦＴサーバに関して、予約メモリ領域は、２．２５Ｇバイトを占有し得る。このメモリは、メモリの最上部に位置し得る（システムの最大のデータ投入された物理メモリアドレスまで、およびそれを含む）。一実施形態では、ＵＥＦＩファームウェアは、その関係（（システムメモリサイズ／５１２）＋２５６ＭＢ）を使用し、予約メモリ領域のサイズを決定する。
【００３１】
（ステップ４−ＦＴサーバがブートし、完全に動作可能になる）
ＦＴサーバオペレーティングシステムは、そのブートおよび始動シーケンスを完了し、サーバのために構成される作業負荷が処理され得る完全動作状態に入る。ＦＴサーバ動作の状態は、上で議論されるように図２Ａに描写される。ロードされたＦＴカーネルモードドライバ（ＦＴドライバ）およびＦＴ管理層が、存在し、起動している。ＦＴサーバが１つ以上のゲスト仮想マシンで構成される場合、オペレーティングシステムの共通使用ハイパーバイザが、存在し得、仮想マシンゲストは、それら自身のオペレーティングシステムおよびゲストのために構成された作業負荷を実行していることもある。
【００３２】
（ステップ５−ＦＴ管理層がミラーリングされた実行を要求する）
ＦＴ管理層は、第２のサーバサブシステムがＦＴサーバに存在することを検出する。ＦＴ管理層は、第２のサーバサブシステムを動作させるように、かつＦＴサーバを高信頼性のミラーリングされた実行の状態に移行させるようにＦＴドライバに要求するためのＦＴドライバへの関数呼び出しまたはコマンドを実施する。
【００３３】
（ステップ６−ＦＴドライバが第２のサブシステムに電力を印加する）
ＦＴドライバは、ＦＴサーバＦＰＧＡを使用し、第２のサブシステムへの電源オンおよびハードウェアリセットを実施する。第２のサブシステムは、第２のサブシステム内のプロセッサおよびメモリコンポーネントを初期化するそのＦＴサーバファームウェア（ＵＥＦＩおよびＢＩＯＳ）における診断プログラムを完了する。第２のサブシステムは、ＦＴドライバがメモリコピー動作を要求およびプログラムした場合、ＦＴサーバＦＰＧＡおよび他のハードウェアコンポーネントが第１のサーバサブシステムから第２のサーバサブシステムの中へのメモリコピーを実施することができる動作状態に入る。
【００３４】
ＦＴドライバは、ＦＴサーバＦＰＧＡを使用し、外部ハードウェアデバイス（Ｉ／Ｏデバイス）によって引き起こされる全てのダイレクトメモリアクセス（ＤＭＡ）メモリ書き込みが第１のサーバサブシステムと第２のサブシステムとへの同一のメモリ書き込みを並行して実施するであろう動作状態（Ｓｎａｒｆモードと称される）に入る。このようにして、ＩＯ動作は、２つのサブシステム間のメモリ差を引き起こさないであろう。ＦＰＧＡ  Ｓｎａｒｆモードは、ＦＴサーバがミラーリングされた実行の状態に移行した後、ファームウェアＳＭＭモジュールによって無効にされるか、または終了させられるであろう。
【００３５】
（ステップ７−ＦＴドライバがコードおよびデータを予約メモリ領域に書き込む）
ＦＴドライバは、ＦＴＶＭＭコード、データ、およびＳＬＡＴテーブルメモリコンテンツ、ならびに他のデータを予約メモリ領域に書き込む。予約メモリ領域中のＳＬＡＴは、ＳＬＡＴ  Ｌ０と称され得る。一実施形態では、ＦＴドライバは、データを予約メモリ領域に書き込む動作を実施するために、オペレーティングシステムのメモリマッピング機能を使用し、ダイレクトメモリアクセス（ＤＭＡ）コントローラまたはＦＴサーバＦＰＧＡ等のハードウェアリソースも使用し得る。
【００３６】
（ステップ８−ＦＴＶＭＭコードを実行することに先立ったＦＴサーバソフトウェアコンポーネントの状態の説明）
この段階で、ＦＴサーバソフトウェアコンポーネントは、通常動作で起動している。ＯＳ１およびＯＳ２ソフトウェアならびにプログラムコンポーネントは、仮想化された状態で実行していないこともある。オペレーティングシステムの共通使用ハイパーバイザ（ハイパーバイザＬ１）は、存在する場合、ゲストが存在する場合にそれが制御するゲスト仮想マシン（ゲストＬ２、Ｌ２’）からの各ＶＭＥＸＩＴを処理し続ける。
【００３７】
そのＶＭＥＸＩＴイベントがハイパーバイザＬ１によって取り扱われるゲスト仮想マシンが全く存在しないことも、多く（数百個）存在することもある。さらに、ハイパーバイザＬ１の２つ以上の論理インスタンスが存在し得る。動作のこの段階で、ＦＴＶＭＭコードが任意のプロセッサによって実行される前、システムは、予約メモリ領域が、所望のコード、データ、およびＳＬＡＴテーブルメモリコンテンツを用いてＦＴドライバによって書き込まれていること、または初期化されていることを除いて、図２Ａに描写される状態にある。
【００３８】
図２Ａも参照すると、ＯＳ１およびＯＳ２は、通常動作にある。ハイパーバイザＬ１は、通常ハイパーバイザ動作状態にある。ゲストＬ２は、通常ゲスト動作状態にある。用語「通常ハイパーバイザ動作」および「通常ゲスト動作」は、ゲストＬ２における動作がＶＭＥＸＩＴを発生させるとき、ハイパーバイザＬ１のプログラムコードがプロセッサのＶＭＥＸＩＴ挙動によって直接呼び出されること、または実行されることを部分的に含意するものとして理解されることができる。
【００３９】
（ステップ９−ＦＴドライバが、全てのプロセッサ上でドライバコードを同時に、または並行して実行し、次いで、ＦＴＶＭＭコードに全てのプロセッサ上でハイパーバイザとして実行させる）
ＦＴカーネルモードドライバは、各プロセッサが、仮想化（Ｉｎｔｅｌ  ＶＭＸルートモード等）を有効化し、プロセッサのＶＭＣＳ  Ｌ０を使用して、その現在の実行状態を仮想化し、そして、ＦＴＶＭＭコンテキストへのＶＭＥＸＩＴを実施し、以下を行うようにするプログラム内でシステムの中の全てのプロセッサを同期化する：
ａ．ＶＭポインタストア（ＶＭＰＴＲＳＴ）プロセッサ命令を実施し、現在のＧＵＥＳＴ  Ｌ２の対応するＶＭＣＳ（ＶＭＣＳ−Ｎ）のアドレスを保持するＶＭＣＳポインタを読み取り、結果として生じる値をＦＴＶＭＭによって使用されるソフトウェア構造に書き込むこと；
ｂ．ＶＭＣＬＥＡＲ（ＶＭＣＳを消去する）、ＶＭＰＴＲＬＤ（ＶＭＣＳを現在かつアクティブにする）、およびＶＭＷＲＩＴＥ（ＶＭＣＳフィールドを修正する）等の命令を使用することによって、プロセッサの現在実行しているレジスタセットから抽出される値の組をＦＴＶＭ  ＭＶＭＣＳアレイの中のＶＭＣＳ  Ｌ０と称される各プロセッサのためのＦＴＶＭ  ＭＶＭＣＳの対応するゲストフィールドに書き込むこと；
ｃ．ＦＴＶＭＭの保護モードメモリ構成およびプロセッサＨＯＳＴレジスタ命令ポインタ（ＲＩＰ）エントリポイント、スタックポインタ、システムメモリの全てをマップし得るページテーブル、ならびにＦＴＶＭＭ実行コンテキストの他の条件を含むＦＴＶＭＭの設計された動作要件によって決定される値の組をＦＴＶＭ  ＭＶＭＣＳアレイの中の各プロセッサのＶＭＣＳ  Ｌ０の対応するホストフィールドに書き込むこと；
ｄ．ＶＭＬＡＵＮＣＨ（消去されたＶＭＣＳを起動する）プロセッサ命令を実施し、プロセッサをゲストとして実行することを始めさせること；
ｅ．それによって、ＶＭＣＳ  Ｌ０のゲストフィールドによって決定される処理コンテキストにおいて、ＦＴドライバプログラムコード内のプロセッサの現在のコンテキストにおいてゲストとして実行することを始めること；
ｆ．そして、各プロセッサが、ＶＭＣＳ  Ｌ０のホストフィールドによって決定される処理コンテキストにおいて、ＶＭＥＸＩＴと、予約メモリ領域中に位置するＦＴＶＭＭハイパーバイザプログラムコードの中への実行の転送とを引き起こすＦＴドライバコード内のプロセッサ命令を実行すること。
【００４０】
（ステップ１０−ＦＴＶＭＭが、ハイパーバイザとして全てのプロセッサ上でそのコードを同時に、または並行して実行する）
ＦＴＶＭＭプログラムコード、すなわち、ＦＴＶＭＭ  ＣＯＤＥは、ＦＴサーバ内の全てのプロセッサが、予約メモリ領域中に位置するコードおよびデータから成るＦＴＶＭＭコンテキストへのＶＭＥＸＩＴを実施することを待つ。１つのプロセッサは、ＦＴＶＭＭ内の関数を呼び出し、４キロバイトのページテーブルエントリサイズを使用して、１対１のゲスト物理・物理アドレスマッピングを伴う予約メモリ領域中のＳＬＡＴ  Ｌ０と称されるＳＬＡＴテーブルを初期化する。ＦＴＶＭＭは、各プロセッサのＶＭＣＳ  Ｌ０へのＶＭＷＲＩＴＥ等のプロセッサ命令の組を実施し、それによって、プロセッサは、その後、プロセッサが（ＶＭＣＳ  Ｌ０のゲストフィールドによって決定される実行コンテキストにおいて）ＶＭＣＳ  Ｌ０を使用してゲストとして実行しているとき、アドレス変換のためにＳＬＡＴ  Ｌ０テーブルを使用するであろう。ＳＬＡＴ  Ｌ０の機能性は、その後、ＦＴサーバ上のソフトウェアによって修正されたメモリページを決定するために、その最下位ページテーブルエントリの中の「ダーティビット」を検出するために使用されるであろう。ＦＴＶＭＭは、変数を初期化し、レジスタおよびソフトウェア構造からゲストおよびプロセッサ状態情報を抽出する。これが全てのプロセッサ上で完了されたとき、ＦＴＶＭＭは、ＦＴカーネルモードドライバに戻るためのＶＭＲＥＳＵＭＥ命令を実施する。
【００４１】
（ステップ１１−ＦＴＶＭＭが、ＦＴサーバ内の全てのソフトウェアプログラムのためのハイパーバイザとして動作し、ＦＴサーバ内の全てのソフトウェアプログラムが、ＦＴＶＭＭのゲストとして動作する）
ＦＴＶＭＭは、最下位（またはおそらく唯一の）ハイパーバイザとして動作し、それは、ＦＴＶＭＭがアクティブなままである限り、システム内の全てのＶＭＥＸＩＴイベントを取り扱う。ＦＴＶＭＭは、ミラーリングされた実行に入るためのダーティビット追跡機能を完了するまで、または、エラーが検出され、その後、ＦＴドライバの機能コマンドインターフェースからの論理的アンロードコマンドが続くまで、アクティブなままであろう。ＦＴＶＭＭは、ＦＴＶＭＭが存在しなかった場合に起こっていたであろう同等のシステム挙動をエミュレートまたは生成することによって、システム内の全てのＶＭＥＸＩＴイベントを取り扱う。ＦＴＶＭＭは、ＶＭＥＸＩＴを引き起こした機能を直接実施し得、その機能のために通常発生するデータまたは状態を生成し得る。仮想マシンゲストＬ２からのＶＭＥＸＩＴの場合、ＦＴＶＭＭは、ハイパーバイザＬ１のコンテキストのためのエミュレートされた状態を作成し得、ＶＭＰＴＲＬＤ、ＶＭＲＥＳＵＭＥ、および他のプロセッサ命令を実施し、ハイパーバイザＬ１がゲストＬ２から各ＶＭＥＸＩＴを間接的にサービス提供することを可能にし得る。ＦＴＶＭＭは、ＶＭＰＴＲＬＤ命令を使用し、これらの動作のための正しいＶＭＣＳ  Ｌ０またはＶＭＣＳ−Ｎを提供する。ハイパーバイザＬ１がゲストＬ２からのＶＭＥＸＩＴを間接的にサービス提供するネスト化された仮想化と称されるこの動作状態は、「ネスト化された動作」、「ネスト化されたハイパーバイザ動作」、および「ネスト化されたゲスト動作」として図２Ｂおよび図３Ｉに描写される。
【００４２】
ＦＴＶＭＭは、ＰＭＬアドレス（ＰＭＬログアドレス）およびＰＭＬインデックスのためのＶＭＣＳフィールドへのＶＭＷＲＩＴＥを実施し、ＶＭＣＳのＰＭＬ有効化実行制御ビットを設定することによって、この特徴をサポートするＩｎｔｅｌ  Ｂｒｏａｄｗｅｌｌプロセッサ等のプロセッサのために、各ＶＭＣＳ  Ｌ０においてＩｎｔｅｌページ修正ロギング（ＰＭＬ）機能を有効にし得る。ＦＴＶＭＭは、ＰＭＬ機能を使用し、各プロセッサが生成するダーティにされたメモリページの場所および数を追跡し得る。ＦＴＶＭＭは、時として、ＰＭＬログフルイベントによって引き起こされるＶＭＥＸＩＴを取り扱うとき、１００マイクロ秒遅延等の時限遅延ループを実施し、ブラックアウトメモリコピー段階でダーティにされたページのより小さい組を生成するために、多数のダーティにされたページを生成したゲスト処理コンテキストを減速させ得る（スロットルと称される）。
【００４３】
ＦＴＶＭＭがアクティブである間、ＦＴサーバシステムは、図２Ｂに描写される状態にある。ＦＴサーバ上で構成される、全コードパス、ＯＳルーチン、ドライバ、作業負荷、またはプログラムは、仮想化された動作モード（Ｉｎｔｅｌ  ＶＭＸ非ルートモード）で実行している。ＦＴＶＭＭは、ＶＭＥＸＩＴを処理し、ＦＴＶＭＭが存在せずアクティブではなかった場合に起こったであろう状態と厳密に同等の結果として生じる状態を生成し、ＶＭＲＥＳＵＭＥまたはＶＭＬＡＵＮＣＨを実施して、ＦＴＶＭＭへのＶＭＥＸＩＴによって中断されたコードパスまたは処理フローの実行を再開することによって、ＦＴサーバ上で起動するコードからの全てのＶＭＥＸＩＴＳを取り扱う。
【００４４】
（ステップ１２−ＦＴドライバが、機能インターフェースを使用し、ＦＴＶＭＭを管理し、それと通信する）
図２Ｂに描写される状態にある間、ＦＴカーネルモードドライバは、機能インターフェースを使用し、機能インターフェースは、コマンドをＦＴＶＭＭに送信し、ＦＴＶＭＭからデータを受信することと、ミラーリングされた実行状態を作成し、その状態に入るために要求されるダーティメモリページのビットマップを生成および取得することとを行うためにＶＭＣＡＬＬ命令を実施し得る。これらのコマンドに応答するために、ＦＴＶＭＭは、ＶＭＣＡＬＬプロセッサ命令によって引き起こされる全ＶＭＥＸＩＴの起源を決定し、そして、ＦＴカーネルモードドライバからのＶＭＣＡＬＬイベントを高レベル機能コマンドとして解釈し得る。機能インターフェースは、メモリページ追跡有効化、ブラックアウトページ追跡有効化、ダーティページビットマップ要求、ＦＴＶＭＭアンロード要求と称される機能を実施するための論理コマンドの組、およびＦＴＶＭＭ動作を制御するために使用され得る他の機能コマンドを使用する。
【００４５】
（ステップ１３−ＦＴＶＭＭが、各仮想マシンゲストＬ２のＶＭＣＳ−Ｎ物理アドレスを取得することによって、ＳＬＡＴ  Ｌ２と称される各ゲストＬ２の現在のＳＬＡＴテーブル場所を抽出および追跡する）
ＦＴＶＭＭは、ＦＴＶＭＭがアクティブである間、全てのゲストＬ２に関して、ＳＬＡＴ  Ｌ２と称されるＳＬＡＴテーブルによって現在占有されているメモリページの組を説明するそのデータを収集および更新し続ける。ＦＴサーバのシステムメモリは、存在する各仮想マシンゲストＬ２のためのＳＬＡＴ  Ｌ２テーブルと称される１つ以上のＳＬＡＴテーブルを含有し得る。システムメモリの中に常駐するＳＬＡＴ  Ｌ２テーブルは、ハイパーバイザＬ１によって作成および修正されており、ＦＴＶＭＭから論理的に独立している。ＦＴＶＭＭは、Ｌ２と称される各仮想マシンゲストに関連付けられるＳＬＡＴ  Ｌ２テーブルポインタ（Ｉｎｔｅｌ  ＥＰＴＰポインタ等）のデータアレイを維持する。ＦＴＶＭＭは、ＳＬＡＴ  Ｌ２テーブルのメモリページの全ての場所を含むデータ構造を維持する。ＳＬＡＴ  Ｌ２テーブルは、メモリマッピングと、ゲストＬ２に配分されている各メモリページのためのページテーブルエントリダーティビットとを含む。ハイパーバイザＬ１がゲストＬ２のためのＳＬＡＴ  Ｌ２テーブル内のデータを修正するとき、ＦＴＶＭＭは、ゲストの現在のメモリマップを維持するために、これらの変更を追跡する。ＦＴＶＭＭは、そのコードがそのＳＬＡＴ  Ｌ２ページを修正する場合、ハイパーバイザＬ１がＶＭＥＸＩＴを引き起こすであろうように、ＳＬＡＴ  Ｌ２テーブルにおける物理メモリページをマップするＳＬＡＴ  Ｌ０ページテーブルエントリにおける書き込み許可ビットを消去することによって、これらの変更を追跡し得る。その後、ＦＴカーネルモードドライバが新しいダーティページビットマップを要求するためのＶＭＣＡＬＬを後に実施するとき、ＳＬＡＴ  Ｌ２テーブルソフトウェア追跡構造が、各ゲストＬ２のためのダーティページビットマップにおけるダーティページビットを見出すために使用されるであろう。
【００４６】
（ステップ１４−ブラウンアウトメモリコピー段階０で、ＦＴドライバが、全てのシステムメモリを第２のサブシステムにコピーする）
ＦＴカーネルモードドライバは、ＦＴＶＭＭとのＶＭＣＡＬＬ機能インターフェースを使用し、システム内の修正されたメモリの全てのページを追跡することを始めるようにＦＴＶＭＭに要求するためのメモリページ追跡有効化コマンドを発行する。ＦＴＶＭＭへのＦＴドライバの機能インターフェースにおけるＶＭＣＡＬＬプロセッサ命令は、各論理プロセッサにＦＴＶＭＭに入らせ、ＦＴドライバによって発行される要求を処理させる。ＦＴＶＭＭは、新たに修正された全てのシステムメモリページ（ダーティページ）の記録を取得する様式で、ＦＴＶＭＭハイパーバイザコンテキストにおいてそのプログラムコードを使用することを始めるための関数を全てのプロセッサ上で実施する。ＦＴＶＭＭは、下記のステップ１５に説明されるように、ＳＬＡＴ  Ｌ０および全てのＳＬＡＴ  Ｌ２テーブルを検索し、これらのテーブル内のダーティビットをゼロに設定し、そして、各プロセッサ上のキャッシュされたＳＬＡＴテーブルマッピングを無効にする。全てのプロセッサがＦＴＶＭＭにおいてこの関数を完了したとき、ＦＴＶＭＭは、ＶＭＲＥＳＵＭＥ命令を実施することによって、制御をＦＴドライバに返す。そして、ＦＴドライバは、システムメモリの全てを第２のサブシステムにコピーする。ＦＴドライバは、ＤＭＡコントローラまたはＦＴサーバＦＰＧＡを使用し、全てのシステムメモリを第２のサブシステムにコピーする高速メモリ転送動作を実施し得る。ＦＴサーバは、この処理中、その構成された作業負荷を実施し続ける。
【００４７】
（ステップ１５−ブラウンアウトメモリコピー段階１で、ＦＴドライバが、ダーティページビットマップを取得し、メモリの新たにダーティにされたページを第２のサブシステムにコピーする）
ＦＴカーネルモードドライバは、機能インターフェースを使用し、各プロセッサ上でメモリページ追跡有効化と称されるコマンドを発行する。ＦＴＶＭＭへのＦＴドライバの機能インターフェースにおけるＶＭＣＡＬＬプロセッサ命令は、各論理プロセッサにＦＴＶＭＭに入らせ、ＦＴドライバによって発行される要求を処理させる。ＦＴＶＭＭは、新たに修正された全てのシステムメモリページ（ダーティページ）の記録を取得する様式で、ＦＴＶＭＭハイパーバイザコンテキストにおいてそのプログラムコードを使用することを始めるための関数を全てのプロセッサ上で実施する。そして、各プロセッサ上のＦＴＶＭＭコードは、ＳＬＡＴ  Ｌ０テーブル内および各ゲストのＳＬＡＴ  Ｌ２テーブル内の８バイト毎のページテーブルエントリを検索し、各エントリにおけるダーティビットをそのビットのＴＲＵＥ値と比較する。比較結果がＴＲＵＥであるとき、ＦＴＶＭＭは、物理メモリにおけるダーティまたは修正されたページのアドレスを表すビットフィールドアドレスにおいて、ダーティページビットマップにおけるビットフィールドを設定し、そして、ページテーブルエントリにおけるダーティビットを消去する。ＳＬＡＴ  Ｌ０の中に構成されるメモリマッピングは、４キロバイトのページサイズを有するので、ダーティページビットマップにおける１ビットが、見出されるダーティにされたページ毎に設定される。ハイパーバイザＬ１がＳＬＡＴ  Ｌ２テーブルの中に構成したメモリマッピングは、４キロバイトより大きくあり得、ＦＴＶＭＭは、これが起こるとき、（２メガバイトページサイズの場合に関して５１２の連続ビットフィールドエントリ等の）ダーティページビットマップにおける連続的な一連のビットフィールドを設定する。このプロセスがＳＬＡＴ  Ｌ０およびＳＬＡＴ  Ｌ２テーブルに関して完了したとき、各プロセッサは、ＳＬＡＴ  Ｌ０およびＳＬＡＴ  Ｌ２テーブルに関してプロセッサのキャッシュされた変換を無効にするためのプロセッサ命令を実施し（Ｉｎｔｅｌプロセッサ命令ＩＮＶＥＰＴ等）、ＦＴＶＭＭが、システム作業負荷によって引き起こされ得るダーティにされたページの新しいインスタンスを検出し続けることを可能にする。全てのプロセッサがＦＴＶＭＭにおいてこの動作を完了したとき、ＦＴＶＭＭは、ＶＭＲＥＳＵＭＥ命令を実施することによって、制御をＦＴドライバに返す。そして、ＦＴドライバは、ダーティページビットマップ要求と称される別のＭＣＡＬＬ機能インターフェースコマンドを発行する。ＦＴＶＭＭは、そして、最近修正されたページの記録を含むダーティページビットマップを提供し、ＦＴドライバのデータエリアの中に位置するメモリバッファにこのデータを記憶する。そして、ＦＴドライバは、ダーティページビットマップにおいて識別される物理メモリページの組を第２のサブシステム内の対応する物理メモリアドレスにコピーする。ＦＴドライバは、ＤＭＡコントローラまたはＦＴサーバＦＰＧＡを使用し、ダーティにされたページの組を第２のサブシステムにコピーする高速メモリ転送動作を実施し得る。
【００４８】
（ステップ１６−ブラウンアウトメモリコピー段階２−Ｎで、ＦＴドライバは、別のダーティページビットマップを取得し、新たにダーティにされたページを第２のサブシステムにコピーするために１回以上同じシーケンスを繰り返し得る）
プロシージャメモリコピー段階１は、最終ブラウンアウトメモリコピー段階Ｎ中にシステム作業負荷によって生成され得るダーティにされたページのより小さい結果として生じる組を取得するために、１回数以上繰り返され得る。
【００４９】
（ステップ１７−ブラックアウトメモリコピーでは、ＦＴドライバが、全てのプロセッサ上でドライバコードを同時に、または並行して実行し、ダーティにされたページの最終の組を第２のサブシステムにコピーする）
ＦＴドライバは、ＦＴサーバ内の他のプログラムがより多くのダーティページビットを生成することを防止するために、全てのプロセッサに、各プロセッサ上のシステム割り込み処理を無効にさせる。ＦＴドライバは、ブラックアウトページ追跡有効化コマンドを発行し、それは、ＶＭＣＡＬＬ機能インターフェースを使用し、ＦＴＶＭＭに最近ダーティにされたメモリページの組を識別させ、ＦＴＶＭＭにＶＭＣＳ−ＮおよびＳＬＡＴ  Ｌ２等のある揮発性または頻繁に修正されるメモリページも識別させ、ダーティにされたページの組の中にこれらのページを含ませる。ＦＴＶＭＭは、ＦＴＶＭＭにおけるプロセッサ＃０を除く、全てのプロセッサを一時的に一時停止させ得る。そして、ＦＴドライバは、別のＶＭＣＡＬＬ機能インターフェースコマンド、すなわち、ダーティページビットマップ要求を発行し、ダーティページのビットマップを取得する。そして、ＦＴＶＭＭは、最近修正されたページの記録を含むダーティページビットマップを提供し、ＦＴドライバのデータエリアの中に位置するメモリバッファにこのデータを記憶する。そして、ＦＴドライバは、ダーティページビットマップにおいて識別される物理メモリページの組を第２のサブシステム内の対応する物理メモリアドレスにコピーする。そして、ＦＴドライバは、（予約メモリ領域のためのメモリ範囲を含む）ダーティである、または修正されると仮定されるメモリ範囲のリストを作成し、最終ブラックアウトメモリ範囲リストと称されるデータ構造の中にこの情報を記憶する。このプロシージャは、システム作業負荷が実行されず、作業負荷がダーティにされたページの最終組が第２のサブシステムにコピーされている間、短いサーバ処理停止を経験するので、ブラックアウトメモリコピーと称される。
【００５０】
（ステップ１８−ＦＴドライバが、ＦＴサーバＦＰＧＡおよびファームウェアＳＭＭモジュールを使用し、ミラーリングされた実行の状態に入る）
ＦＴドライバは、ＦＴサーバＦＰＧＡ、他のＦＴサーバハードウェア、およびファームウェアリソースを使用して、一連のプログラムおよび関数を実施し、ＦＴサーバを高信頼性のミラーリングされた実行の状態に移行させる。この一連の動作は、ミラーリングされた実行の状態に入るとき、メモリアドレス範囲の最終の組が第２のサブシステムにコピーされていることを確実にするために、最終ブラックアウトメモリ範囲リストを使用する。
ａ）ＦＴドライバは、システム管理割り込み（ＳＭＩ）を生成し、全てのプロセッサをファームウェアＳＭＩハンドラに入らせ、システム管理モード（ＳＭＭ）で動作させる。全てのプロセッサは、ファームウェアＳＭＭモジュールにおいてコードを実行する。
ｂ）１つのプロセッサは、ＦＰＧＡを使用し、最終ブラックアウトメモリ範囲リストの中のダーティメモリページの組を第２のサブシステムのメモリにコピーする。１つのプロセッサは、ＦＰＧＡ機能を使用し、全てのＩＯ  ＤＭＡ読み取り、書き込み、および割り込み配信を一時的に遮断または一時中断する。全てのプロセッサは、保存状態と称されるそれらの現在の動作状態を表すデータをソフトウェア構造に書き込む。保存状態は、ローカルＡＰＩＣ（先進プログラマブル割り込みコントローラ）状態と、現在のハードウェア仮想化状態のためのデータとを含む。全てのプロセッサは、それらのキャッシュされたデータ、コード、およびメモリマッピング変換を消去する、プログラムを実行する。
ｃ）ＦＰＧＡは、ウォームリセットと称されるハードウェアリセットを生成し、ウォームリセットは、ミラーリングされた実行の状態で、初期命令フェッチと称されるそれらのＢＩＯＳリセットコードを両方のサブシステムに実行させる。ＦＰＧＡは、記憶装置およびネットワークコントローラ等の外部ハードウェアインターフェースデバイスを分離し、それらは、リセットされない。ＢＩＯＳファームウェアは、マルチプロセッサ動作を初期化し、ＳＭＩを生成して、全てのプロセッサをファームウェアＳＭＩハンドラに入らせ、ＳＭＭモードで動作させる。
ｄ）ＳＭＭモードにおける全てのプロセッサは、メインメモリ内の構造から保存状態を読み取り、そのデータを使用して、ウォームリセットの前に存在した現在の動作状態を復元する。１つのプロセッサは、ＦＰＧＡを使用し、ＩＯ  ＤＭＡアクセスおよび割り込み配信を再び有効にし、再開する。ＦＰＧＡは、外部ＩＯインターフェースから同じタイミングで同じデータを受信し続けるように、全てのＩＯ  ＤＭＡトランザクションを両方のサーバサブシステムにルーティングする。全てのプロセッサは、ＳＭＲまたは再開命令を実行し、ＦＴドライバに戻る。システムは、ミラーリングされた実行の状態で実行し続ける。
【００５１】
（ステップ１９−ＦＴドライバが、全てのプロセッサ上でドライバコードを同時に、または並行して実行し、そして、ＦＴＶＭＭにＦＴＶＭＭをアンロードするためのプログラムを全てのプロセッサ上で実行させる）
ＦＴドライバは、ミラーリングされた実行の状態に入るための動作がその実行を完了したことを決定し、ＦＴドライバは、そして、全てのプロセッサにＦＴドライバプログラムコードにおける関数を実行させることによって、それらを同期化する。そして、ＦＴドライバは、ＦＴＶＭＭとの機能インターフェースを使用し、「ＦＴＶＭＭアンロード要求」と称されるコマンドを発行する。機能インターフェースにおけるＶＭＣＡＬＬは、各プロセッサのＶＭＣＳ  Ｌ０のホストフィールドによって決定されるコンテキストにおいて、全プロセッサにＦＴＶＭＭにおいて実行させる。ＦＴＶＭＭは、全てのプロセッサがＦＴＶＭＭに入ることを待ち、そして、ＦＴＶＭＭをアンロードするためのプログラムを実行する。ＦＴＶＭＭは、ハイパーバイザＬ１によって生成され、ＦＴＶＭＭによって監視されたこれらの論理フィールドの直近の値を用いてゲストＬ２の各ＶＭＣＳ−Ｎのホストフィールドを書き込む。ＦＴＶＭＭは、ＦＴＶＭＭがその処理を完了したとき、続いて、ハイパーバイザＬ１およびゲストＬ２が通常ハイパーバイザ動作および通常ゲスト動作で動作することを可能にする他の動作を実施する。ＦＴＶＭＭは、ＶＭＣＬＥＡＲ、ＶＭＰＴＲＬＤ、ＶＭＷＲＩＴＥ、および他の命令等のプロセッサ命令を実施し、ＦＴドライバが通常動作で実行されることを可能にする。ＦＴＶＭＭは、ＶＭＬＡＵＮＣＨ命令を各プロセッサ上で実施し、ＶＭＬＡＵＮＣＨ命令は、プロセッサにＦＴＶＭＭ内で実行を終了させ、ＦＴドライバ内で実行を再開させる。ＦＴドライバは、ＦＴＶＭＭがＶＭＬＡＵＮＣＨ命令を実施した後、ＶＭＣＳ  Ｌ０のゲストフィールドを使用して、ゲストとして実行するであろう。
【００５２】
（ステップ２０−ＦＴドライバが、各プロセッサ上でゲストとして実行され、全てのプロセッサ上でハイパーバイザとしてＦＴドライバへのＶＭＥＸＩＴを引き起こす）
各プロセッサは、プロセッサのＶＭＣＳ  Ｌ０のゲストフィールドによって制御される様式で、ＦＴドライバにおいてドライバプログラムコードを実行する。各プロセッサは、ＶＭＥＸＩＴイベントを発生させる命令を実行する。各プロセッサは、ＶＭＣＳ  Ｌ０のホストフィールドによって制御される様式で、ＦＴドライバにおいて同じドライバプログラムコードを実行し続ける。
【００５３】
（ステップ２１−ＦＴドライバが、現在アクティブなＬ２ゲストが通常ゲスト動作で動作することを可能にするためのプロセッサ命令を実行する）
各プロセッサは、命令のオペランドとして、そのプロセッサのための現在アクティブなゲストＬ２のＶＭＣＳ−Ｎを用いてＶＭＰＴＲＬＤ等の命令を実施し、存在する場合、ゲストＬ２のための後続の通常ゲスト動作を有効にする。各プロセッサは、プロセッサレジスタ設定およびコンテンツの組（汎用プロセッサレジスタ、プロセッサセレクタレジスタ、Ｉｎｔｅｌ  ＶＭＸＯＦＦまたはＶＭＸＯＮ等の他のハードウェア仮想化状態、およびプロセッサ状態ならびにコンテキストの他の要素等）を書き込む、または生成するための一連の命令を実施し、ＦＴドライバおよびシステムに存在する他のソフトウェアの後続の通常動作を有効にする。
【００５４】
（ステップ２２−ＦＴドライバおよびＦＴ管理層がミラーリングされた実行のための要求を完了する）
ＦＴドライバは、ＦＴサーバが、サーバおよびそのゲスト仮想マシンのために構成される作業負荷を処理し続け得るように、全てのプロセッサ上でその実行を完了する。ＦＴサーバ動作のこの段階は、図２Ｃに描写される。ＦＴドライバは、それがＦＴ管理層から受信した機能要求を完了し、要求に関する完了ステータスを返す。ＦＴ管理層は、その要求の完了を取り扱い、イベントログバッファまたは他のロギング機構においてメッセージを生成し、ＦＴサーバがミラーリングされた実行の高信頼性状態に入ったことを示し得る。
【００５５】
以下の議論から明白であるように別様に具体的に記述されない限り、説明の全体を通して、「処理する」、または「算出する」、または「計算する」、または「遅延させる」、または「比較する」、「生成する」、または「決定する」、または「転送する」、または「延期する」、「完遂する」、または「中断する」、または「取り扱う」、または「受信する」、または「バッファする」、または「配分する」、または「表示する」、または「フラグを付ける」、もしくはブール論理または他の設定された関連動作等の用語を利用する議論は、コンピュータシステムまたは電子デバイスのレジスタおよびメモリ内の物理的（電子）数量として表されるデータを操作し、電子メモリまたはレジスタ、もしくは他のそのような情報記憶、伝送、または表示デバイス内の物理的数量として同様に表される他のデータに変換するコンピュータシステムまたは電子デバイスのアクションおよびプロセスを指すことを理解されたい。
【００５６】
本明細書で提示されるアルゴリズムは、本質的には、いかなる特定のコンピュータまたは他の装置にも関連しない。種々の汎用システムが、本明細書の教示によるプログラムと併用され得る、または要求される方法ステップを実施するためにより特殊な装置を構築することが便利であることが証明され得る。種々のこれらのシステムのための要求される構造は、上記の説明から明白である。加えて、本発明は、任意の特定のプログラミング言語を参照して説明されず、種々の実施形態は、したがって、種々のプログラミング言語を使用して実装され得る。
【００５７】
いくつかの実装が説明されている。それでもなお、本開示の精神および範囲から逸脱することなく、種々の修正が行われ得ることを理解されたい。例えば、ステップが並べ替えられる、追加される、または除去される、上で示されるフローの種々の形態が、使用され得る。故に、他の実装も、以下の請求項の範囲内である。
【００５８】
本明細書で提示される実施例は、本開示の潜在的かつ具体的実装を図示することを意図している。実施例は、主に、当業者のための本発明の例証の目的のために意図されている。実施例のいかなる１つまたは複数の特定の側面も、必ずしも本発明の範囲を限定することを意図しているわけではない。
【００５９】
本発明の図および説明は、明確にする目的のために、他の要素を排除する一方で、本発明の明確な理解のために関連性がある要素を例証するように、単純化されている。しかしながら、当業者は、これらの種類の集中的な議論が、本開示のさらなる理解を促進せず、したがって、そのような要素のより詳細な説明が、本明細書で提供されないことを認識し得る。
【００６０】
本実施形態に関連付けられるプロセスは、コンピュータ等のプログラマブル機器によって実行され得る。プログラマブル機器にプロセスを実行させるために採用され得るソフトウェアまたは命令の他の組は、例えば、コンピュータシステム（不揮発性）メモリ、光ディスク、磁気テープ、または磁気ディスク等の任意の記憶デバイスの中に記憶され得る。さらに、プロセスのうちのいくつかは、コンピュータシステムが製造されるとき、またはコンピュータ読み取り可能なメモリ媒体を介して、プログラムされ得る。
【００６１】
本明細書に説明されるあるプロセス側面がプロセスステップを実施するようにコンピュータまたはコンピュータシステムに指図する１つまたは複数のコンピュータ読み取り可能なメモリ媒体上に記憶された命令を使用して、実施され得ることも理解されたい。コンピュータ読み取り可能な媒体は、例えば、ディスケット、読み取り専用および読み取り／書き込み種類の両方のコンパクトディスク、光ディスクドライブ、ならびにハードディスクドライブ等のメモリデバイスを含み得る。コンピュータ読み取り可能な媒体は、物理的、仮想、恒久的、一時的、半恒久的、および／または半一時的であり得るメモリ記憶装置も含み得る。
【００６２】
本明細書に開示されるコンピュータシステムおよびコンピュータベースのデバイスは、情報を取得、処理、および通信することにおいて使用されるあるソフトウェアアプリケーションを記憶するためのメモリを含み得る。そのようなメモリは、開示される実施形態の動作に関して内部または外部にあり得ることを理解されたい。メモリは、ハードディスク、光ディスク、フロッピー（登録商標）ディスク、ＲＯＭ（読み取り専用メモリ）、ＲＡＭ（ランダムアクセスメモリ）、ＰＲＯＭ（プログラマブルＲＯＭ）、ＥＥＰＲＯＭ（電気的消去可能ＰＲＯＭ）、および／または他のコンピュータ読み取り可能なメモリ媒体を含むソフトウェアを記憶するための任意の手段も含み得る。種々の実施形態では、「ホスト」、「エンジン」、「ローダ」、「フィルタ」、「プラットフォーム」、または「コンポーネント」は、種々のコンピュータまたはコンピュータシステムを含み得るか、もしくはソフトウェア、ファームウェア、および／またはハードウェアの合理的な組み合わせを含み得る。
【００６３】
本開示の種々の実施形態では、１つまたは複数の所与の機能を果たすために、単一のコンポーネントが、複数のコンポーネントによって置換され得、複数のコンポーネントが、単一のコンポーネントによって置換され得る。そのような置換が本開示の実施形態を実践するように機能しないであろう場合を除いて、そのような置換は、本開示の範囲内である。サーバのうちのいずれかは、例えば、協調的機能のために位置し、構成される「サーバファーム」またはネットワーク化されたサーバの他のグループ（例えば、サーバブレードのグループ）によって置換され得る。サーバファームは、ファームの個々のコンポーネントの間で作業負荷を分散させる役割を果たし得、複数のサーバの集合的かつ協調的能力を利用することによって、算出プロセスを促進し得ることを理解されたい。そのようなサーバファームは、例えば、異なるマシンからの処理能力の需要を追跡すること、ネットワーク需要に基づいてタスクを優先し、スケジュールすること、および／またはコンポーネント故障もしくは動作可能性の低減の場合にバックアップ随伴性を提供すること等のタスクを遂行する負荷分散ソフトウェアを採用し得る。
【００６４】
一般に、本明細書に説明される種々の実施形態、またはそれらのコンポーネントもしくは部品は、ソフトウェア、ファームウェア、および／またはハードウェア、もしくはそれらのモジュールの多くの異なる実施形態で実装され得ることが、当業者に明白であり得る。本実施形態のうちのいくつかを実装するために使用される、ソフトウェアコードまたは特殊制御ハードウェアは、本開示の限定ではない。コンピュータソフトウェアおよび他のコンピュータ実装命令のためのプログラミング言語は、実行前にコンパイラまたはアセンブラによって機械言語に変換され得る、および／またはインタープリタによって実行時に直接変換され得る。
【００６５】
アセンブリ言語の実施例は、ＡＲＭ、ＭＩＰＳ、およびｘ８６を含み、高レベル言語の実施例は、Ａｄａ、ＢＡＳＩＣ、Ｃ、Ｃ＋＋、Ｃ＃、ＣＯＢＯＬ、Ｆｏｒｔｒａｎ、Ｊａｖａ（登録商標）、Ｌｉｓｐ、Ｐａｓｃａｌ、Ｏｂｊｅｃｔ  Ｐａｓｃａｌを含み、スクリプト言語の実施例は、Ｂｏｕｒｎｅスクリプト、Ｊａｖａ（登録商標）Ｓｃｒｉｐｔ、Ｐｙｔｈｏｎ、Ｒｕｂｙ、ＰＨＰ、およびＰｅｒｌを含む。種々の実施形態は、例えば、Ｌｏｔｕｓ  Ｎｏｔｅｓ環境で採用され得る。そのようなソフトウェアは、例えば、磁気または光学記憶媒体等の任意のタイプの１つまたは複数の好適なコンピュータ読み取り可能な媒体上に記憶され得る。したがって、実施形態の動作および挙動は、実際のソフトウェアコードまたは特殊ハードウェアコンポーネントを具体的に参照することなく説明される。当業者は、合理的な努力のみを用いて、必要以上の実験を伴わずに、本明細書の説明に基づいて本開示の実施形態を実装するように、ソフトウェアおよび制御ハードウェアを設計することが可能であろうことが、明確に理解されるため、そのような具体的参照の欠如は、実現可能である。
【００６６】
本明細書に説明されるシステムおよび方法の種々の実施形態は、１つ以上の電子コンピュータネットワークを採用し、異なるコンポーネントの間の通信を助長する、データを転送する、またはリソースおよび情報を共有し得る。そのようなコンピュータネットワークは、ネットワーク内のデバイスを相互接続するために使用される、ハードウェアおよびソフトウェア技術に従って、分離されることができる。
【００６７】
コンピュータネットワークは、アクティブネットワーキング、クライアント・サーバ、またはピアツーピア機能アーキテクチャ等のネットワークの要素またはコンポーネントの間の機能的関係に基づいて、特徴付けられ得る。コンピュータネットワークは、例えば、バスネットワーク、スターネットワーク、リングネットワーク、メッシュネットワーク、スターバスネットワーク、または階層トポロジネットワーク等のネットワークトポロジに従って、分類され得る。コンピュータネットワークはまた、デジタルおよびアナログネットワーク等のデータ通信に採用される方法に基づいて、分類され得る。
【００６８】
本明細書に説明される方法、システム、およびツールの実施形態は、共通ルーティング技術を通して、２つ以上の明確に異なる電子コンピュータネットワークもしくはネットワークセグメントを接続するためのインターネットワーキングを採用し得る。採用されるインターネットワークのタイプは、インターネットワーク内の管理および／または関与に依存し得る。インターネットワークの非限定的例は、イントラネット、エクストラネット、およびインターネットを含む。イントラネットおよびエクストラネットは、インターネットへの接続を有することも、有しないこともある。インターネットに接続された場合、イントラネットまたはエクストラネットは、適切な認証技術または他のセキュリティ対策を用いて保護され得る。本明細書で適用されるように、イントラネットは、管理エンティティによる共通制御下で、インターネットプロトコル、ウェブブラウザ、および／またはファイル転送アプリケーションを採用するネットワークのグループであり得る。そのような管理エンティティは、イントラネットへのアクセスを例えば、認可ユーザのみ、または団体もしくは商業エンティティの別の内部ネットワークに制限し得る。
【００６９】
別様に示されない限り、本明細書および請求項で使用される、長さ、幅、深度、または他の寸法等を表す全ての数字は、示されるような正確な値および用語「約」によって修正されるものの両方を示すものとして、全ての事例で理解されるものである。本明細書で使用されるように、用語「約」は、公称値からの±１０％変動を指す。故に、そうではないと示されない限り、本明細書および添付の請求項に記載される数値パラメータは、取得されることが求められる所望の性質に応じて変動し得る近似値である。少なくとも、原則の適用を請求項の範囲の均等物に限定しようとする指向ではないが、各数値パラメータは、報告される有効桁数を踏まえて、通常の丸め技法を適用することによって、解釈されるべきである。任意の具体的値は、２０％だけ変動し得る。
【００７０】
本発明は、その精神または本質的特性から逸脱することなく、他の具体的形態で具現化され得る。前述の実施形態は、したがって、あらゆる点に関して本明細書に説明される発明では限定的ではなく例証的と見なされるものである。本発明の範囲は、したがって、前述の説明によってではなく添付の請求項によって示され、請求項の均等性の意味および範囲に入る全ての変更は、その中に包含されることを意図している。
【００７１】
種々の修正および変更が、説明される技術の範囲から逸脱することなく行われ得ることが、当業者によって理解されるであろう。そのような修正および変更は、説明される実施形態の範囲内に入ることを意図している。一実施形態に含まれる特徴が他の実施形態と交換可能であり、描写される実施形態からの１つ以上の特徴が任意の組み合わせで他の描写される実施形態とともに含まれ得ることも、当業者によって理解されるであろう。例えば、本明細書に説明される、および／または図に描写される種々のコンポーネントのうちのいくつかは、組み合わせられ、交換され、または他の実施形態から除外され得る。
【図１】
2020526843.tif 000003
【図２Ａ】
2020526843.tif 000004
【図２Ｂ】
2020526843.tif 000005
【図２Ｃ】
2020526843.tif 000006
【図３Ａ】
2020526843.tif 000007
【図３Ｂ】
2020526843.tif 000008
【図３Ｃ】
2020526843.tif 000009
【図３Ｄ】
2020526843.tif 000010
【図３Ｅ】
2020526843.tif 000011
【図３Ｆ】
2020526843.tif 000012
【図３Ｇ】
2020526843.tif 000013
【図３Ｈ】
2020526843.tif 000014
【図３Ｉ】
2020526843.tif 000015
【図３Ｊ】
2020526843.tif 000016
【図３Ｋ】
2020526843.tif 000017
【図３Ｌ】
2020526843.tif 000018
【図３Ｍ】
2020526843.tif 000019
【図３Ｎ】
2020526843.tif 000020
【図３Ｏ】
2020526843.tif 000021
【図３Ｐ】
2020526843.tif 000022
【図３Ｑ】
2020526843.tif 000023
【図３Ｒ】
2020526843.tif 000024
【図３Ｓ】
2020526843.tif 000025
【図３Ｔ】
2020526843.tif 000026
【図３Ｕ】
2020526843.tif 000027
【図３Ｖ】
2020526843.tif 000028
【図３Ｗ】
2020526843.tif 000029
【図３Ｘ】
2020526843.tif 000030
【国際調査報告】
2020526843.tif 000031
2020526843.tif 000032