Порт OpenJDK для архитектуры ARM64 и патчи для поддержки ARM в системе виртуализации KVM
Эндрю Хейли (Andrew Haley), работающий в компании Red Hat, объявил о работе по подготовке порта Java для 64-разрядной архитектуры AArch64 (ARM64), реализованной в процессорах, поддерживающих набор команд ARMv8. Результаты портирования будут развиваться как одни из подпроектов OpenJDK, что позволит заинтересованным энтузиастам и компаниям присоединиться к процессу разработки.В настоящее время поддержка в OpenJDK архитектуры ARM оставляет желать лучшего. Для 32-разрядных систем ARM доступны две реализация JIT-компилятора для виртуальной машины HotSpot, используемой проектом OpenJDK: проприетарная разработка от компании Oracle и свободный JIT-компилятор, который сильно отстаёт по производительности от варианта Oracle в силу использования упрощённой архитектуры. Чтобы недопустить подобной ситуации для 64-разрядных систем ARM, компания Red Hat приняла решение создать своими силами полноценный и высокопроизводительный JIT-компилятор для архитектуры AArch64, который будет распространяться свободно.
Интересно, что из-за того, что устройства на базе ARMv8 пока не выпущены на рынок, для разработки порта HotSpot VM был создан простой симулятор процессора ARMv8. Использование симулятора не даёт полной гарантии, что при выполнении порта на реальном оборудовании не возникнет проблем, но позволяет подготовить работающий прототип к моменту поступления в продажу первых процессоров ARMv8. В настоящее время уже близка к завершению реализация интерпретатора шаблонов для ARM64, который является первым этапом портирования HotSpot на новые архитектуры.
Первый рабочий прототип планируется сформировать к рождеству, после чего код будет опубликован публично. Прототип будет поддерживать все необходимые возможности для запуска Java на AArch64, но не будет отличатся высокой производительностью из-за отсутствия JIT-компилятора. Для решения данной проблемы сразу после публикации кода начнётся процесс создания нескольких вариантов JIT-компиляторов: "клиентского" C1, а затем и "серверного" C2.
JIT-компилятор C1 обеспечит обработку только базового набора типовых ситуаций без углубления в специфику выполнения кода, поэтому он прост в создании и позволит разработчикам досконально проанализировать особенности архитектуры ARM64. После этого опыт, накопленный в процессе разработки C1, будет применён для создания более сложного и высокопроизводительного JIT-компилятора C2. Кроме того, создание C1 позволит реализовать двухфазную схему JIT-компиляции, при которой на начальной стадии выполняется C1, после чего наиболее часто используемые участки кода рекомпилируется при помощи более сложных методов C2.
Дополнительно можно отметить публикацию набора патчей с реализацией поддержки системы виртуализации KVM для процессоров ARM Cortex A15. Это третья попытка обеспечения работы KVM на архитектуре ARM, которая скорее всего будет утверждена для включения в состав ядра Linux 3.8. Напомним, что в состав тестовых версий ядра 3.7 были включены патчи поддержкой с механизмов виртуализации Xen для систем на базе процессоров ARM Cortex A15.
© OpenNet