JP2016062608A - 共有メモリにおけるデータにアクセスするためのメカニズム及び方法 - Google Patents

共有メモリにおけるデータにアクセスするためのメカニズム及び方法 Download PDF

Info

Publication number
JP2016062608A
JP2016062608A JP2015178038A JP2015178038A JP2016062608A JP 2016062608 A JP2016062608 A JP 2016062608A JP 2015178038 A JP2015178038 A JP 2015178038A JP 2015178038 A JP2015178038 A JP 2015178038A JP 2016062608 A JP2016062608 A JP 2016062608A
Authority
JP
Japan
Prior art keywords
data
topic
buffer
client
server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
JP2015178038A
Other languages
English (en)
Inventor
グレゴリ・リード・サイクス
Reed Sykes Gregory
クリスチャン・レイノルズ・デッカー
Reynolds Decker Christian
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
GE Aviation Systems LLC
Original Assignee
GE Aviation Systems LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by GE Aviation Systems LLC filed Critical GE Aviation Systems LLC
Publication of JP2016062608A publication Critical patent/JP2016062608A/ja
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)
  • Memory System (AREA)

Abstract

【課題】共有メモリにおけるデータにアクセスするためのメカニズム及び方法を提供する。
【解決手段】少なくとも1つのクライアント18(列線交換ユニット)により共有メモリ22におけるデータにアクセスするためのメカニズム及び方法は、共有メモリ22におけるデータの割り振りであって、メモリが複数のバッファ32において構成される、割り振りと、データへのアクセスをロック又は制限せずにクライアント18又はサーバ20によりデータにアクセスすることとを含む。
【選択図】図1

Description

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

