Papers
Topics
Authors
Recent
Gemini 2.5 Flash
Gemini 2.5 Flash
126 tokens/sec
GPT-4o
47 tokens/sec
Gemini 2.5 Pro Pro
43 tokens/sec
o3 Pro
4 tokens/sec
GPT-4.1 Pro
47 tokens/sec
DeepSeek R1 via Azure Pro
28 tokens/sec
2000 character limit reached

Modularising Verification Of Durable Opacity (2011.15013v5)

Published 30 Nov 2020 in cs.DC

Abstract: Non-volatile memory (NVM), also known as persistent memory, is an emerging paradigm for memory that preserves its contents even after power loss. NVM is widely expected to become ubiquitous, and hardware architectures are already providing support for NVM programming. This has stimulated interest in the design of novel concepts ensuring correctness of concurrent programming abstractions in the face of persistency and in the development of associated verification approaches. Software transactional memory (STM) is a key programming abstraction that supports concurrent access to shared state. In a fashion similar to linearizability as the correctness condition for concurrent data structures, there is an established notion of correctness for STMs known as opacity. We have recently proposed durable opacity as the natural extension of opacity to a setting with non-volatile memory. Together with this novel correctness condition, we designed a verification technique based on refinement. In this paper, we extend this work in two directions. First, we develop a durably opaque version of NOrec (no ownership records), an existing STM algorithm proven to be opaque. Second, we modularise our existing verification approach by separating the proof of durability of memory accesses from the proof of opacity. For NOrec, this allows us to re-use an existing opacity proof and complement it with a proof of the durability of accesses to shared state.

