Transactions have emerged as a promising way to exploit thread-level
parallelism in the presence of shared data. Preventing data-races between
threads traditionally implies lock-based synchronization. This comes at the
risk of deadlock due to programmer error, and overly-conservative locking will
limit the performance potential of parallel execution. Transactions circumvent
these limitations by detecting and serializing data dependencies between
threads at runtime without the need for locks. Hardware supported transactional
memory builds on top of the cache coherence mechanism of shared memory
multi-processors to detect data dependence conflicts between concurrent
transactions. Recent proposals address the need to support the virtualization
of transactions when the finite capacity of the cache is exceeded. These
techniques have either a fast commit or abort, but not both. Similarly they
support either fast conflict detection but are not able to handle swapped
processes, or slow but complete. In this paper we examine page-based
transactional memory to provide virtual transactions. We combine transaction
bookkeeping with page address translation for fast conflict detection with fast
access of overflowed transactional data. Our approach provides fast virtual
transaction commit and abort, and conflict detection. We provide quantitative
measurement of performance, whereas most examinations of virtualized
transaction techniques provide only theoretical analysis of performance.
Pre-2018 CSE ID: CS2005-0848