Synonyms
Definition
In the context of shared-memory systems, the memory model specifies the values that a shared-memory read in a program may return. It is part of the interface between a shared-memory program and any hardware or software that may transform that program – it both specifies the possible behaviors of the memory accesses for the programmer and constrains the legal transformations and executions for the implementer.
For high-level language programs, the memory model describes the behavior of accesses to shared variables or heap objects, while for machine code, the memory model describes the behavior of hardware instructions that access shared memory. Without an unambiguous memory model, it is not possible to reason about the correctness of a shared-memory program, compiler, dynamic optimizer, or hardware.
Discussion
Sequential Consistency
In a single-threaded program, a read is expected to return the value of the last...
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Bibliography
Adve SV (1993) Designing memory consistency models for shared-memory multiprocessors. Ph.D. thesis, University of Wisconsin-Madison
Adve SV, Boehm HJ (2010) Memory models: a case for rethinking parallel languages and hardware. Commun ACM 53(8):90–101
Adve SV, Gharachorloo K (1996) Shared memory consistency models: a tutorial. IEEE Comput 29(12):66–76
Adve SV, Hill MD (1990) Weak ordering – a new definition. In: Proceedings of 17th international symposium on computer architecture, Seattle, pp 2–14
Boehm HJ (2005) Threads cannot be implemented as a library. In: Proceedings of conference on programming language design and implementation, Chicago
Boehm HJ, Adve SV (2008) Foundations of the C + ​ + concurrency memory model. In: Proceedings of conference on programming language design and implementation, Tucson, pp 68–78
C + ​ + Standards Committee, Becker P (2010) Programming Languages – C + ​ + (final committee draft). C + ​ + standards committee paper WG21/N3092 = J16/10-0082, http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2010/n3092.pdf, March 2010
Gharachorloo K (1995) Memory consistency models for shared memory multiprocessors. Ph.D. thesis, Stanford University
IBM Corporation (2010) Power ISA Version 2.06 Revision B. http://www.power.org/resources/downloads/PowerISA_V2.06B_V2_PUBLIC.pdf, 2010
IEEE and The Open Group (2001) IEEE Standard 1003.1-2001
Intel Corporation (2010) Intel 64 and IA-32 Architectures software developer’s manual, vol 3a, system programming guide, Part1. http://www.intel.com/products/processor/manuals/, 2010
Lamport L (1979) How to make a multiprocessor computer that correctly executes multiprocess programs. IEEE Trans Comput C-28(9):690–691
Manson J, Pugh W, Adve SV (2005) The Java memory model. In: Proceedings symposium on principles of programming languages, Long Beach
Pugh W, JSR 133 Expert Group (2009) The Java memory model. http://www.cs.umd.edu/_pugh/java/memoryModel/ and referenced pages, July 2009
Sewell P, Sarkar S, Owens S, Nardelli FZ, Myreen MO (2010) x86-TSO: a rigorous and usable programmer’s model for x86 multiprocessors. Commun ACM 53(7):89–97
The OpenMP ARB (2008) OpenMP application programming interface: Version 3.0. http://www.openmp.org/mp-documents/spec30.pdf, May 2008
United States Department of Defense (1983). Reference manual for the Ada programming language: ANSI/MILSTD-1815A-1983 standard 1003.1-2001, Springer
Weaver DL, Germond T (1994) The SPARC architecture manual, version 9. Prentice Hall, Englewood Cliffs
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2011 Springer Science+Business Media, LLC
About this entry
Cite this entry
Adve, S.V., Boehm, H.J. (2011). Memory Models. In: Padua, D. (eds) Encyclopedia of Parallel Computing. Springer, Boston, MA. https://doi.org/10.1007/978-0-387-09766-4_419
Download citation
DOI: https://doi.org/10.1007/978-0-387-09766-4_419
Publisher Name: Springer, Boston, MA
Print ISBN: 978-0-387-09765-7
Online ISBN: 978-0-387-09766-4
eBook Packages: Computer ScienceReference Module Computer Science and Engineering