Non-volatile main memories (NVMMs) are coming with a prediction that they will revolutionize how computers store, access, and process persistent program state. Recent work has shown that relying on existing storage software stacks, programming interfaces, and programming paradigms to manage and access emerging fast non-volatile, solid state memories (e.g., phase change memory and spin torque MRAM) leads to inefficient systems that cannot fully leverage the performance that NVMMs offer. However, the same work shows that by thoughtfully redesigning the software stack, streamlining programmer abstractions, and developing new programming idioms, enormous performance gains are possible.
This project seeks to begin answering some of the challenging questions that arise with non-volatile main memories (NVMMs) that provide access in 10s of nanoseconds instead of microseconds for SSDs and milliseconds for disk. Including what applications benefit most from leveraging NVMM-based storage, what are the basic data types that should be used by systems for NVMM and what are the tradeoffs, how should systems allocate NVMM, and more.
The proposed work includes building a prototype implementation of realistic applications that use NVMM. Where possible, existing implementations of NoSQL databases, relational databases, file systems, and data processing frameworks (e.g., MapReduce) will be adapted for use. The basic performance characteristics of NVMMs will be measured as well as application-level performance and the performance impact of different approaches to leveraging NVMMs.