A radical approach to runtime optimization is to switch exclusively to just in time compilation of bytecode interpreted languages [Sta]. The approach is promising, but requires pervasive changes to software. The Inferno distributed operating system [WP97] is the only known mature implementation of this idea, but has not published performance numbers for high rate applications and does not target complex (multicore) computer architectures. We investigate a more moderate approach to software modification, where important computation and communication optimizations are delayed to runtime, but applications are compiled and distributed in their current form. Applications incorporate self optimizing control code in the software that manages (parallel) scheduling, memory management and communication. We show that optimization of performance critical elements can take place behind common APIs, shielding applications from the new complexity. Just in time compilation is more generic and will more easily incorporate fully heterogeneous architectures, but the pragmatic approach fits systems built from one dominant ISA supported by special purpose processors. So far, the products on shelves and in development all fall into this category.
willem 2010-02-03