Wed 7 Nov 2018 20:15 - 20:17 at Georgian - Poster & SRC
New non-volatile memory (NVM) technologies allow direct, durable storage of data in an application’s heap. Durable random-access memory can simplify the construction of reliable applications that do not lose data at a system shutdown or power failure. Existing NVM programming frameworks are intended for non-object-oriented native languages such as C and do not gracefully support an object-oriented language such as C++. They lack support for common abstractions — transient fields, function pointers, and virtual methods — which results in error-prone programming practices.
This paper proposes a new NVM language extension and runtime system that supports object-oriented programming and alleviates the programming pitfalls of prior approaches. At the heart of our approach is object reconstruction, which transparently restores a persistent object’s state during process restart. We describe NVMReconstruction
, a Clang/LLVM extension and a runtime library, which implements the language extension and object reconstruction that significantly simplifies writing correct programs that exploit byte-addressable persistent memory with these features: (i) transient fields in persistent objects, (ii) support for object-oriented requirements such as type inheritance and virtual functions, (iii) direct representation of persistent pointers as virtual addresses, and (iv) type-specific reconstruction of a persistent object during program restart. In addition, NVMReconstruction
supports upgrading an application, even if the size of an object increases, by enabling object migration. NVMReconstruction
also performs compaction to reduce fragmentation of the persistent heap. Experiments demonstrate the versatility of object reconstruction and its low runtime performance cost.