  Non-volatile memory (NVM) provides a scalable and power-efficient solution to
replace DRAM as main memory. However, because of relatively high latency and
low bandwidth of NVM, NVM is often paired with DRAM to build a heterogeneous
memory system (HMS). As a result, data objects of the application must be
carefully placed to NVM and DRAM for best performance. In this paper, we
introduce a lightweight runtime solution that automatically and transparently
manage data placement on HMS without the requirement of hardware modifications
and disruptive change to applications. Leveraging online profiling and
performance models, the runtime characterizes memory access patterns associated
with data objects, and minimizes unnecessary data movement. Our runtime
solution effectively bridges the performance gap between NVM and DRAM. We
demonstrate that using NVM to replace the majority of DRAM can be a feasible
solution for future HPC systems with the assistance of a software-based data
management.
