Question: I've been reading [this article](http://preshing.com/20130618/atomic-vs-non-atomic-operations/) about atomic operations, and it mentions 32-bit integer assignment being atomic on x86, as long as the variable is naturally aligned.

Why does natural alignment assure atomicity?

Answer: 
If you were asking why it's designed so, I would say it's a good side product from the design of CPU architecture.

Back in the 486 time, there is no multi-core CPU or QPI link, so atomicity isn't really a strict requirement at that time (DMA may require it?).

On x86, the data width is 32bits (or 64 bits for x86\_64), meaning the CPU can read and write up to data width in one shot. And the memory data bus is typically the same or wider than this number. Combined with the fact that reading/writing on aligned address is done in one shot, naturally there is nothing preventing the read/write to be un-atomic. You gain speed/atomic at the same time.
To answer your first question, a variable is naturally aligned if it exists at a memory address that is a multiple of its size.

If we consider only - as the article you linked does - *assignment instructions*, then alignment guarantees atomicity because MOV (the assignment instruction) is atomic by design on aligned data.

Other kinds of instructions, INC for example, need to be **LOCK**ed (an x86 prefix which gives exclusive access to the shared memory to the current processor for the duration of the prefixed operation) even if the data are aligned because they actually execute via multiple steps (=instructions, namely load, inc, store).