(57)【特許請求の範囲】
【請求項１】
アクティブ処理システムがリンクを介してスタンバイ処理システムへ接続する複製処理システム（１００）であって、前記アクティブ処理システムは、少なくとも１つのメモリ領域と前記少なくとも１つのメモリ領域にアクセスするアプリケーション・プロセスとを備えるメモリ（１０８）、プロセッサ（１１２）、比較器（１２６）、及び複製システム（１２８）を含み、前記スタンバイ処理システムは、少なくとも１つのメモリを含む、複製処理システムにおける複製方法であり、
（ａ）前記複製システムが、前記アクティブ処理システムの少なくとも１つのメモリ領域及び前記スタンバイ処理システムの少なくとも１つのメモリ領域をリフレッシュするステップ、
（ｂ）前記複製システムが、前記アクティブ処理システムの少なくとも１つのメモリ領域を、読み取り専用であるロック状態に設定するステップ、
（ｃ）前記プロセッサが、前記ロック状態に設定されたアクティブ処理システムの少なくとも１つのメモリ領域への書き込みの試行に応答して、書き込み障害が発生したという通知を、前記複製システムへ送信するステップ、
（ｄ）前記複製システムが、前記プロセッサからの通知に応じて、前記プロセッサにより書き込みの試行が行われたアクティブ処理システムの少なくとも１つのメモリ領域の前記ロック状態を、書き込み可能であるアンロック状態に変更するステップ、そして、
（ｅ）前記比較器が、前記アクティブ処理システムの少なくとも１つのメモリ領域の情報に変更が発生した場合に、前記変更された情報の少なくとも一部を前記スタンバイ処理システムへ提供するステップ、を備える複製方法。
【請求項２】
前記アクティブ処理システムの少なくとも１つのメモリ領域は、複数のメモリ領域を備えており、それらメモリ領域の各々は一意のメモリ識別子を備えており、
（ｆ）前記複製システムが、前記アンロック状態に変更されたメモリ領域の各々のメモリ識別子を指定するステップをさらに備える請求項１に記載の方法。
【請求項３】
前記アクティブ処理システムの少なくとも１つのメモリ領域は複数のメモリ領域を備えており、
（ｇ）前記複製システムが、前記ステップ（ｃ）の後に、前記アンロック状態にある前記複数のメモリ領域の各々を、前記ロック状態にリセットするステップと、
前記ステップ（ａ）〜（ｅ）を繰り返すステップとをさらに備える請求項１に記載の方法。
【請求項４】
（ｈ）前記複製システムは、前記アプリケーション・プロセスにより書き込まれたメモリ領域のセットと、前記セット内の各メモリ領域の少なくとも１つの属性を識別するステップと、
（ｉ）前記複製システムは、前記通知が受信された場合に、前記障害がアクセス許可違反によるものかどうか、および前記属性が識別されたメモリ領域が、前記メモリ領域のセット内にあるかどうかを確認するステップと、
（ｊ）前記複製システムは、前記障害がアクセス許可違反によらず、前記少なくとも１つの領域が前記メモリ領域セットのメンバーである場合に、前記少なくとも１つのメモリ領域に対して、前記ステップ（ｄ）〜（ｅ）を実行するステップと、
（ｋ）前記複製システムは、前記障害がアクセス許可違反によるものであるか、または前記少なくとも１つの領域が前記メモリ領域のセットのメンバーでない場合に、前記書き込み障害に対して、前記ステップ（ｄ）〜（ｅ）を実行しないステップとをさらに備える請求項１に記載の方法。
【請求項５】
前記アクティブ処理システムにより前記請求項１に記載のステップを実行するためのプロセッサ実行可能命令を格納するコンピュータ可読媒体。
【請求項６】
（ａ）（i）プロセッサと、（ii）少なくとも１つのメモリ領域と前記少なくとも１つのメモリ領域にアクセスするアプリケーション・プロセスとを備えるメモリ手段と、（iii）複製手段と、（iv）比較器とを備えるアクティブ処理システム、及び、
（ｂ）少なくとも１つのメモリを備え、前記アクティブ処理システムが動作不良の場合に前記アクティブ処理システムの機能を実行できるスタンバイ処理システムを含む複製処理システムであって、
前記アクティブ処理システムは、リンクを介して前記スタンバイ処理システムに接続され、
前記複製手段は、前記アクティブ処理システムの少なくとも１つのメモリ領域を、読み取り専用であるロック状態に設定し、
前記複製手段は、前記ロック状態に設定されたアクティブ処理システムの少なくとも１つのメモリ領域への書き込みの試行に応答して、前記プロセッサから、書き込み障害が発生したという通知を受信し、
前記複製手段は、前記プロセッサからの通知に応じて、前記プロセッサにより書き込みの試行が行われたアクティブ処理システムの少なくとも１つのメモリ領域の前記ロック状態を、書き込み可能であるアンロック状態に変更し、
前記比較器は、前記アクティブ処理システムの少なくとも１つのメモリ領域の情報に変更が発生した場合に、前記変更された情報の少なくとも一部を前記スタンバイ処理システムへ提供する、ことを特徴とする複製処理システム。
【請求項７】
前記アクティブ処理システムの少なくとも１つのメモリ領域は複数のメモリ領域を備えており、それら複数のメモリ領域の各々は一意のメモリ識別子を備えており、前記複製手段は、前記アンロック状態に変更されたメモリ領域の各々のメモリ識別子を指定する請求項６に記載の複製処理システム。
【請求項８】
前記アクティブ処理システムの少なくとも１つのメモリ領域は複数のメモリ領域を備えており、前記複製手段は、前記スタンバイ処理システムに前記変更された情報の少なくとも一部が提供された後に、前記アンロック状態にある前記各メモリ領域を前記ロック状態にリセットし、請求項６に記載の動作を繰り返す請求項６に記載の複製処理システム。
【請求項９】
前記複製手段は、さらに、
前記アプリケーション・プロセスにより書き込まれたメモリ領域のセットと、前記セット内の各メモリ領域の少なくとも１つの属性とを識別し、
前記通知が受信された場合に、前記障害がアクセス許可違反によるものかどうか、および前記属性が識別されたメモリ領域が、前記メモリ領域のセット内にあるかどうかを確認し、
前記障害がアクセス許可違反によらず、前記属性が識別されたメモリ領域が前記メモリ領域のセットのメンバーである場合に、前記属性が識別されたメモリ領域の前記ロック状態を前記アンロック状態に変更し、
前記障害がアクセス許可違反によるものであるか、または前記属性が識別されたメモリ領域が前記メモリ領域セットのメンバーでない場合に、前記書き込み障害に対して、前記属性が識別されたメモリ領域の前記ロック状態を前記アンロック状態に変更しない、ことを特徴とする請求項６に記載の複製処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に複製高信頼性処理システム（ｒｅｐｌｉｃａｔｅｄ  ｈｉｇｈ−ｒｅｌｉａｂｉｌｉｔｙ  ｐｒｏｃｅｓｓｉｎｇ  ｓｙｓｔｅｍｓ）に関し、より詳細には複製メモリ・システム（ｄｕｐｌｉｃａｔｅｄ−ｍｅｍｏｒｙ  ｓｙｓｔｅｍｓ）に関する。
【背景技術】
【０００２】
本出願は、参照により本明細書に組み込まれている、２００６年２月１日にＲｈｏｄｅｓ等によって出願された同名の米国仮出願第６０／７６４，７１８号の優先権を主張する。
【０００３】
高信頼性処理システムでは、多くの場合、システム内でプロセッサが単一障害点（ＳＰＯＦ：Ｓｉｎｇｌｅ  Ｐｏｉｎｔ  ｏｆ  Ｆａｉｌｕｒｅ）にならないように、プロセッサ（プロセッサ・メモリを含む）の複製が必要である。通常、１台のプロセッサはアクティブでシステムを実行し、もう１台のプロセッサは「スタンバイ」モードに維持され、アクティブ・プロセッサで実行されるメモリ書き込みトランザクションのコピーで継続的に更新される（この更新プロセスは「シャドウイング」と呼ばれる）。アクティブ・プロセッサに障害が発生すると、システムはスタンバイ・プロセッサに切り替わり、スタンバイ・プロセッサは障害が発生した時点でのアクティブ・プロセッサの状態を把握しているため、システムが処理するタスクは実質的に障害なく継続される。
【０００４】
アクティブ・プロセッサに障害が発生したときにスタンバイ・プロセッサがシステムの操作を続行するために実際に必要なのは一部のデータにすぎない場合でも、一般的に使用されるシャドウイングの方法ではアクティブ・プロセッサからスタンバイ・プロセッサのメモリにすべてのデータをコピーする。高性能処理システムでは、こうしたシャドウイングの方法が重大なボトルネックになってきている。この方法では、通常、アクティブ・プロセッサからスタンバイ・プロセッサへのデータ転送はアクティブ・プロセッサでの正規のメモリ書き込み操作に比べて時間がかかるので、システム全体のパフォーマンスが低下する。
【０００５】
シャドウイングの１つの方法として、「ハードウェア支援（ｈａｒｄｗａｒｅ−ａｓｓｉｓｔｅｄ）複製」または「ハードウェア複製」と呼ばれるものがある。ハードウェア複製では、プライマリ・プロセッサとスタンバイ・プロセッサとの間で行われる複製操作をハードウェアで制御する。アプリケーション・プロセス自体は共有メモリにのみアクセスする。複製マネージャは、メモリを入力／出力空間にマップし、ハードウェアはシャドウイングされた情報のスタンバイ・プロセッサへの送信を処理する。ハードウェア複製はソフトウェア・プロセスへの影響を最小限に抑え、システムのパフォーマンス・レベルを向上し、ソフトウェア開発コストへの影響を最小限に抑えることはできるが、多くの場合、カスタム・ハードウェア・ボードが必要であり、ハードウェア開発とハードウェア互換性の維持にコストがかかり、メモリから入力／出力バスへのマッピングによる経験的な制約が必要である。
【０００６】
もう１つ知られているシャドウイングの方法として、「トランザクションベースの（ｔｒａｎｓａｃｔｉｏｎ−ｂａｓｅｄ）複製」または「ソフトウェア複製」と呼ばれるものがある。ソフトウェア複製では、アクティブ・プロセッサは自らがどの機能を実行しているかについての情報をスタンバイ・プロセッサに送信し、スタンバイ・プロセッサはこうした機能を複製し、このプロセスで自らのメモリの状態をアクティブ・プロセッサの状態に更新する。ハードウェアの影響は非常に小さく、サーバーに依存しないが、アクティブ・プロセッサからスタンバイ・プロセッサへのトランザクション・チャネルが必要である以外に、この方法の複雑性はソフトウェアにある。この複雑性の原因は、アプリケーションのすべてのコードが複製機能を実行できる必要があり、複製機能をアクティブに管理する必要があることである。ソフトウェア複製では、複製処理のすべての側面を実行するために、大規模な中央処理装置すなわちＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）リソースを必要とする可能性がある。
【特許文献１】米国仮出願第６０／７６４，７１８号
【発明の開示】
【発明が解決しようとする課題】
【０００７】
先行技術に欠けているのは、選択された期間にアクティブ処理システム内のシャドウイングされるアプリケーション・プロセスによってメモリのどの部分が変更されたかを動的に追跡できるシャドウイング方法である。
【課題を解決するための手段】
【０００８】
以上およびその他のニーズは、本発明の多様な実施形態および構成によって対処される。本発明は、一般に、選択または指定された複数のメモリ領域（たとえば、ロケーションまたはページなどのブロック）の状態を制御することによって、シャドウイングされるアプリケーション・プロセスによる書き込み操作を追跡する方法を目的とする。言うまでもないが、「ページ」は選択されたサイズのメモリのセグメントを表しており、通常はホスト・プロセッサのアトミック・サイズ（ａｔｏｍｉｃ  ｓｉｚｅ）と同じである。ページのサイズは一般的には４，０００バイト前後である。通常、マイクロプロセッサはメモリ・セグメントを個別に管理しており、必要に応じて（要求あり次第）コードとデータのページを物理メモリにスワップすることによって、より大きなメモリ資源（ｅｎｄｏｗｍｅｎｔ）をシミュレートする。
【０００９】
１つの構成では、アプリケーション・プロセスに対応する（またはアプリケーション・プロセスで使用する）すべてのページの状態が「ロック（ｌｏｃｋｅｄ）」（たとえば読み取り専用の状態）に初期設定される。アプリケーション・プロセスがロックされたページの１つに書き込もうとすると、プロセッサは書き込み障害を検出する。こうした障害を使用して、プライマリ処理システムとバックアップ処理システムとの最新の同期以降に変更されたメモリ領域を識別し、追跡する。障害に応答して、その特定のメモリ・ページの状態が「アンロック（ｕｎｌｏｃｋｅｄ）」の状態（たとえば読み出し／書き込みの状態）に変更される。これで、アプリケーション・プロセスは特定のメモリ・ページにデータを書き込むことができるようになる。こうしたプロセスは、アプリケーション・プロセスが情報を処理するメモリ・ページごとに繰り返される。
【００１０】
選択された間隔で、書き込まれたメモリ・ページまたは変更されたメモリ・ページの情報が収集され、バックアップ処理システムに転送される。さらにバックアップ処理システムは自らのメモリ内の該当するロケーションにこうした変更を複製する。言うまでもないが、スタンバイ処理システムのメモリ内の各ロケーションには、プライマリ処理システムの対応するメモリ領域内ですでに変更された情報のミラー・イメージが含まれる。依然として「ロック」された状態にあるメモリ領域は、２つの処理システム間で最新のデータ同期以降変更されていないので、通常、バックアップ処理システムへのシャドウイングは行われない。
【００１１】
この構成では、本発明は通常はメモリ保護領域の設定に使用されるプロセッサの特性を使用して、メモリ領域を第１の状態（たとえば読み取り専用）に設定し、そのメモリ領域を変更しようとした場合にプロセッサからシャドウイング・ロジックに通知させる。プロセッサの通知は、メモリ領域をスタンバイ処理システムにシャドウイングまたは複製するためのトリガである。換言すれば、本発明は選択されたメモリ領域への変更を阻止することによって、逆のことをする、つまりメモリ領域の変更について通知を受信してその変更を許可するための完全なメカニズムを使用する。したがって、このシャドウイング・メカニズムはプロセッサに組み込まれたメモリ管理機能を使用してアクティブ処理システムによる書き込みを検出し、複製するサポートだけでなく、アプリケーションの操作に対して透過的である。
【００１２】
本発明はソフトウェア複製の形式であり、複製プロセッサ環境においてアクティブ・プロセッサから１つまたは複数のスタンバイ・プロセッサにプロセッサ・データを転送し、どのデータを転送し、どのデータを転送しないかを管理できるようにするための新しい方法を提供できる。これで、メモリのどの領域がシャドウイングされるかについての指定を動的に変更できるようにし、シャドウイングを実行するのに必要な帯域幅を縮小することによって、スタンバイ・プロセッサに転送する必要のあるシステムの書き込みの回数全体を削減できるので、したがって直ちにアクティブ・プロセッサのパフォーマンス向上が見られる。処理システムのトランザクションが小規模な（たとえば１ワードの）ハードウェア支援の複製とは異なり、ソフトウェア複製のページ・サイズは不適切なコーディング方法や大規模なデータ操作によってより大きな影響を受けやすい。このメカニズムでは、メモリ領域への書き込みの頻度も確認できるので、シャドウイングされるアプリケーション・プロセスのコードに埋め込まれたコード・ポイントまたは「フック」でソフトウェア複製のパフォーマンスに悪影響を及ぼすもの（一部またはすべて）を削除することもできる。
【００１３】
このメカニズムによって、シャドウイングの動的な制御が可能になる。シャドウイングを動的に制御することによって、さらにシステムはたとえば「ソフト」スイッチのような機能をサポートできるようになる。ソフト・スイッチはアクティブ・プロセッサとスタンバイ・プロセッサが同等のメモリ・イメージを備える場合に機能し、アクティブ・プロセッサが新しいアクティブ・プロセッサ（以前のスタンバイ・プロセッサ）に制御を引き渡した後、スタンバイ・プロセッサは直ちに命令の実行を開始する。これで、１台のプロセッサからもう１台のプロセッサにシステムの制御をシームレスに転送できるようになる。
【００１４】
１つのエンティティ（たとえばプログラム）にメモリ領域が割り当てられると（たとえばアクティブ・プロセッサのオペレーティング・システムによって）、このエンティティに割り当てられたメモリ領域がシャドウイングされるかどうかの決定が可能になる。この決定により、メモリ領域はロックの状態（シャドウイングされる場合）またはアンロックの状態（シャドウイングされない場合）に初期設定される。
【００１５】
本発明では、複製システム（メモリ領域の状態を制御する）以外のすべてのソフトウェアはシャドウイングがどのように実行されるかについて知っている必要はない。したがって、本発明はアクティブ・プロセッサに関するリアルタイムの要件を緩和できる。それ以外の場合、アクティブ・プロセッサは複製を必要とするすべての機能に関するトランザクションベースの複製メッセージを生成する必要がある。さらに、本発明ではメモリのどの領域がシャドウイングされ、どの領域がシャドウイングされないかをメモリ領域の状態によって把握しているので、シャドウイングに関する判断はアプリケーション・プロセス開発者には「非公開」である。したがって、アプリケーション・プロセスのコードを記述する上で複製トランザクションを実行でき、これを正しく操作できるようにする必要がないので、システム・コードの開発が軽減され、市場に出るまでの時間を短縮できる。さらに、メモリ領域の状態を使用してシャドウイングに関する判断を行う操作は、アプリケーション・プロセスのコードを実行することによってトランザクションベースのデータ複製メッセージを生成し、操作する必要がないので、リアルタイムの節減が可能になる。
【００１６】
本発明は、アクティブまたはプライマリ処理システムとスタンバイ処理システムとの間で複製情報の送信を実行するために、エンドツーエンドの伝送制御プロトコル、すなわちＴＣＰ（Ｔｒａｎｓｐｏｒｔ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）接続を使用できる。この種の接続は、経路指定可能（ｒｏｕｔａｂｌｅ）、反復可能、かつ遠隔処理可能（ｒｅｍｏｔｅａｂｌｅ）な標準を提供できる。この接続では、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）など、ＴＣＰ／ＩＰプロトコル・スイートと互換可能なさまざまな暗号化プロトコルを使用することによって、さらにセキュリティを提供できる。
以上およびその他の利点は、本明細書に記載する本発明の開示から明らかになるであろう。
【００１７】
本明細書で使用する限り、「少なくとも１つ」、「１つまたは複数」、および「および／または」は、操作において連言的（ｃｏｎｊｕｎｃｔｉｖｅ）かつ選言的（ｄｉｓｊｕｎｃｔｉｖｅ）な制限のない（ｏｐｅｎ−ｅｎｄｅｄ）表現である。たとえば、「Ａ、Ｂ、およびＣの少なくとも１つ」、「Ａ、Ｂ、またはＣの少なくとも１つ」、「Ａ、Ｂ、およびＣの１つまたは複数」、「Ａ、Ｂ、またはＣの１つまたは複数」、および「Ａ、Ｂ、および／またはＣ」の各表現は、Ａのみ、Ｂのみ、Ｃのみ、ＡとＢの組み合わせ、ＡとＣの組み合わせ、ＢとＣの組み合わせ、またはＡとＢとＣの組み合わせのいずれかを意味する。
【００１８】
前述の実施形態と構成は、完全でも網羅的でもない。言うまでもないが、本発明の他の実施形態では、以上で説明したかまたは以下で詳細に説明する１つまたは複数の機能を単独でも組み合わせても利用できる。
【発明を実施するための最良の形態】
【００１９】
図１は、複数の複製リンク１０６ａ−ｍによって接続された第１、第２、第３、、、第ｎの処理システム１０４ａ−ｎを含む複製処理システム１００を示している。システム１００は、通常、アクティブである第１の処理システム１０４ａとスタンバイである第２．．．第ｎの処理システムとを備えるアクティブ−スタンバイ構成で動作する。複数のスタンバイ処理システムが示されているが、特定のアプリケーション・プロセスに依存する番号をもつ唯一のスタンバイ処理システムを配置してもよいことを理解されたい。言うまでもないが、アクティブ処理システムはシステムの処理タスクを実行し、非アクティブ処理システムは現在のアクティブ処理システムに障害が発生した場合にアクティブ処理システムになるようにスタンバイしている。
【００２０】
各処理システム１０４には、メモリ１０８とプロセッサ１１２が含まれる。メモリ１０８は、アドレス指定可能な記憶空間と命令を実行するために使用するその他の内部記憶域を意味する。メモリは、通常は読み取り専用メモリと書き込み可能メモリの組み合わせである。プロセッサ１０８は、命令を解釈して実行する機能ユニットである。プロセッサには、通常、１つまたは複数の命令制御ユニットと１つの演算および論理ユニットが含まれる。プロセッサは、Ｐｅｎｔｉｕｍ（登録商標）ＴＭマイクロプロセッサなどの標準的なマイクロプロセッサであるのが好ましい。
【００２１】
メモリ１０８には、指定された一連の操作をトランザクションの形式で実行するための複数のアプリケーション・プロセス１１６ａ−ｙと、操作の出力を受信し、格納するための対応する複数のプライマリ・メモリ領域セット１２０ａ−ｙと、プログラムの実行を制御し、リソースの割り当て、スケジューリング、入力／出力制御、データ管理などのサービスを提供するオペレーティング・システム１２４と、メモリ領域１２０ａ−ｙの状態を制御し、シャドウイング操作を制御する複製システム１２８と、それぞれのメモリ領域１２０ａ−ｙから情報を受信して格納するセカンダリ・メモリ領域セット１３２ａ−ｙ（プライマリ・メモリ領域セット１２０ａ−ｙを複製し、これに対応する）と、選択された第１の時間におけるプライマリ・メモリ領域セット内の情報と選択された第２の時間（第１の時間より後）におけるプライマリ・メモリ領域セット内の情報とを比較し、情報の相違または変更を確認する比較器（ｃｏｍｐａｒｅｒ）１２６と、比較器１２６から変更された情報を読み出し、この変更された情報を収集して情報のシリアル・ストリームの形にパケット化し、適切なエラー・チェック情報（たとえば巡回冗長検査すなわちＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）など）を含めてパケット化された情報を同時にまたは異なるタイミングで各スタンバイ処理システムに送信するインターフェイス１５０とが含まれる。１つの構成では、メモリには、複製システム１２８のクライアントである各アプリケーション・プロセスに関する情報、複製される各メモリ領域に関する情報、および変更された各メモリ領域内の情報を保持するためのキューのヘッダとシャドウイング・バッファ・エントリを含む共有メモリ空間（セカンダリ・メモリ領域セットの一部であってもよい）が含まれる。セカンダリ・メモリ領域セット１３２ａ−ｙはバッファとして実装でき、プライマリ・メモリ領域セットと１対１に対応する必要はない。
【００２２】
言うまでもないが、ソフトウェア複製には２つの主要な操作、すなわちデータのシャドウイングとリフレッシュが含まれる。リフレッシュは、複製されたすべてのメモリ・ページをアクティブ処理システムからスタンバイ処理システムにコピーすることによって、スタンバイ処理システムのメモリをアクティブ処理システムのメモリに同期させるプロセスである。リフレッシュは、データのシャドウイングが開始される前に実行される。これで、スタンバイ処理システムのすべてのデータはアクティブ処理システムに完全に同期することが保証される。リフレッシュの前には、２つのシステム（アクティブとスタンバイ）は同期しておらず、アクティブ処理システムのすべてのメモリは読み出し書き込みの状態にある。スタンバイ処理システムのすべてのデータは無効と考えられる。１つの構成では、複製されるメモリの各セグメントを読み取り専用の状態として逐次的にマーク付けし、このセグメントのすべてのページをスタンバイ処理システムに強制的に複製することによってリフレッシュが開始される。各セグメントが複製されると、アプリケーションによる書き込みの標準的な検出とスタンバイ処理システムへのデータのシャドウイングが開始される。このように、リフレッシュはアプリケーションがデータを処理している間に開始でき、さらにセグメントごとに逐次的に実行できるので、アクティブ処理システムの処理には影響を及ぼさない。スタンバイ処理システムは、アクティブシステムのメモリのすべてのセグメントがリフレッシュされ、スタンバイ処理システムにシャドウイングされている場合に同期していると考えられる。
【００２３】
データのシャドウイングは、変更が発生したときに新しく変更されたメモリ・ページをスタンバイ処理システムに送信することによって、アクティブ処理システムとスタンバイ処理システムを同期した状態に維持するための継続的に実行されるプロセスである。シャドウイング・モードは、リフレッシュ・モードが実行され、スタンバイ処理システム内のすべてのプライマリ・メモリ領域セットが有効な状態にあると見なされた後に開始される。
【００２４】
図３は、本発明の特定の構成を示している。この構成では、メモリ領域はメモリ・ページに対応する。前述のように、プライマリ・メモリ・ページ・セットはさまざまな状態にある。このように、各メモリ・ページは２つの２進の状態、すなわちロックまたはアンロックのいずれかにある。図３で、メモリ・ページ３００ａ、ｂ、ｄ、ｈ、ｉ、ｌ、およびｎはロック（変更なし）の状態にあり、メモリ・ページ３００ｃ、ｅ、ｆ、ｇ、ｊ、ｋ、ｍ、およびｏはアンロック（変更あり）の状態にある。
【００２５】
この構成では、複製システム１２８で書き込み障害が受信された場合に、書き込み障害が発生したページに「ｄｉｒｔｙ（ダーティー）」としてフラグ付けされる。「ｃｌｅａｎ（クリーン）」ページ（すなわち書き込みコマンドに応答して変更が行われる前のページ）のコピーは複製ファイルまたはセカンダリ・メモリ領域セット１３２に格納されており、「ｃｌｅａｎ」バージョンとしてマーク付けされている。ここで、このページが読み出し可能／書き込み可能としてマーク付けされ、書き込み操作が許可される。トランザクション終了時に、「ｄｉｒｔｙ」としてフラグ付けされたすべてのページが再び読み取り専用としてマーク付けされ、複製ファイルに格納された対応するページの「ｃｌｅａｎ」バージョンと比較される。さらに、相違がスタンバイ処理システムに書き込まれる。言うまでもないが、ｄｉｒｔｙページを処理してスタンバイ処理システムに相違を転送するためのトリガは、トランザクションの終了に限定はされない。他にトリガになり得るものとしては、選択された時間の経過、シャドウイング・バッファおよび／またはセカンダリ・メモリ領域セットの容量による制約、変更されたメモリ領域の数、フック、およびそれらの組み合わせなどがある。
【００２６】
図２は、本発明の１つの実施形態によるデータのシャドウイング・メカニズムの動作を示している。図２の信号は、アプリケーション・プロセスごとにパラレルに送信される。図示された信号がコンポーネント間で交換される前に、プライマリ・メモリ領域セット１２０ａ−ｙ（アプリケーション・プロセスからアクセスされ、スタンバイ処理システムにシャドウイングまたは複製される）はロック（読み取り専用）の状態になる。さらに、アプリケーション・プロセスは複製システム１２８によってクライアントとして登録されて複製共有メモリ領域へのアクセスを許可され、複製システムはアプリケーション・プロセスでコンパイルされた情報を使用して、複製されるメモリ領域（または選択されたアプリケーション・プロセスのそれぞれのプライマリ・メモリ領域セット）と各領域の属性を識別する。言うまでもないが、各アプリケーション・プロセスは通常はトランザクションの開始と終了を定義するコード・ポイントを定義または選択している。
【００２７】
選択されたアプリケーション・プロセスでは、アプリケーション・プロセス１１６が書き込みコマンド２００をメモリのインターフェイスに転送し、選択されたメモリ領域（たとえばメモリ・ページ）に書き込みを行ったときにこのプロセスが開始される。選択されたメモリ領域はロックの状態にあるので、このメモリ領域への書き込みを実行しようとすると、プロセス１１２によって書き込み障害が検出される。たとえば、１つの構成では、障害は読み取り専用の環境でメモリ・ページを書き込もうとする特定のコードを示すセグメンテーション違反信号である。これに応答して、プロセッサ１１２は障害の性質を示す障害メッセージを、影響を受けたメモリ領域を識別するメモリ識別子とともにオペレーティング・システム１２４に送信する（２０４）。メモリ識別子の１つの例はメモリ・アドレスである。次に、オペレーティング・システム１２４は割り込みコマンドをアプリケーション・プロセスに転送し（２０８）、アプリケーション・プロセスは障害の発生と性質を示し、メモリ・ページ（通常はメモリ・アドレス）により識別する複製システム１２８への呼び出しを作成する（２１０）。
これに応答して、複製システム１２８はまず次に示す２つのクエリーの回答を決定する。
（ａ）障害はアクセス許可違反によるものであったか？
（ｂ）影響を受けたメモリ領域はそのアプリケーション・プロセスの複製セグメントのアドレス範囲内にあったか？
（ａ）と（ｂ）のいずれかに対する回答が「いいえ（ｎｏ）」の場合は、障害はロックされたページに書き込もうとしたためではないので、アプリケーション・プロセスの標準的なエラー障害メカニズムが続行される。（ａ）と（ｂ）の両方の回答が「はい（ｙｅｓ）」の場合は、複製システム１２８は、共有メモリ領域内のアプリケーション・プロセスに対応するシャドウイング・バッファ（後の図に示す）に、書き込み障害が発生したメモリ領域のメモリ・アドレスを記録し、読み出しメッセージをメモリのメモリ・インターフェイス（図示せず）に転送し（２１２）、障害が発生したメモリ領域の（変更されていない）内容を読み出す。メモリ・インターフェイスはメモリ領域の内容を複製システム１２８に返し（２１６）、次に複製システムは該当するメモリ領域の内容をセカンダリ・メモリ領域セット１３２ａ−ｙのそれぞれに書き込むようにインターフェイスに命令する（２２４）。
【００２８】
図４は、複製システム１２８が維持するシャドウイング・バッファまたはテーブル４００である。書き込み障害が受信されるたびに、複製システム１２８はメモリ領域識別子（通常は障害が発生したメモリ領域に関連付けられたメモリ・アドレス）とオプションでメモリ領域の属性をリストに追加する。別の構成では、選択されたアプリケーションで使用するすべてのメモリ領域識別子のリストがテーブル４００に格納される。メモリ領域の書き込み障害が受信されるたびに、最新のデータ同期以降にこのメモリ領域が変更されたことを示すインジケータ・フラグが設定される。
【００２９】
図２に戻り、さらに複製システム１２８はオペレーティング・システム１２４に対してこのメモリ領域をアンロックの状態にし、それによってこの領域への書き込みを許可するように命令する（２２８）。オペレーティング・システム１２４は、これに応答してメモリ・インターフェイスに対してメモリ領域の状態を「アンロック」に設定するように命令する（２３２）。これは、現在アンロック（ｄｉｒｔｙ）のページへのさらなる書き込みは、このページの状態が「ロック」に戻されるまで、通常の速度で行われることを意味する。
【００３０】
アプリケーション・プロセスの書き込みコマンドが失敗した後、アプリケーション・プロセスは現在アンロックのメモリ領域への書き込みコマンドを再発行する（２３６）。ここでメモリ領域がアンロックになっているので、アプリケーション・プロセスは所望の情報をメモリ領域に書き込むことができる。
【００３１】
シャドウイングするスタンバイ処理システムとのデータの同期が実行されると、選択された時点まで（または第１のイベントが発生するまで）、選択されたアプリケーション・プロセスの書き込みコマンドごとに前述のステップが繰り返される。選択された時点は、クロックの設定、選択されたパラメータの値（たとえば、変更されたページの数、変更の数など）、利用可能なセカンダリ・メモリの容量などを含む多くのイベントに基づいていてもよい。１つの構成では、アプリケーション・プロセスがトランザクションの終了に至ると、複製システムの機能を呼び出してすべてのｄｉｒｔｙページを処理してプロセスを安定な状態に戻す。この機能は、シャドウイング・バッファに格納されたｄｉｒｔｙページごとにループする。
【００３２】
選択された時点に到達すると、複製システム１２８は、選択されたアプリケーション・プロセスに対して「ｄｏｎｅ（完了）」コマンドを発行して対応するプライマリ・メモリ領域セットへの出力を一時的に中断し（２４０）、オペレーティング・システム１２４に対して対応するプライマリ・メモリ領域セット中のメモリ領域の状態を「ロック」（またはページを「ｃｌｅａｎ」）に設定するように命令し（２４４）、比較器１２６に対して１つまたは複数のセカンダリ・メモリ領域セット１３２の内容またはイメージを読み出し、メモリ領域ごとにイメージを対応するプライマリ・メモリ領域セット１２０のイメージと比較して差分または変更された情報を確認するように命令する（２４８）。ロックの状態にあるメモリ領域は、前回の同期以降変更されていないので、通常は読み出されない。
【００３３】
比較器１２６は、各メモリ・ページから変更された情報のセットをインターフェイス１５０に提供する（２５２）。変更された情報は、通常はメモリ領域の現在のイメージのオフセットと値である。１つの構成では、比較器がメモリ領域を処理するので、セカンダリ・メモリ領域セットに含まれる各メモリ領域の元のイメージは、メモリ領域の現在のイメージによるデータと、元のイメージと変更されたイメージとの間で検出された相違のリストで置き換えられる。別の構成では、セカンダリ・メモリ領域セット内の元の（変更されていない）ページとプライマリ・メモリ領域セット内のｄｉｒｔｙページとの相違の数が選択されたしきい値を超えた場合に、ｄｉｒｔｙページの内容全体がスタンバイ処理システムに送信される。
【００３４】
比較器がセカンダリ・メモリ領域セット内のすべての処理を完了すると、メモリ領域のイメージが移行される（インターフェイス１５０によって維持されるアウトバウンド・キューの末尾に連結される）。アプリケーション・プロセスの新しいセカンダリ・メモリ領域セットが得られ、プロセスは別のトランザクションで継続することができる。インターフェイス１５０は、変更された情報および／または（構成によっては）ｄｉｒｔｙページ自体の内容全体を収集して情報のシリアル・ストリームの形にパケット化し、パケット化された情報を、通常は暗号化された通信として、適切なエラー・チェック情報（たとえば巡回冗長検査すなわちＣＲＣ、ローリング・チェックサム（ｒｏｌｌｉｎｇ  ｃｈｅｃｋｓｕｍ）など）とともに、複製リンク１０６を経由して適切な１つのスタンバイ処理システムまたは複数のスタンバイ処理システムに送信する。スタンバイ処理システムは、変更された情報がスタンバイ処理システムの同じページに適用された後で、このエラー・チェック情報とそのページのエラー・チェック情報とを比較する。このエラー・チェック・メカニズムでエラーが検出された場合（たとえば、このローリング・チェックサムと相違が適用された後スタンバイ処理システムの同じページのローリング・チェックサムとの値が一致しなかった場合）は、メモリ領域またはページの状態は同期しなくなったと考えられる。この場合は、リフレッシュを実行してメモリ領域を同期した状態に戻すことができる。１つの構成では、個々のページの更新がスタンバイ処理システムによって要求され、全体のリフレッシュへのフォール・バックは特定の間隔に多くのエラーが発生した場合にのみ実行される。
【００３５】
これで、プライマリ・メモリ領域セット内のすべてのメモリ領域が最初の状態にリセットされるので、選択されたイベントまたはトリガが発生し、プライマリ・メモリ領域セット内の情報の変更が再びスタンバイ処理システム（１つ以上）に送信されるまで、複製システム１２８はメモリ・ページごとに操作２１６、２２４、および２２８を繰り返す。
【００３６】
代替の実施形態では、複製システム１２８が変更されたメモリ領域のそれぞれについてアドレスを記憶しており、変更された各メモリ領域の内容全体をスタンバイ処理システムに送信する。この実施形態は、複製リンク１０６の使用可能な帯域幅が問題にならない場合に有効である。
【００３７】
スタンバイ処理システムは、ページごとの相違の形かページ全体かにかかわらず、複製情報を受信し、プライマリ・メモリ領域セット内の各ページの現在のイメージを更新し、更新されたイメージを自らのセカンダリ・メモリ領域セットに一時的に格納する。更新され、一時的に格納されたページのすべてがプライマリ処理システムの対応するページに同期することをエラー・チェック・メカニズムで確認した後でのみ、更新されたページがスタンバイ処理システムのプライマリ・メモリ領域セットにコピーされる。このようにスタンバイ処理システムのプライマリ・メモリ領域セットが遅れて更新されることによって、スタンバイ処理システムには任意の時点でそのプライマリ・メモリ領域セット内の有効なイメージのセットが保証される。別の言い方をすれば、そのプライマリ・メモリ領域セット内の情報はそれより前の特定の時点におけるプライマリ処理システムのプライマリ・メモリ領域セット内の情報に正確に一致する。
本発明のさまざまな変形および変更が使用可能である。本発明のいくつかの機能を提供し、その他の機能を提供しないこともできる。
【００３８】
たとえば、１つの代替の実施形態では、本発明は１つのプライマリ処理システムとＮ個のスタンバイ処理システムを使用した処理アーキテクチャだけでなく、Ｎ個のプライマリ処理システムとＭ個のスタンバイ処理システム、またはＮ個のプライマリ処理システムと１つのスタンバイ処理システムを使用したアーキテクチャにも採用されている。
【００３９】
別の代替の実施形態では、本発明は処理システムのパフォーマンスを追跡し、監視するためのパフォーマンス・プロファイリングに使用されている。本発明により、監視システムは監視される処理システムがメモリ内で実行するすべての処理を追跡できる。
【００４０】
更なる代替の実施形態では、プライマリ・メモリ領域セットはこの領域にメモリがロードされたとき第１の状態に設定され、かつ／または処理システムが起動したときにファームウェアによってメモリ領域が第１の状態に設定される。いずれの場合も、複製システム自体はプライマリ・メモリ領域セットの初期状態の設定を制御しない。
【００４１】
更なる代替の実施形態では、プライマリ処理システムが複数のプロセッサを備えている。処理リソースの増大により、スタンバイ処理システム（１つ以上）への更新はより頻繁に送信される可能性がある。各プロセッサは前述の操作のサブセットを実行してもよい。
【００４２】
さらにもう１つの代替実施形態では、特定用途向け集積回路すなわちＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔｓ）、プログラマブル論理アレイなどのハードウェア・デバイスを含むがこれらに限定はされない専用ハードウェアによる実装を同様に構築し、本明細書で説明する方法を実施することもできる。さらに、分散処理またはコンポーネント／オブジェクト分散処理、並行処理、または仮想マシン処理を含むがこれらに限定はされないさらに別のソフトウェアによる実装を構築し、本明細書で説明する方法を実施してもよい。
【００４３】
本発明のソフトウェアによる実装は、オプションで、実体のある（ｔａｎｇｉｂｌｅ）記憶媒体、たとえば、磁気媒体（ディスクやテープなど）、光磁気媒体または光媒体（ディスクなど）、ソリッドステート媒体（メモリカードまたは１つまたは複数の読み取り専用（不揮発性）メモリを備えるその他のパッケージなど）に格納されることも示しておく必要がある。電子メールに添付したデジタル・ファイル、またはその他の独立した情報アーカイブまたはアーカイブのセットは、実体のある記憶媒体と同等の配布媒体と考えられる。したがって、本発明には本発明のソフトウェアによる実装が格納される実体のある記憶媒体または配布媒体、および先行技術で等価物と認識されるもの、および後継の媒体が含まれると考えられる。
【００４４】
本発明の実施態様において実装されるコンポーネントおよび機能について、特定の標準とプロトコルを参照しながら説明するが、本発明はこうした標準およびプロトコルには限定されない。本明細書で言及しない他の同様の標準とプロトコルが存在しており、本発明に含まれると考えられる。さらに、本明細書で言及する標準とプロトコル、および本明細書で言及しない他の同様の標準とプロトコルは、本質的に同じ機能を備えるより高速またはより効果的な等価物に定期的に代えられる場合がある。こうした同じ機能を備える代わりの標準とプロトコルは、本発明に含まれる等価物と考えられる。
【００４５】
本発明には、さまざまな実施形態において、実質的に本明細書で図示し、説明するようなコンポーネント、方法、プロセス、システム、および／または装置が、そのさまざまな実施形態、部分的な組み合わせ、サブセットを含めて含まれる。本開示を理解した後で、本発明を構築し、利用する方法については、当業者には言うまでもない。本発明には、さまざまな実施形態において、たとえばパフォーマンスを向上し、実装が容易でコストを削減するために、本明細書または本発明のさまざまな実施形態において図示および／または説明されていない要素がないデバイスおよびプロセス（前述のデバイスまたはプロセスで使用されているような要素がないものを含む）を提供するステップが含まれる。
【００４６】
本発明に関する以上の説明は、例示と説明を目的として示されている。以上の記述には、本発明を本明細書に開示された１つまたは複数の形態に限定する意図はない。たとえば、前述の「発明を実施するための最良の形態」では、本開示を簡素化するために、１つまたは複数の実施形態において本発明のさまざまな機能が統合されている。この開示された方法は、ここに請求する発明が各請求項に明確に記述された機能より多くの機能を必要とすることを意味すると理解してはならない。むしろ、添付の特許請求の範囲が意味するように、発明の態様は以上に開示された１つの実施形態の全機能より少ない機能にある。したがって、添付の特許請求の範囲は本明細書によって「発明を実施するための最良の形態」に組み込まれており、各請求項は本発明の個別の好ましい実施形態として独立している。
【００４７】
さらに、本発明の説明には１つまたは複数の実施形態と特定の変形および変更が含まれているが、その他の変形および変更、たとえば当業者が本開示を理解した後でその技能と知識の範囲内にあるものも本発明の範囲を逸脱しない。交換可能かつ／または同等である別の構造、機能、範囲、またはステップが本明細書で開示されたかどうかにかかわらず、交換可能かつ／または同等である別の構造、機能、範囲、またはステップを含む別の実施形態を許可される範囲で請求内容に含める権利を取得することを目的としており、特許を取得できる項目を公に提示する意図はない。
【図面の簡単な説明】
【００４８】
【図１】本発明の一実施形態による複製処理システムを示すブロック図である。
【図２】本発明の一実施形態による、論理コンポーネント間で交換されるさまざまな信号を示す信号流れ図である。
【図３】本発明の一実施形態による状態の異なる複数のメモリ領域を示す図である。
【図４】本発明の一実施形態によるメモリ領域セットを示すブロック図である。
【図１】
0004563412.tif 000002
【図２】
0004563412.tif 000003
【図３】
0004563412.tif 000004
【図４】
0004563412.tif 000005