2013-04-02 22 views
6

比方說,4個線程在多核x86處理器的4個獨立內核上運行,並且它們不共享任何數據,是否可以編程使4內核使用共享L2高速緩存的單獨和預定義部分。是否有可能將部分共享L2高速緩存分配給不同的內核

+3

這裏是關於這個主題的一篇有趣的論文,http://www.eecg.toronto.edu/~tamda/papers/softpart.pdf – MetallicPriest

+0

我特別喜歡術語*問題* ... ;-) – Axel

+0

哦,我沒有看到拼寫檢查的建議是有問題的,當我鍵入編程,LOL! – MetallicPriest

回答

2

讓我們使用兩個術語,專用和共享緩存來代替L1,L2,L3,L4緩存。不同的CPU系列開始在不同級別共享緩存。在所提出的術語中,最初的問題是 - 是否有可能將共享緩存拆分爲各個部分,每個部分將僅由其中一個CPU /內核使用?沒有明確的答案。此外還有兩個相反的答案。

1)首先和一般答案:否。高速緩存是由硬件設計管理的。在軟件中只有很少的控制桿可以訪問,例如整個內存的啓用/禁用緩存或定義的內存區域,應用指定策略進行緩存刷新(寫入/回寫)。基本上沒有,因爲它被設計爲用硬件來管理。所以沒有有用的界面可以在軟件中正常管理它。

2)第二個答案:是的。實際上,高速緩存的設計方式是,每一行高速緩存都可以從指定的一組內存行中保存數據。由於這種情況,如果內存管理器提供保證,即一個CPU /內核具有相同的CPU並且使用分配給相同緩存線的所有內存線,則內存管理器爲該緩存線提供保證,該緩存線將被該CPU獨佔使用。這是一個非常棘手的解決方法。它具有非常有限的好處,並且具有嚴重的缺點:內存佈局非常分散,緩存使用不平衡,存儲管理複雜,非常依賴硬件(詳情可以在「MetallicPriest」提供的論文中找到)。

簡歷:理論上可能,實踐上幾乎不可能。