Persistent Owicki-Gries reasoning: A program logic for reasoning about persistent programs on Intel-x86

Azalea Raad, Ori Lahav, Viktor Vafeiadis

Research output: Contribution to journalArticlepeer-review

12 Scopus citations

Abstract

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.

Original languageEnglish
Article number151
JournalProceedings of the ACM on Programming Languages
Volume4
Issue numberOOPSLA
DOIs
StatePublished - 13 Nov 2020

Funding

FundersFunder number
Alon Young Faculty Fellowship
Horizon 2020 Framework Programme683289
Blavatnik Family Foundation
European Research Council
Israel Science Foundation5166651

    Keywords

    • consistency
    • non-volatile memory
    • persistency
    • program logic
    • x86-TSO

    Fingerprint

    Dive into the research topics of 'Persistent Owicki-Gries reasoning: A program logic for reasoning about persistent programs on Intel-x86'. Together they form a unique fingerprint.

    Cite this