【问题标题】:Does cache align improve performance?缓存对齐会提高性能吗?
【发布时间】:2013-09-27 08:22:23
【问题描述】:

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

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

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

【问题讨论】:

标签: caching


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2012-08-13
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    相关资源
    最近更新 更多