Abstract
Concurrent threads executing on a shared memory system can access the same memory locations. A consistency model defines constraints on the order of these shared memory accesses. For good run-time performance, these constraints must be as few as possible. Programmers who write explicitly parallel programs must take into account the consistency model when reasoning about the behavior of their programs. Also, the consistency model constrains compiler transformations that reorder code. It is not known what consistency models best suit the needs of the programmer, the compiler, and the hardware simultaneously. We are building a compiler infrastructure to study the effect of consistency models on code optimization and run-time performance. The consistency model presented to the user will be a programmable feature independent of the hardware consistency model. The compiler will be used to mask the hardware consistency model from the user by mapping the software consistency model onto the hardware consistency model. When completed, our compiler will be used to prototype consistency models and to measure the relative performance of different consistency models. We present preliminary experimental data for performance of a software implementation of sequential consistency using manual inter-thread analysis.
This material is based upon work supported by the NSF under Grant No. CCR-0081265, and the IBM Corporation. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the NSF or the IBM Corporation. Also supported in part by the Korean Ministry of Education under the BK21 program and by the Korean Ministry of Science and Technology under the National Research Laboratory program.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Adve, S.V., Gharachorloo, K.: Shared memory consistency models: A tutorial. IEEE Computer, 66–76 (December 1996)
Alpern, B., et al.: The Jalapeno virtual machine. IBM Systems Journal (February 2000)
Choi, J.-D., Gupta, M., Serrano, M., Sreedhar, V.C., Midkiff, S.: Escape analysis for Java. In: Proceedings ACM 1999 Conference on Object-Oriented Programming Systems (OOPSLA 1999), November 1999, pp. 1–19 (1999)
Emrath, P.A., Ghosh, S., Padua, D.A.: Event synchronization analysis for debugging parallel programs. In: Proceedings of Supercomputing, pp. 580–588 (1989)
Fang, X.: Inserting fences to guarantee sequential consistency. Master’s thesis, Michigan State University (July 2002)
Gosling, J., Joy, B., Steele, G., Bracha, G.: The Java Language Specification, 2nd edn. The Java Series. Addison-Wesley Publishing Company, Redwood City (2000)
Hill, M.D.: Multiprocessors should support simple memory-consistency models. IEEE Computer, 28–34 (August 1998)
Krishnamurthy, A., Yelick, K.: Optimizing parallel SPMD programs. In: Seventh Workshop on Languages and Compilers for Parallel Computing (August 1994)
Krishnamurthy, A., Yelick, K.: Analyses and optimizations for shared address space programs. Journal of Parallel and Distributed Computing 38, 139–144 (1996)
Lee, J., Midkiff, S.P., Padua, D.A.: Concurrent static single assignment form and constant propagation for explicitly parallel programs. In: Proceedings of The 10th International Workshop on Languages and Compilers for Parallel Computing, pp. 114–130. Springer, Heidelberg (1997)
Lee, J., Padua, D.A.: Hiding relaxed memory consistency with compilers. In: Proceedings of The 2000 International Conference on Parallel Architectures and Compilation Techniques (October 2000)
Lee, J., Padua, D.A., Midkiff, S.P.: Basic compiler algorithms for parallel programs. In: Proceedings of The 1999 ACM SIGPLAN Symposiun on Principles and Practice of Parallel Programming, May 1999, pp. 1–12 (1999)
Naumovich, G., Avruninand, G.S., Clarke, L.A.: An efficient algorithm for computing MHP information for concurrent Java programs. In: Proceedings of Seventh European Software Engineering Conference and Seventh ACM SIGSOFT Symposium on the Foundations of Software Engineering (September 1999)
Pugh, W.: Fixing the Java memory model. In: Proceedings of the ACM 1999 Java Grande Conference (June 1999)
Rugina, R., Rinard, M.: Pointer analysis for multithreaded programs. In: Proceedings of the ACM SIGPLAN 1999 Conference on Programming Language Design and Implementation, June 1999, pp. 77–90 (1999)
Shasha, D., Snir, M.: Efficient and correct execution of parallel programs that share memory. ACM Transactions on Programming Languages and Systems 10(2), 282–312 (1988)
Wong, C.-L., Sura, Z., Fang, X., Midkiff, S.P., Lee, J., Padua, D.: The Pensieve Project: A Compiler Infrastructure for Memory Models. In: The International Symposium on Parallel Architectures, Algorithms, and Networks (May 2002)
Eclipse Platform Technical Overview. Object Technology International, Inc. (July 2001), Available at http://www.eclipse.org
The NetBeans Platform. Sun Microsystems, Inc., Documentation, available at http://www.netbeans.org
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2005 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Sura, Z., Wong, CL., Fang, X., Lee, J., Midkiff, S.P., Padua, D. (2005). Automatic Implementation of Programming Language Consistency Models. In: Pugh, B., Tseng, CW. (eds) Languages and Compilers for Parallel Computing. LCPC 2002. Lecture Notes in Computer Science, vol 2481. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11596110_12
Download citation
DOI: https://doi.org/10.1007/11596110_12
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-30781-5
Online ISBN: 978-3-540-31612-1
eBook Packages: Computer ScienceComputer Science (R0)