uSTM: A Lightweight and Efficient STM Supporting General Types and Deferred Aborts
2026-07-20 • Distributed, Parallel, and Cluster Computing
Distributed, Parallel, and Cluster Computing
AI summaryⓘ
The authors present uSTM, a new Software Transactional Memory system that lets programs run parts of their code at the same time without many common problems. Unlike other STM systems, uSTM works with general data types without changing how they're stored and delays stopping transactions until the very end, which helps avoid bugs. They introduce a unique method called split-increment timestamps to keep everything safe and correct. Tests show uSTM performs as well or better than existing systems while being simpler and more flexible.
Software Transactional Memory (STM)multicore architecturestransactionsdata layouttransaction abortsopacitytimestampingsplit-increment timestampsconcurrent programmingperformance optimization
Authors
Zachary Kent, Guy Blelloch, André Costa
Abstract
Software Transactional Memory (STM) systems allow developers to more easily exploit multicore architectures by wrapping arbitrary sequential code in transactions that are executed concurrently. In recent years, the performance of STM systems has approached that of hand-tuned data structures through techniques that avoid unnecessary aborts and exploit the semantics of underlying data structures. Despite achieving excellent performance, most STM systems do not fully address the concerns they targeted in the first place: safety, usability, and generality. In particular, these systems place restrictions on the data types that may be updated transactionally, such as requiring that these types fit within a word, and can require modification of data layout. Moreover, most STM systems abort transactions in the middle of client code to ensure correctness. This can cause space leaks and other bugs not present in the original code. We present ustm, a novel STM system addressing all of these shortcomings while still maintaining excellent performance, all within ~300 lines of code. uSTM supports general types while maintaining data layout. Aborts are deferred until the end of the transaction, allowing client code within a transaction to terminate normally. To ensure that uSTM guarantees opacity, we implement a novel timestamping algorithm we call split-increment timestamps. We compare the performance of uSTM to a variety of state-of-the-art (SOTA) STM systems, demonstrating that uSTM matches or outperforms the SOTA on a variety of workloads.