Improved implementations of binary universal operations. - Attiya, Hagit
We present an algorithm for implementing binary operations (of any type) from unary load-linked (LL) and store-conditional (SC) operations. The performance of the algorithm is evaluated according to its sensitivity, measuring the distance between operations in the graph induced by conflicts, which guarantees that they do not influence the step complexity of each other. The sensitivity of our implementation is O(log* n), where n is the number of processors in the system. That is, operations that are Ω(log* n) apart in the graph induced by conflicts do not delay each other. Constant sensitivity is achieved for operations used to implement heaps and array-based linked lists.We also prove that there is a problem which can be solved in O(1) steps using binary LL/SC operations, but requires O(log log* n) operations if only unary LL/SC operations are used. This indicates a non-constant gap between unary and binary, LL/SC operations.
Keywords: Computer systems organization; Computer communication networks; Distributed systems; Performance of systems; Software; Programming techniques; Concurrent programming; Software engineering; Interoperability; Distributed objects; Operating systems; Process management; Synchronization; Theory of computation; Computation by abstract devices; Modes of computation; Parallelism and concurrency; Algorithms; Performance; Reliability; Theory