Parallelism of Java Bytecode Programs and a Java ILP Processor Architecture
Kenji Watanabe
Abstract
Kenji Watanabe
Abstract
Abstract. The Java programming language has been widely used to develop dynamic content in Web pages. The Java Virtual Machine (JVM) executes Java bytecode. For efficient transmission over the Internet, the Java bytecode is a stack oriented architecture: instructions need not contain source and destination specifiers in their bytecodes. The Java bytecodes may be executed on various platforms by interpretation or just in time (JIT) compiling to the native primitives of the particular machine. However, with a few exceptions, Java has not been used for developing network computing applications that demand high performance. In this paper, we investigate the potential parallelism of Java bytecodes and describe a Java processor architecture which aims to exploit instruction level parallelism (ILP). A Java processor can execute bytecodes directly so that we can expect higher performance than from interpretation or JIT compilation. In contrast to other Java processors, our processor exploits ILP: it can execute multiple computational instructions in parallel. Because the Java Virtual Machine stack based, push and pop instructions are frequent. Usually, the top of the stack will become the bottleneck. We investigate the possibilities of parallel access to the stack and the execution of push/pop with zero time. We have developed an architectural simulator which evaluates the performance of various configurations. The simulation results show that our Java ILP processor could achieve an average 2.96 EIPC (effective instructions per cycle) with a 16-instruction scheduling window and 3.36 EIPC with a 32-instruction window. 1
OpenAlex reports 6 citations for this work. Citation counts describe recorded attention and do not establish research quality.
A contribution statement is not available in the OpenAlex record.
Method details are not available in the OpenAlex metadata.
Findings are not separately available in the OpenAlex metadata.
Limitations are not available in the OpenAlex metadata.
Application details are not available in the OpenAlex metadata.
Abstract. The Java programming language has been widely used to develop dynamic content in Web pages. The Java Virtual Machine (JVM) executes Java bytecode. For efficient transmission over the Internet, the Java bytecode is a stack oriented architecture: instructions need not contain source and destination specifiers in their bytecodes. The Java bytecodes may be executed on various platforms by interpretation or just in time (JIT) compiling to the native primitives of the particular machine. However, with a few exceptions, Java has not been used for developing network computing applications that demand high performance. In this paper, we investigate the potential parallelism of Java bytecodes and describe a Java processor architecture which aims to exploit instruction level parallelism (ILP). A Java processor can execute bytecodes directly so that we can expect higher performance than from interpretation or JIT compilation. In contrast to other Java processors, our processor exploits ILP: it can execute multiple computational instructions in parallel. Because the Java Virtual Machine stack based, push and pop instructions are frequent. Usually, the top of the stack will become the bottleneck. We investigate the possibilities of parallel access to the stack and the execution of push/pop with zero time. We have developed an architectural simulator which evaluates the performance of various configurations. The simulation results show that our Java ILP processor could achieve an average 2.96 EIPC (effective instructions per cycle) with a 16-instruction scheduling window and 3.36 EIPC with a 32-instruction window. 1
Key concepts: Computer science, Java concurrency, Java annotation, strictfp, Java applet, Java, Real time Java, Operating system