【问题标题】:cache-related performance optimization techniques?缓存相关的性能优化技术?
【发布时间】:2023-03-18 15:28:01
【问题描述】:

关于缓存相关的性能问题有很多讨论。我有几个关于他们的问题:

  1. 可能最受欢迎的问题是cache localityfalse cache sharing。还有其他人吗?
  2. 有什么好的概述吗?
  3. 是否有任何经过验证的技术可以对抗它们?
  4. 真正存在问题的应用程序有哪些共同特征?计算密集型领域(数学/图像处理等)?高度并行的应用程序?

【问题讨论】:

  • 相对于缓存行对齐循环会有所帮助,具体取决于冲突和驱逐。不经常使用但重复使用的项目,比如占用两条缓存线,但可能适合一个缓存线,花费两倍的获取时间,每次执行获取 8 个字而不是说 2 或 3 个。要查看此操作添加或在 .text 中删除一个然后两个然后三个 nop 以强制改变整个程序的对齐方式,然后观察你的性能变化。

标签: performance optimization cpu-cache


【解决方案1】:

其中一个更有趣的是避免缓存冲突。如果您知道内存访问模式,则可以以最小化访问数据之间的缓存行冲突的方式布置访问的项目。您可以对数据和代码执行此操作。

弄清楚数据访问模式相对困难,但您可以相对容易地找出代码访问模式。给定一个调用图,构成函数体的块集,以及块之间转换频率的一些估计,您可以将代码块分配给缓存,以最大化您需要的下一个块的机会位于与当前缓存行不冲突的其他缓存行中。一个有趣的想法是,您只需分配“热”(高执行概率)的代码块;你把冷的放在哪里并不重要。 IIRC,这意味着您可以按可能执行的频率对块进行排序,然后按该顺序分配它们。

您只需要全局分析 :-} 我读到的第一个地方是,优化实际上是作为链接器的一部分实现的,这是掌握整个程序的一种方式。

我不记得任何好的概述或收集的技术集。不过,PLDI 会议往往有关于这个主题的研究论文。

【讨论】:

    猜你喜欢
    • 2013-12-11
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    • 2019-06-19
    相关资源
    最近更新 更多