(57)【特許請求の範囲】
【請求項１】
通信システムにおいて第１プロセッサユニット（１２）に付随する第１データベース（１０２）を第２プロセッサユニット（１４）に付随する第２データベース（１０８）に同期させるための同期方法であって、
前記第１プロセッサユニット（１２）が、前記第２データベース（１０２）と関連づけた識別子を記憶するステップと、
前記第２プロセッサユニット（１４）が、前記第２データベース（１０８）を新たに生成あるいは再生成する時に、前記第２データベース（１０８）と関連づけた新たな識別子を発生して前記第２データベース（１０８）の変更ログ（１１０）に記憶するステップと、
前記第１プロセッサユニット（１２）が、前記第２プロセッサユニット（１４）から変更ログ（１１０）を取り出すステップと、
前記第１プロセッサユニット（１２）が、前記取り出された変更ログ（１１０）に記憶されている識別子が前記第１プロセッサユニット（１２）に記憶している識別子と一致しているかを判定するステップと、
前記第１プロセッサユニット（１２）が、前記取り出された変更ログ（１１０）に記憶されている識別子が前記第１プロセッサユニット（１２）に記憶している識別子と一致しない場合は、前記第１及び第２データベース（１０２，１０８）のすべてのエントリを比較する低速同期手順を実行するステップと、
前記第１プロセッサユニット（１２）が、前記取り出された変更ログ（１１０）に記憶されている識別子が前記第１プロセッサユニット（１２）に記憶している識別子と一致している場合は、高速同期手順を実行するステップとを有し、
前記高速同期手順は、
前記第１プロセッサユニット（１２）が、前記第２プロセッサユニット（１４）に付随する、前記第２データベース（１０８）へのエントリをカウントする変更カウンタの現在値を取り出し、前記変更カウンタの現在値を記憶するステップと、
前記第１プロセッサユニット（１２）が、前記第２データベース（１０８）に記憶された、変更ログ（１１０）が示すデータを取り出すステップと、
前記第１プロセッサユニット（１２）が、前記第２データベース（１０８）から取り出した、前記変更ログ（１１０）が示すデータを前記第１データベース（１０２）にエントリすると共に、前記第１データベース（１０２）にエントリされたデータを前記第２データベース（１０８）にエントリする同期手順を実行するステップと、
前記第１プロセッサユニット（１２）が、前記変更カウンタの新しい現在値を取り出すステップと、
前記第１プロセッサユニット（１２）が、前記変更カウンタの現在値と前記変更カウンタの新しい現在値との間に差異があるかどうかを判定するステップと、
前記第１プロセッサユニット（１２）が、前記変更カウンタの現在値と前記変更カウンタの新しい現在値との間に差異がある場合は前記前記第２プロセッサユニット（１４）から前記変更ログを取り出すステップに戻り、前記変更カウンタの現在値と前記変更カウンタの新しい現在値との間に差異がない場合は前記変更カウンタを新しい現在値に更新して次の変更ログ（１１０）が示すデータを取り出して当該高速同期手順を繰り返すステップとを含む、ことを特徴とする同期方法。
【請求項２】
前記第１プロセッサユニット（１２）は、同期エンジン（１０４）を含んでいることを特徴とする請求項１に記載の同期方法。
【請求項３】
前記第２プロセッサユニット（１４）は、同期エンジンを含んでいることを特徴とする請求項１に記載の同期方法。
【請求項４】
前記第１及び第２プロセッサユニット（１２，１４）は、複数の並列プロセッサ（１２，１４）を含んでいることを特徴とする請求項１に記載の同期方法。
【請求項５】
前記第２プロセッサユニット（１４）が、前記第２データベース（１０８）に記憶された前記データの変更に対して前記変更カウンタを増分させるステップと、
前記第２プロセッサ・ユニット（１４）が、前記第２データベース（１０８）から取り出されたデータと異なる新しいデータが前記第２データベース（１０８）に記憶されたかどうかを判定するステップと、
前記第２プロセッサ・ユニット（１４）が、前記新しいデータが前記第２データベース（１０８）に記憶された場合、前記新しいデータを識別する一義的な識別子を前記第１プロセッサユニット（１２）へ送信するステップと、
前記第２プロセッサ・ユニット（１４）が、前記変更カウンタの新しい現在値を前記第１プロセッサユニット（１２）へ送信するステップと、
をさらに含むことを特徴とする請求項１に記載の同期方法。
【請求項６】
前記第１プロセッサユニット（１２）が、前記第２データベース（１０８）から取り出されたデータと異なる前記新しいデータのどれかが処理されていないかどうかを判定するステップと、
前記第２データベース（１０８）から取り出されたデータと異なる前記新しいデータが処理されている場合、前記第１プロセッサユニット（１２）が、前記変更ログ（１１０）からの現在値で前記変更カウンタを更新するステップと、
をさらに含むことを特徴とする請求項５に記載の同期方法。
【請求項７】
前記第２データベース（１０８）に記憶された前記データをクリアするステップと、
前記変更カウンタを初期値に設定するステップと、
前記第２データベース（１０８）に関連する変更ログ（１１０）中のエントリをすべてクリアするステップと、
前記第２データベースに記憶されたデータを識別するために、前記第２データベース（１０８）に関連する新たな識別子を発生させるステップと、
前記第２データベース（１０８）に新しいデータを記憶するステップと、
をさらに含むことを特徴とする請求項１に記載の同期方法。
【請求項８】
通信システムにおいて複数のプロセッサユニット（１２，１４）の複数のデータベース（１０２，１０８）を同期させるための同期システムであって、
第１プロセッサユニット（１２）と、
前記第１プロセッサユニット（１２）に付随する第１データベース（１０２）と、
第２プロセッサユニット（１４）と、
前記第２プロセッサユニット（１４）に付随する第２データベース（１０８）と、
前記第１プロセッサユニット（１２）を前記第２プロセッサユニット（１４）に相互接続する手段とを含み、
前記第１プロセッサユニット（１２）が、前記第２データベース（１０８）に記憶されたデータを取り出し、取り出された前記データに対して同期手順を実行する同期システムにおいて、
前記第２プロセッサユニット（１４）が、前記第２データベース（１０８）を新たに生成あるいは再生成する時に、前記第２データベース（１０８）と関連づけた新たな識別子を発生して前記第２データベース（１０８）の変更ログ（１１０）に記憶する手段を有し、
前記第１プロセッサユニット（１２）が、
前記第２データベース（１０２）と関連づけた識別子を記憶する手段と、
前記第２プロセッサユニット（１４）から変更ログ（１１０）を取り出す手段と、
前記取り出された変更ログ（１１０）に記憶されている識別子が前記第１プロセッサユニット（１２）に記憶している識別子と一致しているかを判定する手段と、
前記取り出された変更ログ（１１０）に記憶されている識別子が前記第１プロセッサユニット（１２）に記憶している識別子と一致しない場合は、前記第１及び第２データベース（１０２，１０８）のすべてのエントリを比較する低速同期手順を実行する手段と、
前記取り出された変更ログ（１１０）に記憶されている識別子が前記第１プロセッサユニット（１２）に記憶している識別子と一致している場合は、高速同期手順を実行する手段とを有し、
前記高速同期手順を実行する手段は、
前記第２プロセッサユニット（１４）に付随する、前記第２データベース（１０８）へのエントリをカウントする変更カウンタの現在値を取り出して記憶する手段と、
前記第２データベース（１０８）に記憶された、変更ログ（１１０）が示すデータを取り出す手段と、
前記第２データベース（１０８）から取り出した、前記変更ログ（１１０）が示すデータを前記第１データベース（１０２）にエントリすると共に、前記第１データベース（１０２）にエントリされたデータを前記第２データベース（１０８）にエントリする同期手順を実行する手段と、
前記変更カウンタの新しい現在値を取り出す手段と、
前記前記変更カウンタの現在値と前記新しい現在値との間に差異があるかどうかを判定する手段と、
前記変更カウンタの前記現在値と前記変更カウンタの前記新しい現在値との間に差異がある場合は当該高速同期手順を終了して前記第２プロセッサユニット（１４）から変更ログを取り出す手段による変更ログの取出しに処理を移行させ、前記変更カウンタの前記現在値と前記変更カウンタの前記新しい現在値との間に差異がない場合は前記変更カウンタを前記新しい現在値に更新して次の変更ログ（１１０）が示すデータを取り出して当該高速同期手順の実行を繰り返す手段とを含む、ことを特徴とする同期システム。
【請求項９】
前記第１プロセッサユニット（１２）は、同期エンジン（１０４）を含んでいることを特徴とする請求項８記載の同期システム。
【請求項１０】
前記第２プロセッサユニット（１４）は、同期エンジンを含んでいることを特徴とする請求項８記載の同期システム。
【請求項１１】
前記第１及び第２プロセッサユニット（１２，１４）は、複数の並列プロセッサ（１２，１４）を含んでいることを特徴とする請求項８記載の同期システム。
【発明の詳細な説明】
【０００２】
（発明の背景）
（発明の技術分野）
本発明は一般的に電気通信分野に関するものであり、更に詳細には移動通信システムで使用するための並列処理同期プロトコルに関する。
【０００３】
（従来技術の説明）
図１は、例えば移動通信システム中で、どのようにすれば複数の並列プロセッサを使用できるかを示すブロック図である。図示のように、例えば、パーソナル・コンピュータ（ＰＣ）１２および移動電話１４に含まれる相補的なディジタル・プロセッサの対は並列的同期モードにおいて一緒に機能または動作できる。プログラムおよびデータのソフトウエアはプロセッサ（１２，１４）の各々で複製でき、ソフトウエア命令は並列に実行できる。ＰＣおよび移動電話１２，１４中の各々のディジタル・プロセッサは無線の空気インタフェースを介して互いに接続される。
【０００４】
図２は、例えば図１に示すディジタル・プロセッサのような並列プロセッサを同期させるために使用できる同期装置の機能的ブロック図である。本質的に、ここで説明する同期プロセスは、２つのデータベース（例えば、１２，１４中の各プロセッサに付随するそれぞれのデータベース）が同じ情報を含むように処理される方法であることが好ましい。理想的には、１つのデータベースのエントリに対してなされる変更は他方に対しても行なわれる。広義では、そのようなデータベースは、例えば、電話帳、カレンダー等からの情報を含むことができる。それはそれとして、そのようなデータベースの内容は典型的には並列処理方式に関連するタイプの情報を含むことができる。
【０００５】
図２を参照すると、同期（ｓｙｎｃ）エンジン１０４は、特別な（同期エンジン）データベース１０２に付随しており、それにつながれている。例えば、同期エンジン・データベース１０２は図１に示すプロセッサ１２にその一部として含まれるか、あるいは付随するデータベースでよい。これに関連して、“同期エンジン”はデータベース同期化機能を実行するソフトウエアであることが好ましい。しかし、同期エンジン機能を実行する装置もまた、そのような同期エンジンの一部と考えることができる。第２の（デバイス）データベース１０８は同期エンジン・データベース１０２と同期されるべきものである。例えば、デバイス・データベースを、第２プロセッサ１４にその一部として含めるか、あるいは付随させることができる。これに関して、デバイスはディジタル・プロセッサ１４それ自身であってもよい。注意すべきことは、同期エンジンおよびデータベースは同期すべき並列プロセッサの各々に付随させることもできるということである。言い換えれば、並列プロセッサ同期手順はどちらの方向にも実行できる。例えば、第２プロセッサ１４も同期エンジン（１０４）および付随するデータベース（１０２）を含むことができ、他方、第１プロセッサ１２（例えば、デバイス）もデバイス・データベース（１０８）を含むことができる。
【０００６】
同期プロトコル１０６を用いて、使用されるデータベース同期方法が定義される。デバイス・データベース１０８には変更ログ１１０が付随する。変更ログは好ましくは、ログまたはレジスタであり、その中にデータベースに対する変更が一時的に記憶される。例えば、変更ログ１１０の寸法を固定でき、新しい変更が追加されるたびに変更ログからは古い変更が押し出されるようにすることができる（先入れ先出しまたはＦＩＦＯ処理）。それはそれとして、変更ログ中の各エントリには何らかの事象（例えば、追加、消去、または修正）、タイム・スタンプ（例えば、変更カウンタの値）、および一義的識別子（ＵＩＤ）が付随する。ＵＩＤはデータベース（１０２または１０８）中の新しいエントリごとに割り当てられる番号である。それらは同じデータベース中で再利用しない点で一義的である。変更カウンタ（明示されていない）はデータベース中で発生する変更ごとに好ましくは増分するカウンタである。好ましくは、変更カウンタ値は変更が発生するたびに変更ログ中に記憶され、更に、同期化が発生した後で、同期エンジン１０４中にも記憶される。
【０００７】
２つのデータベースの少なくとも１つ（例えば、１０２または１０８）が第１の同期化が試みられた時の情報を含んでいる場合は、 “低速”同期手順が実行される。低速同期化は、それによって一方のデータベースのすべてのエントリを、関係する他方のデータベースのエントリすべてと比較する手順である。そのような低速同期手順が実行されるときは、（例えば、同期エンジンのソフトウエアによって）ＵＩＤ解析表が生成される。そのようなＵＩＤ解析表のエントリは同期化された２つのデータベースのエントリ間の関係を反映する。例えば、１つのデータベース（例えば、１０２）の１つのエントリについてのＵＩＤがあれば、ＵＩＤ解決表はその同じエントリが第２のデータベース（例えば、１０８）中で有するＵＩＤは何かについての情報を提供する。他方、“高速”同期手順は、変更ログが、最後の同期化が実行されてから以降に発生したすべてのデータベース変更を含む場合に実行される。そのような高速同期手順が実行されるときは、変更のあったデータベースのエントリのみがデバイス・データベース（１０８）と同期エンジン１０４との間で比較および転送される。データベースの高速同期は低速同期よりも大幅に速い。
【０００８】
特定の電気通信システムで並列プロセッサを同期化するために取られる既存のプロトコル（例えば、図２にブロック図１０６で例示したような）に関して発生する重大な問題は、プロセッサが同期している間に、一方のプロセッサ中でデータベースが（例えば、ユーザの直接的な修正１１２によって）修正された場合に、そのプロトコルが働かないことである。この問題は、既存の同期プロトコルが、同期しているデータベースがロック・アップされていて、同期エンジンのみがそのデータベースを修正できることを要求するために発生する。従って、同期をバックグラウンドでのアプリケーションとして実行できるようになったそれらの並列処理方式に対して、例えば、プロセッサ（デバイス）とのすべてのユーザ操作は同期手順の間は凍結される。しかし、デバイスのデータベースはこの期間はロック・アップされているため、任意の時点でその同期化機能を実行できるのはデバイスの同期エンジンの一方のみである。
【０００９】
既存のプロトコルに関する別の重大な問題は、デバイスがリセットされて複数の同期エンジンと同期するときに発生する。例えば、デバイスがリセットされた後、変更カウンタ値がこの時点でゼロになるため、それが同期している第１プロセッサはデバイスがリセットされたことを判定して、すべてのエントリを回復するであろう。しかし、そのデバイスに対して第２のプロセッサを同期させるときには、第２プロセッサはデバイスがリセットされたことを知らない。従って、データが失われる可能性があり、その結果として低速同期が発生するかもしれない。更に、リセットが発生した後で、データベースを回復させるときに、既存のデータベースは新しいデータベースからのエントリによって上書きされよう。これにより、この動作が第２プロセッサによって検出されない場合には別の問題が発生する。それにも拘わらず、次に詳細に説明するように、本発明は上述の、またそれに関連する問題をうまく解決する。
背景技術を反映する書類には、米国特許第５，３０７，４８７号と、１９９３年１１月発行のＩＢＭ技術開示公報第３６巻、第１１号のページ６７５−６７８に掲載された“フォールト・トレラント・クラスタ中のデータベース複製の回復におけるバウンディング・ジャーナル・バックオフ（Ｂｏｕｎｄｉｎｇ  Ｊｏｕｒｎａｌ  Ｂａｃｋ−Ｏｆｆ  ｄｕｒｉｎｇ  Ｒｅｃｏｖｅｒｙ  ｏｆ  Ｄａｔａ  Ｂａｓｅ  Ｒｅｐｌｉｃａ  ｉｎ  Ｆａｕｌｔ−Ｔｏｌｅｒａｎｔ  Ｃｌｕｓｔｅｒｓ）”と題する論文とが含まれる。
【００１０】
（発明の概要）
本発明の好適な実施の形態に従えば、並列プロセッサを同期させるための方法が提供され、それによれば、１つのプロセッサに付随する同期エンジンが第２のプロセッサに付随するデータベースに関する変更カウンタの現在値を取り出して、変更カウンタの現在値を記憶し、第２プロセッサに付随するデータベースからすべてのデータ・エントリを取り出し、取り出したすべてのデータ・エントリに基づいて第１プロセッサに付随するデータベースに対して同期手順を実行する。
【００１１】
本発明の重要な技術的な特徴は、並列処理の同期プロトコルが提供されて、それによってデータベースが同期している間にもデータベース・エントリの修正が可能であることである。
【００１２】
本発明の別の重要な技術的な特徴は、並列処理の同期プロトコルが提供されて、それによって同期時間が大幅に短縮されることである。
【００１３】
本発明の別の重要な技術的な特徴は、並列処理の同期プロトコルが提供されて、それによってシステムの通信処理およびスループットが大幅に増大することである。
【００１４】
本発明の更に別の重要な技術的な特徴は、並列処理の同期プロトコルが提供されて、それによってデータを失うことなく、複数の同期エンジンによってリセットおよび／または回復が実行できることである。
【００１５】
（図面の詳細な説明）
本発明の好適な実施の形態およびそれの特徴は図面の図１−４を参照することによって最も良く理解できる。各図面で同様なまた対応する部分に対して同じ参照符号が使用されている。
【００１６】
本質的に、本発明の好適な実施の形態に従えば、並列プロセッサの同期プロトコルおよび方法が提供され、それによれば、１つのプロセッサに付随する同期エンジンが第２のプロセッサに付随するデータベースに関する変更カウンタの現在値を取り出し、変更カウンタの前記現在値を記憶し、第２プロセッサに付随するデータベースからすべてのデータ・エントリを取り出し、取り出したデータ・エントリのすべてに基づいて第１プロセッサに付随するデータベースに対して同期手順を実行する。
【００１７】
具体的には、図３は、本発明の好適な実施の形態に従って実施できる、電気通信システムで複数のプロセッサを同期させるための例示的なプロトコルまたは方法３００のフロー図である。例えば、このプロトコルまたは方法は図１および２に示した同期装置および／またはシステムによって、データベース１０２および１０８を同期させるために実施できる。注意すべき点は、既に述べたように、データベースの同期化はいずれの方向（例えば、プロセッサ１２またはプロセッサ１４のいずれに付随する同期エンジンおよびデータベース）でも実行できることである。本方法（プロトコル）の工程３０２において、同期エンジン（例えば、プロセッサ１２に付随するソフトウエア）は“有効な”変更カウンタが記憶されているかどうかを判定する。例えば、このデータベースが最初に同期している期間にこの工程が発生したとすれば、変更カウンタは不正確に記憶されているかもしれない。もしそのような変更カウンタが不正確に記憶されていれば、工程３０４において同期エンジン１０４は同期させるべき第２データベース（例えば１０８）に付随するデバイス（例えばプロセッサ１４）から変更カウンタの現在値を要求する。言い換えれば、変更カウンタの現在値は、第２データベースの内容全体が読み出される前に取り出される。これに応答して、工程３０６では、デバイスが変更カウンタの現在値を同期エンジンへ戻す。工程３０８では、同期エンジン１０４は変更カウンタの取り出された現在値を（一時的に）記憶する。注意すべき点は、デバイス・データベース（１０８）の全内容を読み出す前に変更カウンタの現在値を取り出すことによって、内容が読み出されている間に行なわれた任意のエントリ変更はデータベースを次に同期するときに検出できるということである。
【００１８】
工程３１０では、同期エンジン１０４はデバイス（例えば、プロセッサ１４）から、デバイス・データベース１０８に記憶されているすべてのエントリを要求する。工程３１２で、デバイスはデバイス・データベース１０８に記憶されている既存のエントリすべてを同期エンジン１０４へ送る。工程３１４では、同期エンジン１０４は低速同期手順を実行して、それによりデバイス・データベース１０８で追加、修正、および／または消去された（例えば、最後の同期化以降）すべてのエントリは同期エンジン・データベース１０２中でそれらに対応して追加、修正、および／または消去される。工程３１６では、同期エンジン１０４は工程３０８で（一時的に）記憶された変更カウンタの取り出された値で以って変更カウンタを更新する。
【００１９】
工程３０２に戻って、もし変更カウンタの値が有効であれば、工程３１８で、同期エンジン１０４はデバイス（１０８）から、変更カウンタの値が最後に記憶されてから後にデバイス・データベース１０８中に発生したすべての変更に関する変更ログ１１０エントリを要求する。注意すべき点は、同期エンジンに対して関連のある変更のみを読み出すことによって、変更ログ１１０の寸法を最小化できることである。このやり方は、デバイスから同期エンジンへの伝送時間を最小化できるという特徴を有する。工程３２０では、デバイス１０８は、変更カウンタが（同期エンジンによって）サブミットされてから後に変更ログ１１０中に（もしあれば）何らかの変更が発生したかどうかを判定する。もしそうであれば、工程３２２で、デバイスは同期エンジン１０４に対して“変更が多すぎる”メッセージを送信する。あるいは、工程３２０へ戻って、もしも変更がサブミットされた後で発生した任意の変更を、サブミットされた変更ログが保有していなければ、工程３２４において、デバイスは同期エンジンへ最後にサブミットされた変更カウンタ値がデバイスにある現在の変更カウンタの値よりも大きいかどうかを判定する。言い換えれば、変更カウンタがラップ・アラウンド（ｗｒａｐｐｅｄ  ａｒｏｕｎｄ）されたかどうかのチェックが行なわれる。もしそうであれば、工程３２２で、デバイスは同期エンジンへ“変更が多すぎる”メッセージを送信する。注意すべき点は、同期エンジンへサブミットされた変更カウンタ値がデバイスの現在の変更カウンタ値よりも大きくて（デバイスの変更カウンタがラップ・アラウンドされた）デバイスが同期エンジンに対して“変更が多すぎる”メッセージを送信することによって、変更カウンタの値がゼロへラップ・アラウンドされるという潜在的な問題点が回避されるということである。
【００２０】
工程３２４へ戻って、もし最後にサブミットされた変更カウンタ値がデバイス（１０８）における現在の変更カウンタ値よりも大きくなければ、工程３２６で、デバイスはサブミットされた変更カウンタよりも大きい変更カウンタに関する変更ログの変更を戻す。好ましくは、本実施の形態に関して、戻された変更ログ中のエントリは最も古い変更を最初に提供する時間的な順序で提供される。注意すべき点は、デバイスに最も古い変更を最初に戻させることによって、もし変更ログの更新が中断されたとしても、同期エンジンは変更ログの一部を処理できるということである。
【００２１】
工程３２８で、もし同期エンジン１０４がデバイス１０８から“変更が多すぎる”メッセージを受信したことを判定すれば、方法は工程３０４へ進む。さもなければ、工程３３０において、同期エンジンは工程３２６でデバイスから戻された変更ログ中のエントリを処理し始める。同期エンジンは受信した変更ログエントリの解析を、最も古い変更からまず開始する。従って、同期エンジンは、もし同期化が何らかの理由で中断されても、その処理をやり直す必要はない。工程３３２で、もし同期エンジンが変更ログが空（変更なし）と判定すれば、方法は工程３１７へ進む。さもなければ、工程３３４で、同期エンジンは変更ログに示されている追加および／または修正された各エントリをデバイスから要求する。工程３３６で、デバイスは同期エンジンに対してそのような要求された各エントリを送信する。好ましくは、最も古いエントリを最初に要求する。工程３３８で、同期エンジンは処理すべき変更が残っているかどうかを判定する。もしそうであれば、方法は工程３３０へ戻って変更処理を続ける。さもなければ、工程３４０で、同期エンジンはそれの変更カウンタを、デバイスの変更ログ１１０から受信した（工程３１８）最も高い変更カウンタで以って更新する。
【００２２】
工程３１７で、同期エンジン１０４は、最後にデータベース同期化が発生してから後で同期エンジンのデータベース１０２に対して変更が行なわれたかどうかを判定する。最後の同期化以降にもしそのような変更が発生していなければ、方法は完了する（工程３４２）。あるいは、最後の同期化以降にもしそのような変更が発生していれば、工程３４４で、同期エンジンは同期エンジンのデータベース１０２に対してなされた変更を処理し始める。工程３４６で、同期エンジンはデバイス・データベース１０８中の適正なエントリを追加、修正、および／または消去する。
【００２３】
工程３４８で、デバイスは、デバイスのデータベース１０８中のエントリに対して変更が発生するたびに、１単位だけそれの変更カウンタを増分させる。工程３５０で、デバイスはデバイス・データベース１０８に対して新しいエントリが追加されたかどうかを判定する。もしそうであれば、工程３５２で、デバイスはその新しいエントリに関するＵＩＤを同期エンジン１０４へ送信して、方法は工程３５４へ進む。あるいは、もし新しいエントリの追加がなければ、工程３５４で、デバイスは現在の変更カウンタ値を同期エンジンへ送信する。注意すべき点は、デバイス・データベースに対する変更または修正に応答して同期エンジンへ現在の変更カウンタ値を戻すことによって、同期エンジンは変更カウンタ値を明示的に読み出す必要がなくなるということである。このことによってかなり大きい処理時間が節約でき、関係する同期エンジン間で発生する可能性のある競争問題が回避できる。
【００２４】
工程３５６で、同期エンジンはデバイスから戻された（工程３５４）変更カウンタ値と同期エンジンに既に記憶されている変更カウンタ値との間に差があるかどうか？を判定する（すなわち、このテストは差が１よりも大きいかどうかを判定するためのものであるから）。もしそうであれば、方法は工程３１８へ進む。注意すべき点は、本発明に従って、この時点で変更カウンタを調べることにより同期エンジンは誰か（例えば、ユーザまたは他の修正１１２）がデバイス・データベース１０８を修正したかどうかを判定できるということである。あるいは、工程３５６で、もし同期エンジンがデバイスから戻された（工程３５４）変更カウンタ値と同期エンジンに既に記憶されている変更カウンタ値との間に差（例えば、１より大きい）がないと判定すれば、工程３５８で、同期エンジンはデバイスから取り出した（工程３５４）新しい値で以って変更カウンタを更新する。注意すべき点は、デバイス・データベースに対する変更または修正のたびに変更カウンタ値を更新することによって、何らかの理由によって現在の同期化が中断された場合でも同期エンジンは同期手順を再スタートさせる必要がないということである。工程３６０で、もし同期エンジンが、実行すべき同期エンジンのデータベース変更があると判定した場合には、方法は工程３１７へ戻る。さもなければ、工程３４２で方法は完了する。
【００２５】
既に述べたように、第２のプロセッサをデバイスと同期させるときは、第２プロセッサはそのデバイスがリセットされたことを知らないであろう。従って、その結果、データが失われたり低速同期が発生したりする。更に、リセットが発生した後でデータベースを回復する場合に、既存のデータベースは新しいデータベースからのエントリによって上書きされよう。これによってもしこの操作が第２プロセッサによって検出できなければ別の問題が発生する。本発明の並列同期プロトコルに従えば、第２の実施の形態は新たに生成されたデータベースを一義的な識別子（好ましくは、ランダムに生成した数字に付随させる）でマークすることによって上述の問題を解決する。この新たに生成されたデータベースに付随する“データベースＩＤ”はデバイスによってエントリとしてすべての変更ログへサブミットされる。従って、デバイスの変更ログ中のこのデータベースＩＤを検出することによって、同期エンジンはデータベースが新たに生成された（あるいは再生成された）時を判定できる。言い換えれば、好適な実施の形態に関して上述した並列同期プロトコルに従って、デバイスによって変更ログが特定の同期エンジンへ戻されるときに、新たに生成されたデータベースに関するデータベースＩＤは変更ログ中に含まれる。同期エンジンはこのデータベースＩＤを先に記憶されているデータベースＩＤ（もしあれば）と比較して、もしそれら２つのデータベースＩＤが一致しなければ、同期エンジンはそのデータベースが再生成されたことおよび低速同期手順を実行すべきことを知る。
【００２６】
それはそれとして、何らかの理由でデバイスがリセットされた場合には、デバイスは新しいデータベースを生成するように要求される。そのような新しいデータベースを生成する過程で、デバイスは新しいデータベースＩＤ（好ましくはランダムに生成した数字）を発生する。しかし、もし関係するデータベース全体が上書きされるのであれば（例えば、レベル２のｏｂｅｘ  ｐｕｔによって）、デバイスは好ましくは図４に示すフロー図に関して次に説明する方法に従う（図３に関して上述した並列同期方法またはプロトコルと相補的なものとして）。
【００２７】
図４は電気通信システムで複数のプロセッサを同期させるための例示的なプロトコルまたは方法４００のフロー図であり、これは本発明の第２の実施の形態に従って実施できる。もしデータベース（例えば、１０８）が完全に上書きされるのであれば、図４の工程４０２において、デバイスはそのデータベース中のエントリをクリアする。工程４０４で、デバイスは関連する変更カウンタ値をゼロにセットする。工程４０６で、デバイスは関係する変更ログ（例えば１１０）中のエントリをクリアする。工程４０８で、デバイスは新しいデータベースＩＤを発生する（好ましくは、デバイスによって生成される乱数に関連させて）。工程４１０で、デバイスは関係するデータベース（例えば１０８）中に新しいレコードを書き込む。本発明の並列同期プロトコルまたは方法に従って、新しい変更ログが生成され、変更カウンタが更新される。
【００２８】
本発明の方法および装置の好適な実施の形態について、添付図面に示し、また上記の詳細に説明において述べてきたが、本発明が開示された実施の形態に限定されないこと、また以下の特許請求の範囲によって設定および定義される本発明の精神から外れることなく、数多くの再構成、修正、および置換を可能とするものであることを理解されるであろう。
【図面の簡単な説明】
本発明の方法および装置のより完全な理解は、添付図面と一緒に以下の詳細な説明を参照することによって得られよう。
【図１】  移動電気通信システム中で使用できる既存の並列プロセッサ・サブシステムのブロック図。
【図２】  図１に示すディジタル・プロセッサのような、並列プロセッサを同期させるために使用できる同期装置のブロック図。
【図３】  本発明の好適な実施の形態に従って実施できる、電気通信システムで複数のプロセッサを同期させるための例示的プロトコルまたは方法のフロー図。
【図４】  本発明の第２の好適な実施の形態に従って実施できる、電気通信システムで複数のプロセッサを同期させるための例示的プロトコルまたは方法のフロー図。
【図１】
0004511047.tif 000002
【図２】
0004511047.tif 000003
【図３Ａ】
0004511047.tif 000004
【図３Ｂ】
0004511047.tif 000005
【図３Ｃ】
0004511047.tif 000006
【図４】
0004511047.tif 000007