Java ist eine wunderschön gestaltete OO-Sprache, aber das erste, was mir aufgefallen ist, ist, wie langsam es ist (im Vergleich zu C ++). Dies liegt wahrscheinlich daran, dass eine andere Übersetzungsschicht (die VM) durchlaufen werden muss, anstatt direkt im nativen Mikrocode der CPU ausgeführt zu werden.
Meine Frage: Kennen Sie irgendwelche Versuche, Java-spezifische CPUs zu erstellen, die Java nativ ausführen, ohne die software-implementierte VM zu benötigen?
Sun hat vor etwa zehn Jahren den picoJava Prozessor entwickelt, aber es ging nie irgendwohin - dafür gab es keinen Markt Die Zeit und moderne VMs machen das Konzept ziemlich sinnlos.
Dann ist da noch die junge Architektur von ARM Jazelle .
Azul Systems entwickelt Systeme von Grund auf mit Java (Java) im Hinterkopf, einschließlich hardwaregestützter Speicherbereinigung.
Es gibt auch GCJ zum Kompilieren von Java in nativen Code, obwohl es keine vollständige Implementierung von Java ist.
Die einzige Referenz, die ich bisher zu diesem Rätsel gefunden habe, ist der folgende Artikel:
Während ich anfänglich interessiert war, zuerst zu wissen, ob es Java-CPUs gibt und was sie sind, wirft dieser Thread ein wenig Licht auf warum ich noch nichts davon gehört habe (bis ich die gelernten Antworten gelesen habe Hier). Der letzte Kommentar von Alex Besogonov scheint die beste Erklärung zu sein:
Java-Bytecode ist NICHT zur Ausführung geeignet auf echter Hardware. Es ist Stack-basiert, also Pipelining geht aus dem Fenster. Im Theorie kann man on-the-fly machen Übersetzung von Stack-basiert zu Register-basierte Maschine, aber es wird erfordern eine Menge von Transistoren.
Also in Wirklichkeit ist es IMMER mehr effektiv JIT-kompilieren Java-Bytecode und dann auf einer gemeinsamen CPU ausführen. Dort ist eine Ausnahme JVMs für Low-Power Geräte, bei denen die Geschwindigkeit der Hardware JVM ist kein Problem (erinnere dich an Forth CPUs).
Natürlich kann Hardware noch liefern einige Funktionen, um JVMs zu beschleunigen. Mögen Hardware-unterstützte Weiterleitungszeiger die erlauben, schnelle Realzeit zu verursachen pausenlosen GC verdichten (ich vermute Azul Hardware hat diese Unterstützung).
Das ist sehr interessant. Vielen Dank für Ihre Antworten.
Tags und Links java performance cpu