亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

ホームページ システムチュートリアル Windowsシリーズ 永続的なメモリプログラミング

永続的なメモリプログラミング

Sep 30, 2025 am 10:47 AM
linux git windows idea github オペレーティング·システム バイト ios bios win プログラミングアルゴリズム linu

永続的なメモリプログラミング

2013年6月に、私は不揮発性メモリ(NVM)の將來のインターフェイスについて書きました。 SNIA NVMプログラミングテクニカルワークグループ(TWG)による開発中のNVMプログラミングモデルについて説明しています。過去4年間で、仕様がリリースされ、予測(cè)されたように、プログラミングモデルは多くのフォローアップ努力の焦點(diǎn)になりました。このプログラミングモデルは、仕様でnvm.pm.fileとして説明されており、オペレーティングシステムによってPMをファイルとしてメモリにマッピングできます。この記事では、永続的なメモリプログラミングモデルがオペレーティングシステムでどのように実裝されているか、どのような作業(yè)が行われたか、どのような課題が直面しているかを紹介します。

永続的なメモリの背景

PMとストレージクラスのメモリは同じ用語であり、バイトアドレス指定、ロード/ストレージメモリアクセスの特性がありますが、持続性があります。この記事では、DRAM DIMMSなどのシステムメモリバスにPMSを掛けることに焦點(diǎn)を當(dāng)て、NVDIMMSと呼ばれる不揮発性DIMMのクラスを作成します。

永続的なメモリと言われているものについてさらに詳しく説明するために、NVDIMMのみが議論され、ソフトウェアがメモリのようにアクセスできるようにします。 CPUキャッシュの一貫性、他のデバイスのDMAダイレクトメモリアクセス、バイオテにアドレス指定できるバッファリングミトコンドリアアクセスなど、メモリセマンティクスのすべての利點(diǎn)を提供します。これらのセマンティクスを提供するには、CPUにアクセスするときに命令がCPUを遅らせるのに十分な理由を合理的にブロックする必要があります。 NANDフラッシュは、ブロックでアクセスする必要があり、コンテキストを切り替えるのに十分な時(shí)間がかかるため、永続的なメモリとして使用すると遅くなります。通常、ハードウェアアクセスの時(shí)間はミリ秒?yún)g位で、NAND Flash SSDは微妙なユニットで、PMはナノ秒です。ハードウェアメディアタイプに応じて、NVDIMMはDRAMほど高速ではない場(chǎng)合がありますが、その速度はすでにその速度に匹敵します。

市場(chǎng)に出回っている一部のNVDIMM製品は、実行時(shí)にDRAMをメディアとして使用しています。電源がオフになると、コンテンツは自動(dòng)的にNand Flashにバックアップされ、再度電源が入ると、コンテンツはDRAMに返されます。これらの製品はDRAMのパフォーマンスを提供しますが、データを保存するために追加のコンポーネントとバッテリーが必要であり、DRAMと比較して各DIMMに対して少量の容量と大量の消費(fèi)量を提供します。 2015年にIntelとMicronが共同で開発した3D XPointテクノロジーなど、新たに出現(xiàn)している非揮発性メディアは、DRAMよりも高い容量を通過します。各CPUはTの帯域幅に達(dá)し、持続的なメモリが多くの當(dāng)事者から最先端の注意を引き付けます:持続性、容量、消費(fèi)。

永続的なメモリプログラミングモデル

アプリケーションは永続的なメモリにどのようにアクセスしますか?揮発性メモリとは異なり、アプリケーションには特定の方法と指定された永続的なコンテンツ接続が必要です。永続的なメモリは、揮発性メモリほど匿名ではありません。アプリケーションが見つけることができるように、ファイルのような領(lǐng)域に名前を付ける必要があります。アプリケーションには、永続的なメモリにアクセスするための制御権限が必要です。 SNIA TWGプログラミングモデルは、オペレーティングシステムが標(biāo)準(zhǔn)ファイルセマンティクスを使用して、永続的なメモリの命名、許可、およびメモリマッピングを提供できるため、推奨されます。

