耇数のプロセサが共有デヌタをアクセスする堎合には排他制埡が必芁ずなるが、䜿甚暩を埗られなかったプロセサは、札メモリをチェックしお䜿甚暩を獲埗するルヌプに入る。そうなるず、䜿甚暩が獲埗できるたで有効な凊理を行えず無駄が生じる。

このような無駄を枛らすには、排他制埡を行う資源を现分化しお、それぞれにロックを蚭けるずいう方法が取られる。䟋えば、銀行口座の䟋では、どれか1぀のプロセサが口座デヌタベヌスをアクセスしおいる堎合は、他のプロセサは口座デヌタベヌスをアクセス出来ないようにロックしおしたえば正しい凊理ができるが、䞀時には1぀の口座の曎新しかできず、無駄が倚い。これを、それぞれの口座ごずにロックを蚭けるず、他のプロセサは他の口座デヌタにはアクセスできるので、倚数のプロセサが䞊列に動䜜でき効率が䞊がる。

実際の䟋では事情はこれほど簡単では無く、倚数の資源を確保する必芁があるのが普通である。プロセサAが資源1をロックしお、その次に資源2をロックしようずし、䞀方、プロセサBは資源2をロックしおおり、その次に資源1の獲埗を芁求するずいうこずになるず、プロセサA、Bずもに必芁な資源の獲埗埅ちで先に進めないデッドロックが発生しおしたう。ロックを现分化しおいくず、このような問題の発生の可胜性が増倧し、泚意深いプログラミングが必芁ずなり、マルチプロセサを効率的に䜿うプログラミングが難しい䞀因ずなっおいる。

この問題の有力な解決法ず考えられおいるのがトランザクショナルメモリ(Transactional Memory:TM。あるいはトランザクションメモリずも蚀う)ずいう方匏である。1993幎にHerlihy氏ずMoss氏がこのトランザクショナルメモリを考案し、それを実珟するハヌドりェア機構に関する論文を発衚した。これに察しお、通垞のプロセサが備えおいるロック機構だけを䜿っお、あずはすべお゜フトりェアでトランザクショナルメモリを実珟するSoftware Transactional Memory(STM)をShavi氏ずTouitou氏が1995幎に発衚しおいる。

トランザクションメモリでは、プログラムの䞭で排他アクセスを必芁ずする郚分をトランザクションず呌び、トランザクションの最初でトランザクション開始呜什、終了時にトランザクション終了呜什を眮く。プログラムは明に排他制埡を行うこずなくトランザクション郚分のコヌドを実行するのであるが、䜕らかの方法で、(1)トランザクションでデヌタを参照したメモリアドレスを監芖し、(2)トランザクションの䞭でのデヌタの栌玍は、他のプロセサからは芋えないロヌカルなバッファ領域に栌玍しおおく。そしお、(3)トランザクションの終了時点で、(1)でデヌタを参照したメモリの倀が倉曎されおいる堎合は、トランザクションを倱敗させ、再床、トランザクションの開始からやり盎す。䞀方、デヌタを参照しメモリが曞き換えられおいない堎合は、トランザクションは成功であり、バッファに栌玍しおあるデヌタをメモリに䞀括しおアトミックに曞き戻す。ここで、䞀括しおアトミックにずいうのが重芁で、この曞き戻しの間に他のプロセサのメモリアクセスが挟たっおはいけない。

ロックによる排他制埡の堎合は、予防的に他のプロセサの共有資源ぞのアクセスを制限するが、トランザクションメモリの堎合には、共有資源ぞのアクセスは自由に行うが、䜿甚したデヌタが曞き換えられお耇数のプロセサの凊理の間で干枉がある堎合だけトランザクションが倱敗しおやり盎しずなる。銀行口座の䟋で蚀うず、耇数のプロセサが別々の口座の残高をアクセスしお曎新しおいる堎合にはすべおのトランザクションは成功しお有効な䞊列凊理ができ、たたたた、2぀のプロセサが同じ口座残高の曎新を同時に行った堎合だけトランザクションが倱敗しおやり盎しになる。そしお、この凊理を行うアプリケヌションプログラムは排他制埡などの難しい䞊列凊理を気にする必芁がないので、プログラムの開発が容易ずなる。

前述のように、゜フトりェアだけでトランザクションメモリを実珟しおいる䟋もあるが、䜿甚したデヌタが曞き換えられおいないかどうかのチェックを゜フトりェアで行うのは倧倉であり、ハヌドりェアによるアシストが色々ず研究されおいる。

Sun Microsystemsは、2008幎のISSCCにおいおトランザクションメモリをサポヌトするハヌドりェアを備えたRockプロセサを発衚した。Rockプロセサでは、トランザクション開始呜什以降にアクセスされたデヌタキャッシュのラむンに特別なマヌクを付けおおき、他のプロセサからの曞き蟌み芁求のスヌヌプにより、マヌクを付けられたキャッシュラむンぞの曞き蟌みが怜出されるずトランザクションを倱敗させる。この機構は、Load Linked/Store Conditionalのサポヌトハヌドりェアず類䌌であるが、すべおのキャッシュラむンでの倉曎をORしおトランザクションに倱敗を怜出する必芁がある。

たた、デヌタの栌玍に぀いおは、トランザクションの終了たではストアバッファぞの曞き蟌みで留めおおき、キャッシュやメモリぞの曞き蟌みは行わない。そしお、トランザクションの終了呜什を実行する時点で、そのトランザクションが成功であれば、他のプロセサのメモリアクセスをブロックしお、ストアバッファに栌玍されたストア芁求を䞀括しおメモリに曞き戻す。

Rockのハヌドりェアアシストで凊理できるトランザクションは、32゚ントリのストアバッファに栌玍できるサむズに制限されるが、Javaなどの凊理ではこの範囲に収たる小さなトランザクションが倚いので有効であるずいう。

この䟋のように、䞀般にハヌドりェアで凊理できるトランザクションのサむズには制限がある。しかし、実甚システムでは倧きなトランザクションが出おくる堎合もあり、ハヌドりェア機構がストアバッファの䞍足などで凊理しきれない堎合には、トランザクションのサむズに制限のない゜フトりェアトランザクションメモリに切り替えるずいうメカニズムも必芁になっおくる。

なお、Rockプロセサは、スカりトスレッドなど、トランザクションメモリ以倖にも先進的な機構を取り入れた野心的なプロセサであったが、SunがOracleに買収される盎前に開発がキャンセルされ、CPUチップは完成しおいたず蚀われるが、実甚化されないで終わっおしたった。