skip to main content
10.1145/3237009.3237027acmotherconferencesArticle/Chapter ViewAbstractPublication PagesmanlangConference Proceedingsconference-collections
research-article

Defining a high-level programming model for emerging NVRAM technologies

Published: 12 September 2018 Publication History

Abstract

Byte-addressable non-volatile memory is poised to become prevalent in the near future. Thanks to device-level technological advances, hybrid systems of traditional dynamic random-access memory (DRAM) coupled with non-volatile random-access memory (NVRAM) are already present and are expected to be commonplace soon. NVRAM offers orders of magnitude performance improvements over existing storage devices. Due to NVRAM's low overheads, many future applications are expected to leverage the fine-grain durable storage provided by NVRAM.
Many frameworks for programming NVRAM have been proposed. Unfortunately, these existing frameworks closely mirror the underlying hardware. This lack of abstraction hurts programmer productivity, makes it easy to write buggy code, and limits the compiler's effectiveness. Furthermore, this low level of abstraction does not match the expectations of managed language users.
To rectify this situation, in this paper we describe a new high-level NVRAM programming model amenable to managed languages. Because our model is defined at a high level, it is intuitive, not prone to user bugs, and is flexible enough to allow language implementers to perform many optimizations while still adhering to the model.
In addition to proposing this model, we also briefly describe how Java can be extended to support our new model. Finally, we present some initial results on the performance overheads of creating durable applications in NVRAM and describe what future work we intend to complete.

References

