首页> 外文期刊>ACM transactions on computer systems >A General Framework for Prefetch Scheduling in Linked Data Structures and Its Application to Multi-chain Prefetching
【24h】

A General Framework for Prefetch Scheduling in Linked Data Structures and Its Application to Multi-chain Prefetching

机译:链接数据结构中预取调度的通用框架及其在多链预取中的应用

获取原文
       

摘要

Pointer-chasing applications tend to traverse composite data structures consisting of multiple independent pointer chains. While the traversal of any single pointer chain leads to the serialization of memory operations, the traversal of independent pointer chains provides a source of memory parallelism. This article investigates exploiting such interchain memory parallelism for the purpose of memory latency tolerance, using a technique called multi-chain prefetching. Previous works [Roth et al. 1998; Roth and Sohi 1999] have proposed prefetching simple pointer-based structures in a multi-chain fashion. However, our work enables multi-chain prefetching for arbitrary data structures composed of lists, trees, and arrays. This article makes five contributions in the context of multi-chain prefetching. First, we introduce a framework for compactly describing linked data structure (LDS) traversals, providing the data layout and traversal code work information necessary for prefetching. Second, we present an off-line scheduling algorithm for computing a prefetch schedule from the LDS descriptors that overlaps serialized cache misses across separate pointer-chain traversals. Our analysis focuses on static traversals. We also propose using speculation to identify independent pointer chains in dynamic traversals. Third, we propose a hardware prefetch engine that traverses pointer-based data structures and overlaps multiple pointer chains according to the computed prefetch schedule. Fourth, we present a compiler that extracts LDS descriptors via static analysis of the application source code, thus automating multi-chain prefetching. Finally, we conduct an experimental evaluation of compiler-instrumented multi-chain prefetching and compare it against jump pointer prefetching [Luk and Mowry 1996], prefetch arrays [Karlsson et al. 2000], and predictor-directed stream buffers (PSB) [Sherwood et al. 2000]. Our results show compiler-instrumented multi-chain prefetching improves execution time by 40% across six pointer-chasing kernels from the Olden benchmark suite [Rogers et al. 1995], and by 3% across four SPECint2000 benchmarks. Compared to jump pointer prefetching and prefetch arrays, multi-chain prefetching achieves 34% and 11% higher performance for the selected Olden and SPECint2000 benchmarks, respectively. Compared to PSB, multi-chain prefetching achieves 27% higher performance for the selected Olden benchmarks, but PSB outperforms multi-chain prefetching by 0.2% for the selected SPECint2000 benchmarks. An ideal PSB with an infinite Markov predictor achieves comparable performance to multi-chain prefetching, coming within 6% across all benchmarks. Finally, speculation can enable multi-chain prefetching for some dynamic traversal codes, but our technique loses its effectiveness when the pointer-chain traversal order is highly dynamic.
机译:指针跟踪应用程序倾向于遍历由多个独立的指针链组成的复合数据结构。尽管任何单个指针链的遍历都会导致内存操作的序列化,但是独立指针链的遍历提供了内存并行性的来源。本文研究了一种使用多链预取的技术,以利用这种链间内存并行性来实现内存延迟延迟。以前的作品[Roth等。 1998年; Roth and Sohi 1999]提出了以多链方式预取基于指针的简单结构的建议。但是,我们的工作允许对由列表,树和数组组成的任意数据结构进行多链预取。本文在多链预取的背景下做出了五点贡献。首先,我们引入一个框架来紧凑地描述链接数据结构(LDS)遍历,提供预取所需的数据布局和遍历代码工作信息。其次,我们提出了一种离线调度算法,用于从LDS描述符计算预取调度,该预取调度与跨独立指针链遍历的序列化缓存未命中重叠。我们的分析集中于静态遍历。我们还建议使用推测来确定动态遍历中的独立指针链。第三,我们提出了一种硬件预取引擎,该引擎可以遍历基于指针的数据结构,并根据计算出的预取时间表来重叠多个指针链。第四,我们介绍了一个通过对应用程序源代码进行静态分析来提取LDS描述符的编译器,从而实现了多链预取的自动化。最后,我们对编译器指令的多链预取进行了实验评估,并将其与跳转指针预取[Luk and Mowry 1996],预取数组[Karlsson等。 [2000],以及预测变量控制的流缓冲区(PSB)[Sherwood et al。 2000]。我们的结果表明,在Olden基准测试套件的六个指针跟踪内核中,编译器支持的多链预取将执行时间缩短了40%[Rogers等。 (1995年),在四个SPECint2000基准测试中下降了3%。与跳转指针预取和预取数组相比,对于选定的Olden和SPECint2000基准,多链预取分别实现了34%和11%的更高性能。与PSB相比,在选定的Olden基准测试中,多链预取性能提高了27%,但是在选定的SPECint2000基准中,PSB的性能比多链预取性能高0.2%。具有无限马尔可夫预测因子的理想PSB可以达到与多链预取相当的性能,在所有基准测试中均在6%以内。最后,推测可以为某些动态遍历代码启用多链预取,但是当指针链遍历顺序高度动态时,我们的技术将失去其有效性。

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号