Оптимизации генерации кода в JIT-компиляторе виртуальной машины Java

Слайд 2

Актуальность работы Постоянное совершенствование микроархитектуры процессоров Особенности новой микроархитектуры Intel Core

Актуальность работы

Постоянное совершенствование микроархитектуры процессоров
Особенности новой микроархитектуры Intel Core
Увеличение важности производительности

front-end процессора
Работа front-end влияет не только на производительность, но и на флуктуацию при ее измерении
Отсутствие работ, учитывающих данные особенности микроархитектуры Core, даже в Intel Compiler
Слайд 3

Результаты Разработаны идеи и эвристики для оптимизации линеаризации и выравнивания кода

Результаты

Разработаны идеи и эвристики для оптимизации линеаризации и выравнивания кода
Опробована схема

удаления ветвлений в коде
В генераторе кода JIT-компилятора виртуальной машины Apache Harmony реализованы улучшения линеаризации и выравнивания кода, удаления ветвлений
Получен прирост производительности на микротестах и популярных бенчмарках, таких как SciMark (Monte Carlo – прирост 60%)
Увеличена стабильность метрик производительности
Изменения приняты и интегрированы в Apache Harmony
Слайд 4

Apache Harmony Открытая реализация виртуальной машины Java JIT-компилятор Jitrino.OPT – оптимизирующий

Apache Harmony

Открытая реализация виртуальной машины Java
JIT-компилятор Jitrino.OPT – оптимизирующий компилятор с

возможностью профилировки и перекомпиляции
Особенности front-end микроархитектуры Core не учтены
Слайд 5

Выравнивание кода Отсутствие trace cache по сравнению с микроархитектурой NetBurst Линия

Выравнивание кода

Отсутствие trace cache по сравнению с микроархитектурой NetBurst
Линия выборки (fetch

line) 16 байт
Особенности предсказателя переходов
Дополнительная возможность процессора – loop stream detector
Все эти особенности учтены и разработана эвристика для выравнивания кода
Слайд 6

Линеаризация кода Расположение базовых блоков графа потока управления в линейном порядке

Линеаризация кода

Расположение базовых блоков графа потока управления в линейном порядке
Алгоритм “bottom-up”,

имеющий много свойств, положительных для front-end процессора

Найдены возможности для улучшения под микроархитектуру Core
Разработана эвристика для оптимизации алгоритма