Using hyperprediction to compensate for delayed updates in value predictors

Q. Zhao, S. J. Lee, D. J. Lilja

Research output: Contribution to journalArticlepeer-review

1 Scopus citations


Value prediction has been proposed as a technique to break true data dependences in order to increase the instruction-level parallelism available in programs. Recent work has pointed out, however, that the delay inherent in updating the value prediction table with the actual correct value can introduce a substantial number of wrong value predictions, which can then decrease the overall processor performance. The authors propose and systematically study a technique that they call 'hyperprediction' to compensate for the delay in updating the value prediction table. This approach accurately computes and records the number of outstanding instances of an instruction, which is the number of times an instruction has requested a value to be predicted since the last time the corresponding entry in the value prediction table was updated. With this information, the value predictor can provide reliable predictions for the currently requesting instance of an instruction based on both the currently stored value and the number of outstanding instances. They show how the hyperprediction technique can be implemented in a stride value predictor, a context-based predictor and a hybrid predictor. Their simulations using an extension to the SimpleScalar tool set and integer and floating-point programs from the SPEC95 and SPEC2000 benchmark suites indicate that this technique can consistently improve both the value prediction accuracy and the overall processor performance for each of the different types of value predictors.

Original languageEnglish (US)
Pages (from-to)596-608
Number of pages13
JournalIEE Proceedings: Computers and Digital Techniques
Issue number5
StatePublished - Sep 2005


Dive into the research topics of 'Using hyperprediction to compensate for delayed updates in value predictors'. Together they form a unique fingerprint.

Cite this