关于缓存相关的性能问题有很多嗡嗡声。我有几个问题:
答案 0 :(得分:4)
其中一个更有趣的方法是避免缓存冲突。如果您知道内存访问模式,则可以以最小化所访问数据之间的缓存线冲突的方式布置所访问的项目。您可以为数据和代码执行此操作。
确定数据访问模式相对比较困难,但您可以相对轻松地找出代码访问模式。给定一个调用图,组成函数体的块集,以及块之间转换频率的一些估计,您可以将代码块分配给缓存,以最大化您需要的下一个块的机会在其他一些与当前缓存行不冲突的缓存行中。一个有趣的想法是你只需要分配“热”的代码块(高执行概率);放冷的地方并不重要。 IIRC,这意味着您可以按可能执行的频率对块进行排序,然后按顺序分配它们。
你只需要一个全局分析: - }我读到的第一个地方,optimizatoin实际上是作为链接器的一部分实现的,这是一种掌握整个程序的方法。
我不记得任何好的概述或收集的技术集。不过,PLDI会议往往会有关于这个主题的研究论文。