Transactional memory

From Wikipedia, the free encyclopedia

Jump to: navigation, search

Transactional memory attempts to simplify parallel programming by allowing a group of load and store instructions to execute in an atomic way. It is a concurrency control mechanism analogous to database transactions for controlling access to shared memory in concurrent computing.

Contents

[edit] Hardware vs. software transactional implementations

Hardware transactional memory systems may have modifications in processors, cache and bus protocol to support transactions.[1][2][3][4][5]

Software transactional memory provides transactional memory semantics in a software runtime library or the programming language,[6] and requires minimal hardware support (typically an atomic compare and swap operation, or equivalent).

Load-Link/Store-Conditional (LL/SC) offered by many RISC processors can be viewed as the most basic transactional memory support. However, LL/SC usually operates on data that is the size of a native machine word.

[edit] Motivation

The motivation of transactional memory lies in the programming interface of parallel programs. The goal of a transactional memory system is to transparently support the definition of regions of code that are considered a transaction, that is, that have atomicity, consistency and isolation requirements. Transactional memory allows writing coding like in this example:

def transfer_money(from, to, amount):
    transaction:
        from = from - amount
        to = to + amount

In the code, the block defined by "transaction" has the atomicity, consistency and isolation guarantees and the underlying transactional memory implementation must assure those guarantees transparently.

[edit] Implementations

[edit] References

  1. ^ Herlihy, Maurice; Moss, J. Eliot B. (1993). "Transactional memory: Architectural support for lock-free data structures". Proceedings of the 20th International Symposium on Computer Architecture (ISCA). pp. 289–300. http://www.cs.brown.edu/~mph/HerlihyM93/herlihy93transactional.pdf. 
  2. ^ "Multiple Reservations and the Oklahoma Update". http://dx.doi.org/10.1109/88.260295. 
  3. ^ Hammond, L.; Wong, V.; Chen, M.; Carlstrom, B.D.; Davis, J.D.; Hertzberg, B.; Prabhu, M.K.; Honggo Wijaya; Kozyrakis, C.; Olukotun, K. (2004). "Transactional memory coherence and consistency". Proceedings of the 31st annual International Symposium on Computer Architecture (ISCA). pp. 102–113. http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1310767. 
  4. ^ "Unbounded transactional memory". http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1385954. 
  5. ^ "LogTM: Log-based transactional memory". http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1598134. 
  6. ^ "The ATOMOΣ Transactional Programming Language". http://tcc.stanford.edu/publications/tcc_pldi2006.pdf. 
  • Laurus, J.R. and Rajwar, R. Transactional Memory, Morgan & Claypool, 2006.

[edit] External links

Languages