Analyzing Conflicts in Hardware-Supported Memory Transactions
In order to exploit parallel resources, most transactional memory (TM) systems execute atomic blocks concurrently and must thus be prepared for data conflicts. In the event of a conflict, a TM system must choose a policy to decide when and how to manage the resulting contention. In this paper, we analyze the interplay between conflict resolution time and contention management policy in the context of hardware-supported TM systems, highlighting the performance and implementation implications of the various points in the design space. We show that both policy decisions have a significant impact on the ability to exploit available parallelism and ensure progress of individual transactions. Our analysis corroborates previous research findings that stalling (especially at access time and retrying the problematic access) helps side-step conflicts and avoid wasted work. We demonstrate that conflict resolution time has the dominant effect on performance: Lazy (which delays resolution to commit time) uncovers more parallelism than Eager (which resolves conflicts at access time). With Lazy, in spite of an aborted transaction tending to waste more work (31% more than Eager), the cumulative amount of wasted work is lower since fewer transactions are aborted (1.6 x less than Eager). Lazy's delayed conflict resolution also ensures progress and decreases the likelihood of pathologies (like livelock) while Eager needs sophisticated priority mechanisms in the contention management to avoid pathologies. Finally, we evaluate a mixed conflict resolution that detects write-write conflicts eagerly while detecting read-write conflicts lazily, and show that it provides a good compromise between implementation complexity and exploiting concurrency for performance.
transactional memory contention management mixed flextm conflict detection