トランザクションメモリとは

ソフトウェアでは、トランザクションメモリのスキームは、データベースが使用するトランザクションとよく似たトランザクションを使用するマルチスレッドプログラミングの一連のアクションです。 2つ以上のスレッドが同じデータに同時にアクセスしようとすると、さまざまな望ましくない状況が発生し、プログラムの結果がスレッドのアクセス順序に依存する場合があります。 通常、1つの順序が望まれ、マルチスレッドでは、ロックは、一度に1つのスレッドのみが特定のリソースにアクセスできるようにするための支配的で最も簡単な方法です。

トランザクションメモリへのこのアプローチには、マルチスレッドのロックに関する複数の問題が含まれます。 何らかの予期しないエラーが発生すると、ロックは永続的になり、ロックは、デッドロックや優先順位の反転など、同時性に関する予期しない問題を引き起こす可能性があります。 ロックが非常にきめ細かい結果として、別の問題には、コードが最終的にロック、コンテキストの切り替え、およびロック解除の間の大半の時間を費やしてしまうことが含まれます。 これは、プログラム内で他の重要な作業を行うよりもこれらのアクションにより多くの時間を費やすコードになる可能性があるため、重大な問題です。 対照的に、粗粒度ロックは、処理パフォーマンスの低下と同時実行性の低下を引き起こす可能性があります。

トランザクションメモリの問題は、C#からの「ロックブロック」、読み取り/書き込みロック、書き込みバリアなどを含む高度なロックによって対処されます。トランザクションメモリに関する主な優先事項の1つは、ロックがないことと不要なロック処理時間がないことです。 通常、操作で相互排除が必要でない場合、共有されるデータ構造にはロックがないことに同意します。 共有され、ロックのないデータ構造は、高度に同時実行されるシステム内にある場合、標準のロック手法に一般的に関連する問題を回避します。

Transactional Memory Coherence and Consistency(TCC)モデルは、共有メモリに関する新しい提案モデルです。 モデルによれば、アトミックトランザクションは常に次の基本単位です:並列作業、メモリの一貫性、通信、およびメモリ参照の一貫性。 TCCモデルは、標準ロックまたはセマフォを使用する同期を排除することにより、並列ソフトウェアをより簡単にします。 TCCは、ハードウェアを介して、トランザクション発生の各領域からのすべての書き込みを1つのパケットに結合し、永続的に共有されるメモリ状態にパケットを原子的にブロードキャストします。 単純化されたコヒーレンスハードウェアに加えて、これは必要な低休眠メッセージの削減と、特定の標準コヒーレンスプロトコルの完全な排除があることを意味します。

他の言語

この記事は参考になりましたか? フィードバックをお寄せいただきありがとうございます フィードバックをお寄せいただきありがとうございます

どのように我々は助けることができます? どのように我々は助けることができます?