IBM's Alphaworks Software Transactional Memory Compiler
Michael_Wong 120000M1EH Visits (6836)
Transactional Memory (TM) is a high level abstraction for supporting a safe mutable shared state, such that the user does not have to worry about the low-level details of locking and sharing of global resources. It is basically a class of optimistic speculation techniques such that groups of memory operations are bundled as an atomic operation such that it can resolves the problems with locks, possibly support composability.
The basic idea is to move your group of atomic operations through, assuming that it will be successful, and only rollback when a conflict actually occurs.
At the moment, much of the ideas of TM are there as a way to test out the idea, and possibly be integrated into some future hybrid system. Even practitioners of TM knows there is a certain amount of hype that we have to deal with in any new technology before it drops to a trough and rebounds back to a realistic plateau.
A number of vendors have planned both hardware and software implementations of Transactional Memory.
The software transactional memory compilers from different vendors all use different syntax, and this creates a basic problem with interoperability, and common porting of code. I will deal with this in the next post.
IBM is also working in this area, and has released an Alphaworks compiler supporting Software Transaction, actually last year.
The IBM XL C/C++ for Transactional Memory for AIX is also accessible from the Resource Library of the C/C++ Cafe.
The public domain STM runtime is compatible with the AlphaWorks XLC STM release.
It was released through the Amino Concurrency Building Blocks project
The source code is here
I will have more to say about the Amino Building Blocks in a future post.