The Morph Project

Late Code Modification

Division of Engineering and Applied Sciences

In the Morph Project we are exploring new ways to understand and improve the performance of computer systems through late-code modification, in which we interpose an additional phase of optimization between the time an executable module is produced by the linker and when the instructions are actually executed on the CPU. Morph permits executable programs to be re-optimized ("morphed") to apply profile-based and other platform specific optimizations. Our goal in doing so is to change executable programs from a dead-end into a resource that permits an unlimited number of updates and re-optimizations.

  • The Morph Testbed

  • Instrumentation and Optimization of WIN32/Intel Executables with Etch

  • Just-in-time Code Layout

  • The Morph Testbed

    In the Morph testbed we are exploring systems and compiler techniques which will make it possible to apply the results of accurate performance measurements proactively. The Morph testbed will make feedback-based optimizations practical and automatic. As a part of achieving this goal, we have implemented a continuous monitoring system which collects profile information with overhead of less than 1%. The profile information is used by a suite of optimizations which are applied automatically by the Morph system. Our optimization system is based on Machine SUIF.

    Morph technology will make it easy to apply precise performance measurement information directly to improve the performance of executable programs. Obtaining and understanding such information is the goal of our project on Understanding Behavior of Commodity Software Systems.


  • Brad Chen
  • Mike Smith
  • Students

  • Nick Gloy
  • Zheng Wang
  • Catherine Zhang
  • Publications

  • System Support for Automatic Profiling and Optimization. HTML, PDF(163KB).
    A version of this paper will appear in the 16th ACM Symposium on Operating System Principles.
  • Technical report: Profile-Based Optimizations with Statistical Profiles.
  • A poster describing the MORPH project

  • Instrumentation and Optimization of WIN32/Intel Executables with Etch

    Etch is an application program performance evaluation and optimization system, developed for Intel x86 platforms running the Windows/NT operating system. The system allows you annotate existing binaries with arbitrary instructions (for example, to trace, or perform coverage analysis), or to rewrite an existing binary so that it executes more efficiently.

    Etch is a joint project between University of Washington and Harvard.

  • The Etch home page at the University of Washington.
  • A poster describing Etch,

  • Just-In-Time Code Layout

    Just-In-Time code layout (JITCL) is a new method for improving the locality of an instruction reference stream by selecting the order of procedures in the text segment during program execution. By determining procedure placement dynamically, this method provides an optimized procedure layout without requiring profile data. We have found that JITCL can provide improvements in instruction cache performance comparable to profile-based layout strategies, while avoiding the requirement of profile data. The late nature of this optimization makes it possible to implement procedure orderings that cross executable and DLL boundaries, overcoming a limitation of current profile-based techniques. We are using Etch to explore the benefit of inter-module JITCL for Win32 applications on Windows NT.

    Improving Instruction Locality with Just-In-Time Code Layout, to appear in The 1997 USENIX Windows NT Workshop.

    J. Bradley Chen (