Я пытаюсь понять, что такое барьер памяти. Основываясь на том, что я знаю до сих пор, барьер памяти (например: mfence
) используется для предотвращения переупорядочения инструкций от до и после и после этого до барьера памяти.
Это пример используемого барьера памяти:
instruction 1
instruction 2
instruction 3
mfence
instruction 4
instruction 5
instruction 6
Теперь мой вопрос: является ли команда mfence
просто маркером, mfence
CPU, в каком порядке выполнять инструкции? Или это инструкция, что процессор фактически выполняет, как он выполняет другие команды (например: mov
).