应用程序看到的原子操作需要内存控制器、CPU指令和编译器的协调实现。
底层硬件的支持
memory controller 的实现
load/store 操作本身在内存控制器级别是原子的,控制器保证不会同时对同一个地址进行读写。
LOCK# 总线信号
lock 指令和前缀保证实现的指令执行的内存只有一个core或者agent 在访问
cache coherence
MESI 协议
指令的支持
系列化指令
LFENCE
load fence
load fence 指令之后的load 操作不会reorded到load fence之前执行;
SFENCE
store fence
store fence 指令之后的store 操作不会reorded到store fence之前执行;
MFECE
load and store fence
MFECE 指令之后的load/store操作不会reordeded 到mfence之前执行。
##
##