Nonblocking k-compare-single-swap

The current literature o .ers two extremes of nonblocking software synchronization support for concurrent data structure design:intricate designs of specific structures based on single-location operations such as compare-and-swap (CAS), and general-purpose multilocation transactional memory implementations. While the former are sometimes efficient, they are invariably hard to extend and generalize. The latter are .exible and general, but costly. This paper aims at a middle ground:reasonably efficient multilocation operations that are general enough to reduce the design difficulties of algorithms based on CAS alone. We present an obstruction-free implementation of an atomic k-location-compare single-swap (KCSS)operation. KCSS allows for simple nonblocking manipulation of linked data structures by overcoming the key algorithmic difficulty in their design: making sure that while a pointer is being manipulated, neighboring parts of the data structure remain unchanged. Our algorithm is efficient in the common uncontended case: A successful k location KCSS operation requires only two CAS operations, two stores, and 2 k noncached loads when there is no contention. We therefore believe our results lend themselves to efficient and flexible nonblocking manipulation of list-based data structures in today's architectures.

[1]  Nir Shavit,et al.  Atomic snapshots of shared memory , 1990, JACM.

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

[3]  Wen-mei W. Hwu,et al.  A Feature Taxonomy and Survey of Synchronization Primitive Implementations , 1991 .

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

[5]  Dennis Shasha,et al.  Locking without blocking: making lock based concurrent data structure algorithms nonblocking , 1992, PODS '92.

[6]  Brian Case,et al.  SPARC architecture , 1992 .

[7]  Robert Sims,et al.  Alpha architecture reference manual , 1992 .

[8]  F. Vaandrager Forward and Backward Simulations Part I : Untimed Systems , 1993 .

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

[10]  Greg Barnes,et al.  A method for implementing lock-free shared-data structures , 1993, SPAA '93.

[11]  Amos Israeli,et al.  Disjoint-access-parallel implementations of strong shared memory primitives , 1994, PODC '94.

[12]  David L Weaver,et al.  The SPARC architecture manual : version 9 , 1994 .

[13]  Nancy A. Lynch,et al.  Forward and Backward Simulations: I. Untimed Systems , 1995, Inf. Comput..

[14]  Hagit Attiya,et al.  Universal operations: unary versus binary , 1996, PODC '96.

[15]  Nir Shavit,et al.  Software transactional memory , 1995, PODC '95.

[16]  Mark Moir Practical implementations of non-blocking synchronization primitives , 1997, PODC '97.

[17]  Maged M. Michael,et al.  Nonblocking Algorithms and Preemption-Safe Locking on Multiprogrammed Shared Memory Multiprocessors , 1998, J. Parallel Distributed Comput..

[18]  David R. Cheriton,et al.  Non-blocking synchronization and system design , 1999 .

[19]  Nir Shavit,et al.  DCAS-based concurrent deques , 2000, SPAA '00.

[20]  Mark Moir Laziness pays! using lazy synchronization mechanisms to improve non-blocking constructions , 2000, PODC '00.

[21]  Timothy L. Harris,et al.  A Pragmatic Implementation of Non-blocking Linked-Lists , 2001, DISC.

[22]  Maged M. Michael Safe memory reclamation for dynamic lock-free objects using atomic reads and writes , 2002, PODC '02.

[23]  Mark Moir,et al.  \bf DCAS-Based Concurrent Deques , 2002, Theory of Computing Systems.

[24]  Maurice Herlihy,et al.  The Repeat Offender Problem: A Mechanism for Supporting Dynamic-Sized, Lock-Free Data Structures , 2002, DISC.

[25]  Mark Moir,et al.  Lock-free reference counting , 2002, PODC '01.

[26]  Keir Fraser,et al.  A Practical Multi-word Compare-and-Swap Operation , 2002, DISC.

[27]  Maged M. Michael,et al.  High performance dynamic lock-free hash tables and list-based sets , 2002, SPAA '02.

[28]  Maurice Herlihy,et al.  Software transactional memory for dynamic-sized data structures , 2003, PODC '03.

[29]  Maurice Herlihy,et al.  Obstruction-free synchronization: double-ended queues as an example , 2003, 23rd International Conference on Distributed Computing Systems, 2003. Proceedings..

[30]  Maurice Herlihy,et al.  Bringing practical lock-free synchronization to 64-bit applications , 2004, PODC '04.

[31]  Maged M. Michael Hazard pointers: safe memory reclamation for lock-free objects , 2004, IEEE Transactions on Parallel and Distributed Systems.