Breakthroughs are sought for architecture as well as devices. The success of the Cell Broadband Engine™, developed for game consoles, and BlueGene, the world's fastest supercomputer, demonstrated that radically new computer architectures are needed to cope with the increasing variation of computer workloads. Using the experience and skills gained from the development of the world's fastest Java JIT compiler, IBM Research - Tokyo is advancing research and development for system software for these new architectures.
Competency fields
High Performance Computing
Optimization technologies for applications and system software are crucial for supercomputers, such as Blue Gene/Q (Sequoia), which is expected to achieve 20 petaflops of peak performance in 2012 at Lawrence Livermore National Laboratory. 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 Java Virtual Machine and JIT Compiler
When Java was announced in 1995, we started to develop Java virtual machines JIT compilers that drastically improved Java performance by executing Java bytecode and by dynamically translating it to native code. We are currently focusing low-overhead techniques to track object allocation site information and and to profile object accesses. These techniques are contributing significantly to the performance of the IBM Java virtual machines and JIT compilers, especially on the IBM p systems. 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.
Just-in-Time Compiler for Dynamic Scripting Language
Dynamic Scripting Languages (DSLs) are becoming popular due to their high productivity from dynamic typing and rich frameworks. Increasingly, DSLs are used to build substantial enterprise applications. Based on our experiences and research with optimizations for Java JIT compilers spanning over 15 years at IBM Research - Tokyo, we are developing Just-In-Time compilers for DSLs together with the IBM Research - Watson Research Center. We are focusing on optimizations to minimize runtime overhead due to dynamic typing of variables and to exploit hardware features.
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.
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.
Trace-based Java JIT Compiler
To improve the performance of Java server workloads with flat load profiles, we are developing a trace-based Java compiler, which uses traces as the compilation units instead of methods. We believe that we can recognize the compilation scopes more flexibly and thus produce better optimizations. We are currently focusing on the trace selection algorithms, compiler optimizations, and the tracing runtime.
Programming Language X10
X10 is a parallel distributed programming language being developed by IBM Research to improve the productivity of parallel and distributed applications. X10 is based on the PGAS (Partitioned Global Address Space) programming model, and has constructs for lightweight parallel activities, distributed data access, synchronization, etc. X10 is being developed as an open source project.