Maybe I should explain a bit what my greater thinking was as regards
VM convergence.

In 2003 CPUs hit a wall as regards clock speed. Since then the
emphasis has been on adding more cores to processors. Even this trend
I don't think can go on forever. Soon processors will be manufactured
at around 20nm fabrication process but it is expected to be difficult
to go smaller than 16mn due to quantum tunnelling. Even below that a
wall is hit because atoms are a certain size and cannot be made
smaller.

What if a sufficiently expressive bytecode system was developed which
could supersede the existing ones while providing an easy mapping of
the functionality. If it could be supported natively by the different
processor architectures then the processors aught to be able to run it
fast. No one would no better than the processor manufacturers, how to
optimise for their own processors (I would hope anyway). I believe
that CISC processors have a micro code system already which implies
that more complex operations need to be broken down into simpler
operations implemented in hardware.

If programs target this bytecode (though not necessarily meaning the
processor allows no other way of operating) then it opens up processor
architecture to a whole lot more room for innovation. Architectures
could be more 'disposable'. New bold changes could be made (so long as
it supports the bytecode) without worrying about breaking
compatibility. If an architecture doesn't work out, a different one
can be tried. The current landscape of tight binding to processor
architecture would never allow for this. This kind of bold
experimentation could help squeeze more performance out of processors
when increasing clock rate or adding cores is no longer possible. Also
the trend of integrating GPUs and other accelerators, these can be
utilised in executing the bytecode in a way transparent to the higher
levels.

I also have a dream of convergence of VM technology so Java, .Net,
Flash and JavaScript etc all run on a universal VM which is hardware
accelerated. This is just a dream though and I don't know it would
ever happen. It would require the different platforms to drop their
proprietary byte codes in favour of the Universal one which would be a
big battle (even though if there is a mapping between them a tool
could just convert the legacy bytecode once and not need to be done
every time).

As regards the argument that a VM cannot handle multiple bytecodes
without emulation I don't see why this need be the case. The JVM has
functionality and a bytecode layer which is used to invoke that
functionality. I don't see why he bytecode handler could not be made
pluggable such that multiple bytecode handlers could plug into the
same VM functionality but be used to interpret different bytecodes.
This is not converting from one bytecode to another but rather just
switching between bytecode handlers depending on which mode the VM is
operating in. This works for a software VM but does not lend itself to
hardware acceleration because it would be hard for the hardware to
accelerate lots of different bytecode formats.

Execution of bytecode directly on the processor is already a reality.
The ARM 9 processor introduced Java bytecode execution directly in the
CPU. This continues with the ARM 11 and I believe later processors
too. I would assume that this is why these processors were easily used
in Sun Spots.

-- 
You received this message because you are subscribed to the Google Groups "The 
Java Posse" group.
To post to this group, send email to javapo...@googlegroups.com.
To unsubscribe from this group, send email to 
javaposse+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en.

Reply via email to