关于缓存相关的性能问题有很多嗡嗡声.我有几个问题: 可能最受欢迎的问题是cache locality和false cache sharing.还有其他问题吗? 任何好的概述? 有没有经过验证的技术来对抗它们? 什么
>可能最受欢迎的问题是cache locality和false cache sharing.还有其他问题吗?
>任何好的概述?
>有没有经过验证的技术来对抗它们?
>什么是应用程序的常见特征,它们是真正的问题?计算密集型领域(数学/图像处理等)?高度并行的应用程序?
确定数据访问模式相对比较困难,但您可以相对容易地找出代码访问模式.给定一个调用图,组成函数体的块集,以及块之间转换频率的一些估计,您可以将代码块分配给缓存,以最大化您需要的下一个块的机会在其他一些与当前缓存行不冲突的缓存行中.一个有趣的想法是你只需要分配“热”的代码块(高执行概率);放冷的地方并不重要. IIRC,这意味着您可以按可能执行的频率对块进行排序,然后按顺序分配它们.
你只需要一个全局分析: – }我读到的第一个地方,optimizatoin实际上是作为链接器的一部分实现的,这是一种让你掌握整个程序的方法.
我不记得任何好的概述或收集的技术集.不过,PLDI会议往往会有关于这个主题的研究论文.