首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MESI协议的性能代价?

MESI协议的性能代价?
EN

Stack Overflow用户
提问于 2014-11-25 18:58:22
回答 2查看 572关注 0票数 2

MESI (Modified,Exclusive,Shared,Invalid)协议用于CPU缓存进行通信,并确保它们都使用最新的缓存线的值。当一个CPU修改高速缓存线的值时,订阅该高速缓存线的所有其他CPU都会保持对该高速缓存线的更改的警示。

然而,在我读过的所有关于MESI的文献中,我还没有看到在协议通信时是否会有任何性能损失?此成本是否只是x86 LOCK前缀成本的一部分?我相当确定即使在x86 LOCK前缀不是?

注意:英特尔实际上使用的是MESIF协议--其中F是附加的“转发”状态。

EN

回答 2

Stack Overflow用户

发布于 2016-01-15 04:17:31

是的,MESI(F)协议用于所有内存操作(即读取和写入)。想象一下,你已经在缓存中写入了一些东西(即'M‘状态),现在这行代码必须被清除。协议说你需要把它写回内存。如果没有使用该协议,那么我们要么需要始终写入内存(巨大的带宽开销),要么需要具有不一致的内存(糟糕的想法)。

也就是说,如果没有共享,仍将使用MESI协议,在这种情况下,线路将处于'E‘、'I’或'M‘状态,而不会使用'S’。

附注:请记住,系统上的几乎所有应用程序通常都共享一些动态库代码。您认为代码将驻留在何处,以及如何管理其访问权限?

现在,我将回答您关于性能影响的问题。是的,实现MESI(f)或任何一致性协议都会对性能产生影响,但与不存在一致性协议的情况相比,这种影响实际上是积极的。在这种情况下,每次读/写都需要进入主存(即,您的应用程序将慢100倍)。

所以,归根结底:虽然MESI(f)协议确实对带宽有负面影响,但总的来说,它对性能有积极影响。与我们不使用缓存一致性协议(即无缓存)的情况相比,它实际上为我们购买了大量的性能(和功率)

票数 1
EN

Stack Overflow用户

发布于 2014-11-25 19:13:11

MESI协议通过在CPU间总线(然而该总线被实现)上交换消息来工作。该总线的吞吐能力有限,因此可以通过使用原子指令使其饱和。

这就是为什么不必要地使用原子指令的糟糕编写的应用程序会对整个机器产生负面影响。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27124829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档