Skip to Main Content
Traversal through a Linked Data Structure (LDS) in applications encounters heavy cache misses and severe performance degradation. Due to tight load-load dependences in LDS traversal, the chance of overlapping the cache misses in exploiting the memory-level parallelism is slim. Furthermore, the irregularity of the missing block addresses makes it difficult for accurate data prefetching without recording a huge miss history. In this paper, we present a semantics-aware approach to dynamically identify pointer links in each node for traversal to the next node. Accurate LDS prefetching based on the node semantics can be accomplished with minimum history information. In addition, we evaluate three hardware-based leap prefetching methods to timely fetch the nodes further ahead in the traversal path for overcoming the lateness in LDS prefetching. Performance evaluations based on LDS intensive applications show that with an integrated stream/stride prefetcher, semantics-aware prefetcher improves performance over without prefetching by 45%. In comparison with the stream prefetcher, a dependence-based prefetcher, and a content-directed prefetcher, the average improvement is 20%, 16%, and 23% respectively.