我知道内存屏障会阻止从内存屏障之前到之后以及之后到之前的指令重新排序,例如,如果我有以下指令:

instruction 1
instruction 2
instruction 3
memory barrier
instruction 4
instruction 5
instruction 6

这些指令可以按以下顺序执行:
instruction 3
instruction 1
instruction 2
memory barrier
instruction 6
instruction 5
instruction 4

但是它们永远不会按以下顺序执行:
instruction 1
instruction 2
instruction 5
memory barrier
instruction 4
instruction 3
instruction 6

但是我不确定以下任务是否也由内存屏障强制执行:
  • 完成内存屏障之前的所有挂起操作。
  • 在刷新内存屏障之前,所有写操作仍在缓存中的数据。
  • 最佳答案

    至少对于IBM的powerPC,不能保证完成。 IBM's documentation:

    09-25 22:01