  Extensive polling in shared-memory manycore systems can lead to contention,
decreased throughput, and poor energy efficiency. Both lock implementations and
the general-purpose atomic operation, load-reserved/store-conditional (LRSC),
cause polling due to serialization and retries. To alleviate this overhead, we
propose LRwait and SCwait, a synchronization pair that eliminates polling by
allowing contending cores to sleep while waiting for previous cores to finish
their atomic access. As a scalable implementation of LRwait, we present
Colibri, a distributed and scalable approach to managing LRwait reservations.
Through extensive benchmarking on an open-source RISC-V platform with 256
cores, we demonstrate that Colibri outperforms current synchronization
approaches for various concurrent algorithms with high and low contention
regarding throughput, fairness, and energy efficiency. With an area overhead of
only 6%, Colibri outperforms LRSC-based implementations by a factor of 6.5x in
terms of throughput and 7.1x in terms of energy efficiency.
