现代多核处理器中,每个处理器内核都可能有一层或者多层缓存用来改善处理器性能。在处理器层面,内存模型定义了一个处理器核心的本地缓存的修改如何对其他的处理器核心可见。
有些处理器实现了强内存模型,所有的处理器核心在任意时刻看到的内存数据都是一致的。很明显,这种强保证是需要是会浪费不必要的资源的。因为有时候,不需要所有的核心上的缓存都是一致的。
还有另外一种处理器,实现了一种弱内存模型。它不保证多个运算核心上对同一数据的本地缓存的一致,而是通过一条特殊的cpu指令来达到不同处理器核心上本地缓存的一致性。这条指令就是内存栅栏,它通过刷新运算核心的本地缓存或者使运算内核的本地缓存失效实现了对内存一致性的需求。