内存屏障
Memory barrier能够让
CPU
或编译器
在内存访问上有序。一个Memory barrier之前的内存访问操作必定先于其之后的完成。
程序在运行时内存实际的访问顺序和程序代码编写的访问顺序不一定一致,这就是内存乱序访问。内存乱序访问行为出现的理由是为了提升程序运行时的性能.
Linux kernel doc: memory-barriers
内存乱序访问主要发生在两个阶段:
- 编译时,编译器优化导致内存乱序访问(指令重排)
- 运行时,多CPU间交互引起内存乱序访问
1 |
[MIPS] file: arch/mips/include/asm/barrier.h
smp_mb
作用对象:CPU与CPU
mb
作用对象:CPU与IO
参考
- 理解 Memory barrier(内存屏障)