面向持久性的刷新与屏障指令自动插入
软件工程
2025-09-25 v1 编程语言
摘要
CXL 共享内存和持久内存允许内存内容在崩溃后得以保留。对持久内存或 CXL 内存的存储操作通常不会立即持久化;开发者必须手动刷新相应的缓存行,以强制将数据写入底层存储。正确使用刷新和屏障操作是公认的挑战。虽然最先进的工具可以发现缺失的刷新指令,但它们通常需要能揭示错误的测试用例。目前没有工具能够确保不存在缺失刷新的错误。在本文中,我们提出了 PMRobust,一个能够自动插入刷新和屏障操作的编译器,以确保使用持久内存的代码免受缺失刷新和屏障错误的影响。PMRobust 采用了一种新颖的静态分析,并针对新分配的对象进行了优化。我们在持久内存库和多个持久内存数据结构上评估了 PMRobust,测量结果显示,相对于带有手动放置刷新和屏障操作的原始基准测试,其几何平均开销为 0.26%。
引用
@article{arxiv.2509.19459,
title = {Automated Insertion of Flushes and Fences for Persistency},
author = {Yutong Guo and Weiyu Luo and Brian Demsky},
journal= {arXiv preprint arXiv:2509.19459},
year = {2025}
}