A methodology for implementing highly concurrent data objects

A concurrent object is a data structure shared by concurrent processes. Conventional techniques for implementing concurrent objects typically rely on critical sections; ensuring that only one process at a time can operate on the object. Nevertheless, critical sections are poorly suited for asynchronous systems: if one process is halted or delayed in a critical section, other, nonfaulty processes will be unable to progress. By contrast, a concurrent object implementation is lock free if it always guarantees that some process will complete an operation in a finite number of steps, and it is wait free if it guarantees that each process will complete an operation in a finite number of steps. This paper proposes a new methodology for constructing lock-free and wait-free implementations of concurrent objects. The object's representation and operations are written as stylized sequential programs, with no explicit synchronization. Each sequential operation is atutomatically transformed into a lock-free or wait-free operation using novel synchronization and memory management algorithms. These algorithms are presented for a multiple instruction/multiple data (MIMD) architecture in which n processes communicate by applying atomic read, write, load_linked, and store_conditional operations to a shared memory.

[1]  Amos Israeli,et al.  On processor coordination using asynchronous hardware , 1987, PODC '87.

[2]  Larry Rudolph,et al.  Dynamic decentralized cache schemes for mimd parallel processors , 1984, ISCA '84.

[3]  Maurice Herlihy,et al.  Impossibility and universality results for wait-free synchronization , 1988, PODC '88.

[4]  J. T. Robinson,et al.  On optimistic methods for concurrency control , 1979, TODS.

[5]  Leslie Lamport,et al.  Concurrent reading and writing , 1977, Commun. ACM.

[6]  Ronald L. Rivest,et al.  Introduction to Algorithms , 1990 .

[7]  Larry Rudolph,et al.  Dynamic decentralized cache schemes for mimd parallel processors , 1984, ISCA 1984.

[8]  Brian W. Kernighan,et al.  The C Programming Language , 1978 .

[9]  Nancy A. Lynch,et al.  Consensus in the presence of partial synchrony , 1988, JACM.

[10]  S. B. Yao,et al.  Efficient locking for concurrent operations on B-trees , 1981, TODS.

[11]  Richard E. Newman A Protocol for Wait-Free, Atomic, Multi-Reader Shared Variables , 1987, PODC.

[12]  James C. Browne,et al.  Simultaneous Update of Priority Structures , 1987, ICPP.

[13]  Gary L. Peterson,et al.  Constructing multi-reader atomic values from non-atomic values , 1987, PODC '87.

[14]  Leslie Lamport,et al.  Specifying Concurrent Program Modules , 1983, TOPL.

[15]  Ray Ford,et al.  Concurrency control mechanisms and the serializability of concurrent tree algorithms , 1984, PODS '84.

[16]  Robert Metcalfe,et al.  Ethernet: distributed packet switching for local computer networks , 1988, CACM.

[17]  Larry Rudolph,et al.  Basic Techniques for the Efficient Coordination of Very Large Numbers of Cooperating Sequential Processors , 1983, TOPL.

[18]  Maurice Herlihy,et al.  A methodology for implementing highly concurrent data structures , 1990, PPOPP '90.

[19]  Ambuj K. Singh,et al.  The elusive atomic register revisited , 1987, PODC '87.

[20]  Nancy A. Lynch,et al.  Impossibility of distributed consensus with one faulty process , 1985, JACM.

[21]  Edward W. Felten,et al.  Performance issues in non-blocking synchronization on shared-memory multiprocessors , 1992, PODC '92.

[22]  Christos H. Papadimitriou,et al.  The serializability of concurrent database updates , 1979, JACM.

[23]  Gary L. Peterson,et al.  Concurrent reading while writing II: The multi-writer case , 1987, 28th Annual Symposium on Foundations of Computer Science (sfcs 1987).

[24]  Gary L. Peterson,et al.  Concurrent Reading While Writing , 1983, TOPL.

[25]  Robert E. Tarjan,et al.  Self-adjusting binary trees , 1983, STOC.

[26]  Danny Dolev,et al.  On the minimal synchronism needed for distributed consensus , 1983, 24th Annual Symposium on Foundations of Computer Science (sfcs 1983).

[27]  Gregory R. Andrews,et al.  Concepts and Notations for Concurrent Programming , 1983, CSUR.

[28]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[29]  Douglas W. Jones,et al.  Concurrent operations on priority queues , 1989, CACM.

[30]  Ralph Grishman,et al.  The NYU Ultracomputer—Designing an MIMD Shared Memory Parallel Computer , 1983, IEEE Transactions on Computers.

[31]  Richard J. Anderson,et al.  Wait-free parallel algorithms for the union-find problem , 1991, STOC '91.

[32]  Maurice Herlihy,et al.  Transactional Memory: Architectural Support For Lock-free Data Structures , 1993, Proceedings of the 20th Annual International Symposium on Computer Architecture.

[33]  Richard L. Sites,et al.  Alpha Architecture Reference Manual , 1995 .

[34]  Leonidas J. Guibas,et al.  A dichromatic framework for balanced trees , 1978, 19th Annual Symposium on Foundations of Computer Science (sfcs 1978).

[35]  Michael L. Scott,et al.  Algorithms for scalable synchronization on shared-memory multiprocessors , 1991, TOCS.

[36]  Yehoshua Sagiv Concurrent Operations on B*-Trees with Overtaking , 1986, J. Comput. Syst. Sci..

[37]  Maurice Herlihy,et al.  Wait-free synchronization , 1991, TOPL.

[38]  Serge A. Plotkin Sticky bits and universality of consensus , 1989, PODC '89.

[39]  Maurice Herlihy,et al.  Axioms for concurrent objects , 1987, POPL '87.

[40]  Cynthia Dwork,et al.  Flipping persuasively in constant expected time , 1986, 27th Annual Symposium on Foundations of Computer Science (sfcs 1986).

[41]  Robert Metcalfe,et al.  Ethernet: distributed packet switching for local computer networks , 1976, CACM.

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

[43]  Dennis Shasha,et al.  Concurrent set manipulation without locking , 1988, PODS '88.

[44]  Bard Bloom,et al.  Constructing two-writer atomic registers , 1987, PODC '87.

[45]  Thomas E. Anderson,et al.  The Performance of Spin Lock Alternatives for Shared-Memory Multiprocessors , 1990, IEEE Trans. Parallel Distributed Syst..