0

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

__attribute__((__aligned__(CACHE_LINE_SIZE)))

它实际上并没有提高任何性能。我们如何使用缓存对齐并衡量它的帮助?

4

1 回答 1

2

仅当数据在线程间错误共享时,缓存对齐才能提高性能。这意味着什么?如果您有 2 个字段,其中一个经常共享和更新,一个不经常共享和更新,并且它们位于同一缓存行中,则访问“冷”字段(不经常更新的字段)与访问“热”字段具有相同的惩罚一,因为“热”字段的更新使其他线程(CPU线程)整个缓存行无效,因此也使“冷”字段无效。类似的情况是两个“热”字段共享高速缓存行并彼此无效。

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

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

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

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

于 2013-09-22T09:43:31.457 回答