CPU L1-cache的false-sharing

L1-cache加載和失效的單位是64字節;

所以2個變量挨着放,線程1和線程2雖然兩者訪問的是不同地址的變量(至少有一個線程在寫入),也會導致2個L1-cache該行不停的失效,不停的加載內存進L1-cache,導致速度損失。

解決方法:加padding,讓不同線程訪問的2個變量離得遠些,不在同一cache行。

挨着和不挨着,人家測的性能對比,損失和線程個數基本成倍數:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章