A robust stack folding approach for Java processors: an operand extraction-based algorithm

Data dependency in stack operations limits the performance of Java processors. To enhance Java's performance, existing literature suggests using stack operations folding. We extend this concept in a new folding algorithm that identifies principle operations in folding groups and extracts necessary operands from the bytecode queue. The proposed algorithm permits nested pattern folding and multiple issue of folding groups. Hence, the need for and therefore the limitations of a stack are eliminated. This paper discusses various aspects of the proposed algorithm and illustrates different folding scenarios as well as possible hazards. Benchmarking using SPECjvm98 shows excellent performance gains as compared to existing algorithms.

[1]  R. M. Tomasulo,et al.  An efficient algorithm for exploiting multiple arithmetic units , 1995 .

[2]  Lung-Chung Chang,et al.  Instruction folding in Java processor , 1997, Proceedings 1997 International Conference on Parallel and Distributed Systems.

[3]  Narayanan Vijaykrishnan,et al.  Object-Oriented Architectural Support for a Java Processor , 1998, ECOOP.

[4]  Mike O'Connor,et al.  PicoJava: A Direct Execution Engine For Java Bytecode , 1998, Computer.

[5]  Lung-Chung Chang,et al.  Stack operations folding in Java processors , 1998 .

[6]  Kai Hwang,et al.  Computer architecture and parallel processing , 1984, McGraw-Hill Series in computer organization and architecture.

[7]  M.W. El-Kharashi,et al.  Java microprocessors: computer architecture implications , 1997, 1997 IEEE Pacific Rim Conference on Communications, Computers and Signal Processing, PACRIM. 10 Years Networking the Pacific Rim, 1987-1997.

[8]  Troy Downing,et al.  Java Virtual Machine , 1997 .

[9]  Ramesh Radhakrishnan,et al.  Allowing for ILP in an embedded Java processor , 2000, Proceedings of 27th International Symposium on Computer Architecture (IEEE Cat. No.RS00201).

[10]  Péter Kacsuk,et al.  Advanced computer architectures - a design space approach , 1997, International computer science series.

[11]  Bill Venners,et al.  Inside the Java Virtual Machine , 1997 .

[12]  James Gosling,et al.  Java Intermediate Bytecode , 1995, Intermediate Representations Workshop.

[13]  Donald J. Patterson,et al.  Computer organization and design: the hardware-software interface (appendix a , 1993 .

[14]  Tom R. Halfhill How to soup up Java, part I , 1998 .

[15]  F. ElGuibaly,et al.  A quantitative study for Java microprocessor architectural requirements. Part I: Instruction set design , 2000, Microprocess. Microsystems.

[16]  Andrew S. Tanenbaum,et al.  Structured Computer Organization , 1976 .

[17]  GoslingJames Java intermediate bytecodes , 1995 .

[18]  C. K. Yuen Stack and RISC , 1999, CARN.

[19]  Kin F. Li,et al.  A quantitative study for Java microprocessor architectural requirements. Part II: high-level language support , 2000, Microprocess. Microsystems.

[20]  J. Michael O'Connor,et al.  picoJava-I: the Java virtual machine in hardware , 1997, IEEE Micro.

[21]  Jr. Philip J. Koopman,et al.  Stack computers: the new wave , 1989 .

[22]  David A. Patterson,et al.  Computer Architecture: A Quantitative Approach , 1969 .