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

And*_*Eve 10 java cpu performance

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

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

ska*_*man 18

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

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

  • @Android Eve:每个常用的JVM都有一个复杂的JIT编译器,而不是智能的本机编译方法,可以从中受益.所以现在本地执行字节码是相当无用的. (3认同)
  • @Android:它从来没有到过任何地方,因为它没有市场,并且因为当时的JVM速度慢。今天,它将一事无成,因为现代JVM并非不慢。 (2认同)
  • @Android:这个数字没有引用.仅仅因为它写在维基百科上并不能成功.这可能是过时的岁月. (2认同)

And*_*Eve 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硬件有这种支持).

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


Dav*_*low 5

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

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

  • 但Azul的Vega-3 CPU的*全点*是它*不实现JVML字节码.它只是一个设计良好的正交CPU.智能是在JVML到本机编译器(实际上只是Sun的/ Oracle的C2编译器的许可变体,它是HotSpot JVM的一部分)而不是在CPU中.创建Azul*的人来自Sun的Java CPU项目,并且他们这样做是因为他们意识到在CPU中实现JVML不快*,它*慢*,因为它抛弃了大规模的动态优化潜在. (7认同)
  • +1此信息.我希望这个主题将成为现有尝试的参考. (2认同)
  • @Jörg - 是的,对于提出的问题,这不是一个很好的答案.但是因为这听起来像是一个相当探索性的问题(有人做过X吗?而不是Y为什么不工作?)一点切线似乎是合适的. (2认同)