比方說,4個線程在多核x86處理器的4個獨立內核上運行,並且它們不共享任何數據,是否可以編程使4內核使用共享L2高速緩存的單獨和預定義部分。是否有可能將部分共享L2高速緩存分配給不同的內核
6
A
回答
2
讓我們使用兩個術語,專用和共享緩存來代替L1,L2,L3,L4緩存。不同的CPU系列開始在不同級別共享緩存。在所提出的術語中,最初的問題是 - 是否有可能將共享緩存拆分爲各個部分,每個部分將僅由其中一個CPU /內核使用?沒有明確的答案。此外還有兩個相反的答案。
1)首先和一般答案:否。高速緩存是由硬件設計管理的。在軟件中只有很少的控制桿可以訪問,例如整個內存的啓用/禁用緩存或定義的內存區域,應用指定策略進行緩存刷新(寫入/回寫)。基本上沒有,因爲它被設計爲用硬件來管理。所以沒有有用的界面可以在軟件中正常管理它。
2)第二個答案:是的。實際上,高速緩存的設計方式是,每一行高速緩存都可以從指定的一組內存行中保存數據。由於這種情況,如果內存管理器提供保證,即一個CPU /內核具有相同的CPU並且使用分配給相同緩存線的所有內存線,則內存管理器爲該緩存線提供保證,該緩存線將被該CPU獨佔使用。這是一個非常棘手的解決方法。它具有非常有限的好處,並且具有嚴重的缺點:內存佈局非常分散,緩存使用不平衡,存儲管理複雜,非常依賴硬件(詳情可以在「MetallicPriest」提供的論文中找到)。
簡歷:理論上可能,實踐上幾乎不可能。
相關問題
- 1. C#共享內存高速緩存
- 2. 共享內存中高速緩存
- 3. 共享內存不能分配?
- 4. CUDA:共享內存分配
- 5. 高速緩存是否適用於部分加載的文件?
- 6. 是否可以將二維數組作爲共享內存與IPC分配?
- 7. CUDA內核內部的內存分配
- 8. 在c/C++中的CPU緩存中分配靜態內存:是否有可能?
- 9. CUDA編程 - L1和L2高速緩存
- 10. 開普勒L2高速緩存
- 11. 集羣共享高速緩存
- 12. 多核英特爾CPU如何共享高速緩存?
- 13. 高速緩存控制器從主內存到L2高速緩存的讀取時間有多少個字節?
- 14. CUDA中的共享內存分配
- 15. 什麼是內核部分不匹配?
- 16. DataNucleus將 - L1高速緩存,分離
- 17. 是否有可能將CssClass分配給CheckBoxList中的CheckBox
- 18. 共享內存在哪裏分配?
- 19. GPU 2D共享內存動態分配
- 20. Linux共享內存分配行爲
- 21. 分配共享內存時出錯
- 22. 數據分配和共享內存
- 23. 在共享內存中分配對象
- 24. 是否有可能「延長」共享內存的使用壽命?
- 25. 緩存動態頁面/排除高速緩存中的部分
- 26. R將函數調用分配給兩個不同的內核
- 27. 的Linux slab分配器和高速緩存性能
- 28. 是否有可能在給定的基地在MSVC/VC++中分配內存?
- 29. C++:將不同部分的輸入分配給不同變量
- 30. CUDA性能:分支和共享內存
這裏是關於這個主題的一篇有趣的論文,http://www.eecg.toronto.edu/~tamda/papers/softpart.pdf – MetallicPriest
我特別喜歡術語*問題* ... ;-) – Axel
哦,我沒有看到拼寫檢查的建議是有問題的,當我鍵入編程,LOL! – MetallicPriest