Claims (15)

  1. 少なくとも1つのクライアント(40)により共有メモリ(22)におけるデータにアクセスするためのメカニズムであって、
    前記共有メモリ(22)におけるデータの少なくとも1つのトピック(32)への割り振りであって、所定の一定のアドレス(34)によりアクセス可能である割り振りと、
    複数のバッファ(36)を有する前記少なくとも1つのトピック(32)であって、前記バッファ(36)の数は、前記少なくとも1つのトピック(32)にアクセスするクライアント(40)の数プラス前記少なくとも1つのトピック(32)にアクセスする各々のサーバ(50)のための2つに等しい、前記少なくとも1つのトピック(32)と、
    アクティブアクセスポインタ(42、52)を有する各々のクライアント(40)及び各々のサーバ(50)と、
    クライアント(40)又はサーバ(50)からのトランザクション要求に基づいてバッファ(36)にアクティブアクセスポインタ(42、52)を向けるためのアクティブアクセスポインタディレクタ(38)と
    を備え、1つのバッファ(36)は常に、前記共有メモリ(22)における最新データ(48)を含み、少なくとも1つのバッファ(36)は常に、前記共有メモリ(22)におけるデータにアクセスするために利用可能であり、
    前記アクティブアクセスポインタ(42、52)は、オペレーティングシステムレベルで前記データをコピーせずに、機械アセンブリ言語トランザクションのみを使用して、前記アクティブアクセスポインタディレクタ(38)によりバッファ(36)間で割り振られる、メカニズム。
  2. 前記メカニズムは、飛行管理システムである、請求項1に記載のメカニズム。
  3. 複数のトピック(32)が、前記共有メモリ(22)において整列させられる、請求項1に記載のメカニズム。
  4. 前記少なくとも1つのトピック(32)及び前記複数のバッファ(36)は、前記共有メモリ(22)の初期化中に予め定義される、請求項1に記載のメカニズム。
  5. 前記少なくとも1つのトピック(32)又は前記複数のバッファ(36)の少なくとも1つは、ランタイム中に、前記少なくとも1つのトピック(32)にアクセスするクライアント及びサーバ(50)の集合的な数により定義される、請求項1に記載のメカニズム。
  6. 前記クライアント(40)又はサーバ(50)の少なくとも1つは、前記向けられたアクティブアクセスポインタバッファに関連づけられたデータにアクセスする、請求項1に記載のメカニズム。
  7. 前記アクティブアクセスポインタディレクタ(38)は、完了したトランザクション要求に応答して、前記最新データ(48)を備える異なるバッファに新たなトランザクションのためのアクティブアクセスポインタ(42、52)を向ける、請求項6に記載のメカニズム。
  8. 少なくとも1つのクライアント(40)により共有メモリ(22)におけるデータにアクセスするための方法であって、
    前記共有メモリ(22)におけるデータを少なくとも1つのトピック(32)に割り振ることと、
    各々の少なくとも1つのトピック(32)にアクセスするための単一の所定のアドレスを割り当てることと、
    各々の少なくとも1つのトピック(32)のために、前記少なくとも1つのトピック(32)にアクセスするクライアント(40)の数プラス前記少なくとも1つのトピック(32)にアクセスする各々のサーバ(50)のための2つに等しい、複数のバッファ(36)を割り振ることと、
    クライアント(40)又はサーバ(50)の少なくとも1つからのトランザクション要求に、各々のそれぞれのクライアント(40)又はサーバ(50)のためのアクティブアクセスポインタ(42、52)をバッファ(36)に割り振ることにより、応答することと
    を備え、前記データは、オペレーティングシステムレベルで前記データをコピーせずに前記バッファ(36)を介してアクセスされる、方法。
  9. 前記バッファ(36)を介して前記データにアクセスすることは、データロックを防止する、請求項8に記載の方法。
  10. 前記データを少なくとも1つのトピック(32)に割り振ること、前記単一の所定のアドレスを割り当てること、及び前記各々の少なくとも1つのトピック(32)のために複数のバッファ(36)を割り振ることは、前記共有メモリ(22)の初期化中に行われる、請求項8に記載の方法。
  11. 前記データを少なくとも1つのトピック(32)に割り振ること又は前記各々の少なくとも1つのトピック(32)のために複数のバッファ(36)を割り振ることの少なくとも1つは、ランタイム中に、前記少なくとも1つのトピック(32)にアクセスするクライアント(40)及びサーバ(50)の集合的な数に基づいて行われる、請求項8に記載の方法。
  12. 前記トランザクション要求に応答することは更に、前記共有メモリ(22)における最新データ(48)を備えるバッファ(36)に各々のそれぞれのクライアント(40)のための前記アクティブアクセスポインタ(42、52)を向けることを備える、請求項8に記載の方法。
  13. 前記クライアント(40)又はサーバ(50)の少なくとも1つが前記アクセスされたデータにトランザクションを実行することを更に備える、請求項12に記載の方法。
  14. 前記トランザクションを実行することは、前記データを読み出すこと、前記バッファ(36)に新たなデータを書き込むこと、又は前記共有メモリ(22)に前記バッファデータを記憶することの少なくとも1つを備える、請求項13に記載の方法。
  15. 完了したトランザクション要求に応答して、前記最新データ(48)を備える異なるバッファ(36)に各々のそれぞれのクライアント(40)又はサーバ(50)のための前記アクティブアクセスポインタ(42、52)を向けることを更新することを更に備える、請求項14に記載の方法。
JP2015178038A 2014-09-15 2015-09-10 共有メモリにおけるデータにアクセスするためのメカニズム及び方法 Ceased JP2016062608A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/486,336 US9794340B2 (en) 2014-09-15 2014-09-15 Mechanism and method for accessing data in a shared memory
US14/486,336 2014-09-15

Publications (1)

Publication Number Publication Date
JP2016062608A true JP2016062608A (ja) 2016-04-25

Family

ID=54363001

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015178038A Ceased JP2016062608A (ja) 2014-09-15 2015-09-10 共有メモリにおけるデータにアクセスするためのメカニズム及び方法

Country Status (7)

