2015-07-12 26 views

回答

5

首先,具有L1高速緩存並不意味着NUMA架構,主板拓撲仍然是主元件,使一個機器UMANUMA

其次,Cache Coherence協議中的使用是依賴於體系結構,並且可以不同於MESI(實際上MESIF是更適合NUMA機)。


至於你的問題

每個處理器可以連接到彼此處理器緩存。實際上,每個高速緩存一致性協議都這樣做,而不是通過允許直接讀/寫,因爲需要很多努力,重複性差

但是,可以直接將CPU連接到另一個CPU緩存,實際上它可以在Intel CPU上實現。邏輯核心(即超線程核心)可共享L2高速緩存,並且同一封裝中的一些物理核心可共享L3高速緩存。
但是這裏有兩個重要方面:第一,共享高速緩存的CPU數量很少和第二個它們位於相同的核心/程序包中。

連接所有緩存直接將失去之間是什麼的CPU,什麼是在CPU外部的邊界(作爲一個整體)。
隔離CPU讓我們創建非常可定製的模塊化系統,外部協議是一個讓我們隱藏實現細節的接口,這比通過緊密連接的高速緩存提供的速度增加更多。
當我們需要這樣的速度時,我們會建立專用集成系統組件,如coprocessor

高速緩存不直接連接的原因有很多,我不能爲行業領導者說話,但在這裏有一些通用的想法。

  1. 它不會縮放
    2個處理器意味着1個鏈接,3個處理器意味着3個鏈接,4個處理器意味着6個鏈接等等。
    n處理器需要C(n,2)鏈接即n * (n-1)/2鏈接。
    也可以只連接具有兼容緩存接口的CPU,這可能意味着只能連接相同的CPU。緩存體系結構是經常變化的東西,線條可能變得更大,結合性可能會改變,信號的定時可能更快。
    最後,如果CPU有足夠的引腳連接到另外四個CPU,則只能創建四個CPU系統。
  2. 它需要很多管腳的。
    得到安寧訪問緩存需要大量的管腳,還有每核心兩個或三個緩存和每一個需要解決的問題和控制,這需要揭露了很多針,串行接口是不是因爲這將是一種選擇太慢了。
    如果您添加了每個處理器必須相互連接,而不是引腳數量按二次方爆炸。
    如果您使用高速緩存之間的共享總線,則實際上使用的協議是MESI,該協議試圖避免擁塞總線,因爲如果您的CPU甚至很少,則共享總線上的流量非常大,等待輪到使用它的時間會減慢CPU(即使存儲緩衝區和失效隊列)。
  3. 很慢
    緩存與內核高度集成,它可能支持多個讀/寫端口和其他增加並行化的接口。如果沒有大量的引腳(並且尺寸和成本大幅增加),所有這些都無法從封裝/內核中暴露出來。
    緩存在物理上是接近的核心,這最小化傳播延遲,考慮一個3GHz的CPU的週期是1/3 * 10^-9,在該時刻的光可行進至多10釐米5釐米爲往返行程,信號不會以光速傳播。此外,只有內核訪問緩存時,設計人員可以根據內核的內部架構進行一些優化。如果內核屬於另一個可能不同的CPU,則這是不可能的。
  4. 它是複雜的
    讓高速緩存由多個CPU被訪問需要複製大量的電路,例如是高速緩存關聯的,這意味着當請求一個地址,標籤必須被一組可能的候選之間的驗證,該電路必須被複制以允許其他CPU異步讀取/寫入緩存。

所以簡單地說:它可以直接連接緩存,但它不值得分立元件。這是爲集成組件完成的。

+0

非常感謝您的回答! – user1289

相關問題