C++ Extensions for Persistent Memory Programming

Overview

Interest is growing in persistent memory technologies. Currently available products include nonvolatile dual in-line memory module (NVDIMM-N) and dynamic random-access memory (DRAM) with NAND flash-based storage.  New technologies are emerging, such as Intel® 3D XPoint™ memory, which will ship with the Intel® Xeon® processor Scalable family refresh codenamed Cascade Lake.These new hardware types offer exciting new possibilities to developers, while at the same time introducing programming challenges.

Persistent memory programming is fundamentally different from traditional programming to volatile memory due to its requirement to ensure data retention after program completion, an application or system crash, or a power failure. Intel developed and open-sourced a set of libraries called the Persistent Memory Developer Kit (PMDK) to make it easier to convert an application to use persistent memory. This paper describes the C++ API for the libpmemobj  library of the PMDK, along with other proposed changes to the C++ standard.

Download Technical Article (PDF)  

Resources

Persistent Memory Programming on Intel Developer Zone

pmem.io - for programming with the Persistent Memory Developer Kit (PMDK)

Github site for persistent memory programming

Google Group for persistent memory programming

CppCon 2017: Tomasz Kapela's session C++ and Persistent Memory Technologies, Like Intel's 3D-XPoint

 

 

 

For more complete information about compiler optimizations, see our Optimization Notice.