Skip to main content

Memory Models

  • Reference work entry
Encyclopedia of Parallel Computing

Synonyms

Fences; Memory consistency models; Memory ordering

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...

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 1,600.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Hardcover Book
USD 1,799.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Bibliography

  1. Adve SV (1993) Designing memory consistency models for shared-memory multiprocessors. Ph.D. thesis, University of Wisconsin-Madison

    Google Scholar 

  2. Adve SV, Boehm HJ (2010) Memory models: a case for rethinking parallel languages and hardware. Commun ACM 53(8):90–101

    Article  Google Scholar 

  3. Adve SV, Gharachorloo K (1996) Shared memory consistency models: a tutorial. IEEE Comput 29(12):66–76

    Article  Google Scholar 

  4. Adve SV, Hill MD (1990) Weak ordering – a new definition. In: Proceedings of 17th international symposium on computer architecture, Seattle, pp 2–14

    Chapter  Google Scholar 

  5. Boehm HJ (2005) Threads cannot be implemented as a library. In: Proceedings of conference on programming language design and implementation, Chicago

    Google Scholar 

  6. 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

    Google Scholar 

  7. 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

  8. Gharachorloo K (1995) Memory consistency models for shared memory multiprocessors. Ph.D. thesis, Stanford University

    Google Scholar 

  9. IBM Corporation (2010) Power ISA Version 2.06 Revision B. http://www.power.org/resources/downloads/PowerISA_V2.06B_V2_PUBLIC.pdf, 2010

  10. IEEE and The Open Group (2001) IEEE Standard 1003.1-2001

    Google Scholar 

  11. 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

  12. Lamport L (1979) How to make a multiprocessor computer that correctly executes multiprocess programs. IEEE Trans Comput C-28(9):690–691

    Google Scholar 

  13. Manson J, Pugh W, Adve SV (2005) The Java memory model. In: Proceedings symposium on principles of programming languages, Long Beach

    Google Scholar 

  14. Pugh W, JSR 133 Expert Group (2009) The Java memory model. http://www.cs.umd.edu/_pugh/java/memoryModel/ and referenced pages, July 2009

  15. 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

    Article  Google Scholar 

  16. The OpenMP ARB (2008) OpenMP application programming interface: Version 3.0. http://www.openmp.org/mp-documents/spec30.pdf, May 2008

  17. United States Department of Defense (1983). Reference manual for the Ada programming language: ANSI/MILSTD-1815A-1983 standard 1003.1-2001, Springer

    Google Scholar 

  18. Weaver DL, Germond T (1994) The SPARC architecture manual, version 9. Prentice Hall, Englewood Cliffs

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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

Publish with us

Policies and ethics