Abstract
Recent advances in Non-Volatile Memory (NVM) technologies blur the line between storage and memory, creating a disruptive change to the way software is written. The new SNIA NVM Programming Model describes behavior provided by operating systems enabling applications, file systems, and other software to take advantage of new NVM capabilities. This tutorial describes how the programming model addresses NVM extensions for existing devices (such as SSDs) and persistent memory (such as NVDIMMs). It also describes the differences between software written for block storage (SSDs, disks) and persistent memory and the potential benefits of adapting software for persistent memory.