以下に説明するトランザクションメモリの私の理解は正しいですか?
TMを理解しようとしています。私はここでベンの答えを読み、インターネット上の他のいくつかの記事を理解しようとしました。しかし、正しく理解したかどうかはまだよくわかりません。トランザクションメモリでの私の理解では、スレッドはトランザクションを並行して実行する可能性があります。2つ(またはそれ以上)のスレッドが同じトランザクション変数にアクセスしようとすると、1つを除くすべてのスレッドがトランザクションを中止し、最初からやり直します(ある時点で、必ずしもすぐにではありません)。中止しないものは、トランザクション変数を更新します。
つまり、TMの簡単な説明では、すべてのスレッドが並行して実行され、トランザクション変数へのアクセスの重複がないことを願っています。重複がある場合は、1つのスレッドのみを続行し、他のスレッドはロールバックして再試行します。このTMの理解は正しいですか?
回答
それはかなり良いあらすじです。詳細は非常に複雑であり、特定のTMモニターで一部のトランザクションを表現できない可能性があります。つまり、トランザクションの2つの実装(楽観的実装と悲観的実装)を含める必要がある場合があります。
キャッシュは基盤となる実装です。メモリへのトランザクション参照を作成すると、キャッシュはこれを記録し、それらの参照のいずれかが変更されたときにアラーム(再起動)を生成するか、変更された場合はトランザクションの終了を拒否します。
一般に、トランザクション変数の数は、キャッシュの結合性よりも少なくする必要があります。そうしないと、キャッシュから相互に追い出され、トランザクションが完了できなくなります。
トランザクションの最中に割り込みがどのように機能するかは、未解決の問題のままです。
要するに、それは20年前のちょっとした魅力的なアイデアでした。一般的なユーザビリティに近づくにつれて、ハードウェア要件が急速に拡大しているようです。コンピュータシステムを加速するよりも、寒い気候を暖めるのに役立つかもしれません。