首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在这种情况下,缓存一致性如何影响性能

在这种情况下,缓存一致性如何影响性能
EN

Stack Overflow用户
提问于 2012-04-08 00:40:49
回答 2查看 758关注 0票数 7

假设内核A正在修改一个变量X,而内核B正在读取该变量(X)。当然,在这种情况下,高速缓存一致性协议将更新核B的高速缓存,因为X已经被核A修改,当然,这种高速缓存一致性将减慢在核B上的执行。然而,假设变量X驻留在其高速缓存中,这种高速缓存一致性也会影响核A的性能吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-08 00:53:23

是。它可以通过几种方式影响性能。人们使用的标准协议是MSI的一些变体(修改、共享、无效),有时会在协议中添加O(所有者)和E(独占)。在您的示例中,内核A将以已修改(或独占)状态启动,而内核B的读取将强制内核A将其更改为共享状态。此操作占用缓存中的周期,因为内核在任何给定时间都只能执行这么多操作。这对核心A的影响不是很大,因为它不在关键路径中。更大的影响是如果核心A再次执行写入。由于高速缓存线处于共享(或无效)状态,因此它必须发出将自身升级到M或E的请求。该请求必须转到核心B。此操作位于关键路径上,在升级高速缓存块之前无法完成写入。也就是说,写操作通常是缓冲的,处理器在此操作中通常不会被阻塞。

票数 4
EN

Stack Overflow用户

发布于 2012-04-08 00:48:28

是的,在目前使用ME(O)SI一致性协议的微体系结构上,它也会减慢A对X的更新。这样做的原因是B的读操作会在复制之前将包含X的高速缓存线置于“共享”状态,然后A的写操作将不得不使B的副本无效以进入“独占”状态,然后才能再次修改它。

尽管如此,A对X的写入实际上可能不会停止A的执行流水线。这取决于体系结构和编程语言的内存一致性模型,以及写操作是作为原子操作还是作为后续写操作强制退出。

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

https://stackoverflow.com/questions/10056319

复制
相关文章

相似问题

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