skip to main content
research-article

JDMM: a java memory model for non-cache-coherent memory architectures

Authors Info & Claims
Published:12 June 2014Publication History
Skip Abstract Section

Abstract

As the number of cores continuously grows, processor designers are considering non coherent memories as more scalable and energy efficient alternatives to the current coherent ones. The Java Memory Model (JMM) requires that all cores can access the Java heap. It guarantees sequential consistency for data-race-free programs and no out-of-thin-air values for non data-race-free programs. To implement the Java Memory Model over non-cache-coherent and distributed architectures Java Virtual Machines (JVMs) are most likely to employ software caching.

In this work, i) we provide a formalization of the Java Memory Model for non-cache-coherent and distributed memory architectures, ii) prove the adherence of our model with the Java Memory Model and iii) evaluate, regarding its compliance to the Java Memory Model, a state-of-the-art Java Virtual Machine implementation on a non-cache-coherent architecture.

References

  1. G. Antoniu, L. Bouge, P. J. Hatcher, M. MacBeth, K. McGuigan, and R. Namyst. The Hyperion system: Compiling multithreaded Java bytecode for distributed execution. Parallel Computing, 27(10):1279--1297, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Y. Aridor, M. Factor, and A. Teperman. cJVM: A Single System Image of a JVM on a Cluster. In Proceedings of the 1999 International Conference on Parallel Processing, ICPP, pages 4--11. IEEE Computer Society, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. D. Aspinall and J. Sevcík. Java Memory Model Examples: Good, Bad and Ugly. In 1st International Workshop on Verification and Analysis of Multi-threaded Java-like Programs, VAMP, 2007.Google ScholarGoogle Scholar
  4. D. Aspinall and J. Sevcík. Formalising Java's Data Race Free Guarantee. In Proceedings of the 20th International Conference on Theorem Proving in Higher Order Logics, TPHOLs, pages 22--37. Springer Berlin Heidelberg, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. N. P. Carter, A. Agrawal, S. Borkar, R. Cledat, H. David, D. Dunning, J. B. Fryman, I. Ganev, R. A. Golliver, R. C. Knauerhase, R. Lethin, B. Meister, A. K. Mishra,W. R. Pinfold, J. Teller, J. Torrellas, N. Vasilache, G. Venkatesh, and J. Xu. Runnemede: An architecture for Ubiquitous High-Performance Computing. In Proceedings of the 19th IEEE International Symposium on High Performance Computer Architecture, HPCA, pages 198--209. IEEE Computer Society, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. P. Cenciarelli, A. Knapp, and E. Sibilio. The Java Memory Model: Operationally, Denotationally, Axiomatically. In Proceedings of the 16th European Symposium on Programming, ESOP, pages 331--346. Springer Berlin Heidelberg, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. B. Choi, R. Komuravelli, H. Sung, R. Smolinski, N. Honarmand, S. V. Adve, V. S. Adve, N. P. Carter, and C.-T. Chou. DeNovo: Rethinking the Memory Hierarchy for Disciplined Parallelism. In Proceedings of the 12th International Conference on Parallel Architectures and Compilation Techniques, PACT, pages 155--166, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. M. Factor, A. Schuster, and K. Shagin. JavaSplit: a runtime for execution of monolithic Java programs on heterogenous collections of commodity workstations. In Proceedings of the International Conference on Cluster Computing, CLUSTER, pages 110--117, 2003.Google ScholarGoogle ScholarCross RefCross Ref
  9. J. Gosling, B. Joy, G. Steele, and G. Bracha. Java(TM) Language Specification, 3rd Edition. Addison-Wesley Professional, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. J. Howard, S. Dighe, Y. Hoskote, S. Vangal, D. Finan, G. Ruhl, D. Jenkins, H. Wilson, N. Borkar, G. Schrom, F. Pailet, S. Jain, T. Jacob, S. Yada, S. Marella, P. Salihundam, V. Erraguntla, M. Konow, M. Riepen, G. Droege, J. Lindemann, M. Gries, T. Apel, K. Henriss,T. Lund-Larsen, S. Steibl, S. Borkar, V. De, R. Van der Wijngaart, and T. Mattson. A 48-Core IA-32 message-passing processor with DVFS in 45nm CMOS. In Proceedings of the International Solid-State Circuits Conference, ISSCC, pages 108--109, 2010.Google ScholarGoogle Scholar
  11. M. Huisman and G. Petri. The Java Memory Model: a Formal Explanation. In 1st International Workshop on Verification and Analysis of Multi-threaded Java-like Programs, VAMP, pages 81--96, 2007.Google ScholarGoogle Scholar
  12. R. Jagadeesan, C. Pitcher, and J. Riely. Generative operational semantics for relaxed memory models. In Proceedings of the 19th European Symposium on Programming, ESOP, pages 307--326. Springer, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. S. Kaxiras and G. Keramidas. SARC Coherence: Scaling Directory Cache Coherence in Performance and Power. Micro, IEEE, 30(5):54-- 65, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. L. Lamport. Time, clocks, and the ordering of events in a distributed system. Commun. ACM, 21(7):558--565, 1978. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. L. Lamport. How to make a multiprocessor computer that correctly executes multiprocess programs. Computers, IEEE Transactions on, C-28(9):690--691, 1979. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. A. Lochbihler. Java and the Java Memory Model -- A Unified, Machine-Checked Formalisation. In Proceedings of the 21th European Symposium on Programming, ESOP, pages 497--517. Springer Berlin Heidelberg, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. A. Lochbihler. Making the java memory model safe. ACM Transactions on Programming Languages and Systems, 35(4):1--65, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. S. Lyberis. Myrmics: A Scalable Runtime System for Global Address Spaces. PhD thesis, 2013.Google ScholarGoogle Scholar
  19. S. Lyberis, G. Kalokerinos, M. Lygerakis, V. Papaefstathiou, D. Tsaliagkos, M. Katevenis, D. Pnevmatikatos, and D. Nikolopoulos. Formic: Cost-efficient and scalable prototyping of manycore architectures. In Proceedings of the 20th Annual International Symposium on Field-Programmable Custom Computing Machines, FCCM, pages 61--64, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. J. Manson. The Java Memory Model. PhD thesis, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. J. Manson, W. Pugh, and S. V. Adve. The Java Memory Model. In Proceedings of the 32nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL, pages 378--391, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. J. Manson, W. Pugh, and S. V. Adve. The Java Memory Model, 2005. SPECIAL POPL ISSUE Submission. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. R. McIlroy and J. Sventek. Hera-JVM: A Runtime System for Heterogeneous Multi-core Architectures. In Proceedings of the 25th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA, pages 205--222, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. S. Owens, S. Sarkar, and P. Sewell. A Better x86 Memory Model: x86-TSO. In Proceedings of the 22th International Conference on Theorem Proving in Higher Order Logics, TPHOLs, pages 391--407. Springer Berlin Heidelberg, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. W. Puffitsch. Data Caching, Garbage Collection, and the Java Memory Model. In Proceedings of the 7th International Workshop on Java Technologies for Real-Time and Embedded Systems, JTRES, pages 90--99. ACM, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. W. Pugh and J. Manson. Java Memory Model Causality Test Cases, 2004. On http://www.cs.umd.edu/aspugh/java/memoryModel/- CausalityTestCases.html.Google ScholarGoogle Scholar
  27. J. Sevcík and D. Aspinall. On Validity of Program Transformations in the Java Memory Model. In Proceedings of the 22nd European Conference on Object-Oriented Programming, ECOOP, pages 27--51. Springer, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. E. Torlak, M. Vaziri, and J. Dolby. MemSAT: Checking Axiomatic Specifications of Memory Models. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI, pages 341--350. ACM, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. R. Veldema, R. Bhoedjang, and H. Bal. Distributed Shared Memory Management for Java. In Proceedings of the 6th Annual Conference of the Advanced School for Computing and Imaging, ASCI, pages 256--264, 1999.Google ScholarGoogle Scholar
  30. W. Yu and A. Cox. Java/DSM: A platform for heterogeneous computing. Concurrency: Practice and Experience, 9:1213--1224, 1997.Google ScholarGoogle ScholarCross RefCross Ref
  31. W. Zhu, C.-L.Wang, and F. C. M. Lau. JESSICA2: A Distributed Java Virtual Machine with Transparent Thread Migration Support. In Proceeding of the IEEE International Conference on Cluster Computing, CLUSTER, pages 381--388. IEEE Computer Society, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. J. N. Zigman and R. Sankaranarayana. Designing a Distributed JVM on a Cluster. In Proceedings of the 17th High Performance and Large Scale Computing Conference, HP&LSC, 2002.Google ScholarGoogle Scholar

Index Terms

  1. JDMM: a java memory model for non-cache-coherent memory architectures

      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

      Full Access

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!