Skip to Main Content
The well-known drawbacks of lock-based programming have forced researchers to explore new alternatives for parallel programming of which Transactional memory (TM) is a promising one. TM has been shown to scale well in multi-core processors when applications have data access patterns with a few conflicts. In contrast, if conflicts happen frequently in programs TM results in poor performance. In this paper, we introduce speculative contention avoidance (SCA) to prevent conflicts in TMs. SCA dynamically controls number of concurrently executing transactions and serializes those transactions that are likely to conflict. This technique is built on the concept of contention locality, which describes the likelihood that a previously aborted transaction fails again in the future. We find that contentions are highly predictable in TMs and exploit simple predictors which rely on history of transactions to speculate contentions. We have incorporated SCA into TL2 and compared the performance of the new implementation with the original STM using Stamp v0.9.7 benchmark suite. Our results show that SCA is highly effective at preventing contentions and significantly improves performance.