Persistent memory is a new class of memory that functions as a hybrid of traditional storage systems and main memory. It combines the benefits of both the data persistence property of storage and the fast load/store interface of memory. In order to maintain data persistence in memory, a widely used mechanism is logging - in addition to updating the original data structures as in traditional memory systems, persistent memory systems also log the update. Most previous persistent memory studies suggest that log updates should bypass the cache hierarchy because the log is only used for system recovery and will not be reused during program execution. Caching the log only contaminates critical cache resources, leading to performance degradation. However, our study shows that current cache bypassing schemes (e.g., cache bypassing instructions and write-combining buffers) are sub-optimal for accommodating log writes. Making the log uncacheable can degrade persistent memory system performance worse than with cacheable logging. This presentation outlines our observations of the trade-offs between cacheable and uncacheable logging, based on our experimental results. We also analyze the reasons that lead to such trade-offs.
[1]
E. Belhaire,et al.
Macro-model of Spin-Transfer Torque based Magnetic Tunnel Junction device for hybrid Magnetic-CMOS design
,
2006,
2006 IEEE International Behavioral Modeling and Simulation Workshop.
[2]
Rajesh K. Gupta,et al.
NV-Heaps: making persistent objects fast and safe with next-generation, non-volatile memories
,
2011,
ASPLOS XVI.
[3]
Jian Xu,et al.
NOVA: A Log-structured File System for Hybrid Volatile/Non-volatile Main Memories
,
2016,
FAST.
[4]
Michael M. Swift,et al.
Mnemosyne: lightweight persistent memory
,
2011,
ASPLOS XVI.
[5]
Onur Mutlu,et al.
FIRM: Fair and High-Performance Memory Control for Persistent Memory Systems
,
2014,
2014 47th Annual IEEE/ACM International Symposium on Microarchitecture.