CPU L1-cache的false-sharing

L1-cache加載和失效的單位是64字節; 所以2個變量挨着放,線程1和線程2雖然兩者訪問的是不同地址的變量(至少有一個線程在寫入),也會導致2個L1-cache該行不停的失效,不停的加載內存進L1-cache,導致速度損失。 解決方法:加padding,讓不同線程訪問的2個變量離得遠些,不在同一cache行。 挨着和不挨着,人家測的性能對比,損失和線程個數基本成倍數:
相關文章
相關標籤/搜索