Implementing and Verifying Release-Acquire Transactional Memory (Extended Version)

07/30/2022
by   Sadegh Dalvandi, et al.
0

Transactional memory (TM) is an intensively studied synchronisation paradigm with many proposed implementations in software and hardware, and combinations thereof. However, TM under relaxed memory, e.g., C11 (the 2011 C/C++ standard) is still poorly understood, lacking rigorous foundations that support verifiable implementations. This paper addresses this gap by developing TMS2-RA, a relaxed operational TM specification. We integrate TMS2-RA with RC11 (the repaired C11 memory model that disallows load-buffering) to provide a formal semantics for TM libraries and their clients. We develop a logic, TARO, for verifying client programs that use TMS2-RA for synchronisation. We also show how TMS2-RA can be implemented by a C11 library, TML-RA, that uses relaxed and release-acquire atomics, yet guarantees the synchronisation properties required by TMS2-RA. We benchmark TML-RA and show that it outperforms its sequentially consistent counterpart in the STAMP benchmarks. Finally, we use a simulation-based verification technique to prove correctness of TML-RA. Our entire development is supported by the Isabelle/HOL proof assistant.

READ FULL TEXT
research
12/28/2020

Verifying C11-Style Weak Memory Libraries

Deductive verification of concurrent programs under weak memory has thus...
research
11/22/2018

Verifying C11 Programs Operationally

This paper develops an operational semantics for a release-acquire fragm...
research
03/01/2022

Relaxed virtual memory in Armv8-A (extended version)

Virtual memory is an essential mechanism for enforcing security boundari...
research
08/16/2021

Verifying C11-Style Weak Memory Libraries via Refinement

Deductive verification of concurrent programs under weak memory has thus...
research
02/07/2023

Adding Explicit Load-Acquire and Store-Release Instructions to the RISC-V ISA

Weak memory models allow for simplified hardware and increased performan...
research
05/21/2020

Repairing and Mechanising the JavaScript Relaxed Memory Model

Modern JavaScript includes the SharedArrayBuffer feature, which provides...
research
04/11/2018

A denotational account of C11-style memory

We introduce a denotational semantic framework for shared-memory concurr...

Please sign up or login with your details

Forgot password? Click here to reset