Author_Institution :
Louisiana State Univ., Baton Rouge, LA, USA
Abstract :
Persistent Memory (PM) technologies, such as Phase Change Memory, STT-RAM, and memristors, are receiving increasingly high interest in academia and industry. PM provides many attractive features, such as DRAM-like speed and storage-like persistence. Yet, because it draws a blurry line between memory and storage, neither a memory- or storage-based model is a natural fit. Best integrating PM into existing systems has become challenging and is now a top priority for many. In this paper we share our initial approach to integrating PM into computer systems, with minimal impact to the core operating system. By adopting a hybrid storage model, all of our changes are confined to a block storage driver, called PMBD, which directly accesses PM attached to the memory bus and exposes a logical block I/O interface to users. We explore the design space by examining a variety of options to achieve performance, protection from stray writes, ordered persistence, and compatibility for legacy file systems and applications. All told, we find that by using a combination of existing OS mechanisms (per-core page table mappings, non-temporal store instructions, memory fences, and I/O barriers), we are able to achieve each of these goals with small performance overhead for both micro-benchmarks and real world applications (e.g., file server and database workloads). Our experience suggests that determining the right combination of existing platform and OS mechanisms is a non-trivial exercise. In this paper, we share both our failed and successful attempts. The final solution that we propose represents an evolution of our initial approach. We have also open-sourced our software prototype with all attempted design options to encourage further research in this area.
Keywords :
memristors; phase change memories; DRAM-like speed; PMBD; STT-RAM; block storage driver; blurry line; compatibility; computer systems; core operating system; hybrid storage model; legacy file systems; memory bus; memristors; ordered persistence; persistent memory technologies; phase change memory; protected block device; software prototype; storage-based model; storage-like persistence; stray writes; Ash; Bandwidth; Kernel; Linux; Nonvolatile memory; Performance evaluation; Random access memory; Device driver; Memory Storage; Operating system; Persistent memory;