Research Themes

Modern languages for modern architectures

The performance of modern programming languages such as Java and C# lags that of imperative  languages such as C and Fortran.  A significant source of the performance gap is poor memory behavior, which future computer architectures will exacerbate.  This project addresses the problem of poor memory behavior in modern programming languages such as Java and C# through an integrated attack that incorporates new garbage collection algorithms, run-time techniques that optimize running programs, and new compiler analyses with both static and dynamic optimizations.

DaCapo: Dynamic Cooperative Performance Optimization for Java

The DaCapo project takes a co-operative approach to performance optimization, looking at the compiler, runtime, memory management system and operating system together.  My work with the DaCapo project has focussed on memory management and has lead to a number of publications. DaCapo is an NSF large ITR project, funded from Sept 2000 through to 2005.  I have been involved in the project since its inception, taking a lead role in the memory management facets of the project. From September 1999 to March 2002 I was a post-doc at the University of Massachusetts.

Upside: Practical transactional object storage systems

From August 1997 to August 1999, I lead the upside project within the Advanced Server Technologies program of the ACSys CRC for advanced computational systems (on the campus of the ANU, in Canberra, Australia).  Our research was primarily focused on the design of scalable transactional object storage systems, particularly with a view to supporting scalable orthogonally persistent systems. This work produced a number of publications, particulary in the area of orthogonal persistence, transactions, and scalable object storage systems. We developed a very powerful bytecode transformation tool which allowed us to make arbitary Java programs orthogonally persistent without change to the source code.  This was achieved by transforming the bytecodes at class loading time.  We also developed an object store than included a novel recovery mechanism that extended the widely used ARIES algorithm by avoiding the need for recovery meta-data to be interspersed on data pages.

Scalable persistent system design

In July 1997 I completed my PhD with a dissertation titled "Persistent Store Interface: A foundation for scalable persistent system design".  This work lead to a number of publications and to the creation of the upside  project.  I formally graduated from the ANU in October 1998.  My advisor was Robin Stanton. The following is a brief summary of the work, extracted from the thesis abstract:

The quest to design efficient, scalable, orthogonally persistent systems represents a confluence of the challenge of constructing systems capable of scaling, with the challenge of constructing orthogonally persistent systems.  This raises the deeper question as to whether there exists a generalized framework for scalable persistent system design.  This project develops a framework that brings together the fundamental concerns of concurrency, replication, coherency, latency, and stability.  The major result of this project is the description of such a framework.  The fundamental concerns are met through a reference architecture based on caching, atomicity, and a layered software architecture.  The framework has been realized in the form of the Persistent Store Interface (PSI).  The effectiveness of PSI for scalable persistent system construction is demonstrated through a number of experiments with PSI prototypes, both stand-alone and distributed.  In addition, two supporting experiments are described, one examining the issues of designing scalable stores that present users with a single store image and the other examining mechanisms for scalable coherency and recovery.

Image processing

My undergraduate studies were in Electrical Engineering and Computer Science (BE/BSc) at the University of New South Wales. My honours thesis was on the real-time encoding of region boundaries in images, and resulted in two publications. The key insight was in the development of a raster-scan algorithm capable of extracting the boundaries of multispectral images.  Prior to this work, raster-scan algorithms could only extract the boundaries of binary images, boundaries in multispectral images could only be extracted in through random-access algorithms (not constant-time, and requiring random access to the whole image).  I also designed a three stage pipeline processor capable of performing this at video frame rates. This work was done within the VLSI systems lab at UNSW.