Leveraging Non-Volatile Memories with Versioned Key-Value Stores
Storage class memories, such as phase-change memory, will soon have the cost, density, speed, and reliability to make large fractions of main memory non-volatile. This project will explore the design, implementation, and evaluation of a data storage system and access methods tailored for a non-volatile main store. This work is motivated by trends such as the growing number of cores in processors, the huge amounts of data being generated from experiments and sensors, the acceptance of key-value and other no-SQL data organizations, and the emergence of fast and dense persistent memory devices. The goals of this project are to build an in-memory persistent storage system (code-named “Snapshot”) that:
- presents a key-value interface,
- is durable,
- unifies small data storage (bytes) and large data storage (files),
- provides automatic data versioning for applications,
- supports highly-concurrent simultaneous operations from multiple workers,
- provides strong consistency guarantees,
- allows direct pointer-based, load-store, fine-grained data access,
- includes automatic garbage collection, and
- is very high performance.
System Architecture for Storage Class Memories
Moinuddin Qureshi, Georgia Tech – May 2012 The amount of data in the world continues to increase at an exponential rate, storage platforms are pressed to increase storage capacity to handle the increasing storage requirement. The problem of capacity scaling has become difficult because existing storage technologies such as Flash are hitting the scaling wall, and system architects are required to design storage systems that not only provide high performance but also consume less power. Emerging Storage Class Memory (SCM) technologies, such as PCM, STT-RAM and Memristors promise better scaling and performance characteristics than Flash. However, these technologies are not a drop-in replacement for existing technologies and require solutions that can alleviate some of the technology-specific challenges and that can exploit unique features specific to these technologies. We propose to study the architecture of memory system and storage system best suited for adopting SCM technologies.
We consider four basic ways in which a system can use SCM. First, to scale main memory capacity, as these technologies are expected to be more scalable than DRAM and incur latency within a few factors of DRAM. Second, to design persistent memory system by exploiting the non-volatility property of SCM. Third, to form a hybrid storage system that combines both SCM and Flash, obtaining the properties of SCM while keeping the cost advantage of Flash. And, fourth, to develop a SCM-Based storage system. In previous research, we have looked at the first use-case application of SCM. In this proposal, we discuss some of the design options and challenges with the other three use cases and our solutions for alleviating these problems with hardware and software solutions.