Flexible decoupled transactional memory support

A Shriraman, S Dwarkadas, ML Scott - ACM SIGARCH Computer …, 2008 - dl.acm.org
ACM SIGARCH Computer Architecture News, 2008dl.acm.org
A high-concurrency transactional memory (TM) implementation needs to track concurrent
accesses, buffer speculative updates, and manage conflicts. We present a system, FlexTM
(FLEXible Transactional Memory), that coordinates four decoupled hardware mechanisms:
read and write signatures, which summarize per-thread access sets; per-thread conflict
summary tables (CSTs), which identify the threads with which conflicts have occurred;
Programmable Data Isolation, which maintains speculative updates in the local cache and …
A high-concurrency transactional memory (TM) implementation needs to track concurrent accesses, buffer speculative updates, and manage conflicts. We present a system, FlexTM (FLEXible Transactional Memory), that coordinates four decoupled hardware mechanisms: read and write signatures, which summarize per-thread access sets; per-thread conflict summary tables (CSTs), which identify the threads with which conflicts have occurred; Programmable Data Isolation, which maintains speculative updates in the local cache and employs a thread-private buffer (in virtual memory) in the rare event of overflow; and Alert-On-Update, which selectively notifies threads about coherence events. All mechanisms are software-accessible, to enable virtualization and to support transactions of arbitrary length. FlexTM allows software to determine when to manage conflicts (either eagerly or lazily), and to employ a variety of conflict management and commit protocols. We describe an STM-inspired protocol thatuses CSTs to manage conflicts in a distributed manner (no global arbitration) and allows parallel commits. In experiments with a prototype on Simics/GEMS, FlexTM exhibits 5x speedup over high-quality software TM, with no loss in policy flexibility. Its distributed commit protocol is also more efficient than a central hardware manager. Our results highlight the importance of flexibility in determining when to manage conflicts: lazy maximizes concurrency and helps to ensure forward progress while eager provides better overall utilization in a multi-programmed system.
ACM Digital Library