Glossary of Terms Used on This Site
It seems the industry is mostly aligned on these terms, but not 100%. Taken literally, the terms Non-Volatile Memory and Persistent Memory would seem to be the same thing. But in contemporary usage, the terms are different. Here’s how these terms are used by this project.
Non-Volatile Memory (NVM)
This term refers to the category of solid-state storage devices, from the Flash Memory used in Solid State Disk (SSD) drives, to battery-backed up memory cards, to the emerging non-volatile technologies such as 3D XPoint, PCM, Memristor, STT-RAM, etc.
In this project we use the term NVM to refer to the entire class of non-volatile technologies. For the faster varieties, where direct, load/store access is appropriate, read on…
This term refers to memory that maintains its contents across power failure. We specifically refer to memory technologies that are fast enough so it is reasonable to stall a CPU load instruction, waiting for a load directly from persistent memory.
By this definition, the NAND Flash used in SSDs would not qualify as persistent memory when accessed directly, but battery-backed DRAM or (hopefully) the emerging non-volatile memory technologies would qualify for direct access.
Given the above definitions, one might ask why the current project is called the NVM Library and not the Persistent Memory Library. The goal is to design the NVM Library so it can leverage the direct load/store capabilities of persistent memory, but also work on other NVM technologies (albeit not as optimally). Since the programming model for persistent memory is based on memory-mapped files, the library will work correctly on top of any NVM technology (like an SSD with a traditional file system on it).