Proceedings of the Twenty-Second Annual Symposium on Principles of Distributed Computing 2003
DOI: 10.1145/872035.872078
|View full text |Cite
|
Sign up to set email alerts
|

Efficient and practical constructions of LL/SC variables

Abstract: Over the past decade, a pair of synchronization instructions known as LL/SC has emerged as the most suitable set of instructions to be used in the design of lock-free algorithms. However, no existing multiprocessor system supports these instructions in hardware. Instead, most modern multiprocessors support instructions such as CAS or RLL/RSC (e.g. POWER4, MIPS, SPARC, IA-64). This paper presents two efficient algorithms that implement 64-bit LL/SC from 64-bit CAS or RLL/RSC. Our re~ults are summarized as follo… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
4
1

Citation Types

0
60
0

Year Published

2004
2004
2013
2013

Publication Types

Select...
5
3

Relationship

1
7

Authors

Journals

citations
Cited by 39 publications
(60 citation statements)
references
References 20 publications
0
60
0
Order By: Relevance
“…As with other early designs, it used nesting LL/SC operations. These are not directly supported by hardware and possible implementations, using basic LL/SC or CAS, operate by reserving per-processor 'valid' bits or counters in each word [22] or by having several per-processor data structures for each word in the heap [18]. These space costs make the design impractical for general use.…”
Section: Related Workmentioning
confidence: 99%
“…As with other early designs, it used nesting LL/SC operations. These are not directly supported by hardware and possible implementations, using basic LL/SC or CAS, operate by reserving per-processor 'valid' bits or counters in each word [22] or by having several per-processor data structures for each word in the heap [18]. These space costs make the design impractical for general use.…”
Section: Related Workmentioning
confidence: 99%
“…The only previous 64-bit-clean cas-based implementation of ll/sc is due to Jayanti and Petrovic [10]. While their implementation is wait-free [5], it requires O(mn) space, where m is the number of variables that support ll/sc and n is the number of threads that can access those variables; ours uses only O(m+n) space.…”
Section: Introductionmentioning
confidence: 99%
“…While their implementation is wait-free [5], it requires O(mn) space, where m is the number of variables that support ll/sc and n is the number of threads that can access those variables; ours uses only O(m+n) space. Furthermore, the implementation in [10] requires a priori knowledge of a fixed upper bound on the number of threads that will access an ll/sc variable. We call such implementations population-aware [8].…”
Section: Introductionmentioning
confidence: 99%
“…In the following we explain (i) what it means for SC to succeed or fail, and (ii) the rule for determining the SC's success or failure. [1,2,6,11,14,16,17]. Most of this research is focused on implementing small LL/SC objects, i.e., LL/SC objects whose value fits in a single machine word (which is 64-bits in the case of most machines) [2,6,11,14,16,17].…”
Section: Introductionmentioning
confidence: 99%
“…[1,2,6,11,14,16,17]. Most of this research is focused on implementing small LL/SC objects, i.e., LL/SC objects whose value fits in a single machine word (which is 64-bits in the case of most machines) [2,6,11,14,16,17]. However, many existing applications [1,4,12,13] need large LL/SC objects, i.e., LL/SC objects whose value does not fit in a single machine word.…”
Section: Introductionmentioning
confidence: 99%