
Storing data structures in high-capacity byte-addressable persistent memory instead of DRAM or a storage device offers the opportunity to (1) reduce cost and power consumption compared with DRAM, (2) decrease the latency and CPU resources needed for an I/O operation compared with storage, and (3) allow for fast recovery as the data structure remains in memory after a machine failure. To achieve their desired performance and persistence goals, programmers must be conscious of the NVM hardware and explicitly interact with it. They need to understand details of all levels of modern computer systems, from the hardware and operating system, to the compiler, programming language, and the run-time libraries used by their programs. Despite substantial research devoted to making persistent memory effective, there is a lack of rich language and compiler support for non-volatile memory. This work pursues the vision of facilitating the use of new hardware technologies without sacrificing performance. Towards reaching this vision, I extended the LLVM compiler infrastructure with a robust plugin architecture for persistent memory. My extensions support diverse language designs and memory features with high-performance failure-atomicity libraries integrated into a managed runtime environment.

Senior Research SDE at Microsoft