【24h】

Improving the Performance of Trace-based Systems by False Loop Filtering

机译:通过伪循环过滤提高基于跟踪的系统的性能

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

摘要

Trace-based compilation is a promising technique for language compilers and binary translators. It offers the potential to expand the compilation scopes that have traditionally been limited by method boundaries.rnDetecting repeating cyclic execution paths and capturing the detected repetitions into traces is a key requirement for trace selection algorithms to achieve good optimization and performance with small amounts of code. One important class of repetition detection is cyclic-path-based repetition detection, where a cyclic execution path (a path that starts and ends at the same instruction address) is detected as a repeating cyclic execution path.rnHowever, we found many cyclic paths that are not repeating cyclic execution paths, which we call false loops. A common class of false loops occurs when a method is invoked from multiple call-sites. A cycle is formed between two invocations of the method from different call-sites, but which does not represent loops or recursion. False loops can result in shorter traces and smaller compilation scopes, and degrade the performance.rnWe propose false loop filtering, an approach to reject false loops in the repetition detection step of trace selection, and a technique called false loop filtering by call-stack-comparison, which rejects a cyclic path as a false loop if the call stacks at the beginning and the end of the cycle are different.rnWe applied false loop filtering to our trace-based Java™ JIT compiler that is based on IBM's J9 JVM. We found that false loop filtering achieved an average improvement of 16% and 10% for the DaCapo benchmark when applied to two baseline trace selection algorithms, respectively, with up to 37% improvement for individual benchmarks. In the end, with false loop filtering, ourrntrace-based JIT achieves a performance comparable to that of the method-based J9 JVM/JIT using the corresponding optimization level.
机译:基于跟踪的编译对于语言编译器和二进制翻译器是一种很有前途的技术。它提供了扩展传统上受方法边界限制的编译范围的潜力。检测重复的循环执行路径并将捕获的重复捕获到跟踪中是跟踪选择算法以少量代码实现良好优化和性能的关键要求。一类重要的重复检测是基于循环路径的重复检测,其中将循环执行路径(在同一指令地址处开始和结束的路径)检测为重复循环执行路径。然而,我们发现许多循环路径没有重复循环执行路径,我们称之为虚假循环。当从多个调用站点调用方法时,会发生常见的错误循环类。在来自不同调用位置的两次方法调用之间形成一个循环,但是不代表循环或递归。错误循环会导致更短的跟踪和更小的编译范围,并降低性能。我们提出了错误循环过滤,一种在跟踪选择的重复检测步骤中拒绝错误循环的方法,以及一种通过调用堆栈进行错误循环过滤的技术。比较,如果循环的开始和结束处的调用堆栈不同,则将循环路径拒绝为虚假循环。我们对基于跟踪的Java™JIT编译器(基于IBM J9 JVM)应用了虚假循环过滤。我们发现,在将DaCapo基准测试应用于两种基准线迹选择算法时,错误环路滤波分别实现了16%和10%的平均改进,单个基准测试最多可提高37%。最后,通过错误循环过滤,基于ourrntrace的JIT使用相应的优化级别可实现与基于方法的J9 JVM / JIT相当的性能。

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号