現(xiàn)在、このモデルは、LinuxやWindowsなどのさまざまなオペレーティングシステムでサポートされています。

永続的なメモリプログラミング
ダックス

図1に示す永続的なメモリに適応したファイルシステムにより、システムのページキャッシュを通過せずに永続的なメモリに直接アクセスできます。このような機(jī)能はDaxと呼ばれます。永続的なメモリプログラミングモデルとDAX機(jī)能は、MMAP()またはMapViewOffile()に類似したフラグ関數(shù)を使用して、永続的なメモリファイルをメモリにマッピングできることを示しています。このタイプは図1の右端の形式です。アプリケーションは、ロード/ストアディレクティブを介して永続的なメモリに直接アクセスします。ユーザーステートとカーネルステートを切り替えることなく、永続的なメディアに直接アクセスできます。

ストレージの持続性

Linuxシステムは、MSYNC()またはFSYNC()を使用してデータの持続性を確保でき、WindowsはflushViewOffile()およびflushFilebuffers()を介してデータの持続性を確保できます。これらの呼び出しはメモリトレイを作成し、このポイントの前にすべてのデータが永続的なメモリに持続しています。歴史的に、このストレージゲートは、オペレーティングシステムがページキャッシュ內(nèi)の汚れたページを見つけてからディスクにフラッシュする必要がありました。永続的なメモリはページキャッシュを使用しないため、オペレーティングシステムはCPUキャッシュの変更を永続的なメモリにフラッシュするだけです。図2に示すように:

永続的なメモリプログラミング

図2の點(diǎn)線セクションは、永続的なドメインを示しています。このレベルのアーキテクチャでは、データの點(diǎn)線部分は、DIMMまたはメモリコントローラーの書き込み要求キューWPQのいずれかです。リターンに関係なく、永続的なメモリは、點(diǎn)線のボックス內(nèi)のデータを永続的な媒體にフラッシュするのに十分な力を必要とします。この機(jī)能は非同期DRAMブラシと呼ばれ、NVDIMMSにはすでにこの機(jī)能があります。

X86アーキテクチャでは、ストレージ手順を?qū)g行するだけでは、データがCPUキャッシュにある可能性があり、電源が切れるとデータが失われるため、データの持続性を確保しません。データの持続性を確保するには、追加のフラッシュ命令が必要です。次の表には、それらがどのように機(jī)能するかについて説明します。

図2と表1は、IntelがCPUキャッシュを永続的なドメイン部分に取得しない理由を混亂させている可能性があります。技術(shù)的に実行可能なCPUキャッシュは、図1の點(diǎn)線に含まれています。 2。

CPUキャッシュを含む永続的なドメインを拡張することの問題は、X86キャッシュが非常に大きく、コンデンサが実際に提供できるよりもはるかに多くのパワーが必要であることです。これは、プラットフォームにバッテリーが必要であることを意味します。現(xiàn)時(shí)點(diǎn)では、永続的なメモリをサポートするサーバーにバッテリーを用意することは現(xiàn)実的ではありません。しかし、もちろん、ハードウェアベンダーの場(chǎng)合、商品にバッテリーを含めることができます。これにより、表1に記載されている読み取りバッファリフレッシュ命令をスキップできますが、SFENCEの障害はグローバルに見える場(chǎng)合にのみ持続すると見なされるため、SFENCE命令が依然として必要です。

アプリケーションベンダーはバッテリーを使用することを計(jì)畫しており、すべてのプラットフォームが將來CPUキャッシュを永続的なドメインに含めることを期待しているため、CPUフラッシュがスキップされたときにBIOSがオペレーティングシステムに通知できるようにACPIにプロパティを追加します。これにより、オペレーティングシステムはMSYNCのような呼び出しを最適な方法で実裝できます。

永続的なドメインへのユーザースペースをフラッシュします

WBINVDの例外、Intel CPUは、ユーザーモードの表1で説明されている指示をサポートしています。 CLWB(ClflushotまたはClflush)を使用してキャッシュラインを書き込み、ユーザーモードで一時(shí)的なストレージをサポートします。

