skip to main content
10.1145/3124680.3124729acmconferencesArticle/Chapter ViewAbstractPublication PagesapsysConference Proceedingsconference-collections
research-article

Programming for Non-Volatile Main Memory Is Hard

Published:02 September 2017Publication History

ABSTRACT

Using non-volatile memory as main memory (NVMM) can largely improve the performance of applications, but adds to the challenge of programming -- it turns out to be very error-prone to write real-world NVMM programs, especially with object-oriented programming. This paper presents a field study of erroneous NVMM programs written by programmers who are trained to use a general NVMM programming interface. We performed the field study in a training workshop of 30 participants. Our observations and derived best practices offer a reference for future NVMM programming techniques design. Toward that end, we propose a taxonomy of latest NVMM programming techniques and, accordingly, a set of paradigms that can reduce the risk of NVMM-specific bugs. The paradigms incorporate a minimal NVMM library interface design and a new design pattern inspired by the field study.

References

  1. H. Akinaga and H. Shima. 2010. Resistive Random Access Memory (ReRAM) Based on Metal Oxides. Proc. IEEE 98, 12 (2010). https://doi.org/10.1109/JPROC.2010.2070830 Google ScholarGoogle ScholarCross RefCross Ref
  2. Dmytro Apalkov, Alexey Khvalkovskiy, Steven Watts, Vladimir Nikitin, Xueti Tang, Daniel Lottis, Kiseok Moon, Xiao Luo, Eugene Chen, Adrian Ong, Alexander Driskill-Smith, and Mohamad Krounbi. 2013. Spin-transfer Torque Magnetic Random Access Memory (STT-MRAM). ACM J. Emerg. Technol. Comput. Syst. 9, 2, Article 13 (May 2013), 35 pages. https://doi.org/10.1145/2463585.2463589Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Andreas Chatzistergiou, Marcelo Cintra, and Stratis D. Viglas. 2015. REWIND: Recovery Write-ahead System for In-memory Non-volatile Data-structures. Proc. VLDB Endow. 8, 5 (Jan. 2015), 497--508. https://doi.org/10.14778/2735479. 2735483Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Himanshu Chauhan, Irina Calciu, Vijay Chidambaram, Eric Schkufza, Onur Mutlu, and Pratap Subrahmanyam. 2016. NVMOVE: Helping Programmers Move to Byte-Based Persistence. In 4th Workshop on Interactions of NVM/Flash with Operating Systems and Workloads (INFLOW '16). Savannah, GA. https://www.usenix.org/conference/inflow16/workshop-program/presentation/chauhanGoogle ScholarGoogle Scholar
  5. 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). 105--118. https://doi.org/10.1145/1950365.1950380Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. 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). 125--136. https://doi.org/10.1145/2907294.2907303Google ScholarGoogle Scholar
  7. Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. 1994. Design Patterns: Elements of Reusable Object-Oriented Software. Addis on-Wesley Professional.Google ScholarGoogle Scholar
  8. GCC. 2017. GNU libitm. https://gcc.gnu.org/onlinedocs/libitm/. (2017).Google ScholarGoogle Scholar
  9. Qingda Hu, Jinglei Ren, Anirudh Badam, and Thomas Moscibroda. 2017. Log-Structured Non-Volatile Main Memory. In Proceedings of 2017 USENIX Annual Technical Conference (USENIX ATC '17). Santa Clara, CA. http://jinglei.ren.systems/files/lsnvmm_slides_atc17.pptxGoogle ScholarGoogle Scholar
  10. Intel. 2016. The NVM Library. http://pmem.io/. (2016).Google ScholarGoogle Scholar
  11. Intel and Micron. 2017. 3D XPoint Technology. https://www.micron.com/about/our-innovation/3d-xpoint-technology. (2017).Google ScholarGoogle Scholar
  12. Wook-Hee Kim, Jinwoong Kim, Woongki Baek, Beomseok Nam, and Youjip Won. 2016. NVWAL: Exploiting NVRAM in Write-Ahead Logging. In Proceedings of the Twenty-First International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS '16). 385--398. https://doi.org/10.1145/2872362.2872392Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Aasheesh Kolli, Steven Pelley, Ali Saidi, Peter M. Chen, and Thomas F. Wenisch. 2016. High-Performance Transactions for Persistent Memories. In Proceedings of the Twenty-First International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS '16). 399--411. https://doi.org/10.1145/2872362.2872381Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. E. KÃijltÃijrsay, M. Kandemir, A. Sivasubramaniam, and O. Mutlu. 2013. Evaluating STT-RAM as an energy-efficient main memory alternative. In Proceeding of the 2013 IEEE International Symposium on Performance Analysis of Systems and Software (ISPASS '13). 256--267. https://doi.org/10.1109/ISPASS.2013.6557176Google ScholarGoogle Scholar
  15. B.C. Lee, Ping Zhou, Jun Yang, Youtao Zhang, Bo Zhao, E. Ipek, O. Mutlu, and D. Burger. 2010. Phase-Change Technology and the Future of Main Memory. IEEE Micro 30 (Jan. 2010), 131--141. https://doi.org/10.1109/MM.2010.24 Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Mengxing Liu, Mingxing Zhang, Kang Chen, Xuehai Qian, Yongwei Wu, and Jinglei Ren. 2017. DudeTM: Building Durable Transactions with Decoupling for Persistent Memory. In Proceedings of the Twenty-Second International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS '17). 329--343. https://doi.org/10.1145/3037697.3037714Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Ren-Shuo Liu, De-Yu Shen, Chia-Lin Yang, Shun-Chih Yu, and Cheng-Yuan Michael Wang. 2014. NVM Duet: Unified Working Memory and Persistent Store Architecture. In Proceedings of the 19th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS '14). 455--470. https://doi.org/10.1145/2541940.2541957Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Iulian Moraru, David G. Andersen, Michael Kaminsky, Niraj Tolia, Parthasarathy Ranganathan, and Nathan Binkert. 2013. Consistent, Durable, and Safe Memory Management for Byte-address able Non Volatile Main Memory. In Proceedings of the First ACM SIGOPS Conference on Timely Results in Operating Systems (TRIOS '13). Article 1, 17 pages. https://doi.org/10.1145/2524211.2524216Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Dushyanth Narayanan and Orion Hodson. 2012. Whole-system Persistence. In Proceedings of the Seventeenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS XVII). 401--410. https://doi.org/10.1145/2150976.2151018Google ScholarGoogle Scholar
  20. Edmund B. Nightingale, Kaushik Veeraraghavan, Peter M. Chen, and Jason Flinn. 2006. Rethink the Sync. In Proceedings of the 7th Symposium on Operating Systems Design and Implementation (OSDI '06). 1--14. http://dl.acm.org/citation.cfm?id=1298455.1298457Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. 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). 265--276. http://dl.acm.org/citation.cfm?id=2665671.2665712Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. 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 J. Res. Dev. 52, 4 (July 2008), 465--479. https://doi.org/10.1147/rd.524.0465 Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Jinglei Ren, Jishen Zhao, Samira Khan, Jongmoo Choi, Yongwei Wu, and Onur Mutlu. 2015. ThyNVM: Enabling Software-transparent Crash Consistency in Persistent Memory Systems. In Proceedings of the 48th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO-48). 672--685. http://persper.org/thynvm/.Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. TIOBE software BV. 2017. TIOBE Programming Community index. http://www.tiobe.com/tiobe-index/. (2017).Google ScholarGoogle Scholar
  25. Shivaram Venkataraman, Niraj Tolia, Parthasarathy Ranganathan, and Roy H. Campbell. 2011. Consistent and Durable Data Structures for Non-volatile Byte-addressable Memory. In Proceedings of the 9th USENIX Conference on File and Stroage Technologies (FAST '11). 61--75. http://dl.acm.org/citation.cfm?id=1960475.1960480Google ScholarGoogle Scholar
  26. Haris Volos, Andres Jaan Tack, and Michael M. Swift. 2011. Mnemosyne: Lightweight Persistent Memory. In Proceedings of the Sixteenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS XVI). 91--104. https://doi.org/10.1145/1950365.1950379Google ScholarGoogle Scholar
  27. Jun Yang, Qingsong Wei, Cheng Chen, Chundong Wang, Khai Leong Yong, and Bingsheng He. 2015. NV-Tree: Reducing Consistency Cost for NVM-based Single Level Systems. In Proceedings of the 13th USENIX Conference on File and Storage Technologies (FAST'15). 167--181. http://dl.acm.org/citation.cfm?id=2750482.2750495Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Y. Zhang and S. Swanson. 2015. A study of application performance with nonvolatile main memory. In Proceedings of the 31st Symposium on Mass Storage Systems and Technologies (MSST '15). 1--10. https://doi.org/10.1109/MSST.2015.7208275Google ScholarGoogle Scholar
  29. Jishen Zhao, Sheng Li, Doe Hyun Yoon, Yuan Xie, and Norman P. Jouppi. 2013. Kiln: Closing the Performance Gap Between Systems with and Without Persistence Support. In Proceedings of the 46th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO-46). 421--432. https://doi.org/10.1145/2540708.2540744Google ScholarGoogle Scholar

Recommendations

Comments

Login options

Check if you have access through your login credentials or your institution to get full access on this article.

Sign in
  • Published in

    cover image ACM Conferences
    APSys '17: Proceedings of the 8th Asia-Pacific Workshop on Systems
    September 2017
    207 pages
    ISBN:9781450351973
    DOI:10.1145/3124680

    Copyright © 2017 ACM

    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: 2 September 2017

    Permissions

    Request permissions about this article.

    Request Permissions

    Check for updates

    Qualifiers

    • research-article
    • Research
    • Refereed limited

    Acceptance Rates

    APSys '17 Paper Acceptance Rate27of51submissions,53%Overall Acceptance Rate149of386submissions,39%

PDF Format

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader