ScholarGate
アシスタント

共有メモリと一貫性

共有メモリ・アーキテクチャは、複数のプロセッサが共通のアドレス空間上で動作することを可能にします。メモリ一貫性モデルは、あるプロセッサのメモリ操作が他のプロセッサに可視となる順序を定義し、並列プログラムが依拠する契約となります。

PaperMindでテーマを探す近日公開Find papers & topics
Tools & resources
スライドをダウンロード
Learn & explore
動画近日公開

Definition

メモリ一貫性モデルとは、共有メモリシステムにおけるプロセッサ間のメモリ読み書き操作の許容される順序付けの仕様であり、ロードが返す可能性のある値を定義し、それによってハードウェアと並行ソフトウェア間の契約を確立するものです。

Scope

このトピックでは、共有メモリ・マルチプロセッシング、そして中心的にメモリ一貫性モデル(逐次一貫性、緩和モデルおよび弱モデル、メモリフェンス、一貫性とコヒーレンスの関係)について扱います。また、一貫性モデルに依存する同期プリミティブについても取り上げます。個々の場所に対するコヒーレンス機構(キャッシュコヒーレンスプロトコル)や、チップレベルでのコアの統合(マルチコアおよびチップマルチプロセッサ)は対象外です。

Core questions

  • 並列プログラムはメモリ操作のどのような順序付けを仮定できるのか?
  • 逐次一貫性は緩和された一貫性モデルとどのように異なるのか?
  • 緩和モデルはなぜ存在するのか、そしてメモリフェンスはどのようにして必要な順序付けを回復させるのか?
  • コヒーレンスと一貫性はどのように連携して正しい共有メモリ動作を定義するのか?

Key concepts

  • 共有アドレス空間
  • メモリ一貫性モデル
  • 逐次一貫性
  • 緩和された一貫性および弱い一貫性
  • メモリフェンスとバリア
  • 一貫性とコヒーレンス
  • 同期プリミティブ
  • データ競合

Key theories

逐次一貫性
ランポートの逐次一貫性は、実行結果が、すべてのプロセッサの操作が各プロセッサのプログラム順序を尊重する単一のグローバルな順序でインターリーブされたかのようになることを要求します。これは直感的ですが、ハードウェア最適化を制約するため、緩和モデルの動機となりました。

Mechanisms

ハードウェアは性能向上のためにメモリ操作を並べ替えたりバッファリングしたりするため、一貫性モデルはどの並べ替えが他のプロセッサに可視となるかを指定します。逐次一貫性はプロセッサ間での可視な並べ替えを禁止しますが、緩和モデルは速度のために特定の並べ替えを許可し、必要に応じてプログラマが順序付けを強制するためにメモリフェンスを挿入することを要求します。ロックやアトミック操作などの同期プリミティブはこれらの保証に基づいて構築され、データ競合を回避するプログラムは予測可能な動作をします。

Clinical relevance

メモリ一貫性モデルは、正しい並行プログラミングの基盤です。これは、マルチスレッドプログラムが共有更新の可視性と順序付けについて正当に仮定できることを決定します。これを誤解すると、再現が困難な微妙なバグを引き起こす可能性があり、C++やJavaなどの言語メモリモデルは、これらのハードウェア概念に直接基づいています。

History

ランポートは1979年に逐次一貫性を形式化しました。ハードウェアが性能向上のためにメモリアクセスを積極的に並べ替えるようになるにつれて、1980年代から1990年代にかけて緩和された一貫性モデルがアーキテクチャ全体に広がり、それらを定義し制御するための研究が促され、最終的にはプログラミング言語が独自の明確に指定されたメモリモデルを持つようになりました。

Debates

強い一貫性と緩和された一貫性
逐次一貫性のような強いモデルは推論しやすいですが、ハードウェア性能を制限します。一方、緩和モデルはプログラマの複雑さを犠牲にして最適化を可能にします。この分野では、慎重に指定されたモデルとフェンスを通じて、直感的なセマンティクスと効率性のバランスを取り続けています。

Key figures

  • Leslie Lamport
  • Sarita Adve
  • Mark D. Hill
  • David E. Culler

Related topics

Seminal works

  • hennessy2019
  • culler1999

Frequently asked questions

コヒーレンスと一貫性の違いは何ですか?
コヒーレンスは、すべてのプロセッサが最終的に個々のメモリ位置の値について合意し、それに対する書き込みを合理的な順序で見ることを保証します。一貫性は、異なるプロセッサによって観測される異なる位置間の操作の順序を管理します。一貫性モデルはコヒーレンスを前提とし、位置間の順序付けルールを追加します。
プロセッサはなぜ緩和されたメモリモデルを使用するのですか?
厳密な順序付けは、ハードウェアがメモリレイテンシを隠すためのバッファリングや並べ替えを放棄することを強制し、性能を損ないます。緩和モデルはハードウェアが自由に最適化することを可能にし、プログラマには、正しさが要求される場合にのみ順序付けを強制するための明示的なフェンスを提供します。

Methods for this concept

Related concepts