The rise of persistent memory is disrupting computing to its core. Our work aims to help programmers navigate this brave new world by providing a program logic for reasoning about x86 code that uses low-level operations such as memory accesses and fences, as well as persistency primitives such as flushes. Our logic, Pierogi, benefits from a simple underlying operational semantics based on views, is able to handle optimised flush operations, and is mechanised in the Isabelle/HOL proof assistant. We detail the proof rules of Pierogi and prove them sound. We also show how Pierogi can be used to reason about a range of challenging single- and multi-threaded persistent programs.
翻译:持续记忆的崛起正在扰乱其核心的计算。 我们的工作旨在帮助编程者掌握这个勇敢的新世界,提供一种程序逻辑,用于推理使用诸如记忆存取和栅栏等低水平操作的x86代码,以及流水等持久性原始操作。 我们的逻辑 — — Pierogi — — 得益于基于观点的简单的基本操作语义,能够处理优化的冲水操作,并在伊莎贝尔/HOL校对助理中被机械化。 我们详细介绍了Pierogi的校对规则,并证明了其合理性。 我们还展示了如何利用Pierogi来解释一系列具有挑战性的单面和多面的持久性程序。