1 Introduction
Non-Volatile Memory (NVM), also referred to as persistent memory, has emerged at the forefront of main memory technology by providing high performance persistent storage that is byte addressable with access latency close to DRAM [29]. The promise of resiliency against crash events is highly appealing in data structure design, leading to many durable data structures [7, 12,19,35,44,47,63]. Designing data structures that rely on NVM for recoverability is difficult because caches and registers are expected to remain volatile, which can cause the persisted data to be in an inconsistent state if stores prior to the crash were in the cache but not yet written to persistent memory [19]. Crash Consistency is a property of NVM systems such that data is recoverable to a consistent state following a crash event. While crash consistency ensures recoverability to a state that is consistent with a state before the crash occurred [36], it does not provide any guarantees regarding the correctness of the recovered state with respect to data structure semantics.