Shared Memory Consistency From Scratch Part 1: Causality is now out. This is the first part in a series on shared memory consistency where I develop the ideas from the ground up by designing the (hypothetical) hardware, and then introducing atomic instructions that can give the programmer control over ordering of memory operations. Instead of abstract rules, you'll get to see exactly what the hardware does for each operation. Fair warning: It's a long and dense read!