Non-volatile memory (NVM), also known as persistent memory, is an emerging paradigm for memory that preserves its contents even after power loss. NVM is widely expected to become ubiquitous, and hardware architectures are already providing support for NVM programming. This has stimulated interest in the design of novel concepts ensuring correctness of concurrent programming abstractions in the face of persistency and in the development of associated verification approaches. Software transactional memory (STM) is a key programming abstraction that supports concurrent access to shared state. In a fashion similar to linearizability as the correctness condition for concurrent data structures, there is an established notion of correctness for STMs known as opacity. We have recently proposed durable opacity as the natural extension of opacity to a setting with non-volatile memory. Together with this novel correctness condition, we designed a verification technique based on refinement. In this paper, we extend this work in two directions. First, we develop a durably opaque version of NOrec (no ownership records), an existing STM algorithm proven to be opaque. Second, we modularize our existing verification approach by separating the proof of durability of memory accesses from the proof of opacity. For NOrec, this allows us to re-use an existing opacity proof and complement it with a proof of the durability of accesses to shared state.
翻译:非挥发性记忆(NVM)被称作“持久记忆”,是一个新兴的记忆模式,即使在丧失权力之后,也保留着它的内容。NVM被广泛期待成为无处不在,硬件结构已经为NVM的编程提供了支持。这激发了人们对设计新概念的兴趣,以确保在面对持续和开发相关核查方法时,同时的编程抽象的正确性。软件交易存储(STM)是一个关键的编程抽象,支持同时进入共享状态。首先,我们开发了一个与并行数据结构的正确性条件相似的线性模式。在类似线性模式中,STM算法已被确立为不透明。我们最近提议将持久的不透明概念作为不透明性自然延伸至非动态记忆环境的自然延伸。除了这一新的正确性条件外,我们还设计了一种基于完善的核查技术。在本文件中,我们将这项工作扩展为两个方向。首先,我们开发了一个可调和不透明版本的Norec(无所有权记录),一个现有的STM算法已被证明为不透明性。第二,我们用一个共同的核查证据来补充我们现有的稳定性核查方法,使我们能够用透明地核查。