[1]
Intel 64 and IA-32 Architectures Software Develop's Manual. https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-instruction-set-reference-manual-325383.pdf
[2]
Intel Optane Technology. https://www.intel.com/content/www/us/en/architecture-and-technology/intel-optane-technology.html
[3]
NVM Programming Model vl.2. https://www.snia.org/sites/default/files/technical_work/final/NVMProgrammingModel_v1.2.pdf
[4]
Persistent Memory Development Kit. http://pmem.io/pmdk/
[5]
H. Akinaga and H. Shima. 2010. Resistive Random Access Memory (ReRAM) Based on Metal Oxides. Proc. IEEE 98, 12 (Dec 2010), 2237--2251.
[6]
Malcolm Atkinson, Ken Chisholm, and Paul Cockshott. 1982. PS-algol: An Algol with a Persistent Heap. SIGPLAN Not. 17, 7 (July 1982), 24--31.
[7]
Malcolm Atkinson and Mick Jordan. 2000. A Review of the Rationale and Architectures of PJama: A Durable, Flexible, Evolvable and Scalable Orthogonally Persistent Programming Platform. Technical Report. Mountain View, CA, USA.
[8]
Malcolm Atkinson and Ronald Morrison. 1995. Orthogonally Persistent Object Systems. The VLDB Journal 4, 3 (July 1995), 319--402. http://dl.acm.org/citation.cfm?id=615224.615226
[9]
Stephen M. Blackburn, Robin Garner, Chris Hoffmann, Asjad M. Khang, Kathryn S. McKinley, Rotem Bentzur, Amer Diwan, Daniel Feinberg, Daniel Frampton. Samuel Z. Guyer, Martin Hirzel, Antony Hosking, Maria Jump, Han Lee. J. Eliot B. Moss, Aashish Phansalkar, Darko Stefanović, Thomas VanDrunen. Daniel von Dincklage, and Ben Wiedermann. 2006. The DaCapo Benchmarks: Java Benchmarking Development and Analysis. In Proceedings of the 21st Annual ACM SIGPLAN Conference on Object-oriented Programming Systems, Languages, and Applications (OOPSLA '06). ACM, New York, NY, USA, 169--190.
[10]
Luc Bläser. 2007. Persistent Oberon: A Programming Language with Integrated Persistence. In Programming Languages and Systems, Zhong Shao (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg, 71--85.
[11]
Hans-J. Boehm and Dhruva R. Chakrabarti. 2016. Persistence Programming Models for Non-volatile Memory. In Proceedings of the 2016 ACM SIGPLAN International Symposium on Memory Management (ISMM 2016). ACM, New York. NY, USA, 55--67.
[12]
Dhruva R. Chakrabarti, Hans-J. Boehm, and Kumud Bhandari. 2014. Atlas: Leveraging Locks for Non-volatile Memory Consistency. In Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages & Applications (OOPSLA '14). ACM, New York, NY, USA, 433--452.
[13]
Joel Coburn, Adrian M. Caulfield, Ameen Akel, Laura M. Grupp, Rajesh K. Gupta, Ranjit Jhala, and Steven Swanson. 2011. NV-Heaps: Making Persistent Objects Fast and Safe with Next-generation, Non-volatile Memories. In Proceedings of the Sixteenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS XVI). ACM, New York, NY, USA, 105--118.
[14]
Jeremy Condit, Edmund B. Nightingale, Christopher Frost, Engin Ipek, Benjamin Lee, Doug Burger, and Derrick Coetzee. 2009. Better I/O Through Byte-addressable, Persistent Memory. In Proceedings of the ACM SIGOPS 22nd Symposium on Operating Systems Principles (SOSP '09). ACM, New York, NY, USA, 133--146.
[15]
Joel E. Denny, Seyong Lee, and Jeffrey S. Vetter. 2016. NVL-C: Static Analysis Techniques for Efficient, Correct Programming of Non-Volatile Main Memory Systems. In Proceedings of the 25th ACM International Symposium on High-Performance Parallel and Distributed Computing (HPDC '16). ACM, New York, NY, USA, 125--136.
[16]
James Gosling, Bill Joy, Guy L. Steele, Gilad Bracha, and Alex Buckley. 2014. The Java Language Specification, Java SE 8 Edition (1st ed.). Addison-Wesley Professional.
[17]
Antony L. Hosking and Jiawan Chen. 1999. PM3: An Orthogonal Persistent Systems Programming Language - Design, Implementation, Performance. In Proceedings of the 25th International Conference on Very Large Data Bases (VLDB '99). Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 587--598. http://dl.acm.org/citation.cfm?id=645925.671503
[18]
Antony L. Hosking, Nathaniel Nystrom, Quintin I. Cutts, and Kumar Brahnmath. 1999. Optimizing the Read and Write Barriers for Orthogonal Persistence. In Proceedings of the 8th International Workshop on Persistent Object Systems (POS8) and Proceedings of the 3rd International Workshop on Persistence and Java (PJW3): Advances in Persistent Object Systems. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 149--159. http://dl.acm.org/citation.cfm?id=648123.747258
[19]
Terry Ching-Hsiang Hsu, Helge Brügner, Indrajit Roy, Kimberly Keeton, and Patrick Eugster. 2017. NVthreads: Practical Persistence for Multi-threaded Applications. In Proceedings of the Twelfth European Conference on Computer Systems (EuroSys '17). ACM, New York, NY, USA, 468--482.
[20]
Joseph Izraelevitz, Hammurabi Mendes, and Michael L. Scott. 2016. Linearizability of Persistent Memory Objects Under a Full-System-Crash Failure Model. In Distributed Computing, Cyril Gavoille and David Ilcinkas (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 313--327.
[21]
Mick Jordan and Malcolm Atkinson. 2000. Orthogonal Persistence for the Java{Tm} Platform: Specification and Rationale. Technical Report. Mountain View, CA, USA.
[22]
Aasheesh Kolli, Vaibhav Gogte, Ali Saidi, Stephan Diestelhorst, Peter M. Chen, Satish Narayanasamy, and Thomas F. Wenisch. 2017. Language-level Persistency. In Proceedings of the 44th Annual International Symposium on Computer Architecture (ISCA '17). ACM, New York, NY, USA, 481--493.
[23]
B. C. Lee, P. Zhou, J. Yang, Y. Zhang, B. Zhao, E. Ipek, O. Mutlu, and D. Burger. 2010. Phase-Change Technology and the Future of Main Memory. IEEE Micro 30, 1 (Jan 2010), 143--143.
[24]
Brian Lewis, Bernd Mathiske, and Neal M. Gafter. 2001. Architecture of the PEVM: A High-Performance Orthogonally Persistent Java Virtual Machine. In Revised Papers from the 9th International Workshop on Persistent Object Systems (POS-9). Springer-Verlag, London, UK, UK, 18--33. http://dl.acm.org/citation.cfm?id=648124.747405
[25]
Brian T. Lewis and Bernd Mathiske. 1999. Efficient Barriers for Persistent Object Caching in a High-Performance JavaTM Virtual Machine. Technical Report. Mountain View, CA, USA.
[26]
Y. Lu, J. Shu, L. Sun, and O. Mutlu. 2014. Loose-Ordering Consistency for persistent memory. In 2014 IEEE 32nd International Conference on Computer Design (ICCD). 216--223.
[27]
Jeremy Manson, William Pugh, and Sarita V. Adve. 2005. The Java Memory Model. In Proceedings of the 32nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL '05). ACM, New York, NY, USA, 378--391.
[28]
Alonso Marquez, Stephen Blackburn, Gavin Mercer, and John N. Zigman. 2001. Implementing Orthogonally Persistent Java. In Revised Papers from the 9th International Workshop on Persistent Object Systems (POS-9). Springer-Verlag, London, UK, UK, 247--261. http://dl.acm.org/citation.cfm?id=648124.747395
[29]
J. E. B. Moss. 1992. Working with persistent objects: to swizzle or not to swizzle. IEEE Transactions on Software Engineering 18, 8 (Aug 1992), 657--673.
[30]
Sanketh Nalli, Swapnil Haria, Mark D. Hill, Michael M. Swift, Haris Volos, and Kimberly Keeton. 2017. An Analysis of Persistent Memory Use with WHISPER. In Proceedings of the Twenty-Second International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS '17). ACM, New York, NY, USA, 135--148.
[31]
Steven Pelley, Peter M. Chen, and Thomas F. Wenisch. 2014. Memory Persistency. In Proceeding of the 41st Annual International Symposium on Computer Architecuture (ISCA '14). IEEE Press, Piscataway, NJ, USA, 265--276. http://dl.acm.org/citation.cfm?id=2665671.2665712
[32]
Tony Printezis, Malcolm Atkinson, Laurent Daynés, Susan Spence, and Pete Bailey. 1997. The Design of a new Persistent Object Store for PJama. Technical Report. Mountain View, CA, USA.
[33]
S. Raoux, G. W. Burr, M. J. Breitwisch, C. T. Rettner, Y. C. Chen, R. M. Shelby, M. Salinga, D. Krebs, S. H. Chen, H. L. Lung, and C. H. Lam. 2008. Phase-change random access memory: A scalable technology. IBM Journal of Research and Development 52, 4.5 (July 2008), 465--479.
[34]
Jinglei Ren, Qingda Hu, Samira Khan, and Thomas Moscibroda. 2017. Programming for Non-Volatile Main Memory Is Hard. In Proceedings of the 8th Asia-Pacific Workshop on Systems (APSys '17). ACM, New York, NY, USA, Article 13, 8 pages.
[35]
Joel E. Richardson, Michael J. Carey, and Daniel T. Schuh. 1993. The Design of the E Programming Language. ACM Trans. Program. Lang. Syst. 15, 3 (July 1993), 494--534.
[36]
Vivek Singhal, Sheetal V. Kakkad, and Paul R. Wilson. 1993. Texas: An Efficient, Portable Persistent Store. In Persistent Object Systems, Antonio Albano and Ron Morrison (Eds.). Springer London, London, 11--33.
[37]
Haris Volos, Andres Jaan Tack, and Michael M. Swift. 2011. Mnemosyne: Light-weight Persistent Memory. In Proceedings of the Sixteenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS XVI). ACM, New York, NY, USA, 91--104.
[38]
Christian Wimmer, Michael Haupt, Michael L. Van De Vanter, Mick Jordan, Laurent Daynès, and Douglas Simon. 2013. Maxine: An Approachable Virtual Machine for, and in, Java. ACM Trans. Archit. Code Optim. 9, 4, Article 30 (Jan. 2013), 24 pages.
[39]
Mingyu Wu, Ziming Zhao, Haoyu Li, Heting Li, Haibo Chen, Binyu Zang, and Haibing Guan. 2018. Espresso: Brewing Java For More Non-Volatility with Non-volatile Memory. In Proceedings of the Twenty-Third International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS '18). ACM, New York, NY, USA, 70--83.

Cited By

View all
  • (2024)Reducing Write Barrier Overheads for Orthogonal PersistenceProceedings of the 17th ACM SIGPLAN International Conference on Software Language Engineering10.1145/3687997.3695646(210-223)Online publication date: 17-Oct-2024
  • (2022)Replication-based object persistence by reachabilityProceedings of the 2022 ACM SIGPLAN International Symposium on Memory Management10.1145/3520263.3534653(43-56)Online publication date: 14-Jun-2022
  • (2021)Persistent MemoryACM Computing Surveys10.1145/346540254:7(1-37)Online publication date: 18-Jul-2021
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Other conferences
ManLang '18: Proceedings of the 15th International Conference on Managed Languages & Runtimes
September 2018
204 pages
ISBN:9781450364249
DOI:10.1145/3237009
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 12 September 2018

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Java
  2. non-volatile memory
  3. programming model

Qualifiers

  • Research-article

Conference

ManLang'18

Acceptance Rates

ManLang '18 Paper Acceptance Rate 12 of 25 submissions, 48%;
Overall Acceptance Rate 12 of 25 submissions, 48%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)4
  • Downloads (Last 6 weeks)1
Reflects downloads up to 13 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Reducing Write Barrier Overheads for Orthogonal PersistenceProceedings of the 17th ACM SIGPLAN International Conference on Software Language Engineering10.1145/3687997.3695646(210-223)Online publication date: 17-Oct-2024
  • (2022)Replication-based object persistence by reachabilityProceedings of the 2022 ACM SIGPLAN International Symposium on Memory Management10.1145/3520263.3534653(43-56)Online publication date: 14-Jun-2022
  • (2021)Persistent MemoryACM Computing Surveys10.1145/346540254:7(1-37)Online publication date: 18-Jul-2021
  • (2021)UniHeapProceedings of the 14th ACM International Conference on Systems and Storage10.1145/3456727.3463775(1-12)Online publication date: 14-Jun-2021
  • (2020)Intermittent Computing with Peripherals, Formally VerifiedThe 21st ACM SIGPLAN/SIGBED Conference on Languages, Compilers, and Tools for Embedded Systems10.1145/3372799.3394365(85-96)Online publication date: 16-Jun-2020
  • (2020)P-INSPECT: Architectural Support for Programmable Non-Volatile Memory Frameworks2020 53rd Annual IEEE/ACM International Symposium on Microarchitecture (MICRO)10.1109/MICRO50266.2020.00050(509-524)Online publication date: Oct-2020
  • (2020)MPU-based incremental checkpointing for transiently-powered systems2020 23rd Euromicro Conference on Digital System Design (DSD)10.1109/DSD51259.2020.00025(89-96)Online publication date: Aug-2020
  • (2019)AutoPersist: an easy-to-use Java NVM framework based on reachabilityProceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3314221.3314608(316-332)Online publication date: 8-Jun-2019
  • (2019)QuickCheck: using speculation to reduce the overhead of checks in NVM frameworksProceedings of the 15th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments10.1145/3313808.3313822(137-151)Online publication date: 14-Apr-2019

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media