skip to main content
10.1145/3445814.3446748acmconferencesArticle/Chapter ViewAbstractPublication PagesasplosConference Proceedingsconference-collections
research-article
Open access

VSync: push-button verification and optimization for synchronization primitives on weak memory models

Published: 17 April 2021 Publication History

Abstract

Implementing highly efficient and correct synchronization primitives on modern Weak Memory Model (WMM) architectures, such as ARM and RISC-V, is very difficult even for human experts. We introduce VSync, a framework to assist in optimizing and verifying synchronization primitives on WMM architectures. VSync automatically detects missing and overly-constrained barriers, while ensuring essential safety and liveness properties. VSync relies on two novel techniques: 1) Adaptive Linear Relaxation (ALR), which utilizes barrier monotonicity and speculation to quickly find a correct maximally-relaxed barrier combination; and 2) Await Model Checking (AMC), which for the first time makes it possible to check termination of await loops on WMMs.
We use VSync to automatically optimize and verify state-of-the-art synchronization primitives from systems like seL4, CertiKOS, musl libc, DPDK, Concurrency Kit, and Linux, as well as from the literature. In doing so, we found three correctness bugs on deployed systems due to missing barriers and several performance bugs due to overly-constrained barriers. Synchronization primitives optimized by VSync have similar performance to industrial libraries optimized by experts.

References

