词条 | snoop filter |
释义 | 简介 snoop FilterSnoopFilter(探听过滤器)这一技术早期出现在IBM自己开发的X3芯片组中,随后英特尔Blackford芯片组中也引入了该功能。SnoopFilter的设计初衷是对于基于FSB前端总线架构的系统频繁的Snoop操作进行缓存、性能优化,缓解前端总线的通信压力,从而改善系统性能。 发展过程基于冯·诺依曼架构,多核心乃至多处理器的协同工作,保持缓存一致性(CacheCoherent)是很自然也是很合理的要求(不保持缓存一致性的话需要在对软件做出很大的改动),在现存主流的两种x86多处理器架构中,具有两种缓存一致性方案:AMDOperton和Nehalem代表的ccNUMA架构使用的DirectoryCacheCoherent,以及Nehalem-EP之前的Xeon代表的统一总线架构采用的Snoop操作。 工作原理在统一总线架构中,一个处理器的所有操作都可以被其他处理器看到,因此处理器可以利用一种叫做Snoop(侦听)的操作来监视总线上的缓存操作指令,当侦听到其他处理器的操作涉及到本处理器上的共享缓存页面的时候,就可以进行相关的操作来保持缓存一致性(通常,就是使本地的缓存页面变为Invalid无效)。 Snoop Filter(探听过滤器)运行示意图 单条总线上的Snoop操作很好处理,每一个处理器/处理内核都自行Snoop,然而在多条FSB总线下,Snoop操作需要总线之间转发所有的消息,随着处理器的增多,总线的负荷就越来越大(这也是Hub让位于Switch的原因之一),因此就导致了SnoopFilter出现。 从上图中我们可以看到,搭建在FSB之间的CoherencyEngine(一致性处理引擎)管理着一个大的表格,记录着不同总线/不同处理器之间的缓存页面——事实上,Snoop缓存的是CPU二级缓存的标签和状态等信息,并对总线之间的转发进行控制,从而降低总线上的交通量,起到提升处理效率的目的。由于要协调多个处理器之间缓存的一致性,因此SnoopFilter缓存的容量要大于或等于所有处理器二级缓存容量之和才能发挥最佳的作用。从而,Intel5000X的SnoopFilter缓存容量为16MB(每个Intel5400Xeon的L2缓存容量8MB,两个处理器就是16MB),5400芯片组中Snoop Filter更是增加到了24MB。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。