Minimally Ordered Durable Data Structures for Persistent Memory

MOD borrows the idea of functional programming to make atomic one or more updates. It’s C++ prototype performs better than software transaction memory (STM).

There are two ways to achieve crash consistency:

  1. Undo/Redo Log
  2. Shadow page SSP Micro 2019

The later scheme matches very well with functional programming. In functional programming, all data is immutable after initialization. Updates to the data will redirect to a new copy of the data.

Functional Shadowing

This enables MOD to overlap multiple flush operations and only append one fence at the end of the updates.