[1]
1999. spin_unlock optimization(i386). https://marc.info/?l=linux-kernel&m= 94318921016232&w=2.
[2]
2008. Linux Ticketlock. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/ linux.git/commit/?id=314cdbefd1fd0a7acf3780e9628465b77ea6a836.
[3]
2018. Linux-Kernel Memory Model. http://www.open-std.org/jtc1/sc22/wg21/ docs/papers/2018/p0124r6.html.
[4]
2020. Await termination violation bug fix in DPDK. http://patches.dpdk.org/ patch/75983/.
[5]
2020. CetiKOS MCS lock implementation-source code. https://certikos.github. io/certikos-artifact/html/mcertikos.mcslock. MMCSLockAbsIntroCSource.html.
[6]
2020. Clang: C Language Family Frontend for LLVM. https://clang.org.
[7]
2020. musl libc: an implementation of the C standard library. https://musl.libc.org.
[8]
2020. Mutual exclusion bug fix in seL4. https://github.com/seL4/seL4/pull/199/ commits.
[9]
2020. openEuler. https://openeuler.org.
[10]
Parosh Aziz Abdulla, Stavros Aronis, Mohamed Faouzi Atig, Bengt Jonsson, Carl Leonardsson, and Konstantinos Sagonas. 2017. Stateless model checking for TSO and PSO. Acta Informatica 54, 8 ( 2017 ), 789-818.
[11]
Parosh Aziz Abdulla, Jatin Arora, Mohamed Faouzi Atig, and Shankaranarayanan Krishna. 2019. Verification of Programs under the Release-Acquire Semantics. In Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation (Phoenix, AZ, USA) ( PLDI 2019 ). Association for Computing Machinery, New York, NY, USA, 1117-1132. https://doi.org/10.1145/ 3314221.3314649
[12]
Parosh Aziz Abdulla, Mohamed Faouzi Atig, Ahmed Bouajjani, and Tuan Phong Ngo. 2017. Context-Bounded Analysis for POWER. In Proceedings, Part II, of the 23rd International Conference on Tools and Algorithms for the Construction and Analysis of Systems-Volume 10206. Springer-Verlag, Berlin, Heidelberg, 56-74. https://doi.org/10.1007/978-3-662-54580-5_4
[13]
Parosh Aziz Abdulla, Mohamed Faouzi Atig, Bengt Jonsson, and Carl Leonardsson. 2016. Stateless model checking for POWER. In Computer Aided Verification, Swarat Chaudhuri and Azadeh Farzan (Eds.). Springer International Publishing, Cham, 134-156.
[14]
Parosh Aziz Abdulla, Mohamed Faouzi Atig, Bengt Jonsson, and Tuan Phong Ngo. 2018. Optimal Stateless Model Checking under the Release-Acquire Semantics. Proceedings of the ACM on Programming Languages 2, OOPSLA, Article 135 (Oct. 2018 ), 29 pages. https://doi.org/10.1145/3276505
[15]
Sarita V. Adve and Mark D. Hill. 1990. Weak Ordering-a New Definition. In Proceedings of the 17th Annual International Symposium on Computer Architecture (Seattle, Washington, USA) ( ISCA '90). Association for Computing Machinery, New York, NY, USA, 2-14. https://doi.org/10.1145/325164.325100
[16]
Samy Al Bahra. 2015. Concurrency kit. Retrieved November 8 ( 2015 ), 2018. https://github.com/concurrencykit/ck.
[17]
Jade Alglave, Daniel Kroening, Vincent Nimal, and Daniel Poetzl. 2014. Don't Sit on the Fence. In Computer Aided Verification, Armin Biere and Roderick Bloem (Eds.). Springer International Publishing, Cham, 508-524.
[18]
Jade Alglave, Luc Maranget, and Michael Tautschnig. 2014. Herding Cats: Modelling, Simulation, Testing, and Data Mining for Weak Memory. ACM Trans. Program. Lang. Syst. 36, 2, Article 7 ( July 2014 ), 74 pages. https://doi.org/10.1145/ 2627752
[19]
Bernhard Beckert and Micha? Moskal. 2010. Deductive Verification of System Software in the Verisoft XT Project. KI-Künstliche Intelligenz 24, 1 ( 2010 ), 57-61. https://doi.org/10.1007/s13218-010-0005-7
[20]
Dirk Beyer, Thomas A. Henzinger, Ranjit Jhala, and Rupak Majumdar. 2007. The Software Model Checker Blast: Applications to Software Engineering. International Journal on Software Tools for Technology Transfer (STTT) 9, 5-6 ( 2007 ), 505-525. https://doi.org/10.1007/s10009-007-0044-z
[21]
Sebastian Burckhardt. 2007. Memory model sensitive analysis of concurrent data types. Dissertations available from ProQuest (01 2007 ).
[22]
Tej Chajed, Joseph Tassarotti, M. Frans Kaashoek, and Nickolai Zeldovich. 2019. Verifying Concurrent, Crash-Safe Systems with Perennial. In Proceedings of the 27th ACM Symposium on Operating Systems Principles (Huntsville, Ontario, Canada) ( SOSP '19). Association for Computing Machinery, New York, NY, USA, 243-258. https://doi.org/10.1145/3341301.3359632
[23]
Soham Chakraborty and Viktor Vafeiadis. 2016. Validating optimizations of concurrent C/C++ programs. In Proceedings of the 2016 International Symposium on Code Generation and Optimization. 216-226.
[24]
Ernie Cohen and Norbert Schirmer. 2009. A Better Reduction Theorem for Store Bufers. CoRR abs/0909.4637 ( 2009 ). arXiv: 0909.4637 http://arxiv.org/abs/0909. 4637
[25]
Jonathan Corbet. 2014. locks and qspinlocks. https://lwn.net/Articles/590243/.
[26]
Will Deacon. Feb 13, 2018. locking/qspinlock: Ensure node is initialized before updating prev->next. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/ linux.git/commit/?id=95bcade33a8a.
[27]
Brian Demsky and Patrick Lam. 2015. SATCheck: SAT-directed stateless model checking for SC and TSO. In OOPSLA 2015. ACM, New York, NY, USA, 20-36. https://doi.org/10.1145/2814270.2814297
[28]
Dave Dice and Alex Kogan. 2019. TWA-Ticket Locks Augmented with a Waiting Array. In European Conference on Parallel Processing. Springer, 334-345.
[29]
Dave Dice, Alex Kogan, Yossi Lev, Timothy Merrifield, and Mark Moir. 2014. Adaptive Integration of Hardware and Software Lock Elision Techniques. In Proceedings of the 26th ACM Symposium on Parallelism in Algorithms and Architectures (Prague, Czech Republic) (SPAA '14). Association for Computing Machinery, New York, NY, USA, 188-197. https://doi.org/10.1145/2612669.2612696
[30]
David Dice, Virendra J. Marathe, and Nir Shavit. 2015. Lock Cohorting: A General Technique for Designing NUMA Locks. ACM Trans. Parallel Comput. 1, 2, Article 13 ( Feb. 2015 ), 42 pages. https://doi.org/10.1145/2686884
[31]
Ulrich Drepper. 2005. Futexes are tricky. Futexes are Tricky, Red Hat Inc, Japan 4 ( 2005 ).
[32]
Xing Fang, Jaejin Lee, and Samuel P. Midkif. 2003. Automatic Fence Insertion for Shared Memory Multiprocessing. In Proceedings of the 17th Annual International Conference on Supercomputing (San Francisco, CA, USA) ( ICS '03). Association for Computing Machinery, New York, NY, USA, 285-294. https://doi.org/10.1145/ 782814.782854
[33]
C. Flanagan, S. N. Freund, and S. Qadeer. 2005. Exploiting purity for atomicity. IEEE Transactions on Software Engineering 31, 4 ( 2005 ), 275-291.
[34]
Cormac Flanagan and Patrice Godefroid. 2005. Dynamic partial-order reduction for model checking software. In Proceedings of the 32nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2005. ACM, 110-121. https://doi.org/10.1145/1040305.1040315
[35]
Shaked Flur, Kathryn E. Gray, Christopher Pulte, Susmit Sarkar, Ali Sezgin, Luc Maranget, Will Deacon, and Peter Sewell. 2016. Modelling the ARMv8 Architecture, Operationally: Concurrency and ISA. In Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (St. Petersburg, FL, USA) ( POPL '16). Association for Computing Machinery, New York, NY, USA, 608-621. https://doi.org/10.1145/2837614.2837615
[36]
Linux Foundation. 2015. Data Plane Development Kit (DPDK). http://www. dpdk.org
[37]
Natalia Gavrilenko, Hernán Ponce-de León, Florian Furbach, Keijo Heljanko, and Roland Meyer. 2019. BMC for Weak Memory Models: Relation Analysis for Compact SMT Encodings. In International Conference on Computer Aided Verification. Springer, 355-365.
[38]
Ronghui Gu, Zhong Shao, Hao Chen, Jieung Kim, Jérémie Koenig, Xiongnan (Newman) Wu, Vilhelm Sjöberg, and David Costanzo. 2019. Building Certified Concurrent OS Kernels. Commun. ACM 62, 10 (Sept. 2019 ), 89-99. https://doi.org/10.1145/3356903
[39]
Ronghui Gu, Zhong Shao, Hao Chen, Xiongnan Wu, Jieung Kim, Vilhelm Sjöberg, and David Costanzo. 2016. CertiKOS: An Extensible Architecture for Building Certified Concurrent OS Kernels. In Proceedings of the 12th USENIX Conference on Operating Systems Design and Implementation (Savannah, GA, USA) ( OSDI'16). USENIX Association, USA, 653-669.
[40]
Maurice Herlihy and Nir Shavit. 2011. The art of multiprocessor programming. Morgan Kaufmann.
[41]
Mark A Hillebrand and Dirk C Leinenbach. 2009. Formal verification of a readerwriter lock implementation in C. Electronic Notes in Theoretical Computer Science 254 ( 2009 ), 123-141.
[42]
Gerard J Holzmann and William Slattery Lieberman. 1991. Design and validation of computer protocols. Vol. 512. Prentice hall Englewood Clifs.
[43]
Alan Huang. 2016. Maximally Stateless Model Checking for Concurrent Bugs under Relaxed Memory Models. In Proceedings of the 38th International Conference on Software Engineering Companion (Austin, Texas) ( ICSE '16). Association for Computing Machinery, New York, NY, USA, 686-688. https://doi.org/10.1145/ 2889160.2891042
[44]
Huawei. 2019. Huawei Unveils Industry's Highest-Performance ARM-based CPU. https://www.huawei.com/en/news/2019/1/huawei-unveils-highestperformance-arm-based-cpu.
[45]
ISO/IEC. 2011. Committee Draft N1570 of C11 standard.
[46]
Ranjit Jhala and Rupak Majumdar. 2009. Software Model Checking. ACM Comput. Surv. 41, 4, Article 21 (Oct. 2009 ), 54 pages. https://doi.org/10.1145/1592434. 1592438
[47]
Bengt Jonsson. 2009. State-Space Exploration for Concurrent Algorithms under Weak Memory Orderings: (Preliminary Version). SIGARCH Comput. Archit. News 36, 5 ( June 2009 ), 65-71. https://doi.org/10.1145/1556444.1556453
[48]
Jeehoon Kang, Chung-Kil Hur, Ori Lahav, Viktor Vafeiadis, and Derek Dreyer. 2017. A Promising Semantics for Relaxed-Memory Concurrency. In Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages (Paris, France) (POPL 2017 ). Association for Computing Machinery, New York, NY, USA, 175-189. https://doi.org/10.1145/3009837.3009850
[49]
Sanidhya Kashyap, Irina Calciu, Xiaohe Cheng, Changwoo Min, and Taesoo Kim. 2019. Scalable and Practical Locking with Shufling. In Proceedings of the 27th ACM Symposium on Operating Systems Principles (Huntsville, Ontario, Canada) ( SOSP '19). Association for Computing Machinery, New York, NY, USA, 586-599. https://doi.org/10.1145/3341301.3359629
[50]
Jieung Kim, Vilhelm Sjöberg, Ronghui Gu, and Zhong Shao. 2017. Safety and liveness of MCS lock-Layer by layer. In Asian Symposium on Programming Languages and Systems. Springer, 273-297.
[51]
Gerwin Klein, Kevin Elphinstone, Gernot Heiser, June Andronick, David Cock, Philip Derrin, Dhammika Elkaduwe, Kai Engelhardt, Rafal Kolanski, Michael Norrish, Thomas Sewell, Harvey Tuch, and Simon Winwood. 2009. seL4: Formal Verification of an OS Kernel. In Proceedings of the ACM SIGOPS 22nd Symposium on Operating Systems Principles (Big Sky, Montana, USA) ( SOSP '09). Association for Computing Machinery, New York, NY, USA, 207-220. https://doi.org/10. 1145/1629575.1629596
[52]
Michalis Kokologiannakis, Ori Lahav, Konstantinos Sagonas, and Viktor Vafeiadis. 2017. Efective Stateless Model Checking for C/C++ Concurrency. Proceedings of the ACM on Programming Languages 2, POPL, Article 17 ( Dec. 2017 ), 32 pages. https://doi.org/10.1145/3158105
[53]
Michalis Kokologiannakis, Azalea Raad, and Viktor Vafeiadis. 2019. Efective Lock Handling in Stateless Model Checking. Proceedings of the ACM on Programming Languages 3, OOPSLA, Article 173 (Oct. 2019 ), 26 pages. https://doi.org/10.1145/ 3360599
[54]
Michalis Kokologiannakis, Azalea Raad, and Viktor Vafeiadis. 2019. Model Checking for Weakly Consistent Libraries. In Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation (Phoenix, AZ, USA) ( PLDI 2019 ). Association for Computing Machinery, New York, NY, USA, 96-110. https://doi.org/10.1145/3314221.3314609
[55]
Michalis Kokologiannakis and Konstantinos Sagonas. 2017. Stateless Model Checking of the Linux Kernel's Hierarchical Read-Copy-Update (Tree RCU). In Proceedings of the 24th ACM SIGSOFT International SPIN Symposium on Model Checking of Software (Santa Barbara, CA, USA) ( SPIN 2017 ). Association for Computing Machinery, New York, NY, USA, 172-181. https://doi.org/10.1145/ 3092282.3092287
[56]
Michalis Kokologiannakis and Viktor Vafeiadis. 2020. HMC: Model Checking for Hardware Memory Models. In Proceedings of the Twenty-Fifth International Conference on Architectural Support for Programming Languages and Operating Systems (Lausanne, Switzerland) (ASPLOS '20). Association for Computing Machinery, New York, NY, USA, 1157-1171. https://doi.org/10.1145/3373376.3378480
[57]
Michael Kuperstein, Martin Vechev, and Eran Yahav. 2012. Automatic Inference of Memory Fences. SIGACT News 43, 2 ( June 2012 ), 108-123. https://doi.org/10. 1145/2261417.2261438
[58]
FAL Labs. 2011. Kyoto Cabinet: A straightforward implementation of DBM. http://fallabs.com/kyotocabinet.
[59]
Ori Lahav, Viktor Vafeiadis, Jeehoon Kang, Chung-Kil Hur, and Derek Dreyer. 2017. Repairing Sequential Consistency in C/C++11. In Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation (Barcelona, Spain) ( PLDI 2017 ). Association for Computing Machinery, New York, NY, USA, 618-632. https://doi.org/10.1145/3062341.3062352
[60]
Kim G Larsen, Paul Pettersson, and Wang Yi. 1997. UPPAAL in a nutshell. International journal on software tools for technology transfer 1, 1-2 ( 1997 ), 134-152.
[61]
Stella Lau, Victor BF Gomes, Kayvan Memarian, Jean Pichon-Pharabod, and Peter Sewell. 2019. Cerberus-BMC: A Principled Reference Semantics and Exploration Tool for Concurrent and Sequential C. In International Conference on Computer Aided Verification. Springer, 387-397.
[62]
Nian Liu, Binyu Zang, and Haibo Chen. 2020. No Barrier in the Road: A Comprehensive Study and Optimization of ARM Barriers. In Proceedings of the 25th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (San Diego, California) (PPoPP '20). Association for Computing Machinery, New York, NY, USA, 348-361. https://doi.org/10.1145/3332466.3374535
[63]
Waiman Long. Nov 10, 2015. locking/qspinlock: Use_acquire/_release() versions of cmpxchg() & xchg(). https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/ linux.git/commit/?id=64d816cba06c.
[64]
Waiman Long and Peter Zijlstra. 2015. qspinlock code at version 4.4 of Linux Kernel. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/ kernel/locking/qspinlock.c?h=v4. 4.
[65]
Waiman Long and Peter Zijlstra. 2020. qspinlock code at version 5.6 of Linux Kernel. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/ kernel/locking/qspinlock.c?h=v5. 6.
[66]
Jacob R. Lorch, Yixuan Chen, Manos Kapritsos, Bryan Parno, Shaz Qadeer, Upamanyu Sharma, James R. Wilcox, and Xueyuan Zhao. 2020. Armada: Low-Efort Verification of High-Performance Concurrent Programs. In Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation (London, UK) ( PLDI 2020 ). Association for Computing Machinery, New York, NY, USA, 197-210. https://doi.org/10.1145/3385412.3385971
[67]
Victor Luchangco, Dan Nussbaum, and Nir Shavit. 2006. A hierarchical CLH queue lock. In European Conference on Parallel Processing. Springer, 801-810.
[68]
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-512.
[69]
Kenneth L McMillan. 1993. Symbolic model checking. In Symbolic Model Checking. Springer, 25-60.
[70]
John M. Mellor-Crummey and Michael L. Scott. 1991. Algorithms for Scalable Synchronization on Shared-Memory Multiprocessors. ACM Trans. Comput. Syst. 9, 1 (Feb. 1991 ), 21-65. https://doi.org/10.1145/103727.103729
[71]
Madanlal Musuvathi and Shaz Qadeer. 2008. Fair Stateless Model Checking. In Proceedings of the 29th ACM SIGPLAN Conference on Programming Language Design and Implementation (Tucson, AZ, USA) ( PLDI '08). Association for Computing Machinery, New York, NY, USA, 362-371. https://doi.org/10.1145/1375581.1375625
[72]
Luke Nelson, James Bornholt, Ronghui Gu, Andrew Baumann, Emina Torlak, and Xi Wang. 2019. Scaling Symbolic Evaluation for Automated Verification of Systems Code with Serval. In Proceedings of the 27th ACM Symposium on Operating Systems Principles (Huntsville, Ontario, Canada) ( SOSP '19). Association for Computing Machinery, New York, NY, USA, 225-242. https://doi.org/10. 1145/3341301.3359641
[73]
Luke Nelson, Helgi Sigurbjarnarson, Kaiyuan Zhang, Dylan Johnson, James Bornholt, Emina Torlak, and Xi Wang. 2017. Hyperkernel: Push-Button Verification of an OS Kernel. In Proceedings of the 26th Symposium on Operating Systems Principles (Shanghai, China) (SOSP '17). Association for Computing Machinery, New York, NY, USA, 252-269. https://doi.org/10.1145/3132747.3132748
[74]
Tuan-Phong Ngo. 2019. Model Checking of Software Systems under Weak Memory Models. Ph.D. Dissertation. Acta Universitatis Upsaliensis.
[75]
Brian Norris and Brian Demsky. 2016. A Practical Approach for Model Checking C/C++11 Code. ACM Trans. Program. Lang. Syst. 38, 3, Article 10 (May 2016 ), 51 pages. https://doi.org/10.1145/2806886
[76]
Jonas Oberhauser. 2015. A Simpler Reduction Theorem for X86-TSO. In Revised Selected Papers of the 7th International Conference on Verified Software: Theories, Tools, and Experiments-Volume 9593 (San Francisco, CA, USA) ( VSTTE 2015 ). Springer-Verlag, Berlin, Heidelberg, 142-164. https://doi.org/10.1007/978-3-319-29613-5_9
[77]
Jonas Oberhauser, Rafael Lourenco de Lima Chehab, Diogo Behrens, Ming Fu, Antonio Paolillo, Lilith Oberhauser, Koustubha Bhat, Yuzhong Wen, Haibo Chen, Jaeho Kim, and Viktor Vafeiadis. 2021. VSync: Push-Button Verification and Optimization for Synchronization Primitives on Weak Memory Models (Technical Report). arXiv:2102.06590 [cs.LO]
[78]
Wolfgang J. Paul, Christoph Baumann, Petro Lutsyk, and Sabine Schmaltz. 2016. System Architecture-An Ordinary Engineering Discipline. Springer. https: //doi.org/10.1007/978-3-319-43065-2
[79]
Sean Peters, Adrian Danis, Kevin Elphinstone, and Gernot Heiser. 2015. For a Microkernel, a Big Lock Is Fine. In Proceedings of the 6th Asia-Pacific Workshop on Systems (Tokyo, Japan) ( APSys '15). Association for Computing Machinery, New York, NY, USA, Article 3, 7 pages. https://doi.org/10.1145/2797022.2797042
[80]
Anton Podkopaev, Ori Lahav, and Viktor Vafeiadis. 2019. Bridging the Gap between Programming Languages and Hardware Weak Memory Models. Proceedings of the ACM on Programming Languages 3, POPL, Article 69 ( Jan. 2019 ), 31 pages. https://doi.org/10.1145/3290382
[81]
Christopher Pulte, Shaked Flur, Will Deacon, Jon French, Susmit Sarkar, and Peter Sewell. 2017. Simplifying ARM Concurrency: Multicopy-Atomic Axiomatic and Operational Models for ARMv8. Proceedings of the ACM on Programming Languages 2, POPL, Article 19 ( Dec. 2017 ), 29 pages. https://doi.org/10.1145/ 3158107
[82]
Peter Sewell, Susmit Sarkar, Scott Owens, Francesco Zappa Nardelli, and Magnus O. Myreen. 2010. X86-TSO: A Rigorous and Usable Programmer's Model for X86 Multiprocessors. Commun. ACM 53, 7 ( July 2010 ), 89-97. https: //doi.org/10.1145/1785414.1785443
[83]
SPARC International Inc. 1994. The SPARC architecture manual (version 9). Prentice-Hall.
[84]
Georgia Tech SS Lab. 2010. NUMA-aware Reader-Writer Implementation. https://github.com/sslab-gatech/shfllock/blob/master/benchmarks/kernelsyncstress/locks/cmcsmcsrw.c#L222.
[85]
The Guardian. 2020. Apple ditches Intel for ARM processors in Mac computers with Big Sur. https://www.theguardian.com/technology/2020/jun/22/appleditches-intel-for-arm-processors-in-big-sur-computers.
[86]
Viktor Vafeiadis. 2017. Program verification under weak memory consistency using separation logic. In International Conference on Computer Aided Verification. Springer, 30-46.
[87]
Viktor Vafeiadis, Thibaut Balabonski, Soham Chakraborty, Robin Morisset, and Francesco Zappa Nardelli. 2015. Common Compiler Optimisations Are Invalid in the C11 Memory Model and What We Can Do about It. In Proceedings of the 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (Mumbai, India) (POPL '15). Association for Computing Machinery, New York, NY, USA, 209-220. https://doi.org/10.1145/2676726.2676995
[88]
Viktor Vafeiadis and Francesco Zappa Nardelli. 2011. Verifying Fence Elimination Optimisations. In Static Analysis, Eran Yahav (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg, 146-162.
[89]
Andrew Waterman and Krste Asanovi? (Eds.). 2019. The RISC-V Instruction Set Manual. https://content.riscv.org/wp-content/uploads/2019/06/riscv-spec.pdf. Accessed: 2020-03-06.
[90]
Pan Xinhui. Jun 3, 2016. locking/qspinlock: Use atomic_sub_return_release() in queued_spin_unlock(). https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/ linux.git/commit/?id=ca50e426f96c.
[91]
Yuan Yu, Panagiotis Manolios, and Leslie Lamport. 1999. Model checking TLA+ specifications. In Advanced Research Working Conference on Correct Hardware Design and Verification Methods. Springer, 54-66.
[92]
Mo Zou, Haoran Ding, Dong Du, Ming Fu, Ronghui Gu, and Haibo Chen. 2019. Using Concurrent Relational Logic with Helpers for Verifying the AtomFS File System. In Proceedings of the 27th ACM Symposium on Operating Systems Principles (Huntsville, Ontario, Canada) ( SOSP '19). Association for Computing Machinery, New York, NY, USA, 259-274. https://doi.org/10.1145/3341301.3359644

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
ASPLOS '21: Proceedings of the 26th ACM International Conference on Architectural Support for Programming Languages and Operating Systems
April 2021
1090 pages
ISBN:9781450383172
DOI:10.1145/3445814
This work is licensed under a Creative Commons Attribution International 4.0 License.

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 17 April 2021

Check for updates

Badges

Author Tags

  1. model checking
  2. weak memory models

Qualifiers

  • Research-article

Conference

ASPLOS '21
Sponsor:

Acceptance Rates

Overall Acceptance Rate 535 of 2,713 submissions, 20%

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)706
  • Downloads (Last 6 weeks)100
Reflects downloads up to 03 Jan 2025

Other Metrics

Citations

Cited By

View all

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media