Existe uma CPU que executa o Java no microcódigo?

Java é uma linguagem OO muito bem trabalhada, mas a primeira coisa que notei é como ela é lenta (em comparação com o C ++). Isto é provavelmente porque tem que passar por outra camada de tradução (a VM) em vez de correr diretamente no microcódigo nativo da CPU.

Minha pergunta: Você conhece alguma tentativa de criar CPUs específicas para Java que executem Java nativamente sem precisar da VM implementada por software?

A Sun projetou o processador picoJava há cerca de 10 anos, mas nunca chegou a lugar algum – não havia mercado para ele na época, e as VMs modernas tornam o conceito bastante sem sentido.

Depois, há a arquitetura ARM Jazelle .

A única referência que encontrei até agora para este enigma é o seguinte artigo:

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

Enquanto eu estava inicialmente interessado em saber primeiro se há Java-CPU e o que eles são, esta discussão lança alguma luz sobre porque eu não ouvi falar de nenhum (até que eu li as respostas aprendidas aqui). O último comentário, de Alex Besogonov, parece ser a melhor explicação:

O bytecode de Java NÃO é adequado para ser executado em hardware real. É baseado em pilha, então o pipelining sai pela janela. Em teoria, pode-se fazer tradução instantânea de máquinas baseadas em pilha para máquinas baseadas em registros, mas isso exigirá MUITOS transistores.

Então, na realidade, é sempre mais efetivo compilar o bytecode Java em JIT e depois executá-lo em uma CPU comum. Há uma exceção de JVMs para dispositivos de baixo consumo em que a velocidade da JVM de hardware não é um problema (lembre-se das CPUs da Forth).

Obviamente, o hardware ainda pode fornecer alguns resources para acelerar as JVMs. Como os pointers de encaminhamento auxiliados por hardware que permitem criar um GC rápido e sem compactação em tempo real (suponho que o hardware da Azul tenha esse suporte).

Isto é muito interessante. Obrigado a todos por suas respostas.

A Azul Systems projeta sistemas desde o início (com serviços massivos em execução) em Java, incluindo a garbage collection assistida por hardware.

Há também o GCJ para compilar o Java ao código nativo, embora não seja uma implementação completa do Java.

Você pode querer tentar o JOP

É open source e você pode experimentá-lo em seu próprio hardware.

    Intereting Posts