Persísto, ergo sum.
Persistent memory is an emerging class of storage technology that simultaneously provides (1) byte addressability, low latency, and high throughput as DRAM does; and (2) durability (data persistency across system crashes) and high capacity as SSD does. These powerful properties, however, have brought about existing issues such as (1) concurrency control for thread safety and (2) persistency control for data consistency.
We aim to understand how to properly use this attractive memory in a program. In addition, we aim to exploit its potentiality to build innovative transational systems!
(PLDI 2021) Revamping Hardware Persistency Models: View-based and Axiomatic Persistency Models for Intel-x86 and Armv8.
ACM SIGPLAN conference on Programming Languages Design and Implementation (conditionally accepted).
Abstract: Non-volatile memory (NVM) is a cutting-edge storage technology that promises the performance of DRAM with the durability of SSD. Recent work has proposed several persistency models for mainstream architectures such as Intel-x86 and Armv8, describing the order in which writes are propagated to NVM. However, these models have several limitations; most notably, they either lack operational models or do not support persistent synchronization patterns.
We close this gap by revamping the existing persistency models. First, inspired by the recent work on promising semantics, we propose a unified operational style for describing persistency using views, and develop view-based operational persistency models for Intel-x86 and Armv8, thus presenting the first operational model for Armv8 persistency. Next, we propose a unified axiomatic style for describing hardware persistency, allowing us to recast and repair the existing axiomatic models of Intel-x86 and Armv8 persistency. We prove that our axiomatic models are equivalent to the authoritative semantics reviewed by Intel and Arm engineers. We further prove that each axiomatic hardware persistency model is equivalent to its operational counterpart. Finally, we develop a persistent model checking algorithm and tool, and use it to verify several representative examples.