Nothing Special   »   [go: up one dir, main page]

skip to main content
research-article

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

Published: 12 June 2014 Publication History

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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[9]
J. Gosling, B. Joy, G. Steele, and G. Bracha. Java(TM) Language Specification, 3rd Edition. Addison-Wesley Professional, 2005.
[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.
[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.
[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.
[13]
S. Kaxiras and G. Keramidas. SARC Coherence: Scaling Directory Cache Coherence in Performance and Power. Micro, IEEE, 30(5):54-- 65, 2010.
[14]
L. Lamport. Time, clocks, and the ordering of events in a distributed system. Commun. ACM, 21(7):558--565, 1978.
[15]
L. Lamport. How to make a multiprocessor computer that correctly executes multiprocess programs. Computers, IEEE Transactions on, C-28(9):690--691, 1979.
[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.
[17]
A. Lochbihler. Making the java memory model safe. ACM Transactions on Programming Languages and Systems, 35(4):1--65, 2014.
[18]
S. Lyberis. Myrmics: A Scalable Runtime System for Global Address Spaces. PhD thesis, 2013.
[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.
[20]
J. Manson. The Java Memory Model. PhD thesis, 2004.
[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.
[22]
J. Manson, W. Pugh, and S. V. Adve. The Java Memory Model, 2005. SPECIAL POPL ISSUE Submission.
[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.
[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.
[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.
[26]
W. Pugh and J. Manson. Java Memory Model Causality Test Cases, 2004. On http://www.cs.umd.edu/aspugh/java/memoryModel/- CausalityTestCases.html.
[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.
[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.
[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.
[30]
W. Yu and A. Cox. Java/DSM: A platform for heterogeneous computing. Concurrency: Practice and Experience, 9:1213--1224, 1997.
[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.
[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.

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM SIGPLAN Notices
ACM SIGPLAN Notices  Volume 49, Issue 11
ISMM '14
November 2014
121 pages
ISSN:0362-1340
EISSN:1558-1160
DOI:10.1145/2775049
  • Editor:
  • Andy Gill
Issue’s Table of Contents
  • cover image ACM Conferences
    ISMM '14: Proceedings of the 2014 international symposium on Memory management
    June 2014
    136 pages
    ISBN:9781450329217
    DOI:10.1145/2602988
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 June 2014
Published in SIGPLAN Volume 49, Issue 11

Check for updates

Author Tags

  1. concurrency
  2. java
  3. memory model
  4. multithreading
  5. non cache coherent memory
  6. software cache
  7. virtual machine

Qualifiers

  • Research-article

Funding Sources

  • GreenVM project on Energy-Efficient Runtimes for Scalable Multicore Architectures

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

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

Other Metrics

Citations

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