缓存对齐可以提高性能吗?

时间:2013-09-22 09:28:39

标签: caching

在我们的系统中,我尝试用

修改所有主要数据结构
__attribute__((__aligned__(CACHE_LINE_SIZE)))

实际上并没有改善任何表现。我们如何使用缓存对齐并衡量它的帮助?

1 个答案:

答案 0 :(得分:2)

如果跨线程共享数据,则缓存对齐仅提高性能。那是什么意思?如果你有两个字段,其中一个频繁地共享和更新,一个没有,并且它们在同一个缓存行中,然后访问“冷”字段(不经常更新的字段)与访问“热”字段相同的惩罚一,因为'hot'字段的更新使整个缓存行的其他线程(CPU线程)无效,从而也使'cold'字段无效。类似的情况是两个“热”字段共享缓存行并使彼此无效。

对于其他情况,缓存对齐不会提高性能,实际上可能会通过增加数据大小来损害性能。

要考虑您需要的缓存对齐:

  • 并发
  • 热门数据(频繁的InterlockCompareExchange或类似的操作)
  • 缓存行中的其他一些数据(热或冷,取决于用例)

我推荐Scott Meyer的演讲CPU Caches and Why You Care