Issue No. 12 - December (1996 vol. 29)
DOI Bookmark: http://doi.ieeecomputersociety.org/10.1109/2.546611
<p>The shared memory programming model has several advantages over the message-passing model. To write correct and efficient shared memory programs, programmers need a precise notion of shared memory semantics. The memory consistency model of a shared memory multiprocessor formally specifies how the memory system will appear to the programmer. The memory consistency model is an interface between the programmer and the system, so it influences not only how parallel programs are written but virtually every aspect of parallel hardware and software design. A memory consistency model specification is required at every interface between the programmer and the system. At each level, the memory consistency model affects both programmability and performance. Furthermore, due to a lack of consensus on a single model, portability can be affected when moving software across systems supporting different models. Unfortunately, the vast literature that describes consistency models uses nonuniform, complex terminology to describe the large variety of models. This makes it difficult to understand the often subtle but important differences among models and leads to several misconceptions. This article describes memory consistency models in a way that most computer professionals can understand. The focus is consistency models proposed for hardware-based shared memory systems. Most of these models emphasize the system optimizations they support, and the authors retain this system-centric emphasis in this article. </p>
S. V. Adve and K. Gharachorloo, "Shared Memory Consistency Models: A Tutorial," in Computer, vol. 29, no. , pp. 66-76, 1996.