Country Link
US (1) US9794340B2 (ja)
JP (1) JP2016062608A (ja)
CN (1) CN105589754B (ja)
BR (1) BR102015020854A2 (ja)
CA (1) CA2902844A1 (ja)
FR (1) FR3025908B1 (ja)
GB (1) GB2532842B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180039011A (ko) * 2016-07-21 2018-04-17 바이두 유에스에이 엘엘씨 자율 주행 차량을 작동하는 컴퓨팅 노드들 사이의 효율적 통신

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10560542B2 (en) * 2014-09-15 2020-02-11 Ge Aviation Systems Llc Mechanism and method for communicating between a client and a server by accessing message data in a shared memory
US9710190B1 (en) * 2014-09-30 2017-07-18 EMC IP Holding Company LLC Shared memory
US10140036B2 (en) 2015-10-29 2018-11-27 Sandisk Technologies Llc Multi-processor non-volatile memory system having a lockless flow data path
US10417261B2 (en) 2016-02-18 2019-09-17 General Electric Company Systems and methods for flexible access of internal data of an avionics system
US10037166B2 (en) 2016-08-03 2018-07-31 Ge Aviation Systems Llc Tracking memory allocation
US10282251B2 (en) 2016-09-07 2019-05-07 Sandisk Technologies Llc System and method for protecting firmware integrity in a multi-processor non-volatile memory system
US11531645B2 (en) * 2017-12-15 2022-12-20 Slack Technologies, Llc Method, apparatus and computer program product for improving data indexing in a group-based communication platform
JP7042138B2 (ja) * 2018-03-30 2022-03-25 日立Astemo株式会社 処理装置
WO2020139395A1 (en) * 2018-12-28 2020-07-02 Didi Research America, Llc Reading messages in a shared memory architecture for a vehicle
US11327489B2 (en) 2018-12-28 2022-05-10 Beijing Voyager Technology Co., Ltd. Shared memory architecture for a vehicle
WO2020139396A1 (en) * 2018-12-28 2020-07-02 Didi Research America, Llc Writing messages in a shared memory architecture for a vehicle
US10747597B2 (en) 2018-12-28 2020-08-18 Beijing Voyager Technology Co., Ltd. Message buffer for communicating information between vehicle components
WO2020139389A1 (en) * 2018-12-28 2020-07-02 Didi Research America, Llc Shared memory architecture for a vehicle
US10785170B2 (en) * 2018-12-28 2020-09-22 Beijing Voyager Technology Co., Ltd. Reading messages in a shared memory architecture for a vehicle
WO2020139393A1 (en) * 2018-12-28 2020-07-02 Didi Research America, Llc Message buffer for communicating information between vehicle components
US10572405B1 (en) 2018-12-28 2020-02-25 Didi Research America, Llc Writing messages in a shared memory architecture for a vehicle
US11995922B2 (en) 2020-07-30 2024-05-28 Ge Aviation Systems Llc Flight management system and method for reporting an intermitted error
CN112486684B (zh) * 2020-11-30 2022-08-12 展讯半导体(成都)有限公司 行车影像显示方法、装置及平台、存储介质、嵌入式设备
US11893273B2 (en) * 2022-01-20 2024-02-06 Vmware, Inc. Crash-safe tiered memory system

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0551528B1 (en) 1991-08-06 1999-01-27 Fujitsu Limited Method and apparatus for reducing lock period of shared buffer
US5715447A (en) 1991-08-06 1998-02-03 Fujitsu Limited Method of and an apparatus for shortening a lock period of a shared buffer
KR0152714B1 (ko) 1995-12-06 1998-10-15 양승택 다중 사용자 환경의 저장시스템에서 버퍼 잠금기법을 이용한 버퍼 관리방법
WO2001013229A2 (en) 1999-08-19 2001-02-22 Venturcom, Inc. System and method for data exchange
US20020144010A1 (en) * 2000-05-09 2002-10-03 Honeywell International Inc. Communication handling in integrated modular avionics
US7454477B2 (en) * 2005-05-16 2008-11-18 Microsoft Corporation Zero-copy transfer of memory between address spaces
US20080148095A1 (en) * 2006-12-14 2008-06-19 Motorola, Inc. Automated memory recovery in a zero copy messaging system
CN101296236B (zh) * 2008-06-12 2011-06-08 北京中星微电子有限公司 多用户实时访问多媒体数据的方法、系统及数据客户端
US8555292B2 (en) * 2008-06-27 2013-10-08 Microsoft Corporation Synchronizing communication over shared memory
US8316368B2 (en) * 2009-02-05 2012-11-20 Honeywell International Inc. Safe partition scheduling on multi-core processors
US9098462B1 (en) * 2010-09-14 2015-08-04 The Boeing Company Communications via shared memory
US9396227B2 (en) 2012-03-29 2016-07-19 Hewlett Packard Enterprise Development Lp Controlled lock violation for data transactions
WO2013191606A1 (en) * 2012-06-21 2013-12-27 Saab Ab Dynamic memory access management
US9176872B2 (en) * 2013-02-25 2015-11-03 Barco N.V. Wait-free algorithm for inter-core, inter-process, or inter-task communication

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180039011A (ko) * 2016-07-21 2018-04-17 바이두 유에스에이 엘엘씨 자율 주행 차량을 작동하는 컴퓨팅 노드들 사이의 효율적 통신
JP2018531436A (ja) * 2016-07-21 2018-10-25 バイドゥ ドットコム タイムズ テクノロジー(ペキン)カンパニー リミテッドBaidu.com Times Technology (Beijing) Co., Ltd. 自律走行車における処理ノードのデータフローを管理する方法、装置及びシステム
KR102004060B1 (ko) * 2016-07-21 2019-07-25 바이두 유에스에이 엘엘씨 자율 주행 차량을 작동하는 컴퓨팅 노드들 사이의 효율적 통신

