Obtaining possible execution histories on multiple memory consistency models

In order to make shared memory programming possible in distributed architectures, we use an abstraction called distributed shared memory. The behavior of distributed shared memory systems is dictated by the memory consistency model. In order to provide a better understanding on the semantics of the memory consistency models, many researchers have proposed formalisms to define them. Even with formal definitions, it is still difficult to say what kind of execution histories can be produced on a particular memory model. In this paper, we propose a tool that shows what operations orderings could lead to user-defined execution histories on different memory models. We also present a prototype of our tool that analyses execution histories for four different memory consistency models: sequential consistency, PipelinedRAM consistency, release consistency and scope consistency.