是否有在微码中运行Java的CPU?

Java是一种制作精良的OO语言,但我注意到的第一件事是它有多慢(与C ++相比)。 这可能是因为它必须通过另一层转换(VM)而不是直接在CPU的本机微码中运行。

我的问题:您是否知道有任何尝试创建特定于Java的CPU,这些CPU本身运行Java而不需要软件实现的VM?

Sun大约10年前设计了picoJava处理器,但它从来没有去过任何地方 – 当时没有它的市场,而现代虚拟机使这个概念毫无意义。

然后是刚刚起步的ARM Jazelle架构。

到目前为止,我发现这个难题的唯一参考是以下文章:

http://www.theserverside.com/discussions/thread.tss?thread_id=59958

虽然我最初有兴趣首先知道是否有Java-CPU以及它们是什么,但是这个主题揭示了为什么我没有听说过任何内容(直到我在这里阅读了学到的回复)。 Alex Besogonov最后的评论似乎是最好的解释:

Java字节码不适合在真实硬件上运行。 它是基于堆栈的,因此流水线操作就会消失。 从理论上讲,人们可以从基于堆栈的机器到基于寄存器的机器进行即时转换,但它需要大量的晶体管。

所以实际上,JIT编译Java字节码然后在公共CPU上运行它总是更有效。 对于低功耗设备有一个例外JVM,其中硬件JVM的速度不是问题(记住Forth CPU)。

当然,硬件仍然可以提供很少的function来加速JVM。 像硬件辅助转发指针一样,它允许创建快速实时压缩无间隙GC(我假设Azul硬件有这种支持)。

这很有趣。 谢谢大家的答案。

Azul Systems从头开始设计系统(运行大量服务)Java,包括硬件辅助垃圾收集。

还有GCJ用于将Java编译为本机代码,尽管它不是Java的完整实现。

您可能想尝试JOP

它是开源的,你可以在自己的硬件上试用它。