Implementation of Trace Optimization and Investigation of Advanced Load Optimization in ADORE
Date of Submission:
July 20, 2005
Dynamic optimizers endeavor to speed up program execution by performing runtime optimization based on knowledge of the program collected at runtime. Depending on the type of optimization applied, the dynamic instruction count(IC) or the cycles per instruction (CPI) of the program can be targeted for improvement. This report presents two such sets of optimizations, the first targeting dynamic instruction count and the second targeting CPI through data cache based optimizations. The first set of trace optimizations presented, target the instruction count of the program and consist of copy and constant propagation, partial dead code elimination and store copy propagation. The implementation, optimization issues and performance of these optimizations is discussed in the former half of the report. The latter half of the report concentrates on a new kind of dynamic optimization called advanced load optimization. This optimization strives to improve data cache performance by targeting short latency loads that cannot be targeted using pre-fetch instructions. The motivation and implementation strategies for this optimization are presented. The use of dynamic instrumentation to gather additional runtime information and track optimizations is also presented in this context. Trace optimizations are not found to be very beneficial in speeding up already optimized SPEC code further. However as proof of concept, in contrived cases where partial dead code does exist, these optimizations are shown to be promising. The advanced load optimization looks promising but needs more implementation before the more advanced strategies can be tried.