Energy Consumption on Software Transactional Memories
Timóteo Matthies Rico, Mauricio Lima Pilla, André Rauber Du Bois · 2012
With the spreading of multicore architectures, new challenges have been added to software development. Among those, efficiently avoiding race conditions through synchronization is one of the greatest difficulties in concurrent programming. Transactional memories have been proposed to reduce the issues and limitations found on previous synchronization techniques based in locks, such as mutexes, semaphores, and monitors. The use of transactions allows for a higher abstraction on writing code, leaving for the compiler or library the determination of which variables can be accessed concurrently. The runtime system is responsible for detecting conflicts during execution, and solving them in a way that the desired semantics is preserved. In this context, this paper analyzes energy consumption and performance of three Software Transactional Memory implementations, TL2, TinySTM, and Swiss TM, using the STAMP benchmarks. Different from previous works, the workloads are not simulated but executed in a computer. The results show that TinySTM and Swiss TM have very similar performance, even more when the number of threads is increased. On the other hand, TL2 presents worse performance for all benchmarks but Genome. Energy consumption closely follows the same trend, as no specific power management is employed, hence execution time is the main variable determining power.