基本介紹
- 中文名:探聽過濾器
- 外文名:snoop filter
- 公司:IBM
- 出現:X3晶片組
發展過程,工作原理,
發展過程
基於馮·諾依曼架構,多核心乃至多處理器的協同工作,保持快取一致性(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。