Proceedings of the ACM on Programming Languages · 2020 · 20 citations · 27 references
ComputingComputer EngineeringComputer ScienceComputer ArchitectureFormal MethodsProgramming LanguagesCachingDeductive VerificationMemory ConsistencyMemory Consistency ModelsMemory ModelingCache ConsistencyConsistency SemanticsConsistency VerificationMemory Consistency VerificationNon-volatile MemoryOut-of-order Memory ConsistencyVolatile Semantics
The advent of non-volatile memory (NVM) technologies is expected to transform how software systems are structured fundamentally, making the task of correct programming significantly harder. This is because ensuring that memory stores persist in the correct order is challenging, and requires low-level programming to flush the cache at appropriate points. This has in turn resulted in a noticeable verification gap . To address this, we study the verification of NVM programs, and present Persistent Owicki-Gries (POG), the first program logic for reasoning about such programs. We prove the soundness of POG over the recent Intel-x86 model, which formalises the out-of-order persistence of memory stores and the semantics of the Intel cache line flush instructions. We then use POG to verify several programs that interact with NVM.
27
Dmitri B. Strukov, Gregory S. Snider, Duncan R. Stewart et al. · Nature · 2008 · 11.5K citations
Engineering, Electrical Engineering, Electronic Materials +5
Architecting phase change memory as a scalable dram alternative
Benjamin C. Lee, Engin İpek, Onur Mutlu et al. · 2009 · 1.4K citations
An axiomatic proof technique for parallel programs I
Susan Owicki, David Gries · Acta Informatica · 1976 · 1K citations
Better I/O through byte-addressable, persistent memory
Jeremy Condit, Edmund B. Nightingale, Christopher Frost et al. · 2009 · 833 citations