英特尔Nehalem微架构三级缓存原理学习
英特爾Nehalem微架構包含式(Inclusive)三級緩存體系架構:
注釋:包含式(inclusive)緩存指的是該緩存中包含低級緩存中的內容。包含式三級緩存即在三級緩存中有著二級緩存數據的副本。與包含式相對立的是獨立式(exclusive)
Nehalem改進了緩存子系統
? ? Nehalem微架構的緩存子系統相比之前的Core 2架構有了極大的變化,最重要的變革來自全新的三級緩存和二級頁表緩存。
Nehalem緩存結構示意圖
? ? 一級緩存方面,每個核心依然是32KB指令緩存和32KB數據緩存,數據緩存依然是8路聯合設計。Nehalem二級緩存則大幅減小,而且不再是共享式。Nehalem每個核心擁有獨立的256KB二級緩存(即雙核處理器512KB、四核處理器1MB)。Nehalem的二級緩存擁有極低的潛伏期,不過暫時尚未有具體細節,據稱不會超過12時鐘周期。Nehalem的二級緩存并未像以前的處理器那樣使用包含式(inclusive)設計,二級緩存不再完整存儲一級緩存的內容(事實上之前的二級緩存設計亦并非強制要求絕對inclusive,盡管多數時候實際上是完整包含),不過由于它們的cache line仍然相同,所以可以在同一核心內進行數據交換(非全速)。
? ? 注釋:緩存中的數據會被分成小段進行存儲,每一段就稱為一個cache line。不同的處理器會有不同大小的cache line,例如Core 2處理器的cache line均為64Byte。只有cache line相同的緩存之間才能交換數據。
? ? Nehalem的三級緩存采用了完全包含式(Full Inclusive)設計。
????所謂完全包含式三級緩存指的是該緩存中完全存儲了更低級別的緩存(一級和二級)中的所有內容。這樣的設計缺點是三級緩存需要消耗1MB多(即一級緩存和二級緩存之和)空間用于存儲一級和二級緩存中的數據。不過相比之下,低級緩存與獨立式三級緩存進行數據交換的速度要比從包含式三級緩存中直接復制內容慢得多。
獨立式最終級緩存會造成較多的snoop traffic
????由于三級緩存是最終級緩存,因此它采用包含式或者獨立式將會影響snoop traffic(偵查緩存數據所做的性能消耗)大小。若最終級緩存采用獨立式設計,當其未命中時處理器還要逐個檢查每個核心的獨享緩存中是否有所需數據。在極端情況下,處理器可能在所有緩存中都未找到所需數據,此時開始從系統內存調用數據,這就造成了極大的效能損害。
包含式最終級緩存將snoop traffic最小化
????Nehalem采用完全包含式三級緩存作為最終級緩存就可以最大限度減少snoop traffic。因為三級緩存中有著其他緩存的數據副本,當三級緩存中未找到數據,則所有的一級和二級緩存中必然也不會有。系統此時無需再逐個檢索每個核心的獨享緩存,而是直接從系統內存調用數據。
Nehalem所采用的MESIF緩存一致性協議
????此外,Nehalem的三級緩存命中成功時,也可以扮演snoop filter的角色。盡管三級緩存中存儲了一級和二級緩存的數據備份,但從共享的三級緩存中調用數據總會比從獨享的一級和二級緩存中讀取數據慢得多。因此若一級和二級緩存中存在所需數據,自然要優先從它們中讀取。Nehalem支持MESIF緩存一致協議,在Nehalem三級緩存中的每一個cache line里,有4 bit空間(恰好針對4個核心)用來做核心確認,用于指示哪一個核心的獨享緩存里可能具有該cache line的備份。如果某個核心的確認位為0,則那個核心就不大可能具有該cache line的數據備份。若有多個核心的確認位均為1,則不會對其進行任何操作。當4個核心確認位都是0時,就不需要對核心獨享緩存做任何偵聽,處理器將直接調用三級緩存的數據。在僅有1個核心確認位是有效時,處理器才會偵聽那一個核心,從中讀取數據。完全包含式緩存和核心確認位技術的聯合使用,使得snoop traffic可以大大減少。
轉載于:https://blog.51cto.com/muyunzhe/1625259
總結
以上是生活随笔為你收集整理的英特尔Nehalem微架构三级缓存原理学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jquery 插件闭包
- 下一篇: 全战三国孙尚香怎么娶 全全半全全全半怎么