Also Published As

Publication number Publication date
GB2532842B (en) 2018-05-23
US9794340B2 (en) 2017-10-17
CN105589754A (zh) 2016-05-18
CA2902844A1 (en) 2016-03-15
GB2532842A (en) 2016-06-01
BR102015020854A2 (pt) 2016-03-29
US20160080491A1 (en) 2016-03-17
FR3025908B1 (fr) 2019-07-12
CN105589754B (zh) 2021-05-28
FR3025908A1 (fr) 2016-03-18
GB201516085D0 (en) 2015-10-28

Similar Documents

Publication Publication Date Title
JP2016062608A (ja) 共有メモリにおけるデータにアクセスするためのメカニズム及び方法
CN105426258B (zh) 在客户端与服务器之间通信的机制和方法
US8301717B2 (en) Extended virtual memory system and method in a computer cluster
US9378069B2 (en) Lock spin wait operation for multi-threaded applications in a multi-core computing environment
CN107113341B (zh) 用于数据划分的分布式关系数据库管理系统中事务的高吞吐量处理的系统
CN102629221B (zh) 用于分布式共享存储的任务同步方法、装置及系统
US20080082771A1 (en) Hardware memory locks
DE102012206019A1 (de) Zuweisung von Zählern aus einem Bestand an Zählern, um Zuordnungenlogischer Register zu physischen Registern für die von einer Zuordnungseinheit veranlasste Ausführung von Anweisungen zu kontrollieren
KR102026877B1 (ko) 메모리 관리 유닛 및 그 동작 방법
US9684614B2 (en) System and method to convert lock-free algorithms to wait-free using a hardware accelerator
US10338965B2 (en) Managing a set of resources
US20170344398A1 (en) Accelerator control device, accelerator control method, and program storage medium
US10967813B2 (en) Vehicle control device
US20190332529A1 (en) Atomic operations for fabric shared memories
US8006064B2 (en) Lock-free vector utilizing a resource allocator for assigning memory exclusively to a thread
CN104679662A (zh) 用于管理共享存储器的方法和系统
CN115686346A (zh) 一种数据存储方法、设备及计算机可读存储介质
US20140351550A1 (en) Memory management apparatus and method for threads of data distribution service middleware
US7117496B1 (en) Event-based synchronization
CN108933813B (zh) 防止读取器饥饿的方法、系统和存储介质
CN108614740A (zh) 基于进程间共享内存方式生成唯一id的方法及系统
CN115543952A (zh) 用于分布式系统中的共享存储器访问api的方法和系统
CN113535087A (zh) 数据迁移过程中的数据处理方法、服务器及存储系统
US20100057741A1 (en) Software resource access utilizing multiple lock tables
US10481951B2 (en) Multi-queue device assignment for application groups

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180907

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20190402

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190410

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190528

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190828

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191001

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200106

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200824

A045 Written measure of dismissal of application [lapsed due to lack of payment]

Free format text: JAPANESE INTERMEDIATE CODE: A045

Effective date: 20210125