Implications of CPU Caching on Byte-addressable Non-Volatile Memory Programming

Byte-addressable non-volatile memory may usher in a new era of computing where in-memory data structures are persistent and can be reused directly across machine restarts. However, sudden failures complicate matters because a program state may partially reside in volatile buffers and caches as opposed to primary non-volatile memory. We study the implications of different CPU caching modes and show that a particular choice affects both programmability and performance of a program.