Competency fields
High Performance Computing
Optimization technologies for applications and system software are crucial for supercomputers, such as the world's fourth and fifth fastest supercomputers, both BlueGene machines (according to the November 2008 list of the Top 500 supercomputers). Our research topics include application-specific optimization technologies, especially for Quantum Chromodynamics, Fast Fourier Transforms, and Computational Fluid Dynamics. We are also working on automatic program optimization technologies for the US DARPA HPCS project. These activities involve collaboration with the T.J. Watson Research Center.
Advanced JIT Compiler Optimization
When Java was announced in 1995, we started to develop JIT compilers, which drastically improved the performance by dynamically translating bytecode to native code. We are currently focusing on two projects. One is idiom recognition, which replaces a specific pattern with faster code. The other is more effective register allocation to reduce memory accesses. These techniques contribute significantly to the performance of IBM JIT compilers, especially on the IBM System z. Papers on these developments have been presented at prestigious international conferences.
Java JIT compiler
Computer Science
Scalable Dynamic Scripting Language Runtime
Scripting languages such as Perl, PHP, Python, Ruby, and Groovy are popular these days for the agile development of Web applications, since they release programmers from annoying tasks like compiling and type declarations. We have been studying high-quality system software for the programming language systems and related software infrastructure including libraries and middleware. We have focused research on the PHP language to develop two language runtimes: a runtime constructed by leveraging existing components such as the JIT compiler from the IBM Java virtual machine implementation and a runtime built on top of Java. The papers on these research results have been accepted at major academic conferences, and some of the developed technologies have already been transferred to IBM Software Group for an IBM product, WebSphere sMash, which is now used all over the world.
Transactional Memory
Transactional memory (TM) shows promise as a new concurrency control mechanism to replace lock-based synchronization for multi-core processors. TM allows multiple threads to execute a critical section concurrently while lock-based synchronization allows only one thread to execute the critical section. TM is an exploratory technology and still has many problems. We are working on TM by focusing on: 1) the reduction of the overhead for logging the memory accesses in critical sections, 2) the reduction of transaction rollbacks, and 3) the identification of realistic workloads that could benefit from TM.
Java Technologies on Mainframes
Jointly with the Toronto Laboratory and the Poughkeepsie Laboratory, we are focusing on performance and RAS (Remote Access Server) improvements for Java programs on the IBM System z. As examples of ideas that might increase the superiority of the IBM System z, we are conducting research in various areas such as (1) inline binary code for Java methods to reduce invocation overhead, (2) reducing the memory latency and improving the cache utilization, and (3) terminating hung threads to improve availability.
Data Access Technology
There are increasing demands for highly scalable cluster systems to support applications that need extreme transaction processing capabilities such as e-commerce, Internet banking, e-auctions, or e-trading. To provide such highly scalable cluster systems, we are developing tools to analyze dynamic query profiles and system configurations and optimize the data access layers for various target applications.
Web 2.0 Acceleration Technology for Multi-core
Advances in network performance and browser technologies have led to the emergence of a new class of Web applications under the label of Web 2.0, which provide rich user experiences. Web 2.0 technologies, such as Ajax, result in off-loading rendering functions to the clients, which servers used to do traditionally. Web 2.0 servers thus spend relatively more time in the middleware and persistence layers than do traditional Web servers. We are developing techniques to accelerate the server performance by aggregating multiple client requests and eliminating redundant computations in those layers.
Performance Analysis Tools
Efficient memory usage is becoming more important for good performance because of the growing size of applications and new system architectures exploiting multi-core CPUs. We are developing a tool for quantitatively analyzing the memory usage of entire processes by exploiting our knowledge of the memory management mechanisms in the OS and the internal data structures of the Java VM. We are also researching techniques to reduce memory footprints through improvements in the Java VM and automatic conversions of the programs.
