(57)【要約】      （修正有）【課題】共有メモリにおけるデータにアクセスするためのメカニズム及び方法を提供する。【解決手段】少なくとも１つのクライアント１８（列線交換ユニット）により共有メモリ２２におけるデータにアクセスするためのメカニズム及び方法は、共有メモリ２２におけるデータの割り振りであって、メモリが複数のバッファ３２において構成される、割り振りと、データへのアクセスをロック又は制限せずにクライアント１８又はサーバ２０によりデータにアクセスすることとを含む。【選択図】図１
2016062608.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのクライアント（４０）により共有メモリ（２２）におけるデータにアクセスするためのメカニズムであって、
前記共有メモリ（２２）におけるデータの少なくとも１つのトピック（３２）への割り振りであって、所定の一定のアドレス（３４）によりアクセス可能である割り振りと、
複数のバッファ（３６）を有する前記少なくとも１つのトピック（３２）であって、前記バッファ（３６）の数は、前記少なくとも１つのトピック（３２）にアクセスするクライアント（４０）の数プラス前記少なくとも１つのトピック（３２）にアクセスする各々のサーバ（５０）のための２つに等しい、前記少なくとも１つのトピック（３２）と、
アクティブアクセスポインタ（４２、５２）を有する各々のクライアント（４０）及び各々のサーバ（５０）と、
クライアント（４０）又はサーバ（５０）からのトランザクション要求に基づいてバッファ（３６）にアクティブアクセスポインタ（４２、５２）を向けるためのアクティブアクセスポインタディレクタ（３８）と
を備え、１つのバッファ（３６）は常に、前記共有メモリ（２２）における最新データ（４８）を含み、少なくとも１つのバッファ（３６）は常に、前記共有メモリ（２２）におけるデータにアクセスするために利用可能であり、
前記アクティブアクセスポインタ（４２、５２）は、オペレーティングシステムレベルで前記データをコピーせずに、機械アセンブリ言語トランザクションのみを使用して、前記アクティブアクセスポインタディレクタ（３８）によりバッファ（３６）間で割り振られる、メカニズム。
【請求項２】
前記メカニズムは、飛行管理システムである、請求項１に記載のメカニズム。
【請求項３】
複数のトピック（３２）が、前記共有メモリ（２２）において整列させられる、請求項１に記載のメカニズム。
【請求項４】
前記少なくとも１つのトピック（３２）及び前記複数のバッファ（３６）は、前記共有メモリ（２２）の初期化中に予め定義される、請求項１に記載のメカニズム。
【請求項５】
前記少なくとも１つのトピック（３２）又は前記複数のバッファ（３６）の少なくとも１つは、ランタイム中に、前記少なくとも１つのトピック（３２）にアクセスするクライアント及びサーバ（５０）の集合的な数により定義される、請求項１に記載のメカニズム。
【請求項６】
前記クライアント（４０）又はサーバ（５０）の少なくとも１つは、前記向けられたアクティブアクセスポインタバッファに関連づけられたデータにアクセスする、請求項１に記載のメカニズム。
【請求項７】
前記アクティブアクセスポインタディレクタ（３８）は、完了したトランザクション要求に応答して、前記最新データ（４８）を備える異なるバッファに新たなトランザクションのためのアクティブアクセスポインタ（４２、５２）を向ける、請求項６に記載のメカニズム。
【請求項８】
少なくとも１つのクライアント（４０）により共有メモリ（２２）におけるデータにアクセスするための方法であって、
前記共有メモリ（２２）におけるデータを少なくとも１つのトピック（３２）に割り振ることと、
各々の少なくとも１つのトピック（３２）にアクセスするための単一の所定のアドレスを割り当てることと、
各々の少なくとも１つのトピック（３２）のために、前記少なくとも１つのトピック（３２）にアクセスするクライアント（４０）の数プラス前記少なくとも１つのトピック（３２）にアクセスする各々のサーバ（５０）のための２つに等しい、複数のバッファ（３６）を割り振ることと、
クライアント（４０）又はサーバ（５０）の少なくとも１つからのトランザクション要求に、各々のそれぞれのクライアント（４０）又はサーバ（５０）のためのアクティブアクセスポインタ（４２、５２）をバッファ（３６）に割り振ることにより、応答することと
を備え、前記データは、オペレーティングシステムレベルで前記データをコピーせずに前記バッファ（３６）を介してアクセスされる、方法。
【請求項９】
前記バッファ（３６）を介して前記データにアクセスすることは、データロックを防止する、請求項８に記載の方法。
【請求項１０】
前記データを少なくとも１つのトピック（３２）に割り振ること、前記単一の所定のアドレスを割り当てること、及び前記各々の少なくとも１つのトピック（３２）のために複数のバッファ（３６）を割り振ることは、前記共有メモリ（２２）の初期化中に行われる、請求項８に記載の方法。
【請求項１１】
前記データを少なくとも１つのトピック（３２）に割り振ること又は前記各々の少なくとも１つのトピック（３２）のために複数のバッファ（３６）を割り振ることの少なくとも１つは、ランタイム中に、前記少なくとも１つのトピック（３２）にアクセスするクライアント（４０）及びサーバ（５０）の集合的な数に基づいて行われる、請求項８に記載の方法。
【請求項１２】
前記トランザクション要求に応答することは更に、前記共有メモリ（２２）における最新データ（４８）を備えるバッファ（３６）に各々のそれぞれのクライアント（４０）のための前記アクティブアクセスポインタ（４２、５２）を向けることを備える、請求項８に記載の方法。
【請求項１３】
前記クライアント（４０）又はサーバ（５０）の少なくとも１つが前記アクセスされたデータにトランザクションを実行することを更に備える、請求項１２に記載の方法。
【請求項１４】
前記トランザクションを実行することは、前記データを読み出すこと、前記バッファ（３６）に新たなデータを書き込むこと、又は前記共有メモリ（２２）に前記バッファデータを記憶することの少なくとも１つを備える、請求項１３に記載の方法。
【請求項１５】
完了したトランザクション要求に応答して、前記最新データ（４８）を備える異なるバッファ（３６）に各々のそれぞれのクライアント（４０）又はサーバ（５０）のための前記アクティブアクセスポインタ（４２、５２）を向けることを更新することを更に備える、請求項１４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共有メモリにおけるデータにアクセスするためのメカニズム及び方法に関する。
【背景技術】
【０００２】
列線交換ユニット（ＬＲＵ）は、車両又は航空機のようなより大きなユニットのモジュラー式コンポーネントであり、故障時にそれらが置換及び／又は交換され得ることを保証するために仕様通りに設計される。例えば、航空機のＬＲＵは、航空機の機能を管理し、及び／又は動作させるための、完全に含まれたシステム、センサ、無線機、又は他の補助機器を含み得る。航空機環境において、ＬＲＵは、ＡＲＩＮＣ系列の規格によって定義されたような、特定の動作、相互運用性、及び／又はフォームファクタ規格にしたがって動作するように設計され得る。
【０００３】
複数のＬＲＵが、飛行制御コンピュータ又は他のコンピュータシステムの共通又は共有メモリにおけるデータへのアクセス又は同データの交換のために、データネットワークにより相互接続され得る。飛行制御コンピュータ又は他のコンピュータシステムは更に、航空機の機能を管理し、及び／又は動作させ得る。
【発明の概要】
【０００４】
一実施形態において、少なくとも１つのクライアントにより共有メモリにおけるデータにアクセスするためのメカニズムは、共有メモリにおけるデータの少なくとも１つのトピックへの割り振りであって、所定の一定のアドレスによりアクセス可能である割り振りと、複数のバッファを有する少なくとも１つのトピックであって、バッファの数は、少なくとも１つのトピックにアクセスするクライアントの数プラス少なくとも１つのトピックにアクセスする各々のサーバのための２つに等しい、少なくとも１つのトピックと、アクティブアクセスポインタを有する各々のクライアント及び各々のサーバと、クライアント又はサーバからのトランザクション要求に基づいてバッファにアクティブアクセスポインタを向けるためのアクティブアクセスポインタディレクタとを含む。１つのバッファは常に、共有メモリにおける最新データを含み、少なくとも１つのバッファは常に、共有メモリにおけるデータにアクセスするために利用可能である。加えて、アクティブアクセスポインタは、オペレーティングシステムレベルでデータをコピーせずに、機械アセンブリ言語トランザクションのみを使用して、アクティブアクセスポインタディレクタによりバッファ間で割り振られる。
【０００５】
別の実施形態において、少なくとも１つのクライアントにより共有メモリにおけるデータにアクセスするための方法は、共有メモリにおけるデータを少なくとも１つのトピックに割り振ることと、各々の少なくとも１つのトピックにアクセスするための単一の所定のアドレスを割り当てることと、各々の少なくとも１つのトピックのために、少なくとも１つのトピックにアクセスするクライアントの数プラス少なくとも１つのトピックにアクセスする各々のサーバのための２つに等しい、複数のバッファを割り振ることと、クライアント又はサーバの少なくとも１つからのトランザクション要求に、各々のそれぞれのクライアント又はサーバのためのアクティブアクセスポインタをバッファに割り振ることにより、応答することとを含む。データは、オペレーティングシステムレベルでデータをコピーせずにバッファを介してアクセスされる。
【図面の簡単な説明】
【０００６】
【図１】本発明の一実施形態に係る航空機のデータ通信ネットワークの概略図である。
【図２】本発明の一実施形態に係る、トピックのバッファにアクセスするクライアントの概略図である。
【図３】本発明の一実施形態に係る、クライアントがバッファにおける最新データにアクセスするためのメカニズムの概略図である。
【図４】本発明の一実施形態に係る、クライアント及びサーバがバッファにおけるデータへの読み出し／書き込みトランザクションを実行するためのメカニズムの概略図である。
【発明を実施するための形態】
【０００７】
説明される本発明の実施形態は、共通又は共有メモリに直接アクセスする単一のシステム上ですべてが動作する航空機の複数のセンサ、システム、ソフトウェアコンポーネント、及び／又は物理コンポーネントを有する、航空機の環境において説明される。しかしながら、本発明の実施形態は、共通メモリ又は単一の共有メモリにアクセスするクライアント及びサーバを使用するいずれの環境においても実現され得る。更に、「クライアント」及び「サーバ」が以下に説明される一方で、説明される特定の実施形態は、クライアント及びサーバの両方の非限定的な例である、ということが理解されるであろう。加えて、「クライアント」が説明される一方で、任意のコンポーネント又は共有メモリからのデータの「消費者」が含まれ得る。同様に、「サーバ」が説明される一方で、任意のコンポーネント又は共有メモリのためのデータの「生成者」が含まれ得る。クライアント及びサーバの追加の例は、リモートの又はローカルな離散ユニット、アプリケーション、コンピュータプロセス、プロセススレッド、等、或いはそれらの任意の組み合わせを含み得、それらは、共有メモリにアクセスする。例えば、複数の「クライアント」はすべて、共通のランダムアクセスメモリ（ＲＡＭ）にアクセスする単一のコンピュータ又はコンピューティングユニット上に存在し得る。
【０００８】
図１は、本発明の一実施形態に係るデータ通信システム２４の概略図を示す。１つ以上のクライアント１８を各々が含む、１つ以上のスレッド又はコンピュータプロセス２６は、共有ＲＡＭとして示された共有メモリ２２への通信アクセスを有する。加えて、１つ以上のサーバ２０を各々が含む１つ以上のスレッド又はコンピュータプロセス２８もまた、共有メモリ２２へのアクセスを有する。この意味で、各々のプロセス２６、２８、クライアント１８、及びサーバ２０は、共有メモリ２２へのアクセスを有し得る。加えて、それぞれのクライアント１８又はサーバ２０のみを示すいくつかのプロセス２６、２８が図示されているが、本発明の実施形態は、単一のプロセス２６、２８内のクライアント１８及び／又はサーバ２０の組み合わせを含むプロセス２６、２８を含み得る。サーバ２０が説明されているが、本発明の実施形態は、任意のコンピューティングシステム、ＡＲＩＮＣ６５３オペレーティングシステムを実行するコンピューティングシステム、飛行管理システム、フライトコンピュータ、等を含み得る。
【０００９】
メモリ２２は、ランダムアクセスメモリ（ＲＡＭ）、フラッシュメモリ、若しくは１つ以上の異なるタイプのポータブル電子メモリ、等、又はこれらのタイプのメモリの任意の適切な組み合わせを含み得る。クライアント１８及び／又はサーバ２０は、クライアント１８及び／又はサーバ２０、或いは、それらにおける任意のコンピュータプログラム又はプロセスが、メモリ２２（例えば、「共有メモリ」２２）の少なくとも一部にアクセスし得るように、メモリ２２と動作可能に結合され得る。
【００１０】
本明細書において使用される場合、「プログラム」及び／又は「プロセス」は、それぞれのクライアント１８、サーバ２０、又は航空機機能、の少なくとも１つの管理及び／又は動作を制御するための実行可能な命令のセットを有する、コンピュータプログラムの全部又は一部を含み得る。プログラム及び／又はプロセスは、機械実行可能な命令又はデータ構造を搬送又は記憶するための機械可読媒体を含み得るコンピュータプログラム製品を含み得る。そのような機械可読媒体は、汎用若しくは専用コンピュータ、又はプロセッサを有する他の機械によってアクセスされ得る、任意の利用可能な媒体であり得る。一般的に、そのようなコンピュータプログラムは、特定のタスクを実行するという技術的効果を有するか又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、アルゴリズム、等を含み得る。機械実行可能な命令、関連づけられたデータ構造、及びプログラムは、本明細書に開示される情報の交換を実行するためのプログラムコードの例を表す。機械実行可能な命令は、例えば、汎用コンピュータ、専用コンピュータ、コントローラ、又は専用処理機械に、ある特定の機能又は機能のグループを実行させる、命令及びデータを含み得る。
【００１１】
図１に示されたデータ通信ネットワーク２４は、本発明の一実施形態の概略的な表現にすぎず、複数のクライアント１８及びサーバ２０が航空機の同一のコンピューティングシステム上に設置され得ることを示すために使用される。クライアント１８及びサーバ２０の正確な場所は、本発明の実施形態と密接に関連しない。加えて、より多くの又はより少ないクライアント１８及び／又はサーバ２０が本発明の実施形態に含まれ得る。
【００１２】
通信ネットワーク２４は、クライアント１８とサーバ２０との間の通信相互接続を容易にするための、システムバス又は他のコンピューティングシステム通信コンポーネントを含み得る。更に、通信ネットワーク２４の構成及び動作は、特定の航空機環境に適用可能な規格又は規定の一般的なセットによって定義され得る。
【００１３】
所定の一定のアドレス指定可能なメモリの場所、即ち、メモリ２２の「一定のアドレス」３４に位置付けられた、少なくとも１つのグルーピング、即ち、「トピック」３２への、データ３０の割り振りを更に備える、メモリ２２が示される。本明細書において使用される場合、「トピック」は、航空機のためのデータ記憶の特定の利用のために割り振られる、メモリ２２の所定のサブセットを含み得る。例えば、単一のトピック３２は、航空機の対気速度といったデータの単一の割り振りを備え得るか、又は、それは、中間地点又は現在の飛行計画といった複数の関連又は非関連データ要素を備え得る。示されているように、トピック３２は、単方向リストのように、一定のアドレス３４から始まって順に整列させられ得るが、トピック３２の追加の編成構造は、すべてが一定のアドレス３４の場所から始まる、各々のトピック３２のためのマトリックス、変数割り振り、等を含むように構成され得る。
【００１４】
プロセス２６、２８の各々、及び／又は、それぞれ、クライアント１８及びサーバ２０は、共有メモリ２２の所定の一定のアドレス３４を含むように予め構成される。この意味で、各々のプロセス２６、２８、クライアント１８、及び／又はサーバ２０は、一定のアドレス３４の場所を、それゆえに、アクセスされるデータを有する１つ以上のトピック３２を、識別するように予め構成される。本明細書において使用される場合、各々のクライアント１８及び／又は各々のクライアントプロセス２６は、共有メモリ２２におけるデータにアクセスするための「クライアント」とみなされ得、各々のサーバ２０及び／又は各々のサーバプロセス２８は、共有メモリ２２におけるデータにアクセスするための「サーバ」とみなされ得る。
【００１５】
本発明の一実施形態において、共有メモリ２２におけるトピック３２の数は、クライアント及び／又はサーバにとってアクセス可能なトピック３２の既知の数に基づいて、メモリ２２の初期化中に予め定義される。本発明の別の実施形態において、トピック３２の数は、クライアント及び／又はサーバによってアクセス可能なトピック３２の集合的な数により、ランタイム時又はランタイム中に定義される。この意味で、トピック３２の数は、必要に応じて増減しながら動的であり得るか、又は、追加のトピック３２がアクセスされる必要がある場合に追加されるのみであり得る。
【００１６】
ここで図２を参照すると、各々のトピック３２は更に、特定のデータ要素のために必要とされる所定量のデータを記憶するように構成された複数のバッファ３６を備える。例えば、航空機の対気速度にアクセスするためのトピック３２は、各々が８バイトを記憶するように構成された、複数のバッファ３６を有し得る。別の例では、現在の飛行計画にアクセスするためのトピック３２は、各々が１０００バイトを記憶するように構成された、複数のバッファ３６を有し得る。例示目的のために、占有４４、非占有４６を含み、最新データ４８を含む、異なる分類状態を有する、複数のバッファ３６が示される。各々の状態が、以下に追加の詳細において説明される。
【００１７】
アクティブアクセスポインタディレクタ３８のような、制御する及び／又は向ける機能要素を含む、各々のトピック３２が更に示される。アクティブアクセスポインタディレクタ３８は、データトランザクション要求に基づいて複数のバッファ３６にアクセスを向け、それは、以下において更に説明される。本発明の代替の実施形態は、別個の又はリモートのアクティブアクセスポインタディレクタ３８、例えば、トピック３２とはリモートに設置されたコントローラ又はプロセッサを含み得る。
【００１８】
概略的に示されているように、アクティブアクセスポインタ４２を各々が備える１つ以上のクライアント４０は、それぞれのアクティブアクセスポインタ４２によって識別された特定のバッファ３６にアクセスすることができる。加えて、アクティブアクセスポインタ５２を各々が備える１つ以上のサーバ５０は、それぞれのアクティブアクセスポインタ５２によって示された特定のバッファ３６にアクセスすることができる。示されているように、第１のクライアント５４及び第２のクライアント５６は、それぞれ、第１のバッファ５８及び第２のバッファ６０に関連づけられる。したがって、第１及び第２のバッファ５８、６０は、占有バッファ４４として識別されている。サーバ５０のようにトピック３２に関連づけられていない第３のクライアント６２が示される。アクティブアクセスポインタ４２、５２の各々がそれぞれ、クライアント４０又はサーバ５０の一部として示されている一方で、本発明の実施形態は、トピック３２及び／又はバッファ３６の一部としてアクティブアクセスポインタ４２、５２を含み得る。
【００１９】
本発明の一実施形態において、各々のトピック３２におけるバッファ３６の数、及び各々のバッファ３６のサイズは、共有メモリ２２の初期化中に、トピック３２にアクセスすることができるクライアント４０及び／又はサーバ５０の既知の数に基づいて、予め定義される。本発明の別の実施形態において、各々のトピック３２におけるバッファ３６の数は、ランタイム時又はランタイム中に、続いてトピック３２にアクセスするクライアント４０及び／又はサーバ５０の集合的な数により、定義される。この意味で、バッファ３６の数は、必要に応じて増減しながら動的であり得るか、又は、追加のクライアント４０及び／又はサーバ５０がトピック３２にアクセスしている場合に追加されるのみであり得る。加えて、本発明の実施形態は、トピック３２を定義することと同様の方式でバッファ３６を定義すること、例えば、共有メモリ２２の初期化時にトピック３２及びバッファ３６の両方を予め定義すること、又は、トピック３２を定義することと異なる方式でバッファ３６を定義すること、例えば、トピック３２は予め定義するがバッファ３６は動的に定義されることを含み得る。説明される実施形態のいずれにおいても、バッファ３６の合計数は、トピック３２にアクセスするクライアント４０の数、プラス、トピック３２にアクセスする各々のサーバ５０のための２つのバッファ３６に等しいものであり得る。
【００２０】
ここでは図３を参照して、共有メモリ２２のトピック３２及び／又はバッファ３６におけるデータにアクセスするためのメカニズムが説明される。第３のクライアント６２が、トピック３２に通信可能に結合され、データに伴うトランザクションを要求するために、トピックのアクティブアクセスポインタディレクタ３８と通信する（点線の通信６４として示されている）。アクティブアクセスポインタディレクタ３８が、トピック３２の最新データ４８を含む第３のバッファ６６を識別する第３のクライアント６２に応答する。ここでは第３のバッファ６６に向けられている、第３のクライアント６２は、そのアクティブアクセスポインタ４２を第３のバッファ６６に差し向ける（第２の通信６８として示されている）。この段階で、第３のクライアント６２は、第３のバッファ６６に記憶されたデータ（最新データ４８）にアクセスし、意図されたトランザクションをデータに実行する。
【００２１】
アクティブアクセスポインタディレクタ３８は、要求された特定のトランザクションに基づいて特定のバッファ３６に１つ以上のクライアント４０又はサーバ５０のアクティブアクセスポインタ４２、５２を向け得る。例えば、トランザクションは、バッファ３６に記憶されたデータを読み出すこと（即ち、「読み出し専用」）、バッファ３６に記憶されたデータを読み出すこと、及び読み出されたデータの処理又は演算に基づいてバッファ３６に新たなデータを書き込むこと、クライアントによって提供されたデータに基づいてバッファ３６に新たなデータを書き込むこと（即ち、「読み出し／書き込み」）、及び／又は、例えば、共有メモリ２２の別の部分に、新たなデータを振り向けるための命令により、それが１つ以上のクライアント４０に可視及び／又はアクセス可能であるように、サーバ５０からバッファ３６に新たなデータを書き込むこと（即ち、「記憶」）の少なくとも１つを含み得る。一例において、「記憶」トランザクションは、振り向けられたデータを最新データ４８として識別し得る。
【００２２】
共有メモリ２２のトピック３２及び／又はバッファ３６におけるデータにアクセスするためのメカニズムの一例において、トピック３２と通信して読み出し専用トランザクションを要求する１つ以上のクライアント４０は各々、同一のバッファ、例えば、トピック３２の最新データ４８を含む第３のバッファ６６に割り当てられ得る。いずれのクライアントもこの例ではデータを修正変更しないであろうから、衝突も、アクセスされるデータのデータ完全性に伴う問題も存在しないであろう。そのようなものとして、読み出し専用クライアント４０は、互いに対し非同期に干渉なくそれらのトランザクションを実行し得る。説明されているように、割り当てられる読み出し専用クライアント４０のバッファ３６に対する比は、１対１である必要はなく、それは多数対１であり得る。読み出し専用クライアント４０がそれらのそれぞれのトランザクションを完了すると、それらは、別のトランザクションが要求されるまで、それらのそれぞれのバッファ３６に通信可能に結合されないことができる。第２のトランザクションが要求されると、同一のバッファ３６における同一のデータであり得るか、又は、同一の若しくは異なるバッファ３６における新たなデータであり得る、アクティブアクセスポインタディレクタ３８により識別された最新データ４８に、クライアント４０がアクセスし得るよう、メカニズムが繰り返される。
【００２３】
図３に示されたメカニズムの上に成り立つメカニズムの上記例が、図４に示され得る。この例において、サーバ５０は、第１のバッファ５８に読み出し／書き込みトランザクションを実行していたが、ここでは書き込まれるデータが「新たな」最新データ４８として識別されるであろう。示されているように、サーバ５０が読み出し／書き込みトランザクションを完了すると、サーバ５０は、第１のバッファ５８との通信を切断し、第１のバッファ５８が「新たな」最新データ４８を含むことをアクティブアクセスポインタディレクタ３８に通信するであろう（通信は、点線の通信７２として示されている）。アクティブアクセスポインタディレクタ３８が今度は、最新データ４８を含むものとして第１のバッファ５８を識別し、ここで、新たに通信するクライアント４０を第１のバッファ５８の最新データ４８に向けるであろう。同じく示されているように、サーバ５０が新たな読み出し／書き込みトランザクションを要求すると、アクティブアクセスポインタディレクタ３８はオプションで、第１のバッファの最新データ４８を第４のバッファ７０にコピーし、新たな読み出し／書き込みトランザクションを実行するために第４のバッファ７０にサーバ５０のアクティブアクセスポインタ５２を向ける。
【００２４】
バッファ３６でトランザクションを実行する任意のサーバ５０がそのトランザクションを完了すると、トランザクションのタイプに関わらず、サーバ５０はオプションで、トランザクションが完了したことをアクティブアクセスポインタディレクタ３８に教え得る。アクティブアクセスポインタディレクタ３８は、この意味で、どのバッファ３６が現在使用されているか及び／又は現在アクセスされているかの記録を保持し得る。サーバ５０が追加のトランザクションを要求すると、サーバは、アクティブアクセスポインタディレクタ３８と通信し、アクティブアクセスポインタディレクタ３８は、新たなトランザクションを完了させる非占有バッファ４６を割り当てるであろう。
【００２５】
この例はサーバ５０の動作を示しているが、クライアント４０が同様の読み出しトランザクションを実行可能であり得ることが理解されるであろう。更に、本発明の実施形態は、本明細書に説明されたのと同様の読み出し又は読み出し／書き込みトランザクションを提供し得る、クライアント４０及び／又はサーバ５０を含み得る。この意味で、サーバ５０は時に、それがあたかもクライアント４０であるかのように機能し得、クライアント４０は時に、それがあたかもサーバ５０であるかのように機能し得る。しかしながら、クライアント４０及びサーバ５０の動作にはいくつかの差が存在する。例えば、複数の読み出し専用クライアント４０が同時に単一のバッファ３６にアクセスできる一方で、単一のサーバ５０しか一度に単一のバッファ３６にアクセスすることができない。別の例において、アクティブアクセスポインタディレクタ３８は、クライアント４０のアクティブアクセスポインタ４２を、トランザクションのための最新データ４８を含むバッファに向け得るが、アクティブアクセスポインタディレクタ３８は、最新データ４８のデータ破損を防止するために、サーバ５０のアクティブアクセスポインタ５２を、非占有バッファ４６に向けるのみで最新データ４８のバッファには決して向けないであろう。
【００２６】
上述されたメカニズムは、トピック３２のバッファ３６の１つが、１つ以上のクライアント４０及び／又は１つ以上のサーバ５０によるアクセスのために、最新データ４８を含むものとしてアクティブアクセスポインタディレクタ３８により常に識別されるように、配列及び構成される。加えて、上述されたメカニズムは、トピック３２のアクセス可能なデータにトランザクションを実行する各々のクライアント４０が、クライアント４０がトランザクションを要求したときに最新データ４８へのアクセスを提供されるように、構成され得る。より最新のデータが既存のクライアント４０のトランザクション中に識別されると、そのクライアント４０は、要求されたトランザクションのときに最新データ４８へのトランザクションを完了させるであろう。別の言い方をすれば、最新データ４８は、トランザクション中でもトランザクションの完了時でもなく、トランザクションの要求時に、確認又は保証されるのみであり得る。
【００２７】
上述されたメカニズムは、機械アセンブリ言語を超えて設計レベルでデータをコピーすることなく、例えば、オペレーティングシステムレベルでデータをコピーすることなく（例えば、「ゼロコピー」で）、機械アセンブリ言語トランザクションのみを使用して動作し得る。上述された本発明の実施形態の技術的効果は、最新データ４８が決して他のクライアント４０及び／又はサーバ５０によりアクセスを「ロック」又は「ブロック」されないように、クライアント４０及び／又はサーバ５０を、アクティブアクセスポインタ４２、５２を使用して、最新データ４８を含むそれぞれのバッファ３６に向けることにより、ゼロコピー動作が達成されることである。加えて、機械アセンブリ言語の使用は、ポインタの「アトミックスワップ」操作を可能にするが、ポインタの「アトミックスワップ」操作では、更新が単一のアトミック操作サイクルで完了させられるので、アクティブアクセスポインタへの他の更新により割込まれることができず、というのも、他の更新はアトミックスワップより短い操作サイクルで完了させられることができないからである。
【００２８】
機械アセンブリ言語命令及び基本的なデータ構造（例えば、単方向リスト、基本的なポインタ）を利用することにより、メカニズムは、ゼロコピーデータ交換を使用して、プロセスの優先順位の構成を複雑にすることなく、又は、「優先順位の逆転」現象もなしでアクセス可能なデータへの「ロックフリー」又は「ブロックフリー」アクセスを可能にすることで、共有メモリ２２における少なくとも１つのサーバ５０と少なくとも１つのクライアント４０との間の非同期プロセス間データ通信を提供し、たとえより高い優先順位のプロセスがアクセスを要求したとしても、より低い優先順位のプロセスへのプレアクセスがデータをロックし、アクセスのためにそれを「解放」しない。実際、機械命令を使用する動作は、「ファーストワントゥザデータウィン」の傾向があるので、より高い優先順位のプロセスは常に、それらの動作をまず実行し得る。
【００２９】
本発明の実施形態は更に、プログラミングアプリケーションプログラマブルインターフェース（ＡＰＩ）を提供して、ＡＰＩを介しオペレーティングシステムレベル（又はアプリケーションレベル、等）でメカニズムにアクセスすることにより、上述されたメカニズムを利用し得る。技術的効果は、上述された実施形態が、データロック、データブロック、及び／又は優先順位の逆転を防止するためのゼロコピー方法を提供することである。
【００３０】
上記実施形態において実現され得る追加の利点は、上述された実施形態が、非機械言語レベルでのデータコピーの労力の結果として生じる良好でないシステム性能を防止することである。データコピーの労力は、大きなファイルの読み出し及び／又は書き込み要求のために長い時間期間を要し得る。ポインタ及びポインタスワップを利用することにより、追加のコピーが回避され得る一方で、データへのアクセスを必要とするすべてのコンポーネントへのアクセスを提供する。上述された実施形態の別の利点は、バッファにおけるより古いデータを上書きするためのビルトインメカニズムを含むので、いずれのタイプの「ガベージコレクション」データ管理スキームも必要としない。更に、サーバから１つ以上のクライアントへの典型的なデータ共有が、グローバルなデータストレージを作成すること、及び、それを、例えばオペレーティングシステムレベルでの、セマフォ（即ち、ロック／アンロックインジケータのようなアクセス制御値）、任意の他のミューテックス、又はロッキングデータ保護（例えば、データ割込み、等）を使用して保護し、その後にデータをコピーすることにより、達成されるが、それらは、特にデータストアが大きい場合、処理時間の観点で非常にコストがかかり得る。これは、本明細書において説明された、より効率的で、より高速なロックフリーアクセス動作を可能にする。
【００３１】
上述された実施形態において実現され得る他の利点は、トピックの設計が、プロセスを緩慢に結合させ続けるフレキシビリティを有し、調整をほとんど必要とせず、「ステージドスタートアップ」を必要としない（即ち、プロセス、クライアント、及び／又はサーバが任意の時間にオンラインになり得る）ことを含む。加えて、上述されたＡＰＩの実現は、システム開発のための減じられた開発コスト、及び、異なるコピー方法と比較して同様のハードウェアでの増大した性能マージン、という結果を生じ得る。
【００３２】
未だ説明されていない程度まで、様々な実施形態の異なる特徴及び構造が所望の通りに互いと組み合わせられて使用され得る。１つの特徴が実施形態のすべてで説明され得ないことは、それがなくてもよいと解釈されるように意図されているのではなく、説明の簡潔さのためになされている。かくして、異なる実施形態の様々な特徴は、新たな実施形態が明らかに説明されていようとされていまいと、新たな実施形態を形成するために所望の通りに混合され、調和させられ得る。本明細書において説明された特徴のすべての組み合わせ又は置き換えが、本開示によってカバーされる。
【００３３】
記載されたこの説明は、ベストモードを含む発明を開示し、また、任意のデバイス又はシステムの製造及び使用と組み込まれた任意の方法の実行とを含む発明の実現をいずれの当業者にも可能にさせるために、例を使用する。本発明の特許可能な範囲は、請求項によって定義され、当業者が想到する他の例を含み得る。そのような他の例は、それらが請求項の文字通りの言語と異ならない構造要素を有する場合、又は、それらが請求項の文字通りの言語との実質的な差を有しない均等な構造要素を含む場合、請求項の範囲内であるように意図される。
【符号の説明】
【００３４】
１８  列線交換ユニット（ＬＲＵ）
２０  サーバ
２２  メモリ
２４  データ通信システム、データ通信ネットワーク
２６  ＬＲＵプロセス
２８  サーバプロセス
３０  データ割り振り
３２  トピック
３４  一定のアドレス
３６  複数のバッファ
３８  アクティブアクセスポインタディレクタ
４０  クライアント
４２  アクティブアクセスポインタ
４４  占有バッファ
４６  非占有バッファ
４８  最新データバッファ
５０  サーバ
５２  アクティブアクセスポインタ
５４  第１クライアント
５６  第２クライアント
５８  第１バッファ
６０  第２バッファ
６２  第３クライアント
６４  第１通信
６６  第３バッファ
６８  第２通信
７０  第４バッファ
７２  第３通信
７４  第４通信
【図１】
2016062608.tif 000003
【図２】
2016062608.tif 000004
【図３】
2016062608.tif 000005
【図４】
2016062608.tif 000006
【外国語明細書】
2016062608000001.pdf