Reactive multi-word synchronization for multiprocessors
Journal article, 2004
Shared memory multiprocessor systems typically provide a set of hardware primitives in order to support synchronization. Generally, they provide "single-word" read-modify-write hardware primitives such as compare-and-swap, load-linked/store-conditional and fetch-and-op, from which the higher-level synchronization operations are then implemented in software. Although the "single-word" hardware primitives are conceptually powerful enough to support higher-level synchronization, from the programmer's point of view they are not as useful as their generalizations to the "multi-word" objects.
This paper presents two fast and reactive lock-free "multi-word" compare-and-swap algorithms.
The algorithms dynamically measure the level of contention as well as the memory conflicts of the "multi-word" compare-and-swap operations, and in response, they react accordingly in order to guarantee good performance in a wide range of system conditions. The algorithms are non-blocking (lock-free), allowing in this way fast dynamical behavior.
Experiments on thirty processors of an SGI Origin2000 multiprocessor show that both our algorithms react quickly according to the contention variations and outperform the best known alternatives in almost all contention conditions.