Efficiently Implementing LL/SC Objects Shared by an Unknown Number of Processes

Over the past decade, a pair of instructions called load-linked (LL) and store-conditional (SC) have emerged as the most suitable synchronization instructions for the design of lock-free algorithms. However, current architectures do not support these instructions; instead, they support either CAS (e.g., UltraSPARC, Itanium) or restricted versions of LL/SC (e.g., POWER4, MIPS, Alpha). To bridge this gap, a flurry of algorithms that implement LL/SC from CAS have appeared in the literature. Some of these algorithms assume that N, the maximum number of participating processes, is fixed and known in advance. Others make no such assumption, but are either non-blocking (not wait-free), implement small LL/SC objects, or require that a process performs O(N) work to join the algorithm. Specifically, no constant-time, word-sized, wait-free LL/SC algorithm that does not require the knowledge of N exists. In this paper, we present such an algorithm.

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

[2]  Mark Moir,et al.  Transparent Support for Wait-Free Transactions , 1997, WDAG.

[3]  Prasad Jayanti f-arrays: implementation and applications , 2002, PODC '02.

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

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

[6]  Maged M. Michael Practical Lock-Free and Wait-Free LL/SC/VL Implementations Using 64-Bit CAS , 2004, DISC.

[7]  Mark Moir,et al.  Universal constructions for multi-object operations , 1995, PODC '95.

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

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

[10]  Mark Moir Laziness pays! Using lazy synchronization mechanisms to improve non-blocking constructions , 2001, Distributed Computing.

[11]  Mark Moir,et al.  Universal Constructions for Large Objects , 1995, IEEE Trans. Parallel Distributed Syst..

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

[13]  Yehuda Afek,et al.  Wait-free made fast , 1995, STOC '95.

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

[15]  Prasad Jayanti,et al.  Efficient and practical constructions of LL/SC variables , 2003, PODC '03.

[16]  Maurice Herlihy,et al.  A methodology for implementing highly concurrent data objects , 1993, TOPL.

[17]  Prasad Jayanti,et al.  Dartmouth Computer Science Technical Report TR2005-554 Efciently Implementing a Large Number of LL/SC Objects , 2005 .

[18]  Prasad Jayanti An optimal multi-writer snapshot algorithm , 2005, STOC '05.

[19]  Alan R. Earls,et al.  Digital equipment corporation. , 2004, Analytical chemistry.

[20]  Prasad Jayanti,et al.  Efficient Wait-Free Implementation of Multiword LL/SC Variables , 2005, 25th IEEE International Conference on Distributed Computing Systems (ICDCS'05).

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

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

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

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

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