天天看點

關于 L3 緩存行 cacheLIne 的研究!還是對程式有舉足輕重的作用!

 https://www.cnblogs.com/PurpleTide/archive/2010/11/25/1887506.html 

CLR via C# 讀書筆記 2-3 Cache Lines and False Sharing(高速緩沖區和錯誤共享???)

關于CPU中緩存行的問題。 volatile 修飾的字段 會 lock 整個緩存行,而 每個緩存行占用64KB ,老的CPU32KB。。

是以class A{ int a ,int b} 如果A.a 被線程1 修改, 線程2 就無法修改以及通路 A.b ,直到A.a被線程1修改完成 再次寫入記憶體 ,

線程2 才能通路 記憶體中的A.b ,這就是 記憶體鎖定(跟CPU中L3緩存中的緩存行鎖定是同步的。

是以 一個類最好 set 記憶體布局,int a 占用64個位元組,int b 偏移64個位元組後存放。這樣就能 a ,b 字段 各占用一個 L3 緩存行。不同線程讀寫a,b 時無需等待另一個線程讀寫完畢。

 https://blog.csdn.net/sprayabc/article/details/8658369 

以下是最最最長盡的多核CPU 以及L3緩存的緩存行,設計過程。

 https://www.cnblogs.com/jokerjason/p/9584402.html 

繼續閱讀