永続的なメモリプログラミング

これにより、カーネルを通過せずにユーザースペースから永続的なメモリにフラッシュすることができ、この機(jī)能は最適化されたフラッシュと呼ばれます。オペレーティングシステムとハードウェアに応じて、各プラットフォームはこの機(jī)能を選択的にサポートしています。 CPUサポートにもかかわらず、アプリケーションの場(chǎng)合、最適化されたフラッシュは、オペレーティングシステムが安全であると言っている場(chǎng)合にのみ使用されます。ファイルシステムメタデータが変更されると、MSYNCフラッシュが必要です。オペレーティングシステムには、この制御ポイントが必要です。

セキュリティをサポートするユーザースペースブラシの現(xiàn)在の実裝は常に進(jìn)化しています。 Dax for Windowsは、最適化されたフラッシュに対する無條件のサポートを含む、NTFSファイルシステムによって提供されます。 Windowsは、CLWB Sfenceなどの手順を使用して、データを永続的なメモリに持続させます。 LinuxのExt4およびXFSはDAXをサポートし、ユーザースペースフラッシュセキュリティを考慮する必要はありません。一時(shí)的なソリューションとして、Linuxはデバイスダックスを提供します。これにより、アプリケーションは永続的なメモリデバイスをオンにし、メモリにマッピングし、ユーザースペースフラッシュを使用して永続性を確保できます。

LIBPMEMライブラリは、最適化されたフラッシュが安全な場(chǎng)合にアプリケーションを伝える機(jī)能を提供します。プログラマーは、LIBPMEMを使用してユーザースペースを決定および使用してフラッシュすることを強(qiáng)くお?jiǎng)幛幛筏蓼埂?LIBPMEMは、プラットフォームのバッテリーの使用を検出するためにも使用され、フラッシュコールを単純なSFENCE命令コールに変換します。このライブラリについては、以下で詳しく説明します。

永続的なメモリチャレンジ

メモリのデータ構(gòu)造が変化すると、原子性の問題が発生します。他のスレッドは、このデータ構(gòu)造にアクセスするときに変更されたデータの半分のみを取得しますか?ロックは通常、マルチスレッドプログラミング時(shí)にデータ構(gòu)造を保護(hù)するために使用されます。ハードウェアの原子性を確保するために命令が使用される場(chǎng)合があります。この記事では、Atomicityも可視性になりました。変更が送信された場(chǎng)合にのみ、別のスレッドがこのスレッドの変更を確認(rèn)できます。

永続的なメモリプログラミング

libpmemobjライブラリは、停電が安全であることを確認(rèn)するためのトランザクション保証を提供します。永続的なメモリが表示される前に、停電などの書き込みが中斷されると、揮発性であるため、メモリ?duì)顟B(tài)に問題はありません。ただし、永続的なメモリでは、フラッシュ後に一部の狀態(tài)が持続していることを理解する必要があります。 Intelは8バイトのストレージのみを使用して、障害原子性を確保します。 8バイトを超える場(chǎng)合、データの一貫性は保証されません。

その他の課題:スペースを管理します。永続的なメモリドメインはファイルとして扱われるため、ファイルシステムはこのスペースを管理できますが、メモリにマッピングされると、ファイルで起こることはアプリケーションに完全に依存します。 mallocと同様の関數(shù)によって割り當(dāng)てられるメモリは揮発性です。再起動(dòng)中に永続的なメモリペアを再接続する方法も提供しません。また、障害が発生した場(chǎng)合にデータの一貫性を確保するための手順を辭任しません。したがって、永続的なメモリプログラミングでは、スペースの割り當(dāng)ての問題への対処に焦點(diǎn)を當(dāng)てる必要があります。

