コンピュータサイエンスにおいて、永続メモリとは、データ構造を効率的に保存し、データ構造を作成または最後に変更したプロセスが終了した後でも、メモリ命令またはメモリAPIを使用して引き続きアクセスできるようにする方法または装置です。[1]
不揮発性ランダム アクセス メモリ(NVRAM)と混同されることも多い永続メモリは、それを作成したプロセスの障害ゾーン外に存在するプログラム状態を重視する点で、永続性の概念とより密接に関連しています。(プロセスとは、実行中のプログラムです。プロセスの障害ゾーンとは、プログラムを実行するコンピューターで使用されている信頼性の低いコンポーネントなどにより障害が発生した後もプロセスが実行を継続することで 破損する可能性があるプログラム状態のサブセットです。)
効率的でメモリのようなアクセスは、永続メモリの特徴です。[2]これは、ロードやストアなどのマイクロプロセッサ メモリ命令を使用して提供できます。また、RDMA読み取りやRDMA書き込みなどのリモートダイレクトメモリアクセス(RDMA)アクションを実装するAPIを使用して提供することもできます。バイト粒度[説明が必要]のデータアクセスを 可能にするその他の低レイテンシ方法も適格です。
永続メモリの機能は、保存されたビットの不揮発性だけにとどまりません。たとえば、ページ テーブル エントリや仮想アドレスを物理アドレスに変換するその他の構成要素などの主要なメタデータが失われると、永続ビットが非永続的になる可能性があります。この点で、永続メモリは、ファイル システムなどのより抽象的な形式のコンピュータ ストレージに似ています。実際、既存のほぼすべての永続メモリ技術は、保存されたエクステントに名前または識別子を関連付けるために使用できる基本的なファイル システムを少なくとも実装しており、少なくとも、そのようなエクステントに名前を付けて割り当てるために使用できるファイル システム メソッドを提供しています。
非永続書き込みの読み取り問題
非永続書き込みの読み取り問題は、永続メモリ上のロックフリープログラムで発生します。比較スワップ(CAS) 操作では、書き込まれた値が永続メモリに永続化されないため、変更されたデータが永続メモリのクラッシュ オブザーバーによって観測される前に、キャッシュ コヒーレンス プロトコルによって同時オブザーバーに対して変更されたデータが可視化される可能性があります。書き込みが可視化されたがまだ永続化されていない直後に電源障害が発生すると、非永続書き込みの読み取り問題が発生する可能性があります。つまり、比較スワップ操作によって変更されたデータ変数が、クラッシュ オブザーバーよりも前に同時オブザーバーに対して可視化され、クラッシュの不整合が発生する可能性があります。
問題を例に挙げると、単一リンクのロックフリーリストの場合、ノードがプロデューサーによって挿入されたthread A後head、nextヘッドノードのポインタが新しい を指すようにアトミックに切り替えられます (CAS) node A。ただし、この CAS は永続化されません。次に、の CAS がすべての同時スレッドにすでに表示されているため、thread Bの後に別のノードがプロデューサーによって挿入されます。CAS はのポインタをを指すようにアトミックに切り替え、この CAS が永続化されます。この時点で電源障害が発生すると、リンクリストを使用するアプリケーションは、からへのポインタが永続化されていないため、 と の両方が失われ、不整合な状態になります。は公開されていますが再起動後にアクセスできず、 を介してアクセスされるか に依存するその他のデータが永続化されている可能性があるため、そのようなデータへの後続のすべてのアクセスは不可能になり、データ損失が発生します。[3]node Anode Anextnode Anode Bnode Anode Bnextheadnode Anode Bnode B
非永続的書き込みの読み取り問題は、ロックフリーのリンクリストに限定されず、同時可視性と永続的可視性の間に潜在的なギャップが存在する可能性のあるロックフリーのデータ構造で発生する可能性があります。たとえば、同様の問題が永続的な循環バッファで発生する可能性があります。[4]
参照
- NOVA (ファイルシステム)または「不揮発性メモリ高速化」は、バイトアドレス指定可能な永続メモリ用のオープンソースのログ構造化ファイルシステムです。
- 永続データ、アクセス頻度が低く、変更される可能性が低い情報
- 永続的なデータ構造、変更されても常に以前のバージョンを保持するデータ構造(実質的に不変)
- 永続的なオペレーティングシステムであるPhantom OS
参考文献
- ^ Satish M. Thatte. 1986. 「永続メモリ: オブジェクト指向データベース システム用のストレージ アーキテクチャ」。1986 年国際オブジェクト指向データベース システム ワークショップ (OODS '86) の議事録。IEEE Computer Society Press、米国カリフォルニア州ロサンゼルスアラミトス、148-159 ページ。
- ^ P. Mehra および S. Fineberg、「高速で柔軟な永続性: オンライン データ ストアのフォールト トレランス、スケーラビリティ、パフォーマンスを実現する魔法の薬」、第 18 回国際並列分散処理シンポジウム、2004 年。議事録、サンタフェ、ニューメキシコ州、米国、2004 年、pp. 206-。doi: 10.1109/IPDPS.2004.1303232
- ^ Wang, William; Diestelhorst, Stephan (2019 年 6 月 17 日)。「不揮発性メモリ用の耐久性のあるロックフリー データ構造を実装するための永続アトミック (簡単な発表)」。アルゴリズムとアーキテクチャにおける並列処理に関する第 31 回 ACM シンポジウム。Association for Computing Machinery。pp. 309– 311。doi : 10.1145 /3323165.3323166。ISBN 9781450361842. S2CID 195064876 – ACM Digital Library経由。
- ^ Wolczko, Mario (2019年4月26日). 「不揮発性メモリとJava: パート2」. Medium .
外部リンク
- 永続メモリプログラミング、永続メモリプログラミングに関連するリソースのコレクション
- コンテナと永続データ、LWN.net、2015 年 5 月 28 日、Josh Berkus 著
- 非同期 DRAM リフレッシュ (ADR)、SNIA、2014 年 1 月 (DRAM にも適用)
- Twizzler: 次世代メモリ階層のオペレーティング システム、カリフォルニア大学サンタクルーズ校技術レポート UCSC-SSRC-17-01、2017 年 12 月 5 日、Daniel Bittman、Matt Bryson、Yuanjiang Ni、Arjun Govindjee、Isaak Cherdak、Pankaj Mehra、Darrell DE Long、Ethan L. Miller 著
