Порт OpenJDK для архитектуры ARM64 и патчи для поддержки ARM в системе виртуализации KVM
26 октября 2012 года
Эндрю Хейли (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.
Источники[править]
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии[править]
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.