JOP - Java Optimized Processor



Cyclone Board
Acex Board

LEGO MindStorms

Teaching Material



The goal of this development is a simple and small processor optimized to execute Java byte code. Java byte code needs a different structure of the processor than a compiled (C, C++) program. Considering this it should be possible to develop a more powerfull processor for Java than a general purpose processor (with the same hardware resources i.e. chip area).

The processor core should be small enough to fit in a 'mainstream' FPGA. So it is possible to use Java for embedded applications. Knowing the processor core it should be easy to implement a real time enabled JVM.

It's not the goal to execute every byte code direct in hardware. This would lead to a very complex design. The execution of JVM instructions is done in micro code. The micro code instructions must be general enough to execute the sometimes very complex JVM instructions.

Since threads are an integrated part of the Java programming language we will see more applications using them. When the processor core is small it will make sense to integrate more JOPs in a single chip to enhance performance.

Targets and Non Targets


  • small, small, small with 32 bit data path
  • implementing in an FPGA
  • real time JVM
  • multi processor?
  • an ASIC

Non Targets:

  • execution of all Java bytes code in hardware
  • design study on paper

Three different Versions

First Approach: A general purpose accu/register machine

A simple accu machine with many registers and a 32 bit datapath. All JVM instructions are done in software (micro code).

Second Approach: More specific for the JVM

Based on the first design with fewer registers and added hardware (stack, JVM instruction fetch and decode,...).

Third Approach: A stack machine

Moving the ALU to the stack results in a stack machine with direct support for basic JVM instructions.

Copyright © 2000-2007, Martin Schoeberl