With the end of DRAM scaling in sight, new memory types are competing to replace or augment DRAM as the main memory technology of choice. However, unlike DRAM, these new memory technologies all share an interesting property: they are nonvolatile (their contents survive power outages). These nonvolatile memory (NVM) technologies provide us the opportunity to re-think the memory{storage divide, and to entertain the possibility of maintaining traditional in-memory data structures across program runs and crashes.

My research has addressed the entire system stack in preparation for nonvolatile memory. The introduction of NVM creates both opportunities and problems. Opportunities, because the technology promises fast durable storage, low-power machine modes, and low overhead checkpointing. Problems, because traditional machine architectures, operating systems, compilers, and system libraries are not built to manage or leverage nonvolatile main memory. Serious work remains to be done in adapting the system stack to NVM if we are to realize the promise of this technology. There is a vast gap between the promise of NVM and the capabilities of current machines|it is a fruitful area for research.

If we can redesign the system stack, we can expect NVM to be a transformative technology that enables scientic advances well beyond the current state of the art. Using NVM to its full potential means a drastic shift in the way computing is done and devices are built. Accessible NVM means faster databases for transaction processing and much lower latency to access stored data. It also grants the capability to perform real-time analytics on memory-resident storage, the ability to replicate data directly into persistence using fast RDMA network protocols, signicantly faster restart times for increased reliability and up-time, and additional redundancy in the event of a power failure.