首页> 外文学位 >Compiler optimizations for avoiding cache conflict misses.
【24h】

Compiler optimizations for avoiding cache conflict misses.

机译:编译器优化用于避免缓存冲突未命中。

获取原文
获取原文并翻译 | 示例

摘要

Because of the ever-widening gap between CPU and memory speeds, programs must effectively utilize the memory hierarchy to attain high performance. To this end, researchers have proposed compiler transformations for improving locality such as loop permutation, loop fusion, and tiling. While these optimizations can improve cache performance for many programs, often they are ineffective due to cache conflict misses. A result of limited set associativity, conflict misses can inhibit both spatial and temporal reuse, degrading program performance. Though compiler techniques have been introduced which address conflict misses, their effectiveness has been limited because they either lack accurate methods for statically detecting conflict misses or because they do not alter the program data layout.; My thesis shows that compilers can eliminate most of the conflict misses common in regular scientific codes through data transformations directed by simple compile-time analyses. Compiler analysis may be simplified by focusing only on reference patterns most likely to cause conflict misses, providing transformations the flexibility to avoid conflict misses across entire applications. Two basic data transformations for controlling conflict misses are inter-variable padding, which adjusts variable base addresses, and intra-variable padding, which changes array dimensions sizes. Practical search strategies enable inter-variable padding algorithms to evaluate a small number of positions for each variable. Intra-variable padding algorithms pad array dimensions incrementally until conflicts are eliminated. Guided by efficient compile-time heuristics, data transformations may be used alone or in conjunction with existing locality transformations such as tiling to eliminate conflict misses.
机译:由于CPU和内存速度之间的差距越来越大,因此程序必须有效地利用内存层次结构才能获得高性能。为此,研究人员提出了用于改善局部性的编译器转换,例如循环置换,循环融合和平铺。尽管这些优化可以提高许多程序的缓存性能,但由于缓存冲突未命中,它们通常无效。集关联性有限的结果是,冲突遗漏会同时抑制空间和时间重用,从而降低程序性能。尽管已经引入了解决冲突遗漏的编译器技术,但是它们的有效性受到限制,因为它们要么缺少用于静态检测冲突遗漏的准确方法,要么因为它们不改变程序数据的布局。我的论文表明,编译器可以通过简单的编译时分析指导的数据转换,消除常规科学代码中常见的大多数冲突遗漏。可以通过仅关注最可能导致冲突遗漏的参考模式来简化编译器分析,从而为转换提供灵活性,从而避免整个应用程序发生冲突遗漏。用于控制冲突未命中的两个基本数据转换是:变量间填充(intervariable padding)和变量内填充(intravariable padding),变量间填充用于调整变量基地址,变量内填充用于改变阵列尺寸。实用的搜索策略使变量间填充算法能够为每个变量评估少量位置。变量内填充算法会增量填充阵列尺寸,直到消除冲突为止。在高效的编译时试探法的指导下,数据转换可以单独使用,也可以与现有的局部转换(例如平铺)结合使用,以消除冲突遗漏。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号