Calvin: Deterministic or Not? Free Will to Choose
Most shared memory systems maximize performance by unpredictably resolving memory races. Unpredictable memory races can lead to non-determinism in parallel programs, which can suffer from hard-to-reproduce hiesenbugs. The authors introduce Calvin, a shared memory model capable of executing in a conventional nondeterministic mode when performance is paramount and a deterministic mode when execution repeatability is important. Unlike prior hardware proposals for deterministic execution, Calvin exploits the flexibility of a memory consistency model weaker than sequential consistency.