CNS: SHF: Small: Architectural Support for Efficient and Programmable Non-Volatile Main Memory
James Tuck
Project runs from 10/01/2017 to 09/30/2020
$515,800
Non-Volatile Memory is advancing and may soon replace DRAM and disk as a unified memory and storage device. For instance, Intel and Micron announced that their 3D Xpoint memory will be in the market in 2017. This breaks the conventional view of computer systems with separate memory and storage systems, and requires that future systems be redesigned to support the new possibilities this integrate provides. One problem is that processors will be able to access storage directly using loads and stores, and current processors do not guarantee that stores update memory in the order specified by the programmer. This means that updates to memory and storage may happen out of order resulting in an inconsistent state during a system failure or power-loss. Dealing with failure-safety adds new complexity to software and additional performance overheads on these future systems.
This project will investigate new techniques that help programmers write high performing and efficient code for future systems that use non-volatile main memory. In particular, techniques that simplify programming while accelerating performance are sought. A promising direction for solving some of these problems is speculative execution. Speculation has been successfully used to make parallel programming easier and to speed up execution in the presence of long latency memory accesses. Many of the problems raised by non-volatile memory are similar to the ones that speculation has been applied to in the past. This proposal takes a systematic look at how speculative execution can make future NVM systems more efficient and more programmable.