{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,10,2]],"date-time":"2026-10-02T07:52:20Z","timestamp":1790927540860,"version":"4.1.0"},"reference-count":72,"publisher":"Association for Computing Machinery (ACM)","issue":"POPL","license":[{"start":{"date-parts":[[2022,1,12]],"date-time":"2022-01-12T00:00:00Z","timestamp":1641945600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/100014013","name":"UKRI","doi-asserted-by":"crossref","award":["MR\/V024299\/1"],"award-info":[{"award-number":["MR\/V024299\/1"]}],"id":[{"id":"10.13039\/100014013","id-type":"DOI","asserted-by":"crossref"}]},{"DOI":"10.13039\/501100000781","name":"European Research Council","doi-asserted-by":"publisher","award":["101003349"],"award-info":[{"award-number":["101003349"]}],"id":[{"id":"10.13039\/501100000781","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2022,1,16]]},"abstract":"<jats:p>\n                    Existing semantic formalisations of the Intel-x86 architecture cover only a small fragment of its available features that are relevant for the\n                    <jats:italic>consistency<\/jats:italic>\n                    semantics of multi-threaded programs as well as the\n                    <jats:italic>persistency<\/jats:italic>\n                    semantics of programs interfacing with non-volatile memory.\n                  <\/jats:p>\n                  <jats:p>We extend these formalisations to cover: (1) non-temporal writes, which provide higher performance and are used to ensure that updates are flushed to memory; (2) reads and writes to other Intel-x86 memory types, namely uncacheable, write-combined, and write-through; as well as (3) the interaction between these features. We develop our formal model in both operational and declarative styles, and prove that the two characterisations are equivalent. We have empirically validated our formalisation of the consistency semantics of these additional features and their subtle interactions by extensive testing on different Intel-x86 implementations.<\/jats:p>","DOI":"10.1145\/3498683","type":"journal-article","created":{"date-parts":[[2022,1,12]],"date-time":"2022-01-12T12:03:12Z","timestamp":1641988992000},"page":"1-31","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":19,"title":["Extending Intel-x86 consistency and persistency: formalising the semantics of Intel-x86 memory types and non-temporal stores"],"prefix":"10.1145","volume":"6","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-2319-3242","authenticated-orcid":false,"given":"Azalea","family":"Raad","sequence":"first","affiliation":[{"name":"Imperial College London, UK"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-5312-7759","authenticated-orcid":false,"given":"Luc","family":"Maranget","sequence":"additional","affiliation":[{"name":"Inria, France"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-8436-0334","authenticated-orcid":false,"given":"Viktor","family":"Vafeiadis","sequence":"additional","affiliation":[{"name":"MPI-SWS, Germany"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2022,1,12]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-662-46681-0_28"},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/3434337"},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-662-46669-8_13"},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/3458926"},{"key":"e_1_2_2_5_1","unstructured":"Jade Alglave and Luc Maranget. 2011\u20132021. The diy7 tool suite Software and Documentation. http:\/\/diy.inria.fr\/  Jade Alglave and Luc Maranget. 2011\u20132021. The diy7 tool suite Software and Documentation. http:\/\/diy.inria.fr\/"},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/3296957.3177156"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/2627752"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1109\/HPCA51647.2021.00019"},{"key":"e_1_2_2_9_1","unstructured":"Anonymous. 2021. Intel-x86:The interaction between WC WB and UC Memory. https:\/\/stackoverflow.com\/questions\/66978388\/intel-x86the-interaction-between-wc-wb-and-uc-memory  Anonymous. 2021. Intel-x86:The interaction between WC WB and UC Memory. https:\/\/stackoverflow.com\/questions\/66978388\/intel-x86the-interaction-between-wc-wb-and-uc-memory"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-662-48653-5_41"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/1926385.1926394"},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/3360568"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-37036-6_29"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/3290383"},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/3453483.3454027"},{"key":"e_1_2_2_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/1629575.1629589"},{"key":"e_1_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.4230\/LIPIcs.ECOOP.2020.11"},{"key":"e_1_2_2_18_1","unstructured":"DML. 2021. https:\/\/github.com\/intel\/DML  DML. 2021. https:\/\/github.com\/intel\/DML"},{"key":"e_1_2_2_19_1","volume-title":"A Program Logic for C11 Memory Fences","author":"Doko Marko","unstructured":"Marko Doko and Viktor Vafeiadis . 2016. A Program Logic for C11 Memory Fences . In Verification, Model Checking, and Abstract Interpretation, Barbara Jobstmann and K. Rustan M. Leino (Eds.). Springer Berlin Heidelberg , Berlin, Heidelberg . 413\u2013430. isbn:978-3-662-49122-5 Marko Doko and Viktor Vafeiadis. 2016. A Program Logic for C11 Memory Fences. In Verification, Model Checking, and Abstract Interpretation, Barbara Jobstmann and K. Rustan M. Leino (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg. 413\u2013430. isbn:978-3-662-49122-5"},{"key":"e_1_2_2_20_1","volume-title":"Tackling Real-Life Relaxed Concurrency with FSL++","author":"Doko Marko","unstructured":"Marko Doko and Viktor Vafeiadis . 2017. Tackling Real-Life Relaxed Concurrency with FSL++ . In Programming Languages and Systems, Hongseok Yang (Ed.). Springer Berlin Heidelberg , Berlin, Heidelberg . 448\u2013475. isbn:978-3-662-54434-1 Marko Doko and Viktor Vafeiadis. 2017. Tackling Real-Life Relaxed Concurrency with FSL++. In Programming Languages and Systems, Hongseok Yang (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg. 448\u2013475. isbn:978-3-662-54434-1"},{"key":"e_1_2_2_21_1","unstructured":"DPDK. 2021. https:\/\/www.dpdk.org\/  DPDK. 2021. https:\/\/www.dpdk.org\/"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/2837614.2837615"},{"key":"e_1_2_2_23_1","volume-title":"https:\/\/elixir.bootlin.com\/glibc\/glibc-2.34\/source\/sysdeps\/x86_64\/multiarch\/memmove-vec-unaligned-erms.S##L36","author":"Foundation Free Software","unstructured":"Free Software Foundation . 2016. https:\/\/elixir.bootlin.com\/glibc\/glibc-2.34\/source\/sysdeps\/x86_64\/multiarch\/memmove-vec-unaligned-erms.S##L36 Free Software Foundation. 2016. https:\/\/elixir.bootlin.com\/glibc\/glibc-2.34\/source\/sysdeps\/x86_64\/multiarch\/memmove-vec-unaligned-erms.S##L36"},{"key":"e_1_2_2_24_1","unstructured":"GitHub. 2019. https:\/\/github.com\/spdk\/spdk\/commit\/7b0579df170f90b2d6b704116dea65739f9442cd  GitHub. 2019. https:\/\/github.com\/spdk\/spdk\/commit\/7b0579df170f90b2d6b704116dea65739f9442cd"},{"key":"e_1_2_2_25_1","unstructured":"GitHub. 2021. https:\/\/github.com\/search?q=MOVNTI&type=Code  GitHub. 2021. https:\/\/github.com\/search?q=MOVNTI&type=Code"},{"key":"e_1_2_2_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/3192366.3192367"},{"key":"e_1_2_2_27_1","doi-asserted-by":"publisher","DOI":"10.1109\/ISCA45697.2020.00060"},{"key":"e_1_2_2_28_1","unstructured":"Intel. 2015. Persistent Memory Programming. http:\/\/pmem.io\/  Intel. 2015. Persistent Memory Programming. http:\/\/pmem.io\/"},{"key":"e_1_2_2_29_1","volume-title":"Intel 64 and IA-32 Architectures Software Developer\u2019s Manual (Combined Volumes). This is an old version of the manual that has been since removed from the Intel","year":"2019","unstructured":"Intel. 2019. Intel 64 and IA-32 Architectures Software Developer\u2019s Manual (Combined Volumes). This is an old version of the manual that has been since removed from the Intel pages and the referenced document is an internet archive. https:\/\/web.archive.org\/web\/ 2019 0525125151\/https:\/\/software.intel.com\/sites\/default\/files\/managed\/39\/c5\/325462-sdm-vol-1-2abcd-3abcd.pdf Order Number : 325462-070US. Intel. 2019. Intel 64 and IA-32 Architectures Software Developer\u2019s Manual (Combined Volumes). This is an old version of the manual that has been since removed from the Intel pages and the referenced document is an internet archive. https:\/\/web.archive.org\/web\/20190525125151\/https:\/\/software.intel.com\/sites\/default\/files\/managed\/39\/c5\/325462-sdm-vol-1-2abcd-3abcd.pdf Order Number: 325462-070US."},{"key":"e_1_2_2_30_1","unstructured":"Intel. 2021. Intel 64 and IA-32 Architectures Software Developer\u2019s Manual (Combined Volumes). https:\/\/software.intel.com\/content\/www\/us\/en\/develop\/download\/intel-64-and-ia-32-architectures-sdm-combined-volumes-1-2a-2b-2c-2d-3a-3b-3c-3d-and-4.html Order Number: 325462-074US.  Intel. 2021. Intel 64 and IA-32 Architectures Software Developer\u2019s Manual (Combined Volumes). https:\/\/software.intel.com\/content\/www\/us\/en\/develop\/download\/intel-64-and-ia-32-architectures-sdm-combined-volumes-1-2a-2b-2c-2d-3a-3b-3c-3d-and-4.html Order Number: 325462-074US."},{"key":"e_1_2_2_31_1","doi-asserted-by":"publisher","DOI":"10.1109\/FCCM.2018.00035"},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.4230\/LIPIcs.ECOOP.2017.17"},{"key":"e_1_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/3093333.3009850"},{"key":"e_1_2_2_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/3434328"},{"key":"e_1_2_2_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/3434324"},{"key":"e_1_2_2_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/3360599"},{"key":"e_1_2_2_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/3314221.3314609"},{"key":"e_1_2_2_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/3373376.3378480"},{"key":"e_1_2_2_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/3079856.3080229"},{"key":"e_1_2_2_40_1","doi-asserted-by":"publisher","DOI":"10.1145\/2954679.2872381"},{"key":"e_1_2_2_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/3385412.3385966"},{"key":"e_1_2_2_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/2914770.2837643"},{"key":"e_1_2_2_43_1","volume-title":"Owicki-Gries Reasoning for Weak Memory Models","author":"Lahav Ori","unstructured":"Ori Lahav and Viktor Vafeiadis . 2015. Owicki-Gries Reasoning for Weak Memory Models . In Automata, Languages, and Programming, Magn\u00fas M. Halld\u00f3rsson, Kazuo Iwama, Naoki Kobayashi, and Bettina Speckmann (Eds.). Springer Berlin Heidelberg , Berlin, Heidelberg . 311\u2013323. isbn:978-3-662-47666-6 Ori Lahav and Viktor Vafeiadis. 2015. Owicki-Gries Reasoning for Weak Memory Models. In Automata, Languages, and Programming, Magn\u00fas M. Halld\u00f3rsson, Kazuo Iwama, Naoki Kobayashi, and Bettina Speckmann (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg. 311\u2013323. isbn:978-3-662-47666-6"},{"key":"e_1_2_2_44_1","doi-asserted-by":"publisher","DOI":"10.1145\/3062341.3062352"},{"key":"e_1_2_2_45_1","doi-asserted-by":"publisher","DOI":"10.1109\/TC.1979.1675439"},{"key":"e_1_2_2_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/3385412.3386010"},{"key":"e_1_2_2_47_1","unstructured":"LWN. 2007. https:\/\/lwn.net\/Articles\/255364\/  LWN. 2007. https:\/\/lwn.net\/Articles\/255364\/"},{"key":"e_1_2_2_48_1","unstructured":"LWN. 2008. https:\/\/lwn.net\/Articles\/282250\/  LWN. 2008. https:\/\/lwn.net\/Articles\/282250\/"},{"key":"e_1_2_2_49_1","unstructured":"LWN. 2016. https:\/\/lwn.net\/Articles\/698014\/  LWN. 2016. https:\/\/lwn.net\/Articles\/698014\/"},{"key":"e_1_2_2_50_1","volume-title":"An Axiomatic Memory Model for POWER Multiprocessors","author":"Mador-Haim Sela","unstructured":"Sela Mador-Haim , Luc Maranget , Susmit Sarkar , Kayvan Memarian , Jade Alglave , Scott Owens , Rajeev Alur , Milo M. K. Martin , Peter Sewell , and Derek Williams . 2012. An Axiomatic Memory Model for POWER Multiprocessors . In Computer Aided Verification, P. Madhusudan and Sanjit A. Seshia (Eds.). Springer Berlin Heidelberg , Berlin, Heidelberg . 495\u2013512. isbn:978-3-642-31424-7 Sela Mador-Haim, Luc Maranget, Susmit Sarkar, Kayvan Memarian, Jade Alglave, Scott Owens, Rajeev Alur, Milo M. K. Martin, Peter Sewell, and Derek Williams. 2012. An Axiomatic Memory Model for POWER Multiprocessors. In Computer Aided Verification, P. Madhusudan and Sanjit A. Seshia (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg. 495\u2013512. isbn:978-3-642-31424-7"},{"key":"e_1_2_2_51_1","doi-asserted-by":"publisher","DOI":"10.1145\/1040305.1040336"},{"key":"e_1_2_2_52_1","doi-asserted-by":"publisher","DOI":"10.4230\/DARTS.6.2.4"},{"key":"e_1_2_2_53_1","doi-asserted-by":"publisher","DOI":"10.1145\/2983990.2983997"},{"key":"e_1_2_2_54_1","doi-asserted-by":"publisher","DOI":"10.1145\/2837614.2837616"},{"key":"e_1_2_2_55_1","doi-asserted-by":"publisher","DOI":"10.4230\/LIPIcs.ECOOP.2017.22"},{"key":"e_1_2_2_56_1","doi-asserted-by":"publisher","DOI":"10.1145\/3290382"},{"key":"e_1_2_2_57_1","doi-asserted-by":"publisher","DOI":"10.1145\/3158107"},{"key":"e_1_2_2_58_1","doi-asserted-by":"publisher","DOI":"10.1145\/3428219"},{"key":"e_1_2_2_59_1","unstructured":"Azalea Raad Luc Maranget and Viktor Vafeiadis. 2022. Technical Appendix. https:\/\/www.soundandcomplete.org\/papers\/POPL2022\/NT\/appendix.pdf  Azalea Raad Luc Maranget and Viktor Vafeiadis. 2022. Technical Appendix. https:\/\/www.soundandcomplete.org\/papers\/POPL2022\/NT\/appendix.pdf"},{"key":"e_1_2_2_60_1","doi-asserted-by":"crossref","unstructured":"Azalea Raad Luc Maranget and Viktor Vafeiadis. 2022. X86_64 Memory Type Tests. http:\/\/diy.inria.fr\/x86-memtype\/reproduce.html  Azalea Raad Luc Maranget and Viktor Vafeiadis. 2022. X86_64 Memory Type Tests. http:\/\/diy.inria.fr\/x86-memtype\/reproduce.html","DOI":"10.1145\/3462312"},{"key":"e_1_2_2_61_1","doi-asserted-by":"publisher","DOI":"10.1145\/3276507"},{"key":"e_1_2_2_62_1","doi-asserted-by":"publisher","DOI":"10.1145\/3371079"},{"key":"e_1_2_2_63_1","doi-asserted-by":"publisher","DOI":"10.1145\/3360561"},{"key":"e_1_2_2_64_1","unstructured":"Rust. 2021. https:\/\/doc.rust-lang.org\/core\/intrinsics\/fn.nontemporal_store.html  Rust. 2021. https:\/\/doc.rust-lang.org\/core\/intrinsics\/fn.nontemporal_store.html"},{"key":"e_1_2_2_65_1","doi-asserted-by":"publisher","DOI":"10.1145\/1993316.1993520"},{"key":"e_1_2_2_66_1","doi-asserted-by":"publisher","DOI":"10.1145\/1785414.1785443"},{"key":"e_1_2_2_67_1","doi-asserted-by":"publisher","DOI":"10.1145\/42190.42277"},{"key":"e_1_2_2_68_1","doi-asserted-by":"publisher","DOI":"10.1109\/NVMSA.2018.00015"},{"key":"e_1_2_2_69_1","unstructured":"SPDK. 2021. https:\/\/spdk.io\/  SPDK. 2021. https:\/\/spdk.io\/"},{"key":"e_1_2_2_70_1","volume-title":"Enabling Efficient RDMA-based Synchronous Mirroring of Persistent Memory Transactions. CoRR, abs\/1810.09360","author":"Tavakkol Arash","year":"2018","unstructured":"Arash Tavakkol , Aasheesh Kolli , Stanko Novakovic , Kaveh Razavi , Juan G\u00f3mez-Luna , Hasan Hassan , Claude Barthels , Yaohua Wang , Mohammad Sadrosadati , Saugata Ghose , Ankit Singla , Pratap Subrahmanyam , and Onur Mutlu . 2018. Enabling Efficient RDMA-based Synchronous Mirroring of Persistent Memory Transactions. CoRR, abs\/1810.09360 ( 2018 ), arxiv:1810.09360. arxiv:1810.09360 Arash Tavakkol, Aasheesh Kolli, Stanko Novakovic, Kaveh Razavi, Juan G\u00f3mez-Luna, Hasan Hassan, Claude Barthels, Yaohua Wang, Mohammad Sadrosadati, Saugata Ghose, Ankit Singla, Pratap Subrahmanyam, and Onur Mutlu. 2018. Enabling Efficient RDMA-based Synchronous Mirroring of Persistent Memory Transactions. CoRR, abs\/1810.09360 (2018), arxiv:1810.09360. arxiv:1810.09360"},{"key":"e_1_2_2_71_1","doi-asserted-by":"publisher","DOI":"10.1145\/2714064.2660243"},{"key":"e_1_2_2_72_1","doi-asserted-by":"publisher","DOI":"10.1145\/2509136.2509532"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3498683","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3498683","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T15:30:28Z","timestamp":1750174228000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3498683"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2022,1,12]]},"references-count":72,"journal-issue":{"issue":"POPL","published-print":{"date-parts":[[2022,1,16]]}},"alternative-id":["10.1145\/3498683"],"URL":"https:\/\/doi.org\/10.1145\/3498683","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2022,1,12]]},"assertion":[{"value":"2022-01-12","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}