TY - GEN
T1 - Brief announcement
T2 - 31st International Symposium on Distributed Computing, DISC 2017
AU - Gelashvili, Rati
AU - Keidar, Idit
AU - Spiegelman, Alexander
AU - Wattenhofer, Roger
N1 - Publisher Copyright: © Rati Gelashvili, Idit Keidar, Alexander Spiegelman, and Roger Wattenhofer;.
PY - 2017/10/1
Y1 - 2017/10/1
N2 - Contrary to common belief, a recent work by Ellen, Gelashvili, Shavit, and Zhu has shown that computability does not require multicore architectures to support "strong" synchronization instructions like compare-and-swap, as opposed to combinations of "weaker" instructions like decrement and multiply. However, this is the status quo, and in turn, most efficient concurrent data-structures heavily rely on compare-and-swap (e.g. for swinging pointers). We show that this need not be the case, by designing and implementing a concurrent linearizable Log data-structure (also known as a History object), supporting two operations: append(item), which appends the item to the log, and get-log(), which returns the appended items so far, in order. Readers are wait-free and writers are lock-free, hence this data-structure can be used in a lock-free universal construction to implement any concurrent object with a given sequential specification. Our implementation uses atomic read, xor, decrement, and fetch-and-increment instructions supported on X86 architectures, and provides similar performance to a compare-and-swap-based solution on today's hardware. This raises a fundamental question about minimal set of synchronization instructions that the architectures have to support.
AB - Contrary to common belief, a recent work by Ellen, Gelashvili, Shavit, and Zhu has shown that computability does not require multicore architectures to support "strong" synchronization instructions like compare-and-swap, as opposed to combinations of "weaker" instructions like decrement and multiply. However, this is the status quo, and in turn, most efficient concurrent data-structures heavily rely on compare-and-swap (e.g. for swinging pointers). We show that this need not be the case, by designing and implementing a concurrent linearizable Log data-structure (also known as a History object), supporting two operations: append(item), which appends the item to the log, and get-log(), which returns the appended items so far, in order. Readers are wait-free and writers are lock-free, hence this data-structure can be used in a lock-free universal construction to implement any concurrent object with a given sequential specification. Our implementation uses atomic read, xor, decrement, and fetch-and-increment instructions supported on X86 architectures, and provides similar performance to a compare-and-swap-based solution on today's hardware. This raises a fundamental question about minimal set of synchronization instructions that the architectures have to support.
KW - Consensus hierarchy
KW - Synchronization instruction
KW - Universal construction
UR - http://www.scopus.com/inward/record.url?scp=85032349518&partnerID=8YFLogxK
U2 - https://doi.org/10.4230/LIPIcs.DISC.2017.53
DO - https://doi.org/10.4230/LIPIcs.DISC.2017.53
M3 - منشور من مؤتمر
T3 - Leibniz International Proceedings in Informatics, LIPIcs
BT - 31st International Symposium on Distributed Computing, DISC 2017
A2 - Richa, Andrea W.
Y2 - 16 October 2017 through 20 October 2017
ER -