JOP: A Tiny Java Processor Core for FPGA(jopdesign.com)
jopdesign.com
JOP: A Tiny Java Processor Core for FPGA
http://www.jopdesign.com/
5 comments
There have been a few runs at this problem. I've wondered for ages why it didn't pick up steam because surely you could get some great performance benefits from it. Any ideas?
See http://en.wikipedia.org/wiki/Java_processor
See http://en.wikipedia.org/wiki/Java_processor
Azul systems (http://www.azulsystems.com/) has a special-purpose Java processor, and they do indeed get some impressive speed benefits from it. For example, having single-instruction write barriers in hardware allows them to have nearly-pauseless garbage collection on gigantic heaps.
Here's an excellent google tech talk by Cliff Click of Azul talking about their hardware. Among the firehose of information in that talk, he mentions that the hardware guys wanted to add directly execute JVM bytecode. He told them not to bother since he could JIT it better and they wouldn't be able to support all the bytecodes anyway. I'd love to know more about why that is.
http://www.youtube.com/watch?v=5uljtqyBLxI#t=20m00s
http://www.youtube.com/watch?v=5uljtqyBLxI#t=20m00s
JITing means you can do dynamic optimisations, e.g. predicting vtable dispatches. Doing this in hardware is tricky.
Many of the ARM processor cores have hardware support for the most common Java bytecode operations; that's the "Jazelle" extension that others have been mentioning. (The less common operations are left to software, to keep silicon overhead low.)
Also, Transmeta used to have a processor with configurable instructions so you could get it to mimic a given machine. Why, why why did they not make a JVM instead of trying to compete with Intel on their home ground?
Java, a popular programming language on desktop system, is seldom used in embedded systems.
What? Perhaps the introduction is just not aging well...
What? Perhaps the introduction is just not aging well...
heh - the reverse would be true now ;)
Could it be that the lack of support for "low level" stuff like uint is holding Java back on embedded systems?
Some ARM's have support for JVM bytecode - so what?
Anybody heard about them?
Cranky much?
Maybe your board doesn't have a jazelle-capable part, or you lack licensing for it (jazelle isn't publicly documented, sadly). Maybe you do have a bunch of gates left over on your FPGA.
I mean, it looks like a cool hack to me.
Maybe your board doesn't have a jazelle-capable part, or you lack licensing for it (jazelle isn't publicly documented, sadly). Maybe you do have a bunch of gates left over on your FPGA.
I mean, it looks like a cool hack to me.
Cranky??
The Jazelle extension requires paying money to access on how to set it up. Also as others have pointed out using hardware supported java prohibits a lot of dynamic optimizations.
ARM seem to be mostly concentrating on the ThumbEE environment now, which is much better documented.
ARM seem to be mostly concentrating on the ThumbEE environment now, which is much better documented.
OTOH, he definitely appears to have put a lot of work into this, and I would like to test it out, if I can figure out how.