Persistence programming models for non-volatile memory

It is expected that DRAM memory will be augmented, and perhaps eventually replaced, by one of several up-and-coming memory technologies. These are all non-volatile, in that they retain their contents without power. This allows primary memory to be used as a fast disk replacement. It also enables more aggressive programming models that directly leverage persistence of primary memory. However, it is challenging to maintain consistency of memory in such an environment. There is no consensus on the right programming model for doing so, and subtle differences can have large, and sometimes surprising, effects on the implementation and its performance. The existing literature describes multiple programming systems that provide point solutions to the selective persistence for user data structures. Real progress in this area requires a choice of programming model, which we cannot reasonably make without a real understanding of the design space. Point solutions are insufficient. We systematically explore what we consider to be the most promising part of the space, precisely defining semantics and identifying implementation costs. This allows us to be much more explicit and precise about semantic and implementation trade-offs that were usually glossed over in prior work. It also exposes some promising new design alternatives.

[1]  Anoop Gupta,et al.  The SPLASH-2 programs: characterization and methodological considerations , 1995, ISCA.

[2]  Terence Kelly,et al.  Failure-Atomic Persistent Memory Updates via JUSTDO Logging , 2016, ASPLOS.

[3]  Adam Welc,et al.  Practical weak-atomicity semantics for java stm , 2008, SPAA '08.

[4]  Hans-J. Boehm Transactional memory should be an implementation technique, not a programming interface , 2009 .

[5]  Thomas F. Wenisch,et al.  High-Performance Transactions for Persistent Memories , 2016, ASPLOS.

[6]  Youyou Lu,et al.  Loose-Ordering Consistency for persistent memory , 2014, 2014 IEEE 32nd International Conference on Computer Design (ICCD).

[7]  Hans-Juergen Boehm Performance implications of fence-based memory models , 2011, MSPC '11.

[8]  Thomas F. Wenisch,et al.  Persistency programming 101 , 2014 .

[9]  Ryan Johnson,et al.  Scalable Logging through Emerging Non-Volatile Memory , 2014, Proc. VLDB Endow..

[10]  Hideaki Kimura,et al.  FOEDUS: OLTP Engine for a Thousand Cores and NVRAM , 2015, SIGMOD Conference.

[11]  James R. Larus,et al.  Transactional Memory , 2006, Transactional Memory.

[12]  Michael M. Swift,et al.  Hathi: durable transactions for memory using flash , 2012, DaMoN '12.

[13]  Terence Kelly,et al.  Procrastination Beats Prevention: Timely Sufficient Persistence for Efficient Crash Resilience , 2015, EDBT.

[14]  Christopher Frost,et al.  Better I/O through byte-addressable, persistent memory , 2009, SOSP '09.

[15]  Michael M. Swift,et al.  Mnemosyne: lightweight persistent memory , 2011, ASPLOS XVI.

[16]  Justin Gottschlich Generic Programming Needs Transactional Memory , 2013 .

[17]  Rajesh K. Gupta,et al.  NV-Heaps: making persistent objects fast and safe with next-generation, non-volatile memories , 2011, ASPLOS XVI.

[18]  Leslie Lamport,et al.  How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs , 2016, IEEE Transactions on Computers.

[19]  Jeremy Manson,et al.  The Java memory model , 2005, POPL '05.

[20]  Peter Snyder,et al.  tmpfs: A Virtual Memory File System , 1990 .

[21]  D. Stewart,et al.  The missing memristor found , 2008, Nature.

[22]  Sanjay Kumar,et al.  System software for persistent memory , 2014, EuroSys '14.

[23]  Victor Luchangco,et al.  Transaction communicators: enabling cooperation among concurrent transactions , 2011, PPoPP '11.

[24]  Milo M. K. Martin,et al.  Deconstructing Transactional Semantics: The Subtleties of Atomicity , 2005 .

[25]  Onur Mutlu,et al.  Architecting phase change memory as a scalable dram alternative , 2009, ISCA '09.

[26]  Thomas F. Wenisch,et al.  Memory persistency , 2014, 2014 ACM/IEEE 41st International Symposium on Computer Architecture (ISCA).

[27]  Stratis Viglas,et al.  REWIND: Recovery Write-Ahead System for In-Memory Non-Volatile Data-Structures , 2015, Proc. VLDB Endow..

[28]  Håkan Grahn,et al.  Transactional memory , 2010, J. Parallel Distributed Comput..

[29]  Hans-Juergen Boehm,et al.  Atlas: leveraging locks for non-volatile memory consistency , 2014, OOPSLA.

[30]  Orion Hodson,et al.  Whole-system persistence , 2012, ASPLOS XVII.

[31]  Hans-Juergen Boehm,et al.  Foundations of the C++ concurrency memory model , 2008, PLDI '08.