アドレスの獨(dú)立性は別の課題です。同じアドレスへの永続的なマッピングは技術(shù)的に実裝できますが、これは他のマッピングされたアイテムがサイズが変更された場(chǎng)合に実用的ではありません。ランダム化アドレススペースレイアウトの機(jī)能により、オペレーティングシステムはライブラリとファイルマッピングアドレスをランダムに調(diào)整します。アドレスの獨(dú)立性とは、メモリ內(nèi)の永続的なデータ構(gòu)造は、ポインターを使用する別のデータ構(gòu)造を指すことを意味します。これは、ファイルが別のアドレスにマッピングされていても、何らかの方法で使用する必要があります。これを行うには、マッピング後のポインターの再配置、絶対ポインターの代わりに相対ポインターを使用する、または何らかのタイプのオブジェクトIDを使用して、永続的なメモリに存在するデータ構(gòu)造を適用するなど、いくつかの方法があります。

NVMライブラリ

Intelが開発したPMDKライブラリは、GitHubのオープンソース、オープンソースプロトコルBSDであり、ユーザーマニュアルはhttp://pmem.ioから見ることができます。

libpmem:基本ライブラリ

このライブラリは比較的小さく、比較的単純であり、CPUがサポートするフラッシュ命令を検出し、範(fàn)囲コピーに最適な指示を使用することが含まれます。

libpmemobj:サポートトランザクション

libpmemblkおよびlibpmemlog:特定のユーザーケースをサポートします

libmemkind:永続的なメモリ揮発性使用

要約します

2013年のアイデアは成熟し、完全なプログラミングモデルに追加されました。 PMDKライブラリは、永続的なメモリプログラミング用に開発されました。このライブラリは、github https://github.com/pmemで開いています

オリジナル

https://www.snia.org/pm-summit2019

https://www.snia.org/pm-summit2017

以上が永続的なメモリプログラミングの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Stock Market GPT

Stock Market GPT

AIを活用した投資調(diào)査により賢明な意思決定を?qū)g現(xiàn)

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ホットトピック

オペレーティングシステムとは何ですか? オペレーティングシステムとは何ですか? Oct 12, 2025 am 04:19 AM

システムが失敗してストアが応答しない場(chǎng)合は、次の手順を試してください: 1. デバイスを再起動(dòng)します。 2. 十分なメモリとストレージがあるかどうかを確認(rèn)します。 3. ソフトウェアとドライバーが最新であることを確認(rèn)します。 4. ユーザー権限とセキュリティ設(shè)定を確認(rèn)します。

win11でタスクバーの時(shí)計(jì)を秒に設(shè)定する方法_win11のタスクバーの時(shí)計(jì)に表示される秒を設(shè)定する方法 win11でタスクバーの時(shí)計(jì)を秒に設(shè)定する方法_win11のタスクバーの時(shí)計(jì)に表示される秒を設(shè)定する方法 Oct 14, 2025 am 11:21 AM

Windows 11 では、設(shè)定、レジストリ、コマンド ライン、またはサードパーティ ツールを使用して、タスク バーの時(shí)計(jì)に秒を表示できるようにできます。 1. 設(shè)定でオンにします。 [個(gè)人用設(shè)定] → [タスクバー] → [タスクバーの動(dòng)作] に移動(dòng)し、[システム トレイの時(shí)計(jì)に秒を表示する] をオンにします。 2. レジストリの変更: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced の下に新しい DWORD 値 ShowSecondsInSystemClock を作成し、1 に設(shè)定します。 3. コマンド ラインの実行: PowerShell を管理者として実行し、「regaddHKCU\Softw」と入力します。

Windows で DNS キャッシュをフラッシュするにはどうすればよいですか?ネットワークの問題に関するコマンド プロンプトのチュートリアル。 Windows で DNS キャッシュをフラッシュするにはどうすればよいですか?ネットワークの問題に関するコマンド プロンプトのチュートリアル。 Oct 12, 2025 am 03:47 AM

Web サイトにアクセスできない場(chǎng)合は、Windows で DNS キャッシュをフラッシュしてみてください。1. OpenCommand Promptasadmin.2. Runipconfig/flushdns.3. ipconfig/displaydns で成功を確認(rèn)します。4. 必要に応じて、netshintippreset を使用して TCP/IP スタックをリセットし、再起動(dòng)します。

