首页> 外文期刊>Journal of Computer Science & Technology >Runtime Engine for Dynamic Profile Guided Stride Prefetching
【24h】

Runtime Engine for Dynamic Profile Guided Stride Prefetching

机译:动态配置文件引导的跨步预取的运行时引擎

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

摘要

Stride prefetching is recognized as an important technique to improve memory access performance. The prior work usually profiles and/or analyzes the program behavior offline, and uses the identified stride patterns to guide the compilation process by injecting the prefetch instructions at appropriate places. There are some researches trying to enable stride prefetching in runtime systems with online profiling, but they either cannot discover cross-procedural prefetch opportunity, or require special supports in hardware or garbage collection. In this paper, we present a prefetch engine for JVM (Java Virtual Machine). It firstly identifies the candidate load operations during just-in-time (JIT) compilation, and then instruments the compiled code to profile the addresses of those loads. The runtime profile is collected in a trace buffer, which triggers a prefetch controller upon a protection fault. The prefetch controller analyzes the trace to discover any stride patterns, then modifies the compiled code to inject the prefetch instructions in place of the instrumentations. One of the major advantages of this engine is that, it can detect striding loads in any virtual code places for both regular and irregular code, not being limited with plain loop or procedure scopes. Actually we found the cross-procedural patterns take about 30% of all the prefetchings in the representative Java benchmarks. Another major advantage of the engine is that it has runtime overhead much smaller (the maximal is less than 4.0%) than the benefits it brings. Our evaluation with Apache Harmony JVM shows that the engine can achieve an average 6.2% speed-up with SPECJVM98 and DaCapo on Intel Pentium 4 platform, in spite of the runtime overhead.
机译:跨步预取被认为是提高内存访问性能的重要技术。先前的工作通常离线分析和/或分析程序行为,并使用识别的步幅模式通过在适当位置注入预取指令来指导编译过程。有一些研究试图通过在线性能分析在运行时系统中实现跨步预取,但是它们要么无法发现跨过程的预取机会,要么需要硬件或垃圾收集方面的特殊支持。在本文中,我们介绍了用于JVM(Java虚拟机)的预取引擎。它首先在即时(JIT)编译期间识别候选加载操作,然后对已编译的代码进行检测以分析这些加载的地址。运行时配置文件收集在跟踪缓冲区中,该跟踪缓冲区在出现保护故障时触发预取控制器。预取控制器分析跟踪以发现任何跨步模式,然后修改编译后的代码以注入预取指令代替仪器。该引擎的主要优点之一是,它可以检测常规和不规则代码在任何虚拟代码位置中的步态负载,而不受普通循环或过程范围的限制。实际上,我们发现跨过程模式占据了代表性Java基准测试中所有预取的大约30%。该引擎的另一个主要优点是它的运行时开销比它带来的好处小得多(最大值小于4.0%)。我们对Apache Harmony JVM的评估表明,尽管运行时开销很大,但该引擎在Intel Pentium 4平台上使用SPECJVM98和DaCapo仍可以平均提高6.2%的速度。

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号