持續性記憶體 (PM) 技術可為非揮發性媒體提供位元節層級存取,同時大幅降低儲存或擷取數據的延遲。 它會在系統的記憶體和傳統記憶體之間建立新層。 任何依賴或調整且具有快速寫入永續性媒體的程式都可以受益於 PM。
本文的目的是要概述如何將非揮發性記憶體連結庫 (NVML) 整合到 Visual Studio 專案中以方便使用。
注意
持續性記憶體有時也稱為記憶體類別記憶體 (SCM)。
PM 和 NVML
Windows Server 2016 和 Windows 10 年度更新版 (1607) 引進了持續記憶體的第一個支援。 如需快速概觀,請參閱這兩個 Channel9 影片:
- 在 Windows Server 2016 中使用非揮發性記憶體 (NVDIMM-N) 作為區塊記憶體
- 在 Windows Server 2016 中使用非揮發性記憶體 (NVDIMM-N) 作為 Byte-Addressable 記憶體
為了協助開發人員利用持續性記憶體供應項目的優點,Microsoft也促成了將非揮發性記憶體連結庫 (NVML) 帶入 Windows 的努力。 此連結庫提供各種工具來讓應用程式持續記憶體感知。 例如,它包含程序代碼,可讓您輕鬆地建立 PM 感知索引鍵/值存放區,以進行極快速的查閱和存放區。 您可以在 NVM 連結庫找到 NVML 的詳細資訊,包括範例。
將 NVML 整合到 Visual Studio 專案
- 下載 NVML 連結庫檔案和標頭
- NVML 會在 GitHub 上維護。 您可以自行編譯來源,或直接從這裡下載已編譯的二進位檔:NVML 1.2 版 - Windows Technical Preview。
將連結庫檔案和標頭放在您選擇的目錄中,例如:“C:\NVML\lib” 和 “C:\NVML\inc”。
設定您的專案,如下所示:
- 開啟 Visual Studio 專案,然後在 [方案總管] 中以滑鼠右鍵按兩下項目的名稱。
- 開啟結果彈出視窗底部的項目設定窗格。
- 流覽至 [組態屬性 -> C/C++],並將您儲存標頭的資料夾 (C:\NVML\inc) 新增至 [其他包含目錄] 字段。
- 接下來,流覽至 [組態屬性 -> 連結器],並將您儲存連結庫的資料夾 (C:\NVML\lib) 新增至 [其他連結庫目錄] 字段
- 接下來,請確定您以 Windows Server 2016 或 Windows 10 年度更新版為目標的專案:
- 流覽至 [組態屬性 -> 一般],並將 [目標平臺版本] 字段設定為 “10.0.14393.0” 和
- 流覽至 [組態屬性 -> C/C++],並將 “NTDDI_VERSION=NTDDI_WIN10_RS1;” 新增至 [預處理器] 字段。
- 在您的程式代碼中包含標頭,並連結至所需的連結庫
- 此時,您可以只包含您想要在程式碼中使用的頭檔,就像任何其他頭文件一樣。 例如,若要使用 libpmem:
- 新增 「#include <libpmem.h>」 和
- 將 “libpmem.lib” 新增至 “Configuration Properties -> Linker -> 輸入 -> 其他相依性”
此時,您已準備好直接在程式碼中呼叫連結庫的函式,並利用它們。