Achieving high instruction cache performance with an optimizing compiler
ISCA '89 Proceedings of the 16th annual international symposium on Computer architecture
Profile guided code positioning
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
ATOM: a system for building customized program analysis tools
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Rewriting executable files to measure program behavior
Software—Practice & Experience
Optimally profiling and tracing programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Trace-directed program restructuring for AIX executables
IBM Journal of Research and Development
Assembling code for machines with span-dependent instructions
Communications of the ACM
Hi-index | 0.00 |
This paper describes the design and algorithms of FDPR/2 (Feedback Directed Program Restructuring of OS/2 executables), a general-purpose tool that can be used to instrument, profile, and restructure/optimize OS/2 executables for the tel x86 architecture. The optimizations delivered by FDPR/2's restructuring include improved utilization of the (instruction) memory hierarchy, improved branch alignment, and dead code elimination. These optimizations are known to be critical for object-oriented programs written in C++, and the relative performance gains observed are higher for large programs such as database engines, compilers, and debuggers that have large working sets and complex control flow. The code restructuring in FDPR/2 is performed at the basic-block granularity with the flexibility of general code motion of basic blocks across function boundaries.A full-function prototype of FDPR/2 has been developed at IBM, targeted to restructure OS/2 Intel executables and DLLs generated by the IBM Visual Age C++ compiler and linker. The performance gains delivered by FDPR/2 have been quite encouraging so far; e.g., a performance gain of about 18% has been achieved for launching and closing IPMD, the interactive debugger in Visual Age C++.An important characteristic of FDPR/2 is that it does not require any access or change to the source code of applications that it instruments or restructures. All it requires are the executables and the Dynamically Linked Libraries (DLL's) that make up an application, thus making it suitable for use by independent software vendors to optimize their applications written for the OS/2 platform and compiled by the Visual Age C++ compiler.