關於 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 html

相關文章
相關標籤/搜索