Advanced non-volatile, solid-state storage technologies such as
phase change memory promise enormous gains in performance relative to both
conventional disks and flash memory-based storage devices. However, existing
abstractions for accessing non-volatile data (i.e., file systems and the
associated system calls) cannot exploit the performance and flexibility these
memories offer. We describe a new, transaction-based interface that allows
programmers to implement fast, scalable, durable data structures that are
robust in the face of unexpected system failures. The interface maps the
non-volatile storage directly into the application's address space and allows
volatile and non-volatile data structures to interact seamlessly in programs.
Since the interface removes the operating system from the critical path of
basic read and write operations, it can realize up to 2350X speedups relative
to transactional storage systems that target the conventional file-based
interface. We describe the system's internal operation, describe the support
it requires from hardware, and quantify its performance.
Pre-2018 CSE ID: CS2009-0948