Extending value reuse to basic blocks with compiler support

Jian Huang, David J. Lilja

Research output: Contribution to journalArticle

23 Scopus citations

Abstract

Speculative execution and instruction reuse are two important strategies that have been investigated for improving processor performance. Value prediction at the instruction level has been introduced to allow even more aggressive speculation and reuse than previous techniques. This study suggests that using compiler support to extend value reuse to a coarser granularity than a single instruction, such as a basic block, may have substantial performance benefits. We investigate the input and output values of basic blocks and find that these values can be quite regular and predictable. For the SPEC benchmark programs evaluated, 90 percent of the basic blocks have fewer than four register inputs, five live register outputs, four memory inputs, and two memory outputs. About 16 to 41 percent of all the basic blocks are simply repeating earlier calculations when the programs are compiled with the -O2 optimization level in the GCC compiler. Compiler optimizations, such as loop-unrolling and function inlining, affect the sizes of basic blocks, but have no significant or consistent impact on their value locality, nor the resulting performance. Based on these results, we evaluate the potential benefit of basic block reuse using a novel mechanism called the block history buffer. This mechanism records input and live output values of basic blocks to provide value reuse at the basic block level. Simulation results show that using a reasonably sized block history buffer to provide basic block reuse in a 4-way issue superscalar processor can improve execution time for the tested SPEC programs by 1 to 14 percent, with an overall average of 9 percent when using reasonable hardware assumptions.

Original languageEnglish (US)
Pages (from-to)331-347
Number of pages17
JournalIEEE Transactions on Computers
Volume49
Issue number4
DOIs
StatePublished - Apr 1 2000

Keywords

  • Block history buffer
  • Block reuse
  • Compiler flow analysis
  • Value locality
  • Value reuse

Fingerprint Dive into the research topics of 'Extending value reuse to basic blocks with compiler support'. Together they form a unique fingerprint.

  • Cite this