Implementing sequentially consistent shared objects using broadcast and point-to-point communication

This paper presents and proves correct a distributed algorithm that implements a sequentially consistent collection of shared read/update objects. This algorithm is a generalization of one used in the Orca shared object system. The algorithm caches objects in the local memory of processors according to application needs; each read operation accesses a single copy of the object, while each update accesses all copies. The algorithm uses broadcast communication when it sends messages to replicated copies of an object, and it uses point-to-point communication when a message is sent to a single copy, and when a reply is returned. Copies of all objects are kept consistent using a strategy based on sequence numbers for broadcasts. The algorithm is presented in two layers. The lower layer uses the given broadcast and point-to-point communication services, plus sequence numbers, to provide a new communication service called a context multicast channel. The higher layer uses a context multicast channel to manage the object replication in a consistent fashion. Both layers and their combination are described and verified formally, using the I/O automation model for asynchronous concurrent systems.

[1]  Nancy A. Lynch,et al.  Distributed Algorithms , 1992, Lecture Notes in Computer Science.

[2]  Roy Friedman,et al.  A correctness condition for high-performance multiprocessors (extended abstract) , 1992, STOC '92.

[3]  William W. Collier,et al.  Reasoning about parallel architectures , 1992 .

[4]  Odo Diekmann,et al.  Exploring linear chain trickery for physiologically structured populations , 1989 .

[5]  Michel Dubois,et al.  Synchronization, coherence, and event ordering in multiprocessors , 1988, Computer.

[6]  Brian N. Bershad,et al.  Midway : shared memory parallel programming with entry consistency for distributed memory multiprocessors , 1991 .

[7]  Mark D. Hill,et al.  Weak ordering—a new definition , 1998, ISCA '98.

[8]  Robbert van Renesse,et al.  Experiences with the Amoeba distributed operating system , 1990, CACM.

[9]  Willy Zwaenepoel,et al.  Distributed process groups in the V Kernel , 1985, TOCS.

[10]  D. König Sur les correspondances multivoques des ensembles , 2022 .

[11]  Hagit Attiya,et al.  Sequential consistency versus linearizability , 1994, TOCS.

[12]  Kourosh Gharachorloo,et al.  Proving sequential consistency of high-performance shared memories (extended abstract) , 1991, SPAA '91.

[13]  Kenneth P. Birman,et al.  Reliable communication in the presence of failures , 1987, TOCS.

[14]  Paul Feautrier,et al.  A New Solution to Coherence Problems in Multicache Systems , 1978, IEEE Transactions on Computers.

[15]  Sarita V. Adve,et al.  Shared Memory Consistency Models: A Tutorial , 1996, Computer.

[16]  Gil Neiger,et al.  Simulating synchronized clocks and common knowledge in distributed systems , 1993, JACM.

[17]  Jennifer L. Welch,et al.  Simulating Synchronous Processors , 1987, Inf. Comput..

[18]  Mark D. Hill,et al.  Weak ordering- a new definition and some implications , 1989, ISCA 1989.

[19]  Robbert van Renesse,et al.  The Amoeba distributed operating system - A status report , 1991, Comput. Commun..

[20]  Sarita V. Adve,et al.  Designing memory consistency models for shared-memory multiprocessors , 1993 .

[21]  Michael Merritt,et al.  Specifying non-blocking shared memories (extended abstract) , 1992, SPAA '92.

[22]  Leslie Lamport,et al.  Time, clocks, and the ordering of events in a distributed system , 1978, CACM.

[23]  Michel Dubois,et al.  Correct memory operation of cache-based multiprocessors , 1987, ISCA '87.

[24]  Willy Zwaenepoel,et al.  Munin: distributed shared memory based on type-specific memory coherence , 1990, PPOPP '90.

[25]  Nancy A. Lynch,et al.  Implementing sequentially consistent shared objects using broadcast and point-to-point communication , 1995, Proceedings of 15th International Conference on Distributed Computing Systems.

[26]  Yair Amir,et al.  Transis: a communication subsystem for high availability , 1992, [1992] Digest of Papers. FTCS-22: The Twenty-Second International Symposium on Fault-Tolerant Computing.

[27]  Donald E. Knuth,et al.  The Art of Computer Programming, Volume I: Fundamental Algorithms, 2nd Edition , 1997 .

[28]  M. Hill,et al.  Weak ordering-a new definition , 1990, [1990] Proceedings. The 17th Annual International Symposium on Computer Architecture.

[29]  Henri E. Bal,et al.  Orca: A Language For Parallel Programming of Distributed Systems , 1992, IEEE Trans. Software Eng..

[30]  Anoop Gupta,et al.  Memory consistency and event ordering in scalable shared-memory multiprocessors , 1990, [1990] Proceedings. The 17th Annual International Symposium on Computer Architecture.

[31]  Henri E. Bal,et al.  Parallel programming using shared objects and broadcasting , 1992, Computer.

[32]  Robbert van Renesse,et al.  Reliable Distributed Computing with the Isis Toolkit , 1994 .

[33]  Maurice Herlihy,et al.  Linearizability: a correctness condition for concurrent objects , 1990, TOPL.

[34]  Richard D. Schlichting,et al.  Preserving and using context information in interprocess communication , 1989, TOCS.

[35]  Anoop Gupta,et al.  Memory consistency and event ordering in scalable shared-memory multiprocessors , 1990, ISCA '90.

[36]  Leslie Lamport,et al.  How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs , 2016, IEEE Transactions on Computers.

[37]  Nancy A. Lynch,et al.  An introduction to input/output automata , 1989 .

[38]  Henri E. Bal,et al.  Object distribution in Orca using Compile-Time and Run-Time techniques , 1993, OOPSLA '93.

[39]  Mustaque Ahamad,et al.  Implementing and programming causal distributed shared memory , 1991, [1991] Proceedings. 11th International Conference on Distributed Computing Systems.

[40]  Yehuda Afek,et al.  Lazy caching , 1993, TOPL.