【问题标题】:Fewer cache misses with TLS?使用 TLS 减少缓存未命中?
【发布时间】:2012-07-05 19:00:37
【问题描述】:

如果我在我的多线程程序中使用线程本地存储,我的缓存未命中率会减少吗?

编辑: 由于每个线程都有自己的内存池,最后访问的内存是否更有可能仍在 CPU 缓存中?

【问题讨论】:

标签: c++ multithreading thread-local-storage


【解决方案1】:

缓存未命中少于

TLS 只是确保不同线程对不同数据进行操作的众多方法之一(显而易见的一种是将每个线程的数据放在自己的堆栈中)。

如果您的线程不写入相同的数据(因为这将使所有其他内核的相应缓存行无效),您将获得更好的缓存行为,但是您使用哪种方法来确保线程对不同的数据进行操作在这方面是无关紧要的。

(不过,还有其他与 TLS 相关的开销。它不是魔法,也不是灵丹妙药。大多数情况下,这是错误的解决方案)

【讨论】:

    【解决方案2】:

    不,因为缓存并没有真正按照线程池大小进行组织,它们的工作独立于您正在考虑的选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-20
      • 2010-10-02
      • 1970-01-01
      • 2017-04-05
      • 2015-04-30
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多