ダブル・コンペアアンドスワップ
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/10/10 17:46 UTC 版)
「コンペア・アンド・スワップ」の記事における「ダブル・コンペアアンドスワップ」の解説
ダブル・コンペアアンドスワップ(Double Compare-and-Swap、DCASまたはCAS2)は、CAS命令の拡張された形式。DCAS命令は2箇所のメモリ位置が指定された値であるときに両者を書き換える命令である。 Greenwald は博士論文の中で DCAS 命令の必要性を説いた。それを使うことによって Software Transactional Memory(ロックフリーな並行性制御の一種。一連のメモリへのリード/ライトをトランザクションとして不可分に実行する)を簡単に実現できるとした。最近では、Software Transactional Memory は CAS命令だけで実現できることが示されている。 DCAS命令の主な利点は双方向の線形リストをアトミック(不可分)に実装できる点である。 DCAS命令は万能ではない。DCASによるLock-freeとWait-freeアルゴリズムの実装は、CAS命令を使った場合と同程度に複雑でバグを作りこみ易い。したがって今後、DCAS命令が主流となることは難しい。2006年現在、広く使われているCPUではDCAS命令はサポートされていない。モトローラは68000系のプロセッサでCAS2命令をサポートしていたが、その性能が悪かったためにあまり使われなかった。現在では命令セットから省かれている。CAS命令は今もよく使われている(IA-32、SPARCなど)。
※この「ダブル・コンペアアンドスワップ」の解説は、「コンペア・アンド・スワップ」の解説の一部です。
「ダブル・コンペアアンドスワップ」を含む「コンペア・アンド・スワップ」の記事については、「コンペア・アンド・スワップ」の概要を参照ください。
- ダブル・コンペアアンドスワップのページへのリンク