Definition Search Book Streamline Icon: https://streamlinehq.com
References (60)
  1. A. Armstrong and B. Dongol. Modularising opacity verification for hybrid transactional memory. In A. Bouajjani and A. Silva, editors, FORTE, volume 10321 of LNCS, pages 33–49. Springer, 2017.
  2. Proving opacity via linearizability: A sound and complete method. In A. Bouajjani and A. Silva, editors, FORTE, volume 10321 of LNCS, pages 50–66. Springer, 2017.
  3. M. K. Aguilera and S. Frølund. Strict linearizability and the power of aborting. Technical Report HPL-2003-241, 2003.
  4. Safety of live transactions in transactional memory: TMS is necessary and sufficient. In F. Kuhn, editor, DISC, volume 8784 of LNCS, pages 376–390. Springer, 2014.
  5. A critique of ansi sql isolation levels. ACM SIGMOD Record, 24(2):1–10, 1995.
  6. Nonblocking persistent software transactional memory. In 2020 IEEE 27th International Conference on High Performance Computing, Data, and Analytics (HiPC), pages 283–293. IEEE, 2020.
  7. Delay-free concurrency on faulty persistent memory. In The 31st ACM Symposium on Parallelism in Algorithms and Architectures, pages 253–264, 2019.
  8. Defining and verifying durable opacity: Correctness for persistent software transactional memory. In A. Gotsmanj and A. Sokolova, editors, FORTE 2020, volume 12136 of Lecture Notes in Computer Science, pages 39–58. Springer, 2020. doi:10.1007/978-3-030-50086-3_3.
  9. Verification of a durable opaque version of NOREC with KIV and PVS, 2021. URL: http://www.informatik.uni-augsburg.de/swt/projects/DNOREC.html.
  10. View-based Owicki-Gries reasoning for persistent x86-TSO. In Ilya Sergey, editor, ESOP, volume 13240 of Lecture Notes in Computer Science, pages 234–261. Springer, 2022. doi:10.1007/978-3-030-99336-8_9.
  11. Robust shared objects for non-volatile main memory. In 19th International Conference on Principles of Distributed Systems (OPODIS 2015). Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik, 2016.
  12. Verification of Crashsafe Caching in a Virtual File System Switch. Formal Aspects of Computing (FAC), 2022. to appear.
  13. Atlas: Leveraging locks for non-volatile memory consistency. ACM SIGPLAN Notices, 49(10):433–452, 2014.
  14. Nv-heaps: making persistent objects fast and safe with next-generation, non-volatile memories. ACM SIGARCH Computer Architecture News, 39(1):105–118, 2011.
  15. Romulus: Efficient algorithms for persistent transactional memory. In Proceedings of the 30th on Symposium on Parallelism in Algorithms and Architectures, pages 271–282, 2018.
  16. Revamping hardware persistency models: view-based and axiomatic persistency models for Intel-x86 and Armv8. In Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation, pages 16–31, 2021.
  17. Refinement in Z and Object-Z - Foundations and Advanced Applications (2. ed.). Springer, 2014. doi:10.1007/978-1-4471-5355-9.
  18. B. Dongol and J. Derrick. Verifying linearisability: A comparative survey. ACM Comput. Surv., 48(2):19:1–19:43, 2015.
  19. Proving opacity of a pessimistic STM. In P. Fatourou, E. Jiménez, and F. Pedone, editors, OPODIS, volume 70 of LIPIcs, pages 35:1–35:17. Schloss Dagstuhl - Leibniz-Zentrum für Informatik, 2016.
  20. Verifying correctness of persistent concurrent data structures. In FM, volume 11800 of Lecture Notes in Computer Science, pages 179–195. Springer, 2019.
  21. Verifying correctness of persistent concurrent data structures: a sound and complete method. Formal Aspects of Computing, 2021. Online first. URL: https://link.springer.com/article/10.1007/s00165-021-00541-8.
  22. Transactional mutex locks. In P. D’Ambra, M. R. Guarracino, and D. Talia, editors, Euro-Par (2), volume 6272 of LNCS, pages 2–13. Springer, 2010.
  23. Verifying opacity of a transactional mutex lock. In FM, volume 9109 of LNCS, pages 161–177. Springer, 2015.
  24. Towards formally specifying and verifying transactional memory. Formal Asp. Comput., 25(5):769–799, 2013.
  25. W. P. de Roever and K. Engelhardt. Data Refinement: Model-oriented Proof Theories and their Comparison, volume 46 of Cambridge Tracts in Theoretical Computer Science. Cambridge University Press, 1998.
  26. Transactional locking ii. In Shlomi Dolev, editor, Distributed Computing, pages 194–208, Berlin, Heidelberg, 2006. Springer Berlin Heidelberg.
  27. NOrec: streamlining STM by abolishing ownership records. In R. Govindarajan, D. A. Padua, and M. W. Hall, editors, PPoPP, pages 67–78. ACM, 2010.
  28. Dynamic performance tuning of word-based software transactional memory. In Proceedings of the 13th ACM SIGPLAN Symposium on Principles and practice of parallel programming, pages 237–246, 2008.
  29. A persistent lock-free queue for non-volatile memory. In A. Krall and T. R. Gross, editors, ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, PPoPP, pages 28–40. ACM, 2018. URL: http://doi.acm.org/10.1145/3178487.3178490.
  30. Mirror: making lock-free data structures persistent. In Stephen N. Freund and Eran Yahav, editors, PLDI ’21: 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation, Virtual Event, Canada, June 20-25, 20211, pages 1218–1232. ACM, 2021. doi:10.1145/3453483.3454105.
  31. R. Guerraoui and M. Kapalka. On the correctness of transactional memory. In S. Chatterjee and M. L. Scott, editors, PPOPP, pages 175–184. ACM, 2008.
  32. R. Guerraoui and M. Kapalka. Principles of Transactional Memory. Synthesis Lectures on Distributed Computing Theory. Morgan & Claypool Publishers, 2010.
  33. R. Guerraoui and R. Levy. Robust emulations of shared memory in a crash-recovery model. In 24th International Conference on Distributed Computing Systems, 2004. Proceedings., pages 400–407. IEEE, 2004.
  34. Pisces: a scalable and efficient persistent transactional memory. In USENIX Annual Technical Conference, pages 913–928, 2019.
  35. Transactional memory. Synthesis Lectures on Computer Architecture, 5(1):1–263, 2010.
  36. M. Herlihy and J. M. Wing. Linearizability: A correctness condition for concurrent objects. ACM TOPLAS, 12(3):463–492, 1990.
  37. Failure-atomic persistent memory updates via justdo logging. ACM SIGARCH Computer Architecture News, 44(2):427–442, 2016.
  38. Linearizability of persistent memory objects under a full-system-crash failure model. In C. Gavoille and D. Ilcinkas, editors, DISC, volume 9888 of LNCS, pages 313–327. Springer, 2016.
  39. Language-level persistency. In 2017 ACM/IEEE 44th Annual International Symposium on Computer Architecture (ISCA), pages 481–493. IEEE, 2017.
  40. Durable transactional memory can scale with timestone. In ASPLOS, pages 335–349, 2020.
  41. L. Lamport. How to make a multiprocessor computer that correctly executes multiprocess programs. IEEE Trans. Computers, 28(9):690–691, 1979.
  42. A framework for formally verifying software transactional memory algorithms. In M. Koutny and I. Ulidowski, editors, CONCUR 2012, volume 7454 of LNCS, pages 516–530, Berlin, Heidelberg, 2012. Springer Berlin Heidelberg.
  43. Putting opacity in its place. In Workshop on the Theory of Transactional Memory, 2012.
  44. Hierarchical correctness proofs for distributed algorithms. In PODC, pages 137–151, New York, NY, USA, 1987. ACM.
  45. N. Lynch and F. Vaandrager. Forward and backward simulations. Information and Computation, 121(2):214 – 233, 1995.
  46. N. A. Lynch. Distributed Algorithms. Morgan Kaufmann, 1996.
  47. O. Müller. I/O Automata and beyond: Temporal logic and abstraction in Isabelle. In J. Grundy and M. Newey, editors, TPHOLs, pages 331–348, Berlin, Heidelberg, 1998. Springer Berlin Heidelberg.
  48. Memory persistency. In 2014 ACM/IEEE 41st International Symposium on Computer Architecture (ISCA), pages 265–276. IEEE, 2014.
  49. Modular verification of order-preserving write-back caches. In N. Polikarpova and S. A. Schneider, editors, iFM, volume 10510 of Lecture Notes in Computer Science, pages 375–390. Springer, 2017. doi:10.1007/978-3-319-66845-1_25.
  50. Onefile: A wait-free persistent transactional memory. In 2019 49th Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN), pages 151–163. IEEE, 2019.
  51. Persistent Owicki-Gries reasoning: a program logic for reasoning about persistent programs on Intel-x86. Proceedings of the ACM on Programming Languages, 4(OOPSLA):1–28, 2020.
  52. Persistency semantics of the Intel-x86 architecture. Proc. ACM Program. Lang., 4(POPL):11:1–11:31, 2020. doi:10.1145/3371079.
  53. Weak persistency semantics from the ground up: Formalising the persistency semantics of ARMv8 and transactional models. Proceedings of the ACM on Programming Languages, 3(OOPSLA):1–27, 2019.
  54. Software & System Verification with KIV. In The Logic of Software. A Tasting Menu of Formal Methods, volume 13360 of LNCS. Springer, 2022. to appear.
  55. Adding concurrency to a sequential refinement tower. In International Conference on Rigorous State-Based Methods, pages 6–23. Springer, 2020.
  56. RingSTM: scalable transactions with a single atomic instruction. In Proceedings of the twentieth annual symposium on Parallelism in algorithms and architectures, pages 275–284. ACM, 2008.
  57. Ringstm: scalable transactions with a single atomic instruction. In Friedhelm Meyer auf der Heide and Nir Shavit, editors, SPAA 2008: Proceedings of the 20th Annual ACM Symposium on Parallelism in Algorithms and Architectures, Munich, Germany, June 14-16, 2008, pages 275–284. ACM, 2008. doi:10.1145/1378533.1378583.
  58. Consistent and durable data structures for non-volatile byte-addressable memory. In Gregory R. Ganger and John Wilkes, editors, 9th USENIX Conference on File and Storage Technologies, San Jose, CA, USA, February 15-17, 2011, pages 61–75. USENIX, 2011. URL: http://www.usenix.org/events/fast11/tech/techAbstracts.html#Venkataraman.
  59. Mnemosyne: Lightweight persistent memory. ACM SIGARCH Computer Architecture News, 39(1):91–104, 2011.
  60. Efficient lock-free durable sets. PACMPL, 3(OOPSLA):128:1–128:26, 2019.
Citations (4)

Summary

We haven't generated a summary for this paper yet.