Non-volatile memory (NVM) is playing a more important role in the memory architectures of HPC systems as illustrated by recent deployments and procurements. Yet there exist neither standard language constructs nor portable programming systems that provide support for these types of emerging memory architectures.
To address this issue, researchers at the Future Technologies Group at Oak Ridge National Laboratory (ORNL) have developed a novel programming system that extends C with intuitive, language-level support for programming NVM as persistent, high-performance main memory; the prototype system is named NVL-C. A new paper, entitled “NVL-C: Static Analysis Techniques for Efficient, Correct Programming of Non-Volatile Main Memory Systems,” presented at the 25th International Symposium on High Performance Parallel and Distributed Computing (HPDC’16) on June 3 in Kyoto, Japan, describes this new programming system.
NVM memory hierarchies are playing an increasingly significant role in most computing systems, such as mobile, enterprise, and HPC architectures,” said co-author Jeffrey Vetter from ORNL. “Much of this trend is driven by the fact that NVM devices can offer advantage over DRAM memory or magnetic hard disk drives (HDDs) in terms of power, density, performance, or cost. Initially, NVM was integrated into existing systems transparently, hiding the complexity from users and applications, such as is the case when simply replacing a HDD with a NAND-Flash solid-state disk (SSD). However, as these NVM technologies, such as phase-change or resistive devices, continue to improve, they become more credible for integration at other levels of the storage and memory hierarchy, including perhaps as either a peer or replacement for DRAM. The researchers posit that these new memory systems will need to be exposed to applications through first-class language constructs with full support from the software development environment (e.g., compilers, libraries) for efficient, correct, and portable use.”
In order to make the technology and analysis algorithms openly available, the team built NVL-C with the open-source OpenARC compiler framework from ORNL and the open-source LLVM complier infrastructure.
We have designed this system to enable language features, compiler analyses, and run-time checks that guard against both software failures and hardware failures that can corrupt persistent data stored in NVM,” said co-author Joel Denny.
The researchers evaluated the flexibility, performance, and correctness of their system with a Fusion-io ioScale NVM device across a set of applications. This evaluation helped the authors identify several analysis and optimization steps that are critically important for fully exploiting such NVM technologies.