DCAS is not a silver bullet for nonblocking algorithm design

Despite years of research, the design of efficient nonblocking algorithms remains difficult. A key reason is that current shared-memory multiprocessor architectures support only single-location synchronisation primitives such as compare-and-swap (CAS) and load-linked/store-conditional (LL/SC). Recently researchers have investigated the utility of double-compare-and-swap (DCAS)--a generalisation of CAS that supports atomic access to two memory locations -- in overcoming these problems. We summarise recent research in this direction and present a detailed case study concerning a previously published nonblocking DCAS-based double-ended queue implementation. Our summary and case study clearly show that DCAS does not provide a silver bullet for nonblocking synchronisation. That is, it does not make the design and verification of even mundane nonblocking data structures with desirable properties easy. Therefore, our position is that while slightly more powerful synchronisation primitives can ave a profound effect on ease of algorithm design and verification, DCAS does not provide sufficient additional power over CAS to justify supporting it in hardware.

[1]  Theodore Johnson,et al.  A Nonblocking Algorithm for Shared Queues Using Compare-and-Swap , 1994, IEEE Trans. Computers.

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

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

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

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

[6]  Michael B. Greenwald,et al.  Two-handed emulation: how to build non-blocking implementations of complex data-structures using DCAS , 2002, PODC '02.

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

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

[9]  Donald E. Knuth The art of computer programming: fundamental algorithms , 1969 .

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

[11]  Nir Shavit,et al.  Even Better DCAS-Based Concurrent Deques , 2000, DISC.

[12]  David R. Cheriton,et al.  The synergy between non-blocking synchronization and operating system structure , 1996, OSDI '96.

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

[14]  Mark Moir,et al.  DCAS-based concurrent deques supporting bulk allocation , 2002 .

[15]  Simon Doherty Modelling and Verifying Non-blocking Algorithms that Use Dynamically Allocated Memory , 2004 .

[16]  C. Greg Plaxton,et al.  Thread Scheduling for Multiprogrammed Multiprocessors , 1998, SPAA '98.

[17]  John Rushby,et al.  A Less Elementary Tutorial for the PVS Specification and Verification System , 1996 .

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

[19]  Seif Haridi,et al.  Distributed Algorithms , 1992, Lecture Notes in Computer Science.

[20]  Calton Pu,et al.  A Lock-Free Multiprocessor OS Kernel , 1992, OPSR.

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

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

[23]  Donald Ervin Knuth,et al.  The Art of Computer Programming , 1968 .

[24]  Nancy A. Lynch,et al.  Hierarchical correctness proofs for distributed algorithms , 1987, PODC '87.

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

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

[27]  Keir Fraser,et al.  Language support for lightweight transactions , 2003, SIGP.

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

[29]  Mark Moir,et al.  Nonblocking k-compare-single-swap , 2003, SPAA '03.

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

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