Эффективная интерпретация языков высокого уровня с помощью предварительного переписывания байт-кода
Салимов Рустам Аскарович
Группа 22126
Руководитель:
Соловьев Владимир Валерьевич
Аннотация
Дипломная работа посвящена исследованию методов повышения производительности интерпретаторов байт-кода виртуальных машин. Рассматриваются основные факторы, ограничивающие эффективность интерпретации, включая накладные расходы на диспетчеризацию инструкций, ошибки предсказания переходов и обращения к памяти. Особое внимание уделяется методу шитого кода и возможностям его применения в современных интерпретаторах.
В работе выполнен анализ существующих подходов к построению эффективных интерпретаторов. Разработана базовая реализация интерпретатора байт-кода виртуальной машины Huawei на языке высокого уровня AJ и проведён анализ её особенностей. Для исследования влияния низкоуровневых оптимизаций реализован эквивалентный интерпретатор на языке ассемблера архитектуры ARMv8. В нём применены табличная диспетчеризация инструкций, устранение обратных переходов в цикле интерпретации, размещение внутренних данных интерпретатора в регистрах процессора и использование стека для хранения кадров вызовов.
Предложен новый формат байт-кода, формируемый на этапе предварительной обработки программы. В отличие от традиционного использования переписывания байт- кода для решения задач позднего связывания, предложенный подход позволяет преобразовывать переносимое представление программы в формат, ориентированный на эффективную интерпретацию. Новый формат обеспечивает возможность применения метода прямого шитого кода и сокращает накладные расходы диспетчеризации инструкций.
Проведено экспериментальное исследование производительности разработанных интерпретаторов. Показано, что переход от реализации на языке высокого уровня к реализации на ассемблере обеспечивает ускорение исполнения в 1,8–2,5 раза. Использование нового формата байт-кода и механизма переписывания позволяет дополнительно повысить производительность интерпретации в среднем на 2–5 %, а в отдельных тестах — до 19 %.
Полученные результаты подтверждают применимость механизма предварительного переписывания байт-кода для формирования специализированных форматов представления программ и демонстрируют возможность повышения эффективности интерпретации за счёт применения метода прямого шитого кода.