Characterization of Load Address Idioms with Implications for Address Prediction

No Thumbnail Available

Date

2008-12-03

Journal Title

Series/Report No.

Journal ISSN

Volume Title

Publisher

Abstract

Address prediction is used to break the dependencies between instructions which generate addresses and the loads using those addresses. Once this dependence is removed, the load can access memory, speculatively, at an earlier time, potentially overlapping the load's execution with other computation. Address predictors take advantage of common patterns evident in the address streams of loads. Last-address, stride, and context predictors exploit constant address values, numerically increasing or decreasing address values, or arbitrary sequences of address values that repeat, respectively. These predictors perform well because programmer-defined data structures typically manifest these patterns. Current address predictors do not achieve perfect accuracy, however. To design better predictors in the future, research is needed to better understand the characteristics of address computation. This thesis provides a formal characterization of data structure accesses. My approach is to classify address computation by detecting the data structures explicitly, without relying on finding patterns in the values of the addresses themselves. With this approach, I find that, on average, about 27% of dynamic loads access global variables, 13% iterate over arrays, and 3% traverse linked data structures. These loads will be confidently predicted with last-address, stride, and context predictors, respectively. I categorize the remaining loads based on the instructions that are the sources of the backward slice of the address operand. I can then measure how many of these loads have their addresses formed in similar ways, the number and nature of instructions which are starting points of the backward slice, and the length of the backward slice. Implementable prediction mechanisms are beyond the scope of this work. However, several prediction strategies are suggested in this thesis which are based on insights gained from this address computation characterization. One approach is to detect loads that explicitly access global variables, explicitly stride through arrays, or explicitly traverse linked data structures, and steer them to the corresponding predictor (last-address, stride, or context, respectively). The remaining loads that access data structures in an arbitrary manner can be directed to a predictor that is based on trace reuse. For future work, I plan to leverage and expand this study to develop novel, accurate, and efficient address prediction mechanisms, and confidence estimators.

Description

Keywords

address prediction, load speculation, load classification, load address characterization

Citation

Degree

MS

Discipline

Computer Engineering

Collections