Google ChromeのWebテキストハイライト機(jī)能が使えない場(chǎng)合はどうすればいいですか? Google ChromeのWebテキストハイライト機(jī)能が使えない場(chǎng)合はどうすればいいですか? Oct 13, 2025 am 10:58 AM

Chrome 131 バージョンには、テキストの強(qiáng)調(diào)表示が失敗する既知のバグがあります。主に TailwindCSS を使用する Web サイトに影響します。この問題は、バージョン 131.0.6778.86 以降に更新し、ブラウザを再起動(dòng)することで解決できます。問題がまだ存在する場(chǎng)合は、拡張機(jī)能または Web サイトのスタイルの競(jìng)合のトラブルシューティングを行う必要があります。必要に応じて、閲覧データをクリアするか、テーマ設(shè)定を確認(rèn)してください。

古いバージョンの Windows の互換モードでアプリを?qū)g行するにはどうすればよいですか? 古いバージョンの Windows の互換モードでアプリを?qū)g行するにはどうすればよいですか? Oct 14, 2025 am 02:32 AM

Windows 11 で古いアプリの問題が発生した場(chǎng)合は、互換モードを使用します。組み込みのトラブルシューティング ツールを?qū)g行し、過去の Windows バージョンを手動(dòng)で選択し、管理者権限を有効にし、表示とパフォーマンスを向上させるために高 DPI 設(shè)定を調(diào)整します。

WindowsでDNSキャッシュをクリアする方法_DNSキャッシュリフレッシュコマンドの詳しい説明 WindowsでDNSキャッシュをクリアする方法_DNSキャッシュリフレッシュコマンドの詳しい説明 Oct 13, 2025 am 11:45 AM

1. DNS キャッシュを更新すると、Web ページの読み込み失敗やドメイン名解決エラーの問題を解決できます。 2. コマンド プロンプトから ipconfig/flushdns を?qū)g行して、システムの DNS キャッシュをクリアします。 3. 管理者としてコマンド プロンプトを?qū)g行し、DNSClient サービス (netstopdnscache および netstartdnscache) を再起動(dòng)して、サービス機(jī)能を復(fù)元します。 4. Chrome ブラウザで chrome://net-internals/#dns にアクセスし、[Clearhostcache] をクリックしてブラウザの獨(dú)立した DNS キャッシュをクリアします。 5. DNS サーバーを 8.8.8.8 および 8.8.4.4 に変更すると、解決速度と精度が向上します。

Windows PC でディスクのデフラグを?qū)g行するにはどうすればよいですか?最適化を推進(jìn)するためのガイド。 Windows PC でディスクのデフラグを?qū)g行するにはどうすればよいですか?最適化を推進(jìn)するためのガイド。 Oct 14, 2025 am 03:47 AM

Windows PC が遅い場(chǎng)合は、ディスクのデフラグを試してください。1. 內(nèi)蔵のデフラグ ツールを使用してドライブを分析し、最適化します。2. 自動(dòng)最適化を毎週または毎月スケジュールします。3. デフラグ コマンドによる高度な制御には、管理者権限でコマンド プロンプトを使用します。

win11でゲームプレイ時(shí)に畫面ティアリングを設(shè)定する方法_Win11ゲーム畫面ティアリング修復(fù)と設(shè)定チュートリアル win11でゲームプレイ時(shí)に畫面ティアリングを設(shè)定する方法_Win11ゲーム畫面ティアリング修復(fù)と設(shè)定チュートリアル Oct 14, 2025 am 11:18 AM

畫面のティアリングは、グラフィックス カードのフレーム レートがモニターのリフレッシュ レートと同期していないことが原因で発生します。これは、ウィンドウ最適化を有効にし、全畫面最適化をオフにし、垂直同期を設(shè)定し、リフレッシュ レートを調(diào)整し、自動(dòng) HDR をオフにすることで解決できます。

See all articles