A popular method to maintain consistency in software transactional memory (STM) is global version clock whose values are used to tag memory locations. This method is not efficient when transactional commit occurs frequently since contention over the global clock generates costly cache coherence invalidations and degrades performance. The alternative method is thread local clock (TLC) which exploits decentralized local variables to maintain consistent states in transactions. However, TLC may lead to false aborts and increase runtime of programs. In this work, we introduce Adaptive Versioning (AV) which dynamically selects one of the two validation techniques based on probability of conflicts. We show that AV is effective and improves performance of transactional applications significantly.
展开▼