Compiler-directed Computation Reuse (CCR) enhances program execution
speed and efficiency by eliminating dynamic computation redundancy.
In the CCR approach, the compiler designates large program regions for
potential reuse. During run time, the execution results of these
reusable regions are recorded into hardware buffers for future
reuse. Previous work shows that CCR can result in significant
performance enhancements in general applications. A major limitation
of the work is that the compiler relies on value profiling to identify
reusable regions, making it difficult to deploy the
scheme in many software production environments.
This paper presents a
new hardware model that alleviates the need for
value profiling at compile time. The compiler is allowed to designate
reusable regions that may prove to be inappropriate. The hardware
mechanism monitors the dynamic behavior of compiler-designated regions
and selectively activates the profitable ones at run time. Experimental
results show
that the proposed design makes more effective utilization of hardware
buffer resources, achieves rapid employment of computation regions,
and improves reuse accuracy, all of which promote more flexible
compiler methods of identifying reusable computation regions.
Results also indicate that even a modest hardware monitoring
mechanism can greatly increase the benefit of the CCR approach.