토픽 39 / 111·메모리 계층 (Memory Hierarchy)
메모리 배리어 (Memory Barrier/Memory Fence)
메모리 배리어 (Memory Barrier/Memory Fence)
컴파일러/CPU의 명령어 재배치를 제한하여 메모리 연산 순서를 보장하는 동기화 기법
특징: 컴파일러 배리어+CPU 배리어 양쪽 모두 필요, Acquire/Release 시맨틱
배리어 유형: Load Barrier(읽기 순서) / Store Barrier(쓰기 순서) / Full Barrier(전체 순서)
Acquire/Release: Acquire(이후→이전 재배치 금지, Lock 획득), Release(이전→이후 재배치 금지, Lock 해제)
메모리 모델
- •Strong(x86 TSO): Store→Load 재배치만 허용, mfence로 대부분 해결
- •Weak(ARM/POWER): 모든 재배치 가능, 명시적 배리어(dmb/dsb) 필수
컴파일러 배리어: 최적화 재배치 방지(asm volatile), volatile(레지스터 캐싱 방지)
CPU 배리어: OoO/Store Buffer 재배치 방지, HW 명령어(mfence, dmb)
x86: mfence(Full), lfence(Load), sfence(Store), lock 접두어(암묵적 Full)
ARM: dmb(데이터 메모리) < dsb(동기화) < isb(명령어, 파이프라인 플러시)
비교: Memory Barrier(순서보장) vs Lock(상호배제) vs Volatile(가시성)
연관: 메모리 모델, 동시성, volatile, Lock-Free, Out-of-Order 실행