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

时间:2010-12-05 14:55:18

标签: java performance cpu

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

我的问题:您是否知道在不需要软件实现的VM的情况下创建Java本地CPU的任何尝试?

4 个答案:

答案 0 :(得分:18)

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

然后是刚刚开始的ARM Jazelle架构。

答案 1 :(得分:7)

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

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

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

  

Java字节码不适合运行   在真正的硬件上。它是基于堆栈的,所以   流水线走出窗外。在   理论上,人们可以在飞行中做   从基于堆栈的转换到   基于寄存器的机器,但它会   需要很多晶体管。

     

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

     

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

这非常有趣。谢谢大家的答案。

答案 2 :(得分:5)

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

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

答案 3 :(得分:0)

您可能想尝试JOP

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