linux内核内存屏障
内存屏障是为应付内存访问操作的乱序执行而生的. 那么, 内存访问为什么会乱序呢? 这里先简要介绍一下: 现在的CPU一般采用流水线来执行指令. 一个指令的执行被分成: 取指, 译码, 访存, 执行,写回, 等若干个阶段. 指令流水线并不是串行化的, 并不会因为一个耗时很长的指令在"执行"阶段呆很长时间, 而导致后续的指令都卡在"执行"之前的阶段上. 相反, 流水线中的多个指令是可以同时处于一个阶段的, 只要CPU内部相应的处理部件未被占满. 比如说CPU有一个加法器和一个除法器, 那么一条加法指令和一条除法指令就可能同时处于"执行"阶段, 而两条加法指令在"执行"阶段就只能串行工作.
用户评论