由SnpUniqueFwd和SnpUnique混合使用引发的思考

May 16th, 2026 Administrator No comments

一致性与内存屏障:一场在CHI总线上的花活

前几日,在 xhs 上刷到一则颇有意思的讨论:关于SnpUniqueFwd和SnpUnique混合使用的话题,以及这种混用究竟会在底层引发什么灾难性的影响。在讨论这个哑谜之前,先得理清这两个概念的底牌是什么。


Coherence(缓存一致性)和 Consistency(内存一致性)到底是俩兄弟还是父子,真不好分清。咱们拿《王者荣耀》瞎举个例子:Coherence 就像是红蓝 Buff 的存活状态,不管十个玩家的网络延迟有多大,只要红 Buff 被打掉了,所有人最终看到这个野怪坑位肯定都是空的(死磕单一对象);而 Consistency 关乎的是全图的因果律,它就像是英雄的连招顺序。比如对面打野先“交了闪现(事件 A)”,然后才“放出大招秒人(事件 B)”。如果在你的手机屏幕上看到的画面是:自己突然先掉血被秒了,然后对面打野才从墙外闪现进来,这种违背常理的吃书现象就叫因果律崩溃(它管的是多个独立事件在全局的先后呈现顺序)。这个例子不是非常恰到,这两个毕竟有非常明显的层次关系。


在多核架构的世界里,缓存分布在不同的核心上,依赖监听事务去同步。SnpUnique是一种非转发类型的监听请求(Non-forwarding snoop),为了获取缓存行的独占(Unique)副本,它会严谨地要求系统内所有持有该副本的节点立刻将缓存销毁(作废缓存,强制转换为 Invalid (I) 态)。属于妥...