Exploiting Java instruction/thread level parallelism with horizontal multithreading

  • Authors:
  • Kenji Watanabe;Wanming Chu;Yamin Li

  • Affiliations:
  • University of Aizu, Aizu-Wakamatsu 965-8580 Japan;University of Aizu, Aizu-Wakamatsu 965-8580 Japan;Hosei University, Tokyo 184-8584 Japan

  • Venue:
  • ACSAC '01 Proceedings of the 6th Australasian conference on Computer systems architecture
  • Year:
  • 2001

Quantified Score

Hi-index 0.00

Visualization

Abstract

Java bytecodes can be executed with the following three methods: a Java interpretor running on a particular machine interprets bytecodes; a Just-In-Time (JIT) compiler translates bytecodes to the native primitives of the particular machine and the machine executes the translated codes; and a Java processor executes bytecodes directly. The first two methods require no special hardware support for the execution of Java bytecodes and are widely used currently. The last method requires an embedded Java processor, picoJavaI or picoJavaII for instance. The picoJavaI and picoJavaII are simple pipelined processors with no ILP (instruction level parallelism) and TLP (thread level parallelism) supports. A so-called MAJC (microprocessor architecture for Java computing) design can exploit ILP and TLP by using a modified VLIW (very long instruction word) architecture and vertical multithreading technique, but it has its own instruction set and cannot execute Java bytecodes directly. In this paper, we investigate a processor architecture which can directly execute Java bytecodes meanwhile can exploit Java ILP and TLP simultaneously. The proposed processor consists of multiple slots implementing horizontal multithreading and multiple functional units shared by all threads executed in parallel. Our architectural simulation results show that the Java processor could achieve an average 20 IPC (instructions per cycle), or 7.33 EIPC (effective IPC), with 8 slots and a 4-instruction scheduling window for each slot. We also check other configurations and give the utilization of functional units as well as the performance improvement with various kinds of working loads.