Programming and Usage Models for Non-Volatile Memory
When: March 14, 2015 (1:30pm-5:00pm)
Where: ASPLOS 2015, Istanbul
Non-volatile memory (NVM) technologies, such as phase-change memory, memristors, spin-transfer torque MRAM, and others promise high-bandwidth, low-latency persistent storage through the standard memory interface. However, making memory persistent poses a number of challenges, including how to ensure data is durable in the presence of processor caches, and how to ensure consistency of updates. This tutorial will briefly survey NVM technologies, and then cover (i) usage models, such as file systems and persistent memory (ii), programming models, such as NV-Heaps and Mnemosyne’s persistent heaps, and (iii) consistency and durability mechanisms.
Presenters
-
Michael M. Swift
Computer Sciences Department
University of Wisconsin–Madison -
Haris Volos
HP Labs
Scope and Objectives
The primary scope of this tutorial is software abstract of non-volatile memory technologies. Thus, it will cover a bit of background on non-volatile memory itself (various candidate technologies and their properties, such as wear-out, latency, bandwidth, and connection technology). The focus, though, is on software use: how can systems expose non-volatile memory to programs for their use.
The objectives for this tutorial are that attendees understand current proposals on how to use non-volatile memory, what programming frameworks exist to use non-volatile memory today, what hardware exists/has been proposed to support non-volatile memory use.
Possible Topics
- Non-volatile memory technologies: 15 minutes
This portion presents an overview of candidate NVM technologies and their properties, indicating what considerations software has. - Non-volatile memory programming models: 1.5 hour
This portion covers different programming models for using NVM, such as high-speed SSDs, file systems, persistent heaps, special-purpose persistent data structures, and how to incorporate NVM into databases. - Hardware support for persistent memory: 45 minutes
This portion describes proposed hardware that optimizes the implementation of NVM software. These efforts have largely focused on better support for consistency and durability. - How to get started with available software: 40 minutes
This portion describes available software packages from prior research projects, with the goal of letting researchers bootstrap their projects. We will discuss both programming systems and available workloads. We will go through the development cycle of writing, compiling, and running a simple persistent hash table (key-value store) as an illustrative example of using persistent memory.
Persistent Memory Reading List
- Mnemosyne: Lightweight Persistent Memory. Haris Volos, Andres Jaan Tack, Michael M. Swift . ASPLOS ‘11: Proceedings of the 16th International Conference on Architectural Support for Programming Languages and Operating Systems, March 2011.
- Better I/O Through Byte-Addressable, Persistent Memory. Jeremy Condit, Edmund B. Nightingale, Christopher Frost, Engin Ipek, Doug Burger, Benjamin Lee, and Derrick Coetzee Proceedings of the 22nd Symposium on Operating Systems Principles (SOSP 2009).
- Memory Persistency. Steven Pelley, Peter M. Chen and Thomas F. Wenisch. ISCA ‘14 Proceeding of the 41st annual international symposium on Computer architecuture Pages 265-276
- Loose-Ordering Consistency for persistent memory. Y Lu, J Shu, L Sun, O Mutlu. IEEE International Conference on Computer Design (ICCD). 2014.
- Kiln: Closing the Performance Gap Between Systems With and Without Persistence Support. Jishen Zhao, Sheng Li, Doe Hyun Yoon, Yuan Xie, and Norman P. Jouppi. In Proceedings of the International Symposium on Microarchitecture (MICRO), 2013
- WrAP: Managing Byte-Addressable Persistent Memory. Ellis Giles, Kshitij Doshi, Peter Varman, ACM Computing Frontiers, May 2013.
- Consistent and Durable Data Structures for Non-Volatile Byte-Addressable Memory. Shivaram Venkataraman, Niraj Tolia, Parthasarathy Ranganathan and Roy H. Campbell. 9th USENIX Conference on File and Storage Technologies, San Jose, CA, USA, February 15-17, 2011.
- System Software for Persistent Memory. Subramanya R Dulloor, Sanjay K Kumar (Intel Labs), Anil Keshavamurthy (Intel Corp), Philip Lantz, Dheeraj Subbareddy, Rajesh Sankaran, Jeff Jackson (Intel Labs). EuroSys 2014. (Intel’s paper on PMFS).
- Intel Architecture Instruction Set Extensions Programming Reference. Chapter 11 has new instructions for persistence.
- Atlas: leveraging locks for non-volatile memory consistency. Dhruva Chakrabarti, Hans-J. Boehm and Kumud Bhandari. OOPSLA 2014.
- Moneta: A High-Performance Storage Array Architecture for Next-Generation, Non-volatile Memories. Adrian M. Caulfield, Arup De, Joel Coburn, Todor I. Mollov, Rajesh K. Gupta, and Steven Swanson Proceedings of the 2010 43rd Annual IEEE/ACM International Symposium on Microarchitecture, 2010.
- Providing Safe, User Space Access to Fast, Solid State Disks. Adrian M. Caulfield, Todor I. Mollov, Louis Eisner, Arup De, Joel Coburn, and Steven Swanson Proceeding of the 17th international conference on Architectural support for programming languages and operating systems, 2012.
- Programming Models for Emerging Non-Volatile Memory Technologies. Andy Rudoff, ;login: June 2013, Volume 38, Number 3
- NV-Heaps: Making Persistent Objects Fast and Safe With Next-Generation, Non-Volatile Memories. Joel Coburn, Adrian M. Caulfield, Ameen Akel, Laura M. Grupp, Rajesh K. Gupta, Ranjit Jhala, and Steven Swanson Proceedings of the sixteenth international conference on Architectural support for programming languages and operating systems, 2011.
- Using Managed Runtime Systems to Tolerate Holes in Wearable Memories. T. Gao, K. Strauss, S. M. Blackburn, K. S. McKinley, D. Burger, and J. Larus. in PLDI ‘13: Proceedings of the 34th ACM SIGPLAN conference on Programming Language Design and Implementation, Seattle, WA, USA, June, 2013.
Persistent Memory Software Packages
- Mnemosyne. Mnemosyne provides a simple interface for programming with persistent memory. Mnemosyne addresses two challenges: how to create and manage such memory, and how to ensure consistency in the presence of failures. Without additional mechanisms, a system failure may leave data structures in SCM in an invalid state, crashing the program the next time it starts. Mnemosyne provides primitives for directly modifying persistent variables and supports consistent updates through a lightweight transaction mechanism.
- NVM Library. The NVM Library is a library for using memory-mapped persistence, optimized specifically for persistent memory.
- PMFS. PMFS is a file system for persistent memory. The file system is optimized to be lightweight and efficient in providing access to persistent memory that is directly accessible via CPU load/store instructions.
- BPFS. BPFS is a file system designed for byte-addressable, persistent memory technologies (in particular, phase change memory). It uses these mediums and careful file system design to provide dramatically stronger durability and consistency guarantees to applications: BPFS commits each file system operation synchronously and atomically.
- PCMSIM. A block device driver for Linux that simulates the presence of a Phase Change Memory (PCM), a type of a non-volatile (persistent) byte-addressable memory (NVBM), in the system installed in one of the DIMM slots on the motherboard. The simulator is implemented as a kernel module for Linux that creates /dev/pcm0 when it is loaded - a ramdisk-backed block devices with latencies that of PCM.