Efficient Hardware-based Undo+Redo Logging for Persistent Memory Systems

Appeared in Proceedings of the 24th IEEE International Symposium on High-Performance Computer Architecture (HPCA 2018).


Persistent memory is a new tier of memory that functions as a hybrid of traditional storage systems and main memory. It combines the benefits of both: the data persistence of storage with the fast load/store interface of memory. Most previous persistent memory designs place careful control over the order of writes arriving at persistent memory. This can prevent caches and memory controllers from optimizing system performance through write coalescing and reordering. We identify that such write-order control can be relaxed by employing undo+redo logging for data in persistent memory systems. However, traditional software logging mechanisms are expensive to adopt in persistent memory due to performance and energy overheads. Previously proposed hardware logging schemes are inefficient and do not fully address the issues in software. To address these challenges, we propose a hardware undo+redo logging scheme which maintains data persistence by leveraging the write-back, write-allocate policies used in commodity caches. Furthermore, we develop a cache forcewrite-back mechanism in hardware to significantly reduce the performance and energy overheads from forcing data into persistent memory. Our evaluation across persistent memory microbenchmarks and real workloads demonstrates that our design significantly improves system throughput and reduces both dynamic energy and memory traffic. It also provides strong consistency guarantees compared to software approaches.

Publication date:
February 2018

Matheus Ogleari
Jishen Zhao
Ethan L. Miller

Storage Class Memories
Operating Systems Support for NVM

Available media

Full paper text: PDF

Bibtex entry

  author       = {Matheus Ogleari and Jishen Zhao and Ethan L. Miller},
  title        = {Efficient Hardware-based Undo+Redo Logging for Persistent Memory Systems},
  booktitle    = {Proceedings of the 24th IEEE International Symposium on High-Performance Computer Architecture (HPCA 2018)},
  month        = feb,
  year         = {2018},
Last modified 28 May 2019