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.
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Cross Ref
- J. Gosling, B. Joy, G. Steele, and G. Bracha. Java(TM) Language Specification, 3rd Edition. Addison-Wesley Professional, 2005. Google Scholar
Digital Library
- 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 Scholar
- 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 Scholar
- 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 Scholar
Digital Library
- S. Kaxiras and G. Keramidas. SARC Coherence: Scaling Directory Cache Coherence in Performance and Power. Micro, IEEE, 30(5):54-- 65, 2010. Google Scholar
Digital Library
- L. Lamport. Time, clocks, and the ordering of events in a distributed system. Commun. ACM, 21(7):558--565, 1978. Google Scholar
Digital Library
- L. Lamport. How to make a multiprocessor computer that correctly executes multiprocess programs. Computers, IEEE Transactions on, C-28(9):690--691, 1979. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- A. Lochbihler. Making the java memory model safe. ACM Transactions on Programming Languages and Systems, 35(4):1--65, 2014. Google Scholar
Digital Library
- S. Lyberis. Myrmics: A Scalable Runtime System for Global Address Spaces. PhD thesis, 2013.Google Scholar
- 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 Scholar
Digital Library
- J. Manson. The Java Memory Model. PhD thesis, 2004. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- J. Manson, W. Pugh, and S. V. Adve. The Java Memory Model, 2005. SPECIAL POPL ISSUE Submission. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- W. Pugh and J. Manson. Java Memory Model Causality Test Cases, 2004. On http://www.cs.umd.edu/aspugh/java/memoryModel/- CausalityTestCases.html.Google Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
- W. Yu and A. Cox. Java/DSM: A platform for heterogeneous computing. Concurrency: Practice and Experience, 9:1213--1224, 1997.Google Scholar
Cross Ref
- 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 Scholar
Digital Library
- 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 Scholar
Index Terms
JDMM: a java memory model for non-cache-coherent memory architectures
Recommendations
JDMM: a java memory model for non-cache-coherent memory architectures
ISMM '14: Proceedings of the 2014 international symposium on Memory managementAs 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 ...
Clojure for Number Crunching on Multicore Machines
Clojure is a Lisp language designed to run on a Java Virtual Machine (JVM) and interoperate automatically with all Java libraries. However, compared to Java, Clojure has a concurrency API that encourages programmers to take advantage of multicore ...
DiSquawk: 512 cores, 512 memories, 1 JVM
PPPJ '16: Proceedings of the 13th International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and ToolsTrying to cope with the constantly growing number of cores per processor, hardware architects are experimenting with modular non cache coherent architectures. Such architectures delegate the memory coherency to the software. On the contrary, high ...







Comments