Очень классный пост, предлагающий ментальную модель для понимания работы памяти в многоядерном процессоре.
TL;DR: Процессор с большим количеством ядер похож на сеть машин, выполняющих распределённое вычисление. Разные артефакты работы с памятью возникают из-за задержки в этой сети: по умолчанию, ядро не дожидается окончания работы операций с памятью, т.е. проводит их асинхронно. Инструкции load_acquire и store_release - это способы дождаться выполнения операций чтения или записи в синхронном режиме.
https://xorvoid.com/lockfree_programming_a_mental_model.html