Skip to main content
QUICK REVIEW

[論文レビュー] A Better Reduction Theorem for Store Buffers

Ernie Cohen, Norbert Schirmer|ArXiv.org|Sep 25, 2009
Parallel Computing and Optimization Techniques参考文献 11被引用数 5
ひとこと要約

この論文は、Total Store Order (TSO) における x86/x64 システムに対して、明示的なストアバッファのモデル化を必要とせず、順序付け整合性を保証する新しい並行処理規範を提示する。ゴースト操作を用いてメモリアドレスの所有権を管理し、バッファフラッシュポリシーを強制することで、粗い粒度および細かい粒度の並行処理を可能にするとともに、Isabelle/HOL における標準的なアサーション論理による検証を可能にする。

ABSTRACT

When verifying a concurrent program, it is usual to assume that memory is sequentially consistent. However, most modern multiprocessors depend on store buffering for efficiency, and provide native sequential consistency only at a substantial performance penalty. To regain sequential consistency, a programmer has to follow an appropriate programming discipline. However, naïve disciplines, such as protecting all shared accesses with locks, are not flexible enough for building high-performance multiprocessor software. We present a new discipline for concurrent programming under TSO (total store order, with store buffer forwarding). It does not depend on concurrency primitives, such as locks. Instead, threads use ghost operations to acquire and release ownership of memory addresses. A thread can write to an address only if no other thread owns it, and can read from an address only if it owns it or it is shared and the thread has flushed its store buffer since it last wrote to an address it did not own. This discipline covers both coarse-grained concurrency (where data is protected by locks) as well as fine-grained concurrency (where atomic operations race to memory). We formalize this discipline in Isabelle/HOL, and prove that if every execution of a program in a system without store buffers follows the discipline, then every execution of the program with store buffers is sequentially consistent. Thus, we can show sequential consistency under TSO by ordinary assertional reasoning about the program, without having to consider store buffers at all.

研究の動機と目的

  • 弱いメモリモデル(TSO など)における並行プログラムの検証の課題に対処すること。ストアバッファが順序付け整合性を破るためである。
  • ロックや明示的なストアバッファのモデル化に依存しない、実用的で柔軟な並行処理規範を提供すること。
  • ストアバッファの複雑さを抽象化することで、標準的なアサーション論理を用いた TSO プログラムの検証を可能にすること。
  • 粗い粒度および細かい粒度の並行処理をサポートするゴーストベースの所有権規範の形式的定式化と正しさの証明を行うこと。
  • 実用的な低レベルシステムプログラミングと、弱いメモリモデル下での形式的検証の間のギャップを埋めること。

提案手法

  • メモリアドレスの所有権の取得と解放をモデル化するためのゴースト操作を導入し、所有権がある場合にのみ排他的な書き込みアクセスを保証する。
  • バッファフラッシュポリシーを定義する:スレッドは、自身がアドレスを所有しているか、最後に所有権のないアドレスに書き込んだ以降にバッファをフラッシュした場合にのみ、共有アドレスを読み取ることができる。
  • Isabelle/HOL を用いて並行処理規範を形式的に定式化し、ストアバッファがない実行がストアバッファを含む実行と順序付け整合性を保つことを証明する。
  • シミュレーションに基づく証明技法を用い、仮想マシンの状態(バッファがバージョン操作でフラッシュされた状態)が、実際のストアバッファマシンよりも制限が強いことを示す。
  • バリアやインタロックされたメモリ操作を同期ポイントとして用い、所有権の解放を遅らせる。これにより、検証中に正しさが保たれる。
  • 一階論理とゴースト状態に依存することで、ベクトルクロックのような無限大のデータ構造を必要とせず、標準的なプログラム論理と互換性を持つ。

実験結果

リサーチクエスチョン

  • RQ1ストアバッファを明示的にモデル化せずに、TSO における順序付け整合性を保証する並行処理規範を設計できるか?
  • RQ2所有権とバッファフラッシュを、ロックベースおよびロックフリーなプログラミングパターンの両方をサポートする形で形式化できるか?
  • RQ3ストアバッファの状態を直接考慮せずに、標準的なアサーション論理を用いて TSO プログラムを検証できるか?
  • RQ4TSO における正しさに必要な順序制約を捉えるために、どの程度のゴースト状態メカニズムが十分か?
  • RQ5この規範をコンパイラ最適化をサポートするように拡張できるか? ただし、順序付け整合性は維持されるものとする。

主な発見

  • 提案されたゴーストベースの所有権規範により、ストアバッファが存在しない環境で順序付け整合性を満たす任意のプログラム実行は、ストアバッファが存在する場合にも順序付け整合性を保つ。
  • この手法により、ストアバッファの挙動を明示的にモデル化する必要なく、標準的なプログラム論理を用いて TSO プログラムの検証が可能になる。
  • この規範は、所有権による粗い粒度の並行処理と、アトミック操作による細かい粒度の並行処理の両方をサポートしており、広範な適用性を持つ。
  • Isabelle/HOL での証明により、仮想マシンモデル(バージョン操作でバッファをフラッシュした状態)が、実際の TSO マシンの保守的近似であることが示された。
  • 無限大のゴースト状態(例:ベクトルクロック)を必要としないため、一階論理ベースのプログラム論理と互換性があり、スケーラブルな検証が可能になる。
  • 所有権の解放を自由に流すことを許容する拡張の可能性を同定したが、これは表現力に制限を加えないが、さらなる形式的定式化を要する。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。