Emerging Storage Class Memory (SCM) technologies combine the non-volatility of storage devices like hard disks and solid state drives (SSDs) with the ability to access data at byte granularity rather than at a block level. Application developers can focus on a single fine-grained storage abstraction, rather than deal with word-granularity access for DRAM memory and a block interface for file-based disk storage. Accessing data directly from SCM instead of software-arbitrated block access has significant performance advantages, especially for modern data intensive applications based on graph and relation processing. However the use of direct SCM access places a significant burden on the application to achieve transactional and robust execution in the presence of unexpected machines failures and software aborts.
The research will identify lightweight, scalable architectural and software techniques for developing robust SCM-based software. The goal is to make the development of software for persistent memory comparable to programming conventional DRAM main-memory by relieving the programmer from the complexities of managing transactional atomicity and persistence. Both hardware solutions based on enhancements to the processor and memory-controller architecture, and software approaches in the form of a lightweight persistence library will be developed. The techniques will be scaled up to handle multiple threads and cores, and scale out to multiple CPU sockets and to distributed clustered architectures.