Extending TM Primitives using Low Level Semantics

Transactional Memory (TM) has recently emerged as an optimistic concurrency control technique that isolates concurrent executions at the level of reads and writes, therefore providing an easy programming interface. However, such isolation could be overly conservative from an application-level perspective. In this work, we developed an extension to the classical TM primitives (read and write) to infer more semantics from the program code while maintaining the same level of abstraction on the programmer’s side. We deployed this extension on two state-of-the-art STM algorithms. Additionally, we also provided full compiler support for our extensions by integrating them in GCC’s (version 5.3) TM library with negligible overhead.