内存屏障后和互锁操作后内存缓存一致性的时序

Posted

技术标签:

【中文标题】内存屏障后和互锁操作后内存缓存一致性的时序【英文标题】:Timing of memory caches coherency after memory barrier and after Interlocked operations 【发布时间】:2014-07-17 11:13:09 【问题描述】:

在互锁操作和调用内存屏障之后,内存缓存一致性(或“刷新”)的时间是否存在差异?让我们在 C# 中考虑 - 使用任何互锁操作与 Thread.MemoryBarrier() - 生成的内存缓存刷新行为是否相同?

我相信是有区别的。我正在解决一个似乎是由内存屏障后延迟刷新引起的业务案例(我们替换为互锁操作)。还有很多信息来源(包括wikipedia)表明内存屏障并不能保证操作的时间。

如果有兴趣,我可以链接更多参考资料或添加示例代码 sn-p,但最初我想保持问题简短(因为我的 original question to this topic 中的信息过多而被否决)

【问题讨论】:

【参考方案1】:

正如 original question 中的回答:CAS(联锁)操作已经(并且很可能是)最快的缓存刷新器。

【讨论】:

以上是关于内存屏障后和互锁操作后内存缓存一致性的时序的主要内容,如果未能解决你的问题,请参考以下文章

说透缓存一致性与内存屏障

高速缓存一致性协议MESI与内存屏障

缓存一致

CPU运行时优化(高速缓存指令重排内存屏障等)

CPU运行时优化(高速缓存指令重排内存屏障等)

说透缓存一致性与内存屏障