トランザクションメモリ(Transactional Memory)

http://www.atmarkit.co.jp/news/analysis/200707/17/trans.html : トランザクションメモリはマルチコアの救世主となるのか? − @IT

 これに対して、1993年にMaurice Herlihy氏とJ.Eliot B. Moss氏が提案したコンセプトがトランザクションメモリ(Transactional Memory)という考え方だ。これは、基本的に共有リソースに対するロックを事前に行うのではなく、各実行スレッドがそのコピーをローカルに持ち、処理終了時点で参照数値が変更されていないことの確認と、結果の書き込みを一気に行ってしまうというものだ。

 仮に依存数値がほかのスレッドによって書き換えられている場合は処理そのものを廃棄してやり直す必要がある。この点、データベースのトランザクション処理と類似していることからトランザクションメモリと命名されている。本質的に投機的実行モデルである。

 当初のトランザクションメモリは、STM(Software Transactional Memory)の形でプログラミング言語であるHaskellへの実装という形で進行していた。その後、2006年あたりからは、各種ベンチマークが公表されたほか、HTM(Hardware Transactional Memory)、つまりハードでの実装があり、ISCA 2006でのグーグルによる大規模トランザクションへの工夫に関する提案と進展。2006年の年末にはインテルによる論文「Architectural Support for Software Transactional Memory」が発表された。この論文で、HASTM(Hardware Accelerated Software Transactional Memory)を支援するためにインテルアーキテクチャに追加するべき具体的な命令セットと、そのベンチマークシミュレーションへの言及があり、がぜん注目されるようになった。