Abstract:
We propose a novel, operational framework to formally describe the semantics of
concurrent programs running within the context of a relaxed memory model.
Our framework features a ``temporary store'' where the memory operations issued by the
threads are recorded, in program order. A memory model then specifies
the conditions under which a pending operation from this sequence is allowed to be
globally performed, possibly out of order. The memory model also involves a
``write grain,'' accounting for architectures where a thread may read a write
that is not yet globally visible.
We illustrate our approach by way of examples, and discuss some extensions.
We have build a software simulator allowing us to run litmus tests in our semantics.
[pdf]