Memory Barrier

Introduction

Memory model 定義 architecture 對 memory visibility 與 ordering 的保證。

  • Strongly ordered:processor 對 memory 的修改會很快以相同順序被其他 processor 看到
  • Weakly ordered:修改不一定立刻或依程式順序對其他 processor 可見

在 shared-memory multiprocessor 上,synchronization 不能假設所有 architecture 的 ordering 都一樣。

How it works?

Memory barrier,又稱 memory fence,是一種 hardware instruction,用來禁止 barrier 前後的 load / store 被跨越重排。

x = 100;
memory_barrier();
flag = true;

這確保其他 processor 看到 flag == true 時,x = 100 已經先變得可見。

Memory barrier 很 low-level,通常由 kernel 或 synchronization library 使用,因為它會限制硬體原本的 reordering optimization。