私は Intel の「whatif」サイトとそのトランザクション メモリ コンパイラをチェックしていました (データベースのように、各スレッドはアトミック コミットを行うか、システムのメモリをロールバックする必要があります)。
ロックとミューテックスを置き換える有望な方法のように思えますが、多くの証言は見つかりません。ここに誰か入力がありますか?
私は Intel の「whatif」サイトとそのトランザクション メモリ コンパイラをチェックしていました (データベースのように、各スレッドはアトミック コミットを行うか、システムのメモリをロールバックする必要があります)。
ロックとミューテックスを置き換える有望な方法のように思えますが、多くの証言は見つかりません。ここに誰か入力がありますか?
私は Intel のコンパイラを使用したことがありませんが、Herb Sutter が興味深いコメントを残しています...
Sutter Speaks より: The Future of Concurrency
トランザクショナル メモリに多くの関心が寄せられ、使用されていますか? それとも、ほとんどの開発者にとって概念が難しすぎて理解できないのでしょうか?
まだ市場に投入されていないため、誰が使用しているのかはまだわかりません。Intel はソフトウェア トランザクショナル メモリ コンパイラのプロトタイプを持っています。しかし、質問が「開発者にとって使いにくいですか?」という場合は、答えは、私は確かに望んでいないということです。全体のポイントは、ロックよりもはるかに簡単です。これは、ロックの使用を大幅に削減できる可能性を秘めている唯一の主要なものです。ロックを完全に交換することはできませんが、部分的に交換することが唯一の大きな希望です。
いくつかの制限があります。特に、一部の I/O は本質的にトランザクションではありません。ユーザーに名前を入力するように求めるアトミック ブロックを取得して、コンソールから名前を読み取ることはできません。別のトランザクションと競合する場合は、ブロックを自動的に中止して再試行するだけです。プロンプトを 2 回表示すると、ユーザーは違いを知ることができます。ただし、トランザクショナル メモリは、メモリにしか触れていないものには最適です。
私が知っているすべての主要なハードウェアおよびソフトウェア ベンダーは、研究開発に複数のトランザクション メモリ ツールを持っています。基本的な質問に対する理論的な答えに関する会議や学術論文があります。モデル T の段階ではまだ出荷できません。初期の限定されたプロトタイプでは、無制限のトランザクション メモリを実行できない場合があります。たとえば、100 のメモリ ロケーションしか読み書きできない場合です。ただし、これは、より多くのロックフリー アルゴリズムを有効にするのに非常に役立ちます。
Dobb博士は、昨年、この概念に関する記事を掲載しました。CalumGrantによるトランザクションプログラミング-http: //www.ddj.com/cpp/202802978
これには、彼のサンプルライブラリを使用したいくつかの例、比較、および結論が含まれています。
Sun Microsystems は、トランザクション メモリをハードウェアでサポートする新しいプロセッサ (コードネーム Rock) を来年リリースすると発表しました。これにはいくつかの制限がありますが、プログラマーがロック/ミューテックスをトランザクションに簡単に置き換えて、そこから優れたパフォーマンスを期待できるようにするための適切な最初のステップです。
この件に関する興味深い講演については、Sun で Transactional Memory と Rock に取り組んでいる研究者の 1 人である Mark Moir によるこのリンクを参照してください。
Rock および Transactional Memory 全般に関する Sun からの詳細および発表については、このリンク.
必須のウィキペディアのエントリ:)
最後に、ウィスコンシン大学マディソン校のこのリンクには、ハードウェア関連かソフトウェア関連かを問わず、トランザクション メモリに関して行われてきた、および行われているほとんどの研究の文献目録が含まれています。
場合によっては、これが便利で必要でさえあると考えることができます。
ただし、プロセッサにこのプロセスを容易にする特別な命令がある場合でも、ミューテックスやセマフォと比較して大きなオーバーヘッドがあります。実装方法によっては、リアルタイムのパフォーマンスにも影響を与える可能性があります (割り込みを停止するか、共有領域への書き込みを防止する必要があります)。
ただし、これが実装された場合、特定のメモリ空間の一部にのみ必要になるため、影響は限定的であると予想されます。
-アダム