ACM Home Page
Please provide us with feedback. Feedback
A general framework for prefetch scheduling in linked data structures and its application to multi-chain prefetching
Full text PdfPdf (2.45 MB)
Source ACM Transactions on Computer Systems (TOCS) archive
Volume 22 ,  Issue 2  (May 2004) table of contents
Pages: 214 - 280  
Year of Publication: 2004
ISSN:0734-2071
Authors
Seungryul Choi  University of Maryland, College Park, MD
Nicholas Kohout  EVI Technology LLC, Columbia, MD
Sumit Pamnani  Advanced Micro Devices, Inc., Austin, TX
Dongkeun Kim  University of Maryland, College Park, MD
Donald Yeung  University of Maryland, College Park, MD
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 5,   Downloads (12 Months): 84,   Citation Count: 1
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/986533.986536
What is a DOI?

ABSTRACT

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.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
 
2
Burger, D. and Austin, T. M. 1997. The SimpleScalar tool set, version 2.0. Tech. rep. CS TR 1342, University of Wisconsin-Madison, Madison, WI.
3
 
4
Charney, M. J. and Reeves, A. P. 1995. Generalized correlation based hardware prefetching. Tech. rep. EE CEG 95--100.
 
5
 
6
 
7
 
8
9
10
11
 
12
13
14
 
15
Karlsson, M., Dahlgren, F., and Stenstrom, P. 2000. A prefetching technique for irregular accesses to linked data structures. In Proceedings of the 6th International Conference on High Performance Computer Architecture (Toulouse, France). ACM Press, New York, NY.
16
17
 
18
 
19
20
21
22
 
23
Lyle, J. R. and Wallace, D. R. 1997. Using the unravel program slicing tool to evaluate high integrity software. In Proceedings of 10th International Software Quality Week.
24
25
26
 
27
 
28
29
30
31
32
 
33
34
 
35
 
36
37
38
39


Collaborative Colleagues:
Seungryul Choi: colleagues
Nicholas Kohout: colleagues
Sumit Pamnani: colleagues
Dongkeun Kim: colleagues
Donald Yeung: colleagues