Атомность на x86

8.1.2 Блокировка автобуса

Процессоры Intel 64 и IA-32 выдают сигнал LOCK #, который автоматически устанавливается во время определенных критических операций с памятью для блокировки системной шины или эквивалентного канала. Пока этот выходной сигнал подается, запросы от других процессоров или агентов шины на управление шиной блокируются. Программное обеспечение может указывать другие случаи, когда семантике LOCK нужно следовать, добавляя префикс LOCK к инструкции.

Он взят из Руководства Intel, Том 3

Похоже, атомарные операции над памятью будут выполняться непосредственно в памяти (RAM). Я запутался, потому что не вижу ничего особенного, когда анализирую результаты сборки. В основном, вывод сборки, созданный дляstd::atomic<int> X; X.load() ставит только "лишнюю" защиту. Но он отвечает за правильное упорядочение памяти, а не за атомарность. Если я правильно понимаю,X.store(2) простоmov [somewhere], $2, И это все. Кажется, он не «пропускает» кеш. Я знаю, что перемещение выровненных (например, целых) в память атомарно. Однако я в замешательстве.

Итак, я высказал свои сомнения, но главный вопрос:

Как процессор выполняет атомарные операции внутри?

Ответы на вопрос(2)

Ваш ответ на вопрос