Transactional memory is an alternative concurrency control mechanism that simplifies concurrent programming by providing developers with first-class transactional regions that guarantee atomicity, consistency, and isolation. In comparison with existing techniques, developers do not need to explicitly reason about placement, duration, or granularity of low-level mutual exclusion primitives, which are error-prone and can result in well-known concurrency bugs such as resource starvation and race conditions. But, when a transactional memory system does detect contention, it must abort by stopping the current transaction, discarding its side effects, and restarting its execution, which wastes work and inhibits forward progress.
In this talk, I present TardisTM, a software transactional memory system that supports transaction repair. Our key insight is that upon detecting contention, instead of aborting a transaction, we can incrementally repair transactional inconsistencies, and thus avoid discarding useful computation. We show that on a set of benchmark programs, repair allows for up to 72% speedup and 90% abort reduction over a baseline transactional memory system.
Presented in Partial Fulfillment of the CSD Speaking Skills Requirement.