Modeling and Simulating Emerging Memory Technologies: A Tutorial
Yun-Chih Chen, Tristan Seidl, Nils Hölscher, Christian Hakert, Minh Duy Truong, Jian-Jia Chen, João Paulo C. de Lima, Asif Ali Khan, Jeronimo Castrillon, Ali Nezhadi, Lokesh Siddhu, Hassan Nassar, Mahta Mayahinia, Mehdi Baradaran Tahoori, Jörg Henkel, Nils Wilbert, Stefan Wildermann, Jürgen Teich
TL;DR
This paper tackles the challenge of evaluating emerging non-volatile memories (NVM) for mainstream computing without access to real devices. It presents a configurable NVM simulation toolchain built on gem5 and NVMain, demonstrated through four case studies: memory-subsystem modeling with DRAM/NVM main memories, wear-out analysis via trace writers, heterogeneous SRAM/STT-RAM caches, and Compute-in-Memory (CiM) architectures. The work details how to configure, extend, and use the toolchain for architecture exploration, including memory timing parameters, cache heterogeneity, and in-memory compute designs, with open-source code and setup instructions to foster reproducibility. The approach enables researchers to study trade-offs in latency, energy, endurance, and data movement before commercial NVMs are widely available, supporting hardware/software co-design and domain-specific optimizations.
Abstract
Non-volatile Memory (NVM) technologies present a promising alternative to traditional volatile memories such as SRAM and DRAM. Due to the limited availability of real NVM devices, simulators play a crucial role in architectural exploration and hardware-software co-design. This tutorial presents a simulation toolchain through four detailed case studies, showcasing its applicability to various domains of system design, including hybrid main-memory and cache, compute-in-memory, and wear-leveling design. These case studies provide the reader with practical insights on customizing the toolchain for their specific research needs. The source code is open-sourced.
