This paper presents a hardware-based dynamic optimizer that continuously optimizes an application’s instruction stream. In continuous optimization, dataflow optimizations are performed using simple, table-based hardware placed in the rename stage of the processor pipeline. The continuous optimizer reduces computation tree height by performing constant propagation, reassociation, redundant load elimination, and store forwarding. To enhance the impact of the optimizations, the optimizer integrates values generated by the execution units back into the optimization process. Continuous optimization allows instructions with input values known at optimization time to be executed in the optimizer, leaving less work for the out-of-order portion of the pipeline. This feature can detect branch mispredictions earlier and thus reduce the misprediction penalty. In this paper, we present a detailed description of the hardware optimizer and evaluate it in the context of a contemporary microarchite...
Brian Fahs, Todd M. Rafacz, Sanjay J. Patel, Steve