PDF     Presentation     Video     Code

Abstract

Modern applications employ several heterogeneous memory types for improved performance, security, and reliability. To manage them, programmers must currently digress from the traditional load/store interface and rely on various custom libraries specific to each memory type, thus introducing programmability, performance, portability, and protection challenges. To overcome these challenges, we propose Toast, a compiler-based approach that offers a simplified programming model based on the established load/store interface along with programmable error-handling and memory consistency enforcement mechanisms and a protection library for memory safety. We implement Toast in the Clang/LLVM compiler framework accompanied by a runtime library, employing software storage capabilities and hardware-based protection mechanisms. Our evaluation based on four applications, which use heterogeneous memory types, shows that Toast improves the programmability, portability, and protection of applications, while offering performance on par with a hand-optimized version of the application.

Citation

@inproceedings{10.1145/3656019.3676944,
author = {Bailleu, Maurice and Stavrakakis, Dimitrios and Rocha, Rodrigo and Chakraborty, Soham and Garg, Deepak and Bhatotia, Pramod},
title = {Toast: A Heterogeneous Memory Management System},
year = {2024},
doi = {10.1145/3656019.3676944},
booktitle = {Proceedings of the 2024 International Conference on Parallel Architectures and Compilation Techniques},
keywords = {Heterogeneous memory, Memory management, Memory protection, Memory safety, Performance, Portability, Programmability},
}