Abstract:
Work on non-blocking data structures has proposed extending processor designs with a compare-and-swap primitive, CAS2, which acts on two arbitrary memory locations. Experience suggested that current operations, typically single-word compare-and-swap (CAS1), are not expressive enough to be used alone in an efficient manner. In this paper we build CAS2 from CAS1 and, in fact, build an arbitrary multi-word compare-and-swap (CASN). Our design requires only the primitives available on contemporary systems, reserves a small and constant amount of space in each word updated (either 0 or 2 bits) and permits nonoverlapping updates to occur concurrently. This provides compelling evidence that current primitives are not only universal in the theoretical sense introduced by Herlihy, but are also universal in their use as foundations for practical algorithms. This provides a straightforward mechanism for deploying many of the interesting non-blocking data structures presented in the literature that have previously required CAS2.
Citations
|
971
|
The model checker spin
– Holzmann
- 1997
|
|
372
|
Algorithms for Scalable Synchronization on SharedMemory Multiprocessors
– MELLOR-CRUMMEY, SCOTT
- 1991
|
|
254
|
A methodology for implementing highly concurrent data objects
– Herlihy
- 1993
|
|
240
|
Software transactional memory
– Shavit, Touitou
- 1995
|
|
206
|
Shared memory consistency models: a tutorial
– Adve, Gharachorloo
- 1996
|
|
81
|
Alock-free multiprocessor os kernel
– Massalin, Pu
- 1991
|
|
65
|
Lock-free linked lists using compare-and-swap
– Valois
- 1995
|
|
65
|
Adve and Kourosh Gharachorloo. Shared Memory Consistency Models: A Tutorial
– Sarita
- 1996
|
|
64
|
Universal constructions for multi-object operations
– Anderson, Moir
- 1995
|
|
58
|
Practical implementations of non-blocking synchronization primitives
– Moir
- 1997
|
|
56
|
Disjoint-accessparallel implementations of strong shared memory primitives
– Israeli, Rappoport
- 1994
|
|
50
|
Non-Blocking Synchronization and System Design
– Greenwald
- 1999
|
|
44
|
Safe memory reclamation for dynamic lock-free objects using atomic reads and writes
– Michael
- 2002
|
|
39
|
Transparent support for wait-free transactions
– Moir
- 1997
|
|
30
|
A pragmatic implementation of non-blocking linked lists
– Harris
|
|
23
|
Implementing wait-free objects in priority-based systems
– Anderson, Ramamurthy, et al.
- 1997
|
|
9
|
better DCAS-based concurrent deques
– Even
- 2000
|
|
8
|
Steele Jr., Lock-free reference counting
– Detlefs, Martin, et al.
- 2001
|
|
7
|
Correction of a memory management method for lock-free data structures
– Michael, Scott
- 1995
|
|
1
|
The repeat oender problem: a mechanism for supporting dynamic-sized, lock-free data structures
– Herlihy, Luchangco, et al.
- 2002
|
|
1
|
A Martin, Nir N Shavit, and Guy L Steele Jr. Even better DCAS-based concurrent deques
– Detlefs, Flood, et al.
- 2000
|