Skip to main content
QUICK REVIEW

[論文レビュー] A high-level operational semantics for hardware weak memory models

Robert J. Colvin, Graeme Smith|arXiv (Cornell University)|Dec 3, 2018
Parallel Computing and Optimization Techniques参考文献 27被引用数 5
ひとこと要約

本論文は、抽象的データ操作と低レベルのアセンブリを両方サポートするワイドスケール言語を用いて、ハードウェアの弱いメモリモデルのための高水準な操作的意味論を提示する。これは、意味的制約に基づくペアワイズ命令再順序化メカニズムを導入し、18,000件のリトミステストに対してMaudeのモデルチェックを用いて検証され、並列データ構造の検証に応用された。特に、修正済みのARM固有のChase-Levデュエの実装が含まれる。

ABSTRACT

Modern processors deploy a variety of weak memory models, which for efficiency reasons may execute instructions in an order different to that specified by the program text. The consequences of instruction reordering can be complex and subtle, and can impact on ensuring correctness. In this paper we build on extensive work elucidating the semantics of assembler-level languages on hardware architectures with weak memory models (specifically TSO, ARM and POWER) and lift the principles to a straightforward operational semantics which allows reasoning at a higher level of abstraction. To this end we introduce a wide-spectrum language that encompasses operations on abstract data types as well as low-level assembler code, define its operational semantics using a novel approach to allowing reordering of instructions, and derive some refinement laws that can be used to explain behaviours of real processors. In this framework memory models are mostly distinguished via a pair-wise static ordering on instruction types that determines when later instructions may be reordered before earlier instructions. In addition, memory models may use different types of storage systems. For instance, non-multicopy atomic systems allow sibling processes to see updates to different variables in different orders. We encode the semantics in the rewriting engine Maude as a model-checking tool, and develop confidence in our framework by validating our semantics against existing sets of extit{litmus tests} -- small assembler programs -- comparing our results with those observed on hardware and in existing semantics. We also use the tool as a prototype to model check implementations of data structures from the literature against their abstract specifications.

研究の動機と目的

  • 低レベルのハードウェアの詳細から抽象化しつつも、重要な再順序化動作を保持する、高水準で合成可能な弱いメモリモデルの操作的意味論を提供すること。
  • ペアワイズ命令順序制約とストレージシステムの性質に基づく意味論を定義することで、並列プログラムについての形式的推論を可能にすること。
  • 大規模なリトミステストのコロナスに対して意味論を検証し、実世界の並列データ構造の検証に応用すること。
  • 正確なモデルチェックを用いて、ARM最適化版Chase-Levデュエにおけるような、微細な並列バグを同定・修正すること。
  • TSO、ARM、POWERアーキテクチャの各々において、並列アルゴリズムの正しさを検証するための代数的およびリファインメントベースの推論を支援すること。

提案手法

  • 著者らは、高水準なデータ操作と低レベルのアセンブリ命令を統合するワイドスケール言語を定義し、抽象化レベルをまたがる推論を可能にする。
  • 彼らは、ディクストラのガardedコマンド言語からのラベル付き遷移とガードを用いた、特許的な操作的意味論を導入し、予測実行や再順序化をモデル化する。
  • 命令再順序化は、命令タイプ間のペアワイズ静的順序付けによって制御され、必要な場合には順序整合性が保たれる。
  • 意味論はストレージシステムの性質(例えば、非マルチコピー原子性)によってメモリモデルを区別し、スレッド間での更新の可視性に影響を与える。
  • フレームワークはMaudeのリライトエンジンにエンコードされ、並列プログラムとリトミステストの自動モデルチェックをサポートする。
  • 定理証明と高水準なアルゴリズムの抽象的仕様に対する検証を支援するため、リファインメント則が導出された。

実験結果

リサーチクエスチョン

  • RQ1TSO、ARM、POWERのような弱いメモリアーキテクチャにおける命令再順序化を正確にモデル化するための高水準な操作的意味論は、どのように設計できるか?
  • RQ2順序整合性の意図を保持しつつ、パフォーマンス最適化のための再順序化を可能にするために、命令に必要なペアワイズ順序制約は何か?
  • RQ3提案された意味論は、大規模かつ多様なリトミステストのコロナスに対して検証可能であり、既知のハードウェア動作を再現できるか?
  • RQ4この意味論は、実世界の並列データ構造における微細な並列バグをどれほど正確に検出・説明できるか?
  • RQ5ラベル付きトレースとガードの使用は、従来のプロットキン形式の意味論に比べて、推論の精度と合成可能性をどのように向上させるか?

主な発見

  • 意味論は18,000件以上のリトミステストにおいて、観察されたハードウェアと先行の形式的モデルと強い整合性を示し、既知の動作を正確に再現した。
  • モデルは、ARM最適化版Chase-Levデュエにおける制御フェンスが余分であることを正しく特定した。これは、以前に発見されなかったバグを露呈するもので、フェンスが以前のフェンスの後ろに再順序化可能であるためである。
  • Maudeにおけるツールキットは、リトミステストの効率的なモデルチェックを可能にし、アドレスシフトのような複雑な制約を扱う能力を含め、以前のツールを上回るテストカバレッジを達成した。
  • 意味論は、フェンスによって遮断されない特定の再順序化がChase-Levデュエ実装に存在することを明らかにした。これは、弱いメモリ順序付け下で誤った挙動を引き起こす。
  • フレームワークは代数的推論とリファインメントをサポートし、Treiberスタックやシンプルなロックといった並列アルゴリズムの正しさの形式的証明を可能にした。
  • ラベル付きトレースとガードの使用により、命令の意味論の正確な追跡が可能となり、再順序化制約を捉えることに、従来のプロットキン形式の意味論の限界を克服した。

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

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

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

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